Try this:
int display_filter_lv_vsync(int old_state, int x, int input, int z, int t)
{
if (HALFSHUTTER_PRESSED) {
YUV422_LV_BUFFER_DISPLAY_ADDR = rand() & 0xFFFFFF;
return;
}
...
You should see the LiveView image going crazy (displaying random things from memory) when pressing the shutter halfway, and back to normal when releasing it. Try it on a camera known to work, to see how it looks like.
If that doesn't work, go back to the caller of this function (state-object.c, stateobj_lv_spy). Do the same thing there (without the return). If it works, we have to change INPUT_ENABLE_IMAGE_PHYSICAL_SCREEN_PARAMETER. Try 25 (
named_functions.idc -> DisplayStateWithImgMute_S01_I25 -> EnableImagePhysicalScreenParameter pCBR=%x; same pattern on 5D3 in DisplayStateWithImgMute_S01_I20).
P.S. Some fun stuff with random walks:
if (HALFSHUTTER_PRESSED) {
static int pos = 0;
pos += (rand() & 1) ? rand() % 10 : - rand() % 10;
YUV422_LV_BUFFER_DISPLAY_ADDR += pos * 1440;
return;
}
Exercise for the reader: explain how it works (e.g. with a plot in octave or python), what's up with the magic number (1440) and why it doesn't do a double integration.
Anyone who understands the above stuff will be able to implement
this feature request in no time.