source: trunk/platform/s95/sub/100e/capt_seq.c @ 1059

Revision 1059, 26.2 KB checked in by reyalP, 2 years ago (diff)

add s95 100e and 100h source, thanks to waldo in http://chdk.setepontos.com/index.php?topic=650.msg59919#msg59919

  • 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*)0xe7d8; // S95 100e: FFAF9528
6
7#include "../../../generic/capt_seq.c"
8
9
10/*----------------------------------------------------------------------
11        capt_seq_task()
12-----------------------------------------------------------------------*/
13void __attribute__((naked,noinline)) capt_seq_task()
14{
15        asm volatile (
16"               STMFD   SP!, {R3-R7,LR} \n"
17"               LDR     R7, =0x2E6C \n"
18"               LDR     R4, =0x3CFBC \n"
19"               MOV     R6, #0 \n"
20"loc_FF88323C: \n"
21"               LDR     R0, [R7,#4] \n"
22"               MOV     R2, #0 \n"
23"               MOV     R1, SP \n"
24"               BL      sub_FF83A2F8 \n"
25"               TST     R0, #1 \n"
26"               BEQ     loc_FF883268 \n"
27"               LDR     R1, =0x43F \n"
28"               LDR     R0, =0xFF882CF4 \n"                                     // aSsshoottask_c
29"               BL      sub_FF81EB78 \n"                                        // DebugAssert
30"               BL      sub_FF81EB30 \n"                                        // eventproc_export_ExitTask
31"               LDMFD   SP!, {R3-R7,PC} \n"
32"loc_FF883268: \n"
33"               LDR     R0, [SP] \n"
34"               LDR     R1, [R0] \n"
35"               CMP     R1, #0x23 \n"
36"               ADDLS   PC, PC, R1,LSL#2 \n"
37"               B       loc_FF8834A0 \n"
38"loc_FF88327C: \n"
39"               B       loc_FF88330C \n"
40"loc_FF883280: \n"
41"               B       loc_FF883324 \n"
42"loc_FF883284: \n"
43"               B       loc_FF883348 \n"
44"loc_FF883288: \n"
45"               B       loc_FF88335C \n"
46"loc_FF88328C: \n"
47"               B       loc_FF883354 \n"
48"loc_FF883290: \n"
49"               B       loc_FF883368 \n"
50"loc_FF883294: \n"
51"               B       loc_FF883370 \n"
52"loc_FF883298: \n"
53"               B       loc_FF883378 \n"
54"loc_FF88329C: \n"
55"               B       loc_FF883384 \n"
56"loc_FF8832A0: \n"
57"               B       loc_FF8833AC \n"
58"loc_FF8832A4: \n"
59"               B       loc_FF883390 \n"
60"loc_FF8832A8: \n"
61"               B       loc_FF88339C \n"
62"loc_FF8832AC: \n"
63"               B       loc_FF8833A4 \n"
64"loc_FF8832B0: \n"
65"               B       loc_FF8833B4 \n"
66"loc_FF8832B4: \n"
67"               B       loc_FF8833BC \n"
68"loc_FF8832B8: \n"
69"               B       loc_FF8833C4 \n"
70"loc_FF8832BC: \n"
71"               B       loc_FF8833CC \n"
72"loc_FF8832C0: \n"
73"               B       loc_FF8833D4 \n"
74"loc_FF8832C4: \n"
75"               B       loc_FF8833DC \n"
76"loc_FF8832C8: \n"
77"               B       loc_FF8833E4 \n"
78"loc_FF8832CC: \n"
79"               B       loc_FF8833EC \n"
80"loc_FF8832D0: \n"
81"               B       loc_FF8833F4 \n"
82"loc_FF8832D4: \n"
83"               B       loc_FF8833FC \n"
84"loc_FF8832D8: \n"
85"               B       loc_FF883408 \n"
86"loc_FF8832DC: \n"
87"               B       loc_FF883410 \n"
88"loc_FF8832E0: \n"
89"               B       loc_FF88341C \n"
90"loc_FF8832E4: \n"
91"               B       loc_FF883424 \n"
92"loc_FF8832E8: \n"
93"               B       loc_FF88342C \n"
94"loc_FF8832EC: \n"
95"               B       loc_FF883434 \n"
96"loc_FF8832F0: \n"
97"               B       loc_FF88343C \n"
98"loc_FF8832F4: \n"
99"               B       loc_FF883444 \n"
100"loc_FF8832F8: \n"
101"               B       loc_FF88344C \n"
102"loc_FF8832FC: \n"
103"               B       loc_FF883454 \n"
104"loc_FF883300: \n"
105"               B       loc_FF88345C \n"
106"loc_FF883304: \n"
107"               B       loc_FF883468 \n"
108"loc_FF883308: \n"
109"               B       loc_FF8834AC \n"
110
111// jump table entry 0
112// half-press / shot setup
113"loc_FF88330C: \n"
114"               BL      sub_FF8839D4 \n"
115
116"               BL      shooting_expo_param_override\n"                 // added
117
118"               BL      sub_FF880B34 \n"
119
120// force call to next function
121"               MOV     R0, #0\n"
122"               STR     R0, [R4,#0x24]\n"                       // fixes overrides  behavior at short shutter press
123
124"               LDR     R0, [R4,#0x24] \n"
125"               CMP     R0, #0 \n"
126"               BLNE    sub_FF98AEB4 \n"
127"               B       loc_FF8834AC \n"
128
129// jump table entry 1
130// capture image
131"loc_FF883324: \n"
132"               LDRH    R1, [R4] \n"
133"               LDR     R0, [R0,#0xC] \n"
134"               SUB     R12, R1, #0x4200 \n"
135"               SUBS    R12, R12, #0x2E \n"
136"               BNE     loc_FF883340 \n"
137"               BL      sub_FF98BC9C \n"
138"               B       loc_FF8834AC \n"
139"loc_FF883340: \n"
140
141//"             BL      sub_FF98ACE0 \n"
142"               BL      sub_FF98ACE0_my \n"                                     // patched
143
144"               B       loc_FF8834AC \n"
145
146// jump table entry 2
147"loc_FF883348: \n"
148"               MOV     R0, #1 \n"
149"               BL      sub_FF883CB8 \n"
150"               B       loc_FF8834AC \n"
151
152// jump table entry 4
153"loc_FF883354: \n"
154"               BL      sub_FF88366C \n"
155"               B       loc_FF883360 \n"
156
157// jump table entry 3
158"loc_FF88335C: \n"
159"               BL      sub_FF8839B4 \n"
160"loc_FF883360: \n"
161"               STR     R6, [R4,#0x24] \n"
162"               B       loc_FF8834AC \n"
163
164// jump table entry 5
165"loc_FF883368: \n"
166"               BL      sub_FF8839BC \n"
167"               B       loc_FF8834AC \n"
168
169// jump table entry 6
170"loc_FF883370: \n"
171"               BL      sub_FF883BBC \n"
172"               B       loc_FF883388 \n"
173
174// jump table entry 7
175"loc_FF883378: \n"
176"               LDR     R0, [R0,#0xC] \n"
177"               BL      sub_FF98AF1C \n"
178"               B       loc_FF8834AC \n"
179
180// jump table entry 8
181"loc_FF883384: \n"
182"               BL      sub_FF883C28 \n"
183"loc_FF883388: \n"
184"               BL      sub_FF880B34 \n"
185"               B       loc_FF8834AC \n"
186
187// jump table entry 10
188"loc_FF883390: \n"
189"               LDR     R0, [R4,#0x54] \n"
190"               BL      sub_FF884614 \n"
191"               B       loc_FF8834AC \n"
192
193// jump table entry 11
194"loc_FF88339C: \n"
195"               BL      sub_FF884968 \n"
196"               B       loc_FF8834AC \n"
197
198// jump table entry 12
199"loc_FF8833A4: \n"
200"               BL      sub_FF8849CC \n"
201"               B       loc_FF8834AC \n"
202
203// jump table entry 9
204"loc_FF8833AC: \n"
205"               BL      sub_FF8839B4 \n"
206"               B       loc_FF8834AC \n"
207
208// jump table entry 13
209"loc_FF8833B4: \n"
210"               BL      sub_FF989FF0 \n"
211"               B       loc_FF8834AC \n"
212
213// jump table entry 14
214"loc_FF8833BC: \n"
215"               BL      sub_FF98A1FC \n"
216"               B       loc_FF8834AC \n"
217
218// jump table entry 15
219"loc_FF8833C4: \n"
220"               BL      sub_FF98A294 \n"
221"               B       loc_FF8834AC \n"
222
223// jump table entry 16
224"loc_FF8833CC: \n"
225"               BL      sub_FF98A380 \n"
226"               B       loc_FF8834AC \n"
227
228// jump table entry 17
229"loc_FF8833D4: \n"
230"               BL      sub_FF98A478 \n"
231"               B       loc_FF8834AC \n"
232
233// jump table entry 18
234"loc_FF8833DC: \n"
235"               MOV     R0, #0 \n"
236"               B       loc_FF883400 \n"
237
238// jump table entry 19
239"loc_FF8833E4: \n"
240"               BL      sub_FF98A6B4 \n"
241"               B       loc_FF8834AC \n"
242
243// jump table entry 20
244"loc_FF8833EC: \n"
245"               BL      sub_FF98A758 \n"
246"               B       loc_FF8834AC \n"
247
248// jump table entry 21
249"loc_FF8833F4: \n"
250"               BL      sub_FF98A838 \n"
251"               B       loc_FF8834AC \n"
252
253// jump table entry 22
254"loc_FF8833FC: \n"
255"               MOV     R0, #1 \n"
256"loc_FF883400: \n"
257"               BL      sub_FF98A53C \n"
258"               B       loc_FF8834AC \n"
259
260// jump table entry 23
261"loc_FF883408: \n"
262"               BL      sub_FF883EC4 \n"
263"               B       loc_FF8834AC \n"
264
265// jump table entry 24
266"loc_FF883410: \n"
267"               BL      sub_FF883F6C \n"
268"               BL      sub_FF98C1C4 \n"
269"               B       loc_FF8834AC \n"
270
271// jump table entry 25
272// gets called frequently (SsChgExpSeq.c)
273"loc_FF88341C: \n"
274"               BL      sub_FF884350 \n"
275"               B       loc_FF8834AC \n"
276
277// jump table entry 26
278"loc_FF883424: \n"
279"               BL      sub_FF884490 \n"
280"               B       loc_FF8834AC \n"
281
282// jump table entry 27
283"loc_FF88342C: \n"
284"               BL      sub_FF98C294 \n"
285"               B       loc_FF8834AC \n"
286
287// jump table entry 28
288"loc_FF883434: \n"
289"               BL      sub_FF837C6C \n"
290"               B       loc_FF8834AC \n"
291
292// jump table entry 29
293"loc_FF88343C: \n"
294"               BL      sub_FF886FE4 \n"
295"               B       loc_FF8834AC \n"
296
297// jump table entry 30
298"loc_FF883444: \n"
299"               BL      sub_FF887070 \n"
300"               B       loc_FF8834AC \n"
301
302// jump table entry 31
303"loc_FF88344C: \n"
304"               BL      sub_FF98A970 \n"
305"               B       loc_FF8834AC \n"
306
307// jump table entry 32
308"loc_FF883454: \n"
309"               BL      sub_FF98A9D4 \n"
310"               B       loc_FF8834AC \n"
311
312// jump table entry 33
313// gets called after each shot
314// live image ?
315"loc_FF88345C: \n"
316"               BL      sub_FF8870CC \n"
317"               BL      sub_FF88708C \n"
318"               B       loc_FF8834AC \n"
319
320// jump table entry 34
321"loc_FF883468: \n"
322"               MOV     R0, #1 \n"
323"               BL      sub_FF98B6C4 \n"
324"               MOV     R0, #1 \n"
325"               BL      sub_FF98B7F4 \n"
326"               LDRH    R0, [R4,#0x9C] \n"
327"               CMP     R0, #4 \n"
328"               LDRNEH  R0, [R4] \n"
329"               SUBNE   R12, R0, #0x4200 \n"
330"               SUBNES  R12, R12, #0x2A \n"
331"               BNE     loc_FF8834AC \n"
332"               BL      sub_FF887070 \n"
333"               BL      sub_FF887670 \n"
334"               BL      sub_FF8874EC \n"
335"               B       loc_FF8834AC \n"
336
337// jump table entry default
338"loc_FF8834A0: \n"
339"               LDR     R1, =0x591 \n"
340"               LDR     R0, =0xFF882CF4 \n"                             // "SsShootTask.c"
341"               BL      sub_FF81EB78 \n"                                // DebugAssert
342
343// jump table entry 35
344"loc_FF8834AC: \n"
345"               LDR     R0, [SP] \n"
346"               LDR     R1, [R0,#4] \n"
347"               LDR     R0, [R7] \n"
348"               BL      sub_FF88E1E4 \n"
349"               LDR     R5, [SP] \n"
350"               LDR     R0, [R5,#8] \n"
351"               CMP     R0, #0 \n"
352"               LDREQ   R1, =0x115 \n"
353"               LDREQ   R0, =0xFF882CF4 \n"                     // "SsShootTask.c"
354"               BLEQ    sub_FF81EB78 \n"                        // DebugAssert
355"               STR     R6, [R5,#8] \n"
356"               B       loc_FF88323C \n"
357        );
358}
359
360
361/*----------------------------------------------------------------------
362        sub_FF98ACE0_my()
363        image capture
364-----------------------------------------------------------------------*/
365void __attribute__((naked,noinline)) sub_FF98ACE0_my()
366{
367        asm volatile (
368"               STMFD   SP!, {R3-R7,LR} \n"
369
370// HDR and non-HDR modes
371// all single shots
372// all bracket
373// all contin shots
374"               LDR     R5, =0x3CFBC \n"
375"               MOV     R4, R0 \n"
376"               LDR     R0, [R5,#0x24] \n"
377"               MOV     R6, #0 \n"
378"               CMP     R0, #0 \n"
379"               BNE     loc_FF98AD1C \n"
380
381// HDR processing only
382"               MOV     R0, #0xC \n"
383"               BL      sub_FF889040 \n"
384"               TST     R0, #1 \n"
385"               MOVNE   R2, R4 \n"
386"               LDMNEFD SP!, {R3-R7,LR} \n"
387"               MOVNE   R1, #1 \n"
388"               MOVNE   R0, #1 \n"
389"               BNE     sub_FF8811F8 \n"
390// end of HDR only
391
392// HDR and non-HDR modes
393// all single shots
394// all bracket
395// all contin shots
396"loc_FF98AD1C: \n"
397"               LDR     R0, [R4,#8] \n"
398"               LDR     R7, =0x420C \n"
399"               ORR     R0, R0, #1 \n"
400"               STR     R0, [R4,#8] \n"
401"               LDRH    R0, [R5] \n"
402"               CMP     R0, R7 \n"
403"               BEQ     loc_FF98ADAC \n"                        // takes branch if HDR
404
405// non-HDR modes
406// all single shots
407// all bracket
408// all contin shots
409"               LDRH    R0, [R5,#0x9A] \n"
410"               CMP     R0, #3 \n"
411"               BEQ     loc_FF98ADF4 \n"
412
413// non-HDR modes
414// all single shots
415// all bracket
416// all contin shots
417"               LDR     R0, [R4,#0xC] \n"
418"               CMP     R0, #1 \n"
419"               BLS     loc_FF98ADB8 \n"
420
421// non-HDR modes
422// no single shots
423// 2+ bracket
424// 2+ contin shots
425"               LDRH    R0, [R5,#0x98] \n"
426"               CMP     R0, #0 \n"
427"               BNE     loc_FF98ADF4 \n"
428
429// non-HDR modes
430// no single shots
431// no bracket
432// 2+ contin shots
433"               LDRH    R0, [R5,#0x94] \n"
434"               CMP     R0, #2 \n"
435"               BNE     loc_FF98ADC4 \n"
436"               BL      sub_FF88402C \n"
437"               LDRH    R0, [R5] \n"
438"               CMP     R0, R7 \n"
439"               BEQ     loc_FF98ADAC \n"
440"               LDRH    R0, [R5,#0x9A] \n"
441"               CMP     R0, #3 \n"
442"               BEQ     loc_FF98ADF4 \n"
443"               LDR     R0, [R4,#0xC] \n"
444"               CMP     R0, #1 \n"
445"               BLS     loc_FF98ADB8 \n"
446"               LDRH    R0, [R5,#0x98] \n"
447"               CMP     R0, #0 \n"
448"               BNE     loc_FF98ADF4 \n"
449"               LDRH    R0, [R5,#0x94] \n"
450"               CMP     R0, #2 \n"
451"               BEQ     loc_FF98ADF0 \n"
452"               B       loc_FF98ADC4 \n"
453
454"loc_FF98ADAC: \n"
455// HDR proccessing only
456"               LDRH    R0, [R5,#0x9A] \n"
457"               CMP     R0, #3 \n"
458"               BEQ     loc_FF98ADF4 \n"
459
460"loc_FF98ADB8: \n"
461
462// non-HDR modes
463// single shots
464// no bracket
465// no contin
466"               LDRH    R0, [R5,#0x98] \n"
467"               CMP     R0, #0 \n"
468"               BNE     loc_FF98ADF4 \n"
469
470// non-HDR modes
471// single shots
472// no bracket
473// no contin
474"loc_FF98ADC4: \n"
475
476// non-HDR modes
477// single shots
478// no bracket
479// all contin. shots
480"               LDRH    R0, [R5,#0x94] \n"
481"               CMP     R0, #1 \n"
482"               BNE     loc_FF98ADF4 \n"
483
484// non-HDR modes
485// single shots
486// no bracket
487// all contin. shots
488"               LDRH    R0, [R5] \n"
489"               CMP     R0, R7 \n"
490"               LDRNE   R0, [R4,#0xC] \n"
491"               CMPNE   R0, #1 \n"
492"               BLS     loc_FF98ADF4 \n"
493
494// non-HDR modes
495// no single shots
496// no bracket
497// 2+ contin. shots
498"               LDR     R0, [R4,#0x10] \n"
499"               CMP     R0, #1 \n"
500"               BNE     loc_FF98ADF4 \n"
501
502// never gets here ?
503"loc_FF98ADF0: \n"
504
505// never gets here ?
506"               BL      sub_FF98C2CC \n"
507
508"loc_FF98ADF4: \n"
509
510// non-HDR modes
511// single shots
512// 2+ bracket
513// all contin
514"               BL      sub_FF98C294 \n"
515"               BL      sub_FF8839C4 \n"
516"               LDR     R0, [R5,#0x24] \n"
517"               CMP     R0, #0 \n"
518"               BNE     loc_FF98AE8C \n"
519
520// non-HDR modes
521// single shots
522// all bracket
523// all contin
524"               MOV     R0, R4 \n"
525"               BL      sub_FFAF8ECC \n"
526"               TST     R0, #1 \n"
527"               BNE     locret_FF98AEB0 \n"
528
529// non-HDR modes
530// single shots
531// all bracket
532// all contin
533"               MOV     R0, R4 \n"
534"               BL      sub_FFAF92EC \n"
535"               BL      sub_FF98B48C \n"
536"               MOV     R6, #1 \n"
537"               MOV     R0, #2 \n"
538"               BL      sub_FF87EFF8 \n"
539
540// non-HDR modes
541// single shots
542// all bracket
543// all contin
544
545"               BL      wait_until_remote_button_is_released \n"        // added
546"               BL      capt_seq_hook_set_nr \n"                                        // added
547
548"               LDRH    R0, [R5] \n"
549"               SUB     R12, R0, #0x8200 \n"
550"               SUBS    R12, R12, #0x2D \n"
551"               BNE     loc_FF98AE7C \n"
552
553// never gets here ?
554
555"               MOV     R2, #2 \n"
556"               ADD     R0, R2, #0x15C \n"
557"               MOV     R1, SP \n"
558"               STR     R6, [SP] \n"
559"               BL      sub_FF896414 \n"                                // PT_GetPropertyCaseString
560"               TST     R0, #1 \n"
561"               MOVNE   R1, #0xC3 \n"
562"               LDRNE   R0, =0xFF98AF90 \n"                     // "SsCaptureSeq.c"
563"               BLNE    sub_FF81EB78 \n"                        // DebugAssert
564"               LDRH    R0, [SP] \n"
565"               CMP     R0, #1 \n"
566"               STRHI   R6, [R4,#0xE4] \n"
567"               BHI     loc_FF98AE9C \n"
568"               MOV     R0, #0 \n"
569"               STR     R0, [R4,#0xE4] \n"
570"loc_FF98AE7C: \n"
571
572// HDR and non-HDR modes
573// single shots
574// all bracket
575// all contin
576"               MOV     R0, R4 \n"
577
578// ** the following function captures the image **
579"               BL      sub_FFAF97E0 \n"
580
581"               BL     capt_seq_hook_raw_here \n"               // added
582
583"               MOV     R6, R0 \n"
584"               B       loc_FF98AEA0 \n"
585
586"loc_FF98AE8C: \n"
587"               LDR     R0, =0x7514 \n"
588"               LDR     R0, [R0] \n"
589"               CMP     R0, #0 \n"
590"               BEQ     loc_FF98AEA0 \n"
591
592"loc_FF98AE9C: \n"
593"               MOV     R6, #0x1D \n"
594
595"loc_FF98AEA0: \n"
596"               MOV     R1, R6 \n"
597"               MOV     R0, R4 \n"
598"               LDMFD   SP!, {R3-R7,LR} \n"
599"               B       sub_FFAF8FD8 \n"
600"locret_FF98AEB0: \n"
601"               LDMFD   SP!, {R3-R7,PC} \n"
602        );
603}
604
605
606/*----------------------------------------------------------------------
607        exp_drv_task()
608-----------------------------------------------------------------------*/
609void __attribute__((naked,noinline)) exp_drv_task()
610{
611        asm volatile(
612"               STMFD   SP!, {R4-R8,LR} \n"
613"               SUB     SP, SP, #0x20 \n"
614"               LDR     R8, =0xBB8 \n"
615"               LDR     R7, =0x4888 \n"
616"               LDR     R5, =0x59818 \n"
617"               MOV     R0, #0 \n"
618"               ADD     R6, SP, #0x10 \n"
619"               STR     R0, [SP,#0x0c] \n"
620
621"loc_FF8CF1C8: \n"
622"               LDR     R0, [R7,#0x20] \n"
623"               MOV     R2, #0 \n"
624"               ADD     R1, SP, #0x1c \n"
625"               BL      sub_FF83A2F8 \n"
626"               LDR     R0, [SP,#0x0C] \n"
627"               CMP     R0, #1 \n"
628"               BNE     loc_FF8CF214 \n"
629"               LDR     R0, [SP,#0x1c] \n"
630"               LDR     R0, [R0] \n"
631"               CMP     R0, #0x14 \n"
632"               CMPNE   R0, #0x15 \n"
633"               CMPNE   R0, #0x16 \n"
634"               CMPNE   R0, #0x17 \n"
635"               BEQ     loc_FF8CF378 \n"
636"               CMP     R0, #0x29 \n"
637"               BEQ     loc_FF8CF300 \n"
638"               ADD     R1, SP, #0x0c \n"
639"               MOV     R0, #0 \n"
640"               BL      sub_FF8CF158 \n"
641
642"loc_FF8CF214: \n"
643"               LDR     R0, [SP,#0x1c] \n"
644"               LDR     R1, [R0] \n"
645"               CMP     R1, #0x2F \n"
646"               BNE     loc_FF8CF244 \n"
647"               LDR     R0, [SP,#0x1c] \n"
648"               BL      sub_FF8D053C \n"
649"               LDR     R0, [R7,#0x1C] \n"
650"               MOV     R1, #1 \n"
651"               BL      sub_FF88E1E4 \n"
652"               BL      sub_FF81EB30 \n"                        // eventproc_export_ExitTask
653"               ADD     SP, SP, #0x20 \n"
654"               LDMFD   SP!, {R4-R8,PC} \n"
655
656"loc_FF8CF244: \n"
657"               CMP     R1, #0x2E \n"
658"               BNE     loc_FF8CF260 \n"
659"               LDR     R2, [R0,#0x8C]! \n"
660"               LDR     R1, [R0,#4] \n"
661"               MOV     R0, R1 \n"
662"               BLX     R2 \n"
663"               B       loc_FF8CF824 \n"
664
665"loc_FF8CF260: \n"
666"               CMP     R1, #0x27 \n"
667"               BNE     loc_FF8CF2B0 \n"
668"               LDR     R0, [R7,#0x1C] \n"
669"               MOV     R1, #0x80 \n"
670"               BL      sub_FF88E218 \n"
671"               LDR     R0, =0xFF8CAFB4 \n"
672"               MOV     R1, #0x80 \n"
673"               BL      sub_FF97D684 \n"
674"               LDR     R0, [R7,#0x1C] \n"
675"               MOV     R2, R8 \n"
676"               MOV     R1, #0x80 \n"
677"               BL      sub_FF88E124 \n"
678"               TST     R0, #1 \n"
679"               LDRNE   R1, =0x1096 \n"
680"               BNE     loc_FF8CF36C \n"
681
682"loc_FF8CF29C: \n"
683"               LDR     R1, [SP,#0x1c] \n"
684"               LDR     R0, [R1,#0x90] \n"
685"               LDR     R1, [R1,#0x8C] \n"
686"               BLX     R1 \n"
687"               B       loc_FF8CF824 \n"
688
689"loc_FF8CF2B0: \n"
690"               CMP     R1, #0x28 \n"
691"               BNE     loc_FF8CF2F8 \n"
692"               ADD     R1, SP, #0x0c \n"
693"               BL      sub_FF8CF158 \n"
694"               LDR     R0, [R7,#0x1C] \n"
695"               MOV     R1, #0x100 \n"
696"               BL      sub_FF88E218 \n"
697"               LDR     R0, =0xFF8CAFC4 \n"
698"               MOV     R1, #0x100 \n"
699"               BL      sub_FF97E014 \n"
700"               LDR     R0, [R7,#0x1C] \n"
701"               MOV     R2, R8 \n"
702"               MOV     R1, #0x100 \n"
703"               BL      sub_FF88E124 \n"
704"               TST     R0, #1 \n"
705"               BEQ     loc_FF8CF29C \n"
706"               LDR     R1, =0x10A0 \n"
707"               B       loc_FF8CF36C \n"
708
709"loc_FF8CF2F8: \n"
710"               CMP     R1, #0x29 \n"
711"               BNE     loc_FF8CF310 \n"
712
713"loc_FF8CF300: \n"
714"               LDR     R0, [SP,#0x1c] \n"
715"               ADD     R1, SP, #0x0c \n"
716"               BL      sub_FF8CF158 \n"
717"               B       loc_FF8CF29C \n"
718
719"loc_FF8CF310: \n"
720"               CMP     R1, #0x2C \n"
721"               BNE     loc_FF8CF328 \n"
722"               BL      sub_FF8BD5E0 \n"
723"               BL      sub_FF8BE1EC \n"
724"               BL      sub_FF8BDD58 \n"
725"               B       loc_FF8CF29C \n"
726
727"loc_FF8CF328: \n"
728"               CMP     R1, #0x2D \n"
729"               BNE     loc_FF8CF378 \n"
730"               LDR     R0, [R7,#0x1C] \n"
731"               MOV     R1, #4 \n"
732"               BL      sub_FF88E218 \n"
733"               LDR     R1, =0xFF8CAFE4 \n"
734"               LDR     R0, =0xFFFFF400 \n"
735"               MOV     R2, #4 \n"
736"               BL      sub_FF8BD05C \n"
737"               BL      sub_FF8BD2E4 \n"
738"               LDR     R0, [R7,#0x1C] \n"
739"               MOV     R2, R8 \n"
740"               MOV     R1, #4 \n"
741"               BL      sub_FF88E040 \n"
742"               TST     R0, #1 \n"
743"               BEQ     loc_FF8CF29C \n"
744"               LDR     R1, =0x10C8 \n"
745
746"loc_FF8CF36C: \n"
747"               LDR     R0, =0xFF8CB66C  \n"                    // "ExpDrv.c
748"               BL      sub_FF81EB78 \n"                                // DebugAssert
749"               B       loc_FF8CF29C \n"
750
751"loc_FF8CF378: \n"
752"               LDR     R0, [SP,#0x1c] \n"
753"               MOV     R4, #1 \n"
754"               LDR     R1, [R0] \n"
755"               CMP     R1, #0x12 \n"
756"               CMPNE   R1, #0x13 \n"
757"               BNE     loc_FF8CF3E8 \n"
758"               LDR     R1, [R0,#0x7C] \n"
759"               ADD     R1, R1, R1,LSL#1 \n"
760"               ADD     R1, R0, R1,LSL#2 \n"
761"               SUB     R1, R1, #8 \n"
762"               LDMIA   R1, {R2-R4} \n"
763"               STMIA   R6, {R2-R4} \n"
764"               BL      sub_FF8CD8C0 \n"
765"               LDR     R0, [SP,#0x1c] \n"
766"               LDR     R1, [R0,#0x7C] \n"
767"               LDR     R3, [R0,#0x8C] \n"
768"               LDR     R2, [R0,#0x90] \n"
769"               ADD     R0, R0, #4 \n"
770"               BLX     R3 \n"
771"               LDR     R0, [SP,#0x1c] \n"
772"               BL      sub_FF8D0950 \n"
773"               LDR     R0, [SP,#0x1c] \n"
774"               LDR     R1, [R0,#0x7C] \n"
775"               LDR     R3, [R0,#0x94] \n"
776"               LDR     R2, [R0,#0x98] \n"
777"               ADD     R0, R0, #4 \n"
778"               BLX     R3 \n"
779"               B       loc_FF8CF760 \n"
780
781"loc_FF8CF3E8: \n"
782"               CMP     R1, #0x14 \n"
783"               CMPNE   R1, #0x15 \n"
784"               CMPNE   R1, #0x16 \n"
785"               CMPNE   R1, #0x17 \n"
786"               BNE     loc_FF8CF4A0 \n"
787"               ADD     R3, SP, #0x0c \n"
788"               MOV     R2, SP \n"
789"               ADD     R1, SP, #0x10 \n"
790"               BL      sub_FF8CDB2C \n"
791"               CMP     R0, #1 \n"
792"               MOV     R4, R0 \n"
793"               CMPNE   R4, #5 \n"
794"               BNE     loc_FF8CF43C \n"
795"               LDR     R0, [SP,#0x1c] \n"
796"               MOV     R2, R4 \n"
797"               LDR     R1, [R0,#0x7C]! \n"
798"               LDR     R12, [R0,#0x10]! \n"
799"               LDR     R3, [R0,#4] \n"
800"               MOV     R0, SP \n"
801"               BLX     R12 \n"
802"               B       loc_FF8CF474 \n"
803
804"loc_FF8CF43C: \n"
805"               LDR     R0, [SP,#0x1c] \n"
806"               CMP     R4, #2 \n"
807"               LDR     R3, [R0,#0x90] \n"
808"               CMPNE   R4, #6 \n"
809"               BNE     loc_FF8CF488 \n"
810"               LDR     R12, [R0,#0x8C] \n"
811"               MOV     R0, SP \n"
812"               MOV     R2, R4 \n"
813"               MOV     R1, #1 \n"
814"               BLX     R12 \n"
815"               LDR     R0, [SP,#0x1c] \n"
816"               MOV     R2, SP \n"
817"               ADD     R1, SP, #0x10 \n"
818"               BL      sub_FF8CEEA4 \n"
819
820"loc_FF8CF474: \n"
821"               LDR     R0, [SP,#0x1c] \n"
822"               LDR     R2, [SP,#0x0c] \n"
823"               MOV     R1, R4 \n"
824"               BL      sub_FF8CF0F8 \n"
825"               B       loc_FF8CF760 \n"
826
827"loc_FF8CF488: \n"
828"               LDR     R1, [R0,#0x7C] \n"
829"               LDR     R12, [R0,#0x8C] \n"
830"               ADD     R0, R0, #4 \n"
831"               MOV     R2, R4 \n"
832"               BLX     R12 \n"
833"               B       loc_FF8CF760 \n"
834
835"loc_FF8CF4A0: \n"
836"               CMP     R1, #0x23 \n"
837"               CMPNE   R1, #0x24 \n"
838"               BNE     loc_FF8CF540 \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   R6, {R2-R4} \n"
845"               BL      sub_FF8CC948 \n"
846"               LDR     R0, [SP,#0x1c] \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,#0x1c] \n"
853"               BL      sub_FF8CCD94 \n"
854"               B       loc_FF8CF760 \n"
855
856"loc_FF8CF540: \n"
857"               ADD     R1, R0, #4 \n"
858"               LDMIA   R1, {R2,R3,R12} \n"
859"               STMIA   R6, {R2,R3,R12} \n"
860"               LDR     R1, [R0] \n"
861"               CMP     R1, #0x26 \n"
862"               ADDLS   PC, PC, R1,LSL#2 \n"
863"               B       loc_FF8CF740 \n"
864
865"loc_FF8CF55C: \n"
866"               B       loc_FF8CF5F8 \n"
867
868"loc_FF8CF560: \n"
869"               B       loc_FF8CF5F8 \n"
870
871"loc_FF8CF564: \n"
872"               B       loc_FF8CF600 \n"
873
874"loc_FF8CF568: \n"
875"               B       loc_FF8CF608 \n"
876
877"loc_FF8CF56C: \n"
878"               B       loc_FF8CF608 \n"
879
880"loc_FF8CF570: \n"
881"               B       loc_FF8CF608 \n"
882
883"loc_FF8CF574: \n"
884"               B       loc_FF8CF5F8 \n"
885
886"loc_FF8CF578: \n"
887"               B       loc_FF8CF600 \n"
888
889"loc_FF8CF57C: \n"
890"               B       loc_FF8CF608 \n"
891
892"loc_FF8CF580: \n"
893"               B       loc_FF8CF608 \n"
894
895"loc_FF8CF584: \n"
896"               B       loc_FF8CF620 \n"
897
898"loc_FF8CF588: \n"
899"               B       loc_FF8CF620 \n"
900
901"loc_FF8CF58C: \n"
902"               B       loc_FF8CF72C \n"
903
904"loc_FF8CF590: \n"
905"               B       loc_FF8CF734 \n"
906
907"loc_FF8CF594: \n"
908"               B       loc_FF8CF734 \n"
909
910"loc_FF8CF598: \n"
911"               B       loc_FF8CF734 \n"
912
913"loc_FF8CF59C: \n"
914"               B       loc_FF8CF734 \n"
915
916"loc_FF8CF5A0: \n"
917"               B       loc_FF8CF73C \n"
918
919"loc_FF8CF5A4: \n"
920"               B       loc_FF8CF740 \n"
921
922"loc_FF8CF5A8: \n"
923"               B       loc_FF8CF740 \n"
924
925"loc_FF8CF5AC: \n"
926"               B       loc_FF8CF740 \n"
927
928"loc_FF8CF5B0: \n"
929"               B       loc_FF8CF740 \n"
930
931"loc_FF8CF5B4: \n"
932"               B       loc_FF8CF740 \n"
933
934"loc_FF8CF5B8: \n"
935"               B       loc_FF8CF740 \n"
936
937"loc_FF8CF5BC: \n"
938"               B       loc_FF8CF610 \n"
939
940"loc_FF8CF5C0: \n"
941"               B       loc_FF8CF618 \n"
942
943"loc_FF8CF5C4: \n"
944"               B       loc_FF8CF618 \n"
945
946"loc_FF8CF5C8: \n"
947"               B       loc_FF8CF62C \n"
948
949"loc_FF8CF5CC: \n"
950"               B       loc_FF8CF62C \n"
951
952"loc_FF8CF5D0: \n"
953"               B       loc_FF8CF634 \n"
954
955"loc_FF8CF5D4: \n"
956"               B       loc_FF8CF66C \n"
957
958"loc_FF8CF5D8: \n"
959"               B       loc_FF8CF6A4 \n"
960
961"loc_FF8CF5DC: \n"
962"               B       loc_FF8CF6DC \n"
963
964"loc_FF8CF5E0: \n"
965"               B       loc_FF8CF714 \n"
966
967"loc_FF8CF5E4: \n"
968"               B       loc_FF8CF714 \n"
969
970"loc_FF8CF5E8: \n"
971"               B       loc_FF8CF740 \n"
972
973"loc_FF8CF5EC: \n"
974"               B       loc_FF8CF740 \n"
975
976"loc_FF8CF5F0: \n"
977"               B       loc_FF8CF71C \n"
978
979"loc_FF8CF5F4: \n"
980"               B       loc_FF8CF724 \n"
981
982"loc_FF8CF5F8: \n"
983// jumptable FF8CF554 entries 0,1,6
984"               BL      sub_FF8CB4F4 \n"
985"               B       loc_FF8CF740 \n"
986
987"loc_FF8CF600: \n"
988// jumptable FF8CF554 entries 2,7
989"               BL      sub_FF8CB790 \n"
990"               B       loc_FF8CF740 \n"
991
992"loc_FF8CF608: \n"
993// jumptable FF8CF554 entries 3-5,8,9
994"               BL      sub_FF8CB9B8 \n"
995"               B       loc_FF8CF740 \n"
996
997"loc_FF8CF610: \n"
998// jumptable FF8CF554 entry 24
999"               BL      sub_FF8CBC90 \n"
1000"               B       loc_FF8CF740 \n"
1001
1002"loc_FF8CF618: \n"
1003// jumptable FF8CF554 entries 25,26
1004"               BL      sub_FF8CBEA8 \n"
1005"               B       loc_FF8CF740 \n"
1006
1007"loc_FF8CF620: \n"
1008// jumptable FF8CF554 entries 10,11
1009
1010//"             BL      sub_FF8CC1CC \n"
1011"               BL      sub_FF8CC1CC_my \n"                             // patched
1012
1013"               MOV     R4, #0 \n"
1014"               B       loc_FF8CF740 \n"
1015
1016"loc_FF8CF62C: \n"
1017// jumptable FF8CF554 entries 27,28
1018"               BL      sub_FF8CC314 \n"
1019"               B       loc_FF8CF740 \n"
1020
1021"loc_FF8CF634: \n"
1022// jumptable FF8CF554 entry 29
1023"               LDRH    R1, [R0,#4] \n"
1024"               STRH    R1, [SP,#0x10] \n"
1025"               LDRH    R1, [R5,#2] \n"
1026"               STRH    R1, [SP,#0x12] \n"
1027"               LDRH    R1, [R5,#4] \n"
1028"               STRH    R1, [SP,#0x14] \n"
1029"               LDRH    R1, [R5,#6] \n"
1030"               STRH    R1, [SP,#0x16] \n"
1031"               LDRH    R1, [R0,#0xC] \n"
1032"               STRH    R1, [SP,#0x18] \n"
1033"               LDRH    R1, [R5,#0xA] \n"
1034"               STRH    R1, [SP,#0x1a] \n"
1035"               BL      sub_FF8D0648 \n"
1036"               B       loc_FF8CF740 \n"
1037
1038"loc_FF8CF66C: \n"
1039// jumptable FF8CF554 entry 30
1040"               LDRH    R1, [R0,#4] \n"
1041"               STRH    R1, [SP,#0x10] \n"
1042"               LDRH    R1, [R5,#2] \n"
1043"               STRH    R1, [SP,#0x12] \n"
1044"               LDRH    R1, [R5,#4] \n"
1045"               STRH    R1, [SP,#0x14] \n"
1046"               LDRH    R1, [R5,#6] \n"
1047"               STRH    R1, [SP,#0x16] \n"
1048"               LDRH    R1, [R5,#8] \n"
1049"               STRH    R1, [SP,#0x18] \n"
1050"               LDRH    R1, [R5,#0xA] \n"
1051"               STRH    R1, [SP,#0x1a] \n"
1052"               BL      sub_FF8D0750 \n"
1053"               B       loc_FF8CF740 \n"
1054
1055"loc_FF8CF6A4: \n"
1056// jumptable FF8CF554 entry 31
1057"               LDRH    R1, [R5] \n"
1058"               STRH    R1, [SP,#0x10] \n"
1059"               LDRH    R1, [R0,#6] \n"
1060"               STRH    R1, [SP,#0x12] \n"
1061"               LDRH    R1, [R5,#4] \n"
1062"               STRH    R1, [SP,#0x14] \n"
1063"               LDRH    R1, [R5,#6] \n"
1064"               STRH    R1, [SP,#0x16] \n"
1065"               LDRH    R1, [R5,#8] \n"
1066"               STRH    R1, [SP,#0x18] \n"
1067"               LDRH    R1, [R5,#0xA] \n"
1068"               STRH    R1, [SP,#0x1a] \n"
1069"               BL      sub_FF8D0804 \n"
1070"               B       loc_FF8CF740 \n"
1071
1072"loc_FF8CF6DC: \n"
1073// jumptable FF8CF554 entry 32
1074"               LDRH    R1, [R5] \n"
1075"               STRH    R1, [SP,#0x10] \n"
1076"               LDRH    R1, [R5,#2] \n"
1077"               STRH    R1, [SP,#0x12] \n"
1078"               LDRH    R1, [R5,#4] \n"
1079"               STRH    R1, [SP,#0x14] \n"
1080"               LDRH    R1, [R5,#6] \n"
1081"               STRH    R1, [SP,#0x16] \n"
1082"               LDRH    R1, [R0,#0xC] \n"
1083"               STRH    R1, [SP,#0x18] \n"
1084"               LDRH    R1, [R5,#0xA] \n"
1085"               STRH    R1, [SP,#0x1a] \n"
1086"               BL      sub_FF8D08AC \n"
1087"               B       loc_FF8CF740 \n"
1088
1089"loc_FF8CF714: \n"
1090// jumptable FF8CF554 entries 33,34
1091"               BL      sub_FF8CC720 \n"
1092"               B       loc_FF8CF740 \n"
1093
1094"loc_FF8CF71C: \n"
1095// jumptable FF8CF554 entry 37
1096"               BL      sub_FF8CCE98 \n"
1097"               B       loc_FF8CF740 \n"
1098
1099"loc_FF8CF724: \n"
1100// jumptable FF8CF554 entry 38
1101"               BL      sub_FF8CD134 \n"
1102"               B       loc_FF8CF740 \n"
1103
1104"loc_FF8CF72C: \n"
1105// jumptable FF8CF554 entry 12
1106"               BL      sub_FF8CD314 \n"
1107"               B       loc_FF8CF740 \n"
1108
1109"loc_FF8CF734: \n"
1110// jumptable FF8CF554 entries 13-16
1111"               BL      sub_FF8CD548 \n"
1112"               B       loc_FF8CF740 \n"
1113
1114"loc_FF8CF73C: \n"
1115// jumptable FF8CF554 entry 17
1116"               BL      sub_FF8CD6B8 \n"
1117
1118"loc_FF8CF740: \n"
1119// jumptable FF8CF554 default entry
1120// jumptable FF8CF554 entries 18-23,35,36
1121"               LDR     R0, [SP,#0x1c] \n"
1122"               LDR     R1, [R0,#0x7C] \n"
1123"               LDR     R3, [R0,#0x8C] \n"
1124"               LDR     R2, [R0,#0x90] \n"
1125"               ADD     R0, R0, #4 \n"
1126"               BLX     R3 \n"
1127"               CMP     R4, #1 \n"
1128"               BNE     loc_FF8CF7A8 \n"
1129
1130"loc_FF8CF760: \n"
1131"               LDR     R0, [SP,#0x1c] \n"
1132"               MOV     R2, #0xC \n"
1133"               LDR     R1, [R0,#0x7C] \n"
1134"               ADD     R1, R1, R1,LSL#1 \n"
1135"               ADD     R0, R0, R1,LSL#2 \n"
1136"               SUB     R4, R0, #8 \n"
1137"               LDR     R0, =0x59818 \n"
1138"               ADD     R1, SP, #0x10 \n"
1139"               BL      sub_FFB9EF24 \n"
1140"               LDR     R0, =0x59824 \n"
1141"               MOV     R2, #0xC \n"
1142"               ADD     R1, SP, #0x10 \n"
1143"               BL      sub_FFB9EF24 \n"
1144"               LDR     R0, =0x59830 \n"
1145"               MOV     R2, #0xC \n"
1146"               MOV     R1, R4 \n"
1147"               BL      sub_FFB9EF24 \n"
1148"               B       loc_FF8CF824 \n"
1149
1150"loc_FF8CF7A8: \n"
1151"               LDR     R0, [SP,#0x1c] \n"
1152"               MOV     R3, #1 \n"
1153"               LDR     R0, [R0] \n"
1154"               CMP     R0, #0xB \n"
1155"               BNE     loc_FF8CF7F0 \n"
1156"               MOV     R2, #0 \n"
1157"               STRD    R2, [SP] \n"
1158"               MOV     R2, #1 \n"
1159"               MOV     R1, #1 \n"
1160"               MOV     R0, #0 \n"
1161"               BL      sub_FF8CB2D4 \n"
1162"               MOV     R3, #1 \n"
1163"               MOV     R2, #0 \n"
1164"               STRD    R2, [SP] \n"
1165"               MOV     R2, #1 \n"
1166"               MOV     R1, #1 \n"
1167"               MOV     R0, #0 \n"
1168"               B       loc_FF8CF820 \n"
1169
1170"loc_FF8CF7F0: \n"
1171"               MOV     R2, #1 \n"
1172"               STRD    R2, [SP] \n"
1173"               MOV     R3, #1 \n"
1174"               MOV     R1, #1 \n"
1175"               MOV     R0, #1 \n"
1176"               BL      sub_FF8CB2D4 \n"
1177"               MOV     R3, #1 \n"
1178"               MOV     R2, #1 \n"
1179"               MOV     R1, #1 \n"
1180"               MOV     R0, #1 \n"
1181"               STR     R3, [SP] \n"
1182"               STR     R3, [SP,#0x04] \n"
1183
1184"loc_FF8CF820: \n"
1185"               BL      sub_FF8CB43C \n"
1186
1187"loc_FF8CF824: \n"
1188"               LDR     R0, [SP,#0x1c] \n"
1189"               BL      sub_FF8D053C \n"
1190"               B       loc_FF8CF1C8 \n"
1191        );
1192}
1193
1194
1195/*----------------------------------------------------------------------
1196        sub_FF8CC1CC_my()
1197-----------------------------------------------------------------------*/
1198void __attribute__((naked,noinline)) sub_FF8CC1CC_my()
1199{
1200        asm volatile (
1201"               STMFD   SP!, {R4-R8,LR} \n"
1202"               LDR     R7, =0x4888 \n"
1203"               MOV     R4, R0 \n"
1204"               LDR     R0, [R7,#0x1C] \n"
1205"               MOV     R1, #0x3E \n"
1206"               BL      sub_FF88E218 \n"
1207"               LDRSH   R0, [R4,#4] \n"
1208"               MOV     R2, #0 \n"
1209"               MOV     R1, #0 \n"
1210"               BL      sub_FF8CB038 \n"
1211"               MOV     R5, R0 \n"
1212"               LDRSH   R0, [R4,#6] \n"
1213"               BL      sub_FF8CB148 \n"
1214"               LDRSH   R0, [R4,#8] \n"
1215"               BL      sub_FF8CB1A0 \n"
1216"               LDRSH   R0, [R4,#0xA] \n"
1217"               BL      sub_FF8CB1F8 \n"
1218"               LDRSH   R0, [R4,#0xC] \n"
1219"               MOV     R1, #0 \n"
1220"               BL      sub_FF8CB250 \n"
1221"               MOV     R6, R0 \n"
1222"               LDRSH   R0, [R4,#0xE] \n"
1223"               BL      sub_FF8D05E8 \n"
1224"               LDR     R0, [R4] \n"
1225"               LDR     R8, =0x59830 \n"
1226"               CMP     R0, #0xB \n"
1227"               MOVEQ   R5, #0 \n"
1228"               MOVEQ   R6, #0 \n"
1229"               BEQ     loc_FF8CC268 \n"
1230"               CMP     R5, #1 \n"
1231"               BNE     loc_FF8CC268 \n"
1232"               LDRSH   R0, [R4,#4] \n"
1233"               LDR     R1, =0xFF8CAFA4 \n"
1234"               MOV     R2, #2 \n"
1235"               BL      sub_FF97D9D0 \n"
1236"               STRH    R0, [R4,#4] \n"
1237"               MOV     R0, #0 \n"
1238"               STR     R0, [R7,#0x28] \n"
1239"               B       loc_FF8CC270 \n"
1240
1241"loc_FF8CC268: \n"
1242"               LDRH    R0, [R8] \n"
1243"               STRH    R0, [R4,#4] \n"
1244
1245"loc_FF8CC270: \n"
1246"               CMP     R6, #1 \n"
1247"               LDRNEH  R0, [R8,#8] \n"
1248"               BNE     loc_FF8CC28C \n"
1249"               LDRSH   R0, [R4,#0xC] \n"
1250"               LDR     R1, =0xFF8CB028 \n"
1251"               MOV     R2, #0x20 \n"
1252"               BL      sub_FF8D0604 \n"
1253
1254"loc_FF8CC28C: \n"
1255"               STRH    R0, [R4,#0xC] \n"
1256"               LDRSH   R0, [R4,#6] \n"
1257
1258//"             BL      sub_FF8BD350 \n"
1259"               BL      sub_FF8BD350_my \n"                             // patched
1260
1261"               LDRSH   R0, [R4,#8] \n"
1262"               MOV     R1, #1 \n"
1263"               BL      sub_FF8BDAA0 \n"
1264"               MOV     R1, #0 \n"
1265"               ADD     R0, R4, #8 \n"
1266"               BL      sub_FF8BDB28 \n"
1267"               LDRSH   R0, [R4,#0xE] \n"
1268"               BL      sub_FF8C5F98 \n"
1269"               LDR     R4, =0xBB8 \n"
1270"               CMP     R5, #1 \n"
1271"               BNE     loc_FF8CC2E4 \n"
1272"               LDR     R0, [R7,#0x1C] \n"
1273"               MOV     R2, R4 \n"
1274"               MOV     R1, #2 \n"
1275"               BL      sub_FF88E124 \n"
1276"               TST     R0, #1 \n"
1277"               LDRNE   R1, =0x61E \n"
1278"               LDRNE   R0, =0xFF8CB66C \n"             // "ExpDrv.c"
1279"               BLNE    sub_FF81EB78 \n"                // DebugAssert
1280
1281"loc_FF8CC2E4: \n"
1282"               CMP     R6, #1 \n"
1283"               LDMNEFD SP!, {R4-R8,PC} \n"
1284"               LDR     R0, [R7,#0x1C] \n"
1285"               MOV     R2, R4 \n"
1286"               MOV     R1, #0x20 \n"
1287"               BL      sub_FF88E124 \n"
1288"               TST     R0, #1 \n"
1289"               LDRNE   R1, =0x623 \n"
1290"               LDRNE   R0, =0xFF8CB66C \n"             // "ExpDrv.c"
1291"               LDMNEFD SP!, {R4-R8,LR} \n"
1292"               BNE     sub_FF81EB78 \n"                        // DebugAssert
1293"               LDMFD   SP!, {R4-R8,PC} \n"
1294        );
1295}
1296
1297
1298/*----------------------------------------------------------------------
1299        sub_FF8BD350_my()
1300-----------------------------------------------------------------------*/
1301void __attribute__((naked,noinline)) sub_FF8BD350_my() {
1302        asm volatile (
1303"               STMFD   SP!, {R4-R6,LR} \n"
1304"               LDR     R5, =0x456C \n"
1305"               MOV     R4, R0 \n"
1306"               LDR     R0, [R5,#4] \n"
1307"               CMP     R0, #1 \n"
1308"               LDRNE   R1, =0x146 \n"
1309"               LDRNE   R0, =0xFF8BD154 \n"             // "Shutter.c"
1310"               BLNE    sub_FF81EB78 \n"                // DebugAssert
1311"               CMN     R4, #0xC00 \n"
1312"               LDREQSH R4, [R5,#2] \n"
1313"               CMN     R4, #0xC00 \n"
1314"               MOVEQ   R1, #0x14C \n"
1315"               LDREQ   R0, =0xFF8BD154 \n"             // "Shutter.c"
1316"               STRH    R4, [R5,#2] \n"
1317"               BLEQ    sub_FF81EB78 \n"                // DebugAssert
1318"               MOV     R0, R4 \n"
1319
1320//"             BL      sub_FFA50D88 \n"
1321"               BL      apex2us \n"                             // patched
1322
1323"               MOV     R4, R0 \n"
1324"               BL      sub_FF90988C \n"                        // nullsub_203
1325"               MOV     R0, R4 \n"
1326"               BL      sub_FF9162BC \n"
1327"               TST     R0, #1 \n"
1328"               LDRNE   R1, =0x151 \n"
1329"               LDMNEFD SP!, {R4-R6,LR} \n"
1330"               LDRNE   R0, =0xFF8BD154 \n"             // "Shutter.c"
1331"               BNE     sub_FF81EB78 \n"                        // DebugAssert
1332"               LDMFD   SP!, {R4-R6,PC} \n"
1333        );
1334}
Note: See TracBrowser for help on using the repository browser.