source: branches/release-1_0/platform/a3300/sub/100a/capt_seq.c @ 1551

Revision 1551, 24.2 KB checked in by philmoz, 16 months ago (diff)

Add A3300 firmware 1.00a (from mk11174 and waterwingz)
http://chdk.setepontos.com/index.php?topic=650.msg79808#msg79808

  • Property svn:eol-style set to native
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4#include "conf.h"
5#include "stdlib.h"
6#define LED_AF 0xC02200F4
7static long *nrflag = (long*)(0x6B40+0x8); // FF9716F0 + FF97177C  a3300is
8#define NR_AUTO (0)                         // have to explictly reset value back to 0 to enable auto
9#define PAUSE_FOR_FILE_COUNTER 100          // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated
10#include "../../../generic/capt_seq.c"
11
12//** capt_seq_task  @ 0xFF87AB40
13
14void __attribute__((naked,noinline)) capt_seq_task(  ) {
15asm volatile (
16"    STMFD   SP!, {R3-R9,LR} \n"
17"    LDR     R5, =0x3A29C \n"
18"    LDR     R7, =0x2B90 \n"
19"    MOV     R6, #0 \n"
20"loc_FF87AB50:\n"
21"    LDR     R0, [R7, #4] \n"
22"    MOV     R2, #0 \n"
23"    MOV     R1, SP \n"
24"    BL      sub_FF839BD8 \n"
25"    TST     R0, #1 \n"
26"    BEQ     loc_FF87AB7C \n"
27"    LDR     R1, =0x476 \n"
28"    LDR     R0, =0xFF87A6E0 \n"
29"    BL      sub_FF81EC88 \n"
30"    BL      sub_FF81EC40 \n"
31"    LDMFD   SP!, {R3-R9,PC} \n"
32"loc_FF87AB7C:\n"
33"    LDR     R0, [SP] \n"
34"    LDR     R1, [R0] \n"
35"    CMP     R1, #0x20 \n"
36"    ADDCC   PC, PC, R1, LSL #2 \n"
37"    B       loc_FF87AD9C \n"
38"    B       loc_FF87AC10 \n"
39"    B       loc_FF87AC28 \n"
40"    B       loc_FF87AC54 \n"
41"    B       loc_FF87AC68 \n"
42"    B       loc_FF87AC60 \n"
43"    B       loc_FF87AC74 \n"
44"    B       loc_FF87AC7C \n"
45"    B       loc_FF87AC84 \n"
46"    B       loc_FF87ACA0 \n"
47"    B       loc_FF87ACC8 \n"
48"    B       loc_FF87ACAC \n"
49"    B       loc_FF87ACB8 \n"
50"    B       loc_FF87ACC0 \n"
51"    B       loc_FF87ACD0 \n"
52"    B       loc_FF87ACD8 \n"
53"    B       loc_FF87ACE0 \n"
54"    B       loc_FF87ACE8 \n"
55"    B       loc_FF87ACF0 \n"
56"    B       loc_FF87ACFC \n"
57"    B       loc_FF87AD04 \n"
58"    B       loc_FF87AD0C \n"
59"    B       loc_FF87AD14 \n"
60"    B       loc_FF87AD1C \n"
61"    B       loc_FF87AD28 \n"
62"    B       loc_FF87AD30 \n"
63"    B       loc_FF87AD38 \n"
64"    B       loc_FF87AD40 \n"
65"    B       loc_FF87AD48 \n"
66"    B       loc_FF87AD50 \n"
67"    B       loc_FF87AD58 \n"
68"    B       loc_FF87AD64 \n"
69"    B       loc_FF87ADA8 \n"
70"loc_FF87AC10:\n"
71"        BL             shooting_expo_iso_override \n"          // added
72"    BL      sub_FF87B320 \n"
73"        BL             shooting_expo_param_override \n"        // added
74"    BL      sub_FF87876C \n"
75"    LDR     R0, [R5, #0x28] \n"
76"    CMP     R0, #0 \n"
77"    BLNE    sub_FF96F034 \n"
78"    B       loc_FF87ADA8 \n"
79"loc_FF87AC28:\n"
80"    LDR     R8, [R0, #0xC] \n"
81"    MOV     R0, R8 \n"
82"    BL      sub_FF96EF54_my \n"
83"        BL             capt_seq_hook_raw_here \n"              // added
84"    MOV     R4, R0 \n"
85"    MOV     R2, R8 \n"
86"    MOV     R1, #1 \n"
87"    BL      sub_FF878D60 \n"
88"    TST     R4, #1 \n"
89"    MOVEQ   R0, R8 \n"
90"    BLEQ    sub_FF96E9F4 \n"
91"    B       loc_FF87ADA8 \n"
92"loc_FF87AC54:\n"
93"    MOV     R0, #1 \n"
94"    BL      sub_FF87B5C0 \n"
95"    B       loc_FF87ADA8 \n"
96"loc_FF87AC60:\n"
97"    BL      sub_FF87AFB4 \n"
98"    B       loc_FF87AC6C \n"
99"loc_FF87AC68:\n"
100"    BL      sub_FF87B300 \n"
101"loc_FF87AC6C:\n"
102"    STR     R6, [R5, #0x28] \n"
103"    B       loc_FF87ADA8 \n"
104"loc_FF87AC74:\n"
105"    BL      sub_FF87B308 \n"
106"    B       loc_FF87ADA8 \n"
107"loc_FF87AC7C:\n"
108"    BL      sub_FF87B4D4 \n"
109"    B       loc_FF87ACA4 \n"
110"loc_FF87AC84:\n"
111"    LDR     R4, [R0, #0xC] \n"
112"    MOV     R0, R4 \n"
113"    BL      sub_FF96F088 \n"
114"    MOV     R2, R4 \n"
115"    MOV     R1, #9 \n"
116"    BL      sub_FF878D60 \n"
117"    B       loc_FF87ADA8 \n"
118"loc_FF87ACA0:\n"
119"    BL      sub_FF87B538 \n"
120"loc_FF87ACA4:\n"
121"    BL      sub_FF87876C \n"
122"    B       loc_FF87ADA8 \n"
123"loc_FF87ACAC:\n"
124"    LDR     R0, [R5, #0x58] \n"
125"    BL      sub_FF87BA04 \n"
126"    B       loc_FF87ADA8 \n"
127"loc_FF87ACB8:\n"
128"    BL      sub_FF87BD7C \n"
129"    B       loc_FF87ADA8 \n"
130"loc_FF87ACC0:\n"
131"    BL      sub_FF87BDE0 \n"
132"    B       loc_FF87ADA8 \n"
133"loc_FF87ACC8:\n"
134"    BL      sub_FF87B300 \n"
135"    B       loc_FF87ADA8 \n"
136"loc_FF87ACD0:\n"
137"    BL      sub_FF96DDFC \n"
138"    B       loc_FF87ADA8 \n"
139"loc_FF87ACD8:\n"
140"    BL      sub_FF96E008 \n"
141"    B       loc_FF87ADA8 \n"
142"loc_FF87ACE0:\n"
143"    BL      sub_FF96E0AC \n"
144"    B       loc_FF87ADA8 \n"
145"loc_FF87ACE8:\n"
146"    BL      sub_FF96E17C \n"
147"    B       loc_FF87ADA8 \n"
148"loc_FF87ACF0:\n"
149"    MOV     R0, #0 \n"
150"    BL      sub_FF96E384 \n"
151"    B       loc_FF87ADA8 \n"
152"loc_FF87ACFC:\n"
153"    BL      sub_FF96E4FC \n"
154"    B       loc_FF87ADA8 \n"
155"loc_FF87AD04:\n"
156"    BL      sub_FF96E5A0 \n"
157"    B       loc_FF87ADA8 \n"
158"loc_FF87AD0C:\n"
159"    BL      sub_FF96E680 \n"
160"    B       loc_FF87ADA8 \n"
161"loc_FF87AD14:\n"
162"    BL      sub_FF87B72C \n"
163"    B       loc_FF87ADA8 \n"
164"loc_FF87AD1C:\n"
165"    BL      sub_FF87B758 \n"
166"    BL      sub_FF837AA8 \n"
167"    B       loc_FF87ADA8 \n"
168"loc_FF87AD28:\n"
169"    BL      sub_FF96E240 \n"
170"    B       loc_FF87ADA8 \n"
171"loc_FF87AD30:\n"
172"    BL      sub_FF96E280 \n"
173"    B       loc_FF87ADA8 \n"
174"loc_FF87AD38:\n"
175"    BL      sub_FF87E0E8 \n"
176"    B       loc_FF87ADA8 \n"
177"loc_FF87AD40:\n"
178"    BL      sub_FF87E158 \n"
179"    B       loc_FF87ADA8 \n"
180"loc_FF87AD48:\n"
181"    BL      sub_FF96E7B8 \n"
182"    B       loc_FF87ADA8 \n"
183"loc_FF87AD50:\n"
184"    BL      sub_FF96E81C \n"
185"    B       loc_FF87ADA8 \n"
186"loc_FF87AD58:\n"
187"    BL      sub_FF87E1B4 \n"
188"    BL      sub_FF87E174 \n"
189"    B       loc_FF87ADA8 \n"
190"loc_FF87AD64:\n"
191"    MOV     R0, #1 \n"
192"    BL      sub_FF96F800 \n"
193"    MOV     R0, #1 \n"
194"    BL      sub_FF96F928 \n"
195"    LDRH    R0, [R5, #0x98] \n"
196"    CMP     R0, #4 \n"
197"    LDRNEH  R0, [R5] \n"
198"    SUBNE   R1, R0, #0x4200 \n"
199"    SUBNES  R1, R1, #0x2A \n"
200"    BNE     loc_FF87ADA8 \n"
201"    BL      sub_FF87E158 \n"
202"    BL      sub_FF87E758 \n"
203"    BL      sub_FF87E5D8 \n"
204"    B       loc_FF87ADA8 \n"
205"loc_FF87AD9C:\n"
206"    LDR     R1, =0x5D7 \n"
207"    LDR     R0, =0xFF87A6E0 \n"
208"    BL      sub_FF81EC88 \n"
209"loc_FF87ADA8:\n"
210"    LDR     R0, [SP] \n"
211"    LDR     R1, [R0, #4] \n"
212"    LDR     R0, [R7] \n"
213"    BL      sub_FF884D84 \n"
214"    LDR     R4, [SP] \n"
215"    LDR     R0, [R4, #8] \n"
216"    CMP     R0, #0 \n"
217"    LDREQ   R0, =0xFF87A6E0 \n"
218"    MOVEQ   R1, #0x118 \n"
219"    BLEQ    sub_FF81EC88 \n"
220"    STR     R6, [R4, #8] \n"
221"    B       loc_FF87AB50 \n"
222"    STMFD   SP!, {R3-R5,LR} \n"
223"    LDR     R2, =0x3A1D0 \n"
224"    MOV     R0, #0 \n"
225        );
226}
227
228
229//** sub_FF96EF54_my  @ 0xFF96EF54
230
231void __attribute__((naked,noinline)) sub_FF96EF54_my(  ) {
232asm volatile (
233"    STMFD   SP!, {R3-R7,LR} \n"
234"    LDR     R6, =0x3A29C \n"
235"    MOV     R5, R0 \n"
236"    LDR     R0, [R6, #0x28] \n"
237"    MOV     R4, #0 \n"
238"    CMP     R0, #0 \n"
239"    BNE     loc_FF96EF84 \n"
240"    MOV     R0, #0xC \n"
241"    BL      sub_FF87FC6C \n"
242"    TST     R0, #1 \n"
243"    MOVNE   R0, #1 \n"
244"    BNE     loc_FF96F030 \n"
245"loc_FF96EF84:\n"
246"    BL      sub_FF87B310 \n"
247"    LDR     R0, [R6, #0x28] \n"
248"    CMP     R0, #0 \n"
249"    BNE     loc_FF96F018 \n"
250"    MOV     R0, R5 \n"
251"    BL      sub_FF96E908 \n"
252"    TST     R0, #1 \n"
253"    BNE     loc_FF96F030 \n"
254"    MOV     R0, R5 \n"
255"    BL      sub_FF96EC7C \n"
256"    BL      sub_FF96F5DC \n"
257"    MOV     R4, #1 \n"
258"    MOV     R0, #2 \n"
259"    BL      sub_FF88142C \n"
260"        BL             wait_until_remote_button_is_released \n"                // added
261"        BL             capt_seq_hook_set_nr \n"                                                // added
262"    LDRH    R0, [R6] \n"
263"    SUB     R1, R0, #0x8200 \n"
264"    SUBS    R1, R1, #0x2D \n"
265"    BNE     loc_FF96F008 \n"
266"    MOV     R2, #2 \n"
267"    MOV     R1, SP \n"
268"    ADD     R0, R2, #0x15C \n"
269"    STR     R4, [SP] \n"
270"    BL      sub_FF88CFAC \n"
271"    TST     R0, #1 \n"
272"    MOVNE   R1, #0xBC \n"
273"    LDRNE   R0, =0xFF96F0E0 \n"
274"    BLNE    sub_FF81EC88 \n"
275"    LDRH    R0, [SP] \n"
276"    CMP     R0, #1 \n"
277"    STRHI   R4, [R5, #0xD4] \n"
278"    BHI     loc_FF96F028 \n"
279"    MOV     R0, #0 \n"
280"    STR     R0, [R5, #0xD4] \n"
281"loc_FF96F008:\n"
282"    MOV     R0, R5 \n"
283"    BL      sub_FFAB588C \n"
284"    MOV     R4, R0 \n"
285"    B       loc_FF96F02C \n"
286"loc_FF96F018:\n"
287"    LDR     R0, =0x6AEC \n"
288"    LDR     R0, [R0] \n"
289"    CMP     R0, #0 \n"
290"    BEQ     loc_FF96F02C \n"
291"loc_FF96F028:\n"
292"    MOV     R4, #0x1D \n"
293"loc_FF96F02C:\n"
294"    MOV     R0, R4 \n"
295"loc_FF96F030:\n"
296"    LDMFD   SP!, {R3-R7,PC} \n"
297"    STMFD   SP!, {R4-R6,LR} \n"
298"    BL      sub_FF87A3BC \n"
299        );
300}
301
302//** exp_drv_task  @ 0xFF8BE3EC
303
304void __attribute__((naked,noinline)) exp_drv_task(  ) {
305asm volatile (
306"    STMFD   SP!, {R4-R9,LR} \n"
307"    SUB     SP, SP, #0x24 \n"
308"    LDR     R6, =0x3EB0 \n"
309"    LDR     R7, =0xBB8 \n"
310"    LDR     R4, =0x55794 \n"
311"    MOV     R0, #0 \n"
312"    ADD     R5, SP, #0x14 \n"
313"    STR     R0, [SP, #0x10] \n"
314"    LDR     R0, [R6, #0x20] \n"
315"    MOV     R2, #0 \n"
316"    ADD     R1, SP, #0x20 \n"
317"    BL      sub_FF839BD8 \n"
318"    LDR     R0, [SP, #0x10] \n"
319"    CMP     R0, #1 \n"
320"    BNE     loc_FF8BE458 \n"
321"    LDR     R0, [SP, #0x20] \n"
322"    LDR     R0, [R0] \n"
323"    CMP     R0, #0x14 \n"
324"    CMPNE   R0, #0x15 \n"
325"    CMPNE   R0, #0x16 \n"
326"    CMPNE   R0, #0x17 \n"
327"    BEQ     loc_FF8BE5B8 \n"
328"    CMP     R0, #0x29 \n"
329"    BEQ     loc_FF8BE540 \n"
330"    ADD     R1, SP, #0x10 \n"
331"    MOV     R0, #0 \n"
332"    BL      sub_FF8BE39C \n"
333"loc_FF8BE458:\n"
334"    LDR     R0, [SP, #0x20] \n"
335"    LDR     R1, [R0] \n"
336"    CMP     R1, #0x2F \n"
337"    BNE     loc_FF8BE484 \n"
338"    BL      sub_FF8BF888 \n"
339"    LDR     R0, [R6, #0x1C] \n"
340"    MOV     R1, #1 \n"
341"    BL      sub_FF884D84 \n"
342"    BL      sub_FF81EC40 \n"
343"    ADD     SP, SP, #0x24 \n"
344"    LDMFD   SP!, {R4-R9,PC} \n"
345"loc_FF8BE484:\n"
346"    CMP     R1, #0x2E \n"
347"    BNE     loc_FF8BE4A0 \n"
348"    LDR     R2, [R0, #0x8C]! \n"
349"    LDR     R1, [R0, #4] \n"
350"    MOV     R0, R1 \n"
351"    BLX     R2 \n"
352"    B       sub_FF8BEAA8 \n"
353"loc_FF8BE4A0:\n"
354"    CMP     R1, #0x27 \n"
355"    BNE     loc_FF8BE4F0 \n"
356"    LDR     R0, [R6, #0x1C] \n"
357"    MOV     R1, #0x80 \n"
358"    BL      sub_FF884DB8 \n"
359"    LDR     R0, =0xFF8B9F80 \n"
360"    MOV     R1, #0x80 \n"
361"    BL      sub_FF9619E4 \n"
362"    LDR     R0, [R6, #0x1C] \n"
363"    MOV     R2, R7 \n"
364"    MOV     R1, #0x80 \n"
365"    BL      sub_FF884CC4 \n"
366"    TST     R0, #1 \n"
367"    LDRNE   R1, =0x174E \n"
368"    BNE     loc_FF8BE5AC \n"
369"loc_FF8BE4DC:\n"
370"    LDR     R1, [SP, #0x20] \n"
371"    LDR     R0, [R1, #0x90] \n"
372"    LDR     R1, [R1, #0x8C] \n"
373"    BLX     R1 \n"
374"    B       sub_FF8BEAA8 \n"
375"loc_FF8BE4F0:\n"
376"    CMP     R1, #0x28 \n"
377"    BNE     loc_FF8BE538 \n"
378"    ADD     R1, SP, #0x10 \n"
379"    BL      sub_FF8BE39C \n"
380"    LDR     R0, [R6, #0x1C] \n"
381"    MOV     R1, #0x100 \n"
382"    BL      sub_FF884DB8 \n"
383"    LDR     R0, =0xFF8B9F90 \n"
384"    MOV     R1, #0x100 \n"
385"    BL      sub_FF961C84 \n"
386"    LDR     R0, [R6, #0x1C] \n"
387"    MOV     R2, R7 \n"
388"    MOV     R1, #0x100 \n"
389"    BL      sub_FF884CC4 \n"
390"    TST     R0, #1 \n"
391"    BEQ     loc_FF8BE4DC \n"
392"    LDR     R1, =0x1758 \n"
393"    B       loc_FF8BE5AC \n"
394"loc_FF8BE538:\n"
395"    CMP     R1, #0x29 \n"
396"    BNE     loc_FF8BE550 \n"
397"loc_FF8BE540:\n"
398"    LDR     R0, [SP, #0x20] \n"
399"    ADD     R1, SP, #0x10 \n"
400"    BL      sub_FF8BE39C \n"
401"    B       loc_FF8BE4DC \n"
402"loc_FF8BE550:\n"
403"    CMP     R1, #0x2C \n"
404"    BNE     loc_FF8BE568 \n"
405"    BL      sub_FF8AC3BC \n"
406"    BL      sub_FF8AD02C \n"
407"    BL      sub_FF8ACBA4 \n"
408"    B       loc_FF8BE4DC \n"
409"loc_FF8BE568:\n"
410"    CMP     R1, #0x2D \n"
411"    BNE     loc_FF8BE5B8 \n"
412"    LDR     R0, [R6, #0x1C] \n"
413"    MOV     R1, #4 \n"
414"    BL      sub_FF884DB8 \n"
415"    LDR     R1, =0xFF8B9FB0 \n"
416"    LDR     R0, =0xFFFFF400 \n"
417"    MOV     R2, #4 \n"
418"    BL      sub_FF8ABE30 \n"
419"    BL      sub_FF8AC0C0 \n"
420"    LDR     R0, [R6, #0x1C] \n"
421"    MOV     R2, R7 \n"
422"    MOV     R1, #4 \n"
423"    BL      sub_FF884BE0 \n"
424"    TST     R0, #1 \n"
425"    BEQ     loc_FF8BE4DC \n"
426"    MOV     R1, #0x1780 \n"
427"loc_FF8BE5AC:\n"
428"    LDR     R0, =0xFF8BA6A4 \n"
429"    BL      sub_FF81EC88 \n"
430"    B       loc_FF8BE4DC \n"
431"loc_FF8BE5B8:\n"
432"    LDR     R0, [SP, #0x20] \n"
433"    MOV     R8, #1 \n"
434"    LDR     R1, [R0] \n"
435"    CMP     R1, #0x12 \n"
436"    CMPNE   R1, #0x13 \n"
437"    BNE     loc_FF8BE680 \n"
438"    LDR     R1, [R0, #0x7C] \n"
439"    ADD     R1, R1, R1, LSL #1 \n"
440"    ADD     R1, R0, R1, LSL #2 \n"
441"    SUB     R1, R1, #8 \n"
442"    LDMIA   R1, {R2,R3,R9} \n"
443"    STMIA   R5, {R2,R3,R9} \n"
444"    BL      sub_FF8BCA0C \n"
445"    LDR     R0, [SP, #0x20] \n"
446"    LDR     R1, [R0, #0x7C] \n"
447"    LDR     R3, [R0, #0x8C] \n"
448"    LDR     R2, [R0, #0x90] \n"
449"    ADD     R0, R0, #4 \n"
450"    BLX     R3 \n"
451"    LDR     R0, [SP, #0x20] \n"
452"    BL      sub_FF8BFC24 \n"
453"    LDR     R0, [SP, #0x20] \n"
454"    LDR     R1, [R0, #0x7C] \n"
455"    LDR     R2, [R0, #0x98] \n"
456"    LDR     R3, [R0, #0x94] \n"
457"    B       loc_FF8BE994 \n"
458"loc_FF8BE680:\n"
459"    CMP     R1, #0x14 \n"
460"    CMPNE   R1, #0x15 \n"
461"    CMPNE   R1, #0x16 \n"
462"    CMPNE   R1, #0x17 \n"
463"    BNE     loc_FF8BE738 \n"
464"    ADD     R3, SP, #0x10 \n"
465"    ADD     R2, SP, #4 \n"
466"    ADD     R1, SP, #0x14 \n"
467"    BL      sub_FF8BCC74 \n"
468"    CMP     R0, #1 \n"
469"    MOV     R9, R0 \n"
470"    CMPNE   R9, #5 \n"
471"    BNE     loc_FF8BE6D4 \n"
472"    LDR     R0, [SP, #0x20] \n"
473"    MOV     R2, R9 \n"
474"    LDR     R1, [R0, #0x7C]! \n"
475"    LDR     R12, [R0, #0x10]! \n"
476"    LDR     R3, [R0, #4] \n"
477"    ADD     R0, SP, #4 \n"
478"    BLX     R12 \n"
479"    B       loc_FF8BE70C \n"
480"loc_FF8BE6D4:\n"
481"    LDR     R0, [SP, #0x20] \n"
482"    CMP     R9, #2 \n"
483"    LDR     R3, [R0, #0x90] \n"
484"    CMPNE   R9, #6 \n"
485"    BNE     loc_FF8BE720 \n"
486"    LDR     R12, [R0, #0x8C] \n"
487"    MOV     R2, R9 \n"
488"    MOV     R1, #1 \n"
489"    ADD     R0, SP, #4 \n"
490"    BLX     R12 \n"
491"    LDR     R0, [SP, #0x20] \n"
492"    ADD     R2, SP, #4 \n"
493"    ADD     R1, SP, #0x14 \n"
494"    BL      sub_FF8BE0E8 \n"
495"loc_FF8BE70C:\n"
496"    LDR     R0, [SP, #0x20] \n"
497"    LDR     R2, [SP, #0x10] \n"
498"    MOV     R1, R9 \n"
499"    BL      sub_FF8BE33C \n"
500"    B       loc_FF8BE99C \n"
501"loc_FF8BE720:\n"
502"    LDR     R1, [R0, #0x7C] \n"
503"    LDR     R12, [R0, #0x8C] \n"
504"    MOV     R2, R9 \n"
505"    ADD     R0, R0, #4 \n"
506"    BLX     R12 \n"
507"    B       loc_FF8BE99C \n"
508"loc_FF8BE738:\n"
509"    CMP     R1, #0x23 \n"
510"    CMPNE   R1, #0x24 \n"
511"    BNE     loc_FF8BE784 \n"
512"    LDR     R1, [R0, #0x7C] \n"
513"    ADD     R1, R1, R1, LSL #1 \n"
514"    ADD     R1, R0, R1, LSL #2 \n"
515"    SUB     R1, R1, #8 \n"
516"    LDMIA   R1, {R2,R3,R9} \n"
517"    STMIA   R5, {R2,R3,R9} \n"
518"    BL      sub_FF8BBA88 \n"
519"    LDR     R0, [SP, #0x20] \n"
520"    LDR     R1, [R0, #0x7C] \n"
521"    LDR     R3, [R0, #0x8C] \n"
522"    LDR     R2, [R0, #0x90] \n"
523"    ADD     R0, R0, #4 \n"
524"    BLX     R3 \n"
525"    LDR     R0, [SP, #0x20] \n"
526"    BL      sub_FF8BBEC4 \n"
527"    B       loc_FF8BE99C \n"
528"loc_FF8BE784:\n"
529"    ADD     R1, R0, #4 \n"
530"    LDMIA   R1, {R2,R3,R9} \n"
531"    STMIA   R5, {R2,R3,R9} \n"
532"    LDR     R1, [R0] \n"
533"    CMP     R1, #0x27 \n"
534"    ADDCC   PC, PC, R1, LSL #2 \n"
535"    B       loc_FF8BE984 \n"
536"    B       loc_FF8BE83C \n"
537"    B       loc_FF8BE83C \n"
538"    B       loc_FF8BE844 \n"
539"    B       loc_FF8BE84C \n"
540"    B       loc_FF8BE84C \n"
541"    B       loc_FF8BE84C \n"
542"    B       loc_FF8BE83C \n"
543"    B       loc_FF8BE844 \n"
544"    B       loc_FF8BE84C \n"
545"    B       loc_FF8BE84C \n"
546"    B       loc_FF8BE864 \n"
547"    B       loc_FF8BE864 \n"
548"    B       loc_FF8BE970 \n"
549"    B       loc_FF8BE978 \n"
550"    B       loc_FF8BE978 \n"
551"    B       loc_FF8BE978 \n"
552"    B       loc_FF8BE978 \n"
553"    B       loc_FF8BE980 \n"
554"    B       loc_FF8BE984 \n"
555"    B       loc_FF8BE984 \n"
556"    B       loc_FF8BE984 \n"
557"    B       loc_FF8BE984 \n"
558"    B       loc_FF8BE984 \n"
559"    B       loc_FF8BE984 \n"
560"    B       loc_FF8BE854 \n"
561"    B       loc_FF8BE85C \n"
562"    B       loc_FF8BE85C \n"
563"    B       loc_FF8BE870 \n"
564"    B       loc_FF8BE870 \n"
565"    B       loc_FF8BE878 \n"
566"    B       loc_FF8BE8B0 \n"
567"    B       loc_FF8BE8E8 \n"
568"    B       loc_FF8BE920 \n"
569"    B       loc_FF8BE958 \n"
570"    B       loc_FF8BE958 \n"
571"    B       loc_FF8BE984 \n"
572"    B       loc_FF8BE984 \n"
573"    B       loc_FF8BE960 \n"
574"    B       loc_FF8BE968 \n"
575"loc_FF8BE83C:\n"
576"    BL      sub_FF8BA528 \n"
577"    B       loc_FF8BE984 \n"
578"loc_FF8BE844:\n"
579"    BL      sub_FF8BA7CC \n"
580"    B       loc_FF8BE984 \n"
581"loc_FF8BE84C:\n"
582"    BL      sub_FF8BA9F4 \n"
583"    B       loc_FF8BE984 \n"
584"loc_FF8BE854:\n"
585"    BL      sub_FF8BACCC \n"
586"    B       loc_FF8BE984 \n"
587"loc_FF8BE85C:\n"
588"    BL      sub_FF8BAEE4 \n"
589"    B       loc_FF8BE984 \n"
590"loc_FF8BE864:\n"
591"    BL      sub_FF8BB264_my \n"
592"    MOV     R8, #0 \n"
593"    B       loc_FF8BE984 \n"
594"loc_FF8BE870:\n"
595"    BL      sub_FF8BB3AC \n"
596"    B       loc_FF8BE984 \n"
597"loc_FF8BE878:\n"
598"    LDRH    R1, [R0, #4] \n"
599"    STRH    R1, [SP, #0x14] \n"
600"    LDRH    R1, [R4, #2] \n"
601"    STRH    R1, [SP, #0x16] \n"
602"    LDRH    R1, [R4, #4] \n"
603"    STRH    R1, [SP, #0x18] \n"
604"    LDRH    R1, [R4, #6] \n"
605"    STRH    R1, [SP, #0x1A] \n"
606"    LDRH    R1, [R0, #0xC] \n"
607"    STRH    R1, [SP, #0x1C] \n"
608"    LDRH    R1, [R4, #0xA] \n"
609"    STRH    R1, [SP, #0x1E] \n"
610"    BL      sub_FF8BF91C \n"
611"    B       loc_FF8BE984 \n"
612"loc_FF8BE8B0:\n"
613"    LDRH    R1, [R0, #4] \n"
614"    STRH    R1, [SP, #0x14] \n"
615"    LDRH    R1, [R4, #2] \n"
616"    STRH    R1, [SP, #0x16] \n"
617"    LDRH    R1, [R4, #4] \n"
618"    STRH    R1, [SP, #0x18] \n"
619"    LDRH    R1, [R4, #6] \n"
620"    STRH    R1, [SP, #0x1A] \n"
621"    LDRH    R1, [R4, #8] \n"
622"    STRH    R1, [SP, #0x1C] \n"
623"    LDRH    R1, [R4, #0xA] \n"
624"    STRH    R1, [SP, #0x1E] \n"
625"    BL      sub_FF8BFA24 \n"
626"    B       loc_FF8BE984 \n"
627"loc_FF8BE8E8:\n"
628"    LDRH    R1, [R4] \n"
629"    STRH    R1, [SP, #0x14] \n"
630"    LDRH    R1, [R0, #6] \n"
631"    STRH    R1, [SP, #0x16] \n"
632"    LDRH    R1, [R4, #4] \n"
633"    STRH    R1, [SP, #0x18] \n"
634"    LDRH    R1, [R4, #6] \n"
635"    STRH    R1, [SP, #0x1A] \n"
636"    LDRH    R1, [R4, #8] \n"
637"    STRH    R1, [SP, #0x1C] \n"
638"    LDRH    R1, [R4, #0xA] \n"
639"    STRH    R1, [SP, #0x1E] \n"
640"    BL      sub_FF8BFAD8 \n"
641"    B       loc_FF8BE984 \n"
642"loc_FF8BE920:\n"
643"    LDRH    R1, [R4] \n"
644"    STRH    R1, [SP, #0x14] \n"
645"    LDRH    R1, [R4, #2] \n"
646"    STRH    R1, [SP, #0x16] \n"
647"    LDRH    R1, [R4, #4] \n"
648"    STRH    R1, [SP, #0x18] \n"
649"    LDRH    R1, [R4, #6] \n"
650"    STRH    R1, [SP, #0x1A] \n"
651"    LDRH    R1, [R0, #0xC] \n"
652"    STRH    R1, [SP, #0x1C] \n"
653"    LDRH    R1, [R4, #0xA] \n"
654"    STRH    R1, [SP, #0x1E] \n"
655"    BL      sub_FF8BFB80 \n"
656"    B       loc_FF8BE984 \n"
657"loc_FF8BE958:\n"
658"    BL      sub_FF8BB87C \n"
659"    B       loc_FF8BE984 \n"
660"loc_FF8BE960:\n"
661"    BL      sub_FF8BBFC8 \n"
662"    B       loc_FF8BE984 \n"
663"loc_FF8BE968:\n"
664"    BL      sub_FF8BC270 \n"
665"    B       loc_FF8BE984 \n"
666"loc_FF8BE970:\n"
667"    BL      sub_FF8BC450 \n"
668"    B       loc_FF8BE984 \n"
669"loc_FF8BE978:\n"
670"    BL      sub_FF8BC694 \n"
671"    B       loc_FF8BE984 \n"
672"loc_FF8BE980:\n"
673"    BL      sub_FF8BC804 \n"
674"loc_FF8BE984:\n"
675"    LDR     R0, [SP, #0x20] \n"
676"    LDR     R1, [R0, #0x7C] \n"
677"    LDR     R2, [R0, #0x90] \n"
678"    LDR     R3, [R0, #0x8C] \n"
679"loc_FF8BE994:\n"
680"    ADD     R0, R0, #4 \n"
681"    BLX     R3 \n"
682"loc_FF8BE99C:\n"
683"    LDR     R1, [SP, #0x20] \n"
684"    LDR     R0, [R1] \n"
685"    CMP     R0, #0x10 \n"
686"    BEQ     loc_FF8BE9D4 \n"
687"    BGT     loc_FF8BE9C4 \n"
688"    CMP     R0, #1 \n"
689"    CMPNE   R0, #4 \n"
690"    CMPNE   R0, #0xE \n"
691"    BNE     loc_FF8BE9E4 \n"
692"    B       loc_FF8BE9D4 \n"
693"loc_FF8BE9C4:\n"
694"    CMP     R0, #0x13 \n"
695"    CMPNE   R0, #0x17 \n"
696"    CMPNE   R0, #0x1A \n"
697"    BNE     loc_FF8BE9E4 \n"
698"loc_FF8BE9D4:\n"
699"    LDRH    R0, [R4] \n"
700"    STRH    R0, [SP, #0x14] \n"
701"    LDRH    R0, [R4, #8] \n"
702"    STRH    R0, [SP, #0x1C] \n"
703"loc_FF8BE9E4:\n"
704"    CMP     R8, #1 \n"
705"    BNE     loc_FF8BEA30 \n"
706"    LDR     R0, [R1, #0x7C] \n"
707"    MOV     R2, #0xC \n"
708"    ADD     R0, R0, R0, LSL #1 \n"
709"    ADD     R0, R1, R0, LSL #2 \n"
710"    SUB     R8, R0, #8 \n"
711"    LDR     R0, =0x55794 \n"
712"    ADD     R1, SP, #0x14 \n"
713"    BL      sub_FFB58814 \n"
714"    LDR     R0, =0x557A0 \n"
715"    MOV     R2, #0xC \n"
716"    ADD     R1, SP, #0x14 \n"
717"    BL      sub_FFB58814 \n"
718"    LDR     R0, =0x557AC \n"
719"    MOV     R2, #0xC \n"
720"    MOV     R1, R8 \n"
721"    BL      sub_FFB58814 \n"
722"    B       sub_FF8BEAA8 \n"
723"loc_FF8BEA30:\n"
724"    LDR     R0, [R1] \n"
725"    MOV     R3, #1 \n"
726"    CMP     R0, #0xB \n"
727"    BNE     sub_FF8BEA74 \n"
728"    MOV     R2, #0 \n"
729"    STRD    R2, [SP] \n"
730"    MOV     R2, R3 \n"
731"    MOV     R1, R3 \n"
732"    MOV     R0, #0 \n"
733        );
734}
735
736
737//** sub_FF8BB264_my  @ 0xFF8BB264
738
739void __attribute__((naked,noinline)) sub_FF8BB264_my(  ) {
740asm volatile (
741"    STMFD   SP!, {R4-R8,LR} \n"
742"    LDR     R7, =0x3EB0 \n"
743"    MOV     R4, R0 \n"
744"    LDR     R0, [R7, #0x1C] \n"
745"    MOV     R1, #0x3E \n"
746"    BL      sub_FF884DB8 \n"
747"    MOV     R2, #0 \n"
748"    LDRSH   R0, [R4, #4] \n"
749"    MOV     R1, R2 \n"
750"    BL      sub_FF8BA010 \n"
751"    MOV     R5, R0 \n"
752"    LDRSH   R0, [R4, #6] \n"
753"    BL      sub_FF8BA160 \n"
754"    LDRSH   R0, [R4, #8] \n"
755"    BL      sub_FF8BA1B8 \n"
756"    LDRSH   R0, [R4, #0xA] \n"
757"    BL      sub_FF8BA210 \n"
758"    LDRSH   R0, [R4, #0xC] \n"
759"    MOV     R1, #0 \n"
760"    BL      sub_FF8BA268 \n"
761"    MOV     R6, R0 \n"
762"    LDRSH   R0, [R4, #0xE] \n"
763"    BL      sub_FF8BF8B8 \n"
764"    LDR     R0, [R4] \n"
765"    LDR     R8, =0x557AC \n"
766"    CMP     R0, #0xB \n"
767"    MOVEQ   R5, #0 \n"
768"    MOVEQ   R6, R5 \n"
769"    BEQ     loc_FF8BB300 \n"
770"    CMP     R5, #1 \n"
771"    BNE     loc_FF8BB300 \n"
772"    LDRSH   R0, [R4, #4] \n"
773"    LDR     R1, =0xFF8B9F70 \n"
774"    MOV     R2, #2 \n"
775"    BL      sub_FF961B38 \n"
776"    STRH    R0, [R4, #4] \n"
777"    MOV     R0, #0 \n"
778"    STR     R0, [R7, #0x28] \n"
779"    B       loc_FF8BB308 \n"
780"loc_FF8BB300:\n"
781"    LDRH    R0, [R8] \n"
782"    STRH    R0, [R4, #4] \n"
783"loc_FF8BB308:\n"
784"    CMP     R6, #1 \n"
785"    LDRNEH  R0, [R8, #8] \n"
786"    BNE     loc_FF8BB324 \n"
787"    LDRSH   R0, [R4, #0xC] \n"
788"    LDR     R1, =0xFF8B9FF4 \n"
789"    MOV     R2, #0x20 \n"
790"    BL      sub_FF8BF8D8 \n"
791"loc_FF8BB324:\n"
792"    STRH    R0, [R4, #0xC] \n"
793"    LDRSH   R0, [R4, #6] \n"
794"    BL      sub_FF8AC12C_my \n"
795"    LDRSH   R0, [R4, #8] \n"
796"    MOV     R1, #1 \n"
797"    BL      sub_FF8AC8E4 \n"
798"    MOV     R1, #0 \n"
799"    ADD     R0, R4, #8 \n"
800"    BL      sub_FF8AC96C \n"
801"    LDRSH   R0, [R4, #0xE] \n"
802"    BL      sub_FF8B4E5C \n"
803"    LDR     R4, =0xBB8 \n"
804"    CMP     R5, #1 \n"
805"    BNE     loc_FF8BB37C \n"
806"    LDR     R0, [R7, #0x1C] \n"
807"    MOV     R2, R4 \n"
808"    MOV     R1, #2 \n"
809"    BL      sub_FF884CC4 \n"
810"    TST     R0, #1 \n"
811"    LDRNE   R1, =0x7DB \n"
812"    LDRNE   R0, =0xFF8BA6A4 \n"
813"    BLNE    sub_FF81EC88 \n"
814"loc_FF8BB37C:\n"
815"    CMP     R6, #1 \n"
816"    LDMNEFD SP!, {R4-R8,PC} \n"
817"    LDR     R0, [R7, #0x1C] \n"
818"    MOV     R2, R4 \n"
819"    MOV     R1, #0x20 \n"
820"    BL      sub_FF884CC4 \n"
821"    TST     R0, #1 \n"
822"    LDMEQFD SP!, {R4-R8,PC} \n"
823"    LDMFD   SP!, {R4-R8,LR} \n"
824"    LDR     R0, =0xFF8BA6A4 \n"
825"    MOV     R1, #0x7E0 \n"
826"    B       sub_FF81EC88 \n"
827        );
828}
829
830
831//** sub_FF8AC12C_my  @ 0xFF8AC12C
832
833void __attribute__((naked,noinline)) sub_FF8AC12C_my(  ) {
834asm volatile (
835"    STMFD   SP!, {R4-R6,LR} \n"
836"    LDR     R5, =0x3B74 \n"
837"    MOV     R4, R0 \n"
838"    LDR     R0, [R5, #4] \n"
839"    CMP     R0, #1 \n"
840"    LDRNE   R1, =0x146 \n"
841"    LDRNE   R0, =0xFF8ABF64 \n"
842"    BLNE    sub_FF81EC88 \n"
843"    CMN     R4, #0xC00 \n"
844"    LDREQSH R4, [R5, #2] \n"
845"    CMN     R4, #0xC00 \n"
846"    MOVEQ   R1, #0x14C \n"
847"    LDREQ   R0, =0xFF8ABF64 \n"
848"    STRH    R4, [R5, #2] \n"
849"    BLEQ    sub_FF81EC88 \n"
850"    MOV     R0, R4 \n"
851//"    BL      sub_FFA0C05C \n"
852"        BL              apex2us \n"                                            // patched
853"    MOV     R4, R0 \n"
854"    BL      sub_FF8F7E60 \n"
855"    MOV     R0, R4 \n"
856"    BL      sub_FF900E9C \n"
857"    TST     R0, #1 \n"
858"    LDMEQFD SP!, {R4-R6,PC} \n"
859"    LDMFD   SP!, {R4-R6,LR} \n"
860"    LDR     R1, =0x151 \n"
861"    LDR     R0, =0xFF8ABF64 \n"
862"    B       sub_FF81EC88 \n"
863        );
864}
Note: See TracBrowser for help on using the repository browser.