source: trunk/platform/ixus120_sd940/sub/103b/capt_seq.c @ 1334

Revision 1334, 21.7 KB checked in by reyalp, 22 months ago (diff)

ixus120_sd940 updates from waterwingz in http://chdk.setepontos.com/index.php?topic=650.msg73050#msg73050

  • Corrects bug in capt_seq.c for all firmware versions.
  • Enables USB remote operation in "Synchable Remote" mode.
  • Property svn:eol-style set to native
Line 
1// IXUS120-SD940 fw 1.03B  -  rev 2
2#include "lolevel.h"
3#include "platform.h"
4#include "core.h"
5#include "conf.h"
6
7static long *nrflag = (long*)0x6718;                    // @FF94244C SD940 103b
8
9#include "../../../generic/capt_seq.c"
10
11/*----------------------------------------------------------------------
12        capt_seq_task()
13-----------------------------------------------------------------------*/
14void __attribute__((naked,noinline)) capt_seq_task() {
15 asm volatile (
16"               STMFD           SP!, {R3-R9,LR}\n"
17"               LDR     R6, =0x2988\n"
18"               LDR     R4,     =0x37B08\n"
19"               MOV     R9,     #1\n"
20"               MOV     R7,     #0\n"
21"loc_FF872FA4:\n"
22"               LDR     R0,     [R6,#4]\n"
23"               MOV     R2,     #0\n"
24"               MOV     R1,     SP\n"
25"               BL              sub_FF837DC8\n"
26"               TST     R0, #1\n"
27"               BEQ             loc_FF872FD0\n"
28"               LDR     R1, =0x5B4\n"
29"               LDR     R0, =0xFF872B20\n"
30"               BL              sub_FF81E88C\n"
31"               BL              sub_FF81E844\n"
32"               LDMFD   SP!, {R3-R9,PC}\n"
33"loc_FF872FD0:\n"
34"               LDR     R0, [SP]\n"
35"               LDR     R1, [R0]\n"
36"               CMP     R1, #0x1D\n"
37"               ADDLS   PC, PC, R1,LSL#2\n"
38"               B               loc_FF87325C\n"
39
40"loc_FF872FE4:  B       loc_FF87305C\n"
41"loc_FF872FE8:  B       loc_FF8730C0\n"
42"loc_FF872FEC:  B       loc_FF8730FC\n"
43"loc_FF872FF0:  B       loc_FF873110\n"
44"loc_FF872FF4:  B       loc_FF873108\n"
45"loc_FF872FF8:  B       loc_FF873118\n"
46"loc_FF872FFC:  B       loc_FF873120\n"
47"loc_FF873000:  B       loc_FF873128\n"
48"loc_FF873004:  B       loc_FF873180\n"
49"loc_FF873008:  B       loc_FF8731A8\n"
50"loc_FF87300C:  B       loc_FF87318C\n"
51"loc_FF873010:  B       loc_FF873198\n"
52"loc_FF873014:  B       loc_FF8731A0\n"
53"loc_FF873018:  B       loc_FF8731B0\n"
54"loc_FF87301C:  B       loc_FF8731B8\n"
55"loc_FF873020:  B       loc_FF8731C0\n"
56"loc_FF873024:  B       loc_FF8731C8\n"
57"loc_FF873028:  B       loc_FF8731D0\n"
58"loc_FF87302C:  B       loc_FF8731DC\n"
59"loc_FF873030:  B       loc_FF8731E4\n"
60"loc_FF873034:  B       loc_FF8731EC\n"
61"loc_FF873038:  B       loc_FF8731F4\n"
62"loc_FF87303C:  B       loc_FF8731FC\n"
63"loc_FF873040:  B       loc_FF873208\n"
64"loc_FF873044:  B       loc_FF873210\n"
65"loc_FF873048:  B       loc_FF873218\n"
66"loc_FF87304C:  B       loc_FF873220\n"
67"loc_FF873050:  B       loc_FF873228\n"
68"loc_FF873054:  B       loc_FF873234\n"
69"loc_FF873058:  B       loc_FF873268\n"
70
71"loc_FF87305C:\n"
72"               BL              sub_FF8738E8\n"
73"               BL              shooting_expo_param_override\n"                 // added
74"               BL              sub_FF870DD8\n"
75
76//  this code added to avoid some incorrect behavior if overrides are used.
77 //  but it can cause some unexpected side effects. In this case, remove this code!
78"               MOV R0, #0\n"
79"               STR R0, [R4,#0x24]\n"  // fixes overrides  behavior at short shutter press
80       
81"               LDR     R0, [R4,#0x24]\n"
82"               CMP     R0, #0\n"
83"               BEQ             loc_FF873268\n"
84"               BL              sub_FF872800\n"
85"               MOV     R5, R0\n"
86"               LDR     R0, [R4,#0x24]\n"
87"               CMP     R0, #0\n"
88"               BEQ             loc_FF8730A4\n"
89"               MOV     R0, #0xC\n"
90"               BL              sub_FF877A2C\n"
91"               TST     R0, #1\n"
92"               STRNE   R9, [R6,#0x10]\n"
93"               LDRNE   R0, [R5,#8]\n"
94"               ORRNE   R0, R0, #0x40000000\n"
95"               STRNE   R0, [R5,#8]\n"
96"               BNE             loc_FF873268\n"
97
98"loc_FF8730A4:\n"
99"               MOV     R0, R5\n"
100"               BL              sub_FF872AA4\n"
101"               MOV     R0, R5\n"
102
103//"             BL      sub_FF942438\n"
104"               BL              sub_FF942438_my\n"                              // patched
105
106"               TST     R0, #1\n"
107"               STRNE   R9, [R6,#0x10]\n"
108"               B               loc_FF873268\n"
109
110"loc_FF8730C0:\n"
111"               LDR     R0, [R4,#0x24]\n"
112"               CMP     R0, #0\n"
113"               BNE             loc_FF8730EC\n"
114"               MOV     R0, #0xC\n"
115"               BL              sub_FF877A2C\n"
116"               TST     R0, #1\n"
117"               LDRNE   R0, [SP]\n"
118"               MOVNE   R1, #1\n"
119"               LDRNE   R2, [R0,#0xC]\n"
120"               MOVNE   R0, #1\n"
121"               BNE             loc_FF873178\n"
122
123"loc_FF8730EC:\n"
124"               LDR     R0, [SP]\n"
125//"             BL      sub_FF873380\n"
126"               BL              sub_FF873380_my\n"                              // patched
127
128"loc_FF8730F4:\n"
129"               STR     R7, [R4,#0x24]\n"
130"               B               loc_FF873268\n"
131
132"loc_FF8730FC:\n"
133"               MOV     R0, #1\n"
134"               BL              sub_FF873B3C\n"
135"               B               loc_FF873268\n"
136
137"loc_FF873108:\n"
138"               BL              sub_FF873528\n"
139"               B               loc_FF8730F4\n"
140
141"loc_FF873110:\n"
142"               BL              sub_FF8738C8\n"
143"               B               loc_FF8730F4\n"
144
145"loc_FF873118:\n"
146"               BL              sub_FF8738D0\n"
147"               B               loc_FF873268\n"
148
149"loc_FF873120:\n"
150"               BL              sub_FF873A5C\n"
151"               B               loc_FF873184\n"
152
153"loc_FF873128:\n"
154"               LDR     R5, [R0,#0xC]\n"
155"               BL              sub_FF8738D8\n"
156"               MOV     R0, R5\n"
157"               BL              sub_FF941250\n"
158"               TST     R0, #1\n"
159"               MOV     R8, R0\n"
160"               BNE             loc_FF873168\n"
161"               BL              sub_FF884AE4\n"
162"               STR     R0, [R5,#0x18]\n"
163"               MOV     R0, R5\n"
164"               BL              sub_FF942350\n"
165"               MOV     R0, R5\n"
166"               BL              sub_FF94274C\n"
167"               MOV     R8, R0\n"
168"               LDR     R0, [R5,#0x18]\n"
169"               BL              sub_FF884CE8\n"
170"loc_FF873168:\n"
171"               BL              sub_FF8738C8\n"
172"               MOV     R2, R5\n"
173"               MOV     R1, #9\n"
174"               MOV     R0, R8\n"
175"loc_FF873178:\n"
176"               BL              sub_FF8712C4\n"
177"               B               loc_FF873268\n"
178
179"loc_FF873180:\n"
180"               BL              sub_FF873ABC\n"
181"loc_FF873184:\n"
182"               BL              sub_FF870DD8\n"
183"               B               loc_FF873268\n"
184"loc_FF87318C:\n"
185"               LDR     R0, [R4,#0x54]\n"
186"               BL              sub_FF873EC8\n"
187"               B               loc_FF873268\n"
188"loc_FF873198:\n"
189"               BL              sub_FF87417C\n"
190"               B               loc_FF873268\n"
191"loc_FF8731A0:\n"
192"               BL              sub_FF874210\n"
193"               B               loc_FF873268\n"
194"loc_FF8731A8:\n"
195"               BL              sub_FF8738C8\n"
196"               B               loc_FF873268\n"
197"loc_FF8731B0:\n"
198"               BL              sub_FF941468\n"
199"               B               loc_FF873268\n"
200"loc_FF8731B8:\n"
201"               BL              sub_FF94167C\n"
202"               B               loc_FF873268\n"
203"loc_FF8731C0:\n"
204"               BL              sub_FF941714\n"
205"               B               loc_FF873268\n"
206"loc_FF8731C8:\n"
207"               BL              sub_FF9417E4\n"
208"               B               loc_FF873268\n"
209"loc_FF8731D0:\n"
210"               MOV     R0, #0\n"
211"               BL              sub_FF941A34\n"
212"               B               loc_FF873268\n"
213"loc_FF8731DC:\n"
214"               BL              sub_FF941B84\n"
215"               B               loc_FF873268\n"
216"loc_FF8731E4:\n"
217"               BL              sub_FF941C14\n"
218"               B               loc_FF873268\n"
219"loc_FF8731EC:\n"
220"               BL              sub_FF941CD4\n"
221"               B               loc_FF873268\n"
222"loc_FF8731F4:\n"
223"               BL              sub_FF873CB4\n"
224"               B               loc_FF873268\n"
225"loc_FF8731FC:\n"
226"               BL              sub_FF873D54\n"
227"               BL              sub_FF835F18\n"
228"               B               loc_FF873268\n"
229"loc_FF873208:\n"
230"               BL              sub_FF9418B0\n"
231"               B               loc_FF873268\n"
232"loc_FF873210:\n"
233"               BL              sub_FF94191C\n"
234"               B               loc_FF873268\n"
235"loc_FF873218:\n"
236"               BL              sub_FF8761DC\n"
237"               B               loc_FF873268\n"
238"loc_FF873220:\n"
239"               BL              sub_FF876244\n"
240"               B               loc_FF873268\n"
241"loc_FF873228:\n"
242"               BL              sub_FF8762A0\n"
243"               BL              sub_FF876260\n"
244"               B               loc_FF873268\n"
245"loc_FF873234:\n"
246"               MOV     R0, #1\n"
247"               BL              sub_FF942F90\n"
248"               MOV     R0, #1\n"
249"               BL              sub_FF9430A0\n"
250"               LDRH    R0, [R4,#0x98]\n"
251"               CMP     R0, #4\n"
252"               BNE             loc_FF873268\n"
253"               BL              sub_FF876244\n"
254"               BL              sub_FF876680\n"
255"               B               loc_FF873268\n"
256
257"loc_FF87325C:\n"
258"               LDR     R1, =0x709\n"
259"               LDR     R0, =0xFF872B20\n"
260"               BL              sub_FF81E88C\n"
261
262"loc_FF873268:\n"
263"               LDR     R0, [SP]\n"
264"               LDR     R1, [R0,#4]\n"
265"               LDR     R0, [R6]\n"
266"               BL              sub_FF87C7E8\n"
267"               LDR     R5, [SP]\n"
268"               LDR     R0, [R5,#8]\n"
269"               CMP     R0, #0\n"
270"               LDREQ   R1, =0x132\n"
271"               LDREQ   R0, =0xFF872B20\n"
272"               BLEQ    sub_FF81E88C\n"
273"               STR     R7, [R5,#8]\n"
274"               B               loc_FF872FA4\n"
275        );
276}
277
278
279/*----------------------------------------------------------------------
280        sub_FF942438_my()  - capt_seq_task()
281-----------------------------------------------------------------------*/
282void __attribute__((naked,noinline)) sub_FF942438_my(){
283 asm volatile(
284"               STMFD   SP!, {R0-R8,LR}\n"
285"               MOV     R4, R0\n"
286"               BL              sub_FF94328C\n"
287"               MVN     R1, #0\n"
288"               BL              sub_FF87C81C\n"
289"               LDR     R5, =0x6718\n"
290"               LDR     R0, [R5,#0xC]\n"
291"               CMP     R0, #0\n"
292"               BNE             loc_FF942488\n"
293"               MOV     R1, #1\n"
294"               MOV     R0, #0\n"
295"               BL              sub_FF838610\n"
296"               STR     R0, [R5,#0xC]\n"
297"               MOV     R3, #0\n"
298"               STR     R3, [SP]\n"
299"               LDR     R3, =0xFF941DC4\n"
300"               LDR     R0, =0xFF9426B4\n"
301"               MOV     R2, #0x400\n"
302"               MOV     R1, #0x17\n"
303"               BL              sub_FF8385DC\n"
304"loc_FF942488:\n"
305"               MOV     R2, #4\n"
306"               ADD     R1, SP, #0x08\n"
307"               MOV     R0, #0x8A\n"
308"               BL              sub_FF884954\n"
309"               TST     R0, #1\n"
310"               LDRNE   R1, =0x3C5\n"
311"               LDRNE   R0, =0xFF94205C\n"
312"               BLNE    sub_FF81E88C\n"
313"               LDR     R6, =0x37BCC\n"
314"               LDR     R8, =0x37B08\n"
315"               LDRSH   R2, [R6,#0xC]\n"
316"               LDRSH   R1, [R6,#0xE]\n"
317"               LDR     R0, [R8,#0x8C]\n"
318"               BL              sub_FF90B570\n"
319"               BL              sub_FF85BC98\n"
320"               LDR     R3, =0x6720\n"
321"               STRH    R0, [R4,#0xA4]\n"
322"               SUB     R2, R3, #4\n"
323"               STRD    R2, [SP]\n"
324"               MOV     R1, R0\n"
325"               LDRH    R0, [R8,#0x5C]\n"
326"               LDRSH   R2, [R6,#0xC]\n"
327"               SUB     R3, R3, #8\n"
328"               BL              sub_FF9448D0\n"
329                                                                       
330                "BL      wait_until_remote_button_is_released\n"
331                "BL      capt_seq_hook_set_nr\n"
332               
333"               B               sub_FF9424E8\n"                 // go back to the ROM
334);
335}               
336
337
338       
339/*----------------------------------------------------------------------
340        sub_FF873380_my() - capt_seq_task()
341-----------------------------------------------------------------------*/
342        void __attribute__((naked,noinline)) sub_FF873380_my(){
343 asm volatile(
344"               STMFD   SP!, {R4-R6,LR}\n"
345"               LDR     R4, [R0,#0xC]\n"
346"               LDR     R6, =0x37B08\n"
347"               LDR     R0, [R4,#8]\n"
348"               MOV     R5, #0\n"
349"               ORR     R0, R0, #1\n"
350"               STR     R0, [R4,#8]\n"
351"               LDR     R0, [R6,#0x24]\n"
352"               CMP     R0, #0\n"
353"               MOVEQ   R0, #2\n"
354"               BLEQ    sub_FF86F4B8\n"
355"               BL              sub_FF8738D8\n"
356"               LDR             R0, [R6,#0x24]\n"
357"               CMP             R0, #0\n"
358"               BNE             loc_FF873448\n"
359"               MOV             R0, #0\n"
360"               BL              sub_FF942F90\n"
361"               MOV             R0, #0\n"
362"               BL              sub_FF9430A0\n"
363"               MOV             R0, R4\n"
364"               BL              sub_FF873C5C\n"
365"               MOV             R0, R4\n"
366"               BL              sub_FF940EA0\n"
367"               CMP             R0, #0\n"
368"               BEQ             loc_FF873410\n"
369"               BL              sub_FF942FD0\n"
370"               BL              sub_FF9430E4\n"
371"               BL              sub_FF943134\n"
372"               MOV             R0, R4\n"
373"               BL              sub_FF940F84\n"
374"               TST             R0, #1\n"
375"               MOVNE   R2, R4\n"
376"               LDMNEFD SP!, {R4-R6,LR}\n"
377"               MOVNE   R1, #1\n"
378"               BNE             sub_FF8712C4\n"
379"               B               loc_FF873424\n"
380"loc_FF873410:\n"
381"               MOV             R0, R4\n"
382"               BL              sub_FF940F20\n"
383"               BL              sub_FF942FD0\n"
384"               BL              sub_FF9430E4\n"
385"               BL              sub_FF943134\n"
386"loc_FF873424:\n"
387"               MOV             R0, R4\n"
388"               BL              sub_FF872AA4\n"
389"               MOV             R0, R4\n"
390"               BL              sub_FF942350\n"
391"               BL              sub_FF942DC8\n"
392"               MOV             R0, R4\n"
393
394//"             BL              sub_FF942438\n"
395"               BL              sub_FF942438_my\n"
396
397"               MOV             R5, R0\n"
398"               BL              capt_seq_hook_raw_here\n"  //----------->>
399"               B               loc_FF873458\n"
400// ---------------------------------------------------------------------------
401
402"loc_FF873448:\n"
403"               LDR     R0, =0x2988\n"
404"               LDR     R0, [R0,#0x10]\n"
405"               CMP     R0, #0\n"
406"               MOVNE   R5, #0x1D\n"
407
408"loc_FF873458:\n"
409"               BL              sub_FF876244\n"
410"               BL              sub_FF87628C\n"
411"               BL              sub_FF8762CC\n"
412"               MOV     R2, R4\n"
413"               MOV     R1, #1\n"
414"               MOV     R0, R5\n"
415"               BL              sub_FF8712C4\n"
416"               BL              sub_FF9426F0\n"
417"               CMP     R0, #0\n"
418"               LDRNE   R0, [R4,#8]\n"
419"               ORRNE   R0, R0, #0x2000\n"
420"               STRNE   R0, [R4,#8]\n"
421"               LDMFD   SP!, {R4-R6,PC}\n"
422        ) ;
423}
424
425
426/*----------------------------------------------------------------------
427        exp_drv_task()
428-----------------------------------------------------------------------*/
429void __attribute__((naked,noinline)) exp_drv_task() {
430 asm volatile(
431"               STMFD   SP!, {R4-R8,LR}\n"
432"               SUB     SP, SP, #0x20\n"
433"               LDR     R8, =0xBB8\n"
434"               LDR     R7, =0x3C80\n"
435"               LDR     R5, =0x3C760\n"
436"               MOV     R0, #0\n"
437"               ADD     R6, SP, #0x10\n"
438"               STR     R0, [SP,#0x0C]\n"
439"loc_FF8B2FA0:\n"
440"               LDR     R0, [R7,#0x20]\n"
441"               MOV     R2, #0\n"
442"               ADD     R1, SP, #0x1C\n"
443"               BL              sub_FF837DC8\n"
444"               LDR     R0, [SP,#0x0C]\n"
445"               CMP     R0, #1\n"
446"               BNE             loc_FF8B2FEC\n"
447"               LDR     R0, [SP,#0x1C]\n"
448"               LDR     R0, [R0]\n"
449"               CMP     R0, #0x13\n"
450"               CMPNE   R0, #0x14\n"
451"               CMPNE   R0, #0x15\n"
452"               CMPNE   R0, #0x16\n"
453"               BEQ             loc_FF8B3108\n"
454"               CMP     R0, #0x28\n"
455"               BEQ             loc_FF8B30E0\n"
456"               ADD     R1, SP, #0x0C\n"
457"               MOV     R0, #0\n"
458"               BL              sub_FF8B2F30\n"
459"loc_FF8B2FEC:\n"
460"               LDR     R0, [SP,#0x1C]\n"
461"               LDR     R1, [R0]\n"
462"               CMP     R1, #0x2D\n"
463"               BNE             loc_FF8B301C\n"
464"               LDR     R0, [SP,#0x1C]\n"
465"               BL              sub_FF8B41F0\n"
466"               LDR     R0, [R7,#0x1C]\n"
467"               MOV     R1, #1\n"
468"               BL              sub_FF87C7E8\n"
469"               BL              sub_FF81E844\n"
470"               ADD     SP, SP, #0x20\n"
471"               LDMFD   SP!, {R4-R8,PC}\n"
472"loc_FF8B301C:\n"
473"               CMP     R1, #0x2C\n"
474"               BNE             loc_FF8B3038\n"
475"               LDR     R2, [R0,#0x8C]!\n"
476"               LDR     R1, [R0,#4]\n"
477"               MOV     R0, R1\n"
478"               BLX     R2\n"
479"               B               loc_FF8B3530\n"
480"loc_FF8B3038:\n"
481"               CMP     R1, #0x26\n"
482"               BNE             loc_FF8B3088\n"
483"               LDR     R0, [R7,#0x1C]\n"
484"               MOV     R1, #0x80\n"
485"               BL              sub_FF87C81C\n"
486"               LDR     R0, =0xFF8AF690\n"
487"               MOV     R1, #0x80\n"
488"               BL              sub_FF936260\n"
489"               LDR     R0, [R7,#0x1C]\n"
490"               MOV     R2, R8\n"
491"               MOV     R1, #0x80\n"
492"               BL              sub_FF87C728\n"
493"               TST     R0, #1\n"
494"               LDRNE   R1, =0xE54\n"
495"               BNE             loc_FF8B30CC\n"
496"loc_FF8B3074:\n"
497"               LDR     R1, [SP,#0x1C]\n"
498"               LDR     R0, [R1,#0x90]\n"
499"               LDR     R1, [R1,#0x8C]\n"
500"               BLX             R1\n"
501"               B               loc_FF8B3530\n"
502"loc_FF8B3088:\n"
503"               CMP     R1, #0x27\n"
504"               BNE             loc_FF8B30D8\n"
505"               ADD     R1, SP, #0xC\n"
506"               BL              sub_FF8B2F30\n"
507"               LDR     R0, [R7,#0x1C]\n"
508"               MOV     R1, #0x100\n"
509"               BL              sub_FF87C81C\n"
510"               LDR     R0, =0xFF8AF6A0\n"
511"               MOV     R1, #0x100\n"
512"               BL              sub_FF9364E8\n"
513"               LDR     R0, [R7,#0x1C]\n"
514"               MOV     R2, R8\n"
515"               MOV     R1, #0x100\n"
516"               BL              sub_FF87C728\n"
517"               TST     R0, #1\n"
518"               BEQ             loc_FF8B3074\n"
519"               LDR     R1, =0xE5E\n"
520"loc_FF8B30CC:\n"
521"               LDR     R0, =0xFF8AFD04\n"     
522"               BL              sub_FF81E88C\n"
523"               B               loc_FF8B3074\n"
524"loc_FF8B30D8:\n"
525"               CMP     R1, #0x28\n"
526"               BNE             loc_FF8B30F0\n"
527"loc_FF8B30E0:\n"
528"               LDR     R0, [SP,#0x1C]\n"
529"               ADD     R1, SP, #0x0C\n"
530"               BL              sub_FF8B2F30\n"
531"               B               loc_FF8B3074\n"
532"loc_FF8B30F0:\n"
533"               CMP     R1, #0x2B\n"
534"               BNE             loc_FF8B3108\n"
535"               BL              sub_FF8A31A0\n"
536"               BL              sub_FF8A3DC4\n"
537"               BL              sub_FF8A3918\n"
538"               B               loc_FF8B3074\n"
539"loc_FF8B3108:\n"
540"               LDR     R0, [SP,#0x1C]\n"
541"               MOV     R4, #1\n"
542"               LDR     R1, [R0]\n"
543"               CMP     R1, #0x11\n"
544"               CMPNE   R1, #0x12\n"
545"               BNE             loc_FF8B3178\n"
546"               LDR     R1, [R0,#0x7C]\n"
547"               ADD     R1, R1, R1,LSL#1\n"
548"               ADD     R1, R0, R1,LSL#2\n"
549"               SUB     R1, R1, #8\n"
550"               LDMIA   R1, {R2-R4}\n"
551"               STMIA   R6, {R2-R4}\n"
552"               BL              sub_FF8B1844\n"
553"               LDR     R0, [SP,#0x1C]\n"
554"               LDR     R1, [R0,#0x7C]\n"
555"               LDR     R3, [R0,#0x8C]\n"
556"               LDR     R2, [R0,#0x90]\n"
557"               ADD     R0, R0, #4\n"
558"               BLX     R3\n"
559"               LDR     R0, [SP,#0x1C]\n"
560"               BL              sub_FF8B45B0\n"
561"               LDR     R0, [SP,#0x1C]\n"
562"               LDR     R1, [R0,#0x7C]\n"
563"               LDR     R3, [R0,#0x94]\n"
564"               LDR     R2, [R0,#0x98]\n"
565"               ADD     R0, R0, #4\n"
566"               BLX     R3\n"
567"               B               loc_FF8B3470\n"
568"loc_FF8B3178:\n"
569"               CMP     R1, #0x13\n"
570"               CMPNE   R1, #0x14\n"
571"               CMPNE   R1, #0x15\n"
572"               CMPNE   R1, #0x16\n"
573"               BNE             loc_FF8B3230\n"
574"               ADD     R3, SP, #0x0C\n"
575"               MOV     R2, SP\n"
576"               ADD     R1, SP, #0x10\n"
577"               BL              sub_FF8B1B2C\n"
578"               CMP     R0, #1\n"
579"               MOV     R4, R0\n"
580"               CMPNE   R4, #5\n"
581"               BNE             loc_FF8B31CC\n"
582"               LDR     R0, [SP,#0x1C]\n"
583"               MOV     R2, R4\n"
584"               LDR     R1, [R0,#0x7C]!\n"
585"               LDR     R12, [R0,#0x10]!\n"
586"               LDR     R3, [R0,#4]\n"
587"               MOV     R0, SP\n"
588"               BLX     R12\n"
589"               B               loc_FF8B3204\n"
590"loc_FF8B31CC:\n"
591"               LDR     R0, [SP,#0x1C]\n"
592"               CMP     R4, #2\n"
593"               LDR     R3, [R0,#0x90]\n"
594"               CMPNE   R4, #6\n"
595"               BNE             loc_FF8B3218\n"
596"               LDR     R12, [R0,#0x8C]\n"
597"               MOV     R0, SP\n"
598"               MOV     R2, R4\n"
599"               MOV     R1, #1\n"
600"               BLX     R12\n"
601"               LDR     R0, [SP,#0x1C]\n"
602"               MOV     R2, SP\n"
603"               ADD     R1, SP, #0x10\n"
604"               BL              sub_FF8B2C44\n"
605"loc_FF8B3204:\n"
606"               LDR     R0, [SP,#0x1C]\n"
607"               LDR     R2, [SP,#0x0C]\n"
608"               MOV     R1, R4\n"
609"               BL              sub_FF8B2ED0\n"
610"               B               loc_FF8B3470\n"
611"loc_FF8B3218:\n"
612"               LDR     R1, [R0,#0x7C]\n"
613"               LDR     R12, [R0,#0x8C]\n"
614"               ADD     R0, R0, #4\n"
615"               MOV     R2, R4\n"
616"               BLX     R12\n"
617"               B               loc_FF8B3470\n"
618"loc_FF8B3230:\n"
619"               CMP     R1, #0x22\n"
620"               CMPNE   R1, #0x23\n"
621"               BNE             loc_FF8B327C\n"
622"               LDR     R1, [R0,#0x7C]\n"
623"               ADD     R1, R1, R1,LSL#1\n"
624"               ADD     R1, R0, R1,LSL#2\n"
625"               SUB     R1, R1, #8\n"
626"               LDMIA   R1, {R2-R4}\n"
627"               STMIA   R6, {R2-R4}\n"
628"               BL              sub_FF8B0D94\n"
629"               LDR             R0, [SP,#0x1C]\n"
630"               LDR             R1, [R0,#0x7C]\n"
631"               LDR             R3, [R0,#0x8C]\n"
632"               LDR             R2, [R0,#0x90]\n"
633"               ADD             R0, R0, #4\n"
634"               BLX             R3\n"
635"               LDR             R0, [SP,#0x1C]\n"
636"               BL              sub_FF8B1088\n"
637"               B               loc_FF8B3470\n"
638"loc_FF8B327C:\n"
639"               ADD     R1, R0, #4\n"
640"               LDMIA   R1, {R2,R3,R12}\n"
641"               STMIA   R6, {R2,R3,R12}\n"
642"               LDR     R1, [R0]\n"
643"               CMP     R1, #0x25\n"
644"               ADDLS   PC, PC, R1,LSL#2\n"
645"               B                       loc_FF8B3450\n"
646
647"loc_FF8B3298:  B       loc_FF8B3330\n"
648"loc_FF8B329C:  B       loc_FF8B3330\n"
649"loc_FF8B32A0:  B       loc_FF8B3338\n"
650"loc_FF8B32A4:  B       loc_FF8B3340\n"
651"loc_FF8B32A8:  B       loc_FF8B3340\n"
652"loc_FF8B32AC:  B       loc_FF8B3340\n"
653"loc_FF8B32B0:  B       loc_FF8B3330\n"
654"loc_FF8B32B4:  B       loc_FF8B3338\n"
655"loc_FF8B32B8:  B       loc_FF8B3340\n"
656"loc_FF8B32BC:  B       loc_FF8B3340\n"
657"loc_FF8B32C0:  B       loc_FF8B3358\n"
658"loc_FF8B32C4:  B       loc_FF8B3358\n"
659"loc_FF8B32C8:  B       loc_FF8B3444\n"
660"loc_FF8B32CC:  B       loc_FF8B344C\n"
661"loc_FF8B32D0:  B       loc_FF8B344C\n"
662"loc_FF8B32D4:  B       loc_FF8B344C\n"
663"loc_FF8B32D8:  B       loc_FF8B344C\n"
664"loc_FF8B32DC:  B       loc_FF8B3450\n"
665"loc_FF8B32E0:  B       loc_FF8B3450\n"
666"loc_FF8B32E4:  B       loc_FF8B3450\n"
667"loc_FF8B32E8:  B       loc_FF8B3450\n"
668"loc_FF8B32EC:  B       loc_FF8B3450\n"
669"loc_FF8B32F0:  B       loc_FF8B3450\n"
670"loc_FF8B32F4:  B       loc_FF8B3348\n"
671"loc_FF8B32F8:  B       loc_FF8B3350\n"
672"loc_FF8B32FC:  B       loc_FF8B3350\n"
673"loc_FF8B3300:  B       loc_FF8B3364\n"
674"loc_FF8B3304:  B       loc_FF8B3364\n"
675"loc_FF8B3308:  B       loc_FF8B336C\n"
676"loc_FF8B330C:  B       loc_FF8B339C\n"
677"loc_FF8B3310:  B       loc_FF8B33CC\n"
678"loc_FF8B3314:  B       loc_FF8B33FC\n"
679"loc_FF8B3318:  B       loc_FF8B342C\n"
680"loc_FF8B331C:  B       loc_FF8B342C\n"
681"loc_FF8B3320:  B       loc_FF8B3450\n"
682"loc_FF8B3324:  B       loc_FF8B3450\n"
683"loc_FF8B3328:  B       loc_FF8B3434\n"
684"loc_FF8B332C:  B       loc_FF8B343C\n"
685
686
687"loc_FF8B3330:\n"
688"               BL              sub_FF8AFBA8\n"
689"               B               loc_FF8B3450\n"
690
691"loc_FF8B3338:\n"
692"               BL              sub_FF8AFE30\n"
693"               B               loc_FF8B3450\n"
694
695"loc_FF8B3340:\n"
696"               BL              sub_FF8B0038\n"
697"               B               loc_FF8B3450\n"
698
699"loc_FF8B3348:\n"
700"               BL              sub_FF8B02B0\n"
701"               B               loc_FF8B3450\n"
702
703"loc_FF8B3350:\n"
704"               BL              sub_FF8B04A8\n"
705"               B               loc_FF8B3450\n"
706
707"loc_FF8B3358:\n"
708//"             BL              sub_FF8B0764\n"
709"               BL              sub_FF8B0764_my\n"     //----->>>
710
711"               MOV     R4, #0\n"
712"               B               loc_FF8B3450\n"
713
714"loc_FF8B3364:\n"
715"               BL              sub_FF8B08A4\n"
716"               B               loc_FF8B3450\n"
717
718"loc_FF8B336C:\n"
719"               LDRH    R1, [R0,#4]\n"
720"               STRH    R1, [SP,#0x10]\n"
721"               LDRH    R1, [R5,#2]\n"
722"               STRH    R1, [SP,#0x12]\n"
723"               LDRH    R1, [R5,#4]\n"
724"               STRH    R1, [SP,#0x14]\n"
725"               LDRH    R1, [R5,#6]\n"
726"               STRH    R1, [SP,#0x16]\n"
727"               LDRH    R1, [R0,#0xC]\n"
728"               STRH    R1, [SP,#0x18]\n"
729"               BL              sub_FF8B4264\n"
730"               B               loc_FF8B3450\n"
731
732"loc_FF8B339C:\n"
733"               LDRH    R1, [R0,#4]\n"
734"               STRH    R1, [SP,#0x10]\n"
735"               LDRH    R1, [R5,#2]\n"
736"               STRH    R1, [SP,#0x12]\n"
737"               LDRH    R1, [R5,#4]\n"
738"               STRH    R1, [SP,#0x14]\n"
739"               LDRH    R1, [R5,#6]\n"
740"               STRH    R1, [SP,#0x16]\n"
741"               LDRH    R1, [R5,#8]\n"
742"               STRH    R1, [SP,#0x18]\n"
743"               BL              sub_FF8B43C8\n"
744"               B               loc_FF8B3450\n"
745
746"loc_FF8B33CC:\n"
747"               LDRH    R1, [R5]\n"
748"               STRH    R1, [SP,#0x10]\n"
749"               LDRH    R1, [R0,#6]\n"
750"               STRH    R1, [SP,#0x12]\n"
751"               LDRH    R1, [R5,#4]\n"
752"               STRH    R1, [SP,#0x14]\n"
753"               LDRH    R1, [R5,#6]\n"
754"               STRH    R1, [SP,#0x16]\n"
755"               LDRH    R1, [R5,#8]\n"
756"               STRH    R1, [SP,#0x18]\n"
757"               BL              sub_FF8B4474\n"
758"               B               loc_FF8B3450\n"
759
760"loc_FF8B33FC:\n"
761"               LDRH    R1, [R5]\n"
762"               STRH    R1, [SP,#0x10]\n"
763"               LDRH    R1, [R5,#2]\n"
764"               STRH    R1, [SP,#0x12]\n"
765"               LDRH    R1, [R5,#4]\n"
766"               STRH    R1, [SP,#0x14]\n"
767"               LDRH    R1, [R5,#6]\n"
768"               STRH    R1, [SP,#0x16]\n"
769"               LDRH    R1, [R0,#0xC]\n"
770"               STRH    R1, [SP,#0x18]\n"
771"               BL              sub_FF8B4514\n"
772"               B               loc_FF8B3450\n"
773
774"loc_FF8B342C:\n"
775"               BL              sub_FF8B0BEC\n"
776"               B               loc_FF8B3450\n"
777
778"loc_FF8B3434:\n"
779"               BL              sub_FF8B118C\n"
780"               B               loc_FF8B3450\n"
781
782"loc_FF8B343C:\n"
783"               BL              sub_FF8B13C8\n"
784"               B               loc_FF8B3450\n"
785
786"loc_FF8B3444:\n"
787"               BL              sub_FF8B1544\n"
788"               B               loc_FF8B3450\n"
789
790"loc_FF8B344C:\n"
791"               BL              sub_FF8B16E0\n"
792
793"loc_FF8B3450:\n"
794"               LDR     R0, [SP,#0x1C]\n"
795"               LDR     R1, [R0,#0x7C]\n"
796"               LDR     R3, [R0,#0x8C]\n"
797"               LDR     R2, [R0,#0x90]\n"
798"               ADD     R0, R0, #4\n"
799"               BLX     R3\n"
800"               CMP     R4, #1\n"
801"               BNE             loc_FF8B34B8\n"
802
803"loc_FF8B3470:\n"
804"               LDR     R0, [SP,#0x1C]\n"
805"               MOV     R2, #0xC\n"
806"               LDR     R1, [R0,#0x7C]\n"
807"               ADD     R1, R1, R1,LSL#1\n"
808"               ADD     R0, R0, R1,LSL#2\n"
809"               SUB     R4, R0, #8\n"
810"               LDR     R0, =0x3C760\n"
811"               ADD     R1, SP, #0x10\n"
812"               BL              sub_FFB077E8\n"
813"               LDR     R0, =0x3C76C\n"
814"               MOV     R2, #0xC\n"
815"               ADD     R1, SP, #0x10\n"
816"               BL              sub_FFB077E8\n"
817"               LDR     R0, =0x3C778\n"
818"               MOV     R2, #0xC\n"
819"               MOV     R1, R4\n"
820"               BL              sub_FFB077E8\n"
821"               B               loc_FF8B3530\n"
822"loc_FF8B34B8:\n"
823"               LDR     R0, [SP,#0x1C]\n"
824"               LDR     R0, [R0]\n"
825"               CMP     R0, #0xB\n"
826"               BNE             loc_FF8B3500\n"
827"               MOV     R3, #0\n"
828"               STR     R3, [SP]\n"
829"               MOV     R3, #1\n"
830"               MOV     R2, #1\n"
831"               MOV     R1, #1\n"
832"               MOV     R0, #0\n"
833"               BL              sub_FF8AF9B0\n"
834"               MOV     R3, #0\n"
835"               STR     R3, [SP]\n"
836"               MOV     R3, #1\n"
837"               MOV     R2, #1\n"
838"               MOV     R1, #1\n"
839"               MOV     R0, #0\n"
840"               B               loc_FF8B352C\n"
841"loc_FF8B3500:\n"
842"               MOV     R3, #1\n"
843"               MOV     R2, #1\n"
844"               MOV     R1, #1\n"
845"               MOV     R0, #1\n"
846"               STR     R3, [SP]\n"
847"               BL              sub_FF8AF9B0\n"
848"               MOV     R3, #1\n"
849"               MOV     R2, #1\n"
850"               MOV     R1, #1\n"
851"               MOV     R0, #1\n"
852"               STR     R3, [SP]\n"
853
854"loc_FF8B352C:\n"
855"               BL              sub_FF8AFAF0\n"
856
857"loc_FF8B3530:\n"
858"               LDR             R0, [SP,#0x1C]\n"
859"               BL              sub_FF8B41F0\n"
860"               B               loc_FF8B2FA0\n"
861 );
862}
863
864
865/*----------------------------------------------------------------------
866        sub_FF8B0764_my() - exp_drv_task()
867-----------------------------------------------------------------------*/
868void __attribute__((naked,noinline)) sub_FF8B0764_my(){
869 asm volatile(
870"               STMFD   SP!, {R4-R8,LR}\n"
871"               LDR     R7, =0x3C80\n"
872"               MOV     R4, R0\n"
873"               LDR     R0, [R7,#0x1C]\n"
874"               MOV     R1, #0x3E\n"
875"               BL              sub_FF87C81C\n"
876"               LDRSH   R0, [R4,#4]\n"
877"               MOV     R2, #0\n"
878"               MOV     R1, #0\n"
879"               BL              sub_FF8AF714\n"
880"               MOV     R6, R0\n"
881"               LDRSH   R0, [R4,#6]\n"
882"               BL              sub_FF8AF824\n"
883"               LDRSH   R0, [R4,#8]\n"
884"               BL              sub_FF8AF87C\n"
885"               LDRSH   R0, [R4,#0xA]\n"
886"               BL              sub_FF8AF8D4\n"
887"               LDRSH   R0, [R4,#0xC]\n"
888"               MOV     R1, #0\n"
889"               BL              sub_FF8AF92C\n"
890"               MOV     R5, R0\n"
891"               LDR     R0, [R4]\n"
892"               LDR     R8, =0x3C778\n"
893"               CMP     R0, #0xB\n"
894"               MOVEQ   R6, #0\n"
895"               MOVEQ   R5, #0\n"
896"               BEQ             loc_FF8B07F8\n"
897"               CMP     R6, #1\n"
898"               BNE             loc_FF8B07F8\n"
899"               LDRSH   R0, [R4,#4]\n"
900"               LDR     R1, =0xFF8AF680\n"
901"               MOV     R2, #2\n"
902"               BL              sub_FF9363B4\n"
903"               STRH    R0, [R4,#4]\n"
904"               MOV     R0, #0\n"
905"               STR     R0, [R7,#0x28]\n"
906"               B               loc_FF8B0800\n"
907"loc_FF8B07F8:\n"
908"               LDRH    R0, [R8]\n"
909"               STRH    R0, [R4,#4]\n"
910"loc_FF8B0800:\n"
911"               CMP     R5, #1\n"
912"               LDRNEH  R0, [R8,#8]\n"
913"               BNE             loc_FF8B081C\n"
914"               LDRSH   R0, [R4,#0xC]\n"
915"               LDR     R1, =0xFF8AF704\n"
916"               MOV     R2, #0x20\n"
917"               BL              sub_FF8B4220\n"
918"loc_FF8B081C:\n"
919"               STRH    R0, [R4,#0xC]\n"
920"               LDRSH   R0, [R4, #6] \n"
921
922//"             BL              sub_FF8A2F10\n"
923"               BL              sub_FF8A2F10_my\n"   //------------->>>
924
925"               LDRSH   R0, [R4,#8]\n"
926"               MOV     R1, #1\n"
927"               BL              sub_FF8A3660\n"
928"               MOV     R1, #0\n"
929"               ADD     R0, R4, #8\n"
930"               BL              sub_FF8A36E8\n"
931"               LDRSH   R0, [R4,#0xE]\n"
932"               BL              sub_FF8AB1D4\n"
933"               LDR     R4, =0xBB8\n"
934"               CMP     R6, #1\n"
935"               BNE             loc_FF8B0874\n"
936"               LDR     R0, [R7,#0x1C]\n"
937"               MOV     R2, R4\n"
938"               MOV     R1, #2\n"
939"               BL              sub_FF87C728\n"
940"               TST     R0, #1\n"
941"               SUBNE   R1, R4, #0x620\n"
942"               LDRNE   R0, =0xFF8AFD04\n"
943"               BLNE    sub_FF81E88C\n"
944"loc_FF8B0874:\n"
945"               CMP     R5, #1\n"
946"               LDMNEFD SP!, {R4-R8,PC}\n"
947"               LDR     R0, [R7,#0x1C]\n"
948"               MOV     R2, R4\n"
949"               MOV     R1, #0x20\n"
950"               BL              sub_FF87C728\n"
951"               TST     R0, #1\n"
952"               LDRNE   R1, =0x59D\n"
953"               LDRNE   R0, =0xFF8AFD04\n"
954"               LDMNEFD SP!, {R4-R8,LR}\n"
955"               BNE             sub_FF81E88C\n"
956"               LDMFD   SP!, {R4-R8,PC}\n"
957        );
958}
959
960
961/*----------------------------------------------------------------------
962        sub_FF8A2F10_my() - exp_drv_task()
963-----------------------------------------------------------------------*/
964void __attribute__((naked,noinline)) sub_FF8A2F10_my(){
965 asm volatile( 
966"               STMFD   SP!, {R4-R6,LR}\n"
967"               LDR     R5, =0x3998\n"
968"               MOV     R4, R0\n"
969"               LDR     R0, [R5,#4]\n"
970"               CMP     R0, #1\n"
971"               LDRNE   R1, =0x146\n"
972"               LDRNE   R0, =0xFF8A2D14\n"
973"               BLNE    sub_FF81E88C\n"
974"               CMN     R4, #0xC00\n"
975"               LDREQSH R4, [R5,#2]\n"
976"               CMN     R4, #0xC00\n"
977"               MOVEQ   R1, #0x14C\n"
978"               LDREQ   R0, =0xFF8A2D14\n"
979"               STRH    R4, [R5,#2]\n"
980"               BLEQ    sub_FF81E88C\n"
981"               MOV     R0, R4\n"
982
983//"             BL      sub_FF9D53A0\n"                 // old??? apex2us
984"               BL      apex2us\n"              //--------------->>
985
986"               MOV     R4, R0\n"
987//"             BL              nullsub_64\n"
988"               MOV     R0, R4\n"
989"               BL              sub_FF8DB784\n"
990"               TST     R0, #1\n"
991"               LDRNE   R1, =0x151\n"
992"               LDMNEFD SP!, {R4-R6,LR}\n"
993"               LDRNE   R0, =0xFF8A2D14\n"
994"               BNE             sub_FF81E88C\n"
995"               LDMFD   SP!, {R4-R6,PC}\n"
996        );
997}
998
999
Note: See TracBrowser for help on using the repository browser.