source: branches/release-1_0/platform/ixus220_elph300hs/sub/101g/capt_seq.c @ 1599

Revision 1599, 28.7 KB checked in by philmoz, 17 months ago (diff)

Fix incorrect code in capt_seq.c for IXUS220 (thx mlands).
http://chdk.setepontos.com/index.php?topic=7409.msg80347#msg80347

  • Property svn:eol-style set to native
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4
5static long *nrflag = (long*)(0x7514+0x8);  // FF18775C & FF1877C8
6#define NR_AUTO (0)                                                     // have to explictly reset value back to 0 to enable auto
7#define PAUSE_FOR_FILE_COUNTER 100          // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated
8
9#include "../../../generic/capt_seq.c"
10
11//void __attribute__((naked,noinline)) hangdebug() {
12//      debug_led(1);
13//      while(1);
14//}
15
16void __attribute__((naked,noinline)) capt_seq_task() {
17// FF882920   IXUS 220: DONE
18
19asm volatile (
20
21        "STMFD SP!, {R3-R9,LR}\n"
22        "LDR    R5, =0x3D48C\n"
23        "LDR    R7, =0x2E28\n"
24        "MOV    R6, #0\n"
25
26"loc_FF882930:\n"
27        "LDR    R0, [R7,#4]\n"
28        "MOV    R2, #0\n"
29        "MOV    R1, SP\n"
30        "BL             sub_FF83B5B4\n"
31        "TST    R0, #1\n"
32        "BEQ    loc_FF88295C\n"
33        "LDR    R1, =0x476\n"
34        "LDR    R0, =0xFF882448\n"      // aSsshoottask_c at 0xFF882448
35        "BL             _DebugAssert\n"
36        "BL             _ExitTask\n"
37        "LDMFD SP!, {R3-R9,PC}\n"
38
39"loc_FF88295C:\n"
40        "LDR    R0, [SP]\n"
41        "LDR    R1, [R0]\n"
42        "CMP    R1, #0x23\n"
43        "ADDCC  PC, PC, R1,LSL#2\n"
44
45"                 B       loc_FF882BA0\n"
46"                 B       loc_FF8829FC\n"
47"                 B       loc_FF882A14\n"
48"                 B       loc_FF882A40\n"
49"                 B       loc_FF882A54\n"
50"                 B       loc_FF882A4C\n"
51"                 B       loc_FF882A60\n"
52"                 B       loc_FF882A68\n"
53"                 B       loc_FF882A70\n"
54"                 B       loc_FF882A8C\n"
55"                 B       loc_FF882ACC\n"
56"                 B       loc_FF882A98\n"
57"                 B       loc_FF882AA4\n"
58"                 B       loc_FF882AAC\n"
59"                 B       loc_FF882AB4\n"
60"                 B       loc_FF882ABC\n"
61"                 B       loc_FF882AC4\n"
62"                 B       loc_FF882AD4\n"
63"                 B       loc_FF882ADC\n"
64"                 B       loc_FF882AE4\n"
65"                 B       loc_FF882AEC\n"
66"                 B       loc_FF882AF4\n"
67"                 B       loc_FF882B00\n"
68"                 B       loc_FF882B08\n"
69"                 B       loc_FF882B10\n"
70"                 B       loc_FF882B18\n"
71"                 B       loc_FF882B20\n"
72"                 B       loc_FF882B2C\n"
73"                 B       loc_FF882B34\n"
74"                 B       loc_FF882B3C\n"
75"                 B       loc_FF882B44\n"
76"                 B       loc_FF882B4C\n"
77"                 B       loc_FF882B54\n"
78"                 B       loc_FF882B5C\n"
79"                 B       loc_FF882B68\n"
80"                 B       loc_FF882BAC\n"
81
82// jump table entry 0
83"loc_FF8829FC:\n"
84
85"               BL      shooting_expo_iso_override\n"               // added
86
87"               BL      sub_FF88319C \n"
88
89"               BL      shooting_expo_param_override\n"                 // added
90
91"               BL      sub_FF8800A8 \n"
92
93"               MOV     R0, #0\n"                                                       // added
94"               STR     R0, [R5,#0x28]\n"                                       // added, fixes overrides  behavior at short shutter press (from S95)
95
96//"             LDR     R0, [R5,#0x28] \n"                                              // above two lines make this code redundant
97//"             CMP     R0, #0 \n"                                                              // above two lines make this code redundant
98//"             BLNE    sub_FF184F18 \n"                                        // above two lines make this code redundant
99
100"               B       loc_FF882BAC \n"
101
102// jump table entry 1
103"loc_FF882A14: \n"
104"               LDR             R8, [R0,#0xC] \n"
105"       MOV     R0, R8 \n"
106
107"       BL      sub_FF98B018 \n"
108
109"       BL      capt_seq_hook_raw_here\n"           // added                                     
110
111"       MOV     R4, R0 \n"
112"       MOV     R2, R8 \n"
113"       MOV     R1, #1 \n"
114"       BL      sub_FF880A98 \n"
115"       TST     R4, #1 \n"
116//"       BNE     loc_FF075040 \n"
117//"       MOV     R0, R8 \n"
118//"       BL      sub_FF1847F0 \n"
119        "       MOVEQ   R0, R8 \n"                      // IXUS 220
120        "       BLEQ    sub_FF98AA38 \n"                        // IXUS 220
121"       B       loc_FF882BAC \n"
122
123"loc_FF075040: \n"                                                              // IXUS 220 to be checked if not working
124"               BL              sub_FF1847C0 \n"                                // IXUS 220 to be checked if not working
125"               B               loc_FF882BAC \n"                                // IXUS 220 to be checked if not working
126
127// jump table entry 2
128"loc_FF882A40: \n"
129"               MOV     R0, #1 \n"
130"               BL      sub_FF88347C \n"
131"               B       loc_FF882BAC \n"
132
133// jump table entry 4
134"loc_FF882A4C: \n"
135"               BL      sub_FF882DD8 \n"
136"               B       loc_FF075060 \n"
137
138// jump table entry 3
139"loc_FF882A54: \n"
140"               BL      sub_FF88317C \n"
141"loc_FF075060: \n"
142"               STR     R6, [R5,#0x28] \n"
143"               B       loc_FF882BAC \n"
144
145// jump table entry 5
146"loc_FF882A60: \n"
147"               BL      sub_FF883184 \n"
148"               B       loc_FF882BAC \n"
149
150// jump table entry 6
151"loc_FF882A68: \n"
152"               BL      sub_FF883370 \n"
153"               B       loc_FF882A90 \n"
154
155// jump table entry 7
156"loc_FF882A70: \n"
157"               LDR     R4, [R0,#0xC] \n"
158"       MOV R0, R4 \n"
159"               BL      sub_FF98B1DC \n"
160"       MOV R2, R4 \n"
161"       MOV R1, #9 \n"
162"       BL  sub_FF880A98 \n"
163"               B       loc_FF882BAC \n"
164
165// jump table entry 8
166"loc_FF882A8C: \n"
167"               BL      sub_FF8833E4 \n"
168"loc_FF882A90: \n"
169"               BL      sub_FF8800A8 \n"
170"               B       loc_FF882BAC \n"
171
172// jump table entry 10
173"loc_FF882A98: \n"
174"               LDR     R0, [R5,#0x58] \n"
175"               BL      sub_FF883B70 \n"
176"               B       loc_FF882BAC \n"
177
178// jump table entry 11
179"loc_FF882AA4: \n"
180"               BL      sub_FF883E44 \n"
181"               B       loc_FF882BAC \n"
182
183// jump table entry 12
184"loc_FF882AAC: \n"
185"               BL      sub_FF883EA8 \n"
186"               B       loc_FF882BAC \n"
187
188// jump table entry 13
189"loc_FF882AB4: \n"
190"               BL      sub_FF8840A4 \n"
191"               B       loc_FF882BAC \n"
192
193// jump table entry 14
194"loc_FF882ABC: \n"
195"               BL      sub_FF8844F4 \n"
196"               B       loc_FF882BAC \n"
197
198// jump table entry 15
199"loc_FF882AC4: \n"
200"               BL      sub_FF8845A4 \n"
201"               B       loc_FF882BAC \n"
202
203// jump table entry 9
204"loc_FF882ACC: \n"
205"               BL      sub_FF88317C \n"
206"               B       loc_FF882BAC \n"
207
208// jump table entry 16
209"loc_FF882AD4: \n"
210"               BL      sub_FF989D5C \n"
211"               B       loc_FF882BAC \n"
212
213// jump table entry 17
214"loc_FF882ADC: \n"
215"               BL      sub_FF989F70 \n"
216"               B       loc_FF882BAC \n"
217
218// jump table entry 18
219"loc_FF882AE4: \n"
220"               BL      sub_FF98A014 \n"
221"               B       loc_FF882BAC \n"
222
223// jump table entry 19
224"loc_FF882AEC: \n"
225"               BL      sub_FF98A0E4 \n"
226"               B       loc_FF882BAC \n"
227
228// jump table entry 20
229"loc_FF882AF4: \n"
230"       MOV R0, #0 \n"
231"               BL      sub_FF98A354 \n"
232"               B       loc_FF882BAC \n"
233
234// jump table entry 21
235"loc_FF882B00: \n"
236"               BL      sub_FF98A4BC \n"
237"               B       loc_FF882BAC \n"
238
239// jump table entry 22
240"loc_FF882B08:\n"
241"               BL      sub_FF98A554 \n"
242"               B       loc_FF882BAC \n"
243
244// jump table entry 23
245"loc_FF882B10: \n"
246"               BL      sub_FF98A634 \n"
247"               B       loc_FF882BAC \n"
248
249// jump table entry 24
250"loc_FF882B18: \n"
251"               BL      sub_FF883648 \n"
252"               B       loc_FF882BAC \n"
253
254// jump table entry 25
255"loc_FF882B20: \n"
256"               BL      sub_FF883688 \n"
257"               BL      sub_FF8391DC \n"
258"               B       loc_FF882BAC \n"
259
260// jump table entry 26
261"loc_FF882B2C: \n"
262"               BL      sub_FF98A1B0 \n"
263"               B       loc_FF882BAC \n"
264
265// jump table entry 27
266"loc_FF882B34: \n"
267"               BL      sub_FF98A218 \n"
268"               B       loc_FF882BAC \n"
269
270// jump table entry 28
271"loc_FF882B3C: \n"
272"               BL      sub_FF8869FC \n"
273"               B       loc_FF882BAC \n"
274
275// jump table entry 29
276"loc_FF882B44: \n"
277"               BL      sub_FF886A80 \n"
278"               B       loc_FF882BAC \n"
279
280// jump table entry 30
281"loc_FF882B4C: \n"
282"               BL      sub_FF98A76C \n"
283"               B       loc_FF882BAC \n"
284
285// jump table entry 31
286"loc_FF882B54: \n"
287"               BL      sub_FF98A7D0 \n"
288"               B       loc_FF882BAC \n"
289
290// jump table entry 32
291"loc_FF882B5C: \n"
292"               BL      sub_FF886ADC \n"
293"               BL      sub_FF886A9C \n"
294"               B       loc_FF882BAC \n"
295
296// jump table entry 33
297"loc_FF882B68: \n"
298"               MOV     R0, #1 \n"
299"               BL      sub_FF98B9D0 \n"
300"               MOV     R0, #1 \n"
301"               BL      sub_FF98BB04 \n"
302"               LDRH    R0, [R5,#0x98] \n"
303"               CMP     R0, #4 \n"
304"               LDRNEH  R0, [R5] \n"
305"               SUBNE   R1, R0, #0x8200 \n"
306"               SUBNES  R1, R1, #0x2A \n"
307"               BNE     loc_FF882BAC \n"
308"               BL      sub_FF886A80 \n"
309"               BL      sub_FF8870A8 \n"
310"               BL      sub_FF886F00 \n"
311"               B       loc_FF882BAC \n"
312
313// jump table default entry
314"loc_FF882BA0: \n"
315"               LDR     R1, =0x5D7 \n"
316"               LDR     R0, =0xFF882448 \n"     // aSsshoottask_c
317"               BL      _DebugAssert \n"
318
319// jump table entry 34
320"loc_FF882BAC: \n"
321"               LDR     R0, [SP] \n"
322"               LDR     R1, [R0,#4] \n"
323"               LDR     R0, [R7] \n"
324"               BL      sub_FF88DBD8 \n"
325"               LDR     R4, [SP] \n"
326"               LDR     R0, [R4,#8] \n"
327"               CMP     R0, #0 \n"
328"               LDREQ   R0, =0xFF882448 \n"     // aSsshoottask_c
329"               MOVEQ   R1, #0x118 \n"
330"               BLEQ    _DebugAssert \n"
331"               STR     R6, [R4,#8] \n"
332"               B       loc_FF882930 \n"
333        );
334}
335
336/*************************************************************/
337
338void __attribute__((naked,noinline)) exp_drv_task(){
339// FF8CBCBC   IXUS220: DONE
340 asm volatile(
341"               STMFD   SP!, {R4-R9,LR} \n"
342"               SUB     SP, SP, #0x24 \n"
343"               LDR     R6, =0x4238 \n"
344"               LDR     R7, =0xBB8 \n"
345"               LDR     R4, =0x58A54 \n"
346"               MOV     R0, #0 \n"
347"               ADD     R5, SP, #0x14 \n"
348"               STR     R0, [SP,#0x10] \n"
349"loc_FF8CBCDC: \n"
350"               LDR     R0, [R6,#0x20] \n"
351"               MOV     R2, #0 \n"
352"               ADD     R1, SP, #0x20 \n"
353"               BL      sub_FF83B5B4 \n"
354"               LDR     R0, [SP,#0x10] \n"
355"               CMP     R0, #1 \n"
356"               BNE     loc_FF8CBD28 \n"
357"               LDR     R0, [SP,#0x20] \n"
358"               LDR     R0, [R0] \n"
359"               CMP     R0, #0x14 \n"
360"               CMPNE   R0, #0x15 \n"
361"               CMPNE   R0, #0x16 \n"
362"               CMPNE   R0, #0x17 \n"
363"               BEQ     loc_FF8CBE88 \n"
364"               CMP     R0, #0x29 \n"
365"               BEQ     loc_FF8CBE10 \n"
366"               ADD     R1, SP, #0x10 \n"
367"               MOV     R0, #0 \n"
368"               BL      sub_FF8CBC6C \n"
369"loc_FF8CBD28: \n"
370"               LDR     R0, [SP,#0x20] \n"
371"               LDR     R1, [R0] \n"
372"               CMP     R1, #0x2F \n"
373"               BNE     loc_FF8CBD54 \n"
374"               BL      sub_FF8CD0F8 \n"
375"               LDR     R0, [R6,#0x1C] \n"
376"               MOV     R1, #1 \n"
377"               BL      sub_FF88DBD8 \n"
378"               BL      _ExitTask \n"
379"               ADD     SP, SP, #0x24 \n"
380"               LDMFD   SP!, {R4-R9,PC} \n"
381"loc_FF8CBD54: \n"
382"               CMP     R1, #0x2E \n"
383"               BNE     loc_FF8CBD70 \n"
384"               LDR     R2, [R0,#0x8C]! \n"
385"               LDR     R1, [R0,#4] \n"
386"               MOV     R0, R1 \n"
387"               BLX     R2 \n"
388"               B       loc_FF8CC318 \n"
389"loc_FF8CBD70: \n"
390"               CMP     R1, #0x27 \n"
391"               BNE     loc_FF8CBDC0 \n"
392"               LDR     R0, [R6,#0x1C] \n"
393"               MOV     R1, #0x80 \n"
394"               BL      sub_FF88DC0C \n"
395"               LDR     R0, =0xFF8C6E20 \n" // IXUS 220 sub_0xFF8C6E20
396"               MOV     R1, #0x80 \n"
397"               BL      sub_FF97C814 \n"
398"               LDR     R0, [R6,#0x1C] \n"
399"               MOV     R2, R7 \n"
400"               MOV     R1, #0x80 \n"
401"               BL      sub_FF88DB18 \n"
402"               TST     R0, #1 \n"
403"               LDRNE   R1, =0x174F \n"
404"               BNE     loc_FF8CBE7C \n"
405"loc_FF8CBDAC: \n"
406"               LDR     R1, [SP,#0x20] \n"
407"               LDR     R0, [R1,#0x90] \n"
408"               LDR     R1, [R1,#0x8C] \n"
409"               BLX     R1 \n"
410"               B       loc_FF8CC318 \n"
411"loc_FF8CBDC0: \n"
412"               CMP     R1, #0x28 \n"
413"               BNE     loc_FF8CBE08 \n"
414"               ADD     R1, SP, #0x10 \n"
415"               BL      sub_FF8CBC6C \n"
416"               LDR     R0, [R6,#0x1C] \n"
417"               MOV     R1, #0x100 \n"
418"               BL      sub_FF88DC0C \n"
419"               LDR     R0, =0xFF8C6E30 \n" // IXUS220 sub_0xFF8C6E30
420"               MOV     R1, #0x100 \n"
421"               BL      sub_FF97CACC \n"
422"               LDR     R0, [R6,#0x1C] \n"
423"               MOV     R2, R7 \n"
424"               MOV     R1, #0x100 \n"
425"               BL      sub_FF88DB18 \n"
426"               TST     R0, #1 \n"
427"               BEQ     loc_FF8CBDAC \n"
428"               LDR     R1, =0x1759 \n"
429"               B       loc_FF8CBE7C \n"
430"loc_FF8CBE08: \n"
431"               CMP     R1, #0x29 \n"
432"               BNE     loc_FF8CBE20 \n"
433"loc_FF8CBE10: \n"
434"               LDR     R0, [SP,#0x20] \n"
435"               ADD     R1, SP, #0x10 \n"
436"               BL      sub_FF8CBC6C \n"
437"               B       loc_FF8CBDAC \n"
438"loc_FF8CBE20: \n"
439"               CMP     R1, #0x2C \n"
440"               BNE     loc_FF8CBE38 \n"
441"               BL      sub_FF8B8760 \n"
442"               BL      sub_FF8B93D0 \n"
443"               BL      sub_FF8B8F48 \n"
444"               B       loc_FF8CBDAC \n"
445"loc_FF8CBE38: \n"
446"               CMP     R1, #0x2D \n"
447"               BNE     loc_FF8CBE88 \n"
448"               LDR     R0, [R6,#0x1C] \n"
449"               MOV     R1, #4 \n"
450"               BL      sub_FF88DC0C \n"
451"               LDR     R1, =0xFF8C6E50 \n" // IXUS220 sub_FF8C6E50
452"               LDR     R0, =0xFFFFF400 \n"
453"               MOV     R2, #4 \n"
454"               BL      sub_FF8B81D4 \n"
455"               BL      sub_FF8B8464 \n"
456"               LDR     R0, [R6,#0x1C] \n"
457"               MOV     R2, R7 \n"
458"               MOV     R1, #4 \n"
459"               BL      sub_FF88DA34 \n"
460"               TST     R0, #1 \n"
461"               BEQ     loc_FF8CBDAC \n"
462"               LDR     R1, =0x1781 \n"
463"loc_FF8CBE7C: \n"
464"               LDR     R0, =0xFF8C75F4 \n" //"ExpDrv.c"
465"               BL      _DebugAssert \n"
466"               B       loc_FF8CBDAC \n"
467"loc_FF8CBE88: \n"
468"               LDR     R0, [SP,#0x20] \n"
469"               MOV     R8, #1 \n"
470"               LDR     R1, [R0] \n"
471"               CMP     R1, #0x12 \n"
472"               CMPNE   R1, #0x13 \n"
473"               BNE     loc_FF8CBEF0 \n"
474"               LDR     R1, [R0,#0x7C] \n"
475"               ADD     R1, R1, R1,LSL#1 \n"
476"               ADD     R1, R0, R1,LSL#2 \n"
477"               SUB     R1, R1, #8 \n"
478"               LDMIA   R1, {R2,R3,R9} \n"
479"               STMIA   R5, {R2,R3,R9} \n"
480"               BL      sub_FF8C9F20 \n"
481"               LDR     R0, [SP,#0x20] \n"
482"               LDR     R1, [R0,#0x7C] \n"
483"               LDR     R3, [R0,#0x8C] \n"
484"               LDR     R2, [R0,#0x90] \n"
485"               ADD     R0, R0, #4 \n"
486"               BLX     R3 \n"
487"               LDR     R0, [SP,#0x20] \n"
488"               BL      sub_FF8CD504 \n"
489"               LDR     R0, [SP,#0x20] \n"
490"               LDR     R1, [R0,#0x7C] \n"
491"               LDR     R2, [R0,#0x98] \n"
492"               LDR     R3, [R0,#0x94] \n"
493"               B       loc_FF8CC204 \n"
494"loc_FF8CBEF0: \n"
495"               CMP     R1, #0x14 \n"
496"               CMPNE   R1, #0x15 \n"
497"               CMPNE   R1, #0x16 \n"
498"               CMPNE   R1, #0x17 \n"
499"               BNE     loc_FF8CBFA8 \n"
500"               ADD     R3, SP, #0x10 \n"
501"               ADD     R2, SP, #0x4 \n"
502"               ADD     R1, SP, #0x14 \n"
503"               BL      sub_FF8CA188 \n"
504"               CMP     R0, #1 \n"
505"               MOV     R9, R0 \n"
506"               CMPNE   R9, #5 \n"
507"               BNE     loc_FF8CBF44 \n"
508"               LDR     R0, [SP,#0x20] \n"
509"               MOV     R2, R9 \n"
510"               LDR     R1, [R0,#0x7C]! \n"
511"               LDR     R12, [R0,#0x10]! \n"
512"               LDR     R3, [R0,#4] \n"
513"               ADD     R0, SP, #0x4 \n"
514"               BLX     R12 \n"
515"               B       loc_FF8CBF7C \n"
516"loc_FF8CBF44: \n"
517"               LDR     R0, [SP,#0x20] \n"
518"               CMP     R9, #2 \n"
519"               LDR     R3, [R0,#0x90] \n"
520"               CMPNE   R9, #6 \n"
521"               BNE     loc_FF8CBF90 \n"
522"               LDR     R12, [R0,#0x8C] \n"
523"               MOV     R2, R9 \n"
524"               MOV     R1, #1 \n"
525"               ADD     R0, SP, #0x4 \n"
526"               BLX     R12 \n"
527"               LDR     R0, [SP,#0x20] \n"
528"               ADD     R2, SP, #0x4 \n"
529"               ADD     R1, SP, #0x14 \n"
530"               BL      sub_FF8CB95C \n"
531"loc_FF8CBF7C: \n"
532"               LDR     R0, [SP,#0x20] \n"
533"               LDR     R2, [SP,#0x10] \n"
534"               MOV     R1, R9 \n"
535"               BL      sub_FF8CBC0C \n"
536"               B       loc_FF8CC20C \n"
537"loc_FF8CBF90: \n"
538"               LDR     R1, [R0,#0x7C] \n"
539"               LDR     R12, [R0,#0x8C] \n"
540"               MOV     R2, R9 \n"
541"               ADD     R0, R0, #4 \n"
542"               BLX     R12 \n"
543"               B       loc_FF8CC20C \n"
544"loc_FF8CBFA8: \n"
545"               CMP     R1, #0x23 \n"
546"               CMPNE   R1, #0x24 \n"
547"               BNE     loc_FF8CBFF4 \n"
548"               LDR     R1, [R0,#0x7C] \n"
549"               ADD     R1, R1, R1,LSL#1 \n"
550"               ADD     R1, R0, R1,LSL#2 \n"
551"               SUB     R1, R1, #8 \n"
552"               LDMIA   R1, {R2,R3,R9} \n"
553"               STMIA   R5, {R2,R3,R9} \n"
554"               BL      sub_FF8C8D28 \n"
555"               LDR     R0, [SP,#0x20] \n"
556"               LDR     R1, [R0,#0x7C] \n"
557"               LDR     R3, [R0,#0x8C] \n"
558"               LDR     R2, [R0,#0x90] \n"
559"               ADD     R0, R0, #4 \n"
560"               BLX     R3 \n"
561"               LDR     R0, [SP,#0x20] \n"
562"               BL      sub_FF8C91FC \n"
563"               B       loc_FF8CC20C \n"
564"loc_FF8CBFF4: \n"
565"               ADD     R1, R0, #4 \n"
566"               LDMIA   R1, {R2,R3,R9} \n"
567"               STMIA   R5, {R2,R3,R9} \n"
568"               LDR     R1, [R0] \n"
569"               CMP     R1, #0x27 \n"
570"               ADDCC   PC, PC, R1,LSL#2 \n"
571"               B       loc_FF8CC1F4 \n"
572"               B       loc_FF8CC0AC \n"
573"               B       loc_FF8CC0AC \n"
574"               B       loc_FF8CC0B4 \n"
575"               B       loc_FF8CC0BC \n"
576"               B       loc_FF8CC0BC \n"
577"               B       loc_FF8CC0BC \n"
578"               B       loc_FF8CC0AC \n"
579"               B       loc_FF8CC0B4 \n"
580"               B       loc_FF8CC0BC \n"
581"               B       loc_FF8CC0BC \n"
582"               B       loc_FF8CC0D4 \n"
583"               B       loc_FF8CC0D4 \n"
584"               B       loc_FF8CC1E0 \n"
585"               B       loc_FF8CC1E8 \n"
586"               B       loc_FF8CC1E8 \n"
587"               B       loc_FF8CC1E8 \n"
588"               B       loc_FF8CC1E8 \n"
589"               B       loc_FF8CC1F0 \n"
590"               B       loc_FF8CC1F4 \n"
591"               B       loc_FF8CC1F4 \n"
592"               B       loc_FF8CC1F4 \n"
593"               B       loc_FF8CC1F4 \n"
594"               B       loc_FF8CC1F4 \n"
595"               B       loc_FF8CC1F4 \n"
596"               B       loc_FF8CC0C4 \n"
597"               B       loc_FF8CC0CC \n"
598"               B       loc_FF8CC0CC \n"
599"               B       loc_FF8CC0E0 \n"
600"               B       loc_FF8CC0E0 \n"
601"               B       loc_FF8CC0E8 \n"
602"               B       loc_FF8CC120 \n"
603"               B       loc_FF8CC158 \n"
604"               B       loc_FF8CC190 \n"
605"               B       loc_FF8CC1C8 \n"
606"               B       loc_FF8CC1C8 \n"
607"               B       loc_FF8CC1F4 \n"
608"               B       loc_FF8CC1F4 \n"
609"               B       loc_FF8CC1D0 \n"
610"               B       loc_FF8CC1D8 \n"
611"loc_FF8CC0AC: \n"
612// jumptable FF0BE064 entries 0,1,6
613"               BL      sub_FF8C7424 \n"
614"               B       loc_FF8CC1F4 \n"
615"loc_FF8CC0B4: \n"
616// jumptable FF0BE064 entries 2,7
617"               BL      sub_FF8C7720 \n"
618"               B       loc_FF8CC1F4 \n"
619"loc_FF8CC0BC: \n"
620// jumptable FF0BE064 entries 3-5,8,9
621"               BL      sub_FF8C7988 \n"
622"               B       loc_FF8CC1F4 \n"
623"loc_FF8CC0C4: \n"
624// jumptable FF0BE064 entry 24
625"               BL      sub_FF8C7C3C \n"
626"               B       loc_FF8CC1F4 \n"
627"loc_FF8CC0CC: \n"
628// jumptable FF0BE064 entries 25,26
629"               BL      sub_FF8C7E54 \n"
630"               B       loc_FF8CC1F4 \n"
631"loc_FF8CC0D4: \n"
632// jumptable FF0BE064 entries 10,11
633//"               BL      sub_FF8C8310 \n"
634"               BL      sub_FF8C8310_my \n"     // patched
635"               MOV     R8, #0 \n"
636"               B       loc_FF8CC1F4 \n"
637"loc_FF8CC0E0: \n"
638// jumptable FF0BE064 entries 27,28
639"               BL      sub_FF8C84DC \n"
640"               B       loc_FF8CC1F4 \n"
641"loc_FF8CC0E8: \n"
642// jumptable FF0BE064 entry 29
643"               LDRH    R1, [R0,#4] \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_FF8CD18C \n"
656"               B       loc_FF8CC1F4 \n"
657"loc_FF8CC120: \n"
658//; jumptable FF0BE064 entry 30
659"               LDRH    R1, [R0,#4] \n"
660"               STRH    R1, [SP,#0x14] \n"
661"               LDRH    R1, [R4,#2] \n"
662"               STRH    R1, [SP,#0x16] \n"
663"               LDRH    R1, [R4,#4] \n"
664"               STRH    R1, [SP,#0x18] \n"
665"               LDRH    R1, [R4,#6] \n"
666"               STRH    R1, [SP,#0x1A] \n"
667"               LDRH    R1, [R4,#8] \n"
668"               STRH    R1, [SP,#0x1C] \n"
669"               LDRH    R1, [R4,#0xA] \n"
670"               STRH    R1, [SP,#0x1E] \n"
671"               BL      sub_FF8CD304 \n"
672"               B       loc_FF8CC1F4 \n"
673"loc_FF8CC158: \n"
674//; jumptable FF0BE064 entry 31
675"               LDRH    R1, [R4] \n"
676"               STRH    R1, [SP,#0x14] \n"
677"               LDRH    R1, [R0,#6] \n"
678"               STRH    R1, [SP,#0x16] \n"
679"               LDRH    R1, [R4,#4] \n"
680"               STRH    R1, [SP,#0x18] \n"
681"               LDRH    R1, [R4,#6] \n"
682"               STRH    R1, [SP,#0x1A] \n"
683"               LDRH    R1, [R4,#8] \n"
684"               STRH    R1, [SP,#0x1C] \n"
685"               LDRH    R1, [R4,#0xA] \n"
686"               STRH    R1, [SP,#0x1E] \n"
687"               BL      sub_FF8CD3B8 \n"
688"               B       loc_FF8CC1F4 \n"
689"loc_FF8CC190: \n"
690//; jumptable FF0BE064 entry 32
691"               LDRH    R1, [R4] \n"
692"               STRH    R1, [SP,#0x14] \n"
693"               LDRH    R1, [R4,#2] \n"
694"               STRH    R1, [SP,#0x16] \n"
695"               LDRH    R1, [R4,#4] \n"
696"               STRH    R1, [SP,#0x18] \n"
697"               LDRH    R1, [R4,#6] \n"
698"               STRH    R1, [SP,#0x1A] \n"
699"               LDRH    R1, [R0,#0xC] \n"
700"               STRH    R1, [SP,#0x1C] \n"
701"               LDRH    R1, [R4,#0xA] \n"
702"               STRH    R1, [SP,#0x1E] \n"
703"               BL      sub_FF8CD460 \n"
704"               B       loc_FF8CC1F4 \n"
705"loc_FF8CC1C8: \n"
706//; jumptable FF0BE064 entries 33,34
707"               BL      sub_FF8C8B1C \n"
708"               B       loc_FF8CC1F4 \n"
709"loc_FF8CC1D0: \n"
710//; jumptable FF0BE064 entry 37
711"               BL      sub_FF8C9300 \n"
712"               B       loc_FF8CC1F4 \n"
713"loc_FF8CC1D8: \n"
714//; jumptable FF0BE064 entry 38
715"               BL      sub_FF8C980C \n"
716"               B       loc_FF8CC1F4 \n"
717"loc_FF8CC1E0: \n"
718//; jumptable FF0BE064 entry 12
719"               BL      sub_FF8C99EC \n"
720"               B       loc_FF8CC1F4 \n"
721"loc_FF8CC1E8: \n"
722//; jumptable FF0BE064 entries 13-16
723"               BL      sub_FF8C9BA8 \n"
724"               B       loc_FF8CC1F4 \n"
725"loc_FF8CC1F0: \n"
726//; jumptable FF0BE064 entry 17
727"               BL      sub_FF8C9D18 \n"
728"loc_FF8CC1F4: \n"
729//; jumptable FF0BE064 default entry
730//; jumptable FF0BE064 entries 18-23,35,36
731"               LDR     R0, [SP,#0x20] \n"
732"               LDR     R1, [R0,#0x7C] \n"
733"               LDR     R2, [R0,#0x90] \n"
734"               LDR     R3, [R0,#0x8C] \n"
735"loc_FF8CC204: \n"
736"               ADD     R0, R0, #4 \n"
737"               BLX     R3 \n"
738"loc_FF8CC20C: \n"
739"               LDR     R1, [SP,#0x20] \n"
740"               LDR     R0, [R1] \n"
741"               CMP     R0, #0x10 \n"
742"               BEQ     loc_FF8CC244 \n"
743"               BGT     loc_FF8CC234 \n"
744"               CMP     R0, #1 \n"
745"               CMPNE   R0, #4 \n"
746"               CMPNE   R0, #0xE \n"
747"               BNE     loc_FF8CC254 \n"
748"               B       loc_FF8CC244 \n"
749"loc_FF8CC234: \n"
750"               CMP     R0, #0x13 \n"
751"               CMPNE   R0, #0x17 \n"
752"               CMPNE   R0, #0x1A \n"
753"               BNE     loc_FF8CC254 \n"
754"loc_FF8CC244: \n"
755"               LDRH    R0, [R4] \n"
756"               STRH    R0, [SP,#0x14] \n"
757"               LDRH    R0, [R4,#8] \n"
758"               STRH    R0, [SP,#0x1C] \n"
759"loc_FF8CC254: \n"
760"               CMP     R8, #1 \n"
761"               BNE     loc_FF8CC2A0 \n"
762"               LDR     R0, [R1,#0x7C] \n"
763"               MOV     R2, #0xC \n"
764"               ADD     R0, R0, R0,LSL#1 \n"
765"               ADD     R0, R1, R0,LSL#2 \n"
766"               SUB     R8, R0, #8 \n"
767"               LDR     R0, =0x58A54 \n"
768"               ADD     R1, SP, #0x14 \n"
769"               BL      sub_FFB9C3C0 \n"
770"               LDR     R0, =0x58A60 \n"
771"               MOV     R2, #0xC \n"
772"               ADD     R1, SP, #0x14 \n"
773"               BL      sub_FFB9C3C0 \n"
774"               LDR     R0, =0x58A6C \n"
775"               MOV     R2, #0xC \n"
776"               MOV     R1, R8 \n"
777"               BL      sub_FFB9C3C0 \n"
778"               B       loc_FF8CC318 \n"
779"loc_FF8CC2A0: \n"
780"               LDR     R0, [R1] \n"
781"               MOV     R3, #1 \n"
782"               CMP     R0, #0xB \n"
783"               BNE     loc_FF8CC2E4 \n"
784"               MOV     R2, #0 \n"
785"               STRD    R2, [SP] \n"
786"               MOV     R2, R3 \n"
787"               MOV     R1, R3 \n"
788"               MOV     R0, #0 \n"
789"               BL      sub_FF8C7204 \n"
790"               MOV     R3, #1 \n"
791"               MOV     R2, #0 \n"
792"               STRD    R2, [SP] \n"
793"               MOV     R2, R3 \n"
794"               MOV     R1, R3 \n"
795"               MOV     R0, #0 \n"
796"               B       loc_FF8CC314 \n"
797"loc_FF8CC2E4: \n"
798"               MOV     R2, #1 \n"
799"               STRD    R2, [SP] \n"
800"               MOV     R3, R2 \n"
801"               MOV     R1, R2 \n"
802"               MOV     R0, R2 \n"
803"               BL      sub_FF8C7204 \n"
804"               MOV     R3, #1 \n"
805"               MOV     R2, R3 \n"
806"               MOV     R1, R3 \n"
807"               MOV     R0, R3 \n"
808"               STR     R3, [SP] \n"
809"               STR     R3, [SP,#0x4] \n"
810"loc_FF8CC314: \n"
811"               BL      sub_FF8C7370 \n"
812"loc_FF8CC318: \n"
813"               LDR     R0, [SP,#0x20] \n"
814"               BL      sub_FF8CD0F8 \n"
815"               B       loc_FF8CBCDC \n"
816 );
817}
818
819void __attribute__((naked,noinline)) sub_FF8C8310_my() {
820//FF8C8310      IXUS220: DONE
821        asm volatile (
822"                STMFD   SP!, {R4-R8,LR} \n"
823"                LDR     R7, =0x4238 \n"
824"                MOV     R4, R0 \n"
825"                LDR     R0, [R7,#0x1C] \n"
826"                MOV     R1, #0x3E \n"
827"                BL      sub_FF88DC0C \n"
828"                MOV     R2, #0 \n"
829"                LDRSH   R0, [R4,#4] \n"
830"                MOV     R1, R2 \n"
831"                BL      sub_FF8C6EB0 \n"
832"                MOV     R5, R0 \n"
833"                LDRSH   R0, [R4,#6] \n"
834"                BL      sub_FF8C7000 \n"
835"                LDRSH   R0, [R4,#8] \n"
836"                BL      sub_FF8C7058 \n"
837"                LDRSH   R0, [R4,#0xA] \n"
838"                BL      sub_FF8C70B0 \n"
839"                LDRSH   R0, [R4,#0xC] \n"
840"                MOV     R1, #0 \n"
841"                BL      sub_FF8C7108 \n"
842"                MOV     R6, R0 \n"
843"                LDRSH   R0, [R4,#0xE] \n"
844"                BL      sub_FF8CD128 \n"
845"                LDR     R0, [R4] \n"
846"                LDR     R8, =0x58A6C \n"
847"                CMP     R0, #0xB \n"
848"                MOVEQ   R5, #0 \n"
849"                MOVEQ   R6, R5 \n"
850"                BEQ     loc_FF8C83AC \n"
851"                CMP     R5, #1 \n"
852"                BNE     loc_FF8C83AC \n"
853"                LDRSH   R0, [R4,#4] \n"
854"                LDR     R1, =0xFF8C6E10 \n"    // IXUS220 sub_FF8C6E10
855"                MOV     R2, #2 \n"
856"                BL      sub_FF97C968 \n"
857"                STRH    R0, [R4,#4] \n"
858"                MOV     R0, #0 \n"
859"                STR     R0, [R7,#0x28] \n"
860"                B       loc_FF8C83B4 \n"
861
862"loc_FF8C83AC: \n"
863"                LDRH    R0, [R8] \n"
864"                STRH    R0, [R4,#4] \n"
865
866"loc_FF8C83B4: \n"
867"                CMP     R6, #1 \n"
868"                LDRNEH  R0, [R8,#8] \n"
869"                BNE     loc_FF8C83D0 \n"
870"                LDRSH   R0, [R4,#0xC] \n"
871"                LDR     R1, =0xFF8C6E94 \n"    // sub_FF8C6E94
872"                MOV     R2, #0x20 \n"
873"                BL      sub_FF8CD148 \n"
874
875"loc_FF8C83D0: \n"
876"                STRH    R0, [R4,#0xC] \n"
877"                LDRSH   R0, [R4,#6] \n"
878//"                BL      sub_FF8B84D0 \n"
879"                BL      sub_FF8B84D0_my \n"    // patched
880"                                B               sub_FF8C83DC \n"           // continue in firmware
881        );
882}
883
884void __attribute__((naked,noinline)) sub_FF8B84D0_my() {
885//FF8B84D0     IXUS220: DONE
886        asm volatile (
887"                STMFD   SP!, {R4-R6,LR} \n"
888"                LDR     R5, =0x3EE0 \n"
889"                MOV     R4, R0 \n"
890"                LDR     R0, [R5,#4] \n"
891"                CMP     R0, #1 \n"
892"                LDRNE   R1, =0x146 \n"
893"                LDRNE   R0, =0xFF8B8308 \n" //aShutter_c IXUS220 at FF8B8308
894"                BLNE    _DebugAssert \n"
895"                CMN     R4, #0xC00 \n"
896"                LDREQSH R4, [R5,#2] \n"
897"                CMN     R4, #0xC00 \n"
898"                MOVEQ   R1, #0x14C \n"
899"                LDREQ   R0, =0xFF8B8308 \n" //aShutter_c IXUS220 at FF8B8308
900"                STRH    R4, [R5,#2] \n"
901"                BLEQ    _DebugAssert \n"
902"                MOV     R0, R4 \n"
903"                BL      apex2us \n"        // patched
904"                                B               sub_FF8B8514 \n"       // IXUS220 continue in firmware at ff8b8510 ???
905);
906}
Note: See TracBrowser for help on using the repository browser.