source: trunk/platform/a800/sub/100c/capt_seq.c @ 1723

Revision 1723, 19.2 KB checked in by reyalp, 2 years ago (diff)

a800 100a port from mland, patch by waterwings in http://chdk.setepontos.com/index.php?topic=650.msg81174#msg81174

  • Property svn:eol-style set to native
Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4#include "conf.h"
5
6static long *nrflag = (long*)(0x5a8c+0x08);  // Found @ ffd1d88c & ffd1d8d0 - both from stubs_entry.s
7#define NR_AUTO (0)                          // have to explictly reset value back to 0 to enable auto
8//#define PAUSE_FOR_FILE_COUNTER 100          // Enable delay in capt_seq_hook_raw_here to ensure file counter is updated -idem acima
9
10#include "../../../generic/capt_seq.c"          //here from defined NR_AUTO definido initializes nrflag
11
12
13//ffc5b06c
14void __attribute__((naked,noinline)) capt_seq_task() {
15        asm volatile (
16                "push   {r3, r4, r5, r6, r7, lr}\n"
17                "ldr    r5, =0x33d88\n" //[pc, #836]    ; ffc5b3bc: (00033d88) \n"
18                "ldr    r6, =0x2710\n" //[pc, #-1060]   ; ffc5ac58: (00002710) \n"
19"loc_ffc5b078:\n"
20                "mov    r2, #0\n"
21                "ldr    r0, [r6, #4]\n"
22                "mov    r1, sp\n"
23                "BL             sub_FFC2905C\n"
24                "tst    r0, #1\n"
25                "BEQ    loc_ffc5b0a4\n"
26                "ldr    r1, =0x476\n" //[pc, #872]      ; ffc5b400: (00000476) \n"
27                "ldr    r0, =0xffc5ac5c\n" //[pc, #864] ; ffc5b3fc: (ffc5ac5c)  **"SsShootTask.c"\n"
28                "BL             _DebugAssert\n" //sub_FFC0F768
29                "BL             _ExitTask\n"    //FFC0F520\n"
30                "pop    {r3, r4, r5, r6, r7, pc}\n"
31"loc_ffc5b0a4:\n"
32                "ldr    r0, [sp]\n"
33                "ldr    r1, [r0]\n"
34                "cmp    r1, #30\n"
35                "addcc  pc, pc, r1, lsl #2\n"
36                "B      loc_ffc5b27c\n"
37                "B      loc_ffc5b130\n"
38                "B      loc_ffc5b138\n"
39                "B      loc_ffc5b164\n"
40                "B      loc_ffc5b178\n"
41                "B      loc_ffc5b170\n"
42                "B      loc_ffc5b180\n"
43                "B      loc_ffc5b188\n"
44                "B      loc_ffc5b194\n"
45                "B      loc_ffc5b1b0\n"
46                "B      loc_ffc5b178\n"
47                "B      loc_ffc5b1b8\n"
48                "B      loc_ffc5b1c4\n"
49                "B      loc_ffc5b1cc\n"
50                "B      loc_ffc5b1d4\n"
51                "B      loc_ffc5b1dc\n"
52                "B      loc_ffc5b1e4\n"
53                "B      loc_ffc5b1ec\n"
54                "B      loc_ffc5b1f4\n"
55                "B      loc_ffc5b200\n"
56                "B      loc_ffc5b208\n"
57                "B      loc_ffc5b210\n"
58                "B      loc_ffc5b218\n"
59                "B      loc_ffc5b220\n"
60                "B      loc_ffc5b22c\n"
61                "B      loc_ffc5b234\n"
62                "B      loc_ffc5b23c\n"
63                "B      loc_ffc5b244\n"
64                "B      loc_ffc5b24c\n"
65                "B      loc_ffc5b258\n"
66                "B      loc_ffc5b288\n"
67"loc_ffc5b130:\n"
68                //"BL           shooting_expo_iso_override\n"               // added - as ixus220 - but not defined for a800
69                "BL             sub_FFC5B7BC\n"
70                "BL      shooting_expo_param_override\n"      // +
71                "B              loc_ffc5b18c\n"
72"loc_ffc5b138:\n"
73                "BL     wait_until_remote_button_is_released\n" // +++ as in ixus310
74                "BL     capt_seq_hook_set_nr\n"                         // +++ as in ixus310
75                "ldr    r7, [r0, #12]\n"
76                "mov    r0, r7\n"
77                "BL             sub_FFD1CA20\n"
78                "BL     capt_seq_hook_raw_here\n"           // as in ixus220                             
79                "mov    r4, r0\n"
80                "mov    r2, r7\n"
81                "mov    r1, #1\n"
82                "BL             sub_FFC59678\n"
83                "tst    r4, #1\n"
84                "moveq  r0, r7\n"
85                "BLEQ   sub_FFD1C558\n"
86                "B              loc_ffc5b288\n"
87"loc_ffc5b164:\n"
88                "mov    r0, #1\n"
89                "BL             sub_FFC5BA38\n"
90                "B              loc_ffc5b288\n"
91"loc_ffc5b170:\n"
92                "BL             sub_FFC5B494\n"
93                "B              loc_ffc5b288\n"
94"loc_ffc5b178:\n" // ; 2 refs\n"
95                "BL             sub_FFC5B79C\n"
96                "B              loc_ffc5b288\n"
97"loc_ffc5b180:\n"
98                "BL             sub_FFC5B7A4\n"
99                "B              loc_ffc5b288\n"
100"loc_ffc5b188:\n"
101                "BL             sub_FFC5B94C\n"
102"loc_ffc5b18c:\n" // ; 2 refs\n"
103                "BL             sub_FFC591B0\n"
104                "B              loc_ffc5b288\n"
105"loc_ffc5b194:\n"
106                "ldr    r4, [r0, #12]\n"
107                "mov    r0, r4\n"
108                "BL             sub_FFD1CAC8\n"
109                "mov    r2, r4\n"
110                "mov    r1, #9\n"
111                "BL             sub_FFC59678\n"
112                "B              loc_ffc5b288\n"
113"loc_ffc5b1b0:\n"
114                "BL             sub_FFC5B9B0\n"
115                "B              loc_ffc5b18c\n"
116"loc_ffc5b1b8:\n"
117                "ldr    r0, [r5, #80]\n" //     ; 0x50\n"
118                "BL             sub_FFC5BE4C\n"
119                "B              loc_ffc5b288\n"
120"loc_ffc5b1c4:\n"
121                "BL             sub_FFC5C194\n"
122                "B              loc_ffc5b288\n"
123"loc_ffc5b1cc:\n"
124                "BL             sub_FFC5C1F8\n"
125                "B              loc_ffc5b288\n"
126"loc_ffc5b1d4:\n"
127                "BL             sub_FFD1BAEC\n"
128                "B              loc_ffc5b288\n"
129"loc_ffc5b1dc:\n"
130                "BL             sub_FFD1BCD8\n"
131                "B              loc_ffc5b288\n"
132"loc_ffc5b1e4:\n"
133                "BL             sub_FFD1BD78\n"
134                "B              loc_ffc5b288\n"
135"loc_ffc5b1ec:\n"
136                "BL             sub_FFD1BE38\n"
137                "B              loc_ffc5b288\n"
138"loc_ffc5b1f4:\n"
139                "mov    r0, #0\n"
140                "BL             sub_FFD1C030\n"
141                "B              loc_ffc5b288\n"
142"loc_ffc5b200:\n"
143                "BL             sub_FFD1C19C\n"
144                "B              loc_ffc5b288\n"
145"loc_ffc5b208:\n"
146                "BL             sub_FFD1C240\n"
147                "B              loc_ffc5b288\n"
148"loc_ffc5b210:\n"
149                "BL             sub_FFD1C320\n"
150                "B              loc_ffc5b288\n"
151"loc_ffc5b218:\n"
152                "BL             sub_FFC5BBA0\n"
153                "B              loc_ffc5b288\n"
154"loc_ffc5b220:\n"
155                "BL             sub_FFC5BBCC\n"
156                "BL             sub_FFC270EC\n"
157                "B              loc_ffc5b288\n"
158"loc_ffc5b22c:\n"
159                "BL             sub_FFD1BEFC\n"
160                "B              loc_ffc5b288\n"
161"loc_ffc5b234:\n"
162                "BL             sub_FFD1BF3C\n"
163                "B              loc_ffc5b288\n"
164"loc_ffc5b23c:\n"
165                "BL             sub_FFC5DFDC\n"
166                "B              loc_ffc5b288\n"
167"loc_ffc5b244:\n"
168                "BL             sub_FFC5E048\n"
169                "B              loc_ffc5b288\n"
170"loc_ffc5b24c:\n"
171                "BL             sub_FFC5E0A4\n"
172                "BL             sub_FFC5E064\n"
173                "B              loc_ffc5b288\n"
174"loc_ffc5b258:\n"
175                "ldrh   r0, [r5, #144]\n" //    ; 0x90\n"
176                "cmp    r0, #4\n"
177                "ldrneh r0, [r5]\n"
178                "subne  r1, r0, #33280\n" //    ; 0x8200\n"
179                "subnes r1, r1, #42\n" //       ; 0x2a\n"
180                "BNE    loc_ffc5b288\n"
181                "BL             sub_FFC5E048\n"
182                "BL             sub_FFC5E3D8\n"
183                "B              loc_ffc5b288\n"
184"loc_ffc5b27c:\n"
185                "ldr    r1, =0x5d7\n" //[pc, #384]      ; ffc5b404: (000005d7) \n"
186                "ldr    r0, =0xffc5ac5c\n" //[pc, #372] ; ffc5b3fc: (ffc5ac5c)  **"SsShootTask.c"\n"
187                "BL             _DebugAssert\n"
188"loc_ffc5b288:\n" //; 28 refs\n"
189                "ldr    r0, [sp]\n"
190                "ldr    r1, [r0, #4]\n"
191                "ldr    r0, [r6]\n"
192                "BL             sub_FFC28DCC\n"
193                "ldr    r4, [sp]\n"
194                "ldr    r0, [r4, #8]\n"
195                "cmp    r0, #0\n"
196                "ldreq  r0, =0xffc5ac5c\n" //[pc, #336] ; ffc5b3fc: (ffc5ac5c)  **"SsShootTask.c"\n"
197                "moveq  r1, #280\n" //  ; 0x118\n"
198                "bleq   _DebugAssert\n"
199                "mov    r0, #0\n"
200                "str    r0, [r4, #8]\n"
201                "B      loc_ffc5b078\n"
202        );
203}
204
205/*************************************************************/
206//ffc98190
207void __attribute__((naked,noinline)) exp_drv_task(){
208        asm volatile (
209                        "push   {r4, r5, r6, r7, r8, r9, lr}\n"
210                        "sub    sp, sp, #36\n" //       ; 0x24\n"
211                        "ldr    r6, =0x39b4\n" //[pc, #-3336]   ; ffc97498: (000039b4) \n"
212                        "ldr    r7, =0xbb8\n" //[pc, #-3420]    ; ffc97448: (00000bb8) \n"
213                        "ldr    r4, =0x4f250\n" //[pc, #628]    ; ffc9841c: (0004f250) \n"
214                        "mov    r0, #0\n"
215                        "add    r5, sp, #20\n"
216                        "str    r0, [sp, #16]\n"
217"loc_ffc981b0:\n"
218                        "ldr    r0, [r6, #32]\n"
219                        "mov    r2, #0\n"
220                        "add    r1, sp, #32\n"
221                        "BL             sub_FFC2905C\n"
222                        "ldr    r0, [sp, #16]\n"
223                        "cmp    r0, #1\n"
224                        "BNE    loc_ffc981fc\n"
225                        "ldr    r0, [sp, #32]\n"
226                        "ldr    r0, [r0]\n"
227                        "cmp    r0, #20\n"
228                        "cmpne  r0, #21\n"
229                        "cmpne  r0, #22\n"
230                        "cmpne  r0, #23\n"
231                        "BEQ    loc_ffc9835c\n"
232                        "cmp    r0, #41\n"//    ; 0x29\n"
233                        "BEQ    loc_ffc982e4\n"
234                        "add    r1, sp, #16\n"
235                        "mov    r0, #0\n"
236                        "BL             sub_FFC98140\n"
237"loc_ffc981fc:\n"
238                        "ldr    r0, [sp, #32]\n"
239                        "ldr    r1, [r0]\n"
240                        "cmp    r1, #47\n" //   ; 0x2f\n"
241                        "BNE    loc_ffc98228\n"
242                        "BL             sub_FFC9963C\n"
243                        "ldr    r0, [r6, #28]\n"
244                        "mov    r1, #1\n"
245                        "BL             sub_FFC28DCC\n"
246                        "BL             _ExitTask\n"    //FFC0F520\n"
247                        "add    sp, sp, #36\n" //       ; 0x24\n"
248                        "pop    {r4, r5, r6, r7, r8, r9, pc}\n"
249"loc_ffc98228:\n"
250                        "cmp    r1, #46\n" //   ; 0x2e\n"
251                        "BNE    loc_ffc98244\n"
252                        "ldr    r2, [r0, #140]!\n" //   ; 0x8c\n"
253                        "ldr    r1, [r0, #4]\n"
254                        "mov    r0, r1\n"
255                        "BLX    r2\n"
256                        "B              loc_ffc98858\n"
257"loc_ffc98244:\n"
258                        "cmp    r1, #39\n" //   ; 0x27\n"
259                        "BNE    loc_ffc98294\n"
260                        "ldr    r0, [r6, #28]\n"
261                        "mov    r1, #128\n" //  ; 0x80\n"
262                        "BL             sub_FFC28E00\n"
263                        "ldr    r0, =0xffc93da8\n" //[pc, #-3604]       ; ffc9744c: (ffc93da8) \n"
264                        "mov    r1, #128\n" //  ; 0x80\n"
265                        "BL             sub_FFD13BC8\n"
266                        "ldr    r0, [r6, #28]\n"
267                        "mov    r2, r7\n"
268                        "mov    r1, #128\n" //  ; 0x80\n"
269                        "BL             sub_FFC28D0C\n"
270                        "tst    r0, #1\n"
271                        "ldrne  r1, =0x1708\n" //[pc, #416]     ; ffc98420: (00001708) \n"
272                        "BNE    loc_ffc98350\n"
273"loc_ffc98280:\n" // ; 5 refs\n"
274                        "ldr    r1, [sp, #32]\n"
275                        "ldr    r0, [r1, #144]\n" //    ; 0x90\n"
276                        "ldr    r1, [r1, #140]\n" //    ; 0x8c\n"
277                        "BLX    r1\n"
278                        "B              loc_ffc98858\n"
279"loc_ffc98294:\n"
280                        "cmp    r1, #40\n" //   ; 0x28\n"
281                        "BNE    loc_ffc982dc\n"
282                        "add    r1, sp, #16\n"
283                        "BL             sub_FFC98140\n"
284                        "ldr    r0, [r6, #28]\n"
285                        "mov    r1, #256\n" //  ; 0x100\n"
286                        "BL             sub_FFC28E00\n"
287                        "ldr    r0, =0xffc93db8\n" //[pc, #364] ; ffc98424: (ffc93db8) \n"
288                        "mov    r1, #256\n" //  ; 0x100\n"
289                        "BL             sub_FFD13E58\n"
290                        "ldr    r0, [r6, #28]\n"
291                        "mov    r2, r7\n"
292                        "mov    r1, #256\n" //  ; 0x100\n"
293                        "BL             sub_FFC28D0C\n"
294                        "tst    r0, #1\n"
295                        "BEQ    loc_ffc98280\n"
296                        "ldr    r1, =0x1712\n" //[pc, #332]     ; ffc98428: (00001712) \n"
297                        "B              loc_ffc98350\n"
298"loc_ffc982dc:\n"
299                        "cmp    r1, #41\n" //   ; 0x29\n"
300                        "BNE    loc_ffc982f4\n"
301"loc_ffc982e4:\n"
302                        "ldr    r0, [sp, #32]\n"
303                        "add    r1, sp, #16\n"
304                        "BL             sub_FFC98140\n"
305                        "B              loc_ffc98280\n"
306"loc_ffc982f4:\n"
307                        "cmp    r1, #44\n" //   ; 0x2c\n"
308                        "BNE    loc_ffc9830c\n"
309                        "BL             sub_FFC864C4\n"
310                        "BL             sub_FFC87150\n"
311                        "BL             sub_FFC86CC8\n"
312                        "B              loc_ffc98280\n"
313"loc_ffc9830c:\n"
314                        "cmp    r1, #45\n" //   ; 0x2d\n"
315                        "BNE    loc_ffc9835c\n"
316                        "ldr    r0, [r6, #28]\n"
317                        "mov    r1, #4\n"
318                        "BL             sub_FFC28E00\n"
319                        "ldr    r1, =0xffc93dd8\n" //[pc, #-3732]       ; ffc97494: (ffc93dd8) \n"
320                        "ldr    r0, =0xfffff400\n" //[pc, #176] ; ffc983dc: (fffff400) \n"
321                        "mov    r2, #4\n"
322                        "BL             sub_FFC85F38\n"
323                        "BL             sub_FFC861C8\n"
324                        "ldr    r0, [r6, #28]\n"
325                        "mov    r2, r7\n"
326                        "mov    r1, #4\n"
327                        "BL             sub_FFC28C28\n"
328                        "tst    r0, #1\n"
329                        "BEQ    loc_ffc98280\n"
330                        "ldr    r1, =0x173a\n" //[pc, #216]     ; ffc9842c: (0000173a) \n"
331"loc_ffc98350:\n" // ; 2 refs\n"
332                        "ldr    r0,=0xffc944cc\n" // [pc, #-3844]       ; ffc97454: (ffc944cc)  **"ExpDrv.c"\n"
333                        "BL             _DebugAssert\n" //sub_FFC0F768\n"
334                        "B              loc_ffc98280\n"
335"loc_ffc9835c:\n" // ; 2 refs\n"
336                        "ldr    r0, [sp, #32]\n"
337                        "mov    r8, #1\n"
338                        "ldr    r1, [r0]\n"
339                        "cmp    r1, #18\n"
340                        "cmpne  r1, #19\n"
341                        "BNE    loc_ffc98430\n"
342                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
343                        "add    r1, r1, r1, lsl #1\n"
344                        "add    r1, r0, r1, lsl #2\n"
345                        "sub    r1, r1, #8\n"
346                        "ldm    r1, {r2, r3, r9}\n"
347                        "stm    r5, {r2, r3, r9}\n"
348                        "BL             sub_FFC967A4\n"
349                        "ldr    r0, [sp, #32]\n"
350                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
351                        "ldr    r3, [r0, #140]\n" //    ; 0x8c\n"
352                        "ldr    r2, [r0, #144]\n" //    ; 0x90\n"
353"loc_ffc983a0:\n"
354                        "add    r0, r0, #4\n"
355                        "BLX    r3\n"
356                        "ldr    r0, [sp, #32]\n"
357                        "BL             sub_FFC999D8\n"
358                        "ldr    r0, [sp, #32]\n"
359                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
360                        "ldr    r2, [r0, #152]\n" //    ; 0x98\n"
361                        "ldr    r3, [r0, #148]\n" //    ; 0x94\n"
362                        "B              loc_ffc98744\n"
363"loc_ffc98430:\n"
364                        "cmp    r1, #20\n"
365                        "cmpne  r1, #21\n"
366                        "cmpne  r1, #22\n"
367                        "cmpne  r1, #23\n"
368                        "BNE    loc_ffc984e8\n"
369                        "add    r3, sp, #16\n"
370                        "add    r2, sp, #4\n"
371                        "add    r1, sp, #20\n"
372                        "BL             sub_FFC96A0C\n"
373                        "cmp    r0, #1\n"
374                        "mov    r9, r0\n"
375                        "cmpne  r9, #5\n"
376                        "BNE    loc_ffc98484\n"
377                        "ldr    r0, [sp, #32]\n"
378                        "mov    r2, r9\n"
379                        "ldr    r1, [r0, #124]!\n" //   ; 0x7c\n"
380                        "ldr    ip, [r0, #16]!\n"
381                        "ldr    r3, [r0, #4]\n"
382                        "add    r0, sp, #4\n"
383                        "BLX    ip\n"
384                        "B              loc_ffc984bc\n"
385"loc_ffc98484:\n"
386                        "ldr    r0, [sp, #32]\n"
387                        "cmp    r9, #2\n"
388                        "ldr    r3, [r0, #144]\n" //    ; 0x90\n"
389                        "cmpne  r9, #6\n"
390                        "BNE    loc_ffc984d0\n"
391                        "ldr    ip, [r0, #140]\n" //    ; 0x8c\n"
392                        "mov    r2, r9\n"
393                        "mov    r1, #1\n"
394                        "add    r0, sp, #4\n"
395                        "BLX    ip\n"
396                        "ldr    r0, [sp, #32]\n"
397                        "add    r2, sp, #4\n"
398                        "add    r1, sp, #20\n"
399                        "BL             sub_FFC97E8C\n"
400"loc_ffc984bc:\n"
401                        "ldr    r0, [sp, #32]\n"
402                        "ldr    r2, [sp, #16]\n"
403                        "mov    r1, r9\n"
404                        "BL             sub_FFC980E0\n"
405                        "B              loc_ffc9874c\n"
406"loc_ffc984d0:\n"
407                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
408                        "ldr    ip, [r0, #140]\n" //    ; 0x8c\n"
409                        "mov    r2, r9\n"
410                        "add    r0, r0, #4\n"
411                        "BLX    ip\n"
412                        "B      loc_ffc9874c\n"
413"loc_ffc984e8:\n"
414                        "cmp    r1, #35\n" //   ; 0x23\n"
415                        "cmpne  r1, #36\n" //   ; 0x24\n"
416                        "BNE    loc_ffc98534\n"
417                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
418                        "add    r1, r1, r1, lsl #1\n"
419                        "add    r1, r0, r1, lsl #2\n"
420                        "sub    r1, r1, #8\n"
421                        "ldm    r1, {r2, r3, r9}\n"
422                        "stm    r5, {r2, r3, r9}\n"
423                        "BL             sub_FFC95818\n"
424                        "ldr    r0, [sp, #32]\n"
425                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
426                        "ldr    r3, [r0, #140]\n" //    ; 0x8c\n"
427                        "ldr    r2, [r0, #144]\n" //    ; 0x90\n"
428                        "add    r0, r0, #4\n"
429                        "BLX    r3\n"
430                        "ldr    r0, [sp, #32]\n"
431                        "BL             sub_FFC95C54\n"
432                        "B              loc_ffc9874c\n"
433"loc_ffc98534:\n"
434                        "add    r1, r0, #4\n"
435                        "ldm    r1, {r2, r3, r9}\n"
436                        "stm    r5, {r2, r3, r9}\n"
437                        "ldr    r1, [r0]\n"
438                        "cmp    r1, #39\n" //   ; 0x27\n"
439                        "addcc  pc, pc, r1, lsl #2\n"
440                        "B      loc_ffc98734\n"
441                        "B      loc_ffc985ec\n"
442                        "B      loc_ffc985ec\n"
443                        "B      loc_ffc985f4\n"
444                        "B      loc_ffc985fc\n"
445                        "B      loc_ffc985fc\n"
446                        "B      loc_ffc985fc\n"
447                        "B      loc_ffc985ec\n"
448                        "B      loc_ffc985f4\n"
449                        "B      loc_ffc985fc\n"
450                        "B      loc_ffc985fc\n"
451                        "B      loc_ffc98614\n"
452                        "B      loc_ffc98614\n"
453                        "B      loc_ffc98720\n"
454                        "B      loc_ffc98728\n"
455                        "B      loc_ffc98728\n"
456                        "B      loc_ffc98728\n"
457                        "B      loc_ffc98728\n"
458                        "B      loc_ffc98730\n"
459                        "B      loc_ffc98734\n"
460                        "B      loc_ffc98734\n"
461                        "B      loc_ffc98734\n"
462                        "B      loc_ffc98734\n"
463                        "B      loc_ffc98734\n"
464                        "B      loc_ffc98734\n"
465                        "B      loc_ffc98604\n"
466                        "B      loc_ffc9860c\n"
467                        "B      loc_ffc9860c\n"
468                        "B      loc_ffc98620\n"
469                        "B      loc_ffc98620\n"
470                        "B      loc_ffc98628\n"
471                        "B      loc_ffc98660\n"
472                        "B      loc_ffc98698\n"
473                        "B      loc_ffc986d0\n"
474                        "B      loc_ffc98708\n"
475                        "B      loc_ffc98708\n"
476                        "B      loc_ffc98734\n"
477                        "B      loc_ffc98734\n"
478                        "B      loc_ffc98710\n"
479                        "B      loc_ffc98718\n"
480"loc_ffc985ec:\n" // ; 3 refs\n"
481                        "BL             sub_FFC94350\n"
482                        "B              loc_ffc98734\n"
483"loc_ffc985f4:\n" // ; 2 refs\n"
484                        "BL             sub_FFC945F0\n"
485                        "B              loc_ffc98734\n"
486"loc_ffc985fc:\n" // ; 5 refs\n"
487                        "BL             sub_FFC94818\n"
488                        "B              loc_ffc98734\n"
489"loc_ffc98604:\n"
490                        "BL             sub_FFC94AF0\n"
491                        "B              loc_ffc98734\n"
492"loc_ffc9860c:\n" // ; 2 refs\n"
493                        "BL             sub_FFC94D08\n"
494                        "B              loc_ffc98734\n"
495"loc_ffc98614:\n" // ; 2 refs\n"
496                        "BL             sub_FFC95088_my\n"  //<<<<< patched
497                        "mov    r8, #0\n"
498                        "B              loc_ffc98734\n"
499"loc_ffc98620:\n" // ; 2 refs\n"
500                        "BL             sub_FFC951D0\n"
501                        "B              loc_ffc98734\n"
502"loc_ffc98628:\n"
503                        "ldrh   r1, [r0, #4]\n"
504                        "strh   r1, [sp, #20]\n"
505                        "ldrh   r1, [r4, #2]\n"
506                        "strh   r1, [sp, #22]\n"
507                        "ldrh   r1, [r4, #4]\n"
508                        "strh   r1, [sp, #24]\n"
509                        "ldrh   r1, [r4, #6]\n"
510                        "strh   r1, [sp, #26]\n"
511                        "ldrh   r1, [r0, #12]\n"
512                        "strh   r1, [sp, #28]\n"
513                        "ldrh   r1, [r4, #10]\n"
514                        "strh   r1, [sp, #30]\n"
515                        "BL             sub_FFC996D0\n"
516                        "B              loc_ffc98734\n"
517"loc_ffc98660:\n"
518                        "ldrh   r1, [r0, #4]\n"
519                        "strh   r1, [sp, #20]\n"
520                        "ldrh   r1, [r4, #2]\n"
521                        "strh   r1, [sp, #22]\n"
522                        "ldrh   r1, [r4, #4]\n"
523                        "strh   r1, [sp, #24]\n"
524                        "ldrh   r1, [r4, #6]\n"
525                        "strh   r1, [sp, #26]\n"
526                        "ldrh   r1, [r4, #8]\n"
527                        "strh   r1, [sp, #28]\n"
528                        "ldrh   r1, [r4, #10]\n"
529                        "strh   r1, [sp, #30]\n"
530                        "BL             sub_FFC997D8\n"
531                        "B              loc_ffc98734\n"
532"loc_ffc98698:\n"
533                        "ldrh   r1, [r4]\n"
534                        "strh   r1, [sp, #20]\n"
535                        "ldrh   r1, [r0, #6]\n"
536                        "strh   r1, [sp, #22]\n"
537                        "ldrh   r1, [r4, #4]\n"
538                        "strh   r1, [sp, #24]\n"
539                        "ldrh   r1, [r4, #6]\n"
540                        "strh   r1, [sp, #26]\n"
541                        "ldrh   r1, [r4, #8]\n"
542                        "strh   r1, [sp, #28]\n"
543                        "ldrh   r1, [r4, #10]\n"
544                        "strh   r1, [sp, #30]\n"
545                        "BL             sub_FFC9988C\n"
546                        "B              loc_ffc98734\n"
547"loc_ffc986d0:\n"
548                        "ldrh   r1, [r4]\n"
549                        "strh   r1, [sp, #20]\n"
550                        "ldrh   r1, [r4, #2]\n"
551                        "strh   r1, [sp, #22]\n"
552                        "ldrh   r1, [r4, #4]\n"
553                        "strh   r1, [sp, #24]\n"
554                        "ldrh   r1, [r4, #6]\n"
555                        "strh   r1, [sp, #26]\n"
556                        "ldrh   r1, [r0, #12]\n"
557                        "strh   r1, [sp, #28]\n"
558                        "ldrh   r1, [r4, #10]\n"
559                        "strh   r1, [sp, #30]\n"
560                        "BL             sub_FFC99934\n"
561                        "B              loc_ffc98734\n"
562"loc_ffc98708:\n" // ; 2 refs\n"
563                        "BL             sub_FFC9560C\n"
564                        "B              loc_ffc98734\n"
565"loc_ffc98710:\n"
566                        "BL             sub_FFC95D58\n"
567                        "B              loc_ffc98734\n"
568"loc_ffc98718:\n"
569                        "BL             sub_FFC96000\n"
570                        "B              loc_ffc98734\n"
571"loc_ffc98720:\n"
572                        "BL             sub_FFC961E0\n"
573                        "B              loc_ffc98734\n"
574"loc_ffc98728:\n" // ; 4 refs\n"
575                        "BL             sub_FFC9642C\n"
576                        "B              loc_ffc98734\n"
577"loc_ffc98730:\n"
578                        "BL             sub_FFC9659C\n"
579"loc_ffc98734:\n" // ; 25 refs\n"
580                        "ldr    r0, [sp, #32]\n"
581                        "ldr    r1, [r0, #124]\n" //    ; 0x7c\n"
582                        "ldr    r2, [r0, #144]\n" //    ; 0x90\n"
583                        "ldr    r3, [r0, #140]\n" //    ; 0x8c\n"
584"loc_ffc98744:\n"
585                        "add    r0, r0, #4\n"
586                        "BLX    r3\n"
587"loc_ffc9874c:\n" // ; 3 refs\n"
588                        "ldr    r1, [sp, #32]\n"
589                        "ldr    r0, [r1]\n"
590                        "cmp    r0, #16\n"
591                        "BEQ    loc_ffc98784\n"
592                        "bgt    loc_ffc98774\n"
593                        "cmp    r0, #1\n"
594                        "cmpne  r0, #4\n"
595                        "cmpne  r0, #14\n"
596                        "BNE    loc_ffc98794\n"
597                        "B              loc_ffc98784\n"
598"loc_ffc98774:\n"
599                        "cmp    r0, #19\n"
600                        "cmpne  r0, #23\n"
601                        "cmpne  r0, #26\n"
602                        "BNE    loc_ffc98794\n"
603"loc_ffc98784:\n" // ; 2 refs\n"
604                        "ldrh   r0, [r4]\n"
605                        "strh   r0, [sp, #20]\n"
606                        "ldrh   r0, [r4, #8]\n"
607                        "strh   r0, [sp, #28]\n"
608"loc_ffc98794:\n" // ; 2 refs\n"
609                        "cmp    r8, #1\n"
610                        "BNE    loc_ffc987e0\n"
611                        "ldr    r0, [r1, #124]\n" //    ; 0x7c\n"
612                        "mov    r2, #12\n"
613                        "add    r0, r0, r0, lsl #1\n"
614                        "add    r0, r1, r0, lsl #2\n"
615                        "sub    r8, r0, #8\n"
616                        "ldr    r0, =0x4f250\n" //[pc, #-924]   ; ffc9841c: (0004f250) \n"
617                        "add    r1, sp, #20\n"
618                        "BL             sub_FFE99884\n"
619                        "ldr    r0, =0x4f25c\n" //[pc, #3584]   ; ffc995c4: (0004f25c) \n"
620                        "mov    r2, #12\n"
621                        "add    r1, sp, #20\n"
622                        "BL             sub_FFE99884\n"
623                        "ldr    r0, =0x4f268\n" //[pc, #-1024]  ; ffc983d4: (0004f268) \n"
624                        "mov    r2, #12\n"
625                        "mov    r1, r8\n"
626                        "BL             sub_FFE99884\n"
627                        "B              loc_ffc98858\n"
628"loc_ffc987e0:\n"
629                        "ldr    r0, [r1]\n"
630                        "mov    r3, #1\n"
631                        "cmp    r0, #11\n"
632                        "BNE    loc_ffc98824\n"
633                        "mov    r2, #0\n"
634                        "strd   r2, [sp]\n"
635                        "mov    r2, r3\n"
636                        "mov    r1, r3\n"
637                        "mov    r0, #0\n"
638                        "BL             sub_FFC94130\n"
639                        "mov    r3, #1\n"
640                        "mov    r2, #0\n"
641                        "strd   r2, [sp]\n"
642                        "mov    r2, r3\n"
643                        "mov    r1, r3\n"
644                        "mov    r0, #0\n"
645                        "B              loc_ffc98854\n"
646"loc_ffc98824:\n"
647                        "mov    r2, #1\n"
648                        "strd   r2, [sp]\n"
649                        "mov    r3, r2\n"
650                        "mov    r1, r2\n"
651                        "mov    r0, r2\n"
652                        "BL             sub_FFC94130\n"
653                        "mov    r3, #1\n"
654                        "mov    r2, r3\n"
655                        "mov    r1, r3\n"
656                        "mov    r0, r3\n"
657                        "str    r3, [sp]\n"
658                        "str    r3, [sp, #4]\n"
659"loc_ffc98854:\n"
660                        "BL             sub_FFC9429C\n"
661"loc_ffc98858:\n" // ; 3 refs\n"
662                        "ldr    r0, [sp, #32]\n"
663                        "BL             sub_FFC9963C\n"
664                        "B              loc_ffc981b0\n"
665        );
666}
667
668void __attribute__((naked,noinline)) sub_FFC95088_my() {
669        asm volatile (
670                        "push   {r4, r5, r6, r7, r8, lr}\n"
671                        "ldr    r7, =0x39b4\n" //[pc, #-3036]   ; ffc944b8: (000039b4) \n"
672                        "mov    r4, r0\n"
673                        "ldr    r0, [r7, #28]\n"
674                        "mov    r1, #62\n" //   ; 0x3e\n"
675                        "BL             sub_FFC28E00\n"
676                        "mov    r2, #0\n"
677                        "ldrsh  r0, [r4, #4]\n"
678                        "mov    r1, r2\n"
679                        "BL             sub_FFC93E38\n"
680                        "mov    r5, r0\n"
681                        "ldrsh  r0, [r4, #6]\n"
682                        "BL             sub_FFC93F88\n"
683                        "ldrsh  r0, [r4, #8]\n"
684                        "BL             sub_FFC93FE0\n"
685                        "ldrsh  r0, [r4, #10]\n"
686                        "BL             sub_FFC94038\n"
687                        "ldrsh  r0, [r4, #12]\n"
688                        "mov    r1, #0\n"
689                        "BL             sub_FFC94090\n"
690                        "mov    r6, r0\n"
691                        "ldrsh  r0, [r4, #14]\n"
692                        "BL             sub_FFC9966C\n"
693                        "ldr    r0, [r4]\n"
694                        "ldr    r8, =0x4f268\n" //[pc, #-3120]  ; ffc944c0: (0004f268) \n"
695                        "cmp    r0, #11\n"
696                        "moveq  r5, #0\n"
697                        "moveq  r6, r5\n"
698                        "BEQ    loc_ffc95124\n"
699                        "cmp    r5, #1\n"
700                        "BNE    loc_ffc95124\n"
701                        "ldrsh  r0, [r4, #4]\n"
702                        "ldr    r1, =0xffc93d98\n" //[pc, #-3116]       ; ffc944e4: (ffc93d98) \n"
703                        "mov    r2, #2\n"
704                        "BL             sub_FFD13D1C\n"
705                        "strh   r0, [r4, #4]\n"
706                        "mov    r0, #0\n"
707                        "str    r0, [r7, #40]\n" //     ; 0x28\n"
708                        "B              loc_ffc9512c\n"
709"loc_ffc95124:\n" // ; 2 refs\n"
710                        "ldrh   r0, [r8]\n"
711                        "strh   r0, [r4, #4]\n"
712"loc_ffc9512c:\n"
713                        "cmp    r6, #1\n"
714                        "ldrneh r0, [r8, #8]\n"
715                        "BNE    loc_ffc95148\n"
716                        "ldrsh  r0, [r4, #12]\n"
717                        "ldr    r1, =0xffc93e1c\n" //[pc, #-3164]       ; ffc944e8: (ffc93e1c) \n"
718                        "mov    r2, #32\n"
719                        "BL             sub_FFC9968C\n"
720"loc_ffc95148:\n"
721                        "strh   r0, [r4, #12]\n"
722                        "ldrsh  r0, [r4, #6]\n"
723                        //"BL           sub_FFC86234\n"
724                        "BL             sub_FFC86234_my\n"              //<<<<<< patched
725                        "B              sub_FFC95154\n" //segue na ROM
726        );
727}
728void __attribute__((naked,noinline)) sub_FFC86234_my() {
729        asm volatile (
730
731                        "push   {r4, r5, r6, lr}\n"
732                        "ldr    r5, =0x3680\n" //[pc, #-476]    ; ffc86064: (00003680) \n"
733                        "mov    r4, r0\n"
734                        "ldr    r0, [r5, #4]\n"
735                        "cmp    r0, #1\n"
736                        "ldrne  r1, =0x146\n" //[pc, #980]      ; ffc86624: (00000146) \n"
737                        "LDRNE  R0,=0xffc8606c\n" //"subne      r0, pc, #488    ; ffc8606c: (74756853)  *"Shutter.c"\n"
738                        "BLNE   _DebugAssert\n" //sub_FFC0F768\n"
739                        "cmn    r4, #3072\n" // ; 0xc00\n"
740                        "ldreqsh        r4, [r5, #2]\n"
741                        "cmn    r4, #3072\n" // ; 0xc00\n"
742                        "moveq  r1, #332\n" //  ; 0x14c\n"
743                        "LDREQ  R0,=0xffc8606c\n" //"subeq      r0, pc, #512    ; ffc8606c: (74756853)  *"Shutter.c"\n"
744                        "strh   r4, [r5, #2]\n" //Em ixus220 ele usa LDRNE acima e a instruçãoé um subeq
745                        "BLEQ   _DebugAssert\n" //loc_ffc0f768\n"
746                        "mov    r0, r4\n"
747                        //"BL           _apex2us\n"     //"BL           sub_FFD8DFD0\n"  original
748                        "BL             apex2us\n"               //+ =>>>>>>>> patched
749                        "B              sub_FFC86278\n"  //continues firmware
750        );
751}                       
Note: See TracBrowser for help on using the repository browser.