source: trunk/platform/ixus100_sd780/sub/100c/movie_rec.c @ 876

Revision 876, 14.4 KB checked in by fe50, 3 years ago (diff)
Line 
1#include "conf.h"
2
3// from sx10
4void change_video_tables(int a, int b){
5}
6
7// from sx10, not sure if the values are right, seems to work
8void  set_quality(int *x){ // -17 highest; +12 lowest
9 if (conf.video_mode) *x=12-((conf.video_quality-1)*(12+17)/(99-1));
10}
11
12void __attribute__((naked,noinline)) movie_record_task(){
13 asm volatile(
14                 "                STMFD   SP!, {R2-R8,LR}\n"
15                 "                LDR     R8, =0x442\n"
16                 "                LDR     R7, =0x2710\n"
17                 "                LDR     R4, =0x5AD8\n"
18                 "                MOV     R6, #0\n"
19                 "                MOV     R5, #1\n"
20                 "loc_FF91A6C4:\n"  // main loop
21                 "                LDR     R0, [R4,#0x18]\n"
22                 "                MOV     R2, #0\n"
23                 "                ADD     R1, SP, #4\n"
24                 "                BL      sub_FF826978\n"
25                 "                LDR     R0, [R4,#0x20]\n"
26                 "                CMP     R0, #0\n"
27                 "                BNE     loc_FF91A794\n"
28                 "                LDR     R0, [SP,#4]\n"
29                 "                LDR     R1, [R0]\n"
30                 "                SUB     R1, R1, #2\n"
31                 "                CMP     R1, #9\n"
32                 "                ADDLS   PC, PC, R1,LSL#2\n"
33                 "                B       loc_FF91A794\n"
34                 "loc_FF91A6F8:\n"
35                 "                B       loc_FF91A748\n"
36                 "loc_FF91A6FC:\n"
37                 "                B       loc_FF91A768\n"
38                 "loc_FF91A700:\n"
39                 "                B       loc_FF91A778\n"
40                 "loc_FF91A704:\n"
41                 "                B       loc_FF91A780\n"
42                 "loc_FF91A708:\n"
43                 "                B       loc_FF91A750\n"
44                 "loc_FF91A70C:\n"
45                 "                B       loc_FF91A788\n"
46                 "loc_FF91A710:\n"
47                 "                B       loc_FF91A758\n"
48                 "loc_FF91A714:\n"
49                 "                B       loc_FF91A794\n"
50                 "loc_FF91A718:\n"
51                 "                B       loc_FF91A790\n"
52                 "loc_FF91A71C:\n"
53                 "                B       loc_FF91A720\n"
54                 "loc_FF91A720:\n"
55                 //jumptable FF91A6F0 entry 9
56                 "                LDR     R0, =0xFF91A3C0\n"
57                 "                STR     R6, [R4,#0x34]\n"
58                 "                STR     R0, [R4,#0x9C]\n"
59                 "                LDR     R0, =0xFF9199E0\n"
60                 "                LDR     R2, =0xFF9198FC\n"
61                 "                LDR     R1, =0x2BDB0\n"
62                 "                STR     R6, [R4,#0x24]\n"
63                 "                BL      sub_FF8B11AC\n"
64                 "                STR     R5, [R4,#0x38]\n"
65                 "                B       loc_FF91A794\n"
66                 "loc_FF91A748:\n"
67                 //jumptable FF91A6F0 entry 0\n"
68                 "                BL      unlock_optical_zoom\n" //  +
69                 "                BL      sub_FF91A4C8\n"
70                 "                B       loc_FF91A794\n"
71                 "loc_FF91A750:\n"
72                 //jumptable FF91A6F0 entry 4\n"
73                 "                BL      sub_FF91A064_my\n"  //_my //  ....was sub_FF861AA8_my\n"  //for quality overrides
74                 "                B       loc_FF91A794\n"
75                 "loc_FF91A758:\n"
76                 //jumptable FF91A6F0 entry 6\n"
77                 "                LDR     R1, [R0,#0x18]\n"
78                 "                LDR     R0, [R0,#4]\n"
79                 "                BL      sub_FFA37D6C\n"
80                 "                B       loc_FF91A794\n"
81                 "loc_FF91A768:\n"
82                 //jumptable FF91A6F0 entry 1\n"
83                 "                LDR     R0, [R4,#0x38]\n"
84                 "                CMP     R0, #5\n"
85                 "                STRNE   R5, [R4,#0x28]\n"
86                 "                B       loc_FF91A794\n"
87                 "loc_FF91A778:\n"
88                 //jumptable FF91A6F0 entry 2\n"
89                 "                BL      sub_FF919D4C\n"
90                 "                B       loc_FF91A794\n"
91                 "loc_FF91A780:\n"
92                 //jumptable FF91A6F0 entry 3\n"
93                 "                BL      sub_FF919A2C\n"
94                 "                B       loc_FF91A794\n"
95                 "loc_FF91A788:\n"
96                 //jumptable FF91A6F0 entry 5\n"
97                 "                BL      sub_FF919888\n"
98                 "                B       loc_FF91A794\n"
99                 "loc_FF91A790:\n"
100                 //jumptable FF91A6F0 entry 8\n"
101                 "                BL      sub_FF91A8FC\n"
102                 "loc_FF91A794:\n"
103                 //jumptable FF91A6F0 default entry
104                 //jumptable FF91A6F0 entry 7
105                 "                LDR     R1, [SP,#4]\n"
106                 "                LDR     R3, =0xFF9196EC\n"
107                 "                STR     R6, [R1]\n"
108                 "                STR     R8, [SP]\n"
109                 "                LDR     R0, [R4,#0x1C]\n"
110                 "                MOV     R2, R7\n"
111                 "                BL      sub_FF8272CC\n"
112                 "                B       loc_FF91A6C4\n"
113 );
114}
115
116void __attribute__((naked,noinline)) sub_FF91A064_my(){
117 asm volatile(
118                 "                STMFD   SP!, {R4-R9,LR}\n"
119                 "                SUB     SP, SP, #0x44\n"
120                 "                MOV     R7, #0\n"
121                 "                LDR     R6, =0x5AD8\n"
122                 "                MOV     R4, R0\n"
123                 "                STR     R7, [SP,#0x34]\n"
124                 "                STR     R7, [SP,#0x2C]\n"
125                 "                LDR     R0, [R6,#0x38]\n"
126                 "                MOV     R8, #4\n"
127                 "                CMP     R0, #3\n"
128                 "                STREQ   R8, [R6,#0x38]\n"
129                 "                LDR     R0, [R6,#0x9C]\n"
130
131//       "                BLX     R0\n"                 // !! Workaround !!
132                 "                MOV     LR, PC\n"                     // gcc won't compile "BLX       R12" nor "BL    R12".
133                 "                MOV     PC, R0\n"                     // workaround: make your own "BL" and hope we don't need the change to thumb-mode
134
135
136                 "                LDR     R0, [R6,#0x38]\n"
137                 "                CMP     R0, #4\n"
138                 "                BNE     loc_FF91A1B4\n"
139                 "                ADD     R3, SP, #0x2C\n"
140                 "                ADD     R2, SP, #0x30\n"
141                 "                ADD     R1, SP, #0x34\n"
142                 "                ADD     R0, SP, #0x38\n"
143                 "                BL      sub_FFA37E08\n"
144                 "                CMP     R0, #0\n"
145                 "                MOV     R5, #1\n"
146                 "                BNE     loc_FF91A0E0\n"
147                 "                LDR     R1, [R6,#0x28]\n"
148                 "                CMP     R1, #1\n"
149                 "                BNE     loc_FF91A1C8\n"
150                 "                LDR     R1, [R6,#0x4C]\n"
151                 "                LDR     R2, [R6,#0x3C]\n"
152                 "                CMP     R1, R2\n"
153                 "                BCC     loc_FF91A1C8\n"  //good to here
154                 "loc_FF91A0E0:\n"
155                 "                CMP     R0, #0x80000001\n"
156                 "                STREQ   R8, [R6,#0x50]\n"
157                 "                BEQ     loc_FF91A118\n"
158                 "                CMP     R0, #0x80000003\n"
159                 "                STREQ   R5, [R6,#0x50]\n"
160                 "                BEQ     loc_FF91A118\n"
161                 "                CMP     R0, #0x80000005\n"
162                 "                MOVEQ   R0, #2\n"
163                 "                BEQ     loc_FF91A114\n"
164                 "                CMP     R0, #0x80000007\n"
165                 "                STRNE   R7, [R6,#0x50]\n"
166                 "                BNE     loc_FF91A118\n"
167                 "                MOV     R0, #3\n"
168                 "loc_FF91A114:\n"
169                 "                STR     R0, [R6,#0x50]\n"
170                 "loc_FF91A118:\n"
171                 "                LDR     R0, =0x2BDE4\n"
172                 "                LDR     R0, [R0,#8]\n"
173                 "                CMP     R0, #0\n"
174                 "                BEQ     loc_FF91A130\n"
175                 "                BL      sub_FF844AAC\n"
176                 "                B       loc_FF91A134\n"
177                 "loc_FF91A130:\n"
178                 "                BL      sub_FF919888\n"  //good to here
179                 "loc_FF91A134:\n"
180                 "                LDR     R0, [R4,#0x1C]\n"
181                 "                LDR     R1, [R4,#0x20]\n"
182                 "                ADD     R3, SP, #0x3C\n"
183
184//               "                MOVL    R2, =0xFFFFFFFE\n"
185         "                MVN     R2, #1\n"
186
187                 "                ADD     R7, SP, #0x18\n"
188                 "                STMIA   R7, {R0-R3}\n"
189                 "                LDR     R2, [R6,#0x64]\n"
190                 "                LDR     R3, [R6,#0x68]\n"
191                 "                MOV     R0, #0\n"
192                 "                ADD     R1, SP, #0x40\n"
193                 "                ADD     R7, SP, #0x8\n"
194                 "                STMIA   R7, {R0-R3}\n"
195                 "                MOV     R3, #0\n"
196                 "                MOV     R2, #0x40\n"
197
198//               "                STRD    R2, [SP]\n"
199         "                STR      R2, [SP]\n"
200         "                STR      R3, [SP,#0x4]\n"
201
202                 "                LDMIB   R4, {R0,R1}\n"
203                 "                LDR     R3, =0x2BDFC\n"
204                 "                MOV     R2, R9\n"
205                 "                BL      sub_FF9FBAFC\n"
206                 "                LDR     R0, [R6,#0x10]\n"
207                 "                MOV     R1, #0x3E8\n"
208                 "                BL      sub_FF826D94\n"
209                 "                CMP     R0, #9\n"
210                 "                BEQ     loc_FF91A24C\n"
211                 "                LDR     R0, [SP,#0x3C]\n"
212                 "                CMP     R0, #0\n"
213                 "                BNE     loc_FF91A268\n"
214                 "                MOV     R0, #1\n"
215                 "                BL      sub_FF9FBBA4\n"
216                 "                BL      sub_FF9FBBE0\n"
217                 "                MOV     R0, #5\n"
218                 "                STR     R0, [R6,#0x38]\n" //good to here
219                 "loc_FF91A1B4:\n"
220                 "                ADD     SP, SP, #0x44\n"
221                 "                LDMFD   SP!, {R4-R9,PC}\n"
222                 "loc_FF91A1BC:\n"
223                 "                BL      sub_FF8745A0\n"
224                 "                MOV     R0, #1\n"
225                 "                B       loc_FF91A308\n"
226                 "loc_FF91A1C8:\n"
227                 "                LDR     R12, [SP,#0x34]\n"
228                 "                CMP     R12, #0\n"
229                 "                BEQ     loc_FF91A368\n"
230                 "                STR     R5, [R6,#0x2C]\n"
231                 "                LDR     R0, [R6,#0x4C]\n"
232                 "                LDR     R8, [R4,#0xC]\n"
233                 "                CMP     R0, #0\n"
234                 "                LDRNE   LR, [SP,#0x38]\n"
235                 "                BNE     loc_FF91A294\n"
236                 "                LDR     R0, [R4,#0x1C]\n"
237                 "                LDR     R1, [R4,#0x20]\n"
238                 "                ADD     R3, SP, #0x3C\n"
239
240//               "                MOVL    R2, =0xFFFFFFFF\n"
241         "                MVN     R2, #0\n"
242
243                 "                ADD     R9, SP, #0x18\n"
244                 "                STMIA   R9, {R0-R3}\n"
245                 "                LDR     R0, [SP,#0x2C]\n"
246                 "                LDR     R2, [R6,#0x64]\n"
247                 "                LDR     R3, [R6,#0x68]\n"
248                 "                ADD     R1, SP, #0x40\n"
249                 "                ADD     R9, SP, #0x8\n"
250                 "                STMIA   R9, {R0-R3}\n"
251                 "                LDR     R3, [SP,#0x30]\n"
252                 "                STR     R12, [SP]\n"
253                 "                STR     R3, [SP,#0x4]\n"
254                 "                LDMIB   R4, {R0,R1}\n"
255                 "                LDR     R3, [SP,#0x38]\n"
256                 "                MOV     R2, R8\n"
257                 "                BL      sub_FF9FBAFC\n"
258                 "                LDR     R0, [R6,#0x10]\n"
259                 "                MOV     R1, #0x3E8\n"
260                 "                BL      sub_FF826D94\n"
261                 "                CMP     R0, #9\n"
262                 "                BNE     loc_FF91A25C\n"  //good to here
263                 "loc_FF91A24C:\n"
264                 "                BL      sub_FFA382D4\n"
265                 "                MOV     R0, #0x90000\n"
266                 "                STR     R5, [R6,#0x38]\n"
267                 "                B       loc_FF91A1BC\n"
268                 "loc_FF91A25C:\n"
269                 "                LDR     R0, [SP,#0x3C]\n"
270                 "                CMP     R0, #0\n"
271                 "                BEQ     loc_FF91A278\n"
272                 "loc_FF91A268:\n"
273                 "                BL      sub_FFA382D4\n"
274                 "                MOV     R0, #0xA0000\n"
275                 "                STR     R5, [R6,#0x38]\n"
276                 "                B       loc_FF91A1BC\n"
277                 "loc_FF91A278:\n"
278                 "                MOV     R0, #1\n"
279                 "                BL      sub_FF9FBBA4\n"
280                 "                LDR     R0, [SP,#0x40]\n"
281                 "                LDR     R1, [SP,#0x38]\n"
282                 "                ADD     LR, R1, R0\n"
283                 "                LDR     R1, [SP,#0x34]\n"
284                 "                SUB     R12, R1, R0\n"
285                 "loc_FF91A294:\n"
286                 "                LDR     R0, [R4,#0x1C]\n"
287                 "                LDR     R2, [R6,#0x48]\n"
288                 "                LDR     R1, [R4,#0x20]\n"
289                 "                ADD     R3, SP, #0x3C\n"
290                 "                ADD     R9, SP, #0x18\n"
291                 "                STMIA   R9, {R0-R3}\n"
292                 "                LDR     R0, [SP,#0x2C]\n"
293                 "                LDR     R2, [R6,#0x64]\n"
294                 "                LDR     R3, [R6,#0x68]\n"
295                 "                ADD     R1, SP, #0x40\n"
296                 "                ADD     R9, SP, #0x8\n"
297                 "                STMIA   R9, {R0-R3}\n"
298                 "                LDR     R3, [SP,#0x30]\n"
299                 "                STR     R12, [SP]\n"
300                 "                STR     R3, [SP,#0x4]\n"
301                 "                LDMIB   R4, {R0,R1}\n"
302                 "                MOV     R3, LR\n"
303                 "                MOV     R2, R8\n"
304                 "                BL      sub_FF9FBAFC\n"
305                 "                LDR     R0, [R6,#0x10]\n"
306                 "                MOV     R1, #0x3E8\n"
307                 "                BL      sub_FF826D94\n"
308                 "                CMP     R0, #9\n"
309                 "                BNE     loc_FF91A310\n"
310                 "                BL      sub_FFA382D4\n"
311                 "                MOV     R0, #0x90000\n"
312                 "                STR     R5, [R6,#0x38]\n"
313                 "                BL      sub_FF8745A0\n"
314                 "                MOV     R0, #0\n"
315                 "loc_FF91A308:\n"
316                 "                BL      sub_FF9FBBA4\n"
317                 "                B       loc_FF91A1B4\n"
318                 "loc_FF91A310:\n"
319                 "                LDR     R0, [SP,#0x3C]\n"
320                 "                CMP     R0, #0\n"
321                 "                BEQ     loc_FF91A330\n"
322                 "                BL      sub_FFA382D4\n"
323                 "                MOV     R0, #0xA0000\n"
324                 "                STR     R5, [R6,#0x38]\n"
325                 "                BL      sub_FF8745A0\n"
326                 "                B       loc_FF91A1B4\n" //good to here
327                 "loc_FF91A330:\n"
328                 "                MOV     R0, #0\n"
329                 "                BL      sub_FF9FBBA4\n"
330                 "                LDR     R0, [SP,#0x38]\n"
331                 "                LDR     R1, [SP,#0x40]\n"
332                 "                BL      sub_FFA38030\n"
333                 "                LDR     R0, [R6,#0x48]\n"
334                 "                LDR     R3, =0x5B40\n"
335                 "                ADD     R1, R0, #1\n"
336                 "                STR     R1, [R6,#0x48]\n"
337                 "                STR     R3, [SP]\n"
338                 "                LDR     R0, [SP,#0x40]\n"
339                 "                SUB     R3, R3, #4\n"
340                 "                MOV     R2, #0xF\n"
341                 "                BL      sub_FFA361D4\n"
342                 "                LDR     R0, =0x5B40-4\n" // +  //VERIFY_SD780 Is this good
343                 "                BL      set_quality\n" // +  //VERIFY_SD780 Is this good
344                 "loc_FF91A368:\n"
345                 "                LDR     R0, [R6,#0x4C]\n"
346                 "                ADD     R0, R0, #1\n"
347                 "                STR     R0, [R6,#0x4C]\n"
348                 "                LDR     R1, [R6,#0x74]\n"
349                 "                MUL     R0, R1, R0\n"
350                 "                LDR     R1, [R6,#0x70]\n"
351                 "                BL      sub_FFACA1C0\n"
352                 "                MOV     R4, R0\n"
353                 "                BL      sub_FFA3830C\n"
354                 "                LDR     R1, [R6,#0x6C]\n"
355                 "                CMP     R1, R4\n"
356                 "                BNE     loc_FF91A3A4\n"
357                 "                LDR     R0, [R6,#0x30]\n"
358                 "                CMP     R0, #1\n"
359                 "                BNE     loc_FF91A3B8\n"
360                 "loc_FF91A3A4:\n"
361                 "                LDR     R1, [R6,#0x80]\n"
362                 "                MOV     R0, R4\n"
363
364//               "                BLX     R1\n"
365                 "                MOV     LR, PC\n"
366                 "                MOV     PC, R1\n"  //check
367
368                 "                STR     R4, [R6,#0x6C]\n"
369                 "                STR     R7, [R6,#0x30]\n"
370                 "loc_FF91A3B8:\n"
371                 "                STR     R7, [R6,#0x2C]\n"
372                 "                B       loc_FF91A1B4\n"
373 );
374}
375
Note: See TracBrowser for help on using the repository browser.