source: platform/a710/sub/100a/capt_seq.c @ 53

Revision 42, 27.6 KB checked in by EWAVR, 11 years ago (diff)

Extended shutter speeds.

Line 
1#include "lolevel.h"
2#include "platform.h"
3#include "core.h"
4#include "conf.h"
5
6#define RAWDATA_AVAILABLE (1)
7#define RAWDATA_SAVED (2)
8
9#define NR_ON (2)
10#define NR_OFF (1)
11
12static long raw_save_stage;
13volatile long shutter_open_time=0; // for DNG EXIF creation
14
15int capt_seq_hook_raw_here(int x)
16{
17    raw_save_stage = RAWDATA_AVAILABLE;
18    core_rawdata_available();
19    while (raw_save_stage != RAWDATA_SAVED){
20        _SleepTask(10);
21    }
22   return x;
23}
24
25void hook_raw_save_complete()
26{
27    raw_save_stage = RAWDATA_SAVED;
28}
29
30
31void capt_seq_hook_set_nr()
32{
33    long *nrflag = (long*)0x621C;
34
35    switch (core_get_noise_reduction_value()){
36    case NOISE_REDUCTION_AUTO_CANON:
37        // leave it alone
38        break;
39    case NOISE_REDUCTION_OFF:
40        *nrflag = 1;
41        break;
42    case NOISE_REDUCTION_ON:
43        *nrflag = 2;
44        break;
45    };
46
47    shutter_open_time=_time((void*)0);
48}
49
50
51int handle_is_off(int x){
52 if (conf.alwaysconti && ((mode_get()&MODE_SHOOTING_MASK)!=MODE_STITCH)) conti_shooting=1;
53 if (conf.turn_off_is && (get_tv()<0))  _StopISDrive();  // greated tnan 1 sec.
54 return x;
55}
56
57void handle_is_on(void){
58 if (conf.turn_off_is && (get_IS_mode()!=3)) _StartISDrive();
59}
60
61
62void __attribute__((naked,noinline)) sub_FFD5F178_my(long p)
63{
64    asm volatile (
65                "STMFD   SP!, {R4,LR}\n"
66                "MOV     R4, R0\n"
67                "SUB     SP, SP, #0xC\n"
68                "BL      sub_FFD5FB34\n"
69                "LDR     R1, =0xFFFFFFFF\n"
70                "BL      sub_FFC103A4\n"
71                "LDR     R0, =0x122\n"
72                "ADD     R1, SP, #0x14-0x10\n"
73                "MOV     R2, #4\n"
74                "BL      sub_FFC14DEC\n"
75                "TST     R0, #1\n"
76                "BEQ     loc_FFD5F1B8\n"
77                "LDR     R0, =0xFFD5EFF4\n"
78                "MOV     R1, #0x1BC\n"
79                "BL      sub_FFC03CF8\n"
80"loc_FFD5F1B8:\n"
81                "LDR     R3, =0x9CB20\n"
82                "LDR     R2, =0x9CBE0\n"
83                "LDR     R0, [R3,#0x78]\n"
84                "LDRSH   R1, [R2,#0xE]\n"
85                "BL      sub_FFC90768\n"
86                "MOV     R0, R4\n"
87                "BL      sub_FFD5EF78\n"
88                "BL      capt_seq_hook_set_nr\n"
89                "LDR     R3, =0x6220\n"
90                "LDR     R0, [R3]\n"
91
92                "B       sub_FFD5F1DC\n"
93    );
94}
95
96void __attribute__((naked,noinline)) sub_FFD5C2C4_my(long p)
97{
98    asm volatile (
99                "STMFD   SP!, {R4,LR}\n"
100                "LDR     R4, [R0,#0xC]\n"
101                "LDR     R3, [R4,#8]\n"
102                "ORR     R3, R3, #1\n"
103                "STR     R3, [R4,#8]\n"
104                "MOV     R0, #0xC\n"
105                "BL      sub_FFD6581C\n"
106                "TST     R0, #1\n"
107                "MOV     R2, R4\n"
108                "MOV     R0, #2\n"
109                "BEQ     loc_FFD5C30C\n"
110                "LDR     R3, [R4,#8]\n"
111                "SUB     R0, R0, #1\n"
112                "ORR     R3, R3, #0x40000000\n"
113                "MOV     R1, R0\n"
114                "STR     R3, [R4,#8]\n"
115                "LDMFD   SP!, {R4,LR}\n"
116                "B       sub_FFD5AA1C\n"
117"loc_FFD5C30C:\n"
118                "BL      sub_FFEA6BEC\n"
119                "BL      sub_FFD5CD8C\n"
120                "MOV     R0, R4\n"
121                "BL      sub_FFD5DD50\n"
122                "TST     R0, #1\n"
123                "MOV     R2, R4\n"
124                "MOV     R1, #1\n"
125                "BEQ     loc_FFD5C334\n"
126                "LDMFD   SP!, {R4,LR}\n"
127                "B       sub_FFD5AA1C\n"
128"loc_FFD5C334:\n"
129                "BL      sub_FFD9ADF8\n"
130                "BL      sub_FFC14FE8\n"
131                "STR     R0, [R4,#0x14]\n"
132                "MOV     R0, R4\n"
133                "BL      sub_FFD5F060\n"
134                "BL      sub_FFD5F9C0\n"
135                "MOV     R0, R4\n"
136                "BL      sub_FFD5F178_my\n"
137                "BL      capt_seq_hook_raw_here\n"
138                "MOV     R1, #1\n"
139                "MOV     R2, R4\n"
140                "BL      sub_FFD5AA1C\n"
141                "BL      sub_FFD5F4AC\n"
142                "CMP     R0, #0\n"
143                "LDRNE   R3, [R4,#8]\n"
144                "ORRNE   R3, R3, #0x2000\n"
145                "STRNE   R3, [R4,#8]\n"
146                "LDMFD   SP!, {R4,PC}\n"
147    );
148}
149
150void __attribute__((naked,noinline)) capt_seq_task()
151{
152        asm volatile (
153                "STMFD   SP!, {R4,LR}\n"
154                "SUB     SP, SP, #4\n"
155                "MOV     R4, SP\n"
156                "B       loc_FFD5C878\n"
157"loc_FFD5C70C:\n"
158                "LDR     R2, [SP,#0xC-0xC]\n"
159                "LDR     R3, [R2]\n"
160                "MOV     R0, R2\n"
161                "CMP     R3, #0x16\n"
162                "LDRLS   PC, [PC,R3,LSL#2]\n"
163                "B       loc_FFD5C84C\n"
164                ".long loc_FFD5C780\n"
165                ".long loc_FFD5C78C\n"
166                ".long loc_FFD5C794\n"
167                ".long loc_FFD5C7A8\n"
168                ".long loc_FFD5C7A0\n"
169                ".long loc_FFD5C7B0\n"
170                ".long loc_FFD5C7B8\n"
171                ".long loc_FFD5C7C4\n"
172                ".long loc_FFD5C7CC\n"
173                ".long loc_FFD5C7D8\n"
174                ".long loc_FFD5C7E0\n"
175                ".long loc_FFD5C7E8\n"
176                ".long loc_FFD5C7F0\n"
177                ".long loc_FFD5C7F8\n"
178                ".long loc_FFD5C800\n"
179                ".long loc_FFD5C80C\n"
180                ".long loc_FFD5C814\n"
181                ".long loc_FFD5C81C\n"
182                ".long loc_FFD5C824\n"
183                ".long loc_FFD5C830\n"
184                ".long loc_FFD5C83C\n"
185                ".long loc_FFD5C844\n"
186                ".long loc_FFD5C860\n"
187"loc_FFD5C780:\n"
188                "BL      sub_FFD5CDA0\n"
189                "BL      shooting_override\n"
190                "BL      sub_FFD5A518\n"
191                "B       loc_FFD5C85C\n"
192"loc_FFD5C78C:\n"
193                "BL      handle_is_off\n" //----------->
194                "BL      sub_FFD5C2C4_my\n"
195                "BL      handle_is_on\n"  //----------->
196                "B       loc_FFD5C85C\n"
197"loc_FFD5C794:\n"
198                "MOV     R0, #1\n"
199                "BL      sub_FFD5CF94\n"
200                "B       loc_FFD5C85C\n"
201"loc_FFD5C7A0:\n"
202                "BL      sub_FFD5C96C\n"
203                "B       loc_FFD5C85C\n"
204"loc_FFD5C7A8:\n"
205                "BL      sub_FFD5CD6C\n"
206                "B       loc_FFD5C85C\n"
207"loc_FFD5C7B0:\n"
208                "BL      sub_FFD5CD7C\n"
209                "B       loc_FFD5C85C\n"
210"loc_FFD5C7B8:\n"
211                "BL      sub_FFD5CE8C\n"
212                "BL      sub_FFD5A518\n"
213                "B       loc_FFD5C85C\n"
214"loc_FFD5C7C4:\n"
215                "BL      sub_FFD5C3D8\n"
216                "B       loc_FFD5C85C\n"
217"loc_FFD5C7CC:\n"
218                "BL      sub_FFD5CEF4\n"
219                "BL      sub_FFD5A518\n"
220                "B       loc_FFD5C85C\n"
221"loc_FFD5C7D8:\n"
222                "BL      sub_FFD5CD6C\n"
223                "B       loc_FFD5C85C\n"
224"loc_FFD5C7E0:\n"
225                "BL      sub_FFD5E444\n"
226                "B       loc_FFD5C85C\n"
227"loc_FFD5C7E8:\n"
228                "BL      sub_FFD5E610\n"
229                "B       loc_FFD5C85C\n"
230"loc_FFD5C7F0:\n"
231                "BL      sub_FFD5E6A4\n"
232                "B       loc_FFD5C85C\n"
233"loc_FFD5C7F8:\n"
234                "BL      sub_FFD5E740\n"
235                "B       loc_FFD5C85C\n"
236"loc_FFD5C800:\n"
237                "MOV     R0, #0\n"
238                "BL      sub_FFD5E9AC\n"
239                "B       loc_FFD5C85C\n"
240"loc_FFD5C80C:\n"
241                "BL      sub_FFD5EB64\n"
242                "B       loc_FFD5C85C\n"
243"loc_FFD5C814:\n"
244                "BL      sub_FFD5EBF4\n"
245                "B       loc_FFD5C85C\n"
246"loc_FFD5C81C:\n"
247                "BL      sub_FFD5ECAC\n"
248                "B       loc_FFD5C85C\n"
249"loc_FFD5C824:\n"
250                "MOV     R0, #1\n"
251                "BL      sub_FFD5E9AC\n"
252                "B       loc_FFD5C85C\n"
253"loc_FFD5C830:\n"
254                "BL      sub_FFD5D0D0\n"
255                "BL      sub_FFD5C1EC\n"
256                "B       loc_FFD5C85C\n"
257"loc_FFD5C83C:\n"
258                "BL      sub_FFD5E880\n"
259                "B       loc_FFD5C85C\n"
260"loc_FFD5C844:\n"
261                "BL      sub_FFD5E8D8\n"
262                "B       loc_FFD5C85C\n"
263"loc_FFD5C84C:\n"
264                "MOV     R1, #0x4E0\n"
265                "LDR     R0, =0xFFD5C048\n"
266                "ADD     R1, R1, #9\n"
267                "BL      sub_FFC03CF8\n"
268"loc_FFD5C85C:\n"
269                "LDR     R2, [SP,#0xC-0xC]\n"
270"loc_FFD5C860:\n"
271                "LDR     R3, =0x71C94\n"
272                "LDR     R1, [R2,#4]\n"
273                "LDR     R0, [R3]\n"
274                "BL      sub_FFC10208\n"
275                "LDR     R0, [SP,#0xC-0xC]\n"
276                "BL      sub_FFD5C0C4\n"
277"loc_FFD5C878:\n"
278                "LDR     R3, =0x71C98\n"
279                "MOV     R1, R4\n"
280                "LDR     R0, [R3]\n"
281                "MOV     R2, #0\n"
282                "BL      sub_FFC10920\n"
283                "TST     R0, #1\n"
284                "BEQ     loc_FFD5C70C\n"
285                "MOV     R1, #0x410\n"
286                "LDR     R0, =0xFFD5C048\n"
287                "ADD     R1, R1, #0xB\n"
288                "BL      sub_FFC03CF8\n"
289                "BL      sub_FFC11E7C\n"
290                "ADD     SP, SP, #4\n"
291                "LDMFD   SP!, {R4,PC}\n"
292        );
293}
294
295
296void __attribute__((naked,noinline)) exp_drv_task(){
297 asm volatile(
298                 "STMFD   SP!, {R4-R8,LR}\n"
299                 "SUB     SP, SP, #0x20\n"
300                 "ADD     R7, SP, #4\n"
301                 "B       loc_FFD05950\n"
302 "loc_FFD054A4:\n"
303                 "CMP     R2, #0x22\n"
304                 "BNE     loc_FFD054BC\n"
305                 "LDR     R0, [R12,#0x8C]\n"
306                 "MOV     LR, PC\n"
307                 "LDR     PC, [R12,#0x88]\n"
308                 "B       loc_FFD05520\n"
309 "loc_FFD054BC:\n"
310                 "CMP     R2, #0x1D\n"
311                 "BNE     loc_FFD054D0\n"
312                 "MOV     R0, R12\n"
313                 "BL      sub_FFD05364\n"
314                 "B       loc_FFD05510\n"
315 "loc_FFD054D0:\n"
316                 "CMP     R2, #0x1E\n"
317                 "BNE     loc_FFD054E4\n"
318                 "MOV     R0, R12\n"
319                 "BL      sub_FFD053C0\n"
320                 "B       loc_FFD05510\n"
321 "loc_FFD054E4:\n"
322                 "SUB     R3, R2, #0x1F\n"
323                 "CMP     R3, #1\n"
324                 "BHI     loc_FFD054FC\n"
325                 "MOV     R0, R12\n"
326                 "BL      sub_FFD0541C\n"
327                 "B       loc_FFD05510\n"
328 "loc_FFD054FC:\n"
329                 "CMP     R2, #0x21\n"
330                 "BNE     loc_FFD0552C\n"
331                 "BL      sub_FFCA4380\n"
332                 "BL      sub_FFCA7474\n"
333                 "BL      sub_FFCA66AC\n"
334 "loc_FFD05510:\n"
335                 "LDR     R3, [SP,#4]\n"
336                 "LDR     R0, [R3,#0x8C]\n"
337                 "MOV     LR, PC\n"
338                 "LDR     PC, [R3,#0x88]\n"
339 "loc_FFD05520:\n"
340                 "LDR     R0, [SP,#4]\n"
341                 "BL      sub_FFD00F00\n"
342                 "B       loc_FFD05950\n"
343 "loc_FFD0552C:\n"
344                 "CMP     R2, #0xD\n"
345                 "MOV     R8, #1\n"
346                 "BNE     loc_FFD0559C\n"
347                 "LDR     R1, [R12,#0x7C]\n"
348                 "ADD     R1, R1, R1,LSL#1\n"
349                 "ADD     R1, R12, R1,LSL#2\n"
350                 "ADD     R6, SP, #0x14\n"
351                 "SUB     R1, R1, #8\n"
352                 "MOV     R2, #0xC\n"
353                 "MOV     R0, R6\n"
354                 "BL      _memcpy\n"
355                 "LDR     R0, [SP,#4]\n"
356                 "BL      sub_FFD039DC\n"
357                 "LDR     R3, [SP,#4]\n"
358                 "LDR     R1, [R3,#0x7C]\n"
359                 "LDR     R2, [R3,#0x8C]\n"
360                 "ADD     R0, R3, #4\n"
361                 "MOV     LR, PC\n"
362                 "LDR     PC, [R3,#0x88]\n"
363                 "LDR     R0, [SP,#4]\n"
364                 "BL      sub_FFD03CAC\n"
365                 "LDR     R3, [SP,#4]\n"
366                 "ADD     R0, R3, #4\n"
367                 "LDR     R1, [R3,#0x7C]\n"
368                 "LDR     R2, [R3,#0x94]\n"
369                 "MOV     LR, PC\n"
370                 "LDR     PC, [R3,#0x90]\n"
371                 "B       loc_FFD058EC\n"
372 "loc_FFD0559C:\n"
373                 "SUB     R3, R2, #0xE\n"
374                 "CMP     R3, #1\n"
375                 "BHI     loc_FFD05658\n"
376                 "ADD     R6, SP, #0x14\n"
377                 "ADD     R5, SP, #8\n"
378                 "MOV     R0, R12\n"
379                 "MOV     R1, R6\n"
380                 "MOV     R2, R5\n"
381                 "BL      sub_FFD03DA0\n"
382                 "MOV     R4, R0\n"
383                 "CMP     R4, #5\n"
384                 "CMPNE   R4, #1\n"
385                 "BNE     loc_FFD055F0\n"
386                 "LDR     R12, [SP,#4]\n"
387                 "MOV     R0, R5\n"
388                 "LDR     R1, [R12,#0x7C]\n"
389                 "MOV     R2, R4\n"
390                 "LDR     R3, [R12,#0x8C]\n"
391                 "MOV     LR, PC\n"
392                 "LDR     PC, [R12,#0x88]\n"
393                 "B       loc_FFD05628\n"
394 "loc_FFD055F0:\n"
395                 "CMP     R4, #6\n"
396                 "CMPNE   R4, #2\n"
397                 "BNE     loc_FFD05638\n"
398                 "LDR     R12, [SP,#4]\n"
399                 "MOV     R0, R5\n"
400                 "MOV     R1, R8\n"
401                 "MOV     R2, R4\n"
402                 "LDR     R3, [R12,#0x8C]\n"
403                 "MOV     LR, PC\n"
404                 "LDR     PC, [R12,#0x88]\n"
405                 "MOV     R1, R6\n"
406                 "LDR     R0, [SP,#4]\n"
407                 "MOV     R2, R5\n"
408                 "BL      sub_FFD04FD0\n"
409 "loc_FFD05628:\n"
410                 "MOV     R1, R4\n"
411                 "LDR     R0, [SP,#4]\n"
412                 "BL      sub_FFD052F8\n"
413                 "B       loc_FFD058EC\n"
414 "loc_FFD05638:\n"
415                 "LDR     R12, [SP,#4]\n"
416                 "MOV     R2, R4\n"
417                 "ADD     R0, R12, #4\n"
418                 "LDR     R1, [R12,#0x7C]\n"
419                 "LDR     R3, [R12,#0x8C]\n"
420                 "MOV     LR, PC\n"
421                 "LDR     PC, [R12,#0x88]\n"
422                 "B       loc_FFD058EC\n"
423 "loc_FFD05658:\n"
424                 "SUB     R3, R2, #0x19\n"
425                 "CMP     R3, #1\n"
426                 "BHI     loc_FFD056B0\n"
427                 "LDR     R1, [R12,#0x7C]\n"
428                 "ADD     R1, R1, R1,LSL#1\n"
429                 "ADD     R1, R12, R1,LSL#2\n"
430                 "ADD     R6, SP, #0x14\n"
431                 "SUB     R1, R1, #8\n"
432                 "MOV     R2, #0xC\n"
433                 "MOV     R0, R6\n"
434                 "BL      _memcpy\n"
435                 "LDR     R0, [SP,#4]\n"
436                 "BL      sub_FFD02DD4\n"
437                 "LDR     R3, [SP,#4]\n"
438                 "ADD     R0, R3, #4\n"
439                 "LDR     R1, [R3,#0x7C]\n"
440                 "LDR     R2, [R3,#0x8C]\n"
441                 "MOV     LR, PC\n"
442                 "LDR     PC, [R3,#0x88]\n"
443                 "LDR     R0, [SP,#4]\n"
444                 "BL      sub_FFD031B0\n"
445                 "B       loc_FFD058EC\n"
446 "loc_FFD056B0:\n"
447                 "ADD     R6, SP, #0x14\n"
448                 "ADD     R1, R12, #4\n"
449                 "MOV     R2, #0xC\n"
450                 "MOV     R0, R6\n"
451                 "BL      memcpy\n"
452                 "LDR     R12, [SP,#4]\n"
453                 "LDR     R3, [R12]\n"
454                 "MOV     R2, R12\n"
455                 "CMP     R3, #0x1C\n"
456                 "LDRLS   PC, [PC,R3,LSL#2]\n"
457                 "B       loc_FFD058D8\n"
458                 ".long loc_FFD05750\n"
459                 ".long loc_FFD0575C\n"
460                 ".long loc_FFD05768\n"
461                 ".long loc_FFD05768\n"
462                 ".long loc_FFD05750\n"
463                 ".long loc_FFD0575C\n"
464                 ".long loc_FFD05768\n"
465                 ".long loc_FFD05768\n"
466                 ".long loc_FFD0578C\n"
467                 ".long loc_FFD0578C\n"
468                 ".long loc_FFD058AC\n"
469                 ".long loc_FFD058B8\n"
470                 ".long loc_FFD058C8\n"
471                 ".long loc_FFD058D8\n"
472                 ".long loc_FFD058D8\n"
473                 ".long loc_FFD058D8\n"
474                 ".long loc_FFD05774\n"
475                 ".long loc_FFD05780\n"
476                 ".long loc_FFD0579C\n"
477                 ".long loc_FFD057A8\n"
478                 ".long loc_FFD057E0\n"
479                 ".long loc_FFD05818\n"
480                 ".long loc_FFD05850\n"
481                 ".long loc_FFD05888\n"
482                 ".long loc_FFD05888\n"
483                 ".long loc_FFD058D8\n"
484                 ".long loc_FFD058D8\n"
485                 ".long loc_FFD05894\n"
486                 ".long loc_FFD058A0\n"
487 "loc_FFD05750:\n"
488                 "MOV     R0, R2\n"
489                 "BL      sub_FFD017B0\n"
490                 "B       loc_FFD058D4\n"
491 "loc_FFD0575C:\n"
492                 "MOV     R0, R2\n"
493                 "BL      sub_FFD01A54\n"
494                 "B       loc_FFD058D4\n"
495 "loc_FFD05768:\n"
496                 "MOV     R0, R2\n"
497                 "BL      sub_FFD01CC8\n"
498                 "B       loc_FFD058D4\n"
499 "loc_FFD05774:\n"
500                 "MOV     R0, R2\n"
501                 "BL      sub_FFD01FC4\n"
502                 "B       loc_FFD058D4\n"
503 "loc_FFD05780:\n"
504                 "MOV     R0, R2\n"
505                 "BL      sub_FFD02228\n"
506                 "B       loc_FFD058D4\n"
507 "loc_FFD0578C:\n"
508                 "MOV     R0, R2\n"
509                 "BL      sub_FFD02424_my\n"  //---------->
510                 "MOV     R8, #0\n"
511                 "B       loc_FFD058D4\n"
512 "loc_FFD0579C:\n"
513                 "MOV     R0, R2\n"
514                 "BL      sub_FFD02580\n"
515                 "B       loc_FFD058D4\n"
516 "loc_FFD057A8:\n"
517                 "LDRH    R1, [R2,#4]\n"
518                 "LDR     R3, =0x4D750\n"
519                 "STRH    R1, [SP,#0x14]\n"
520                 "LDRH    R1, [R3,#6]\n"
521                 "STRH    R1, [SP,#0x1A]\n"
522                 "LDRH    R1, [R3,#2]\n"
523                 "STRH    R1, [SP,#0x16]\n"
524                 "LDRH    R3, [R3,#4]\n"
525                 "STRH    R3, [SP,#0x18]\n"
526                 "MOV     R0, R2\n"
527                 "LDRH    R2, [R2,#0xC]\n"
528                 "STRH    R2, [SP,#0x1C]\n"
529                 "BL      sub_FFD0287C\n"
530                 "B       loc_FFD058D4\n"
531 "loc_FFD057E0:\n"
532                 "MOV     R0, R2\n"
533                 "LDRH    R2, [R2,#4]\n"
534                 "LDR     R3, =0x4D750\n"
535                 "STRH    R2, [SP,#0x14]\n"
536                 "LDRH    R2, [R3,#8]\n"
537                 "STRH    R2, [SP,#0x1C]\n"
538                 "LDRH    R1, [R3,#2]\n"
539                 "STRH    R1, [SP,#0x16]\n"
540                 "LDRH    R2, [R3,#4]\n"
541                 "STRH    R2, [SP,#0x18]\n"
542                 "LDRH    R3, [R3,#6]\n"
543                 "STRH    R3, [SP,#0x1A]\n"
544                 "BL      sub_FFD029A4\n"
545                 "B       loc_FFD058D4\n"
546 "loc_FFD05818:\n"
547                 "LDR     R3, =0x4D750\n"
548                 "LDRH    R1, [R3]\n"
549                 "STRH    R1, [SP,#0x14]\n"
550                 "MOV     R0, R2\n"
551                 "LDRH    R2, [R2,#6]\n"
552                 "STRH    R2, [SP,#0x16]\n"
553                 "LDRH    R2, [R3,#8]\n"
554                 "STRH    R2, [SP,#0x1C]\n"
555                 "LDRH    R1, [R3,#4]\n"
556                 "STRH    R1, [SP,#0x18]\n"
557                 "LDRH    R3, [R3,#6]\n"
558                 "STRH    R3, [SP,#0x1A]\n"
559                 "BL      sub_FFD02A68\n"
560                 "B       loc_FFD058D4\n"
561 "loc_FFD05850:\n"
562                 "LDR     R3, =0x4D750\n"
563                 "LDRH    R1, [R3,#6]\n"
564                 "STRH    R1, [SP,#0x1A]\n"
565                 "LDRH    R1, [R3]\n"
566                 "STRH    R1, [SP,#0x14]\n"
567                 "LDRH    R1, [R3,#2]\n"
568                 "STRH    R1, [SP,#0x16]\n"
569                 "LDRH    R3, [R3,#4]\n"
570                 "STRH    R3, [SP,#0x18]\n"
571                 "MOV     R0, R2\n"
572                 "LDRH    R2, [R2,#0xC]\n"
573                 "STRH    R2, [SP,#0x1C]\n"
574                 "BL      sub_FFD02B20\n"
575                 "B       loc_FFD058D4\n"
576 "loc_FFD05888:\n"
577                 "MOV     R0, R2\n"
578                 "BL      sub_FFD02BD0\n"
579                 "B       loc_FFD058D4\n"
580 "loc_FFD05894:\n"
581                 "MOV     R0, R2\n"
582                 "BL      sub_FFD03300\n"
583                 "B       loc_FFD058D4\n"
584 "loc_FFD058A0:\n"
585                 "MOV     R0, R2\n"
586                 "BL      sub_FFD034FC\n"
587                 "B       loc_FFD058D4\n"
588 "loc_FFD058AC:\n"
589                 "MOV     R0, R2\n"
590                 "BL      sub_FFD036B8\n"
591                 "B       loc_FFD058D4\n"
592 "loc_FFD058B8:\n"
593                 "MOV     R0, R2\n"
594                 "MOV     R1, #0\n"
595                 "BL      sub_FFD0389C\n"
596                 "B       loc_FFD058D4\n"
597 "loc_FFD058C8:\n"
598                 "MOV     R0, R2\n"
599                 "MOV     R1, #1\n"
600                 "BL      sub_FFD0389C\n"
601 "loc_FFD058D4:\n"
602                 "LDR     R12, [SP,#4]\n"
603 "loc_FFD058D8:\n"
604                 "ADD     R0, R12, #4\n"
605                 "LDR     R1, [R12,#0x7C]\n"
606                 "LDR     R2, [R12,#0x8C]\n"
607                 "MOV     LR, PC\n"
608                 "LDR     PC, [R12,#0x88]\n"
609 "loc_FFD058EC:\n"
610                 "CMP     R8, #1\n"
611                 "BNE     loc_FFD05914\n"
612                 "LDR     R1, [SP,#4]\n"
613                 "LDR     R3, [R1,#0x7C]\n"
614                 "ADD     R3, R3, R3,LSL#1\n"
615                 "ADD     R1, R1, R3,LSL#2\n"
616                 "MOV     R0, R6\n"
617                 "SUB     R1, R1, #8\n"
618                 "BL      sub_FFD01514\n"
619                 "B       loc_FFD05948\n"
620 "loc_FFD05914:\n"
621                 "MOV     R4, #1\n"
622                 "MOV     R0, R4\n"
623                 "MOV     R1, R4\n"
624                 "MOV     R2, R4\n"
625                 "MOV     R3, R4\n"
626                 "STR     R4, [SP]\n"
627                 "BL      sub_FFD01468\n"
628                 "MOV     R0, R4\n"
629                 "MOV     R1, R0\n"
630                 "MOV     R2, R0\n"
631                 "MOV     R3, R0\n"
632                 "STR     R4, [SP]\n"
633                 "BL      sub_FFD015EC\n"
634 "loc_FFD05948:\n"
635                 "LDR     R0, [SP,#4]\n"
636                 "BL      sub_FFD00F00\n"
637 "loc_FFD05950:\n"
638                 "LDR     R3, =0x4D748\n"
639                 "MOV     R2, #0\n"
640                 "LDR     R0, [R3]\n"
641                 "MOV     R1, R7\n"
642                 "BL      sub_FFC10920\n"
643                 "LDR     R12, [SP,#4]\n"
644                 "LDR     R2, [R12]\n"
645                 "CMP     R2, #0x23\n"
646                 "BNE     loc_FFD054A4\n"
647                 "MOV     R0, R12\n"
648                 "BL      sub_FFD00F00\n"
649                 "LDR     R3, =0x4D744\n"
650                 "MOV     R1, #1\n"
651                 "LDR     R0, [R3]\n"
652                 "BL      sub_FFC10208\n"
653                 "BL      _ExitTask\n"
654                 "ADD     SP, SP, #0x20\n"
655                 "LDMFD   SP!, {R4-R8,PC}\n"
656 );
657}
658
659
660void __attribute__((naked,noinline)) sub_FFD02424_my(){
661 asm volatile(
662                 "STMFD   SP!, {R4-R6,LR}\n"
663                 "LDR     R3, =0x4D744\n"
664                 "MOV     R4, R0\n"
665                 "MOV     R1, #0x3E\n"
666                 "LDR     R0, [R3]\n"
667                 "BL      sub_FFC103A4\n"
668                 "MOV     R1, #0\n"
669                 "LDRSH   R0, [R4,#4]\n"
670                 "BL      sub_FFD01034\n"
671                 "MOV     R6, R0\n"
672                 "LDRSH   R0, [R4,#6]\n"
673                 "BL      sub_FFD011A8\n"
674                 "LDRSH   R0, [R4,#8]\n"
675                 "BL      sub_FFD01244\n"
676                 "LDRSH   R0, [R4,#0xA]\n"
677                 "BL      sub_FFD012E0\n"
678                 "LDRSH   R0, [R4,#0xC]\n"
679                 "BL      sub_FFD0137C\n"
680                 "LDR     R3, [R4]\n"
681                 "CMP     R3, #9\n"
682                 "MOV     R5, R0\n"
683                 "MOVEQ   R5, #0\n"
684                 "MOVEQ   R6, R5\n"
685                 "CMP     R6, #1\n"
686                 "BNE     loc_FFD024A8\n"
687                 "MOV     R2, #2\n"
688                 "LDRSH   R0, [R4,#4]\n"
689                 "LDR     R1, =0xFFD00F54\n"
690                 "BL      sub_FFE993F8\n"
691                 "LDR     R2, =0x4D784\n"
692                 "MOV     R3, #0\n"
693                 "STR     R3, [R2]\n"
694                 "B       loc_FFD024AC\n"
695 "loc_FFD024A8:\n"
696                 "BL      sub_FFD01418\n"
697 "loc_FFD024AC:\n"
698                 "STRH    R0, [R4,#4]\n"
699                 "CMP     R5, #1\n"
700                 "BNE     loc_FFD024CC\n"
701                 "LDRSH   R0, [R4,#0xC]\n"
702                 "LDR     R1, =0xFFD01018\n"
703                 "MOV     R2, #0x20\n"
704                 "BL      sub_FFD01750\n"
705                 "B       loc_FFD024D0\n"
706 "loc_FFD024CC:\n"
707                 "BL      sub_FFD01458\n"
708 "loc_FFD024D0:\n"
709                 "STRH    R0, [R4,#0xC]\n"
710                 "LDRSH   R0, [R4,#6]\n"
711                 "BL      sub_FFCA4008_my\n"  // ------------->
712                 "LDRSH   R0, [R4,#8]\n"
713                 "MOV     R1, #1\n"
714                 "BL      sub_FFCA626C\n"
715                 "ADD     R0, R4, #8\n"
716                 "MOV     R1, #0\n"
717                 "BL      sub_FFCA632C\n"
718                 "LDRSH   R0, [R4,#0xE]\n"
719                 "BL      sub_FFCEEF80\n"
720                 "CMP     R6, #1\n"
721                 "BNE     loc_FFD02534\n"
722                 "LDR     R3, =0x4D744\n"
723                 "MOV     R2, #0xBB0\n"
724                 "LDR     R0, [R3]\n"
725                 "MOV     R1, #2\n"
726                 "ADD     R2, R2, #8\n"
727                 "BL      sub_FFC101F8\n"
728                 "TST     R0, #1\n"
729                 "BEQ     loc_FFD02534\n"
730                 "MOV     R1, #0x440\n"
731                 "LDR     R0, =0xFFD00EAC\n"
732                 "ADD     R1, R1, #0xB\n"
733                 "BL      sub_FFC03CF8\n"
734 "loc_FFD02534:\n"
735                 "CMP     R5, #1\n"
736                 "LDMNEFD SP!, {R4-R6,PC}\n"
737                 "LDR     R3, =0x4D744\n"
738                 "MOV     R2, #0xBB0\n"
739                 "LDR     R0, [R3]\n"
740                 "MOV     R1, #0x20\n"
741                 "ADD     R2, R2, #8\n"
742                 "BL      sub_FFC101F8\n"
743                 "TST     R0, #1\n"
744                 "LDMEQFD SP!, {R4-R6,PC}\n"
745                 "LDR     R0, =0xFFD00EAC\n"
746                 "MOV     R1, #0x450\n"
747                 "LDMFD   SP!, {R4-R6,LR}\n"
748                 "B       sub_FFC03CF8\n"
749 );
750}
751
752void __attribute__((naked,noinline)) sub_FFCA4008_my(){
753 asm volatile(
754                 "STMFD   SP!, {R4,LR}\n"
755                 "LDR     R3, =0x52E0\n"
756                 "LDR     R2, [R3]\n"
757                 "MOV     R1, #0x150\n"
758                 "MOV     R3, R0,LSL#16\n"
759                 "CMP     R2, #1\n"
760                 "ADD     R1, R1, #1\n"
761                 "LDR     R0, =0xFFCA3844\n"
762                 "MOV     R4, R3,ASR#16\n"
763                 "BEQ     loc_FFCA4034\n"
764                 "BL      sub_FFC03CF8\n"
765 "loc_FFCA4034:\n"
766                 "MOV     R1, #0x154\n"
767                 "CMN     R4, #0xC00\n"
768                 "LDR     R3, =0x3F066\n"
769                 "LDR     R0, =0xFFCA3844\n"
770                 "ADD     R1, R1, #3\n"
771                 "LDREQSH R4, [R3]\n"
772                 "LDRNE   R3, =0x3F066\n"
773                 "CMN     R4, #0xC00\n"
774                 "STRH    R4, [R3]\n"
775                 "BNE     loc_FFCA4060\n"
776                 "BL      sub_FFC03CF8\n"
777 "loc_FFCA4060:\n"
778                 "MOV     R0, R4\n"
779                 "BL      sub_FFCA5104_my\n"  //---------->
780                 "MOV     R4, R0\n"
781                 "BL      sub_FFCD020C\n"
782                 "MOV     R0, R4\n"
783                 "BL      sub_FFCA33D0\n"
784                 "TST     R0, #1\n"
785                 "MOV     R1, #0x15C\n"
786                 "LDR     R0, =0xFFCA3844\n"
787                 "LDMEQFD SP!, {R4,PC}\n"
788                 "LDMFD   SP!, {R4,LR}\n"
789                 "B       sub_FFC03CF8\n"
790 );
791}
792
793int  sub_FFCA5104_my(int TvInApex){
794 if (TvInApex<-576) return 1000000.0*__pow(2.0, -TvInApex/96.0);
795 else return _ExpTimeInMicroseconds(TvInApex);
796}
Note: See TracBrowser for help on using the repository browser.