Yes.
- comment out movie_crop_hack_disable()
- enable movie crop mode from ML menu
- turn off the camera (from either power switch or SD card door)
- reboot without card
- crop mode stays enabled (it's saved by Canon firmware)
- changing resolution from Canon menu resets crop mode here, but not on dfort's 700D (?!)
- crop mode cannot be changed outside movie mode (this includes shutdown from power switch, which is done via photo mode)
Giving it one last chance, as I have to return the 700D today.
Logs:
-
crop-switch-power-off.log-
crop-switch-open-card-door.logThe magic happens at:
12.206.146 PropMgr:ff11ebd0:00:00: *** mpu_send(1e 1c 01 4e 00 00 00 0c 00 00 00 00 00 00 00 19 00 00 00 0c 00 00 00 02 00 00 00 02 00) ; PROP_VIDEO_MODE
15.015.338 **INT-36h*:ff31af1c:00:00: *** mpu_recv(06 05 06 22 00 00) ; ??? [guess: power switch]
15.015.637 **INT-36h*:ff31af1c:00:00: *** mpu_recv(06 05 01 4b 01 00) ; PROP_LIVE_VIEW_VIEWTYPE_SELECT [is this the right place to disable crop mode?]
15.015.702 MainCtrl:ff0cc61c:89:03: bindReceiveSwitch (34, 0)
15.021.164 PropMgr:ff0f2e28:81:01: @@@PROP_FIXED_MOVIE 0
15.021.369 PropMgr:ff23ee90:81:03: FixedMovie New 0 Last 1
15.021.388 PropMgr:ff23ef20:81:03: ExitMovMode
15.046.937 Gmt:ff183a88:9a:03: PROP_LIVE_VIEW_VIEWTYPE_SELECT:1
15.077.067 **INT-36h*:ff31af1c:00:00: *** mpu_recv(08 06 04 0c 00 00 01) ; PROP_SHOOTING_TYPE
...
17.282.725 **INT-36h*:ff31af1c:00:00: *** mpu_recv(06 05 06 11 00 00) ; GMT_GUICMD_START_AS_CHECK
17.282.896 MainCtrl:ff14523c:9c:16: REQ : MultiShotTerminate !!!
17.285.606 GuiMainTas:00090e70:32:03: config_save_file: saving to ML/SETTINGS/magic.cfg
19.817.945 PropMgr:000aed00:00:00: **** movie crop hack dis
and, in the second log (notice the camera stays in movie mode):
10.347.198 PropMgr:ff11ebd0:00:00: *** mpu_send(1e 1c 01 4e 00 00 00 0c 00 00 00 00 00 00 00 19 00 00 00 0c 00 00 00 02 00 00 00 02 00) ; PROP_VIDEO_MODE
...
12.964.154 **INT-36h*:ff31af1c:00:00: *** mpu_recv(06 05 06 12 01 00) ; GMT_GUICMD_OPEN_SLOT_COVER
12.964.376 **INT-36h*:ff31af1c:00:00: *** mpu_recv(08 06 04 0c 00 00 01) ; PROP_SHOOTING_TYPE
12.964.496 MainCtrl:ff14523c:9c:16: REQ : MultiShotTerminate !!!
13.095.675 Gmt:ff183a88:9a:03: PROP_LIVE_VIEW_VIEWTYPE_SELECT:2
13.134.583 GuiMainTas:00090e70:32:03: config_save_file: saving to ML/SETTINGS/magic.cfg
13.249.463 PropMgr:000aed00:00:00: **** movie crop hack dis
in other words, the two shutdown methods (from power switch and from card door) are very different.
Now, disabling the movie crop mode from PROP_LIVE_VIEW_VIEWTYPE_SELECT (first property triggered before switching to photo mode)... still doesn't work on 700D. The crop mode setting is still enabled after rebooting without card.
PROP_HANDLER(PROP_LIVE_VIEW_VIEWTYPE)
{
if (buf[0] != 2)
{
//info_led_blink(5, 50, 50); [ to be able to tell when it runs; throws ERR70 ]
//DryosDebugMsg(0, 0, "**** movie crop hack dis"); [ visible in io_trace_full or dm-spy-experiments ]
movie_crop_hack_disable();
}
}
The procedure does run before the mirror goes down, but apparently that's still too late.
crop-switch-power-off-dis-PROP_LIVE_VIEW_VIEWTYPE.log8.789.033 **INT-36h*:ff31af1c:00:00: *** mpu_recv(06 05 06 22 00 00) ; ???
8.789.257 **INT-36h*:ff31af1c:00:00: *** mpu_recv(06 05 01 4b 01 00) ; PROP_LIVE_VIEW_VIEWTYPE_SELECT
8.798.111 PropMgr:ff23ee90:81:03: FixedMovie New 0 Last 1
8.798.131 PropMgr:ff23ef20:81:03: ExitMovMode
8.798.180 PropMgr:ff23e800:81:03: !! Convert Start !! 3(5) -> 3(0)
8.799.551 PropMgr:ff23e968:81:03: !! Convert End !!
8.802.361 PropMgr:ff1c6f78:83:01: changeCBR PropID(0x80000034)Parameter(1)Size(4) ; PROP_LIVE_VIEW_VIEWTYPE_SELECT
8.802.425 PropMgr:000bbcd0:00:00: **** movie crop hack dis [ too late? ]
8.806.570 PropMgr:ff1c6f78:83:01: changeCBR PropID(0x80000034)Parameter(1)Size(4)
8.806.642 PropMgr:000bbcd0:00:00: **** movie crop hack dis [ triggered again ]
8.833.798 PropMgr:ff11ebd0:00:00: *** mpu_send(1e 1c 01 4e 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 0f 00 00 00 00 00 00 00 02 00) ; PROP_VIDEO_MODE
8.835.150 PropMgr:ff11ebd0:00:00: *** mpu_send(1e 1c 01 4e 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 0f 00 00 00 00 00 00 00 02 00) ; PROP_VIDEO_MODE
8.835.331 **INT-36h*:ff31af1c:00:00: *** mpu_recv(1e 1c 01 4e 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 0f 00 00 00 00 00 00 00 02 00) ; PROP_VIDEO_MODE
8.847.884 **INT-36h*:ff31af1c:00:00: *** mpu_recv(1e 1c 01 4e 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 0f 00 00 00 00 00 00 00 02 00) ; PROP_VIDEO_MODE
8.930.835 PropMgr:ff1c6f78:83:01: changeCBR PropID(0x80000034)Parameter(1)Size(4)
8.930.904 PropMgr:000bbcd0:00:00: **** movie crop hack dis [ triggered once more]
8.930.985 PropMgr:ff31be1c:01:03: mode 0 size 0x0 , framerate 0x1e , type 0xf zoom 0x0
8.931.316 **INT-36h*:ff31af1c:00:00: *** mpu_recv(50 4e 02 0e 03 03 05 00 03 00 00 60 00 00 03 0d 48 00 00 00 00 83 00 00 06 04 00 00 06 04 00 00 06 04 00 01 01 00 00 00 70 28 00 00 00 00 00 00 1e 00 00 61 00 00 80 48 58 48 00 03 02 01 00 00 00 00 02 01 00 00 00 01 00 00 00 01 00 00 01) ; Mode group
8.932.040 PropMgr:ff228e60:8f:02: PROP_MOVIE_PARAM 0 0 30 15
8.956.203 PropMgr:ff0f2e90:81:03: dwNewAeModeDial = 3 [ switching to photo mode ]
8.956.256 PropMgr:ff23efb0:81:03: ChangeAEMode -> 3 @AE_MODE_DIAL
...
I don't get it. The "disabled" crop setting is sent over to the MPU, the MPU *confirms* it, yet the setting is not saved in its nonvolatile memory. When powering on without card, crop mode is still enabled.
The first event, bindReceiveSwitch (34, 0), is not forwarded to GuiMainTask, so it's not possible to handle it from there...
We can use a logging hook in either io_trace_full or dm-spy-experiments branch, dm-spy-extra.c:
{ 0xFF0CC5D8, "BindReceiveSwitch", 2, BindReceiveSwitch_log },
static void BindReceiveSwitch_log(uint32_t* regs, uint32_t* stack, uint32_t pc)
{
if (regs[0] == 34 && regs[1] == 0)
{
DryosDebugMsg(0, 0, "**** movie crop hack dis from BindReceiveSwitch");
movie_crop_hack_disable();
}
}
crop-switch-power-off-dis-BindReceiveSwitch.log7.790.891 MainCtrl:000c74e4:00:00: **** movie crop hack dis from BindReceiveSwitch
7.790.974 MainCtrl:ff0cc61c:89:03: bindReceiveSwitch (34, 0)
7.795.445 PropMgr:ff23ef20:81:03: ExitMovMode
7.804.086 PropMgr:ff11ebd0:00:00: *** mpu_send(1e 1c 01 4e 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 0f 00 00 00 00 00 00 00 02 00) ; PROP_VIDEO_MODE
7.805.345 **INT-36h*:ff31af1c:00:00: *** mpu_recv(1e 1c 01 4e 00 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 0f 00 00 00 00 00 00 00 02 00) ; PROP_VIDEO_MODE
TLDR: that doesn't work either.
Giving up.