You my friend, are a genius.
How did you figure out to reduce these for real time preview in even higher resolutions?
C0F383D4 tweaked to 0x1b00af
C0F383DC tweaked to 0x3d401b7
Anyway. Applied cropped real time preview for all 3k modes on eosm so far. Looks like this in eosm code. Check the EngDrvOutLV
3k modes.
static inline uint32_t reg_override_3K_eosm(uint32_t reg, uint32_t old_val)
{
EngDrvOutLV(0xc0f383d4, 0x1b00af + reg_83d4);
EngDrvOutLV(0xc0f383dc, 0x3d401b7 + reg_83dc);
if (ratios == 0x0)
{
EngDrvOutLV(0xC0F38024, 0x4530307);
switch (reg)
{
case 0xC0F06804: return 0x5b90318 + reg_6804_width + (reg_6804_height << 16); // 3032x1436 x5 Mode;
case 0xC0F06014: return (get_halfshutter_pressed() && zoomaid && !RECORDING) ? 0x839: 0x83a + reg_6014;
case 0xC0F0713c: return 0x5b9 + reg_713c;
case 0xC0F06824: return 0x3ca;
case 0xC0F06828: return 0x3ca;
case 0xC0F0682C: return 0x3ca;
case 0xC0F06830: return 0x3ca;
case 0xC0F06010: return 0x34b + reg_6008;
case 0xC0F06008: return 0x34b034b + reg_6008 + (reg_6008 << 16);
case 0xC0F0600C: return 0x34b034b + reg_6008 + (reg_6008 << 16);
/* reset dummy reg in raw.c */
case 0xC0f0b13c: return 0xf;
}
}
if ((ratios == 0x1 || ratios == 0x2) && !set_25fps)
{
EngDrvOutLV(0xC0F38024, 0x45302ff);
switch (reg)
{
/* will change to 19fps for continous action */
case 0xC0F06804: return 0x5190310 + reg_6804_width + (reg_6804_height << 16);
case 0xC0F0713c: return 0x519 + reg_713c;
case 0xC0F07150: return 0x514 + reg_7150;
case 0xC0F06014: return 0x767 + reg_6014;
case 0xC0F06824: return 0x3ca;
case 0xC0F06828: return 0x3ca;
case 0xC0F0682C: return 0x3ca;
case 0xC0F06830: return 0x3ca;
case 0xC0F06010: return 0x34b + reg_6008;
case 0xC0F06008: return 0x34b034b + reg_6008 + (reg_6008 << 16);
case 0xC0F0600C: return 0x34b034b + reg_6008 + (reg_6008 << 16);
}
}
if (ratios == 0x1 && set_25fps)
{
EngDrvOutLV(0xC0F38024, 0x45302b5);
switch (reg)
{
/* will change to 24fps for continous action 2.39:1 */
case 0xC0F06804: return 0x49b02c6 + reg_6804_width + (reg_6804_height << 16);
case 0xC0F0713c: return 0x49b + reg_713c;
case 0xC0F07150: return 0x514 + reg_7150;
case 0xC0F06014: return 0x62c + reg_6014;
case 0xC0F06824: return 0x3ca;
case 0xC0F06828: return 0x3ca;
case 0xC0F0682C: return 0x3ca;
case 0xC0F06830: return 0x3ca;
case 0xC0F06010: return 0x34b + reg_6008;
case 0xC0F06008: return 0x34b034b + reg_6008 + (reg_6008 << 16);
case 0xC0F0600C: return 0x34b034b + reg_6008 + (reg_6008 << 16);
}
}
if (ratios == 0x2 && set_25fps)
{
EngDrvOutLV(0xC0F38024, 0x45302b5);
switch (reg)
{
/* will change to 24fps for continous action 2.35:1 */
case 0xC0F06804: return 0x49b02c6 + reg_6804_width + (reg_6804_height << 16);
case 0xC0F0713c: return 0x49b + reg_713c;
case 0xC0F07150: return 0x514 + reg_7150;
case 0xC0F06014: return 0x62c + reg_6014;
case 0xC0F06824: return 0x3ca;
case 0xC0F06828: return 0x3ca;
case 0xC0F0682C: return 0x3ca;
case 0xC0F06830: return 0x3ca;
case 0xC0F06010: return 0x34b + reg_6008;
case 0xC0F06008: return 0x34b034b + reg_6008 + (reg_6008 << 16);
case 0xC0F0600C: return 0x34b034b + reg_6008 + (reg_6008 << 16);
}
}
if (ratios == 0x3)
{
EngDrvOutLV(0xC0F38024, 0x45302ff);
switch (reg)
{
case 0xC0F06804: return 0x9d50310 + reg_6804_width + (reg_6804_height << 16);
case 0xC0F0713c: return 0x9d5 + reg_713c;
case 0xC0F06824: return 0x4ca;
case 0xC0F06828: return 0x4ca;
case 0xC0F0682C: return 0x4ca;
case 0xC0F06830: return 0x4ca;
case 0xC0F06014: return 0xbe3 + reg_6014;
case 0xC0F06010: return 0x36b + reg_6008;
case 0xC0F06008: return 0x36b036b + reg_6008 + (reg_6008 << 16);
case 0xC0F0600C: return 0x36b036b + reg_6008 + (reg_6008 << 16);
}
}
return reg_override_bits(reg, old_val);
}
4k/5k still awaits and of course. 5d3. In time...