Quote from: Bg~ on 02 / July / 2008, 06:32:10Edit: I see that string in the A720 firmware, but I don't have IDA Pro. Are there other options?you can try this my lazy method
Edit: I see that string in the A720 firmware, but I don't have IDA Pro. Are there other options?
24,26c24,33< void *vid_get_viewport_live_fb()< {< return (void*)0x0; ---> void *vid_get_viewport_live_fb() {> void **fb=(void **)0x65CC;> unsigned char buff = *((unsigned char*)0x65DC);> if (buff == 0) {> buff = 2;> }> else {> buff--;> }> return fb[buff];
CRW_0001.jpg is the dark frame ram dump.find_diffs CRW_0001.JPG CRW_0002.JPG 10 6400 > 720.regions.txt(0x00658BD0 + 0x1900 = 0x0065A4D0) bytes: 3F480(0x006D74D0 + 0x1900 = 0x006D8DD0) bytes: 3F480(0x00755DD0 + 0x1900 = 0x007576D0) bytes: 3F480find_u32s CRW_0001.JPG CRW_0002.JPG 1900 0065A4D0 006D8DD0 007576D0 1065A4D0 106D8DD0 107576D0> 720.refs[0x000020DC] : 1065A4D0[0x00002148] : 107576D0[0x000021D0] : 1065A4D0[0x000021D4] : 106D8DD0[0x000021D8] : 107576D0[0x0000930C] : 107576D0[0x00009338] : 107576D0[0x0000933C] : 107576D0[0x0000937C] : 1065A4D0[0x00018434] : 1065A4D0[0x000184A8] : 1065A4D0[0x000184B4] : 1065A4D0[0x00018560] : 1065A4D0[0x000418D8] : 1065A4D0[0x000B0428] : 1065A4D0[0x000C5738] : 1065A4D0[0x00187298] : 1065A4D0[0x00304008] : 107576D0[0x00304908] : 1065A4D0[0x003140E0] : 106D8DD0[0x003140E4] : 106D8DD0
void *vid_get_viewport_live_fb() { void **fb=(void **)0x20DC; unsigned char buff = *((unsigned char*)0x20EC); if (buff == 0) { buff = 2; } else { buff--; } return fb[buff];}
if (buff == 0) { buff = 2; } else { buff--; }
One thing I don't quite understand is why the code speeds up the response. I know about the three live images buffers updated sequentially, butCode: [Select] if (buff == 0) { buff = 2; } else { buff--; }doesn't select any specific buffer, it just cycles through them. How do we know that it's using the latest buffer?
unsigned char buff = *((unsigned char*)0x20EC);
void *vid_get_viewport_live_fb() { void **fb=(void **)0x20DC; unsigned char buff = (*((unsigned char*)0x20EC) - 1 + 3) % 3; return fb[buff];}
Well I get very consistent 120ms response with MD_B. With the unmodified code, i get between 100ms and 160 ms (A720). I'll try fudgey's script later. What are you using for testing your response time, fudgey? I'm using jonnythe's program.
void *vid_get_viewport_live_fb() { void **fb=(void **)0x21D0; unsigned char buff = *((unsigned char*)0x2084); if (buff == 0) { buff = 2; } else { buff--; } return fb[buff];}
<snip>[0x000021D0] : 1065A4D0[0x000021D4] : 106D8DD0[0x000021D8] : 107576D0<snip>
cyril, maybe it's a DryOS thing. Maybe someone with a different DryOS camera could take a look with the memory viewer and verify the index location.
void *vid_get_viewport_live_fb(){ //return (void*)0;//0x10670ee0; void **fb=(void **)0x8FCC; unsigned char buff = *((unsigned char*)0x8E90); if (buff == 0) { buff = 2; } else { buff--; } return fb[buff];}
void *vid_get_viewport_live_fb(){ void **fb=(void **)0x8C58; unsigned char buff = *((unsigned char*)0x8C74); if (buff == 0) { buff = 2; } else { buff--; } return fb[buff];}