root/platform/a2300/sub/100f/capt_seq.c

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

DEFINITIONS

This source file includes following definitions.
  1. capt_seq_task
  2. sub_FF960FAC_my
  3. exp_drv_task
  4. sub_FF8ABB08_my
  5. sub_FF89A730_my

   1 #include "lolevel.h"
   2 #include "platform.h"
   3 #include "core.h"
   4 #include "conf.h"
   5 
   6 static long *nrflag = (long*)(0x8748+0x00);  // Found @ ff9df4ac & ff9df50c
   7 #define NR_AUTO (0)                          // have to explictly reset value back to 0 to enable auto
   8 
   9 #define PAUSE_FOR_FILE_COUNTER 150           // 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  @ 0xFF86F0F0 
  13 
  14 void __attribute__((naked,noinline)) capt_seq_task(  ) { 
  15 asm volatile (
  16       "STMFD   SP!, {R3-R9,LR}\n"
  17       "LDR     R4, =0x36C6C\n"
  18       "LDR     R7, =0x2AEC\n"
  19       "MOV     R6, #0\n"
  20 "loc_FF86F100:\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_FF86F12C\n"
  27       "LDR     R1, =0x493\n"
  28       "LDR     R0, =0xFF86EC5C\n" // "SsShootTask.c"
  29       "BL      _DebugAssert\n"
  30       "BL      _ExitTask\n"
  31       "LDMFD   SP!, {R3-R9,PC}\n"
  32 "loc_FF86F12C:\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_FF86F394\n"
  38       "B       loc_FF86F1C0\n"
  39       "B       loc_FF86F1D8\n"
  40       "B       loc_FF86F248\n"
  41       "B       loc_FF86F25C\n"
  42       "B       loc_FF86F254\n"
  43       "B       loc_FF86F268\n"
  44       "B       loc_FF86F270\n"
  45       "B       loc_FF86F278\n"
  46       "B       loc_FF86F294\n"
  47       "B       loc_FF86F2C0\n"
  48       "B       loc_FF86F2A0\n"
  49       "B       loc_FF86F2AC\n"
  50       "B       loc_FF86F2B4\n"
  51       "B       loc_FF86F2C8\n"
  52       "B       loc_FF86F2D0\n"
  53       "B       loc_FF86F2D8\n"
  54       "B       loc_FF86F2E0\n"
  55       "B       loc_FF86F2E8\n"
  56       "B       loc_FF86F2F4\n"
  57       "B       loc_FF86F2FC\n"
  58       "B       loc_FF86F304\n"
  59       "B       loc_FF86F30C\n"
  60       "B       loc_FF86F314\n"
  61       "B       loc_FF86F320\n"
  62       "B       loc_FF86F328\n"
  63       "B       loc_FF86F330\n"
  64       "B       loc_FF86F338\n"
  65       "B       loc_FF86F340\n"
  66       "B       loc_FF86F34C\n"
  67       "B       loc_FF86F354\n"
  68       "B       loc_FF86F360\n"
  69       "B       loc_FF86F3A0\n"
  70 "loc_FF86F1C0:\n"
  71       "BL      shooting_expo_iso_override \n" // added
  72       "BL      sub_FF86F900\n"
  73       "BL      shooting_expo_param_override \n" // added
  74       "BL      sub_FF86CF58\n"
  75 //      "LDR     R0, [R4, #0x28]\n"
  76 //      "CMP     R0, #0\n"
  77 //      "BLNE    sub_FF961044\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_FF86F3A0\n"
  81 "loc_FF86F1D8:\n"
  82       "LDR     R5, [R0, #0x10]\n"
  83       "LDR     R0, [R4, #0x28]\n"
  84       "CMP     R0, #0\n"
  85       "BNE     loc_FF86F220\n"
  86       "LDR     R0, [R4, #0x8C]\n"
  87       "TST     R0, #0x30\n"
  88       "BLNE    sub_FF870AA4\n"
  89       "BL      sub_FF870784\n"
  90       "MOV     R1, R5\n"
  91       "BL      sub_FF8707DC\n"
  92       "LDR     R0, =0x10F\n"
  93       "MOV     R2, #4\n"
  94       "ADD     R1, R5, #0x24\n"
  95       "BL      _SetPropertyCase\n"
  96       "MOV     R2, #4\n"
  97       "ADD     R1, R5, #0x28\n"
  98       "MOV     R0, #0x2C\n"
  99       "BL      _SetPropertyCase\n"
 100 "loc_FF86F220:\n"
 101       "MOV     R0, R5\n"
 102 //      "BL      sub_FF960FAC\n"  //original
 103       "BL      sub_FF960FAC_my\n" //patched
 104       "BL      capt_seq_hook_raw_here \n" // patch
 105       "MOV     R8, R0\n"
 106       "MOV     R2, R5\n"
 107       "MOV     R1, #1\n"
 108       "BL      sub_FF86D408\n"
 109       "TST     R8, #1\n"
 110       "MOVEQ   R0, R5\n"
 111       "BLEQ    sub_FF9609A0\n"
 112       "B       loc_FF86F3A0\n"
 113 "loc_FF86F248:\n"
 114       "MOV     R0, #1\n"
 115       "BL      sub_FF86FBD0\n"
 116       "B       loc_FF86F3A0\n"
 117 "loc_FF86F254:\n"
 118       "BL      sub_FF86F568\n"
 119       "B       loc_FF86F260\n"
 120 "loc_FF86F25C:\n"
 121       "BL      sub_FF86F8E0\n"
 122 "loc_FF86F260:\n"
 123       "STR     R6, [R4, #0x28]\n"
 124       "B       loc_FF86F3A0\n"
 125 "loc_FF86F268:\n"
 126       "BL      sub_FF86F8E8\n"
 127       "B       loc_FF86F3A0\n"
 128 "loc_FF86F270:\n"
 129       "BL      sub_FF86FAB8\n"
 130       "B       loc_FF86F298\n"
 131 "loc_FF86F278:\n"
 132       "LDR     R5, [R0, #0x10]\n"
 133       "MOV     R0, R5\n"
 134       "BL      sub_FF961180\n"
 135       "MOV     R2, R5\n"
 136       "MOV     R1, #9\n"
 137       "BL      sub_FF86D408\n"
 138       "B       loc_FF86F3A0\n"
 139 "loc_FF86F294:\n"
 140       "BL      sub_FF86FB38\n"
 141 "loc_FF86F298:\n"
 142       "BL      sub_FF86CF58\n"
 143       "B       loc_FF86F3A0\n"
 144 "loc_FF86F2A0:\n"
 145       "LDR     R0, [R4, #0x58]\n"
 146       "BL      sub_FF86FFA8\n"
 147       "B       loc_FF86F3A0\n"
 148 "loc_FF86F2AC:\n"
 149       "BL      sub_FF870340\n"
 150       "B       loc_FF86F3A0\n"
 151 "loc_FF86F2B4:\n"
 152       "MOV     R0, #0\n"
 153       "BL      sub_FF8703A4\n"
 154       "B       loc_FF86F3A0\n"
 155 "loc_FF86F2C0:\n"
 156       "BL      sub_FF86F8E0\n"
 157       "B       loc_FF86F3A0\n"
 158 "loc_FF86F2C8:\n"
 159       "BL      sub_FF95FD4C\n"
 160       "B       loc_FF86F3A0\n"
 161 "loc_FF86F2D0:\n"
 162       "BL      sub_FF95FFAC\n"
 163       "B       loc_FF86F3A0\n"
 164 "loc_FF86F2D8:\n"
 165       "BL      sub_FF960064\n"
 166       "B       loc_FF86F3A0\n"
 167 "loc_FF86F2E0:\n"
 168       "BL      sub_FF960138\n"
 169       "B       loc_FF86F3A0\n"
 170 "loc_FF86F2E8:\n"
 171       "MOV     R0, #0\n"
 172       "BL      sub_FF960398\n"
 173       "B       loc_FF86F3A0\n"
 174 "loc_FF86F2F4:\n"
 175       "BL      sub_FF960508\n"
 176       "B       loc_FF86F3A0\n"
 177 "loc_FF86F2FC:\n"
 178       "BL      sub_FF96059C\n"
 179       "B       loc_FF86F3A0\n"
 180 "loc_FF86F304:\n"
 181       "BL      sub_FF960658\n"
 182       "B       loc_FF86F3A0\n"
 183 "loc_FF86F30C:\n"
 184       "BL      sub_FF86FD44\n"
 185       "B       loc_FF86F3A0\n"
 186 "loc_FF86F314:\n"
 187       "BL      sub_FF86FDB0\n"
 188       "BL      sub_FF832410\n"
 189       "B       loc_FF86F3A0\n"
 190 "loc_FF86F320:\n"
 191       "BL      sub_FF960208\n"
 192       "B       loc_FF86F3A0\n"
 193 "loc_FF86F328:\n"
 194       "BL      sub_FF960248\n"
 195       "B       loc_FF86F3A0\n"
 196 "loc_FF86F330:\n"
 197       "BL      sub_FF871C80\n"
 198       "B       loc_FF86F3A0\n"
 199 "loc_FF86F338:\n"
 200       "BL      sub_FF871CF4\n"
 201       "B       loc_FF86F3A0\n"
 202 "loc_FF86F340:\n"
 203       "LDR     R0, [R0, #0xC]\n"
 204       "BL      sub_FF960780\n"
 205       "B       loc_FF86F3A0\n"
 206 "loc_FF86F34C:\n"
 207       "BL      sub_FF9607F0\n"
 208       "B       loc_FF86F3A0\n"
 209 "loc_FF86F354:\n"
 210       "BL      sub_FF871D5C\n"
 211       "BL      sub_FF871D14\n"
 212       "B       loc_FF86F3A0\n"
 213 "loc_FF86F360:\n"
 214       "MOV     R0, #1\n"
 215       "BL      sub_FF96189C\n"
 216       "MOV     R0, #1\n"
 217       "BL      sub_FF9619C4\n"
 218       "LDRH    R0, [R4, #0x9C]\n"
 219       "CMP     R0, #4\n"
 220       "LDRNEH  R0, [R4]\n"
 221       "SUBNE   R1, R0, #0x8200\n"
 222       "SUBNES  R1, R1, #0x2E\n"
 223       "BNE     loc_FF86F3A0\n"
 224       "BL      sub_FF871CF4\n"
 225       "BL      sub_FF8721B8\n"
 226       "B       loc_FF86F3A0\n"
 227 "loc_FF86F394:\n"
 228       "LDR     R1, =0x5F4\n"
 229       "LDR     R0, =0xFF86EC5C\n"
 230       "BL      _DebugAssert\n"
 231 "loc_FF86F3A0:\n"
 232       "LDR     R0, [SP]\n"
 233       "LDR     R1, [R0, #4]\n"
 234       "LDR     R0, [R7]\n"
 235       "BL      sub_003FAC6C\n"
 236       "LDR     R5, [SP]\n"
 237       "LDR     R0, [R5, #8]\n"
 238       "CMP     R0, #0\n"
 239       "LDREQ   R1, =0x117\n"
 240       "LDREQ   R0, =0xFF86EC5C\n" // "SsShootTask.c"
 241       "BLEQ    _DebugAssert\n"
 242       "STR     R6, [R5, #8]\n"
 243       "B       loc_FF86F100\n"
 244         );
 245 }
 246 
 247 
 248 //** sub_FF960FAC_my  @ 0xFF960FAC
 249 
 250 void __attribute__((naked,noinline)) sub_FF960FAC_my(  ) {
 251 asm volatile (
 252       "STMFD   SP!, {R3-R7,LR}\n"
 253       "LDR     R4, =0x36C6C\n"
 254       "MOV     R6, R0\n"
 255       "LDR     R0, [R4, #0x28]\n"
 256       "MOV     R5, #0\n"
 257       "CMP     R0, #0\n"
 258       "BNE     loc_FF960FDC\n"
 259       "MOV     R0, #0xC\n"
 260       "BL      sub_FF87373C\n"
 261       "TST     R0, #1\n"
 262       "MOVNE   R0, #1\n"
 263       "BNE     loc_FF9610E4\n"
 264 "loc_FF960FDC:\n"
 265       "BL      sub_FF86F8F0\n"
 266       "LDR     R0, [R4, #0x28]\n"
 267       "CMP     R0, #0\n"
 268       "BNE     loc_FF9610D0\n"
 269       "MOV     R0, R6\n"
 270       "BL      sub_FF9608E0\n"
 271       "TST     R0, #1\n"
 272       "BNE     loc_FF9610E4\n"
 273       "LDR     R0, [R4, #0x8C]\n"
 274       "AND     R0, R0, #0x40\n"
 275       "CMP     R0, #0\n"
 276       "LDRNEH  R0, [R4, #0x9A]\n"
 277       "CMPNE   R0, #3\n"
 278       "LDRNE   R0, [R6, #8]\n"
 279       "CMPNE   R0, #1\n"
 280       "BLS     loc_FF961038\n"
 281       "BL      sub_FF961B84\n"
 282       "MOV     R3, #0xC0\n"
 283       "STR     R3, [SP]\n"
 284       "LDR     R2, =0x3A98\n"
 285       "LDR     R3, =0xFF961208\n" //SsCaptureSeq.c
 286       "MOV     R1, #0x8000\n"
 287       "BL      sub_FF8739A4\n"
 288 "loc_FF961038:\n"
 289       "MOV     R0, R6\n"
 290       "BL      sub_FF960BEC\n"
 291       "BL      sub_FF96167C\n"
 292 
 293       "BL      wait_until_remote_button_is_released\n"  //before shoot XXX
 294       "BL      capt_seq_hook_set_nr\n"
 295 
 296       "LDR     R0, [R4, #0x8C]\n"
 297       "TST     R0, #0x40\n"
 298       "BEQ     loc_FF9610AC\n"
 299       "LDR     R0, =0x181\n"
 300       "MOV     R2, #4\n"
 301       "MOV     R1, SP\n"
 302       "BL      _GetPropertyCase\n"
 303       "TST     R0, #1\n"
 304       "MOVNE   R1, #0xD4\n"
 305       "LDRNE   R0, =0xFF961208\n"  // SsCaptureSeq.c
 306       "BLNE    _DebugAssert\n"
 307       "LDR     R0, [SP]\n"
 308       "CMP     R0, #0\n"
 309       "BNE     loc_FF96108C\n"
 310       "BL      sub_FF961B84\n"
 311       "MOV     R1, #0x8000\n"
 312       "BL      sub_003FAC6C\n"
 313       "B       loc_FF9610AC\n"
 314 "loc_FF96108C:\n"
 315       "BL      sub_FF961B84\n"
 316       "MOV     R1, #0x8000\n"
 317       "BL      sub_003FACA0\n"
 318       "LDR     R2, =0xFF960F98\n"
 319       "LDR     R0, [SP]\n"
 320       "MOV     R3, #0x8000\n"
 321       "ADD     R1, R2, #0\n"
 322       "BL      sub_FF8346B0\n"
 323 "loc_FF9610AC:\n"
 324       "LDR     R0, [R4, #0x8C]\n"
 325       "TST     R0, #0x10\n"
 326       "MOV     R0, R6\n"
 327       "BEQ     loc_FF9610C4\n"
 328       "BL      sub_FFA6F808\n"
 329       "B       loc_FF9610C8\n"
 330 "loc_FF9610C4:\n"
 331       "BL      sub_FFA6F464\n"
 332 "loc_FF9610C8:\n"
 333       "MOV     R5, R0\n"
 334       "B       loc_FF9610E0\n"
 335 "loc_FF9610D0:\n"
 336       "LDR     R0, =0x6784\n"
 337       "LDR     R0, [R0]\n"
 338       "CMP     R0, #0\n"
 339       "MOVNE   R5, #0x1D\n"
 340 "loc_FF9610E0:\n"
 341       "MOV     R0, R5\n"
 342 "loc_FF9610E4:\n"
 343       "LDMFD   SP!, {R3-R7,PC}\n"
 344         );
 345 }
 346 
 347 
 348 //** exp_drv_task  @ 0xFF8AEE90 
 349 
 350 void __attribute__((naked,noinline)) exp_drv_task(  ) { 
 351 asm volatile (
 352       "STMFD   SP!, {R4-R9,LR}\n"
 353       "SUB     SP, SP, #0x2C\n"
 354       "LDR     R6, =0x3DA0\n"
 355       "LDR     R7, =0xBB8\n"
 356       "LDR     R4, =0x55E5C\n"
 357       "MOV     R0, #0\n"
 358       "ADD     R5, SP, #0x1C\n"
 359       "STR     R0, [SP, #0xC]\n"
 360 "loc_FF8AEEB0:\n"
 361       "LDR     R0, [R6, #0x20]\n"
 362       "MOV     R2, #0\n"
 363       "ADD     R1, SP, #0x28\n"
 364       "BL      sub_003F7218\n"
 365       "LDR     R0, [SP, #0xC]\n"
 366       "CMP     R0, #1\n"
 367       "BNE     loc_FF8AEEFC\n"
 368       "LDR     R0, [SP, #0x28]\n"
 369       "LDR     R0, [R0]\n"
 370       "CMP     R0, #0x14\n"
 371       "CMPNE   R0, #0x15\n"
 372       "CMPNE   R0, #0x16\n"
 373       "CMPNE   R0, #0x17\n"
 374       "BEQ     loc_FF8AF05C\n"
 375       "CMP     R0, #0x2A\n"
 376       "BEQ     loc_FF8AEFE4\n"
 377       "ADD     R1, SP, #0xC\n"
 378       "MOV     R0, #0\n"
 379       "BL      sub_FF8AEE40\n"
 380 "loc_FF8AEEFC:\n"
 381       "LDR     R0, [SP, #0x28]\n"
 382       "LDR     R1, [R0]\n"
 383       "CMP     R1, #0x30\n"
 384       "BNE     loc_FF8AEF28\n"
 385       "BL      sub_FF8B026C\n"
 386       "LDR     R0, [R6, #0x1C]\n"
 387       "MOV     R1, #1\n"
 388       "BL      sub_003FAC6C\n"
 389       "BL      _ExitTask\n"
 390       "ADD     SP, SP, #0x2C\n"
 391       "LDMFD   SP!, {R4-R9,PC}\n"
 392 "loc_FF8AEF28:\n"
 393       "CMP     R1, #0x2F\n"
 394       "BNE     loc_FF8AEF44\n"
 395       "LDR     R2, [R0, #0x8C]!\n"
 396       "LDR     R1, [R0, #4]\n"
 397       "MOV     R0, R1\n"
 398       "BLX     R2\n"
 399       "B       loc_FF8AF518\n"
 400 "loc_FF8AEF44:\n"
 401       "CMP     R1, #0x28\n"
 402       "BNE     loc_FF8AEF94\n"
 403       "LDR     R0, [R6, #0x1C]\n"
 404       "MOV     R1, #0x80\n"
 405       "BL      sub_003FACA0\n"
 406       "LDR     R0, =0xFF8AA7AC\n"
 407       "MOV     R1, #0x80\n"
 408       "BL      sub_FF954F74\n"
 409       "LDR     R0, [R6, #0x1C]\n"
 410       "MOV     R2, R7\n"
 411       "MOV     R1, #0x80\n"
 412       "BL      sub_003FABAC\n"
 413       "TST     R0, #1\n"
 414       "LDRNE   R1, =0x1599\n"
 415       "BNE     loc_FF8AF050\n"
 416 "loc_FF8AEF80:\n"
 417       "LDR     R1, [SP, #0x28]\n"
 418       "LDR     R0, [R1, #0x90]\n"
 419       "LDR     R1, [R1, #0x8C]\n"
 420       "BLX     R1\n"
 421       "B       loc_FF8AF518\n"
 422 "loc_FF8AEF94:\n"
 423       "CMP     R1, #0x29\n"
 424       "BNE     loc_FF8AEFDC\n"
 425       "ADD     R1, SP, #0xC\n"
 426       "BL      sub_FF8AEE40\n"
 427       "LDR     R0, [R6, #0x1C]\n"
 428       "MOV     R1, #0x100\n"
 429       "BL      sub_003FACA0\n"
 430       "LDR     R0, =0xFF8AA7BC\n"
 431       "MOV     R1, #0x100\n"
 432       "BL      sub_FF955114\n"
 433       "LDR     R0, [R6, #0x1C]\n"
 434       "MOV     R2, R7\n"
 435       "MOV     R1, #0x100\n"
 436       "BL      sub_003FABAC\n"
 437       "TST     R0, #1\n"
 438       "BEQ     loc_FF8AEF80\n"
 439       "LDR     R1, =0x15A3\n"
 440       "B       loc_FF8AF050\n"
 441 "loc_FF8AEFDC:\n"
 442       "CMP     R1, #0x2A\n"
 443       "BNE     loc_FF8AEFF4\n"
 444 "loc_FF8AEFE4:\n"
 445       "LDR     R0, [SP, #0x28]\n"
 446       "ADD     R1, SP, #0xC\n"
 447       "BL      sub_FF8AEE40\n"
 448       "B       loc_FF8AEF80\n"
 449 "loc_FF8AEFF4:\n"
 450       "CMP     R1, #0x2D\n"
 451       "BNE     loc_FF8AF00C\n"
 452       "BL      sub_FF89A9E4\n"
 453       "BL      sub_FF89B6CC\n"
 454       "BL      sub_FF89B234\n"
 455       "B       loc_FF8AEF80\n"
 456 "loc_FF8AF00C:\n"
 457       "CMP     R1, #0x2E\n"
 458       "BNE     loc_FF8AF05C\n"
 459       "LDR     R0, [R6, #0x1C]\n"
 460       "MOV     R1, #4\n"
 461       "BL      sub_003FACA0\n"
 462       "LDR     R1, =0xFF8AA7DC\n"
 463       "LDR     R0, =0xFFFFF400\n"
 464       "MOV     R2, #4\n"
 465       "BL      sub_FF89A434\n"
 466       "BL      sub_FF89A6C4\n"
 467       "LDR     R0, [R6, #0x1C]\n"
 468       "MOV     R2, R7\n"
 469       "MOV     R1, #4\n"
 470       "BL      sub_003FAAC8\n"
 471       "TST     R0, #1\n"
 472       "BEQ     loc_FF8AEF80\n"
 473       "LDR     R1, =0x15CB\n"
 474 "loc_FF8AF050:\n"
 475       "LDR     R0, =0xFF8AAED0\n"
 476       "BL      _DebugAssert\n"
 477       "B       loc_FF8AEF80\n"
 478 "loc_FF8AF05C:\n"
 479       "LDR     R0, [SP, #0x28]\n"
 480       "MOV     R8, #1\n"
 481       "LDR     R1, [R0]\n"
 482       "CMP     R1, #0x12\n"
 483       "CMPNE   R1, #0x13\n"
 484       "BNE     loc_FF8AF0C4\n"
 485       "LDR     R1, [R0, #0x7C]\n"
 486       "ADD     R1, R1, R1, LSL #1\n"
 487       "ADD     R1, R0, R1, LSL #2\n"
 488       "SUB     R1, R1, #8\n"
 489       "LDMIA   R1, {R2,R3,R9}\n"
 490       "STMIA   R5, {R2,R3,R9}\n"
 491       "BL      sub_FF8AD3E4\n"
 492       "LDR     R0, [SP, #0x28]\n"
 493       "LDR     R1, [R0, #0x7C]\n"
 494       "LDR     R3, [R0, #0x8C]\n"
 495       "LDR     R2, [R0, #0x90]\n"
 496       "ADD     R0, R0, #4\n"
 497       "BLX     R3\n"
 498       "LDR     R0, [SP, #0x28]\n"
 499       "BL      sub_FF8B0670\n"
 500       "LDR     R0, [SP, #0x28]\n"
 501       "LDR     R1, [R0, #0x7C]\n"
 502       "LDR     R2, [R0, #0x98]\n"
 503       "LDR     R3, [R0, #0x94]\n"
 504       "B       loc_FF8AF3DC\n"
 505 "loc_FF8AF0C4:\n"
 506       "CMP     R1, #0x14\n"
 507       "CMPNE   R1, #0x15\n"
 508       "CMPNE   R1, #0x16\n"
 509       "CMPNE   R1, #0x17\n"
 510       "BNE     loc_FF8AF17C\n"
 511       "ADD     R3, SP, #0xC\n"
 512       "MOV     R2, SP\n"
 513       "ADD     R1, SP, #0x1C\n"
 514       "BL      sub_FF8AD644\n"
 515       "CMP     R0, #1\n"
 516       "MOV     R9, R0\n"
 517       "CMPNE   R9, #5\n"
 518       "BNE     loc_FF8AF118\n"
 519       "LDR     R0, [SP, #0x28]\n"
 520       "MOV     R2, R9\n"
 521       "LDR     R1, [R0, #0x7C]!\n"
 522       "LDR     R12, [R0, #0x10]!\n"
 523       "LDR     R3, [R0, #4]\n"
 524       "MOV     R0, SP\n"
 525       "BLX     R12\n"
 526       "B       loc_FF8AF150\n"
 527 "loc_FF8AF118:\n"
 528       "LDR     R0, [SP, #0x28]\n"
 529       "CMP     R9, #2\n"
 530       "LDR     R3, [R0, #0x90]\n"
 531       "CMPNE   R9, #6\n"
 532       "BNE     loc_FF8AF164\n"
 533       "LDR     R12, [R0, #0x8C]\n"
 534       "MOV     R2, R9\n"
 535       "MOV     R1, #1\n"
 536       "MOV     R0, SP\n"
 537       "BLX     R12\n"
 538       "LDR     R0, [SP, #0x28]\n"
 539       "MOV     R2, SP\n"
 540       "ADD     R1, SP, #0x1C\n"
 541       "BL      sub_FF8AEB2C\n"
 542 "loc_FF8AF150:\n"
 543       "LDR     R0, [SP, #0x28]\n"
 544       "LDR     R2, [SP, #0xC]\n"
 545       "MOV     R1, R9\n"
 546       "BL      sub_FF8AED7C\n"
 547       "B       loc_FF8AF3E4\n"
 548 "loc_FF8AF164:\n"
 549       "LDR     R1, [R0, #0x7C]\n"
 550       "LDR     R12, [R0, #0x8C]\n"
 551       "MOV     R2, R9\n"
 552       "ADD     R0, R0, #4\n"
 553       "BLX     R12\n"
 554       "B       loc_FF8AF3E4\n"
 555 "loc_FF8AF17C:\n"
 556       "CMP     R1, #0x24\n"
 557       "CMPNE   R1, #0x25\n"
 558       "BNE     loc_FF8AF1C8\n"
 559       "LDR     R1, [R0, #0x7C]\n"
 560       "ADD     R1, R1, R1, LSL #1\n"
 561       "ADD     R1, R0, R1, LSL #2\n"
 562       "SUB     R1, R1, #8\n"
 563       "LDMIA   R1, {R2,R3,R9}\n"
 564       "STMIA   R5, {R2,R3,R9}\n"
 565       "BL      sub_FF8AC3D0\n"
 566       "LDR     R0, [SP, #0x28]\n"
 567       "LDR     R1, [R0, #0x7C]\n"
 568       "LDR     R3, [R0, #0x8C]\n"
 569       "LDR     R2, [R0, #0x90]\n"
 570       "ADD     R0, R0, #4\n"
 571       "BLX     R3\n"
 572       "LDR     R0, [SP, #0x28]\n"
 573       "BL      sub_FF8AC810\n"
 574       "B       loc_FF8AF3E4\n"
 575 "loc_FF8AF1C8:\n"
 576       "ADD     R1, R0, #4\n"
 577       "LDMIA   R1, {R2,R3,R9}\n"
 578       "STMIA   R5, {R2,R3,R9}\n"
 579       "LDR     R1, [R0]\n"
 580       "CMP     R1, #0x28\n"
 581       "ADDCC   PC, PC, R1, LSL #2\n"
 582       "B       loc_FF8AF3CC\n"
 583       "B       loc_FF8AF284\n" //(01)
 584       "B       loc_FF8AF284\n" //(02)
 585       "B       loc_FF8AF28C\n" //(03)
 586       "B       loc_FF8AF294\n" //(04)
 587       "B       loc_FF8AF294\n" //(05)
 588       "B       loc_FF8AF294\n" //(06)
 589       "B       loc_FF8AF284\n" //(07)
 590       "B       loc_FF8AF28C\n" //(08)
 591       "B       loc_FF8AF294\n" //(09)
 592       "B       loc_FF8AF294\n" //(10)
 593       "B       loc_FF8AF2AC\n" //(11)
 594       "B       loc_FF8AF2AC\n" //(12)
 595       "B       loc_FF8AF3B8\n" //(13)
 596       "B       loc_FF8AF3C0\n" //(14)
 597       "B       loc_FF8AF3C0\n" //(15)
 598       "B       loc_FF8AF3C0\n" //(16)
 599       "B       loc_FF8AF3C0\n" //(17)
 600       "B       loc_FF8AF3C8\n" //(18)
 601       "B       loc_FF8AF3CC\n" //(19)
 602       "B       loc_FF8AF3CC\n" //(20)
 603       "B       loc_FF8AF3CC\n" //(21)
 604       "B       loc_FF8AF3CC\n" //(22)
 605       "B       loc_FF8AF3CC\n" //(23)
 606       "B       loc_FF8AF3CC\n" //(24)
 607       "B       loc_FF8AF29C\n" //(25)
 608       "B       loc_FF8AF2A4\n" //(26)
 609       "B       loc_FF8AF2A4\n" //(27)
 610       "B       loc_FF8AF2A4\n" //(28)
 611       "B       loc_FF8AF2B8\n" //(29)
 612       "B       loc_FF8AF2B8\n" //(30)
 613       "B       loc_FF8AF2C0\n" //(31)
 614       "B       loc_FF8AF2F8\n" //(32)
 615       "B       loc_FF8AF330\n" //(33)
 616       "B       loc_FF8AF368\n" //(34)
 617       "B       loc_FF8AF3A0\n" //(35)
 618       "B       loc_FF8AF3A0\n" //(36)
 619       "B       loc_FF8AF3CC\n" //(37)
 620       "B       loc_FF8AF3CC\n" //(38)
 621       "B       loc_FF8AF3A8\n" //(39)
 622       "B       loc_FF8AF3B0\n" //(40)
 623 "loc_FF8AF284:\n" // jump table entries 01-02,07
 624       "BL      sub_FF8AAD54\n"
 625       "B       loc_FF8AF3CC\n"
 626 "loc_FF8AF28C:\n"// jump table entry 03
 627       "BL      sub_FF8AAFF8\n"
 628       "B       loc_FF8AF3CC\n"
 629 "loc_FF8AF294:\n" // jump table entries 04-06,09-10
 630       "BL      sub_FF8AB220\n"
 631       "B       loc_FF8AF3CC\n"
 632 "loc_FF8AF29C:\n" // jump table entries 25
 633       "BL      sub_FF8AB544\n"
 634       "B       loc_FF8AF3CC\n"
 635 "loc_FF8AF2A4:\n" // jump table entries 26-27
 636       "BL      sub_FF8AB75C\n"
 637       "B       loc_FF8AF3CC\n"
 638 "loc_FF8AF2AC:\n" // jump table entries 11,12
 639 //      "BL      sub_FF8ABB08\n"  //original
 640       "BL      sub_FF8ABB08_my\n" //patched
 641       "MOV     R8, #0\n"
 642       "B       loc_FF8AF3CC\n"
 643 "loc_FF8AF2B8:\n" // jump table entries 29,30
 644       "BL      sub_FF8ABC48\n"
 645       "B       loc_FF8AF3CC\n"
 646 "loc_FF8AF2C0:\n" // jump table entry 31
 647       "LDRH    R1, [R0, #4]\n"
 648       "STRH    R1, [SP, #0x1C]\n"
 649       "LDRH    R1, [R4, #2]\n"
 650       "STRH    R1, [SP, #0x1E]\n"
 651       "LDRH    R1, [R4, #4]\n"
 652       "STRH    R1, [SP, #0x20]\n"
 653       "LDRH    R1, [R4, #6]\n"
 654       "STRH    R1, [SP, #0x22]\n"
 655       "LDRH    R1, [R0, #0xC]\n"
 656       "STRH    R1, [SP, #0x24]\n"
 657       "LDRH    R1, [R4, #0xA]\n"
 658       "STRH    R1, [SP, #0x26]\n"
 659       "BL      sub_FF8B0300\n"
 660       "B       loc_FF8AF3CC\n"
 661 "loc_FF8AF2F8:\n" // jump table entry 32
 662       "LDRH    R1, [R0, #4]\n"
 663       "STRH    R1, [SP, #0x1C]\n"
 664       "LDRH    R1, [R4, #2]\n"
 665       "STRH    R1, [SP, #0x1E]\n"
 666       "LDRH    R1, [R4, #4]\n"
 667       "STRH    R1, [SP, #0x20]\n"
 668       "LDRH    R1, [R4, #6]\n"
 669       "STRH    R1, [SP, #0x22]\n"
 670       "LDRH    R1, [R4, #8]\n"
 671       "STRH    R1, [SP, #0x24]\n"
 672       "LDRH    R1, [R4, #0xA]\n"
 673       "STRH    R1, [SP, #0x26]\n"
 674       "BL      sub_FF8B0470\n"
 675       "B       loc_FF8AF3CC\n"
 676 "loc_FF8AF330:\n" // jump table entry 33
 677       "LDRH    R1, [R4]\n"
 678       "STRH    R1, [SP, #0x1C]\n"
 679       "LDRH    R1, [R0, #6]\n"
 680       "STRH    R1, [SP, #0x1E]\n"
 681       "LDRH    R1, [R4, #4]\n"
 682       "STRH    R1, [SP, #0x20]\n"
 683       "LDRH    R1, [R4, #6]\n"
 684       "STRH    R1, [SP, #0x22]\n"
 685       "LDRH    R1, [R4, #8]\n"
 686       "STRH    R1, [SP, #0x24]\n"
 687       "LDRH    R1, [R4, #0xA]\n"
 688       "STRH    R1, [SP, #0x26]\n"
 689       "BL      sub_FF8B0524\n"
 690       "B       loc_FF8AF3CC\n"
 691 "loc_FF8AF368:\n" // jump table entry 34
 692       "LDRH    R1, [R4]\n"
 693       "STRH    R1, [SP, #0x1C]\n"
 694       "LDRH    R1, [R4, #2]\n"
 695       "STRH    R1, [SP, #0x1E]\n"
 696       "LDRH    R1, [R4, #4]\n"
 697       "STRH    R1, [SP, #0x20]\n"
 698       "LDRH    R1, [R4, #6]\n"
 699       "STRH    R1, [SP, #0x22]\n"
 700       "LDRH    R1, [R0, #0xC]\n"
 701       "STRH    R1, [SP, #0x24]\n"
 702       "LDRH    R1, [R4, #0xA]\n"
 703       "STRH    R1, [SP, #0x26]\n"
 704       "BL      sub_FF8B05CC\n"
 705       "B       loc_FF8AF3CC\n"
 706 "loc_FF8AF3A0:\n" // jump table entries 35-36
 707       "BL      sub_FF8AC184\n"
 708       "B       loc_FF8AF3CC\n"
 709 "loc_FF8AF3A8:\n" // jump table entry 39
 710       "BL      sub_FF8AC914\n"
 711       "B       loc_FF8AF3CC\n"
 712 "loc_FF8AF3B0:\n" // jump table entry 40
 713       "BL      sub_FF8ACBF8\n"
 714       "B       loc_FF8AF3CC\n"
 715 "loc_FF8AF3B8:\n" // jump table entry 13
 716       "BL      sub_FF8ACEB8\n"
 717       "B       loc_FF8AF3CC\n"
 718 "loc_FF8AF3C0:\n" // jump table entries 14-17
 719       "BL      sub_FF8AD074\n"
 720       "B       loc_FF8AF3CC\n"
 721 "loc_FF8AF3C8:\n" // jump table entry 18
 722       "BL      sub_FF8AD1DC\n"
 723 "loc_FF8AF3CC:\n" // jump table default entry
 724       "LDR     R0, [SP, #0x28]\n"
 725       "LDR     R1, [R0, #0x7C]\n"
 726       "LDR     R2, [R0, #0x90]\n"
 727       "LDR     R3, [R0, #0x8C]\n"
 728 "loc_FF8AF3DC:\n"
 729       "ADD     R0, R0, #4\n"
 730       "BLX     R3\n"
 731 "loc_FF8AF3E4:\n"
 732       "LDR     R0, [SP, #0x28]\n"
 733       "LDR     R0, [R0]\n"
 734       "CMP     R0, #0x10\n"
 735       "BEQ     loc_FF8AF41C\n"
 736       "BGT     loc_FF8AF40C\n"
 737       "CMP     R0, #1\n"
 738       "CMPNE   R0, #4\n"
 739       "CMPNE   R0, #0xE\n"
 740       "BNE     loc_FF8AF450\n"
 741       "B       loc_FF8AF41C\n"
 742 "loc_FF8AF40C:\n"
 743       "CMP     R0, #0x13\n"
 744       "CMPNE   R0, #0x17\n"
 745       "CMPNE   R0, #0x1A\n"
 746       "BNE     loc_FF8AF450\n"
 747 "loc_FF8AF41C:\n"
 748       "LDRSH   R0, [R4]\n"
 749       "CMN     R0, #0xC00\n"
 750       "LDRNESH R1, [R4, #8]\n"
 751       "CMNNE   R1, #0xC00\n"
 752       "STRNEH  R0, [SP, #0x1C]\n"
 753       "STRNEH  R1, [SP, #0x24]\n"
 754       "BNE     loc_FF8AF450\n"
 755       "ADD     R0, SP, #0x10\n"
 756       "BL      sub_FF8B0880\n"
 757       "LDRH    R0, [SP, #0x10]\n"
 758       "STRH    R0, [SP, #0x1C]\n"
 759       "LDRH    R0, [SP, #0x18]\n"
 760       "STRH    R0, [SP, #0x24]\n"
 761 "loc_FF8AF450:\n"
 762       "LDR     R0, [SP, #0x28]\n"
 763       "CMP     R8, #1\n"
 764       "BNE     loc_FF8AF4A0\n"
 765       "LDR     R1, [R0, #0x7C]\n"
 766       "MOV     R2, #0xC\n"
 767       "ADD     R1, R1, R1, LSL #1\n"
 768       "ADD     R0, R0, R1, LSL #2\n"
 769       "SUB     R8, R0, #8\n"
 770       "LDR     R0, =0x55E5C\n"
 771       "ADD     R1, SP, #0x1C\n"
 772       "BL      sub_003FC17C\n"
 773       "LDR     R0, =0x55E68\n"
 774       "MOV     R2, #0xC\n"
 775       "ADD     R1, SP, #0x1C\n"
 776       "BL      sub_003FC17C\n"
 777       "LDR     R0, =0x55E74\n"
 778       "MOV     R2, #0xC\n"
 779       "MOV     R1, R8\n"
 780       "BL      sub_003FC17C\n"
 781       "B       loc_FF8AF518\n"
 782 "loc_FF8AF4A0:\n"
 783       "LDR     R0, [R0]\n"
 784       "MOV     R3, #1\n"
 785       "CMP     R0, #0xB\n"
 786       "BNE     loc_FF8AF4E4\n"
 787       "MOV     R2, #0\n"
 788       "STRD    R2, [SP]\n"
 789       "MOV     R2, R3\n"
 790       "MOV     R1, R3\n"
 791       "MOV     R0, #0\n"
 792       "BL      sub_FF8AAB34\n"
 793       "MOV     R3, #1\n"
 794       "MOV     R2, #0\n"
 795       "STRD    R2, [SP]\n"
 796       "MOV     R2, R3\n"
 797       "MOV     R1, R3\n"
 798       "MOV     R0, #0\n"
 799       "B       loc_FF8AF514\n"
 800 "loc_FF8AF4E4:\n"
 801       "MOV     R2, #1\n"
 802       "STRD    R2, [SP]\n"
 803       "MOV     R3, R2\n"
 804       "MOV     R1, R2\n"
 805       "MOV     R0, R2\n"
 806       "BL      sub_FF8AAB34\n"
 807       "MOV     R3, #1\n"
 808       "MOV     R2, R3\n"
 809       "MOV     R1, R3\n"
 810       "MOV     R0, R3\n"
 811       "STR     R3, [SP]\n"
 812       "STR     R3, [SP, #4]\n"
 813 "loc_FF8AF514:\n"
 814       "BL      sub_FF8AACA0\n"
 815 "loc_FF8AF518:\n"
 816       "LDR     R0, [SP, #0x28]\n"
 817       "BL      sub_FF8B026C\n"
 818       "B       loc_FF8AEEB0\n"
 819         );
 820 }
 821 
 822 
 823 //** sub_FF8ABB08_my  @ 0xFF8ABB08
 824 
 825 void __attribute__((naked,noinline)) sub_FF8ABB08_my(  ) {
 826 asm volatile (
 827       "STMFD   SP!, {R4-R8,LR}\n"
 828       "LDR     R7, =0x3DA0\n"
 829       "MOV     R4, R0\n"
 830       "LDR     R0, [R7, #0x1C]\n"
 831       "MOV     R1, #0x3E\n"
 832       "BL      sub_003FACA0\n"
 833       "MOV     R2, #0\n"
 834       "LDRSH   R0, [R4, #4]\n"
 835       "MOV     R1, R2\n"
 836       "BL      sub_FF8AA83C\n"
 837       "MOV     R6, R0\n"
 838       "LDRSH   R0, [R4, #6]\n"
 839       "BL      sub_FF8AA98C\n"
 840       "LDRSH   R0, [R4, #8]\n"
 841       "BL      sub_FF8AA9E4\n"
 842       "LDRSH   R0, [R4, #0xA]\n"
 843       "BL      sub_FF8AAA3C\n"
 844       "LDRSH   R0, [R4, #0xC]\n"
 845       "MOV     R1, #0\n"
 846       "BL      sub_FF8AAA94\n"
 847       "MOV     R5, R0\n"
 848       "LDR     R0, [R4]\n"
 849       "LDR     R8, =0x55E74\n"
 850       "CMP     R0, #0xB\n"
 851       "MOVEQ   R6, #0\n"
 852       "MOVEQ   R5, R6\n"
 853       "BEQ     loc_FF8ABB9C\n"
 854       "CMP     R6, #1\n"
 855       "BNE     loc_FF8ABB9C\n"
 856       "LDRSH   R0, [R4, #4]\n"
 857       "LDR     R1, =0xFF8AA79C\n"
 858       "MOV     R2, #2\n"
 859       "BL      sub_FF954FF8\n"
 860       "STRH    R0, [R4, #4]\n"
 861       "MOV     R0, #0\n"
 862       "STR     R0, [R7, #0x28]\n"
 863       "B       loc_FF8ABBA4\n"
 864 "loc_FF8ABB9C:\n"
 865       "LDRH    R0, [R8]\n"
 866       "STRH    R0, [R4, #4]\n"
 867 "loc_FF8ABBA4:\n"
 868       "CMP     R5, #1\n"
 869       "LDRNEH  R0, [R8, #8]\n"
 870       "BNE     loc_FF8ABBC0\n"
 871       "LDRSH   R0, [R4, #0xC]\n"
 872       "LDR     R1, =0xFF8AA820\n"
 873       "MOV     R2, #0x20\n"
 874       "BL      sub_FF8B02BC\n"
 875 "loc_FF8ABBC0:\n"
 876       "STRH    R0, [R4, #0xC]\n"
 877       "LDRSH   R0, [R4, #6]\n"
 878 //      "BL      sub_FF89A730\n" //original
 879       "BL      sub_FF89A730_my\n"//patched
 880       "B sub_FF8ABBCC \n" // continue in firmware
 881         );
 882 }
 883 
 884 
 885 //** sub_FF89A730_my  @ 0xFF89A730 
 886 
 887 void __attribute__((naked,noinline)) sub_FF89A730_my(  ) { 
 888 asm volatile (
 889       "STMFD   SP!, {R4-R6,LR}\n"
 890       "LDR     R5, =0x39F0\n"
 891       "MOV     R4, R0\n"
 892       "LDR     R0, [R5, #4]\n"
 893       "CMP     R0, #1\n"
 894       "LDRNE   R1, =0x14D\n"
 895       "LDRNE   R0, =0xFF89A568\n"//  ; "Shutter.c"
 896       "BLNE    _DebugAssert\n"
 897       "CMN     R4, #0xC00\n"
 898       "LDREQSH R4, [R5, #2]\n"
 899       "CMN     R4, #0xC00\n"
 900       "LDREQ   R1, =0x153\n"
 901       "LDREQ   R0, =0xFF89A568\n"//  ; "Shutter.c"
 902       "STRH    R4, [R5, #2]\n"
 903       "BLEQ    _DebugAssert\n"
 904       "MOV     R0, R4\n"
 905 //      "BL      _apex2us\n"   //original _apex2us
 906       "BL      apex2us \n"   //patch
 907       "MOV     R4, R0\n"
 908       "BL      sub_FF8E9B4C\n"
 909       "MOV     R0, R4\n"
 910       "BL      sub_FF8F2354\n"
 911       "TST     R0, #1\n"
 912       "LDMEQFD SP!, {R4-R6,PC}\n"
 913       "LDMFD   SP!, {R4-R6,LR}\n"
 914       "MOV     R1, #0x158\n"
 915       "LDR     R0, =0xFF89A568\n" //  ; "Shutter.c"
 916       "B       _DebugAssert\n"
 917         );
 918 }

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