source: branches/release-1_0/platform/a470/sub/100e/capt_seq.c @ 1625

Revision 1625, 25.4 KB checked in by reyalp, 2 years ago (diff)

a470 updates from srsa_4c in http://chdk.setepontos.com/index.php?topic=650.msg80692#msg80692

  • extra long exposures implemented (all 3 fw revisions, tested on 1.02c)
  • fixed the dark frame subtraction setting, bug mentioned here: http://chdk.setepontos.com/index.php?topic=3368.msg39071#msg39071 for all 3 revisions
  • flash params table and params count fixed (I've verified the addresses manually, so all 3 rev. should be ok)
  • defined CAM_STARTUP_CRASH_FILE_OPEN_FIX (previously camera crashed when "refresh" was issued in chdkptp GUI)
  • also defined CAM_DETECT_SCREEN_ERASE
  • strange check removed from kbd.c
  • multiple corrections for 1.02c according to stubs_entry.S (can't be sure it would be ok for the other 2)
  • debug code removed from capt_seq.c
  • Property svn:eol-style set to native
RevLine 
[785]1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4
[1625]5static long *nrflag = (long*)0x8888; //in sub_ffd0cae8, like in 101b
[785]6
7#include "../../../generic/capt_seq.c"
8
9void __attribute__((naked,noinline)) sub_FFD0CAE8_my(){
10 asm volatile(
11                "STMFD   SP!, {R0-R10,LR}\n"
12                "MOV     R6, #0\n"
13                "MOV     R4, R0\n"
14                "BL      sub_FFD0D5E8\n"
15                "MVN     R1, #0\n"
16                "BL      sub_FFC173EC\n"
17                "MOV     R2, #4\n"
18                "ADD     R1, SP, #0x30-0x28\n"
19                "MOV     R0, #0x8A\n"
20                "BL      sub_FFC56F08\n"
21                "TST     R0, #1\n"
22                "MOVNE   R1, #0x218\n"
23                "LDRNE   R0, =0xFFD0CCFC\n"
24                "BLNE    sub_FFC0BDB8\n"
25                "LDR     R8, =0x1973C\n"
26                "LDR     R5, =0x19690\n"
27                "LDRSH   R1, [R8,#0xE]\n"
28                "LDR     R0, [R5,#0x74]\n"
29                "BL      sub_FFCCB1F0\n"
30                "BL      sub_FFC32B68\n"
31                "LDR     R2, =0x888C\n"
32                "ADD     R3, R4, #0x8C\n"
33                "STRH    R0, [R4,#0x88]\n"
34                "STR     R2, [SP]\n"  //Was "STRD    R2, [SP,#0x30-0x30]\n"
35                "STR     R3, [SP,#4]\n" //
36                "MOV     R1, R0\n"
37                "LDRH    R0, [R5,#0x4C]\n"
38                "LDRSH   R2, [R8,#0xC]\n"
39                "LDR     R3, =0x8888\n"
40                "BL      sub_FFD0DAD4\n"
41                "BL      wait_until_remote_button_is_released\n"
42                "BL      capt_seq_hook_set_nr\n"
43                                "BL      sub_FFD0CB5C\n"
44 );
45}
46
47
48void __attribute__((naked,noinline)) task_CaptSeqTask_my() //#fs
49{
50        asm volatile (
51                "STMFD   SP!, {R3-R7,LR}\n"
52                "LDR     R6, =0x52D0\n"
53"loc_FFC488AC:\n"
54                "LDR     R0, [R6,#8]\n"
55                "MOV     R2, #0\n"
56                "MOV     R1, SP\n"
57                "BL      sub_FFC1763C\n"
58                "TST     R0, #1\n"
59                "BEQ     loc_FFC488D8\n"
60                "LDR     R1, =0x48E\n"
61                "LDR     R0, =0xFFC485CC\n"
62                "BL      sub_FFC0BDB8\n"
63                "BL      sub_FFC0BB70\n"
64                "LDMFD   SP!, {R3-R7,PC}\n"
65"loc_FFC488D8:\n"
66                //"LDR     R0, [SP,#0x18-0x18]\n"
67                                "LDR     R0, [SP]\n" //+
68                "LDR     R1, [R0]\n"
69                               
70                "CMP     R1, #0x19\n"
71                "ADDLS   PC, PC, R1,LSL#2\n"
72                "B       loc_FFC48AEC\n"
73"loc_FFC488EC:\n"
74                "B       loc_FFC48954\n"
75"loc_FFC488F0:\n"
76                "B       loc_FFC4895C\n"
77"loc_FFC488F4:\n"
78                "B       loc_FFC489DC\n"
79"loc_FFC488F8:\n"
80                "B       loc_FFC489F0\n"
81"loc_FFC488FC:\n"
82                "B       loc_FFC489E8\n"
83"loc_FFC48900:\n"
84                "B       loc_FFC489F8\n"
85"loc_FFC48904:\n"
86                "B       loc_FFC48A00\n"
87"loc_FFC48908:\n"
88                "B       loc_FFC48A0C\n"
89"loc_FFC4890C:\n"
90                "B       loc_FFC48A64\n"
91"loc_FFC48910:\n"
92                "B       loc_FFC489F0\n"
93"loc_FFC48914:\n"
94                "B       loc_FFC48A6C\n"
95"loc_FFC48918:\n"
96                "B       loc_FFC48A74\n"
97"loc_FFC4891C:\n"
98                "B       loc_FFC48A7C\n"
99"loc_FFC48920:\n"
100                "B       loc_FFC48A84\n"
101"loc_FFC48924:\n"
102                "B       loc_FFC48A8C\n"
103"loc_FFC48928:\n"
104                "B       loc_FFC48A98\n"
105"loc_FFC4892C:\n"
106                "B       loc_FFC48AA0\n"
107"loc_FFC48930:\n"
108                "B       loc_FFC48AA8\n"
109"loc_FFC48934:\n"
110                "B       loc_FFC48AB0\n"
111"loc_FFC48938:\n"
112                "B       loc_FFC48ABC\n"
113"loc_FFC4893C:\n"
114                "B       loc_FFC48AC4\n"
115"loc_FFC48940:\n"
116                "B       loc_FFC48ACC\n"
117"loc_FFC48944:\n"
118                "B       loc_FFC48AD4\n"
119"loc_FFC48948:\n"
120                "B       loc_FFC48ADC\n"
121"loc_FFC4894C:\n"
122                "B       loc_FFC48AE4\n"
123"loc_FFC48950:\n"
124                "B       loc_FFC48AF8\n"
125"loc_FFC48954:\n" //1
126                "BL      sub_FFD0B650\n"
127                                "BL      shooting_expo_param_override\n"  // +
128                "B       loc_FFC48A04\n"
129"loc_FFC4895C:\n" //2
130                "LDR     R4, [R0,#0xC]\n"
131                "LDR     R0, [R4,#8]\n"
132                "ORR     R0, R0, #1\n"
133                "STR     R0, [R4,#8]\n"
134                "BL      sub_FFD0B640\n"
135                "MOV     R0, R4\n"
136                "BL      sub_FFD0BA28\n"
137                "TST     R0, #1\n"
138                "MOVNE   R2, R4\n"
139                "MOVNE   R1, #1\n"
140                "BNE     loc_FFC48A5C\n"
141                "BL      sub_FFD2A16C\n"
142                "BL      sub_FFC57098\n"
143                "STR     R0, [R4,#0x14]\n"
144                "MOV     R0, R4\n"
145                "BL      sub_FFD0CA20\n"
146                "BL      sub_FFD0D484\n"
147                "MOV     R0, R4\n"
148                "BL      sub_FFD0CAE8_my\n"  //-------------->
149                                "BL      capt_seq_hook_raw_here\n"  //-------------->
150                "MOV     R5, R0\n"
151                "BL      sub_FFD0E464\n"
152                "BL      sub_FFD0E4A0\n"
153                "MOV     R2, R4\n"
154                "MOV     R1, #1\n"
155                "MOV     R0, R5\n"
156                "BL      sub_FFC47080\n"
157                "BL      sub_FFD0CE98\n"
158                "CMP     R0, #0\n"
159                "LDRNE   R0, [R4,#8]\n"
160                "ORRNE   R0, R0, #0x2000\n"
161                "STRNE   R0, [R4,#8]\n"
162                "B       loc_FFC48AF8\n"
163"loc_FFC489DC:\n"
164                "MOV     R0, #1\n"
165                "BL      sub_FFD0B7E4\n"
166                "B       loc_FFC48AF8\n"
167"loc_FFC489E8:\n"
168                "BL      sub_FFD0B2B0\n"
169                "B       loc_FFC48AF8\n"
170"loc_FFC489F0:\n"
171                "BL      sub_FFD0B630\n"
172                "B       loc_FFC48AF8\n"
173"loc_FFC489F8:\n"
174                "BL      sub_FFD0B638\n"
175                "B       loc_FFC48AF8\n"
176"loc_FFC48A00:\n"
177                "BL      sub_FFD0B704\n"
178"loc_FFC48A04:\n"
179                "BL      sub_FFC46D00\n"
180                "B       loc_FFC48AF8\n"
181"loc_FFC48A0C:\n"
182                "LDR     R4, [R0,#0xC]\n"
183                "BL      sub_FFD0B640\n"
184                "MOV     R0, R4\n"
185                "BL      sub_FFD0BDA8\n"
186                "TST     R0, #1\n"
187                "MOV     R5, R0\n"
188                "BNE     loc_FFC48A4C\n"
189                "BL      sub_FFC57098\n"
190                "STR     R0, [R4,#0x14]\n"
191                "MOV     R0, R4\n"
192                "BL      sub_FFD0CA20\n"
193                "MOV     R0, R4\n"
194                "BL      sub_FFD0CEF8\n"
195                "MOV     R5, R0\n"
196                "LDR     R0, [R4,#0x14]\n"
197                "BL      sub_FFC572A4\n"
198"loc_FFC48A4C:\n"
199                "BL      sub_FFD0B630\n"
200                "MOV     R2, R4\n"
201                "MOV     R1, #9\n"
202                "MOV     R0, R5\n"
203"loc_FFC48A5C:\n"
204                "BL      sub_FFC47080\n"
205                "B       loc_FFC48AF8\n"
206"loc_FFC48A64:\n"
207                "BL      sub_FFD0B764\n"
208                "B       loc_FFC48A04\n"
209"loc_FFC48A6C:\n"
210                "BL      sub_FFD0C024\n"
211                "B       loc_FFC48AF8\n"
212"loc_FFC48A74:\n"
213                "BL      sub_FFD0C20C\n"
214                "B       loc_FFC48AF8\n"
215"loc_FFC48A7C:\n"
216                "BL      sub_FFD0C29C\n"
217                "B       loc_FFC48AF8\n"
218"loc_FFC48A84:\n"
219                "BL      sub_FFD0C350\n"
220                "B       loc_FFC48AF8\n"
221"loc_FFC48A8C:\n"
222                "MOV     R0, #0\n"
223                "BL      sub_FFD0C4F4\n"
224                "B       loc_FFC48AF8\n"
225"loc_FFC48A98:\n"
226                "BL      sub_FFD0C644\n"
227                "B       loc_FFC48AF8\n"
228"loc_FFC48AA0:\n"
229                "BL      sub_FFD0C6D8\n"
230                "B       loc_FFC48AF8\n"
231"loc_FFC48AA8:\n"
232                "BL      sub_FFD0C7A0\n"
233                "B       loc_FFC48AF8\n"
234"loc_FFC48AB0:\n"
235                "BL      sub_FFD0B900\n"
236                "BL      sub_FFC149A0\n"
237                "B       loc_FFC48AF8\n"
238"loc_FFC48ABC:\n"
239                "BL      sub_FFD0C40C\n"
240                "B       loc_FFC48AF8\n"
241"loc_FFC48AC4:\n"
242                "BL      sub_FFD0C450\n"
243                "B       loc_FFC48AF8\n"
244"loc_FFC48ACC:\n"
245                "BL      sub_FFD0E448\n"
246                "B       loc_FFC48AF8\n"
247"loc_FFC48AD4:\n"
248                "BL      sub_FFD0E464\n"
249                "B       loc_FFC48AF8\n"
250"loc_FFC48ADC:\n"
251                "BL      sub_FFD0E474\n"
252                "B       loc_FFC48AF8\n"
253"loc_FFC48AE4:\n"
254                "BL      sub_FFD0E4A0\n"
255                "B       loc_FFC48AF8\n"
256"loc_FFC48AEC:\n"
257                "LDR     R1, =0x58E\n"
258                "LDR     R0, =0xFFC485CC\n"
259                "BL      sub_FFC0BDB8\n"
260"loc_FFC48AF8:\n"
261                //"LDR     R0, [SP,#0x18-0x18]\n"
262                                "LDR     R0, [SP]\n" //+
263                "LDR     R1, [R0,#4]\n"
264                "LDR     R0, [R6,#4]\n"
265                "BL      sub_FFC173B8\n"
266                //"LDR     R4, [SP,#0x18-0x18]\n"
267                                "LDR     R4, [SP]\n" //+
268                "LDR     R0, [R4,#8]\n"
269                "CMP     R0, #0\n"
270                "LDREQ   R1, =0x10D\n"
271                "LDREQ   R0, =0xFFC485CC\n"
272                "BLEQ    sub_FFC0BDB8\n"
273                "MOV     R0, #0\n"
274                "STR     R0, [R4,#8]\n"
275                "B       loc_FFC488AC\n"
276    );
277} //#fe
[1625]278
279
280void __attribute__((naked,noinline)) exp_drv_task()
281{
282        asm volatile (
283"       STMFD   SP!, {R4-R8,LR}\n"
284"       SUB     SP, SP, #0x20\n"
285"       LDR     R8, =0xBB8\n"
286"       LDR     R7, =0x64D4\n"
287"       LDR     R5, =0x3D3DC\n"
288"       MOV     R0, #0\n"
289"       ADD     R6, SP, #0x10\n"
290"       STR     R0, [SP,#0xC]\n"
291"loc_FFC900D8:\n"
292"       LDR     R0, [R7,#0x20]\n"
293"       MOV     R2, #0\n"
294"       ADD     R1, SP, #0x1C\n"
295"       BL      sub_FFC1763C\n"
296"       LDR     R0, [SP,#0xC]\n"
297"       CMP     R0, #1\n"
298"       BNE     loc_FFC90120\n"
299"       LDR     R0, [SP,#0x1C]\n"
300"       LDR     R0, [R0]\n"
301"       CMP     R0, #0x13\n"
302"       CMPNE   R0, #0x14\n"
303"       CMPNE   R0, #0x15\n"
304"       BEQ     loc_FFC9023C\n"
305"       CMP     R0, #0x27\n"
306"       BEQ     loc_FFC90214\n"
307"       ADD     R1, SP, #0xC\n"
308"       MOV     R0, #0\n"
309"       BL      sub_FFC90068\n"
310"loc_FFC90120:\n"
311"       LDR     R0, [SP,#0x1C]\n"
312"       LDR     R1, [R0]\n"
313"       CMP     R1, #0x2C\n"
314"       BNE     loc_FFC90150\n"
315"       LDR     R0, [SP,#0x1C]\n"
316"       BL      sub_FFC9131C\n"
317"       LDR     R0, [R7,#0x1C]\n"
318"       MOV     R1, #1\n"
319"       BL      sub_FFC173B8\n"
320"       BL      sub_FFC0BB70\n"
321"       ADD     SP, SP, #0x20\n"
322"       LDMFD   SP!, {R4-R8,PC}\n"
323"loc_FFC90150:\n"
324"       CMP     R1, #0x2B\n"
325"       BNE     loc_FFC9016C\n"
326"       LDR     R2, [R0,#0x88]!\n"
327"       LDR     R1, [R0,#4]\n"
328"       MOV     R0, R1\n"
329"       BLX     R2\n"
330"       B       loc_FFC906A0\n"
331"loc_FFC9016C:\n"
332"       CMP     R1, #0x25\n"
333"       BNE     loc_FFC901BC\n"
334"       LDR     R0, [R7,#0x1C]\n"
335"       MOV     R1, #0x80\n"
336"       BL      sub_FFC173EC\n"
337"       LDR     R0, =0xFFC8CB5C\n"
338"       MOV     R1, #0x80\n"
339"       BL      sub_FFD02FE0\n"
340"       LDR     R0, [R7,#0x1C]\n"
341"       MOV     R2, R8\n"
342"       MOV     R1, #0x80\n"
343"       BL      sub_FFC172F0\n"
344"       TST     R0, #1\n"
345"       LDRNE   R1, =0xD1B\n"
346"       BNE     loc_FFC90200\n"
347"loc_FFC901A8:\n"
348"       LDR     R1, [SP,#0x1C]\n"
349"       LDR     R0, [R1,#0x8C]\n"
350"       LDR     R1, [R1,#0x88]\n"
351"       BLX     R1\n"
352"       B       loc_FFC906A0\n"
353"loc_FFC901BC:\n"
354"       CMP     R1, #0x26\n"
355"       BNE     loc_FFC9020C\n"
356"       ADD     R1, SP, #0xC\n"
357"       BL      sub_FFC90068\n"
358"       LDR     R0, [R7,#0x1C]\n"
359"       MOV     R1, #0x100\n"
360"       BL      sub_FFC173EC\n"
361"       LDR     R0, =0xFFC8CB6C\n"
362"       MOV     R1, #0x100\n"
363"       BL      sub_FFD03268\n"
364"       LDR     R0, [R7,#0x1C]\n"
365"       MOV     R2, R8\n"
366"       MOV     R1, #0x100\n"
367"       BL      sub_FFC172F0\n"
368"       TST     R0, #1\n"
369"       BEQ     loc_FFC901A8\n"
370"       LDR     R1, =0xD25\n"
371"loc_FFC90200:\n"
372"       LDR     R0, =0xFFC8D25C\n"
373"       BL      sub_FFC0BDB8\n"
374"       B       loc_FFC901A8\n"
375"loc_FFC9020C:\n"
376"       CMP     R1, #0x27\n"
377"       BNE     loc_FFC90224\n"
378"loc_FFC90214:\n"
379"       LDR     R0, [SP,#0x1C]\n"
380"       ADD     R1, SP, #0xC\n"
381"       BL      sub_FFC90068\n"
382"       B       loc_FFC901A8\n"
383"loc_FFC90224:\n"
384"       CMP     R1, #0x2A\n"
385"       BNE     loc_FFC9023C\n"
386"       BL      sub_FFC6FF10\n"
387"       BL      sub_FFC70CDC\n"
388"       BL      sub_FFC70760\n"
389"       B       loc_FFC901A8\n"
390"loc_FFC9023C:\n"
391"       LDR     R0, [SP,#0x1C]\n"
392"       MOV     R4, #1\n"
393"       LDR     R1, [R0]\n"
394"       CMP     R1, #0x11\n"
395"       CMPNE   R1, #0x12\n"
396"       BNE     loc_FFC902AC\n"
397"       LDR     R1, [R0,#0x7C]\n"
398"       ADD     R1, R1, R1,LSL#1\n"
399"       ADD     R1, R0, R1,LSL#2\n"
400"       SUB     R1, R1, #8\n"
401"       LDMIA   R1, {R2-R4}\n"
402"       STMIA   R6, {R2-R4}\n"
403"       BL      sub_FFC8EBE8\n"
404"       LDR     R0, [SP,#0x1C]\n"
405"       LDR     R1, [R0,#0x7C]\n"
406"       LDR     R3, [R0,#0x88]\n"
407"       LDR     R2, [R0,#0x8C]\n"
408"       ADD     R0, R0, #4\n"
409"       BLX     R3\n"
410"       LDR     R0, [SP,#0x1C]\n"
411"       BL      sub_FFC916F4\n"
412"       LDR     R0, [SP,#0x1C]\n"
413"       LDR     R1, [R0,#0x7C]\n"
414"       LDR     R3, [R0,#0x90]\n"
415"       LDR     R2, [R0,#0x94]\n"
416"       ADD     R0, R0, #4\n"
417"       BLX     R3\n"
418"       B       loc_FFC905E0\n"
419"loc_FFC902AC:\n"
420"       CMP     R1, #0x13\n"
421"       CMPNE   R1, #0x14\n"
422"       CMPNE   R1, #0x15\n"
423"       BNE     loc_FFC90360\n"
424"       ADD     R3, SP, #0xC\n"
425"       MOV     R2, SP\n"
426"       ADD     R1, SP, #0x10\n"
427"       BL      sub_FFC8EE30\n"
428"       CMP     R0, #1\n"
429"       MOV     R4, R0\n"
430"       CMPNE   R4, #5\n"
431"       BNE     loc_FFC902FC\n"
432"       LDR     R0, [SP,#0x1C]\n"
433"       MOV     R2, R4\n"
434"       LDR     R1, [R0,#0x7C]!\n"
435"       LDR     R12, [R0,#0xC]!\n"
436"       LDR     R3, [R0,#4]\n"
437"       MOV     R0, SP\n"
438"       BLX     R12\n"
439"       B       loc_FFC90334\n"
440"loc_FFC902FC:\n"
441"       LDR     R0, [SP,#0x1C]\n"
442"       CMP     R4, #2\n"
443"       LDR     R3, [R0,#0x8C]\n"
444"       CMPNE   R4, #6\n"
445"       BNE     loc_FFC90348\n"
446"       LDR     R12, [R0,#0x88]\n"
447"       MOV     R0, SP\n"
448"       MOV     R2, R4\n"
449"       MOV     R1, #1\n"
450"       BLX     R12\n"
451"       LDR     R0, [SP,#0x1C]\n"
452"       MOV     R2, SP\n"
453"       ADD     R1, SP, #0x10\n"
454"       BL      sub_FFC8FDB4\n"
455"loc_FFC90334:\n"
456"       LDR     R0, [SP,#0x1C]\n"
457"       LDR     R2, [SP,#0xC]\n"
458"       MOV     R1, R4\n"
459"       BL      sub_FFC90008\n"
460"       B       loc_FFC905E0\n"
461"loc_FFC90348:\n"
462"       LDR     R1, [R0,#0x7C]\n"
463"       LDR     R12, [R0,#0x88]\n"
464"       ADD     R0, R0, #4\n"
465"       MOV     R2, R4\n"
466"       BLX     R12\n"
467"       B       loc_FFC905E0\n"
468"loc_FFC90360:\n"
469"       CMP     R1, #0x21\n"
470"       CMPNE   R1, #0x22\n"
471"       BNE     loc_FFC903AC\n"
472"       LDR     R1, [R0,#0x7C]\n"
473"       ADD     R1, R1, R1,LSL#1\n"
474"       ADD     R1, R0, R1,LSL#2\n"
475"       SUB     R1, R1, #8\n"
476"       LDMIA   R1, {R2-R4}\n"
477"       STMIA   R6, {R2-R4}\n"
478"       BL      sub_FFC8E174\n"
479"       LDR     R0, [SP,#0x1C]\n"
480"       LDR     R1, [R0,#0x7C]\n"
481"       LDR     R3, [R0,#0x88]\n"
482"       LDR     R2, [R0,#0x8C]\n"
483"       ADD     R0, R0, #4\n"
484"       BLX     R3\n"
485"       LDR     R0, [SP,#0x1C]\n"
486"       BL      sub_FFC8E464\n"
487"       B       loc_FFC905E0\n"
488"loc_FFC903AC:\n"
489"       ADD     R1, R0, #4\n"
490"       LDMIA   R1, {R2,R3,R12}\n"
491"       STMIA   R6, {R2,R3,R12}\n"
492"       LDR     R1, [R0]\n"
493"       CMP     R1, #0x24\n"
494"       ADDLS   PC, PC, R1,LSL#2\n"
495"       B       loc_FFC905C0\n"
496"loc_FFC903C8:\n"
497"       B       loc_FFC9045C\n"
498"loc_FFC903CC:\n"
499"       B       loc_FFC9045C\n"
500"loc_FFC903D0:\n"
501"       B       loc_FFC90464\n"
502"loc_FFC903D4:\n"
503"       B       loc_FFC9046C\n"
504"loc_FFC903D8:\n"
505"       B       loc_FFC9046C\n"
506"loc_FFC903DC:\n"
507"       B       loc_FFC9046C\n"
508"loc_FFC903E0:\n"
509"       B       loc_FFC9045C\n"
510"loc_FFC903E4:\n"
511"       B       loc_FFC90464\n"
512"loc_FFC903E8:\n"
513"       B       loc_FFC9046C\n"
514"loc_FFC903EC:\n"
515"       B       loc_FFC9046C\n"
516"loc_FFC903F0:\n"
517"       B       loc_FFC904C8\n"
518"loc_FFC903F4:\n"
519"       B       loc_FFC904C8\n"
520"loc_FFC903F8:\n"
521"       B       loc_FFC905B4\n"
522"loc_FFC903FC:\n"
523"       B       loc_FFC905BC\n"
524"loc_FFC90400:\n"
525"       B       loc_FFC905BC\n"
526"loc_FFC90404:\n"
527"       B       loc_FFC905BC\n"
528"loc_FFC90408:\n"
529"       B       loc_FFC905BC\n"
530"loc_FFC9040C:\n"
531"       B       loc_FFC905C0\n"
532"loc_FFC90410:\n"
533"       B       loc_FFC905C0\n"
534"loc_FFC90414:\n"
535"       B       loc_FFC905C0\n"
536"loc_FFC90418:\n"
537"       B       loc_FFC905C0\n"
538"loc_FFC9041C:\n"
539"       B       loc_FFC905C0\n"
540"loc_FFC90420:\n"
541"       B       loc_FFC90474\n"
542"loc_FFC90424:\n"
543"       B       loc_FFC9047C\n"
544"loc_FFC90428:\n"
545"       B       loc_FFC9047C\n"
546"loc_FFC9042C:\n"
547"       B       loc_FFC904D4\n"
548"loc_FFC90430:\n"
549"       B       loc_FFC904D4\n"
550"loc_FFC90434:\n"
551"       B       loc_FFC904DC\n"
552"loc_FFC90438:\n"
553"       B       loc_FFC9050C\n"
554"loc_FFC9043C:\n"
555"       B       loc_FFC9053C\n"
556"loc_FFC90440:\n"
557"       B       loc_FFC9056C\n"
558"loc_FFC90444:\n"
559"       B       loc_FFC9059C\n"
560"loc_FFC90448:\n"
561"       B       loc_FFC9059C\n"
562"loc_FFC9044C:\n"
563"       B       loc_FFC905C0\n"
564"loc_FFC90450:\n"
565"       B       loc_FFC905C0\n"
566"loc_FFC90454:\n"
567"       B       loc_FFC905A4\n"
568"loc_FFC90458:\n"
569"       B       loc_FFC905AC\n"
570"loc_FFC9045C:\n"
571"       BL      sub_FFC8D044\n"
572"       B       loc_FFC905C0\n"
573"loc_FFC90464:\n"
574"       BL      sub_FFC8D2D4\n"
575"       B       loc_FFC905C0\n"
576"loc_FFC9046C:\n"
577"       BL      sub_FFC8D4D8\n"
578"       B       loc_FFC905C0\n"
579"loc_FFC90474:\n"
580"       BL      sub_FFC8D740\n"
581"       B       loc_FFC905C0\n"
582"loc_FFC9047C:\n"
583"       BL      sub_FFC8D934\n"
584"       B       loc_FFC905C0\n"
585"loc_FFC904C8:\n"
586"       BL      sub_FFC8DB9C_my\n" // ->
587"       MOV     R4, #0\n"
588"       B       loc_FFC905C0\n"
589"loc_FFC904D4:\n"
590"       BL      sub_FFC8DCD8\n"
591"       B       loc_FFC905C0\n"
592"loc_FFC904DC:\n"
593"       LDRH    R1, [R0,#4]\n"
594"       STRH    R1, [SP,#0x10]\n"
595"       LDRH    R1, [R5,#2]\n"
596"       STRH    R1, [SP,#0x12]\n"
597"       LDRH    R1, [R5,#4]\n"
598"       STRH    R1, [SP,#0x14]\n"
599"       LDRH    R1, [R5,#6]\n"
600"       STRH    R1, [SP,#0x16]\n"
601"       LDRH    R1, [R0,#0xC]\n"
602"       STRH    R1, [SP,#0x18]\n"
603"       BL      sub_FFC91390\n"
604"       B       loc_FFC905C0\n"
605"loc_FFC9050C:\n"
606"       LDRH    R1, [R0,#4]\n"
607"       STRH    R1, [SP,#0x10]\n"
608"       LDRH    R1, [R5,#2]\n"
609"       STRH    R1, [SP,#0x12]\n"
610"       LDRH    R1, [R5,#4]\n"
611"       STRH    R1, [SP,#0x14]\n"
612"       LDRH    R1, [R5,#6]\n"
613"       STRH    R1, [SP,#0x16]\n"
614"       LDRH    R1, [R5,#8]\n"
615"       STRH    R1, [SP,#0x18]\n"
616"       BL      sub_FFC91510\n"
617"       B       loc_FFC905C0\n"
618"loc_FFC9053C:\n"
619"       LDRH    R1, [R5]\n"
620"       STRH    R1, [SP,#0x10]\n"
621"       LDRH    R1, [R0,#6]\n"
622"       STRH    R1, [SP,#0x12]\n"
623"       LDRH    R1, [R5,#4]\n"
624"       STRH    R1, [SP,#0x14]\n"
625"       LDRH    R1, [R5,#6]\n"
626"       STRH    R1, [SP,#0x16]\n"
627"       LDRH    R1, [R5,#8]\n"
628"       STRH    R1, [SP,#0x18]\n"
629"       BL      sub_FFC915BC\n"
630"       B       loc_FFC905C0\n"
631"loc_FFC9056C:\n"
632"       LDRH    R1, [R5]\n"
633"       STRH    R1, [SP,#0x10]\n"
634"       LDRH    R1, [R5,#2]\n"
635"       STRH    R1, [SP,#0x12]\n"
636"       LDRH    R1, [R5,#4]\n"
637"       STRH    R1, [SP,#0x14]\n"
638"       LDRH    R1, [R5,#6]\n"
639"       STRH    R1, [SP,#0x16]\n"
640"       LDRH    R1, [R0,#0xC]\n"
641"       STRH    R1, [SP,#0x18]\n"
642"       BL      sub_FFC9165C\n"
643"       B       loc_FFC905C0\n"
644"loc_FFC9059C:\n"
645"       BL      sub_FFC8DF4C\n"
646"       B       loc_FFC905C0\n"
647"loc_FFC905A4:\n"
648"       BL      sub_FFC8E568\n"
649"       B       loc_FFC905C0\n"
650"loc_FFC905AC:\n"
651"       BL      sub_FFC8E7A0\n"
652"       B       loc_FFC905C0\n"
653"loc_FFC905B4:\n"
654"       BL      sub_FFC8E918\n"
655"       B       loc_FFC905C0\n"
656"loc_FFC905BC:\n"
657"       BL      sub_FFC8EAB0\n"
658"loc_FFC905C0:\n"
659"       LDR     R0, [SP,#0x1C]\n"
660"       LDR     R1, [R0,#0x7C]\n"
661"       LDR     R3, [R0,#0x88]\n"
662"       LDR     R2, [R0,#0x8C]\n"
663"       ADD     R0, R0, #4\n"
664"       BLX     R3\n"
665"       CMP     R4, #1\n"
666"       BNE     loc_FFC90628\n"
667"loc_FFC905E0:\n"
668"       LDR     R0, [SP,#0x1C]\n"
669"       MOV     R2, #0xC\n"
670"       LDR     R1, [R0,#0x7C]\n"
671"       ADD     R1, R1, R1,LSL#1\n"
672"       ADD     R0, R0, R1,LSL#2\n"
673"       SUB     R4, R0, #8\n"
674"       LDR     R0, =0x3D3DC\n"
675"       ADD     R1, SP, #0x10\n"
676"       BL      sub_FFE4E008\n"
677"       LDR     R0, =0x3D3E8\n"
678"       MOV     R2, #0xC\n"
679"       ADD     R1, SP, #0x10\n"
680"       BL      sub_FFE4E008\n"
681"       LDR     R0, =0x3D3F4\n"
682"       MOV     R2, #0xC\n"
683"       MOV     R1, R4\n"
684"       BL      sub_FFE4E008\n"
685"       B       loc_FFC906A0\n"
686"loc_FFC90628:\n"
687"       LDR     R0, [SP,#0x1C]\n"
688"       LDR     R0, [R0]\n"
689"       CMP     R0, #0xB\n"
690"       BNE     loc_FFC90670\n"
691"       MOV     R3, #0\n"
692"       STR     R3, [SP]\n"
693"       MOV     R3, #1\n"
694"       MOV     R2, #1\n"
695"       MOV     R1, #1\n"
696"       MOV     R0, #0\n"
697"       BL      sub_FFC8CE4C\n"
698"       MOV     R3, #0\n"
699"       STR     R3, [SP]\n"
700"       MOV     R3, #1\n"
701"       MOV     R2, #1\n"
702"       MOV     R1, #1\n"
703"       MOV     R0, #0\n"
704"       B       loc_FFC9069C\n"
705"loc_FFC90670:\n"
706"       MOV     R3, #1\n"
707"       MOV     R2, #1\n"
708"       MOV     R1, #1\n"
709"       MOV     R0, #1\n"
710"       STR     R3, [SP]\n"
711"       BL      sub_FFC8CE4C\n"
712"       MOV     R3, #1\n"
713"       MOV     R2, #1\n"
714"       MOV     R1, #1\n"
715"       MOV     R0, #1\n"
716"       STR     R3, [SP]\n"
717"loc_FFC9069C:\n"
718"       BL      sub_FFC8CF8C\n"
719"loc_FFC906A0:\n"
720"       LDR     R0, [SP,#0x1C]\n"
721"       BL      sub_FFC9131C\n"
722"       B       loc_FFC900D8\n"
723        );
724}
725
726
727void __attribute__((naked,noinline)) sub_FFC8DB9C_my()
728{
729        asm volatile (
730"       STMFD   SP!, {R4-R8,LR}\n"
731"       LDR     R7, =0x64D4\n"
732"       MOV     R4, R0\n"
733"       LDR     R0, [R7,#0x1C]\n"
734"       MOV     R1, #0x3E\n"
735"       BL      sub_FFC173EC\n"
736"       LDRSH   R0, [R4,#4]\n"
737"       MOV     R2, #0\n"
738"       MOV     R1, #0\n"
739"       BL      sub_FFC8CBE0\n"
740"       MOV     R6, R0\n"
741"       LDRSH   R0, [R4,#6]\n"
742"       BL      sub_FFC8CCEC\n"
743"       LDRSH   R0, [R4,#8]\n"
744"       BL      sub_FFC8CD44\n"
745"       LDRSH   R0, [R4,#0xA]\n"
746"       BL      sub_FFC8CD9C\n"
747"       LDRSH   R0, [R4,#0xC]\n"
748"       BL      sub_FFC8CDF4\n"
749"       MOV     R5, R0\n"
750"       LDR     R0, [R4]\n"
751"       LDR     R8, =0x3D3F4\n"
752"       CMP     R0, #0xB\n"
753"       MOVEQ   R6, #0\n"
754"       MOVEQ   R5, #0\n"
755"       BEQ     loc_FFC8DC2C\n"
756"       CMP     R6, #1\n"
757"       BNE     loc_FFC8DC2C\n"
758"       LDRSH   R0, [R4,#4]\n"
759"       LDR     R1, =0xFFC8CB4C\n"
760"       MOV     R2, #2\n"
761"       BL      sub_FFD03134\n"
762"       STRH    R0, [R4,#4]\n"
763"       MOV     R0, #0\n"
764"       STR     R0, [R7,#0x28]\n"
765"       B       loc_FFC8DC34\n"
766"loc_FFC8DC2C:\n"
767"       LDRH    R0, [R8]\n"
768"       STRH    R0, [R4,#4]\n"
769"loc_FFC8DC34:\n"
770"       CMP     R5, #1\n"
771"       LDRNEH  R0, [R8,#8]\n"
772"       BNE     loc_FFC8DC50\n"
773"       LDRSH   R0, [R4,#0xC]\n"
774"       MOV     R2, #0x20\n"
775"       LDR     R1, =0xFFC8CBD0\n"
776"       BL      sub_FFC9134C\n"
777"loc_FFC8DC50:\n"
778"       STRH    R0, [R4,#0xC]\n"
779"       LDRSH   R0, [R4,#6]\n"
780"       BL      sub_FFC6FC5C_my\n" // ->
781"       LDR     PC, =0xFFC8DC5C\n" // + continue in ROM
782/* removed to spare some bytes -
783"       LDRSH   R0, [R4,#8]\n"
784"       MOV     R1, #1\n"
785"       BL      sub_FFC70458\n"
786"       MOV     R1, #0\n"
787"       ADD     R0, R4, #8\n"
788"       BL      sub_FFC704E0\n"
789"       LDRSH   R0, [R4,#0xE]\n"
790"       BL      sub_FFC83B1C\n"
791"       LDR     R4, =0xBB8\n"
792"       CMP     R6, #1\n"
793"       BNE     loc_FFC8DCA8\n"
794"       LDR     R0, [R7,#0x1C]\n"
795"       MOV     R2, R4\n"
796"       MOV     R1, #2\n"
797"       BL      sub_FFC172F0\n"
798"       TST     R0, #1\n"
799"       LDRNE   R1, =0x532\n"
800"       LDRNE   R0, =0xffc8d25c\n" // "ExpDrv.c"
801"       BLNE    sub_FFC0BDB8\n"
802"loc_FFC8DCA8:\n"
803"       CMP     R5, #1\n"
804"       LDMNEFD SP!, {R4-R8,PC}\n"
805"       LDR     R0, [R7,#0x1C]\n"
806"       MOV     R2, R4\n"
807"       MOV     R1, #0x20\n"
808"       BL      sub_FFC172F0\n"
809"       TST     R0, #1\n"
810"       LDRNE   R1, =0x537\n"
811"       LDRNE   R0, =0xffc8d25c\n" // "ExpDrv.c"
812"       LDMNEFD SP!, {R4-R8,LR}\n"
813"       BNE     sub_FFC0BDB8\n"
814"       LDMFD   SP!, {R4-R8,PC}\n"
815*/
816        );
817}
818
819
820void __attribute__((naked,noinline)) sub_FFC6FC5C_my()
821{
822        asm volatile (
823"       STMFD   SP!, {R4-R6,LR}\n"
824"       LDR     R5, =0x5FAC\n"
825"       MOV     R4, R0\n"
826"       LDR     R0, [R5,#4]\n"
827"       CMP     R0, #1\n"
828"       LDRNE   R1, =0x16D\n"
829"       LDRNE   R0, =0xffc6f9f4\n" // "Shutter.c"
830"       BLNE    sub_FFC0BDB8\n"
831"       CMN     R4, #0xC00\n"
832"       LDREQSH R4, [R5,#2]\n"
833"       CMN     R4, #0xC00\n"
834"       LDREQ   R1, =0x173\n"
835"       LDREQ   R0, =0xffc6f9f4\n" // "Shutter.c"
836"       STRH    R4, [R5,#2]\n"
837"       BLEQ    sub_FFC0BDB8\n"
838"       MOV     R0, R4\n"
839//"       BL      sub_FFD68398\n" //-
840"       BL      apex2us\n" //+
841"       MOV     R4, R0\n"
842//"       BL      nullsub\n" //-
843//"       MOV     R0, R4\n" //-
844"       BL      sub_FFCA25DC\n"
845"       TST     R0, #1\n"
846"       LDMNEFD SP!, {R4-R6,LR}\n"
847"       MOVNE   R1, #0x178\n"
848"       LDRNE   R0, =0xffc6f9f4\n" // "Shutter.c"
849"       BNE     sub_FFC0BDB8\n"
850"       LDMFD   SP!, {R4-R6,PC}\n"
851        );
852}
Note: See TracBrowser for help on using the repository browser.