source: trunk/platform/g12/sub/100c/capt_seq.c @ 1213

Revision 1213, 41.0 KB checked in by reyalp, 2 years ago (diff)

G12 & SX30 + misc cleanup from philmoz in http://chdk.setepontos.com/index.php?topic=650.msg69328#msg69328

  • stubs cleanup and address fixes.
  • removed redundant entries from platform_camera.h
  • changed CAM_BLACK_LEVEL in camera.h to a calculated value based on bits-per-pixel (CAM_BLACK_LEVEL and CAM_WHITE_LEVEL overrides can be removed from most platform_camera.h files)
  • Property svn:eol-style set to native
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4
5static long *nrflag = (long*)(0x76fc+0x8); // in _sub_FF98F86C__NRTable.c__0
6#define NR_AUTO (0)                                                     // have to explictly reset value back to 0 to enable auto
7
8#include "../../../generic/capt_seq.c"
9
10//void __attribute__((naked,noinline)) hangdebug() {
11//      debug_led(1);
12//      while(1);
13//}
14
15//@ FF88261C
16void __attribute__((naked,noinline)) capt_seq_task() {
17
18asm volatile (
19
20        "STMFD SP!, {R3-R7,LR}\n"
21        "LDR    R7, =0x2E38\n"
22        "LDR    R4, =0x3BB24\n"
23        "MOV    R6, #0\n"
24
25"loc_FF88262C:\n"
26        "LDR    R0, [R7,#4]\n"
27        "MOV    R2, #0\n"
28        "MOV    R1, SP\n"
29        "BL             sub_FF83A460\n"
30        "TST    R0, #1\n"
31        "BEQ    loc_FF882658\n"
32        "LDR    R1, =0x43F\n"
33        "LDR    R0, =0xFF8820BC\n"      // aSsshoottask_c
34        "BL             _DebugAssert\n"
35        "BL             _ExitTask\n"
36        "LDMFD SP!, {R3-R7,PC}\n"
37
38"loc_FF882658:\n"
39        "LDR    R0, [SP]\n"
40        "LDR    R1, [R0]\n"
41        "CMP    R1, #0x24\n"
42        "ADDLS  PC, PC, R1,LSL#2\n"
43
44"                B       loc_FF8828C4\n"
45"loc_FF88266C:\n"
46"                B       loc_FF882700\n"
47"loc_FF882670:\n"
48"                B       loc_FF882718\n"
49"loc_FF882674:\n"
50"                B       loc_FF88273C\n"
51"loc_FF882678:\n"
52"                B       loc_FF882750\n"
53"loc_FF88267C:\n"
54"                B       loc_FF882748\n"
55"loc_FF882680:\n"
56"                B       loc_FF88275C\n"
57"loc_FF882684:\n"
58"                B       loc_FF882764\n"
59"loc_FF882688:\n"
60"                B       loc_FF88276C\n"
61"loc_FF88268C:\n"
62"                B       loc_FF882778\n"
63"loc_FF882690:\n"
64"                B       loc_FF8827A0\n"
65"loc_FF882694:\n"
66"                B       loc_FF882784\n"
67"loc_FF882698:\n"
68"                B       loc_FF882790\n"
69"loc_FF88269C:\n"
70"                B       loc_FF882798\n"
71"loc_FF8826A0:\n"
72"                B       loc_FF8827A8\n"
73"loc_FF8826A4:\n"
74"                B       loc_FF8827B0\n"
75"loc_FF8826A8:\n"
76"                B       loc_FF8827B8\n"
77"loc_FF8826AC:\n"
78"                B       loc_FF8827C0\n"
79"loc_FF8826B0:\n"
80"                B       loc_FF8827C8\n"
81"loc_FF8826B4:\n"
82"                B       loc_FF8827D0\n"
83"loc_FF8826B8:\n"
84"                B       loc_FF8827D8\n"
85"loc_FF8826BC:\n"
86"                B       loc_FF8827E0\n"
87"loc_FF8826C0:\n"
88"                B       loc_FF8827E8\n"
89"loc_FF8826C4:\n"
90"                B       loc_FF8827F0\n"
91"loc_FF8826C8:\n"
92"                B       loc_FF8827FC\n"
93"loc_FF8826CC:\n"
94"                B       loc_FF882804\n"
95"loc_FF8826D0:\n"
96"                B       loc_FF882810\n"
97"loc_FF8826D4:\n"
98"                B       loc_FF882818\n"
99"loc_FF8826D8:\n"
100"                B       loc_FF882848\n"
101"loc_FF8826DC:\n"
102"                B       loc_FF882850\n"
103"loc_FF8826E0:\n"
104"                B       loc_FF882858\n"
105"loc_FF8826E4:\n"
106"                B       loc_FF882860\n"
107"loc_FF8826E8:\n"
108"                B       loc_FF882868\n"
109"loc_FF8826EC:\n"
110"                B       loc_FF882870\n"
111"loc_FF8826F0:\n"
112"                B       loc_FF882878\n"
113"loc_FF8826F4:\n"
114"                B       loc_FF882880\n"
115"loc_FF8826F8:\n"
116"                B       loc_FF88288C\n"
117"loc_FF8826FC:\n"
118"                B       loc_FF8828D0\n"
119
120// jump table entry 0
121"loc_FF882700:\n"
122"               BL      sub_FF882E00 \n"
123
124"               BL      shooting_expo_param_override\n"                 // added
125
126"               BL      sub_FF87FF5C \n"
127
128"               MOV     R0, #0\n"                                                       // added
129"               STR     R0, [R4,#0x24]\n"                                       // added, fixes overrides  behavior at short shutter press (from S95)
130
131//"             LDR     R0, [R4,#0x24] \n"                                              // above two lines make this code redundant
132//"             CMP     R0, #0 \n"                                                              // above two lines make this code redundant
133
134//"             BLNE    sub_FF98C694 \n"                                        // above two lines make this code redundant
135//"             BLNE    sub_FF98C694_my \n"                                     // patched (above two lines make this patch redundant)
136
137"               B       loc_FF8828D0 \n"
138
139// jump table entry 1
140"loc_FF882718: \n"
141"               LDRH    R1, [R4] \n"
142"               LDR             R0, [R0,#0xC] \n"
143"               SUB     R12, R1, #0x4200 \n"
144"               SUBS    R12, R12, #0x2E \n"
145"               BNE             loc_FF882734 \n"
146"               BL              sub_FF98D478 \n"
147"               B               loc_FF8828D0 \n"
148
149"loc_FF882734: \n"
150//"             BL              sub_FF98C4C0 \n"
151"               BL              sub_FF98C4C0_my \n"                                     // patched
152
153"               B               loc_FF8828D0 \n"
154
155// jump table entry 2
156"loc_FF88273C: \n"
157"               MOV     R0, #1 \n"
158"               BL      sub_FF883140 \n"
159"               B       loc_FF8828D0 \n"
160
161// jump table entry 4
162"loc_FF882748: \n"
163"               BL      sub_FF882A98 \n"
164"               B       loc_FF882754 \n"
165
166// jump table entry 3
167"loc_FF882750: \n"
168"               BL      sub_FF882DE0 \n"
169"loc_FF882754: \n"
170"               STR     R6, [R4,#0x24] \n"
171"               B       loc_FF8828D0 \n"
172
173// jump table entry 5
174"loc_FF88275C: \n"
175"               BL      sub_FF882DE8 \n"
176"               B       loc_FF8828D0 \n"
177
178// jump table entry 6
179"loc_FF882764: \n"
180"               BL      sub_FF883014 \n"
181"               B       loc_FF88277C \n"
182
183// jump table entry 7
184"loc_FF88276C: \n"
185"               LDR     R0, [R0,#0xC] \n"
186"               BL      sub_FF98C6FC \n"
187"               B       loc_FF8828D0 \n"
188
189// jump table entry 8
190"loc_FF882778: \n"
191"               BL      sub_FF8830B0 \n"
192"loc_FF88277C: \n"
193"               BL      sub_FF87FF5C \n"
194"               B       loc_FF8828D0 \n"
195
196// jump table entry 10
197"loc_FF882784: \n"
198"               LDR     R0, [R4,#0x54] \n"
199"               BL      sub_FF883808 \n"
200"               B       loc_FF8828D0 \n"
201
202// jump table entry 11
203"loc_FF882790: \n"
204"               BL      sub_FF883B6C \n"
205"               B       loc_FF8828D0 \n"
206
207// jump table entry 12
208"loc_FF882798: \n"
209"               BL      sub_FF883BD0 \n"
210"               B       loc_FF8828D0 \n"
211
212// jump table entry 9
213"loc_FF8827A0: \n"
214"               BL      sub_FF882DE0 \n"
215"               B       loc_FF8828D0 \n"
216
217// jump table entry 13
218"loc_FF8827A8: \n"
219"               BL      sub_FF98B3AC \n"
220"               B       loc_FF8828D0 \n"
221
222// jump table entry 14
223"loc_FF8827B0: \n"
224"               BL      sub_FF98B5FC \n"
225"               B       loc_FF8828D0 \n"
226
227// jump table entry 15
228"loc_FF8827B8: \n"
229"               BL      sub_FF98B6C8 \n"
230"               B       loc_FF8828D0 \n"
231
232// jump table entry 16
233"loc_FF8827C0: \n"
234"               BL      sub_FF98B7DC \n"
235"               B       loc_FF8828D0 \n"
236
237// jump table entry 17
238"loc_FF8827C8: \n"
239"               BL      sub_FF98B8D4 \n"
240"               B       loc_FF8828D0 \n"
241
242// jump table entry 18
243"loc_FF8827D0: \n"
244"               MOV     R0, #0 \n"
245"               B       loc_FF8827F4 \n"
246
247// jump table entry 19
248"loc_FF8827D8: \n"
249"               BL      sub_FF98BE94 \n"
250"               B       loc_FF8828D0 \n"
251
252// jump table entry 20
253"loc_FF8827E0: \n"
254"               BL      sub_FF98BF38 \n"
255"               B       loc_FF8828D0 \n"
256
257// jump table entry 21
258"loc_FF8827E8: \n"
259"               BL      sub_FF98C018 \n"
260"               B       loc_FF8828D0 \n"
261
262// jump table entry 22
263"loc_FF8827F0: \n"
264"               MOV     R0, #1 \n"
265"loc_FF8827F4: \n"
266"               BL      sub_FF98BD1C \n"
267"               B       loc_FF8828D0 \n"
268
269// jump table entry 23
270"loc_FF8827FC: \n"
271"               BL      sub_FF883380 \n"
272"               B       loc_FF8828D0 \n"
273
274// jump table entry 24
275"loc_FF882804: \n"
276"               BL      sub_FF883428 \n"
277"               BL      sub_FF98D9A0 \n"
278"               B       loc_FF8828D0 \n"
279
280// jump table entry 25
281"loc_FF882810: \n"
282"               BL      sub_FF98BBAC \n"
283"               B       loc_FF8828D0 \n"
284
285// jump table entry 26
286"loc_FF882818: \n"
287"               MOV     R2, #2 \n"
288"               ADD     R1, R4, #0x60 \n"
289"               MOV     R0, #0x6F \n"
290"               BL      _GetPropertyCase \n"
291"               TST     R0, #1 \n"
292"               LDRNE   R1, =0x531 \n"
293"               LDRNE   R0, =0xFF8820BC \n"     // aSsshoottask_c
294"               BLNE    _DebugAssert \n"
295"               LDRH    R0, [R4,#0x60] \n"
296"               CMP     R0, #1 \n"
297"               BLEQ    sub_FF98BBA0 \n"
298"               B       loc_FF8828D0 \n"
299
300// jump table entry 27
301"loc_FF882848: \n"
302"               BL      sub_FF98BC70 \n"
303"               B       loc_FF8828D0 \n"
304
305// jump table entry 28
306"loc_FF882850: \n"
307"               BL      sub_FF98DA70 \n"
308"               B       loc_FF8828D0 \n"
309
310// jump table entry 29
311"loc_FF882858: \n"
312"               BL      sub_FF837D1C \n"
313"               B       loc_FF8828D0 \n"
314
315// jump table entry 30
316"loc_FF882860: \n"
317"               BL      sub_FF8861E8 \n"
318"               B       loc_FF8828D0 \n"
319
320// jump table entry 31
321"loc_FF882868: \n"
322"               BL      sub_FF886274 \n"
323"               B       loc_FF8828D0 \n"
324
325// jump table entry 32
326"loc_FF882870: \n"
327"               BL      sub_FF98C150 \n"
328"               B       loc_FF8828D0 \n"
329
330// jump table entry 33
331"loc_FF882878: \n"
332"               BL      sub_FF98C1B4 \n"
333"               B       loc_FF8828D0 \n"
334
335// jump table entry 34
336"loc_FF882880: \n"
337"               BL      sub_FF8862D0 \n"
338"               BL      sub_FF886290 \n"
339"               B       loc_FF8828D0 \n"
340
341// jump table entry 35
342"loc_FF88288C: \n"
343"               MOV     R0, #1 \n"
344"               BL      sub_FF98CEA0 \n"
345"               MOV     R0, #1 \n"
346"               BL      sub_FF98CFD0 \n"
347"               LDRH    R0, [R4,#0x9C] \n"
348"               CMP     R0, #4 \n"
349"               LDRNEH  R0, [R4] \n"
350"               SUBNE   R12, R0, #0x4200 \n"
351"               SUBNES  R12, R12, #0x2A \n"
352"               BNE     loc_FF8828D0 \n"
353"               BL      sub_FF886274 \n"
354"               BL      sub_FF886874 \n"
355"               BL      sub_FF8866F0 \n"
356"               B       loc_FF8828D0 \n"
357
358// jump table default entry
359"loc_FF8828C4: \n"
360"               LDR     R1, =0x591 \n"
361"               LDR     R0, =0xFF8820BC \n"     // aSsshoottask_c
362"               BL      _DebugAssert \n"
363
364// jump table entry 36
365"loc_FF8828D0: \n"
366"               LDR     R0, [SP] \n"
367"               LDR     R1, [R0,#4] \n"
368"               LDR     R0, [R7] \n"
369"               BL      sub_FF88D27C \n"
370"               LDR     R5, [SP] \n"
371"               LDR     R0, [R5,#8] \n"
372"               CMP     R0, #0 \n"
373"               LDREQ   R1, =0x115 \n"
374"               LDREQ   R0, =0xFF8820BC \n"     // aSsshoottask_c
375"               BLEQ    _DebugAssert \n"
376"               STR     R6, [R5,#8] \n"
377"               B       loc_FF88262C \n"
378        );
379}
380
381void __attribute__((naked,noinline)) sub_FF98C4C0_my(){
382asm volatile(
383"                STMFD   SP!, {R3-R7,LR} \n"
384"                LDR     R5, =0x3BB24 \n"
385"                MOV     R4, R0 \n"
386"                LDR     R0, [R5,#0x24] \n"
387"                MOV     R6, #0 \n"
388"                CMP     R0, #0 \n"
389"                BNE     loc_FF98C4FC \n"
390"                MOV     R0, #0xC \n"
391"                BL      sub_FF888028 \n"
392"                TST     R0, #1 \n"
393"                MOVNE   R2, R4 \n"
394"                LDMNEFD SP!, {R3-R7,LR} \n"
395"                MOVNE   R1, #1 \n"
396"                MOVNE   R0, #1 \n"
397"                BNE     sub_FF8805CC \n"
398
399"loc_FF98C4FC: \n"
400"                LDR     R0, [R4,#8] \n"
401"                LDR     R7, =0x420C \n"
402"                ORR     R0, R0, #1 \n"
403"                STR     R0, [R4,#8] \n"
404"                LDRH    R0, [R5] \n"
405"                CMP     R0, R7 \n"
406"                BEQ     loc_FF98C58C \n"
407"                LDRH    R0, [R5,#0x9A] \n"
408"                CMP     R0, #3 \n"
409"                BEQ     loc_FF98C5D4 \n"
410"                LDR     R0, [R4,#0xC] \n"
411"                CMP     R0, #1 \n"
412"                BLS     loc_FF98C598 \n"
413"                LDRH    R0, [R5,#0x98] \n"
414"                CMP     R0, #0 \n"
415"                BNE     loc_FF98C5D4 \n"
416"                LDRH    R0, [R5,#0x94] \n"
417"                CMP     R0, #2 \n"
418"                BNE     loc_FF98C5A4 \n"
419"                BL      sub_FF8834E8 \n"
420"                LDRH    R0, [R5] \n"
421"                CMP     R0, R7 \n"
422"                BEQ     loc_FF98C58C \n"
423"                LDRH    R0, [R5,#0x9A] \n"
424"                CMP     R0, #3 \n"
425"                BEQ     loc_FF98C5D4 \n"
426"                LDR     R0, [R4,#0xC] \n"
427"                CMP     R0, #1 \n"
428"                BLS     loc_FF98C598 \n"
429"                LDRH    R0, [R5,#0x98] \n"
430"                CMP     R0, #0 \n"
431"                BNE     loc_FF98C5D4 \n"
432"                LDRH    R0, [R5,#0x94] \n"
433"                CMP     R0, #2 \n"
434"                BEQ     loc_FF98C5D0 \n"
435"                B       loc_FF98C5A4 \n"
436
437"loc_FF98C58C: \n"
438"                LDRH    R0, [R5,#0x9A] \n"
439"                CMP     R0, #3 \n"
440"                BEQ     loc_FF98C5D4 \n"
441
442"loc_FF98C598: \n"
443"                LDRH    R0, [R5,#0x98] \n"
444"                CMP     R0, #0 \n"
445"                BNE     loc_FF98C5D4 \n"
446
447"loc_FF98C5A4: \n"
448"                LDRH    R0, [R5,#0x94] \n"
449"                CMP     R0, #1 \n"
450"                BNE     loc_FF98C5D4 \n"
451"                LDRH    R0, [R5] \n"
452"                CMP     R0, R7 \n"
453"                LDRNE   R0, [R4,#0xC] \n"
454"                CMPNE   R0, #1 \n"
455"                BLS     loc_FF98C5D4 \n"
456"                LDR     R0, [R4,#0x10] \n"
457"                CMP     R0, #1 \n"
458"                BNE     loc_FF98C5D4 \n"
459
460"loc_FF98C5D0: \n"
461"                BL      sub_FF98DAA8 \n"
462
463"loc_FF98C5D4: \n"
464"                BL      sub_FF98DA70 \n"
465"                BL      sub_FF882DF0 \n"
466"                LDR     R0, [R5,#0x24] \n"                     // before shot XXX
467"                CMP     R0, #0 \n"
468"                BNE     loc_FF98C66C \n"
469"                MOV     R0, R4 \n"
470"                BL      sub_FFB06EA8 \n"
471"                TST     R0, #1 \n"
472"                BNE     locret_FF98C690 \n"
473"                MOV     R0, R4 \n"
474"                BL      sub_FFB072C4 \n"
475"                BL      sub_FF98CC6C \n"
476"                MOV     R6, #1 \n"
477"                MOV     R0, #2 \n"
478"                BL      sub_FF87DF10 \n"                       // after pre-flash, before shot XXX
479
480                 "BL      wait_until_remote_button_is_released\n"
481                 "BL      capt_seq_hook_set_nr\n"                     // +
482
483"                LDRH    R0, [R5] \n"
484"                SUB     R12, R0, #0x8200 \n"
485"                SUBS    R12, R12, #0x2D \n"
486"                BNE     loc_FF98C65C \n"
487"                MOV     R2, #2 \n"
488"                ADD     R0, R2, #0x15C \n"
489"                MOV     R1, SP \n"
490"                STR     R6, [SP] \n"
491"                BL      _GetPropertyCase \n"
492"                TST     R0, #1 \n"
493"                MOVNE   R1, #0xC3 \n"
494//"                ADRNE   R0, aSscaptureseq_c \n"
495"                LDRNE   R0, =0xFF98C770 \n"
496"                BLNE    _DebugAssert \n"
497"                LDRH    R0, [SP] \n"
498"                CMP     R0, #1 \n"
499"                STRHI   R6, [R4,#0xE4] \n"
500"                BHI     loc_FF98C67C \n"
501"                MOV     R0, #0 \n"
502"                STR     R0, [R4,#0xE4] \n"
503
504"loc_FF98C65C: \n"
505"                MOV     R0, R4 \n"
506//"                BL      sub_FFB077C0 \n"                     // main flash / shot XXX
507"                BL      sub_FFB077C0_my \n"                    // main flash / shot XXX
508"                MOV     R6, R0 \n"
509"                B       loc_FF98C680 \n"
510
511"loc_FF98C66C: \n"
512"                LDR     R0, =0x7694 \n"
513"                LDR     R0, [R0] \n"
514"                CMP     R0, #0 \n"
515"                BEQ     loc_FF98C680 \n"
516
517"loc_FF98C67C: \n"
518"                MOV     R6, #0x1D \n"
519
520"loc_FF98C680: \n"
521"                MOV     R1, R6 \n"
522"                MOV     R0, R4 \n"
523"                LDMFD   SP!, {R3-R7,LR} \n"
524"                B       sub_FFB06FB4 \n"
525
526"locret_FF98C690: \n"
527"                LDMFD   SP!, {R3-R7,PC} \n"
528);
529}
530
531//void __attribute__((naked,noinline)) sub_FF98C694_my(){
532// asm volatile(
533//"             STMFD   SP!, {R4-R6,LR} \n"
534//"             BL      sub_FF881D8C \n"
535//"             MOV     R4, R0 \n"
536//"             LDR     R0, =0x3BB24 \n"
537//"             LDR     R5, =0x7694 \n"
538//"             LDR     R0, [R0,#0x24] \n"
539//"             MOV     R6, #1 \n"
540//"             CMP     R0, #0 \n"
541//"             BEQ     loc_FF98C6D8 \n"
542//"             MOV     R0, #0xC \n"
543//"             BL      sub_FF888028 \n"
544//"             TST     R0, #1 \n"
545//"             STRNE   R6, [R5] \n"
546//"             LDRNE   R0, [R4,#8] \n"
547//"             ORRNE   R0, R0, #0x40000000 \n"
548//"             STRNE   R0, [R4,#8] \n"
549//"             LDMNEFD SP!, {R4-R6,PC} \n"
550//"loc_FF98C6D8: \n"
551//"             MOV     R0, R4 \n"
552//"             BL      sub_FF98C298 \n"
553//"             MOV     R0, R4 \n"
554//"             BL      sub_FFB06E2C \n"
555//"             MOV     R0, R4 \n"
556//
557////"           BL      sub_FFB077C0 \n"
558//"             BL      sub_FFB077C0_my \n"                                     // patched
559//
560//"             TST     R0, #1 \n"
561//"             STRNE   R6, [R5] \n"
562//"             LDMFD   SP!, {R4-R6,PC} \n"
563// );
564//}
565
566// TODO - can this be shrunk by jumping to firmware locations after patches ???
567void __attribute__((naked,noinline)) sub_FFB077C0_my(){
568 asm volatile(
569"                STMFD   SP!, {R2-R6,LR} \n"
570"                MOV     R5, R0 \n"
571"                BL      sub_FF98D194 \n"
572//"                MOVL    R1, 0xFFFFFFFF \n"
573"                                MVN     R1, #0 \n"
574"                BL      sub_FF88D2B0 \n"
575"                LDR     R0, =0xFFB07024 \n" //sub_FFB07024
576"                MOV     R1, R5 \n"
577"                BL      sub_FF8C1CF0 \n"
578"                MOV     R0, R5 \n"
579"                BL      sub_FFB06F3C \n"
580"                MOV     R0, R5 \n"
581"                BL      sub_FFB073AC \n"
582"                MOV     R4, R0 \n"
583"                LDR     R1, =0xDE80 \n"
584"                MOV     R0, #0x8A \n"
585"                MOV     R2, #4 \n"
586"                BL      _GetPropertyCase \n"
587"                TST     R0, #1 \n"
588"                LDRNE   R1, =0x1F6 \n"
589//"                ADRNE   R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
590"                LDRNE   R0, =0xFFB07948 \n"
591"                BLNE    _DebugAssert \n"
592"                BL      sub_FF885860 \n"
593"                MOV     R0, R4 \n"
594"                CMP     R0, #1 \n"
595"                MOV     R4, #0 \n"
596"                BEQ     loc_FFB07860 \n"
597"                CMP     R0, #2 \n"
598"                BEQ     loc_FFB07870 \n"
599"                CMP     R0, #3 \n"
600"                BEQ     loc_FFB07894 \n"
601"                CMP     R0, #7 \n"
602"                BNE     loc_FFB078B0 \n"
603"                MOV     R0, #0 \n"
604"                BL      sub_FF8C1D20 \n"
605"                MOV     R0, #4 \n"
606"                STR     R0, [SP,#0x4] \n"
607
608"loc_FFB07850: \n"
609"                ADD     R1, SP, #0x4 \n"
610"                MOV     R0, R5 \n"
611"                BL      sub_FFB07624 \n"
612"                B       loc_FFB0788C \n"
613
614"loc_FFB07860: \n"
615"                MOV     R0, #1 \n"
616"                BL      sub_FF8C1D20 \n"
617"                STR     R4, [SP,#0x4] \n"
618"                B       loc_FFB07850 \n"
619
620"loc_FFB07870: \n"
621"                MOV     R0, #1 \n"
622"                BL      sub_FF8C1D20 \n"
623"                MOV     R0, #1 \n"
624"                STR     R0, [SP,#0x4] \n"
625"                MOV     R0, R5 \n"
626"                ADD     R1, SP, #0x4 \n"
627"                BL      sub_FFB07A1C \n"
628
629"loc_FFB0788C: \n"
630
631"               BL      capt_seq_hook_raw_here\n"               // added (16/2/2011, moved here so that long exposures work)
632
633"                MOV     R6, R0 \n"
634"                B       loc_FFB078BC \n"
635
636"loc_FFB07894: \n"
637"                MOV     R0, #1 \n"
638"                BL      sub_FF8C1D20 \n"
639"                ADD     R1, SP, #0x4 \n"
640"                MOV     R0, R5 \n"
641"                STR     R4, [SP,#0x4] \n"
642"                BL      sub_FFB076A0 \n"
643"                B       loc_FFB0788C \n"
644
645"loc_FFB078B0: \n"
646"                MOV     R1, #0x22C \n"
647//"                ADR     R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
648"                LDR   R0, =0xFFB07948 \n"
649"                BL      _DebugAssert \n"
650
651"loc_FFB078BC: \n"
652"                TST     R6, #1 \n"
653"                MOVNE   R0, R6 \n"
654"                BNE     locret_FFB07928 \n"
655"                MOV     R1, #0 \n"
656//"                ADR     R0, nullsub_368 \n"
657"                                LDR     R0, =0xFFB07594 \n"
658"                BL      sub_FF8C1CF0 \n"
659"                LDR     R0, =0x3BB24 \n"
660"                LDRH    R0, [R0] \n"
661"                SUB     R12, R0, #0x4000 \n"
662"                SUBS    R12, R12, #0x20C \n"
663"                BLEQ    sub_FF8AB01C \n"
664"                MOV     R0, R5 \n"
665"                BL      sub_FFB07454 \n"
666"                BL      sub_FF98D194 \n"
667"                MOV     R3, #0x244 \n"
668"                STR     R3, [SP] \n"
669"                LDR     R2, =0x3A98 \n"
670//"                ADR     R3, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
671"                LDR   R3, =0xFFB07948 \n"
672"                MOV     R1, #4 \n"
673"                BL      sub_FF8883A8 \n"
674"                CMP     R0, #0 \n"
675"                MOVNE   R1, #0x244 \n"
676//"                ADRNE   R0, aSsstandardcapt ; "SsStandardCaptureSeq.c" \n"
677"                LDRNE   R0, =0xFFB07948 \n"
678"                BLNE    _DebugAssert \n"
679"                LDRH    R0, [SP,#0x4] \n"
680"                STRH    R0, [R5,#0x14] \n"
681"                MOV     R0, #0 \n"
682
683"locret_FFB07928: \n"
684"                LDMFD   SP!, {R2-R6,PC} \n"
685         );
686}
687
688/*************************************************************/
689// @ FF8CC0D0
690void __attribute__((naked,noinline)) exp_drv_task(){
691
692 asm volatile(
693"                STMFD   SP!, {R4-R9,LR} \n"
694"                SUB     SP, SP, #0x24 \n"
695"                LDR     R9, =0xBB8 \n"
696"                LDR     R8, =0x4954 \n"
697"                LDR     R6, =0x58380 \n"
698"                MOV     R0, #0 \n"
699"                ADD     R7, SP, #0x14 \n"
700"                STR     R0, [SP,#0x10] \n"
701
702"loc_FF8CC0F0: \n"
703"                LDR     R0, [R8,#0x20] \n"
704"                MOV     R2, #0 \n"
705"                ADD     R1, SP, #0x20 \n"
706"                BL      sub_FF83A460 \n"
707"                LDR     R0, [SP,#0x10] \n"
708"                CMP     R0, #1 \n"
709"                BNE     loc_FF8CC13C \n"
710"                LDR     R0, [SP,#0x20] \n"
711"                LDR     R0, [R0] \n"
712"                CMP     R0, #0x14 \n"
713"                CMPNE   R0, #0x15 \n"
714"                CMPNE   R0, #0x16 \n"
715"                CMPNE   R0, #0x17 \n"
716"                BEQ     loc_FF8CC2A0 \n"
717"                CMP     R0, #0x29 \n"
718"                BEQ     loc_FF8CC228 \n"
719"                ADD     R1, SP, #0x10 \n"
720"                MOV     R0, #0 \n"
721"                BL      sub_FF8CC080 \n"
722
723"loc_FF8CC13C: \n"
724"                LDR     R0, [SP,#0x20] \n"
725"                LDR     R1, [R0] \n"
726"                CMP     R1, #0x2F \n"
727"                BNE     loc_FF8CC16C \n"
728"                LDR     R0, [SP,#0x20] \n"
729"                BL      sub_FF8CD4A8 \n"
730"                LDR     R0, [R8,#0x1C] \n"
731"                MOV     R1, #1 \n"
732"                BL      sub_FF88D27C \n"
733"                BL      _ExitTask \n"
734"                ADD     SP, SP, #0x24 \n"
735"                LDMFD   SP!, {R4-R9,PC} \n"
736
737"loc_FF8CC16C: \n"
738"                CMP     R1, #0x2E \n"
739"                BNE     loc_FF8CC188 \n"
740"                LDR     R2, [R0,#0x8C]! \n"
741"                LDR     R1, [R0,#4] \n"
742"                MOV     R0, R1 \n"
743"                BLX     R2 \n"
744"                B       loc_FF8CC790 \n"
745
746"loc_FF8CC188: \n"
747"                CMP     R1, #0x27 \n"
748"                BNE     loc_FF8CC1D8 \n"
749"                LDR     R0, [R8,#0x1C] \n"
750"                MOV     R1, #0x80 \n"
751"                BL      sub_FF88D2B0 \n"
752"                LDR     R0, =0xFF8C7EC8 \n"
753"                MOV     R1, #0x80 \n"
754"                BL      sub_FF97EE88 \n"
755"                LDR     R0, [R8,#0x1C] \n"
756"                MOV     R2, R9 \n"
757"                MOV     R1, #0x80 \n"
758"                BL      sub_FF88D1BC \n"
759"                TST     R0, #1 \n"
760"                LDRNE   R1, =0x109D \n"
761"                BNE     loc_FF8CC294 \n"
762
763"loc_FF8CC1C4: \n"
764"                LDR     R1, [SP,#0x20] \n"
765"                LDR     R0, [R1,#0x90] \n"
766"                LDR     R1, [R1,#0x8C] \n"
767"                BLX     R1 \n"
768"                B       loc_FF8CC790 \n"
769
770"loc_FF8CC1D8: \n"
771"                CMP     R1, #0x28 \n"
772"                BNE     loc_FF8CC220 \n"
773"                ADD     R1, SP, #0x10 \n"
774"                BL      sub_FF8CC080 \n"
775"                LDR     R0, [R8,#0x1C] \n"
776"                MOV     R1, #0x100 \n"
777"                BL      sub_FF88D2B0 \n"
778"                LDR     R0, =0xFF8C7ED8 \n"
779"                MOV     R1, #0x100 \n"
780"                BL      sub_FF97F818 \n"
781"                LDR     R0, [R8,#0x1C] \n"
782"                MOV     R2, R9 \n"
783"                MOV     R1, #0x100 \n"
784"                BL      sub_FF88D1BC \n"
785"                TST     R0, #1 \n"
786"                BEQ     loc_FF8CC1C4 \n"
787"                LDR     R1, =0x10A7 \n"
788"                B       loc_FF8CC294 \n"
789
790"loc_FF8CC220: \n"
791"                CMP     R1, #0x29 \n"
792"                BNE     loc_FF8CC238 \n"
793
794"loc_FF8CC228: \n"
795"                LDR     R0, [SP,#0x20] \n"
796"                ADD     R1, SP, #0x10 \n"
797"                BL      sub_FF8CC080 \n"
798"                B       loc_FF8CC1C4 \n"
799
800"loc_FF8CC238: \n"
801"                CMP     R1, #0x2C \n"
802"                BNE     loc_FF8CC250 \n"
803"                BL      sub_FF8BA4F4 \n"
804"                BL      sub_FF8BB100 \n"
805"                BL      sub_FF8BAC6C \n"
806"                B       loc_FF8CC1C4 \n"
807
808"loc_FF8CC250: \n"
809"                CMP     R1, #0x2D \n"
810"                BNE     loc_FF8CC2A0 \n"
811"                LDR     R0, [R8,#0x1C] \n"
812"                MOV     R1, #4 \n"
813"                BL      sub_FF88D2B0 \n"
814"                LDR     R1, =0xFF8C7EF8 \n"
815"                LDR     R0, =0xFFFFF400 \n"
816"                MOV     R2, #4 \n"
817"                BL      sub_FF8B9F70 \n"
818"                BL      sub_FF8BA1F8 \n"
819"                LDR     R0, [R8,#0x1C] \n"
820"                MOV     R2, R9 \n"
821"                MOV     R1, #4 \n"
822"                BL      sub_FF88D0D8 \n"
823"                TST     R0, #1 \n"
824"                BEQ     loc_FF8CC1C4 \n"
825"                LDR     R1, =0x10Cf \n"
826
827"loc_FF8CC294: \n"
828"                LDR     R0, =0xFF8C8590 \n"    //aExpdrv_c
829"                BL      _DebugAssert \n"
830"                B       loc_FF8CC1C4 \n"
831
832"loc_FF8CC2A0: \n"
833"                LDR     R0, [SP,#0x20] \n"
834"                MOV     R5, #1 \n"
835"                LDR     R1, [R0] \n"
836"                CMP     R1, #0x12 \n"
837"                CMPNE   R1, #0x13 \n"
838"                BNE     loc_FF8CC308 \n"
839"                LDR     R1, [R0,#0x7C] \n"
840"                ADD     R1, R1, R1,LSL#1 \n"
841"                ADD     R1, R0, R1,LSL#2 \n"
842"                SUB     R1, R1, #8 \n"
843"                LDMIA   R1, {R2-R4} \n"
844"                STMIA   R7, {R2-R4} \n"
845"                BL      sub_FF8CA7E8 \n"
846"                LDR     R0, [SP,#0x20] \n"
847"                LDR     R1, [R0,#0x7C] \n"
848"                LDR     R3, [R0,#0x8C] \n"
849"                LDR     R2, [R0,#0x90] \n"
850"                ADD     R0, R0, #4 \n"
851"                BLX     R3 \n"
852"                LDR     R0, [SP,#0x20] \n"
853"                BL      sub_FF8CD8BC \n"
854"                LDR     R0, [SP,#0x20] \n"
855"                LDR     R1, [R0,#0x7C] \n"
856"                LDR     R2, [R0,#0x98] \n"
857"                LDR     R3, [R0,#0x94] \n"
858"                B       loc_FF8CC67C \n"
859
860"loc_FF8CC308: \n"
861"                CMP     R1, #0x14 \n"
862"                CMPNE   R1, #0x15 \n"
863"                CMPNE   R1, #0x16 \n"
864"                CMPNE   R1, #0x17 \n"
865"                BNE     loc_FF8CC3C0 \n"
866"                ADD     R3, SP, #0x10 \n"
867"                ADD     R2, SP, #0x04 \n"
868"                ADD     R1, SP, #0x14 \n"
869"                BL      sub_FF8CAA54 \n"
870"                CMP     R0, #1 \n"
871"                MOV     R4, R0 \n"
872"                CMPNE   R4, #5 \n"
873"                BNE     loc_FF8CC35C \n"
874"                LDR     R0, [SP,#0x20] \n"
875"                MOV     R2, R4 \n"
876"                LDR     R1, [R0,#0x7C]! \n"
877"                LDR     R12, [R0,#0x10]! \n"
878"                LDR     R3, [R0,#4] \n"
879"                ADD     R0, SP, #0x04 \n"
880"                BLX     R12 \n"
881"                B       loc_FF8CC394 \n"
882
883"loc_FF8CC35C: \n"
884"                LDR     R0, [SP,#0x20] \n"
885"                CMP     R4, #2 \n"
886"                LDR     R3, [R0,#0x90] \n"
887"                CMPNE   R4, #6 \n"
888"                BNE     loc_FF8CC3A8 \n"
889"                LDR     R12, [R0,#0x8C] \n"
890"                ADD     R0, SP, #0x04 \n"
891"                MOV     R2, R4 \n"
892"                MOV     R1, #1 \n"
893"                BLX     R12 \n"
894"                LDR     R0, [SP,#0x20] \n"
895"                ADD     R2, SP, #0x04 \n"
896"                ADD     R1, SP, #0x14 \n"
897"                BL      sub_FF8CBDCC \n"
898
899"loc_FF8CC394: \n"
900"                LDR     R0, [SP,#0x20] \n"
901"                LDR     R2, [SP,#0x10] \n"
902"                MOV     R1, R4 \n"
903"                BL      sub_FF8CC020 \n"
904"                B       loc_FF8CC684 \n"
905
906"loc_FF8CC3A8: \n"
907"                LDR     R1, [R0,#0x7C] \n"
908"                LDR     R12, [R0,#0x8C] \n"
909"                ADD     R0, R0, #4 \n"
910"                MOV     R2, R4 \n"
911"                BLX     R12 \n"
912"                B       loc_FF8CC684 \n"
913
914"loc_FF8CC3C0: \n"
915"                CMP     R1, #0x23 \n"
916"                CMPNE   R1, #0x24 \n"
917"                BNE     loc_FF8CC46C \n"
918"                LDR     R1, [R0,#0x7C] \n"
919"                ADD     R1, R1, R1,LSL#1 \n"
920"                ADD     R1, R0, R1,LSL#2 \n"
921"                SUB     R1, R1, #8 \n"
922"                LDMIA   R1, {R2-R4} \n"
923"                STMIA   R7, {R2-R4} \n"
924"                BL      sub_FF8C985C \n"
925"                LDR     R0, [SP,#0x20] \n"
926"                LDR     R1, [R0,#0x7C] \n"
927"                LDR     R3, [R0,#0x8C] \n"
928"                LDR     R2, [R0,#0x90] \n"
929"                ADD     R0, R0, #4 \n"
930"                BLX     R3 \n"
931"                LDR     R0, [SP,#0x20] \n"
932"                BL      sub_FF8C9CA8 \n"
933"                B       loc_FF8CC684 \n"
934
935"loc_FF8CC46C: \n"
936"                ADD     R1, R0, #4 \n"
937"                LDMIA   R1, {R2-R4} \n"
938"                STMIA   R7, {R2-R4} \n"
939"                LDR     R1, [R0] \n"
940"                CMP     R1, #0x26 \n"
941"                ADDLS   PC, PC, R1,LSL#2 \n"
942"                B       loc_FF8CC66C \n"
943"loc_FF8CC488: \n"
944"                B       loc_FF8CC524 \n"
945"loc_FF8CC48C: \n"
946"                B       loc_FF8CC524 \n"
947"loc_FF8CC490: \n"
948"                B       loc_FF8CC52C \n"
949"loc_FF8CC494: \n"
950"                B       loc_FF8CC534 \n"
951"loc_FF8CC498: \n"
952"                B       loc_FF8CC534 \n"
953"loc_FF8CC49C: \n"
954"                B       loc_FF8CC534 \n"
955"loc_FF8CC4A0: \n"
956"                B       loc_FF8CC524 \n"
957"loc_FF8CC4A4: \n"
958"                B       loc_FF8CC52C \n"
959"loc_FF8CC4A8: \n"
960"                B       loc_FF8CC534 \n"
961"loc_FF8CC4AC: \n"
962"                B       loc_FF8CC534 \n"
963"loc_FF8CC4B0: \n"
964"                B       loc_FF8CC54C \n"
965"loc_FF8CC4B4: \n"
966"                B       loc_FF8CC54C \n"
967"loc_FF8CC4B8: \n"
968"                B       loc_FF8CC658 \n"
969"loc_FF8CC4BC: \n"
970"                B       loc_FF8CC660 \n"
971"loc_FF8CC4C0: \n"
972"                B       loc_FF8CC660 \n"
973"loc_FF8CC4C4: \n"
974"                B       loc_FF8CC660 \n"
975"loc_FF8CC4C8: \n"
976"                B       loc_FF8CC660 \n"
977"loc_FF8CC4CC: \n"
978"                B       loc_FF8CC668 \n"
979"loc_FF8CC4D0: \n"
980"                B       loc_FF8CC66C \n"
981"loc_FF8CC4D4: \n"
982"                B       loc_FF8CC66C \n"
983"loc_FF8CC4D8: \n"
984"                B       loc_FF8CC66C \n"
985"loc_FF8CC4DC: \n"
986"                B       loc_FF8CC66C \n"
987"loc_FF8CC4E0: \n"
988"                B       loc_FF8CC66C \n"
989"loc_FF8CC4E4: \n"
990"                B       loc_FF8CC66C \n"
991"loc_FF8CC4E8: \n"
992"                B       loc_FF8CC53C \n"
993"loc_FF8CC4EC: \n"
994"                B       loc_FF8CC544 \n"
995"loc_FF8CC4F0: \n"
996"                B       loc_FF8CC544 \n"
997"loc_FF8CC4F4: \n"
998"                B       loc_FF8CC558 \n"
999"loc_FF8CC4F8: \n"
1000"                B       loc_FF8CC558 \n"
1001"loc_FF8CC4FC: \n"
1002"                B       loc_FF8CC560 \n"
1003"loc_FF8CC500: \n"
1004"                B       loc_FF8CC598 \n"
1005"loc_FF8CC504: \n"
1006"                B       loc_FF8CC5D0 \n"
1007"loc_FF8CC508: \n"
1008"                B       loc_FF8CC608 \n"
1009"loc_FF8CC50C: \n"
1010"                B       loc_FF8CC640 \n"
1011"loc_FF8CC510: \n"
1012"                B       loc_FF8CC640 \n"
1013"loc_FF8CC514: \n"
1014"                B       loc_FF8CC66C \n"
1015"loc_FF8CC518: \n"
1016"                B       loc_FF8CC66C \n"
1017"loc_FF8CC51C: \n"
1018"                B       loc_FF8CC648 \n"
1019"loc_FF8CC520: \n"
1020"                B       loc_FF8CC650 \n"
1021
1022"loc_FF8CC524: \n"
1023//"; jumptable FF8D0B70 entries 0,1,6      ; LOCATION: ExpDrv.c:928
1024"                BL      sub_FF8C8414 \n"
1025"                B       loc_FF8CC66C \n"
1026
1027"loc_FF8CC52C: \n"
1028//"; jumptable FF8D0B70 entries 2,7        ; LOCATION: ExpDrv.c:0
1029"                BL      sub_FF8C86B4 \n"
1030"                B       loc_FF8CC66C \n"
1031
1032"loc_FF8CC534: \n"
1033//"; jumptable FF8D0B70 entries 3-5,8,9    ; LOCATION: ExpDrv.c:0
1034"                BL      sub_FF8C88DC \n"
1035"                B       loc_FF8CC66C \n"
1036
1037"loc_FF8CC53C: \n"
1038//"; jumptable FF8D0B70 entry 24           ; LOCATION: ExpDrv.c:2
1039"                BL      sub_FF8C8BB4 \n"
1040"                B       loc_FF8CC66C \n"
1041
1042"loc_FF8CC544: \n"
1043//"; jumptable FF8D0B70 entries 25,26      ; LOCATION: ExpDrv.c:0
1044"                BL      sub_FF8C8DCC \n"
1045"                B       loc_FF8CC66C \n"
1046
1047"loc_FF8CC54C: \n"
1048//"; jumptable FF8D0B70 entries 10,11      ; LOCATION: ExpDrv.c:2
1049//"                BL      sub_FF8C90F0 \n"
1050"                BL      sub_FF8C90F0_my \n"  // patched
1051"                MOV     R5, #0 \n"
1052"                B       loc_FF8CC66C \n"
1053
1054"loc_FF8CC558: \n"
1055//"; jumptable FF8D0B70 entries 27,28      ; LOCATION: ExpDrv.c:0
1056"                BL      sub_FF8C9238 \n"
1057"                B       loc_FF8CC66C \n"
1058
1059"loc_FF8CC560: \n"
1060//"; jumptable FF8D0B70 entry 29
1061"                LDRH    R1, [R0,#4] \n"
1062"                STRH    R1, [SP,#0x14] \n"
1063"                LDRH    R1, [R6,#2] \n"
1064"                STRH    R1, [SP,#0x16] \n"
1065"                LDRH    R1, [R6,#4] \n"
1066"                STRH    R1, [SP,#0x18] \n"
1067"                LDRH    R1, [R6,#6] \n"
1068"                STRH    R1, [SP,#0x1A] \n"
1069"                LDRH    R1, [R0,#0xC] \n"
1070"                STRH    R1, [SP,#0x1C] \n"
1071"                LDRH    R1, [R6,#0xA] \n"
1072"                STRH    R1, [SP,#0x1E] \n"
1073"                BL      sub_FF8CD5B4 \n"
1074"                B       loc_FF8CC66C \n"
1075
1076"loc_FF8CC598: \n"
1077//"; jumptable FF8D0B70 entry 30
1078"                LDRH    R1, [R0,#4] \n"
1079"                STRH    R1, [SP,#0x14] \n"
1080"                LDRH    R1, [R6,#2] \n"
1081"                STRH    R1, [SP,#0x16] \n"
1082"                LDRH    R1, [R6,#4] \n"
1083"                STRH    R1, [SP,#0x18] \n"
1084"                LDRH    R1, [R6,#6] \n"
1085"                STRH    R1, [SP,#0x1A] \n"
1086"                LDRH    R1, [R6,#8] \n"
1087"                STRH    R1, [SP,#0x1C] \n"
1088"                LDRH    R1, [R6,#0xA] \n"
1089"                STRH    R1, [SP,#0x1E] \n"
1090"                BL      sub_FF8CD6BC \n"
1091"                B       loc_FF8CC66C \n"
1092
1093"loc_FF8CC5D0: \n"
1094//"; jumptable FF8D0B70 entry 31
1095"                LDRH    R1, [R6] \n"
1096"                STRH    R1, [SP,#0x14] \n"
1097"                LDRH    R1, [R0,#6] \n"
1098"                STRH    R1, [SP,#0x16] \n"
1099"                LDRH    R1, [R6,#4] \n"
1100"                STRH    R1, [SP,#0x18] \n"
1101"                LDRH    R1, [R6,#6] \n"
1102"                STRH    R1, [SP,#0x1A] \n"
1103"                LDRH    R1, [R6,#8] \n"
1104"                STRH    R1, [SP,#0x1C] \n"
1105"                LDRH    R1, [R6,#0xA] \n"
1106"                STRH    R1, [SP,#0x1E] \n"
1107"                BL      sub_FF8CD770 \n"
1108"                B       loc_FF8CC66C \n"
1109
1110"loc_FF8CC608: \n"
1111//"; jumptable FF8D0B70 entry 32
1112"                LDRH    R1, [R6] \n"
1113"                STRH    R1, [SP,#0x14] \n"
1114"                LDRH    R1, [R6,#2] \n"
1115"                STRH    R1, [SP,#0x16] \n"
1116"                LDRH    R1, [R6,#4] \n"
1117"                STRH    R1, [SP,#0x18] \n"
1118"                LDRH    R1, [R6,#6] \n"
1119"                STRH    R1, [SP,#0x1A] \n"
1120"                LDRH    R1, [R0,#0xC] \n"
1121"                STRH    R1, [SP,#0x1C] \n"
1122"                LDRH    R1, [R6,#0xA] \n"
1123"                STRH    R1, [SP,#0x1E] \n"
1124"                BL      sub_FF8CD818 \n"
1125"                B       loc_FF8CC66C \n"
1126
1127"loc_FF8CC640: \n"
1128//"; jumptable FF8D0B70 entries 33,34      ; LOCATION: ExpDrv.c:6
1129"                BL      sub_FF8C9634 \n"
1130"                B       loc_FF8CC66C \n"
1131
1132"loc_FF8CC648: \n"
1133//"; jumptable FF8D0B70 entry 37           ; LOCATION: ExpDrv.c:10
1134"                BL      sub_FF8C9DAC \n"
1135"                B       loc_FF8CC66C \n"
1136
1137"loc_FF8CC650: \n"
1138//"; jumptable FF8D0B70 entry 38           ; LOCATION: ExpDrv.c:6
1139"                BL      sub_FF8CA048 \n"
1140"                B       loc_FF8CC66C \n"
1141
1142"loc_FF8CC658: \n"
1143//"; jumptable FF8D0B70 entry 12           ; LOCATION: ExpDrv.c:2
1144"                BL      sub_FF8CA228 \n"
1145"                B       loc_FF8CC66C \n"
1146
1147"loc_FF8CC660: \n"
1148//"; jumptable FF8D0B70 entries 13-16      ; LOCATION: ExpDrv.c:128
1149"                BL      sub_FF8CA470 \n"
1150"                B       loc_FF8CC66C \n"
1151
1152"loc_FF8CC668: \n"
1153//"; jumptable FF8D0B70 entry 17           ; LOCATION: ExpDrv.c:2
1154"                BL      sub_FF8CA5E0 \n"
1155
1156"loc_FF8CC66C: \n"
1157//"; jumptable FF8D0B70 default entry
1158//"; jumptable FF8D0B70 entries 18-23,35,36
1159"                LDR     R0, [SP,#0x20] \n"
1160"                LDR     R1, [R0,#0x7C] \n"
1161"                LDR     R2, [R0,#0x90] \n"
1162"                LDR     R3, [R0,#0x8C] \n"
1163
1164"loc_FF8CC67C: \n"
1165"                ADD     R0, R0, #4 \n"
1166"                BLX     R3 \n"
1167
1168"loc_FF8CC684: \n"
1169"                LDR     R0, [SP,#0x20] \n"
1170"                LDR     R1, [R0] \n"
1171"                CMP     R1, #0x10 \n"
1172"                BEQ     loc_FF8CC6BC \n"
1173"                BGT     loc_FF8CC6AC \n"
1174"                CMP     R1, #1 \n"
1175"                CMPNE   R1, #4 \n"
1176"                CMPNE   R1, #0xE \n"
1177"                BNE     loc_FF8CC6CC \n"
1178"                B       loc_FF8CC6BC \n"
1179
1180"loc_FF8CC6AC: \n"
1181"                CMP     R1, #0x13 \n"
1182"                CMPNE   R1, #0x17 \n"
1183"                CMPNE   R1, #0x1A \n"
1184"                BNE     loc_FF8CC6CC \n"
1185
1186"loc_FF8CC6BC: \n"
1187"                LDRH    R1, [R6] \n"
1188"                STRH    R1, [SP,#0x14] \n"
1189"                LDRH    R1, [R6,#8] \n"
1190"                STRH    R1, [SP,#0x1C] \n"
1191
1192"loc_FF8CC6CC: \n"
1193"                CMP     R5, #1 \n"
1194"                BNE     loc_FF8CC718 \n"
1195"                LDR     R1, [R0,#0x7C] \n"
1196"                MOV     R2, #0xC \n"
1197"                ADD     R1, R1, R1,LSL#1 \n"
1198"                ADD     R0, R0, R1,LSL#2 \n"
1199"                SUB     R4, R0, #8 \n"
1200"                LDR     R0, =0x58380 \n"
1201"                ADD     R1, SP, #0x14 \n"
1202"                BL      sub_FFBB30C8 \n"
1203"                LDR     R0, =0x5838C \n"
1204"                MOV     R2, #0xC \n"
1205"                ADD     R1, SP, #0x14 \n"
1206"                BL      sub_FFBB30C8 \n"
1207"                LDR     R0, =0x58398 \n"
1208"                MOV     R2, #0xC \n"
1209"                MOV     R1, R4 \n"
1210"                BL      sub_FFBB30C8 \n"
1211"                B       loc_FF8CC790 \n"
1212
1213"loc_FF8CC718: \n"
1214"                LDR     R0, [R0] \n"
1215"                MOV     R3, #1 \n"
1216"                CMP     R0, #0xB \n"
1217"                BNE     loc_FF8CC75C \n"
1218"                MOV     R2, #0 \n"
1219"                STRD    R2, [SP] \n"
1220"                MOV     R2, #1 \n"
1221"                MOV     R1, #1 \n"
1222"                MOV     R0, #0 \n"
1223"                BL      sub_FF8C81F4 \n"
1224"                MOV     R3, #1 \n"
1225"                MOV     R2, #0 \n"
1226"                STRD    R2, [SP] \n"
1227"                MOV     R2, #1 \n"
1228"                MOV     R1, #1 \n"
1229"                MOV     R0, #0 \n"
1230"                B       loc_FF8CC78C \n"
1231
1232"loc_FF8CC75C: \n"
1233"                MOV     R2, #1 \n"
1234"                STRD    R2, [SP] \n"
1235"                MOV     R3, #1 \n"
1236"                MOV     R1, #1 \n"
1237"                MOV     R0, #1 \n"
1238"                BL      sub_FF8C81F4 \n"
1239"                MOV     R3, #1 \n"
1240"                MOV     R2, #1 \n"
1241"                MOV     R1, #1 \n"
1242"                MOV     R0, #1 \n"
1243"                STR     R3, [SP] \n"
1244"                STR     R3, [SP,#0x04] \n"
1245
1246"loc_FF8CC78C: \n"
1247"                BL      sub_FF8C835C \n"
1248
1249"loc_FF8CC790: \n"
1250"                LDR     R0, [SP,#0x20] \n"
1251"                BL      sub_FF8CD4A8 \n"
1252"                B       loc_FF8CC0F0 \n"
1253 );
1254}
1255
1256void __attribute__((naked,noinline)) sub_FF8C90F0_my() {
1257        asm volatile (
1258"                STMFD   SP!, {R4-R8,LR} \n"
1259"                LDR     R7, =0x4954 \n"
1260"                MOV     R4, R0 \n"
1261"                LDR     R0, [R7,#0x1C] \n"
1262"                MOV     R1, #0x3E \n"
1263"                BL      sub_FF88D2B0 \n"
1264"                LDRSH   R0, [R4,#4] \n"
1265"                MOV     R2, #0 \n"
1266"                MOV     R1, #0 \n"
1267"                BL      sub_FF8C7F4C \n"
1268"                MOV     R5, R0 \n"
1269"                LDRSH   R0, [R4,#6] \n"
1270"                BL      sub_FF8C8068 \n"
1271"                LDRSH   R0, [R4,#8] \n"
1272"                BL      sub_FF8C80C0 \n"
1273"                LDRSH   R0, [R4,#0xA] \n"
1274"                BL      sub_FF8C8118 \n"
1275"                LDRSH   R0, [R4,#0xC] \n"
1276"                MOV     R1, #0 \n"
1277"                BL      sub_FF8C8170 \n"
1278"                MOV     R6, R0 \n"
1279"                LDRSH   R0, [R4,#0xE] \n"
1280"                BL      sub_FF8CD554 \n"
1281"                LDR     R0, [R4] \n"
1282"                LDR     R8, =0x58398 \n"
1283"                CMP     R0, #0xB \n"
1284"                MOVEQ   R5, #0 \n"
1285"                MOVEQ   R6, #0 \n"
1286"                BEQ     loc_FF8C918C \n"
1287"                CMP     R5, #1 \n"
1288"                BNE     loc_FF8C918C \n"
1289"                LDRSH   R0, [R4,#4] \n"
1290"                LDR     R1, =0xFF8C7EB8 \n"
1291"                MOV     R2, #2 \n"
1292"                BL      sub_FF97F1D4 \n"
1293"                STRH    R0, [R4,#4] \n"
1294"                MOV     R0, #0 \n"
1295"                STR     R0, [R7,#0x28] \n"
1296"                B       loc_FF8C9194 \n"
1297
1298"loc_FF8C918C: \n"
1299"                LDRH    R0, [R8] \n"
1300"                STRH    R0, [R4,#4] \n"
1301
1302"loc_FF8C9194: \n"
1303"                CMP     R6, #1 \n"
1304"                LDRNEH  R0, [R8,#8] \n"
1305"                BNE     loc_FF8C91B0 \n"
1306"                LDRSH   R0, [R4,#0xC] \n"
1307"                LDR     R1, =0xFF8C7F3C \n"
1308"                MOV     R2, #0x20 \n"
1309"                BL      sub_FF8CD570 \n"
1310
1311"loc_FF8C91B0: \n"
1312"                STRH    R0, [R4,#0xC] \n"
1313"                LDRSH   R0, [R4,#6] \n"
1314//"                BL      sub_FF8BA264 \n"
1315"                BL      sub_FF8BA264_my \n" // patched
1316"                               B               sub_FF8C91BC \n"        // continue in firmware
1317        );
1318}
1319
1320void __attribute__((naked,noinline)) sub_FF8BA264_my() {
1321        asm volatile (
1322"                STMFD   SP!, {R4-R6,LR} \n"
1323"                LDR     R5, =0x4638 \n"
1324"                MOV     R4, R0 \n"
1325"                LDR     R0, [R5,#4] \n"
1326"                CMP     R0, #1 \n"
1327"                LDRNE   R1, =0x146 \n"
1328"                LDRNE   R0, =0xFF8BA068 \n" //aShutter_c
1329"                BLNE    _DebugAssert \n"
1330"                CMN     R4, #0xC00 \n"
1331"                LDREQSH R4, [R5,#2] \n"
1332"                CMN     R4, #0xC00 \n"
1333"                MOVEQ   R1, #0x14C \n"
1334"                LDRNE   R0, =0xFF8BA068 \n" //aShutter_c
1335"                STRH    R4, [R5,#2] \n"
1336"                BLEQ    _DebugAssert \n"
1337"                MOV     R0, R4 \n"
1338"                BL      apex2us \n"    // patched
1339"                               B               sub_FF8BA2A8 \n"        // continue in firmware
1340);
1341}
Note: See TracBrowser for help on using the repository browser.