1 #include "stubs_asm.h" 2 3 // BEWARE: thumb functions NEED the thumb bit in the below list 4 5 #define NULL_SUB 0xFC066A49 // bx lr 6 7 NHSTUB(EnterToCompensationEVF ,0xFC2D38E5) 8 NHSTUB(ExitFromCompensationEVF ,0xFC2D3927) 9 NHSTUB(ExpCtrlTool_StartContiAE ,0xFC2CDB5B) 10 NHSTUB(ExpCtrlTool_StopContiAE ,0xFC2CDD4D) 11 NHSTUB(Feof_Fut ,0xfc3b8fdd) 12 NHSTUB(Fflush_Fut ,0xfc3b9005) 13 NHSTUB(GetDrive_TotalClusters ,0xfc3b738f) // function immediately before GetDrive_FreeClusters in ROM 14 NHSTUB(GetFocusLensSubjectDistanceFromLens ,0xfc3ba223) 15 NHSTUB(GetImageFolder ,0xfc39d655) 16 NHSTUB(MakeSDCardBootable ,0xfc3b68af) 17 NHSTUB(RenameFile_Fut ,0xfc3b8d8d) 18 NHSTUB(SetFileTimeStamp ,0xfc3b5f07) 19 NHSTUB(TurnOffBackLight ,0xFC15BB35) // Does not do anything? 20 NHSTUB(TurnOnBackLight ,0xFC15BB31) // Does not do anything? 21 NHSTUB(apex2us ,0xfc25f5cb) 22 NHSTUB(err_init_task ,0xFC06647B) 23 NHSTUB(mkdir ,0xfc3b5fbf) 24 NHSTUB(realloc ,0xfc5e535d) 25 NHSTUB(reboot_fw_update ,0xFC28B97D) 26 NHSTUB(CancelHPTimer ,0xFC165D89) 27 28 NHSTUB(VTMLock ,0xfc3be3bf) 29 NHSTUB(VTMUnlock ,0xfc3be5e7) 30 31 NHSTUB(GetActiveViewportBuffer ,0xfc108e67) 32 33 NHSTUB(displayblankscreen, 0xFC3532E7) 34 NHSTUB(undisplayblankscreen, 0xFC353385) 35 36 // Does not work - use workaround in lib.c 37 IGNORE(Restart) 38 //NHSTUB(Restart ,0xFC0C306F) 39 40 // Ignore event proc versions, use inner functions from wrapper 41 IGNORE(PutInNdFilter) 42 IGNORE(PutOutNdFilter) 43 IGNORE(MoveFocusLensToDistance) 44 NHSTUB(PutInNdFilter_FW ,0xfc1ca7fb) 45 NHSTUB(PutOutNdFilter_FW ,0xfc1ca825) 46 NHSTUB(MoveFocusLensToDistance_FW ,0xfc667c4b) 47 48 //// required because DryOS >=54 functions assert on unitialized event flag, sem etc 49 //// see https://chdk.setepontos.com/index.php?topic=12516.0 50 //NHSTUB(init_focus_eventflag ,0xfc667e47) // InitializeAdjustmentSystem->fc662948->fc667e0a event flag matches MoveFocusLensToDistance 51 //NHSTUB(init_nd_eventflag ,0xfc667f49) // InitializeAdjustmentSystem->fc662948->fc667f1c event flag matches PutInNdFilter 52 NHSTUB(CreateBinarySemaphoreStrictly ,0xbfe15557) 53 54 // gets raw address and other stuff for next shot, stores in structure pointed to by r1 55 // via sub_fc08ec20, sub_fc1e56a6 called from capt_seq_task. Calls sub_fc0d3b56 to get raw address 56 NHSTUB(captseq_raw_addr_init ,0xfc09bf49) 57 58 // To find these values it is easiest to use the Ghidra de-compile window. 59 DEF(debug_logging_ptr ,0x00022078) // RAM address of function called by mzrm_sendmsg for logging 60 // To find debug_logging_ptr: 61 // Start at the mzrm_sendmsg function. 62 // Find the function call via memory pointer with first parameter = "SendMsg : %d\n" string 63 // debug_logging_ptris the memory address that contains the pointer used to make this function call 64 DEF(debug_logging_flag ,0x00022070) // RAM address of flag to enable logging call 65 // To find debug_logging_flag: 66 // Just before the debug_logging_ptrfound above there is an if statement that tests both a memory value and 67 // the debug_logging_ptrvalue. 68 // debug_logging_flag is the memory address of the flag value in the if statement. 69 DEF(mzrm_sendmsg_ret_adr ,0xfc361fa9) // Thumb address to check against LR register to detect mzrm_sendmag call from Canon UI update 70 // This is the address immediately after the call to debug_logging_ptrin mzrm_sendmsg (+1 for thumb) 71 DEF(hdmi_buffer_check_adr ,0x41141000) // For HDMI output we only want to flag UI updates when layer 0 is set to this buffer address 72 // Start at the transfer_src_overlay function, then go to the last function called 73 // Now find the function call just after the "MakeOsdVram.c" DebugAssert call. 74 // The value is the second parameter to this function. 75 76 // These don't exist 77 NHSTUB(PT_PlaySound ,NULL_SUB) 78 NHSTUB(ScreenLock ,NULL_SUB) 79 NHSTUB(ScreenUnlock ,NULL_SUB) 80 NHSTUB(SetFileAttributes ,NULL_SUB) 81 NHSTUB(SetZoomActuatorSpeedPercent ,NULL_SUB) 82 NHSTUB(UnsetZoomForMovie ,NULL_SUB) 83 NHSTUB(WriteSDCard ,NULL_SUB)