root/platform/a4000/sub/101a/capt_seq.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. capt_seq_task
  2. sub_FF9646A0_my
  3. exp_drv_task
  4. sub_FF8AC74C_my
  5. sub_FF89C418_my

   1 #include "lolevel.h"
   2 #include "platform.h"
   3 #include "core.h"
   4 #include "conf.h"
   5 
   6 static long *nrflag = (long*)(0x8868+0x00);  // Found @ ff9e4024 & ff9e406c
   7 #define NR_AUTO (0)                          // have to explictly reset value back to 0 to enable auto
   8 
   9 #define PAUSE_FOR_FILE_COUNTER 300           // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated
  10 #include "../../../generic/capt_seq.c"
  11 
  12 //** capt_seq_task  @ 0xFF870DB0
  13 
  14 void __attribute__((naked,noinline)) capt_seq_task() {
  15 asm volatile (
  16       "STMFD   SP!, {R3-R9,LR} \n"
  17       "LDR     R4, =0x36D7C \n"
  18       "LDR     R7, =0x2B64 \n"
  19       "MOV     R6, #0 \n"
  20 "loc_FF870DC0:\n"
  21       "LDR     R0, [R7, #4] \n"
  22       "MOV     R2, #0 \n"
  23       "MOV     R1, SP \n"
  24       "BL      sub_003F7218 \n"
  25       "TST     R0, #1 \n"
  26       "BEQ     loc_FF870DEC \n"
  27       "LDR     R1, =0x493 \n"
  28       "LDR     R0, =0xFF87091C \n" // "SsShootTask.c"
  29       "BL      _DebugAssert \n"
  30       "BL      _ExitTask \n"
  31       "LDMFD   SP!, {R3-R9,PC} \n"
  32 "loc_FF870DEC:\n"
  33       "LDR     R0, [SP] \n"
  34       "LDR     R1, [R0] \n"
  35       "CMP     R1, #0x20 \n"
  36       "ADDCC   PC, PC, R1, LSL #2 \n"
  37       "B       loc_FF871048 \n"
  38       "B       loc_FF870E80 \n"
  39       "B       loc_FF870E98 \n"
  40       "B       loc_FF870EFC \n"
  41       "B       loc_FF870F10 \n"
  42       "B       loc_FF870F08 \n"
  43       "B       loc_FF870F1C \n"
  44       "B       loc_FF870F24 \n"
  45       "B       loc_FF870F2C \n"
  46       "B       loc_FF870F48 \n"
  47       "B       loc_FF870F74 \n"
  48       "B       loc_FF870F54 \n"
  49       "B       loc_FF870F60 \n"
  50       "B       loc_FF870F68 \n"
  51       "B       loc_FF870F7C \n"
  52       "B       loc_FF870F84 \n"
  53       "B       loc_FF870F8C \n"
  54       "B       loc_FF870F94 \n"
  55       "B       loc_FF870F9C \n"
  56       "B       loc_FF870FA8 \n"
  57       "B       loc_FF870FB0 \n"
  58       "B       loc_FF870FB8 \n"
  59       "B       loc_FF870FC0 \n"
  60       "B       loc_FF870FC8 \n"
  61       "B       loc_FF870FD4 \n"
  62       "B       loc_FF870FDC \n"
  63       "B       loc_FF870FE4 \n"
  64       "B       loc_FF870FEC \n"
  65       "B       loc_FF870FF4 \n"
  66       "B       loc_FF871000 \n"
  67       "B       loc_FF871008 \n"
  68       "B       loc_FF871014 \n"
  69       "B       loc_FF871054 \n"
  70 "loc_FF870E80:\n"
  71       "    BL      shooting_expo_iso_override \n" // added
  72       "BL      sub_FF8715C8 \n"
  73       "    BL      shooting_expo_param_override \n" // added
  74       "BL      sub_FF86EBBC \n"
  75 //      "LDR     R0, [R4, #0x28] \n"
  76 //     "CMP     R0, #0 \n"
  77 //      "BLNE    sub_FF96473C \n" // above 3 lines removed - redundant with added lines below
  78       "    MOV     R0, #0 \n"         // patch added
  79       "    STR     R0, [R4,#0x28] \n" //fixes overrides behavior at short shutter press
  80       "B       loc_FF871054 \n"
  81 "loc_FF870E98:\n"
  82       "LDR     R5, [R0, #0x10] \n"
  83       "LDR     R0, [R4, #0x28] \n"
  84       "CMP     R0, #0 \n"
  85       "BNE     loc_FF870ED4 \n"
  86       "BL      sub_FF87249C \n"
  87       "MOV     R1, R5 \n"
  88       "BL      sub_FF8724F4 \n"
  89       "LDR     R0, =0x10F \n"
  90       "MOV     R2, #4 \n"
  91       "ADD     R1, R5, #0x24 \n"
  92       "BL      _SetPropertyCase \n"
  93       "MOV     R2, #4 \n"
  94       "ADD     R1, R5, #0x28 \n"
  95       "MOV     R0, #0x2C \n"
  96       "BL      _SetPropertyCase \n"
  97 "loc_FF870ED4:\n"
  98       "MOV     R0, R5 \n"
  99 //      "BL      sub_FF9646A0 \n" //original
 100       "BL      sub_FF9646A0_my \n" //patched
 101       "BL      capt_seq_hook_raw_here \n" // patch
 102       "MOV     R8, R0 \n"
 103       "MOV     R2, R5 \n"
 104       "MOV     R1, #1 \n"
 105       "BL      sub_FF86F06C \n"
 106       "TST     R8, #1 \n"
 107       "MOVEQ   R0, R5 \n"
 108       "BLEQ    sub_FF96401C \n"
 109       "B       loc_FF871054 \n"
 110 "loc_FF870EFC:\n"
 111       "MOV     R0, #1 \n"
 112       "BL      sub_FF871898 \n"
 113       "B       loc_FF871054 \n"
 114 "loc_FF870F08:\n"
 115       "BL      sub_FF87121C \n"
 116       "B       loc_FF870F14 \n"
 117 "loc_FF870F10:\n"
 118       "BL      sub_FF8715A8 \n"
 119 "loc_FF870F14:\n"
 120       "STR     R6, [R4, #0x28] \n"
 121       "B       loc_FF871054 \n"
 122 "loc_FF870F1C:\n"
 123       "BL      sub_FF8715B0 \n"
 124       "B       loc_FF871054 \n"
 125 "loc_FF870F24:\n"
 126       "BL      sub_FF871780 \n"
 127       "B       loc_FF870F4C \n"
 128 "loc_FF870F2C:\n"
 129       "LDR     R5, [R0, #0x10] \n"
 130       "MOV     R0, R5 \n"
 131       "BL      sub_FF9647D4 \n"
 132       "MOV     R2, R5 \n"
 133       "MOV     R1, #9 \n"
 134       "BL      sub_FF86F06C \n"
 135       "B       loc_FF871054 \n"
 136 "loc_FF870F48:\n"
 137       "BL      sub_FF871800 \n"
 138 "loc_FF870F4C:\n"
 139       "BL      sub_FF86EBBC \n"
 140       "B       loc_FF871054 \n"
 141 "loc_FF870F54:\n"
 142       "LDR     R0, [R4, #0x58] \n"
 143       "BL      sub_FF871C88 \n"
 144       "B       loc_FF871054 \n"
 145 "loc_FF870F60:\n"
 146       "BL      sub_FF872038 \n"
 147       "B       loc_FF871054 \n"
 148 "loc_FF870F68:\n"
 149       "MOV     R0, #0 \n"
 150       "BL      sub_FF87209C \n"
 151       "B       loc_FF871054 \n"
 152 "loc_FF870F74:\n"
 153       "BL      sub_FF8715A8 \n"
 154       "B       loc_FF871054 \n"
 155 "loc_FF870F7C:\n"
 156       "BL      sub_FF9633C8 \n"
 157       "B       loc_FF871054 \n"
 158 "loc_FF870F84:\n"
 159       "BL      sub_FF963628 \n"
 160       "B       loc_FF871054 \n"
 161 "loc_FF870F8C:\n"
 162       "BL      sub_FF9636E0 \n"
 163       "B       loc_FF871054 \n"
 164 "loc_FF870F94:\n"
 165       "BL      sub_FF9637B4 \n"
 166       "B       loc_FF871054 \n"
 167 "loc_FF870F9C:\n"
 168       "MOV     R0, #0 \n"
 169       "BL      sub_FF963A14 \n"
 170       "B       loc_FF871054 \n"
 171 "loc_FF870FA8:\n"
 172       "BL      sub_FF963B84 \n"
 173       "B       loc_FF871054 \n"
 174 "loc_FF870FB0:\n"
 175       "BL      sub_FF963C18 \n"
 176       "B       loc_FF871054 \n"
 177 "loc_FF870FB8:\n"
 178       "BL      sub_FF963CD4 \n"
 179       "B       loc_FF871054 \n"
 180 "loc_FF870FC0:\n"
 181       "BL      sub_FF871A0C \n"
 182       "B       loc_FF871054 \n"
 183 "loc_FF870FC8:\n"
 184       "BL      sub_FF871A90 \n"
 185       "BL      sub_FF832298 \n"
 186       "B       loc_FF871054 \n"
 187 "loc_FF870FD4:\n"
 188       "BL      sub_FF963884 \n"
 189       "B       loc_FF871054 \n"
 190 "loc_FF870FDC:\n"
 191       "BL      sub_FF9638C4 \n"
 192       "B       loc_FF871054 \n"
 193 "loc_FF870FE4:\n"
 194       "BL      sub_FF873944 \n"
 195       "B       loc_FF871054 \n"
 196 "loc_FF870FEC:\n"
 197       "BL      sub_FF8739B8 \n"
 198       "B       loc_FF871054 \n"
 199 "loc_FF870FF4:\n"
 200       "LDR     R0, [R0, #0xC] \n"
 201       "BL      sub_FF963DFC \n"
 202       "B       loc_FF871054 \n"
 203 "loc_FF871000:\n"
 204       "BL      sub_FF963E6C \n"
 205       "B       loc_FF871054 \n"
 206 "loc_FF871008:\n"
 207       "BL      sub_FF873A20 \n"
 208       "BL      sub_FF8739D8 \n"
 209       "B       loc_FF871054 \n"
 210 "loc_FF871014:\n"
 211       "MOV     R0, #1 \n"
 212       "BL      sub_FF964ED4 \n"
 213       "MOV     R0, #1 \n"
 214       "BL      sub_FF964FFC \n"
 215       "LDRH    R0, [R4, #0x9C] \n"
 216       "CMP     R0, #4 \n"
 217       "LDRNEH  R0, [R4] \n"
 218       "SUBNE   R1, R0, #0x8200 \n"
 219       "SUBNES  R1, R1, #0x2E \n"
 220       "BNE     loc_FF871054 \n"
 221       "BL      sub_FF8739B8 \n"
 222       "BL      sub_FF873E7C \n"
 223       "B       loc_FF871054 \n"
 224 "loc_FF871048:\n"
 225       "LDR     R1, =0x5F4 \n"
 226       "LDR     R0, =0xFF87091C \n" // "SsShootTask.c"
 227       "BL      _DebugAssert \n"
 228 "loc_FF871054:\n"
 229       "LDR     R0, [SP] \n"
 230       "LDR     R1, [R0, #4] \n"
 231       "LDR     R0, [R7] \n"
 232       "BL      sub_003FAC6C \n"
 233       "LDR     R5, [SP] \n"
 234       "LDR     R0, [R5, #8] \n"
 235       "CMP     R0, #0 \n"
 236       "LDREQ   R1, =0x117 \n"
 237       "LDREQ   R0, =0xFF87091C \n" // "SsShootTask.c"
 238       "BLEQ    _DebugAssert \n"
 239       "STR     R6, [R5, #8] \n"
 240       "B       loc_FF870DC0 \n"
 241         );
 242 }
 243 
 244 
 245 //** sub_FF9646A0_my  @ 0xFF9646A0
 246 void __attribute__((naked,noinline)) sub_FF9646A0_my() {
 247 asm volatile (
 248       "STMFD   SP!, {R4-R6,LR}\n"
 249       "LDR     R5, =0x36D7C\n"
 250       "MOV     R6, R0\n"
 251       "LDR     R0, [R5, #0x28]\n"
 252       "MOV     R4, #0\n"
 253       "CMP     R0, #0\n"
 254       "BNE     loc_FF9646D0\n"
 255       "MOV     R0, #0xC\n"
 256       "BL      sub_FF87551C\n"
 257       "TST     R0, #1\n"
 258       "MOVNE   R0, #1\n"
 259       "LDMNEFD SP!, {R4-R6,PC}\n"
 260 "loc_FF9646D0:\n"
 261       "BL      sub_FF8715B8\n"
 262       "LDR     R0, [R5, #0x28]\n"
 263       "CMP     R0, #0\n"
 264       "BNE     loc_FF964720\n"
 265       "MOV     R0, R6\n"
 266       "BL      sub_FF963F5C\n"
 267       "TST     R0, #1\n"
 268       "LDMNEFD SP!, {R4-R6,PC}\n"
 269       "MOV     R0, R6\n"
 270       "BL      sub_FF9642F0\n"
 271       "BL      sub_FF964CB4\n"
 272 //begin patch
 273       "BL      wait_until_remote_button_is_released\n"
 274       "BL      capt_seq_hook_set_nr\n"
 275 //end patch
 276       "MOV     R0, #2\n"
 277       "BL      sub_FF876C34\n"
 278       "LDR     R0, [R5, #0x8C]\n"
 279       "TST     R0, #0x10\n"
 280       "BNE     loc_FF964730\n"
 281       "MOV     R0, R6\n"
 282       "BL      sub_FFA72184\n"  //original
 283 //      "BL      sub_FFA72184_my\n" //This function calls "SsStandardCaptureSeq.c"
 284       "MOV     R4, R0\n"
 285       "B       loc_FF964734\n"
 286 "loc_FF964720:\n"
 287       "LDR     R0, =0x684C\n"
 288       "LDR     R0, [R0]\n"
 289       "CMP     R0, #0\n"
 290       "BEQ     loc_FF964734\n"
 291 "loc_FF964730:\n"
 292       "MOV     R4, #0x1D\n"
 293 "loc_FF964734:\n"
 294       "MOV     R0, R4\n"
 295       "LDMFD   SP!, {R4-R6,PC}\n"
 296         );
 297 }
 298 
 299 
 300 //** exp_drv_task  @ 0xFF8AFADC 
 301 
 302 void __attribute__((naked,noinline)) exp_drv_task() {
 303 asm volatile (
 304       "STMFD   SP!, {R4-R9,LR} \n"
 305       "SUB     SP, SP, #0x2C \n"
 306       "LDR     R6, =0x3DDC \n"
 307       "LDR     R7, =0xBB8 \n"
 308       "LDR     R4, =0x53D2C \n"
 309       "MOV     R0, #0 \n"
 310       "ADD     R5, SP, #0x1C \n"
 311       "STR     R0, [SP, #0xC] \n"
 312 "loc_FF8AFAFC:\n"
 313       "LDR     R0, [R6, #0x20] \n"
 314       "MOV     R2, #0 \n"
 315       "ADD     R1, SP, #0x28 \n"
 316       "BL      sub_003F7218 \n"
 317       "LDR     R0, [SP, #0xC] \n"
 318       "CMP     R0, #1 \n"
 319       "BNE     loc_FF8AFB48 \n"
 320       "LDR     R0, [SP, #0x28] \n"
 321       "LDR     R0, [R0] \n"
 322       "CMP     R0, #0x14 \n"
 323       "CMPNE   R0, #0x15 \n"
 324       "CMPNE   R0, #0x16 \n"
 325       "CMPNE   R0, #0x17 \n"
 326       "BEQ     loc_FF8AFCA8 \n"
 327       "CMP     R0, #0x2A \n"
 328       "BEQ     loc_FF8AFC30 \n"
 329       "ADD     R1, SP, #0xC \n"
 330       "MOV     R0, #0 \n"
 331       "BL      sub_FF8AFA8C \n"
 332 "loc_FF8AFB48:\n"
 333       "LDR     R0, [SP, #0x28] \n"
 334       "LDR     R1, [R0] \n"
 335       "CMP     R1, #0x30 \n"
 336       "BNE     loc_FF8AFB74 \n"
 337       "BL      sub_FF8B0EBC \n"
 338       "LDR     R0, [R6, #0x1C] \n"
 339       "MOV     R1, #1 \n"
 340       "BL      sub_003FAC6C \n"
 341       "BL      _ExitTask \n"
 342       "ADD     SP, SP, #0x2C \n"
 343       "LDMFD   SP!, {R4-R9,PC} \n"
 344 "loc_FF8AFB74:\n"
 345       "CMP     R1, #0x2F \n"
 346       "BNE     loc_FF8AFB90 \n"
 347       "LDR     R2, [R0, #0x8C]! \n"
 348       "LDR     R1, [R0, #4] \n"
 349       "MOV     R0, R1 \n"
 350       "BLX     R2 \n"
 351       "B       loc_FF8B0164 \n"
 352 "loc_FF8AFB90:\n"
 353       "CMP     R1, #0x28 \n"
 354       "BNE     loc_FF8AFBE0 \n"
 355       "LDR     R0, [R6, #0x1C] \n"
 356       "MOV     R1, #0x80 \n"
 357       "BL      sub_003FACA0 \n"
 358       "LDR     R0, =0xFF8AB3F0 \n"
 359       "MOV     R1, #0x80 \n"
 360       "BL      sub_FF955934 \n"
 361       "LDR     R0, [R6, #0x1C] \n"
 362       "MOV     R2, R7 \n"
 363       "MOV     R1, #0x80 \n"
 364       "BL      sub_003FABAC \n"
 365       "TST     R0, #1 \n"
 366       "LDRNE   R1, =0x157A \n"
 367       "BNE     loc_FF8AFC9C \n"
 368 "loc_FF8AFBCC:\n"
 369       "LDR     R1, [SP, #0x28] \n"
 370       "LDR     R0, [R1, #0x90] \n"
 371       "LDR     R1, [R1, #0x8C] \n"
 372       "BLX     R1 \n"
 373       "B       loc_FF8B0164 \n"
 374 "loc_FF8AFBE0:\n"
 375       "CMP     R1, #0x29 \n"
 376       "BNE     loc_FF8AFC28 \n"
 377       "ADD     R1, SP, #0xC \n"
 378       "BL      sub_FF8AFA8C \n"
 379       "LDR     R0, [R6, #0x1C] \n"
 380       "MOV     R1, #0x100 \n"
 381       "BL      sub_003FACA0 \n"
 382       "LDR     R0, =0xFF8AB400 \n"
 383       "MOV     R1, #0x100 \n"
 384       "BL      sub_FF955AD4 \n"
 385       "LDR     R0, [R6, #0x1C] \n"
 386       "MOV     R2, R7 \n"
 387       "MOV     R1, #0x100 \n"
 388       "BL      sub_003FABAC \n"
 389       "TST     R0, #1 \n"
 390       "BEQ     loc_FF8AFBCC \n"
 391       "LDR     R1, =0x1584 \n"
 392       "B       loc_FF8AFC9C \n"
 393 "loc_FF8AFC28:\n"
 394       "CMP     R1, #0x2A \n"
 395       "BNE     loc_FF8AFC40 \n"
 396 "loc_FF8AFC30:\n"
 397       "LDR     R0, [SP, #0x28] \n"
 398       "ADD     R1, SP, #0xC \n"
 399       "BL      sub_FF8AFA8C \n"
 400       "B       loc_FF8AFBCC \n"
 401 "loc_FF8AFC40:\n"
 402       "CMP     R1, #0x2D \n"
 403       "BNE     loc_FF8AFC58 \n"
 404       "BL      sub_FF89C6CC \n"
 405       "BL      sub_FF89D3B4 \n"
 406       "BL      sub_FF89CF1C \n"
 407       "B       loc_FF8AFBCC \n"
 408 "loc_FF8AFC58:\n"
 409       "CMP     R1, #0x2E \n"
 410       "BNE     loc_FF8AFCA8 \n"
 411       "LDR     R0, [R6, #0x1C] \n"
 412       "MOV     R1, #4 \n"
 413       "BL      sub_003FACA0 \n"
 414       "LDR     R1, =0xFF8AB420 \n"
 415       "LDR     R0, =0xFFFFF400 \n"
 416       "MOV     R2, #4 \n"
 417       "BL      sub_FF89C11C \n"
 418       "BL      sub_FF89C3AC \n"
 419       "LDR     R0, [R6, #0x1C] \n"
 420       "MOV     R2, R7 \n"
 421       "MOV     R1, #4 \n"
 422       "BL      sub_003FAAC8 \n"
 423       "TST     R0, #1 \n"
 424       "BEQ     loc_FF8AFBCC \n"
 425       "LDR     R1, =0x15AC \n"
 426 "loc_FF8AFC9C:\n"
 427       "LDR     R0, =0xFF8ABB14 \n"
 428       "BL      _DebugAssert \n"
 429       "B       loc_FF8AFBCC \n"
 430 "loc_FF8AFCA8:\n"
 431       "LDR     R0, [SP, #0x28] \n"
 432       "MOV     R8, #1 \n"
 433       "LDR     R1, [R0] \n"
 434       "CMP     R1, #0x12 \n"
 435       "CMPNE   R1, #0x13 \n"
 436       "BNE     loc_FF8AFD10 \n"
 437       "LDR     R1, [R0, #0x7C] \n"
 438       "ADD     R1, R1, R1, LSL #1 \n"
 439       "ADD     R1, R0, R1, LSL #2 \n"
 440       "SUB     R1, R1, #8 \n"
 441       "LDMIA   R1, {R2,R3,R9} \n"
 442       "STMIA   R5, {R2,R3,R9} \n"
 443       "BL      sub_FF8AE02C \n"
 444       "LDR     R0, [SP, #0x28] \n"
 445       "LDR     R1, [R0, #0x7C] \n"
 446       "LDR     R3, [R0, #0x8C] \n"
 447       "LDR     R2, [R0, #0x90] \n"
 448       "ADD     R0, R0, #4 \n"
 449       "BLX     R3 \n"
 450       "LDR     R0, [SP, #0x28] \n"
 451       "BL      sub_FF8B12C0 \n"
 452       "LDR     R0, [SP, #0x28] \n"
 453       "LDR     R1, [R0, #0x7C] \n"
 454       "LDR     R2, [R0, #0x98] \n"
 455       "LDR     R3, [R0, #0x94] \n"
 456       "B       loc_FF8B0028 \n"
 457 "loc_FF8AFD10:\n"
 458       "CMP     R1, #0x14 \n"
 459       "CMPNE   R1, #0x15 \n"
 460       "CMPNE   R1, #0x16 \n"
 461       "CMPNE   R1, #0x17 \n"
 462       "BNE     loc_FF8AFDC8 \n"
 463       "ADD     R3, SP, #0xC \n"
 464       "MOV     R2, SP \n"
 465       "ADD     R1, SP, #0x1C \n"
 466       "BL      sub_FF8AE28C \n"
 467       "CMP     R0, #1 \n"
 468       "MOV     R9, R0 \n"
 469       "CMPNE   R9, #5 \n"
 470       "BNE     loc_FF8AFD64 \n"
 471       "LDR     R0, [SP, #0x28] \n"
 472       "MOV     R2, R9 \n"
 473       "LDR     R1, [R0, #0x7C]! \n"
 474       "LDR     R12, [R0, #0x10]! \n"
 475       "LDR     R3, [R0, #4] \n"
 476       "MOV     R0, SP \n"
 477       "BLX     R12 \n"
 478       "B       loc_FF8AFD9C \n"
 479 "loc_FF8AFD64:\n"
 480       "LDR     R0, [SP, #0x28] \n"
 481       "CMP     R9, #2 \n"
 482       "LDR     R3, [R0, #0x90] \n"
 483       "CMPNE   R9, #6 \n"
 484       "BNE     loc_FF8AFDB0 \n"
 485       "LDR     R12, [R0, #0x8C] \n"
 486       "MOV     R2, R9 \n"
 487       "MOV     R1, #1 \n"
 488       "MOV     R0, SP \n"
 489       "BLX     R12 \n"
 490       "LDR     R0, [SP, #0x28] \n"
 491       "MOV     R2, SP \n"
 492       "ADD     R1, SP, #0x1C \n"
 493       "BL      sub_FF8AF77C \n"
 494 "loc_FF8AFD9C:\n"
 495       "LDR     R0, [SP, #0x28] \n"
 496       "LDR     R2, [SP, #0xC] \n"
 497       "MOV     R1, R9 \n"
 498       "BL      sub_FF8AF9CC \n"
 499       "B       loc_FF8B0030 \n"
 500 "loc_FF8AFDB0:\n"
 501       "LDR     R1, [R0, #0x7C] \n"
 502       "LDR     R12, [R0, #0x8C] \n"
 503       "MOV     R2, R9 \n"
 504       "ADD     R0, R0, #4 \n"
 505       "BLX     R12 \n"
 506       "B       loc_FF8B0030 \n"
 507 "loc_FF8AFDC8:\n"
 508       "CMP     R1, #0x24 \n"
 509       "CMPNE   R1, #0x25 \n"
 510       "BNE     loc_FF8AFE14 \n"
 511       "LDR     R1, [R0, #0x7C] \n"
 512       "ADD     R1, R1, R1, LSL #1 \n"
 513       "ADD     R1, R0, R1, LSL #2 \n"
 514       "SUB     R1, R1, #8 \n"
 515       "LDMIA   R1, {R2,R3,R9} \n"
 516       "STMIA   R5, {R2,R3,R9} \n"
 517       "BL      sub_FF8AD018 \n"
 518       "LDR     R0, [SP, #0x28] \n"
 519       "LDR     R1, [R0, #0x7C] \n"
 520       "LDR     R3, [R0, #0x8C] \n"
 521       "LDR     R2, [R0, #0x90] \n"
 522       "ADD     R0, R0, #4 \n"
 523       "BLX     R3 \n"
 524       "LDR     R0, [SP, #0x28] \n"
 525       "BL      sub_FF8AD458 \n"
 526       "B       loc_FF8B0030 \n"
 527 "loc_FF8AFE14:\n"
 528       "ADD     R1, R0, #4 \n"
 529       "LDMIA   R1, {R2,R3,R9} \n"
 530       "STMIA   R5, {R2,R3,R9} \n"
 531       "LDR     R1, [R0] \n"
 532       "CMP     R1, #0x28 \n"
 533       "ADDCC   PC, PC, R1, LSL #2 \n"
 534       "B       loc_FF8B0018 \n"
 535       "B       loc_FF8AFED0 \n"
 536       "B       loc_FF8AFED0 \n"
 537       "B       loc_FF8AFED8 \n"
 538       "B       loc_FF8AFEE0 \n"
 539       "B       loc_FF8AFEE0 \n"
 540       "B       loc_FF8AFEE0 \n"
 541       "B       loc_FF8AFED0 \n"
 542       "B       loc_FF8AFED8 \n"
 543       "B       loc_FF8AFEE0 \n"
 544       "B       loc_FF8AFEE0 \n"
 545       "B       loc_FF8AFEF8 \n"
 546       "B       loc_FF8AFEF8 \n"
 547       "B       loc_FF8B0004 \n"
 548       "B       loc_FF8B000C \n"
 549       "B       loc_FF8B000C \n"
 550       "B       loc_FF8B000C \n"
 551       "B       loc_FF8B000C \n"
 552       "B       loc_FF8B0014 \n"
 553       "B       loc_FF8B0018 \n"
 554       "B       loc_FF8B0018 \n"
 555       "B       loc_FF8B0018 \n"
 556       "B       loc_FF8B0018 \n"
 557       "B       loc_FF8B0018 \n"
 558       "B       loc_FF8B0018 \n"
 559       "B       loc_FF8AFEE8 \n"
 560       "B       loc_FF8AFEF0 \n"
 561       "B       loc_FF8AFEF0 \n"
 562       "B       loc_FF8AFEF0 \n"
 563       "B       loc_FF8AFF04 \n"
 564       "B       loc_FF8AFF04 \n"
 565       "B       loc_FF8AFF0C \n"
 566       "B       loc_FF8AFF44 \n"
 567       "B       loc_FF8AFF7C \n"
 568       "B       loc_FF8AFFB4 \n"
 569       "B       loc_FF8AFFEC \n"
 570       "B       loc_FF8AFFEC \n"
 571       "B       loc_FF8B0018 \n"
 572       "B       loc_FF8B0018 \n"
 573       "B       loc_FF8AFFF4 \n"
 574       "B       loc_FF8AFFFC \n"
 575 "loc_FF8AFED0:\n"
 576       "BL      sub_FF8AB998 \n"
 577       "B       loc_FF8B0018 \n"
 578 "loc_FF8AFED8:\n"
 579       "BL      sub_FF8ABC3C \n"
 580       "B       loc_FF8B0018 \n"
 581 "loc_FF8AFEE0:\n"
 582       "BL      sub_FF8ABE64 \n"
 583       "B       loc_FF8B0018 \n"
 584 "loc_FF8AFEE8:\n"
 585       "BL      sub_FF8AC188 \n"
 586       "B       loc_FF8B0018 \n"
 587 "loc_FF8AFEF0:\n"
 588       "BL      sub_FF8AC3A0 \n"
 589       "B       loc_FF8B0018 \n"
 590 "loc_FF8AFEF8:\n"
 591 //      "BL      sub_FF8AC74C \n"  //original
 592       "BL      sub_FF8AC74C_my \n" //patched
 593       "MOV     R8, #0 \n"
 594       "B       loc_FF8B0018 \n"
 595 "loc_FF8AFF04:\n"
 596       "BL      sub_FF8AC88C \n"
 597       "B       loc_FF8B0018 \n"
 598 "loc_FF8AFF0C:\n"
 599       "LDRH    R1, [R0, #4] \n"
 600       "STRH    R1, [SP, #0x1C] \n"
 601       "LDRH    R1, [R4, #2] \n"
 602       "STRH    R1, [SP, #0x1E] \n"
 603       "LDRH    R1, [R4, #4] \n"
 604       "STRH    R1, [SP, #0x20] \n"
 605       "LDRH    R1, [R4, #6] \n"
 606       "STRH    R1, [SP, #0x22] \n"
 607       "LDRH    R1, [R0, #0xC] \n"
 608       "STRH    R1, [SP, #0x24] \n"
 609       "LDRH    R1, [R4, #0xA] \n"
 610       "STRH    R1, [SP, #0x26] \n"
 611       "BL      sub_FF8B0F50 \n"
 612       "B       loc_FF8B0018 \n"
 613 "loc_FF8AFF44:\n"
 614       "LDRH    R1, [R0, #4] \n"
 615       "STRH    R1, [SP, #0x1C] \n"
 616       "LDRH    R1, [R4, #2] \n"
 617       "STRH    R1, [SP, #0x1E] \n"
 618       "LDRH    R1, [R4, #4] \n"
 619       "STRH    R1, [SP, #0x20] \n"
 620       "LDRH    R1, [R4, #6] \n"
 621       "STRH    R1, [SP, #0x22] \n"
 622       "LDRH    R1, [R4, #8] \n"
 623       "STRH    R1, [SP, #0x24] \n"
 624       "LDRH    R1, [R4, #0xA] \n"
 625       "STRH    R1, [SP, #0x26] \n"
 626       "BL      sub_FF8B10C0 \n"
 627       "B       loc_FF8B0018 \n"
 628 "loc_FF8AFF7C:\n"
 629       "LDRH    R1, [R4] \n"
 630       "STRH    R1, [SP, #0x1C] \n"
 631       "LDRH    R1, [R0, #6] \n"
 632       "STRH    R1, [SP, #0x1E] \n"
 633       "LDRH    R1, [R4, #4] \n"
 634       "STRH    R1, [SP, #0x20] \n"
 635       "LDRH    R1, [R4, #6] \n"
 636       "STRH    R1, [SP, #0x22] \n"
 637       "LDRH    R1, [R4, #8] \n"
 638       "STRH    R1, [SP, #0x24] \n"
 639       "LDRH    R1, [R4, #0xA] \n"
 640       "STRH    R1, [SP, #0x26] \n"
 641       "BL      sub_FF8B1174 \n"
 642       "B       loc_FF8B0018 \n"
 643 "loc_FF8AFFB4:\n"
 644       "LDRH    R1, [R4] \n"
 645       "STRH    R1, [SP, #0x1C] \n"
 646       "LDRH    R1, [R4, #2] \n"
 647       "STRH    R1, [SP, #0x1E] \n"
 648       "LDRH    R1, [R4, #4] \n"
 649       "STRH    R1, [SP, #0x20] \n"
 650       "LDRH    R1, [R4, #6] \n"
 651       "STRH    R1, [SP, #0x22] \n"
 652       "LDRH    R1, [R0, #0xC] \n"
 653       "STRH    R1, [SP, #0x24] \n"
 654       "LDRH    R1, [R4, #0xA] \n"
 655       "STRH    R1, [SP, #0x26] \n"
 656       "BL      sub_FF8B121C \n"
 657       "B       loc_FF8B0018 \n"
 658 "loc_FF8AFFEC:\n"
 659       "BL      sub_FF8ACDCC \n"
 660       "B       loc_FF8B0018 \n"
 661 "loc_FF8AFFF4:\n"
 662       "BL      sub_FF8AD55C \n"
 663       "B       loc_FF8B0018 \n"
 664 "loc_FF8AFFFC:\n"
 665       "BL      sub_FF8AD840 \n"
 666       "B       loc_FF8B0018 \n"
 667 "loc_FF8B0004:\n"
 668       "BL      sub_FF8ADB00 \n"
 669       "B       loc_FF8B0018 \n"
 670 "loc_FF8B000C:\n"
 671       "BL      sub_FF8ADCBC \n"
 672       "B       loc_FF8B0018 \n"
 673 "loc_FF8B0014:\n"
 674       "BL      sub_FF8ADE24 \n"
 675 "loc_FF8B0018:\n"
 676       "LDR     R0, [SP, #0x28] \n"
 677       "LDR     R1, [R0, #0x7C] \n"
 678       "LDR     R2, [R0, #0x90] \n"
 679       "LDR     R3, [R0, #0x8C] \n"
 680 "loc_FF8B0028:\n"
 681       "ADD     R0, R0, #4 \n"
 682       "BLX     R3 \n"
 683 "loc_FF8B0030:\n"
 684       "LDR     R0, [SP, #0x28] \n"
 685       "LDR     R0, [R0] \n"
 686       "CMP     R0, #0x10 \n"
 687       "BEQ     loc_FF8B0068 \n"
 688       "BGT     loc_FF8B0058 \n"
 689       "CMP     R0, #1 \n"
 690       "CMPNE   R0, #4 \n"
 691       "CMPNE   R0, #0xE \n"
 692       "BNE     loc_FF8B009C \n"
 693       "B       loc_FF8B0068 \n"
 694 "loc_FF8B0058:\n"
 695       "CMP     R0, #0x13 \n"
 696       "CMPNE   R0, #0x17 \n"
 697       "CMPNE   R0, #0x1A \n"
 698       "BNE     loc_FF8B009C \n"
 699 "loc_FF8B0068:\n"
 700       "LDRSH   R0, [R4] \n"
 701       "CMN     R0, #0xC00 \n"
 702       "LDRNESH R1, [R4, #8] \n"
 703       "CMNNE   R1, #0xC00 \n"
 704       "STRNEH  R0, [SP, #0x1C] \n"
 705       "STRNEH  R1, [SP, #0x24] \n"
 706       "BNE     loc_FF8B009C \n"
 707       "ADD     R0, SP, #0x10 \n"
 708       "BL      sub_FF8B14CC \n"
 709       "LDRH    R0, [SP, #0x10] \n"
 710       "STRH    R0, [SP, #0x1C] \n"
 711       "LDRH    R0, [SP, #0x18] \n"
 712       "STRH    R0, [SP, #0x24] \n"
 713 "loc_FF8B009C:\n"
 714       "LDR     R0, [SP, #0x28] \n"
 715       "CMP     R8, #1 \n"
 716       "BNE     loc_FF8B00EC \n"
 717       "LDR     R1, [R0, #0x7C] \n"
 718       "MOV     R2, #0xC \n"
 719       "ADD     R1, R1, R1, LSL #1 \n"
 720       "ADD     R0, R0, R1, LSL #2 \n"
 721       "SUB     R8, R0, #8 \n"
 722       "LDR     R0, =0x53D2C \n"
 723       "ADD     R1, SP, #0x1C \n"
 724       "BL      sub_003FC17C \n"
 725       "LDR     R0, =0x53D38 \n"
 726       "MOV     R2, #0xC \n"
 727       "ADD     R1, SP, #0x1C \n"
 728       "BL      sub_003FC17C \n"
 729       "LDR     R0, =0x53D44 \n"
 730       "MOV     R2, #0xC \n"
 731       "MOV     R1, R8 \n"
 732       "BL      sub_003FC17C \n"
 733       "B       loc_FF8B0164 \n"
 734 "loc_FF8B00EC:\n"
 735       "LDR     R0, [R0] \n"
 736       "MOV     R3, #1 \n"
 737       "CMP     R0, #0xB \n"
 738       "BNE     loc_FF8B0130 \n"
 739       "MOV     R2, #0 \n"
 740       "STRD    R2, [SP] \n"
 741       "MOV     R2, R3 \n"
 742       "MOV     R1, R3 \n"
 743       "MOV     R0, #0 \n"
 744       "BL      sub_FF8AB778 \n"
 745       "MOV     R3, #1 \n"
 746       "MOV     R2, #0 \n"
 747       "STRD    R2, [SP] \n"
 748       "MOV     R2, R3 \n"
 749       "MOV     R1, R3 \n"
 750       "MOV     R0, #0 \n"
 751       "B       loc_FF8B0160 \n"
 752 "loc_FF8B0130:\n"
 753       "MOV     R2, #1 \n"
 754       "STRD    R2, [SP] \n"
 755       "MOV     R3, R2 \n"
 756       "MOV     R1, R2 \n"
 757       "MOV     R0, R2 \n"
 758       "BL      sub_FF8AB778 \n"
 759       "MOV     R3, #1 \n"
 760       "MOV     R2, R3 \n"
 761       "MOV     R1, R3 \n"
 762       "MOV     R0, R3 \n"
 763       "STR     R3, [SP] \n"
 764       "STR     R3, [SP, #4] \n"
 765 "loc_FF8B0160:\n"
 766       "BL      sub_FF8AB8E4 \n"
 767 "loc_FF8B0164:\n"
 768       "LDR     R0, [SP, #0x28] \n"
 769       "BL      sub_FF8B0EBC \n"
 770       "B       loc_FF8AFAFC \n"
 771         );
 772 }
 773 
 774 
 775 //** sub_FF8AC74C_my  @ 0xFF8AC74C 
 776 
 777 void __attribute__((naked,noinline)) sub_FF8AC74C_my() {
 778 asm volatile (
 779       "STMFD   SP!, {R4-R8,LR} \n"
 780       "LDR     R7, =0x3DDC \n"
 781       "MOV     R4, R0 \n"
 782       "LDR     R0, [R7, #0x1C] \n"
 783       "MOV     R1, #0x3E \n"
 784       "BL      sub_003FACA0 \n"
 785       "MOV     R2, #0 \n"
 786       "LDRSH   R0, [R4, #4] \n"
 787       "MOV     R1, R2 \n"
 788       "BL      sub_FF8AB480 \n"
 789       "MOV     R6, R0 \n"
 790       "LDRSH   R0, [R4, #6] \n"
 791       "BL      sub_FF8AB5D0 \n"
 792       "LDRSH   R0, [R4, #8] \n"
 793       "BL      sub_FF8AB628 \n"
 794       "LDRSH   R0, [R4, #0xA] \n"
 795       "BL      sub_FF8AB680 \n"
 796       "LDRSH   R0, [R4, #0xC] \n"
 797       "MOV     R1, #0 \n"
 798       "BL      sub_FF8AB6D8 \n"
 799       "MOV     R5, R0 \n"
 800       "LDR     R0, [R4] \n"
 801       "LDR     R8, =0x53D44 \n"
 802       "CMP     R0, #0xB \n"
 803       "MOVEQ   R6, #0 \n"
 804       "MOVEQ   R5, R6 \n"
 805       "BEQ     loc_FF8AC7E0 \n"
 806       "CMP     R6, #1 \n"
 807       "BNE     loc_FF8AC7E0 \n"
 808       "LDRSH   R0, [R4, #4] \n"
 809       "LDR     R1, =0xFF8AB3E0 \n"
 810       "MOV     R2, #2 \n"
 811       "BL      sub_FF9559B8 \n"
 812       "STRH    R0, [R4, #4] \n"
 813       "MOV     R0, #0 \n"
 814       "STR     R0, [R7, #0x28] \n"
 815       "B       loc_FF8AC7E8 \n"
 816 "loc_FF8AC7E0:\n"
 817       "LDRH    R0, [R8] \n"
 818       "STRH    R0, [R4, #4] \n"
 819 "loc_FF8AC7E8:\n"
 820       "CMP     R5, #1 \n"
 821       "LDRNEH  R0, [R8, #8] \n"
 822       "BNE     loc_FF8AC804 \n"
 823       "LDRSH   R0, [R4, #0xC] \n"
 824       "LDR     R1, =0xFF8AB464 \n"
 825       "MOV     R2, #0x20 \n"
 826       "BL      sub_FF8B0F0C \n"
 827 "loc_FF8AC804:\n"
 828       "STRH    R0, [R4, #0xC] \n"
 829       "LDRSH   R0, [R4, #6] \n"
 830 //      "BL      sub_FF89C418 \n" //original
 831       "BL      sub_FF89C418_my \n" //patch
 832       "B       sub_FF8AC810 \n" // continue in firmware
 833         );
 834 }
 835 
 836 
 837 //** sub_FF89C418_my  @ 0xFF89C418
 838 
 839 void __attribute__((naked,noinline)) sub_FF89C418_my() {
 840 asm volatile (
 841       "STMFD   SP!, {R4-R6,LR} \n"
 842       "LDR     R5, =0x3A68 \n"
 843       "MOV     R4, R0 \n"
 844       "LDR     R0, [R5, #4] \n"
 845       "CMP     R0, #1 \n"
 846       "LDRNE   R1, =0x14D \n"
 847       "LDRNE   R0, =0xFF89C250 \n"
 848       "BLNE    _DebugAssert \n"
 849       "CMN     R4, #0xC00 \n"
 850       "LDREQSH R4, [R5, #2] \n"
 851       "CMN     R4, #0xC00 \n"
 852       "LDREQ   R1, =0x153 \n"
 853       "LDREQ   R0, =0xFF89C250 \n"
 854       "STRH    R4, [R5, #2] \n"
 855       "BLEQ    _DebugAssert \n"
 856       "MOV     R0, R4 \n"
 857 //      "BL      _apex2us \n" //original apex2us function
 858       "BL      apex2us \n"    //patch
 859       "MOV     R4, R0 \n"
 860       "BL      sub_FF8EA590 \n"
 861       "MOV     R0, R4 \n"
 862       "BL      sub_FF8F2D98 \n"
 863       "TST     R0, #1 \n"
 864       "LDMEQFD SP!, {R4-R6,PC} \n"
 865       "LDMFD   SP!, {R4-R6,LR} \n"
 866       "MOV     R1, #0x158 \n"
 867       "LDR     R0, =0xFF89C250 \n"
 868       "B       _DebugAssert \n"
 869         );
 870 }

/* [<][>][^][v][top][bottom][index][help] */