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

Revision 1617, 24.8 KB checked in by philmoz, 17 months ago (diff)

Updates to A3300 IS from mk11174. Includes new firmware version 1.00d.
http://chdk.setepontos.com/index.php?topic=650.msg80579#msg80579

  • Property svn:eol-style set to native
RevLine 
[1551]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"
[1617]82"    BL      sub_FF96EF54_my \n"                        //patch
83"        BL              capt_seq_hook_raw_here \n"             // added
[1551]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        );
223}
224
225
226//** sub_FF96EF54_my  @ 0xFF96EF54
227
228void __attribute__((naked,noinline)) sub_FF96EF54_my(  ) {
229asm volatile (
230"    STMFD   SP!, {R3-R7,LR} \n"
231"    LDR     R6, =0x3A29C \n"
232"    MOV     R5, R0 \n"
233"    LDR     R0, [R6, #0x28] \n"
234"    MOV     R4, #0 \n"
235"    CMP     R0, #0 \n"
236"    BNE     loc_FF96EF84 \n"
237"    MOV     R0, #0xC \n"
238"    BL      sub_FF87FC6C \n"
239"    TST     R0, #1 \n"
240"    MOVNE   R0, #1 \n"
241"    BNE     loc_FF96F030 \n"
242"loc_FF96EF84:\n"
243"    BL      sub_FF87B310 \n"
244"    LDR     R0, [R6, #0x28] \n"
245"    CMP     R0, #0 \n"
246"    BNE     loc_FF96F018 \n"
247"    MOV     R0, R5 \n"
248"    BL      sub_FF96E908 \n"
249"    TST     R0, #1 \n"
250"    BNE     loc_FF96F030 \n"
251"    MOV     R0, R5 \n"
252"    BL      sub_FF96EC7C \n"
253"    BL      sub_FF96F5DC \n"
254"    MOV     R4, #1 \n"
255"    MOV     R0, #2 \n"
256"    BL      sub_FF88142C \n"
257"        BL             wait_until_remote_button_is_released \n"                // added
258"        BL             capt_seq_hook_set_nr \n"                                                // added
259"    LDRH    R0, [R6] \n"
260"    SUB     R1, R0, #0x8200 \n"
261"    SUBS    R1, R1, #0x2D \n"
262"    BNE     loc_FF96F008 \n"
263"    MOV     R2, #2 \n"
264"    MOV     R1, SP \n"
265"    ADD     R0, R2, #0x15C \n"
266"    STR     R4, [SP] \n"
267"    BL      sub_FF88CFAC \n"
268"    TST     R0, #1 \n"
269"    MOVNE   R1, #0xBC \n"
270"    LDRNE   R0, =0xFF96F0E0 \n"
271"    BLNE    sub_FF81EC88 \n"
272"    LDRH    R0, [SP] \n"
273"    CMP     R0, #1 \n"
274"    STRHI   R4, [R5, #0xD4] \n"
275"    BHI     loc_FF96F028 \n"
276"    MOV     R0, #0 \n"
277"    STR     R0, [R5, #0xD4] \n"
278"loc_FF96F008:\n"
279"    MOV     R0, R5 \n"
280"    BL      sub_FFAB588C \n"
281"    MOV     R4, R0 \n"
282"    B       loc_FF96F02C \n"
283"loc_FF96F018:\n"
284"    LDR     R0, =0x6AEC \n"
285"    LDR     R0, [R0] \n"
286"    CMP     R0, #0 \n"
287"    BEQ     loc_FF96F02C \n"
288"loc_FF96F028:\n"
289"    MOV     R4, #0x1D \n"
290"loc_FF96F02C:\n"
291"    MOV     R0, R4 \n"
292"loc_FF96F030:\n"
293"    LDMFD   SP!, {R3-R7,PC} \n"
294        );
295}
296
297//** exp_drv_task  @ 0xFF8BE3EC
298
299void __attribute__((naked,noinline)) exp_drv_task(  ) {
300asm volatile (
301"    STMFD   SP!, {R4-R9,LR} \n"
302"    SUB     SP, SP, #0x24 \n"
303"    LDR     R6, =0x3EB0 \n"
304"    LDR     R7, =0xBB8 \n"
305"    LDR     R4, =0x55794 \n"
306"    MOV     R0, #0 \n"
307"    ADD     R5, SP, #0x14 \n"
308"    STR     R0, [SP, #0x10] \n"
309"    LDR     R0, [R6, #0x20] \n"
310"    MOV     R2, #0 \n"
311"    ADD     R1, SP, #0x20 \n"
312"    BL      sub_FF839BD8 \n"
313"    LDR     R0, [SP, #0x10] \n"
314"    CMP     R0, #1 \n"
315"    BNE     loc_FF8BE458 \n"
316"    LDR     R0, [SP, #0x20] \n"
317"    LDR     R0, [R0] \n"
318"    CMP     R0, #0x14 \n"
319"    CMPNE   R0, #0x15 \n"
320"    CMPNE   R0, #0x16 \n"
321"    CMPNE   R0, #0x17 \n"
322"    BEQ     loc_FF8BE5B8 \n"
323"    CMP     R0, #0x29 \n"
324"    BEQ     loc_FF8BE540 \n"
325"    ADD     R1, SP, #0x10 \n"
326"    MOV     R0, #0 \n"
327"    BL      sub_FF8BE39C \n"
328"loc_FF8BE458:\n"
329"    LDR     R0, [SP, #0x20] \n"
330"    LDR     R1, [R0] \n"
331"    CMP     R1, #0x2F \n"
332"    BNE     loc_FF8BE484 \n"
333"    BL      sub_FF8BF888 \n"
334"    LDR     R0, [R6, #0x1C] \n"
335"    MOV     R1, #1 \n"
336"    BL      sub_FF884D84 \n"
337"    BL      sub_FF81EC40 \n"
338"    ADD     SP, SP, #0x24 \n"
339"    LDMFD   SP!, {R4-R9,PC} \n"
340"loc_FF8BE484:\n"
341"    CMP     R1, #0x2E \n"
342"    BNE     loc_FF8BE4A0 \n"
343"    LDR     R2, [R0, #0x8C]! \n"
344"    LDR     R1, [R0, #4] \n"
345"    MOV     R0, R1 \n"
346"    BLX     R2 \n"
347"    B       sub_FF8BEAA8 \n"
348"loc_FF8BE4A0:\n"
349"    CMP     R1, #0x27 \n"
350"    BNE     loc_FF8BE4F0 \n"
351"    LDR     R0, [R6, #0x1C] \n"
352"    MOV     R1, #0x80 \n"
353"    BL      sub_FF884DB8 \n"
354"    LDR     R0, =0xFF8B9F80 \n"
355"    MOV     R1, #0x80 \n"
356"    BL      sub_FF9619E4 \n"
357"    LDR     R0, [R6, #0x1C] \n"
358"    MOV     R2, R7 \n"
359"    MOV     R1, #0x80 \n"
360"    BL      sub_FF884CC4 \n"
361"    TST     R0, #1 \n"
362"    LDRNE   R1, =0x174E \n"
363"    BNE     loc_FF8BE5AC \n"
364"loc_FF8BE4DC:\n"
365"    LDR     R1, [SP, #0x20] \n"
366"    LDR     R0, [R1, #0x90] \n"
367"    LDR     R1, [R1, #0x8C] \n"
368"    BLX     R1 \n"
369"    B       sub_FF8BEAA8 \n"
370"loc_FF8BE4F0:\n"
371"    CMP     R1, #0x28 \n"
372"    BNE     loc_FF8BE538 \n"
373"    ADD     R1, SP, #0x10 \n"
374"    BL      sub_FF8BE39C \n"
375"    LDR     R0, [R6, #0x1C] \n"
376"    MOV     R1, #0x100 \n"
377"    BL      sub_FF884DB8 \n"
378"    LDR     R0, =0xFF8B9F90 \n"
379"    MOV     R1, #0x100 \n"
380"    BL      sub_FF961C84 \n"
381"    LDR     R0, [R6, #0x1C] \n"
382"    MOV     R2, R7 \n"
383"    MOV     R1, #0x100 \n"
384"    BL      sub_FF884CC4 \n"
385"    TST     R0, #1 \n"
386"    BEQ     loc_FF8BE4DC \n"
387"    LDR     R1, =0x1758 \n"
388"    B       loc_FF8BE5AC \n"
389"loc_FF8BE538:\n"
390"    CMP     R1, #0x29 \n"
391"    BNE     loc_FF8BE550 \n"
392"loc_FF8BE540:\n"
393"    LDR     R0, [SP, #0x20] \n"
394"    ADD     R1, SP, #0x10 \n"
395"    BL      sub_FF8BE39C \n"
396"    B       loc_FF8BE4DC \n"
397"loc_FF8BE550:\n"
398"    CMP     R1, #0x2C \n"
399"    BNE     loc_FF8BE568 \n"
400"    BL      sub_FF8AC3BC \n"
401"    BL      sub_FF8AD02C \n"
402"    BL      sub_FF8ACBA4 \n"
403"    B       loc_FF8BE4DC \n"
404"loc_FF8BE568:\n"
405"    CMP     R1, #0x2D \n"
406"    BNE     loc_FF8BE5B8 \n"
407"    LDR     R0, [R6, #0x1C] \n"
408"    MOV     R1, #4 \n"
409"    BL      sub_FF884DB8 \n"
410"    LDR     R1, =0xFF8B9FB0 \n"
411"    LDR     R0, =0xFFFFF400 \n"
412"    MOV     R2, #4 \n"
413"    BL      sub_FF8ABE30 \n"
414"    BL      sub_FF8AC0C0 \n"
415"    LDR     R0, [R6, #0x1C] \n"
416"    MOV     R2, R7 \n"
417"    MOV     R1, #4 \n"
418"    BL      sub_FF884BE0 \n"
419"    TST     R0, #1 \n"
420"    BEQ     loc_FF8BE4DC \n"
421"    MOV     R1, #0x1780 \n"
422"loc_FF8BE5AC:\n"
423"    LDR     R0, =0xFF8BA6A4 \n"
424"    BL      sub_FF81EC88 \n"
425"    B       loc_FF8BE4DC \n"
426"loc_FF8BE5B8:\n"
427"    LDR     R0, [SP, #0x20] \n"
428"    MOV     R8, #1 \n"
429"    LDR     R1, [R0] \n"
430"    CMP     R1, #0x12 \n"
431"    CMPNE   R1, #0x13 \n"
432"    BNE     loc_FF8BE680 \n"
433"    LDR     R1, [R0, #0x7C] \n"
434"    ADD     R1, R1, R1, LSL #1 \n"
435"    ADD     R1, R0, R1, LSL #2 \n"
436"    SUB     R1, R1, #8 \n"
437"    LDMIA   R1, {R2,R3,R9} \n"
438"    STMIA   R5, {R2,R3,R9} \n"
439"    BL      sub_FF8BCA0C \n"
440"    LDR     R0, [SP, #0x20] \n"
441"    LDR     R1, [R0, #0x7C] \n"
442"    LDR     R3, [R0, #0x8C] \n"
443"    LDR     R2, [R0, #0x90] \n"
444"    ADD     R0, R0, #4 \n"
445"    BLX     R3 \n"
446"    LDR     R0, [SP, #0x20] \n"
447"    BL      sub_FF8BFC24 \n"
448"    LDR     R0, [SP, #0x20] \n"
449"    LDR     R1, [R0, #0x7C] \n"
450"    LDR     R2, [R0, #0x98] \n"
451"    LDR     R3, [R0, #0x94] \n"
452"    B       loc_FF8BE994 \n"
453"loc_FF8BE680:\n"
454"    CMP     R1, #0x14 \n"
455"    CMPNE   R1, #0x15 \n"
456"    CMPNE   R1, #0x16 \n"
457"    CMPNE   R1, #0x17 \n"
458"    BNE     loc_FF8BE738 \n"
459"    ADD     R3, SP, #0x10 \n"
460"    ADD     R2, SP, #4 \n"
461"    ADD     R1, SP, #0x14 \n"
462"    BL      sub_FF8BCC74 \n"
463"    CMP     R0, #1 \n"
464"    MOV     R9, R0 \n"
465"    CMPNE   R9, #5 \n"
466"    BNE     loc_FF8BE6D4 \n"
467"    LDR     R0, [SP, #0x20] \n"
468"    MOV     R2, R9 \n"
469"    LDR     R1, [R0, #0x7C]! \n"
470"    LDR     R12, [R0, #0x10]! \n"
471"    LDR     R3, [R0, #4] \n"
472"    ADD     R0, SP, #4 \n"
473"    BLX     R12 \n"
474"    B       loc_FF8BE70C \n"
475"loc_FF8BE6D4:\n"
476"    LDR     R0, [SP, #0x20] \n"
477"    CMP     R9, #2 \n"
478"    LDR     R3, [R0, #0x90] \n"
479"    CMPNE   R9, #6 \n"
480"    BNE     loc_FF8BE720 \n"
481"    LDR     R12, [R0, #0x8C] \n"
482"    MOV     R2, R9 \n"
483"    MOV     R1, #1 \n"
484"    ADD     R0, SP, #4 \n"
485"    BLX     R12 \n"
486"    LDR     R0, [SP, #0x20] \n"
487"    ADD     R2, SP, #4 \n"
488"    ADD     R1, SP, #0x14 \n"
489"    BL      sub_FF8BE0E8 \n"
490"loc_FF8BE70C:\n"
491"    LDR     R0, [SP, #0x20] \n"
492"    LDR     R2, [SP, #0x10] \n"
493"    MOV     R1, R9 \n"
494"    BL      sub_FF8BE33C \n"
495"    B       loc_FF8BE99C \n"
496"loc_FF8BE720:\n"
497"    LDR     R1, [R0, #0x7C] \n"
498"    LDR     R12, [R0, #0x8C] \n"
499"    MOV     R2, R9 \n"
500"    ADD     R0, R0, #4 \n"
501"    BLX     R12 \n"
502"    B       loc_FF8BE99C \n"
503"loc_FF8BE738:\n"
504"    CMP     R1, #0x23 \n"
505"    CMPNE   R1, #0x24 \n"
506"    BNE     loc_FF8BE784 \n"
507"    LDR     R1, [R0, #0x7C] \n"
508"    ADD     R1, R1, R1, LSL #1 \n"
509"    ADD     R1, R0, R1, LSL #2 \n"
510"    SUB     R1, R1, #8 \n"
511"    LDMIA   R1, {R2,R3,R9} \n"
512"    STMIA   R5, {R2,R3,R9} \n"
513"    BL      sub_FF8BBA88 \n"
514"    LDR     R0, [SP, #0x20] \n"
515"    LDR     R1, [R0, #0x7C] \n"
516"    LDR     R3, [R0, #0x8C] \n"
517"    LDR     R2, [R0, #0x90] \n"
518"    ADD     R0, R0, #4 \n"
519"    BLX     R3 \n"
520"    LDR     R0, [SP, #0x20] \n"
521"    BL      sub_FF8BBEC4 \n"
522"    B       loc_FF8BE99C \n"
523"loc_FF8BE784:\n"
524"    ADD     R1, R0, #4 \n"
525"    LDMIA   R1, {R2,R3,R9} \n"
526"    STMIA   R5, {R2,R3,R9} \n"
527"    LDR     R1, [R0] \n"
528"    CMP     R1, #0x27 \n"
529"    ADDCC   PC, PC, R1, LSL #2 \n"
530"    B       loc_FF8BE984 \n"
531"    B       loc_FF8BE83C \n"
532"    B       loc_FF8BE83C \n"
533"    B       loc_FF8BE844 \n"
534"    B       loc_FF8BE84C \n"
535"    B       loc_FF8BE84C \n"
536"    B       loc_FF8BE84C \n"
537"    B       loc_FF8BE83C \n"
538"    B       loc_FF8BE844 \n"
539"    B       loc_FF8BE84C \n"
540"    B       loc_FF8BE84C \n"
541"    B       loc_FF8BE864 \n"
542"    B       loc_FF8BE864 \n"
543"    B       loc_FF8BE970 \n"
544"    B       loc_FF8BE978 \n"
545"    B       loc_FF8BE978 \n"
546"    B       loc_FF8BE978 \n"
547"    B       loc_FF8BE978 \n"
548"    B       loc_FF8BE980 \n"
549"    B       loc_FF8BE984 \n"
550"    B       loc_FF8BE984 \n"
551"    B       loc_FF8BE984 \n"
552"    B       loc_FF8BE984 \n"
553"    B       loc_FF8BE984 \n"
554"    B       loc_FF8BE984 \n"
555"    B       loc_FF8BE854 \n"
556"    B       loc_FF8BE85C \n"
557"    B       loc_FF8BE85C \n"
558"    B       loc_FF8BE870 \n"
559"    B       loc_FF8BE870 \n"
560"    B       loc_FF8BE878 \n"
561"    B       loc_FF8BE8B0 \n"
562"    B       loc_FF8BE8E8 \n"
563"    B       loc_FF8BE920 \n"
564"    B       loc_FF8BE958 \n"
565"    B       loc_FF8BE958 \n"
566"    B       loc_FF8BE984 \n"
567"    B       loc_FF8BE984 \n"
568"    B       loc_FF8BE960 \n"
569"    B       loc_FF8BE968 \n"
570"loc_FF8BE83C:\n"
571"    BL      sub_FF8BA528 \n"
572"    B       loc_FF8BE984 \n"
573"loc_FF8BE844:\n"
574"    BL      sub_FF8BA7CC \n"
575"    B       loc_FF8BE984 \n"
576"loc_FF8BE84C:\n"
577"    BL      sub_FF8BA9F4 \n"
578"    B       loc_FF8BE984 \n"
579"loc_FF8BE854:\n"
580"    BL      sub_FF8BACCC \n"
581"    B       loc_FF8BE984 \n"
582"loc_FF8BE85C:\n"
583"    BL      sub_FF8BAEE4 \n"
584"    B       loc_FF8BE984 \n"
585"loc_FF8BE864:\n"
[1617]586"    BL      sub_FF8BB264_my \n"        //patch
[1551]587"    MOV     R8, #0 \n"
588"    B       loc_FF8BE984 \n"
589"loc_FF8BE870:\n"
590"    BL      sub_FF8BB3AC \n"
591"    B       loc_FF8BE984 \n"
592"loc_FF8BE878:\n"
593"    LDRH    R1, [R0, #4] \n"
594"    STRH    R1, [SP, #0x14] \n"
595"    LDRH    R1, [R4, #2] \n"
596"    STRH    R1, [SP, #0x16] \n"
597"    LDRH    R1, [R4, #4] \n"
598"    STRH    R1, [SP, #0x18] \n"
599"    LDRH    R1, [R4, #6] \n"
600"    STRH    R1, [SP, #0x1A] \n"
601"    LDRH    R1, [R0, #0xC] \n"
602"    STRH    R1, [SP, #0x1C] \n"
603"    LDRH    R1, [R4, #0xA] \n"
604"    STRH    R1, [SP, #0x1E] \n"
605"    BL      sub_FF8BF91C \n"
606"    B       loc_FF8BE984 \n"
607"loc_FF8BE8B0:\n"
608"    LDRH    R1, [R0, #4] \n"
609"    STRH    R1, [SP, #0x14] \n"
610"    LDRH    R1, [R4, #2] \n"
611"    STRH    R1, [SP, #0x16] \n"
612"    LDRH    R1, [R4, #4] \n"
613"    STRH    R1, [SP, #0x18] \n"
614"    LDRH    R1, [R4, #6] \n"
615"    STRH    R1, [SP, #0x1A] \n"
616"    LDRH    R1, [R4, #8] \n"
617"    STRH    R1, [SP, #0x1C] \n"
618"    LDRH    R1, [R4, #0xA] \n"
619"    STRH    R1, [SP, #0x1E] \n"
620"    BL      sub_FF8BFA24 \n"
621"    B       loc_FF8BE984 \n"
622"loc_FF8BE8E8:\n"
623"    LDRH    R1, [R4] \n"
624"    STRH    R1, [SP, #0x14] \n"
625"    LDRH    R1, [R0, #6] \n"
626"    STRH    R1, [SP, #0x16] \n"
627"    LDRH    R1, [R4, #4] \n"
628"    STRH    R1, [SP, #0x18] \n"
629"    LDRH    R1, [R4, #6] \n"
630"    STRH    R1, [SP, #0x1A] \n"
631"    LDRH    R1, [R4, #8] \n"
632"    STRH    R1, [SP, #0x1C] \n"
633"    LDRH    R1, [R4, #0xA] \n"
634"    STRH    R1, [SP, #0x1E] \n"
635"    BL      sub_FF8BFAD8 \n"
636"    B       loc_FF8BE984 \n"
637"loc_FF8BE920:\n"
638"    LDRH    R1, [R4] \n"
639"    STRH    R1, [SP, #0x14] \n"
640"    LDRH    R1, [R4, #2] \n"
641"    STRH    R1, [SP, #0x16] \n"
642"    LDRH    R1, [R4, #4] \n"
643"    STRH    R1, [SP, #0x18] \n"
644"    LDRH    R1, [R4, #6] \n"
645"    STRH    R1, [SP, #0x1A] \n"
646"    LDRH    R1, [R0, #0xC] \n"
647"    STRH    R1, [SP, #0x1C] \n"
648"    LDRH    R1, [R4, #0xA] \n"
649"    STRH    R1, [SP, #0x1E] \n"
650"    BL      sub_FF8BFB80 \n"
651"    B       loc_FF8BE984 \n"
652"loc_FF8BE958:\n"
653"    BL      sub_FF8BB87C \n"
654"    B       loc_FF8BE984 \n"
655"loc_FF8BE960:\n"
656"    BL      sub_FF8BBFC8 \n"
657"    B       loc_FF8BE984 \n"
658"loc_FF8BE968:\n"
659"    BL      sub_FF8BC270 \n"
660"    B       loc_FF8BE984 \n"
661"loc_FF8BE970:\n"
662"    BL      sub_FF8BC450 \n"
663"    B       loc_FF8BE984 \n"
664"loc_FF8BE978:\n"
665"    BL      sub_FF8BC694 \n"
666"    B       loc_FF8BE984 \n"
667"loc_FF8BE980:\n"
668"    BL      sub_FF8BC804 \n"
669"loc_FF8BE984:\n"
670"    LDR     R0, [SP, #0x20] \n"
671"    LDR     R1, [R0, #0x7C] \n"
672"    LDR     R2, [R0, #0x90] \n"
673"    LDR     R3, [R0, #0x8C] \n"
674"loc_FF8BE994:\n"
675"    ADD     R0, R0, #4 \n"
676"    BLX     R3 \n"
677"loc_FF8BE99C:\n"
678"    LDR     R1, [SP, #0x20] \n"
679"    LDR     R0, [R1] \n"
680"    CMP     R0, #0x10 \n"
681"    BEQ     loc_FF8BE9D4 \n"
682"    BGT     loc_FF8BE9C4 \n"
683"    CMP     R0, #1 \n"
684"    CMPNE   R0, #4 \n"
685"    CMPNE   R0, #0xE \n"
686"    BNE     loc_FF8BE9E4 \n"
687"    B       loc_FF8BE9D4 \n"
688"loc_FF8BE9C4:\n"
689"    CMP     R0, #0x13 \n"
690"    CMPNE   R0, #0x17 \n"
691"    CMPNE   R0, #0x1A \n"
692"    BNE     loc_FF8BE9E4 \n"
693"loc_FF8BE9D4:\n"
694"    LDRH    R0, [R4] \n"
695"    STRH    R0, [SP, #0x14] \n"
696"    LDRH    R0, [R4, #8] \n"
697"    STRH    R0, [SP, #0x1C] \n"
698"loc_FF8BE9E4:\n"
699"    CMP     R8, #1 \n"
700"    BNE     loc_FF8BEA30 \n"
701"    LDR     R0, [R1, #0x7C] \n"
702"    MOV     R2, #0xC \n"
703"    ADD     R0, R0, R0, LSL #1 \n"
704"    ADD     R0, R1, R0, LSL #2 \n"
705"    SUB     R8, R0, #8 \n"
706"    LDR     R0, =0x55794 \n"
707"    ADD     R1, SP, #0x14 \n"
708"    BL      sub_FFB58814 \n"
709"    LDR     R0, =0x557A0 \n"
710"    MOV     R2, #0xC \n"
711"    ADD     R1, SP, #0x14 \n"
712"    BL      sub_FFB58814 \n"
713"    LDR     R0, =0x557AC \n"
714"    MOV     R2, #0xC \n"
715"    MOV     R1, R8 \n"
716"    BL      sub_FFB58814 \n"
717"    B       sub_FF8BEAA8 \n"
718"loc_FF8BEA30:\n"
719"    LDR     R0, [R1] \n"
720"    MOV     R3, #1 \n"
721"    CMP     R0, #0xB \n"
[1617]722"    BNE     loc_FF8BEA74 \n"
[1551]723"    MOV     R2, #0 \n"
724"    STRD    R2, [SP] \n"
725"    MOV     R2, R3 \n"
726"    MOV     R1, R3 \n"
727"    MOV     R0, #0 \n"
[1617]728"    BL      sub_FF8BA308 \n"
729"    MOV     R3, #1 \n"
730"    MOV     R2, #0 \n"
731"    STRD    R2, [SP] \n"
732"    MOV     R2, R3 \n"
733"    MOV     R1, R3 \n"
734"    MOV     R0, #0 \n"
735"    B       loc_FF8BEAA4 \n"
736"loc_FF8BEA74:\n"
737"    MOV     R2, #1 \n"
738"    STRD    R2, [SP] \n"
739"    MOV     R3, R2 \n"
740"    MOV     R1, R2 \n"
741"    MOV     R0, R2 \n"
742"    BL      sub_FF8BA308 \n"
743"    MOV     R3, #1 \n"
744"    MOV     R2, R3 \n"
745"    MOV     R1, R3 \n"
746"    MOV     R0, R3 \n"
747"    STR     R3, [SP] \n"
748"    STR     R3, [SP, #4] \n"
749"loc_FF8BEAA4:\n"
750"    BL      sub_FF8BA474 \n"
751"loc_FF8BEAA8:\n"
752"    LDR     R0, [SP, #0x20] \n"
753"    BL      sub_FF8BF888 \n"
[1551]754        );
755}
756
757
758//** sub_FF8BB264_my  @ 0xFF8BB264
759
760void __attribute__((naked,noinline)) sub_FF8BB264_my(  ) {
761asm volatile (
762"    STMFD   SP!, {R4-R8,LR} \n"
763"    LDR     R7, =0x3EB0 \n"
764"    MOV     R4, R0 \n"
765"    LDR     R0, [R7, #0x1C] \n"
766"    MOV     R1, #0x3E \n"
767"    BL      sub_FF884DB8 \n"
768"    MOV     R2, #0 \n"
769"    LDRSH   R0, [R4, #4] \n"
770"    MOV     R1, R2 \n"
771"    BL      sub_FF8BA010 \n"
772"    MOV     R5, R0 \n"
773"    LDRSH   R0, [R4, #6] \n"
774"    BL      sub_FF8BA160 \n"
775"    LDRSH   R0, [R4, #8] \n"
776"    BL      sub_FF8BA1B8 \n"
777"    LDRSH   R0, [R4, #0xA] \n"
778"    BL      sub_FF8BA210 \n"
779"    LDRSH   R0, [R4, #0xC] \n"
780"    MOV     R1, #0 \n"
781"    BL      sub_FF8BA268 \n"
782"    MOV     R6, R0 \n"
783"    LDRSH   R0, [R4, #0xE] \n"
784"    BL      sub_FF8BF8B8 \n"
785"    LDR     R0, [R4] \n"
786"    LDR     R8, =0x557AC \n"
787"    CMP     R0, #0xB \n"
788"    MOVEQ   R5, #0 \n"
789"    MOVEQ   R6, R5 \n"
790"    BEQ     loc_FF8BB300 \n"
791"    CMP     R5, #1 \n"
792"    BNE     loc_FF8BB300 \n"
793"    LDRSH   R0, [R4, #4] \n"
794"    LDR     R1, =0xFF8B9F70 \n"
795"    MOV     R2, #2 \n"
796"    BL      sub_FF961B38 \n"
797"    STRH    R0, [R4, #4] \n"
798"    MOV     R0, #0 \n"
799"    STR     R0, [R7, #0x28] \n"
800"    B       loc_FF8BB308 \n"
801"loc_FF8BB300:\n"
802"    LDRH    R0, [R8] \n"
803"    STRH    R0, [R4, #4] \n"
804"loc_FF8BB308:\n"
805"    CMP     R6, #1 \n"
806"    LDRNEH  R0, [R8, #8] \n"
807"    BNE     loc_FF8BB324 \n"
808"    LDRSH   R0, [R4, #0xC] \n"
809"    LDR     R1, =0xFF8B9FF4 \n"
810"    MOV     R2, #0x20 \n"
811"    BL      sub_FF8BF8D8 \n"
812"loc_FF8BB324:\n"
813"    STRH    R0, [R4, #0xC] \n"
814"    LDRSH   R0, [R4, #6] \n"
[1617]815"    BL      sub_FF8AC12C_my \n"        //patch
[1551]816"    LDRSH   R0, [R4, #8] \n"
817"    MOV     R1, #1 \n"
818"    BL      sub_FF8AC8E4 \n"
819"    MOV     R1, #0 \n"
820"    ADD     R0, R4, #8 \n"
821"    BL      sub_FF8AC96C \n"
822"    LDRSH   R0, [R4, #0xE] \n"
823"    BL      sub_FF8B4E5C \n"
824"    LDR     R4, =0xBB8 \n"
825"    CMP     R5, #1 \n"
826"    BNE     loc_FF8BB37C \n"
827"    LDR     R0, [R7, #0x1C] \n"
828"    MOV     R2, R4 \n"
829"    MOV     R1, #2 \n"
830"    BL      sub_FF884CC4 \n"
831"    TST     R0, #1 \n"
832"    LDRNE   R1, =0x7DB \n"
833"    LDRNE   R0, =0xFF8BA6A4 \n"
834"    BLNE    sub_FF81EC88 \n"
835"loc_FF8BB37C:\n"
836"    CMP     R6, #1 \n"
837"    LDMNEFD SP!, {R4-R8,PC} \n"
838"    LDR     R0, [R7, #0x1C] \n"
839"    MOV     R2, R4 \n"
840"    MOV     R1, #0x20 \n"
841"    BL      sub_FF884CC4 \n"
842"    TST     R0, #1 \n"
843"    LDMEQFD SP!, {R4-R8,PC} \n"
844"    LDMFD   SP!, {R4-R8,LR} \n"
845"    LDR     R0, =0xFF8BA6A4 \n"
846"    MOV     R1, #0x7E0 \n"
847"    B       sub_FF81EC88 \n"
848        );
849}
850
851
852//** sub_FF8AC12C_my  @ 0xFF8AC12C
853
854void __attribute__((naked,noinline)) sub_FF8AC12C_my(  ) {
855asm volatile (
856"    STMFD   SP!, {R4-R6,LR} \n"
857"    LDR     R5, =0x3B74 \n"
858"    MOV     R4, R0 \n"
859"    LDR     R0, [R5, #4] \n"
860"    CMP     R0, #1 \n"
861"    LDRNE   R1, =0x146 \n"
862"    LDRNE   R0, =0xFF8ABF64 \n"
863"    BLNE    sub_FF81EC88 \n"
864"    CMN     R4, #0xC00 \n"
865"    LDREQSH R4, [R5, #2] \n"
866"    CMN     R4, #0xC00 \n"
867"    MOVEQ   R1, #0x14C \n"
868"    LDREQ   R0, =0xFF8ABF64 \n"
869"    STRH    R4, [R5, #2] \n"
870"    BLEQ    sub_FF81EC88 \n"
871"    MOV     R0, R4 \n"
872//"    BL      sub_FFA0C05C \n"
873"        BL              apex2us \n"                                            // patched
874"    MOV     R4, R0 \n"
875"    BL      sub_FF8F7E60 \n"
876"    MOV     R0, R4 \n"
877"    BL      sub_FF900E9C \n"
878"    TST     R0, #1 \n"
879"    LDMEQFD SP!, {R4-R6,PC} \n"
880"    LDMFD   SP!, {R4-R6,LR} \n"
881"    LDR     R1, =0x151 \n"
882"    LDR     R0, =0xFF8ABF64 \n"
883"    B       sub_FF81EC88 \n"
884        );
885}
Note: See TracBrowser for help on using the repository browser.