void *vid_get_viewport_fb() { // return (void*)0x408CB700; if ((mode_get()&MODE_MASK) == MODE_REC) return (void*)(0x408CB700-vid_get_viewport_xoffset()*3); return (void*)0x408CB700; }
void *vid_get_viewport_live_fb() { // Found by searching RAM locations that referenced 0x405d7980 (viewport buffer) // and also changed to the other buffer addresses over time. Then used each here // and selected value that gave the fastest Motion Detect response using http://dataghost.com/chdk/md_meter.html. return (void*)(*(int*)(0x2250)-vid_get_viewport_xoffset()*3); }
// Live picture buffer (shoot half-pressed) void *vid_get_viewport_fb() { //SX230 //LDR R1, =0x405D7980 @FF37C5E0 if ((mode_get()&MODE_MASK) == MODE_REC) return (void*)(0x405D7980-vid_get_viewport_xoffset()*3); return (void*)0x405D7980; }
void *vid_get_viewport_live_fb()//found in sub_FF8E0788 { void **fb=(void **)0x5014; unsigned char buff = *((unsigned char*)0x4E5C); if (buff == 0) buff = 2; else buff--; // return fb[buff]; if ((mode_get()&MODE_MASK) == MODE_REC) return (void*)(fb[buff]-vid_get_viewport_xoffset()*3); return (void*)fb[buff]; }
static void get_viewport_size() { viewport_height = vid_get_viewport_height()-EDGE_HMARGIN*2; //don't trace bottom lines viewport_width = vid_get_viewport_width(); viewport_byte_width = vid_get_viewport_buffer_width() * 3; viewport_xoffset = vid_get_viewport_xoffset(); viewport_yoffset = vid_get_viewport_yoffset(); slice_height = viewport_height / EDGE_SLICES; }
void *vid_get_viewport_fb() { return (void*)(0x405d7980-vid_get_viewport_xoffset()*3); } // Found @0xff38b5c8