diff options
Diffstat (limited to 'apps/plugins')
74 files changed, 83 insertions, 14510 deletions
diff --git a/apps/plugins/SOURCES b/apps/plugins/SOURCES index 9e153a3c96..197f58ef5c 100644 --- a/apps/plugins/SOURCES +++ b/apps/plugins/SOURCES | |||
@@ -86,7 +86,7 @@ wolf3d.c | |||
86 | 86 | ||
87 | #if PLUGIN_BUFFER_SIZE <= 0x20000 && defined(HAVE_LCD_BITMAP) | 87 | #if PLUGIN_BUFFER_SIZE <= 0x20000 && defined(HAVE_LCD_BITMAP) |
88 | 88 | ||
89 | #if CONFIG_KEYPAD != ONDIO_PAD && CONFIG_KEYPAD != SANSA_M200_PAD \ | 89 | #if CONFIG_KEYPAD != SANSA_M200_PAD \ |
90 | && CONFIG_KEYPAD != HM60X_PAD | 90 | && CONFIG_KEYPAD != HM60X_PAD |
91 | /* not enough buttons for rockboy */ | 91 | /* not enough buttons for rockboy */ |
92 | rockboy.c | 92 | rockboy.c |
@@ -106,44 +106,16 @@ pictureflow.c | |||
106 | splitedit.c | 106 | splitedit.c |
107 | #endif | 107 | #endif |
108 | 108 | ||
109 | #if CONFIG_LCD == LCD_SSD1815 | ||
110 | video.c | ||
111 | #endif | ||
112 | |||
113 | #endif /* HWCODEC */ | 109 | #endif /* HWCODEC */ |
114 | 110 | ||
115 | |||
116 | #if defined(ARCHOS_PLAYER) || defined(ARCHOS_RECORDER) || \ | ||
117 | defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2) | ||
118 | alpine_cdc.c | ||
119 | #endif | ||
120 | |||
121 | #if defined(ARCHOS_PLAYER) || defined(ARCHOS_RECORDER) || \ | ||
122 | defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2) || \ | ||
123 | defined(ARCHOS_ONDIOFM) || defined(ARCHOS_ONDIOSP) | ||
124 | firmware_flash.c | ||
125 | #endif | ||
126 | |||
127 | #if defined(IRIVER_H100_SERIES) | 111 | #if defined(IRIVER_H100_SERIES) |
128 | iriver_flash.c | 112 | iriver_flash.c |
129 | #endif | 113 | #endif |
130 | 114 | ||
131 | #if (CONFIG_CPU == SH7034) | ||
132 | rockbox_flash.c | ||
133 | #endif /* CONFIG_CPU */ | ||
134 | |||
135 | #if defined(IPOD_NANO2G) | 115 | #if defined(IPOD_NANO2G) |
136 | crypt_firmware.c | 116 | crypt_firmware.c |
137 | #endif | 117 | #endif |
138 | 118 | ||
139 | #if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)) | ||
140 | wavplay.c | ||
141 | #endif | ||
142 | |||
143 | #if (CONFIG_CODEC == MAS3587F) | ||
144 | wavrecord.c | ||
145 | #endif | ||
146 | |||
147 | #endif /* PLATFORM_NATIVE */ | 119 | #endif /* PLATFORM_NATIVE */ |
148 | 120 | ||
149 | metronome.c | 121 | metronome.c |
@@ -217,11 +189,6 @@ rocklife.c | |||
217 | 189 | ||
218 | #endif /* HAVE_LCD_BITMAP */ | 190 | #endif /* HAVE_LCD_BITMAP */ |
219 | 191 | ||
220 | #ifdef HAVE_LCD_CHARCELLS /* Archos Player model only */ | ||
221 | euroconverter.c | ||
222 | nim.c | ||
223 | #endif /* HAVE_LCD_CHARCELLS */ | ||
224 | |||
225 | #if LCD_DEPTH > 1 /* non-mono bitmap targets */ | 192 | #if LCD_DEPTH > 1 /* non-mono bitmap targets */ |
226 | 193 | ||
227 | matrix.c | 194 | matrix.c |
diff --git a/apps/plugins/SUBDIRS b/apps/plugins/SUBDIRS index ecface0e40..5fd2d433c7 100644 --- a/apps/plugins/SUBDIRS +++ b/apps/plugins/SUBDIRS | |||
@@ -24,8 +24,7 @@ sdl | |||
24 | puzzles | 24 | puzzles |
25 | #endif | 25 | #endif |
26 | 26 | ||
27 | #if (CONFIG_KEYPAD != ONDIO_PAD) /* not enough buttons */ \ | 27 | #if (CONFIG_KEYPAD != SANSA_M200_PAD) /* not enough buttons */ \ |
28 | && (CONFIG_KEYPAD != SANSA_M200_PAD) /* not enough buttons */ \ | ||
29 | && (CONFIG_KEYPAD != HM60X_PAD) /* not enough buttons */ \ | 28 | && (CONFIG_KEYPAD != HM60X_PAD) /* not enough buttons */ \ |
30 | && (LCD_PIXELFORMAT != HORIZONTAL_PACKING) /* TODO */ \ | 29 | && (LCD_PIXELFORMAT != HORIZONTAL_PACKING) /* TODO */ \ |
31 | && (LCD_PIXELFORMAT != VERTICAL_INTERLEAVED) /* TODO */ \ | 30 | && (LCD_PIXELFORMAT != VERTICAL_INTERLEAVED) /* TODO */ \ |
@@ -48,11 +47,7 @@ imageviewer | |||
48 | sudoku | 47 | sudoku |
49 | reversi | 48 | reversi |
50 | goban | 49 | goban |
51 | |||
52 | /* setjmp/longjmp are not implemented on sh */ | ||
53 | #if (CONFIG_CPU != SH7034) | ||
54 | frotz | 50 | frotz |
55 | #endif | ||
56 | 51 | ||
57 | #ifndef OLYMPUS_MROBE_500 | 52 | #ifndef OLYMPUS_MROBE_500 |
58 | #if PLUGIN_BUFFER_SIZE > 0x40000 || PLUGIN_BUFFER_SIZE <= 0x20000 /* overlay */ | 53 | #if PLUGIN_BUFFER_SIZE > 0x40000 || PLUGIN_BUFFER_SIZE <= 0x20000 /* overlay */ |
diff --git a/apps/plugins/alpine_cdc.c b/apps/plugins/alpine_cdc.c deleted file mode 100644 index 93d9418f65..0000000000 --- a/apps/plugins/alpine_cdc.c +++ /dev/null | |||
@@ -1,1195 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * | ||
11 | * Copyright (C) 2003-2005 Jörg Hohensohn | ||
12 | * | ||
13 | * Alpine CD changer Project | ||
14 | * This is a feasibility study for Archos emulating an Alpine M-Bus CD changer. | ||
15 | * | ||
16 | * Currently it will do seeks and change tracks, but nothing like disks. | ||
17 | * The debug version shows a dump of the M-Bus communication on screen. | ||
18 | * | ||
19 | * Usage: Start plugin, it will stay in the background and do the emulation. | ||
20 | * You need to make an adapter with an 8-pin DIN plug for the radio at one end | ||
21 | * and a 4-ring 3.5 mm plug for the Archos headphone jack at the other. | ||
22 | * The Archos remote pin connects to the M-Bus, audio as usual. | ||
23 | * | ||
24 | * This program is free software; you can redistribute it and/or | ||
25 | * modify it under the terms of the GNU General Public License | ||
26 | * as published by the Free Software Foundation; either version 2 | ||
27 | * of the License, or (at your option) any later version. | ||
28 | * | ||
29 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
30 | * KIND, either express or implied. | ||
31 | * | ||
32 | ****************************************************************************/ | ||
33 | |||
34 | #include "plugin.h" | ||
35 | |||
36 | #ifdef HAVE_LCD_CHARCELLS /* player model */ | ||
37 | #define LINES 2 | ||
38 | #define COLUMNS 11 | ||
39 | #else /* recorder models */ | ||
40 | #define LINES 8 | ||
41 | #define COLUMNS 32 /* can't really tell for proportional font */ | ||
42 | #endif | ||
43 | |||
44 | /****************** imports ******************/ | ||
45 | |||
46 | #include "sh7034.h" | ||
47 | #include "system.h" | ||
48 | |||
49 | /****************** constants ******************/ | ||
50 | |||
51 | /* measured bit time on the M-Bus is 3.075 ms = 325.2 Hz */ | ||
52 | #define MBUS_BAUDRATE 3252 /* make it 10 * bittime */ | ||
53 | #define MBUS_STEP_FREQ (MBUS_BAUDRATE/2) /* 5 steps per bit */ | ||
54 | #define MBUS_BIT_FREQ (MBUS_BAUDRATE/10) /* the true bit frequency again */ | ||
55 | |||
56 | #define MBUS_MAX_SIZE 16 /* maximum length of an M-Bus packet, incl. checksum */ | ||
57 | #define MBUS_RCV_QUEUESIZE 4 /* how many packets can be queued by receiver */ | ||
58 | |||
59 | #define ERI1 (*((volatile unsigned long*)0x090001A0)) /* RX error */ | ||
60 | #define RXI1 (*((volatile unsigned long*)0x090001A4)) /* RX */ | ||
61 | |||
62 | #define PB10 0x0400 | ||
63 | |||
64 | /* receive status */ | ||
65 | #define RX_BUSY 0 /* reception in progress */ | ||
66 | #define RX_RECEIVED 1 /* valid data available */ | ||
67 | #define RX_FRAMING 2 /* frame error */ | ||
68 | #define RX_OVERRUN 3 /* receiver overrun */ | ||
69 | #define RX_PARITY 4 /* parity error */ | ||
70 | #define RX_SYMBOL 5 /* invalid bit timing */ | ||
71 | #define RX_OVERFLOW 6 /* buffer full */ | ||
72 | #define RX_OVERLAP 7 /* receive interrupt while transmitting */ | ||
73 | |||
74 | /* timer operation mode */ | ||
75 | #define TM_OFF 0 /* not in use */ | ||
76 | #define TM_TRANSMIT 1 /* periodic timer to transmit */ | ||
77 | #define TM_RX_TIMEOUT 2 /* single shot for receive timeout */ | ||
78 | |||
79 | /* emulation play state */ | ||
80 | #define EMU_IDLE 0 | ||
81 | #define EMU_PREPARING 1 | ||
82 | #define EMU_STOPPED 2 | ||
83 | #define EMU_PAUSED 3 | ||
84 | #define EMU_PLAYING 4 | ||
85 | #define EMU_SPINUP 5 | ||
86 | #define EMU_FF 6 | ||
87 | #define EMU_FR 7 | ||
88 | |||
89 | |||
90 | /****************** prototypes ******************/ | ||
91 | |||
92 | void timer_init(unsigned hz, unsigned to); /* setup static timer registers and values */ | ||
93 | void timer_set_mode(int mode); /* define for what the timer should be used right now */ | ||
94 | void timer4_isr(void); /* IMIA4 ISR */ | ||
95 | |||
96 | void transmit_isr(void); /* 2nd level ISR for M-Bus transmission */ | ||
97 | |||
98 | void uart_init(unsigned baudrate); /* UART setup */ | ||
99 | void uart_rx_isr(void) __attribute__((interrupt_handler)); /* RXI1 ISR */ | ||
100 | void uart_err_isr(void) __attribute__((interrupt_handler)); /* ERI1 ISR */ | ||
101 | void receive_timeout_isr(void); /* 2nd level ISR for receiver timeout */ | ||
102 | |||
103 | void mbus_init(void); /* prepare the M-Bus layer */ | ||
104 | int mbus_send(unsigned char* p_msg, int digits); /* packet send */ | ||
105 | int mbus_receive(unsigned char* p_msg, unsigned bufsize, int timeout); /* packet receive */ | ||
106 | |||
107 | unsigned char calc_checksum(unsigned char* p_msg, int digits); /* make M-Bus checksum */ | ||
108 | bool bit_test(unsigned char* buf, unsigned bit); /* test one bit of M-Bus packet */ | ||
109 | void bit_set(unsigned char* buf, unsigned bit, bool val); /* set/clear one bit of M-Bus packet */ | ||
110 | |||
111 | void print_scroll(char* string); /* implements a scrolling screen */ | ||
112 | void dump_packet(char* dest, int dst_size, char* src, int n); /* convert packet to ASCII */ | ||
113 | |||
114 | void emu_init(void); /* init changer emulation */ | ||
115 | void emu_process_packet(unsigned char* mbus_msg, int msg_size); /* feed a received radio packet */ | ||
116 | void emu_tick(void); /* for regular actions of the emulator */ | ||
117 | |||
118 | int get_playtime(void); /* return the current track time in seconds */ | ||
119 | int get_tracklength(void); /* return the total length of the current track */ | ||
120 | void set_track(int selected); | ||
121 | int get_track(void); /* return the track number */ | ||
122 | void set_play(void); /* start or resume playback */ | ||
123 | void set_pause(void); /* pause playback */ | ||
124 | void set_stop(void); /* stop playback */ | ||
125 | void set_position(int seconds); /* seek */ | ||
126 | void get_playmsg(void); /* update the play message with Rockbox info */ | ||
127 | void get_diskmsg(void); /* update the disk status message with Rockbox info */ | ||
128 | |||
129 | void sound_neutral(void); /* set to everything flat and 0 dB volume */ | ||
130 | void sound_normal(void); /* return to user settings */ | ||
131 | |||
132 | void thread(void); /* the thread running it all */ | ||
133 | int main(const void* parameter); /* main loop */ | ||
134 | enum plugin_status plugin_start(const void* parameter); /* entry */ | ||
135 | |||
136 | |||
137 | /****************** data types ******************/ | ||
138 | |||
139 | /* one entry in the receive queue */ | ||
140 | typedef struct | ||
141 | { | ||
142 | unsigned char buf[MBUS_MAX_SIZE]; /* message buffer */ | ||
143 | unsigned size; /* length of data in the buffer */ | ||
144 | unsigned error; /* error code from reception */ | ||
145 | } t_rcv_queue_entry; | ||
146 | |||
147 | |||
148 | /****************** globals ******************/ | ||
149 | |||
150 | |||
151 | /* information owned by the timer transmit ISR */ | ||
152 | struct | ||
153 | { | ||
154 | unsigned char send_buf[MBUS_MAX_SIZE]; /* M-Bus message */ | ||
155 | unsigned send_size; /* current length of data in the buffer */ | ||
156 | unsigned index; /* index for which byte to send */ | ||
157 | unsigned byte; /* which byte to send */ | ||
158 | unsigned bitmask; /* which bit to send */ | ||
159 | unsigned step; /* where in the pulse are we */ | ||
160 | bool bit; /* currently sent bit */ | ||
161 | bool collision; /* set if a collision happened */ | ||
162 | bool busy; /* flag if in transmission */ | ||
163 | } gSendIRQ; | ||
164 | |||
165 | |||
166 | /* information owned by the UART receive ISR */ | ||
167 | struct | ||
168 | { | ||
169 | t_rcv_queue_entry queue[MBUS_RCV_QUEUESIZE]; /* M-Bus message queue */ | ||
170 | unsigned buf_read; /* readout maintained by the user application */ | ||
171 | unsigned buf_write; /* writing maintained by ISR */ | ||
172 | bool overflow; /* indicate queue overflow */ | ||
173 | unsigned byte; /* currently assembled byte */ | ||
174 | unsigned bit; /* which bit to receive */ | ||
175 | } gRcvIRQ; | ||
176 | |||
177 | |||
178 | /* information owned by the timer */ | ||
179 | struct | ||
180 | { | ||
181 | unsigned mode; /* off, transmit, receive timout */ | ||
182 | unsigned transmit; /* value for transmit */ | ||
183 | unsigned timeout; /* value for receive timeout */ | ||
184 | } gTimer; | ||
185 | |||
186 | |||
187 | /* information owned by the changer emulation */ | ||
188 | struct | ||
189 | { | ||
190 | unsigned char playmsg[15]; /* current play state msg */ | ||
191 | unsigned char changemsg[11]; /* changing message */ | ||
192 | unsigned char diskmsg[12]; /* disk status message */ | ||
193 | long poll_interval; /* call the emu each n ticks */ | ||
194 | int time; /* seconds within the song */ | ||
195 | int set_state; /* the desired state to change into */ | ||
196 | } gEmu; | ||
197 | |||
198 | |||
199 | /* communication to the worker thread */ | ||
200 | struct | ||
201 | { | ||
202 | bool foreground; /* set as long as we're owning the UI */ | ||
203 | bool exiting; /* signal to the thread that we want to exit */ | ||
204 | unsigned int thread; /* worker thread id */ | ||
205 | } gTread; | ||
206 | |||
207 | |||
208 | /****************** implementation ******************/ | ||
209 | |||
210 | |||
211 | /* setup static timer registers and values */ | ||
212 | void timer_init(unsigned hz, unsigned to) | ||
213 | { | ||
214 | rb->memset(&gTimer, 0, sizeof(gTimer)); | ||
215 | |||
216 | gTimer.transmit = TIMER_FREQ / hz; /* time for bit transitions */ | ||
217 | gTimer.timeout = TIMER_FREQ / to; /* time for receive timeout */ | ||
218 | } | ||
219 | |||
220 | |||
221 | /* define for what the timer should be used right now */ | ||
222 | void timer_set_mode(int mode) | ||
223 | { | ||
224 | TCNT4 = 0; /* start counting at 0 */ | ||
225 | gTimer.mode = mode; /* store the mode */ | ||
226 | |||
227 | if (mode == TM_RX_TIMEOUT) | ||
228 | { | ||
229 | rb->timer_register(1, NULL, gTimer.timeout, timer4_isr IF_COP(, CPU)); | ||
230 | IPRD = (IPRD & 0xFF0F) | 11 << 4; /* interrupt priority */ | ||
231 | } | ||
232 | else if (mode == TM_TRANSMIT) | ||
233 | { | ||
234 | rb->timer_register(1, NULL, gTimer.transmit, timer4_isr IF_COP(, CPU)); | ||
235 | IPRD = (IPRD & 0xFF0F) | 14 << 4; /* interrupt priority */ | ||
236 | } | ||
237 | else | ||
238 | { | ||
239 | rb->timer_unregister(); | ||
240 | } | ||
241 | } | ||
242 | |||
243 | |||
244 | void timer4_isr(void) /* IMIA4 */ | ||
245 | { | ||
246 | switch (gTimer.mode) | ||
247 | { /* distribute the interrupt */ | ||
248 | case TM_TRANSMIT: | ||
249 | transmit_isr(); | ||
250 | break; | ||
251 | case TM_RX_TIMEOUT: | ||
252 | receive_timeout_isr(); | ||
253 | rb->timer_unregister(); /* single shot */ | ||
254 | break; | ||
255 | default: | ||
256 | timer_set_mode(TM_OFF); /* spurious interrupt */ | ||
257 | } /* switch */ | ||
258 | } | ||
259 | |||
260 | |||
261 | /* About Alpine M-Bus | ||
262 | * ------------------ | ||
263 | * | ||
264 | * The protocol uses a single wire in half duplex mode. | ||
265 | * A bit like I2C, this wire is either pulled low or left floating high. | ||
266 | * Bit time is ~3 ms, a "zero" is coded as ~0.6 ms low, a "one" as ~1.8 ms low. | ||
267 | * Nice to view in a 0.6 ms grid: | ||
268 | * | ||
269 | * 0 0.6 1.2 1.8 2.4 3.0 | ||
270 | * | | | | | | | ||
271 | * __ ___________________ | ||
272 | * \____/ \ "zero" bit | ||
273 | * __ _________ | ||
274 | * \______________/ \ "one" bit | ||
275 | * | ||
276 | * So I send out the data in a timer interrupt spawned to 0.6 ms. | ||
277 | * In phases where the line is floating high, I can check for collisions. | ||
278 | * (happens if the other side driving it low, too.) | ||
279 | * | ||
280 | * Data is transmitted in multiples of 4 bit, to ease BCD representation. | ||
281 | */ | ||
282 | |||
283 | |||
284 | /* 2nd level ISR for M-Bus transmission */ | ||
285 | void transmit_isr(void) | ||
286 | { | ||
287 | bool exit = false; | ||
288 | |||
289 | TSR4 &= ~0x01; /* clear the interrupt */ | ||
290 | |||
291 | switch(gSendIRQ.step++) | ||
292 | { | ||
293 | case 0: | ||
294 | and_b(~0x04, &PBDRH); /* low (read-modify-write access may have changed it while it was input) */ | ||
295 | or_b(0x04, &PBIORH); /* drive low (output) */ | ||
296 | break; | ||
297 | case 1: /* 0.6 ms */ | ||
298 | if (!gSendIRQ.bit) /* sending "zero"? */ | ||
299 | and_b(~0x04, &PBIORH); /* float (input) */ | ||
300 | break; | ||
301 | case 2: /* 1.2 ms */ | ||
302 | if (!gSendIRQ.bit && ((PBDR & PB10) == 0)) | ||
303 | gSendIRQ.collision = true; | ||
304 | break; | ||
305 | case 3: /* 1.8 ms */ | ||
306 | if (gSendIRQ.bit) /* sending "one"? */ | ||
307 | and_b(~0x04, &PBIORH); /* float (input) */ | ||
308 | else if ((PBDR & PB10) == 0) | ||
309 | gSendIRQ.collision = true; | ||
310 | break; | ||
311 | case 4: /* 2.4 ms */ | ||
312 | if ((PBDR & PB10) == 0) | ||
313 | gSendIRQ.collision = true; | ||
314 | |||
315 | /* prepare next round */ | ||
316 | gSendIRQ.step = 0; | ||
317 | gSendIRQ.bitmask >>= 1; | ||
318 | if (gSendIRQ.bitmask) | ||
319 | { /* new bit */ | ||
320 | gSendIRQ.bit = (gSendIRQ.byte & gSendIRQ.bitmask) != 0; | ||
321 | } | ||
322 | else | ||
323 | { /* new byte */ | ||
324 | if (++gSendIRQ.index < gSendIRQ.send_size) | ||
325 | { | ||
326 | gSendIRQ.bitmask = 0x08; | ||
327 | gSendIRQ.byte = gSendIRQ.send_buf[gSendIRQ.index]; | ||
328 | gSendIRQ.bit = (gSendIRQ.byte & gSendIRQ.bitmask) != 0; | ||
329 | } | ||
330 | else | ||
331 | exit = true; /* done */ | ||
332 | } | ||
333 | break; | ||
334 | } | ||
335 | |||
336 | if (exit || gSendIRQ.collision) | ||
337 | { /* stop transmission */ | ||
338 | or_b(0x20, PBCR1_ADDR+1); /* RxD1 again for PB10 */ | ||
339 | timer_set_mode(TM_OFF); /* stop the timer */ | ||
340 | gSendIRQ.busy = false; /* do this last, to avoid race conditions */ | ||
341 | } | ||
342 | } | ||
343 | |||
344 | |||
345 | /* For receiving, I use the "normal" serial RX feature of the CPU, | ||
346 | * so we can receive within an interrupt, no line polling necessary. | ||
347 | * Luckily, the M-Bus bit always starts with a falling edge and ends with a high, | ||
348 | * this matches with the start bit and the stop bit of a serial transmission. | ||
349 | * The baudrate is set such that the M-Bus bit time (ca. 3ms) matches | ||
350 | * the serial reception time of one byte, so we receive one byte per | ||
351 | * M-Bus bit. | ||
352 | * Start bit, 8 data bits and stop bit (total=10) nicely fall into the 5 | ||
353 | * phases like above: | ||
354 | * | ||
355 | * 0 0.6 1.2 1.8 2.4 3.0 ms | ||
356 | * | | | | | | time | ||
357 | * __ _______________________________ | ||
358 | * \_______/ \ "zero" bit | ||
359 | * __ _______________ | ||
360 | * \_______________________/ \ "one" bit | ||
361 | * | ||
362 | * | | | | | | | | | | | serial sampling interval | ||
363 | * Start 0 1 2 3 4 5 6 7 Stop bit (LSB first!) | ||
364 | * | ||
365 | * By looking at the bit pattern in the serial byte we can distinguish | ||
366 | * the short low from the longer low, tell "zero" and "one" apart. | ||
367 | * So we receive 0xFE for a "zero", 0xE0 for a "one". | ||
368 | * It may be necessary to treat the bits next to transitions as don't care, | ||
369 | * in case the timing is not so accurate. | ||
370 | * Bits are always sent "back-to-back", so I detect the packet end by timeout. | ||
371 | */ | ||
372 | |||
373 | |||
374 | void uart_init(unsigned baudrate) | ||
375 | { | ||
376 | RXI1 = (unsigned long)uart_rx_isr; /* install ISR */ | ||
377 | ERI1 = (unsigned long)uart_err_isr; /* install ISR */ | ||
378 | |||
379 | SCR1 = 0x00; /* disable everything; select async mode with SCK pin as I/O */ | ||
380 | SMR1 = 0x00; /* async, 8N1, NoMultiProc, sysclock/1 */ | ||
381 | BRR1 = ((FREQ/(32*baudrate))-1); | ||
382 | |||
383 | IPRE = (IPRE & ~0xf000) | 0xc000; /* interrupt on level 12 */ | ||
384 | |||
385 | rb->sleep(1); /* hardware needs to settle for at least one bit interval */ | ||
386 | |||
387 | and_b(~(SCI_RDRF | SCI_ORER | SCI_FER | SCI_PER), &SSR1); /* clear any receiver flag */ | ||
388 | or_b(SCI_RE | SCI_RIE , &SCR1); /* enable the receiver with interrupt */ | ||
389 | } | ||
390 | |||
391 | |||
392 | void uart_rx_isr(void) /* RXI1 */ | ||
393 | { | ||
394 | unsigned char data; | ||
395 | t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; /* short cut */ | ||
396 | |||
397 | data = RDR1; /* get data */ | ||
398 | |||
399 | and_b(~SCI_RDRF, &SSR1); /* clear data received flag */ | ||
400 | |||
401 | if (gTimer.mode == TM_TRANSMIT) | ||
402 | p_entry->error = RX_OVERLAP; /* oops, we're also transmitting, stop */ | ||
403 | else | ||
404 | timer_set_mode(TM_RX_TIMEOUT); /* (re)spawn timeout */ | ||
405 | |||
406 | if (p_entry->error != RX_BUSY) | ||
407 | return; | ||
408 | |||
409 | if ((data & ~0x00) == 0xFE) /* 01111111 in line order (reverse) */ | ||
410 | { /* "zero" received */ | ||
411 | gRcvIRQ.byte <<= 1; | ||
412 | } | ||
413 | else if ((data & ~0x00) == 0xE0) /* 00000111 in line order (reverse) */ | ||
414 | { /* "one" received */ | ||
415 | gRcvIRQ.byte = gRcvIRQ.byte << 1 | 0x01; | ||
416 | } | ||
417 | else | ||
418 | { /* unrecognized pulse */ | ||
419 | p_entry->error = RX_SYMBOL; | ||
420 | } | ||
421 | |||
422 | if (p_entry->error == RX_BUSY) | ||
423 | { | ||
424 | if (++gRcvIRQ.bit >= 4) | ||
425 | { /* byte completed */ | ||
426 | if (p_entry->size >= sizeof(p_entry->buf)) | ||
427 | { | ||
428 | p_entry->error = RX_OVERFLOW; /* buffer full */ | ||
429 | } | ||
430 | else | ||
431 | { | ||
432 | p_entry->buf[p_entry->size] = gRcvIRQ.byte; | ||
433 | gRcvIRQ.byte = 0; | ||
434 | gRcvIRQ.bit = 0; | ||
435 | p_entry->size++; | ||
436 | } | ||
437 | } | ||
438 | } | ||
439 | } | ||
440 | |||
441 | |||
442 | void uart_err_isr(void) /* ERI1 */ | ||
443 | { | ||
444 | t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; /* short cut */ | ||
445 | |||
446 | if (p_entry->error == RX_BUSY) | ||
447 | { /* terminate reception in case of error */ | ||
448 | if (SSR1 & SCI_FER) | ||
449 | p_entry->error = RX_FRAMING; | ||
450 | else if (SSR1 & SCI_ORER) | ||
451 | p_entry->error = RX_OVERRUN; | ||
452 | else if (SSR1 & SCI_PER) | ||
453 | p_entry->error = RX_PARITY; | ||
454 | } | ||
455 | |||
456 | /* clear any receiver flag */ | ||
457 | and_b(~(SCI_RDRF | SCI_ORER | SCI_FER | SCI_PER), &SSR1); | ||
458 | } | ||
459 | |||
460 | |||
461 | /* 2nd level ISR for receiver timeout, this finalizes reception */ | ||
462 | void receive_timeout_isr(void) | ||
463 | { | ||
464 | t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; /* short cut */ | ||
465 | |||
466 | timer_set_mode(TM_OFF); /* single shot */ | ||
467 | |||
468 | if (p_entry->error == RX_BUSY) /* everthing OK so far? */ | ||
469 | p_entry->error = RX_RECEIVED; /* end with valid data */ | ||
470 | |||
471 | /* move to next queue entry */ | ||
472 | gRcvIRQ.buf_write++; | ||
473 | if (gRcvIRQ.buf_write >= MBUS_RCV_QUEUESIZE) | ||
474 | gRcvIRQ.buf_write = 0; | ||
475 | p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; | ||
476 | |||
477 | if (gRcvIRQ.buf_write == gRcvIRQ.buf_read) | ||
478 | { /* queue overflow */ | ||
479 | gRcvIRQ.overflow = true; | ||
480 | /* what can I do? Continueing overwrites the oldest. */ | ||
481 | } | ||
482 | |||
483 | gRcvIRQ.byte = 0; | ||
484 | gRcvIRQ.bit = 0; | ||
485 | p_entry->size = 0; | ||
486 | p_entry->error = RX_BUSY; /* enable receive on new entry */ | ||
487 | } | ||
488 | |||
489 | |||
490 | /* generate the checksum */ | ||
491 | unsigned char calc_checksum(unsigned char* p_msg, int digits) | ||
492 | { | ||
493 | int chk = 0; | ||
494 | int i; | ||
495 | |||
496 | for (i=0; i<digits; i++) | ||
497 | { | ||
498 | chk ^= p_msg[i]; | ||
499 | } | ||
500 | chk = (chk+1) % 16; | ||
501 | |||
502 | return chk; | ||
503 | } | ||
504 | |||
505 | |||
506 | /****************** high-level M-Bus functions ******************/ | ||
507 | |||
508 | void mbus_init(void) | ||
509 | { | ||
510 | /* init the send object */ | ||
511 | rb->memset(&gSendIRQ, 0, sizeof(gSendIRQ)); | ||
512 | timer_init(MBUS_STEP_FREQ, (MBUS_BIT_FREQ*10)/15); /* setup frequency and timeout (1.5 bit) */ | ||
513 | |||
514 | /* init receiver */ | ||
515 | rb->memset(&gRcvIRQ, 0, sizeof(gRcvIRQ)); | ||
516 | uart_init(MBUS_BAUDRATE); | ||
517 | } | ||
518 | |||
519 | |||
520 | /* send out a number of BCD digits (one per byte) with M-Bus protocol */ | ||
521 | int mbus_send(unsigned char* p_msg, int digits) | ||
522 | { | ||
523 | /* wait for previous transmit/receive to end */ | ||
524 | while(gTimer.mode != TM_OFF) /* wait for "free line" */ | ||
525 | rb->sleep(1); | ||
526 | |||
527 | /* fill in our part */ | ||
528 | rb->memcpy(gSendIRQ.send_buf, p_msg, digits); | ||
529 | |||
530 | /* add checksum */ | ||
531 | gSendIRQ.send_buf[digits] = calc_checksum(p_msg, digits); | ||
532 | digits++; | ||
533 | |||
534 | /* debug dump, to be removed */ | ||
535 | if (gTread.foreground) | ||
536 | { | ||
537 | char buf[MBUS_MAX_SIZE+1]; | ||
538 | dump_packet(buf, sizeof(buf), gSendIRQ.send_buf, digits); | ||
539 | /*print_scroll(buf); */ | ||
540 | } | ||
541 | |||
542 | gSendIRQ.send_size = digits; | ||
543 | |||
544 | /* prepare everything so the ISR can start right away */ | ||
545 | gSendIRQ.index = 0; | ||
546 | gSendIRQ.byte = gSendIRQ.send_buf[0]; | ||
547 | gSendIRQ.bitmask = 0x08; | ||
548 | gSendIRQ.step = 0; | ||
549 | gSendIRQ.bit = (gSendIRQ.byte & gSendIRQ.bitmask) != 0; | ||
550 | gSendIRQ.collision = false; | ||
551 | gSendIRQ.busy = true; | ||
552 | |||
553 | /* last chance to wait for a new detected receive to end */ | ||
554 | while(gTimer.mode != TM_OFF) /* wait for "free line" */ | ||
555 | rb->sleep(1); | ||
556 | |||
557 | and_b(~0x30, PBCR1_ADDR+1); /* GPIO for PB10 */ | ||
558 | timer_set_mode(TM_TRANSMIT); /* run */ | ||
559 | |||
560 | /* make the call blocking until sent out */ | ||
561 | rb->sleep(digits*4*HZ/MBUS_BIT_FREQ); /* should take this long */ | ||
562 | |||
563 | while(gSendIRQ.busy) /* poll in case it lasts longer */ | ||
564 | rb->sleep(1); /* (should not happen) */ | ||
565 | |||
566 | /* debug output, to be removed */ | ||
567 | if (gTread.foreground) | ||
568 | { | ||
569 | if (gSendIRQ.collision) | ||
570 | print_scroll("collision"); | ||
571 | } | ||
572 | |||
573 | return gSendIRQ.collision; | ||
574 | } | ||
575 | |||
576 | |||
577 | /* returns the size of message copy, 0 if timed out, negative on error */ | ||
578 | int mbus_receive(unsigned char* p_msg, unsigned bufsize, int timeout) | ||
579 | { | ||
580 | int retval = 0; | ||
581 | |||
582 | do | ||
583 | { | ||
584 | if (gRcvIRQ.buf_read != gRcvIRQ.buf_write) | ||
585 | { /* something in the queue */ | ||
586 | t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_read]; /* short cut */ | ||
587 | |||
588 | if (p_entry->error == RX_RECEIVED) | ||
589 | { /* seems valid */ | ||
590 | rb->memcpy(p_msg, p_entry->buf, MIN(p_entry->size, bufsize)); | ||
591 | retval = p_entry->size; /* return message size */ | ||
592 | } | ||
593 | else | ||
594 | { /* an error occured */ | ||
595 | retval = - p_entry->error; /* return negative number */ | ||
596 | } | ||
597 | |||
598 | /* next queue readout position */ | ||
599 | gRcvIRQ.buf_read++; | ||
600 | if (gRcvIRQ.buf_read >= MBUS_RCV_QUEUESIZE) | ||
601 | gRcvIRQ.buf_read = 0; | ||
602 | |||
603 | return retval; /* exit */ | ||
604 | } | ||
605 | |||
606 | if (timeout != 0 || gTimer.mode != TM_OFF) /* also carry on if reception in progress */ | ||
607 | { | ||
608 | if (timeout != -1 && timeout != 0) /* if not infinite or expired */ | ||
609 | timeout--; | ||
610 | |||
611 | rb->sleep(1); /* wait a while */ | ||
612 | } | ||
613 | |||
614 | } while (timeout != 0 || gTimer.mode != TM_OFF); | ||
615 | |||
616 | return 0; /* timeout */ | ||
617 | } | ||
618 | |||
619 | |||
620 | /****************** MMI helper fuctions ******************/ | ||
621 | |||
622 | |||
623 | void print_scroll(char* string) | ||
624 | { | ||
625 | static char screen[LINES][COLUMNS+1]; /* visible strings */ | ||
626 | static unsigned pos = 0; /* next print position */ | ||
627 | static unsigned screentop = 0; /* for scrolling */ | ||
628 | |||
629 | if (!gTread.foreground) | ||
630 | return; /* just to protect careless callers */ | ||
631 | |||
632 | if (pos >= LINES) | ||
633 | { /* need to scroll first */ | ||
634 | int i; | ||
635 | rb->lcd_clear_display(); | ||
636 | screentop++; | ||
637 | for (i=0; i<LINES-1; i++) | ||
638 | rb->lcd_puts(0, i, screen[(i+screentop) % LINES]); | ||
639 | |||
640 | pos = LINES-1; | ||
641 | } | ||
642 | |||
643 | /* no strncpy avail. */ | ||
644 | rb->snprintf(screen[(pos+screentop) % LINES], sizeof(screen[0]), "%s", string); | ||
645 | |||
646 | rb->lcd_puts(0, pos, screen[(pos+screentop) % LINES]); | ||
647 | rb->lcd_update(); | ||
648 | pos++; | ||
649 | } | ||
650 | |||
651 | |||
652 | void dump_packet(char* dest, int dst_size, char* src, int n) | ||
653 | { | ||
654 | int i; | ||
655 | int len = MIN(dst_size-1, n); | ||
656 | |||
657 | for (i=0; i<len; i++) | ||
658 | { /* convert to hex digits */ | ||
659 | dest[i] = src[i] < 10 ? '0' + src[i] : 'A' + src[i] - 10; | ||
660 | } | ||
661 | dest[i] = '\0'; /* zero terminate string */ | ||
662 | } | ||
663 | |||
664 | |||
665 | /****************** CD changer emulation ******************/ | ||
666 | |||
667 | bool bit_test(unsigned char* buf, unsigned bit) | ||
668 | { | ||
669 | return (buf[bit>>2] & BIT_N(bit&3)) != 0; | ||
670 | } | ||
671 | |||
672 | |||
673 | void bit_set(unsigned char* buf, unsigned bit, bool val) | ||
674 | { | ||
675 | if (val) | ||
676 | buf[bit>>2] |= BIT_N(bit&3); | ||
677 | else | ||
678 | buf[bit>>2] &= ~BIT_N(bit&3); | ||
679 | } | ||
680 | |||
681 | |||
682 | void emu_init(void) | ||
683 | { | ||
684 | rb->memset(&gEmu, 0, sizeof(gEmu)); | ||
685 | |||
686 | gEmu.poll_interval = HZ; | ||
687 | |||
688 | /* init the play message to 990000000000000 */ | ||
689 | gEmu.playmsg[0] = gEmu.playmsg[1] = 0x9; | ||
690 | |||
691 | /* init the changing message to 9B900000001 */ | ||
692 | gEmu.changemsg[0] = gEmu.changemsg[2] = 0x9; | ||
693 | gEmu.changemsg[1] = 0xB; | ||
694 | gEmu.changemsg[10] = 0x1; | ||
695 | |||
696 | /* init the disk status message to 9C1019999990 */ | ||
697 | rb->memset(&gEmu.diskmsg, 0x9, sizeof(gEmu.diskmsg)); | ||
698 | gEmu.diskmsg[1] = 0xC; | ||
699 | gEmu.diskmsg[2] = gEmu.diskmsg[4] = 0x1; | ||
700 | gEmu.diskmsg[3] = gEmu.diskmsg[11] = 0x0; | ||
701 | } | ||
702 | |||
703 | /* feed a radio command into the emulator */ | ||
704 | void emu_process_packet(unsigned char* mbus_msg, int msg_size) | ||
705 | { | ||
706 | bool playmsg_dirty = false; | ||
707 | bool diskmsg_dirty = false; | ||
708 | |||
709 | if (msg_size == 2 && mbus_msg[0] == 1 && mbus_msg[1] == 8) | ||
710 | { /* 18: ping */ | ||
711 | mbus_send("\x09\x08", 2); /* 98: ping OK */ | ||
712 | } | ||
713 | else if (msg_size == 5 && mbus_msg[0] == 1 && mbus_msg[1] == 1 && mbus_msg[2] == 1) | ||
714 | { /* set play state */ | ||
715 | if (bit_test(mbus_msg, 16)) | ||
716 | { | ||
717 | if (gEmu.set_state == EMU_FF || gEmu.set_state == EMU_FR) /* was seeking? */ | ||
718 | { /* seek to final position */ | ||
719 | set_position(gEmu.time); | ||
720 | } | ||
721 | else if (gEmu.set_state != EMU_PLAYING && gEmu.set_state != EMU_PAUSED) | ||
722 | { /* was not playing yet, better send disk message */ | ||
723 | diskmsg_dirty = true; | ||
724 | } | ||
725 | set_play(); | ||
726 | gEmu.set_state = EMU_PLAYING; | ||
727 | playmsg_dirty = true; | ||
728 | } | ||
729 | |||
730 | if (bit_test(mbus_msg, 17)) | ||
731 | { | ||
732 | gEmu.set_state = EMU_PAUSED; | ||
733 | playmsg_dirty = true; | ||
734 | set_pause(); | ||
735 | } | ||
736 | |||
737 | if (bit_test(mbus_msg, 14)) | ||
738 | { | ||
739 | gEmu.set_state = EMU_STOPPED; | ||
740 | playmsg_dirty = true; | ||
741 | set_stop(); | ||
742 | } | ||
743 | |||
744 | if (bit_test(mbus_msg, 18)) | ||
745 | { | ||
746 | gEmu.set_state = EMU_FF; | ||
747 | playmsg_dirty = true; | ||
748 | set_pause(); | ||
749 | } | ||
750 | |||
751 | if (bit_test(mbus_msg, 19)) | ||
752 | { | ||
753 | gEmu.set_state = EMU_FR; | ||
754 | playmsg_dirty = true; | ||
755 | set_pause(); | ||
756 | } | ||
757 | |||
758 | if (bit_test(mbus_msg, 12)) /* scan stop */ | ||
759 | { | ||
760 | bit_set(gEmu.playmsg, 51, false); | ||
761 | playmsg_dirty = true; | ||
762 | } | ||
763 | |||
764 | if (gEmu.set_state == EMU_FF || gEmu.set_state == EMU_FR) | ||
765 | gEmu.poll_interval = HZ/4; /* faster refresh */ | ||
766 | else | ||
767 | gEmu.poll_interval = HZ; | ||
768 | } | ||
769 | else if (msg_size == 8 && mbus_msg[0] == 1 && mbus_msg[1] == 1 && mbus_msg[2] == 4) | ||
770 | { /* set program mode */ | ||
771 | gEmu.playmsg[11] = mbus_msg[3]; /* copy repeat, random, intro */ | ||
772 | gEmu.playmsg[12] = mbus_msg[4]; /* ToDo */ | ||
773 | playmsg_dirty = true; | ||
774 | } | ||
775 | else if (msg_size ==8 && mbus_msg[0] == 1 && mbus_msg[1] == 1 && mbus_msg[2] == 3) | ||
776 | { /* changing */ | ||
777 | gEmu.time = 0; /* reset playtime */ | ||
778 | playmsg_dirty = true; | ||
779 | if (mbus_msg[3] == 0) | ||
780 | { /* changing track */ | ||
781 | if (mbus_msg[4] == 0xA && mbus_msg[5] == 0x3) | ||
782 | { /* next random */ | ||
783 | gEmu.playmsg[3] = rb->rand() % 10; /* ToDo */ | ||
784 | gEmu.playmsg[4] = rb->rand() % 10; | ||
785 | } | ||
786 | else if (mbus_msg[4] == 0xB && mbus_msg[5] == 0x3) | ||
787 | { /* previous random */ | ||
788 | gEmu.playmsg[3] = rb->rand() % 10; /* ToDo */ | ||
789 | gEmu.playmsg[4] = rb->rand() % 10; | ||
790 | } | ||
791 | else | ||
792 | { /* normal track select */ | ||
793 | set_track(mbus_msg[4]*10 + mbus_msg[5]); | ||
794 | } | ||
795 | } | ||
796 | else | ||
797 | { /* changing disk */ | ||
798 | diskmsg_dirty = true; | ||
799 | gEmu.changemsg[3] = mbus_msg[3]; /* copy disk */ | ||
800 | gEmu.diskmsg[2] = mbus_msg[3]; | ||
801 | gEmu.changemsg[7] = gEmu.playmsg[11]; /* copy flags from status */ | ||
802 | gEmu.changemsg[8] = gEmu.playmsg[12]; | ||
803 | /*gEmu.playmsg[3] = 0; */ /* reset to track 1 */ | ||
804 | /*gEmu.playmsg[4] = 1; */ | ||
805 | mbus_send(gEmu.changemsg, sizeof(gEmu.changemsg)); | ||
806 | } | ||
807 | } | ||
808 | else | ||
809 | { /* if in doubt, send Ack */ | ||
810 | mbus_send("\x09\x0F\x00\x00\x00\x00\x00", 7); | ||
811 | } | ||
812 | |||
813 | if (playmsg_dirty) | ||
814 | { | ||
815 | rb->yield(); /* give the audio thread a chance to process */ | ||
816 | get_playmsg(); /* force update */ | ||
817 | mbus_send(gEmu.playmsg, sizeof(gEmu.playmsg)); | ||
818 | } | ||
819 | |||
820 | if (diskmsg_dirty) | ||
821 | { | ||
822 | get_diskmsg(); /* force update */ | ||
823 | mbus_send(gEmu.diskmsg, sizeof(gEmu.diskmsg)); | ||
824 | } | ||
825 | } | ||
826 | |||
827 | |||
828 | /* called each second in case the emulator has something to do */ | ||
829 | void emu_tick(void) | ||
830 | { | ||
831 | get_playmsg(); /* force update */ | ||
832 | if (bit_test(gEmu.playmsg, 56)) /* play bit */ | ||
833 | { | ||
834 | unsigned remain; /* helper as we walk down the digits */ | ||
835 | |||
836 | switch(gEmu.set_state) | ||
837 | { | ||
838 | case EMU_FF: | ||
839 | gEmu.time += 10; | ||
840 | case EMU_FR: | ||
841 | gEmu.time -= 5; | ||
842 | |||
843 | if (gEmu.time < 0) | ||
844 | gEmu.time = 0; | ||
845 | else if (gEmu.time > get_tracklength()) | ||
846 | gEmu.time = get_tracklength(); | ||
847 | |||
848 | /* convert value to MM:SS */ | ||
849 | remain = (unsigned)gEmu.time; | ||
850 | gEmu.playmsg[7] = remain / (10*60); | ||
851 | remain -= gEmu.playmsg[7] * (10*60); | ||
852 | gEmu.playmsg[8] = remain / 60; | ||
853 | remain -= gEmu.playmsg[8] * 60; | ||
854 | gEmu.playmsg[9] = remain / 10; | ||
855 | remain -= gEmu.playmsg[9] * 10; | ||
856 | gEmu.playmsg[10] = remain; | ||
857 | } | ||
858 | |||
859 | mbus_send(gEmu.playmsg, sizeof(gEmu.playmsg)); | ||
860 | } | ||
861 | } | ||
862 | |||
863 | |||
864 | /****************** communication with Rockbox playback ******************/ | ||
865 | |||
866 | |||
867 | /* update the play message with Rockbox info */ | ||
868 | void get_playmsg(void) | ||
869 | { | ||
870 | int track, time; | ||
871 | |||
872 | if (gEmu.set_state != EMU_FF && gEmu.set_state != EMU_FR) | ||
873 | { | ||
874 | switch(rb->audio_status()) | ||
875 | { | ||
876 | case AUDIO_STATUS_PLAY: | ||
877 | print_scroll("AudioStat Play"); | ||
878 | if (gEmu.set_state == EMU_FF || gEmu.set_state == EMU_FR) | ||
879 | gEmu.playmsg[2] = gEmu.set_state; /* set FF/FR */ | ||
880 | else | ||
881 | gEmu.playmsg[2] = EMU_PLAYING; /* set normal play */ | ||
882 | |||
883 | bit_set(gEmu.playmsg, 56, true); /* set play */ | ||
884 | bit_set(gEmu.playmsg, 57, false); /* clear pause */ | ||
885 | bit_set(gEmu.playmsg, 59, false); /* clear stop */ | ||
886 | break; | ||
887 | |||
888 | case AUDIO_STATUS_PLAY | AUDIO_STATUS_PAUSE: | ||
889 | print_scroll("AudioStat Pause"); | ||
890 | gEmu.playmsg[2] = EMU_PAUSED; | ||
891 | bit_set(gEmu.playmsg, 56, false); /* clear play */ | ||
892 | bit_set(gEmu.playmsg, 57, true); /* set pause */ | ||
893 | bit_set(gEmu.playmsg, 59, false); /* clear stop */ | ||
894 | break; | ||
895 | |||
896 | default: | ||
897 | print_scroll("AudioStat 0"); | ||
898 | gEmu.playmsg[2] = EMU_STOPPED; | ||
899 | bit_set(gEmu.playmsg, 56, false); /* clear play */ | ||
900 | bit_set(gEmu.playmsg, 57, false); /* clear pause */ | ||
901 | bit_set(gEmu.playmsg, 59, true); /* set stop */ | ||
902 | break; | ||
903 | } | ||
904 | |||
905 | /* convert value to MM:SS */ | ||
906 | time = get_playtime(); | ||
907 | gEmu.time = time; /* copy it */ | ||
908 | gEmu.playmsg[7] = time / (10*60); | ||
909 | time -= gEmu.playmsg[7] * (10*60); | ||
910 | gEmu.playmsg[8] = time / 60; | ||
911 | time -= gEmu.playmsg[8] * 60; | ||
912 | gEmu.playmsg[9] = time / 10; | ||
913 | time -= gEmu.playmsg[9] * 10; | ||
914 | gEmu.playmsg[10] = time; | ||
915 | } | ||
916 | else /* FF/FR */ | ||
917 | { | ||
918 | gEmu.playmsg[2] = gEmu.set_state; /* in FF/FR, report that instead */ | ||
919 | } | ||
920 | |||
921 | track = get_track(); | ||
922 | gEmu.playmsg[3] = track / 10; | ||
923 | gEmu.playmsg[4] = track % 10; | ||
924 | } | ||
925 | |||
926 | /* update the disk status message with Rockbox info */ | ||
927 | void get_diskmsg(void) | ||
928 | { | ||
929 | int tracks = rb->playlist_amount(); | ||
930 | if (tracks > 99) | ||
931 | tracks = 99; | ||
932 | gEmu.diskmsg[5] = tracks / 10; | ||
933 | gEmu.diskmsg[6] = tracks % 10; | ||
934 | } | ||
935 | |||
936 | /* return the current track time in seconds */ | ||
937 | int get_playtime(void) | ||
938 | { | ||
939 | struct mp3entry* p_mp3entry; | ||
940 | |||
941 | p_mp3entry = rb->audio_current_track(); | ||
942 | if (p_mp3entry == NULL) | ||
943 | return 0; | ||
944 | |||
945 | return p_mp3entry->elapsed / 1000; | ||
946 | } | ||
947 | |||
948 | /* return the total length of the current track */ | ||
949 | int get_tracklength(void) | ||
950 | { | ||
951 | struct mp3entry* p_mp3entry; | ||
952 | |||
953 | p_mp3entry = rb->audio_current_track(); | ||
954 | if (p_mp3entry == NULL) | ||
955 | return 0; | ||
956 | |||
957 | return p_mp3entry->length / 1000; | ||
958 | } | ||
959 | |||
960 | /* change to a new track */ | ||
961 | void set_track(int selected) | ||
962 | { | ||
963 | if (selected > get_track()) | ||
964 | { | ||
965 | print_scroll("audio_next"); | ||
966 | rb->audio_next(); | ||
967 | } | ||
968 | else if (selected < get_track()) | ||
969 | { | ||
970 | print_scroll("audio_prev"); | ||
971 | rb->audio_prev(); | ||
972 | } | ||
973 | } | ||
974 | |||
975 | /* return the track number */ | ||
976 | int get_track(void) | ||
977 | { | ||
978 | struct mp3entry* p_mp3entry; | ||
979 | |||
980 | p_mp3entry = rb->audio_current_track(); | ||
981 | if (p_mp3entry == NULL) | ||
982 | return 0; | ||
983 | |||
984 | return p_mp3entry->index + 1; /* track numbers start with 1 */ | ||
985 | } | ||
986 | |||
987 | /* start or resume playback */ | ||
988 | void set_play(void) | ||
989 | { | ||
990 | if (rb->audio_status() == AUDIO_STATUS_PLAY) | ||
991 | return; | ||
992 | |||
993 | if (rb->audio_status() == (AUDIO_STATUS_PLAY | AUDIO_STATUS_PAUSE)) | ||
994 | { | ||
995 | print_scroll("audio_resume"); | ||
996 | rb->audio_resume(); | ||
997 | } | ||
998 | else | ||
999 | { | ||
1000 | print_scroll("audio_play(0, 0)"); | ||
1001 | rb->audio_play(0, 0); | ||
1002 | } | ||
1003 | } | ||
1004 | |||
1005 | /* pause playback */ | ||
1006 | void set_pause(void) | ||
1007 | { | ||
1008 | if (rb->audio_status() == AUDIO_STATUS_PLAY) | ||
1009 | { | ||
1010 | print_scroll("audio_pause"); | ||
1011 | rb->audio_pause(); | ||
1012 | } | ||
1013 | } | ||
1014 | |||
1015 | /* stop playback */ | ||
1016 | void set_stop(void) | ||
1017 | { | ||
1018 | if (rb->audio_status() & AUDIO_STATUS_PLAY) | ||
1019 | { | ||
1020 | print_scroll("audio_stop"); | ||
1021 | rb->audio_stop(); | ||
1022 | } | ||
1023 | } | ||
1024 | |||
1025 | /* seek */ | ||
1026 | void set_position(int seconds) | ||
1027 | { | ||
1028 | if (rb->audio_status() & AUDIO_STATUS_PLAY) | ||
1029 | { | ||
1030 | print_scroll("audio_ff_rewind"); | ||
1031 | rb->audio_ff_rewind(seconds * 1000); | ||
1032 | } | ||
1033 | } | ||
1034 | |||
1035 | /****************** main thread + helper ******************/ | ||
1036 | |||
1037 | /* set to everything flat and 0 dB volume */ | ||
1038 | void sound_neutral(void) | ||
1039 | { /* neutral sound settings */ | ||
1040 | rb->sound_set(SOUND_BASS, 0); | ||
1041 | rb->sound_set(SOUND_TREBLE, 0); | ||
1042 | rb->sound_set(SOUND_BALANCE, 0); | ||
1043 | rb->sound_set(SOUND_VOLUME, 0); | ||
1044 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
1045 | rb->sound_set(SOUND_LOUDNESS, 0); | ||
1046 | rb->sound_set(SOUND_SUPERBASS, 0); | ||
1047 | rb->sound_set(SOUND_AVC, 0); | ||
1048 | #endif | ||
1049 | } | ||
1050 | |||
1051 | /* return to user settings */ | ||
1052 | void sound_normal(void) | ||
1053 | { /* restore sound settings */ | ||
1054 | rb->sound_set(SOUND_BASS, rb->global_settings->bass); | ||
1055 | rb->sound_set(SOUND_TREBLE, rb->global_settings->treble); | ||
1056 | rb->sound_set(SOUND_BALANCE, rb->global_settings->balance); | ||
1057 | rb->sound_set(SOUND_VOLUME, rb->global_settings->volume); | ||
1058 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
1059 | rb->sound_set(SOUND_LOUDNESS, rb->global_settings->loudness); | ||
1060 | rb->sound_set(SOUND_SUPERBASS, rb->global_settings->superbass); | ||
1061 | rb->sound_set(SOUND_AVC, rb->global_settings->avc); | ||
1062 | #endif | ||
1063 | } | ||
1064 | |||
1065 | /* the thread running it all */ | ||
1066 | void thread(void) | ||
1067 | { | ||
1068 | int msg_size; | ||
1069 | unsigned char mbus_msg[MBUS_MAX_SIZE]; | ||
1070 | char buf[32]; | ||
1071 | bool connected = false; | ||
1072 | long last_tick = *rb->current_tick; /* for 1 sec tick */ | ||
1073 | |||
1074 | do | ||
1075 | { | ||
1076 | msg_size = mbus_receive(mbus_msg, sizeof(mbus_msg), 1); | ||
1077 | if (msg_size > 0) | ||
1078 | { /* received something */ | ||
1079 | if(gTread.foreground) | ||
1080 | { | ||
1081 | dump_packet(buf, sizeof(buf), mbus_msg, msg_size); | ||
1082 | /*print_scroll(buf); */ | ||
1083 | } | ||
1084 | if (msg_size > 2 && mbus_msg[0] == 1 | ||
1085 | && mbus_msg[msg_size-1] == calc_checksum(mbus_msg, msg_size-1)) | ||
1086 | { /* sanity and checksum OK */ | ||
1087 | if (!connected) | ||
1088 | { /* with the first received packet: */ | ||
1089 | sound_neutral(); /* set to flat and 0dB volume */ | ||
1090 | connected = true; | ||
1091 | } | ||
1092 | emu_process_packet(mbus_msg, msg_size-1); /* pass without chksum */ | ||
1093 | } | ||
1094 | else if(gTread.foreground) | ||
1095 | { /* not OK */ | ||
1096 | print_scroll("bad packet"); | ||
1097 | } | ||
1098 | } | ||
1099 | else if (msg_size < 0 && gTread.foreground) | ||
1100 | { /* error */ | ||
1101 | rb->snprintf(buf, sizeof(buf), "rcv error %d", msg_size); | ||
1102 | print_scroll(buf); | ||
1103 | } | ||
1104 | |||
1105 | if (*rb->current_tick - last_tick >= gEmu.poll_interval) | ||
1106 | { /* call the emulation regulary */ | ||
1107 | emu_tick(); | ||
1108 | last_tick += gEmu.poll_interval; | ||
1109 | } | ||
1110 | |||
1111 | } while (!gTread.exiting); | ||
1112 | } | ||
1113 | |||
1114 | /* callback to end the TSR plugin, called before a new one gets loaded */ | ||
1115 | static bool exit_tsr(bool reenter) | ||
1116 | { | ||
1117 | if (reenter) | ||
1118 | return false; /* dont let it start again */ | ||
1119 | gTread.exiting = true; /* tell the thread to end */ | ||
1120 | rb->thread_wait(gTread.thread); /* wait until it did */ | ||
1121 | |||
1122 | uart_init(BAUDRATE); /* return to standard baudrate */ | ||
1123 | IPRE = (IPRE & ~0xF000); /* UART interrupt off */ | ||
1124 | timer_set_mode(TM_OFF); /* timer interrupt off */ | ||
1125 | |||
1126 | sound_normal(); /* restore sound settings */ | ||
1127 | return true; | ||
1128 | } | ||
1129 | |||
1130 | /****************** main ******************/ | ||
1131 | |||
1132 | |||
1133 | int main(const void* parameter) | ||
1134 | { | ||
1135 | (void)parameter; | ||
1136 | #ifdef DEBUG | ||
1137 | int button; | ||
1138 | #endif | ||
1139 | size_t buf_size; | ||
1140 | ssize_t stacksize; | ||
1141 | void* stack; | ||
1142 | |||
1143 | mbus_init(); /* init the M-Bus layer */ | ||
1144 | emu_init(); /* init emulator */ | ||
1145 | |||
1146 | rb->splash(HZ/5, "Alpine CDC"); /* be quick on autostart */ | ||
1147 | |||
1148 | #ifdef DEBUG | ||
1149 | print_scroll("Alpine M-Bus Test"); | ||
1150 | print_scroll("any key to TSR"); | ||
1151 | #endif | ||
1152 | |||
1153 | /* init the worker thread */ | ||
1154 | stack = rb->plugin_get_buffer(&buf_size); /* use the rest as stack */ | ||
1155 | stacksize = buf_size; | ||
1156 | stack = (void*)(((unsigned int)stack + 100) & ~3); /* a bit away, 32 bit align */ | ||
1157 | stacksize = (stacksize - 100) & ~3; | ||
1158 | if (stacksize < DEFAULT_STACK_SIZE) | ||
1159 | { | ||
1160 | rb->splash(HZ*2, "Out of memory"); | ||
1161 | return -1; | ||
1162 | } | ||
1163 | |||
1164 | rb->memset(&gTread, 0, sizeof(gTread)); | ||
1165 | gTread.foreground = true; | ||
1166 | gTread.thread = rb->create_thread(thread, stack, stacksize, 0, "CDC" | ||
1167 | IF_PRIO(, PRIORITY_BACKGROUND) | ||
1168 | IF_COP(, CPU)); | ||
1169 | |||
1170 | #ifdef DEBUG | ||
1171 | do | ||
1172 | { | ||
1173 | button = rb->button_get(true); | ||
1174 | } while (button & BUTTON_REL); | ||
1175 | #endif | ||
1176 | |||
1177 | gTread.foreground = false; /* we're in the background now */ | ||
1178 | rb->plugin_tsr(exit_tsr); /* stay resident */ | ||
1179 | |||
1180 | #ifdef DEBUG | ||
1181 | return rb->default_event_handler(button); | ||
1182 | #else | ||
1183 | return 0; | ||
1184 | #endif | ||
1185 | } | ||
1186 | |||
1187 | |||
1188 | /***************** Plugin Entry Point *****************/ | ||
1189 | |||
1190 | |||
1191 | enum plugin_status plugin_start(const void* parameter) | ||
1192 | { | ||
1193 | /* now go ahead and have fun! */ | ||
1194 | return (main(parameter)==0) ? PLUGIN_OK : PLUGIN_ERROR; | ||
1195 | } | ||
diff --git a/apps/plugins/battery_bench.c b/apps/plugins/battery_bench.c index f24ad579e8..37046af05b 100644 --- a/apps/plugins/battery_bench.c +++ b/apps/plugins/battery_bench.c | |||
@@ -30,41 +30,12 @@ | |||
30 | 30 | ||
31 | #define EV_EXIT 1337 | 31 | #define EV_EXIT 1337 |
32 | 32 | ||
33 | /* seems to work with 1300, but who knows... */ | 33 | /* seems to work with 1300, but who knows... */ |
34 | #define THREAD_STACK_SIZE DEFAULT_STACK_SIZE + 0x200 | 34 | #define THREAD_STACK_SIZE DEFAULT_STACK_SIZE + 0x200 |
35 | 35 | ||
36 | #if CONFIG_KEYPAD == RECORDER_PAD | 36 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
37 | |||
38 | #define BATTERY_ON BUTTON_PLAY | ||
39 | #define BATTERY_OFF BUTTON_OFF | ||
40 | #define BATTERY_ON_TXT "PLAY - start" | ||
41 | #define BATTERY_OFF_TXT "OFF" | ||
42 | |||
43 | #if BUTTON_REMOTE != 0 | ||
44 | #define BATTERY_RC_ON BUTTON_RC_PLAY | ||
45 | #define BATTERY_RC_OFF BUTTON_RC_STOP | ||
46 | #endif | ||
47 | |||
48 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
49 | |||
50 | #define BATTERY_ON BUTTON_RIGHT | ||
51 | #define BATTERY_OFF BUTTON_OFF | ||
52 | #define BATTERY_ON_TXT "RIGHT - start" | ||
53 | #define BATTERY_OFF_TXT "OFF" | ||
54 | |||
55 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
56 | |||
57 | #define BATTERY_ON BUTTON_PLAY | ||
58 | #define BATTERY_OFF BUTTON_STOP | ||
59 | #define BATTERY_ON_TXT "PLAY - start" | ||
60 | #define BATTERY_OFF_TXT "STOP" | ||
61 | |||
62 | #define BATTERY_RC_ON BUTTON_RC_PLAY | ||
63 | #define BATTERY_RC_OFF BUTTON_RC_STOP | ||
64 | |||
65 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
66 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 37 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
67 | 38 | ||
68 | #define BATTERY_ON BUTTON_ON | 39 | #define BATTERY_ON BUTTON_ON |
69 | #define BATTERY_RC_ON BUTTON_RC_ON | 40 | #define BATTERY_RC_ON BUTTON_RC_ON |
70 | 41 | ||
diff --git a/apps/plugins/beatbox/beatbox.c b/apps/plugins/beatbox/beatbox.c index 914533151e..e7d3225c8b 100644 --- a/apps/plugins/beatbox/beatbox.c +++ b/apps/plugins/beatbox/beatbox.c | |||
@@ -28,19 +28,7 @@ | |||
28 | 28 | ||
29 | 29 | ||
30 | /* variable button definitions */ | 30 | /* variable button definitions */ |
31 | #if CONFIG_KEYPAD == RECORDER_PAD | 31 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
32 | #define BTN_QUIT BUTTON_OFF | ||
33 | #define BTN_RIGHT BUTTON_RIGHT | ||
34 | #define BTN_UP BUTTON_UP | ||
35 | #define BTN_DOWN BUTTON_DOWN | ||
36 | |||
37 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
38 | #define BTN_QUIT BUTTON_OFF | ||
39 | #define BTN_RIGHT BUTTON_RIGHT | ||
40 | #define BTN_UP BUTTON_UP | ||
41 | #define BTN_DOWN BUTTON_DOWN | ||
42 | |||
43 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
44 | #define BTN_QUIT BUTTON_OFF | 32 | #define BTN_QUIT BUTTON_OFF |
45 | #define BTN_RIGHT BUTTON_RIGHT | 33 | #define BTN_RIGHT BUTTON_RIGHT |
46 | #define BTN_UP BUTTON_UP | 34 | #define BTN_UP BUTTON_UP |
diff --git a/apps/plugins/blackjack.c b/apps/plugins/blackjack.c index d685de9617..93b577462b 100644 --- a/apps/plugins/blackjack.c +++ b/apps/plugins/blackjack.c | |||
@@ -42,37 +42,7 @@ enum { | |||
42 | BJ_END, | 42 | BJ_END, |
43 | }; | 43 | }; |
44 | 44 | ||
45 | #if CONFIG_KEYPAD == RECORDER_PAD | 45 | #if CONFIG_KEYPAD == IRIVER_H10_PAD |
46 | #define BJACK_SELECT_NAME "PLAY" | ||
47 | #define BJACK_STAY_NAME "F1" | ||
48 | #define BJACK_QUIT_NAME "OFF" | ||
49 | #define BJACK_DOUBLE_NAME "F2" | ||
50 | #define BJACK_SELECT BUTTON_PLAY | ||
51 | #define BJACK_QUIT BUTTON_OFF | ||
52 | #define BJACK_MAX (BUTTON_ON|BUTTON_UP) | ||
53 | #define BJACK_MIN (BUTTON_ON|BUTTON_DOWN) | ||
54 | #define BJACK_STAY BUTTON_F1 | ||
55 | #define BJACK_DOUBLEDOWN BUTTON_F2 | ||
56 | #define BJACK_UP BUTTON_UP | ||
57 | #define BJACK_DOWN BUTTON_DOWN | ||
58 | #define BJACK_RIGHT BUTTON_RIGHT | ||
59 | #define BJACK_LEFT BUTTON_LEFT | ||
60 | |||
61 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
62 | #define BJACK_SELECT_NAME "MENU" | ||
63 | #define BJACK_STAY_NAME "RIGHT" | ||
64 | #define BJACK_QUIT_NAME "OFF" | ||
65 | #define BJACK_DOUBLE_NAME "UP" | ||
66 | #define BJACK_SELECT BUTTON_MENU | ||
67 | #define BJACK_QUIT BUTTON_OFF | ||
68 | #define BJACK_STAY BUTTON_RIGHT | ||
69 | #define BJACK_DOUBLEDOWN BUTTON_UP | ||
70 | #define BJACK_UP BUTTON_UP | ||
71 | #define BJACK_DOWN BUTTON_DOWN | ||
72 | #define BJACK_RIGHT BUTTON_RIGHT | ||
73 | #define BJACK_LEFT BUTTON_LEFT | ||
74 | |||
75 | #elif CONFIG_KEYPAD == IRIVER_H10_PAD | ||
76 | #define BJACK_SELECT_NAME "PLAY" | 46 | #define BJACK_SELECT_NAME "PLAY" |
77 | #define BJACK_STAY_NAME ">>|" | 47 | #define BJACK_STAY_NAME ">>|" |
78 | #define BJACK_QUIT_NAME "POWER" | 48 | #define BJACK_QUIT_NAME "POWER" |
diff --git a/apps/plugins/brickmania.c b/apps/plugins/brickmania.c index 182ba4f040..dd46f98b8e 100644 --- a/apps/plugins/brickmania.c +++ b/apps/plugins/brickmania.c | |||
@@ -61,23 +61,6 @@ | |||
61 | #define DOWN BUTTON_DOWN | 61 | #define DOWN BUTTON_DOWN |
62 | #define RC_QUIT BUTTON_RC_STOP | 62 | #define RC_QUIT BUTTON_RC_STOP |
63 | 63 | ||
64 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
65 | #define CONTINUE_TEXT "MENU To Continue" | ||
66 | #define QUIT BUTTON_OFF | ||
67 | #define LEFT BUTTON_LEFT | ||
68 | #define RIGHT BUTTON_RIGHT | ||
69 | #define SELECT BUTTON_MENU | ||
70 | #define UP BUTTON_UP | ||
71 | #define DOWN BUTTON_DOWN | ||
72 | |||
73 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
74 | #define QUIT BUTTON_OFF | ||
75 | #define LEFT BUTTON_LEFT | ||
76 | #define RIGHT BUTTON_RIGHT | ||
77 | #define SELECT BUTTON_PLAY | ||
78 | #define UP BUTTON_UP | ||
79 | #define DOWN BUTTON_DOWN | ||
80 | |||
81 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 64 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
82 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 65 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
83 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 66 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
@@ -1461,9 +1444,7 @@ static int brickmania_help(void) | |||
1461 | "< & >:", | 1444 | "< & >:", |
1462 | #endif | 1445 | #endif |
1463 | "Moves", "the", "paddle", "", | 1446 | "Moves", "the", "paddle", "", |
1464 | #if CONFIG_KEYPAD == ONDIO_PAD | 1447 | #if (CONFIG_KEYPAD == IAUDIO_M3_PAD) |
1465 | "MENU:", | ||
1466 | #elif (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IAUDIO_M3_PAD) | ||
1467 | "PLAY:", | 1448 | "PLAY:", |
1468 | #elif CONFIG_KEYPAD == IRIVER_H300_PAD | 1449 | #elif CONFIG_KEYPAD == IRIVER_H300_PAD |
1469 | "NAVI:", | 1450 | "NAVI:", |
@@ -1484,9 +1465,7 @@ static int brickmania_help(void) | |||
1484 | (CONFIG_KEYPAD == SANSA_FUZE_PAD) | 1465 | (CONFIG_KEYPAD == SANSA_FUZE_PAD) |
1485 | "MENU:", | 1466 | "MENU:", |
1486 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | 1467 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
1487 | (CONFIG_KEYPAD == IRIVER_H300_PAD) || \ | 1468 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
1488 | (CONFIG_KEYPAD == ONDIO_PAD) || \ | ||
1489 | (CONFIG_KEYPAD == RECORDER_PAD) | ||
1490 | "STOP:", | 1469 | "STOP:", |
1491 | #else | 1470 | #else |
1492 | "POWER:", | 1471 | "POWER:", |
diff --git a/apps/plugins/bubbles.c b/apps/plugins/bubbles.c index 2d163d8bc9..50de10fa23 100644 --- a/apps/plugins/bubbles.c +++ b/apps/plugins/bubbles.c | |||
@@ -84,7 +84,6 @@ enum { | |||
84 | /* these are better off shooting with up */ | 84 | /* these are better off shooting with up */ |
85 | #if (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \ | 85 | #if (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \ |
86 | || (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) \ | 86 | || (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) \ |
87 | || (CONFIG_KEYPAD == ONDIO_PAD) \ | ||
88 | || (CONFIG_KEYPAD == IRIVER_H10_PAD) | 87 | || (CONFIG_KEYPAD == IRIVER_H10_PAD) |
89 | #define SHOOT_WITH_UP | 88 | #define SHOOT_WITH_UP |
90 | #endif | 89 | #endif |
diff --git a/apps/plugins/calculator.c b/apps/plugins/calculator.c index d3cf57536d..ac5a6ed7cd 100644 --- a/apps/plugins/calculator.c +++ b/apps/plugins/calculator.c | |||
@@ -110,29 +110,8 @@ F3: equal to "=" | |||
110 | #endif | 110 | #endif |
111 | 111 | ||
112 | /* variable button definitions */ | 112 | /* variable button definitions */ |
113 | #if CONFIG_KEYPAD == RECORDER_PAD | 113 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
114 | #define CALCULATOR_LEFT BUTTON_LEFT | 114 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
115 | #define CALCULATOR_RIGHT BUTTON_RIGHT | ||
116 | #define CALCULATOR_UP BUTTON_UP | ||
117 | #define CALCULATOR_DOWN BUTTON_DOWN | ||
118 | #define CALCULATOR_QUIT BUTTON_OFF | ||
119 | #define CALCULATOR_INPUT BUTTON_PLAY | ||
120 | #define CALCULATOR_CALC BUTTON_F3 | ||
121 | #define CALCULATOR_OPERATORS BUTTON_F2 | ||
122 | #define CALCULATOR_CLEAR BUTTON_F1 | ||
123 | |||
124 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
125 | #define CALCULATOR_LEFT BUTTON_LEFT | ||
126 | #define CALCULATOR_RIGHT BUTTON_RIGHT | ||
127 | #define CALCULATOR_UP BUTTON_UP | ||
128 | #define CALCULATOR_DOWN BUTTON_DOWN | ||
129 | #define CALCULATOR_QUIT BUTTON_OFF | ||
130 | #define CALCULATOR_INPUT_CALC_PRE BUTTON_MENU | ||
131 | #define CALCULATOR_INPUT (BUTTON_MENU | BUTTON_REL) | ||
132 | #define CALCULATOR_CALC (BUTTON_MENU | BUTTON_REPEAT) | ||
133 | |||
134 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
135 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
136 | #define CALCULATOR_LEFT BUTTON_LEFT | 115 | #define CALCULATOR_LEFT BUTTON_LEFT |
137 | #define CALCULATOR_RIGHT BUTTON_RIGHT | 116 | #define CALCULATOR_RIGHT BUTTON_RIGHT |
138 | #define CALCULATOR_UP BUTTON_UP | 117 | #define CALCULATOR_UP BUTTON_UP |
diff --git a/apps/plugins/calendar.c b/apps/plugins/calendar.c index 11a37191af..7e2472ffc9 100644 --- a/apps/plugins/calendar.c +++ b/apps/plugins/calendar.c | |||
@@ -25,30 +25,8 @@ | |||
25 | #include "lib/playback_control.h" | 25 | #include "lib/playback_control.h" |
26 | #include "lib/configfile.h" | 26 | #include "lib/configfile.h" |
27 | 27 | ||
28 | 28 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | |
29 | 29 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | |
30 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
31 | #define CALENDAR_QUIT BUTTON_OFF | ||
32 | #define CALENDAR_SELECT BUTTON_PLAY | ||
33 | #define CALENDAR_NEXT_WEEK BUTTON_DOWN | ||
34 | #define CALENDAR_PREV_WEEK BUTTON_UP | ||
35 | #define CALENDAR_NEXT_DAY BUTTON_RIGHT | ||
36 | #define CALENDAR_PREV_DAY BUTTON_LEFT | ||
37 | #define CALENDAR_NEXT_MONTH (BUTTON_ON|BUTTON_DOWN) | ||
38 | #define CALENDAR_PREV_MONTH (BUTTON_ON|BUTTON_UP) | ||
39 | |||
40 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
41 | #define CALENDAR_QUIT BUTTON_OFF | ||
42 | #define CALENDAR_SELECT (BUTTON_MENU|BUTTON_REL) | ||
43 | #define CALENDAR_NEXT_WEEK BUTTON_DOWN | ||
44 | #define CALENDAR_PREV_WEEK BUTTON_UP | ||
45 | #define CALENDAR_NEXT_DAY BUTTON_RIGHT | ||
46 | #define CALENDAR_PREV_DAY BUTTON_LEFT | ||
47 | #define CALENDAR_NEXT_MONTH (BUTTON_MENU|BUTTON_DOWN) | ||
48 | #define CALENDAR_PREV_MONTH (BUTTON_MENU|BUTTON_UP) | ||
49 | |||
50 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
51 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
52 | #define CALENDAR_QUIT BUTTON_OFF | 30 | #define CALENDAR_QUIT BUTTON_OFF |
53 | #define CALENDAR_SELECT BUTTON_SELECT | 31 | #define CALENDAR_SELECT BUTTON_SELECT |
54 | #define CALENDAR_NEXT_WEEK BUTTON_DOWN | 32 | #define CALENDAR_NEXT_WEEK BUTTON_DOWN |
diff --git a/apps/plugins/chessbox/chessbox_pgn.h b/apps/plugins/chessbox/chessbox_pgn.h index 9c7693305c..ab0adbb706 100644 --- a/apps/plugins/chessbox/chessbox_pgn.h +++ b/apps/plugins/chessbox/chessbox_pgn.h | |||
@@ -84,38 +84,6 @@ | |||
84 | #define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT) | 84 | #define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT) |
85 | #define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT) | 85 | #define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT) |
86 | 86 | ||
87 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
88 | #define CB_SELECT BUTTON_PLAY | ||
89 | #define CB_UP BUTTON_UP | ||
90 | #define CB_DOWN BUTTON_DOWN | ||
91 | #define CB_LEFT BUTTON_LEFT | ||
92 | #define CB_RIGHT BUTTON_RIGHT | ||
93 | #define CB_PLAY BUTTON_ON | ||
94 | #define CB_LEVEL BUTTON_F1 | ||
95 | #define CB_RESTART BUTTON_F3 | ||
96 | #define CB_MENU BUTTON_OFF | ||
97 | #define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT) | ||
98 | #define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT) | ||
99 | #define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT) | ||
100 | #define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT) | ||
101 | |||
102 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
103 | #define CB_SELECT_PRE BUTTON_MENU | ||
104 | #define CB_SELECT (BUTTON_MENU|BUTTON_REL) | ||
105 | #define CB_UP BUTTON_UP | ||
106 | #define CB_DOWN BUTTON_DOWN | ||
107 | #define CB_LEFT BUTTON_LEFT | ||
108 | #define CB_RIGHT BUTTON_RIGHT | ||
109 | #define CB_PLAY_PRE BUTTON_MENU | ||
110 | #define CB_PLAY (BUTTON_MENU|BUTTON_REPEAT) | ||
111 | #define CB_LEVEL (BUTTON_MENU|BUTTON_OFF) | ||
112 | #define CB_RESTART (BUTTON_MENU|BUTTON_LEFT) | ||
113 | #define CB_MENU BUTTON_OFF | ||
114 | #define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT) | ||
115 | #define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT) | ||
116 | #define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT) | ||
117 | #define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT) | ||
118 | |||
119 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) | 87 | #elif (CONFIG_KEYPAD == GIGABEAT_PAD) |
120 | #define CB_SELECT BUTTON_SELECT | 88 | #define CB_SELECT BUTTON_SELECT |
121 | #define CB_UP BUTTON_UP | 89 | #define CB_UP BUTTON_UP |
diff --git a/apps/plugins/chessclock.c b/apps/plugins/chessclock.c index ba8fea4935..6b2d436679 100644 --- a/apps/plugins/chessclock.c +++ b/apps/plugins/chessclock.c | |||
@@ -24,40 +24,7 @@ | |||
24 | 24 | ||
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
28 | #define CHC_QUIT BUTTON_OFF | ||
29 | #define CHC_STARTSTOP BUTTON_PLAY | ||
30 | #define CHC_RESET BUTTON_LEFT | ||
31 | #define CHC_MENU BUTTON_F1 | ||
32 | #define CHC_SETTINGS_INC BUTTON_UP | ||
33 | #define CHC_SETTINGS_DEC BUTTON_DOWN | ||
34 | #define CHC_SETTINGS_OK BUTTON_PLAY | ||
35 | #define CHC_SETTINGS_OK2 BUTTON_LEFT | ||
36 | #define CHC_SETTINGS_CANCEL BUTTON_OFF | ||
37 | |||
38 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
39 | #define CHC_QUIT BUTTON_OFF | ||
40 | #define CHC_STARTSTOP BUTTON_RIGHT | ||
41 | #define CHC_RESET BUTTON_LEFT | ||
42 | #define CHC_MENU BUTTON_MENU | ||
43 | #define CHC_SETTINGS_INC BUTTON_UP | ||
44 | #define CHC_SETTINGS_DEC BUTTON_DOWN | ||
45 | #define CHC_SETTINGS_OK BUTTON_RIGHT | ||
46 | #define CHC_SETTINGS_OK2 BUTTON_LEFT | ||
47 | #define CHC_SETTINGS_CANCEL BUTTON_MENU | ||
48 | |||
49 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
50 | #define CHC_QUIT BUTTON_ON | ||
51 | #define CHC_STARTSTOP BUTTON_PLAY | ||
52 | #define CHC_RESET BUTTON_STOP | ||
53 | #define CHC_MENU BUTTON_MENU | ||
54 | #define CHC_SETTINGS_INC BUTTON_RIGHT | ||
55 | #define CHC_SETTINGS_DEC BUTTON_LEFT | ||
56 | #define CHC_SETTINGS_OK BUTTON_PLAY | ||
57 | #define CHC_SETTINGS_CANCEL BUTTON_STOP | ||
58 | #define CHC_SETTINGS_CANCEL2 BUTTON_MENU | ||
59 | |||
60 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
61 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 28 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
62 | #define CHC_QUIT BUTTON_SELECT | 29 | #define CHC_QUIT BUTTON_SELECT |
63 | #define CHC_STARTSTOP BUTTON_ON | 30 | #define CHC_STARTSTOP BUTTON_ON |
diff --git a/apps/plugins/chip8.c b/apps/plugins/chip8.c index 8645893820..f861d19caa 100644 --- a/apps/plugins/chip8.c +++ b/apps/plugins/chip8.c | |||
@@ -944,28 +944,8 @@ STATIC void chip8 (void) | |||
944 | #endif | 944 | #endif |
945 | 945 | ||
946 | /* variable button definitions */ | 946 | /* variable button definitions */ |
947 | #if CONFIG_KEYPAD == RECORDER_PAD /* only 9 out of 16 chip8 buttons */ | 947 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
948 | #define CHIP8_OFF BUTTON_OFF | 948 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
949 | #define CHIP8_KEY1 BUTTON_F1 | ||
950 | #define CHIP8_KEY2 BUTTON_UP | ||
951 | #define CHIP8_KEY3 BUTTON_F3 | ||
952 | #define CHIP8_KEY4 BUTTON_LEFT | ||
953 | #define CHIP8_KEY5 BUTTON_PLAY | ||
954 | #define CHIP8_KEY6 BUTTON_RIGHT | ||
955 | #define CHIP8_KEY7 BUTTON_F2 | ||
956 | #define CHIP8_KEY8 BUTTON_DOWN | ||
957 | #define CHIP8_KEY9 BUTTON_ON | ||
958 | |||
959 | #elif CONFIG_KEYPAD == ONDIO_PAD /* even more limited */ | ||
960 | #define CHIP8_OFF BUTTON_OFF | ||
961 | #define CHIP8_KEY2 BUTTON_UP | ||
962 | #define CHIP8_KEY4 BUTTON_LEFT | ||
963 | #define CHIP8_KEY5 BUTTON_MENU | ||
964 | #define CHIP8_KEY6 BUTTON_RIGHT | ||
965 | #define CHIP8_KEY8 BUTTON_DOWN | ||
966 | |||
967 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
968 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
969 | #define CHIP8_OFF BUTTON_OFF | 949 | #define CHIP8_OFF BUTTON_OFF |
970 | #define CHIP8_KEY2 BUTTON_UP | 950 | #define CHIP8_KEY2 BUTTON_UP |
971 | #define CHIP8_KEY4 BUTTON_LEFT | 951 | #define CHIP8_KEY4 BUTTON_LEFT |
diff --git a/apps/plugins/chopper.c b/apps/plugins/chopper.c index a206192974..f42801f10f 100644 --- a/apps/plugins/chopper.c +++ b/apps/plugins/chopper.c | |||
@@ -86,17 +86,6 @@ Still To do: | |||
86 | #define ACTION BUTTON_SELECT | 86 | #define ACTION BUTTON_SELECT |
87 | #define ACTIONTEXT "SELECT" | 87 | #define ACTIONTEXT "SELECT" |
88 | 88 | ||
89 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
90 | #define QUIT BUTTON_OFF | ||
91 | #define ACTION BUTTON_PLAY | ||
92 | #define ACTIONTEXT "PLAY" | ||
93 | |||
94 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
95 | #define QUIT BUTTON_OFF | ||
96 | #define ACTION BUTTON_UP | ||
97 | #define ACTION2 BUTTON_MENU | ||
98 | #define ACTIONTEXT "UP" | ||
99 | |||
100 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD \ | 89 | #elif CONFIG_KEYPAD == GIGABEAT_S_PAD \ |
101 | || CONFIG_KEYPAD == SAMSUNG_YPR0_PAD | 90 | || CONFIG_KEYPAD == SAMSUNG_YPR0_PAD |
102 | #define QUIT BUTTON_BACK | 91 | #define QUIT BUTTON_BACK |
diff --git a/apps/plugins/credits.c b/apps/plugins/credits.c index d766d45cfd..6e993b5468 100644 --- a/apps/plugins/credits.c +++ b/apps/plugins/credits.c | |||
@@ -132,11 +132,8 @@ static int update_rowpos(int action, int cur_pos, int rows_per_screen, int tot_r | |||
132 | static void roll_credits(void) | 132 | static void roll_credits(void) |
133 | { | 133 | { |
134 | /* to do: use target defines iso keypads to set animation timings */ | 134 | /* to do: use target defines iso keypads to set animation timings */ |
135 | #if (CONFIG_KEYPAD == RECORDER_PAD) | 135 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
136 | #define PAUSE_TIME 1.2 | 136 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
137 | #define ANIM_SPEED 35 | ||
138 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | ||
139 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | ||
140 | #define PAUSE_TIME 0 | 137 | #define PAUSE_TIME 0 |
141 | #define ANIM_SPEED 100 | 138 | #define ANIM_SPEED 100 |
142 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | 139 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
diff --git a/apps/plugins/cube.c b/apps/plugins/cube.c index 0f51e44e5c..4cd314a035 100644 --- a/apps/plugins/cube.c +++ b/apps/plugins/cube.c | |||
@@ -37,39 +37,7 @@ | |||
37 | #define DISP_TIME 30 | 37 | #define DISP_TIME 30 |
38 | 38 | ||
39 | /* variable button definitions */ | 39 | /* variable button definitions */ |
40 | #if CONFIG_KEYPAD == RECORDER_PAD | 40 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
41 | #define CUBE_QUIT BUTTON_OFF | ||
42 | #define CUBE_NEXT BUTTON_RIGHT | ||
43 | #define CUBE_PREV BUTTON_LEFT | ||
44 | #define CUBE_INC BUTTON_UP | ||
45 | #define CUBE_DEC BUTTON_DOWN | ||
46 | #define CUBE_MODE BUTTON_F1 | ||
47 | #define CUBE_PAUSE BUTTON_PLAY | ||
48 | #define CUBE_HIGHSPEED BUTTON_ON | ||
49 | |||
50 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
51 | #define CUBE_QUIT BUTTON_STOP | ||
52 | #define CUBE_INC BUTTON_RIGHT | ||
53 | #define CUBE_DEC BUTTON_LEFT | ||
54 | #define CUBE_NEXT (BUTTON_ON | BUTTON_RIGHT) | ||
55 | #define CUBE_PREV (BUTTON_ON | BUTTON_LEFT) | ||
56 | #define CUBE_MODE BUTTON_MENU | ||
57 | #define CUBE_PAUSE BUTTON_PLAY | ||
58 | #define CUBE_HIGHSPEED_PRE BUTTON_ON | ||
59 | #define CUBE_HIGHSPEED (BUTTON_ON | BUTTON_REL) | ||
60 | |||
61 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
62 | #define CUBE_QUIT BUTTON_OFF | ||
63 | #define CUBE_NEXT BUTTON_RIGHT | ||
64 | #define CUBE_PREV BUTTON_LEFT | ||
65 | #define CUBE_INC BUTTON_UP | ||
66 | #define CUBE_DEC BUTTON_DOWN | ||
67 | #define CUBE_MODE_PRE BUTTON_MENU | ||
68 | #define CUBE_MODE (BUTTON_MENU | BUTTON_REL) | ||
69 | #define CUBE_PAUSE (BUTTON_MENU | BUTTON_LEFT) | ||
70 | #define CUBE_HIGHSPEED (BUTTON_MENU | BUTTON_RIGHT) | ||
71 | |||
72 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
73 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 41 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
74 | #define CUBE_QUIT BUTTON_OFF | 42 | #define CUBE_QUIT BUTTON_OFF |
75 | #define CUBE_NEXT BUTTON_RIGHT | 43 | #define CUBE_NEXT BUTTON_RIGHT |
diff --git a/apps/plugins/euroconverter.c b/apps/plugins/euroconverter.c deleted file mode 100644 index d7aa61f806..0000000000 --- a/apps/plugins/euroconverter.c +++ /dev/null | |||
@@ -1,599 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2003 Pierre Delore | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #include "plugin.h" | ||
22 | #include "lib/configfile.h" | ||
23 | #include "lib/pluginlib_exit.h" | ||
24 | |||
25 | /* Euro converter for the player */ | ||
26 | /* | ||
27 | Use: | ||
28 | + : Digit +1 | ||
29 | - : Digit -1 | ||
30 | PLAY : Next digit | ||
31 | STOP : Prev digit | ||
32 | ON : RESET | ||
33 | ON+PLAY : Swap Euro<>Home | ||
34 | MENU : Display the Menu | ||
35 | Currency -> Allows to choose the currency | ||
36 | Exit-> Exit the plugin | ||
37 | |||
38 | Notes: | ||
39 | I don't use float. | ||
40 | I use signed long long (64 bits). | ||
41 | A value have 5 digits after the . (123.45 = 12345000) | ||
42 | |||
43 | To do: | ||
44 | - The Irish currency needs 6 digits after the . to have sufficient precision on big number | ||
45 | */ | ||
46 | |||
47 | |||
48 | |||
49 | /* Name and path of the config file*/ | ||
50 | static const char cfg_filename[] = "euroconverter.cfg"; | ||
51 | #define CFGFILE_VERSION 0 /* Current config file version */ | ||
52 | #define CFGFILE_MINVERSION 0 /* Minimum config file version to accept */ | ||
53 | |||
54 | /* typedef for simplifying usage of long long type */ | ||
55 | typedef long long int longlong_t; | ||
56 | |||
57 | /*Pattern for the converter*/ | ||
58 | static unsigned char pattern_euro[]={0x07, 0x08, 0x1E, 0x10, 0x1E, 0x08, 0x07}; /* € */ | ||
59 | static unsigned char pattern_home[]={0x04, 0x0A, 0x11, 0x1F, 0x11, 0x11, 0x1F}; /* Home icon*/ | ||
60 | |||
61 | /* 1 euro = ... (remenber 5 digits after the .)*/ | ||
62 | static int currency[12]={ | ||
63 | 655957, /*FRF France*/ | ||
64 | 195583, /*DEM Germany*/ | ||
65 | 1376030, /*ATS Austria*/ | ||
66 | 4033990, /*BEF Belgium*/ | ||
67 | 16638600, /*ESP Spain*/ | ||
68 | 594573, /*FIM Finland*/ | ||
69 | 78756, /*IEP Ireland*/ | ||
70 | 193627000, /*ITL Italy*/ | ||
71 | 4033990, /*LUF Luxemburg*/ | ||
72 | 220371, /*NLG Netherlands*/ | ||
73 | 20048200, /*PTE Portugal*/ | ||
74 | 34075100, /*GRD Greece*/ | ||
75 | }; | ||
76 | |||
77 | /* Number of digit of the currency (for the display) */ | ||
78 | static int nb_digit[12]={ | ||
79 | 2, /*FRF France*/ | ||
80 | 2, /*DEM Germany*/ | ||
81 | 2, /*ATS Austria*/ | ||
82 | 2, /*BEF Belgium*/ | ||
83 | 0, /*ESP Spain*/ | ||
84 | 2, /*FIM Finland*/ | ||
85 | 2, /*IEP Ireland*/ | ||
86 | 0, /*ITL Italy*/ | ||
87 | 2, /*LUF Luxemburg*/ | ||
88 | 2, /*NLG Netherlands*/ | ||
89 | 0, /*PTE Portugal*/ | ||
90 | 0 /*GRD Greece*/ | ||
91 | }; | ||
92 | |||
93 | /* max euro to have home currency */ | ||
94 | static longlong_t max_euro[12]={ | ||
95 | 99999999000LL, /*FRF France 999 999.99 */ | ||
96 | 99999999000LL, /*DEM Germany 999 999.99 */ | ||
97 | 99999999000LL, /*ATS Austria 999 999.99 */ | ||
98 | 99999999000LL, /*BEF Belgium 999 999.99 */ | ||
99 | 99999999000LL, /*ESP Spain 99 999 999 */ | ||
100 | 99999999000LL, /*FIM Finland 999 999.99 */ | ||
101 | 99999999000LL, /*IEP Ireland 999 999.99 */ | ||
102 | 51645690000LL, /*ITL Italy 999 999 999 */ | ||
103 | 99999999000LL, /*LUF Luxemburg 999 999.99 */ | ||
104 | 99999999000LL, /*NLG Netherlands 999 999.99 */ | ||
105 | 99999999000LL, /*PTE Portugal 99 999 999 */ | ||
106 | 29347028000LL /*GRD Greece 99 999 999 */ | ||
107 | }; | ||
108 | |||
109 | /* max home to have euro currency */ | ||
110 | /* 92233720300000 Limitation due to the max capacity of long long (2^63)*/ | ||
111 | static longlong_t max_curr[12]={ | ||
112 | 99999999000LL, /*FRF France 152449.02 */ | ||
113 | 99999999000LL, /*DEM Germany 511291.88 */ | ||
114 | 99999999000LL, /*ATS Austria 72672.83 */ | ||
115 | 99999999000LL, /*BEF Belgium 24789.35 */ | ||
116 | 92233720300000LL,/*ESP Spain 5543358.23 */ | ||
117 | 99999999000LL, /*FIM Finland 168187.92 */ | ||
118 | 9999999900LL, /*IEP Ireland 1269744.51 exact value=1269738.07 */ | ||
119 | 92233720300000LL,/*ITL Italy 476347.41 */ | ||
120 | 99999999000LL, /*LUF Luxemburg 24789.35 */ | ||
121 | 99999999000LL, /*NLG Netherlands 453780.21 */ | ||
122 | 92233720300000LL,/*PTE Portugal 4600598.57 */ | ||
123 | 92233720300000LL /*GRD Greece 2706777.69 */ | ||
124 | }; | ||
125 | |||
126 | static unsigned char *abbrev_str[12] = { | ||
127 | "...FRF...", /*France*/ | ||
128 | "...DEM...", /*Germany*/ | ||
129 | "...ATS...", /*Austria*/ | ||
130 | "...BEF...", /*Belgium*/ | ||
131 | "...ESP...", /*Spain*/ | ||
132 | "...FIM...", /*Finland*/ | ||
133 | "...IEP...", /*Ireland*/ | ||
134 | "...ITL...", /*Italy*/ | ||
135 | "...LUF...", /*Luxemburg*/ | ||
136 | "...NLG...", /*Netherlands*/ | ||
137 | "...PTE...", /*Portugal*/ | ||
138 | "...GRD..." /*Greece*/ | ||
139 | }; | ||
140 | |||
141 | |||
142 | static unsigned long heuro,hhome; /*Handles for the new patterns*/ | ||
143 | |||
144 | static char *currency_str[12] = { | ||
145 | "France", | ||
146 | "Germany", | ||
147 | "Austria", | ||
148 | "Belgium", | ||
149 | "Spain", | ||
150 | "Finland", | ||
151 | "Ireland", | ||
152 | "Italy", | ||
153 | "Luxemburg", | ||
154 | "Netherlands", | ||
155 | "Portugal", | ||
156 | "Greece" | ||
157 | }; | ||
158 | |||
159 | |||
160 | static int country; /*Country selected*/ | ||
161 | static int cur_pos; /*Cursor position*/ | ||
162 | static longlong_t inc; | ||
163 | |||
164 | /* Persistent settings */ | ||
165 | static struct configdata config[] = { | ||
166 | { TYPE_ENUM, 0, 12, { .int_p = &country }, "country", currency_str } | ||
167 | }; | ||
168 | |||
169 | |||
170 | /* 64bits*64 bits with 5 digits after the . */ | ||
171 | static longlong_t mymul(longlong_t a, longlong_t b) | ||
172 | { | ||
173 | return((a*b)/100000LL); | ||
174 | } | ||
175 | |||
176 | |||
177 | /* 64bits/64 bits with 5 digits after the . */ | ||
178 | static longlong_t mydiv(longlong_t a, longlong_t b) | ||
179 | { | ||
180 | return((a*100000LL)/b); | ||
181 | } | ||
182 | |||
183 | |||
184 | /* 123.45=12345000 split => i=123 f=45000*/ | ||
185 | static void split(longlong_t v, longlong_t* i, longlong_t* f) | ||
186 | { | ||
187 | longlong_t t; | ||
188 | |||
189 | t=v/100000LL; | ||
190 | (*i)=t; | ||
191 | (*f)=(v-(t*100000LL)); | ||
192 | } | ||
193 | |||
194 | |||
195 | /* result=10^n */ | ||
196 | static longlong_t pow10(int n) | ||
197 | { | ||
198 | int i; | ||
199 | longlong_t r; | ||
200 | |||
201 | r=1; | ||
202 | for (i=0;i<n;i++) | ||
203 | r=r*10LL; | ||
204 | return(r); | ||
205 | } | ||
206 | |||
207 | |||
208 | /* round the i.f at n digit after the . */ | ||
209 | static void round(longlong_t* i, longlong_t* f, int n) | ||
210 | { | ||
211 | |||
212 | longlong_t m; | ||
213 | int add=0; | ||
214 | |||
215 | m=(int)pow10(5-n-1); | ||
216 | if (((*f)/m)%10>=5) | ||
217 | add=1; | ||
218 | if (n>0) | ||
219 | { | ||
220 | (*f)=((*f)/(int)pow10(5-n))+add; | ||
221 | if ((*f)==100LL) | ||
222 | { | ||
223 | (*i)+=1; | ||
224 | (*f)=0; | ||
225 | } | ||
226 | } | ||
227 | else | ||
228 | { | ||
229 | (*i)+=add; | ||
230 | (*f)=0; | ||
231 | } | ||
232 | } | ||
233 | |||
234 | |||
235 | /* Display the imput and the result | ||
236 | pos: false : first line | ||
237 | : true : second line | ||
238 | */ | ||
239 | static void display(longlong_t euro, longlong_t home, bool pos) | ||
240 | { | ||
241 | longlong_t i,f; | ||
242 | unsigned char str[20]; | ||
243 | unsigned char s1[20]; | ||
244 | unsigned char s2[20]; | ||
245 | |||
246 | if (pos) | ||
247 | { /*Edit the second line*/ | ||
248 | rb->strcpy(s1," %6d.%02d"); | ||
249 | if (nb_digit[country]==2) | ||
250 | rb->strcpy(s2,"\xee\x84\x90%06d.%02d"); | ||
251 | else | ||
252 | rb->strcpy(s2,"\xee\x84\x90%09d"); | ||
253 | } | ||
254 | else | ||
255 | { | ||
256 | rb->strcpy(s1,"\xee\x84\x90%06d.%02d"); | ||
257 | if (nb_digit[country]==2) | ||
258 | rb->strcpy(s2," %6d.%02d"); | ||
259 | else | ||
260 | rb->strcpy(s2," %9d"); | ||
261 | } | ||
262 | |||
263 | rb->lcd_remove_cursor(); | ||
264 | /*First line*/ | ||
265 | rb->lcd_putc(0,0,heuro); | ||
266 | split(euro,&i,&f); | ||
267 | if (pos) | ||
268 | round(&i,&f,2); | ||
269 | rb->snprintf(str,sizeof(str),s1,(int)i,(int)f); | ||
270 | |||
271 | if (!pos) | ||
272 | { | ||
273 | rb->lcd_puts(1,0,str); | ||
274 | rb->lcd_put_cursor(10-cur_pos,0,0x5F); | ||
275 | } | ||
276 | else | ||
277 | rb->lcd_puts_scroll(1,0,str); | ||
278 | |||
279 | /*Second line*/ | ||
280 | rb->lcd_putc(0,1,hhome); | ||
281 | split(home,&i,&f); | ||
282 | if (!pos) | ||
283 | round(&i,&f,nb_digit[country]); | ||
284 | rb->snprintf(str,sizeof(str),s2,(int)i,(int)f); | ||
285 | if (pos) | ||
286 | { | ||
287 | rb->lcd_puts(1,1,str); | ||
288 | rb->lcd_put_cursor(10-cur_pos,1,0x5F); | ||
289 | } | ||
290 | else | ||
291 | rb->lcd_puts_scroll(1,1,str); | ||
292 | |||
293 | rb->lcd_update(); | ||
294 | } | ||
295 | |||
296 | |||
297 | /* Show country Abbreviation */ | ||
298 | static void show_abbrev(void) | ||
299 | { | ||
300 | rb->splash(HZ*3/4,abbrev_str[country]); | ||
301 | } | ||
302 | |||
303 | |||
304 | /* Save the config to disk */ | ||
305 | static void save_config(void) | ||
306 | { | ||
307 | configfile_save(cfg_filename, config, 1, CFGFILE_VERSION); | ||
308 | } | ||
309 | |||
310 | |||
311 | /* Load the config from disk */ | ||
312 | static void load_config(void) | ||
313 | { | ||
314 | configfile_load(cfg_filename, config, 1, CFGFILE_MINVERSION); | ||
315 | } | ||
316 | |||
317 | |||
318 | /*Currency choice*/ | ||
319 | static void currency_menu(void) | ||
320 | { | ||
321 | int c=country; | ||
322 | |||
323 | rb->lcd_clear_display(); | ||
324 | while (true) | ||
325 | { | ||
326 | rb->lcd_puts(0,0,"Currency:"); | ||
327 | rb->lcd_puts(0,1,currency_str[c]); | ||
328 | rb->lcd_update(); | ||
329 | switch (rb->button_get(true)) | ||
330 | { | ||
331 | case BUTTON_RIGHT|BUTTON_REL: | ||
332 | c++; | ||
333 | if (c>11) | ||
334 | c=0; | ||
335 | break; | ||
336 | case BUTTON_LEFT|BUTTON_REL: | ||
337 | c--; | ||
338 | if (c<0) | ||
339 | c=11; | ||
340 | break; | ||
341 | case BUTTON_PLAY|BUTTON_REL: | ||
342 | country=c; | ||
343 | save_config(); | ||
344 | return; | ||
345 | break; | ||
346 | case BUTTON_STOP|BUTTON_REL: | ||
347 | return; | ||
348 | } | ||
349 | } | ||
350 | } | ||
351 | |||
352 | |||
353 | /* Display the choice menu. */ | ||
354 | static int euro_menu(void) | ||
355 | { | ||
356 | int c=0; | ||
357 | |||
358 | |||
359 | while (true) | ||
360 | { | ||
361 | rb->lcd_clear_display(); | ||
362 | rb->lcd_puts(0,0," Currency"); | ||
363 | rb->lcd_puts(0,1," Exit"); | ||
364 | rb->lcd_putc(0,c,0xe110); | ||
365 | rb->lcd_update(); | ||
366 | |||
367 | switch (rb->button_get(true)) | ||
368 | { | ||
369 | case BUTTON_RIGHT|BUTTON_REL: | ||
370 | c=1; | ||
371 | break; | ||
372 | case BUTTON_LEFT|BUTTON_REL: | ||
373 | c=0; | ||
374 | break; | ||
375 | case BUTTON_PLAY|BUTTON_REL: | ||
376 | if (c==0) | ||
377 | currency_menu(); | ||
378 | else | ||
379 | return 1; | ||
380 | break; | ||
381 | case BUTTON_STOP|BUTTON_REL: | ||
382 | return 0; | ||
383 | } | ||
384 | } | ||
385 | } | ||
386 | |||
387 | |||
388 | /* Call when the program end */ | ||
389 | static void euro_exit(void) | ||
390 | { | ||
391 | //Restore the old pattern (i don't find another way to do this. An idea?) | ||
392 | rb->lcd_unlock_pattern(heuro); | ||
393 | rb->lcd_unlock_pattern(hhome); | ||
394 | |||
395 | //Clear the screen | ||
396 | rb->lcd_clear_display(); | ||
397 | rb->lcd_update(); | ||
398 | } | ||
399 | |||
400 | |||
401 | /* this is the plugin entry point */ | ||
402 | enum plugin_status plugin_start(const void* parameter) | ||
403 | { | ||
404 | bool end, pos; | ||
405 | longlong_t e,h,old_e,old_h; | ||
406 | int button; | ||
407 | |||
408 | /* if you don't use the parameter, you can do like | ||
409 | this to avoid the compiler warning about it */ | ||
410 | (void)parameter; | ||
411 | atexit(euro_exit); | ||
412 | |||
413 | /*Get the pattern handle*/ | ||
414 | heuro=rb->lcd_get_locked_pattern(); | ||
415 | hhome=rb->lcd_get_locked_pattern(); | ||
416 | rb->lcd_define_pattern(heuro, pattern_euro); | ||
417 | rb->lcd_define_pattern(hhome, pattern_home); | ||
418 | |||
419 | h=0; | ||
420 | e=0; | ||
421 | end=false; | ||
422 | pos=false; | ||
423 | country=0; | ||
424 | cur_pos=3; | ||
425 | inc=100000; | ||
426 | |||
427 | load_config(); | ||
428 | |||
429 | /*Empty the event queue*/ | ||
430 | rb->button_clear_queue(); | ||
431 | |||
432 | display(e,h,false); | ||
433 | show_abbrev(); | ||
434 | display(e,h,false); | ||
435 | |||
436 | /*Main loop*/ | ||
437 | while(end!=true) | ||
438 | { | ||
439 | button = rb->button_get(true); | ||
440 | switch (button) | ||
441 | { | ||
442 | case BUTTON_MENU|BUTTON_REL: | ||
443 | switch (euro_menu()) | ||
444 | { | ||
445 | case 1: | ||
446 | end=true; | ||
447 | break; | ||
448 | } | ||
449 | if (!pos) | ||
450 | { | ||
451 | if (e>max_euro[country]) | ||
452 | e=0; | ||
453 | cur_pos=3; | ||
454 | } | ||
455 | else | ||
456 | { | ||
457 | if (h>max_curr[country]) | ||
458 | h=0; | ||
459 | if (nb_digit[country]==2) | ||
460 | cur_pos=3; | ||
461 | else | ||
462 | cur_pos=0; | ||
463 | } | ||
464 | |||
465 | display(e,h,pos); | ||
466 | break; | ||
467 | |||
468 | case BUTTON_ON | BUTTON_PLAY: | ||
469 | pos=!pos; | ||
470 | |||
471 | case BUTTON_ON | BUTTON_REL: | ||
472 | e=0; | ||
473 | h=0; | ||
474 | if (!pos) | ||
475 | { | ||
476 | cur_pos=3; | ||
477 | inc=100000; | ||
478 | } | ||
479 | else | ||
480 | { | ||
481 | inc=100000; | ||
482 | if (nb_digit[country]==2) | ||
483 | cur_pos=3; | ||
484 | else | ||
485 | cur_pos=0; | ||
486 | } | ||
487 | show_abbrev(); | ||
488 | break; | ||
489 | |||
490 | case BUTTON_STOP|BUTTON_REL: | ||
491 | cur_pos--; | ||
492 | if (!pos) | ||
493 | { | ||
494 | if (cur_pos<0) | ||
495 | cur_pos=0; | ||
496 | if (cur_pos==2) | ||
497 | cur_pos=1; | ||
498 | if (cur_pos>2) | ||
499 | inc=pow10(3+cur_pos-1); | ||
500 | else | ||
501 | inc=pow10(3+cur_pos); | ||
502 | } | ||
503 | else | ||
504 | { | ||
505 | if (cur_pos<0) | ||
506 | cur_pos=0; | ||
507 | if (nb_digit[country]==2) | ||
508 | { | ||
509 | if (cur_pos==2) | ||
510 | cur_pos=1; | ||
511 | if (cur_pos>2) | ||
512 | inc=pow10(3+cur_pos-1); | ||
513 | else | ||
514 | inc=pow10(3+cur_pos); | ||
515 | } | ||
516 | else | ||
517 | inc=pow10(5+cur_pos); | ||
518 | |||
519 | } | ||
520 | break; | ||
521 | |||
522 | case BUTTON_PLAY|BUTTON_REL: | ||
523 | cur_pos++; | ||
524 | if (!pos) | ||
525 | { | ||
526 | if (cur_pos>8) | ||
527 | cur_pos=8; | ||
528 | if (cur_pos==2) | ||
529 | cur_pos=3; | ||
530 | if (cur_pos>2) | ||
531 | inc=pow10(3+cur_pos-1); | ||
532 | else | ||
533 | inc=pow10(3+cur_pos); | ||
534 | } | ||
535 | else | ||
536 | { | ||
537 | if (cur_pos>8) | ||
538 | cur_pos=8; | ||
539 | if (nb_digit[country]==2) | ||
540 | { | ||
541 | if (cur_pos==2) | ||
542 | cur_pos=3; | ||
543 | if (cur_pos>2) | ||
544 | inc=pow10(3+cur_pos-1); | ||
545 | else | ||
546 | inc=pow10(3+cur_pos); | ||
547 | } | ||
548 | else | ||
549 | inc=pow10(5+cur_pos); | ||
550 | } | ||
551 | break; | ||
552 | |||
553 | case BUTTON_LEFT|BUTTON_REL: | ||
554 | case BUTTON_LEFT|BUTTON_REPEAT: | ||
555 | if (!pos) | ||
556 | { | ||
557 | e-=inc; | ||
558 | if (e<0) | ||
559 | e=0; | ||
560 | } | ||
561 | else | ||
562 | { | ||
563 | h-=inc; | ||
564 | if (h<0) | ||
565 | h=0; | ||
566 | } | ||
567 | break; | ||
568 | |||
569 | case BUTTON_RIGHT|BUTTON_REL: | ||
570 | case BUTTON_RIGHT|BUTTON_REPEAT: | ||
571 | old_e=e; | ||
572 | old_h=h; | ||
573 | if (!pos) | ||
574 | { | ||
575 | e+=inc; | ||
576 | if (e>max_euro[country]) | ||
577 | e=old_e; | ||
578 | } | ||
579 | else | ||
580 | { | ||
581 | h+=inc; | ||
582 | if (h>max_curr[country]) | ||
583 | h=old_h; | ||
584 | } | ||
585 | break; | ||
586 | |||
587 | default: | ||
588 | exit_on_usb(button); | ||
589 | break; | ||
590 | } | ||
591 | /*Display*/ | ||
592 | if (!pos) /*Euro>home*/ | ||
593 | h=mymul(e,currency[country]); | ||
594 | else /*Home>euro*/ | ||
595 | e=mydiv(h,currency[country]); | ||
596 | display(e,h,pos); | ||
597 | } | ||
598 | return PLUGIN_OK; | ||
599 | } | ||
diff --git a/apps/plugins/firmware_flash.c b/apps/plugins/firmware_flash.c deleted file mode 100644 index 36b8873a8c..0000000000 --- a/apps/plugins/firmware_flash.c +++ /dev/null | |||
@@ -1,1033 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Plugin for reprogramming the whole Flash ROM chip with a new content. | ||
11 | * !!! DON'T MESS WITH THIS CODE UNLESS YOU'RE ABSOLUTELY SURE WHAT YOU DO !!! | ||
12 | * | ||
13 | * Copyright (C) 2003 Jörg Hohensohn [IDC]Dragon | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or | ||
16 | * modify it under the terms of the GNU General Public License | ||
17 | * as published by the Free Software Foundation; either version 2 | ||
18 | * of the License, or (at your option) any later version. | ||
19 | * | ||
20 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
21 | * KIND, either express or implied. | ||
22 | * | ||
23 | ****************************************************************************/ | ||
24 | #include "plugin.h" | ||
25 | |||
26 | /* define DUMMY if you only want to "play" with the UI, does no harm */ | ||
27 | /* #define DUMMY */ | ||
28 | |||
29 | #ifndef UINT8 | ||
30 | #define UINT8 unsigned char | ||
31 | #endif | ||
32 | |||
33 | #ifndef UINT16 | ||
34 | #define UINT16 unsigned short | ||
35 | #endif | ||
36 | |||
37 | #ifndef UINT32 | ||
38 | #define UINT32 unsigned long | ||
39 | #endif | ||
40 | |||
41 | /* platform IDs as I have used them in my firmware templates */ | ||
42 | #define ID_RECORDER 0 | ||
43 | #define ID_FM 1 | ||
44 | #define ID_PLAYER 2 | ||
45 | #define ID_REC_V2 3 | ||
46 | #define ID_ONDIO_FM 4 | ||
47 | #define ID_ONDIO_SP 5 | ||
48 | |||
49 | /* Here I have to check for ARCHOS_* defines in source code, which is | ||
50 | generally strongly discouraged. But here I'm not checking for a certain | ||
51 | feature, I'm checking for the model itself. */ | ||
52 | #if defined(ARCHOS_PLAYER) | ||
53 | #define FILE_TYPE "player" | ||
54 | #define KEEP VERSION_ADR /* keep the firmware version */ | ||
55 | #define PLATFORM_ID ID_PLAYER | ||
56 | #elif defined(ARCHOS_RECORDER) | ||
57 | #define FILE_TYPE "rec" | ||
58 | #define KEEP MASK_ADR /* keep the mask value */ | ||
59 | #define PLATFORM_ID ID_RECORDER | ||
60 | #elif defined(ARCHOS_RECORDERV2) | ||
61 | #define FILE_TYPE "v2" | ||
62 | #define KEEP MASK_ADR /* keep the mask value */ | ||
63 | #define PLATFORM_ID ID_REC_V2 | ||
64 | #elif defined(ARCHOS_FMRECORDER) | ||
65 | #define FILE_TYPE "fm" | ||
66 | #define KEEP MASK_ADR /* keep the mask value */ | ||
67 | #define PLATFORM_ID ID_FM | ||
68 | #elif defined(ARCHOS_ONDIOFM) | ||
69 | #define FILE_TYPE "ondiofm" | ||
70 | #define KEEP MASK_ADR /* keep the mask value */ | ||
71 | #define PLATFORM_ID ID_ONDIO_FM | ||
72 | #elif defined(ARCHOS_ONDIOSP) | ||
73 | #define FILE_TYPE "ondiosp" | ||
74 | #define KEEP MASK_ADR /* keep the mask value */ | ||
75 | #define PLATFORM_ID ID_ONDIO_SP | ||
76 | #else | ||
77 | #error this platform is not (yet) flashable | ||
78 | #endif | ||
79 | |||
80 | |||
81 | |||
82 | #if CONFIG_KEYPAD == ONDIO_PAD /* limited keypad */ | ||
83 | #define KEY1 BUTTON_LEFT | ||
84 | #define KEY2 BUTTON_UP | ||
85 | #define KEY3 BUTTON_RIGHT | ||
86 | #define KEYNAME1 "[Left]" | ||
87 | #define KEYNAME2 "[Up]" | ||
88 | #define KEYNAME3 "[Right]" | ||
89 | #else /* recorder keypad */ | ||
90 | #define KEY1 BUTTON_F1 | ||
91 | #define KEY2 BUTTON_F2 | ||
92 | #define KEY3 BUTTON_F3 | ||
93 | #define KEYNAME1 "[F1]" | ||
94 | #define KEYNAME2 "[F2]" | ||
95 | #define KEYNAME3 "[F3]" | ||
96 | #endif | ||
97 | |||
98 | /* result of the CheckFirmwareFile() function */ | ||
99 | typedef enum | ||
100 | { | ||
101 | eOK = 0, | ||
102 | eFileNotFound, /* errors from here on */ | ||
103 | eTooBig, | ||
104 | eTooSmall, | ||
105 | eReadErr, | ||
106 | eBadContent, | ||
107 | eCrcErr, | ||
108 | eBadPlatform, | ||
109 | } tCheckResult; | ||
110 | |||
111 | /* result of the CheckBootROM() function */ | ||
112 | typedef enum | ||
113 | { | ||
114 | eBootROM, /* the supported boot ROM(s) */ | ||
115 | eUnknown, /* unknown boot ROM */ | ||
116 | eROMless, /* flash mapped to zero */ | ||
117 | } tCheckROM; | ||
118 | |||
119 | typedef struct | ||
120 | { | ||
121 | UINT8 manufacturer; | ||
122 | UINT8 id; | ||
123 | int size; | ||
124 | char name[32]; | ||
125 | } tFlashInfo; | ||
126 | |||
127 | #define MASK_ADR 0xFC /* position of hardware mask value in Flash */ | ||
128 | #define VERSION_ADR 0xFE /* position of firmware version value in Flash */ | ||
129 | #define PLATFORM_ADR 0xFB /* position of my platform ID value in Flash */ | ||
130 | #define SEC_SIZE 4096 /* size of one flash sector */ | ||
131 | static UINT8* sector; /* better not place this on the stack... */ | ||
132 | static volatile UINT8* FB = (UINT8*)0x02000000; /* Flash base address */ | ||
133 | |||
134 | |||
135 | /***************** Flash Functions *****************/ | ||
136 | |||
137 | |||
138 | /* read the manufacturer and device ID */ | ||
139 | bool ReadID(volatile UINT8* pBase, UINT8* pManufacturerID, UINT8* pDeviceID) | ||
140 | { | ||
141 | UINT8 not_manu, not_id; /* read values before switching to ID mode */ | ||
142 | UINT8 manu, id; /* read values when in ID mode */ | ||
143 | |||
144 | pBase = (UINT8*)((UINT32)pBase & 0xFFF80000); /* down to 512k align */ | ||
145 | |||
146 | /* read the normal content */ | ||
147 | not_manu = pBase[0]; /* should be 'A' (0x41) and 'R' (0x52) */ | ||
148 | not_id = pBase[1]; /* from the "ARCH" marker */ | ||
149 | |||
150 | pBase[0x5555] = 0xAA; /* enter command mode */ | ||
151 | pBase[0x2AAA] = 0x55; | ||
152 | pBase[0x5555] = 0x90; /* ID command */ | ||
153 | rb->sleep(HZ/50); /* Atmel wants 20ms pause here */ | ||
154 | |||
155 | manu = pBase[0]; | ||
156 | id = pBase[1]; | ||
157 | |||
158 | pBase[0] = 0xF0; /* reset flash (back to normal read mode) */ | ||
159 | rb->sleep(HZ/50); /* Atmel wants 20ms pause here */ | ||
160 | |||
161 | /* I assume success if the obtained values are different from | ||
162 | the normal flash content. This is not perfectly bulletproof, they | ||
163 | could theoretically be the same by chance, causing us to fail. */ | ||
164 | if (not_manu != manu || not_id != id) /* a value has changed */ | ||
165 | { | ||
166 | *pManufacturerID = manu; /* return the results */ | ||
167 | *pDeviceID = id; | ||
168 | return true; /* success */ | ||
169 | } | ||
170 | return false; /* fail */ | ||
171 | } | ||
172 | |||
173 | |||
174 | /* erase the sector which contains the given address */ | ||
175 | bool EraseSector(volatile UINT8* pAddr) | ||
176 | { | ||
177 | #ifdef DUMMY | ||
178 | (void)pAddr; /* prevents warning */ | ||
179 | return true; | ||
180 | #else | ||
181 | volatile UINT8* pBase = (UINT8*)((UINT32)pAddr & 0xFFF80000); /* round down to 512k align */ | ||
182 | unsigned timeout = 43000; /* the timeout loop should be no less than 25ms */ | ||
183 | |||
184 | pBase[0x5555] = 0xAA; /* enter command mode */ | ||
185 | pBase[0x2AAA] = 0x55; | ||
186 | pBase[0x5555] = 0x80; /* erase command */ | ||
187 | pBase[0x5555] = 0xAA; /* enter command mode */ | ||
188 | pBase[0x2AAA] = 0x55; | ||
189 | *pAddr = 0x30; /* erase the sector */ | ||
190 | |||
191 | /* I counted 7 instructions for this loop -> min. 0.58 us per round */ | ||
192 | /* Plus memory waitstates it will be much more, gives margin */ | ||
193 | while (*pAddr != 0xFF && --timeout); /* poll for erased */ | ||
194 | |||
195 | return (timeout != 0); | ||
196 | #endif | ||
197 | } | ||
198 | |||
199 | |||
200 | /* address must be in an erased location */ | ||
201 | static inline bool ProgramByte(volatile UINT8* pAddr, UINT8 data) | ||
202 | { | ||
203 | #ifdef DUMMY | ||
204 | (void)pAddr; /* prevents warnings */ | ||
205 | (void)data; | ||
206 | return true; | ||
207 | #else | ||
208 | unsigned timeout = 35; /* the timeout loop should be no less than 20us */ | ||
209 | |||
210 | if (~*pAddr & data) /* just a safety feature, not really necessary */ | ||
211 | return false; /* can't set any bit from 0 to 1 */ | ||
212 | |||
213 | FB[0x5555] = 0xAA; /* enter command mode */ | ||
214 | FB[0x2AAA] = 0x55; | ||
215 | FB[0x5555] = 0xA0; /* byte program command */ | ||
216 | |||
217 | *pAddr = data; | ||
218 | |||
219 | /* I counted 7 instructions for this loop -> min. 0.58 us per round */ | ||
220 | /* Plus memory waitstates it will be much more, gives margin */ | ||
221 | while (*pAddr != data && --timeout); /* poll for programmed */ | ||
222 | |||
223 | return (timeout != 0); | ||
224 | #endif | ||
225 | } | ||
226 | |||
227 | |||
228 | /* this returns true if supported and fills the info struct */ | ||
229 | bool GetFlashInfo(tFlashInfo* pInfo) | ||
230 | { | ||
231 | rb->memset(pInfo, 0, sizeof(tFlashInfo)); | ||
232 | |||
233 | if (!ReadID(FB, &pInfo->manufacturer, &pInfo->id)) | ||
234 | return false; | ||
235 | |||
236 | if (pInfo->manufacturer == 0xBF) /* SST */ | ||
237 | { | ||
238 | if (pInfo->id == 0xD6) | ||
239 | { | ||
240 | pInfo->size = 256* 1024; /* 256k */ | ||
241 | rb->strcpy(pInfo->name, "SST39VF020"); | ||
242 | return true; | ||
243 | } | ||
244 | else if (pInfo->id == 0xD7) | ||
245 | { | ||
246 | pInfo->size = 512* 1024; /* 512k */ | ||
247 | rb->strcpy(pInfo->name, "SST39VF040"); | ||
248 | return true; | ||
249 | } | ||
250 | else | ||
251 | return false; | ||
252 | } | ||
253 | return false; | ||
254 | } | ||
255 | |||
256 | /*********** Firmware File Functions + helpers ************/ | ||
257 | |||
258 | /* test if the version number is consistent with the platform */ | ||
259 | bool CheckPlatform(int platform_id, UINT16 version) | ||
260 | { | ||
261 | if (version == 200) | ||
262 | { /* for my very first firmwares, I foolishly changed it to 200 */ | ||
263 | return (platform_id == ID_RECORDER || platform_id == ID_FM); | ||
264 | } | ||
265 | else if (version == 123) | ||
266 | { /* it can be a FM or V2 recorder */ | ||
267 | return (platform_id == ID_FM || platform_id == ID_REC_V2); | ||
268 | } | ||
269 | else if (version == 132) | ||
270 | { /* newer Ondio, and seen on a V2 recorder */ | ||
271 | return (platform_id == ID_ONDIO_SP || platform_id == ID_ONDIO_FM | ||
272 | || platform_id == ID_REC_V2); | ||
273 | } | ||
274 | else if (version == 104) | ||
275 | { /* classic Ondio128 */ | ||
276 | return (platform_id == ID_ONDIO_FM); | ||
277 | } | ||
278 | else if (version >= 115 && version <= 129) | ||
279 | { /* the range of Recorders seen so far */ | ||
280 | return (platform_id == ID_RECORDER); | ||
281 | } | ||
282 | else if (version == 0 || (version >= 300 && version <= 508)) | ||
283 | { /* for very old players, I've seen zero */ | ||
284 | return (platform_id == ID_PLAYER); | ||
285 | } | ||
286 | |||
287 | return false; /* unknown */ | ||
288 | } | ||
289 | |||
290 | |||
291 | tCheckResult CheckFirmwareFile(char* filename, int chipsize, bool is_romless) | ||
292 | { | ||
293 | int i; | ||
294 | int fd; | ||
295 | int fileleft; /* size info, how many left for reading */ | ||
296 | int fileread = 0; /* total size as read from the file */ | ||
297 | int read_now; /* how many to read for this sector */ | ||
298 | int got_now; /* how many gotten for this sector */ | ||
299 | unsigned crc32 = 0xFFFFFFFF; /* CCITT init value */ | ||
300 | unsigned file_crc; /* CRC value read from file */ | ||
301 | bool has_crc; | ||
302 | |||
303 | fd = rb->open(filename, O_RDONLY); | ||
304 | if (fd < 0) | ||
305 | return eFileNotFound; | ||
306 | |||
307 | fileleft = rb->filesize(fd); | ||
308 | if (fileleft > chipsize) | ||
309 | { | ||
310 | rb->close(fd); | ||
311 | return eTooBig; | ||
312 | } | ||
313 | else if (fileleft < 20000) /* give it some reasonable lower limit */ | ||
314 | { | ||
315 | rb->close(fd); | ||
316 | return eTooSmall; | ||
317 | } | ||
318 | |||
319 | if (fileleft == 256*1024) | ||
320 | { /* original dumped firmware file has no CRC nor platform ID */ | ||
321 | has_crc = false; | ||
322 | } | ||
323 | else | ||
324 | { | ||
325 | has_crc = true; | ||
326 | fileleft -= sizeof(unsigned); /* exclude the last 4 bytes */ | ||
327 | } | ||
328 | |||
329 | /* do some sanity checks */ | ||
330 | |||
331 | got_now = rb->read(fd, sector, SEC_SIZE); /* read first sector */ | ||
332 | fileread += got_now; | ||
333 | fileleft -= got_now; | ||
334 | if (got_now != SEC_SIZE) | ||
335 | { | ||
336 | rb->close(fd); | ||
337 | return eReadErr; | ||
338 | } | ||
339 | |||
340 | /* version number in file plausible with this hardware? */ | ||
341 | if (!CheckPlatform(PLATFORM_ID, *(UINT16*)(sector + VERSION_ADR))) | ||
342 | { | ||
343 | rb->close(fd); | ||
344 | return eBadPlatform; | ||
345 | } | ||
346 | |||
347 | if (has_crc) | ||
348 | { | ||
349 | crc32 = rb->crc_32(sector, SEC_SIZE, crc32); /* checksum */ | ||
350 | |||
351 | /* in addition to the CRC, my files also have a platform ID */ | ||
352 | if (sector[PLATFORM_ADR] != PLATFORM_ID) /* for our hardware? */ | ||
353 | { | ||
354 | rb->close(fd); | ||
355 | return eBadPlatform; | ||
356 | } | ||
357 | } | ||
358 | |||
359 | if (is_romless) | ||
360 | { /* in this case, there is not much we can check */ | ||
361 | if (*(UINT32*)sector != 0x00000200) /* reset vector */ | ||
362 | { | ||
363 | rb->close(fd); | ||
364 | return eBadContent; | ||
365 | } | ||
366 | } | ||
367 | else | ||
368 | { | ||
369 | /* compare some bytes which have to be identical */ | ||
370 | if (*(UINT32*)sector != 0x41524348) /* "ARCH" */ | ||
371 | { | ||
372 | rb->close(fd); | ||
373 | return eBadContent; | ||
374 | } | ||
375 | |||
376 | for (i = 0x30; i<MASK_ADR-2; i++) /* leave two bytes for me */ | ||
377 | { | ||
378 | if (sector[i] != FB[i]) | ||
379 | { | ||
380 | rb->close(fd); | ||
381 | return eBadContent; | ||
382 | } | ||
383 | } | ||
384 | } | ||
385 | |||
386 | /* check if we can read the whole file, and do checksum */ | ||
387 | do | ||
388 | { | ||
389 | read_now = MIN(SEC_SIZE, fileleft); | ||
390 | got_now = rb->read(fd, sector, read_now); | ||
391 | fileread += got_now; | ||
392 | fileleft -= got_now; | ||
393 | |||
394 | if (read_now != got_now) | ||
395 | { | ||
396 | rb->close(fd); | ||
397 | return eReadErr; | ||
398 | } | ||
399 | |||
400 | if (has_crc) | ||
401 | { | ||
402 | crc32 = rb->crc_32(sector, got_now, crc32); /* checksum */ | ||
403 | } | ||
404 | } while (fileleft); | ||
405 | |||
406 | if (has_crc) | ||
407 | { | ||
408 | got_now = rb->read(fd, &file_crc, sizeof(file_crc)); | ||
409 | if (got_now != sizeof(file_crc)) | ||
410 | { | ||
411 | rb->close(fd); | ||
412 | return eReadErr; | ||
413 | } | ||
414 | } | ||
415 | |||
416 | /* must be EOF now */ | ||
417 | got_now = rb->read(fd, sector, SEC_SIZE); | ||
418 | rb->close(fd); | ||
419 | if (got_now != 0) | ||
420 | return eReadErr; | ||
421 | |||
422 | if (has_crc && file_crc != crc32) | ||
423 | return eCrcErr; | ||
424 | |||
425 | return eOK; | ||
426 | } | ||
427 | |||
428 | |||
429 | /* returns the # of failures, 0 on success */ | ||
430 | unsigned ProgramFirmwareFile(char* filename, int chipsize) | ||
431 | { | ||
432 | int i, j; | ||
433 | int fd; | ||
434 | int read = SEC_SIZE; /* how many for this sector */ | ||
435 | UINT16 keep = *(UINT16*)(FB + KEEP); /* we must keep this! */ | ||
436 | unsigned failures = 0; | ||
437 | |||
438 | fd = rb->open(filename, O_RDONLY); | ||
439 | if (fd < 0) | ||
440 | return false; | ||
441 | |||
442 | for (i=0; i<chipsize; i+=SEC_SIZE) | ||
443 | { | ||
444 | if (!EraseSector(FB + i)) | ||
445 | { | ||
446 | /* nothing we can do, let the programming count the errors */ | ||
447 | } | ||
448 | |||
449 | if (read == SEC_SIZE) /* not EOF yet */ | ||
450 | { | ||
451 | read = rb->read(fd, sector, SEC_SIZE); | ||
452 | if (i==0) | ||
453 | { /* put original value back in */ | ||
454 | *(UINT16*)(sector + KEEP) = keep; | ||
455 | } | ||
456 | |||
457 | for (j=0; j<read; j++) | ||
458 | { | ||
459 | if (!ProgramByte(FB + i + j, sector[j])) | ||
460 | { | ||
461 | failures++; | ||
462 | } | ||
463 | } | ||
464 | } | ||
465 | } | ||
466 | |||
467 | rb->close(fd); | ||
468 | |||
469 | return failures; | ||
470 | } | ||
471 | |||
472 | |||
473 | /* returns the # of failures, 0 on success */ | ||
474 | unsigned VerifyFirmwareFile(char* filename) | ||
475 | { | ||
476 | int i=0, j; | ||
477 | int fd; | ||
478 | int read = SEC_SIZE; /* how many for this sector */ | ||
479 | unsigned failures = 0; | ||
480 | |||
481 | fd = rb->open(filename, O_RDONLY); | ||
482 | if (fd < 0) | ||
483 | return false; | ||
484 | |||
485 | do | ||
486 | { | ||
487 | read = rb->read(fd, sector, SEC_SIZE); | ||
488 | |||
489 | for (j=0; j<read; j++) | ||
490 | { | ||
491 | /* position of keep value is no error */ | ||
492 | if (FB[i] != sector[j] && i != KEEP && i != (KEEP+1)) | ||
493 | { | ||
494 | failures++; | ||
495 | } | ||
496 | i++; | ||
497 | } | ||
498 | } | ||
499 | while (read == SEC_SIZE); | ||
500 | |||
501 | rb->close(fd); | ||
502 | |||
503 | return failures; | ||
504 | } | ||
505 | |||
506 | |||
507 | /***************** Support Functions *****************/ | ||
508 | |||
509 | /* check if we have "normal" boot ROM or flash mirrored to zero */ | ||
510 | tCheckROM CheckBootROM(void) | ||
511 | { | ||
512 | unsigned boot_crc; | ||
513 | unsigned* pFlash = (unsigned*)FB; | ||
514 | unsigned* pRom = (unsigned*)0x0; | ||
515 | unsigned i; | ||
516 | |||
517 | boot_crc = rb->crc_32((unsigned char*)0x0, 64*1024, 0xFFFFFFFF); | ||
518 | if (boot_crc == 0x56DBA4EE /* the known boot ROM */ | ||
519 | #if PLATFORM_ID == ID_PLAYER | ||
520 | /* alternative boot ROM found in one single player so far */ | ||
521 | || boot_crc == 0x358099E8 | ||
522 | #endif | ||
523 | ) | ||
524 | return eBootROM; | ||
525 | |||
526 | /* check if ROM is a flash mirror */ | ||
527 | for (i=0; i<256*1024/sizeof(unsigned); i++) | ||
528 | { | ||
529 | if (*pRom++ != *pFlash++) | ||
530 | { /* difference means no mirror */ | ||
531 | return eUnknown; | ||
532 | } | ||
533 | } | ||
534 | |||
535 | return eROMless; | ||
536 | } | ||
537 | |||
538 | |||
539 | /***************** User Interface Functions *****************/ | ||
540 | |||
541 | int WaitForButton(void) | ||
542 | { | ||
543 | int button; | ||
544 | |||
545 | do | ||
546 | { | ||
547 | button = rb->button_get(true); | ||
548 | } while (IS_SYSEVENT(button) || (button & BUTTON_REL)); | ||
549 | |||
550 | return button; | ||
551 | } | ||
552 | |||
553 | #ifdef HAVE_LCD_BITMAP | ||
554 | /* Recorder implementation */ | ||
555 | |||
556 | /* helper for DoUserDialog() */ | ||
557 | void ShowFlashInfo(tFlashInfo* pInfo) | ||
558 | { | ||
559 | if (!pInfo->manufacturer) | ||
560 | { | ||
561 | rb->lcd_puts(0, 0, "Flash: M=?? D=??"); | ||
562 | rb->lcd_puts(0, 1, "Impossible to program"); | ||
563 | } | ||
564 | else | ||
565 | { | ||
566 | rb->lcd_putsf(0, 0, "Flash: M=%02x D=%02x", | ||
567 | pInfo->manufacturer, pInfo->id); | ||
568 | |||
569 | |||
570 | if (pInfo->size) | ||
571 | { | ||
572 | rb->lcd_puts(0, 1, pInfo->name); | ||
573 | rb->lcd_putsf(0, 2, "Size: %d KB", pInfo->size / 1024); | ||
574 | } | ||
575 | else | ||
576 | { | ||
577 | rb->lcd_puts(0, 1, "Unsupported chip"); | ||
578 | } | ||
579 | |||
580 | } | ||
581 | |||
582 | rb->lcd_update(); | ||
583 | } | ||
584 | |||
585 | |||
586 | /* Kind of our main function, defines the application flow. */ | ||
587 | void DoUserDialog(char* filename) | ||
588 | { | ||
589 | tFlashInfo FlashInfo; | ||
590 | char default_filename[32]; | ||
591 | int button; | ||
592 | int rc; /* generic return code */ | ||
593 | size_t memleft; | ||
594 | tCheckROM result; | ||
595 | bool is_romless; | ||
596 | |||
597 | /* this can only work if Rockbox runs in DRAM, not flash ROM */ | ||
598 | if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */ | ||
599 | { /* we're running from flash */ | ||
600 | rb->splash(HZ*3, "Not from ROM"); | ||
601 | return; /* exit */ | ||
602 | } | ||
603 | |||
604 | /* test if the user is running the correct plugin for this box */ | ||
605 | if (!CheckPlatform(PLATFORM_ID, *(UINT16*)(FB + VERSION_ADR))) | ||
606 | { | ||
607 | rb->splash(HZ*3, "Wrong plugin"); | ||
608 | return; /* exit */ | ||
609 | } | ||
610 | |||
611 | /* refuse to work if the power may fail meanwhile */ | ||
612 | if (!rb->battery_level_safe()) | ||
613 | { | ||
614 | rb->splash(HZ*3, "Battery too low!"); | ||
615 | return; /* exit */ | ||
616 | } | ||
617 | |||
618 | /* check boot ROM */ | ||
619 | result = CheckBootROM(); | ||
620 | if (result == eUnknown) | ||
621 | { /* no support for any other yet */ | ||
622 | rb->splash(HZ*3, "Wrong boot ROM"); | ||
623 | return; /* exit */ | ||
624 | } | ||
625 | is_romless = (result == eROMless); | ||
626 | |||
627 | /* compose filename if none given */ | ||
628 | if (filename == NULL) | ||
629 | { | ||
630 | rb->snprintf( | ||
631 | default_filename, | ||
632 | sizeof(default_filename), | ||
633 | "/firmware_%s%s.bin", | ||
634 | FILE_TYPE, | ||
635 | is_romless ? "_norom" : ""); | ||
636 | filename = default_filename; | ||
637 | } | ||
638 | |||
639 | /* "allocate" memory */ | ||
640 | sector = rb->plugin_get_buffer(&memleft); | ||
641 | if (memleft < SEC_SIZE) /* need buffer for a flash sector */ | ||
642 | { | ||
643 | rb->splash(HZ*3, "Out of memory"); | ||
644 | return; /* exit */ | ||
645 | } | ||
646 | |||
647 | rb->lcd_setfont(FONT_SYSFIXED); | ||
648 | |||
649 | rc = GetFlashInfo(&FlashInfo); | ||
650 | ShowFlashInfo(&FlashInfo); | ||
651 | if (FlashInfo.size == 0) /* no valid chip */ | ||
652 | { | ||
653 | rb->splash(HZ*3, "Sorry!"); | ||
654 | return; /* exit */ | ||
655 | } | ||
656 | |||
657 | rb->lcd_puts(0, 3, "using file:"); | ||
658 | rb->lcd_puts_scroll(0, 4, filename); | ||
659 | rb->lcd_puts(0, 6, KEYNAME1 " to check file"); | ||
660 | rb->lcd_puts(0, 7, "other key to exit"); | ||
661 | rb->lcd_update(); | ||
662 | |||
663 | button = WaitForButton(); | ||
664 | if (button != KEY1) | ||
665 | { | ||
666 | return; | ||
667 | } | ||
668 | |||
669 | rb->lcd_clear_display(); | ||
670 | rb->lcd_puts(0, 0, "checking..."); | ||
671 | rb->lcd_update(); | ||
672 | |||
673 | rc = CheckFirmwareFile(filename, FlashInfo.size, is_romless); | ||
674 | rb->lcd_puts(0, 0, "checked:"); | ||
675 | switch (rc) | ||
676 | { | ||
677 | case eOK: | ||
678 | rb->lcd_puts(0, 1, "File OK."); | ||
679 | break; | ||
680 | case eFileNotFound: | ||
681 | rb->lcd_puts(0, 1, "File not found."); | ||
682 | rb->lcd_puts(0, 2, "Put this in root:"); | ||
683 | rb->lcd_puts_scroll(0, 4, filename); | ||
684 | break; | ||
685 | case eTooBig: | ||
686 | rb->lcd_puts(0, 1, "File too big,"); | ||
687 | rb->lcd_puts(0, 2, "larger than chip."); | ||
688 | break; | ||
689 | case eTooSmall: | ||
690 | rb->lcd_puts(0, 1, "File too small."); | ||
691 | rb->lcd_puts(0, 2, "Incomplete?"); | ||
692 | break; | ||
693 | case eReadErr: | ||
694 | rb->lcd_puts(0, 1, "Read error."); | ||
695 | break; | ||
696 | case eBadContent: | ||
697 | rb->lcd_puts(0, 1, "File invalid."); | ||
698 | rb->lcd_puts(0, 2, "Sanity check fail."); | ||
699 | break; | ||
700 | case eCrcErr: | ||
701 | rb->lcd_puts(0, 1, "File invalid."); | ||
702 | rb->lcd_puts(0, 2, "CRC check failed,"); | ||
703 | rb->lcd_puts(0, 3, "checksum mismatch."); | ||
704 | break; | ||
705 | case eBadPlatform: | ||
706 | rb->lcd_puts(0, 1, "Wrong file for"); | ||
707 | rb->lcd_puts(0, 2, "this hardware."); | ||
708 | break; | ||
709 | default: | ||
710 | rb->lcd_puts(0, 1, "Check failed."); | ||
711 | break; | ||
712 | } | ||
713 | |||
714 | if (rc == eOK) | ||
715 | { | ||
716 | rb->lcd_puts(0, 6, KEYNAME2 " to program"); | ||
717 | rb->lcd_puts(0, 7, "other key to exit"); | ||
718 | } | ||
719 | else | ||
720 | { /* error occured */ | ||
721 | rb->lcd_puts(0, 6, "Any key to exit"); | ||
722 | } | ||
723 | |||
724 | rb->lcd_update(); | ||
725 | |||
726 | button = WaitForButton(); | ||
727 | if (button != KEY2 || rc != eOK) | ||
728 | { | ||
729 | return; | ||
730 | } | ||
731 | |||
732 | rb->lcd_clear_display(); | ||
733 | rb->lcd_puts(0, 0, "Program all Flash?"); | ||
734 | rb->lcd_puts(0, 1, "Are you sure?"); | ||
735 | rb->lcd_puts(0, 2, "If it goes wrong,"); | ||
736 | rb->lcd_puts(0, 3, "it kills your box!"); | ||
737 | rb->lcd_puts(0, 4, "See documentation."); | ||
738 | |||
739 | rb->lcd_puts(0, 6, KEYNAME3 " to proceed"); | ||
740 | rb->lcd_puts(0, 7, "other key to exit"); | ||
741 | rb->lcd_update(); | ||
742 | |||
743 | button = WaitForButton(); | ||
744 | if (button != KEY3) | ||
745 | { | ||
746 | return; | ||
747 | } | ||
748 | |||
749 | rb->lcd_clear_display(); | ||
750 | rb->lcd_puts(0, 0, "Programming..."); | ||
751 | rb->lcd_update(); | ||
752 | |||
753 | rc = ProgramFirmwareFile(filename, FlashInfo.size); | ||
754 | if (rc) | ||
755 | { /* errors */ | ||
756 | rb->lcd_clear_display(); | ||
757 | rb->lcd_puts(0, 0, "Panic:"); | ||
758 | rb->lcd_puts(0, 1, "Programming fail!"); | ||
759 | rb->lcd_putsf(0, 2, "%d errors", rc); | ||
760 | rb->lcd_update(); | ||
761 | button = WaitForButton(); | ||
762 | } | ||
763 | |||
764 | rb->lcd_clear_display(); | ||
765 | rb->lcd_puts(0, 0, "Verifying..."); | ||
766 | rb->lcd_update(); | ||
767 | |||
768 | rc = VerifyFirmwareFile(filename); | ||
769 | |||
770 | rb->lcd_clear_display(); | ||
771 | if (rc == 0) | ||
772 | { | ||
773 | rb->lcd_puts(0, 0, "Verify OK."); | ||
774 | } | ||
775 | else | ||
776 | { | ||
777 | rb->lcd_puts(0, 0, "Panic:"); | ||
778 | rb->lcd_puts(0, 1, "Verify fail!"); | ||
779 | rb->lcd_putsf(0, 2, "%d errors", rc); | ||
780 | } | ||
781 | rb->lcd_puts(0, 7, "Any key to exit"); | ||
782 | rb->lcd_update(); | ||
783 | |||
784 | button = WaitForButton(); | ||
785 | } | ||
786 | |||
787 | #else /* HAVE_LCD_BITMAP */ | ||
788 | /* Player implementation */ | ||
789 | |||
790 | /* helper for DoUserDialog() */ | ||
791 | void ShowFlashInfo(tFlashInfo* pInfo) | ||
792 | { | ||
793 | char buf[32]; | ||
794 | |||
795 | if (!pInfo->manufacturer) | ||
796 | { | ||
797 | rb->lcd_puts_scroll(0, 0, "Flash: M=? D=?"); | ||
798 | rb->lcd_puts_scroll(0, 1, "Impossible to program"); | ||
799 | rb->lcd_update(); | ||
800 | WaitForButton(); | ||
801 | } | ||
802 | else | ||
803 | { | ||
804 | rb->snprintf(buf, sizeof(buf), "Flash: M=%02x D=%02x", | ||
805 | pInfo->manufacturer, pInfo->id); | ||
806 | rb->lcd_puts_scroll(0, 0, buf); | ||
807 | |||
808 | if (pInfo->size) | ||
809 | { | ||
810 | rb->snprintf(buf, sizeof(buf), "Size: %d KB", pInfo->size / 1024); | ||
811 | rb->lcd_puts_scroll(0, 1, buf); | ||
812 | rb->lcd_update(); | ||
813 | } | ||
814 | else | ||
815 | { | ||
816 | rb->lcd_puts_scroll(0, 1, "Unsupported chip"); | ||
817 | rb->lcd_update(); | ||
818 | WaitForButton(); | ||
819 | } | ||
820 | } | ||
821 | } | ||
822 | |||
823 | |||
824 | void DoUserDialog(char* filename) | ||
825 | { | ||
826 | tFlashInfo FlashInfo; | ||
827 | char buf[32]; | ||
828 | char default_filename[32]; | ||
829 | int button; | ||
830 | int rc; /* generic return code */ | ||
831 | size_t memleft; | ||
832 | tCheckROM result; | ||
833 | bool is_romless; | ||
834 | |||
835 | /* this can only work if Rockbox runs in DRAM, not flash ROM */ | ||
836 | if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */ | ||
837 | { /* we're running from flash */ | ||
838 | rb->splash(HZ*3, "Not from ROM"); | ||
839 | return; /* exit */ | ||
840 | } | ||
841 | |||
842 | /* test if the user is running the correct plugin for this box */ | ||
843 | if (!CheckPlatform(PLATFORM_ID, *(UINT16*)(FB + VERSION_ADR))) | ||
844 | { | ||
845 | rb->splash(HZ*3, "Wrong version"); | ||
846 | return; /* exit */ | ||
847 | } | ||
848 | |||
849 | /* refuse to work if the power may fail meanwhile */ | ||
850 | if (!rb->battery_level_safe()) | ||
851 | { | ||
852 | rb->splash(HZ*3, "Batt. too low!"); | ||
853 | return; /* exit */ | ||
854 | } | ||
855 | |||
856 | /* check boot ROM */ | ||
857 | result = CheckBootROM(); | ||
858 | if (result == eUnknown) | ||
859 | { /* no support for any other yet */ | ||
860 | rb->splash(HZ*3, "Wrong boot ROM"); | ||
861 | return; /* exit */ | ||
862 | } | ||
863 | is_romless = (result == eROMless); | ||
864 | |||
865 | /* compose filename if none given */ | ||
866 | if (filename == NULL) | ||
867 | { | ||
868 | rb->snprintf( | ||
869 | default_filename, | ||
870 | sizeof(default_filename), | ||
871 | "/firmware_%s%s.bin", | ||
872 | FILE_TYPE, | ||
873 | is_romless ? "_norom" : ""); | ||
874 | filename = default_filename; | ||
875 | } | ||
876 | |||
877 | /* "allocate" memory */ | ||
878 | sector = rb->plugin_get_buffer(&memleft); | ||
879 | if (memleft < SEC_SIZE) /* need buffer for a flash sector */ | ||
880 | { | ||
881 | rb->splash(HZ*3, "Out of memory"); | ||
882 | return; /* exit */ | ||
883 | } | ||
884 | |||
885 | rc = GetFlashInfo(&FlashInfo); | ||
886 | ShowFlashInfo(&FlashInfo); | ||
887 | |||
888 | if (FlashInfo.size == 0) /* no valid chip */ | ||
889 | { | ||
890 | return; /* exit */ | ||
891 | } | ||
892 | |||
893 | rb->lcd_puts_scroll(0, 0, filename); | ||
894 | rb->lcd_puts_scroll(0, 1, "[Menu] to check"); | ||
895 | rb->lcd_update(); | ||
896 | |||
897 | button = WaitForButton(); | ||
898 | if (button != BUTTON_MENU) | ||
899 | { | ||
900 | return; | ||
901 | } | ||
902 | |||
903 | rb->lcd_clear_display(); | ||
904 | rb->lcd_puts(0, 0, "Checking..."); | ||
905 | rb->lcd_update(); | ||
906 | |||
907 | rc = CheckFirmwareFile(filename, FlashInfo.size, is_romless); | ||
908 | rb->lcd_puts(0, 0, "Checked:"); | ||
909 | switch (rc) | ||
910 | { | ||
911 | case eOK: | ||
912 | rb->lcd_puts(0, 1, "File OK."); | ||
913 | break; | ||
914 | case eFileNotFound: | ||
915 | rb->lcd_puts_scroll(0, 0, "File not found:"); | ||
916 | rb->lcd_puts_scroll(0, 1, filename); | ||
917 | break; | ||
918 | case eTooBig: | ||
919 | rb->lcd_puts_scroll(0, 0, "File too big,"); | ||
920 | rb->lcd_puts_scroll(0, 1, "larger than chip."); | ||
921 | break; | ||
922 | case eTooSmall: | ||
923 | rb->lcd_puts_scroll(0, 0, "File too small."); | ||
924 | rb->lcd_puts_scroll(0, 1, "Incomplete?"); | ||
925 | break; | ||
926 | case eReadErr: | ||
927 | rb->lcd_puts_scroll(0, 0, "Read error."); | ||
928 | break; | ||
929 | case eBadContent: | ||
930 | rb->lcd_puts_scroll(0, 0, "File invalid."); | ||
931 | rb->lcd_puts_scroll(0, 1, "Sanity check failed."); | ||
932 | break; | ||
933 | case eCrcErr: | ||
934 | rb->lcd_puts_scroll(0, 0, "File invalid."); | ||
935 | rb->lcd_puts_scroll(0, 1, "CRC check failed."); | ||
936 | break; | ||
937 | case eBadPlatform: | ||
938 | rb->lcd_puts_scroll(0, 0, "Wrong file for"); | ||
939 | rb->lcd_puts_scroll(0, 1, "this hardware."); | ||
940 | break; | ||
941 | default: | ||
942 | rb->lcd_puts_scroll(0, 0, "Check failed."); | ||
943 | break; | ||
944 | } | ||
945 | rb->lcd_update(); | ||
946 | |||
947 | rb->sleep(HZ*3); | ||
948 | |||
949 | if (rc == eOK) | ||
950 | { | ||
951 | rb->lcd_puts_scroll(0, 0, "[On] to program,"); | ||
952 | rb->lcd_puts_scroll(0, 1, "other key to exit."); | ||
953 | rb->lcd_update(); | ||
954 | } | ||
955 | else | ||
956 | { /* error occured */ | ||
957 | return; | ||
958 | } | ||
959 | |||
960 | button = WaitForButton(); | ||
961 | |||
962 | if (button != BUTTON_ON) | ||
963 | { | ||
964 | return; | ||
965 | } | ||
966 | |||
967 | rb->lcd_clear_display(); | ||
968 | rb->lcd_puts_scroll(0, 0, "Are you sure?"); | ||
969 | rb->lcd_puts_scroll(0, 1, "[+] to proceed."); | ||
970 | rb->lcd_update(); | ||
971 | |||
972 | button = WaitForButton(); | ||
973 | |||
974 | if (button != BUTTON_RIGHT) | ||
975 | { | ||
976 | return; | ||
977 | } | ||
978 | |||
979 | rb->lcd_clear_display(); | ||
980 | rb->lcd_puts_scroll(0, 0, "Programming..."); | ||
981 | rb->lcd_update(); | ||
982 | |||
983 | rc = ProgramFirmwareFile(filename, FlashInfo.size); | ||
984 | |||
985 | if (rc) | ||
986 | { /* errors */ | ||
987 | rb->lcd_clear_display(); | ||
988 | rb->lcd_puts_scroll(0, 0, "Programming failed!"); | ||
989 | rb->snprintf(buf, sizeof(buf), "%d errors", rc); | ||
990 | rb->lcd_puts_scroll(0, 1, buf); | ||
991 | rb->lcd_update(); | ||
992 | WaitForButton(); | ||
993 | } | ||
994 | |||
995 | rb->lcd_clear_display(); | ||
996 | rb->lcd_puts_scroll(0, 0, "Verifying..."); | ||
997 | rb->lcd_update(); | ||
998 | |||
999 | rc = VerifyFirmwareFile(filename); | ||
1000 | |||
1001 | rb->lcd_clear_display(); | ||
1002 | |||
1003 | if (rc == 0) | ||
1004 | { | ||
1005 | rb->lcd_puts_scroll(0, 0, "Verify OK."); | ||
1006 | } | ||
1007 | else | ||
1008 | { | ||
1009 | rb->snprintf(buf, sizeof(buf), "Verify failed! %d errors", rc); | ||
1010 | rb->lcd_puts_scroll(0, 0, buf); | ||
1011 | } | ||
1012 | |||
1013 | rb->lcd_puts_scroll(0, 1, "Press any key to exit."); | ||
1014 | rb->lcd_update(); | ||
1015 | WaitForButton(); | ||
1016 | } | ||
1017 | |||
1018 | #endif /* not HAVE_LCD_BITMAP */ | ||
1019 | |||
1020 | |||
1021 | /***************** Plugin Entry Point *****************/ | ||
1022 | |||
1023 | enum plugin_status plugin_start(const void* parameter) | ||
1024 | { | ||
1025 | int oldmode; | ||
1026 | |||
1027 | /* now go ahead and have fun! */ | ||
1028 | oldmode = rb->system_memory_guard(MEMGUARD_NONE); /*disable memory guard */ | ||
1029 | DoUserDialog((char*) parameter); | ||
1030 | rb->system_memory_guard(oldmode); /* re-enable memory guard */ | ||
1031 | |||
1032 | return PLUGIN_OK; | ||
1033 | } | ||
diff --git a/apps/plugins/flipit.c b/apps/plugins/flipit.c index ed288d444d..fab409cc14 100644 --- a/apps/plugins/flipit.c +++ b/apps/plugins/flipit.c | |||
@@ -23,42 +23,7 @@ | |||
23 | 23 | ||
24 | 24 | ||
25 | /* variable button definitions */ | 25 | /* variable button definitions */ |
26 | #if CONFIG_KEYPAD == RECORDER_PAD | 26 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
27 | #define FLIPIT_LEFT BUTTON_LEFT | ||
28 | #define FLIPIT_RIGHT BUTTON_RIGHT | ||
29 | #define FLIPIT_UP BUTTON_UP | ||
30 | #define FLIPIT_DOWN BUTTON_DOWN | ||
31 | #define FLIPIT_QUIT BUTTON_OFF | ||
32 | #define FLIPIT_SHUFFLE BUTTON_F1 | ||
33 | #define FLIPIT_SOLVE BUTTON_F2 | ||
34 | #define FLIPIT_STEP_BY_STEP BUTTON_F3 | ||
35 | #define FLIPIT_TOGGLE BUTTON_PLAY | ||
36 | |||
37 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
38 | #define FLIPIT_LEFT BUTTON_LEFT | ||
39 | #define FLIPIT_RIGHT BUTTON_RIGHT | ||
40 | #define FLIPIT_UP_PRE BUTTON_ON | ||
41 | #define FLIPIT_UP (BUTTON_ON | BUTTON_REL) | ||
42 | #define FLIPIT_DOWN BUTTON_MENU | ||
43 | #define FLIPIT_QUIT BUTTON_STOP | ||
44 | #define FLIPIT_SHUFFLE (BUTTON_ON | BUTTON_LEFT) | ||
45 | #define FLIPIT_SOLVE (BUTTON_ON | BUTTON_RIGHT) | ||
46 | #define FLIPIT_STEP_BY_STEP (BUTTON_ON | BUTTON_PLAY) | ||
47 | #define FLIPIT_TOGGLE BUTTON_PLAY | ||
48 | |||
49 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
50 | #define FLIPIT_LEFT BUTTON_LEFT | ||
51 | #define FLIPIT_RIGHT BUTTON_RIGHT | ||
52 | #define FLIPIT_UP BUTTON_UP | ||
53 | #define FLIPIT_DOWN BUTTON_DOWN | ||
54 | #define FLIPIT_QUIT BUTTON_OFF | ||
55 | #define FLIPIT_SHUFFLE (BUTTON_MENU | BUTTON_LEFT) | ||
56 | #define FLIPIT_SOLVE (BUTTON_MENU | BUTTON_UP) | ||
57 | #define FLIPIT_STEP_BY_STEP (BUTTON_MENU | BUTTON_RIGHT) | ||
58 | #define FLIPIT_TOGGLE_PRE BUTTON_MENU | ||
59 | #define FLIPIT_TOGGLE (BUTTON_MENU | BUTTON_REL) | ||
60 | |||
61 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
62 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 27 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
63 | #define FLIPIT_LEFT BUTTON_LEFT | 28 | #define FLIPIT_LEFT BUTTON_LEFT |
64 | #define FLIPIT_RIGHT BUTTON_RIGHT | 29 | #define FLIPIT_RIGHT BUTTON_RIGHT |
@@ -937,20 +902,8 @@ enum plugin_status plugin_start(const void* parameter) | |||
937 | /* print instructions */ | 902 | /* print instructions */ |
938 | rb->lcd_clear_display(); | 903 | rb->lcd_clear_display(); |
939 | rb->lcd_setfont(FONT_SYSFIXED); | 904 | rb->lcd_setfont(FONT_SYSFIXED); |
940 | #if CONFIG_KEYPAD == RECORDER_PAD | 905 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
941 | rb->lcd_putsxy(2, 8, "[OFF] to stop"); | 906 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
942 | rb->lcd_putsxy(2, 18, "[PLAY] toggle"); | ||
943 | rb->lcd_putsxy(2, 28, "[F1] shuffle"); | ||
944 | rb->lcd_putsxy(2, 38, "[F2] solution"); | ||
945 | rb->lcd_putsxy(2, 48, "[F3] step by step"); | ||
946 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
947 | rb->lcd_putsxy(2, 8, "[OFF] to stop"); | ||
948 | rb->lcd_putsxy(2, 18, "[MODE] toggle"); | ||
949 | rb->lcd_putsxy(2, 28, "[M-LEFT] shuffle"); | ||
950 | rb->lcd_putsxy(2, 38, "[M-UP] solution"); | ||
951 | rb->lcd_putsxy(2, 48, "[M-RIGHT] step by step"); | ||
952 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
953 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
954 | rb->lcd_putsxy(2, 8, "[STOP] to stop"); | 907 | rb->lcd_putsxy(2, 8, "[STOP] to stop"); |
955 | rb->lcd_putsxy(2, 18, "[SELECT] toggle"); | 908 | rb->lcd_putsxy(2, 18, "[SELECT] toggle"); |
956 | rb->lcd_putsxy(2, 28, "[MODE] shuffle"); | 909 | rb->lcd_putsxy(2, 28, "[MODE] shuffle"); |
diff --git a/apps/plugins/fractals/cpu_sh7043.h b/apps/plugins/fractals/cpu_sh7043.h deleted file mode 100644 index 0d773432a8..0000000000 --- a/apps/plugins/fractals/cpu_sh7043.h +++ /dev/null | |||
@@ -1,96 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2009 Tomer Shalev | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | |||
22 | #ifndef _CPU_SH7043_H | ||
23 | #define _CPU_SH7043_H | ||
24 | |||
25 | inline static short muls16_asr10(short a, short b) | ||
26 | { | ||
27 | short r; | ||
28 | asm ( | ||
29 | "muls %[a],%[b] \n" | ||
30 | "sts macl,%[r] \n" | ||
31 | "shlr8 %[r] \n" | ||
32 | "shlr2 %[r] \n" | ||
33 | : /* outputs */ | ||
34 | [r]"=r"(r) | ||
35 | : /* inputs */ | ||
36 | [a]"r"(a), | ||
37 | [b]"r"(b) | ||
38 | ); | ||
39 | return r; | ||
40 | } | ||
41 | |||
42 | inline static long muls32_asr26(long a, long b) | ||
43 | { | ||
44 | long r, t1, t2, t3; | ||
45 | asm ( | ||
46 | /* Signed 32bit * 32bit -> 64bit multiplication. | ||
47 | Notation: xxab * xxcd, where each letter represents 16 bits. | ||
48 | xx is the 64 bit sign extension. */ | ||
49 | "swap.w %[a],%[t1] \n" /* t1 = ba */ | ||
50 | "mulu %[t1],%[b] \n" /* a * d */ | ||
51 | "swap.w %[b],%[t3] \n" /* t3 = dc */ | ||
52 | "sts macl,%[t2] \n" /* t2 = a * d */ | ||
53 | "mulu %[t1],%[t3] \n" /* a * c */ | ||
54 | "sts macl,%[r] \n" /* hi = a * c */ | ||
55 | "mulu %[a],%[t3] \n" /* b * c */ | ||
56 | "clrt \n" | ||
57 | "sts macl,%[t3] \n" /* t3 = b * c */ | ||
58 | "addc %[t2],%[t3] \n" /* t3 += t2, carry -> t2 */ | ||
59 | "movt %[t2] \n" | ||
60 | "mulu %[a],%[b] \n" /* b * d */ | ||
61 | "mov %[t3],%[t1] \n" /* t1t3 = t2t3 << 16 */ | ||
62 | "xtrct %[t2],%[t1] \n" | ||
63 | "shll16 %[t3] \n" | ||
64 | "sts macl,%[t2] \n" /* lo = b * d */ | ||
65 | "clrt \n" /* hi.lo += t1t3 */ | ||
66 | "addc %[t3],%[t2] \n" | ||
67 | "addc %[t1],%[r] \n" | ||
68 | "cmp/pz %[a] \n" /* ab >= 0 ? */ | ||
69 | "bt 1f \n" | ||
70 | "sub %[b],%[r] \n" /* no: hi -= cd (sign extension of ab is -1) */ | ||
71 | "1: \n" | ||
72 | "cmp/pz %[b] \n" /* cd >= 0 ? */ | ||
73 | "bt 2f \n" | ||
74 | "sub %[a],%[r] \n" /* no: hi -= ab (sign extension of cd is -1) */ | ||
75 | "2: \n" | ||
76 | /* Shift right by 26 and return low 32 bits */ | ||
77 | "shll2 %[r] \n" /* hi <<= 6 */ | ||
78 | "shll2 %[r] \n" | ||
79 | "shll2 %[r] \n" | ||
80 | "shlr16 %[t2] \n" /* (unsigned)lo >>= 26 */ | ||
81 | "shlr8 %[t2] \n" | ||
82 | "shlr2 %[t2] \n" | ||
83 | "or %[t2],%[r] \n" /* combine result */ | ||
84 | : /* outputs */ | ||
85 | [r] "=&r"(r), | ||
86 | [t1]"=&r"(t1), | ||
87 | [t2]"=&r"(t2), | ||
88 | [t3]"=&r"(t3) | ||
89 | : /* inputs */ | ||
90 | [a] "r" (a), | ||
91 | [b] "r" (b) | ||
92 | ); | ||
93 | return r; | ||
94 | } | ||
95 | |||
96 | #endif | ||
diff --git a/apps/plugins/fractals/fractal.h b/apps/plugins/fractals/fractal.h index c7a822c2c6..92a0b87c48 100644 --- a/apps/plugins/fractals/fractal.h +++ b/apps/plugins/fractals/fractal.h | |||
@@ -22,33 +22,7 @@ | |||
22 | #define _FRACTAL_H | 22 | #define _FRACTAL_H |
23 | 23 | ||
24 | /* variable button definitions */ | 24 | /* variable button definitions */ |
25 | #if CONFIG_KEYPAD == RECORDER_PAD | 25 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
26 | #define FRACTAL_QUIT BUTTON_OFF | ||
27 | #define FRACTAL_UP BUTTON_UP | ||
28 | #define FRACTAL_DOWN BUTTON_DOWN | ||
29 | #define FRACTAL_LEFT BUTTON_LEFT | ||
30 | #define FRACTAL_RIGHT BUTTON_RIGHT | ||
31 | #define FRACTAL_ZOOM_IN BUTTON_PLAY | ||
32 | #define FRACTAL_ZOOM_OUT BUTTON_ON | ||
33 | #define FRACTAL_PRECISION_INC BUTTON_F2 | ||
34 | #define FRACTAL_PRECISION_DEC BUTTON_F1 | ||
35 | #define FRACTAL_RESET BUTTON_F3 | ||
36 | |||
37 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
38 | #define FRACTAL_QUIT BUTTON_OFF | ||
39 | #define FRACTAL_UP BUTTON_UP | ||
40 | #define FRACTAL_DOWN BUTTON_DOWN | ||
41 | #define FRACTAL_LEFT BUTTON_LEFT | ||
42 | #define FRACTAL_RIGHT BUTTON_RIGHT | ||
43 | #define FRACTAL_ZOOM_IN_PRE BUTTON_MENU | ||
44 | #define FRACTAL_ZOOM_IN (BUTTON_MENU | BUTTON_REL) | ||
45 | #define FRACTAL_ZOOM_IN2 (BUTTON_MENU | BUTTON_UP) | ||
46 | #define FRACTAL_ZOOM_OUT (BUTTON_MENU | BUTTON_DOWN) | ||
47 | #define FRACTAL_PRECISION_INC (BUTTON_MENU | BUTTON_RIGHT) | ||
48 | #define FRACTAL_PRECISION_DEC (BUTTON_MENU | BUTTON_LEFT) | ||
49 | #define FRACTAL_RESET (BUTTON_MENU | BUTTON_OFF) | ||
50 | |||
51 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
52 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 26 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
53 | #define FRACTAL_QUIT BUTTON_OFF | 27 | #define FRACTAL_QUIT BUTTON_OFF |
54 | #define FRACTAL_UP BUTTON_UP | 28 | #define FRACTAL_UP BUTTON_UP |
diff --git a/apps/plugins/fractals/mandelbrot_set.h b/apps/plugins/fractals/mandelbrot_set.h index 4eeb68461b..2814d24e58 100644 --- a/apps/plugins/fractals/mandelbrot_set.h +++ b/apps/plugins/fractals/mandelbrot_set.h | |||
@@ -24,18 +24,13 @@ | |||
24 | #include "fractal_sets.h" | 24 | #include "fractal_sets.h" |
25 | 25 | ||
26 | /* CPU stuff */ | 26 | /* CPU stuff */ |
27 | #if CONFIG_CPU == SH7034 | 27 | #if defined CPU_COLDFIRE |
28 | #include "cpu_sh7043.h" | ||
29 | #elif defined CPU_COLDFIRE | ||
30 | #include "cpu_coldfire.h" | 28 | #include "cpu_coldfire.h" |
31 | #elif defined CPU_ARM | 29 | #elif defined CPU_ARM |
32 | #include "cpu_arm.h" | 30 | #include "cpu_arm.h" |
33 | #endif | 31 | #endif |
34 | 32 | ||
35 | #if CONFIG_CPU == SH7034 | 33 | #if defined CPU_COLDFIRE |
36 | #define MULS16_ASR10(a, b) muls16_asr10(a, b) | ||
37 | #define MULS32_ASR26(a, b) muls32_asr26(a, b) | ||
38 | #elif defined CPU_COLDFIRE | ||
39 | /* Needs the EMAC initialised to fractional mode w/o rounding and saturation */ | 34 | /* Needs the EMAC initialised to fractional mode w/o rounding and saturation */ |
40 | #define MULS32_INIT() coldfire_set_macsr(EMAC_FRACTIONAL) | 35 | #define MULS32_INIT() coldfire_set_macsr(EMAC_FRACTIONAL) |
41 | #define MULS16_ASR10(a, b) muls16_asr10(a, b) | 36 | #define MULS16_ASR10(a, b) muls16_asr10(a, b) |
diff --git a/apps/plugins/goban/goban.h b/apps/plugins/goban/goban.h index e04b4c2447..8406b540b7 100644 --- a/apps/plugins/goban/goban.h +++ b/apps/plugins/goban/goban.h | |||
@@ -297,27 +297,6 @@ | |||
297 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT | 297 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT |
298 | /* no next var */ | 298 | /* no next var */ |
299 | 299 | ||
300 | #elif (CONFIG_KEYPAD == RECORDER_PAD) | ||
301 | #define GBN_BUTTON_UP BUTTON_UP | ||
302 | #define GBN_BUTTON_DOWN BUTTON_DOWN | ||
303 | #define GBN_BUTTON_LEFT BUTTON_LEFT | ||
304 | #define GBN_BUTTON_RIGHT BUTTON_RIGHT | ||
305 | #define GBN_BUTTON_RETREAT BUTTON_F1 | ||
306 | #define GBN_BUTTON_ADVANCE BUTTON_F3 | ||
307 | #define GBN_BUTTON_MENU BUTTON_F2 | ||
308 | #define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL | ||
309 | #define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT | ||
310 | #define GBN_BUTTON_NEXT_VAR BUTTON_ON | ||
311 | |||
312 | #elif (CONFIG_KEYPAD == ONDIO_PAD) | ||
313 | #define GBN_BUTTON_UP BUTTON_UP | ||
314 | #define GBN_BUTTON_DOWN BUTTON_DOWN | ||
315 | #define GBN_BUTTON_LEFT BUTTON_LEFT | ||
316 | #define GBN_BUTTON_RIGHT BUTTON_RIGHT | ||
317 | #define GBN_BUTTON_MENU BUTTON_MENU | BUTTON_REPEAT | ||
318 | #define GBN_BUTTON_PLAY BUTTON_MENU | BUTTON_REL | ||
319 | #define GBN_BUTTON_NAV_MODE BUTTON_OFF | ||
320 | |||
321 | #elif (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) | 300 | #elif (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) |
322 | #define GBN_BUTTON_UP BUTTON_UP | 301 | #define GBN_BUTTON_UP BUTTON_UP |
323 | #define GBN_BUTTON_DOWN BUTTON_DOWN | 302 | #define GBN_BUTTON_DOWN BUTTON_DOWN |
diff --git a/apps/plugins/goban/goban.make b/apps/plugins/goban/goban.make index a8b41285f0..2201dc60f4 100644 --- a/apps/plugins/goban/goban.make +++ b/apps/plugins/goban/goban.make | |||
@@ -16,15 +16,8 @@ GOBAN_OBJ := $(call c2obj, $(GOBAN_SRC)) | |||
16 | OTHER_SRC += $(GOBAN_SRC) | 16 | OTHER_SRC += $(GOBAN_SRC) |
17 | 17 | ||
18 | ifndef APP_TYPE | 18 | ifndef APP_TYPE |
19 | ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET))))) | 19 | ### all targets |
20 | ### lowmem targets | ||
21 | ROCKS += $(GOBAN_BUILDDIR)/goban.ovl | ||
22 | GOBAN_OUTLDS = $(GOBAN_BUILDDIR)/goban.link | ||
23 | GOBAN_OVLFLAGS = -T$(GOBAN_OUTLDS) -Wl,--gc-sections -Wl,-Map,$(basename $@).map | ||
24 | else | ||
25 | ### all other targets | ||
26 | ROCKS += $(GOBAN_BUILDDIR)/goban.rock | 20 | ROCKS += $(GOBAN_BUILDDIR)/goban.rock |
27 | endif | ||
28 | else | 21 | else |
29 | ### simulator | 22 | ### simulator |
30 | ROCKS += $(GOBAN_BUILDDIR)/goban.rock | 23 | ROCKS += $(GOBAN_BUILDDIR)/goban.rock |
diff --git a/apps/plugins/greyscale.c b/apps/plugins/greyscale.c index ae873a06ac..70507d989c 100644 --- a/apps/plugins/greyscale.c +++ b/apps/plugins/greyscale.c | |||
@@ -30,23 +30,7 @@ | |||
30 | 30 | ||
31 | 31 | ||
32 | /* variable button definitions */ | 32 | /* variable button definitions */ |
33 | #if CONFIG_KEYPAD == RECORDER_PAD | 33 | #if CONFIG_KEYPAD == IRIVER_H100_PAD |
34 | #define GREYSCALE_SHIFT BUTTON_ON | ||
35 | #define GREYSCALE_UP BUTTON_UP | ||
36 | #define GREYSCALE_DOWN BUTTON_DOWN | ||
37 | #define GREYSCALE_LEFT BUTTON_LEFT | ||
38 | #define GREYSCALE_RIGHT BUTTON_RIGHT | ||
39 | #define GREYSCALE_OFF BUTTON_OFF | ||
40 | |||
41 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
42 | #define GREYSCALE_SHIFT BUTTON_MENU | ||
43 | #define GREYSCALE_UP BUTTON_UP | ||
44 | #define GREYSCALE_DOWN BUTTON_DOWN | ||
45 | #define GREYSCALE_LEFT BUTTON_LEFT | ||
46 | #define GREYSCALE_RIGHT BUTTON_RIGHT | ||
47 | #define GREYSCALE_OFF BUTTON_OFF | ||
48 | |||
49 | #elif CONFIG_KEYPAD == IRIVER_H100_PAD | ||
50 | #define GREYSCALE_SHIFT BUTTON_ON | 34 | #define GREYSCALE_SHIFT BUTTON_ON |
51 | #define GREYSCALE_UP BUTTON_UP | 35 | #define GREYSCALE_UP BUTTON_UP |
52 | #define GREYSCALE_DOWN BUTTON_DOWN | 36 | #define GREYSCALE_DOWN BUTTON_DOWN |
diff --git a/apps/plugins/imageviewer/imageviewer_button.h b/apps/plugins/imageviewer/imageviewer_button.h index dfdd39ffa4..46813d5e69 100644 --- a/apps/plugins/imageviewer/imageviewer_button.h +++ b/apps/plugins/imageviewer/imageviewer_button.h | |||
@@ -25,31 +25,8 @@ | |||
25 | #include "plugin.h" | 25 | #include "plugin.h" |
26 | 26 | ||
27 | /* variable button definitions */ | 27 | /* variable button definitions */ |
28 | #if CONFIG_KEYPAD == RECORDER_PAD | 28 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
29 | #define IMGVIEW_ZOOM_IN BUTTON_PLAY | 29 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
30 | #define IMGVIEW_ZOOM_OUT BUTTON_ON | ||
31 | #define IMGVIEW_UP BUTTON_UP | ||
32 | #define IMGVIEW_DOWN BUTTON_DOWN | ||
33 | #define IMGVIEW_LEFT BUTTON_LEFT | ||
34 | #define IMGVIEW_RIGHT BUTTON_RIGHT | ||
35 | #define IMGVIEW_NEXT BUTTON_F3 | ||
36 | #define IMGVIEW_PREVIOUS BUTTON_F2 | ||
37 | #define IMGVIEW_MENU BUTTON_OFF | ||
38 | |||
39 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
40 | #define IMGVIEW_ZOOM_PRE BUTTON_MENU | ||
41 | #define IMGVIEW_ZOOM_IN (BUTTON_MENU | BUTTON_REL) | ||
42 | #define IMGVIEW_ZOOM_OUT (BUTTON_MENU | BUTTON_DOWN) | ||
43 | #define IMGVIEW_UP BUTTON_UP | ||
44 | #define IMGVIEW_DOWN BUTTON_DOWN | ||
45 | #define IMGVIEW_LEFT BUTTON_LEFT | ||
46 | #define IMGVIEW_RIGHT BUTTON_RIGHT | ||
47 | #define IMGVIEW_NEXT (BUTTON_MENU | BUTTON_RIGHT) | ||
48 | #define IMGVIEW_PREVIOUS (BUTTON_MENU | BUTTON_LEFT) | ||
49 | #define IMGVIEW_MENU BUTTON_OFF | ||
50 | |||
51 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
52 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
53 | #define IMGVIEW_ZOOM_IN BUTTON_SELECT | 30 | #define IMGVIEW_ZOOM_IN BUTTON_SELECT |
54 | #define IMGVIEW_ZOOM_OUT BUTTON_MODE | 31 | #define IMGVIEW_ZOOM_OUT BUTTON_MODE |
55 | #define IMGVIEW_UP BUTTON_UP | 32 | #define IMGVIEW_UP BUTTON_UP |
diff --git a/apps/plugins/imageviewer/jpeg/jpeg_decoder.c b/apps/plugins/imageviewer/jpeg/jpeg_decoder.c index 342b59c6a4..b014fa0ed1 100644 --- a/apps/plugins/imageviewer/jpeg/jpeg_decoder.c +++ b/apps/plugins/imageviewer/jpeg/jpeg_decoder.c | |||
@@ -39,23 +39,7 @@ | |||
39 | 39 | ||
40 | INLINE unsigned range_limit(int value) | 40 | INLINE unsigned range_limit(int value) |
41 | { | 41 | { |
42 | #if CONFIG_CPU == SH7034 | 42 | #if defined(CPU_COLDFIRE) |
43 | unsigned tmp; | ||
44 | asm ( /* Note: Uses knowledge that only low byte of result is used */ | ||
45 | "mov #-128,%[t] \n" | ||
46 | "sub %[t],%[v] \n" /* value -= -128; equals value += 128; */ | ||
47 | "extu.b %[v],%[t] \n" | ||
48 | "cmp/eq %[v],%[t] \n" /* low byte == whole number ? */ | ||
49 | "bt 1f \n" /* yes: no overflow */ | ||
50 | "cmp/pz %[v] \n" /* overflow: positive? */ | ||
51 | "subc %[v],%[v] \n" /* %[r] now either 0 or 0xffffffff */ | ||
52 | "1: \n" | ||
53 | : /* outputs */ | ||
54 | [v]"+r"(value), | ||
55 | [t]"=&r"(tmp) | ||
56 | ); | ||
57 | return value; | ||
58 | #elif defined(CPU_COLDFIRE) | ||
59 | asm ( /* Note: Uses knowledge that only the low byte of the result is used */ | 43 | asm ( /* Note: Uses knowledge that only the low byte of the result is used */ |
60 | "add.l #128,%[v] \n" /* value += 128; */ | 44 | "add.l #128,%[v] \n" /* value += 128; */ |
61 | "cmp.l #255,%[v] \n" /* overflow? */ | 45 | "cmp.l #255,%[v] \n" /* overflow? */ |
diff --git a/apps/plugins/jewels.c b/apps/plugins/jewels.c index cae3befb5e..f94825650f 100644 --- a/apps/plugins/jewels.c +++ b/apps/plugins/jewels.c | |||
@@ -28,27 +28,7 @@ | |||
28 | #include "pluginbitmaps/jewels.h" | 28 | #include "pluginbitmaps/jewels.h" |
29 | 29 | ||
30 | /* button definitions */ | 30 | /* button definitions */ |
31 | #if CONFIG_KEYPAD == RECORDER_PAD | 31 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
32 | #define JEWELS_UP BUTTON_UP | ||
33 | #define JEWELS_DOWN BUTTON_DOWN | ||
34 | #define JEWELS_LEFT BUTTON_LEFT | ||
35 | #define JEWELS_RIGHT BUTTON_RIGHT | ||
36 | #define JEWELS_SELECT BUTTON_PLAY | ||
37 | #define JEWELS_CANCEL BUTTON_OFF | ||
38 | #define HK_SELECT "PLAY" | ||
39 | #define HK_CANCEL "OFF" | ||
40 | |||
41 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
42 | #define JEWELS_UP BUTTON_UP | ||
43 | #define JEWELS_DOWN BUTTON_DOWN | ||
44 | #define JEWELS_LEFT BUTTON_LEFT | ||
45 | #define JEWELS_RIGHT BUTTON_RIGHT | ||
46 | #define JEWELS_SELECT BUTTON_MENU | ||
47 | #define JEWELS_CANCEL BUTTON_OFF | ||
48 | #define HK_SELECT "MENU" | ||
49 | #define HK_CANCEL "OFF" | ||
50 | |||
51 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
52 | #define JEWELS_UP BUTTON_UP | 32 | #define JEWELS_UP BUTTON_UP |
53 | #define JEWELS_DOWN BUTTON_DOWN | 33 | #define JEWELS_DOWN BUTTON_DOWN |
54 | #define JEWELS_LEFT BUTTON_LEFT | 34 | #define JEWELS_LEFT BUTTON_LEFT |
diff --git a/apps/plugins/lib/SOURCES b/apps/plugins/lib/SOURCES index 1149f35bac..82b9fba4a5 100644 --- a/apps/plugins/lib/SOURCES +++ b/apps/plugins/lib/SOURCES | |||
@@ -21,8 +21,6 @@ grey_scroll.c | |||
21 | 21 | ||
22 | #ifdef CPU_COLDFIRE | 22 | #ifdef CPU_COLDFIRE |
23 | grey_coldfire.S | 23 | grey_coldfire.S |
24 | #elif CONFIG_CPU == SH7034 | ||
25 | grey_sh.S | ||
26 | #endif | 24 | #endif |
27 | 25 | ||
28 | #endif /* HAVE_LCD_BITMAP && LCD_DEPTH < 4 */ | 26 | #endif /* HAVE_LCD_BITMAP && LCD_DEPTH < 4 */ |
diff --git a/apps/plugins/lib/grey_core.c b/apps/plugins/lib/grey_core.c index bb6823522d..55d0684103 100644 --- a/apps/plugins/lib/grey_core.c +++ b/apps/plugins/lib/grey_core.c | |||
@@ -36,35 +36,7 @@ | |||
36 | 36 | ||
37 | #ifndef SIMULATOR | 37 | #ifndef SIMULATOR |
38 | 38 | ||
39 | #if defined ARCHOS_RECORDER /* verified */ \ | 39 | #if defined IAUDIO_M3 /* verified */ |
40 | || defined ARCHOS_FMRECORDER /* should be identical */ \ | ||
41 | || defined ARCHOS_RECORDERV2 /* should be identical */ \ | ||
42 | || defined ARCHOS_ONDIOFM /* verified */ \ | ||
43 | || defined ARCHOS_ONDIOSP /* verified */ | ||
44 | /* Average measurements of a Recorder v1, an Ondio FM, a backlight-modded | ||
45 | * Ondio FM, and an Ondio SP. */ | ||
46 | static const unsigned char lcdlinear[256] = { | ||
47 | 5, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 29, 31, 33, 35, | ||
48 | 37, 39, 40, 42, 43, 45, 46, 48, 49, 50, 51, 53, 54, 55, 57, 58, | ||
49 | 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 68, 69, 70, 71, 71, 72, | ||
50 | 73, 74, 74, 75, 76, 77, 77, 78, 79, 79, 80, 80, 81, 81, 82, 82, | ||
51 | 83, 84, 84, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91, | ||
52 | 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 98, 98, 99, 100, 100, | ||
53 | 101, 101, 102, 103, 103, 104, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109, | ||
54 | 110, 110, 111, 112, 112, 113, 114, 114, 115, 115, 116, 117, 117, 118, 119, 119, | ||
55 | 120, 120, 121, 122, 123, 123, 124, 125, 126, 126, 127, 128, 129, 129, 130, 131, | ||
56 | 132, 132, 133, 134, 135, 135, 136, 137, 138, 138, 139, 140, 140, 141, 141, 142, | ||
57 | 143, 144, 145, 146, 147, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 156, | ||
58 | 157, 158, 159, 160, 161, 161, 162, 163, 164, 165, 166, 167, 168, 168, 169, 170, | ||
59 | 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187, | ||
60 | 188, 189, 191, 192, 194, 195, 197, 198, 199, 200, 202, 203, 204, 205, 207, 208, | ||
61 | 209, 210, 212, 213, 215, 216, 218, 219, 220, 221, 222, 223, 225, 226, 227, 228, | ||
62 | 229, 230, 232, 233, 234, 235, 237, 238, 239, 240, 242, 243, 244, 246, 247, 248 | ||
63 | }; | ||
64 | /* The actual LCD scanrate varies a lot with temperature on these targets */ | ||
65 | #define LCD_SCANRATE 67 /* Hz */ | ||
66 | |||
67 | #elif defined IAUDIO_M3 /* verified */ | ||
68 | /* Average measurements of 2 iAudio remotes connected to an M3. */ | 40 | /* Average measurements of 2 iAudio remotes connected to an M3. */ |
69 | static const unsigned char lcdlinear[256] = { | 41 | static const unsigned char lcdlinear[256] = { |
70 | 5, 9, 13, 17, 21, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, | 42 | 5, 9, 13, 17, 21, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, 66, |
diff --git a/apps/plugins/lib/grey_draw.c b/apps/plugins/lib/grey_draw.c index 64dabc2fb3..298ffbe16e 100644 --- a/apps/plugins/lib/grey_draw.c +++ b/apps/plugins/lib/grey_draw.c | |||
@@ -758,8 +758,7 @@ void grey_ub_gray_bitmap_part(const unsigned char *src, int src_x, int src_y, | |||
758 | + (~yc & _GREY_BMASK); | 758 | + (~yc & _GREY_BMASK); |
759 | #endif /* LCD_PIXELFORMAT */ | 759 | #endif /* LCD_PIXELFORMAT */ |
760 | 760 | ||
761 | #if ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 1) && (CONFIG_CPU == SH7034)) \ | 761 | #if ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 2) && defined(CPU_COLDFIRE)) \ |
762 | || ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 2) && defined(CPU_COLDFIRE)) \ | ||
763 | || ((LCD_PIXELFORMAT == VERTICAL_INTERLEAVED) && defined(CPU_COLDFIRE)) | 762 | || ((LCD_PIXELFORMAT == VERTICAL_INTERLEAVED) && defined(CPU_COLDFIRE)) |
764 | _grey_line1(width, dst + idx, src, _grey_info.gvalue); | 763 | _grey_line1(width, dst + idx, src, _grey_info.gvalue); |
765 | #else | 764 | #else |
diff --git a/apps/plugins/lib/grey_sh.S b/apps/plugins/lib/grey_sh.S deleted file mode 100644 index 5714f95f8c..0000000000 --- a/apps/plugins/lib/grey_sh.S +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * New greyscale framework | ||
11 | * SH1 assembler routines | ||
12 | * | ||
13 | * This is a generic framework to display 129 shades of grey on low-depth | ||
14 | * bitmap LCDs (Archos b&w, Iriver & Ipod 4-grey) within plugins. | ||
15 | * | ||
16 | * Copyright (C) 2008 Jens Arnold | ||
17 | * | ||
18 | * This program is free software; you can redistribute it and/or | ||
19 | * modify it under the terms of the GNU General Public License | ||
20 | * as published by the Free Software Foundation; either version 2 | ||
21 | * of the License, or (at your option) any later version. | ||
22 | * | ||
23 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
24 | * KIND, either express or implied. | ||
25 | * | ||
26 | ****************************************************************************/ | ||
27 | |||
28 | #include "config.h" | ||
29 | /* Plugins should not normally do this, but we need to check a macro, and | ||
30 | * plugin.h would confuse the assembler. */ | ||
31 | |||
32 | .text | ||
33 | .global __grey_line1 | ||
34 | .type __grey_line1, @function | ||
35 | |||
36 | #if (LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 1) | ||
37 | |||
38 | /**************************************************************************** | ||
39 | * void _grey_line1(int width, r4 | ||
40 | * unsigned char *dst, r5 | ||
41 | * const unsigned char *src, r6 | ||
42 | * const unsigned char *lut); r7 | ||
43 | */ | ||
44 | |||
45 | __grey_line1: | ||
46 | mov #1, r0 | ||
47 | tst r0, r6 | ||
48 | bt .p1_h_end | ||
49 | |||
50 | mov.b @r6+, r0 | ||
51 | extu.b r0, r0 | ||
52 | mov.b @(r0, r7), r0 | ||
53 | add #-1, r4 | ||
54 | mov.b r0, @r5 | ||
55 | add #8, r5 | ||
56 | .p1_h_end: | ||
57 | |||
58 | mov #2, r0 | ||
59 | cmp/hs r0, r4 | ||
60 | bf .p2_t_end | ||
61 | tst r0, r6 | ||
62 | bt .p2_h_end | ||
63 | |||
64 | mov.w @r6+, r1 | ||
65 | extu.b r1, r0 | ||
66 | mov.b @(r0, r7), r0 | ||
67 | shlr8 r1 | ||
68 | mov.b r0, @(8, r5) | ||
69 | extu.b r1, r0 | ||
70 | mov.b @(r0, r7), r0 | ||
71 | add #-2, r4 | ||
72 | mov.b r0, @r5 | ||
73 | add #16, r5 | ||
74 | .p2_h_end: | ||
75 | |||
76 | add #-4, r4 | ||
77 | cmp/pz r4 | ||
78 | bf .p4_end | ||
79 | |||
80 | add r6, r4 | ||
81 | |||
82 | .p4_loop: | ||
83 | mov.l @r6+, r1 | ||
84 | swap.w r1, r2 | ||
85 | extu.b r2, r0 | ||
86 | mov.b @(r0, r7), r0 | ||
87 | shlr8 r2 | ||
88 | mov.b r0, @(8, r5) | ||
89 | extu.b r2, r0 | ||
90 | mov.b @(r0, r7), r2 | ||
91 | extu.b r1, r0 | ||
92 | mov.b r2, @r5 | ||
93 | add #16, r5 | ||
94 | mov.b @(r0, r7), r0 | ||
95 | shlr8 r1 | ||
96 | mov.b r0, @(8, r5) | ||
97 | extu.b r1, r0 | ||
98 | mov.b @(r0, r7), r0 | ||
99 | cmp/hs r6, r4 | ||
100 | mov.b r0, @r5 | ||
101 | add #16, r5 | ||
102 | bt .p4_loop | ||
103 | |||
104 | /* No need to correct the count, we're only testing bits from now on. */ | ||
105 | |||
106 | .p4_end: | ||
107 | mov #2, r0 | ||
108 | tst r0, r4 | ||
109 | bt .p2_t_end | ||
110 | |||
111 | mov.w @r6+, r1 | ||
112 | extu.b r1, r0 | ||
113 | mov.b @(r0, r7), r0 | ||
114 | shlr8 r1 | ||
115 | mov.b r0, @(8, r5) | ||
116 | extu.b r1, r0 | ||
117 | mov.b @(r0, r7), r0 | ||
118 | mov.b r0, @r5 | ||
119 | add #16, r5 | ||
120 | .p2_t_end: | ||
121 | |||
122 | mov #1, r0 | ||
123 | tst r0, r4 | ||
124 | bt .p1_t_end | ||
125 | |||
126 | mov.b @r6+, r0 | ||
127 | extu.b r0, r0 | ||
128 | mov.b @(r0, r7), r0 | ||
129 | rts | ||
130 | mov.b r0, @r5 | ||
131 | .p1_t_end: | ||
132 | |||
133 | rts | ||
134 | nop | ||
135 | .size __grey_line1, . - __grey_line1 | ||
136 | |||
137 | #endif | ||
diff --git a/apps/plugins/lib/helper.c b/apps/plugins/lib/helper.c index 506903e808..6eb3498791 100644 --- a/apps/plugins/lib/helper.c +++ b/apps/plugins/lib/helper.c | |||
@@ -22,20 +22,6 @@ | |||
22 | #include "plugin.h" | 22 | #include "plugin.h" |
23 | #include "helper.h" | 23 | #include "helper.h" |
24 | 24 | ||
25 | #ifdef CPU_SH | ||
26 | /* Lookup table for using the BIT_N() macro in plugins */ | ||
27 | const unsigned bit_n_table[32] = { | ||
28 | 1LU<< 0, 1LU<< 1, 1LU<< 2, 1LU<< 3, | ||
29 | 1LU<< 4, 1LU<< 5, 1LU<< 6, 1LU<< 7, | ||
30 | 1LU<< 8, 1LU<< 9, 1LU<<10, 1LU<<11, | ||
31 | 1LU<<12, 1LU<<13, 1LU<<14, 1LU<<15, | ||
32 | 1LU<<16, 1LU<<17, 1LU<<18, 1LU<<19, | ||
33 | 1LU<<20, 1LU<<21, 1LU<<22, 1LU<<23, | ||
34 | 1LU<<24, 1LU<<25, 1LU<<26, 1LU<<27, | ||
35 | 1LU<<28, 1LU<<29, 1LU<<30, 1LU<<31 | ||
36 | }; | ||
37 | #endif | ||
38 | |||
39 | /* Force the backlight on */ | 25 | /* Force the backlight on */ |
40 | void backlight_force_on(void) | 26 | void backlight_force_on(void) |
41 | { | 27 | { |
diff --git a/apps/plugins/lib/pluginlib_actions.c b/apps/plugins/lib/pluginlib_actions.c index e5b48c2f6a..c580074d5e 100644 --- a/apps/plugins/lib/pluginlib_actions.c +++ b/apps/plugins/lib/pluginlib_actions.c | |||
@@ -51,16 +51,6 @@ const struct button_mapping pla_remote_ctx[] = | |||
51 | { PLA_DOWN_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, | 51 | { PLA_DOWN_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE}, |
52 | { PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, | 52 | { PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, |
53 | { PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, | 53 | { PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, |
54 | #elif (CONFIG_KEYPAD == PLAYER_PAD) || \ | ||
55 | (CONFIG_KEYPAD == RECORDER_PAD) | ||
56 | { PLA_UP, BUTTON_RC_VOL_UP, BUTTON_NONE}, | ||
57 | { PLA_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE}, | ||
58 | { PLA_LEFT, BUTTON_RC_LEFT, BUTTON_NONE}, | ||
59 | { PLA_RIGHT, BUTTON_RC_RIGHT, BUTTON_NONE}, | ||
60 | { PLA_UP_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE}, | ||
61 | { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE}, | ||
62 | { PLA_LEFT_REPEAT, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE}, | ||
63 | { PLA_RIGHT_REPEAT, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE}, | ||
64 | #elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE) | 54 | #elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE) |
65 | { PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE}, | 55 | { PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE}, |
66 | { PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE}, | 56 | { PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE}, |
@@ -101,9 +91,7 @@ const struct button_mapping pla_main_ctx[] = | |||
101 | || (CONFIG_KEYPAD == IRIVER_H300_PAD) \ | 91 | || (CONFIG_KEYPAD == IRIVER_H300_PAD) \ |
102 | || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \ | 92 | || (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \ |
103 | || (CONFIG_KEYPAD == GIGABEAT_PAD) \ | 93 | || (CONFIG_KEYPAD == GIGABEAT_PAD) \ |
104 | || (CONFIG_KEYPAD == RECORDER_PAD) \ | ||
105 | || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \ | 94 | || (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \ |
106 | || (CONFIG_KEYPAD == ONDIO_PAD) \ | ||
107 | || (CONFIG_KEYPAD == SANSA_C200_PAD) \ | 95 | || (CONFIG_KEYPAD == SANSA_C200_PAD) \ |
108 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ | 96 | || (CONFIG_KEYPAD == GIGABEAT_S_PAD) \ |
109 | || (CONFIG_KEYPAD == MROBE100_PAD) \ | 97 | || (CONFIG_KEYPAD == MROBE100_PAD) \ |
@@ -145,15 +133,6 @@ const struct button_mapping pla_main_ctx[] = | |||
145 | { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, | 133 | { PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, |
146 | { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | 134 | { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, |
147 | { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | 135 | { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, |
148 | #elif (CONFIG_KEYPAD == PLAYER_PAD) | ||
149 | { PLA_UP, BUTTON_PLAY, BUTTON_NONE }, | ||
150 | { PLA_DOWN, BUTTON_STOP, BUTTON_NONE }, | ||
151 | { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE }, | ||
152 | { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE }, | ||
153 | { PLA_UP_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE }, | ||
154 | { PLA_DOWN_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE }, | ||
155 | { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE }, | ||
156 | { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE }, | ||
157 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) | 136 | #elif (CONFIG_KEYPAD == IRIVER_H10_PAD) |
158 | { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE }, | 137 | { PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE }, |
159 | { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE }, | 138 | { PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE }, |
@@ -339,24 +318,6 @@ const struct button_mapping pla_main_ctx[] = | |||
339 | {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, | 318 | {PLA_SELECT, BUTTON_SELECT, BUTTON_NONE}, |
340 | {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, | 319 | {PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT}, |
341 | {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, | 320 | {PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE}, |
342 | #elif (CONFIG_KEYPAD == RECORDER_PAD) | ||
343 | {PLA_CANCEL, BUTTON_ON, BUTTON_NONE}, | ||
344 | {PLA_EXIT, BUTTON_OFF, BUTTON_NONE}, | ||
345 | {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE}, | ||
346 | {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY}, | ||
347 | {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE}, | ||
348 | #elif (CONFIG_KEYPAD == ONDIO_PAD) | ||
349 | {PLA_CANCEL, BUTTON_OFF|BUTTON_REL, BUTTON_OFF}, | ||
350 | {PLA_EXIT, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE}, | ||
351 | {PLA_SELECT, BUTTON_MENU, BUTTON_NONE}, | ||
352 | {PLA_SELECT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU}, | ||
353 | {PLA_SELECT_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE}, | ||
354 | #elif (CONFIG_KEYPAD == PLAYER_PAD) | ||
355 | {PLA_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU}, | ||
356 | {PLA_EXIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE}, | ||
357 | {PLA_SELECT, BUTTON_ON, BUTTON_NONE}, | ||
358 | {PLA_SELECT_REL, BUTTON_ON|BUTTON_REL, BUTTON_ON}, | ||
359 | {PLA_SELECT_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE}, | ||
360 | #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) | 321 | #elif (CONFIG_KEYPAD == SANSA_FUZE_PAD) |
361 | {PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME}, | 322 | {PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME}, |
362 | {PLA_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE}, | 323 | {PLA_EXIT, BUTTON_HOME|BUTTON_REPEAT, BUTTON_NONE}, |
diff --git a/apps/plugins/lib/xlcd_scroll.c b/apps/plugins/lib/xlcd_scroll.c index f2fc71ea47..e0fead71be 100644 --- a/apps/plugins/lib/xlcd_scroll.c +++ b/apps/plugins/lib/xlcd_scroll.c | |||
@@ -396,77 +396,7 @@ void xlcd_scroll_up(int count) | |||
396 | { | 396 | { |
397 | #if LCD_PIXELFORMAT == VERTICAL_PACKING | 397 | #if LCD_PIXELFORMAT == VERTICAL_PACKING |
398 | 398 | ||
399 | #if (CONFIG_CPU == SH7034) && (LCD_DEPTH == 1) | 399 | #if defined(CPU_COLDFIRE) && (LCD_DEPTH == 2) |
400 | asm ( | ||
401 | "mov #0,r4 \n" /* x = 0 */ | ||
402 | "mova .su_shifttbl,r0 \n" /* calculate jump destination for */ | ||
403 | "mov.b @(r0,%[cnt]),%[cnt] \n" /* shift amount from table */ | ||
404 | "bra .su_cloop \n" /* skip table */ | ||
405 | "add r0,%[cnt] \n" | ||
406 | |||
407 | ".align 2 \n" | ||
408 | ".su_shifttbl: \n" /* shift jump offset table */ | ||
409 | ".byte .su_shift0 - .su_shifttbl \n" | ||
410 | ".byte .su_shift1 - .su_shifttbl \n" | ||
411 | ".byte .su_shift2 - .su_shifttbl \n" | ||
412 | ".byte .su_shift3 - .su_shifttbl \n" | ||
413 | ".byte .su_shift4 - .su_shifttbl \n" | ||
414 | ".byte .su_shift5 - .su_shifttbl \n" | ||
415 | ".byte .su_shift6 - .su_shifttbl \n" | ||
416 | ".byte .su_shift7 - .su_shifttbl \n" | ||
417 | |||
418 | ".su_cloop: \n" /* repeat for every column */ | ||
419 | "mov %[addr],r2 \n" /* get start address */ | ||
420 | "mov #0,r3 \n" /* current_row = 0 */ | ||
421 | "mov #0,r1 \n" /* fill with zero */ | ||
422 | |||
423 | ".su_iloop: \n" /* repeat for all rows */ | ||
424 | "sub %[wide],r2 \n" /* address -= width */ | ||
425 | "mov.b @r2,r0 \n" /* get data byte */ | ||
426 | "shll8 r1 \n" /* old data to 2nd byte */ | ||
427 | "extu.b r0,r0 \n" /* extend unsigned */ | ||
428 | "or r1,r0 \n" /* combine old data */ | ||
429 | "jmp @%[cnt] \n" /* jump into shift "path" */ | ||
430 | "extu.b r0,r1 \n" /* store data for next round */ | ||
431 | |||
432 | ".su_shift6: \n" /* shift right by 0..7 bits */ | ||
433 | "shll2 r0 \n" | ||
434 | "bra .su_shift0 \n" | ||
435 | "shlr8 r0 \n" | ||
436 | ".su_shift4: \n" | ||
437 | "shlr2 r0 \n" | ||
438 | ".su_shift2: \n" | ||
439 | "bra .su_shift0 \n" | ||
440 | "shlr2 r0 \n" | ||
441 | ".su_shift7: \n" | ||
442 | "shlr2 r0 \n" | ||
443 | ".su_shift5: \n" | ||
444 | "shlr2 r0 \n" | ||
445 | ".su_shift3: \n" | ||
446 | "shlr2 r0 \n" | ||
447 | ".su_shift1: \n" | ||
448 | "shlr r0 \n" | ||
449 | ".su_shift0: \n" | ||
450 | |||
451 | "mov.b r0,@r2 \n" /* store data */ | ||
452 | "add #1,r3 \n" /* current_row++ */ | ||
453 | "cmp/hi r3,%[rows] \n" /* current_row < bheight - shift ? */ | ||
454 | "bt .su_iloop \n" | ||
455 | |||
456 | "add #1,%[addr] \n" /* start_address++ */ | ||
457 | "add #1,r4 \n" /* x++ */ | ||
458 | "cmp/hi r4,%[wide] \n" /* x < width ? */ | ||
459 | "bt .su_cloop \n" | ||
460 | : /* outputs */ | ||
461 | : /* inputs */ | ||
462 | [addr]"r"(rb->lcd_framebuffer + blocklen * LCD_FBWIDTH), | ||
463 | [wide]"r"(LCD_FBWIDTH), | ||
464 | [rows]"r"(blocklen), | ||
465 | [cnt] "r"(bitcount) | ||
466 | : /* clobbers */ | ||
467 | "r0", "r1", "r2", "r3", "r4" | ||
468 | ); | ||
469 | #elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2) | ||
470 | asm ( | 400 | asm ( |
471 | "move.l %[wide],%%d3\n" /* columns = width */ | 401 | "move.l %[wide],%%d3\n" /* columns = width */ |
472 | 402 | ||
@@ -590,76 +520,7 @@ void xlcd_scroll_down(int count) | |||
590 | { | 520 | { |
591 | #if LCD_PIXELFORMAT == VERTICAL_PACKING | 521 | #if LCD_PIXELFORMAT == VERTICAL_PACKING |
592 | 522 | ||
593 | #if (CONFIG_CPU == SH7034) && (LCD_DEPTH == 1) | 523 | #if defined(CPU_COLDFIRE) && (LCD_DEPTH == 2) |
594 | asm ( | ||
595 | "mov #0,r4 \n" /* x = 0 */ | ||
596 | "mova .sd_shifttbl,r0 \n" /* calculate jump destination for */ | ||
597 | "mov.b @(r0,%[cnt]),%[cnt] \n" /* shift amount from table */ | ||
598 | "bra .sd_cloop \n" /* skip table */ | ||
599 | "add r0,%[cnt] \n" | ||
600 | |||
601 | ".align 2 \n" | ||
602 | ".sd_shifttbl: \n" /* shift jump offset table */ | ||
603 | ".byte .sd_shift0 - .sd_shifttbl \n" | ||
604 | ".byte .sd_shift1 - .sd_shifttbl \n" | ||
605 | ".byte .sd_shift2 - .sd_shifttbl \n" | ||
606 | ".byte .sd_shift3 - .sd_shifttbl \n" | ||
607 | ".byte .sd_shift4 - .sd_shifttbl \n" | ||
608 | ".byte .sd_shift5 - .sd_shifttbl \n" | ||
609 | ".byte .sd_shift6 - .sd_shifttbl \n" | ||
610 | ".byte .sd_shift7 - .sd_shifttbl \n" | ||
611 | |||
612 | ".sd_cloop: \n" /* repeat for every column */ | ||
613 | "mov %[addr],r2 \n" /* get start address */ | ||
614 | "mov #0,r3 \n" /* current_row = 0 */ | ||
615 | "mov #0,r1 \n" /* fill with zero */ | ||
616 | |||
617 | ".sd_iloop: \n" /* repeat for all rows */ | ||
618 | "shlr8 r1 \n" /* shift right to get residue */ | ||
619 | "mov.b @r2,r0 \n" /* get data byte */ | ||
620 | "jmp @%[cnt] \n" /* jump into shift "path" */ | ||
621 | "extu.b r0,r0 \n" /* extend unsigned */ | ||
622 | |||
623 | ".sd_shift6: \n" /* shift left by 0..7 bits */ | ||
624 | "shll8 r0 \n" | ||
625 | "bra .sd_shift0 \n" | ||
626 | "shlr2 r0 \n" | ||
627 | ".sd_shift4: \n" | ||
628 | "shll2 r0 \n" | ||
629 | ".sd_shift2: \n" | ||
630 | "bra .sd_shift0 \n" | ||
631 | "shll2 r0 \n" | ||
632 | ".sd_shift7: \n" | ||
633 | "shll2 r0 \n" | ||
634 | ".sd_shift5: \n" | ||
635 | "shll2 r0 \n" | ||
636 | ".sd_shift3: \n" | ||
637 | "shll2 r0 \n" | ||
638 | ".sd_shift1: \n" | ||
639 | "shll r0 \n" | ||
640 | ".sd_shift0: \n" | ||
641 | |||
642 | "or r0,r1 \n" /* combine with last residue */ | ||
643 | "mov.b r1,@r2 \n" /* store data */ | ||
644 | "add %[wide],r2 \n" /* address += width */ | ||
645 | "add #1,r3 \n" /* current_row++ */ | ||
646 | "cmp/hi r3,%[rows] \n" /* current_row < bheight - shift ? */ | ||
647 | "bt .sd_iloop \n" | ||
648 | |||
649 | "add #1,%[addr] \n" /* start_address++ */ | ||
650 | "add #1,r4 \n" /* x++ */ | ||
651 | "cmp/hi r4,%[wide] \n" /* x < width ? */ | ||
652 | "bt .sd_cloop \n" | ||
653 | : /* outputs */ | ||
654 | : /* inputs */ | ||
655 | [addr]"r"(rb->lcd_framebuffer + blockcount * LCD_FBWIDTH), | ||
656 | [wide]"r"(LCD_WIDTH), | ||
657 | [rows]"r"(blocklen), | ||
658 | [cnt] "r"(bitcount) | ||
659 | : /* clobbers */ | ||
660 | "r0", "r1", "r2", "r3", "r4" | ||
661 | ); | ||
662 | #elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2) | ||
663 | asm ( | 524 | asm ( |
664 | "move.l %[wide],%%d3\n" /* columns = width */ | 525 | "move.l %[wide],%%d3\n" /* columns = width */ |
665 | 526 | ||
diff --git a/apps/plugins/lrcplayer.c b/apps/plugins/lrcplayer.c index 4ae9722ae3..eb441eab8d 100644 --- a/apps/plugins/lrcplayer.c +++ b/apps/plugins/lrcplayer.c | |||
@@ -2667,12 +2667,6 @@ static int handle_button(void) | |||
2667 | switch (button) | 2667 | switch (button) |
2668 | { | 2668 | { |
2669 | case ACTION_WPS_BROWSE: | 2669 | case ACTION_WPS_BROWSE: |
2670 | #if CONFIG_KEYPAD == ONDIO_PAD | ||
2671 | /* ondio doesn't have ACTION_WPS_MENU, | ||
2672 | so use ACTION_WPS_BROWSE for menu */ | ||
2673 | ret = LRC_GOTO_MENU; | ||
2674 | break; | ||
2675 | #endif | ||
2676 | case ACTION_WPS_STOP: | 2670 | case ACTION_WPS_STOP: |
2677 | save_changes(); | 2671 | save_changes(); |
2678 | ret = PLUGIN_OK; | 2672 | ret = PLUGIN_OK; |
diff --git a/apps/plugins/lua/Makefile b/apps/plugins/lua/Makefile index 8568d79c4c..dcf2910c36 100644 --- a/apps/plugins/lua/Makefile +++ b/apps/plugins/lua/Makefile | |||
@@ -28,13 +28,8 @@ OBJS = $(patsubst %.S, $(OBJDIR)/%.o, $(OBJS2)) | |||
28 | DIRS = . | 28 | DIRS = . |
29 | 29 | ||
30 | ifndef APP_TYPE | 30 | ifndef APP_TYPE |
31 | ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET))))) | ||
32 | LDS := archos.lds | ||
33 | OUTPUT = $(OUTDIR)/lua.ovl | ||
34 | else ## iRiver/iPod/... targets | ||
35 | LDS := ../plugin.lds | 31 | LDS := ../plugin.lds |
36 | OUTPUT = $(OUTDIR)/lua.rock | 32 | OUTPUT = $(OUTDIR)/lua.rock |
37 | endif | ||
38 | else ## simulators | 33 | else ## simulators |
39 | OUTPUT = $(OUTDIR)/lua.rock | 34 | OUTPUT = $(OUTDIR)/lua.rock |
40 | endif | 35 | endif |
diff --git a/apps/plugins/lua/lua.make b/apps/plugins/lua/lua.make index ebdef1e24e..61decb5605 100644 --- a/apps/plugins/lua/lua.make +++ b/apps/plugins/lua/lua.make | |||
@@ -23,15 +23,7 @@ LUA_INCLUDELIST := $(addprefix $(LUA_BUILDDIR)/,audio.lua blit.lua color.lua dra | |||
23 | 23 | ||
24 | 24 | ||
25 | ifndef APP_TYPE | 25 | ifndef APP_TYPE |
26 | ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET))))) | ||
27 | ### lowmem targets | ||
28 | ROCKS += $(LUA_BUILDDIR)/lua.ovl | ||
29 | LUA_OUTLDS = $(LUA_BUILDDIR)/lua.link | ||
30 | LUA_OVLFLAGS = -T$(LUA_OUTLDS) -Wl,--gc-sections -Wl,-Map,$(basename $@).map | ||
31 | else | ||
32 | ### all other targets | ||
33 | ROCKS += $(LUA_BUILDDIR)/lua.rock | 26 | ROCKS += $(LUA_BUILDDIR)/lua.rock |
34 | endif | ||
35 | else | 27 | else |
36 | ### simulator | 28 | ### simulator |
37 | ROCKS += $(LUA_BUILDDIR)/lua.rock | 29 | ROCKS += $(LUA_BUILDDIR)/lua.rock |
diff --git a/apps/plugins/lua/rocklib.c b/apps/plugins/lua/rocklib.c index a33fdf7170..4fa989da46 100644 --- a/apps/plugins/lua/rocklib.c +++ b/apps/plugins/lua/rocklib.c | |||
@@ -39,7 +39,7 @@ | |||
39 | * from Lua in its stack in direct order (the first argument is pushed first). To return values to Lua, | 39 | * from Lua in its stack in direct order (the first argument is pushed first). To return values to Lua, |
40 | * a C function just pushes them onto the stack, in direct order (the first result is pushed first), | 40 | * a C function just pushes them onto the stack, in direct order (the first result is pushed first), |
41 | * and returns the number of results. Any other value in the stack below the results will be properly | 41 | * and returns the number of results. Any other value in the stack below the results will be properly |
42 | * discarded by Lua. Like a Lua function, a C function called by Lua can also return many results. | 42 | * discarded by Lua. Like a Lua function, a C function called by Lua can also return many results. |
43 | * | 43 | * |
44 | * When porting new functions, don't forget to check rocklib_aux.pl whether it automatically creates | 44 | * When porting new functions, don't forget to check rocklib_aux.pl whether it automatically creates |
45 | * wrappers for the function and if so, add the function names to @forbidden_functions. This is to | 45 | * wrappers for the function and if so, add the function names to @forbidden_functions. This is to |
@@ -487,8 +487,7 @@ RB_WRAP(sound) | |||
487 | lua_pushstring (L, rb->sound_unit(setting)); | 487 | lua_pushstring (L, rb->sound_unit(setting)); |
488 | return 1; | 488 | return 1; |
489 | break; | 489 | break; |
490 | #if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \ | 490 | #if ((CONFIG_CODEC == SWCODEC) && defined (HAVE_PITCHCONTROL)) |
491 | (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL) | ||
492 | case SOUND_SET_PITCH: | 491 | case SOUND_SET_PITCH: |
493 | rb->sound_set_pitch(setting); | 492 | rb->sound_set_pitch(setting); |
494 | return 1;/*nil*/ | 493 | return 1;/*nil*/ |
@@ -496,7 +495,7 @@ RB_WRAP(sound) | |||
496 | #endif | 495 | #endif |
497 | case SOUND_VAL2PHYS: | 496 | case SOUND_VAL2PHYS: |
498 | value = luaL_checkint(L, 3); | 497 | value = luaL_checkint(L, 3); |
499 | result = rb->sound_val2phys(setting, value); | 498 | result = rb->sound_val2phys(setting, value); |
500 | break; | 499 | break; |
501 | 500 | ||
502 | default: | 501 | default: |
diff --git a/apps/plugins/minesweeper.c b/apps/plugins/minesweeper.c index 4e875979ab..01659dbfd2 100644 --- a/apps/plugins/minesweeper.c +++ b/apps/plugins/minesweeper.c | |||
@@ -34,31 +34,8 @@ enum minesweeper_status { | |||
34 | }; | 34 | }; |
35 | 35 | ||
36 | /* variable button definitions */ | 36 | /* variable button definitions */ |
37 | #if CONFIG_KEYPAD == RECORDER_PAD | 37 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
38 | # define MINESWP_LEFT BUTTON_LEFT | 38 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
39 | # define MINESWP_RIGHT BUTTON_RIGHT | ||
40 | # define MINESWP_UP BUTTON_UP | ||
41 | # define MINESWP_DOWN BUTTON_DOWN | ||
42 | # define MINESWP_QUIT BUTTON_OFF | ||
43 | # define MINESWP_TOGGLE BUTTON_ON | ||
44 | # define MINESWP_TOGGLE2 BUTTON_F1 | ||
45 | # define MINESWP_DISCOVER BUTTON_PLAY | ||
46 | # define MINESWP_DISCOVER2 BUTTON_F2 | ||
47 | # define MINESWP_INFO BUTTON_F3 | ||
48 | |||
49 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
50 | # define MINESWP_LEFT BUTTON_LEFT | ||
51 | # define MINESWP_RIGHT BUTTON_RIGHT | ||
52 | # define MINESWP_UP BUTTON_UP | ||
53 | # define MINESWP_DOWN BUTTON_DOWN | ||
54 | # define MINESWP_QUIT BUTTON_OFF | ||
55 | # define MINESWP_TOGGLE_PRE BUTTON_MENU | ||
56 | # define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL) | ||
57 | # define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT) | ||
58 | # define MINESWP_INFO (BUTTON_MENU | BUTTON_OFF) | ||
59 | |||
60 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
61 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
62 | # define MINESWP_LEFT BUTTON_LEFT | 39 | # define MINESWP_LEFT BUTTON_LEFT |
63 | # define MINESWP_RIGHT BUTTON_RIGHT | 40 | # define MINESWP_RIGHT BUTTON_RIGHT |
64 | # define MINESWP_UP BUTTON_UP | 41 | # define MINESWP_UP BUTTON_UP |
diff --git a/apps/plugins/nim.c b/apps/plugins/nim.c deleted file mode 100644 index 70cf8dcec4..0000000000 --- a/apps/plugins/nim.c +++ /dev/null | |||
@@ -1,285 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2003 Pierre Delore | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #include "plugin.h" | ||
22 | #include "lib/pluginlib_exit.h" | ||
23 | |||
24 | /* NIM game for the player | ||
25 | |||
26 | Rules of nim game | ||
27 | ----------------- | ||
28 | There are 21 matches. | ||
29 | Two players (you and the cpu) alternately pick a certain number of matches and the one, | ||
30 | who takes the last match, loses. | ||
31 | |||
32 | |||
33 | History: | ||
34 | ------- | ||
35 | V1.0 : 2003-07-22 | ||
36 | First release of the game | ||
37 | V1.1 : 2003-07-22 | ||
38 | I Change the patterns definition in order to have a clean code | ||
39 | V1.2 : 2003-07-30 | ||
40 | Patch from JB that change: | ||
41 | . the win and lose message | ||
42 | . the BUTTON_STOP code | ||
43 | . Add a test | ||
44 | I suppress the exit variable | ||
45 | I suppress or translates the comments which were in French | ||
46 | I put min=1 at the of the main loop ( When there are 21 matches you can decide not to | ||
47 | take a match. Later you are obliged to take at least one.) | ||
48 | */ | ||
49 | |||
50 | |||
51 | |||
52 | /*Pattern for the game*/ | ||
53 | static unsigned char smile[]={0x00, 0x11, 0x04, 0x04, 0x00, 0x11, 0x0E}; /* :-) */ | ||
54 | static unsigned char cry[] ={0x00, 0x11, 0x04, 0x04, 0x00, 0x0E, 0x11}; /* :-( */ | ||
55 | static unsigned char pattern3[]={0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15}; /*3 parts*/ | ||
56 | static unsigned char pattern2[]={0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14}; /*2 parts*/ | ||
57 | static unsigned char pattern1[]={0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}; /*1 part*/ | ||
58 | |||
59 | static unsigned long hsmile,hcry,h1,h2; /*Handle for the new pattern*/ | ||
60 | |||
61 | static bool end; /*If true game is finished*/ | ||
62 | |||
63 | /*Display that the action it's impossible*/ | ||
64 | static void impossible(void) | ||
65 | { | ||
66 | rb->lcd_puts(0,1,"Impossible!"); | ||
67 | rb->lcd_update(); | ||
68 | rb->sleep(HZ); | ||
69 | return; | ||
70 | } | ||
71 | |||
72 | /*Display that the CPU lose :) */ | ||
73 | static void lose(void) | ||
74 | { | ||
75 | rb->lcd_define_pattern(hsmile,smile); | ||
76 | rb->lcd_puts(0,1,"You Win!!"); | ||
77 | rb->lcd_putc(8,1,hsmile); | ||
78 | rb->lcd_update(); | ||
79 | end=true; | ||
80 | rb->sleep(HZ*2); | ||
81 | return; | ||
82 | } | ||
83 | |||
84 | |||
85 | /* Display that the CPU win :( */ | ||
86 | static void win(void) | ||
87 | { | ||
88 | rb->lcd_define_pattern(hcry,cry); | ||
89 | rb->lcd_puts(0,1,"You Lose!!"); | ||
90 | rb->lcd_putc(9,1,hcry); | ||
91 | rb->lcd_update(); | ||
92 | end=true; | ||
93 | rb->sleep(HZ*2); | ||
94 | return; | ||
95 | } | ||
96 | |||
97 | |||
98 | /*Display the first line*/ | ||
99 | static void display_first_line(int x) | ||
100 | { | ||
101 | int i; | ||
102 | |||
103 | rb->lcd_putsf(0,0," =%d",x); | ||
104 | |||
105 | rb->lcd_define_pattern(h1,pattern3); | ||
106 | for (i=0;i<x/3;i++) | ||
107 | rb->lcd_putc(i,0,h1); | ||
108 | |||
109 | if (x%3==2) | ||
110 | { | ||
111 | rb->lcd_define_pattern(h2,pattern2); | ||
112 | rb->lcd_putc(i,0,h2); | ||
113 | } | ||
114 | if (x%3==1) | ||
115 | { | ||
116 | rb->lcd_define_pattern(h2,pattern1); | ||
117 | rb->lcd_putc(i,0,h2); | ||
118 | } | ||
119 | } | ||
120 | |||
121 | /* Call when the program end */ | ||
122 | static void nim_exit(void) | ||
123 | { | ||
124 | /*Restore the old pattern*/ | ||
125 | rb->lcd_unlock_pattern(h1); | ||
126 | rb->lcd_unlock_pattern(h2); | ||
127 | rb->lcd_unlock_pattern(hsmile); | ||
128 | rb->lcd_unlock_pattern(hcry); | ||
129 | |||
130 | /*Clear the screen*/ | ||
131 | rb->lcd_clear_display(); | ||
132 | rb->lcd_update(); | ||
133 | } | ||
134 | |||
135 | /* this is the plugin entry point */ | ||
136 | enum plugin_status plugin_start(const void* parameter) | ||
137 | { | ||
138 | int y,z,button; | ||
139 | int x,v,min; | ||
140 | bool ok; | ||
141 | bool go; | ||
142 | atexit(nim_exit); | ||
143 | |||
144 | /* if you don't use the parameter, you can do like | ||
145 | this to avoid the compiler warning about it */ | ||
146 | (void)parameter; | ||
147 | |||
148 | /*Get the pattern handle*/ | ||
149 | h1=rb->lcd_get_locked_pattern(); | ||
150 | h2=rb->lcd_get_locked_pattern(); | ||
151 | hcry=rb->lcd_get_locked_pattern(); | ||
152 | hsmile=rb->lcd_get_locked_pattern(); | ||
153 | |||
154 | |||
155 | rb->splash(HZ, "NIM V1.2"); | ||
156 | rb->lcd_clear_display(); | ||
157 | |||
158 | /* Main loop */ | ||
159 | while (1) | ||
160 | { | ||
161 | /* Init */ | ||
162 | x=21; | ||
163 | v=1; | ||
164 | y=1; | ||
165 | end=false; | ||
166 | min=0; | ||
167 | |||
168 | /*Empty the event queue*/ | ||
169 | rb->button_clear_queue(); | ||
170 | |||
171 | /* Game loop */ | ||
172 | while(end!=true) | ||
173 | { | ||
174 | do | ||
175 | { | ||
176 | ok=1; | ||
177 | y=1; | ||
178 | display_first_line(x); | ||
179 | |||
180 | rb->lcd_putsf(0,1,"[%d..%d]?=%d",min,v,y); | ||
181 | rb->lcd_update(); | ||
182 | |||
183 | go=false; | ||
184 | while (!go) | ||
185 | { | ||
186 | button = rb->button_get(true); | ||
187 | switch ( button ) | ||
188 | { | ||
189 | case BUTTON_STOP|BUTTON_REL: | ||
190 | go = true; | ||
191 | return PLUGIN_OK; | ||
192 | break; | ||
193 | |||
194 | case BUTTON_PLAY|BUTTON_REL: | ||
195 | go=true; | ||
196 | break; | ||
197 | |||
198 | case BUTTON_LEFT|BUTTON_REL: | ||
199 | go=false; | ||
200 | if (y>min) | ||
201 | y--; | ||
202 | break; | ||
203 | |||
204 | case BUTTON_RIGHT|BUTTON_REL: | ||
205 | go=false; | ||
206 | if (y<v) | ||
207 | y++; | ||
208 | break; | ||
209 | |||
210 | default: | ||
211 | exit_on_usb(button); | ||
212 | break; | ||
213 | } | ||
214 | display_first_line(x); | ||
215 | rb->lcd_putsf(0,1,"[%d..%d]?=%d",min,v,y); | ||
216 | rb->lcd_update(); | ||
217 | } | ||
218 | |||
219 | if ( (y==0) && (x<21)) | ||
220 | { | ||
221 | impossible(); | ||
222 | ok=false; | ||
223 | } | ||
224 | else | ||
225 | { | ||
226 | if (y!=0) /*If y=0 and x=21 jump to CPU code */ | ||
227 | { | ||
228 | if ((y>v) || (y>x)) | ||
229 | { | ||
230 | impossible(); | ||
231 | ok=false; | ||
232 | } | ||
233 | if (y-x==0) | ||
234 | win(); | ||
235 | else | ||
236 | { | ||
237 | v=y*2; | ||
238 | x-=y; | ||
239 | } | ||
240 | } | ||
241 | } | ||
242 | } | ||
243 | while (ok==false); | ||
244 | |||
245 | display_first_line(x); | ||
246 | |||
247 | /*CPU*/ | ||
248 | if (x==1) | ||
249 | lose(); | ||
250 | else | ||
251 | if (x==2) | ||
252 | win(); | ||
253 | y=0; | ||
254 | if (end==false) | ||
255 | { | ||
256 | for (z=v;z>=1;z--) | ||
257 | { | ||
258 | if (x-z==1) | ||
259 | y=z; | ||
260 | } | ||
261 | if (y<=0) | ||
262 | { | ||
263 | for(z=v;z>=1;z--) | ||
264 | { | ||
265 | if(x-(z*3)==2) | ||
266 | y=z; | ||
267 | } | ||
268 | if ((y==0) && (x>14)) | ||
269 | y=v; | ||
270 | if (y==0) | ||
271 | y=1; | ||
272 | } | ||
273 | v=y*2; | ||
274 | x-=y; | ||
275 | rb->lcd_putsf(0,1,"I take=%d",y); | ||
276 | rb->lcd_update(); | ||
277 | rb->sleep(HZ); | ||
278 | } | ||
279 | if ((x==1)&&(!end)) | ||
280 | win(); | ||
281 | min=1; | ||
282 | } | ||
283 | } | ||
284 | return PLUGIN_OK; | ||
285 | } | ||
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index 97a8094e1f..8e14f26bd5 100644 --- a/apps/plugins/oscilloscope.c +++ b/apps/plugins/oscilloscope.c | |||
@@ -30,30 +30,7 @@ | |||
30 | #include "lib/osd.h" | 30 | #include "lib/osd.h" |
31 | 31 | ||
32 | /* variable button definitions */ | 32 | /* variable button definitions */ |
33 | #if CONFIG_KEYPAD == RECORDER_PAD | 33 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) |
34 | #define OSCILLOSCOPE_QUIT BUTTON_OFF | ||
35 | #define OSCILLOSCOPE_DRAWMODE BUTTON_F1 | ||
36 | #define OSCILLOSCOPE_ADVMODE BUTTON_F2 | ||
37 | #define OSCILLOSCOPE_ORIENTATION BUTTON_F3 | ||
38 | #define OSCILLOSCOPE_PAUSE BUTTON_PLAY | ||
39 | #define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT | ||
40 | #define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT | ||
41 | #define OSCILLOSCOPE_VOL_UP BUTTON_UP | ||
42 | #define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN | ||
43 | |||
44 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
45 | #define OSCILLOSCOPE_QUIT BUTTON_OFF | ||
46 | #define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_MENU | ||
47 | #define OSCILLOSCOPE_DRAWMODE (BUTTON_MENU | BUTTON_REL) | ||
48 | #define OSCILLOSCOPE_ADVMODE (BUTTON_MENU | BUTTON_RIGHT) | ||
49 | #define OSCILLOSCOPE_ORIENTATION (BUTTON_MENU | BUTTON_LEFT) | ||
50 | #define OSCILLOSCOPE_PAUSE (BUTTON_MENU | BUTTON_OFF) | ||
51 | #define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT | ||
52 | #define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT | ||
53 | #define OSCILLOSCOPE_VOL_UP BUTTON_UP | ||
54 | #define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN | ||
55 | |||
56 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
57 | #define OSCILLOSCOPE_QUIT BUTTON_OFF | 34 | #define OSCILLOSCOPE_QUIT BUTTON_OFF |
58 | #define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT | 35 | #define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT |
59 | #define OSCILLOSCOPE_ADVMODE BUTTON_MODE | 36 | #define OSCILLOSCOPE_ADVMODE BUTTON_MODE |
@@ -934,9 +911,6 @@ static void get_peaks(int *left, int *right) | |||
934 | #elif defined (SIMULATOR) | 911 | #elif defined (SIMULATOR) |
935 | *left = rand() % 0x8000; | 912 | *left = rand() % 0x8000; |
936 | *right = rand() % 0x8000; | 913 | *right = rand() % 0x8000; |
937 | #elif (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
938 | *left = rb->mas_codec_readreg(0xC); | ||
939 | *right = rb->mas_codec_readreg(0xD); | ||
940 | #else | 914 | #else |
941 | *left = 0; | 915 | *left = 0; |
942 | *right = 0; | 916 | *right = 0; |
diff --git a/apps/plugins/pegbox.c b/apps/plugins/pegbox.c index e000e98d33..c3d38997eb 100644 --- a/apps/plugins/pegbox.c +++ b/apps/plugins/pegbox.c | |||
@@ -43,41 +43,7 @@ | |||
43 | #define HOLE 6 | 43 | #define HOLE 6 |
44 | #define PLAYER 7 | 44 | #define PLAYER 7 |
45 | 45 | ||
46 | #if CONFIG_KEYPAD == RECORDER_PAD | 46 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
47 | #define PEGBOX_SELECT BUTTON_ON | ||
48 | #define PEGBOX_QUIT BUTTON_OFF | ||
49 | #define PEGBOX_RESTART BUTTON_F2 | ||
50 | #define PEGBOX_LVL_UP BUTTON_F1 | ||
51 | #define PEGBOX_LVL_DOWN BUTTON_F3 | ||
52 | #define PEGBOX_UP BUTTON_UP | ||
53 | #define PEGBOX_DOWN BUTTON_DOWN | ||
54 | #define PEGBOX_RIGHT BUTTON_RIGHT | ||
55 | #define PEGBOX_LEFT BUTTON_LEFT | ||
56 | |||
57 | #define SELECT_TEXT "ON" | ||
58 | #define QUIT_TEXT "OFF" | ||
59 | #define RESTART_TEXT "F2" | ||
60 | #define LVL_UP_TEXT "F1" | ||
61 | #define LVL_DOWN_TEXT "F3" | ||
62 | |||
63 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
64 | #define PEGBOX_SELECT BUTTON_OFF | ||
65 | #define PEGBOX_QUIT (BUTTON_MENU | BUTTON_LEFT) | ||
66 | #define PEGBOX_RESTART (BUTTON_MENU | BUTTON_RIGHT) | ||
67 | #define PEGBOX_LVL_UP (BUTTON_MENU | BUTTON_UP) | ||
68 | #define PEGBOX_LVL_DOWN (BUTTON_MENU | BUTTON_DOWN) | ||
69 | #define PEGBOX_UP BUTTON_UP | ||
70 | #define PEGBOX_DOWN BUTTON_DOWN | ||
71 | #define PEGBOX_RIGHT BUTTON_RIGHT | ||
72 | #define PEGBOX_LEFT BUTTON_LEFT | ||
73 | |||
74 | #define SELECT_TEXT "OFF" | ||
75 | #define QUIT_TEXT "M+LEFT" | ||
76 | #define RESTART_TEXT "M+RIGHT" | ||
77 | #define LVL_UP_TEXT "M+UP" | ||
78 | #define LVL_DOWN_TEXT "M+DOWN" | ||
79 | |||
80 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
81 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 47 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
82 | #define PEGBOX_SELECT BUTTON_SELECT | 48 | #define PEGBOX_SELECT BUTTON_SELECT |
83 | #define PEGBOX_QUIT BUTTON_OFF | 49 | #define PEGBOX_QUIT BUTTON_OFF |
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c index 91174604ea..a32298f861 100644 --- a/apps/plugins/pictureflow/pictureflow.c +++ b/apps/plugins/pictureflow/pictureflow.c | |||
@@ -90,13 +90,6 @@ const struct button_mapping pf_context_album_scroll[] = | |||
90 | {ACTION_NONE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT}, | 90 | {ACTION_NONE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT}, |
91 | {ACTION_NONE, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT}, | 91 | {ACTION_NONE, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT}, |
92 | #endif | 92 | #endif |
93 | #if CONFIG_KEYPAD == ONDIO_PAD | ||
94 | {PF_SELECT, BUTTON_UP|BUTTON_REL, BUTTON_UP}, | ||
95 | {PF_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP}, | ||
96 | {ACTION_NONE, BUTTON_UP, BUTTON_NONE}, | ||
97 | {ACTION_NONE, BUTTON_DOWN, BUTTON_NONE}, | ||
98 | {ACTION_NONE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE}, | ||
99 | #endif | ||
100 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN|1) | 93 | LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN|1) |
101 | }; | 94 | }; |
102 | #endif /* !USE_CORE_PREVNEXT */ | 95 | #endif /* !USE_CORE_PREVNEXT */ |
@@ -147,8 +140,7 @@ const struct button_mapping pf_context_buttons[] = | |||
147 | {PF_QUIT, BUTTON_RC_REC, BUTTON_NONE}, | 140 | {PF_QUIT, BUTTON_RC_REC, BUTTON_NONE}, |
148 | #elif CONFIG_KEYPAD == MEIZU_M6SL_PAD | 141 | #elif CONFIG_KEYPAD == MEIZU_M6SL_PAD |
149 | {PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU}, | 142 | {PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU}, |
150 | #elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD || \ | 143 | #elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD |
151 | CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == ONDIO_PAD | ||
152 | {PF_QUIT, BUTTON_OFF, BUTTON_NONE}, | 144 | {PF_QUIT, BUTTON_OFF, BUTTON_NONE}, |
153 | #elif CONFIG_KEYPAD == PBELL_VIBE500_PAD | 145 | #elif CONFIG_KEYPAD == PBELL_VIBE500_PAD |
154 | {PF_QUIT, BUTTON_REC, BUTTON_NONE}, | 146 | {PF_QUIT, BUTTON_REC, BUTTON_NONE}, |
@@ -691,13 +683,7 @@ static inline PFreal fdiv(PFreal num, PFreal den) | |||
691 | #define fabs(a) (a < 0 ? -a : a) | 683 | #define fabs(a) (a < 0 ? -a : a) |
692 | #define fbound(min,val,max) (fmax((min),fmin((max),(val)))) | 684 | #define fbound(min,val,max) (fmax((min),fmin((max),(val)))) |
693 | 685 | ||
694 | #if CONFIG_CPU == SH7034 | ||
695 | /* 16*16->32 bit multiplication is a single instrcution on the SH1 */ | ||
696 | #define MULUQ(a, b) ((uint32_t) (((uint16_t) (a)) * ((uint16_t) (b)))) | ||
697 | #else | ||
698 | #define MULUQ(a, b) ((a) * (b)) | 686 | #define MULUQ(a, b) ((a) * (b)) |
699 | #endif | ||
700 | |||
701 | 687 | ||
702 | #if 0 | 688 | #if 0 |
703 | #define fmul(a,b) ( ((a)*(b)) >> PFREAL_SHIFT ) | 689 | #define fmul(a,b) ( ((a)*(b)) >> PFREAL_SHIFT ) |
diff --git a/apps/plugins/pictureflow/pictureflow.make b/apps/plugins/pictureflow/pictureflow.make index 9c29f7abd9..fb606fb860 100644 --- a/apps/plugins/pictureflow/pictureflow.make +++ b/apps/plugins/pictureflow/pictureflow.make | |||
@@ -16,15 +16,7 @@ PICTUREFLOW_OBJ := $(call c2obj, $(PICTUREFLOW_SRC)) | |||
16 | OTHER_SRC += $(PICTUREFLOW_SRC) | 16 | OTHER_SRC += $(PICTUREFLOW_SRC) |
17 | 17 | ||
18 | ifndef APP_TYPE | 18 | ifndef APP_TYPE |
19 | ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET))))) | ||
20 | ### lowmem targets | ||
21 | ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.ovl | ||
22 | PICTUREFLOW_OUTLDS = $(PICTUREFLOW_OBJDIR)/picutreflow.link | ||
23 | PICTUREFLOW_OVLFLAGS = -T$(PICTUREFLOW_OUTLDS) -Wl,--gc-sections -Wl,-Map,$(basename $@).map | ||
24 | else | ||
25 | ### all other targets | ||
26 | ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.rock | 19 | ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.rock |
27 | endif | ||
28 | else | 20 | else |
29 | ### simulator | 21 | ### simulator |
30 | ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.rock | 22 | ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.rock |
diff --git a/apps/plugins/plugin.lds b/apps/plugins/plugin.lds index 7037496be4..25ff4a461b 100644 --- a/apps/plugins/plugin.lds +++ b/apps/plugins/plugin.lds | |||
@@ -6,8 +6,6 @@ | |||
6 | OUTPUT_FORMAT(elf32-m68k) | 6 | OUTPUT_FORMAT(elf32-m68k) |
7 | #elif defined(CPU_ARM) | 7 | #elif defined(CPU_ARM) |
8 | OUTPUT_FORMAT(elf32-littlearm) | 8 | OUTPUT_FORMAT(elf32-littlearm) |
9 | #elif defined(CPU_SH) | ||
10 | OUTPUT_FORMAT(elf32-sh) | ||
11 | #elif defined(CPU_MIPS) | 9 | #elif defined(CPU_MIPS) |
12 | OUTPUT_FORMAT(elf32-littlemips) | 10 | OUTPUT_FORMAT(elf32-littlemips) |
13 | #else | 11 | #else |
diff --git a/apps/plugins/pong.c b/apps/plugins/pong.c index 1fcd018de2..fcc4c5a3b9 100644 --- a/apps/plugins/pong.c +++ b/apps/plugins/pong.c | |||
@@ -39,23 +39,7 @@ | |||
39 | #define MOVE_STEP LCD_HEIGHT / 32 /* move pad this many steps up/down each move */ | 39 | #define MOVE_STEP LCD_HEIGHT / 32 /* move pad this many steps up/down each move */ |
40 | 40 | ||
41 | /* variable button definitions */ | 41 | /* variable button definitions */ |
42 | #if CONFIG_KEYPAD == RECORDER_PAD | 42 | #if CONFIG_KEYPAD == IRIVER_H100_PAD |
43 | #define PONG_QUIT BUTTON_OFF | ||
44 | #define PONG_PAUSE BUTTON_ON | ||
45 | #define PONG_LEFT_UP BUTTON_F1 | ||
46 | #define PONG_LEFT_DOWN BUTTON_LEFT | ||
47 | #define PONG_RIGHT_UP BUTTON_F3 | ||
48 | #define PONG_RIGHT_DOWN BUTTON_RIGHT | ||
49 | |||
50 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
51 | #define PONG_QUIT BUTTON_OFF | ||
52 | #define PONG_PAUSE BUTTON_RIGHT | ||
53 | #define PONG_LEFT_UP BUTTON_LEFT | ||
54 | #define PONG_LEFT_DOWN BUTTON_MENU | ||
55 | #define PONG_RIGHT_UP BUTTON_UP | ||
56 | #define PONG_RIGHT_DOWN BUTTON_DOWN | ||
57 | |||
58 | #elif CONFIG_KEYPAD == IRIVER_H100_PAD | ||
59 | #define PONG_QUIT BUTTON_OFF | 43 | #define PONG_QUIT BUTTON_OFF |
60 | #define PONG_LEFT_UP BUTTON_UP | 44 | #define PONG_LEFT_UP BUTTON_UP |
61 | #define PONG_LEFT_DOWN BUTTON_DOWN | 45 | #define PONG_LEFT_DOWN BUTTON_DOWN |
diff --git a/apps/plugins/reversi/reversi-gui.h b/apps/plugins/reversi/reversi-gui.h index 4ec6bcb67b..ceeabeebc8 100644 --- a/apps/plugins/reversi/reversi-gui.h +++ b/apps/plugins/reversi/reversi-gui.h | |||
@@ -27,28 +27,8 @@ | |||
27 | #define GAME_FILE PLUGIN_GAMES_DIR "/reversi.rev" | 27 | #define GAME_FILE PLUGIN_GAMES_DIR "/reversi.rev" |
28 | 28 | ||
29 | /* variable button definitions */ | 29 | /* variable button definitions */ |
30 | #if CONFIG_KEYPAD == RECORDER_PAD | 30 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
31 | #define REVERSI_BUTTON_QUIT BUTTON_OFF | 31 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
32 | #define REVERSI_BUTTON_UP BUTTON_UP | ||
33 | #define REVERSI_BUTTON_DOWN BUTTON_DOWN | ||
34 | #define REVERSI_BUTTON_LEFT BUTTON_LEFT | ||
35 | #define REVERSI_BUTTON_RIGHT BUTTON_RIGHT | ||
36 | #define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY | ||
37 | #define REVERSI_BUTTON_MENU BUTTON_F1 | ||
38 | |||
39 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
40 | #define REVERSI_BUTTON_QUIT BUTTON_OFF | ||
41 | #define REVERSI_BUTTON_UP BUTTON_UP | ||
42 | #define REVERSI_BUTTON_DOWN BUTTON_DOWN | ||
43 | #define REVERSI_BUTTON_LEFT BUTTON_LEFT | ||
44 | #define REVERSI_BUTTON_RIGHT BUTTON_RIGHT | ||
45 | #define REVERSI_BUTTON_MAKE_MOVE BUTTON_MENU | ||
46 | #define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS | ||
47 | #define REVERSI_BUTTON_MENU_LONGPRESS | ||
48 | #define REVERSI_BUTTON_MENU BUTTON_MENU | ||
49 | |||
50 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
51 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
52 | #define REVERSI_BUTTON_QUIT BUTTON_OFF | 32 | #define REVERSI_BUTTON_QUIT BUTTON_OFF |
53 | #define REVERSI_BUTTON_UP BUTTON_UP | 33 | #define REVERSI_BUTTON_UP BUTTON_UP |
54 | #define REVERSI_BUTTON_DOWN BUTTON_DOWN | 34 | #define REVERSI_BUTTON_DOWN BUTTON_DOWN |
diff --git a/apps/plugins/rockblox.c b/apps/plugins/rockblox.c index b6cf6e5470..1732d61277 100644 --- a/apps/plugins/rockblox.c +++ b/apps/plugins/rockblox.c | |||
@@ -58,43 +58,6 @@ | |||
58 | 58 | ||
59 | #define ROCKBLOX_RC_OFF BUTTON_RC_STOP | 59 | #define ROCKBLOX_RC_OFF BUTTON_RC_STOP |
60 | 60 | ||
61 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
62 | |||
63 | #define ROCKBLOX_OFF BUTTON_OFF | ||
64 | #define ROCKBLOX_ROTATE_CCW BUTTON_UP | ||
65 | #define ROCKBLOX_ROTATE_CW BUTTON_PLAY | ||
66 | #define ROCKBLOX_DOWN BUTTON_DOWN | ||
67 | #define ROCKBLOX_LEFT BUTTON_LEFT | ||
68 | #define ROCKBLOX_RIGHT BUTTON_RIGHT | ||
69 | #define ROCKBLOX_DROP BUTTON_ON | ||
70 | #define ROCKBLOX_RESTART BUTTON_F1 | ||
71 | |||
72 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
73 | |||
74 | #define ROCKBLOX_OFF_PRE BUTTON_STOP | ||
75 | #define ROCKBLOX_OFF (BUTTON_STOP|BUTTON_REL) | ||
76 | #define ROCKBLOX_ROTATE_CCW BUTTON_PLAY | ||
77 | #define ROCKBLOX_ROTATE_CW (BUTTON_ON|BUTTON_PLAY) | ||
78 | #define ROCKBLOX_DOWN BUTTON_MENU | ||
79 | #define ROCKBLOX_LEFT BUTTON_LEFT | ||
80 | #define ROCKBLOX_RIGHT BUTTON_RIGHT | ||
81 | #define ROCKBLOX_DROP_PRE BUTTON_ON | ||
82 | #define ROCKBLOX_DROP (BUTTON_ON|BUTTON_REL) | ||
83 | #define ROCKBLOX_RESTART (BUTTON_STOP|BUTTON_MENU) | ||
84 | |||
85 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
86 | |||
87 | #define ROCKBLOX_OFF_PRE BUTTON_OFF | ||
88 | #define ROCKBLOX_OFF (BUTTON_OFF|BUTTON_REL) | ||
89 | #define ROCKBLOX_ROTATE_CCW BUTTON_UP | ||
90 | #define ROCKBLOX_ROTATE_CW (BUTTON_MENU|BUTTON_UP) | ||
91 | #define ROCKBLOX_DOWN BUTTON_DOWN | ||
92 | #define ROCKBLOX_LEFT BUTTON_LEFT | ||
93 | #define ROCKBLOX_RIGHT BUTTON_RIGHT | ||
94 | #define ROCKBLOX_DROP_PRE BUTTON_MENU | ||
95 | #define ROCKBLOX_DROP (BUTTON_MENU|BUTTON_REL) | ||
96 | #define ROCKBLOX_RESTART (BUTTON_OFF|BUTTON_MENU) | ||
97 | |||
98 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD | 61 | #elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD |
99 | 62 | ||
100 | #define ROCKBLOX_OFF BUTTON_POWER | 63 | #define ROCKBLOX_OFF BUTTON_POWER |
diff --git a/apps/plugins/rockbox_flash.c b/apps/plugins/rockbox_flash.c deleted file mode 100644 index 4837b03fb5..0000000000 --- a/apps/plugins/rockbox_flash.c +++ /dev/null | |||
@@ -1,967 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Plugin for reprogramming only the second image in Flash ROM. | ||
11 | * !!! DON'T MESS WITH THIS CODE UNLESS YOU'RE ABSOLUTELY SURE WHAT YOU DO !!! | ||
12 | * | ||
13 | * Copyright (C) 2003 Jörg Hohensohn aka [IDC]Dragon | ||
14 | * | ||
15 | * This program is free software; you can redistribute it and/or | ||
16 | * modify it under the terms of the GNU General Public License | ||
17 | * as published by the Free Software Foundation; either version 2 | ||
18 | * of the License, or (at your option) any later version. | ||
19 | * | ||
20 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
21 | * KIND, either express or implied. | ||
22 | * | ||
23 | ****************************************************************************/ | ||
24 | #include "plugin.h" | ||
25 | |||
26 | /* define DUMMY if you only want to "play" with the UI, does no harm */ | ||
27 | /* #define DUMMY */ | ||
28 | |||
29 | #define LATEST_BOOTLOADER_VERSION 3 /* update this with the bootloader */ | ||
30 | |||
31 | #ifndef UINT8 | ||
32 | #define UINT8 unsigned char | ||
33 | #endif | ||
34 | |||
35 | #ifndef UINT16 | ||
36 | #define UINT16 unsigned short | ||
37 | #endif | ||
38 | |||
39 | #ifndef UINT32 | ||
40 | #define UINT32 unsigned long | ||
41 | #endif | ||
42 | |||
43 | /* hard-coded values */ | ||
44 | static volatile UINT8* FB = (UINT8*)0x02000000; /* Flash base address */ | ||
45 | #define SECTORSIZE 4096 /* size of one flash sector */ | ||
46 | |||
47 | #define ROCKBOX_DEST 0x09000000 | ||
48 | #define ROCKBOX_EXEC 0x09000200 | ||
49 | #define BOOT_VERS_ADR 0xFA /* position of bootloader version value in Flash */ | ||
50 | #define FW_VERS_ADR 0xFE /* position of firmware version value in Flash */ | ||
51 | #define UCL_HEADER 26 /* size of the header generated by uclpack */ | ||
52 | |||
53 | #if CONFIG_KEYPAD == ONDIO_PAD /* limited keypad */ | ||
54 | #define KEY1 BUTTON_LEFT | ||
55 | #define KEY2 BUTTON_UP | ||
56 | #define KEYNAME1 "Left" | ||
57 | #define KEYNAME2 "Up" | ||
58 | #else /* recorder keypad */ | ||
59 | #define KEY1 BUTTON_F1 | ||
60 | #define KEY2 BUTTON_F2 | ||
61 | #define KEYNAME1 "F1" | ||
62 | #define KEYNAME2 "F2" | ||
63 | #endif | ||
64 | |||
65 | typedef struct | ||
66 | { | ||
67 | UINT32 destination; /* address to copy it to */ | ||
68 | UINT32 size; /* how many bytes of payload (to the next header) */ | ||
69 | UINT32 execute; /* entry point */ | ||
70 | UINT32 flags; /* uncompressed or compressed */ | ||
71 | /* end of header, now comes the payload */ | ||
72 | } tImageHeader; | ||
73 | |||
74 | /* result of the CheckFirmwareFile() function */ | ||
75 | typedef enum | ||
76 | { | ||
77 | eOK = 0, | ||
78 | eFileNotFound, /* errors from here on */ | ||
79 | eTooBig, | ||
80 | eTooSmall, | ||
81 | eReadErr, | ||
82 | eNotUCL, | ||
83 | eWrongAlgorithm, | ||
84 | eMultiBlocks, | ||
85 | eBadRomLink | ||
86 | } tCheckResult; | ||
87 | |||
88 | typedef struct | ||
89 | { | ||
90 | UINT8 manufacturer; | ||
91 | UINT8 id; | ||
92 | int size; | ||
93 | char name[32]; | ||
94 | } tFlashInfo; | ||
95 | |||
96 | static UINT8* sector; /* better not place this on the stack... */ | ||
97 | |||
98 | /***************** Flash Functions *****************/ | ||
99 | |||
100 | |||
101 | /* read the manufacturer and device ID */ | ||
102 | static bool ReadID(volatile UINT8* pBase, UINT8* pManufacturerID, | ||
103 | UINT8* pDeviceID) | ||
104 | { | ||
105 | UINT8 not_manu, not_id; /* read values before switching to ID mode */ | ||
106 | UINT8 manu, id; /* read values when in ID mode */ | ||
107 | |||
108 | pBase = (UINT8*)((UINT32)pBase & 0xFFF80000); /* round down to 512k align, | ||
109 | to make sure */ | ||
110 | |||
111 | not_manu = pBase[0]; /* read the normal content */ | ||
112 | not_id = pBase[1]; /* should be 'A' (0x41) and 'R' (0x52) from the | ||
113 | "ARCH" marker */ | ||
114 | |||
115 | pBase[0x5555] = 0xAA; /* enter command mode */ | ||
116 | pBase[0x2AAA] = 0x55; | ||
117 | pBase[0x5555] = 0x90; /* ID command */ | ||
118 | rb->sleep(HZ/50); /* Atmel wants 20ms pause here */ | ||
119 | |||
120 | manu = pBase[0]; | ||
121 | id = pBase[1]; | ||
122 | |||
123 | pBase[0] = 0xF0; /* reset flash (back to normal read mode) */ | ||
124 | rb->sleep(HZ/50); /* Atmel wants 20ms pause here */ | ||
125 | |||
126 | /* I assume success if the obtained values are different from | ||
127 | the normal flash content. This is not perfectly bulletproof, they | ||
128 | could theoretically be the same by chance, causing us to fail. */ | ||
129 | if (not_manu != manu || not_id != id) /* a value has changed */ | ||
130 | { | ||
131 | *pManufacturerID = manu; /* return the results */ | ||
132 | *pDeviceID = id; | ||
133 | return true; /* success */ | ||
134 | } | ||
135 | return false; /* fail */ | ||
136 | } | ||
137 | |||
138 | /* erase the sector which contains the given address */ | ||
139 | static bool EraseSector(volatile UINT8* pAddr) | ||
140 | { | ||
141 | #ifdef DUMMY | ||
142 | (void)pAddr; /* prevents warning */ | ||
143 | return true; | ||
144 | #else | ||
145 | volatile UINT8* pBase = | ||
146 | (UINT8*)((UINT32)pAddr & 0xFFF80000); /* round down to 512k align */ | ||
147 | unsigned timeout = 43000; /* the timeout loop should be no less than | ||
148 | 25ms */ | ||
149 | |||
150 | pBase[0x5555] = 0xAA; /* enter command mode */ | ||
151 | pBase[0x2AAA] = 0x55; | ||
152 | pBase[0x5555] = 0x80; /* erase command */ | ||
153 | pBase[0x5555] = 0xAA; /* enter command mode */ | ||
154 | pBase[0x2AAA] = 0x55; | ||
155 | *pAddr = 0x30; /* erase the sector */ | ||
156 | |||
157 | /* I counted 7 instructions for this loop -> min. 0.58 us per round | ||
158 | Plus memory waitstates it will be much more, gives margin */ | ||
159 | while (*pAddr != 0xFF && --timeout); /* poll for erased */ | ||
160 | |||
161 | return (timeout != 0); | ||
162 | #endif | ||
163 | } | ||
164 | |||
165 | /* address must be in an erased location */ | ||
166 | static inline bool ProgramByte(volatile UINT8* pAddr, UINT8 data) | ||
167 | { | ||
168 | #ifdef DUMMY | ||
169 | (void)pAddr; /* prevents warnings */ | ||
170 | (void)data; | ||
171 | return true; | ||
172 | #else | ||
173 | unsigned timeout = 35; /* the timeout loop should be no less than 20us */ | ||
174 | |||
175 | if (~*pAddr & data) /* just a safety feature, not really necessary */ | ||
176 | return false; /* can't set any bit from 0 to 1 */ | ||
177 | |||
178 | FB[0x5555] = 0xAA; /* enter command mode */ | ||
179 | FB[0x2AAA] = 0x55; | ||
180 | FB[0x5555] = 0xA0; /* byte program command */ | ||
181 | |||
182 | *pAddr = data; | ||
183 | |||
184 | /* I counted 7 instructions for this loop -> min. 0.58 us per round | ||
185 | Plus memory waitstates it will be much more, gives margin */ | ||
186 | while (*pAddr != data && --timeout); /* poll for programmed */ | ||
187 | |||
188 | return (timeout != 0); | ||
189 | #endif | ||
190 | } | ||
191 | |||
192 | /* this returns true if supported and fills the info struct */ | ||
193 | static bool GetFlashInfo(tFlashInfo* pInfo) | ||
194 | { | ||
195 | rb->memset(pInfo, 0, sizeof(tFlashInfo)); | ||
196 | |||
197 | if (!ReadID(FB, &pInfo->manufacturer, &pInfo->id)) | ||
198 | return false; | ||
199 | |||
200 | if (pInfo->manufacturer == 0xBF) /* SST */ | ||
201 | { | ||
202 | if (pInfo->id == 0xD6) | ||
203 | { | ||
204 | pInfo->size = 256* 1024; /* 256k */ | ||
205 | rb->strcpy(pInfo->name, "SST39VF020"); | ||
206 | return true; | ||
207 | } | ||
208 | else if (pInfo->id == 0xD7) | ||
209 | { | ||
210 | pInfo->size = 512* 1024; /* 512k */ | ||
211 | rb->strcpy(pInfo->name, "SST39VF040"); | ||
212 | return true; | ||
213 | } | ||
214 | else | ||
215 | return false; | ||
216 | } | ||
217 | return false; | ||
218 | } | ||
219 | |||
220 | |||
221 | /*********** Tool Functions ************/ | ||
222 | |||
223 | /* read a 32 bit value from memory, big endian */ | ||
224 | static UINT32 Read32(UINT8* pByte) | ||
225 | { | ||
226 | UINT32 value; | ||
227 | |||
228 | value = (UINT32)pByte[0] << 24; | ||
229 | value |= (UINT32)pByte[1] << 16; | ||
230 | value |= (UINT32)pByte[2] << 8; | ||
231 | value |= (UINT32)pByte[3]; | ||
232 | |||
233 | return value; | ||
234 | } | ||
235 | |||
236 | /* get the start address of the second image */ | ||
237 | static tImageHeader* GetSecondImage(void) | ||
238 | { | ||
239 | tImageHeader* pImage1; | ||
240 | UINT32 pos = 0; /* default: not found */ | ||
241 | UINT32* pFlash = (UINT32*)FB; | ||
242 | |||
243 | /* determine the first image position */ | ||
244 | pos = pFlash[2] + pFlash[3]; /* position + size of the bootloader | ||
245 | = after it */ | ||
246 | pos = (pos + 3) & ~3; /* be sure it's 32 bit aligned */ | ||
247 | pImage1 = (tImageHeader*)pos; | ||
248 | |||
249 | if (pImage1->destination != ROCKBOX_DEST || | ||
250 | pImage1->execute != ROCKBOX_EXEC) | ||
251 | return 0; /* seems to be no Archos/Rockbox image in here */ | ||
252 | |||
253 | if (pImage1->size != 0) | ||
254 | { | ||
255 | /* success, we have a second image */ | ||
256 | pos = (UINT32)pImage1 + sizeof(tImageHeader) + pImage1->size; | ||
257 | if (((pos + SECTORSIZE-1) & ~(SECTORSIZE-1)) != pos) | ||
258 | { /* not sector-aligned */ | ||
259 | pos = 0; /* sanity check failed */ | ||
260 | } | ||
261 | } | ||
262 | |||
263 | return (tImageHeader*)pos; | ||
264 | } | ||
265 | |||
266 | /* return bootloader version */ | ||
267 | static inline unsigned BootloaderVersion(void) | ||
268 | { | ||
269 | return FB[BOOT_VERS_ADR]; | ||
270 | } | ||
271 | |||
272 | /*********** Image File Functions ************/ | ||
273 | |||
274 | /* so far, only compressed images in UCL NRV algorithm 2e supported */ | ||
275 | tCheckResult CheckImageFile(char* filename, int space, | ||
276 | tImageHeader* pHeader, UINT8* pos) | ||
277 | { | ||
278 | int i; | ||
279 | int fd; | ||
280 | int filesize; /* size info */ | ||
281 | |||
282 | int fileread = 0; /* total size as read from the file */ | ||
283 | int read; /* how many for this sector */ | ||
284 | |||
285 | /* magic file header for compressed files */ | ||
286 | static const UINT8 magic[8] = { 0x00,0xe9,0x55,0x43,0x4c,0xff,0x01,0x1a }; | ||
287 | UINT8 ucl_header[UCL_HEADER]; | ||
288 | |||
289 | fd = rb->open(filename, O_RDONLY); | ||
290 | if (fd < 0) | ||
291 | return eFileNotFound; | ||
292 | |||
293 | filesize = rb->filesize(fd); | ||
294 | if (filesize - (int)sizeof(ucl_header) - 8 > space) | ||
295 | { | ||
296 | rb->close(fd); | ||
297 | return eTooBig; | ||
298 | } | ||
299 | else if (filesize < 10000) /* give it some reasonable lower limit */ | ||
300 | { | ||
301 | rb->close(fd); | ||
302 | return eTooSmall; | ||
303 | } | ||
304 | |||
305 | /* do some sanity checks */ | ||
306 | |||
307 | read = rb->read(fd, ucl_header, sizeof(ucl_header)); | ||
308 | fileread += read; | ||
309 | if (read != sizeof(ucl_header)) | ||
310 | { | ||
311 | rb->close(fd); | ||
312 | return eReadErr; | ||
313 | } | ||
314 | |||
315 | /* compare the magic header */ | ||
316 | for (i=0; i<8; i++) | ||
317 | { | ||
318 | if (ucl_header[i] != magic[i]) | ||
319 | { | ||
320 | rb->close(fd); | ||
321 | return eNotUCL; | ||
322 | } | ||
323 | } | ||
324 | |||
325 | pHeader->size = Read32(ucl_header + 22); /* compressed size */ | ||
326 | if (pHeader->size != filesize - sizeof(ucl_header) - 8) | ||
327 | { | ||
328 | rb->close(fd); | ||
329 | return eMultiBlocks; | ||
330 | } | ||
331 | |||
332 | /* fill in the hardcoded defaults of the header */ | ||
333 | pHeader->destination = ROCKBOX_DEST; | ||
334 | pHeader->execute = ROCKBOX_EXEC; | ||
335 | |||
336 | if (Read32(ucl_header + 18) > pHeader->size) /* compare with uncompressed | ||
337 | size */ | ||
338 | { /* compressed, normal case */ | ||
339 | pHeader->flags = 0x00000001; /* flags for UCL compressed */ | ||
340 | |||
341 | /* check for supported algorithm */ | ||
342 | if (ucl_header[12] != 0x2E) | ||
343 | { | ||
344 | rb->close(fd); | ||
345 | return eWrongAlgorithm; | ||
346 | } | ||
347 | } | ||
348 | else | ||
349 | { /* uncompressed, either to be copied or run directly in flash */ | ||
350 | UINT32 reset_vector; /* image has to start with reset vector */ | ||
351 | |||
352 | pHeader->flags = 0x00000000; /* uncompressed */ | ||
353 | |||
354 | read = rb->read(fd, &reset_vector, sizeof(reset_vector)); | ||
355 | fileread += read; | ||
356 | if (read != sizeof(reset_vector)) | ||
357 | { | ||
358 | rb->close(fd); | ||
359 | return eReadErr; | ||
360 | } | ||
361 | if (reset_vector >= (UINT32)FB | ||
362 | && reset_vector < (UINT32)FB+512*1024) /* ROM address? */ | ||
363 | { | ||
364 | /* assume in-place, executing directly in flash */ | ||
365 | pHeader->destination = (UINT32)(pos + sizeof(tImageHeader)); | ||
366 | |||
367 | /* for new RomBox, this isn't the reset vector, | ||
368 | but the link address, for us to check the position */ | ||
369 | if(pHeader->destination != reset_vector) /* compare link addr. */ | ||
370 | { | ||
371 | rb->close(fd); | ||
372 | return eBadRomLink; /* not matching the start address */ | ||
373 | } | ||
374 | |||
375 | /* read the now following reset vector */ | ||
376 | read = rb->read(fd, &reset_vector, sizeof(reset_vector)); | ||
377 | fileread += read; | ||
378 | if (read != sizeof(reset_vector)) | ||
379 | { | ||
380 | rb->close(fd); | ||
381 | return eReadErr; | ||
382 | } | ||
383 | } | ||
384 | |||
385 | pHeader->execute = reset_vector; | ||
386 | } | ||
387 | |||
388 | /* check if we can read the whole file */ | ||
389 | do | ||
390 | { | ||
391 | read = rb->read(fd, sector, SECTORSIZE); | ||
392 | fileread += read; | ||
393 | } while (read == SECTORSIZE); | ||
394 | |||
395 | rb->close(fd); | ||
396 | |||
397 | if (fileread != filesize) | ||
398 | return eReadErr; | ||
399 | |||
400 | return eOK; | ||
401 | } | ||
402 | |||
403 | |||
404 | /* returns the # of failures, 0 on success */ | ||
405 | static unsigned ProgramImageFile(char* filename, UINT8* pos, | ||
406 | tImageHeader* pImageHeader, | ||
407 | int start, int size) | ||
408 | { | ||
409 | int i; | ||
410 | int fd; | ||
411 | int read; /* how many for this sector */ | ||
412 | unsigned failures = 0; | ||
413 | |||
414 | fd = rb->open(filename, O_RDONLY); | ||
415 | if (fd < 0) | ||
416 | return false; | ||
417 | |||
418 | /* no error checking necessary here, we checked for minimum size | ||
419 | already */ | ||
420 | rb->lseek(fd, start, SEEK_SET); /* go to start position */ | ||
421 | |||
422 | *(tImageHeader*)sector = *pImageHeader; /* copy header into sector | ||
423 | buffer */ | ||
424 | read = rb->read(fd, sector + sizeof(tImageHeader), | ||
425 | SECTORSIZE - sizeof(tImageHeader)); /* payload behind */ | ||
426 | size -= read; | ||
427 | read += sizeof(tImageHeader); /* to be programmed, but not part of the | ||
428 | file */ | ||
429 | |||
430 | do { | ||
431 | if (!EraseSector(pos)) | ||
432 | { | ||
433 | /* nothing we can do, let the programming count the errors */ | ||
434 | } | ||
435 | |||
436 | for (i=0; i<read; i++) | ||
437 | { | ||
438 | if (!ProgramByte(pos + i, sector[i])) | ||
439 | { | ||
440 | failures++; | ||
441 | } | ||
442 | } | ||
443 | |||
444 | pos += SECTORSIZE; | ||
445 | read = rb->read(fd, sector, (size > SECTORSIZE) ? SECTORSIZE : size); | ||
446 | /* payload for next sector */ | ||
447 | size -= read; | ||
448 | } while (read > 0); | ||
449 | |||
450 | rb->close(fd); | ||
451 | |||
452 | return failures; | ||
453 | } | ||
454 | |||
455 | /* returns the # of failures, 0 on success */ | ||
456 | static unsigned VerifyImageFile(char* filename, UINT8* pos, | ||
457 | tImageHeader* pImageHeader, | ||
458 | int start, int size) | ||
459 | { | ||
460 | int i; | ||
461 | int fd; | ||
462 | int read; /* how many for this sector */ | ||
463 | unsigned failures = 0; | ||
464 | |||
465 | fd = rb->open(filename, O_RDONLY); | ||
466 | if (fd < 0) | ||
467 | return false; | ||
468 | |||
469 | /* no error checking necessary here, we checked for minimum size | ||
470 | already */ | ||
471 | rb->lseek(fd, start, SEEK_SET); /* go to start position */ | ||
472 | |||
473 | *(tImageHeader*)sector = *pImageHeader; /* copy header into sector | ||
474 | buffer */ | ||
475 | read = rb->read(fd, sector + sizeof(tImageHeader), | ||
476 | SECTORSIZE - sizeof(tImageHeader)); /* payload behind */ | ||
477 | |||
478 | size -= read; | ||
479 | read += sizeof(tImageHeader); /* to be programmed, but not part of the | ||
480 | file */ | ||
481 | |||
482 | do | ||
483 | { | ||
484 | for (i=0; i<read; i++) | ||
485 | { | ||
486 | if (pos[i] != sector[i]) | ||
487 | { | ||
488 | failures++; | ||
489 | } | ||
490 | } | ||
491 | |||
492 | pos += SECTORSIZE; | ||
493 | read = rb->read(fd, sector, (size > SECTORSIZE) ? SECTORSIZE : size); | ||
494 | /* payload for next sector */ | ||
495 | size -= read; | ||
496 | } while (read); | ||
497 | |||
498 | rb->close(fd); | ||
499 | |||
500 | return failures; | ||
501 | } | ||
502 | |||
503 | |||
504 | /***************** User Interface Functions *****************/ | ||
505 | |||
506 | static int WaitForButton(void) | ||
507 | { | ||
508 | int button; | ||
509 | |||
510 | do | ||
511 | { | ||
512 | button = rb->button_get(true); | ||
513 | } while (IS_SYSEVENT(button) || (button & BUTTON_REL)); | ||
514 | |||
515 | return button; | ||
516 | } | ||
517 | |||
518 | #ifdef HAVE_LCD_BITMAP | ||
519 | /* helper for DoUserDialog() */ | ||
520 | static void ShowFlashInfo(tFlashInfo* pInfo, tImageHeader* pImageHeader) | ||
521 | { | ||
522 | char buf[32]; | ||
523 | |||
524 | if (!pInfo->manufacturer) | ||
525 | { | ||
526 | rb->lcd_puts_scroll(0, 0, "Flash: M=?? D=??"); | ||
527 | } | ||
528 | else | ||
529 | { | ||
530 | if (pInfo->size) | ||
531 | { | ||
532 | rb->snprintf(buf, sizeof(buf), "Flash size: %d KB", | ||
533 | pInfo->size / 1024); | ||
534 | rb->lcd_puts_scroll(0, 0, buf); | ||
535 | } | ||
536 | else | ||
537 | { | ||
538 | rb->lcd_puts_scroll(0, 0, "Unsupported chip"); | ||
539 | } | ||
540 | |||
541 | } | ||
542 | |||
543 | if (pImageHeader) | ||
544 | { | ||
545 | rb->snprintf(buf, sizeof(buf), "Image at %d KB", | ||
546 | ((UINT8*)pImageHeader - FB) / 1024); | ||
547 | rb->lcd_puts_scroll(0, 1, buf); | ||
548 | } | ||
549 | else | ||
550 | { | ||
551 | rb->lcd_puts_scroll(0, 1, "No image found!"); | ||
552 | } | ||
553 | } | ||
554 | |||
555 | |||
556 | /* Kind of our main function, defines the application flow. */ | ||
557 | /* recorder version */ | ||
558 | static void DoUserDialog(char* filename) | ||
559 | { | ||
560 | tImageHeader ImageHeader; | ||
561 | tFlashInfo FlashInfo; | ||
562 | int button; | ||
563 | int rc; /* generic return code */ | ||
564 | UINT32 space, aligned_size, true_size; | ||
565 | UINT8* pos; | ||
566 | size_t memleft; | ||
567 | unsigned bl_version; | ||
568 | bool show_greet = false; | ||
569 | |||
570 | /* this can only work if Rockbox runs in DRAM, not flash ROM */ | ||
571 | if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */ | ||
572 | { /* we're running from flash */ | ||
573 | rb->splash(HZ*3, "Not from ROM"); | ||
574 | return; /* exit */ | ||
575 | } | ||
576 | |||
577 | /* refuse to work if the power may fail meanwhile */ | ||
578 | if (!rb->battery_level_safe()) | ||
579 | { | ||
580 | rb->splash(HZ*3, "Battery too low!"); | ||
581 | return; /* exit */ | ||
582 | } | ||
583 | |||
584 | /* "allocate" memory */ | ||
585 | sector = rb->plugin_get_buffer(&memleft); | ||
586 | if (memleft < SECTORSIZE) /* need buffer for a flash sector */ | ||
587 | { | ||
588 | rb->splash(HZ*3, "Out of memory"); | ||
589 | return; /* exit */ | ||
590 | } | ||
591 | |||
592 | rb->lcd_setfont(FONT_SYSFIXED); | ||
593 | |||
594 | pos = (void*)GetSecondImage(); | ||
595 | rc = GetFlashInfo(&FlashInfo); | ||
596 | |||
597 | ShowFlashInfo(&FlashInfo, (void*)pos); | ||
598 | rb->lcd_update(); | ||
599 | |||
600 | if (FlashInfo.size == 0) /* no valid chip */ | ||
601 | { | ||
602 | rb->splash(HZ*3, "Not flashable"); | ||
603 | return; /* exit */ | ||
604 | } | ||
605 | else if (pos == 0) | ||
606 | { | ||
607 | rb->splash(HZ*3, "No image"); | ||
608 | return; /* exit */ | ||
609 | } | ||
610 | |||
611 | bl_version = BootloaderVersion(); | ||
612 | /* Upgrade currently not recommended for FM and V2 | ||
613 | recorder due to bugs in V3 BootBox. (FS#12426) */ | ||
614 | #if !defined(ARCHOS_FMRECORDER) && !defined(ARCHOS_RECORDERV2) | ||
615 | if (bl_version < LATEST_BOOTLOADER_VERSION) | ||
616 | { | ||
617 | rb->lcd_putsf(0, 0, "Bootloader V%d", bl_version); | ||
618 | rb->lcd_puts(0, 1, "Hint: You're not "); | ||
619 | rb->lcd_puts(0, 2, "using the latest "); | ||
620 | rb->lcd_puts(0, 3, "bootloader. "); | ||
621 | rb->lcd_puts(0, 4, "A full reflash is "); | ||
622 | rb->lcd_puts(0, 5, "recommended. "); | ||
623 | rb->lcd_puts(0, 6, "Press " KEYNAME1 " to ignore"); | ||
624 | rb->lcd_update(); | ||
625 | |||
626 | if (WaitForButton() != KEY1) | ||
627 | { | ||
628 | return; | ||
629 | } | ||
630 | rb->lcd_clear_display(); | ||
631 | } | ||
632 | #endif | ||
633 | |||
634 | rb->lcd_puts(0, show_greet ? 0 : 3, "Checking..."); | ||
635 | rb->lcd_update(); | ||
636 | |||
637 | space = FlashInfo.size - (pos-FB + sizeof(ImageHeader)); | ||
638 | /* size minus start */ | ||
639 | |||
640 | rc = CheckImageFile(filename, space, &ImageHeader, pos); | ||
641 | if (rc != eOK) | ||
642 | { | ||
643 | rb->lcd_clear_display(); /* make room for error message */ | ||
644 | show_greet = true; /* verbose */ | ||
645 | } | ||
646 | |||
647 | rb->lcd_puts(0, show_greet ? 0 : 3, "Checked:"); | ||
648 | switch (rc) { | ||
649 | case eOK: | ||
650 | rb->lcd_puts(0, show_greet ? 0 : 4, "File OK."); | ||
651 | break; | ||
652 | case eNotUCL: | ||
653 | rb->lcd_puts(0, 1, "File not UCL "); | ||
654 | rb->lcd_puts(0, 2, "compressed."); | ||
655 | rb->lcd_puts(0, 3, "Use uclpack --2e"); | ||
656 | rb->lcd_puts(0, 4, " --10 rockbox.bin"); | ||
657 | break; | ||
658 | case eWrongAlgorithm: | ||
659 | rb->lcd_puts(0, 1, "Wrong algorithm"); | ||
660 | rb->lcd_puts(0, 2, "for compression."); | ||
661 | rb->lcd_puts(0, 3, "Use uclpack --2e"); | ||
662 | rb->lcd_puts(0, 4, " --10 rockbox.bin"); | ||
663 | break; | ||
664 | case eFileNotFound: | ||
665 | rb->lcd_puts(0, 1, "File not found:"); | ||
666 | rb->lcd_puts_scroll(0, 2, filename); | ||
667 | break; | ||
668 | case eTooBig: | ||
669 | rb->lcd_puts(0, 1, "File too big,"); | ||
670 | rb->lcd_puts(0, 2, "won't fit in chip."); | ||
671 | if (bl_version < LATEST_BOOTLOADER_VERSION) | ||
672 | { | ||
673 | rb->lcd_puts(0, 3, "Upgrade bootloader"); | ||
674 | } | ||
675 | break; | ||
676 | case eTooSmall: | ||
677 | rb->lcd_puts(0, 1, "File too small."); | ||
678 | rb->lcd_puts(0, 2, "Incomplete?"); | ||
679 | break; | ||
680 | case eReadErr: | ||
681 | rb->lcd_puts(0, 1, "File read error."); | ||
682 | break; | ||
683 | case eMultiBlocks: | ||
684 | rb->lcd_puts(0, 1, "File invalid."); | ||
685 | rb->lcd_puts(0, 2, "Blocksize"); | ||
686 | rb->lcd_puts(0, 3, " too small?"); | ||
687 | break; | ||
688 | case eBadRomLink: | ||
689 | rb->lcd_puts(0, 1, "Bootloader not"); | ||
690 | rb->lcd_puts(0, 2, "compatible with"); | ||
691 | rb->lcd_puts(0, 3, "RomBox. Start"); | ||
692 | rb->lcd_puts(0, 4, "address mismatch."); | ||
693 | break; | ||
694 | default: | ||
695 | rb->lcd_puts(0, 1, "Check failed."); | ||
696 | break; | ||
697 | } | ||
698 | |||
699 | if (rc == eOK) | ||
700 | { /* was OK */ | ||
701 | rb->lcd_puts(0, 6, "[" KEYNAME2 "] to program"); | ||
702 | rb->lcd_puts(0, 7, "other key to exit"); | ||
703 | } | ||
704 | else | ||
705 | { /* error occured */ | ||
706 | rb->lcd_puts(0, 6, "Any key to exit"); | ||
707 | } | ||
708 | rb->lcd_update(); | ||
709 | |||
710 | button = WaitForButton(); | ||
711 | if (rc != eOK || button != KEY2) | ||
712 | { | ||
713 | return; | ||
714 | } | ||
715 | |||
716 | true_size = ImageHeader.size; | ||
717 | aligned_size = ((sizeof(tImageHeader) + true_size + SECTORSIZE-1) & | ||
718 | ~(SECTORSIZE-1)) - sizeof(tImageHeader); /* round up to | ||
719 | next flash | ||
720 | sector */ | ||
721 | ImageHeader.size = aligned_size; /* increase image size such that we reach | ||
722 | the next sector */ | ||
723 | |||
724 | rb->lcd_clear_display(); | ||
725 | rb->lcd_puts_scroll(0, 0, "Programming..."); | ||
726 | rb->lcd_update(); | ||
727 | |||
728 | rc = ProgramImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size); | ||
729 | if (rc) | ||
730 | { /* errors */ | ||
731 | rb->lcd_clear_display(); | ||
732 | rb->lcd_puts(0, 0, "Error:"); | ||
733 | rb->lcd_puts(0, 1, "Programming fail!"); | ||
734 | rb->lcd_putsf(0, 2, "%d errors", rc); | ||
735 | rb->lcd_update(); | ||
736 | button = WaitForButton(); | ||
737 | } | ||
738 | |||
739 | rb->lcd_clear_display(); | ||
740 | rb->lcd_puts_scroll(0, 0, "Verifying..."); | ||
741 | rb->lcd_update(); | ||
742 | |||
743 | rc = VerifyImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size); | ||
744 | |||
745 | rb->lcd_clear_display(); | ||
746 | if (rc == 0) | ||
747 | { | ||
748 | rb->lcd_puts(0, 0, "Verify OK."); | ||
749 | } | ||
750 | else | ||
751 | { | ||
752 | rb->lcd_puts(0, 0, "Error:"); | ||
753 | rb->lcd_puts(0, 1, "Verify fail!"); | ||
754 | rb->lcd_putsf(0, 2, "%d errors", rc); | ||
755 | rb->lcd_puts(0, 3, "Use safe image"); | ||
756 | rb->lcd_puts(0, 4, "if booting hangs:"); | ||
757 | rb->lcd_puts(0, 5, "F1 during power-on"); | ||
758 | } | ||
759 | rb->lcd_puts(0, 7, "Any key to exit"); | ||
760 | rb->lcd_update(); | ||
761 | WaitForButton(); | ||
762 | } | ||
763 | |||
764 | #else /* #ifdef HAVE_LCD_BITMAP */ | ||
765 | |||
766 | /* Player version */ | ||
767 | static void DoUserDialog(char* filename) | ||
768 | { | ||
769 | tImageHeader ImageHeader; | ||
770 | tFlashInfo FlashInfo; | ||
771 | static char buf[MAX_PATH]; | ||
772 | int button; | ||
773 | int rc; /* generic return code */ | ||
774 | UINT32 space, aligned_size, true_size; | ||
775 | UINT8* pos; | ||
776 | size_t memleft; | ||
777 | unsigned bl_version; | ||
778 | |||
779 | /* this can only work if Rockbox runs in DRAM, not flash ROM */ | ||
780 | if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */ | ||
781 | { /* we're running from flash */ | ||
782 | rb->splash(HZ*3, "Not from ROM"); | ||
783 | return; /* exit */ | ||
784 | } | ||
785 | |||
786 | /* refuse to work if the power may fail meanwhile */ | ||
787 | if (!rb->battery_level_safe()) | ||
788 | { | ||
789 | rb->splash(HZ*3, "Batt. too low!"); | ||
790 | return; /* exit */ | ||
791 | } | ||
792 | |||
793 | /* "allocate" memory */ | ||
794 | sector = rb->plugin_get_buffer(&memleft); | ||
795 | if (memleft < SECTORSIZE) /* need buffer for a flash sector */ | ||
796 | { | ||
797 | rb->splash(HZ*3, "Out of memory"); | ||
798 | return; /* exit */ | ||
799 | } | ||
800 | |||
801 | pos = (void*)GetSecondImage(); | ||
802 | rc = GetFlashInfo(&FlashInfo); | ||
803 | |||
804 | if (FlashInfo.size == 0) /* no valid chip */ | ||
805 | { | ||
806 | rb->splash(HZ*3, "Not flashable"); | ||
807 | return; /* exit */ | ||
808 | } | ||
809 | else if (pos == 0) | ||
810 | { | ||
811 | rb->splash(HZ*3, "No image"); | ||
812 | return; /* exit */ | ||
813 | } | ||
814 | |||
815 | bl_version = BootloaderVersion(); | ||
816 | if (bl_version < LATEST_BOOTLOADER_VERSION) | ||
817 | { | ||
818 | rb->lcd_puts_scroll(0, 0, "Hint: You're not using the latest bootloader. A full reflash is recommended, but not required."); | ||
819 | rb->lcd_puts_scroll(0, 1, "Press [Menu] to ignore"); | ||
820 | rb->lcd_update(); | ||
821 | |||
822 | if (WaitForButton() != BUTTON_MENU) | ||
823 | { | ||
824 | return; | ||
825 | } | ||
826 | rb->lcd_clear_display(); | ||
827 | } | ||
828 | |||
829 | rb->lcd_puts(0, 0, "Checking..."); | ||
830 | rb->lcd_update(); | ||
831 | |||
832 | space = FlashInfo.size - (pos-FB + sizeof(ImageHeader)); | ||
833 | /* size minus start */ | ||
834 | |||
835 | rc = CheckImageFile(filename, space, &ImageHeader, pos); | ||
836 | rb->lcd_puts(0, 0, "Checked:"); | ||
837 | switch (rc) { | ||
838 | case eOK: | ||
839 | rb->lcd_puts(0, 1, "File OK."); | ||
840 | rb->sleep(HZ*1); | ||
841 | break; | ||
842 | case eNotUCL: | ||
843 | rb->lcd_puts_scroll(0, 1, "File not UCL compressed."); | ||
844 | break; | ||
845 | case eWrongAlgorithm: | ||
846 | rb->lcd_puts_scroll(0, 1, "Wrong compression algorithm."); | ||
847 | break; | ||
848 | case eFileNotFound: | ||
849 | rb->lcd_puts_scroll(0, 1, "File not found."); | ||
850 | break; | ||
851 | case eTooBig: | ||
852 | if (bl_version < LATEST_BOOTLOADER_VERSION) | ||
853 | { | ||
854 | rb->lcd_puts_scroll(0, 1, "File too big, upgrade bootloader."); | ||
855 | } | ||
856 | else | ||
857 | { | ||
858 | rb->lcd_puts_scroll(0, 1, "File too big."); | ||
859 | } | ||
860 | break; | ||
861 | case eTooSmall: | ||
862 | rb->lcd_puts_scroll(0, 1, "File too small. Incomplete?"); | ||
863 | break; | ||
864 | case eReadErr: | ||
865 | rb->lcd_puts_scroll(0, 1, "File read error."); | ||
866 | break; | ||
867 | case eMultiBlocks: | ||
868 | rb->lcd_puts_scroll(0, 1, "File invalid. Blocksize too small?"); | ||
869 | break; | ||
870 | case eBadRomLink: | ||
871 | rb->lcd_puts_scroll(0, 1, "Bootloader not compatible with RomBox."); | ||
872 | break; | ||
873 | default: | ||
874 | rb->lcd_puts_scroll(0, 1, "Check failed."); | ||
875 | break; | ||
876 | } | ||
877 | rb->lcd_update(); | ||
878 | |||
879 | if (rc == eOK) | ||
880 | { /* was OK */ | ||
881 | rb->lcd_clear_display(); | ||
882 | rb->lcd_puts_scroll(0, 0, "[ON] to program,"); | ||
883 | rb->lcd_puts_scroll(0, 1, "other key to exit."); | ||
884 | } | ||
885 | else | ||
886 | { /* error occured */ | ||
887 | WaitForButton(); | ||
888 | rb->lcd_clear_display(); | ||
889 | rb->lcd_puts_scroll(0, 0, "Flash failed."); | ||
890 | rb->lcd_puts_scroll(0, 1, "Any key to exit."); | ||
891 | } | ||
892 | rb->lcd_update(); | ||
893 | |||
894 | button = WaitForButton(); | ||
895 | if (rc != eOK || button != BUTTON_ON) | ||
896 | { | ||
897 | return; | ||
898 | } | ||
899 | |||
900 | true_size = ImageHeader.size; | ||
901 | aligned_size = ((sizeof(tImageHeader) + true_size + SECTORSIZE-1) & | ||
902 | ~(SECTORSIZE-1)) - sizeof(tImageHeader); /* round up to | ||
903 | next flash | ||
904 | sector */ | ||
905 | ImageHeader.size = aligned_size; /* increase image size such that we reach | ||
906 | the next sector */ | ||
907 | |||
908 | rb->lcd_clear_display(); | ||
909 | rb->lcd_puts_scroll(0, 0, "Programming..."); | ||
910 | rb->lcd_update(); | ||
911 | |||
912 | rc = ProgramImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size); | ||
913 | if (rc) | ||
914 | { /* errors */ | ||
915 | rb->lcd_clear_display(); | ||
916 | rb->snprintf(buf, sizeof(buf), "%d errors", rc); | ||
917 | rb->lcd_puts_scroll(0, 0, "Programming failed!"); | ||
918 | rb->lcd_puts_scroll(0, 1, buf); | ||
919 | rb->lcd_update(); | ||
920 | button = WaitForButton(); | ||
921 | } | ||
922 | |||
923 | rb->lcd_clear_display(); | ||
924 | rb->lcd_puts_scroll(0, 0, "Verifying..."); | ||
925 | rb->lcd_update(); | ||
926 | |||
927 | rc = VerifyImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size); | ||
928 | |||
929 | rb->lcd_clear_display(); | ||
930 | if (rc == 0) | ||
931 | { | ||
932 | rb->lcd_puts(0, 0, "Verify OK."); | ||
933 | rb->lcd_update(); | ||
934 | } | ||
935 | else | ||
936 | { | ||
937 | rb->snprintf(buf, sizeof(buf), "Verify fail! %d errors", rc); | ||
938 | rb->lcd_puts_scroll(0, 0, buf); | ||
939 | rb->lcd_puts_scroll(0, 1, "Use safe image if booting hangs: [-] during power-on"); | ||
940 | rb->lcd_update(); | ||
941 | button = WaitForButton(); | ||
942 | } | ||
943 | } | ||
944 | |||
945 | #endif /* not HAVE_LCD_BITMAP */ | ||
946 | |||
947 | |||
948 | |||
949 | /***************** Plugin Entry Point *****************/ | ||
950 | |||
951 | enum plugin_status plugin_start(const void* parameter) | ||
952 | { | ||
953 | int oldmode; | ||
954 | |||
955 | if (parameter == NULL) | ||
956 | { | ||
957 | rb->splash(HZ*3, "Play .ucl file!"); | ||
958 | return PLUGIN_OK; | ||
959 | } | ||
960 | |||
961 | /* now go ahead and have fun! */ | ||
962 | oldmode = rb->system_memory_guard(MEMGUARD_NONE); /*disable memory guard */ | ||
963 | DoUserDialog((char*) parameter); | ||
964 | rb->system_memory_guard(oldmode); /* re-enable memory guard */ | ||
965 | |||
966 | return PLUGIN_OK; | ||
967 | } | ||
diff --git a/apps/plugins/rockboy/lcd.c b/apps/plugins/rockboy/lcd.c index e8d43f772a..143b8fdfa8 100644 --- a/apps/plugins/rockboy/lcd.c +++ b/apps/plugins/rockboy/lcd.c | |||
@@ -69,7 +69,7 @@ static void updatepatpix(void) ICODE_ATTR; | |||
69 | static void updatepatpix(void) | 69 | static void updatepatpix(void) |
70 | { | 70 | { |
71 | int i, j; | 71 | int i, j; |
72 | #if ((CONFIG_CPU != SH7034) && !defined(CPU_COLDFIRE)) | 72 | #if !defined(CPU_COLDFIRE) |
73 | int k, a, c; | 73 | int k, a, c; |
74 | #endif | 74 | #endif |
75 | byte *vram = lcd.vbank[0]; | 75 | byte *vram = lcd.vbank[0]; |
@@ -83,76 +83,7 @@ static void updatepatpix(void) | |||
83 | patdirty[i] = 0; | 83 | patdirty[i] = 0; |
84 | for (j = 0; j < 8; j++) | 84 | for (j = 0; j < 8; j++) |
85 | { | 85 | { |
86 | #if CONFIG_CPU == SH7034 | 86 | #if defined(CPU_COLDFIRE) |
87 | asm volatile ( | ||
88 | "mov.w @%2,r1 \n" | ||
89 | "swap.b r1,r2 \n" | ||
90 | |||
91 | "mov #0,r0 \n" | ||
92 | "shlr r1 \n" | ||
93 | "rotcl r0 \n" | ||
94 | "shlr r2 \n" | ||
95 | "rotcl r0 \n" | ||
96 | "mov.b r0,@%0 \n" | ||
97 | "mov.b r0,@(7,%1) \n" | ||
98 | "mov #0,r0 \n" | ||
99 | "shlr r1 \n" | ||
100 | "rotcl r0 \n" | ||
101 | "shlr r2 \n" | ||
102 | "rotcl r0 \n" | ||
103 | "mov.b r0,@(1,%0) \n" | ||
104 | "mov.b r0,@(6,%1) \n" | ||
105 | "mov #0,r0 \n" | ||
106 | "shlr r1 \n" | ||
107 | "rotcl r0 \n" | ||
108 | "shlr r2 \n" | ||
109 | "rotcl r0 \n" | ||
110 | "mov.b r0,@(2,%0) \n" | ||
111 | "mov.b r0,@(5,%1) \n" | ||
112 | "mov #0,r0 \n" | ||
113 | "shlr r1 \n" | ||
114 | "rotcl r0 \n" | ||
115 | "shlr r2 \n" | ||
116 | "rotcl r0 \n" | ||
117 | "mov.b r0,@(3,%0) \n" | ||
118 | "mov.b r0,@(4,%1) \n" | ||
119 | "mov #0,r0 \n" | ||
120 | "shlr r1 \n" | ||
121 | "rotcl r0 \n" | ||
122 | "shlr r2 \n" | ||
123 | "rotcl r0 \n" | ||
124 | "mov.b r0,@(4,%0) \n" | ||
125 | "mov.b r0,@(3,%1) \n" | ||
126 | "mov #0,r0 \n" | ||
127 | "shlr r1 \n" | ||
128 | "rotcl r0 \n" | ||
129 | "shlr r2 \n" | ||
130 | "rotcl r0 \n" | ||
131 | "mov.b r0,@(5,%0) \n" | ||
132 | "mov.b r0,@(2,%1) \n" | ||
133 | "mov #0,r0 \n" | ||
134 | "shlr r1 \n" | ||
135 | "rotcl r0 \n" | ||
136 | "shlr r2 \n" | ||
137 | "rotcl r0 \n" | ||
138 | "mov.b r0,@(6,%0) \n" | ||
139 | "mov.b r0,@(1,%1) \n" | ||
140 | "mov #0,r0 \n" | ||
141 | "shlr r1 \n" | ||
142 | "rotcl r0 \n" | ||
143 | "shlr r2 \n" | ||
144 | "rotcl r0 \n" | ||
145 | "mov.b r0,@(7,%0) \n" | ||
146 | "mov.b r0,@%1 \n" | ||
147 | : /* outputs */ | ||
148 | : /* inputs */ | ||
149 | /* %0 */ "r"(patpix[i+1024][j]), | ||
150 | /* %1 */ "r"(patpix[i][j]), | ||
151 | /* %2 */ "r"(&vram[(i<<4)|(j<<1)]) | ||
152 | : /* clobbers */ | ||
153 | "r0", "r1", "r2" | ||
154 | ); | ||
155 | #elif defined(CPU_COLDFIRE) | ||
156 | asm volatile ( | 87 | asm volatile ( |
157 | "move.b (%2),%%d2 \n" | 88 | "move.b (%2),%%d2 \n" |
158 | "move.b (1,%2),%%d1 \n" | 89 | "move.b (1,%2),%%d1 \n" |
@@ -229,85 +160,7 @@ static void updatepatpix(void) | |||
229 | patpix[i+1024][j][7-k]; | 160 | patpix[i+1024][j][7-k]; |
230 | #endif | 161 | #endif |
231 | } | 162 | } |
232 | #if CONFIG_CPU == SH7034 | 163 | #if defined(CPU_COLDFIRE) |
233 | asm volatile ( | ||
234 | "mov.l @%0,r0 \n" | ||
235 | "mov.l @(4,%0),r1 \n" | ||
236 | "mov.l r0,@(56,%1) \n" | ||
237 | "mov.l r1,@(60,%1) \n" | ||
238 | "mov.l @(8,%0),r0 \n" | ||
239 | "mov.l @(12,%0),r1 \n" | ||
240 | "mov.l r0,@(48,%1) \n" | ||
241 | "mov.l r1,@(52,%1) \n" | ||
242 | "mov.l @(16,%0),r0 \n" | ||
243 | "mov.l @(20,%0),r1 \n" | ||
244 | "mov.l r0,@(40,%1) \n" | ||
245 | "mov.l r1,@(44,%1) \n" | ||
246 | "mov.l @(24,%0),r0 \n" | ||
247 | "mov.l @(28,%0),r1 \n" | ||
248 | "mov.l r0,@(32,%1) \n" | ||
249 | "mov.l r1,@(36,%1) \n" | ||
250 | "mov.l @(32,%0),r0 \n" | ||
251 | "mov.l @(36,%0),r1 \n" | ||
252 | "mov.l r0,@(24,%1) \n" | ||
253 | "mov.l r1,@(28,%1) \n" | ||
254 | "mov.l @(40,%0),r0 \n" | ||
255 | "mov.l @(44,%0),r1 \n" | ||
256 | "mov.l r0,@(16,%1) \n" | ||
257 | "mov.l r1,@(20,%1) \n" | ||
258 | "mov.l @(48,%0),r0 \n" | ||
259 | "mov.l @(52,%0),r1 \n" | ||
260 | "mov.l r0,@(8,%1) \n" | ||
261 | "mov.l r1,@(12,%1) \n" | ||
262 | "mov.l @(56,%0),r0 \n" | ||
263 | "mov.l @(60,%0),r1 \n" | ||
264 | "mov.l r0,@%1 \n" | ||
265 | "mov.l r1,@(4,%1) \n" | ||
266 | |||
267 | "add %2,%0 \n" | ||
268 | "add %2,%1 \n" | ||
269 | |||
270 | "mov.l @%0,r0 \n" | ||
271 | "mov.l @(4,%0),r1 \n" | ||
272 | "mov.l r0,@(56,%1) \n" | ||
273 | "mov.l r1,@(60,%1) \n" | ||
274 | "mov.l @(8,%0),r0 \n" | ||
275 | "mov.l @(12,%0),r1 \n" | ||
276 | "mov.l r0,@(48,%1) \n" | ||
277 | "mov.l r1,@(52,%1) \n" | ||
278 | "mov.l @(16,%0),r0 \n" | ||
279 | "mov.l @(20,%0),r1 \n" | ||
280 | "mov.l r0,@(40,%1) \n" | ||
281 | "mov.l r1,@(44,%1) \n" | ||
282 | "mov.l @(24,%0),r0 \n" | ||
283 | "mov.l @(28,%0),r1 \n" | ||
284 | "mov.l r0,@(32,%1) \n" | ||
285 | "mov.l r1,@(36,%1) \n" | ||
286 | "mov.l @(32,%0),r0 \n" | ||
287 | "mov.l @(36,%0),r1 \n" | ||
288 | "mov.l r0,@(24,%1) \n" | ||
289 | "mov.l r1,@(28,%1) \n" | ||
290 | "mov.l @(40,%0),r0 \n" | ||
291 | "mov.l @(44,%0),r1 \n" | ||
292 | "mov.l r0,@(16,%1) \n" | ||
293 | "mov.l r1,@(20,%1) \n" | ||
294 | "mov.l @(48,%0),r0 \n" | ||
295 | "mov.l @(52,%0),r1 \n" | ||
296 | "mov.l r0,@(8,%1) \n" | ||
297 | "mov.l r1,@(12,%1) \n" | ||
298 | "mov.l @(56,%0),r0 \n" | ||
299 | "mov.l @(60,%0),r1 \n" | ||
300 | "mov.l r0,@%1 \n" | ||
301 | "mov.l r1,@(4,%1) \n" | ||
302 | : /* outputs */ | ||
303 | : /* inputs */ | ||
304 | /* %0 */ "r"(patpix[i][0]), | ||
305 | /* %1 */ "r"(patpix[i+2048][0]), | ||
306 | /* %2 */ "r"(1024*64) | ||
307 | : /* clobbers */ | ||
308 | "r0", "r1" | ||
309 | ); | ||
310 | #elif defined(CPU_COLDFIRE) | ||
311 | asm volatile ( | 164 | asm volatile ( |
312 | "movem.l (%0),%%d0-%%d3 \n" | 165 | "movem.l (%0),%%d0-%%d3 \n" |
313 | "move.l %%d0,%%d4 \n" | 166 | "move.l %%d0,%%d4 \n" |
diff --git a/apps/plugins/rockboy/rockboy.c b/apps/plugins/rockboy/rockboy.c index f188dc1e24..57f0c95ea6 100644 --- a/apps/plugins/rockboy/rockboy.c +++ b/apps/plugins/rockboy/rockboy.c | |||
@@ -110,16 +110,6 @@ static void setoptions (void) | |||
110 | options.SELECT = BUTTON_SELECT; | 110 | options.SELECT = BUTTON_SELECT; |
111 | options.MENU = BUTTON_OFF; | 111 | options.MENU = BUTTON_OFF; |
112 | 112 | ||
113 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
114 | options.UP = BUTTON_UP; | ||
115 | options.DOWN = BUTTON_DOWN; | ||
116 | |||
117 | options.A = BUTTON_F1; | ||
118 | options.B = BUTTON_F2; | ||
119 | options.START = BUTTON_F3; | ||
120 | options.SELECT = BUTTON_PLAY; | ||
121 | options.MENU = BUTTON_OFF; | ||
122 | |||
123 | #elif CONFIG_KEYPAD == IPOD_4G_PAD | 113 | #elif CONFIG_KEYPAD == IPOD_4G_PAD |
124 | options.UP = BUTTON_MENU; | 114 | options.UP = BUTTON_MENU; |
125 | options.DOWN = BUTTON_PLAY; | 115 | options.DOWN = BUTTON_PLAY; |
diff --git a/apps/plugins/rockboy/sys_rockbox.c b/apps/plugins/rockboy/sys_rockbox.c index 3a1f3c6760..e27cbbe3e7 100644 --- a/apps/plugins/rockboy/sys_rockbox.c +++ b/apps/plugins/rockboy/sys_rockbox.c | |||
@@ -91,9 +91,6 @@ void ev_poll(void) | |||
91 | if (rb->button_hold()&~holdbutton) | 91 | if (rb->button_hold()&~holdbutton) |
92 | fb.mode=(fb.mode+1)%4; | 92 | fb.mode=(fb.mode+1)%4; |
93 | holdbutton=rb->button_hold(); | 93 | holdbutton=rb->button_hold(); |
94 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
95 | if (pressed & BUTTON_ON) | ||
96 | fb.mode=(fb.mode+1)%4; | ||
97 | #endif | 94 | #endif |
98 | 95 | ||
99 | #ifdef HAVE_WHEEL_POSITION | 96 | #ifdef HAVE_WHEEL_POSITION |
@@ -220,12 +217,10 @@ void ev_poll(void) | |||
220 | #else | 217 | #else |
221 | if(pressed & options.MENU) { | 218 | if(pressed & options.MENU) { |
222 | #endif | 219 | #endif |
223 | #if (CONFIG_KEYPAD != RECORDER_PAD) | ||
224 | #ifdef HAVE_WHEEL_POSITION | 220 | #ifdef HAVE_WHEEL_POSITION |
225 | rb->wheel_send_events(true); | 221 | rb->wheel_send_events(true); |
226 | #endif | 222 | #endif |
227 | if (do_user_menu() == USER_MENU_QUIT) | 223 | if (do_user_menu() == USER_MENU_QUIT) |
228 | #endif | ||
229 | { | 224 | { |
230 | die(""); | 225 | die(""); |
231 | cleanshut=1; | 226 | cleanshut=1; |
@@ -300,54 +295,6 @@ void vid_update(int scanline) | |||
300 | balance += LCD_WIDTH; | 295 | balance += LCD_WIDTH; |
301 | if (balance > 0) | 296 | if (balance > 0) |
302 | { | 297 | { |
303 | #if (CONFIG_CPU == SH7034) && !defined(SIMULATOR) | ||
304 | asm volatile ( | ||
305 | "mov.b @%0,r0 \n" | ||
306 | "add %1,%0 \n" | ||
307 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
308 | "rotcr r1 \n" | ||
309 | "mov.b @%0,r0 \n" | ||
310 | "add %1,%0 \n" | ||
311 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
312 | "rotcr r1 \n" | ||
313 | "mov.b @%0,r0 \n" | ||
314 | "add %1,%0 \n" | ||
315 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
316 | "rotcr r1 \n" | ||
317 | "mov.b @%0,r0 \n" | ||
318 | "add %1,%0 \n" | ||
319 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
320 | "rotcr r1 \n" | ||
321 | "mov.b @%0,r0 \n" | ||
322 | "add %1,%0 \n" | ||
323 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
324 | "rotcr r1 \n" | ||
325 | "mov.b @%0,r0 \n" | ||
326 | "add %1,%0 \n" | ||
327 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
328 | "rotcr r1 \n" | ||
329 | "mov.b @%0,r0 \n" | ||
330 | "add %1,%0 \n" | ||
331 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
332 | "rotcr r1 \n" | ||
333 | "mov.b @%0,r0 \n" | ||
334 | "add %1,%0 \n" | ||
335 | "tst #0x02, r0 \n" /* ~bit 1 */ | ||
336 | "rotcr r1 \n" | ||
337 | |||
338 | "shlr16 r1 \n" | ||
339 | "shlr8 r1 \n" | ||
340 | "not r1,r1 \n" /* account for negated bits */ | ||
341 | "mov.b r1,@%2 \n" | ||
342 | : /* outputs */ | ||
343 | : /* inputs */ | ||
344 | /* %0 */ "r"(scan.buf[0] + cnt), | ||
345 | /* %1 */ "r"(256), /* scan.buf line length */ | ||
346 | /* %2 */ "r"(frameb++) | ||
347 | : /* clobbers */ | ||
348 | "r0", "r1" | ||
349 | ); | ||
350 | #else | ||
351 | register unsigned scrbyte = 0; | 298 | register unsigned scrbyte = 0; |
352 | if (scan.buf[0][cnt] & 0x02) scrbyte |= 0x01; | 299 | if (scan.buf[0][cnt] & 0x02) scrbyte |= 0x01; |
353 | if (scan.buf[1][cnt] & 0x02) scrbyte |= 0x02; | 300 | if (scan.buf[1][cnt] & 0x02) scrbyte |= 0x02; |
@@ -358,7 +305,6 @@ void vid_update(int scanline) | |||
358 | if (scan.buf[6][cnt] & 0x02) scrbyte |= 0x40; | 305 | if (scan.buf[6][cnt] & 0x02) scrbyte |= 0x40; |
359 | if (scan.buf[7][cnt] & 0x02) scrbyte |= 0x80; | 306 | if (scan.buf[7][cnt] & 0x02) scrbyte |= 0x80; |
360 | *(frameb++) = scrbyte; | 307 | *(frameb++) = scrbyte; |
361 | #endif | ||
362 | balance -= 160; | 308 | balance -= 160; |
363 | } | 309 | } |
364 | cnt ++; | 310 | cnt ++; |
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c index ad856b8ab2..1a77eda721 100644 --- a/apps/plugins/sliding_puzzle.c +++ b/apps/plugins/sliding_puzzle.c | |||
@@ -21,26 +21,7 @@ | |||
21 | #include "plugin.h" | 21 | #include "plugin.h" |
22 | 22 | ||
23 | /* variable button definitions */ | 23 | /* variable button definitions */ |
24 | #if CONFIG_KEYPAD == RECORDER_PAD | 24 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
25 | #define PUZZLE_QUIT BUTTON_OFF | ||
26 | #define PUZZLE_LEFT BUTTON_LEFT | ||
27 | #define PUZZLE_RIGHT BUTTON_RIGHT | ||
28 | #define PUZZLE_UP BUTTON_UP | ||
29 | #define PUZZLE_DOWN BUTTON_DOWN | ||
30 | #define PUZZLE_SHUFFLE BUTTON_F1 | ||
31 | #define PUZZLE_PICTURE BUTTON_F2 | ||
32 | |||
33 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
34 | #define PUZZLE_QUIT BUTTON_OFF | ||
35 | #define PUZZLE_LEFT BUTTON_LEFT | ||
36 | #define PUZZLE_RIGHT BUTTON_RIGHT | ||
37 | #define PUZZLE_UP BUTTON_UP | ||
38 | #define PUZZLE_DOWN BUTTON_DOWN | ||
39 | #define PUZZLE_SHUFFLE_PICTURE_PRE BUTTON_MENU | ||
40 | #define PUZZLE_SHUFFLE (BUTTON_MENU | BUTTON_REPEAT) | ||
41 | #define PUZZLE_PICTURE (BUTTON_MENU | BUTTON_REL) | ||
42 | |||
43 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
44 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 25 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
45 | #define PUZZLE_QUIT BUTTON_OFF | 26 | #define PUZZLE_QUIT BUTTON_OFF |
46 | #define PUZZLE_LEFT BUTTON_LEFT | 27 | #define PUZZLE_LEFT BUTTON_LEFT |
@@ -853,15 +834,7 @@ enum plugin_status plugin_start( | |||
853 | /* print instructions */ | 834 | /* print instructions */ |
854 | rb->lcd_clear_display(); | 835 | rb->lcd_clear_display(); |
855 | rb->lcd_setfont(FONT_SYSFIXED); | 836 | rb->lcd_setfont(FONT_SYSFIXED); |
856 | #if CONFIG_KEYPAD == RECORDER_PAD | 837 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
857 | rb->lcd_putsxy(3, 18, "[OFF] to stop"); | ||
858 | rb->lcd_putsxy(3, 28, "[F1] shuffle"); | ||
859 | rb->lcd_putsxy(3, 38, "[F2] change pic"); | ||
860 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
861 | rb->lcd_putsxy(0, 18, "[OFF] to stop"); | ||
862 | rb->lcd_putsxy(0, 28, "[MODE..] shuffle"); | ||
863 | rb->lcd_putsxy(0, 38, "[MODE] change pic"); | ||
864 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | ||
865 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 838 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
866 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 839 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
867 | rb->lcd_putsxy(0, 18, "[S-MENU] to stop"); | 840 | rb->lcd_putsxy(0, 18, "[S-MENU] to stop"); |
diff --git a/apps/plugins/snake.c b/apps/plugins/snake.c index f60ddfe3de..4471cd12a6 100644 --- a/apps/plugins/snake.c +++ b/apps/plugins/snake.c | |||
@@ -41,24 +41,8 @@ dir is the current direction of the snake - 0=up, 1=right, 2=down, 3=left; | |||
41 | 41 | ||
42 | 42 | ||
43 | /* variable button definitions */ | 43 | /* variable button definitions */ |
44 | #if CONFIG_KEYPAD == RECORDER_PAD | 44 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
45 | #define SNAKE_QUIT BUTTON_OFF | 45 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
46 | #define SNAKE_LEFT BUTTON_LEFT | ||
47 | #define SNAKE_RIGHT BUTTON_RIGHT | ||
48 | #define SNAKE_UP BUTTON_UP | ||
49 | #define SNAKE_DOWN BUTTON_DOWN | ||
50 | #define SNAKE_PLAYPAUSE BUTTON_PLAY | ||
51 | |||
52 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
53 | #define SNAKE_QUIT BUTTON_OFF | ||
54 | #define SNAKE_LEFT BUTTON_LEFT | ||
55 | #define SNAKE_RIGHT BUTTON_RIGHT | ||
56 | #define SNAKE_UP BUTTON_UP | ||
57 | #define SNAKE_DOWN BUTTON_DOWN | ||
58 | #define SNAKE_PLAYPAUSE BUTTON_MENU | ||
59 | |||
60 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
61 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
62 | #define SNAKE_QUIT BUTTON_OFF | 46 | #define SNAKE_QUIT BUTTON_OFF |
63 | #define SNAKE_LEFT BUTTON_LEFT | 47 | #define SNAKE_LEFT BUTTON_LEFT |
64 | #define SNAKE_RIGHT BUTTON_RIGHT | 48 | #define SNAKE_RIGHT BUTTON_RIGHT |
diff --git a/apps/plugins/snake2.c b/apps/plugins/snake2.c index dcb5b72633..bfff0bf870 100644 --- a/apps/plugins/snake2.c +++ b/apps/plugins/snake2.c | |||
@@ -150,26 +150,8 @@ Head and Tail are stored | |||
150 | #endif | 150 | #endif |
151 | 151 | ||
152 | /* variable button definitions */ | 152 | /* variable button definitions */ |
153 | #if CONFIG_KEYPAD == RECORDER_PAD | 153 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
154 | #define SNAKE2_LEFT BUTTON_LEFT | 154 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
155 | #define SNAKE2_RIGHT BUTTON_RIGHT | ||
156 | #define SNAKE2_UP BUTTON_UP | ||
157 | #define SNAKE2_DOWN BUTTON_DOWN | ||
158 | #define SNAKE2_QUIT BUTTON_OFF | ||
159 | #define SNAKE2_PLAYPAUSE BUTTON_PLAY | ||
160 | #define SNAKE2_PLAYPAUSE_TEXT "Play" | ||
161 | |||
162 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
163 | #define SNAKE2_LEFT BUTTON_LEFT | ||
164 | #define SNAKE2_RIGHT BUTTON_RIGHT | ||
165 | #define SNAKE2_UP BUTTON_UP | ||
166 | #define SNAKE2_DOWN BUTTON_DOWN | ||
167 | #define SNAKE2_QUIT BUTTON_OFF | ||
168 | #define SNAKE2_PLAYPAUSE BUTTON_MENU | ||
169 | #define SNAKE2_PLAYPAUSE_TEXT "Menu" | ||
170 | |||
171 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
172 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
173 | #define SNAKE2_LEFT BUTTON_LEFT | 155 | #define SNAKE2_LEFT BUTTON_LEFT |
174 | #define SNAKE2_RIGHT BUTTON_RIGHT | 156 | #define SNAKE2_RIGHT BUTTON_RIGHT |
175 | #define SNAKE2_UP BUTTON_UP | 157 | #define SNAKE2_UP BUTTON_UP |
diff --git a/apps/plugins/sokoban.c b/apps/plugins/sokoban.c index 62812e0237..3cc1555e83 100644 --- a/apps/plugins/sokoban.c +++ b/apps/plugins/sokoban.c | |||
@@ -64,11 +64,7 @@ | |||
64 | #endif | 64 | #endif |
65 | 65 | ||
66 | /* size of code+bss */ | 66 | /* size of code+bss */ |
67 | #if CONFIG_CPU == SH7034 | ||
68 | #define CODE_SIZE 0x3000 /* 12k */ | ||
69 | #else | ||
70 | #define CODE_SIZE 0x5000 /* 20k */ | 67 | #define CODE_SIZE 0x5000 /* 20k */ |
71 | #endif | ||
72 | 68 | ||
73 | #define CODE_AND_UNDO_SIZE (CODE_SIZE+0x1000) /* + 4k */ | 69 | #define CODE_AND_UNDO_SIZE (CODE_SIZE+0x1000) /* + 4k */ |
74 | 70 | ||
@@ -104,39 +100,8 @@ | |||
104 | #define SOKOBAN_MOVE_MIN SOKOBAN_MOVE_DOWN | 100 | #define SOKOBAN_MOVE_MIN SOKOBAN_MOVE_DOWN |
105 | 101 | ||
106 | /* variable button definitions */ | 102 | /* variable button definitions */ |
107 | #if (CONFIG_KEYPAD == RECORDER_PAD) | 103 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
108 | #define SOKOBAN_LEFT BUTTON_LEFT | 104 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
109 | #define SOKOBAN_RIGHT BUTTON_RIGHT | ||
110 | #define SOKOBAN_UP BUTTON_UP | ||
111 | #define SOKOBAN_DOWN BUTTON_DOWN | ||
112 | #define SOKOBAN_MENU BUTTON_OFF | ||
113 | #define SOKOBAN_UNDO BUTTON_ON | ||
114 | #define SOKOBAN_REDO BUTTON_PLAY | ||
115 | #define SOKOBAN_LEVEL_DOWN BUTTON_F1 | ||
116 | #define SOKOBAN_LEVEL_REPEAT BUTTON_F2 | ||
117 | #define SOKOBAN_LEVEL_UP BUTTON_F3 | ||
118 | #define SOKOBAN_PAUSE BUTTON_PLAY | ||
119 | #define BUTTON_SAVE BUTTON_ON | ||
120 | #define BUTTON_SAVE_NAME "ON" | ||
121 | |||
122 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
123 | #define SOKOBAN_LEFT BUTTON_LEFT | ||
124 | #define SOKOBAN_RIGHT BUTTON_RIGHT | ||
125 | #define SOKOBAN_UP BUTTON_UP | ||
126 | #define SOKOBAN_DOWN BUTTON_DOWN | ||
127 | #define SOKOBAN_MENU BUTTON_OFF | ||
128 | #define SOKOBAN_UNDO_PRE BUTTON_MENU | ||
129 | #define SOKOBAN_UNDO (BUTTON_MENU | BUTTON_REL) | ||
130 | #define SOKOBAN_REDO (BUTTON_MENU | BUTTON_DOWN) | ||
131 | #define SOKOBAN_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT) | ||
132 | #define SOKOBAN_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP) | ||
133 | #define SOKOBAN_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT) | ||
134 | #define SOKOBAN_PAUSE BUTTON_MENU | ||
135 | #define BUTTON_SAVE BUTTON_MENU | ||
136 | #define BUTTON_SAVE_NAME "MENU" | ||
137 | |||
138 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
139 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
140 | #define SOKOBAN_LEFT BUTTON_LEFT | 105 | #define SOKOBAN_LEFT BUTTON_LEFT |
141 | #define SOKOBAN_RIGHT BUTTON_RIGHT | 106 | #define SOKOBAN_RIGHT BUTTON_RIGHT |
142 | #define SOKOBAN_UP BUTTON_UP | 107 | #define SOKOBAN_UP BUTTON_UP |
@@ -1642,22 +1607,8 @@ static int sokoban_menu(void) | |||
1642 | rb->screens[i]->clear_display(); | 1607 | rb->screens[i]->clear_display(); |
1643 | rb->lcd_setfont(SOKOBAN_FONT); | 1608 | rb->lcd_setfont(SOKOBAN_FONT); |
1644 | 1609 | ||
1645 | #if (CONFIG_KEYPAD == RECORDER_PAD) | 1610 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
1646 | rb->lcd_putsxy(3, 6, "[OFF] Menu"); | 1611 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
1647 | rb->lcd_putsxy(3, 16, "[ON] Undo"); | ||
1648 | rb->lcd_putsxy(3, 26, "[PLAY] Redo"); | ||
1649 | rb->lcd_putsxy(3, 36, "[F1] Down a Level"); | ||
1650 | rb->lcd_putsxy(3, 46, "[F2] Restart Level"); | ||
1651 | rb->lcd_putsxy(3, 56, "[F3] Up a Level"); | ||
1652 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
1653 | rb->lcd_putsxy(3, 6, "[OFF] Menu"); | ||
1654 | rb->lcd_putsxy(3, 16, "[MODE] Undo"); | ||
1655 | rb->lcd_putsxy(3, 26, "[MODE+DOWN] Redo"); | ||
1656 | rb->lcd_putsxy(3, 36, "[MODE+LEFT] Previous Level"); | ||
1657 | rb->lcd_putsxy(3, 46, "[MODE+UP] Restart Level"); | ||
1658 | rb->lcd_putsxy(3, 56, "[MODE+RIGHT] Up Level"); | ||
1659 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
1660 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
1661 | rb->lcd_putsxy(3, 6, "[STOP] Menu"); | 1612 | rb->lcd_putsxy(3, 6, "[STOP] Menu"); |
1662 | rb->lcd_putsxy(3, 16, "[REC] Undo"); | 1613 | rb->lcd_putsxy(3, 16, "[REC] Undo"); |
1663 | rb->lcd_putsxy(3, 26, "[MODE] Redo"); | 1614 | rb->lcd_putsxy(3, 26, "[MODE] Redo"); |
diff --git a/apps/plugins/solitaire.c b/apps/plugins/solitaire.c index b830edf857..a7844fba92 100644 --- a/apps/plugins/solitaire.c +++ b/apps/plugins/solitaire.c | |||
@@ -32,51 +32,8 @@ | |||
32 | * Key definitions | 32 | * Key definitions |
33 | */ | 33 | */ |
34 | 34 | ||
35 | #if CONFIG_KEYPAD == RECORDER_PAD | 35 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
36 | # define SOL_QUIT BUTTON_OFF | 36 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
37 | # define SOL_UP BUTTON_UP | ||
38 | # define SOL_DOWN BUTTON_DOWN | ||
39 | # define SOL_LEFT BUTTON_LEFT | ||
40 | # define SOL_RIGHT BUTTON_RIGHT | ||
41 | # define SOL_MOVE BUTTON_ON | ||
42 | # define SOL_DRAW BUTTON_F1 | ||
43 | # define SOL_REM2CUR BUTTON_PLAY | ||
44 | # define SOL_CUR2STACK BUTTON_F2 | ||
45 | # define SOL_REM2STACK BUTTON_F3 | ||
46 | # define HK_MOVE "ON" | ||
47 | # define HK_DRAW "F1" | ||
48 | # define HK_REM2CUR "PLAY" | ||
49 | # define HK_CUR2STACK "F2" | ||
50 | # define HK_REM2STACK "F3" | ||
51 | |||
52 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
53 | # define SOL_QUIT BUTTON_OFF | ||
54 | # define SOL_UP_PRE BUTTON_UP | ||
55 | # define SOL_UP (BUTTON_UP | BUTTON_REL) | ||
56 | # define SOL_DOWN_PRE BUTTON_DOWN | ||
57 | # define SOL_DOWN (BUTTON_DOWN | BUTTON_REL) | ||
58 | # define SOL_LEFT_PRE BUTTON_LEFT | ||
59 | # define SOL_LEFT (BUTTON_LEFT | BUTTON_REL) | ||
60 | # define SOL_RIGHT_PRE BUTTON_RIGHT | ||
61 | # define SOL_RIGHT (BUTTON_RIGHT | BUTTON_REL) | ||
62 | # define SOL_MOVE_PRE BUTTON_MENU | ||
63 | # define SOL_MOVE (BUTTON_MENU | BUTTON_REL) | ||
64 | # define SOL_DRAW_PRE BUTTON_MENU | ||
65 | # define SOL_DRAW (BUTTON_MENU | BUTTON_REPEAT) | ||
66 | # define SOL_REM2CUR_PRE BUTTON_DOWN | ||
67 | # define SOL_REM2CUR (BUTTON_DOWN | BUTTON_REPEAT) | ||
68 | # define SOL_CUR2STACK_PRE BUTTON_UP | ||
69 | # define SOL_CUR2STACK (BUTTON_UP | BUTTON_REPEAT) | ||
70 | # define SOL_REM2STACK_PRE BUTTON_RIGHT | ||
71 | # define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_REPEAT) | ||
72 | # define HK_MOVE "MODE" | ||
73 | # define HK_DRAW "MODE.." | ||
74 | # define HK_REM2CUR "DOWN.." | ||
75 | # define HK_CUR2STACK "UP.." | ||
76 | # define HK_REM2STACK "RIGHT.." | ||
77 | |||
78 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
79 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
80 | # define SOL_QUIT BUTTON_OFF | 37 | # define SOL_QUIT BUTTON_OFF |
81 | # define SOL_UP BUTTON_UP | 38 | # define SOL_UP BUTTON_UP |
82 | # define SOL_DOWN BUTTON_DOWN | 39 | # define SOL_DOWN BUTTON_DOWN |
diff --git a/apps/plugins/spacerocks.c b/apps/plugins/spacerocks.c index ede67291b0..268c55ad35 100644 --- a/apps/plugins/spacerocks.c +++ b/apps/plugins/spacerocks.c | |||
@@ -28,26 +28,8 @@ | |||
28 | 28 | ||
29 | 29 | ||
30 | /* variable button definitions */ | 30 | /* variable button definitions */ |
31 | #if CONFIG_KEYPAD == RECORDER_PAD | 31 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
32 | #define AST_PAUSE BUTTON_ON | 32 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
33 | #define AST_QUIT BUTTON_OFF | ||
34 | #define AST_THRUST BUTTON_UP | ||
35 | #define AST_HYPERSPACE BUTTON_DOWN | ||
36 | #define AST_LEFT BUTTON_LEFT | ||
37 | #define AST_RIGHT BUTTON_RIGHT | ||
38 | #define AST_FIRE BUTTON_PLAY | ||
39 | |||
40 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
41 | #define AST_PAUSE (BUTTON_MENU | BUTTON_OFF) | ||
42 | #define AST_QUIT BUTTON_OFF | ||
43 | #define AST_THRUST BUTTON_UP | ||
44 | #define AST_HYPERSPACE BUTTON_DOWN | ||
45 | #define AST_LEFT BUTTON_LEFT | ||
46 | #define AST_RIGHT BUTTON_RIGHT | ||
47 | #define AST_FIRE BUTTON_MENU | ||
48 | |||
49 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
50 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
51 | #define AST_PAUSE BUTTON_REC | 33 | #define AST_PAUSE BUTTON_REC |
52 | #define AST_QUIT BUTTON_OFF | 34 | #define AST_QUIT BUTTON_OFF |
53 | #define AST_THRUST BUTTON_UP | 35 | #define AST_THRUST BUTTON_UP |
diff --git a/apps/plugins/splitedit.c b/apps/plugins/splitedit.c index 539fc85011..b698e2e18a 100644 --- a/apps/plugins/splitedit.c +++ b/apps/plugins/splitedit.c | |||
@@ -24,27 +24,7 @@ | |||
24 | 24 | ||
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if CONFIG_KEYPAD == IRIVER_H100_PAD |
28 | #define SPLITEDIT_QUIT BUTTON_OFF | ||
29 | #define SPLITEDIT_PLAY BUTTON_PLAY | ||
30 | #define SPLITEDIT_SAVE BUTTON_F1 | ||
31 | #define SPLITEDIT_LOOP_MODE BUTTON_F2 | ||
32 | #define SPLITEDIT_SCALE BUTTON_F3 | ||
33 | #define SPLITEDIT_SPEED50 (BUTTON_ON | BUTTON_LEFT) | ||
34 | #define SPLITEDIT_SPEED100 (BUTTON_ON | BUTTON_PLAY) | ||
35 | #define SPLITEDIT_SPEED150 (BUTTON_ON | BUTTON_RIGHT) | ||
36 | #define SPLITEDIT_MENU_RUN BUTTON_PLAY | ||
37 | |||
38 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
39 | #define SPLITEDIT_QUIT BUTTON_OFF | ||
40 | #define SPLITEDIT_PLAY_PRE BUTTON_MENU | ||
41 | #define SPLITEDIT_PLAY (BUTTON_MENU | BUTTON_REL) | ||
42 | #define SPLITEDIT_SAVE (BUTTON_MENU | BUTTON_LEFT) | ||
43 | #define SPLITEDIT_LOOP_MODE (BUTTON_MENU | BUTTON_UP) | ||
44 | #define SPLITEDIT_SCALE (BUTTON_MENU | BUTTON_RIGHT) | ||
45 | #define SPLITEDIT_MENU_RUN BUTTON_RIGHT | ||
46 | |||
47 | #elif CONFIG_KEYPAD == IRIVER_H100_PAD | ||
48 | #define SPLITEDIT_QUIT BUTTON_OFF | 28 | #define SPLITEDIT_QUIT BUTTON_OFF |
49 | #define SPLITEDIT_PLAY BUTTON_ON | 29 | #define SPLITEDIT_PLAY BUTTON_ON |
50 | #define SPLITEDIT_SAVE BUTTON_SELECT | 30 | #define SPLITEDIT_SAVE BUTTON_SELECT |
@@ -279,12 +259,6 @@ static void update_icons(void) | |||
279 | LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, | 259 | LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, |
280 | BMPWIDTH, BMPHEIGHT); | 260 | BMPWIDTH, BMPHEIGHT); |
281 | 261 | ||
282 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
283 | /* The scale icon */ | ||
284 | rb->lcd_mono_bitmap(SCALE_BMP[rb->peak_meter_get_use_dbfs() ? 1 : 0], | ||
285 | 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, | ||
286 | BMPWIDTH, BMPHEIGHT); | ||
287 | #else | ||
288 | { | 262 | { |
289 | static int idx; | 263 | static int idx; |
290 | if (idx < 0 || idx > 1) idx = 0; | 264 | if (idx < 0 || idx > 1) idx = 0; |
@@ -293,7 +267,6 @@ static void update_icons(void) | |||
293 | 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, | 267 | 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT, |
294 | BMPWIDTH, BMPHEIGHT); | 268 | BMPWIDTH, BMPHEIGHT); |
295 | } | 269 | } |
296 | #endif | ||
297 | 270 | ||
298 | rb->lcd_update_rect(0, LCD_HEIGHT - BMPHEIGHT, LCD_WIDTH, BMPHEIGHT); | 271 | rb->lcd_update_rect(0, LCD_HEIGHT - BMPHEIGHT, LCD_WIDTH, BMPHEIGHT); |
299 | } | 272 | } |
@@ -961,14 +934,7 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split, | |||
961 | { | 934 | { |
962 | /* read volume info */ | 935 | /* read volume info */ |
963 | unsigned short volume; | 936 | unsigned short volume; |
964 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
965 | volume = rb->mas_codec_readreg(0x0c); | ||
966 | volume += rb->mas_codec_readreg(0x0d); | ||
967 | volume = volume / 2; | ||
968 | volume = rb->peak_meter_scale_value(volume, OSCI_HEIGHT); | ||
969 | #else | ||
970 | volume = OSCI_HEIGHT / 2; | 937 | volume = OSCI_HEIGHT / 2; |
971 | #endif | ||
972 | 938 | ||
973 | /* update osci_buffer */ | 939 | /* update osci_buffer */ |
974 | if (osci_valid || lastx == x) | 940 | if (osci_valid || lastx == x) |
@@ -1126,25 +1092,6 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split, | |||
1126 | lastx = time_to_xpos(mp3->elapsed); | 1092 | lastx = time_to_xpos(mp3->elapsed); |
1127 | break; | 1093 | break; |
1128 | 1094 | ||
1129 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
1130 | #ifdef SPLITEDIT_SPEED100 | ||
1131 | case SPLITEDIT_SPEED150: | ||
1132 | rb->sound_set_pitch(150L*PITCH_SPEED_PRECISION); | ||
1133 | splitedit_invalidate_osci(); | ||
1134 | break; | ||
1135 | |||
1136 | case SPLITEDIT_SPEED100: | ||
1137 | rb->sound_set_pitch(PITCH_SPEED_100); | ||
1138 | splitedit_invalidate_osci(); | ||
1139 | break; | ||
1140 | |||
1141 | case SPLITEDIT_SPEED50: | ||
1142 | rb->sound_set_pitch(50L*PITCH_SPEED_PRECISION); | ||
1143 | splitedit_invalidate_osci(); | ||
1144 | break; | ||
1145 | #endif | ||
1146 | #endif | ||
1147 | |||
1148 | case BUTTON_LEFT: | 1095 | case BUTTON_LEFT: |
1149 | case BUTTON_LEFT | BUTTON_REPEAT: | 1096 | case BUTTON_LEFT | BUTTON_REPEAT: |
1150 | if (splitedit_get_split_x() > OSCI_X + 2) | 1097 | if (splitedit_get_split_x() > OSCI_X + 2) |
@@ -1185,9 +1132,6 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split, | |||
1185 | break; | 1132 | break; |
1186 | 1133 | ||
1187 | case SPLITEDIT_SCALE: | 1134 | case SPLITEDIT_SCALE: |
1188 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
1189 | rb->peak_meter_set_use_dbfs(!rb->peak_meter_get_use_dbfs()); | ||
1190 | #endif | ||
1191 | splitedit_invalidate_osci(); | 1135 | splitedit_invalidate_osci(); |
1192 | update_icons(); | 1136 | update_icons(); |
1193 | break; | 1137 | break; |
@@ -1257,12 +1201,6 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split, | |||
1257 | } | 1201 | } |
1258 | } | 1202 | } |
1259 | } | 1203 | } |
1260 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | ||
1261 | #ifdef SPLITEDIT_SPEED100 | ||
1262 | rb->sound_set_pitch(1000); /* make sure to reset pitch */ | ||
1263 | #endif | ||
1264 | #endif | ||
1265 | |||
1266 | } | 1204 | } |
1267 | return retval; | 1205 | return retval; |
1268 | } | 1206 | } |
diff --git a/apps/plugins/star.c b/apps/plugins/star.c index 5814cc8cab..ea1d5b8bf8 100644 --- a/apps/plugins/star.c +++ b/apps/plugins/star.c | |||
@@ -57,42 +57,8 @@ | |||
57 | #define STAR_CONTROL_BLOCK 1 | 57 | #define STAR_CONTROL_BLOCK 1 |
58 | 58 | ||
59 | /* variable button definitions */ | 59 | /* variable button definitions */ |
60 | #if CONFIG_KEYPAD == RECORDER_PAD | 60 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
61 | #define STAR_QUIT BUTTON_OFF | 61 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
62 | #define STAR_LEFT BUTTON_LEFT | ||
63 | #define STAR_RIGHT BUTTON_RIGHT | ||
64 | #define STAR_UP BUTTON_UP | ||
65 | #define STAR_DOWN BUTTON_DOWN | ||
66 | #define STAR_TOGGLE_CONTROL BUTTON_ON | ||
67 | #define STAR_TOGGLE_CONTROL2 BUTTON_PLAY | ||
68 | #define STAR_LEVEL_UP BUTTON_F3 | ||
69 | #define STAR_LEVEL_DOWN BUTTON_F1 | ||
70 | #define STAR_LEVEL_REPEAT BUTTON_F2 | ||
71 | #define STAR_TOGGLE_CONTROL_NAME "ON" | ||
72 | #define STAR_QUIT_NAME "OFF" | ||
73 | #define STAR_LEVEL_UP_NAME "F3" | ||
74 | #define STAR_LEVEL_DOWN_NAME "F1" | ||
75 | #define STAR_LEVEL_REPEAT_NAME "F2" | ||
76 | |||
77 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
78 | #define STAR_QUIT BUTTON_OFF | ||
79 | #define STAR_LEFT BUTTON_LEFT | ||
80 | #define STAR_RIGHT BUTTON_RIGHT | ||
81 | #define STAR_UP BUTTON_UP | ||
82 | #define STAR_DOWN BUTTON_DOWN | ||
83 | #define STAR_TOGGLE_CONTROL_PRE BUTTON_MENU | ||
84 | #define STAR_TOGGLE_CONTROL (BUTTON_MENU | BUTTON_REL) | ||
85 | #define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT) | ||
86 | #define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT) | ||
87 | #define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP) | ||
88 | #define STAR_TOGGLE_CONTROL_NAME "MODE" | ||
89 | #define STAR_QUIT_NAME "OFF" | ||
90 | #define STAR_LEVEL_UP_NAME "M >" | ||
91 | #define STAR_LEVEL_DOWN_NAME "M <" | ||
92 | #define STAR_LEVEL_REPEAT_NAME "M ^" | ||
93 | |||
94 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
95 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
96 | #define STAR_QUIT BUTTON_OFF | 62 | #define STAR_QUIT BUTTON_OFF |
97 | #define STAR_LEFT BUTTON_LEFT | 63 | #define STAR_LEFT BUTTON_LEFT |
98 | #define STAR_RIGHT BUTTON_RIGHT | 64 | #define STAR_RIGHT BUTTON_RIGHT |
diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c index 30b01b2645..dff3c4b4d1 100644 --- a/apps/plugins/starfield.c +++ b/apps/plugins/starfield.c | |||
@@ -220,23 +220,17 @@ static int plugin_main(void) | |||
220 | rb->sleep(1); | 220 | rb->sleep(1); |
221 | rb->lcd_clear_display(); | 221 | rb->lcd_clear_display(); |
222 | 222 | ||
223 | #if ((CONFIG_CODEC == SWCODEC) || !defined(SIMULATOR) && \ | 223 | #if (CONFIG_CODEC == SWCODEC) |
224 | ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F))) | ||
225 | |||
226 | /* This will make the stars pulse to the music */ | 224 | /* This will make the stars pulse to the music */ |
227 | if(pulse){ | 225 | if(pulse){ |
228 | 226 | ||
229 | /* Get the peaks. ( Borrowed from vu_meter ) */ | 227 | /* Get the peaks. ( Borrowed from vu_meter ) */ |
230 | #if (CONFIG_CODEC == SWCODEC) | ||
231 | static struct pcm_peaks peaks; | 228 | static struct pcm_peaks peaks; |
232 | rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, | 229 | rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, |
233 | &peaks); | 230 | &peaks); |
234 | #define left_peak peaks.left | 231 | #define left_peak peaks.left |
235 | #define right_peak peaks.right | 232 | #define right_peak peaks.right |
236 | #else | 233 | |
237 | int left_peak = rb->mas_codec_readreg(0xC); | ||
238 | int right_peak = rb->mas_codec_readreg(0xD); | ||
239 | #endif | ||
240 | /* Devide peak data by 4098 to bring the max | 234 | /* Devide peak data by 4098 to bring the max |
241 | value down from ~32k to 8 */ | 235 | value down from ~32k to 8 */ |
242 | left_peak = left_peak/0x1000; | 236 | left_peak = left_peak/0x1000; |
@@ -261,8 +255,6 @@ static int plugin_main(void) | |||
261 | starfield.z_move = avg_peak; | 255 | starfield.z_move = avg_peak; |
262 | 256 | ||
263 | } /* if pulse */ | 257 | } /* if pulse */ |
264 | #else | ||
265 | (void) avg_peak; | ||
266 | #endif | 258 | #endif |
267 | starfield_move_and_draw(&starfield); | 259 | starfield_move_and_draw(&starfield); |
268 | 260 | ||
diff --git a/apps/plugins/stopwatch.c b/apps/plugins/stopwatch.c index bb778c9d24..c3fa3e15dd 100644 --- a/apps/plugins/stopwatch.c +++ b/apps/plugins/stopwatch.c | |||
@@ -35,31 +35,7 @@ | |||
35 | #define STOPWATCH_FILE PLUGIN_APPS_DATA_DIR "/stopwatch.dat" | 35 | #define STOPWATCH_FILE PLUGIN_APPS_DATA_DIR "/stopwatch.dat" |
36 | 36 | ||
37 | /* variable button definitions */ | 37 | /* variable button definitions */ |
38 | #if CONFIG_KEYPAD == RECORDER_PAD | 38 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
39 | #define STOPWATCH_QUIT BUTTON_OFF | ||
40 | #define STOPWATCH_START_STOP BUTTON_PLAY | ||
41 | #define STOPWATCH_RESET_TIMER BUTTON_LEFT | ||
42 | #define STOPWATCH_LAP_TIMER BUTTON_ON | ||
43 | #define STOPWATCH_SCROLL_UP BUTTON_UP | ||
44 | #define STOPWATCH_SCROLL_DOWN BUTTON_DOWN | ||
45 | |||
46 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
47 | #define STOPWATCH_QUIT BUTTON_OFF | ||
48 | #define STOPWATCH_START_STOP BUTTON_RIGHT | ||
49 | #define STOPWATCH_RESET_TIMER BUTTON_LEFT | ||
50 | #define STOPWATCH_LAP_TIMER BUTTON_MENU | ||
51 | #define STOPWATCH_SCROLL_UP BUTTON_UP | ||
52 | #define STOPWATCH_SCROLL_DOWN BUTTON_DOWN | ||
53 | |||
54 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
55 | #define STOPWATCH_QUIT BUTTON_MENU | ||
56 | #define STOPWATCH_START_STOP BUTTON_PLAY | ||
57 | #define STOPWATCH_RESET_TIMER BUTTON_STOP | ||
58 | #define STOPWATCH_LAP_TIMER BUTTON_ON | ||
59 | #define STOPWATCH_SCROLL_UP BUTTON_RIGHT | ||
60 | #define STOPWATCH_SCROLL_DOWN BUTTON_LEFT | ||
61 | |||
62 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
63 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 39 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
64 | #define STOPWATCH_QUIT BUTTON_OFF | 40 | #define STOPWATCH_QUIT BUTTON_OFF |
65 | #define STOPWATCH_START_STOP BUTTON_SELECT | 41 | #define STOPWATCH_START_STOP BUTTON_SELECT |
diff --git a/apps/plugins/sudoku/sudoku.h b/apps/plugins/sudoku/sudoku.h index 47000b8e25..d1eca7fcd4 100644 --- a/apps/plugins/sudoku/sudoku.h +++ b/apps/plugins/sudoku/sudoku.h | |||
@@ -27,31 +27,8 @@ | |||
27 | #define GAME_FILE PLUGIN_GAMES_DIR "/sudoku.ss" | 27 | #define GAME_FILE PLUGIN_GAMES_DIR "/sudoku.ss" |
28 | 28 | ||
29 | /* variable button definitions */ | 29 | /* variable button definitions */ |
30 | #if CONFIG_KEYPAD == RECORDER_PAD | 30 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
31 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF | 31 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
32 | #define SUDOKU_BUTTON_UP BUTTON_UP | ||
33 | #define SUDOKU_BUTTON_DOWN BUTTON_DOWN | ||
34 | #define SUDOKU_BUTTON_LEFT BUTTON_LEFT | ||
35 | #define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT | ||
36 | #define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY | ||
37 | #define SUDOKU_BUTTON_MENU BUTTON_F1 | ||
38 | #define SUDOKU_BUTTON_POSSIBLE BUTTON_F2 | ||
39 | |||
40 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
41 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF | ||
42 | #define SUDOKU_BUTTON_UP BUTTON_UP | ||
43 | #define SUDOKU_BUTTON_DOWN BUTTON_DOWN | ||
44 | #define SUDOKU_BUTTON_LEFT BUTTON_LEFT | ||
45 | #define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT | ||
46 | #define SUDOKU_BUTTON_ALTTOGGLE (BUTTON_MENU | BUTTON_DOWN) | ||
47 | #define SUDOKU_BUTTON_TOGGLE_PRE BUTTON_MENU | ||
48 | #define SUDOKU_BUTTON_TOGGLE (BUTTON_MENU | BUTTON_REL) | ||
49 | #define SUDOKU_BUTTON_MENU_PRE BUTTON_MENU | ||
50 | #define SUDOKU_BUTTON_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
51 | #define SUDOKU_BUTTON_POSSIBLE (BUTTON_MENU | BUTTON_LEFT) | ||
52 | |||
53 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
54 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
55 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF | 32 | #define SUDOKU_BUTTON_QUIT BUTTON_OFF |
56 | #define SUDOKU_BUTTON_UP BUTTON_UP | 33 | #define SUDOKU_BUTTON_UP BUTTON_UP |
57 | #define SUDOKU_BUTTON_DOWN BUTTON_DOWN | 34 | #define SUDOKU_BUTTON_DOWN BUTTON_DOWN |
diff --git a/apps/plugins/test_scanrate.c b/apps/plugins/test_scanrate.c index b558e765c3..52d3c267e6 100644 --- a/apps/plugins/test_scanrate.c +++ b/apps/plugins/test_scanrate.c | |||
@@ -44,11 +44,7 @@ static const struct button_mapping *plugin_contexts[] = { pla_main_ctx }; | |||
44 | #endif /*HAVE_SCROLLWHEEL*/ | 44 | #endif /*HAVE_SCROLLWHEEL*/ |
45 | 45 | ||
46 | /* Default refresh rates in 1/10 Hz */ | 46 | /* Default refresh rates in 1/10 Hz */ |
47 | #if defined ARCHOS_RECORDER || defined ARCHOS_FMRECORDER \ | 47 | #if defined IAUDIO_M3 |
48 | || defined ARCHOS_RECORDERV2 || defined ARCHOS_ONDIOFM \ | ||
49 | || defined ARCHOS_ONDIOSP | ||
50 | #define DEFAULT_SCAN_RATE 670 | ||
51 | #elif defined IAUDIO_M3 | ||
52 | #define DEFAULT_SCAN_RATE 1500 | 48 | #define DEFAULT_SCAN_RATE 1500 |
53 | #define HORIZ_SCAN /* LCD controller updates the panel sideways */ | 49 | #define HORIZ_SCAN /* LCD controller updates the panel sideways */ |
54 | #define NEED_BOOST | 50 | #define NEED_BOOST |
diff --git a/apps/plugins/text_viewer/tv_button.h b/apps/plugins/text_viewer/tv_button.h index acf7519b69..4f7634e844 100644 --- a/apps/plugins/text_viewer/tv_button.h +++ b/apps/plugins/text_viewer/tv_button.h | |||
@@ -44,46 +44,8 @@ | |||
44 | * TV_COLUMN_RIGHT one column right | 44 | * TV_COLUMN_RIGHT one column right |
45 | */ | 45 | */ |
46 | 46 | ||
47 | /* Recorder keys */ | ||
48 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
49 | #define TV_QUIT BUTTON_OFF | ||
50 | #define TV_SCROLL_UP BUTTON_UP | ||
51 | #define TV_SCROLL_DOWN BUTTON_DOWN | ||
52 | #define TV_SCREEN_LEFT BUTTON_LEFT | ||
53 | #define TV_SCREEN_RIGHT BUTTON_RIGHT | ||
54 | #define TV_MENU BUTTON_F1 | ||
55 | #define TV_AUTOSCROLL BUTTON_PLAY | ||
56 | #define TV_LINE_UP (BUTTON_ON | BUTTON_UP) | ||
57 | #define TV_LINE_DOWN (BUTTON_ON | BUTTON_DOWN) | ||
58 | #define TV_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT) | ||
59 | #define TV_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT) | ||
60 | #define TV_BOOKMARK BUTTON_F2 | ||
61 | |||
62 | /* Ondio keys */ | ||
63 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
64 | #define TV_QUIT BUTTON_OFF | ||
65 | #define TV_SCROLL_UP BUTTON_UP | ||
66 | #define TV_SCROLL_DOWN BUTTON_DOWN | ||
67 | #define TV_SCREEN_LEFT BUTTON_LEFT | ||
68 | #define TV_SCREEN_RIGHT BUTTON_RIGHT | ||
69 | #define TV_MENU (BUTTON_MENU|BUTTON_REPEAT) | ||
70 | #define TV_AUTOSCROLL_PRE BUTTON_MENU | ||
71 | #define TV_AUTOSCROLL (BUTTON_MENU|BUTTON_REL) | ||
72 | #define TV_BOOKMARK (BUTTON_MENU|BUTTON_OFF) | ||
73 | |||
74 | /* Player keys */ | ||
75 | #elif CONFIG_KEYPAD == PLAYER_PAD | ||
76 | #define TV_QUIT BUTTON_STOP | ||
77 | #define TV_SCROLL_UP BUTTON_LEFT | ||
78 | #define TV_SCROLL_DOWN BUTTON_RIGHT | ||
79 | #define TV_SCREEN_LEFT (BUTTON_ON|BUTTON_LEFT) | ||
80 | #define TV_SCREEN_RIGHT (BUTTON_ON|BUTTON_RIGHT) | ||
81 | #define TV_MENU BUTTON_MENU | ||
82 | #define TV_AUTOSCROLL BUTTON_PLAY | ||
83 | #define TV_BOOKMARK BUTTON_ON | ||
84 | |||
85 | /* iRiver H1x0 && H3x0 keys */ | 47 | /* iRiver H1x0 && H3x0 keys */ |
86 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | 48 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
87 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | 49 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
88 | #define TV_QUIT BUTTON_OFF | 50 | #define TV_QUIT BUTTON_OFF |
89 | #define TV_RC_QUIT BUTTON_RC_STOP | 51 | #define TV_RC_QUIT BUTTON_RC_STOP |
diff --git a/apps/plugins/video.c b/apps/plugins/video.c deleted file mode 100644 index 6a66324a79..0000000000 --- a/apps/plugins/video.c +++ /dev/null | |||
@@ -1,1030 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Plugin for video playback | ||
11 | * Reads raw image data + audio data from a file | ||
12 | * !!!!!!!!!! Code Police free zone !!!!!!!!!! | ||
13 | * | ||
14 | * Copyright (C) 2003-2004 J�g Hohensohn aka [IDC]Dragon | ||
15 | * | ||
16 | * This program is free software; you can redistribute it and/or | ||
17 | * modify it under the terms of the GNU General Public License | ||
18 | * as published by the Free Software Foundation; either version 2 | ||
19 | * of the License, or (at your option) any later version. | ||
20 | * | ||
21 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
22 | * KIND, either express or implied. | ||
23 | * | ||
24 | ****************************************************************************/ | ||
25 | |||
26 | |||
27 | /****************** imports ******************/ | ||
28 | |||
29 | #include "plugin.h" | ||
30 | #include "sh7034.h" | ||
31 | #include "system.h" | ||
32 | #include "lib/helper.h" | ||
33 | |||
34 | #ifdef HAVE_LCD_BITMAP /* and definitely not for the Player, haha */ | ||
35 | |||
36 | |||
37 | |||
38 | /* variable button definitions */ | ||
39 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
40 | #define VIDEO_STOP_SEEK BUTTON_PLAY | ||
41 | #define VIDEO_RESUME BUTTON_PLAY | ||
42 | #define VIDEO_DEBUG BUTTON_F1 | ||
43 | #define VIDEO_CONTRAST_DOWN BUTTON_F2 | ||
44 | #define VIDEO_CONTRAST_UP BUTTON_F3 | ||
45 | |||
46 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
47 | #define VIDEO_STOP_SEEK_PRE BUTTON_MENU | ||
48 | #define VIDEO_STOP_SEEK (BUTTON_MENU | BUTTON_REL) | ||
49 | #define VIDEO_RESUME BUTTON_RIGHT | ||
50 | #define VIDEO_CONTRAST_DOWN (BUTTON_MENU | BUTTON_DOWN) | ||
51 | #define VIDEO_CONTRAST_UP (BUTTON_MENU | BUTTON_UP) | ||
52 | |||
53 | #endif | ||
54 | /****************** constants ******************/ | ||
55 | |||
56 | #define SCREENSIZE (LCD_WIDTH*LCD_HEIGHT/8) /* in bytes */ | ||
57 | #define FPS 68 /* default fps for headerless (old video-only) file */ | ||
58 | #define MAX_ACC 20 /* maximum FF/FR speedup */ | ||
59 | #define FF_TICKS 3000; /* experimentally found nice */ | ||
60 | |||
61 | /* trigger levels, we need about 80 kB/sec */ | ||
62 | #define SPINUP_INIT 5000 /* from what level on to refill, in milliseconds */ | ||
63 | #define SPINUP_SAFETY 700 /* how much on top of the measured spinup time */ | ||
64 | #define CHUNK (1024*32) /* read size */ | ||
65 | |||
66 | |||
67 | /****************** prototypes ******************/ | ||
68 | static void timer4_isr(void); /* IMIA4 ISR */ | ||
69 | int check_button(void); /* determine next relative frame */ | ||
70 | |||
71 | |||
72 | /****************** data types ******************/ | ||
73 | |||
74 | /* plugins don't introduce headers, so structs are repeated from rvf_format.h */ | ||
75 | |||
76 | #define HEADER_MAGIC 0x52564668 /* "RVFh" at file start */ | ||
77 | #define AUDIO_MAGIC 0x41756446 /* "AudF" for each audio block */ | ||
78 | #define FILEVERSION 100 /* 1.00 */ | ||
79 | |||
80 | /* format type definitions */ | ||
81 | #define VIDEOFORMAT_NO_VIDEO 0 | ||
82 | #define VIDEOFORMAT_RAW 1 | ||
83 | #define AUDIOFORMAT_NO_AUDIO 0 | ||
84 | #define AUDIOFORMAT_MP3 1 | ||
85 | #define AUDIOFORMAT_MP3_BITSWAPPED 2 | ||
86 | |||
87 | /* bit flags */ | ||
88 | #define FLAG_LOOP 0x00000001 /* loop the playback, e.g. for stills */ | ||
89 | |||
90 | typedef struct /* contains whatever might be useful to the player */ | ||
91 | { | ||
92 | /* general info (16 entries = 64 byte) */ | ||
93 | unsigned long magic; /* HEADER_MAGIC */ | ||
94 | unsigned long version; /* file version */ | ||
95 | unsigned long flags; /* combination of FLAG_xx */ | ||
96 | unsigned long blocksize; /* how many bytes per block (=video frame) */ | ||
97 | unsigned long bps_average; /* bits per second of the whole stream */ | ||
98 | unsigned long bps_peak; /* max. of above (audio may be VBR) */ | ||
99 | unsigned long resume_pos; /* file position to resume to */ | ||
100 | unsigned long reserved[9]; /* reserved, should be zero */ | ||
101 | |||
102 | /* video info (16 entries = 64 byte) */ | ||
103 | unsigned long video_format; /* one of VIDEOFORMAT_xxx */ | ||
104 | unsigned long video_1st_frame; /* byte position of first video frame */ | ||
105 | unsigned long video_duration; /* total length of video part, in ms */ | ||
106 | unsigned long video_payload_size; /* total amount of video data, in bytes */ | ||
107 | unsigned long video_bitrate; /* derived from resolution and frame time, in bps */ | ||
108 | unsigned long video_frametime; /* frame interval in 11.0592 MHz clocks */ | ||
109 | long video_preroll; /* video is how much ahead, in 11.0592 MHz clocks */ | ||
110 | unsigned long video_width; /* in pixels */ | ||
111 | unsigned long video_height; /* in pixels */ | ||
112 | unsigned long video_reserved[7]; /* reserved, should be zero */ | ||
113 | |||
114 | /* audio info (16 entries = 64 byte) */ | ||
115 | unsigned long audio_format; /* one of AUDIOFORMAT_xxx */ | ||
116 | unsigned long audio_1st_frame; /* byte position of first video frame */ | ||
117 | unsigned long audio_duration; /* total length of audio part, in ms */ | ||
118 | unsigned long audio_payload_size; /* total amount of audio data, in bytes */ | ||
119 | unsigned long audio_avg_bitrate; /* average audio bitrate, in bits per second */ | ||
120 | unsigned long audio_peak_bitrate; /* maximum bitrate */ | ||
121 | unsigned long audio_headersize; /* offset to payload in audio frames */ | ||
122 | long audio_min_associated; /* minimum offset to video frame, in bytes */ | ||
123 | long audio_max_associated; /* maximum offset to video frame, in bytes */ | ||
124 | unsigned long audio_reserved[7]; /* reserved, should be zero */ | ||
125 | |||
126 | /* more to come... ? */ | ||
127 | |||
128 | /* Note: padding up to 'blocksize' with zero following this header */ | ||
129 | } tFileHeader; | ||
130 | |||
131 | typedef struct /* the little header for all audio blocks */ | ||
132 | { | ||
133 | unsigned long magic; /* AUDIO_MAGIC indicates an audio block */ | ||
134 | unsigned char previous_block; /* previous how many blocks backwards */ | ||
135 | unsigned char next_block; /* next how many blocks forward */ | ||
136 | short associated_video; /* offset to block with corresponding video */ | ||
137 | unsigned short frame_start; /* offset to first frame starting in this block */ | ||
138 | unsigned short frame_end; /* offset to behind last frame ending in this block */ | ||
139 | } tAudioFrameHeader; | ||
140 | |||
141 | |||
142 | |||
143 | /****************** globals ******************/ | ||
144 | |||
145 | static char gPrint[32]; /* a global printf buffer, saves stack */ | ||
146 | |||
147 | |||
148 | /* playstate */ | ||
149 | static struct | ||
150 | { | ||
151 | enum | ||
152 | { | ||
153 | paused, | ||
154 | playing, | ||
155 | } state; | ||
156 | bool bAudioUnderrun; | ||
157 | bool bVideoUnderrun; | ||
158 | bool bHasAudio; | ||
159 | bool bHasVideo; | ||
160 | int nTimeOSD; /* OSD should stay for this many frames */ | ||
161 | bool bDirtyOSD; /* OSD needs redraw */ | ||
162 | bool bRefilling; /* set if refilling buffer */ | ||
163 | bool bSeeking; | ||
164 | int nSeekAcc; /* accelleration value for seek */ | ||
165 | int nSeekPos; /* current file position for seek */ | ||
166 | bool bDiskSleep; /* disk is suspended */ | ||
167 | #if FREQ == 12000000 /* Ondio speed kludge */ | ||
168 | int nFrameTimeAdjusted; | ||
169 | #endif | ||
170 | } gPlay; | ||
171 | |||
172 | /* buffer information */ | ||
173 | static struct | ||
174 | { | ||
175 | ssize_t bufsize; | ||
176 | int granularity; /* common multiple of block and sector size */ | ||
177 | unsigned char* pBufStart; /* start of ring buffer */ | ||
178 | unsigned char* pBufEnd; /* end of ring buffer */ | ||
179 | int osd_ypos; | ||
180 | int osd_height; | ||
181 | |||
182 | int vidcount; /* how many video blocks are known in a row */ | ||
183 | unsigned char* pBufFill; /* write pointer for disk, owned by main task */ | ||
184 | unsigned char* pReadVideo; /* video readout, maintained by timer ISR */ | ||
185 | unsigned char* pReadAudio; /* audio readout, maintained by demand ISR */ | ||
186 | bool bEOF; /* flag for end of file */ | ||
187 | int low_water; /* reload threshold */ | ||
188 | int high_water; /* end of reload threshold */ | ||
189 | int spinup_safety; /* safety margin when recalculating low_water */ | ||
190 | int nReadChunk; /* how much data for normal buffer fill */ | ||
191 | int nSeekChunk; /* how much data while seeking */ | ||
192 | } gBuf; | ||
193 | |||
194 | /* statistics */ | ||
195 | static struct | ||
196 | { | ||
197 | int minAudioAvail; | ||
198 | int minVideoAvail; | ||
199 | int nAudioUnderruns; | ||
200 | int nVideoUnderruns; | ||
201 | long minSpinup; | ||
202 | long maxSpinup; | ||
203 | } gStats; | ||
204 | |||
205 | tFileHeader gFileHdr; /* file header */ | ||
206 | |||
207 | /****************** implementation ******************/ | ||
208 | |||
209 | /* tool function: return how much playable audio/video is left */ | ||
210 | static int Available(unsigned char* pSnapshot) | ||
211 | { | ||
212 | if (pSnapshot <= gBuf.pBufFill) | ||
213 | return gBuf.pBufFill - pSnapshot; | ||
214 | else | ||
215 | return gBuf.bufsize - (pSnapshot - gBuf.pBufFill); | ||
216 | } | ||
217 | |||
218 | /* debug function to draw buffer indicators */ | ||
219 | #ifdef VIDEO_DEBUG | ||
220 | static void DrawBuf(void) | ||
221 | { | ||
222 | int ypos, fill, video, audio; | ||
223 | |||
224 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); | ||
225 | rb->lcd_fillrect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
226 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
227 | |||
228 | ypos = gBuf.osd_ypos + gBuf.osd_height/2 - 3; /* center vertically */ | ||
229 | |||
230 | rb->lcd_hline(1, LCD_WIDTH-2, ypos + 3); | ||
231 | rb->lcd_vline(0, ypos, ypos + 6); | ||
232 | rb->lcd_vline(LCD_WIDTH-1, ypos, ypos + 6); | ||
233 | |||
234 | /* calculate new tick positions */ | ||
235 | fill = 1 + ((gBuf.pBufFill - gBuf.pBufStart) * (LCD_WIDTH-2)) / gBuf.bufsize; | ||
236 | video = 1 + ((gBuf.pReadVideo - gBuf.pBufStart) * (LCD_WIDTH-2)) / gBuf.bufsize; | ||
237 | audio = 1 + ((gBuf.pReadAudio - gBuf.pBufStart) * (LCD_WIDTH-2)) / gBuf.bufsize; | ||
238 | |||
239 | rb->lcd_drawpixel(fill, ypos + 4); | ||
240 | rb->lcd_drawpixel(video, ypos + 2); | ||
241 | rb->lcd_drawpixel(audio, ypos + 1); | ||
242 | |||
243 | if (gPlay.state == paused) /* we have to draw ourselves */ | ||
244 | rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
245 | else | ||
246 | gPlay.bDirtyOSD = true; /* redraw it with next timer IRQ */ | ||
247 | } | ||
248 | #endif | ||
249 | |||
250 | |||
251 | /* helper function to draw a position indicator */ | ||
252 | static void DrawPosition(int pos, int total) | ||
253 | { | ||
254 | int w, h; | ||
255 | int sec; /* estimated seconds */ | ||
256 | int ypos; | ||
257 | |||
258 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); | ||
259 | rb->lcd_fillrect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
260 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
261 | |||
262 | /* print the estimated position */ | ||
263 | sec = pos / (gFileHdr.bps_average/8); | ||
264 | if (sec < 100*60) /* fits into mm:ss format */ | ||
265 | rb->snprintf(gPrint, sizeof(gPrint), "%02d:%02dm", sec/60, sec%60); | ||
266 | else /* a very long clip, hh:mm format */ | ||
267 | rb->snprintf(gPrint, sizeof(gPrint), "%02d:%02dh", sec/3600, (sec/60)%60); | ||
268 | |||
269 | rb->lcd_getstringsize(gPrint, &w, &h); | ||
270 | w++; | ||
271 | ypos = gBuf.osd_ypos + (gBuf.osd_height - h) / 2; | ||
272 | rb->lcd_putsxy(0, ypos, gPrint); | ||
273 | |||
274 | /* draw a slider over the rest of the line */ | ||
275 | rb->gui_scrollbar_draw(rb->screens[SCREEN_MAIN], w, ypos, LCD_WIDTH-w, | ||
276 | h, total, 0, pos, HORIZONTAL); | ||
277 | |||
278 | if (gPlay.state == paused) /* we have to draw ourselves */ | ||
279 | rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
280 | else /* let the display time do it */ | ||
281 | { | ||
282 | gPlay.nTimeOSD = FPS; | ||
283 | gPlay.bDirtyOSD = true; /* redraw it with next timer IRQ */ | ||
284 | } | ||
285 | } | ||
286 | |||
287 | /* Put text on OSD and activate it for 1 second */ | ||
288 | static void osd_show_text(void) | ||
289 | { | ||
290 | int h, ypos; | ||
291 | |||
292 | rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); | ||
293 | rb->lcd_fillrect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
294 | rb->lcd_set_drawmode(DRMODE_SOLID); | ||
295 | |||
296 | rb->lcd_getstringsize(gPrint, NULL, &h); | ||
297 | ypos = gBuf.osd_ypos + (gBuf.osd_height - h) / 2; | ||
298 | rb->lcd_putsxy(0, ypos, gPrint); | ||
299 | |||
300 | if (gPlay.state == paused) /* we have to draw ourselves */ | ||
301 | rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
302 | else /* let the display time do it */ | ||
303 | { | ||
304 | gPlay.nTimeOSD = FPS; /* display it for 1 sec */ | ||
305 | gPlay.bDirtyOSD = true; /* let the refresh copy it to LCD */ | ||
306 | } | ||
307 | } | ||
308 | |||
309 | /* helper function to change the volume by a certain amount, +/- */ | ||
310 | static void ChangeVolume(int delta) | ||
311 | { | ||
312 | int minvol = rb->sound_min(SOUND_VOLUME); | ||
313 | int maxvol = rb->sound_max(SOUND_VOLUME); | ||
314 | int vol = rb->global_settings->volume + delta; | ||
315 | |||
316 | if (vol > maxvol) vol = maxvol; | ||
317 | else if (vol < minvol) vol = minvol; | ||
318 | if (vol != rb->global_settings->volume) | ||
319 | { | ||
320 | rb->sound_set(SOUND_VOLUME, vol); | ||
321 | rb->global_settings->volume = vol; | ||
322 | |||
323 | rb->snprintf(gPrint, sizeof(gPrint), "Vol: %d dB", vol); | ||
324 | osd_show_text(); | ||
325 | } | ||
326 | } | ||
327 | |||
328 | |||
329 | /* helper function to change the LCD contrast by a certain amount, +/- */ | ||
330 | static void ChangeContrast(int delta) | ||
331 | { | ||
332 | static int mycontrast = -1; /* the "permanent" value while running */ | ||
333 | int contrast; /* updated value */ | ||
334 | |||
335 | if (mycontrast == -1) | ||
336 | mycontrast = rb->global_settings->contrast; | ||
337 | |||
338 | contrast = mycontrast + delta; | ||
339 | if (contrast > 63) contrast = 63; | ||
340 | else if (contrast < 5) contrast = 5; | ||
341 | if (contrast != mycontrast) | ||
342 | { | ||
343 | rb->lcd_set_contrast(contrast); | ||
344 | mycontrast = contrast; | ||
345 | |||
346 | rb->snprintf(gPrint, sizeof(gPrint), "Contrast: %d", contrast); | ||
347 | osd_show_text(); | ||
348 | } | ||
349 | } | ||
350 | |||
351 | |||
352 | /* sync the video to the current audio */ | ||
353 | static void SyncVideo(void) | ||
354 | { | ||
355 | tAudioFrameHeader* pAudioBuf; | ||
356 | |||
357 | pAudioBuf = (tAudioFrameHeader*)(gBuf.pReadAudio); | ||
358 | if (pAudioBuf->magic == AUDIO_MAGIC) | ||
359 | { | ||
360 | gBuf.vidcount = 0; /* nothing known */ | ||
361 | /* sync the video position */ | ||
362 | gBuf.pReadVideo = gBuf.pReadAudio + | ||
363 | (long)pAudioBuf->associated_video * (long)gFileHdr.blocksize; | ||
364 | |||
365 | /* handle possible wrap */ | ||
366 | if (gBuf.pReadVideo >= gBuf.pBufEnd) | ||
367 | gBuf.pReadVideo -= gBuf.bufsize; | ||
368 | else if (gBuf.pReadVideo < gBuf.pBufStart) | ||
369 | gBuf.pReadVideo += gBuf.bufsize; | ||
370 | } | ||
371 | } | ||
372 | |||
373 | |||
374 | /* timer interrupt handler to display a frame */ | ||
375 | static void timer4_isr(void) | ||
376 | { | ||
377 | int available; | ||
378 | tAudioFrameHeader* pAudioBuf; | ||
379 | int height; /* height to display */ | ||
380 | |||
381 | /* reduce height if we have OSD on */ | ||
382 | height = gFileHdr.video_height; | ||
383 | if (gPlay.nTimeOSD > 0) | ||
384 | { | ||
385 | gPlay.nTimeOSD--; | ||
386 | height = MIN(gBuf.osd_ypos, height); | ||
387 | if (gPlay.bDirtyOSD) | ||
388 | { | ||
389 | rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height); | ||
390 | gPlay.bDirtyOSD = false; | ||
391 | } | ||
392 | } | ||
393 | |||
394 | rb->lcd_blit_mono(gBuf.pReadVideo, 0, 0, | ||
395 | gFileHdr.video_width, height/8, gFileHdr.video_width); | ||
396 | |||
397 | available = Available(gBuf.pReadVideo); | ||
398 | |||
399 | /* loop to skip audio frame(s) */ | ||
400 | while(1) | ||
401 | { | ||
402 | /* just for the statistics */ | ||
403 | if (!gBuf.bEOF && available < gStats.minVideoAvail) | ||
404 | gStats.minVideoAvail = available; | ||
405 | |||
406 | if (available <= (int)gFileHdr.blocksize) | ||
407 | { /* no data for next frame */ | ||
408 | |||
409 | if (gBuf.bEOF && (gFileHdr.flags & FLAG_LOOP)) | ||
410 | { /* loop now, assuming the looped clip fits in memory */ | ||
411 | gBuf.pReadVideo = gBuf.pBufStart + gFileHdr.video_1st_frame; | ||
412 | /* FixMe: pReadVideo is incremented below */ | ||
413 | } | ||
414 | else | ||
415 | { | ||
416 | gPlay.bVideoUnderrun = true; | ||
417 | rb->timer_unregister(); /* disable ourselves */ | ||
418 | return; /* no data available */ | ||
419 | } | ||
420 | } | ||
421 | else /* normal advance for next time */ | ||
422 | { | ||
423 | gBuf.pReadVideo += gFileHdr.blocksize; | ||
424 | if (gBuf.pReadVideo >= gBuf.pBufEnd) | ||
425 | gBuf.pReadVideo -= gBuf.bufsize; /* wraparound */ | ||
426 | available -= gFileHdr.blocksize; | ||
427 | } | ||
428 | |||
429 | if (!gPlay.bHasAudio) | ||
430 | break; /* no need to skip any audio */ | ||
431 | |||
432 | if (gBuf.vidcount) | ||
433 | { | ||
434 | /* we know the next is a video frame */ | ||
435 | gBuf.vidcount--; | ||
436 | break; /* exit the loop */ | ||
437 | } | ||
438 | |||
439 | pAudioBuf = (tAudioFrameHeader*)(gBuf.pReadVideo); | ||
440 | if (pAudioBuf->magic == AUDIO_MAGIC) | ||
441 | { /* we ran into audio, can happen after seek */ | ||
442 | gBuf.vidcount = pAudioBuf->next_block; | ||
443 | if (gBuf.vidcount) | ||
444 | gBuf.vidcount--; /* minus the audio block */ | ||
445 | } | ||
446 | } /* while */ | ||
447 | } | ||
448 | |||
449 | |||
450 | /* ISR function to get more mp3 data */ | ||
451 | static void GetMoreMp3(const void** start, size_t* size) | ||
452 | { | ||
453 | int available; | ||
454 | int advance; | ||
455 | |||
456 | tAudioFrameHeader* pAudioBuf = (tAudioFrameHeader*)(gBuf.pReadAudio); | ||
457 | |||
458 | advance = pAudioBuf->next_block * gFileHdr.blocksize; | ||
459 | |||
460 | available = Available(gBuf.pReadAudio); | ||
461 | |||
462 | /* just for the statistics */ | ||
463 | if (!gBuf.bEOF && available < gStats.minAudioAvail) | ||
464 | gStats.minAudioAvail = available; | ||
465 | |||
466 | if (available < advance + (int)gFileHdr.blocksize || advance == 0) | ||
467 | { | ||
468 | gPlay.bAudioUnderrun = true; | ||
469 | return; /* no data available */ | ||
470 | } | ||
471 | |||
472 | gBuf.pReadAudio += advance; | ||
473 | if (gBuf.pReadAudio >= gBuf.pBufEnd) | ||
474 | gBuf.pReadAudio -= gBuf.bufsize; /* wraparound */ | ||
475 | |||
476 | *start = gBuf.pReadAudio + gFileHdr.audio_headersize; | ||
477 | *size = gFileHdr.blocksize - gFileHdr.audio_headersize; | ||
478 | } | ||
479 | |||
480 | |||
481 | static int WaitForButton(void) | ||
482 | { | ||
483 | int button; | ||
484 | |||
485 | do | ||
486 | { | ||
487 | button = rb->button_get(true); | ||
488 | rb->default_event_handler(button); | ||
489 | } while ((button & BUTTON_REL) && button != SYS_USB_CONNECTED); | ||
490 | |||
491 | return button; | ||
492 | } | ||
493 | |||
494 | |||
495 | static bool WantResume(int fd) | ||
496 | { | ||
497 | int button; | ||
498 | |||
499 | rb->lcd_puts(0, 0, "Resume to this"); | ||
500 | rb->lcd_puts(0, 1, "last position?"); | ||
501 | rb->lcd_puts(0, 2, "PLAY = yes"); | ||
502 | rb->lcd_puts(0, 3, "Any Other = no"); | ||
503 | rb->lcd_puts(0, 4, " (plays from start)"); | ||
504 | DrawPosition(gFileHdr.resume_pos, rb->filesize(fd)); | ||
505 | rb->lcd_update(); | ||
506 | |||
507 | button = WaitForButton(); | ||
508 | return (button == VIDEO_RESUME); | ||
509 | } | ||
510 | |||
511 | |||
512 | static int SeekTo(int fd, int nPos) | ||
513 | { | ||
514 | int read_now, got_now; | ||
515 | |||
516 | if (gPlay.bHasAudio) | ||
517 | rb->mp3_play_stop(); /* stop audio ISR */ | ||
518 | if (gPlay.bHasVideo) | ||
519 | rb->timer_unregister(); /* stop the timer */ | ||
520 | |||
521 | rb->lseek(fd, nPos, SEEK_SET); | ||
522 | |||
523 | gBuf.pBufFill = gBuf.pBufStart; /* all empty */ | ||
524 | gBuf.pReadVideo = gBuf.pReadAudio = gBuf.pBufStart; | ||
525 | |||
526 | read_now = gBuf.low_water - 1; /* less than low water, so loading will continue */ | ||
527 | read_now -= read_now % gBuf.granularity; /* round down to granularity */ | ||
528 | got_now = rb->read(fd, gBuf.pBufFill, read_now); | ||
529 | gBuf.bEOF = (read_now != got_now); | ||
530 | gBuf.pBufFill += got_now; | ||
531 | |||
532 | if (nPos == 0) | ||
533 | { /* we seeked to the start */ | ||
534 | if (gPlay.bHasVideo) | ||
535 | gBuf.pReadVideo += gFileHdr.video_1st_frame; | ||
536 | |||
537 | if (gPlay.bHasAudio) | ||
538 | gBuf.pReadAudio += gFileHdr.audio_1st_frame; | ||
539 | } | ||
540 | else | ||
541 | { /* we have to search for the positions */ | ||
542 | if (gPlay.bHasAudio) /* prepare audio playback, if contained */ | ||
543 | { | ||
544 | /* search for audio frame */ | ||
545 | while (((tAudioFrameHeader*)(gBuf.pReadAudio))->magic != AUDIO_MAGIC) | ||
546 | gBuf.pReadAudio += gFileHdr.blocksize; | ||
547 | |||
548 | if (gPlay.bHasVideo) | ||
549 | SyncVideo(); /* pick the right video for that */ | ||
550 | } | ||
551 | } | ||
552 | |||
553 | /* synchronous start */ | ||
554 | gPlay.state = playing; | ||
555 | if (gPlay.bHasAudio) | ||
556 | { | ||
557 | gPlay.bAudioUnderrun = false; | ||
558 | rb->mp3_play_data(gBuf.pReadAudio + gFileHdr.audio_headersize, | ||
559 | gFileHdr.blocksize - gFileHdr.audio_headersize, GetMoreMp3); | ||
560 | rb->mp3_play_pause(true); /* kickoff audio */ | ||
561 | } | ||
562 | if (gPlay.bHasVideo) | ||
563 | { | ||
564 | gPlay.bVideoUnderrun = false; | ||
565 | /* start display interrupt */ | ||
566 | #if FREQ == 12000000 /* Ondio speed kludge */ | ||
567 | rb->timer_register(1, NULL, gPlay.nFrameTimeAdjusted, | ||
568 | timer4_isr IF_COP(, CPU)); | ||
569 | #else | ||
570 | rb->timer_register(1, NULL, gFileHdr.video_frametime, | ||
571 | timer4_isr IF_COP(, CPU)); | ||
572 | #endif | ||
573 | } | ||
574 | |||
575 | return 0; | ||
576 | } | ||
577 | |||
578 | /* called from default_event_handler_ex() or at end of playback */ | ||
579 | static void Cleanup(void *fd) | ||
580 | { | ||
581 | rb->close(*(int*)fd); /* close the file */ | ||
582 | |||
583 | if (gPlay.bHasVideo) | ||
584 | rb->timer_unregister(); /* stop video ISR, now I can use the display again */ | ||
585 | |||
586 | if (gPlay.bHasAudio) | ||
587 | rb->mp3_play_stop(); /* stop audio ISR */ | ||
588 | |||
589 | /* Turn on backlight timeout (revert to settings) */ | ||
590 | backlight_use_settings(); | ||
591 | |||
592 | /* restore normal contrast */ | ||
593 | rb->lcd_set_contrast(rb->global_settings->contrast); | ||
594 | } | ||
595 | |||
596 | /* returns >0 if continue, =0 to stop, <0 to abort (USB) */ | ||
597 | static int PlayTick(int fd) | ||
598 | { | ||
599 | int button; | ||
600 | static int lastbutton = 0; | ||
601 | int avail_audio = -1, avail_video = -1; | ||
602 | int retval = 1; | ||
603 | int filepos; | ||
604 | |||
605 | /* check buffer level */ | ||
606 | |||
607 | if (gPlay.bHasAudio) | ||
608 | avail_audio = Available(gBuf.pReadAudio); | ||
609 | if (gPlay.bHasVideo) | ||
610 | avail_video = Available(gBuf.pReadVideo); | ||
611 | |||
612 | if ((gPlay.bHasAudio && avail_audio < gBuf.low_water) | ||
613 | || (gPlay.bHasVideo && avail_video < gBuf.low_water)) | ||
614 | { | ||
615 | gPlay.bRefilling = true; /* go to refill mode */ | ||
616 | } | ||
617 | |||
618 | if ((!gPlay.bHasAudio || gPlay.bAudioUnderrun) | ||
619 | && (!gPlay.bHasVideo || gPlay.bVideoUnderrun) | ||
620 | && gBuf.bEOF) | ||
621 | { | ||
622 | if (gFileHdr.resume_pos) | ||
623 | { /* we played til the end, clear resume position */ | ||
624 | gFileHdr.resume_pos = 0; | ||
625 | rb->lseek(fd, 0, SEEK_SET); /* save resume position */ | ||
626 | rb->write(fd, &gFileHdr, sizeof(gFileHdr)); | ||
627 | } | ||
628 | Cleanup(&fd); | ||
629 | return 0; /* all expired */ | ||
630 | } | ||
631 | |||
632 | if (!gPlay.bRefilling || gBuf.bEOF) | ||
633 | { /* nothing to do */ | ||
634 | button = rb->button_get_w_tmo(HZ/10); | ||
635 | } | ||
636 | else | ||
637 | { /* refill buffer */ | ||
638 | int read_now, got_now; | ||
639 | int buf_free; | ||
640 | long spinup; /* measure the spinup time */ | ||
641 | |||
642 | /* how much can we reload, don't fill completely, would appear empty */ | ||
643 | buf_free = gBuf.bufsize - MAX(avail_audio, avail_video) - gBuf.high_water; | ||
644 | if (buf_free < 0) | ||
645 | buf_free = 0; /* just for safety */ | ||
646 | buf_free -= buf_free % gBuf.granularity; /* round down to granularity */ | ||
647 | |||
648 | /* in one piece max. up to buffer end (wrap after that) */ | ||
649 | read_now = MIN(buf_free, gBuf.pBufEnd - gBuf.pBufFill); | ||
650 | |||
651 | /* load piecewise, to stay responsive */ | ||
652 | read_now = MIN(read_now, gBuf.nReadChunk); | ||
653 | |||
654 | if (read_now == buf_free) | ||
655 | gPlay.bRefilling = false; /* last piece requested */ | ||
656 | |||
657 | spinup = *rb->current_tick; /* in case this is interesting below */ | ||
658 | |||
659 | got_now = rb->read(fd, gBuf.pBufFill, read_now); | ||
660 | if (got_now != read_now || read_now == 0) | ||
661 | { | ||
662 | gBuf.bEOF = true; | ||
663 | gPlay.bRefilling = false; | ||
664 | } | ||
665 | |||
666 | if (gPlay.bDiskSleep) /* statistics about the spinup time */ | ||
667 | { | ||
668 | spinup = *rb->current_tick - spinup; | ||
669 | gPlay.bDiskSleep = false; | ||
670 | if (spinup > gStats.maxSpinup) | ||
671 | gStats.maxSpinup = spinup; | ||
672 | if (spinup < gStats.minSpinup) | ||
673 | gStats.minSpinup = spinup; | ||
674 | |||
675 | /* recalculate the low water mark from real measurements */ | ||
676 | gBuf.low_water = (gStats.maxSpinup + gBuf.spinup_safety) | ||
677 | * gFileHdr.bps_peak / 8 / HZ; | ||
678 | } | ||
679 | |||
680 | if (!gPlay.bRefilling | ||
681 | #ifdef HAVE_DISK_STORAGE | ||
682 | && rb->global_settings->disk_spindown < 20 /* condition for test only */ | ||
683 | #endif | ||
684 | ) | ||
685 | { | ||
686 | rb->storage_sleep(); /* no point in leaving the disk run til timeout */ | ||
687 | gPlay.bDiskSleep = true; | ||
688 | } | ||
689 | |||
690 | gBuf.pBufFill += got_now; | ||
691 | if (gBuf.pBufFill >= gBuf.pBufEnd) | ||
692 | gBuf.pBufFill = gBuf.pBufStart; /* wrap */ | ||
693 | |||
694 | rb->yield(); /* have mercy with the other threads */ | ||
695 | button = rb->button_get(false); | ||
696 | } | ||
697 | |||
698 | /* check keypresses */ | ||
699 | |||
700 | if (button != BUTTON_NONE) | ||
701 | { | ||
702 | filepos = rb->lseek(fd, 0, SEEK_CUR); | ||
703 | |||
704 | if (gPlay.bHasVideo) /* video position is more accurate */ | ||
705 | filepos -= Available(gBuf.pReadVideo); /* take video position */ | ||
706 | else | ||
707 | filepos -= Available(gBuf.pReadAudio); /* else audio */ | ||
708 | |||
709 | switch (button) { /* set exit conditions */ | ||
710 | case BUTTON_OFF: | ||
711 | if (gFileHdr.magic == HEADER_MAGIC /* only if file has header */ | ||
712 | && !(gFileHdr.flags & FLAG_LOOP)) /* not for stills */ | ||
713 | { | ||
714 | gFileHdr.resume_pos = filepos; | ||
715 | rb->lseek(fd, 0, SEEK_SET); /* save resume position */ | ||
716 | rb->write(fd, &gFileHdr, sizeof(gFileHdr)); | ||
717 | } | ||
718 | Cleanup(&fd); | ||
719 | retval = 0; /* signal "stopped" to caller */ | ||
720 | break; | ||
721 | case VIDEO_STOP_SEEK: | ||
722 | #ifdef VIDEO_STOP_SEEK_PRE | ||
723 | if (lastbutton != VIDEO_STOP_SEEK_PRE) | ||
724 | break; | ||
725 | #endif | ||
726 | if (gPlay.bSeeking) | ||
727 | { | ||
728 | gPlay.bSeeking = false; | ||
729 | gPlay.state = playing; | ||
730 | SeekTo(fd, gPlay.nSeekPos); | ||
731 | } | ||
732 | else if (gPlay.state == playing) | ||
733 | { | ||
734 | gPlay.state = paused; | ||
735 | if (gPlay.bHasAudio) | ||
736 | rb->mp3_play_pause(false); /* pause audio */ | ||
737 | if (gPlay.bHasVideo) | ||
738 | rb->timer_unregister(); /* stop the timer */ | ||
739 | } | ||
740 | else if (gPlay.state == paused) | ||
741 | { | ||
742 | gPlay.state = playing; | ||
743 | if (gPlay.bHasAudio) | ||
744 | { | ||
745 | if (gPlay.bHasVideo) | ||
746 | SyncVideo(); | ||
747 | rb->mp3_play_pause(true); /* play audio */ | ||
748 | } | ||
749 | if (gPlay.bHasVideo) | ||
750 | { /* start the video */ | ||
751 | #if FREQ == 12000000 /* Ondio speed kludge */ | ||
752 | rb->timer_register(1, NULL, | ||
753 | gPlay.nFrameTimeAdjusted, timer4_isr); | ||
754 | #else | ||
755 | rb->timer_register(1, NULL, | ||
756 | gFileHdr.video_frametime, timer4_isr); | ||
757 | #endif | ||
758 | } | ||
759 | } | ||
760 | break; | ||
761 | case BUTTON_UP: | ||
762 | case BUTTON_UP | BUTTON_REPEAT: | ||
763 | if (gPlay.bHasAudio) | ||
764 | ChangeVolume(1); | ||
765 | break; | ||
766 | case BUTTON_DOWN: | ||
767 | case BUTTON_DOWN | BUTTON_REPEAT: | ||
768 | if (gPlay.bHasAudio) | ||
769 | ChangeVolume(-1); | ||
770 | break; | ||
771 | case BUTTON_LEFT: | ||
772 | case BUTTON_LEFT | BUTTON_REPEAT: | ||
773 | if (!gPlay.bSeeking) /* prepare seek */ | ||
774 | { | ||
775 | gPlay.nSeekPos = filepos; | ||
776 | gPlay.bSeeking = true; | ||
777 | gPlay.nSeekAcc = 0; | ||
778 | } | ||
779 | else if (gPlay.nSeekAcc > 0) /* other direction, stop sliding */ | ||
780 | gPlay.nSeekAcc = 0; | ||
781 | else | ||
782 | gPlay.nSeekAcc--; | ||
783 | break; | ||
784 | case BUTTON_RIGHT: | ||
785 | case BUTTON_RIGHT | BUTTON_REPEAT: | ||
786 | if (!gPlay.bSeeking) /* prepare seek */ | ||
787 | { | ||
788 | gPlay.nSeekPos = filepos; | ||
789 | gPlay.bSeeking = true; | ||
790 | gPlay.nSeekAcc = 0; | ||
791 | } | ||
792 | else if (gPlay.nSeekAcc < 0) /* other direction, stop sliding */ | ||
793 | gPlay.nSeekAcc = 0; | ||
794 | else | ||
795 | gPlay.nSeekAcc++; | ||
796 | break; | ||
797 | #ifdef VIDEO_DEBUG | ||
798 | case VIDEO_DEBUG: /* debug key */ | ||
799 | case VIDEO_DEBUG | BUTTON_REPEAT: | ||
800 | DrawBuf(); /* show buffer status */ | ||
801 | gPlay.nTimeOSD = FPS/2; | ||
802 | gPlay.bDirtyOSD = true; | ||
803 | break; | ||
804 | #endif | ||
805 | case VIDEO_CONTRAST_DOWN: /* contrast down */ | ||
806 | case VIDEO_CONTRAST_DOWN | BUTTON_REPEAT: | ||
807 | if (gPlay.bHasVideo) | ||
808 | ChangeContrast(-1); | ||
809 | break; | ||
810 | case VIDEO_CONTRAST_UP: /* contrast up */ | ||
811 | case VIDEO_CONTRAST_UP | BUTTON_REPEAT: | ||
812 | if (gPlay.bHasVideo) | ||
813 | ChangeContrast(1); | ||
814 | break; | ||
815 | default: | ||
816 | if (rb->default_event_handler_ex(button, Cleanup, &fd) | ||
817 | == SYS_USB_CONNECTED) | ||
818 | retval = -1; /* signal "aborted" to caller */ | ||
819 | break; | ||
820 | } | ||
821 | |||
822 | lastbutton = button; | ||
823 | } /* if (button != BUTTON_NONE) */ | ||
824 | |||
825 | |||
826 | /* handle seeking */ | ||
827 | |||
828 | if (gPlay.bSeeking) /* seeking? */ | ||
829 | { | ||
830 | if (gPlay.nSeekAcc < -MAX_ACC) | ||
831 | gPlay.nSeekAcc = -MAX_ACC; | ||
832 | else if (gPlay.nSeekAcc > MAX_ACC) | ||
833 | gPlay.nSeekAcc = MAX_ACC; | ||
834 | |||
835 | gPlay.nSeekPos += gPlay.nSeekAcc * gBuf.nSeekChunk; | ||
836 | if (gPlay.nSeekPos < 0) | ||
837 | gPlay.nSeekPos = 0; | ||
838 | if (gPlay.nSeekPos > rb->filesize(fd) - gBuf.granularity) | ||
839 | { | ||
840 | gPlay.nSeekPos = rb->filesize(fd); | ||
841 | gPlay.nSeekPos -= gPlay.nSeekPos % gBuf.granularity; | ||
842 | } | ||
843 | DrawPosition(gPlay.nSeekPos, rb->filesize(fd)); | ||
844 | } | ||
845 | |||
846 | |||
847 | /* check + recover underruns */ | ||
848 | |||
849 | if ((gPlay.bAudioUnderrun || gPlay.bVideoUnderrun) && !gBuf.bEOF) | ||
850 | { | ||
851 | gBuf.spinup_safety += HZ/2; /* add extra spinup time for the future */ | ||
852 | filepos = rb->lseek(fd, 0, SEEK_CUR); | ||
853 | |||
854 | if (gPlay.bHasVideo && gPlay.bVideoUnderrun) | ||
855 | { | ||
856 | gStats.nVideoUnderruns++; | ||
857 | filepos -= Available(gBuf.pReadVideo); /* take video position */ | ||
858 | SeekTo(fd, filepos); | ||
859 | } | ||
860 | else if (gPlay.bHasAudio && gPlay.bAudioUnderrun) | ||
861 | { | ||
862 | gStats.nAudioUnderruns++; | ||
863 | filepos -= Available(gBuf.pReadAudio); /* else audio */ | ||
864 | SeekTo(fd, filepos); | ||
865 | } | ||
866 | } | ||
867 | |||
868 | return retval; | ||
869 | } | ||
870 | |||
871 | |||
872 | static int main(char* filename) | ||
873 | { | ||
874 | int file_size; | ||
875 | int fd; /* file descriptor handle */ | ||
876 | int read_now, got_now; | ||
877 | int button = 0; | ||
878 | int retval; | ||
879 | |||
880 | /* try to open the file */ | ||
881 | fd = rb->open(filename, O_RDWR); | ||
882 | if (fd < 0) | ||
883 | return PLUGIN_ERROR; | ||
884 | file_size = rb->filesize(fd); | ||
885 | |||
886 | /* reset pitch value to ensure synchronous playback */ | ||
887 | rb->sound_set_pitch(PITCH_SPEED_100); | ||
888 | |||
889 | /* init statistics */ | ||
890 | rb->memset(&gStats, 0, sizeof(gStats)); | ||
891 | gStats.minAudioAvail = gStats.minVideoAvail = INT_MAX; | ||
892 | gStats.minSpinup = INT_MAX; | ||
893 | |||
894 | /* init playback state */ | ||
895 | rb->memset(&gPlay, 0, sizeof(gPlay)); | ||
896 | |||
897 | /* init buffer */ | ||
898 | rb->memset(&gBuf, 0, sizeof(gBuf)); | ||
899 | gBuf.pBufStart = rb->plugin_get_audio_buffer((size_t *)&gBuf.bufsize); | ||
900 | /*gBuf.bufsize = 1700*1024; // test, like 2MB version!!!! */ | ||
901 | gBuf.pBufFill = gBuf.pBufStart; /* all empty */ | ||
902 | |||
903 | /* init OSD */ | ||
904 | rb->lcd_getstringsize("X", NULL, &retval); | ||
905 | gBuf.osd_height = (retval + 7) & ~7; | ||
906 | gBuf.osd_ypos = LCD_HEIGHT - gBuf.osd_height; | ||
907 | |||
908 | /* load file header */ | ||
909 | read_now = sizeof(gFileHdr); | ||
910 | got_now = rb->read(fd, &gFileHdr, read_now); | ||
911 | rb->lseek(fd, 0, SEEK_SET); /* rewind to restart sector-aligned */ | ||
912 | if (got_now != read_now) | ||
913 | { | ||
914 | rb->close(fd); | ||
915 | return (PLUGIN_ERROR); | ||
916 | } | ||
917 | |||
918 | /* check header */ | ||
919 | if (gFileHdr.magic != HEADER_MAGIC) | ||
920 | { /* old file, use default info */ | ||
921 | rb->memset(&gFileHdr, 0, sizeof(gFileHdr)); | ||
922 | gFileHdr.blocksize = SCREENSIZE; | ||
923 | if (file_size < SCREENSIZE * FPS) /* less than a second */ | ||
924 | gFileHdr.flags |= FLAG_LOOP; | ||
925 | gFileHdr.video_format = VIDEOFORMAT_RAW; | ||
926 | gFileHdr.video_width = LCD_WIDTH; | ||
927 | gFileHdr.video_height = LCD_HEIGHT; | ||
928 | gFileHdr.video_frametime = 11059200 / FPS; | ||
929 | gFileHdr.bps_peak = gFileHdr.bps_average = LCD_WIDTH * LCD_HEIGHT * FPS; | ||
930 | } | ||
931 | |||
932 | #if FREQ == 12000000 /* Ondio speed kludge, 625 / 576 == 12000000 / 11059200 */ | ||
933 | gPlay.nFrameTimeAdjusted = (gFileHdr.video_frametime * 625) / 576; | ||
934 | #endif | ||
935 | |||
936 | /* continue buffer init: align the end, calc low water, read sizes */ | ||
937 | gBuf.granularity = gFileHdr.blocksize; | ||
938 | while (gBuf.granularity % 512) /* common multiple of sector size */ | ||
939 | gBuf.granularity *= 2; | ||
940 | gBuf.bufsize -= gBuf.bufsize % gBuf.granularity; /* round down */ | ||
941 | gBuf.pBufEnd = gBuf.pBufStart + gBuf.bufsize; | ||
942 | gBuf.low_water = SPINUP_INIT * gFileHdr.bps_peak / 8000; | ||
943 | gBuf.spinup_safety = SPINUP_SAFETY * HZ / 1000; /* in time ticks */ | ||
944 | if (gFileHdr.audio_min_associated < 0) | ||
945 | gBuf.high_water = 0 - gFileHdr.audio_min_associated; | ||
946 | else | ||
947 | gBuf.high_water = 1; /* never fill buffer completely, would appear empty */ | ||
948 | gBuf.nReadChunk = (CHUNK + gBuf.granularity - 1); /* round up */ | ||
949 | gBuf.nReadChunk -= gBuf.nReadChunk % gBuf.granularity;/* and align */ | ||
950 | gBuf.nSeekChunk = rb->filesize(fd) / FF_TICKS; | ||
951 | gBuf.nSeekChunk += gBuf.granularity - 1; /* round up */ | ||
952 | gBuf.nSeekChunk -= gBuf.nSeekChunk % gBuf.granularity; /* and align */ | ||
953 | |||
954 | /* prepare video playback, if contained */ | ||
955 | if (gFileHdr.video_format == VIDEOFORMAT_RAW) | ||
956 | { | ||
957 | gPlay.bHasVideo = true; | ||
958 | /* Turn off backlight timeout */ | ||
959 | backlight_ignore_timeout(); | ||
960 | } | ||
961 | |||
962 | /* prepare audio playback, if contained */ | ||
963 | if (gFileHdr.audio_format == AUDIOFORMAT_MP3_BITSWAPPED) | ||
964 | { | ||
965 | gPlay.bHasAudio = true; | ||
966 | } | ||
967 | |||
968 | /* start playback by seeking to zero or resume position */ | ||
969 | if (gFileHdr.resume_pos && WantResume(fd)) /* ask the user */ | ||
970 | SeekTo(fd, gFileHdr.resume_pos); | ||
971 | else | ||
972 | SeekTo(fd, 0); | ||
973 | |||
974 | /* all that's left to do is keep the buffer full */ | ||
975 | do /* the main loop */ | ||
976 | { | ||
977 | retval = PlayTick(fd); | ||
978 | } while (retval > 0); | ||
979 | |||
980 | if (retval < 0) /* aborted? */ | ||
981 | { | ||
982 | return PLUGIN_USB_CONNECTED; | ||
983 | } | ||
984 | |||
985 | #ifndef DEBUG /* for release compilations, only display the stats in case of error */ | ||
986 | if (gStats.nAudioUnderruns || gStats.nVideoUnderruns) | ||
987 | #endif | ||
988 | { | ||
989 | /* display statistics */ | ||
990 | rb->lcd_clear_display(); | ||
991 | rb->snprintf(gPrint, sizeof(gPrint), "%d Audio Underruns", gStats.nAudioUnderruns); | ||
992 | rb->lcd_puts(0, 0, gPrint); | ||
993 | rb->snprintf(gPrint, sizeof(gPrint), "%d Video Underruns", gStats.nVideoUnderruns); | ||
994 | rb->lcd_puts(0, 1, gPrint); | ||
995 | rb->snprintf(gPrint, sizeof(gPrint), "%d MinAudio bytes", gStats.minAudioAvail); | ||
996 | rb->lcd_puts(0, 2, gPrint); | ||
997 | rb->snprintf(gPrint, sizeof(gPrint), "%d MinVideo bytes", gStats.minVideoAvail); | ||
998 | rb->lcd_puts(0, 3, gPrint); | ||
999 | rb->snprintf(gPrint, sizeof(gPrint), "MinSpinup %ld.%02ld", gStats.minSpinup/HZ, gStats.minSpinup%HZ); | ||
1000 | rb->lcd_puts(0, 4, gPrint); | ||
1001 | rb->snprintf(gPrint, sizeof(gPrint), "MaxSpinup %ld.%02ld", gStats.maxSpinup/HZ, gStats.maxSpinup%HZ); | ||
1002 | rb->lcd_puts(0, 5, gPrint); | ||
1003 | rb->snprintf(gPrint, sizeof(gPrint), "LowWater: %d", gBuf.low_water); | ||
1004 | rb->lcd_puts(0, 6, gPrint); | ||
1005 | rb->snprintf(gPrint, sizeof(gPrint), "HighWater: %d", gBuf.high_water); | ||
1006 | rb->lcd_puts(0, 7, gPrint); | ||
1007 | |||
1008 | rb->lcd_update(); | ||
1009 | button = WaitForButton(); | ||
1010 | } | ||
1011 | return (button == SYS_USB_CONNECTED) ? PLUGIN_USB_CONNECTED : PLUGIN_OK; | ||
1012 | } | ||
1013 | |||
1014 | |||
1015 | /***************** Plugin Entry Point *****************/ | ||
1016 | |||
1017 | enum plugin_status plugin_start(const void* parameter) | ||
1018 | { | ||
1019 | if (parameter == NULL) | ||
1020 | { | ||
1021 | rb->splash(HZ*2, "Play .rvf file!"); | ||
1022 | return PLUGIN_ERROR; | ||
1023 | } | ||
1024 | |||
1025 | /* now go ahead and have fun! */ | ||
1026 | return main((char*) parameter); | ||
1027 | } | ||
1028 | |||
1029 | #endif /* #ifdef HAVE_LCD_BITMAP */ | ||
1030 | |||
diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c index af6bd6f397..a4d639ede6 100644 --- a/apps/plugins/vu_meter.c +++ b/apps/plugins/vu_meter.c | |||
@@ -24,32 +24,8 @@ | |||
24 | 24 | ||
25 | 25 | ||
26 | /* variable button definitions */ | 26 | /* variable button definitions */ |
27 | #if CONFIG_KEYPAD == RECORDER_PAD | 27 | #if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ |
28 | #define VUMETER_QUIT BUTTON_OFF | 28 | (CONFIG_KEYPAD == IRIVER_H300_PAD) |
29 | #define VUMETER_HELP BUTTON_ON | ||
30 | #define VUMETER_MENU BUTTON_F1 | ||
31 | #define VUMETER_UP BUTTON_UP | ||
32 | #define VUMETER_DOWN BUTTON_DOWN | ||
33 | #define LABEL_HELP "ON" | ||
34 | #define LABEL_QUIT "OFF" | ||
35 | #define LABEL_MENU "F1" | ||
36 | #define LABEL_VOLUME "UP/DOWN" | ||
37 | |||
38 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
39 | #define VUMETER_QUIT BUTTON_OFF | ||
40 | #define VUMETER_HELP_PRE BUTTON_MENU | ||
41 | #define VUMETER_HELP (BUTTON_MENU | BUTTON_REL) | ||
42 | #define VUMETER_MENU_PRE BUTTON_MENU | ||
43 | #define VUMETER_MENU (BUTTON_MENU | BUTTON_REPEAT) | ||
44 | #define VUMETER_UP BUTTON_UP | ||
45 | #define VUMETER_DOWN BUTTON_DOWN | ||
46 | #define LABEL_HELP "MODE" | ||
47 | #define LABEL_QUIT "OFF" | ||
48 | #define LABEL_MENU "MODE.." | ||
49 | #define LABEL_VOLUME "UP/DOWN" | ||
50 | |||
51 | #elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \ | ||
52 | (CONFIG_KEYPAD == IRIVER_H300_PAD) | ||
53 | #define VUMETER_QUIT BUTTON_OFF | 29 | #define VUMETER_QUIT BUTTON_OFF |
54 | #define VUMETER_HELP BUTTON_ON | 30 | #define VUMETER_HELP BUTTON_ON |
55 | #define VUMETER_MENU BUTTON_SELECT | 31 | #define VUMETER_MENU BUTTON_SELECT |
@@ -804,10 +780,7 @@ static void draw_digital_minimeters(void) { | |||
804 | 780 | ||
805 | static void analog_meter(void) { | 781 | static void analog_meter(void) { |
806 | 782 | ||
807 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | 783 | #if (CONFIG_CODEC == SWCODEC) |
808 | int left_peak = rb->mas_codec_readreg(0xC); | ||
809 | int right_peak = rb->mas_codec_readreg(0xD); | ||
810 | #elif (CONFIG_CODEC == SWCODEC) | ||
811 | static struct pcm_peaks peaks; | 784 | static struct pcm_peaks peaks; |
812 | rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, | 785 | rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, |
813 | &peaks); | 786 | &peaks); |
@@ -864,10 +837,7 @@ static void analog_meter(void) { | |||
864 | } | 837 | } |
865 | 838 | ||
866 | static void digital_meter(void) { | 839 | static void digital_meter(void) { |
867 | #if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) | 840 | #if (CONFIG_CODEC == SWCODEC) |
868 | int left_peak = rb->mas_codec_readreg(0xC); | ||
869 | int right_peak = rb->mas_codec_readreg(0xD); | ||
870 | #elif (CONFIG_CODEC == SWCODEC) | ||
871 | static struct pcm_peaks peaks; | 841 | static struct pcm_peaks peaks; |
872 | rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, | 842 | rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, |
873 | &peaks); | 843 | &peaks); |
diff --git a/apps/plugins/wavplay.c b/apps/plugins/wavplay.c deleted file mode 100644 index 073af31280..0000000000 --- a/apps/plugins/wavplay.c +++ /dev/null | |||
@@ -1,3676 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2006 Jörg Hohensohn | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #include "plugin.h" | ||
22 | |||
23 | |||
24 | |||
25 | /************ Start of MAS pcm codec, raw i2c blocks ************/ | ||
26 | |||
27 | // address 04640 count 30 (126 bytes) | ||
28 | static const unsigned char maspcm_array1[] = { | ||
29 | 0xe0, 0x00, 0x00, 0x1e, 0x06, 0x40, | ||
30 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
31 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
32 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
33 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
34 | 0x00, 0x00, 0x00, 0x25, // 00000025 | ||
35 | 0x00, 0x00, 0x00, 0x04, // 00000004 | ||
36 | 0x00, 0x00, 0x48, 0x00, // 00004800 | ||
37 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
38 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
39 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
40 | 0x00, 0x00, 0xFF, 0xFF, // 0000FFFF | ||
41 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
42 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
43 | 0x00, 0x00, 0x82, 0x00, // 00008200 | ||
44 | 0x00, 0x00, 0x00, 0x0A, // 0000000A | ||
45 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
46 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
47 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
48 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
49 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
50 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
51 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
52 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
53 | 0x00, 0x00, 0x03, 0x18, // 00000318 | ||
54 | 0x00, 0x00, 0x03, 0x18, // 00000318 | ||
55 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
56 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
57 | 0x00, 0x00, 0x03, 0x18, // 00000318 | ||
58 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
59 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
60 | }; | ||
61 | // address 04674 count 81 (330 bytes) | ||
62 | static const unsigned char maspcm_array2[] = { | ||
63 | 0xe0, 0x00, 0x00, 0x51, 0x06, 0x74, | ||
64 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
65 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
66 | 0x00, 0x00, 0x00, 0x60, // 00000060 | ||
67 | 0x00, 0x00, 0x00, 0x60, // 00000060 | ||
68 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
69 | 0x00, 0x00, 0xC0, 0x00, // 0000C000 | ||
70 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
71 | 0x00, 0x00, 0x00, 0x1E, // 0000001E | ||
72 | 0x00, 0x00, 0x42, 0x11, // 00004211 | ||
73 | 0x00, 0x00, 0x58, 0x33, // 00005833 | ||
74 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
75 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
76 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
77 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
78 | 0x00, 0x01, 0x20, 0x01, // 00012001 | ||
79 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
80 | 0x00, 0x00, 0x00, 0x29, // 00000029 | ||
81 | 0x00, 0x00, 0x30, 0xC3, // 000030C3 | ||
82 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
83 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
84 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
85 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
86 | 0x00, 0x00, 0x02, 0x00, // 00000200 | ||
87 | 0x00, 0x01, 0x20, 0x00, // 00012000 | ||
88 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
89 | 0x00, 0x00, 0x00, 0x2D, // 0000002D | ||
90 | 0x00, 0x00, 0x2C, 0x86, // 00002C86 | ||
91 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
92 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
93 | 0x00, 0x00, 0x00, 0x30, // 00000030 | ||
94 | 0x00, 0x00, 0x00, 0x30, // 00000030 | ||
95 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
96 | 0x00, 0x01, 0x80, 0x00, // 00018000 | ||
97 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
98 | 0x00, 0x00, 0x00, 0x3C, // 0000003C | ||
99 | 0x00, 0x00, 0x21, 0x93, // 00002193 | ||
100 | 0x00, 0x00, 0x58, 0x33, // 00005833 | ||
101 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
102 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
103 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
104 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
105 | 0x00, 0x02, 0x40, 0x01, // 00024001 | ||
106 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
107 | 0x00, 0x00, 0x00, 0x52, // 00000052 | ||
108 | 0x00, 0x00, 0x18, 0xAD, // 000018AD | ||
109 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
110 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
111 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
112 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
113 | 0x00, 0x00, 0x02, 0x00, // 00000200 | ||
114 | 0x00, 0x02, 0x40, 0x00, // 00024000 | ||
115 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
116 | 0x00, 0x00, 0x00, 0x5A, // 0000005A | ||
117 | 0x00, 0x00, 0x16, 0x81, // 00001681 | ||
118 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
119 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
120 | 0x00, 0x00, 0x00, 0x18, // 00000018 | ||
121 | 0x00, 0x00, 0x00, 0x18, // 00000018 | ||
122 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
123 | 0x00, 0x03, 0x00, 0x00, // 00030000 | ||
124 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
125 | 0x00, 0x00, 0x00, 0x78, // 00000078 | ||
126 | 0x00, 0x00, 0x10, 0xED, // 000010ED | ||
127 | 0x00, 0x00, 0x58, 0x33, // 00005833 | ||
128 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
129 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
130 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
131 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
132 | 0x00, 0x04, 0x80, 0x03, // 00048003 | ||
133 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
134 | 0x00, 0x00, 0x00, 0xA5, // 000000A5 | ||
135 | 0x00, 0x00, 0x0C, 0x56, // 00000C56 | ||
136 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
137 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
138 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
139 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
140 | 0x00, 0x00, 0x02, 0x00, // 00000200 | ||
141 | 0x00, 0x04, 0x80, 0x00, // 00048000 | ||
142 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
143 | 0x00, 0x00, 0x00, 0xB4, // 000000B4 | ||
144 | 0x00, 0x00, 0x0B, 0x51, // 00000B51 | ||
145 | }; | ||
146 | // address 04661 count 19 (82 bytes) | ||
147 | static const unsigned char maspcm_array3[] = { | ||
148 | 0xe0, 0x00, 0x00, 0x13, 0x06, 0x61, | ||
149 | 0x00, 0x00, 0x01, 0x25, // 00000125 | ||
150 | 0x00, 0x00, 0x00, 0x05, // 00000005 | ||
151 | 0x00, 0x00, 0x48, 0x00, // 00004800 | ||
152 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
153 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
154 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
155 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
156 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
157 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
158 | 0x00, 0x00, 0x82, 0x00, // 00008200 | ||
159 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
160 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
161 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
162 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
163 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
164 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
165 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
166 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
167 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
168 | }; | ||
169 | // address 046E4 count 16 (70 bytes) | ||
170 | static const unsigned char maspcm_array4[] = { | ||
171 | 0xe0, 0x00, 0x00, 0x10, 0x06, 0xe4, | ||
172 | 0x00, 0x00, 0x06, 0x74, // 00000674 | ||
173 | 0x00, 0x00, 0x06, 0x7D, // 0000067D | ||
174 | 0x00, 0x00, 0x06, 0x86, // 00000686 | ||
175 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
176 | 0x00, 0x00, 0x06, 0x8F, // 0000068F | ||
177 | 0x00, 0x00, 0x06, 0x98, // 00000698 | ||
178 | 0x00, 0x00, 0x06, 0xA1, // 000006A1 | ||
179 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
180 | 0x00, 0x00, 0x06, 0xAA, // 000006AA | ||
181 | 0x00, 0x00, 0x06, 0xB3, // 000006B3 | ||
182 | 0x00, 0x00, 0x06, 0xBC, // 000006BC | ||
183 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
184 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
185 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
186 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
187 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
188 | }; | ||
189 | // address 04700 count 18 (78 byte) | ||
190 | static const unsigned char maspcm_array5[] = { | ||
191 | 0xe0, 0x00, 0x00, 0x12, 0x07, 0x00, | ||
192 | 0x00, 0x00, 0x06, 0xBC, // 000006BC | ||
193 | 0x00, 0x00, 0x00, 0x0A, // 0000000A | ||
194 | 0x00, 0x00, 0x06, 0x74, // 00000674 | ||
195 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
196 | 0x00, 0x00, 0x06, 0x7D, // 0000067D | ||
197 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
198 | 0x00, 0x00, 0x06, 0x86, // 00000686 | ||
199 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
200 | 0x00, 0x00, 0x06, 0x8F, // 0000068F | ||
201 | 0x00, 0x00, 0x00, 0x04, // 00000004 | ||
202 | 0x00, 0x00, 0x06, 0x98, // 00000698 | ||
203 | 0x00, 0x00, 0x00, 0x05, // 00000005 | ||
204 | 0x00, 0x00, 0x06, 0xA1, // 000006A1 | ||
205 | 0x00, 0x00, 0x00, 0x06, // 00000006 | ||
206 | 0x00, 0x00, 0x06, 0xAA, // 000006AA | ||
207 | 0x00, 0x00, 0x00, 0x08, // 00000008 | ||
208 | 0x00, 0x00, 0x06, 0xB3, // 000006B3 | ||
209 | 0x00, 0x00, 0x00, 0x09, // 00000009 | ||
210 | }; | ||
211 | // address 06600 count 63 (258 bytes) | ||
212 | static const unsigned char maspcm_array6[] = { | ||
213 | 0xf0, 0x00, 0x00, 0x3f, 0x06, 0x00, | ||
214 | 0x00, 0x00, 0x0B, 0xAD, // 00000BAD | ||
215 | 0x00, 0x00, 0x10, 0x00, // 00001000 | ||
216 | 0x00, 0x00, 0x20, 0x00, // 00002000 | ||
217 | 0x00, 0x00, 0x30, 0x00, // 00003000 | ||
218 | 0x00, 0x00, 0x40, 0x00, // 00004000 | ||
219 | 0x00, 0x00, 0x50, 0x00, // 00005000 | ||
220 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
221 | 0x00, 0x00, 0x70, 0x00, // 00007000 | ||
222 | 0x00, 0x00, 0x80, 0x00, // 00008000 | ||
223 | 0x00, 0x00, 0x90, 0x00, // 00009000 | ||
224 | 0x00, 0x00, 0xA0, 0x00, // 0000A000 | ||
225 | 0x00, 0x00, 0xB0, 0x00, // 0000B000 | ||
226 | 0x00, 0x00, 0xC0, 0x00, // 0000C000 | ||
227 | 0x00, 0x00, 0xD0, 0x00, // 0000D000 | ||
228 | 0x00, 0x00, 0xE0, 0x00, // 0000E000 | ||
229 | 0x00, 0x00, 0xF0, 0x00, // 0000F000 | ||
230 | 0x00, 0x01, 0x00, 0x00, // 00010000 | ||
231 | 0x00, 0x01, 0x10, 0x00, // 00011000 | ||
232 | 0x00, 0x01, 0x20, 0x00, // 00012000 | ||
233 | 0x00, 0x01, 0x30, 0x00, // 00013000 | ||
234 | 0x00, 0x01, 0x40, 0x00, // 00014000 | ||
235 | 0x00, 0x01, 0x50, 0x00, // 00015000 | ||
236 | 0x00, 0x01, 0x60, 0x00, // 00016000 | ||
237 | 0x00, 0x01, 0x70, 0x00, // 00017000 | ||
238 | 0x00, 0x01, 0x80, 0x00, // 00018000 | ||
239 | 0x00, 0x01, 0x90, 0x00, // 00019000 | ||
240 | 0x00, 0x01, 0xA0, 0x00, // 0001A000 | ||
241 | 0x00, 0x01, 0xB0, 0x00, // 0001B000 | ||
242 | 0x00, 0x01, 0xC0, 0x00, // 0001C000 | ||
243 | 0x00, 0x01, 0xD0, 0x00, // 0001D000 | ||
244 | 0x00, 0x01, 0xE0, 0x00, // 0001E000 | ||
245 | 0x00, 0x01, 0xF0, 0x00, // 0001F000 | ||
246 | 0x00, 0x02, 0x00, 0x00, // 00020000 | ||
247 | 0x00, 0x02, 0x10, 0x00, // 00021000 | ||
248 | 0x00, 0x02, 0x20, 0x00, // 00022000 | ||
249 | 0x00, 0x02, 0x30, 0x00, // 00023000 | ||
250 | 0x00, 0x02, 0x40, 0x00, // 00024000 | ||
251 | 0x00, 0x00, 0x05, 0xFF, // 000005FF | ||
252 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
253 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
254 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
255 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
256 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
257 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
258 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
259 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
260 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
261 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
262 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
263 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
264 | 0x00, 0x00, 0x05, 0xFF, // 000005FF | ||
265 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
266 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
267 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
268 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
269 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
270 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
271 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
272 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
273 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
274 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
275 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
276 | 0x00, 0x00, 0x00, 0x0C, // 0000000C | ||
277 | }; | ||
278 | // address 06640 count 12 (54 bytes) | ||
279 | static const unsigned char maspcm_array7[] = { | ||
280 | 0xf0, 0x00, 0x00, 0x0c, 0x06, 0x40, | ||
281 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
282 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
283 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
284 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
285 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
286 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
287 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
288 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
289 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
290 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
291 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
292 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
293 | }; | ||
294 | // address 06660 count 28 (118 bytes) | ||
295 | static const unsigned char maspcm_array8[] = { | ||
296 | 0xf0, 0x00, 0x00, 0x1c, 0x06, 0x60, | ||
297 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
298 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
299 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
300 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
301 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
302 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
303 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
304 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
305 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
306 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
307 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
308 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
309 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
310 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
311 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
312 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
313 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
314 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
315 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
316 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
317 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
318 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
319 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
320 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
321 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
322 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
323 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
324 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
325 | }; | ||
326 | // address 04800 count 1668 (6678 bytes) | ||
327 | static const unsigned char maspcm_array9[] = { | ||
328 | 0xe0, 0x00, 0x06, 0x84, 0x08, 0x00, | ||
329 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
330 | 0x00, 0x07, 0x47, 0xC0, // 000747C0 | ||
331 | 0x00, 0x07, 0x04, 0x00, // 00070400 | ||
332 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
333 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
334 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
335 | 0x00, 0x06, 0xC0, 0x6B, // 0006C06B | ||
336 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
337 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
338 | 0x00, 0x07, 0x06, 0x90, // 00070690 | ||
339 | 0x00, 0x07, 0x4C, 0x07, // 00074C07 | ||
340 | 0x00, 0x07, 0x0F, 0xFF, // 00070FFF | ||
341 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
342 | 0x00, 0x06, 0x80, 0x1D, // 0006801D | ||
343 | 0x00, 0x06, 0x80, 0x1F, // 0006801F | ||
344 | 0x00, 0x06, 0x80, 0x21, // 00068021 | ||
345 | 0x00, 0x06, 0x80, 0x23, // 00068023 | ||
346 | 0x00, 0x06, 0x84, 0x1D, // 0006841D | ||
347 | 0x00, 0x06, 0x84, 0x1F, // 0006841F | ||
348 | 0x00, 0x06, 0x84, 0x21, // 00068421 | ||
349 | 0x00, 0x06, 0x84, 0x23, // 00068423 | ||
350 | 0x00, 0x06, 0x88, 0x17, // 00068817 | ||
351 | 0x00, 0x06, 0x8C, 0x17, // 00068C17 | ||
352 | 0x00, 0x06, 0xD0, 0x6D, // 0006D06D | ||
353 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
354 | 0x00, 0x07, 0x1E, 0x57, // 00071E57 | ||
355 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
356 | 0x00, 0x07, 0x06, 0x90, // 00070690 | ||
357 | 0x00, 0x07, 0x4C, 0x07, // 00074C07 | ||
358 | 0x00, 0x07, 0x0F, 0xFF, // 00070FFF | ||
359 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
360 | 0x00, 0x06, 0x80, 0x1D, // 0006801D | ||
361 | 0x00, 0x06, 0x80, 0x1F, // 0006801F | ||
362 | 0x00, 0x06, 0x80, 0x21, // 00068021 | ||
363 | 0x00, 0x06, 0x80, 0x23, // 00068023 | ||
364 | 0x00, 0x06, 0x84, 0x1D, // 0006841D | ||
365 | 0x00, 0x06, 0x84, 0x1F, // 0006841F | ||
366 | 0x00, 0x06, 0x84, 0x21, // 00068421 | ||
367 | 0x00, 0x06, 0x84, 0x23, // 00068423 | ||
368 | 0x00, 0x06, 0x88, 0x17, // 00068817 | ||
369 | 0x00, 0x06, 0x8C, 0x17, // 00068C17 | ||
370 | 0x00, 0x06, 0xD0, 0x6D, // 0006D06D | ||
371 | 0x00, 0x06, 0x98, 0x1E, // 0006981E | ||
372 | 0x00, 0x04, 0x05, 0x08, // 00040508 | ||
373 | 0x00, 0x04, 0x0D, 0x08, // 00040D08 | ||
374 | 0x00, 0x04, 0x15, 0x08, // 00041508 | ||
375 | 0x00, 0x04, 0x1D, 0x08, // 00041D08 | ||
376 | 0x00, 0x04, 0x25, 0x08, // 00042508 | ||
377 | 0x00, 0x04, 0x2D, 0x08, // 00042D08 | ||
378 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
379 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
380 | 0x00, 0x07, 0x3C, 0x30, // 00073C30 | ||
381 | 0x00, 0x06, 0x80, 0x3B, // 0006803B | ||
382 | 0x00, 0x06, 0x88, 0x5B, // 0006885B | ||
383 | 0x00, 0x06, 0x94, 0x3B, // 0006943B | ||
384 | 0x00, 0x06, 0x9C, 0x43, // 00069C43 | ||
385 | 0x00, 0x06, 0xA0, 0x53, // 0006A053 | ||
386 | 0x00, 0x06, 0xA8, 0x4B, // 0006A84B | ||
387 | 0x00, 0x06, 0xB4, 0x53, // 0006B453 | ||
388 | 0x00, 0x06, 0xBC, 0x06, // 0006BC06 | ||
389 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
390 | 0x00, 0x07, 0x36, 0x63, // 00073663 | ||
391 | 0x00, 0x02, 0x12, 0x57, // 00021257 | ||
392 | 0x00, 0x07, 0x6C, 0x18, // 00076C18 | ||
393 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
394 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
395 | 0x00, 0x07, 0x3C, 0x45, // 00073C45 | ||
396 | 0x00, 0x06, 0xB0, 0x20, // 0006B020 | ||
397 | 0x00, 0x04, 0x36, 0x00, // 00043600 | ||
398 | 0x00, 0x02, 0x12, 0x46, // 00021246 | ||
399 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
400 | 0x00, 0x07, 0x3C, 0x4C, // 00073C4C | ||
401 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
402 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
403 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
404 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
405 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
406 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
407 | 0x00, 0x07, 0x06, 0x66, // 00070666 | ||
408 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
409 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
410 | 0x00, 0x06, 0x94, 0x7F, // 0006947F | ||
411 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
412 | 0x00, 0x07, 0x88, 0x04, // 00078804 | ||
413 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
414 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
415 | 0x00, 0x0B, 0x49, 0x7F, // 000B497F | ||
416 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
417 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
418 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
419 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
420 | 0x00, 0x0A, 0xC1, 0xC2, // 000AC1C2 | ||
421 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
422 | 0x00, 0x02, 0x10, 0x70, // 00021070 | ||
423 | 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E | ||
424 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
425 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
426 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
427 | 0x00, 0x07, 0x90, 0x04, // 00079004 | ||
428 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
429 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
430 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
431 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
432 | 0x00, 0x0A, 0xC2, 0xC1, // 000AC2C1 | ||
433 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
434 | 0x00, 0x02, 0x10, 0x85, // 00021085 | ||
435 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
436 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
437 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
438 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
439 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
440 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
441 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
442 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
443 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
444 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
445 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
446 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
447 | 0x00, 0x06, 0xC0, 0x6D, // 0006C06D | ||
448 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
449 | 0x00, 0x07, 0x6C, 0x04, // 00076C04 | ||
450 | 0x00, 0x07, 0x2C, 0x7E, // 00072C7E | ||
451 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
452 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
453 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
454 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
455 | 0x00, 0x02, 0x10, 0x54, // 00021054 | ||
456 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
457 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
458 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
459 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
460 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
461 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
462 | 0x00, 0x09, 0x80, 0x74, // 00098074 | ||
463 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
464 | 0x00, 0x07, 0x1F, 0x00, // 00071F00 | ||
465 | 0x00, 0x08, 0x80, 0x42, // 00088042 | ||
466 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
467 | 0x00, 0x02, 0x11, 0x51, // 00021151 | ||
468 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
469 | 0x00, 0x0A, 0xC2, 0xC3, // 000AC2C3 | ||
470 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
471 | 0x00, 0x09, 0x80, 0x78, // 00098078 | ||
472 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
473 | 0x00, 0x08, 0x80, 0x42, // 00088042 | ||
474 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
475 | 0x00, 0x02, 0x11, 0x51, // 00021151 | ||
476 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
477 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
478 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
479 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
480 | 0x00, 0x07, 0x06, 0x66, // 00070666 | ||
481 | 0x00, 0x07, 0x56, 0x00, // 00075600 | ||
482 | 0x00, 0x07, 0x14, 0x03, // 00071403 | ||
483 | 0x00, 0x06, 0x8C, 0x3B, // 00068C3B | ||
484 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
485 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
486 | 0x00, 0x07, 0x90, 0x04, // 00079004 | ||
487 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
488 | 0x00, 0x07, 0x2F, 0x00, // 00072F00 | ||
489 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
490 | 0x00, 0x07, 0x04, 0x00, // 00070400 | ||
491 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
492 | 0x00, 0x06, 0xAC, 0x05, // 0006AC05 | ||
493 | 0x00, 0x01, 0x41, 0x00, // 00014100 | ||
494 | 0x00, 0x06, 0x84, 0x1C, // 0006841C | ||
495 | 0x00, 0x07, 0x8C, 0x0C, // 00078C0C | ||
496 | 0x00, 0x07, 0x8C, 0x0C, // 00078C0C | ||
497 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
498 | 0x00, 0x07, 0x1C, 0x90, // 00071C90 | ||
499 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
500 | 0x00, 0x07, 0x17, 0x00, // 00071700 | ||
501 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
502 | 0x00, 0x07, 0x25, 0xFF, // 000725FF | ||
503 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
504 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
505 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
506 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
507 | 0x00, 0x06, 0x9C, 0x25, // 00069C25 | ||
508 | 0x00, 0x06, 0x98, 0x2D, // 0006982D | ||
509 | 0x00, 0x06, 0x94, 0x3C, // 0006943C | ||
510 | 0x00, 0x06, 0xA4, 0x16, // 0006A416 | ||
511 | 0x00, 0x06, 0xA0, 0x16, // 0006A016 | ||
512 | 0x00, 0x06, 0x8C, 0x3B, // 00068C3B | ||
513 | 0x00, 0x06, 0xAC, 0x24, // 0006AC24 | ||
514 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
515 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
516 | 0x00, 0x0B, 0x52, 0x6F, // 000B526F | ||
517 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
518 | 0x00, 0x07, 0x1E, 0x90, // 00071E90 | ||
519 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
520 | 0x00, 0x06, 0x88, 0x1E, // 0006881E | ||
521 | 0x00, 0x06, 0x90, 0x15, // 00069015 | ||
522 | 0x00, 0x06, 0x98, 0x1F, // 0006981F | ||
523 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
524 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
525 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
526 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
527 | 0x00, 0x06, 0x84, 0x6F, // 0006846F | ||
528 | 0x00, 0x06, 0x84, 0x70, // 00068470 | ||
529 | 0x00, 0x04, 0x05, 0x10, // 00040510 | ||
530 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
531 | 0x00, 0x07, 0x36, 0x63, // 00073663 | ||
532 | 0x00, 0x02, 0x12, 0x57, // 00021257 | ||
533 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
534 | 0x00, 0x04, 0x2C, 0x08, // 00042C08 | ||
535 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
536 | 0x00, 0x07, 0x3C, 0xD2, // 00073CD2 | ||
537 | 0x00, 0x06, 0xB0, 0x22, // 0006B022 | ||
538 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
539 | 0x00, 0x04, 0x14, 0x20, // 00041420 | ||
540 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
541 | 0x00, 0x07, 0x66, 0x00, // 00076600 | ||
542 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
543 | 0x00, 0x07, 0x5C, 0x80, // 00075C80 | ||
544 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
545 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
546 | 0x00, 0x07, 0x3D, 0x00, // 00073D00 | ||
547 | 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4 | ||
548 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
549 | 0x00, 0x08, 0x36, 0xC4, // 000836C4 | ||
550 | 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3 | ||
551 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
552 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
553 | 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7 | ||
554 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
555 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
556 | 0x00, 0x02, 0x12, 0x46, // 00021246 | ||
557 | 0x00, 0x09, 0x92, 0x51, // 00099251 | ||
558 | 0x00, 0x08, 0x36, 0xC2, // 000836C2 | ||
559 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
560 | 0x00, 0x07, 0x3C, 0xEA, // 00073CEA | ||
561 | 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D | ||
562 | 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C | ||
563 | 0x00, 0x0B, 0x7F, 0x7F, // 000B7F7F | ||
564 | 0x00, 0x09, 0xB6, 0x7D, // 0009B67D | ||
565 | 0x00, 0x0A, 0x3F, 0x53, // 000A3F53 | ||
566 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
567 | 0x00, 0x0A, 0xF6, 0x43, // 000AF643 | ||
568 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
569 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
570 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
571 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
572 | 0x00, 0x07, 0x1F, 0x18, // 00071F18 | ||
573 | 0x00, 0x07, 0x6C, 0x04, // 00076C04 | ||
574 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
575 | 0x00, 0x04, 0x0C, 0x08, // 00040C08 | ||
576 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
577 | 0x00, 0x0A, 0x09, 0xC6, // 000A09C6 | ||
578 | 0x00, 0x08, 0x8F, 0xC1, // 00088FC1 | ||
579 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
580 | 0x00, 0x0C, 0x09, 0x25, // 000C0925 | ||
581 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
582 | 0x00, 0x07, 0x04, 0x00, // 00070400 | ||
583 | 0x00, 0x06, 0x98, 0x53, // 00069853 | ||
584 | 0x00, 0x06, 0x90, 0x2C, // 0006902C | ||
585 | 0x00, 0x06, 0xA4, 0x24, // 0006A424 | ||
586 | 0x00, 0x06, 0x80, 0x53, // 00068053 | ||
587 | 0x00, 0x06, 0x88, 0x54, // 00068854 | ||
588 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
589 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
590 | 0x00, 0x06, 0x14, 0x6F, // 0006146F | ||
591 | 0x00, 0x06, 0x00, 0x52, // 00060052 | ||
592 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
593 | 0x00, 0x06, 0x1C, 0x70, // 00061C70 | ||
594 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
595 | 0x00, 0x02, 0x9F, 0x38, // 00029F38 | ||
596 | 0x00, 0x0A, 0x09, 0x74, // 000A0974 | ||
597 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
598 | 0x00, 0x0A, 0xC9, 0x43, // 000AC943 | ||
599 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
600 | 0x00, 0x08, 0xA1, 0x42, // 0008A142 | ||
601 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
602 | 0x00, 0x08, 0x1B, 0x41, // 00081B41 | ||
603 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
604 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
605 | 0x00, 0x06, 0x94, 0x6F, // 0006946F | ||
606 | 0x00, 0x06, 0x9C, 0x70, // 00069C70 | ||
607 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
608 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
609 | 0x00, 0x0B, 0x00, 0x41, // 000B0041 | ||
610 | 0x00, 0x07, 0x6C, 0x04, // 00076C04 | ||
611 | 0x00, 0x07, 0x2D, 0x1E, // 00072D1E | ||
612 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
613 | 0x00, 0x06, 0x80, 0x6D, // 0006806D | ||
614 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
615 | 0x00, 0x06, 0x04, 0x24, // 00060424 | ||
616 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
617 | 0x00, 0x07, 0x16, 0x61, // 00071661 | ||
618 | 0x00, 0x08, 0x8C, 0x80, // 00088C80 | ||
619 | 0x00, 0x02, 0x89, 0x10, // 00028910 | ||
620 | 0x00, 0x02, 0x11, 0x03, // 00021103 | ||
621 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
622 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
623 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
624 | 0x00, 0x07, 0x54, 0x0C, // 0007540C | ||
625 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
626 | 0x00, 0x0A, 0xD8, 0x7E, // 000AD87E | ||
627 | 0x00, 0x0A, 0xC8, 0x41, // 000AC841 | ||
628 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
629 | 0x00, 0x0A, 0xC8, 0xC2, // 000AC8C2 | ||
630 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
631 | 0x00, 0x02, 0x10, 0x08, // 00021008 | ||
632 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
633 | 0x00, 0x07, 0x98, 0x07, // 00079807 | ||
634 | 0x00, 0x06, 0x04, 0x6F, // 0006046F | ||
635 | 0x00, 0x06, 0x0C, 0x70, // 00060C70 | ||
636 | 0x00, 0x0A, 0x10, 0x7D, // 000A107D | ||
637 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
638 | 0x00, 0x08, 0x99, 0xC2, // 000899C2 | ||
639 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
640 | 0x00, 0x02, 0x10, 0xC2, // 000210C2 | ||
641 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
642 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
643 | 0x00, 0x07, 0x0E, 0x6B, // 00070E6B | ||
644 | 0x00, 0x0B, 0x52, 0x50, // 000B5250 | ||
645 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
646 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
647 | 0x00, 0x06, 0x88, 0x1C, // 0006881C | ||
648 | 0x00, 0x0A, 0xCC, 0x82, // 000ACC82 | ||
649 | 0x00, 0x04, 0x1D, 0x88, // 00041D88 | ||
650 | 0x00, 0x04, 0x1D, 0x00, // 00041D00 | ||
651 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
652 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
653 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
654 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
655 | 0x00, 0x07, 0x88, 0x04, // 00078804 | ||
656 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
657 | 0x00, 0x07, 0x06, 0x90, // 00070690 | ||
658 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
659 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
660 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
661 | 0x00, 0x07, 0x17, 0x18, // 00071718 | ||
662 | 0x00, 0x06, 0x80, 0x1F, // 0006801F | ||
663 | 0x00, 0x06, 0x8C, 0x3B, // 00068C3B | ||
664 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
665 | 0x00, 0x06, 0x90, 0x53, // 00069053 | ||
666 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
667 | 0x00, 0x07, 0x0E, 0x65, // 00070E65 | ||
668 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
669 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
670 | 0x00, 0x07, 0x26, 0x68, // 00072668 | ||
671 | 0x00, 0x06, 0x88, 0x20, // 00068820 | ||
672 | 0x00, 0x07, 0x90, 0x06, // 00079006 | ||
673 | 0x00, 0x06, 0x94, 0x7F, // 0006947F | ||
674 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
675 | 0x00, 0x07, 0x90, 0x07, // 00079007 | ||
676 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
677 | 0x00, 0x07, 0x0E, 0x6B, // 00070E6B | ||
678 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
679 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
680 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
681 | 0x00, 0x06, 0x88, 0x20, // 00068820 | ||
682 | 0x00, 0x04, 0x0E, 0x00, // 00040E00 | ||
683 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
684 | 0x00, 0x07, 0x1C, 0x40, // 00071C40 | ||
685 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
686 | 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3 | ||
687 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
688 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
689 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
690 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
691 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
692 | 0x00, 0x06, 0x80, 0x6A, // 0006806A | ||
693 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
694 | 0x00, 0x07, 0x1C, 0x20, // 00071C20 | ||
695 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
696 | 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3 | ||
697 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
698 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
699 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
700 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
701 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
702 | 0x00, 0x06, 0x80, 0x6C, // 0006806C | ||
703 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
704 | 0x00, 0x07, 0x1C, 0x10, // 00071C10 | ||
705 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
706 | 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3 | ||
707 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
708 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
709 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
710 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
711 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
712 | 0x00, 0x06, 0x80, 0x76, // 00068076 | ||
713 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
714 | 0x00, 0x07, 0x1E, 0x67, // 00071E67 | ||
715 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
716 | 0x00, 0x07, 0x06, 0xE4, // 000706E4 | ||
717 | 0x00, 0x0A, 0xD1, 0x4F, // 000AD14F | ||
718 | 0x00, 0x08, 0x10, 0xC2, // 000810C2 | ||
719 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
720 | 0x00, 0x06, 0x98, 0x1C, // 0006981C | ||
721 | 0x00, 0x07, 0x90, 0x04, // 00079004 | ||
722 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
723 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
724 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
725 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
726 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
727 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
728 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
729 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
730 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
731 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
732 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
733 | 0x00, 0x07, 0x54, 0x08, // 00075408 | ||
734 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
735 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
736 | 0x00, 0x0A, 0xCC, 0x81, // 000ACC81 | ||
737 | 0x00, 0x08, 0x92, 0xC1, // 000892C1 | ||
738 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
739 | 0x00, 0x02, 0x11, 0xBD, // 000211BD | ||
740 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
741 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
742 | 0x00, 0x02, 0x12, 0x57, // 00021257 | ||
743 | 0x00, 0x07, 0x36, 0x63, // 00073663 | ||
744 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
745 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
746 | 0x00, 0x07, 0x3D, 0xA4, // 00073DA4 | ||
747 | 0x00, 0x06, 0xB0, 0x20, // 0006B020 | ||
748 | 0x00, 0x04, 0x36, 0x08, // 00043608 | ||
749 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
750 | 0x00, 0x04, 0x06, 0x00, // 00040600 | ||
751 | 0x00, 0x07, 0x66, 0x00, // 00076600 | ||
752 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
753 | 0x00, 0x07, 0x5C, 0x80, // 00075C80 | ||
754 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
755 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
756 | 0x00, 0x07, 0x3D, 0x00, // 00073D00 | ||
757 | 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4 | ||
758 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
759 | 0x00, 0x08, 0x36, 0xC4, // 000836C4 | ||
760 | 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3 | ||
761 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
762 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
763 | 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7 | ||
764 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
765 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
766 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
767 | 0x00, 0x02, 0x12, 0x46, // 00021246 | ||
768 | 0x00, 0x09, 0x92, 0x51, // 00099251 | ||
769 | 0x00, 0x08, 0x36, 0xC2, // 000836C2 | ||
770 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
771 | 0x00, 0x07, 0x3D, 0xBF, // 00073DBF | ||
772 | 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D | ||
773 | 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C | ||
774 | 0x00, 0x04, 0x06, 0x08, // 00040608 | ||
775 | 0x00, 0x04, 0x07, 0x08, // 00040708 | ||
776 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
777 | 0x00, 0x07, 0x0E, 0x62, // 00070E62 | ||
778 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
779 | 0x00, 0x07, 0x14, 0x2D, // 0007142D | ||
780 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
781 | 0x00, 0x06, 0x88, 0x1C, // 0006881C | ||
782 | 0x00, 0x04, 0x0C, 0x00, // 00040C00 | ||
783 | 0x00, 0x0A, 0xD2, 0xC1, // 000AD2C1 | ||
784 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
785 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
786 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
787 | 0x00, 0x06, 0x90, 0x4F, // 0006904F | ||
788 | 0x00, 0x06, 0x94, 0x77, // 00069477 | ||
789 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
790 | 0x00, 0x07, 0x06, 0x39, // 00070639 | ||
791 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
792 | 0x00, 0x07, 0x0E, 0x61, // 00070E61 | ||
793 | 0x00, 0x07, 0x54, 0x12, // 00075412 | ||
794 | 0x00, 0x07, 0x14, 0x30, // 00071430 | ||
795 | 0x00, 0x06, 0x84, 0x1C, // 0006841C | ||
796 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
797 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
798 | 0x00, 0x06, 0x88, 0x1C, // 0006881C | ||
799 | 0x00, 0x04, 0x0C, 0x00, // 00040C00 | ||
800 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
801 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
802 | 0x00, 0x09, 0xAC, 0x7F, // 0009AC7F | ||
803 | 0x00, 0x0A, 0xC1, 0x50, // 000AC150 | ||
804 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
805 | 0x00, 0x0A, 0x24, 0x7F, // 000A247F | ||
806 | 0x00, 0x0A, 0xC9, 0xC2, // 000AC9C2 | ||
807 | 0x00, 0x08, 0x0B, 0xC1, // 00080BC1 | ||
808 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
809 | 0x00, 0x07, 0xA4, 0x00, // 0007A400 | ||
810 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
811 | 0x00, 0x07, 0x8C, 0x00, // 00078C00 | ||
812 | 0x00, 0x07, 0xAC, 0x00, // 0007AC00 | ||
813 | 0x00, 0x04, 0xA8, 0x00, // 0004A800 | ||
814 | 0x00, 0x07, 0xB4, 0x00, // 0007B400 | ||
815 | 0x00, 0x06, 0x84, 0x45, // 00068445 | ||
816 | 0x00, 0x06, 0x84, 0x46, // 00068446 | ||
817 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
818 | 0x00, 0x07, 0x16, 0x40, // 00071640 | ||
819 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
820 | 0x00, 0x07, 0x26, 0x90, // 00072690 | ||
821 | 0x00, 0x0B, 0x49, 0x75, // 000B4975 | ||
822 | 0x00, 0x06, 0x94, 0x1E, // 0006941E | ||
823 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
824 | 0x00, 0x06, 0xA4, 0x1F, // 0006A41F | ||
825 | 0x00, 0x06, 0x8C, 0x15, // 00068C15 | ||
826 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
827 | 0x00, 0x07, 0x06, 0x6A, // 0007066A | ||
828 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
829 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
830 | 0x00, 0x04, 0x1F, 0x08, // 00041F08 | ||
831 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
832 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
833 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
834 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
835 | 0x00, 0x06, 0xA4, 0x65, // 0006A465 | ||
836 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
837 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
838 | 0x00, 0x07, 0x84, 0x0D, // 0007840D | ||
839 | 0x00, 0x07, 0x8C, 0x5D, // 00078C5D | ||
840 | 0x00, 0x06, 0xAC, 0x79, // 0006AC79 | ||
841 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
842 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
843 | 0x00, 0x0B, 0x76, 0x41, // 000B7641 | ||
844 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
845 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
846 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
847 | 0x00, 0x0C, 0x0B, 0x0D, // 000C0B0D | ||
848 | 0x00, 0x0C, 0x13, 0x0D, // 000C130D | ||
849 | 0x00, 0x0C, 0x1B, 0x0D, // 000C1B0D | ||
850 | 0x00, 0x0C, 0x23, 0x0D, // 000C230D | ||
851 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
852 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
853 | 0x00, 0x06, 0xB4, 0x6A, // 0006B46A | ||
854 | 0x00, 0x06, 0x8C, 0x66, // 00068C66 | ||
855 | 0x00, 0x06, 0x94, 0x67, // 00069467 | ||
856 | 0x00, 0x06, 0x9C, 0x68, // 00069C68 | ||
857 | 0x00, 0x06, 0xA4, 0x69, // 0006A469 | ||
858 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
859 | 0x00, 0x07, 0x27, 0x12, // 00072712 | ||
860 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
861 | 0x00, 0x04, 0x03, 0x00, // 00040300 | ||
862 | 0x00, 0x04, 0x0B, 0x00, // 00040B00 | ||
863 | 0x00, 0x04, 0x13, 0x00, // 00041300 | ||
864 | 0x00, 0x04, 0x1B, 0x00, // 00041B00 | ||
865 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
866 | 0x00, 0x07, 0x80, 0x0F, // 0007800F | ||
867 | 0x00, 0x07, 0x88, 0x0F, // 0007880F | ||
868 | 0x00, 0x07, 0x90, 0x0F, // 0007900F | ||
869 | 0x00, 0x07, 0x98, 0x07, // 00079807 | ||
870 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
871 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
872 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
873 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
874 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
875 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
876 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
877 | 0x00, 0x0A, 0xC4, 0x81, // 000AC481 | ||
878 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
879 | 0x00, 0x09, 0x80, 0x74, // 00098074 | ||
880 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
881 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
882 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
883 | 0x00, 0x07, 0x1E, 0x66, // 00071E66 | ||
884 | 0x00, 0x07, 0x64, 0x04, // 00076404 | ||
885 | 0x00, 0x07, 0x24, 0x08, // 00072408 | ||
886 | 0x00, 0x08, 0x88, 0x41, // 00088841 | ||
887 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
888 | 0x00, 0x02, 0x12, 0x8F, // 0002128F | ||
889 | 0x00, 0x07, 0x56, 0x00, // 00075600 | ||
890 | 0x00, 0x07, 0x14, 0x01, // 00071401 | ||
891 | 0x00, 0x06, 0xA0, 0x08, // 0006A008 | ||
892 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
893 | 0x00, 0x06, 0x98, 0x20, // 00069820 | ||
894 | 0x00, 0x07, 0x90, 0x06, // 00079006 | ||
895 | 0x00, 0x08, 0x98, 0x42, // 00089842 | ||
896 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
897 | 0x00, 0x02, 0x18, 0x00, // 00021800 | ||
898 | 0x00, 0x07, 0x56, 0x00, // 00075600 | ||
899 | 0x00, 0x07, 0x14, 0x02, // 00071402 | ||
900 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
901 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
902 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
903 | 0x00, 0x07, 0x90, 0x06, // 00079006 | ||
904 | 0x00, 0x02, 0x10, 0x54, // 00021054 | ||
905 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
906 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
907 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
908 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
909 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
910 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
911 | 0x00, 0x0B, 0x64, 0x68, // 000B6468 | ||
912 | 0x00, 0x0A, 0xBE, 0xC4, // 000ABEC4 | ||
913 | 0x00, 0x09, 0xA4, 0x46, // 0009A446 | ||
914 | 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7 | ||
915 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
916 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
917 | 0x00, 0x06, 0xA4, 0x05, // 0006A405 | ||
918 | 0x00, 0x06, 0xBC, 0x0D, // 0006BC0D | ||
919 | 0x00, 0x01, 0x41, 0x00, // 00014100 | ||
920 | 0x00, 0x06, 0xAC, 0x0F, // 0006AC0F | ||
921 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
922 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
923 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
924 | 0x00, 0x06, 0xB4, 0x0D, // 0006B40D | ||
925 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
926 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
927 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
928 | 0x00, 0x09, 0xBD, 0x4A, // 0009BD4A | ||
929 | 0x00, 0x09, 0xB6, 0x7C, // 0009B67C | ||
930 | 0x00, 0x0A, 0xE4, 0x40, // 000AE440 | ||
931 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
932 | 0x00, 0x07, 0x6F, 0xFF, // 00076FFF | ||
933 | 0x00, 0x07, 0x2F, 0xFF, // 00072FFF | ||
934 | 0x00, 0x01, 0x03, 0xA6, // 000103A6 | ||
935 | 0x00, 0x0A, 0x2D, 0x7C, // 000A2D7C | ||
936 | 0x00, 0x09, 0xA4, 0x41, // 0009A441 | ||
937 | 0x00, 0x09, 0xBF, 0x41, // 0009BF41 | ||
938 | 0x00, 0x08, 0xE4, 0xC5, // 0008E4C5 | ||
939 | 0x00, 0x09, 0x1E, 0xC4, // 00091EC4 | ||
940 | 0x00, 0x02, 0x87, 0x10, // 00028710 | ||
941 | 0x00, 0x0A, 0xE3, 0xC3, // 000AE3C3 | ||
942 | 0x00, 0x08, 0xBF, 0xC5, // 0008BFC5 | ||
943 | 0x00, 0x07, 0x75, 0xD9, // 000775D9 | ||
944 | 0x00, 0x07, 0x36, 0x23, // 00073623 | ||
945 | 0x00, 0x09, 0xA7, 0x40, // 0009A740 | ||
946 | 0x00, 0x07, 0x6D, 0x14, // 00076D14 | ||
947 | 0x00, 0x0C, 0x36, 0x27, // 000C3627 | ||
948 | 0x00, 0x07, 0x2F, 0x2C, // 00072F2C | ||
949 | 0x00, 0x0B, 0x7D, 0x75, // 000B7D75 | ||
950 | 0x00, 0x08, 0xAD, 0xC4, // 0008ADC4 | ||
951 | 0x00, 0x00, 0xC7, 0x87, // 0000C787 | ||
952 | 0x00, 0x0A, 0x6E, 0xC6, // 000A6EC6 | ||
953 | 0x00, 0x09, 0xA4, 0x44, // 0009A444 | ||
954 | 0x00, 0x08, 0xAD, 0x41, // 0008AD41 | ||
955 | 0x00, 0x09, 0xA4, 0xC5, // 0009A4C5 | ||
956 | 0x00, 0x09, 0xAD, 0x43, // 0009AD43 | ||
957 | 0x00, 0x09, 0xB4, 0x6D, // 0009B46D | ||
958 | 0x00, 0x09, 0xA4, 0x49, // 0009A449 | ||
959 | 0x00, 0x0A, 0xF6, 0x7F, // 000AF67F | ||
960 | 0x00, 0x0A, 0x24, 0x77, // 000A2477 | ||
961 | 0x00, 0x02, 0x86, 0x30, // 00028630 | ||
962 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
963 | 0x00, 0x08, 0xBE, 0x48, // 0008BE48 | ||
964 | 0x00, 0x02, 0x87, 0x18, // 00028718 | ||
965 | 0x00, 0x09, 0xA4, 0x49, // 0009A449 | ||
966 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
967 | 0x00, 0x09, 0xA4, 0x77, // 0009A477 | ||
968 | 0x00, 0x0B, 0x7F, 0x74, // 000B7F74 | ||
969 | 0x00, 0x08, 0xB6, 0x44, // 0008B644 | ||
970 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
971 | 0x00, 0x0B, 0x5B, 0x41, // 000B5B41 | ||
972 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
973 | 0x00, 0x09, 0x9B, 0x53, // 00099B53 | ||
974 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
975 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
976 | 0x00, 0x00, 0xC7, 0x87, // 0000C787 | ||
977 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
978 | 0x00, 0x09, 0xB6, 0x4F, // 0009B64F | ||
979 | 0x00, 0x08, 0x35, 0xC6, // 000835C6 | ||
980 | 0x00, 0x0B, 0x3F, 0xC7, // 000B3FC7 | ||
981 | 0x00, 0x0A, 0xEC, 0xC4, // 000AECC4 | ||
982 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
983 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
984 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
985 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
986 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
987 | 0x00, 0x07, 0x0D, 0x00, // 00070D00 | ||
988 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
989 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
990 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
991 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
992 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
993 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
994 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
995 | 0x00, 0x07, 0x1E, 0x69, // 00071E69 | ||
996 | 0x00, 0x0B, 0x64, 0x7F, // 000B647F | ||
997 | 0x00, 0x06, 0x90, 0x78, // 00069078 | ||
998 | 0x00, 0x0B, 0x6D, 0x7E, // 000B6D7E | ||
999 | 0x00, 0x06, 0x98, 0x22, // 00069822 | ||
1000 | 0x00, 0x0A, 0xDF, 0x84, // 000ADF84 | ||
1001 | 0x00, 0x0A, 0xDF, 0x85, // 000ADF85 | ||
1002 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
1003 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1004 | 0x00, 0x06, 0x98, 0x77, // 00069877 | ||
1005 | 0x00, 0x06, 0x98, 0x7A, // 0006987A | ||
1006 | 0x00, 0x06, 0xB8, 0x68, // 0006B868 | ||
1007 | 0x00, 0x06, 0xB8, 0x69, // 0006B869 | ||
1008 | 0x00, 0x06, 0xB8, 0x6F, // 0006B86F | ||
1009 | 0x00, 0x06, 0xB8, 0x70, // 0006B870 | ||
1010 | 0x00, 0x06, 0xB8, 0x71, // 0006B871 | ||
1011 | 0x00, 0x06, 0xB8, 0x72, // 0006B872 | ||
1012 | 0x00, 0x06, 0xB8, 0x73, // 0006B873 | ||
1013 | 0x00, 0x06, 0xB8, 0x74, // 0006B874 | ||
1014 | 0x00, 0x06, 0xB8, 0x75, // 0006B875 | ||
1015 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1016 | 0x00, 0x06, 0x28, 0x6A, // 0006286A | ||
1017 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1018 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1019 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1020 | 0x00, 0x06, 0xA8, 0x61, // 0006A861 | ||
1021 | 0x00, 0x07, 0x65, 0x5D, // 0007655D | ||
1022 | 0x00, 0x07, 0x24, 0x10, // 00072410 | ||
1023 | 0x00, 0x06, 0x30, 0x6C, // 0006306C | ||
1024 | 0x00, 0x07, 0x6D, 0x59, // 00076D59 | ||
1025 | 0x00, 0x07, 0x2C, 0x50, // 00072C50 | ||
1026 | 0x00, 0x08, 0xB6, 0x40, // 0008B640 | ||
1027 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1028 | 0x00, 0x07, 0x65, 0x05, // 00076505 | ||
1029 | 0x00, 0x07, 0x25, 0x70, // 00072570 | ||
1030 | 0x00, 0x07, 0x6D, 0x15, // 00076D15 | ||
1031 | 0x00, 0x07, 0x2D, 0x60, // 00072D60 | ||
1032 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1033 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1034 | 0x00, 0x06, 0xA0, 0x66, // 0006A066 | ||
1035 | 0x00, 0x06, 0xA8, 0x67, // 0006A867 | ||
1036 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1037 | 0x00, 0x07, 0x1C, 0x20, // 00071C20 | ||
1038 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
1039 | 0x00, 0x07, 0x3D, 0xFF, // 00073DFF | ||
1040 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1041 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
1042 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1043 | 0x00, 0x07, 0x0E, 0x00, // 00070E00 | ||
1044 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
1045 | 0x00, 0x07, 0x35, 0xFF, // 000735FF | ||
1046 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1047 | 0x00, 0x07, 0x26, 0x98, // 00072698 | ||
1048 | 0x00, 0x07, 0x6C, 0x01, // 00076C01 | ||
1049 | 0x00, 0x07, 0x2C, 0x90, // 00072C90 | ||
1050 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1051 | 0x00, 0x07, 0x04, 0x90, // 00070490 | ||
1052 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1053 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
1054 | 0x00, 0x06, 0x98, 0x15, // 00069815 | ||
1055 | 0x00, 0x06, 0xB8, 0x16, // 0006B816 | ||
1056 | 0x00, 0x06, 0xB4, 0x14, // 0006B414 | ||
1057 | 0x00, 0x06, 0x88, 0x28, // 00068828 | ||
1058 | 0x00, 0x06, 0x88, 0x22, // 00068822 | ||
1059 | 0x00, 0x06, 0x90, 0x2E, // 0006902E | ||
1060 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
1061 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
1062 | 0x00, 0x06, 0x9C, 0x1C, // 00069C1C | ||
1063 | 0x00, 0x06, 0xB4, 0x26, // 0006B426 | ||
1064 | 0x00, 0x06, 0xB4, 0x24, // 0006B424 | ||
1065 | 0x00, 0x06, 0xB4, 0x2E, // 0006B42E | ||
1066 | 0x00, 0x06, 0xA0, 0x29, // 0006A029 | ||
1067 | 0x00, 0x06, 0xA8, 0x1D, // 0006A81D | ||
1068 | 0x00, 0x06, 0xA8, 0x21, // 0006A821 | ||
1069 | 0x00, 0x06, 0xA8, 0x2F, // 0006A82F | ||
1070 | 0x00, 0x06, 0x84, 0x1D, // 0006841D | ||
1071 | 0x00, 0x08, 0x3F, 0x41, // 00083F41 | ||
1072 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1073 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1074 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1075 | 0x00, 0x01, 0x01, 0x21, // 00010121 | ||
1076 | 0x00, 0x06, 0xB8, 0x6E, // 0006B86E | ||
1077 | 0x00, 0x07, 0xA8, 0x0F, // 0007A80F | ||
1078 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1079 | 0x00, 0x06, 0x38, 0x78, // 00063878 | ||
1080 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1081 | 0x00, 0x07, 0x05, 0x89, // 00070589 | ||
1082 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1083 | 0x00, 0x07, 0x0D, 0x4B, // 00070D4B | ||
1084 | 0x00, 0x07, 0x54, 0x05, // 00075405 | ||
1085 | 0x00, 0x07, 0x15, 0x59, // 00071559 | ||
1086 | 0x00, 0x07, 0x5C, 0x05, // 00075C05 | ||
1087 | 0x00, 0x07, 0x1D, 0xBD, // 00071DBD | ||
1088 | 0x00, 0x08, 0xBF, 0x40, // 0008BF40 | ||
1089 | 0x00, 0x02, 0x9F, 0x40, // 00029F40 | ||
1090 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1091 | 0x00, 0x07, 0x04, 0xC8, // 000704C8 | ||
1092 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1093 | 0x00, 0x07, 0x0C, 0xEE, // 00070CEE | ||
1094 | 0x00, 0x07, 0x54, 0x05, // 00075405 | ||
1095 | 0x00, 0x07, 0x14, 0xF8, // 000714F8 | ||
1096 | 0x00, 0x07, 0x5C, 0x05, // 00075C05 | ||
1097 | 0x00, 0x07, 0x1D, 0x16, // 00071D16 | ||
1098 | 0x00, 0x06, 0x80, 0x09, // 00068009 | ||
1099 | 0x00, 0x06, 0x88, 0x0D, // 0006880D | ||
1100 | 0x00, 0x06, 0x90, 0x0C, // 0006900C | ||
1101 | 0x00, 0x06, 0x98, 0x0B, // 0006980B | ||
1102 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1103 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
1104 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1105 | 0x00, 0x07, 0x27, 0x20, // 00072720 | ||
1106 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1107 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
1108 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1109 | 0x00, 0x04, 0x3F, 0x00, // 00043F00 | ||
1110 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
1111 | 0x00, 0x0A, 0xFF, 0x44, // 000AFF44 | ||
1112 | 0x00, 0x06, 0xA0, 0x5B, // 0006A05B | ||
1113 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1114 | 0x00, 0x07, 0x27, 0x00, // 00072700 | ||
1115 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1116 | 0x00, 0x07, 0x1C, 0x10, // 00071C10 | ||
1117 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
1118 | 0x00, 0x06, 0xA0, 0x5B, // 0006A05B | ||
1119 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
1120 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1121 | 0x00, 0x07, 0x64, 0x04, // 00076404 | ||
1122 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
1123 | 0x00, 0x07, 0x1C, 0x30, // 00071C30 | ||
1124 | 0x00, 0x08, 0x24, 0xC7, // 000824C7 | ||
1125 | 0x00, 0x06, 0x88, 0x4B, // 0006884B | ||
1126 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1127 | 0x00, 0x06, 0x9C, 0x06, // 00069C06 | ||
1128 | 0x00, 0x06, 0xA0, 0x5B, // 0006A05B | ||
1129 | 0x00, 0x06, 0xA4, 0x76, // 0006A476 | ||
1130 | 0x00, 0x06, 0x28, 0x77, // 00062877 | ||
1131 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1132 | 0x00, 0x07, 0x16, 0x40, // 00071640 | ||
1133 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1134 | 0x00, 0x07, 0x24, 0x90, // 00072490 | ||
1135 | 0x00, 0x0B, 0x49, 0x7D, // 000B497D | ||
1136 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1137 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
1138 | 0x00, 0x06, 0x90, 0x1E, // 0006901E | ||
1139 | 0x00, 0x06, 0xA0, 0x1F, // 0006A01F | ||
1140 | 0x00, 0x06, 0x88, 0x14, // 00068814 | ||
1141 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1142 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
1143 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
1144 | 0x00, 0x04, 0x1F, 0x08, // 00041F08 | ||
1145 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
1146 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
1147 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1148 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
1149 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
1150 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
1151 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1152 | 0x00, 0x07, 0x88, 0x0D, // 0007880D | ||
1153 | 0x00, 0x07, 0x90, 0x0D, // 0007900D | ||
1154 | 0x00, 0x07, 0x98, 0x0D, // 0007980D | ||
1155 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1156 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1157 | 0x00, 0x00, 0xC1, 0x05, // 0000C105 | ||
1158 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1159 | 0x00, 0x07, 0x07, 0x43, // 00070743 | ||
1160 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1161 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1162 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1163 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1164 | 0x00, 0x06, 0x38, 0x61, // 00063861 | ||
1165 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1166 | 0x00, 0x08, 0xBF, 0x40, // 0008BF40 | ||
1167 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1168 | 0x00, 0x02, 0x13, 0x6E, // 0002136E | ||
1169 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1170 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1171 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
1172 | 0x00, 0x06, 0x18, 0x1C, // 0006181C | ||
1173 | 0x00, 0x09, 0x12, 0xC0, // 000912C0 | ||
1174 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
1175 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1176 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1177 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1178 | 0x00, 0x08, 0x9B, 0x44, // 00089B44 | ||
1179 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1180 | 0x00, 0x08, 0x1B, 0xC2, // 00081BC2 | ||
1181 | 0x00, 0x07, 0x45, 0x5D, // 0007455D | ||
1182 | 0x00, 0x07, 0x04, 0x10, // 00070410 | ||
1183 | 0x00, 0x07, 0x4D, 0x59, // 00074D59 | ||
1184 | 0x00, 0x07, 0x0C, 0x50, // 00070C50 | ||
1185 | 0x00, 0x06, 0x98, 0x1C, // 0006981C | ||
1186 | 0x00, 0x00, 0xC1, 0x04, // 0000C104 | ||
1187 | 0x00, 0x07, 0x54, 0x04, // 00075404 | ||
1188 | 0x00, 0x07, 0x17, 0x60, // 00071760 | ||
1189 | 0x00, 0x09, 0x80, 0x48, // 00098048 | ||
1190 | 0x00, 0x09, 0x89, 0x78, // 00098978 | ||
1191 | 0x00, 0x08, 0x38, 0xC1, // 000838C1 | ||
1192 | 0x00, 0x06, 0x90, 0x0F, // 0006900F | ||
1193 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1194 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1195 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1196 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1197 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1198 | 0x00, 0x07, 0x16, 0x65, // 00071665 | ||
1199 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
1200 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1201 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1202 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
1203 | 0x00, 0x07, 0x88, 0x03, // 00078803 | ||
1204 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1205 | 0x00, 0x06, 0x88, 0x69, // 00068869 | ||
1206 | 0x00, 0x06, 0x88, 0x61, // 00068861 | ||
1207 | 0x00, 0x06, 0x08, 0x6F, // 0006086F | ||
1208 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
1209 | 0x00, 0x08, 0x89, 0x41, // 00088941 | ||
1210 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1211 | 0x00, 0x02, 0x13, 0x8B, // 0002138B | ||
1212 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1213 | 0x00, 0x08, 0x88, 0x42, // 00088842 | ||
1214 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
1215 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1216 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1217 | 0x00, 0x00, 0xC1, 0x01, // 0000C101 | ||
1218 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1219 | 0x00, 0x07, 0x07, 0x7F, // 0007077F | ||
1220 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1221 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1222 | 0x00, 0x06, 0x90, 0x6F, // 0006906F | ||
1223 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1224 | 0x00, 0x06, 0x10, 0x66, // 00061066 | ||
1225 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
1226 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1227 | 0x00, 0x02, 0x16, 0x14, // 00021614 | ||
1228 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1229 | 0x00, 0x06, 0x10, 0x67, // 00061067 | ||
1230 | 0x00, 0x08, 0x91, 0xC2, // 000891C2 | ||
1231 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1232 | 0x00, 0x02, 0x16, 0x14, // 00021614 | ||
1233 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1234 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1235 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1236 | 0x00, 0x06, 0x10, 0x76, // 00061076 | ||
1237 | 0x00, 0x06, 0x08, 0x7A, // 0006087A | ||
1238 | 0x00, 0x0A, 0x00, 0xC2, // 000A00C2 | ||
1239 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1240 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1241 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1242 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1243 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1244 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
1245 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1246 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
1247 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
1248 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1249 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1250 | 0x00, 0x06, 0x0C, 0x26, // 00060C26 | ||
1251 | 0x00, 0x06, 0x14, 0x1C, // 0006141C | ||
1252 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
1253 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
1254 | 0x00, 0x08, 0x89, 0xC2, // 000889C2 | ||
1255 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1256 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
1257 | 0x00, 0x06, 0x24, 0x24, // 00062424 | ||
1258 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
1259 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1260 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
1261 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
1262 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1263 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
1264 | 0x00, 0x06, 0x24, 0x2E, // 0006242E | ||
1265 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
1266 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1267 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
1268 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
1269 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1270 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
1271 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
1272 | 0x00, 0x07, 0x2C, 0x20, // 00072C20 | ||
1273 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1274 | 0x00, 0x08, 0x89, 0xC5, // 000889C5 | ||
1275 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
1276 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1277 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1278 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1279 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1280 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1281 | 0x00, 0x0B, 0x6D, 0x70, // 000B6D70 | ||
1282 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1283 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1284 | 0x00, 0x04, 0xB8, 0x0D, // 0004B80D | ||
1285 | 0x00, 0x06, 0xA8, 0x79, // 0006A879 | ||
1286 | 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C | ||
1287 | 0x00, 0x00, 0xC1, 0x01, // 0000C101 | ||
1288 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1289 | 0x00, 0x07, 0x07, 0xC5, // 000707C5 | ||
1290 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1291 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1292 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1293 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1294 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
1295 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1296 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1297 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1298 | 0x00, 0x08, 0x29, 0x40, // 00082940 | ||
1299 | 0x00, 0x08, 0x08, 0x40, // 00080840 | ||
1300 | 0x00, 0x0C, 0x31, 0x08, // 000C3108 | ||
1301 | 0x00, 0x0E, 0x31, 0x09, // 000E3109 | ||
1302 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1303 | 0x00, 0x06, 0x10, 0x73, // 00061073 | ||
1304 | 0x00, 0x0C, 0x01, 0x08, // 000C0108 | ||
1305 | 0x00, 0x0E, 0x01, 0x09, // 000E0109 | ||
1306 | 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C | ||
1307 | 0x00, 0x09, 0xA7, 0x7F, // 0009A77F | ||
1308 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1309 | 0x00, 0x08, 0x36, 0x42, // 00083642 | ||
1310 | 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C | ||
1311 | 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F | ||
1312 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1313 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
1314 | 0x00, 0x06, 0x20, 0x79, // 00062079 | ||
1315 | 0x00, 0x08, 0x12, 0x42, // 00081242 | ||
1316 | 0x00, 0x08, 0xA4, 0x41, // 0008A441 | ||
1317 | 0x00, 0x07, 0xF4, 0x0C, // 0007F40C | ||
1318 | 0x00, 0x07, 0xC4, 0x0C, // 0007C40C | ||
1319 | 0x00, 0x02, 0x9F, 0x50, // 00029F50 | ||
1320 | 0x00, 0x06, 0x90, 0x73, // 00069073 | ||
1321 | 0x00, 0x06, 0xA0, 0x79, // 0006A079 | ||
1322 | 0x00, 0x08, 0x9B, 0x41, // 00089B41 | ||
1323 | 0x00, 0x02, 0x87, 0x20, // 00028720 | ||
1324 | 0x00, 0x08, 0x0D, 0x40, // 00080D40 | ||
1325 | 0x00, 0x08, 0x05, 0x40, // 00080540 | ||
1326 | 0x00, 0x02, 0x13, 0xCB, // 000213CB | ||
1327 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1328 | 0x00, 0x02, 0x13, 0xBE, // 000213BE | ||
1329 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1330 | 0x00, 0x06, 0x00, 0x74, // 00060074 | ||
1331 | 0x00, 0x06, 0x0C, 0x1C, // 00060C1C | ||
1332 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1333 | 0x00, 0x07, 0x14, 0x80, // 00071480 | ||
1334 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
1335 | 0x00, 0x02, 0x9E, 0x48, // 00029E48 | ||
1336 | 0x00, 0x08, 0x91, 0xC2, // 000891C2 | ||
1337 | 0x00, 0x02, 0x89, 0x38, // 00028938 | ||
1338 | 0x00, 0x02, 0x15, 0xDB, // 000215DB | ||
1339 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1340 | 0x00, 0x07, 0x07, 0xF8, // 000707F8 | ||
1341 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1342 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1343 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1344 | 0x00, 0x06, 0x80, 0x0E, // 0006800E | ||
1345 | 0x00, 0x02, 0x16, 0x52, // 00021652 | ||
1346 | 0x00, 0x07, 0x4C, 0x04, // 00074C04 | ||
1347 | 0x00, 0x07, 0x0F, 0xFF, // 00070FFF | ||
1348 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1349 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1350 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1351 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
1352 | 0x00, 0x06, 0x00, 0x69, // 00060069 | ||
1353 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1354 | 0x00, 0x07, 0x0E, 0x65, // 00070E65 | ||
1355 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
1356 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1357 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
1358 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
1359 | 0x00, 0x0A, 0x12, 0xC3, // 000A12C3 | ||
1360 | 0x00, 0x06, 0x88, 0x22, // 00068822 | ||
1361 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
1362 | 0x00, 0x0A, 0xC0, 0xC2, // 000AC0C2 | ||
1363 | 0x00, 0x04, 0x0F, 0x00, // 00040F00 | ||
1364 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1365 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1366 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1367 | 0x00, 0x08, 0x09, 0x41, // 00080941 | ||
1368 | 0x00, 0x06, 0x00, 0x6A, // 0006006A | ||
1369 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1370 | 0x00, 0x06, 0x80, 0x69, // 00068069 | ||
1371 | 0x00, 0x07, 0x88, 0x07, // 00078807 | ||
1372 | 0x00, 0x06, 0x80, 0x6F, // 0006806F | ||
1373 | 0x00, 0x00, 0xC1, 0x03, // 0000C103 | ||
1374 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1375 | 0x00, 0x07, 0x04, 0x1B, // 0007041B | ||
1376 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1377 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1378 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1379 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1380 | 0x00, 0x06, 0x04, 0x26, // 00060426 | ||
1381 | 0x00, 0x06, 0x28, 0x7A, // 0006287A | ||
1382 | 0x00, 0x06, 0x38, 0x7A, // 0006387A | ||
1383 | 0x00, 0x06, 0x0C, 0x1C, // 00060C1C | ||
1384 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1385 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
1386 | 0x00, 0x06, 0x18, 0x70, // 00061870 | ||
1387 | 0x00, 0x08, 0x80, 0xC1, // 000880C1 | ||
1388 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1389 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1390 | 0x00, 0x07, 0x74, 0x00, // 00077400 | ||
1391 | 0x00, 0x07, 0x34, 0x40, // 00073440 | ||
1392 | 0x00, 0x06, 0x08, 0x74, // 00060874 | ||
1393 | 0x00, 0x08, 0xA5, 0x41, // 0008A541 | ||
1394 | 0x00, 0x02, 0x9E, 0x30, // 00029E30 | ||
1395 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1396 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1397 | 0x00, 0x08, 0xA0, 0xC6, // 0008A0C6 | ||
1398 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
1399 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1400 | 0x00, 0x02, 0x81, 0x80, // 00028180 | ||
1401 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1402 | 0x00, 0x02, 0x9F, 0x70, // 00029F70 | ||
1403 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1404 | 0x00, 0x07, 0x24, 0x21, // 00072421 | ||
1405 | 0x00, 0x08, 0x93, 0xC0, // 000893C0 | ||
1406 | 0x00, 0x06, 0x80, 0x70, // 00068070 | ||
1407 | 0x00, 0x06, 0xA8, 0x7A, // 0006A87A | ||
1408 | 0x00, 0x08, 0x94, 0xC2, // 000894C2 | ||
1409 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
1410 | 0x00, 0x02, 0x16, 0x11, // 00021611 | ||
1411 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1412 | 0x00, 0x07, 0x04, 0x40, // 00070440 | ||
1413 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1414 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1415 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1416 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1417 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1418 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
1419 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1420 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
1421 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1422 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1423 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
1424 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
1425 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1426 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1427 | 0x00, 0x02, 0x81, 0x10, // 00028110 | ||
1428 | 0x00, 0x02, 0x14, 0xAC, // 000214AC | ||
1429 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1430 | 0x00, 0x07, 0x80, 0x07, // 00078007 | ||
1431 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1432 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
1433 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
1434 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
1435 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1436 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1437 | 0x00, 0x0A, 0xC7, 0x81, // 000AC781 | ||
1438 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1439 | 0x00, 0x02, 0x14, 0xC1, // 000214C1 | ||
1440 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1441 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1442 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
1443 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1444 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
1445 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1446 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
1447 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1448 | 0x00, 0x06, 0x10, 0x7A, // 0006107A | ||
1449 | 0x00, 0x06, 0x18, 0x77, // 00061877 | ||
1450 | 0x00, 0x04, 0x25, 0x08, // 00042508 | ||
1451 | 0x00, 0x04, 0x2D, 0x08, // 00042D08 | ||
1452 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
1453 | 0x00, 0x04, 0x3D, 0x08, // 00043D08 | ||
1454 | 0x00, 0x0A, 0xCF, 0x81, // 000ACF81 | ||
1455 | 0x00, 0x02, 0x9F, 0x70, // 00029F70 | ||
1456 | 0x00, 0x06, 0x0C, 0x6A, // 00060C6A | ||
1457 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1458 | 0x00, 0x02, 0x9E, 0x50, // 00029E50 | ||
1459 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1460 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1461 | 0x00, 0x0B, 0x49, 0x41, // 000B4941 | ||
1462 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1463 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1464 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1465 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
1466 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1467 | 0x00, 0x06, 0x0C, 0x65, // 00060C65 | ||
1468 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
1469 | 0x00, 0x02, 0x81, 0x70, // 00028170 | ||
1470 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1471 | 0x00, 0x06, 0x0C, 0x6A, // 00060C6A | ||
1472 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1473 | 0x00, 0x02, 0x9F, 0x50, // 00029F50 | ||
1474 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1475 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1476 | 0x00, 0x0B, 0x49, 0x41, // 000B4941 | ||
1477 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
1478 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
1479 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
1480 | 0x00, 0x04, 0x3F, 0x08, // 00043F08 | ||
1481 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1482 | 0x00, 0x06, 0x0C, 0x65, // 00060C65 | ||
1483 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
1484 | 0x00, 0x06, 0x04, 0x6A, // 0006046A | ||
1485 | 0x00, 0x06, 0x14, 0x65, // 00061465 | ||
1486 | 0x00, 0x09, 0x00, 0xC2, // 000900C2 | ||
1487 | 0x00, 0x08, 0x11, 0x41, // 00081141 | ||
1488 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
1489 | 0x00, 0x08, 0x10, 0x41, // 00081041 | ||
1490 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
1491 | 0x00, 0x08, 0x08, 0x40, // 00080840 | ||
1492 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1493 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
1494 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
1495 | 0x00, 0x06, 0x8C, 0x6A, // 00068C6A | ||
1496 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
1497 | 0x00, 0x06, 0x98, 0x77, // 00069877 | ||
1498 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1499 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
1500 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1501 | 0x00, 0x07, 0x0C, 0x02, // 00070C02 | ||
1502 | 0x00, 0x06, 0x10, 0x7A, // 0006107A | ||
1503 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1504 | 0x00, 0x0A, 0xC3, 0x81, // 000AC381 | ||
1505 | 0x00, 0x02, 0x9F, 0x58, // 00029F58 | ||
1506 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1507 | 0x00, 0x02, 0x9E, 0x40, // 00029E40 | ||
1508 | 0x00, 0x0B, 0x52, 0x7E, // 000B527E | ||
1509 | 0x00, 0x02, 0x16, 0x2E, // 0002162E | ||
1510 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1511 | 0x00, 0x07, 0x04, 0xAC, // 000704AC | ||
1512 | 0x00, 0x06, 0x90, 0x7A, // 0006907A | ||
1513 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1514 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1515 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1516 | 0x00, 0x02, 0x81, 0x18, // 00028118 | ||
1517 | 0x00, 0x08, 0x9A, 0x42, // 00089A42 | ||
1518 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1519 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
1520 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1521 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1522 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1523 | 0x00, 0x06, 0x90, 0x7A, // 0006907A | ||
1524 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1525 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
1526 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1527 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1528 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1529 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1530 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1531 | 0x00, 0x06, 0xC0, 0x6D, // 0006C06D | ||
1532 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
1533 | 0x00, 0x07, 0x6C, 0x05, // 00076C05 | ||
1534 | 0x00, 0x07, 0x2C, 0xBA, // 00072CBA | ||
1535 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1536 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1537 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1538 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1539 | 0x00, 0x02, 0x13, 0x3B, // 0002133B | ||
1540 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1541 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1542 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1543 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1544 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1545 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1546 | 0x00, 0x00, 0xC1, 0x80, // 0000C180 | ||
1547 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1548 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1549 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1550 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1551 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1552 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1553 | 0x00, 0x06, 0x10, 0x68, // 00061068 | ||
1554 | 0x00, 0x04, 0x04, 0x08, // 00040408 | ||
1555 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1556 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1557 | 0x00, 0x02, 0x14, 0xDD, // 000214DD | ||
1558 | 0x00, 0x06, 0x28, 0x6C, // 0006286C | ||
1559 | 0x00, 0x04, 0x0C, 0x08, // 00040C08 | ||
1560 | 0x00, 0x07, 0x64, 0x3F, // 0007643F | ||
1561 | 0x00, 0x07, 0x27, 0xFF, // 000727FF | ||
1562 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1563 | 0x00, 0x09, 0xA4, 0x44, // 0009A444 | ||
1564 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
1565 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1566 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1567 | 0x00, 0x0A, 0xD2, 0xC4, // 000AD2C4 | ||
1568 | 0x00, 0x09, 0x80, 0x48, // 00098048 | ||
1569 | 0x00, 0x09, 0xB1, 0x78, // 0009B178 | ||
1570 | 0x00, 0x08, 0x00, 0xC6, // 000800C6 | ||
1571 | 0x00, 0x09, 0x89, 0x48, // 00098948 | ||
1572 | 0x00, 0x09, 0xB2, 0x78, // 0009B278 | ||
1573 | 0x00, 0x08, 0x09, 0xC6, // 000809C6 | ||
1574 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1575 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1576 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
1577 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1578 | 0x00, 0x09, 0x90, 0x48, // 00099048 | ||
1579 | 0x00, 0x09, 0xB0, 0x78, // 0009B078 | ||
1580 | 0x00, 0x08, 0x02, 0xC6, // 000802C6 | ||
1581 | 0x00, 0x09, 0x91, 0x48, // 00099148 | ||
1582 | 0x00, 0x09, 0xB1, 0x78, // 0009B178 | ||
1583 | 0x00, 0x08, 0x0A, 0xC6, // 00080AC6 | ||
1584 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1585 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1586 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1587 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1588 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1589 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1590 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1591 | 0x00, 0x06, 0x18, 0x68, // 00061868 | ||
1592 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
1593 | 0x00, 0x09, 0x9B, 0x7D, // 00099B7D | ||
1594 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1595 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
1596 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1597 | 0x00, 0x08, 0x81, 0xC0, // 000881C0 | ||
1598 | 0x00, 0x09, 0x03, 0xC0, // 000903C0 | ||
1599 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1600 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1601 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
1602 | 0x00, 0x01, 0x0A, 0x20, // 00010A20 | ||
1603 | 0x00, 0x0B, 0x49, 0x7F, // 000B497F | ||
1604 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
1605 | 0x00, 0x0B, 0x76, 0x78, // 000B7678 | ||
1606 | 0x00, 0x09, 0x92, 0x48, // 00099248 | ||
1607 | 0x00, 0x09, 0x89, 0x48, // 00098948 | ||
1608 | 0x00, 0x09, 0x9A, 0x68, // 00099A68 | ||
1609 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
1610 | 0x00, 0x08, 0x9F, 0xC1, // 00089FC1 | ||
1611 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1612 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1613 | 0x00, 0x06, 0xB0, 0x68, // 0006B068 | ||
1614 | 0x00, 0x09, 0x92, 0x48, // 00099248 | ||
1615 | 0x00, 0x09, 0x89, 0x48, // 00098948 | ||
1616 | 0x00, 0x09, 0x9A, 0x68, // 00099A68 | ||
1617 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
1618 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1619 | 0x00, 0x04, 0x14, 0x08, // 00041408 | ||
1620 | 0x00, 0x08, 0x9F, 0xC1, // 00089FC1 | ||
1621 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1622 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1623 | 0x00, 0x06, 0xB0, 0x68, // 0006B068 | ||
1624 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1625 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1626 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1627 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1628 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1629 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1630 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1631 | 0x00, 0x06, 0x30, 0x71, // 00063071 | ||
1632 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1633 | 0x00, 0x08, 0xB6, 0x40, // 0008B640 | ||
1634 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1635 | 0x00, 0x02, 0x15, 0x31, // 00021531 | ||
1636 | 0x00, 0x06, 0x18, 0x7A, // 0006187A | ||
1637 | 0x00, 0x06, 0x30, 0x72, // 00063072 | ||
1638 | 0x00, 0x07, 0x06, 0x00, // 00070600 | ||
1639 | 0x00, 0x06, 0x08, 0x28, // 00060828 | ||
1640 | 0x00, 0x08, 0x38, 0x41, // 00083841 | ||
1641 | 0x00, 0x08, 0x90, 0xC1, // 000890C1 | ||
1642 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
1643 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1644 | 0x00, 0x07, 0x54, 0x03, // 00075403 | ||
1645 | 0x00, 0x07, 0x17, 0xF0, // 000717F0 | ||
1646 | 0x00, 0x06, 0xB8, 0x22, // 0006B822 | ||
1647 | 0x00, 0x01, 0x04, 0x90, // 00010490 | ||
1648 | 0x00, 0x09, 0x92, 0x48, // 00099248 | ||
1649 | 0x00, 0x0A, 0xE7, 0x8A, // 000AE78A | ||
1650 | 0x00, 0x0A, 0xEF, 0x8A, // 000AEF8A | ||
1651 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
1652 | 0x00, 0x09, 0xAD, 0x78, // 0009AD78 | ||
1653 | 0x00, 0x08, 0x24, 0xC5, // 000824C5 | ||
1654 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1655 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1656 | 0x00, 0x06, 0xB0, 0x72, // 0006B072 | ||
1657 | 0x00, 0x07, 0xE0, 0x0E, // 0007E00E | ||
1658 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1659 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1660 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
1661 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1662 | 0x00, 0x06, 0xB0, 0x71, // 0006B071 | ||
1663 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
1664 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
1665 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1666 | 0x00, 0x08, 0x81, 0xC0, // 000881C0 | ||
1667 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1668 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1669 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
1670 | 0x00, 0x07, 0x1D, 0xE8, // 00071DE8 | ||
1671 | 0x00, 0x0B, 0x76, 0x7F, // 000B767F | ||
1672 | 0x00, 0x08, 0x93, 0xC0, // 000893C0 | ||
1673 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
1674 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1675 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1676 | 0x00, 0x07, 0x05, 0x38, // 00070538 | ||
1677 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1678 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1679 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1680 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1681 | 0x00, 0x06, 0xB0, 0x71, // 0006B071 | ||
1682 | 0x00, 0x06, 0xB8, 0x28, // 0006B828 | ||
1683 | 0x00, 0x06, 0x80, 0x4B, // 0006804B | ||
1684 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
1685 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
1686 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1687 | 0x00, 0x08, 0x81, 0xC0, // 000881C0 | ||
1688 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1689 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1690 | 0x00, 0x06, 0x18, 0x68, // 00061868 | ||
1691 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1692 | 0x00, 0x0A, 0x10, 0x44, // 000A1044 | ||
1693 | 0x00, 0x0A, 0x20, 0x42, // 000A2042 | ||
1694 | 0x00, 0x08, 0x12, 0xC4, // 000812C4 | ||
1695 | 0x00, 0x09, 0x03, 0xC2, // 000903C2 | ||
1696 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1697 | 0x00, 0x0A, 0x00, 0x7C, // 000A007C | ||
1698 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1699 | 0x00, 0x07, 0x04, 0x20, // 00070420 | ||
1700 | 0x00, 0x07, 0x54, 0x05, // 00075405 | ||
1701 | 0x00, 0x07, 0x15, 0x7C, // 0007157C | ||
1702 | 0x00, 0x0B, 0x49, 0x41, // 000B4941 | ||
1703 | 0x00, 0x0B, 0x64, 0x7F, // 000B647F | ||
1704 | 0x00, 0x0B, 0x5B, 0x78, // 000B5B78 | ||
1705 | 0x00, 0x09, 0xA4, 0x7C, // 0009A47C | ||
1706 | 0x00, 0x06, 0x90, 0x0A, // 0006900A | ||
1707 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1708 | 0x00, 0x09, 0x94, 0x83, // 00099483 | ||
1709 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
1710 | 0x00, 0x09, 0x89, 0x41, // 00098941 | ||
1711 | 0x00, 0x09, 0x92, 0x41, // 00099241 | ||
1712 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1713 | 0x00, 0x08, 0x09, 0xC4, // 000809C4 | ||
1714 | 0x00, 0x01, 0x04, 0x13, // 00010413 | ||
1715 | 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1 | ||
1716 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1717 | 0x00, 0x00, 0xC1, 0x82, // 0000C182 | ||
1718 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
1719 | 0x00, 0x09, 0x89, 0x41, // 00098941 | ||
1720 | 0x00, 0x09, 0x92, 0x41, // 00099241 | ||
1721 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1722 | 0x00, 0x08, 0x09, 0xC4, // 000809C4 | ||
1723 | 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1 | ||
1724 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1725 | 0x00, 0x00, 0xC1, 0x82, // 0000C182 | ||
1726 | 0x00, 0x04, 0x2C, 0x08, // 00042C08 | ||
1727 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1728 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1729 | 0x00, 0x02, 0x15, 0x62, // 00021562 | ||
1730 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1731 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1732 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1733 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
1734 | 0x00, 0x08, 0xAE, 0x54, // 0008AE54 | ||
1735 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1736 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1737 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1738 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1739 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1740 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1741 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1742 | 0x00, 0x06, 0xB0, 0x68, // 0006B068 | ||
1743 | 0x00, 0x04, 0x34, 0x08, // 00043408 | ||
1744 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1745 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1746 | 0x00, 0x06, 0x10, 0x68, // 00061068 | ||
1747 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1748 | 0x00, 0x08, 0x82, 0x47, // 00088247 | ||
1749 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
1750 | 0x00, 0x02, 0x15, 0x96, // 00021596 | ||
1751 | 0x00, 0x0B, 0x64, 0x41, // 000B6441 | ||
1752 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1753 | 0x00, 0x09, 0xA4, 0x78, // 0009A478 | ||
1754 | 0x00, 0x0A, 0xEC, 0x8C, // 000AEC8C | ||
1755 | 0x00, 0x0A, 0xE4, 0x7F, // 000AE47F | ||
1756 | 0x00, 0x0A, 0xF4, 0x84, // 000AF484 | ||
1757 | 0x00, 0x0A, 0xF4, 0x8C, // 000AF48C | ||
1758 | 0x00, 0x0A, 0xCC, 0x84, // 000ACC84 | ||
1759 | 0x00, 0x07, 0x64, 0x3F, // 0007643F | ||
1760 | 0x00, 0x07, 0x27, 0xFF, // 000727FF | ||
1761 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1762 | 0x00, 0x09, 0xA4, 0x44, // 0009A444 | ||
1763 | 0x00, 0x09, 0x85, 0xC2, // 000985C2 | ||
1764 | 0x00, 0x09, 0x86, 0xC3, // 000986C3 | ||
1765 | 0x00, 0x08, 0x00, 0xC0, // 000800C0 | ||
1766 | 0x00, 0x08, 0x12, 0x50, // 00081250 | ||
1767 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1768 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1769 | 0x00, 0x02, 0x87, 0x18, // 00028718 | ||
1770 | 0x00, 0x08, 0x92, 0x54, // 00089254 | ||
1771 | 0x00, 0x08, 0x2E, 0x40, // 00082E40 | ||
1772 | 0x00, 0x08, 0x31, 0x40, // 00083140 | ||
1773 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1774 | 0x00, 0x09, 0x8D, 0xC2, // 00098DC2 | ||
1775 | 0x00, 0x09, 0x8E, 0xC3, // 00098EC3 | ||
1776 | 0x00, 0x08, 0x09, 0xC1, // 000809C1 | ||
1777 | 0x00, 0x08, 0x12, 0x50, // 00081250 | ||
1778 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1779 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1780 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
1781 | 0x00, 0x08, 0x92, 0x54, // 00089254 | ||
1782 | 0x00, 0x06, 0x28, 0x6C, // 0006286C | ||
1783 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1784 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1785 | 0x00, 0x06, 0x90, 0x68, // 00069068 | ||
1786 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
1787 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1788 | 0x00, 0x09, 0x90, 0x48, // 00099048 | ||
1789 | 0x00, 0x09, 0xB0, 0x78, // 0009B078 | ||
1790 | 0x00, 0x08, 0x02, 0xC6, // 000802C6 | ||
1791 | 0x00, 0x09, 0x91, 0x48, // 00099148 | ||
1792 | 0x00, 0x09, 0xB1, 0x78, // 0009B178 | ||
1793 | 0x00, 0x08, 0x0A, 0xC6, // 00080AC6 | ||
1794 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1795 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1796 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1797 | 0x00, 0x02, 0x81, 0x18, // 00028118 | ||
1798 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
1799 | 0x00, 0x07, 0x3C, 0xC0, // 00073CC0 | ||
1800 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
1801 | 0x00, 0x07, 0x35, 0x60, // 00073560 | ||
1802 | 0x00, 0x06, 0x20, 0x2E, // 0006202E | ||
1803 | 0x00, 0x06, 0x18, 0x1C, // 0006181C | ||
1804 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1805 | 0x00, 0x06, 0x00, 0x75, // 00060075 | ||
1806 | 0x00, 0x06, 0x08, 0x7A, // 0006087A | ||
1807 | 0x00, 0x06, 0xA0, 0x20, // 0006A020 | ||
1808 | 0x00, 0x08, 0x9C, 0xC3, // 00089CC3 | ||
1809 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1810 | 0x00, 0x08, 0x1B, 0xC2, // 00081BC2 | ||
1811 | 0x00, 0x09, 0x16, 0xC3, // 000916C3 | ||
1812 | 0x00, 0x02, 0x89, 0x10, // 00028910 | ||
1813 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1814 | 0x00, 0x07, 0x04, 0x30, // 00070430 | ||
1815 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1816 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
1817 | 0x00, 0x08, 0x97, 0xC3, // 000897C3 | ||
1818 | 0x00, 0x02, 0x89, 0x10, // 00028910 | ||
1819 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1820 | 0x00, 0x07, 0x04, 0x70, // 00070470 | ||
1821 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1822 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1823 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1824 | 0x00, 0x06, 0x98, 0x7F, // 0006987F | ||
1825 | 0x00, 0x06, 0x84, 0x06, // 00068406 | ||
1826 | 0x00, 0x06, 0x80, 0x75, // 00068075 | ||
1827 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1828 | 0x00, 0x02, 0x15, 0xFC, // 000215FC | ||
1829 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1830 | 0x00, 0x07, 0x0D, 0xE2, // 00070DE2 | ||
1831 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1832 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1833 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1834 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
1835 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1836 | 0x00, 0x07, 0x0E, 0x32, // 00070E32 | ||
1837 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
1838 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1839 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1840 | 0x00, 0x06, 0x8C, 0x22, // 00068C22 | ||
1841 | 0x00, 0x06, 0x5C, 0x14, // 00065C14 | ||
1842 | 0x00, 0x06, 0xA8, 0x74, // 0006A874 | ||
1843 | 0x00, 0x06, 0x5C, 0x24, // 00065C24 | ||
1844 | 0x00, 0x06, 0x5C, 0x26, // 00065C26 | ||
1845 | 0x00, 0x06, 0x5C, 0x2E, // 00065C2E | ||
1846 | 0x00, 0x06, 0x5C, 0x25, // 00065C25 | ||
1847 | 0x00, 0x06, 0x5C, 0x27, // 00065C27 | ||
1848 | 0x00, 0x06, 0x5C, 0x2F, // 00065C2F | ||
1849 | 0x00, 0x06, 0x5C, 0x44, // 00065C44 | ||
1850 | 0x00, 0x04, 0x80, 0x03, // 00048003 | ||
1851 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1852 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1853 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1854 | 0x00, 0x00, 0xC1, 0x06, // 0000C106 | ||
1855 | 0x00, 0x06, 0x84, 0x74, // 00068474 | ||
1856 | 0x00, 0x06, 0x84, 0x43, // 00068443 | ||
1857 | 0x00, 0x06, 0x5C, 0x3C, // 00065C3C | ||
1858 | 0x00, 0x06, 0x5C, 0x3B, // 00065C3B | ||
1859 | 0x00, 0x06, 0x5C, 0x54, // 00065C54 | ||
1860 | 0x00, 0x06, 0x5C, 0x53, // 00065C53 | ||
1861 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1862 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1863 | 0x00, 0x07, 0x0E, 0x25, // 00070E25 | ||
1864 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1865 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1866 | 0x00, 0x06, 0xA8, 0x74, // 0006A874 | ||
1867 | 0x00, 0x06, 0x8C, 0x22, // 00068C22 | ||
1868 | 0x00, 0x06, 0x5C, 0x14, // 00065C14 | ||
1869 | 0x00, 0x06, 0x5C, 0x24, // 00065C24 | ||
1870 | 0x00, 0x06, 0x5C, 0x26, // 00065C26 | ||
1871 | 0x00, 0x06, 0x5C, 0x2E, // 00065C2E | ||
1872 | 0x00, 0x06, 0x5C, 0x25, // 00065C25 | ||
1873 | 0x00, 0x06, 0x5C, 0x27, // 00065C27 | ||
1874 | 0x00, 0x06, 0x5C, 0x2F, // 00065C2F | ||
1875 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1876 | 0x00, 0x06, 0x5C, 0x44, // 00065C44 | ||
1877 | 0x00, 0x06, 0x5C, 0x43, // 00065C43 | ||
1878 | 0x00, 0x06, 0x5C, 0x3C, // 00065C3C | ||
1879 | 0x00, 0x06, 0x5C, 0x3B, // 00065C3B | ||
1880 | 0x00, 0x06, 0x5C, 0x54, // 00065C54 | ||
1881 | 0x00, 0x06, 0x5C, 0x53, // 00065C53 | ||
1882 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1883 | 0x00, 0x07, 0x1C, 0x02, // 00071C02 | ||
1884 | 0x00, 0x02, 0x81, 0x10, // 00028110 | ||
1885 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1886 | 0x00, 0x07, 0x1C, 0x01, // 00071C01 | ||
1887 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1888 | 0x00, 0x07, 0x16, 0x65, // 00071665 | ||
1889 | 0x00, 0x06, 0x00, 0x61, // 00060061 | ||
1890 | 0x00, 0x06, 0x20, 0x7A, // 0006207A | ||
1891 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1892 | 0x00, 0x06, 0x9C, 0x7F, // 00069C7F | ||
1893 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
1894 | 0x00, 0x04, 0x1F, 0x00, // 00041F00 | ||
1895 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
1896 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1897 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
1898 | 0x00, 0x07, 0x0C, 0x14, // 00070C14 | ||
1899 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1900 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1901 | 0x00, 0x07, 0x98, 0x1F, // 0007981F | ||
1902 | 0x00, 0x04, 0x17, 0x00, // 00041700 | ||
1903 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
1904 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1905 | 0x00, 0x06, 0x00, 0x6A, // 0006006A | ||
1906 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
1907 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
1908 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1909 | 0x00, 0x06, 0x80, 0x61, // 00068061 | ||
1910 | 0x00, 0x07, 0x90, 0x07, // 00079007 | ||
1911 | 0x00, 0x06, 0x3C, 0x26, // 00063C26 | ||
1912 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1913 | 0x00, 0x08, 0x3F, 0x40, // 00083F40 | ||
1914 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1915 | 0x00, 0x06, 0x1C, 0x1C, // 00061C1C | ||
1916 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1917 | 0x00, 0x06, 0xBC, 0x1C, // 0006BC1C | ||
1918 | 0x00, 0x04, 0xB0, 0x0D, // 0004B00D | ||
1919 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1920 | 0x00, 0x09, 0xB6, 0x7C, // 0009B67C | ||
1921 | 0x00, 0x01, 0x05, 0x10, // 00010510 | ||
1922 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
1923 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1924 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
1925 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
1926 | 0x00, 0x09, 0xB6, 0x7F, // 0009B67F | ||
1927 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1928 | 0x00, 0x08, 0x09, 0x42, // 00080942 | ||
1929 | 0x00, 0x07, 0x84, 0x0C, // 0007840C | ||
1930 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1931 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
1932 | 0x00, 0x07, 0x8C, 0x0C, // 00078C0C | ||
1933 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1934 | 0x00, 0x07, 0x24, 0x30, // 00072430 | ||
1935 | 0x00, 0x08, 0x2D, 0x41, // 00082D41 | ||
1936 | 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5 | ||
1937 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1938 | 0x00, 0x02, 0x16, 0x35, // 00021635 | ||
1939 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1940 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1941 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1942 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1943 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1944 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1945 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1946 | 0x00, 0x06, 0x9C, 0x1C, // 00069C1C | ||
1947 | 0x00, 0x06, 0x04, 0x6A, // 0006046A | ||
1948 | 0x00, 0x06, 0x08, 0x77, // 00060877 | ||
1949 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1950 | 0x00, 0x07, 0x17, 0x12, // 00071712 | ||
1951 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
1952 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1953 | 0x00, 0x02, 0x16, 0x71, // 00021671 | ||
1954 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1955 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
1956 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1957 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1958 | 0x00, 0x06, 0x24, 0x66, // 00062466 | ||
1959 | 0x00, 0x06, 0x2C, 0x67, // 00062C67 | ||
1960 | 0x00, 0x06, 0x34, 0x68, // 00063468 | ||
1961 | 0x00, 0x06, 0x3C, 0x69, // 00063C69 | ||
1962 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1963 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1964 | 0x00, 0x0B, 0x64, 0xC4, // 000B64C4 | ||
1965 | 0x00, 0x0B, 0x6D, 0xC5, // 000B6DC5 | ||
1966 | 0x00, 0x0B, 0x76, 0xC6, // 000B76C6 | ||
1967 | 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7 | ||
1968 | 0x00, 0x08, 0x25, 0x8C, // 0008258C | ||
1969 | 0x00, 0x08, 0x2D, 0x8D, // 00082D8D | ||
1970 | 0x00, 0x08, 0x35, 0x8E, // 0008358E | ||
1971 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1972 | 0x00, 0x08, 0x3D, 0x8F, // 00083D8F | ||
1973 | 0x00, 0x06, 0x84, 0x6A, // 0006846A | ||
1974 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1975 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
1976 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
1977 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
1978 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1979 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
1980 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
1981 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
1982 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
1983 | 0x00, 0x04, 0x3F, 0x08, // 00043F08 | ||
1984 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1985 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1986 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1987 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1988 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1989 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
1990 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1991 | 0x00, 0x06, 0x84, 0x6A, // 0006846A | ||
1992 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1993 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
1994 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
1995 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
1996 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1997 | }; | ||
1998 | // addres 06800 count 1077 (4314 bytes) | ||
1999 | static const unsigned char maspcm_array10[] = { | ||
2000 | 0xf0, 0x00, 0x04, 0x35, 0x08, 0x00, | ||
2001 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2002 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2003 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2004 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
2005 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2006 | 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E | ||
2007 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2008 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
2009 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
2010 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2011 | 0x00, 0x0A, 0x09, 0x78, // 000A0978 | ||
2012 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2013 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2014 | 0x00, 0x08, 0xA1, 0x41, // 0008A141 | ||
2015 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2016 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2017 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2018 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2019 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2020 | 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E | ||
2021 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
2022 | 0x00, 0x07, 0x26, 0x69, // 00072669 | ||
2023 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
2024 | 0x00, 0x0B, 0x75, 0x7E, // 000B757E | ||
2025 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2026 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
2027 | 0x00, 0x0A, 0xF7, 0x86, // 000AF786 | ||
2028 | 0x00, 0x0A, 0xEF, 0x85, // 000AEF85 | ||
2029 | 0x00, 0x0A, 0x36, 0x7F, // 000A367F | ||
2030 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
2031 | 0x00, 0x0B, 0x64, 0x70, // 000B6470 | ||
2032 | 0x00, 0x06, 0x98, 0x79, // 00069879 | ||
2033 | 0x00, 0x06, 0x90, 0x78, // 00069078 | ||
2034 | 0x00, 0x06, 0xA8, 0x77, // 0006A877 | ||
2035 | 0x00, 0x06, 0xB0, 0x7A, // 0006B07A | ||
2036 | 0x00, 0x06, 0xBC, 0x64, // 0006BC64 | ||
2037 | 0x00, 0x06, 0xB8, 0x71, // 0006B871 | ||
2038 | 0x00, 0x06, 0xB8, 0x70, // 0006B870 | ||
2039 | 0x00, 0x06, 0xB8, 0x69, // 0006B869 | ||
2040 | 0x00, 0x06, 0xB8, 0x7B, // 0006B87B | ||
2041 | 0x00, 0x06, 0xB8, 0x7C, // 0006B87C | ||
2042 | 0x00, 0x06, 0x9C, 0x6B, // 00069C6B | ||
2043 | 0x00, 0x06, 0xBC, 0x6E, // 0006BC6E | ||
2044 | 0x00, 0x06, 0xBC, 0x72, // 0006BC72 | ||
2045 | 0x00, 0x06, 0xB8, 0x74, // 0006B874 | ||
2046 | 0x00, 0x06, 0xB8, 0x7D, // 0006B87D | ||
2047 | 0x00, 0x06, 0xBC, 0x73, // 0006BC73 | ||
2048 | 0x00, 0x06, 0x9C, 0x7D, // 00069C7D | ||
2049 | 0x00, 0x06, 0xBC, 0x7C, // 0006BC7C | ||
2050 | 0x00, 0x06, 0xBC, 0x7B, // 0006BC7B | ||
2051 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2052 | 0x00, 0x06, 0x3C, 0x65, // 00063C65 | ||
2053 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2054 | 0x00, 0x09, 0xBF, 0x41, // 0009BF41 | ||
2055 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2056 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2057 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2058 | 0x00, 0x06, 0xBC, 0x7A, // 0006BC7A | ||
2059 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
2060 | 0x00, 0x07, 0x3D, 0xFF, // 00073DFF | ||
2061 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2062 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2063 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2064 | 0x00, 0x07, 0x1C, 0x90, // 00071C90 | ||
2065 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
2066 | 0x00, 0x07, 0x34, 0xA0, // 000734A0 | ||
2067 | 0x00, 0x06, 0x08, 0x76, // 00060876 | ||
2068 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2069 | 0x00, 0x08, 0x21, 0x41, // 00082141 | ||
2070 | 0x00, 0x06, 0xB8, 0x16, // 0006B816 | ||
2071 | 0x00, 0x06, 0x90, 0x24, // 00069024 | ||
2072 | 0x00, 0x06, 0x90, 0x2C, // 0006902C | ||
2073 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
2074 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
2075 | 0x00, 0x06, 0x98, 0x25, // 00069825 | ||
2076 | 0x00, 0x06, 0x98, 0x2D, // 0006982D | ||
2077 | 0x00, 0x06, 0xB0, 0x1D, // 0006B01D | ||
2078 | 0x00, 0x06, 0xA0, 0x10, // 0006A010 | ||
2079 | 0x00, 0x06, 0x98, 0x21, // 00069821 | ||
2080 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2081 | 0x00, 0x07, 0x3C, 0x24, // 00073C24 | ||
2082 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2083 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2084 | 0x00, 0x07, 0x6C, 0x01, // 00076C01 | ||
2085 | 0x00, 0x07, 0x2C, 0x98, // 00072C98 | ||
2086 | 0x00, 0x06, 0xBC, 0x16, // 0006BC16 | ||
2087 | 0x00, 0x06, 0x94, 0x2A, // 0006942A | ||
2088 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2089 | 0x00, 0x06, 0xAC, 0x2B, // 0006AC2B | ||
2090 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
2091 | 0x00, 0x07, 0x3D, 0xFF, // 00073DFF | ||
2092 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2093 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2094 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2095 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
2096 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2097 | 0x00, 0x07, 0x2C, 0x90, // 00072C90 | ||
2098 | 0x00, 0x06, 0xBC, 0x14, // 0006BC14 | ||
2099 | 0x00, 0x06, 0x94, 0x1C, // 0006941C | ||
2100 | 0x00, 0x06, 0x9C, 0x26, // 00069C26 | ||
2101 | 0x00, 0x06, 0x9C, 0x2E, // 00069C2E | ||
2102 | 0x00, 0x06, 0xAC, 0x1D, // 0006AC1D | ||
2103 | 0x00, 0x06, 0xAC, 0x27, // 0006AC27 | ||
2104 | 0x00, 0x06, 0xAC, 0x2F, // 0006AC2F | ||
2105 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2106 | 0x00, 0x07, 0x0C, 0x04, // 00070C04 | ||
2107 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2108 | 0x00, 0x07, 0x14, 0x10, // 00071410 | ||
2109 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2110 | 0x00, 0x06, 0x88, 0x4B, // 0006884B | ||
2111 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2112 | 0x00, 0x06, 0x94, 0x06, // 00069406 | ||
2113 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2114 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2115 | 0x00, 0x07, 0x1E, 0x62, // 00071E62 | ||
2116 | 0x00, 0x06, 0x10, 0x78, // 00061078 | ||
2117 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2118 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
2119 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2120 | 0x00, 0x07, 0x1F, 0x18, // 00071F18 | ||
2121 | 0x00, 0x06, 0x98, 0x22, // 00069822 | ||
2122 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2123 | 0x00, 0x02, 0x9E, 0xF0, // 00029EF0 | ||
2124 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2125 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
2126 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2127 | 0x00, 0x07, 0x2C, 0x80, // 00072C80 | ||
2128 | 0x00, 0x07, 0x74, 0x00, // 00077400 | ||
2129 | 0x00, 0x07, 0x34, 0x04, // 00073404 | ||
2130 | 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0 | ||
2131 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2132 | 0x00, 0x08, 0x1B, 0xC6, // 00081BC6 | ||
2133 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2134 | 0x00, 0x07, 0x2C, 0x40, // 00072C40 | ||
2135 | 0x00, 0x07, 0x74, 0x02, // 00077402 | ||
2136 | 0x00, 0x07, 0x34, 0x00, // 00073400 | ||
2137 | 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0 | ||
2138 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2139 | 0x00, 0x08, 0x1B, 0xC6, // 00081BC6 | ||
2140 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2141 | 0x00, 0x07, 0x2C, 0x04, // 00072C04 | ||
2142 | 0x00, 0x07, 0x74, 0x00, // 00077400 | ||
2143 | 0x00, 0x07, 0x34, 0x20, // 00073420 | ||
2144 | 0x00, 0x04, 0x17, 0x00, // 00041700 | ||
2145 | 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0 | ||
2146 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2147 | 0x00, 0x08, 0x1B, 0xC6, // 00081BC6 | ||
2148 | 0x00, 0x0A, 0xD2, 0x41, // 000AD241 | ||
2149 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2150 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2151 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
2152 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2153 | 0x00, 0x07, 0x27, 0x18, // 00072718 | ||
2154 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2155 | 0x00, 0x06, 0x98, 0x3B, // 0006983B | ||
2156 | 0x00, 0x06, 0x9C, 0x75, // 00069C75 | ||
2157 | 0x00, 0x06, 0xA0, 0x53, // 0006A053 | ||
2158 | 0x00, 0x06, 0x28, 0x77, // 00062877 | ||
2159 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2160 | 0x00, 0x07, 0x16, 0x40, // 00071640 | ||
2161 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2162 | 0x00, 0x07, 0x24, 0x90, // 00072490 | ||
2163 | 0x00, 0x0B, 0x49, 0x7D, // 000B497D | ||
2164 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2165 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
2166 | 0x00, 0x06, 0x90, 0x1E, // 0006901E | ||
2167 | 0x00, 0x06, 0xA0, 0x1F, // 0006A01F | ||
2168 | 0x00, 0x06, 0x88, 0x14, // 00068814 | ||
2169 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2170 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2171 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
2172 | 0x00, 0x04, 0x1F, 0x08, // 00041F08 | ||
2173 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
2174 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
2175 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2176 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
2177 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2178 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2179 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2180 | 0x00, 0x07, 0x88, 0x0D, // 0007880D | ||
2181 | 0x00, 0x07, 0x90, 0x0D, // 0007900D | ||
2182 | 0x00, 0x07, 0x98, 0x0D, // 0007980D | ||
2183 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
2184 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2185 | 0x00, 0x07, 0x16, 0x50, // 00071650 | ||
2186 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2187 | 0x00, 0x07, 0x26, 0x90, // 00072690 | ||
2188 | 0x00, 0x0B, 0x49, 0x7D, // 000B497D | ||
2189 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2190 | 0x00, 0x07, 0x06, 0x70, // 00070670 | ||
2191 | 0x00, 0x06, 0x94, 0x20, // 00069420 | ||
2192 | 0x00, 0x06, 0xA4, 0x21, // 0006A421 | ||
2193 | 0x00, 0x06, 0x8C, 0x15, // 00068C15 | ||
2194 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2195 | 0x00, 0x0B, 0x52, 0x75, // 000B5275 | ||
2196 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2197 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2198 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2199 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2200 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2201 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2202 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2203 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2204 | 0x00, 0x06, 0x94, 0x15, // 00069415 | ||
2205 | 0x00, 0x02, 0x1C, 0x0E, // 00021C0E | ||
2206 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2207 | 0x00, 0x07, 0x0C, 0xD3, // 00070CD3 | ||
2208 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2209 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2210 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2211 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
2212 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
2213 | 0x00, 0x07, 0x0E, 0x32, // 00070E32 | ||
2214 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
2215 | 0x00, 0x07, 0x26, 0x70, // 00072670 | ||
2216 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2217 | 0x00, 0x07, 0x2E, 0x90, // 00072E90 | ||
2218 | 0x00, 0x06, 0x8C, 0x22, // 00068C22 | ||
2219 | 0x00, 0x04, 0x80, 0x4F, // 0004804F | ||
2220 | 0x00, 0x06, 0x08, 0x78, // 00060878 | ||
2221 | 0x00, 0x06, 0xA4, 0x24, // 0006A424 | ||
2222 | 0x00, 0x06, 0xAC, 0x25, // 0006AC25 | ||
2223 | 0x00, 0x06, 0x5C, 0x3C, // 00065C3C | ||
2224 | 0x00, 0x06, 0x5C, 0x3B, // 00065C3B | ||
2225 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
2226 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2227 | 0x00, 0x02, 0x19, 0x1D, // 0002191D | ||
2228 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2229 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
2230 | 0x00, 0x07, 0x6C, 0x06, // 00076C06 | ||
2231 | 0x00, 0x07, 0x2C, 0xEB, // 00072CEB | ||
2232 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2233 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2234 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2235 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2236 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2237 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2238 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
2239 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
2240 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2241 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2242 | 0x00, 0x0A, 0xC7, 0x82, // 000AC782 | ||
2243 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
2244 | 0x00, 0x0A, 0xC7, 0x81, // 000AC781 | ||
2245 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2246 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2247 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2248 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2249 | 0x00, 0x07, 0x54, 0x04, // 00075404 | ||
2250 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2251 | 0x00, 0x06, 0x30, 0x2C, // 0006302C | ||
2252 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2253 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2254 | 0x00, 0x02, 0x19, 0x0C, // 0002190C | ||
2255 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2256 | 0x00, 0x0A, 0xF6, 0x41, // 000AF641 | ||
2257 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2258 | 0x00, 0x02, 0x18, 0xFA, // 000218FA | ||
2259 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2260 | 0x00, 0x06, 0x30, 0x2C, // 0006302C | ||
2261 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2262 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2263 | 0x00, 0x02, 0x19, 0x0C, // 0002190C | ||
2264 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2265 | 0x00, 0x0A, 0xF6, 0x41, // 000AF641 | ||
2266 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2267 | 0x00, 0x02, 0x19, 0x03, // 00021903 | ||
2268 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2269 | 0x00, 0x06, 0x38, 0x52, // 00063852 | ||
2270 | 0x00, 0x06, 0x30, 0x2C, // 0006302C | ||
2271 | 0x00, 0x09, 0xBF, 0x7A, // 0009BF7A | ||
2272 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2273 | 0x00, 0x0A, 0xFF, 0x41, // 000AFF41 | ||
2274 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2275 | 0x00, 0x0B, 0x36, 0x41, // 000B3641 | ||
2276 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2277 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2278 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2279 | 0x00, 0x06, 0xB0, 0x2C, // 0006B02C | ||
2280 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2281 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2282 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2283 | 0x00, 0x02, 0x18, 0xE4, // 000218E4 | ||
2284 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2285 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2286 | 0x00, 0x0B, 0x40, 0x7D, // 000B407D | ||
2287 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2288 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2289 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2290 | 0x00, 0x06, 0x84, 0x15, // 00068415 | ||
2291 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2292 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2293 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2294 | 0x00, 0x0C, 0x06, 0x27, // 000C0627 | ||
2295 | 0x00, 0x04, 0x35, 0x18, // 00043518 | ||
2296 | 0x00, 0x04, 0xB8, 0x1E, // 0004B81E | ||
2297 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2298 | 0x00, 0x0E, 0x06, 0x27, // 000E0627 | ||
2299 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2300 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2301 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2302 | 0x00, 0x0C, 0x0E, 0x27, // 000C0E27 | ||
2303 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2304 | 0x00, 0x04, 0xB8, 0x0E, // 0004B80E | ||
2305 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2306 | 0x00, 0x0E, 0x0E, 0x27, // 000E0E27 | ||
2307 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2308 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2309 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2310 | 0x00, 0x0C, 0x16, 0x27, // 000C1627 | ||
2311 | 0x00, 0x04, 0x35, 0x18, // 00043518 | ||
2312 | 0x00, 0x04, 0xB8, 0x1E, // 0004B81E | ||
2313 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2314 | 0x00, 0x0E, 0x16, 0x27, // 000E1627 | ||
2315 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2316 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2317 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2318 | 0x00, 0x0C, 0x1E, 0x27, // 000C1E27 | ||
2319 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2320 | 0x00, 0x04, 0xB8, 0x0E, // 0004B80E | ||
2321 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2322 | 0x00, 0x0E, 0x1E, 0x27, // 000E1E27 | ||
2323 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
2324 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2325 | 0x00, 0x07, 0x27, 0x12, // 00072712 | ||
2326 | 0x00, 0x07, 0x80, 0x0D, // 0007800D | ||
2327 | 0x00, 0x07, 0x88, 0x0D, // 0007880D | ||
2328 | 0x00, 0x07, 0x90, 0x0D, // 0007900D | ||
2329 | 0x00, 0x07, 0x98, 0x0D, // 0007980D | ||
2330 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
2331 | 0x00, 0x07, 0x80, 0x0F, // 0007800F | ||
2332 | 0x00, 0x07, 0x88, 0x0F, // 0007880F | ||
2333 | 0x00, 0x07, 0x90, 0x0F, // 0007900F | ||
2334 | 0x00, 0x07, 0x98, 0x07, // 00079807 | ||
2335 | 0x00, 0x06, 0x2C, 0x79, // 00062C79 | ||
2336 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2337 | 0x00, 0x0C, 0x09, 0x0D, // 000C090D | ||
2338 | 0x00, 0x0C, 0x11, 0x0D, // 000C110D | ||
2339 | 0x00, 0x0C, 0x19, 0x0D, // 000C190D | ||
2340 | 0x00, 0x0C, 0x21, 0x0D, // 000C210D | ||
2341 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2342 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2343 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2344 | 0x00, 0x06, 0x8C, 0x66, // 00068C66 | ||
2345 | 0x00, 0x06, 0x94, 0x67, // 00069467 | ||
2346 | 0x00, 0x06, 0x9C, 0x68, // 00069C68 | ||
2347 | 0x00, 0x06, 0xA4, 0x69, // 0006A469 | ||
2348 | 0x00, 0x06, 0x00, 0x7A, // 0006007A | ||
2349 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2350 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
2351 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2352 | 0x00, 0x02, 0x19, 0xF8, // 000219F8 | ||
2353 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2354 | 0x00, 0x06, 0x00, 0x24, // 00060024 | ||
2355 | 0x00, 0x06, 0x08, 0x78, // 00060878 | ||
2356 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
2357 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2358 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2359 | 0x00, 0x08, 0x89, 0x41, // 00088941 | ||
2360 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2361 | 0x00, 0x06, 0x00, 0x2C, // 0006002C | ||
2362 | 0x00, 0x06, 0x08, 0x1C, // 0006081C | ||
2363 | 0x00, 0x08, 0x80, 0xC1, // 000880C1 | ||
2364 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2365 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2366 | 0x00, 0x08, 0x9B, 0x41, // 00089B41 | ||
2367 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2368 | 0x00, 0x09, 0x80, 0x7F, // 0009807F | ||
2369 | 0x00, 0x06, 0x14, 0x7B, // 0006147B | ||
2370 | 0x00, 0x06, 0x1C, 0x7A, // 00061C7A | ||
2371 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2372 | 0x00, 0x02, 0x9F, 0x28, // 00029F28 | ||
2373 | 0x00, 0x08, 0x98, 0xC3, // 000898C3 | ||
2374 | 0x00, 0x02, 0x87, 0x10, // 00028710 | ||
2375 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2376 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
2377 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2378 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2379 | 0x00, 0x06, 0x94, 0x7B, // 0006947B | ||
2380 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2381 | 0x00, 0x07, 0x14, 0x12, // 00071412 | ||
2382 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2383 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
2384 | 0x00, 0x08, 0xA0, 0xC2, // 0008A0C2 | ||
2385 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2386 | 0x00, 0x02, 0x19, 0xF8, // 000219F8 | ||
2387 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2388 | 0x00, 0x06, 0x24, 0x2A, // 0006242A | ||
2389 | 0x00, 0x08, 0xA3, 0xC4, // 0008A3C4 | ||
2390 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2391 | 0x00, 0x02, 0x19, 0xF8, // 000219F8 | ||
2392 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2393 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2394 | 0x00, 0x07, 0x1E, 0x01, // 00071E01 | ||
2395 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
2396 | 0x00, 0x07, 0x04, 0x09, // 00070409 | ||
2397 | 0x00, 0x06, 0x08, 0x69, // 00060869 | ||
2398 | 0x00, 0x06, 0x9C, 0x22, // 00069C22 | ||
2399 | 0x00, 0x06, 0x10, 0x6A, // 0006106A | ||
2400 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
2401 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2402 | 0x00, 0x02, 0x19, 0xA4, // 000219A4 | ||
2403 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2404 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2405 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2406 | 0x00, 0x02, 0x19, 0xA4, // 000219A4 | ||
2407 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2408 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2409 | 0x00, 0x07, 0x55, 0x5C, // 0007555C | ||
2410 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2411 | 0x00, 0x07, 0x5D, 0x04, // 00075D04 | ||
2412 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
2413 | 0x00, 0x07, 0x65, 0x58, // 00076558 | ||
2414 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
2415 | 0x00, 0x07, 0x6D, 0x14, // 00076D14 | ||
2416 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
2417 | 0x00, 0x07, 0x94, 0x0F, // 0007940F | ||
2418 | 0x00, 0x07, 0x9C, 0x0F, // 00079C0F | ||
2419 | 0x00, 0x07, 0xA4, 0x0F, // 0007A40F | ||
2420 | 0x00, 0x07, 0xAC, 0x0F, // 0007AC0F | ||
2421 | 0x00, 0x06, 0x38, 0x3A, // 0006383A | ||
2422 | 0x00, 0x0B, 0x76, 0x7D, // 000B767D | ||
2423 | 0x00, 0x06, 0x10, 0x6C, // 0006106C | ||
2424 | 0x00, 0x0A, 0xFF, 0x5F, // 000AFF5F | ||
2425 | 0x00, 0x06, 0x84, 0x05, // 00068405 | ||
2426 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
2427 | 0x00, 0x09, 0x3F, 0x54, // 00093F54 | ||
2428 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2429 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2430 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2431 | 0x00, 0x06, 0xB4, 0x15, // 0006B415 | ||
2432 | 0x00, 0x07, 0x77, 0xFC, // 000777FC | ||
2433 | 0x00, 0x07, 0x34, 0x00, // 00073400 | ||
2434 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2435 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2436 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2437 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2438 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2439 | 0x00, 0x01, 0x4E, 0x80, // 00014E80 | ||
2440 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2441 | 0x00, 0x09, 0x80, 0x87, // 00098087 | ||
2442 | 0x00, 0x09, 0x88, 0x87, // 00098887 | ||
2443 | 0x00, 0x0C, 0x20, 0x12, // 000C2012 | ||
2444 | 0x00, 0x0E, 0x21, 0x12, // 000E2112 | ||
2445 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2446 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2447 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2448 | 0x00, 0x0C, 0x28, 0x12, // 000C2812 | ||
2449 | 0x00, 0x0E, 0x29, 0x12, // 000E2912 | ||
2450 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2451 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2452 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2453 | 0x00, 0x09, 0x84, 0x48, // 00098448 | ||
2454 | 0x00, 0x09, 0x8D, 0x48, // 00098D48 | ||
2455 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2456 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2457 | 0x00, 0x09, 0xA4, 0x48, // 0009A448 | ||
2458 | 0x00, 0x08, 0x04, 0x40, // 00080440 | ||
2459 | 0x00, 0x09, 0xAD, 0x48, // 0009AD48 | ||
2460 | 0x00, 0x08, 0x0D, 0x40, // 00080D40 | ||
2461 | 0x00, 0x0A, 0xE4, 0xC6, // 000AE4C6 | ||
2462 | 0x00, 0x0A, 0xC0, 0xC6, // 000AC0C6 | ||
2463 | 0x00, 0x0A, 0xED, 0xC6, // 000AEDC6 | ||
2464 | 0x00, 0x0A, 0xC9, 0xC6, // 000AC9C6 | ||
2465 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2466 | 0x00, 0x07, 0xE4, 0x0F, // 0007E40F | ||
2467 | 0x00, 0x07, 0xC4, 0x0F, // 0007C40F | ||
2468 | 0x00, 0x07, 0xEC, 0x0F, // 0007EC0F | ||
2469 | 0x00, 0x07, 0xCC, 0x0F, // 0007CC0F | ||
2470 | 0x00, 0x06, 0x00, 0x69, // 00060069 | ||
2471 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
2472 | 0x00, 0x07, 0x0E, 0x65, // 00070E65 | ||
2473 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
2474 | 0x00, 0x06, 0x1C, 0x64, // 00061C64 | ||
2475 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2476 | 0x00, 0x07, 0x14, 0x39, // 00071439 | ||
2477 | 0x00, 0x06, 0x88, 0x22, // 00068822 | ||
2478 | 0x00, 0x04, 0x0F, 0x00, // 00040F00 | ||
2479 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
2480 | 0x00, 0x02, 0x9E, 0x28, // 00029E28 | ||
2481 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
2482 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2483 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2484 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2485 | 0x00, 0x08, 0x09, 0x41, // 00080941 | ||
2486 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2487 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2488 | 0x00, 0x06, 0x80, 0x69, // 00068069 | ||
2489 | 0x00, 0x07, 0x88, 0x07, // 00078807 | ||
2490 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
2491 | 0x00, 0x0B, 0x76, 0x75, // 000B7675 | ||
2492 | 0x00, 0x07, 0x0E, 0x01, // 00070E01 | ||
2493 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
2494 | 0x00, 0x07, 0x04, 0x04, // 00070404 | ||
2495 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2496 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2497 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2498 | 0x00, 0x06, 0x80, 0x4B, // 0006804B | ||
2499 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
2500 | 0x00, 0x07, 0x05, 0x3D, // 0007053D | ||
2501 | 0x00, 0x06, 0xB4, 0x15, // 0006B415 | ||
2502 | 0x00, 0x06, 0x8C, 0x2A, // 00068C2A | ||
2503 | 0x00, 0x06, 0x94, 0x72, // 00069472 | ||
2504 | 0x00, 0x06, 0x80, 0x4B, // 0006804B | ||
2505 | 0x00, 0x06, 0x00, 0x24, // 00060024 | ||
2506 | 0x00, 0x06, 0x08, 0x78, // 00060878 | ||
2507 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
2508 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2509 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2510 | 0x00, 0x08, 0x89, 0x41, // 00088941 | ||
2511 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2512 | 0x00, 0x06, 0x00, 0x2C, // 0006002C | ||
2513 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
2514 | 0x00, 0x08, 0x80, 0xC1, // 000880C1 | ||
2515 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2516 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2517 | 0x00, 0x06, 0x0C, 0x26, // 00060C26 | ||
2518 | 0x00, 0x06, 0x14, 0x1C, // 0006141C | ||
2519 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2520 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
2521 | 0x00, 0x08, 0x89, 0xC2, // 000889C2 | ||
2522 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2523 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
2524 | 0x00, 0x06, 0x24, 0x24, // 00062424 | ||
2525 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
2526 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2527 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
2528 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
2529 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2530 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
2531 | 0x00, 0x06, 0x24, 0x2E, // 0006242E | ||
2532 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
2533 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2534 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
2535 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
2536 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2537 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
2538 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2539 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
2540 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2541 | 0x00, 0x08, 0x80, 0xC2, // 000880C2 | ||
2542 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
2543 | 0x00, 0x02, 0x1A, 0x86, // 00021A86 | ||
2544 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2545 | 0x00, 0x08, 0x89, 0xC2, // 000889C2 | ||
2546 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
2547 | 0x00, 0x02, 0x1A, 0x86, // 00021A86 | ||
2548 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2549 | 0x00, 0x06, 0x28, 0x3A, // 0006283A | ||
2550 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2551 | 0x00, 0x0A, 0xED, 0x5F, // 000AED5F | ||
2552 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
2553 | 0x00, 0x09, 0x2D, 0x54, // 00092D54 | ||
2554 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2555 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2556 | 0x00, 0x04, 0xB8, 0x0D, // 0004B80D | ||
2557 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2558 | 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C | ||
2559 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2560 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2561 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2562 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2563 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2564 | 0x00, 0x01, 0x0D, 0x10, // 00010D10 | ||
2565 | 0x00, 0x06, 0x20, 0x76, // 00062076 | ||
2566 | 0x00, 0x09, 0x86, 0x8D, // 0009868D | ||
2567 | 0x00, 0x09, 0x8E, 0x8D, // 00098E8D | ||
2568 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2569 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2570 | 0x00, 0x08, 0x08, 0x40, // 00080840 | ||
2571 | 0x00, 0x0C, 0x31, 0x08, // 000C3108 | ||
2572 | 0x00, 0x0E, 0x31, 0x09, // 000E3109 | ||
2573 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2574 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2575 | 0x00, 0x0C, 0x01, 0x08, // 000C0108 | ||
2576 | 0x00, 0x0E, 0x01, 0x09, // 000E0109 | ||
2577 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2578 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2579 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2580 | 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C | ||
2581 | 0x00, 0x09, 0x9F, 0x7F, // 00099F7F | ||
2582 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2583 | 0x00, 0x08, 0x36, 0x42, // 00083642 | ||
2584 | 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C | ||
2585 | 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F | ||
2586 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2587 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
2588 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2589 | 0x00, 0x07, 0xF4, 0x0C, // 0007F40C | ||
2590 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2591 | 0x00, 0x07, 0xC4, 0x0C, // 0007C40C | ||
2592 | 0x00, 0x02, 0x16, 0x52, // 00021652 | ||
2593 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2594 | 0x00, 0x07, 0x0E, 0x56, // 00070E56 | ||
2595 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2596 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2597 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2598 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
2599 | 0x00, 0x06, 0x00, 0x7B, // 0006007B | ||
2600 | 0x00, 0x06, 0x10, 0x74, // 00061074 | ||
2601 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
2602 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2603 | 0x00, 0x07, 0x1C, 0x30, // 00071C30 | ||
2604 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2605 | 0x00, 0x02, 0x9E, 0x18, // 00029E18 | ||
2606 | 0x00, 0x08, 0x88, 0xC3, // 000888C3 | ||
2607 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2608 | 0x00, 0x02, 0x15, 0xDB, // 000215DB | ||
2609 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2610 | 0x00, 0x07, 0x0E, 0x66, // 00070E66 | ||
2611 | 0x00, 0x06, 0x80, 0x7B, // 0006807B | ||
2612 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2613 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2614 | 0x00, 0x06, 0x88, 0x0E, // 0006880E | ||
2615 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2616 | 0x00, 0x06, 0x08, 0x24, // 00060824 | ||
2617 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2618 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2619 | 0x00, 0x06, 0x08, 0x2C, // 0006082C | ||
2620 | 0x00, 0x06, 0x34, 0x26, // 00063426 | ||
2621 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2622 | 0x00, 0x08, 0x86, 0xC1, // 000886C1 | ||
2623 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2624 | 0x00, 0x07, 0x1F, 0x00, // 00071F00 | ||
2625 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2626 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2627 | 0x00, 0x08, 0xA8, 0xC3, // 0008A8C3 | ||
2628 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
2629 | 0x00, 0x08, 0x80, 0xC2, // 000880C2 | ||
2630 | 0x00, 0x06, 0x20, 0x74, // 00062074 | ||
2631 | 0x00, 0x08, 0x28, 0xC3, // 000828C3 | ||
2632 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2633 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2634 | 0x00, 0x06, 0x18, 0x79, // 00061879 | ||
2635 | 0x00, 0x06, 0x14, 0x6E, // 0006146E | ||
2636 | 0x00, 0x08, 0xA4, 0x41, // 0008A441 | ||
2637 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
2638 | 0x00, 0x08, 0xBB, 0x42, // 0008BB42 | ||
2639 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2640 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
2641 | 0x00, 0x08, 0x10, 0x40, // 00081040 | ||
2642 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2643 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2644 | 0x00, 0x06, 0x98, 0x79, // 00069879 | ||
2645 | 0x00, 0x06, 0x94, 0x6E, // 0006946E | ||
2646 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2647 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2648 | 0x00, 0x06, 0x08, 0x24, // 00060824 | ||
2649 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2650 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2651 | 0x00, 0x06, 0x08, 0x2C, // 0006082C | ||
2652 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
2653 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2654 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2655 | 0x00, 0x06, 0x18, 0x71, // 00061871 | ||
2656 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2657 | 0x00, 0x06, 0x24, 0x6B, // 0006246B | ||
2658 | 0x00, 0x08, 0xA9, 0xC0, // 0008A9C0 | ||
2659 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2660 | 0x00, 0x08, 0x2D, 0xC2, // 00082DC2 | ||
2661 | 0x00, 0x08, 0xB4, 0x41, // 0008B441 | ||
2662 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2663 | 0x00, 0x02, 0x1A, 0xA5, // 00021AA5 | ||
2664 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2665 | 0x00, 0x08, 0xB5, 0x42, // 0008B542 | ||
2666 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
2667 | 0x00, 0x02, 0x1A, 0xA5, // 00021AA5 | ||
2668 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2669 | 0x00, 0x06, 0x34, 0x26, // 00063426 | ||
2670 | 0x00, 0x0A, 0xD1, 0x41, // 000AD141 | ||
2671 | 0x00, 0x0A, 0xF6, 0x7E, // 000AF67E | ||
2672 | 0x00, 0x08, 0x12, 0xC6, // 000812C6 | ||
2673 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2674 | 0x00, 0x0A, 0xC2, 0x7E, // 000AC27E | ||
2675 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2676 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2677 | 0x00, 0x06, 0xA4, 0x6B, // 0006A46B | ||
2678 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2679 | 0x00, 0x07, 0x24, 0x25, // 00072425 | ||
2680 | 0x00, 0x08, 0x93, 0xC5, // 000893C5 | ||
2681 | 0x00, 0x06, 0xA8, 0x71, // 0006A871 | ||
2682 | 0x00, 0x08, 0x9C, 0xC2, // 00089CC2 | ||
2683 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2684 | 0x00, 0x02, 0x1B, 0x86, // 00021B86 | ||
2685 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2686 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2687 | 0x00, 0x06, 0x18, 0x52, // 00061852 | ||
2688 | 0x00, 0x07, 0x54, 0x08, // 00075408 | ||
2689 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2690 | 0x00, 0x07, 0x7C, 0x06, // 00077C06 | ||
2691 | 0x00, 0x07, 0x3E, 0xFD, // 00073EFD | ||
2692 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2693 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2694 | 0x00, 0x0A, 0xC3, 0xC2, // 000AC3C2 | ||
2695 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2696 | 0x00, 0x02, 0x1B, 0xA7, // 00021BA7 | ||
2697 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2698 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
2699 | 0x00, 0x06, 0x34, 0x26, // 00063426 | ||
2700 | 0x00, 0x06, 0x3C, 0x1C, // 00063C1C | ||
2701 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2702 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2703 | 0x00, 0x06, 0x18, 0x70, // 00061870 | ||
2704 | 0x00, 0x08, 0x86, 0xC7, // 000886C7 | ||
2705 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2706 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2707 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2708 | 0x00, 0x07, 0x24, 0x25, // 00072425 | ||
2709 | 0x00, 0x06, 0x28, 0x79, // 00062879 | ||
2710 | 0x00, 0x08, 0x93, 0xC0, // 000893C0 | ||
2711 | 0x00, 0x06, 0x80, 0x70, // 00068070 | ||
2712 | 0x00, 0x08, 0x94, 0xC2, // 000894C2 | ||
2713 | 0x00, 0x02, 0x88, 0x38, // 00028838 | ||
2714 | 0x00, 0x08, 0xBD, 0x41, // 0008BD41 | ||
2715 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2716 | 0x00, 0x09, 0xAD, 0x41, // 0009AD41 | ||
2717 | 0x00, 0x07, 0x7C, 0x06, // 00077C06 | ||
2718 | 0x00, 0x07, 0x3E, 0xFD, // 00073EFD | ||
2719 | 0x00, 0x02, 0x1B, 0xB0, // 00021BB0 | ||
2720 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2721 | 0x00, 0x06, 0xA8, 0x79, // 0006A879 | ||
2722 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
2723 | 0x00, 0x06, 0x14, 0x26, // 00061426 | ||
2724 | 0x00, 0x06, 0x20, 0x7D, // 0006207D | ||
2725 | 0x00, 0x06, 0x28, 0x7C, // 0006287C | ||
2726 | 0x00, 0x08, 0x32, 0x60, // 00083260 | ||
2727 | 0x00, 0x02, 0x86, 0x18, // 00028618 | ||
2728 | 0x00, 0x08, 0x2D, 0xC4, // 00082DC4 | ||
2729 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2730 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
2731 | 0x00, 0x0B, 0x64, 0x7F, // 000B647F | ||
2732 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2733 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2734 | 0x00, 0x06, 0xA8, 0x7C, // 0006A87C | ||
2735 | 0x00, 0x06, 0xA0, 0x7D, // 0006A07D | ||
2736 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2737 | 0x00, 0x07, 0x3C, 0x01, // 00073C01 | ||
2738 | 0x00, 0x06, 0x00, 0x7C, // 0006007C | ||
2739 | 0x00, 0x06, 0x30, 0x79, // 00063079 | ||
2740 | 0x00, 0x08, 0xBF, 0xC0, // 0008BFC0 | ||
2741 | 0x00, 0x02, 0x88, 0xC0, // 000288C0 | ||
2742 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
2743 | 0x00, 0x02, 0x9E, 0xB0, // 00029EB0 | ||
2744 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2745 | 0x00, 0x08, 0xBA, 0xC1, // 0008BAC1 | ||
2746 | 0x00, 0x06, 0x34, 0x6E, // 0006346E | ||
2747 | 0x00, 0x08, 0xBF, 0xC6, // 0008BFC6 | ||
2748 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2749 | 0x00, 0x07, 0x1F, 0x00, // 00071F00 | ||
2750 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2751 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2752 | 0x00, 0x08, 0xAF, 0xC3, // 0008AFC3 | ||
2753 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
2754 | 0x00, 0x08, 0xBF, 0xC2, // 0008BFC2 | ||
2755 | 0x00, 0x08, 0x2F, 0xC3, // 00082FC3 | ||
2756 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2757 | 0x00, 0x08, 0x3F, 0xC2, // 00083FC2 | ||
2758 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2759 | 0x00, 0x02, 0x1C, 0x15, // 00021C15 | ||
2760 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2761 | 0x00, 0x07, 0x0E, 0xFD, // 00070EFD | ||
2762 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2763 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2764 | 0x00, 0x06, 0x80, 0x7C, // 0006807C | ||
2765 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
2766 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2767 | 0x00, 0x06, 0x04, 0x64, // 00060464 | ||
2768 | 0x00, 0x06, 0x0C, 0x72, // 00060C72 | ||
2769 | 0x00, 0x06, 0x10, 0x74, // 00061074 | ||
2770 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
2771 | 0x00, 0x02, 0x9F, 0x40, // 00029F40 | ||
2772 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
2773 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2774 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2775 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2776 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2777 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2778 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2779 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2780 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2781 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2782 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2783 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
2784 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2785 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2786 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
2787 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
2788 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2789 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2790 | 0x00, 0x02, 0x81, 0x10, // 00028110 | ||
2791 | 0x00, 0x02, 0x1B, 0x68, // 00021B68 | ||
2792 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2793 | 0x00, 0x07, 0x80, 0x07, // 00078007 | ||
2794 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2795 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2796 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
2797 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
2798 | 0x00, 0x06, 0x14, 0x64, // 00061464 | ||
2799 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2800 | 0x00, 0x0A, 0xC7, 0x81, // 000AC781 | ||
2801 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2802 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2803 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2804 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2805 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2806 | 0x00, 0x06, 0x94, 0x64, // 00069464 | ||
2807 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2808 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
2809 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2810 | 0x00, 0x07, 0x0C, 0x02, // 00070C02 | ||
2811 | 0x00, 0x06, 0x10, 0x7A, // 0006107A | ||
2812 | 0x00, 0x06, 0x20, 0x1C, // 0006201C | ||
2813 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2814 | 0x00, 0x0A, 0xC3, 0x81, // 000AC381 | ||
2815 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2816 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2817 | 0x00, 0x02, 0x81, 0x48, // 00028148 | ||
2818 | 0x00, 0x08, 0x9A, 0x41, // 00089A41 | ||
2819 | 0x00, 0x02, 0x9E, 0x38, // 00029E38 | ||
2820 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2821 | 0x00, 0x06, 0x08, 0x24, // 00060824 | ||
2822 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2823 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2824 | 0x00, 0x06, 0x08, 0x2C, // 0006082C | ||
2825 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2826 | 0x00, 0x0A, 0xE1, 0x7E, // 000AE17E | ||
2827 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2828 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2829 | 0x00, 0x06, 0x90, 0x7A, // 0006907A | ||
2830 | 0x00, 0x06, 0xA0, 0x1C, // 0006A01C | ||
2831 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2832 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
2833 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2834 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
2835 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2836 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
2837 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2838 | 0x00, 0x0A, 0xCF, 0x81, // 000ACF81 | ||
2839 | 0x00, 0x06, 0x18, 0x77, // 00061877 | ||
2840 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2841 | 0x00, 0x0B, 0x09, 0xC3, // 000B09C3 | ||
2842 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2843 | 0x00, 0x02, 0x1B, 0x68, // 00021B68 | ||
2844 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2845 | 0x00, 0x06, 0x24, 0x6B, // 0006246B | ||
2846 | 0x00, 0x0B, 0x1B, 0x41, // 000B1B41 | ||
2847 | 0x00, 0x06, 0x14, 0x65, // 00061465 | ||
2848 | 0x00, 0x06, 0x04, 0x6A, // 0006046A | ||
2849 | 0x00, 0x08, 0x28, 0x41, // 00082841 | ||
2850 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2851 | 0x00, 0x08, 0x82, 0xC0, // 000882C0 | ||
2852 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2853 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2854 | 0x00, 0x02, 0x1B, 0x66, // 00021B66 | ||
2855 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2856 | 0x00, 0x0B, 0x40, 0x41, // 000B4041 | ||
2857 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2858 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2859 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
2860 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2861 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
2862 | 0x00, 0x02, 0x9E, 0x28, // 00029E28 | ||
2863 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
2864 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
2865 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
2866 | 0x00, 0x04, 0x3F, 0x08, // 00043F08 | ||
2867 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
2868 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
2869 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
2870 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
2871 | 0x00, 0x06, 0x98, 0x77, // 00069877 | ||
2872 | 0x00, 0x06, 0x84, 0x6A, // 0006846A | ||
2873 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2874 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
2875 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2876 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2877 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2878 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2879 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2880 | 0x00, 0x06, 0xC0, 0x6D, // 0006C06D | ||
2881 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2882 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
2883 | 0x00, 0x07, 0x6C, 0x06, // 00076C06 | ||
2884 | 0x00, 0x07, 0x2F, 0x78, // 00072F78 | ||
2885 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2886 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2887 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2888 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2889 | 0x00, 0x02, 0x19, 0x5B, // 0002195B | ||
2890 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2891 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2892 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2893 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2894 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2895 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2896 | 0x00, 0x00, 0xC1, 0x80, // 0000C180 | ||
2897 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2898 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2899 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2900 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2901 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2902 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2903 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
2904 | 0x00, 0x07, 0x6C, 0x01, // 00076C01 | ||
2905 | 0x00, 0x07, 0x2E, 0x00, // 00072E00 | ||
2906 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
2907 | 0x00, 0x07, 0x3E, 0x68, // 00073E68 | ||
2908 | 0x00, 0x0A, 0xF1, 0x7E, // 000AF17E | ||
2909 | 0x00, 0x09, 0x00, 0xC6, // 000900C6 | ||
2910 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
2911 | 0x00, 0x08, 0x00, 0xC5, // 000800C5 | ||
2912 | 0x00, 0x06, 0x2C, 0x64, // 00062C64 | ||
2913 | 0x00, 0x0A, 0x00, 0x7F, // 000A007F | ||
2914 | 0x00, 0x06, 0x20, 0x7A, // 0006207A | ||
2915 | 0x00, 0x06, 0xB8, 0x22, // 0006B822 | ||
2916 | 0x00, 0x04, 0x3F, 0x00, // 00043F00 | ||
2917 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2918 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2919 | 0x00, 0x08, 0x3F, 0xC0, // 00083FC0 | ||
2920 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
2921 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2922 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2923 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2924 | 0x00, 0x06, 0x2C, 0x7F, // 00062C7F | ||
2925 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2926 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2927 | 0x00, 0x0B, 0x6D, 0x6F, // 000B6D6F | ||
2928 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
2929 | 0x00, 0x02, 0x1A, 0xAD, // 00021AAD | ||
2930 | 0x00, 0x06, 0xB0, 0x1C, // 0006B01C | ||
2931 | 0x00, 0x0A, 0xFF, 0x7E, // 000AFF7E | ||
2932 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2933 | 0x00, 0x06, 0x84, 0x72, // 00068472 | ||
2934 | 0x00, 0x06, 0xAC, 0x7F, // 0006AC7F | ||
2935 | 0x00, 0x07, 0xB8, 0x07, // 0007B807 | ||
2936 | 0x00, 0x06, 0x10, 0x2C, // 0006102C | ||
2937 | 0x00, 0x0B, 0x64, 0x6D, // 000B646D | ||
2938 | 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E | ||
2939 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
2940 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2941 | 0x00, 0x02, 0x81, 0x20, // 00028120 | ||
2942 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
2943 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
2944 | 0x00, 0x06, 0x9C, 0x7B, // 00069C7B | ||
2945 | 0x00, 0x0B, 0x64, 0x6E, // 000B646E | ||
2946 | 0x00, 0x06, 0x34, 0x6D, // 0006346D | ||
2947 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2948 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2949 | 0x00, 0x06, 0xA4, 0x7F, // 0006A47F | ||
2950 | 0x00, 0x06, 0xB4, 0x0F, // 0006B40F | ||
2951 | 0x00, 0x06, 0xB4, 0x6C, // 0006B46C | ||
2952 | 0x00, 0x0B, 0x76, 0x7F, // 000B767F | ||
2953 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2954 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2955 | 0x00, 0x08, 0x3F, 0x40, // 00083F40 | ||
2956 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2957 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2958 | 0x00, 0x06, 0xB4, 0x6B, // 0006B46B | ||
2959 | 0x00, 0x04, 0xB0, 0x0D, // 0004B00D | ||
2960 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2961 | 0x00, 0x09, 0xB6, 0x7C, // 0009B67C | ||
2962 | 0x00, 0x01, 0x05, 0x10, // 00010510 | ||
2963 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
2964 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2965 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
2966 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2967 | 0x00, 0x09, 0xB6, 0x7F, // 0009B67F | ||
2968 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2969 | 0x00, 0x08, 0x3F, 0x42, // 00083F42 | ||
2970 | 0x00, 0x07, 0x84, 0x0C, // 0007840C | ||
2971 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2972 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
2973 | 0x00, 0x07, 0xBC, 0x0C, // 0007BC0C | ||
2974 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2975 | 0x00, 0x07, 0x24, 0x30, // 00072430 | ||
2976 | 0x00, 0x08, 0x2D, 0x41, // 00082D41 | ||
2977 | 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5 | ||
2978 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2979 | 0x00, 0x02, 0x1B, 0xBE, // 00021BBE | ||
2980 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2981 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2982 | 0x00, 0x07, 0x3F, 0x18, // 00073F18 | ||
2983 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2984 | 0x00, 0x06, 0x10, 0x24, // 00061024 | ||
2985 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2986 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2987 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
2988 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2989 | 0x00, 0x07, 0x3C, 0x00, // 00073C00 | ||
2990 | 0x00, 0x06, 0x10, 0x2C, // 0006102C | ||
2991 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2992 | 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E | ||
2993 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2994 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2995 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
2996 | 0x00, 0x06, 0x04, 0x64, // 00060464 | ||
2997 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2998 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2999 | 0x00, 0x00, 0xDE, 0x87, // 0000DE87 | ||
3000 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
3001 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
3002 | 0x00, 0x06, 0x9C, 0x62, // 00069C62 | ||
3003 | 0x00, 0x06, 0x9C, 0x6E, // 00069C6E | ||
3004 | 0x00, 0x06, 0x9C, 0x63, // 00069C63 | ||
3005 | 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D | ||
3006 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3007 | 0x00, 0x06, 0x04, 0x73, // 00060473 | ||
3008 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
3009 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
3010 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
3011 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
3012 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
3013 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
3014 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
3015 | 0x00, 0x08, 0x12, 0x42, // 00081242 | ||
3016 | 0x00, 0x09, 0x1B, 0xC2, // 00091BC2 | ||
3017 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
3018 | 0x00, 0x08, 0x92, 0xC3, // 000892C3 | ||
3019 | 0x00, 0x06, 0x84, 0x73, // 00068473 | ||
3020 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
3021 | 0x00, 0x07, 0x27, 0x00, // 00072700 | ||
3022 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
3023 | 0x00, 0x07, 0x3C, 0x00, // 00073C00 | ||
3024 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
3025 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
3026 | 0x00, 0x06, 0xA4, 0x05, // 0006A405 | ||
3027 | 0x00, 0x01, 0x41, 0x80, // 00014180 | ||
3028 | 0x00, 0x06, 0xB8, 0x22, // 0006B822 | ||
3029 | 0x00, 0x07, 0x98, 0x0F, // 0007980F | ||
3030 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3031 | 0x00, 0x07, 0x98, 0x0F, // 0007980F | ||
3032 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
3033 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
3034 | 0x00, 0x06, 0x9C, 0x62, // 00069C62 | ||
3035 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3036 | 0x00, 0x06, 0x9C, 0x63, // 00069C63 | ||
3037 | 0x00, 0x06, 0x9C, 0x6E, // 00069C6E | ||
3038 | 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D | ||
3039 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
3040 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
3041 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3042 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3043 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3044 | 0x00, 0x06, 0x84, 0x62, // 00068462 | ||
3045 | 0x00, 0x06, 0x84, 0x63, // 00068463 | ||
3046 | 0x00, 0x06, 0x04, 0x62, // 00060462 | ||
3047 | 0x00, 0x06, 0x1C, 0x63, // 00061C63 | ||
3048 | 0x00, 0x0A, 0x0F, 0x41, // 000A0F41 | ||
3049 | 0x00, 0x08, 0x97, 0xC0, // 000897C0 | ||
3050 | 0x00, 0x08, 0x1B, 0xC2, // 00081BC2 | ||
3051 | 0x00, 0x0A, 0x12, 0x47, // 000A1247 | ||
3052 | 0x00, 0x07, 0x65, 0x00, // 00076500 | ||
3053 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
3054 | 0x00, 0x07, 0x6D, 0x00, // 00076D00 | ||
3055 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
3056 | 0x00, 0x07, 0x75, 0x00, // 00077500 | ||
3057 | 0x00, 0x07, 0x34, 0x00, // 00073400 | ||
3058 | 0x00, 0x0C, 0x12, 0x25, // 000C1225 | ||
3059 | 0x00, 0x0E, 0x11, 0x24, // 000E1124 | ||
3060 | 0x00, 0x0E, 0x13, 0x26, // 000E1326 | ||
3061 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3062 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3063 | 0x00, 0x06, 0x04, 0x6C, // 0006046C | ||
3064 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
3065 | 0x00, 0x09, 0x12, 0xC0, // 000912C0 | ||
3066 | 0x00, 0x06, 0xBC, 0x62, // 0006BC62 | ||
3067 | 0x00, 0x06, 0x9C, 0x63, // 00069C63 | ||
3068 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3069 | 0x00, 0x06, 0x94, 0x6C, // 0006946C | ||
3070 | 0x00, 0x06, 0x94, 0x0F, // 0006940F | ||
3071 | 0x00, 0x03, 0x33, 0x33, // 00033333 | ||
3072 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3073 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3074 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3075 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3076 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3077 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3078 | }; | ||
3079 | |||
3080 | struct i2c_block { | ||
3081 | const unsigned char *data; | ||
3082 | unsigned len; | ||
3083 | }; | ||
3084 | |||
3085 | static struct i2c_block maspcm[] = { | ||
3086 | { maspcm_array1, sizeof(maspcm_array1) }, | ||
3087 | { maspcm_array2, sizeof(maspcm_array2) }, | ||
3088 | { maspcm_array3, sizeof(maspcm_array3) }, | ||
3089 | { maspcm_array4, sizeof(maspcm_array4) }, | ||
3090 | { maspcm_array5, sizeof(maspcm_array5) }, | ||
3091 | { maspcm_array6, sizeof(maspcm_array6) }, | ||
3092 | { maspcm_array7, sizeof(maspcm_array7) }, | ||
3093 | { maspcm_array8, sizeof(maspcm_array8) }, | ||
3094 | { maspcm_array9, sizeof(maspcm_array9) }, | ||
3095 | { maspcm_array10, sizeof(maspcm_array10) }, | ||
3096 | }; | ||
3097 | |||
3098 | /************ End of MAS pcm codec ************/ | ||
3099 | |||
3100 | #define WAVPLAY_QUIT BUTTON_OFF | ||
3101 | |||
3102 | #define PCM_MAIN_IO_CONTROL 0x0661 | ||
3103 | #define PCM_IF_STATUS_CONTROL 0x0662 | ||
3104 | #define PCM_OFREQ_CONTROL 0x0663 | ||
3105 | #define PCM_OUTPUT_CLOCK_CONF 0x0664 | ||
3106 | #define PCM_FRAME_COUNTER 0x0665 | ||
3107 | #define PCM_APP_RUNNING 0x0666 | ||
3108 | #define PCM_SAMPLE_RATE_STATUS 0x0667 | ||
3109 | #define PCM_BUFFER_ERROR_COUNTER 0x0668 | ||
3110 | #define PCM_SOFT_MUTE 0x0669 | ||
3111 | #define PCM_SPDIF_CHANNEL_STATUS 0x066a | ||
3112 | #define PCM_SAMPLE_RATE 0x066b | ||
3113 | #define PCM_VOL_OUT_LL 0x066c | ||
3114 | #define PCM_VOL_OUT_RL 0x066d | ||
3115 | #define PCM_VOL_OUT_LR 0x066e | ||
3116 | #define PCM_VOL_OUT_RR 0x066f | ||
3117 | #define PCM_VOL_IN_LL 0x0670 | ||
3118 | #define PCM_VOL_IN_RL 0x0671 | ||
3119 | #define PCM_VOL_IN_LR 0x0672 | ||
3120 | #define PCM_VOL_IN_RR 0x0673 | ||
3121 | |||
3122 | #define IRQ3 (*((volatile unsigned long*)0x0900010C)) | ||
3123 | #define IRQ6 (*((volatile unsigned long*)0x09000118)) | ||
3124 | #define DEI3 (*((volatile unsigned long*)0x09000138)) | ||
3125 | |||
3126 | #define PLAY_OK 0 | ||
3127 | #define PLAY_ERROR -1 | ||
3128 | #define PLAY_GOT_USB 1 | ||
3129 | |||
3130 | #define LOW_WATER_CHUNKSIZE (256*1024) | ||
3131 | |||
3132 | /* declarations */ | ||
3133 | |||
3134 | void start_demand_isr(void) __attribute__((interrupt_handler)); | ||
3135 | void stop_demand_isr(void) __attribute__((interrupt_handler)); | ||
3136 | void dma_end_isr(void) __attribute__((interrupt_handler)); | ||
3137 | |||
3138 | /* variables */ | ||
3139 | |||
3140 | static unsigned char *aud_buf; | ||
3141 | static ssize_t aud_size; | ||
3142 | static unsigned char *plug_buf; | ||
3143 | |||
3144 | static void (*pcm_callback)(unsigned char**, int*) = NULL; | ||
3145 | static bool playing = false; | ||
3146 | static bool filling; | ||
3147 | static int last_dma_chunksize; | ||
3148 | static int aud_read = 0; | ||
3149 | static int aud_write = 0; | ||
3150 | static int low_water = (256*1024); | ||
3151 | |||
3152 | /** i2c, MAS configuration **/ | ||
3153 | |||
3154 | void i2c_random_write(int addr, int cmd, const unsigned char* data, int size) | ||
3155 | { | ||
3156 | plug_buf[0] = cmd; | ||
3157 | rb->memcpy(plug_buf+1, data, size); | ||
3158 | |||
3159 | rb->i2c_begin(); | ||
3160 | rb->i2c_write(addr, plug_buf, size+1); | ||
3161 | rb->i2c_end(); | ||
3162 | } | ||
3163 | |||
3164 | void mas_freeze(void) | ||
3165 | { | ||
3166 | static const unsigned char freeze[] = { 0x00, 0x00 }; | ||
3167 | |||
3168 | /* Freeze DSP */ | ||
3169 | i2c_random_write(MAS_ADR, MAS_DATA_WRITE, freeze, sizeof(freeze)); | ||
3170 | /* mas_run(0); in core implementation */ | ||
3171 | |||
3172 | /* stop all internal transfers */ | ||
3173 | rb->mas_writereg(0x3b, 0x00318); /* stopdma 1 */ | ||
3174 | rb->mas_writereg(0x43, 0x00300); /* stopdma 2 */ | ||
3175 | rb->mas_writereg(0x4b, 0); /* stopdma 3 */ | ||
3176 | rb->mas_writereg(0x53, 0x00318); /* stopdma 4 */ | ||
3177 | rb->mas_writereg(0x6b, 0); /* stopdma 5 */ | ||
3178 | rb->mas_writereg(0xbb, 0x00318); /* stopdma 6 */ | ||
3179 | rb->mas_writereg(0xc3, 0x00300); /* stopdma 7 */ | ||
3180 | rb->mas_writereg(0x06, 0); /* stopdma 8 */ | ||
3181 | } | ||
3182 | |||
3183 | void mas_download_pcm(void) | ||
3184 | { | ||
3185 | static const unsigned char runi2s[] = { 0x10, 0x00 }; | ||
3186 | unsigned i; | ||
3187 | |||
3188 | mas_freeze(); | ||
3189 | |||
3190 | // Download program to MAS memory | ||
3191 | for ( i = 0; i < (sizeof(maspcm)/sizeof(struct i2c_block)); i++ ) | ||
3192 | i2c_random_write(MAS_ADR, MAS_DATA_WRITE, maspcm[i].data, maspcm[i].len); | ||
3193 | |||
3194 | rb->mas_writereg(0x6b, 0xc0000); /* Reconfigure data to program memory */ | ||
3195 | |||
3196 | /* Start execution at D0:1000 */ | ||
3197 | i2c_random_write(MAS_ADR, MAS_DATA_WRITE, runi2s, sizeof(runi2s)); | ||
3198 | /* mas_run(0x1000); in core implementation */ | ||
3199 | } | ||
3200 | |||
3201 | void mas_restore(void) | ||
3202 | { | ||
3203 | static const unsigned char resetdsp[] = { 0x88, 0x00 }; | ||
3204 | static const unsigned char initdsp[] = { 0x8c, 0x00 }; | ||
3205 | unsigned long val; | ||
3206 | |||
3207 | i2c_random_write(MAS_ADR, MAS_CONTROL, resetdsp, sizeof(resetdsp)); | ||
3208 | /* mas_direct_config_write(MAS_CONTROL, 0x8d00); in core implementation */ | ||
3209 | rb->sleep(1); | ||
3210 | i2c_random_write(MAS_ADR, MAS_CONTROL, initdsp, sizeof(initdsp)); | ||
3211 | /* mas_direct_config_write(MAS_CONTROL, 0x8c00); in core implementation */ | ||
3212 | |||
3213 | /* Stop the current application */ | ||
3214 | val = 0; | ||
3215 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1); | ||
3216 | do | ||
3217 | rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1); | ||
3218 | while(val); | ||
3219 | |||
3220 | #ifdef HAVE_SPDIF_OUT | ||
3221 | val = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */ | ||
3222 | #else | ||
3223 | val = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */ | ||
3224 | #endif | ||
3225 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_INTERFACE_CONTROL, &val, 1); | ||
3226 | |||
3227 | val = 0x0025; /* Set Demand mode and validate all settings */ | ||
3228 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val, 1); | ||
3229 | |||
3230 | val = 0x000c; /* Start the Layer2/3 decoder applications */ | ||
3231 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1); | ||
3232 | do | ||
3233 | rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1); | ||
3234 | while((val & 0x000c) != 0x000c); | ||
3235 | } | ||
3236 | |||
3237 | void pcm_channel_config(int channel_config, int stereo_width) | ||
3238 | { | ||
3239 | /* default values: stereo */ | ||
3240 | unsigned long val_ll = 0x80001; | ||
3241 | unsigned long val_lr = 0; | ||
3242 | unsigned long val_rl = 0; | ||
3243 | unsigned long val_rr = 0x80001; | ||
3244 | |||
3245 | switch(channel_config) | ||
3246 | { | ||
3247 | /* Note: cases are in different order that in firmware/sound.c | ||
3248 | * to work around a gcc bug (jumptable creation)! */ | ||
3249 | |||
3250 | /* case SOUND_CHAN_STEREO unnecessary */ | ||
3251 | |||
3252 | case SOUND_CHAN_MONO: | ||
3253 | val_ll = 0xc0001; | ||
3254 | val_lr = 0xc0001; | ||
3255 | val_rl = 0xc0001; | ||
3256 | val_rr = 0xc0001; | ||
3257 | break; | ||
3258 | |||
3259 | case SOUND_CHAN_MONO_LEFT: | ||
3260 | val_ll = 0x80001; | ||
3261 | val_lr = 0x80001; | ||
3262 | val_rl = 0; | ||
3263 | val_rr = 0; | ||
3264 | break; | ||
3265 | |||
3266 | case SOUND_CHAN_MONO_RIGHT: | ||
3267 | val_ll = 0; | ||
3268 | val_lr = 0; | ||
3269 | val_rl = 0x80001; | ||
3270 | val_rr = 0x80001; | ||
3271 | break; | ||
3272 | |||
3273 | case SOUND_CHAN_KARAOKE: | ||
3274 | val_ll = 0xc0001; | ||
3275 | val_lr = 0x3ffff; | ||
3276 | val_rl = 0x3ffff; | ||
3277 | val_rr = 0xc0001; | ||
3278 | break; | ||
3279 | |||
3280 | case SOUND_CHAN_CUSTOM: | ||
3281 | { | ||
3282 | /* fixed point variables (matching MAS internal format) | ||
3283 | integer part: upper 13 bits (inlcuding sign) | ||
3284 | fractional part: lower 19 bits */ | ||
3285 | long fp_width, fp_straight, fp_cross; | ||
3286 | |||
3287 | fp_width = (stereo_width * 0x7ffff) / 100; | ||
3288 | if (stereo_width <= 100) | ||
3289 | { | ||
3290 | fp_straight = - (0x7ffff + fp_width) / 2; | ||
3291 | fp_cross = fp_straight + fp_width; | ||
3292 | } | ||
3293 | else | ||
3294 | { | ||
3295 | /* straight = - (1 + width) / (2 * width) */ | ||
3296 | fp_straight = - (((0x7ffff + fp_width) / (fp_width >> 9)) << 9); | ||
3297 | fp_cross = 0x7ffff + fp_straight; | ||
3298 | } | ||
3299 | val_ll = val_rr = fp_straight & 0xfffff; | ||
3300 | val_lr = val_rl = fp_cross & 0xfffff; | ||
3301 | } | ||
3302 | break; | ||
3303 | |||
3304 | } | ||
3305 | |||
3306 | rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_LL, &val_ll, 1); /* LL */ | ||
3307 | rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_LR, &val_lr, 1); /* LR */ | ||
3308 | rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_RL, &val_rl, 1); /* RL */ | ||
3309 | rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_RR, &val_rr, 1); /* RR */ | ||
3310 | } | ||
3311 | |||
3312 | /** Basic playback system **/ | ||
3313 | |||
3314 | void start_demand_isr(void) | ||
3315 | { | ||
3316 | ICR |= 0x0010; /* IRQ3 edge sensitive */ | ||
3317 | or_b(0x80, &SCR0); | ||
3318 | } | ||
3319 | |||
3320 | void stop_demand_isr(void) | ||
3321 | { | ||
3322 | and_b(~0x80, &SCR0); | ||
3323 | } | ||
3324 | |||
3325 | void dma_end_isr(void) | ||
3326 | { | ||
3327 | unsigned char* start; | ||
3328 | int size = 0; | ||
3329 | |||
3330 | if (pcm_callback) | ||
3331 | pcm_callback(&start, &size); | ||
3332 | |||
3333 | if (size > 0) | ||
3334 | { | ||
3335 | DTCR3 = size; | ||
3336 | SAR3 = (unsigned int) start; | ||
3337 | } | ||
3338 | else | ||
3339 | { | ||
3340 | CHCR3 &= ~0x0001; /* Disable the DMA interrupt */ | ||
3341 | playing = false; | ||
3342 | } | ||
3343 | CHCR3 &= ~0x0002; /* Clear DMA interrupt */ | ||
3344 | } | ||
3345 | |||
3346 | void demand_irq_enable(bool on) | ||
3347 | { | ||
3348 | int oldlevel = disable_irq_save(); | ||
3349 | |||
3350 | if(on) | ||
3351 | { | ||
3352 | IPRA = (IPRA & 0xfff0) | 0x000b; | ||
3353 | ICR &= ~0x0010; /* IRQ3 level sensitive */ | ||
3354 | } | ||
3355 | else | ||
3356 | { | ||
3357 | IPRA &= 0xfff0; | ||
3358 | } | ||
3359 | |||
3360 | restore_irq(oldlevel); | ||
3361 | } | ||
3362 | |||
3363 | static inline int available(void) | ||
3364 | { | ||
3365 | int space = aud_write - aud_read; | ||
3366 | if (space < 0) | ||
3367 | space += aud_size; | ||
3368 | |||
3369 | return space; | ||
3370 | } | ||
3371 | |||
3372 | void pcm_get_more(unsigned char** start, int* size) | ||
3373 | { | ||
3374 | int advance; | ||
3375 | |||
3376 | aud_read += last_dma_chunksize; | ||
3377 | if (aud_read >= aud_size) | ||
3378 | aud_read = 0; | ||
3379 | |||
3380 | advance = MIN(available(), aud_size - aud_read); | ||
3381 | advance = MIN(0x4000, advance); | ||
3382 | |||
3383 | *start = aud_buf + aud_read; | ||
3384 | *size = advance; | ||
3385 | |||
3386 | last_dma_chunksize = advance; | ||
3387 | } | ||
3388 | |||
3389 | void pcm_start(void) | ||
3390 | { | ||
3391 | int advance; | ||
3392 | |||
3393 | advance = MIN(available(), aud_size - aud_read); | ||
3394 | advance = MIN(0x4000, advance); | ||
3395 | |||
3396 | if (!advance) | ||
3397 | return; | ||
3398 | |||
3399 | pcm_callback = pcm_get_more; | ||
3400 | |||
3401 | /* init DMA */ | ||
3402 | DAR3 = 0x5FFFEC3; | ||
3403 | CHCR3 &= ~0x0002; /* Clear interrupt */ | ||
3404 | CHCR3 = 0x1504; /* Single address destination, TXI0, IE=1 */ | ||
3405 | DMAOR = 0x0001; /* Enable DMA */ | ||
3406 | |||
3407 | SAR3 = (unsigned int)(aud_buf + aud_read); | ||
3408 | DTCR3 = advance; | ||
3409 | last_dma_chunksize = advance; | ||
3410 | |||
3411 | playing = true; | ||
3412 | demand_irq_enable(true); | ||
3413 | CHCR3 |= 0x0001; /* Enable DMA IRQ */ | ||
3414 | } | ||
3415 | |||
3416 | void hijack_interrupts(bool on) | ||
3417 | { | ||
3418 | static bool taken = false; | ||
3419 | static unsigned long orig_DEI3, orig_IRQ3, orig_IRQ6; | ||
3420 | |||
3421 | if (on && !taken) | ||
3422 | { | ||
3423 | orig_IRQ3 = IRQ3; | ||
3424 | IRQ3 = (unsigned long)start_demand_isr; | ||
3425 | orig_IRQ6 = IRQ6; | ||
3426 | IRQ6 = (unsigned long)stop_demand_isr; | ||
3427 | orig_DEI3 = DEI3; | ||
3428 | DEI3 = (unsigned long)dma_end_isr; | ||
3429 | } | ||
3430 | else if (!on && taken) | ||
3431 | { | ||
3432 | IRQ3 = orig_IRQ3; | ||
3433 | IRQ6 = orig_IRQ6; | ||
3434 | DEI3 = orig_DEI3; | ||
3435 | } | ||
3436 | taken = on; | ||
3437 | } | ||
3438 | |||
3439 | void cleanup(void *fd) | ||
3440 | { | ||
3441 | demand_irq_enable(false); | ||
3442 | hijack_interrupts(false); | ||
3443 | |||
3444 | mas_restore(); | ||
3445 | rb->sound_set(SOUND_CHANNELS, rb->global_settings->channel_config); | ||
3446 | rb->sound_set(SOUND_STEREO_WIDTH, rb->global_settings->stereo_width); | ||
3447 | |||
3448 | /* reconfigure SCI */ | ||
3449 | while (!(SSR0 & SCI_TEND)); /* wait for end of transfer */ | ||
3450 | BRR0 = 2; /* ~1 MBit/s */ | ||
3451 | |||
3452 | rb->close(*(int*)fd); | ||
3453 | } | ||
3454 | |||
3455 | int play_file(char* filename) | ||
3456 | { | ||
3457 | int button; | ||
3458 | int fd; | ||
3459 | int wanted, got; | ||
3460 | unsigned format, channels, samplerate, samplebits, bytes, time; | ||
3461 | unsigned rate = 0; | ||
3462 | unsigned long mas; | ||
3463 | |||
3464 | fd = rb->open(filename, O_RDONLY); | ||
3465 | if (fd < 0) | ||
3466 | { | ||
3467 | rb->splash(2*HZ, "Couldn't open WAV file"); | ||
3468 | return PLAY_ERROR; | ||
3469 | } | ||
3470 | |||
3471 | /* Process WAV header */ | ||
3472 | wanted = 44; | ||
3473 | got = rb->read(fd, aud_buf, wanted); /* wav header */ | ||
3474 | if (got < 0) | ||
3475 | { | ||
3476 | rb->splash(2*HZ, "Read error"); | ||
3477 | rb->close(fd); | ||
3478 | return PLAY_ERROR; | ||
3479 | } | ||
3480 | else if (got < wanted) | ||
3481 | { | ||
3482 | rb->splash(2*HZ, "File too short"); | ||
3483 | rb->close(fd); | ||
3484 | return PLAY_ERROR; | ||
3485 | } | ||
3486 | |||
3487 | if (rb->memcmp(aud_buf, "RIFF", 4) | ||
3488 | || rb->memcmp(aud_buf + 8, "WAVE", 4) | ||
3489 | || rb->memcmp(aud_buf + 12, "fmt ", 4) | ||
3490 | || rb->memcmp(aud_buf + 36, "data", 4)) | ||
3491 | { | ||
3492 | rb->splash(2*HZ, "No canonical WAV file"); | ||
3493 | rb->close(fd); | ||
3494 | return PLAY_ERROR; | ||
3495 | } | ||
3496 | |||
3497 | format = letoh16(*(uint16_t *)(aud_buf + 20)); | ||
3498 | if (format != 1) | ||
3499 | { | ||
3500 | rb->splashf(2*HZ, "Unsupported format: %d", format); | ||
3501 | rb->close(fd); | ||
3502 | return PLAY_ERROR; | ||
3503 | } | ||
3504 | |||
3505 | channels = letoh16(*(uint16_t *)(aud_buf + 22)); | ||
3506 | if (channels > 2) | ||
3507 | { | ||
3508 | rb->splashf(2*HZ, "Too many channels: %d", channels); | ||
3509 | rb->close(fd); | ||
3510 | return PLAY_ERROR; | ||
3511 | } | ||
3512 | |||
3513 | samplebits = letoh16(*(uint16_t *)(aud_buf + 34)); | ||
3514 | if (samplebits != 16) | ||
3515 | { | ||
3516 | rb->splashf(2*HZ, "Unsupported sample depth: %dbit", samplebits); | ||
3517 | rb->close(fd); | ||
3518 | return PLAY_ERROR; | ||
3519 | } | ||
3520 | |||
3521 | samplerate = letoh32(*(uint32_t *)(aud_buf + 24)); | ||
3522 | switch (samplerate) | ||
3523 | { | ||
3524 | case 8000: rate = 0; break; | ||
3525 | case 11025: rate = 1; break; | ||
3526 | case 12000: rate = 2; break; | ||
3527 | case 16000: rate = 4; break; | ||
3528 | case 22050: rate = 5; break; | ||
3529 | case 24000: rate = 6; break; | ||
3530 | case 32000: rate = 8; break; | ||
3531 | case 44100: rate = 9; break; | ||
3532 | case 48000: rate = 10; break; | ||
3533 | default: | ||
3534 | rb->splashf(2*HZ, "Unsupported samplerate: %dHz", samplerate); | ||
3535 | rb->close(fd); | ||
3536 | return PLAY_ERROR; | ||
3537 | } | ||
3538 | bytes = letoh32(*(uint32_t *)(aud_buf + 40)); | ||
3539 | time = bytes / (samplerate * 2 * channels); | ||
3540 | |||
3541 | rb->lcd_puts(0, 0, "Playing WAV file"); | ||
3542 | rb->lcd_putsf(0, 1, "%dHz %s", samplerate, | ||
3543 | (channels == 1) ? "mono" : "stereo"); | ||
3544 | rb->lcd_putsf(0, 2, "Length: %d:%02d", time / 60, time % 60); | ||
3545 | rb->lcd_update(); | ||
3546 | |||
3547 | rb->sound_set_pitch(PITCH_SPEED_100); /* reset pitch */ | ||
3548 | mas_download_pcm(); /* Download PCM codec */ | ||
3549 | |||
3550 | /* Configure PCM codec */ | ||
3551 | pcm_channel_config(rb->global_settings->channel_config, | ||
3552 | rb->global_settings->stereo_width); | ||
3553 | #ifdef HAVE_SPDIF_OUT | ||
3554 | mas = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */ | ||
3555 | #else | ||
3556 | mas = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */ | ||
3557 | #endif | ||
3558 | rb->mas_writemem(MAS_BANK_D0, PCM_IF_STATUS_CONTROL, &mas, 1); | ||
3559 | |||
3560 | mas = 0x0060 /* no framing, little endian */ | ||
3561 | | ((channels == 1) ? 0x10 : 0) /* mono or stereo */ | ||
3562 | | rate; /* bitrate */ | ||
3563 | rb->mas_writemem(MAS_BANK_D0, PCM_SAMPLE_RATE, &mas, 1); | ||
3564 | |||
3565 | mas = 0x1025; /* playback, SIBC clock invert, validate */ | ||
3566 | rb->mas_writemem(MAS_BANK_D0, PCM_MAIN_IO_CONTROL, &mas, 1); | ||
3567 | |||
3568 | /* configure SCI */ | ||
3569 | while (!(SSR0 & SCI_TEND)); /* wait for end of transfer */ | ||
3570 | BRR0 = 0; /* maximum speed, ~3 MBit/s */ | ||
3571 | |||
3572 | #if !(CONFIG_STORAGE & STORAGE_MMC) | ||
3573 | low_water = 5 /* seconds */ | ||
3574 | * 2 /* bytes per sample */ | ||
3575 | * channels | ||
3576 | * samplerate; | ||
3577 | #endif | ||
3578 | |||
3579 | hijack_interrupts(true); | ||
3580 | filling = true; | ||
3581 | |||
3582 | /* Playback loop */ | ||
3583 | while (filling || playing) | ||
3584 | { | ||
3585 | if (filling) | ||
3586 | { | ||
3587 | int free_space = aud_read - aud_write; | ||
3588 | |||
3589 | if (free_space <= 0) | ||
3590 | free_space += aud_size; | ||
3591 | free_space -= 2; | ||
3592 | |||
3593 | if (free_space <= 0) | ||
3594 | { | ||
3595 | filling = false; | ||
3596 | rb->storage_sleep(); | ||
3597 | } | ||
3598 | else | ||
3599 | { | ||
3600 | wanted = MIN(free_space, aud_size - aud_write); | ||
3601 | #if (CONFIG_STORAGE & STORAGE_MMC) | ||
3602 | wanted = MIN(wanted, 256*1024); | ||
3603 | #elif MEMORYSIZE == 8 | ||
3604 | wanted = MIN(wanted, 1024*1024); | ||
3605 | #endif | ||
3606 | if (available() < low_water) | ||
3607 | wanted = MIN(wanted, LOW_WATER_CHUNKSIZE); | ||
3608 | |||
3609 | got = rb->read(fd, aud_buf + aud_write, wanted); | ||
3610 | |||
3611 | if (got > 0) | ||
3612 | { | ||
3613 | rb->bitswap(aud_buf + aud_write, got); | ||
3614 | |||
3615 | aud_write += got; | ||
3616 | if (aud_write >= aud_size) | ||
3617 | aud_write = 0; | ||
3618 | } | ||
3619 | else /* end of file */ | ||
3620 | { | ||
3621 | filling = false; | ||
3622 | } | ||
3623 | |||
3624 | if (((available() >= low_water) || !filling) && !playing) | ||
3625 | pcm_start(); | ||
3626 | } | ||
3627 | button = rb->button_get(false); | ||
3628 | } | ||
3629 | else | ||
3630 | { | ||
3631 | button = rb->button_get_w_tmo(HZ/2); | ||
3632 | if ((available() < low_water) && (got > 0)) | ||
3633 | filling = true; | ||
3634 | } | ||
3635 | if (button == WAVPLAY_QUIT) | ||
3636 | break; | ||
3637 | else if (rb->default_event_handler_ex(button, cleanup, &fd) == SYS_USB_CONNECTED) | ||
3638 | return PLAY_GOT_USB; | ||
3639 | |||
3640 | |||
3641 | } | ||
3642 | cleanup(&fd); | ||
3643 | return PLAY_OK; | ||
3644 | } | ||
3645 | |||
3646 | /* plugin entry point */ | ||
3647 | enum plugin_status plugin_start(const void* parameter) | ||
3648 | { | ||
3649 | size_t buf_size; | ||
3650 | |||
3651 | if (!parameter) | ||
3652 | { | ||
3653 | rb->splash(HZ, "Play WAV file!"); | ||
3654 | return PLUGIN_OK; | ||
3655 | } | ||
3656 | |||
3657 | plug_buf = rb->plugin_get_buffer(&buf_size); | ||
3658 | if (buf_size < 6700) /* needed for i2c transfer */ | ||
3659 | { | ||
3660 | rb->splash(HZ, "Out of memory."); | ||
3661 | return PLUGIN_ERROR; | ||
3662 | } | ||
3663 | |||
3664 | aud_buf = rb->plugin_get_audio_buffer(&buf_size); | ||
3665 | aud_size = buf_size; | ||
3666 | |||
3667 | switch (play_file((char*)parameter)) | ||
3668 | { | ||
3669 | case PLAY_OK: | ||
3670 | return PLUGIN_OK; | ||
3671 | case PLAY_GOT_USB: | ||
3672 | return PLUGIN_USB_CONNECTED; | ||
3673 | default: | ||
3674 | return PLUGIN_ERROR; | ||
3675 | } | ||
3676 | } | ||
diff --git a/apps/plugins/wavrecord.c b/apps/plugins/wavrecord.c deleted file mode 100644 index 23751be041..0000000000 --- a/apps/plugins/wavrecord.c +++ /dev/null | |||
@@ -1,3811 +0,0 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * $Id$ | ||
9 | * | ||
10 | * Copyright (C) 2007 Jens Arnold | ||
11 | * | ||
12 | * This program is free software; you can redistribute it and/or | ||
13 | * modify it under the terms of the GNU General Public License | ||
14 | * as published by the Free Software Foundation; either version 2 | ||
15 | * of the License, or (at your option) any later version. | ||
16 | * | ||
17 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
18 | * KIND, either express or implied. | ||
19 | * | ||
20 | ****************************************************************************/ | ||
21 | #include "plugin.h" | ||
22 | #include "lib/configfile.h" | ||
23 | |||
24 | |||
25 | |||
26 | /************ Start of MAS pcm codec, raw i2c blocks ************/ | ||
27 | |||
28 | // address 04640 count 30 (126 bytes) | ||
29 | static const unsigned char maspcm_array1[] = { | ||
30 | 0xe0, 0x00, 0x00, 0x1e, 0x06, 0x40, | ||
31 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
32 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
33 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
34 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
35 | 0x00, 0x00, 0x00, 0x25, // 00000025 | ||
36 | 0x00, 0x00, 0x00, 0x04, // 00000004 | ||
37 | 0x00, 0x00, 0x48, 0x00, // 00004800 | ||
38 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
39 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
40 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
41 | 0x00, 0x00, 0xFF, 0xFF, // 0000FFFF | ||
42 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
43 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
44 | 0x00, 0x00, 0x82, 0x00, // 00008200 | ||
45 | 0x00, 0x00, 0x00, 0x0A, // 0000000A | ||
46 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
47 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
48 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
49 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
50 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
51 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
52 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
53 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
54 | 0x00, 0x00, 0x03, 0x18, // 00000318 | ||
55 | 0x00, 0x00, 0x03, 0x18, // 00000318 | ||
56 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
57 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
58 | 0x00, 0x00, 0x03, 0x18, // 00000318 | ||
59 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
60 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
61 | }; | ||
62 | // address 04674 count 81 (330 bytes) | ||
63 | static const unsigned char maspcm_array2[] = { | ||
64 | 0xe0, 0x00, 0x00, 0x51, 0x06, 0x74, | ||
65 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
66 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
67 | 0x00, 0x00, 0x00, 0x60, // 00000060 | ||
68 | 0x00, 0x00, 0x00, 0x60, // 00000060 | ||
69 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
70 | 0x00, 0x00, 0xC0, 0x00, // 0000C000 | ||
71 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
72 | 0x00, 0x00, 0x00, 0x1E, // 0000001E | ||
73 | 0x00, 0x00, 0x42, 0x11, // 00004211 | ||
74 | 0x00, 0x00, 0x58, 0x33, // 00005833 | ||
75 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
76 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
77 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
78 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
79 | 0x00, 0x01, 0x20, 0x01, // 00012001 | ||
80 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
81 | 0x00, 0x00, 0x00, 0x29, // 00000029 | ||
82 | 0x00, 0x00, 0x30, 0xC3, // 000030C3 | ||
83 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
84 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
85 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
86 | 0x00, 0x00, 0x00, 0x40, // 00000040 | ||
87 | 0x00, 0x00, 0x02, 0x00, // 00000200 | ||
88 | 0x00, 0x01, 0x20, 0x00, // 00012000 | ||
89 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
90 | 0x00, 0x00, 0x00, 0x2D, // 0000002D | ||
91 | 0x00, 0x00, 0x2C, 0x86, // 00002C86 | ||
92 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
93 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
94 | 0x00, 0x00, 0x00, 0x30, // 00000030 | ||
95 | 0x00, 0x00, 0x00, 0x30, // 00000030 | ||
96 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
97 | 0x00, 0x01, 0x80, 0x00, // 00018000 | ||
98 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
99 | 0x00, 0x00, 0x00, 0x3C, // 0000003C | ||
100 | 0x00, 0x00, 0x21, 0x93, // 00002193 | ||
101 | 0x00, 0x00, 0x58, 0x33, // 00005833 | ||
102 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
103 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
104 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
105 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
106 | 0x00, 0x02, 0x40, 0x01, // 00024001 | ||
107 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
108 | 0x00, 0x00, 0x00, 0x52, // 00000052 | ||
109 | 0x00, 0x00, 0x18, 0xAD, // 000018AD | ||
110 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
111 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
112 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
113 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
114 | 0x00, 0x00, 0x02, 0x00, // 00000200 | ||
115 | 0x00, 0x02, 0x40, 0x00, // 00024000 | ||
116 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
117 | 0x00, 0x00, 0x00, 0x5A, // 0000005A | ||
118 | 0x00, 0x00, 0x16, 0x81, // 00001681 | ||
119 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
120 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
121 | 0x00, 0x00, 0x00, 0x18, // 00000018 | ||
122 | 0x00, 0x00, 0x00, 0x18, // 00000018 | ||
123 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
124 | 0x00, 0x03, 0x00, 0x00, // 00030000 | ||
125 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
126 | 0x00, 0x00, 0x00, 0x78, // 00000078 | ||
127 | 0x00, 0x00, 0x10, 0xED, // 000010ED | ||
128 | 0x00, 0x00, 0x58, 0x33, // 00005833 | ||
129 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
130 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
131 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
132 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
133 | 0x00, 0x04, 0x80, 0x03, // 00048003 | ||
134 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
135 | 0x00, 0x00, 0x00, 0xA5, // 000000A5 | ||
136 | 0x00, 0x00, 0x0C, 0x56, // 00000C56 | ||
137 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
138 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
139 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
140 | 0x00, 0x00, 0x00, 0x10, // 00000010 | ||
141 | 0x00, 0x00, 0x02, 0x00, // 00000200 | ||
142 | 0x00, 0x04, 0x80, 0x00, // 00048000 | ||
143 | 0x00, 0x00, 0x00, 0x14, // 00000014 | ||
144 | 0x00, 0x00, 0x00, 0xB4, // 000000B4 | ||
145 | 0x00, 0x00, 0x0B, 0x51, // 00000B51 | ||
146 | }; | ||
147 | // address 04661 count 19 (82 bytes) | ||
148 | static const unsigned char maspcm_array3[] = { | ||
149 | 0xe0, 0x00, 0x00, 0x13, 0x06, 0x61, | ||
150 | 0x00, 0x00, 0x01, 0x25, // 00000125 | ||
151 | 0x00, 0x00, 0x00, 0x05, // 00000005 | ||
152 | 0x00, 0x00, 0x48, 0x00, // 00004800 | ||
153 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
154 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
155 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
156 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
157 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
158 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
159 | 0x00, 0x00, 0x82, 0x00, // 00008200 | ||
160 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
161 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
162 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
163 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
164 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
165 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
166 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
167 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
168 | 0x00, 0x08, 0x00, 0x00, // 00080000 | ||
169 | }; | ||
170 | // address 046E4 count 16 (70 bytes) | ||
171 | static const unsigned char maspcm_array4[] = { | ||
172 | 0xe0, 0x00, 0x00, 0x10, 0x06, 0xe4, | ||
173 | 0x00, 0x00, 0x06, 0x74, // 00000674 | ||
174 | 0x00, 0x00, 0x06, 0x7D, // 0000067D | ||
175 | 0x00, 0x00, 0x06, 0x86, // 00000686 | ||
176 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
177 | 0x00, 0x00, 0x06, 0x8F, // 0000068F | ||
178 | 0x00, 0x00, 0x06, 0x98, // 00000698 | ||
179 | 0x00, 0x00, 0x06, 0xA1, // 000006A1 | ||
180 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
181 | 0x00, 0x00, 0x06, 0xAA, // 000006AA | ||
182 | 0x00, 0x00, 0x06, 0xB3, // 000006B3 | ||
183 | 0x00, 0x00, 0x06, 0xBC, // 000006BC | ||
184 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
185 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
186 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
187 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
188 | 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF | ||
189 | }; | ||
190 | // address 04700 count 18 (78 byte) | ||
191 | static const unsigned char maspcm_array5[] = { | ||
192 | 0xe0, 0x00, 0x00, 0x12, 0x07, 0x00, | ||
193 | 0x00, 0x00, 0x06, 0xBC, // 000006BC | ||
194 | 0x00, 0x00, 0x00, 0x0A, // 0000000A | ||
195 | 0x00, 0x00, 0x06, 0x74, // 00000674 | ||
196 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
197 | 0x00, 0x00, 0x06, 0x7D, // 0000067D | ||
198 | 0x00, 0x00, 0x00, 0x01, // 00000001 | ||
199 | 0x00, 0x00, 0x06, 0x86, // 00000686 | ||
200 | 0x00, 0x00, 0x00, 0x02, // 00000002 | ||
201 | 0x00, 0x00, 0x06, 0x8F, // 0000068F | ||
202 | 0x00, 0x00, 0x00, 0x04, // 00000004 | ||
203 | 0x00, 0x00, 0x06, 0x98, // 00000698 | ||
204 | 0x00, 0x00, 0x00, 0x05, // 00000005 | ||
205 | 0x00, 0x00, 0x06, 0xA1, // 000006A1 | ||
206 | 0x00, 0x00, 0x00, 0x06, // 00000006 | ||
207 | 0x00, 0x00, 0x06, 0xAA, // 000006AA | ||
208 | 0x00, 0x00, 0x00, 0x08, // 00000008 | ||
209 | 0x00, 0x00, 0x06, 0xB3, // 000006B3 | ||
210 | 0x00, 0x00, 0x00, 0x09, // 00000009 | ||
211 | }; | ||
212 | // address 06600 count 63 (258 bytes) | ||
213 | static const unsigned char maspcm_array6[] = { | ||
214 | 0xf0, 0x00, 0x00, 0x3f, 0x06, 0x00, | ||
215 | 0x00, 0x00, 0x0B, 0xAD, // 00000BAD | ||
216 | 0x00, 0x00, 0x10, 0x00, // 00001000 | ||
217 | 0x00, 0x00, 0x20, 0x00, // 00002000 | ||
218 | 0x00, 0x00, 0x30, 0x00, // 00003000 | ||
219 | 0x00, 0x00, 0x40, 0x00, // 00004000 | ||
220 | 0x00, 0x00, 0x50, 0x00, // 00005000 | ||
221 | 0x00, 0x00, 0x60, 0x00, // 00006000 | ||
222 | 0x00, 0x00, 0x70, 0x00, // 00007000 | ||
223 | 0x00, 0x00, 0x80, 0x00, // 00008000 | ||
224 | 0x00, 0x00, 0x90, 0x00, // 00009000 | ||
225 | 0x00, 0x00, 0xA0, 0x00, // 0000A000 | ||
226 | 0x00, 0x00, 0xB0, 0x00, // 0000B000 | ||
227 | 0x00, 0x00, 0xC0, 0x00, // 0000C000 | ||
228 | 0x00, 0x00, 0xD0, 0x00, // 0000D000 | ||
229 | 0x00, 0x00, 0xE0, 0x00, // 0000E000 | ||
230 | 0x00, 0x00, 0xF0, 0x00, // 0000F000 | ||
231 | 0x00, 0x01, 0x00, 0x00, // 00010000 | ||
232 | 0x00, 0x01, 0x10, 0x00, // 00011000 | ||
233 | 0x00, 0x01, 0x20, 0x00, // 00012000 | ||
234 | 0x00, 0x01, 0x30, 0x00, // 00013000 | ||
235 | 0x00, 0x01, 0x40, 0x00, // 00014000 | ||
236 | 0x00, 0x01, 0x50, 0x00, // 00015000 | ||
237 | 0x00, 0x01, 0x60, 0x00, // 00016000 | ||
238 | 0x00, 0x01, 0x70, 0x00, // 00017000 | ||
239 | 0x00, 0x01, 0x80, 0x00, // 00018000 | ||
240 | 0x00, 0x01, 0x90, 0x00, // 00019000 | ||
241 | 0x00, 0x01, 0xA0, 0x00, // 0001A000 | ||
242 | 0x00, 0x01, 0xB0, 0x00, // 0001B000 | ||
243 | 0x00, 0x01, 0xC0, 0x00, // 0001C000 | ||
244 | 0x00, 0x01, 0xD0, 0x00, // 0001D000 | ||
245 | 0x00, 0x01, 0xE0, 0x00, // 0001E000 | ||
246 | 0x00, 0x01, 0xF0, 0x00, // 0001F000 | ||
247 | 0x00, 0x02, 0x00, 0x00, // 00020000 | ||
248 | 0x00, 0x02, 0x10, 0x00, // 00021000 | ||
249 | 0x00, 0x02, 0x20, 0x00, // 00022000 | ||
250 | 0x00, 0x02, 0x30, 0x00, // 00023000 | ||
251 | 0x00, 0x02, 0x40, 0x00, // 00024000 | ||
252 | 0x00, 0x00, 0x05, 0xFF, // 000005FF | ||
253 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
254 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
255 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
256 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
257 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
258 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
259 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
260 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
261 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
262 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
263 | 0x00, 0x00, 0x00, 0x20, // 00000020 | ||
264 | 0x00, 0x00, 0x03, 0x00, // 00000300 | ||
265 | 0x00, 0x00, 0x05, 0xFF, // 000005FF | ||
266 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
267 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
268 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
269 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
270 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
271 | 0x00, 0x00, 0x00, 0x90, // 00000090 | ||
272 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
273 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
274 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
275 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
276 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
277 | 0x00, 0x00, 0x00, 0x0C, // 0000000C | ||
278 | }; | ||
279 | // address 06640 count 12 (54 bytes) | ||
280 | static const unsigned char maspcm_array7[] = { | ||
281 | 0xf0, 0x00, 0x00, 0x0c, 0x06, 0x40, | ||
282 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
283 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
284 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
285 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
286 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
287 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
288 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
289 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
290 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
291 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
292 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
293 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
294 | }; | ||
295 | // address 06660 count 28 (118 bytes) | ||
296 | static const unsigned char maspcm_array8[] = { | ||
297 | 0xf0, 0x00, 0x00, 0x1c, 0x06, 0x60, | ||
298 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
299 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
300 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
301 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
302 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
303 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
304 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
305 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
306 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
307 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
308 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
309 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
310 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
311 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
312 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
313 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
314 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
315 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
316 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
317 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
318 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
319 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
320 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
321 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
322 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
323 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
324 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
325 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
326 | }; | ||
327 | // address 04800 count 1668 (6678 bytes) | ||
328 | static const unsigned char maspcm_array9[] = { | ||
329 | 0xe0, 0x00, 0x06, 0x84, 0x08, 0x00, | ||
330 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
331 | 0x00, 0x07, 0x47, 0xC0, // 000747C0 | ||
332 | 0x00, 0x07, 0x04, 0x00, // 00070400 | ||
333 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
334 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
335 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
336 | 0x00, 0x06, 0xC0, 0x6B, // 0006C06B | ||
337 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
338 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
339 | 0x00, 0x07, 0x06, 0x90, // 00070690 | ||
340 | 0x00, 0x07, 0x4C, 0x07, // 00074C07 | ||
341 | 0x00, 0x07, 0x0F, 0xFF, // 00070FFF | ||
342 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
343 | 0x00, 0x06, 0x80, 0x1D, // 0006801D | ||
344 | 0x00, 0x06, 0x80, 0x1F, // 0006801F | ||
345 | 0x00, 0x06, 0x80, 0x21, // 00068021 | ||
346 | 0x00, 0x06, 0x80, 0x23, // 00068023 | ||
347 | 0x00, 0x06, 0x84, 0x1D, // 0006841D | ||
348 | 0x00, 0x06, 0x84, 0x1F, // 0006841F | ||
349 | 0x00, 0x06, 0x84, 0x21, // 00068421 | ||
350 | 0x00, 0x06, 0x84, 0x23, // 00068423 | ||
351 | 0x00, 0x06, 0x88, 0x17, // 00068817 | ||
352 | 0x00, 0x06, 0x8C, 0x17, // 00068C17 | ||
353 | 0x00, 0x06, 0xD0, 0x6D, // 0006D06D | ||
354 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
355 | 0x00, 0x07, 0x1E, 0x57, // 00071E57 | ||
356 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
357 | 0x00, 0x07, 0x06, 0x90, // 00070690 | ||
358 | 0x00, 0x07, 0x4C, 0x07, // 00074C07 | ||
359 | 0x00, 0x07, 0x0F, 0xFF, // 00070FFF | ||
360 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
361 | 0x00, 0x06, 0x80, 0x1D, // 0006801D | ||
362 | 0x00, 0x06, 0x80, 0x1F, // 0006801F | ||
363 | 0x00, 0x06, 0x80, 0x21, // 00068021 | ||
364 | 0x00, 0x06, 0x80, 0x23, // 00068023 | ||
365 | 0x00, 0x06, 0x84, 0x1D, // 0006841D | ||
366 | 0x00, 0x06, 0x84, 0x1F, // 0006841F | ||
367 | 0x00, 0x06, 0x84, 0x21, // 00068421 | ||
368 | 0x00, 0x06, 0x84, 0x23, // 00068423 | ||
369 | 0x00, 0x06, 0x88, 0x17, // 00068817 | ||
370 | 0x00, 0x06, 0x8C, 0x17, // 00068C17 | ||
371 | 0x00, 0x06, 0xD0, 0x6D, // 0006D06D | ||
372 | 0x00, 0x06, 0x98, 0x1E, // 0006981E | ||
373 | 0x00, 0x04, 0x05, 0x08, // 00040508 | ||
374 | 0x00, 0x04, 0x0D, 0x08, // 00040D08 | ||
375 | 0x00, 0x04, 0x15, 0x08, // 00041508 | ||
376 | 0x00, 0x04, 0x1D, 0x08, // 00041D08 | ||
377 | 0x00, 0x04, 0x25, 0x08, // 00042508 | ||
378 | 0x00, 0x04, 0x2D, 0x08, // 00042D08 | ||
379 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
380 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
381 | 0x00, 0x07, 0x3C, 0x30, // 00073C30 | ||
382 | 0x00, 0x06, 0x80, 0x3B, // 0006803B | ||
383 | 0x00, 0x06, 0x88, 0x5B, // 0006885B | ||
384 | 0x00, 0x06, 0x94, 0x3B, // 0006943B | ||
385 | 0x00, 0x06, 0x9C, 0x43, // 00069C43 | ||
386 | 0x00, 0x06, 0xA0, 0x53, // 0006A053 | ||
387 | 0x00, 0x06, 0xA8, 0x4B, // 0006A84B | ||
388 | 0x00, 0x06, 0xB4, 0x53, // 0006B453 | ||
389 | 0x00, 0x06, 0xBC, 0x06, // 0006BC06 | ||
390 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
391 | 0x00, 0x07, 0x36, 0x63, // 00073663 | ||
392 | 0x00, 0x02, 0x12, 0x57, // 00021257 | ||
393 | 0x00, 0x07, 0x6C, 0x18, // 00076C18 | ||
394 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
395 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
396 | 0x00, 0x07, 0x3C, 0x45, // 00073C45 | ||
397 | 0x00, 0x06, 0xB0, 0x20, // 0006B020 | ||
398 | 0x00, 0x04, 0x36, 0x00, // 00043600 | ||
399 | 0x00, 0x02, 0x12, 0x46, // 00021246 | ||
400 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
401 | 0x00, 0x07, 0x3C, 0x4C, // 00073C4C | ||
402 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
403 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
404 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
405 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
406 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
407 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
408 | 0x00, 0x07, 0x06, 0x66, // 00070666 | ||
409 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
410 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
411 | 0x00, 0x06, 0x94, 0x7F, // 0006947F | ||
412 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
413 | 0x00, 0x07, 0x88, 0x04, // 00078804 | ||
414 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
415 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
416 | 0x00, 0x0B, 0x49, 0x7F, // 000B497F | ||
417 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
418 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
419 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
420 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
421 | 0x00, 0x0A, 0xC1, 0xC2, // 000AC1C2 | ||
422 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
423 | 0x00, 0x02, 0x10, 0x70, // 00021070 | ||
424 | 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E | ||
425 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
426 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
427 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
428 | 0x00, 0x07, 0x90, 0x04, // 00079004 | ||
429 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
430 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
431 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
432 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
433 | 0x00, 0x0A, 0xC2, 0xC1, // 000AC2C1 | ||
434 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
435 | 0x00, 0x02, 0x10, 0x85, // 00021085 | ||
436 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
437 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
438 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
439 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
440 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
441 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
442 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
443 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
444 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
445 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
446 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
447 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
448 | 0x00, 0x06, 0xC0, 0x6D, // 0006C06D | ||
449 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
450 | 0x00, 0x07, 0x6C, 0x04, // 00076C04 | ||
451 | 0x00, 0x07, 0x2C, 0x7E, // 00072C7E | ||
452 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
453 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
454 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
455 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
456 | 0x00, 0x02, 0x10, 0x54, // 00021054 | ||
457 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
458 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
459 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
460 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
461 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
462 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
463 | 0x00, 0x09, 0x80, 0x74, // 00098074 | ||
464 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
465 | 0x00, 0x07, 0x1F, 0x00, // 00071F00 | ||
466 | 0x00, 0x08, 0x80, 0x42, // 00088042 | ||
467 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
468 | 0x00, 0x02, 0x11, 0x51, // 00021151 | ||
469 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
470 | 0x00, 0x0A, 0xC2, 0xC3, // 000AC2C3 | ||
471 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
472 | 0x00, 0x09, 0x80, 0x78, // 00098078 | ||
473 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
474 | 0x00, 0x08, 0x80, 0x42, // 00088042 | ||
475 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
476 | 0x00, 0x02, 0x11, 0x51, // 00021151 | ||
477 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
478 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
479 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
480 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
481 | 0x00, 0x07, 0x06, 0x66, // 00070666 | ||
482 | 0x00, 0x07, 0x56, 0x00, // 00075600 | ||
483 | 0x00, 0x07, 0x14, 0x03, // 00071403 | ||
484 | 0x00, 0x06, 0x8C, 0x3B, // 00068C3B | ||
485 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
486 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
487 | 0x00, 0x07, 0x90, 0x04, // 00079004 | ||
488 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
489 | 0x00, 0x07, 0x2F, 0x00, // 00072F00 | ||
490 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
491 | 0x00, 0x07, 0x04, 0x00, // 00070400 | ||
492 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
493 | 0x00, 0x06, 0xAC, 0x05, // 0006AC05 | ||
494 | 0x00, 0x01, 0x41, 0x00, // 00014100 | ||
495 | 0x00, 0x06, 0x84, 0x1C, // 0006841C | ||
496 | 0x00, 0x07, 0x8C, 0x0C, // 00078C0C | ||
497 | 0x00, 0x07, 0x8C, 0x0C, // 00078C0C | ||
498 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
499 | 0x00, 0x07, 0x1C, 0x90, // 00071C90 | ||
500 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
501 | 0x00, 0x07, 0x17, 0x00, // 00071700 | ||
502 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
503 | 0x00, 0x07, 0x25, 0xFF, // 000725FF | ||
504 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
505 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
506 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
507 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
508 | 0x00, 0x06, 0x9C, 0x25, // 00069C25 | ||
509 | 0x00, 0x06, 0x98, 0x2D, // 0006982D | ||
510 | 0x00, 0x06, 0x94, 0x3C, // 0006943C | ||
511 | 0x00, 0x06, 0xA4, 0x16, // 0006A416 | ||
512 | 0x00, 0x06, 0xA0, 0x16, // 0006A016 | ||
513 | 0x00, 0x06, 0x8C, 0x3B, // 00068C3B | ||
514 | 0x00, 0x06, 0xAC, 0x24, // 0006AC24 | ||
515 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
516 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
517 | 0x00, 0x0B, 0x52, 0x6F, // 000B526F | ||
518 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
519 | 0x00, 0x07, 0x1E, 0x90, // 00071E90 | ||
520 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
521 | 0x00, 0x06, 0x88, 0x1E, // 0006881E | ||
522 | 0x00, 0x06, 0x90, 0x15, // 00069015 | ||
523 | 0x00, 0x06, 0x98, 0x1F, // 0006981F | ||
524 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
525 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
526 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
527 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
528 | 0x00, 0x06, 0x84, 0x6F, // 0006846F | ||
529 | 0x00, 0x06, 0x84, 0x70, // 00068470 | ||
530 | 0x00, 0x04, 0x05, 0x10, // 00040510 | ||
531 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
532 | 0x00, 0x07, 0x36, 0x63, // 00073663 | ||
533 | 0x00, 0x02, 0x12, 0x57, // 00021257 | ||
534 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
535 | 0x00, 0x04, 0x2C, 0x08, // 00042C08 | ||
536 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
537 | 0x00, 0x07, 0x3C, 0xD2, // 00073CD2 | ||
538 | 0x00, 0x06, 0xB0, 0x22, // 0006B022 | ||
539 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
540 | 0x00, 0x04, 0x14, 0x20, // 00041420 | ||
541 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
542 | 0x00, 0x07, 0x66, 0x00, // 00076600 | ||
543 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
544 | 0x00, 0x07, 0x5C, 0x80, // 00075C80 | ||
545 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
546 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
547 | 0x00, 0x07, 0x3D, 0x00, // 00073D00 | ||
548 | 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4 | ||
549 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
550 | 0x00, 0x08, 0x36, 0xC4, // 000836C4 | ||
551 | 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3 | ||
552 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
553 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
554 | 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7 | ||
555 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
556 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
557 | 0x00, 0x02, 0x12, 0x46, // 00021246 | ||
558 | 0x00, 0x09, 0x92, 0x51, // 00099251 | ||
559 | 0x00, 0x08, 0x36, 0xC2, // 000836C2 | ||
560 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
561 | 0x00, 0x07, 0x3C, 0xEA, // 00073CEA | ||
562 | 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D | ||
563 | 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C | ||
564 | 0x00, 0x0B, 0x7F, 0x7F, // 000B7F7F | ||
565 | 0x00, 0x09, 0xB6, 0x7D, // 0009B67D | ||
566 | 0x00, 0x0A, 0x3F, 0x53, // 000A3F53 | ||
567 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
568 | 0x00, 0x0A, 0xF6, 0x43, // 000AF643 | ||
569 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
570 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
571 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
572 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
573 | 0x00, 0x07, 0x1F, 0x18, // 00071F18 | ||
574 | 0x00, 0x07, 0x6C, 0x04, // 00076C04 | ||
575 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
576 | 0x00, 0x04, 0x0C, 0x08, // 00040C08 | ||
577 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
578 | 0x00, 0x0A, 0x09, 0xC6, // 000A09C6 | ||
579 | 0x00, 0x08, 0x8F, 0xC1, // 00088FC1 | ||
580 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
581 | 0x00, 0x0C, 0x09, 0x25, // 000C0925 | ||
582 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
583 | 0x00, 0x07, 0x04, 0x00, // 00070400 | ||
584 | 0x00, 0x06, 0x98, 0x53, // 00069853 | ||
585 | 0x00, 0x06, 0x90, 0x2C, // 0006902C | ||
586 | 0x00, 0x06, 0xA4, 0x24, // 0006A424 | ||
587 | 0x00, 0x06, 0x80, 0x53, // 00068053 | ||
588 | 0x00, 0x06, 0x88, 0x54, // 00068854 | ||
589 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
590 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
591 | 0x00, 0x06, 0x14, 0x6F, // 0006146F | ||
592 | 0x00, 0x06, 0x00, 0x52, // 00060052 | ||
593 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
594 | 0x00, 0x06, 0x1C, 0x70, // 00061C70 | ||
595 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
596 | 0x00, 0x02, 0x9F, 0x38, // 00029F38 | ||
597 | 0x00, 0x0A, 0x09, 0x74, // 000A0974 | ||
598 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
599 | 0x00, 0x0A, 0xC9, 0x43, // 000AC943 | ||
600 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
601 | 0x00, 0x08, 0xA1, 0x42, // 0008A142 | ||
602 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
603 | 0x00, 0x08, 0x1B, 0x41, // 00081B41 | ||
604 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
605 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
606 | 0x00, 0x06, 0x94, 0x6F, // 0006946F | ||
607 | 0x00, 0x06, 0x9C, 0x70, // 00069C70 | ||
608 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
609 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
610 | 0x00, 0x0B, 0x00, 0x41, // 000B0041 | ||
611 | 0x00, 0x07, 0x6C, 0x04, // 00076C04 | ||
612 | 0x00, 0x07, 0x2D, 0x1E, // 00072D1E | ||
613 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
614 | 0x00, 0x06, 0x80, 0x6D, // 0006806D | ||
615 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
616 | 0x00, 0x06, 0x04, 0x24, // 00060424 | ||
617 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
618 | 0x00, 0x07, 0x16, 0x61, // 00071661 | ||
619 | 0x00, 0x08, 0x8C, 0x80, // 00088C80 | ||
620 | 0x00, 0x02, 0x89, 0x10, // 00028910 | ||
621 | 0x00, 0x02, 0x11, 0x03, // 00021103 | ||
622 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
623 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
624 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
625 | 0x00, 0x07, 0x54, 0x0C, // 0007540C | ||
626 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
627 | 0x00, 0x0A, 0xD8, 0x7E, // 000AD87E | ||
628 | 0x00, 0x0A, 0xC8, 0x41, // 000AC841 | ||
629 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
630 | 0x00, 0x0A, 0xC8, 0xC2, // 000AC8C2 | ||
631 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
632 | 0x00, 0x02, 0x10, 0x08, // 00021008 | ||
633 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
634 | 0x00, 0x07, 0x98, 0x07, // 00079807 | ||
635 | 0x00, 0x06, 0x04, 0x6F, // 0006046F | ||
636 | 0x00, 0x06, 0x0C, 0x70, // 00060C70 | ||
637 | 0x00, 0x0A, 0x10, 0x7D, // 000A107D | ||
638 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
639 | 0x00, 0x08, 0x99, 0xC2, // 000899C2 | ||
640 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
641 | 0x00, 0x02, 0x10, 0xC2, // 000210C2 | ||
642 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
643 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
644 | 0x00, 0x07, 0x0E, 0x6B, // 00070E6B | ||
645 | 0x00, 0x0B, 0x52, 0x50, // 000B5250 | ||
646 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
647 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
648 | 0x00, 0x06, 0x88, 0x1C, // 0006881C | ||
649 | 0x00, 0x0A, 0xCC, 0x82, // 000ACC82 | ||
650 | 0x00, 0x04, 0x1D, 0x88, // 00041D88 | ||
651 | 0x00, 0x04, 0x1D, 0x00, // 00041D00 | ||
652 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
653 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
654 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
655 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
656 | 0x00, 0x07, 0x88, 0x04, // 00078804 | ||
657 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
658 | 0x00, 0x07, 0x06, 0x90, // 00070690 | ||
659 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
660 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
661 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
662 | 0x00, 0x07, 0x17, 0x18, // 00071718 | ||
663 | 0x00, 0x06, 0x80, 0x1F, // 0006801F | ||
664 | 0x00, 0x06, 0x8C, 0x3B, // 00068C3B | ||
665 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
666 | 0x00, 0x06, 0x90, 0x53, // 00069053 | ||
667 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
668 | 0x00, 0x07, 0x0E, 0x65, // 00070E65 | ||
669 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
670 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
671 | 0x00, 0x07, 0x26, 0x68, // 00072668 | ||
672 | 0x00, 0x06, 0x88, 0x20, // 00068820 | ||
673 | 0x00, 0x07, 0x90, 0x06, // 00079006 | ||
674 | 0x00, 0x06, 0x94, 0x7F, // 0006947F | ||
675 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
676 | 0x00, 0x07, 0x90, 0x07, // 00079007 | ||
677 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
678 | 0x00, 0x07, 0x0E, 0x6B, // 00070E6B | ||
679 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
680 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
681 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
682 | 0x00, 0x06, 0x88, 0x20, // 00068820 | ||
683 | 0x00, 0x04, 0x0E, 0x00, // 00040E00 | ||
684 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
685 | 0x00, 0x07, 0x1C, 0x40, // 00071C40 | ||
686 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
687 | 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3 | ||
688 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
689 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
690 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
691 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
692 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
693 | 0x00, 0x06, 0x80, 0x6A, // 0006806A | ||
694 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
695 | 0x00, 0x07, 0x1C, 0x20, // 00071C20 | ||
696 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
697 | 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3 | ||
698 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
699 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
700 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
701 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
702 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
703 | 0x00, 0x06, 0x80, 0x6C, // 0006806C | ||
704 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
705 | 0x00, 0x07, 0x1C, 0x10, // 00071C10 | ||
706 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
707 | 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3 | ||
708 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
709 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
710 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
711 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
712 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
713 | 0x00, 0x06, 0x80, 0x76, // 00068076 | ||
714 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
715 | 0x00, 0x07, 0x1E, 0x67, // 00071E67 | ||
716 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
717 | 0x00, 0x07, 0x06, 0xE4, // 000706E4 | ||
718 | 0x00, 0x0A, 0xD1, 0x4F, // 000AD14F | ||
719 | 0x00, 0x08, 0x10, 0xC2, // 000810C2 | ||
720 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
721 | 0x00, 0x06, 0x98, 0x1C, // 0006981C | ||
722 | 0x00, 0x07, 0x90, 0x04, // 00079004 | ||
723 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
724 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
725 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
726 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
727 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
728 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
729 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
730 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
731 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
732 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
733 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
734 | 0x00, 0x07, 0x54, 0x08, // 00075408 | ||
735 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
736 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
737 | 0x00, 0x0A, 0xCC, 0x81, // 000ACC81 | ||
738 | 0x00, 0x08, 0x92, 0xC1, // 000892C1 | ||
739 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
740 | 0x00, 0x02, 0x11, 0xBD, // 000211BD | ||
741 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
742 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
743 | 0x00, 0x02, 0x12, 0x57, // 00021257 | ||
744 | 0x00, 0x07, 0x36, 0x63, // 00073663 | ||
745 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
746 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
747 | 0x00, 0x07, 0x3D, 0xA4, // 00073DA4 | ||
748 | 0x00, 0x06, 0xB0, 0x20, // 0006B020 | ||
749 | 0x00, 0x04, 0x36, 0x08, // 00043608 | ||
750 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
751 | 0x00, 0x04, 0x06, 0x00, // 00040600 | ||
752 | 0x00, 0x07, 0x66, 0x00, // 00076600 | ||
753 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
754 | 0x00, 0x07, 0x5C, 0x80, // 00075C80 | ||
755 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
756 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
757 | 0x00, 0x07, 0x3D, 0x00, // 00073D00 | ||
758 | 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4 | ||
759 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
760 | 0x00, 0x08, 0x36, 0xC4, // 000836C4 | ||
761 | 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3 | ||
762 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
763 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
764 | 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7 | ||
765 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
766 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
767 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
768 | 0x00, 0x02, 0x12, 0x46, // 00021246 | ||
769 | 0x00, 0x09, 0x92, 0x51, // 00099251 | ||
770 | 0x00, 0x08, 0x36, 0xC2, // 000836C2 | ||
771 | 0x00, 0x07, 0x7C, 0x04, // 00077C04 | ||
772 | 0x00, 0x07, 0x3D, 0xBF, // 00073DBF | ||
773 | 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D | ||
774 | 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C | ||
775 | 0x00, 0x04, 0x06, 0x08, // 00040608 | ||
776 | 0x00, 0x04, 0x07, 0x08, // 00040708 | ||
777 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
778 | 0x00, 0x07, 0x0E, 0x62, // 00070E62 | ||
779 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
780 | 0x00, 0x07, 0x14, 0x2D, // 0007142D | ||
781 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
782 | 0x00, 0x06, 0x88, 0x1C, // 0006881C | ||
783 | 0x00, 0x04, 0x0C, 0x00, // 00040C00 | ||
784 | 0x00, 0x0A, 0xD2, 0xC1, // 000AD2C1 | ||
785 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
786 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
787 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
788 | 0x00, 0x06, 0x90, 0x4F, // 0006904F | ||
789 | 0x00, 0x06, 0x94, 0x77, // 00069477 | ||
790 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
791 | 0x00, 0x07, 0x06, 0x39, // 00070639 | ||
792 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
793 | 0x00, 0x07, 0x0E, 0x61, // 00070E61 | ||
794 | 0x00, 0x07, 0x54, 0x12, // 00075412 | ||
795 | 0x00, 0x07, 0x14, 0x30, // 00071430 | ||
796 | 0x00, 0x06, 0x84, 0x1C, // 0006841C | ||
797 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
798 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
799 | 0x00, 0x06, 0x88, 0x1C, // 0006881C | ||
800 | 0x00, 0x04, 0x0C, 0x00, // 00040C00 | ||
801 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
802 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
803 | 0x00, 0x09, 0xAC, 0x7F, // 0009AC7F | ||
804 | 0x00, 0x0A, 0xC1, 0x50, // 000AC150 | ||
805 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
806 | 0x00, 0x0A, 0x24, 0x7F, // 000A247F | ||
807 | 0x00, 0x0A, 0xC9, 0xC2, // 000AC9C2 | ||
808 | 0x00, 0x08, 0x0B, 0xC1, // 00080BC1 | ||
809 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
810 | 0x00, 0x07, 0xA4, 0x00, // 0007A400 | ||
811 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
812 | 0x00, 0x07, 0x8C, 0x00, // 00078C00 | ||
813 | 0x00, 0x07, 0xAC, 0x00, // 0007AC00 | ||
814 | 0x00, 0x04, 0xA8, 0x00, // 0004A800 | ||
815 | 0x00, 0x07, 0xB4, 0x00, // 0007B400 | ||
816 | 0x00, 0x06, 0x84, 0x45, // 00068445 | ||
817 | 0x00, 0x06, 0x84, 0x46, // 00068446 | ||
818 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
819 | 0x00, 0x07, 0x16, 0x40, // 00071640 | ||
820 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
821 | 0x00, 0x07, 0x26, 0x90, // 00072690 | ||
822 | 0x00, 0x0B, 0x49, 0x75, // 000B4975 | ||
823 | 0x00, 0x06, 0x94, 0x1E, // 0006941E | ||
824 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
825 | 0x00, 0x06, 0xA4, 0x1F, // 0006A41F | ||
826 | 0x00, 0x06, 0x8C, 0x15, // 00068C15 | ||
827 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
828 | 0x00, 0x07, 0x06, 0x6A, // 0007066A | ||
829 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
830 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
831 | 0x00, 0x04, 0x1F, 0x08, // 00041F08 | ||
832 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
833 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
834 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
835 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
836 | 0x00, 0x06, 0xA4, 0x65, // 0006A465 | ||
837 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
838 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
839 | 0x00, 0x07, 0x84, 0x0D, // 0007840D | ||
840 | 0x00, 0x07, 0x8C, 0x5D, // 00078C5D | ||
841 | 0x00, 0x06, 0xAC, 0x79, // 0006AC79 | ||
842 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
843 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
844 | 0x00, 0x0B, 0x76, 0x41, // 000B7641 | ||
845 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
846 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
847 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
848 | 0x00, 0x0C, 0x0B, 0x0D, // 000C0B0D | ||
849 | 0x00, 0x0C, 0x13, 0x0D, // 000C130D | ||
850 | 0x00, 0x0C, 0x1B, 0x0D, // 000C1B0D | ||
851 | 0x00, 0x0C, 0x23, 0x0D, // 000C230D | ||
852 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
853 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
854 | 0x00, 0x06, 0xB4, 0x6A, // 0006B46A | ||
855 | 0x00, 0x06, 0x8C, 0x66, // 00068C66 | ||
856 | 0x00, 0x06, 0x94, 0x67, // 00069467 | ||
857 | 0x00, 0x06, 0x9C, 0x68, // 00069C68 | ||
858 | 0x00, 0x06, 0xA4, 0x69, // 0006A469 | ||
859 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
860 | 0x00, 0x07, 0x27, 0x12, // 00072712 | ||
861 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
862 | 0x00, 0x04, 0x03, 0x00, // 00040300 | ||
863 | 0x00, 0x04, 0x0B, 0x00, // 00040B00 | ||
864 | 0x00, 0x04, 0x13, 0x00, // 00041300 | ||
865 | 0x00, 0x04, 0x1B, 0x00, // 00041B00 | ||
866 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
867 | 0x00, 0x07, 0x80, 0x0F, // 0007800F | ||
868 | 0x00, 0x07, 0x88, 0x0F, // 0007880F | ||
869 | 0x00, 0x07, 0x90, 0x0F, // 0007900F | ||
870 | 0x00, 0x07, 0x98, 0x07, // 00079807 | ||
871 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
872 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
873 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
874 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
875 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
876 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
877 | 0x00, 0x06, 0x80, 0x1C, // 0006801C | ||
878 | 0x00, 0x0A, 0xC4, 0x81, // 000AC481 | ||
879 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
880 | 0x00, 0x09, 0x80, 0x74, // 00098074 | ||
881 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
882 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
883 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
884 | 0x00, 0x07, 0x1E, 0x66, // 00071E66 | ||
885 | 0x00, 0x07, 0x64, 0x04, // 00076404 | ||
886 | 0x00, 0x07, 0x24, 0x08, // 00072408 | ||
887 | 0x00, 0x08, 0x88, 0x41, // 00088841 | ||
888 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
889 | 0x00, 0x02, 0x12, 0x8F, // 0002128F | ||
890 | 0x00, 0x07, 0x56, 0x00, // 00075600 | ||
891 | 0x00, 0x07, 0x14, 0x01, // 00071401 | ||
892 | 0x00, 0x06, 0xA0, 0x08, // 0006A008 | ||
893 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
894 | 0x00, 0x06, 0x98, 0x20, // 00069820 | ||
895 | 0x00, 0x07, 0x90, 0x06, // 00079006 | ||
896 | 0x00, 0x08, 0x98, 0x42, // 00089842 | ||
897 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
898 | 0x00, 0x02, 0x18, 0x00, // 00021800 | ||
899 | 0x00, 0x07, 0x56, 0x00, // 00075600 | ||
900 | 0x00, 0x07, 0x14, 0x02, // 00071402 | ||
901 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
902 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
903 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
904 | 0x00, 0x07, 0x90, 0x06, // 00079006 | ||
905 | 0x00, 0x02, 0x10, 0x54, // 00021054 | ||
906 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
907 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
908 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
909 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
910 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
911 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
912 | 0x00, 0x0B, 0x64, 0x68, // 000B6468 | ||
913 | 0x00, 0x0A, 0xBE, 0xC4, // 000ABEC4 | ||
914 | 0x00, 0x09, 0xA4, 0x46, // 0009A446 | ||
915 | 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7 | ||
916 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
917 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
918 | 0x00, 0x06, 0xA4, 0x05, // 0006A405 | ||
919 | 0x00, 0x06, 0xBC, 0x0D, // 0006BC0D | ||
920 | 0x00, 0x01, 0x41, 0x00, // 00014100 | ||
921 | 0x00, 0x06, 0xAC, 0x0F, // 0006AC0F | ||
922 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
923 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
924 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
925 | 0x00, 0x06, 0xB4, 0x0D, // 0006B40D | ||
926 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
927 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
928 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
929 | 0x00, 0x09, 0xBD, 0x4A, // 0009BD4A | ||
930 | 0x00, 0x09, 0xB6, 0x7C, // 0009B67C | ||
931 | 0x00, 0x0A, 0xE4, 0x40, // 000AE440 | ||
932 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
933 | 0x00, 0x07, 0x6F, 0xFF, // 00076FFF | ||
934 | 0x00, 0x07, 0x2F, 0xFF, // 00072FFF | ||
935 | 0x00, 0x01, 0x03, 0xA6, // 000103A6 | ||
936 | 0x00, 0x0A, 0x2D, 0x7C, // 000A2D7C | ||
937 | 0x00, 0x09, 0xA4, 0x41, // 0009A441 | ||
938 | 0x00, 0x09, 0xBF, 0x41, // 0009BF41 | ||
939 | 0x00, 0x08, 0xE4, 0xC5, // 0008E4C5 | ||
940 | 0x00, 0x09, 0x1E, 0xC4, // 00091EC4 | ||
941 | 0x00, 0x02, 0x87, 0x10, // 00028710 | ||
942 | 0x00, 0x0A, 0xE3, 0xC3, // 000AE3C3 | ||
943 | 0x00, 0x08, 0xBF, 0xC5, // 0008BFC5 | ||
944 | 0x00, 0x07, 0x75, 0xD9, // 000775D9 | ||
945 | 0x00, 0x07, 0x36, 0x23, // 00073623 | ||
946 | 0x00, 0x09, 0xA7, 0x40, // 0009A740 | ||
947 | 0x00, 0x07, 0x6D, 0x14, // 00076D14 | ||
948 | 0x00, 0x0C, 0x36, 0x27, // 000C3627 | ||
949 | 0x00, 0x07, 0x2F, 0x2C, // 00072F2C | ||
950 | 0x00, 0x0B, 0x7D, 0x75, // 000B7D75 | ||
951 | 0x00, 0x08, 0xAD, 0xC4, // 0008ADC4 | ||
952 | 0x00, 0x00, 0xC7, 0x87, // 0000C787 | ||
953 | 0x00, 0x0A, 0x6E, 0xC6, // 000A6EC6 | ||
954 | 0x00, 0x09, 0xA4, 0x44, // 0009A444 | ||
955 | 0x00, 0x08, 0xAD, 0x41, // 0008AD41 | ||
956 | 0x00, 0x09, 0xA4, 0xC5, // 0009A4C5 | ||
957 | 0x00, 0x09, 0xAD, 0x43, // 0009AD43 | ||
958 | 0x00, 0x09, 0xB4, 0x6D, // 0009B46D | ||
959 | 0x00, 0x09, 0xA4, 0x49, // 0009A449 | ||
960 | 0x00, 0x0A, 0xF6, 0x7F, // 000AF67F | ||
961 | 0x00, 0x0A, 0x24, 0x77, // 000A2477 | ||
962 | 0x00, 0x02, 0x86, 0x30, // 00028630 | ||
963 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
964 | 0x00, 0x08, 0xBE, 0x48, // 0008BE48 | ||
965 | 0x00, 0x02, 0x87, 0x18, // 00028718 | ||
966 | 0x00, 0x09, 0xA4, 0x49, // 0009A449 | ||
967 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
968 | 0x00, 0x09, 0xA4, 0x77, // 0009A477 | ||
969 | 0x00, 0x0B, 0x7F, 0x74, // 000B7F74 | ||
970 | 0x00, 0x08, 0xB6, 0x44, // 0008B644 | ||
971 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
972 | 0x00, 0x0B, 0x5B, 0x41, // 000B5B41 | ||
973 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
974 | 0x00, 0x09, 0x9B, 0x53, // 00099B53 | ||
975 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
976 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
977 | 0x00, 0x00, 0xC7, 0x87, // 0000C787 | ||
978 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
979 | 0x00, 0x09, 0xB6, 0x4F, // 0009B64F | ||
980 | 0x00, 0x08, 0x35, 0xC6, // 000835C6 | ||
981 | 0x00, 0x0B, 0x3F, 0xC7, // 000B3FC7 | ||
982 | 0x00, 0x0A, 0xEC, 0xC4, // 000AECC4 | ||
983 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
984 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
985 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
986 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
987 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
988 | 0x00, 0x07, 0x0D, 0x00, // 00070D00 | ||
989 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
990 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
991 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
992 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
993 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
994 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
995 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
996 | 0x00, 0x07, 0x1E, 0x69, // 00071E69 | ||
997 | 0x00, 0x0B, 0x64, 0x7F, // 000B647F | ||
998 | 0x00, 0x06, 0x90, 0x78, // 00069078 | ||
999 | 0x00, 0x0B, 0x6D, 0x7E, // 000B6D7E | ||
1000 | 0x00, 0x06, 0x98, 0x22, // 00069822 | ||
1001 | 0x00, 0x0A, 0xDF, 0x84, // 000ADF84 | ||
1002 | 0x00, 0x0A, 0xDF, 0x85, // 000ADF85 | ||
1003 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
1004 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1005 | 0x00, 0x06, 0x98, 0x77, // 00069877 | ||
1006 | 0x00, 0x06, 0x98, 0x7A, // 0006987A | ||
1007 | 0x00, 0x06, 0xB8, 0x68, // 0006B868 | ||
1008 | 0x00, 0x06, 0xB8, 0x69, // 0006B869 | ||
1009 | 0x00, 0x06, 0xB8, 0x6F, // 0006B86F | ||
1010 | 0x00, 0x06, 0xB8, 0x70, // 0006B870 | ||
1011 | 0x00, 0x06, 0xB8, 0x71, // 0006B871 | ||
1012 | 0x00, 0x06, 0xB8, 0x72, // 0006B872 | ||
1013 | 0x00, 0x06, 0xB8, 0x73, // 0006B873 | ||
1014 | 0x00, 0x06, 0xB8, 0x74, // 0006B874 | ||
1015 | 0x00, 0x06, 0xB8, 0x75, // 0006B875 | ||
1016 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1017 | 0x00, 0x06, 0x28, 0x6A, // 0006286A | ||
1018 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1019 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1020 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1021 | 0x00, 0x06, 0xA8, 0x61, // 0006A861 | ||
1022 | 0x00, 0x07, 0x65, 0x5D, // 0007655D | ||
1023 | 0x00, 0x07, 0x24, 0x10, // 00072410 | ||
1024 | 0x00, 0x06, 0x30, 0x6C, // 0006306C | ||
1025 | 0x00, 0x07, 0x6D, 0x59, // 00076D59 | ||
1026 | 0x00, 0x07, 0x2C, 0x50, // 00072C50 | ||
1027 | 0x00, 0x08, 0xB6, 0x40, // 0008B640 | ||
1028 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1029 | 0x00, 0x07, 0x65, 0x05, // 00076505 | ||
1030 | 0x00, 0x07, 0x25, 0x70, // 00072570 | ||
1031 | 0x00, 0x07, 0x6D, 0x15, // 00076D15 | ||
1032 | 0x00, 0x07, 0x2D, 0x60, // 00072D60 | ||
1033 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1034 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1035 | 0x00, 0x06, 0xA0, 0x66, // 0006A066 | ||
1036 | 0x00, 0x06, 0xA8, 0x67, // 0006A867 | ||
1037 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1038 | 0x00, 0x07, 0x1C, 0x20, // 00071C20 | ||
1039 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
1040 | 0x00, 0x07, 0x3D, 0xFF, // 00073DFF | ||
1041 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1042 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
1043 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1044 | 0x00, 0x07, 0x0E, 0x00, // 00070E00 | ||
1045 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
1046 | 0x00, 0x07, 0x35, 0xFF, // 000735FF | ||
1047 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1048 | 0x00, 0x07, 0x26, 0x98, // 00072698 | ||
1049 | 0x00, 0x07, 0x6C, 0x01, // 00076C01 | ||
1050 | 0x00, 0x07, 0x2C, 0x90, // 00072C90 | ||
1051 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1052 | 0x00, 0x07, 0x04, 0x90, // 00070490 | ||
1053 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1054 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
1055 | 0x00, 0x06, 0x98, 0x15, // 00069815 | ||
1056 | 0x00, 0x06, 0xB8, 0x16, // 0006B816 | ||
1057 | 0x00, 0x06, 0xB4, 0x14, // 0006B414 | ||
1058 | 0x00, 0x06, 0x88, 0x28, // 00068828 | ||
1059 | 0x00, 0x06, 0x88, 0x22, // 00068822 | ||
1060 | 0x00, 0x06, 0x90, 0x2E, // 0006902E | ||
1061 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
1062 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
1063 | 0x00, 0x06, 0x9C, 0x1C, // 00069C1C | ||
1064 | 0x00, 0x06, 0xB4, 0x26, // 0006B426 | ||
1065 | 0x00, 0x06, 0xB4, 0x24, // 0006B424 | ||
1066 | 0x00, 0x06, 0xB4, 0x2E, // 0006B42E | ||
1067 | 0x00, 0x06, 0xA0, 0x29, // 0006A029 | ||
1068 | 0x00, 0x06, 0xA8, 0x1D, // 0006A81D | ||
1069 | 0x00, 0x06, 0xA8, 0x21, // 0006A821 | ||
1070 | 0x00, 0x06, 0xA8, 0x2F, // 0006A82F | ||
1071 | 0x00, 0x06, 0x84, 0x1D, // 0006841D | ||
1072 | 0x00, 0x08, 0x3F, 0x41, // 00083F41 | ||
1073 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1074 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1075 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1076 | 0x00, 0x01, 0x01, 0x21, // 00010121 | ||
1077 | 0x00, 0x06, 0xB8, 0x6E, // 0006B86E | ||
1078 | 0x00, 0x07, 0xA8, 0x0F, // 0007A80F | ||
1079 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1080 | 0x00, 0x06, 0x38, 0x78, // 00063878 | ||
1081 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1082 | 0x00, 0x07, 0x05, 0x89, // 00070589 | ||
1083 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1084 | 0x00, 0x07, 0x0D, 0x4B, // 00070D4B | ||
1085 | 0x00, 0x07, 0x54, 0x05, // 00075405 | ||
1086 | 0x00, 0x07, 0x15, 0x59, // 00071559 | ||
1087 | 0x00, 0x07, 0x5C, 0x05, // 00075C05 | ||
1088 | 0x00, 0x07, 0x1D, 0xBD, // 00071DBD | ||
1089 | 0x00, 0x08, 0xBF, 0x40, // 0008BF40 | ||
1090 | 0x00, 0x02, 0x9F, 0x40, // 00029F40 | ||
1091 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1092 | 0x00, 0x07, 0x04, 0xC8, // 000704C8 | ||
1093 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1094 | 0x00, 0x07, 0x0C, 0xEE, // 00070CEE | ||
1095 | 0x00, 0x07, 0x54, 0x05, // 00075405 | ||
1096 | 0x00, 0x07, 0x14, 0xF8, // 000714F8 | ||
1097 | 0x00, 0x07, 0x5C, 0x05, // 00075C05 | ||
1098 | 0x00, 0x07, 0x1D, 0x16, // 00071D16 | ||
1099 | 0x00, 0x06, 0x80, 0x09, // 00068009 | ||
1100 | 0x00, 0x06, 0x88, 0x0D, // 0006880D | ||
1101 | 0x00, 0x06, 0x90, 0x0C, // 0006900C | ||
1102 | 0x00, 0x06, 0x98, 0x0B, // 0006980B | ||
1103 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1104 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
1105 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1106 | 0x00, 0x07, 0x27, 0x20, // 00072720 | ||
1107 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1108 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
1109 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1110 | 0x00, 0x04, 0x3F, 0x00, // 00043F00 | ||
1111 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
1112 | 0x00, 0x0A, 0xFF, 0x44, // 000AFF44 | ||
1113 | 0x00, 0x06, 0xA0, 0x5B, // 0006A05B | ||
1114 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1115 | 0x00, 0x07, 0x27, 0x00, // 00072700 | ||
1116 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1117 | 0x00, 0x07, 0x1C, 0x10, // 00071C10 | ||
1118 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
1119 | 0x00, 0x06, 0xA0, 0x5B, // 0006A05B | ||
1120 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
1121 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1122 | 0x00, 0x07, 0x64, 0x04, // 00076404 | ||
1123 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
1124 | 0x00, 0x07, 0x1C, 0x30, // 00071C30 | ||
1125 | 0x00, 0x08, 0x24, 0xC7, // 000824C7 | ||
1126 | 0x00, 0x06, 0x88, 0x4B, // 0006884B | ||
1127 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1128 | 0x00, 0x06, 0x9C, 0x06, // 00069C06 | ||
1129 | 0x00, 0x06, 0xA0, 0x5B, // 0006A05B | ||
1130 | 0x00, 0x06, 0xA4, 0x76, // 0006A476 | ||
1131 | 0x00, 0x06, 0x28, 0x77, // 00062877 | ||
1132 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1133 | 0x00, 0x07, 0x16, 0x40, // 00071640 | ||
1134 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1135 | 0x00, 0x07, 0x24, 0x90, // 00072490 | ||
1136 | 0x00, 0x0B, 0x49, 0x7D, // 000B497D | ||
1137 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1138 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
1139 | 0x00, 0x06, 0x90, 0x1E, // 0006901E | ||
1140 | 0x00, 0x06, 0xA0, 0x1F, // 0006A01F | ||
1141 | 0x00, 0x06, 0x88, 0x14, // 00068814 | ||
1142 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1143 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
1144 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
1145 | 0x00, 0x04, 0x1F, 0x08, // 00041F08 | ||
1146 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
1147 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
1148 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1149 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
1150 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
1151 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
1152 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1153 | 0x00, 0x07, 0x88, 0x0D, // 0007880D | ||
1154 | 0x00, 0x07, 0x90, 0x0D, // 0007900D | ||
1155 | 0x00, 0x07, 0x98, 0x0D, // 0007980D | ||
1156 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1157 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1158 | 0x00, 0x00, 0xC1, 0x05, // 0000C105 | ||
1159 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1160 | 0x00, 0x07, 0x07, 0x43, // 00070743 | ||
1161 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1162 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1163 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1164 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1165 | 0x00, 0x06, 0x38, 0x61, // 00063861 | ||
1166 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1167 | 0x00, 0x08, 0xBF, 0x40, // 0008BF40 | ||
1168 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1169 | 0x00, 0x02, 0x13, 0x6E, // 0002136E | ||
1170 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1171 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1172 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
1173 | 0x00, 0x06, 0x18, 0x1C, // 0006181C | ||
1174 | 0x00, 0x09, 0x12, 0xC0, // 000912C0 | ||
1175 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
1176 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1177 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1178 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1179 | 0x00, 0x08, 0x9B, 0x44, // 00089B44 | ||
1180 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1181 | 0x00, 0x08, 0x1B, 0xC2, // 00081BC2 | ||
1182 | 0x00, 0x07, 0x45, 0x5D, // 0007455D | ||
1183 | 0x00, 0x07, 0x04, 0x10, // 00070410 | ||
1184 | 0x00, 0x07, 0x4D, 0x59, // 00074D59 | ||
1185 | 0x00, 0x07, 0x0C, 0x50, // 00070C50 | ||
1186 | 0x00, 0x06, 0x98, 0x1C, // 0006981C | ||
1187 | 0x00, 0x00, 0xC1, 0x04, // 0000C104 | ||
1188 | 0x00, 0x07, 0x54, 0x04, // 00075404 | ||
1189 | 0x00, 0x07, 0x17, 0x60, // 00071760 | ||
1190 | 0x00, 0x09, 0x80, 0x48, // 00098048 | ||
1191 | 0x00, 0x09, 0x89, 0x78, // 00098978 | ||
1192 | 0x00, 0x08, 0x38, 0xC1, // 000838C1 | ||
1193 | 0x00, 0x06, 0x90, 0x0F, // 0006900F | ||
1194 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1195 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1196 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1197 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1198 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1199 | 0x00, 0x07, 0x16, 0x65, // 00071665 | ||
1200 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
1201 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1202 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1203 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
1204 | 0x00, 0x07, 0x88, 0x03, // 00078803 | ||
1205 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1206 | 0x00, 0x06, 0x88, 0x69, // 00068869 | ||
1207 | 0x00, 0x06, 0x88, 0x61, // 00068861 | ||
1208 | 0x00, 0x06, 0x08, 0x6F, // 0006086F | ||
1209 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
1210 | 0x00, 0x08, 0x89, 0x41, // 00088941 | ||
1211 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1212 | 0x00, 0x02, 0x13, 0x8B, // 0002138B | ||
1213 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1214 | 0x00, 0x08, 0x88, 0x42, // 00088842 | ||
1215 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
1216 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1217 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1218 | 0x00, 0x00, 0xC1, 0x01, // 0000C101 | ||
1219 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1220 | 0x00, 0x07, 0x07, 0x7F, // 0007077F | ||
1221 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1222 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1223 | 0x00, 0x06, 0x90, 0x6F, // 0006906F | ||
1224 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1225 | 0x00, 0x06, 0x10, 0x66, // 00061066 | ||
1226 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
1227 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1228 | 0x00, 0x02, 0x16, 0x14, // 00021614 | ||
1229 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1230 | 0x00, 0x06, 0x10, 0x67, // 00061067 | ||
1231 | 0x00, 0x08, 0x91, 0xC2, // 000891C2 | ||
1232 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1233 | 0x00, 0x02, 0x16, 0x14, // 00021614 | ||
1234 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1235 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1236 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1237 | 0x00, 0x06, 0x10, 0x76, // 00061076 | ||
1238 | 0x00, 0x06, 0x08, 0x7A, // 0006087A | ||
1239 | 0x00, 0x0A, 0x00, 0xC2, // 000A00C2 | ||
1240 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1241 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1242 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1243 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1244 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1245 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
1246 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1247 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
1248 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
1249 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1250 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1251 | 0x00, 0x06, 0x0C, 0x26, // 00060C26 | ||
1252 | 0x00, 0x06, 0x14, 0x1C, // 0006141C | ||
1253 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
1254 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
1255 | 0x00, 0x08, 0x89, 0xC2, // 000889C2 | ||
1256 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1257 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
1258 | 0x00, 0x06, 0x24, 0x24, // 00062424 | ||
1259 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
1260 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1261 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
1262 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
1263 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1264 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
1265 | 0x00, 0x06, 0x24, 0x2E, // 0006242E | ||
1266 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
1267 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1268 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
1269 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
1270 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1271 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
1272 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
1273 | 0x00, 0x07, 0x2C, 0x20, // 00072C20 | ||
1274 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1275 | 0x00, 0x08, 0x89, 0xC5, // 000889C5 | ||
1276 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
1277 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1278 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1279 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1280 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1281 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1282 | 0x00, 0x0B, 0x6D, 0x70, // 000B6D70 | ||
1283 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1284 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1285 | 0x00, 0x04, 0xB8, 0x0D, // 0004B80D | ||
1286 | 0x00, 0x06, 0xA8, 0x79, // 0006A879 | ||
1287 | 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C | ||
1288 | 0x00, 0x00, 0xC1, 0x01, // 0000C101 | ||
1289 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1290 | 0x00, 0x07, 0x07, 0xC5, // 000707C5 | ||
1291 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1292 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1293 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1294 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1295 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
1296 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1297 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1298 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1299 | 0x00, 0x08, 0x29, 0x40, // 00082940 | ||
1300 | 0x00, 0x08, 0x08, 0x40, // 00080840 | ||
1301 | 0x00, 0x0C, 0x31, 0x08, // 000C3108 | ||
1302 | 0x00, 0x0E, 0x31, 0x09, // 000E3109 | ||
1303 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1304 | 0x00, 0x06, 0x10, 0x73, // 00061073 | ||
1305 | 0x00, 0x0C, 0x01, 0x08, // 000C0108 | ||
1306 | 0x00, 0x0E, 0x01, 0x09, // 000E0109 | ||
1307 | 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C | ||
1308 | 0x00, 0x09, 0xA7, 0x7F, // 0009A77F | ||
1309 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1310 | 0x00, 0x08, 0x36, 0x42, // 00083642 | ||
1311 | 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C | ||
1312 | 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F | ||
1313 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1314 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
1315 | 0x00, 0x06, 0x20, 0x79, // 00062079 | ||
1316 | 0x00, 0x08, 0x12, 0x42, // 00081242 | ||
1317 | 0x00, 0x08, 0xA4, 0x41, // 0008A441 | ||
1318 | 0x00, 0x07, 0xF4, 0x0C, // 0007F40C | ||
1319 | 0x00, 0x07, 0xC4, 0x0C, // 0007C40C | ||
1320 | 0x00, 0x02, 0x9F, 0x50, // 00029F50 | ||
1321 | 0x00, 0x06, 0x90, 0x73, // 00069073 | ||
1322 | 0x00, 0x06, 0xA0, 0x79, // 0006A079 | ||
1323 | 0x00, 0x08, 0x9B, 0x41, // 00089B41 | ||
1324 | 0x00, 0x02, 0x87, 0x20, // 00028720 | ||
1325 | 0x00, 0x08, 0x0D, 0x40, // 00080D40 | ||
1326 | 0x00, 0x08, 0x05, 0x40, // 00080540 | ||
1327 | 0x00, 0x02, 0x13, 0xCB, // 000213CB | ||
1328 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1329 | 0x00, 0x02, 0x13, 0xBE, // 000213BE | ||
1330 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1331 | 0x00, 0x06, 0x00, 0x74, // 00060074 | ||
1332 | 0x00, 0x06, 0x0C, 0x1C, // 00060C1C | ||
1333 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1334 | 0x00, 0x07, 0x14, 0x80, // 00071480 | ||
1335 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
1336 | 0x00, 0x02, 0x9E, 0x48, // 00029E48 | ||
1337 | 0x00, 0x08, 0x91, 0xC2, // 000891C2 | ||
1338 | 0x00, 0x02, 0x89, 0x38, // 00028938 | ||
1339 | 0x00, 0x02, 0x15, 0xDB, // 000215DB | ||
1340 | 0x00, 0x07, 0x44, 0x04, // 00074404 | ||
1341 | 0x00, 0x07, 0x07, 0xF8, // 000707F8 | ||
1342 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1343 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1344 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1345 | 0x00, 0x06, 0x80, 0x0E, // 0006800E | ||
1346 | 0x00, 0x02, 0x16, 0x52, // 00021652 | ||
1347 | 0x00, 0x07, 0x4C, 0x04, // 00074C04 | ||
1348 | 0x00, 0x07, 0x0F, 0xFF, // 00070FFF | ||
1349 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1350 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1351 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1352 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
1353 | 0x00, 0x06, 0x00, 0x69, // 00060069 | ||
1354 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1355 | 0x00, 0x07, 0x0E, 0x65, // 00070E65 | ||
1356 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
1357 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
1358 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
1359 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
1360 | 0x00, 0x0A, 0x12, 0xC3, // 000A12C3 | ||
1361 | 0x00, 0x06, 0x88, 0x22, // 00068822 | ||
1362 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
1363 | 0x00, 0x0A, 0xC0, 0xC2, // 000AC0C2 | ||
1364 | 0x00, 0x04, 0x0F, 0x00, // 00040F00 | ||
1365 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1366 | 0x00, 0x02, 0x14, 0x14, // 00021414 | ||
1367 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1368 | 0x00, 0x08, 0x09, 0x41, // 00080941 | ||
1369 | 0x00, 0x06, 0x00, 0x6A, // 0006006A | ||
1370 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1371 | 0x00, 0x06, 0x80, 0x69, // 00068069 | ||
1372 | 0x00, 0x07, 0x88, 0x07, // 00078807 | ||
1373 | 0x00, 0x06, 0x80, 0x6F, // 0006806F | ||
1374 | 0x00, 0x00, 0xC1, 0x03, // 0000C103 | ||
1375 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1376 | 0x00, 0x07, 0x04, 0x1B, // 0007041B | ||
1377 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1378 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1379 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1380 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1381 | 0x00, 0x06, 0x04, 0x26, // 00060426 | ||
1382 | 0x00, 0x06, 0x28, 0x7A, // 0006287A | ||
1383 | 0x00, 0x06, 0x38, 0x7A, // 0006387A | ||
1384 | 0x00, 0x06, 0x0C, 0x1C, // 00060C1C | ||
1385 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1386 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
1387 | 0x00, 0x06, 0x18, 0x70, // 00061870 | ||
1388 | 0x00, 0x08, 0x80, 0xC1, // 000880C1 | ||
1389 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1390 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1391 | 0x00, 0x07, 0x74, 0x00, // 00077400 | ||
1392 | 0x00, 0x07, 0x34, 0x40, // 00073440 | ||
1393 | 0x00, 0x06, 0x08, 0x74, // 00060874 | ||
1394 | 0x00, 0x08, 0xA5, 0x41, // 0008A541 | ||
1395 | 0x00, 0x02, 0x9E, 0x30, // 00029E30 | ||
1396 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1397 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1398 | 0x00, 0x08, 0xA0, 0xC6, // 0008A0C6 | ||
1399 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
1400 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1401 | 0x00, 0x02, 0x81, 0x80, // 00028180 | ||
1402 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1403 | 0x00, 0x02, 0x9F, 0x70, // 00029F70 | ||
1404 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1405 | 0x00, 0x07, 0x24, 0x21, // 00072421 | ||
1406 | 0x00, 0x08, 0x93, 0xC0, // 000893C0 | ||
1407 | 0x00, 0x06, 0x80, 0x70, // 00068070 | ||
1408 | 0x00, 0x06, 0xA8, 0x7A, // 0006A87A | ||
1409 | 0x00, 0x08, 0x94, 0xC2, // 000894C2 | ||
1410 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
1411 | 0x00, 0x02, 0x16, 0x11, // 00021611 | ||
1412 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1413 | 0x00, 0x07, 0x04, 0x40, // 00070440 | ||
1414 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1415 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1416 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1417 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1418 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1419 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
1420 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1421 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
1422 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1423 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1424 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
1425 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
1426 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1427 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1428 | 0x00, 0x02, 0x81, 0x10, // 00028110 | ||
1429 | 0x00, 0x02, 0x14, 0xAC, // 000214AC | ||
1430 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1431 | 0x00, 0x07, 0x80, 0x07, // 00078007 | ||
1432 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1433 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
1434 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
1435 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
1436 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1437 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1438 | 0x00, 0x0A, 0xC7, 0x81, // 000AC781 | ||
1439 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1440 | 0x00, 0x02, 0x14, 0xC1, // 000214C1 | ||
1441 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1442 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1443 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
1444 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1445 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
1446 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1447 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
1448 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1449 | 0x00, 0x06, 0x10, 0x7A, // 0006107A | ||
1450 | 0x00, 0x06, 0x18, 0x77, // 00061877 | ||
1451 | 0x00, 0x04, 0x25, 0x08, // 00042508 | ||
1452 | 0x00, 0x04, 0x2D, 0x08, // 00042D08 | ||
1453 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
1454 | 0x00, 0x04, 0x3D, 0x08, // 00043D08 | ||
1455 | 0x00, 0x0A, 0xCF, 0x81, // 000ACF81 | ||
1456 | 0x00, 0x02, 0x9F, 0x70, // 00029F70 | ||
1457 | 0x00, 0x06, 0x0C, 0x6A, // 00060C6A | ||
1458 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1459 | 0x00, 0x02, 0x9E, 0x50, // 00029E50 | ||
1460 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1461 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1462 | 0x00, 0x0B, 0x49, 0x41, // 000B4941 | ||
1463 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1464 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1465 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1466 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
1467 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1468 | 0x00, 0x06, 0x0C, 0x65, // 00060C65 | ||
1469 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
1470 | 0x00, 0x02, 0x81, 0x70, // 00028170 | ||
1471 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1472 | 0x00, 0x06, 0x0C, 0x6A, // 00060C6A | ||
1473 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1474 | 0x00, 0x02, 0x9F, 0x50, // 00029F50 | ||
1475 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1476 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1477 | 0x00, 0x0B, 0x49, 0x41, // 000B4941 | ||
1478 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
1479 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
1480 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
1481 | 0x00, 0x04, 0x3F, 0x08, // 00043F08 | ||
1482 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1483 | 0x00, 0x06, 0x0C, 0x65, // 00060C65 | ||
1484 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
1485 | 0x00, 0x06, 0x04, 0x6A, // 0006046A | ||
1486 | 0x00, 0x06, 0x14, 0x65, // 00061465 | ||
1487 | 0x00, 0x09, 0x00, 0xC2, // 000900C2 | ||
1488 | 0x00, 0x08, 0x11, 0x41, // 00081141 | ||
1489 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
1490 | 0x00, 0x08, 0x10, 0x41, // 00081041 | ||
1491 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
1492 | 0x00, 0x08, 0x08, 0x40, // 00080840 | ||
1493 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1494 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
1495 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
1496 | 0x00, 0x06, 0x8C, 0x6A, // 00068C6A | ||
1497 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
1498 | 0x00, 0x06, 0x98, 0x77, // 00069877 | ||
1499 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1500 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
1501 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
1502 | 0x00, 0x07, 0x0C, 0x02, // 00070C02 | ||
1503 | 0x00, 0x06, 0x10, 0x7A, // 0006107A | ||
1504 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
1505 | 0x00, 0x0A, 0xC3, 0x81, // 000AC381 | ||
1506 | 0x00, 0x02, 0x9F, 0x58, // 00029F58 | ||
1507 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1508 | 0x00, 0x02, 0x9E, 0x40, // 00029E40 | ||
1509 | 0x00, 0x0B, 0x52, 0x7E, // 000B527E | ||
1510 | 0x00, 0x02, 0x16, 0x2E, // 0002162E | ||
1511 | 0x00, 0x07, 0x44, 0x05, // 00074405 | ||
1512 | 0x00, 0x07, 0x04, 0xAC, // 000704AC | ||
1513 | 0x00, 0x06, 0x90, 0x7A, // 0006907A | ||
1514 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1515 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1516 | 0x00, 0x06, 0x80, 0x0F, // 0006800F | ||
1517 | 0x00, 0x02, 0x81, 0x18, // 00028118 | ||
1518 | 0x00, 0x08, 0x9A, 0x42, // 00089A42 | ||
1519 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1520 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
1521 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1522 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1523 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1524 | 0x00, 0x06, 0x90, 0x7A, // 0006907A | ||
1525 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1526 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
1527 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1528 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1529 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1530 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1531 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1532 | 0x00, 0x06, 0xC0, 0x6D, // 0006C06D | ||
1533 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
1534 | 0x00, 0x07, 0x6C, 0x05, // 00076C05 | ||
1535 | 0x00, 0x07, 0x2C, 0xBA, // 00072CBA | ||
1536 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1537 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1538 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1539 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1540 | 0x00, 0x02, 0x13, 0x3B, // 0002133B | ||
1541 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1542 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1543 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1544 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1545 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1546 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1547 | 0x00, 0x00, 0xC1, 0x80, // 0000C180 | ||
1548 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1549 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1550 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1551 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1552 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1553 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1554 | 0x00, 0x06, 0x10, 0x68, // 00061068 | ||
1555 | 0x00, 0x04, 0x04, 0x08, // 00040408 | ||
1556 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
1557 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1558 | 0x00, 0x02, 0x14, 0xDD, // 000214DD | ||
1559 | 0x00, 0x06, 0x28, 0x6C, // 0006286C | ||
1560 | 0x00, 0x04, 0x0C, 0x08, // 00040C08 | ||
1561 | 0x00, 0x07, 0x64, 0x3F, // 0007643F | ||
1562 | 0x00, 0x07, 0x27, 0xFF, // 000727FF | ||
1563 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1564 | 0x00, 0x09, 0xA4, 0x44, // 0009A444 | ||
1565 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
1566 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1567 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1568 | 0x00, 0x0A, 0xD2, 0xC4, // 000AD2C4 | ||
1569 | 0x00, 0x09, 0x80, 0x48, // 00098048 | ||
1570 | 0x00, 0x09, 0xB1, 0x78, // 0009B178 | ||
1571 | 0x00, 0x08, 0x00, 0xC6, // 000800C6 | ||
1572 | 0x00, 0x09, 0x89, 0x48, // 00098948 | ||
1573 | 0x00, 0x09, 0xB2, 0x78, // 0009B278 | ||
1574 | 0x00, 0x08, 0x09, 0xC6, // 000809C6 | ||
1575 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1576 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1577 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
1578 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1579 | 0x00, 0x09, 0x90, 0x48, // 00099048 | ||
1580 | 0x00, 0x09, 0xB0, 0x78, // 0009B078 | ||
1581 | 0x00, 0x08, 0x02, 0xC6, // 000802C6 | ||
1582 | 0x00, 0x09, 0x91, 0x48, // 00099148 | ||
1583 | 0x00, 0x09, 0xB1, 0x78, // 0009B178 | ||
1584 | 0x00, 0x08, 0x0A, 0xC6, // 00080AC6 | ||
1585 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1586 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1587 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1588 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1589 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1590 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1591 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1592 | 0x00, 0x06, 0x18, 0x68, // 00061868 | ||
1593 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
1594 | 0x00, 0x09, 0x9B, 0x7D, // 00099B7D | ||
1595 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1596 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
1597 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1598 | 0x00, 0x08, 0x81, 0xC0, // 000881C0 | ||
1599 | 0x00, 0x09, 0x03, 0xC0, // 000903C0 | ||
1600 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1601 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1602 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
1603 | 0x00, 0x01, 0x0A, 0x20, // 00010A20 | ||
1604 | 0x00, 0x0B, 0x49, 0x7F, // 000B497F | ||
1605 | 0x00, 0x04, 0x14, 0x00, // 00041400 | ||
1606 | 0x00, 0x0B, 0x76, 0x78, // 000B7678 | ||
1607 | 0x00, 0x09, 0x92, 0x48, // 00099248 | ||
1608 | 0x00, 0x09, 0x89, 0x48, // 00098948 | ||
1609 | 0x00, 0x09, 0x9A, 0x68, // 00099A68 | ||
1610 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
1611 | 0x00, 0x08, 0x9F, 0xC1, // 00089FC1 | ||
1612 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1613 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1614 | 0x00, 0x06, 0xB0, 0x68, // 0006B068 | ||
1615 | 0x00, 0x09, 0x92, 0x48, // 00099248 | ||
1616 | 0x00, 0x09, 0x89, 0x48, // 00098948 | ||
1617 | 0x00, 0x09, 0x9A, 0x68, // 00099A68 | ||
1618 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
1619 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1620 | 0x00, 0x04, 0x14, 0x08, // 00041408 | ||
1621 | 0x00, 0x08, 0x9F, 0xC1, // 00089FC1 | ||
1622 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1623 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1624 | 0x00, 0x06, 0xB0, 0x68, // 0006B068 | ||
1625 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1626 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1627 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1628 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1629 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1630 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1631 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1632 | 0x00, 0x06, 0x30, 0x71, // 00063071 | ||
1633 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
1634 | 0x00, 0x08, 0xB6, 0x40, // 0008B640 | ||
1635 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1636 | 0x00, 0x02, 0x15, 0x31, // 00021531 | ||
1637 | 0x00, 0x06, 0x18, 0x7A, // 0006187A | ||
1638 | 0x00, 0x06, 0x30, 0x72, // 00063072 | ||
1639 | 0x00, 0x07, 0x06, 0x00, // 00070600 | ||
1640 | 0x00, 0x06, 0x08, 0x28, // 00060828 | ||
1641 | 0x00, 0x08, 0x38, 0x41, // 00083841 | ||
1642 | 0x00, 0x08, 0x90, 0xC1, // 000890C1 | ||
1643 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
1644 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1645 | 0x00, 0x07, 0x54, 0x03, // 00075403 | ||
1646 | 0x00, 0x07, 0x17, 0xF0, // 000717F0 | ||
1647 | 0x00, 0x06, 0xB8, 0x22, // 0006B822 | ||
1648 | 0x00, 0x01, 0x04, 0x90, // 00010490 | ||
1649 | 0x00, 0x09, 0x92, 0x48, // 00099248 | ||
1650 | 0x00, 0x0A, 0xE7, 0x8A, // 000AE78A | ||
1651 | 0x00, 0x0A, 0xEF, 0x8A, // 000AEF8A | ||
1652 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
1653 | 0x00, 0x09, 0xAD, 0x78, // 0009AD78 | ||
1654 | 0x00, 0x08, 0x24, 0xC5, // 000824C5 | ||
1655 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1656 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1657 | 0x00, 0x06, 0xB0, 0x72, // 0006B072 | ||
1658 | 0x00, 0x07, 0xE0, 0x0E, // 0007E00E | ||
1659 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1660 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
1661 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
1662 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1663 | 0x00, 0x06, 0xB0, 0x71, // 0006B071 | ||
1664 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
1665 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
1666 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1667 | 0x00, 0x08, 0x81, 0xC0, // 000881C0 | ||
1668 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1669 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1670 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
1671 | 0x00, 0x07, 0x1D, 0xE8, // 00071DE8 | ||
1672 | 0x00, 0x0B, 0x76, 0x7F, // 000B767F | ||
1673 | 0x00, 0x08, 0x93, 0xC0, // 000893C0 | ||
1674 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
1675 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1676 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1677 | 0x00, 0x07, 0x05, 0x38, // 00070538 | ||
1678 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1679 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1680 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1681 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1682 | 0x00, 0x06, 0xB0, 0x71, // 0006B071 | ||
1683 | 0x00, 0x06, 0xB8, 0x28, // 0006B828 | ||
1684 | 0x00, 0x06, 0x80, 0x4B, // 0006804B | ||
1685 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
1686 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
1687 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1688 | 0x00, 0x08, 0x81, 0xC0, // 000881C0 | ||
1689 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1690 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
1691 | 0x00, 0x06, 0x18, 0x68, // 00061868 | ||
1692 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1693 | 0x00, 0x0A, 0x10, 0x44, // 000A1044 | ||
1694 | 0x00, 0x0A, 0x20, 0x42, // 000A2042 | ||
1695 | 0x00, 0x08, 0x12, 0xC4, // 000812C4 | ||
1696 | 0x00, 0x09, 0x03, 0xC2, // 000903C2 | ||
1697 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1698 | 0x00, 0x0A, 0x00, 0x7C, // 000A007C | ||
1699 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1700 | 0x00, 0x07, 0x04, 0x20, // 00070420 | ||
1701 | 0x00, 0x07, 0x54, 0x05, // 00075405 | ||
1702 | 0x00, 0x07, 0x15, 0x7C, // 0007157C | ||
1703 | 0x00, 0x0B, 0x49, 0x41, // 000B4941 | ||
1704 | 0x00, 0x0B, 0x64, 0x7F, // 000B647F | ||
1705 | 0x00, 0x0B, 0x5B, 0x78, // 000B5B78 | ||
1706 | 0x00, 0x09, 0xA4, 0x7C, // 0009A47C | ||
1707 | 0x00, 0x06, 0x90, 0x0A, // 0006900A | ||
1708 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1709 | 0x00, 0x09, 0x94, 0x83, // 00099483 | ||
1710 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
1711 | 0x00, 0x09, 0x89, 0x41, // 00098941 | ||
1712 | 0x00, 0x09, 0x92, 0x41, // 00099241 | ||
1713 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1714 | 0x00, 0x08, 0x09, 0xC4, // 000809C4 | ||
1715 | 0x00, 0x01, 0x04, 0x13, // 00010413 | ||
1716 | 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1 | ||
1717 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1718 | 0x00, 0x00, 0xC1, 0x82, // 0000C182 | ||
1719 | 0x00, 0x08, 0x36, 0x41, // 00083641 | ||
1720 | 0x00, 0x09, 0x89, 0x41, // 00098941 | ||
1721 | 0x00, 0x09, 0x92, 0x41, // 00099241 | ||
1722 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1723 | 0x00, 0x08, 0x09, 0xC4, // 000809C4 | ||
1724 | 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1 | ||
1725 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1726 | 0x00, 0x00, 0xC1, 0x82, // 0000C182 | ||
1727 | 0x00, 0x04, 0x2C, 0x08, // 00042C08 | ||
1728 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1729 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1730 | 0x00, 0x02, 0x15, 0x62, // 00021562 | ||
1731 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1732 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1733 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1734 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
1735 | 0x00, 0x08, 0xAE, 0x54, // 0008AE54 | ||
1736 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1737 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1738 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1739 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1740 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1741 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1742 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1743 | 0x00, 0x06, 0xB0, 0x68, // 0006B068 | ||
1744 | 0x00, 0x04, 0x34, 0x08, // 00043408 | ||
1745 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1746 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1747 | 0x00, 0x06, 0x10, 0x68, // 00061068 | ||
1748 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1749 | 0x00, 0x08, 0x82, 0x47, // 00088247 | ||
1750 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
1751 | 0x00, 0x02, 0x15, 0x96, // 00021596 | ||
1752 | 0x00, 0x0B, 0x64, 0x41, // 000B6441 | ||
1753 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1754 | 0x00, 0x09, 0xA4, 0x78, // 0009A478 | ||
1755 | 0x00, 0x0A, 0xEC, 0x8C, // 000AEC8C | ||
1756 | 0x00, 0x0A, 0xE4, 0x7F, // 000AE47F | ||
1757 | 0x00, 0x0A, 0xF4, 0x84, // 000AF484 | ||
1758 | 0x00, 0x0A, 0xF4, 0x8C, // 000AF48C | ||
1759 | 0x00, 0x0A, 0xCC, 0x84, // 000ACC84 | ||
1760 | 0x00, 0x07, 0x64, 0x3F, // 0007643F | ||
1761 | 0x00, 0x07, 0x27, 0xFF, // 000727FF | ||
1762 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1763 | 0x00, 0x09, 0xA4, 0x44, // 0009A444 | ||
1764 | 0x00, 0x09, 0x85, 0xC2, // 000985C2 | ||
1765 | 0x00, 0x09, 0x86, 0xC3, // 000986C3 | ||
1766 | 0x00, 0x08, 0x00, 0xC0, // 000800C0 | ||
1767 | 0x00, 0x08, 0x12, 0x50, // 00081250 | ||
1768 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1769 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1770 | 0x00, 0x02, 0x87, 0x18, // 00028718 | ||
1771 | 0x00, 0x08, 0x92, 0x54, // 00089254 | ||
1772 | 0x00, 0x08, 0x2E, 0x40, // 00082E40 | ||
1773 | 0x00, 0x08, 0x31, 0x40, // 00083140 | ||
1774 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1775 | 0x00, 0x09, 0x8D, 0xC2, // 00098DC2 | ||
1776 | 0x00, 0x09, 0x8E, 0xC3, // 00098EC3 | ||
1777 | 0x00, 0x08, 0x09, 0xC1, // 000809C1 | ||
1778 | 0x00, 0x08, 0x12, 0x50, // 00081250 | ||
1779 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1780 | 0x00, 0x08, 0x9A, 0x54, // 00089A54 | ||
1781 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
1782 | 0x00, 0x08, 0x92, 0x54, // 00089254 | ||
1783 | 0x00, 0x06, 0x28, 0x6C, // 0006286C | ||
1784 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1785 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1786 | 0x00, 0x06, 0x90, 0x68, // 00069068 | ||
1787 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
1788 | 0x00, 0x02, 0x9F, 0x30, // 00029F30 | ||
1789 | 0x00, 0x09, 0x90, 0x48, // 00099048 | ||
1790 | 0x00, 0x09, 0xB0, 0x78, // 0009B078 | ||
1791 | 0x00, 0x08, 0x02, 0xC6, // 000802C6 | ||
1792 | 0x00, 0x09, 0x91, 0x48, // 00099148 | ||
1793 | 0x00, 0x09, 0xB1, 0x78, // 0009B178 | ||
1794 | 0x00, 0x08, 0x0A, 0xC6, // 00080AC6 | ||
1795 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1796 | 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4 | ||
1797 | 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4 | ||
1798 | 0x00, 0x02, 0x81, 0x18, // 00028118 | ||
1799 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
1800 | 0x00, 0x07, 0x3C, 0xC0, // 00073CC0 | ||
1801 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
1802 | 0x00, 0x07, 0x35, 0x60, // 00073560 | ||
1803 | 0x00, 0x06, 0x20, 0x2E, // 0006202E | ||
1804 | 0x00, 0x06, 0x18, 0x1C, // 0006181C | ||
1805 | 0x00, 0x06, 0x10, 0x6E, // 0006106E | ||
1806 | 0x00, 0x06, 0x00, 0x75, // 00060075 | ||
1807 | 0x00, 0x06, 0x08, 0x7A, // 0006087A | ||
1808 | 0x00, 0x06, 0xA0, 0x20, // 0006A020 | ||
1809 | 0x00, 0x08, 0x9C, 0xC3, // 00089CC3 | ||
1810 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
1811 | 0x00, 0x08, 0x1B, 0xC2, // 00081BC2 | ||
1812 | 0x00, 0x09, 0x16, 0xC3, // 000916C3 | ||
1813 | 0x00, 0x02, 0x89, 0x10, // 00028910 | ||
1814 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1815 | 0x00, 0x07, 0x04, 0x30, // 00070430 | ||
1816 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1817 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
1818 | 0x00, 0x08, 0x97, 0xC3, // 000897C3 | ||
1819 | 0x00, 0x02, 0x89, 0x10, // 00028910 | ||
1820 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
1821 | 0x00, 0x07, 0x04, 0x70, // 00070470 | ||
1822 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1823 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1824 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1825 | 0x00, 0x06, 0x98, 0x7F, // 0006987F | ||
1826 | 0x00, 0x06, 0x84, 0x06, // 00068406 | ||
1827 | 0x00, 0x06, 0x80, 0x75, // 00068075 | ||
1828 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1829 | 0x00, 0x02, 0x15, 0xFC, // 000215FC | ||
1830 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1831 | 0x00, 0x07, 0x0D, 0xE2, // 00070DE2 | ||
1832 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1833 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1834 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1835 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
1836 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1837 | 0x00, 0x07, 0x0E, 0x32, // 00070E32 | ||
1838 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
1839 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1840 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1841 | 0x00, 0x06, 0x8C, 0x22, // 00068C22 | ||
1842 | 0x00, 0x06, 0x5C, 0x14, // 00065C14 | ||
1843 | 0x00, 0x06, 0xA8, 0x74, // 0006A874 | ||
1844 | 0x00, 0x06, 0x5C, 0x24, // 00065C24 | ||
1845 | 0x00, 0x06, 0x5C, 0x26, // 00065C26 | ||
1846 | 0x00, 0x06, 0x5C, 0x2E, // 00065C2E | ||
1847 | 0x00, 0x06, 0x5C, 0x25, // 00065C25 | ||
1848 | 0x00, 0x06, 0x5C, 0x27, // 00065C27 | ||
1849 | 0x00, 0x06, 0x5C, 0x2F, // 00065C2F | ||
1850 | 0x00, 0x06, 0x5C, 0x44, // 00065C44 | ||
1851 | 0x00, 0x04, 0x80, 0x03, // 00048003 | ||
1852 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1853 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1854 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1855 | 0x00, 0x00, 0xC1, 0x06, // 0000C106 | ||
1856 | 0x00, 0x06, 0x84, 0x74, // 00068474 | ||
1857 | 0x00, 0x06, 0x84, 0x43, // 00068443 | ||
1858 | 0x00, 0x06, 0x5C, 0x3C, // 00065C3C | ||
1859 | 0x00, 0x06, 0x5C, 0x3B, // 00065C3B | ||
1860 | 0x00, 0x06, 0x5C, 0x54, // 00065C54 | ||
1861 | 0x00, 0x06, 0x5C, 0x53, // 00065C53 | ||
1862 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1863 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
1864 | 0x00, 0x07, 0x0E, 0x25, // 00070E25 | ||
1865 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1866 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1867 | 0x00, 0x06, 0xA8, 0x74, // 0006A874 | ||
1868 | 0x00, 0x06, 0x8C, 0x22, // 00068C22 | ||
1869 | 0x00, 0x06, 0x5C, 0x14, // 00065C14 | ||
1870 | 0x00, 0x06, 0x5C, 0x24, // 00065C24 | ||
1871 | 0x00, 0x06, 0x5C, 0x26, // 00065C26 | ||
1872 | 0x00, 0x06, 0x5C, 0x2E, // 00065C2E | ||
1873 | 0x00, 0x06, 0x5C, 0x25, // 00065C25 | ||
1874 | 0x00, 0x06, 0x5C, 0x27, // 00065C27 | ||
1875 | 0x00, 0x06, 0x5C, 0x2F, // 00065C2F | ||
1876 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1877 | 0x00, 0x06, 0x5C, 0x44, // 00065C44 | ||
1878 | 0x00, 0x06, 0x5C, 0x43, // 00065C43 | ||
1879 | 0x00, 0x06, 0x5C, 0x3C, // 00065C3C | ||
1880 | 0x00, 0x06, 0x5C, 0x3B, // 00065C3B | ||
1881 | 0x00, 0x06, 0x5C, 0x54, // 00065C54 | ||
1882 | 0x00, 0x06, 0x5C, 0x53, // 00065C53 | ||
1883 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1884 | 0x00, 0x07, 0x1C, 0x02, // 00071C02 | ||
1885 | 0x00, 0x02, 0x81, 0x10, // 00028110 | ||
1886 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
1887 | 0x00, 0x07, 0x1C, 0x01, // 00071C01 | ||
1888 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1889 | 0x00, 0x07, 0x16, 0x65, // 00071665 | ||
1890 | 0x00, 0x06, 0x00, 0x61, // 00060061 | ||
1891 | 0x00, 0x06, 0x20, 0x7A, // 0006207A | ||
1892 | 0x00, 0x07, 0x4C, 0x05, // 00074C05 | ||
1893 | 0x00, 0x06, 0x9C, 0x7F, // 00069C7F | ||
1894 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
1895 | 0x00, 0x04, 0x1F, 0x00, // 00041F00 | ||
1896 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
1897 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
1898 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
1899 | 0x00, 0x07, 0x0C, 0x14, // 00070C14 | ||
1900 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1901 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1902 | 0x00, 0x07, 0x98, 0x1F, // 0007981F | ||
1903 | 0x00, 0x04, 0x17, 0x00, // 00041700 | ||
1904 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
1905 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1906 | 0x00, 0x06, 0x00, 0x6A, // 0006006A | ||
1907 | 0x00, 0x08, 0x12, 0x41, // 00081241 | ||
1908 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
1909 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1910 | 0x00, 0x06, 0x80, 0x61, // 00068061 | ||
1911 | 0x00, 0x07, 0x90, 0x07, // 00079007 | ||
1912 | 0x00, 0x06, 0x3C, 0x26, // 00063C26 | ||
1913 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1914 | 0x00, 0x08, 0x3F, 0x40, // 00083F40 | ||
1915 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1916 | 0x00, 0x06, 0x1C, 0x1C, // 00061C1C | ||
1917 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1918 | 0x00, 0x06, 0xBC, 0x1C, // 0006BC1C | ||
1919 | 0x00, 0x04, 0xB0, 0x0D, // 0004B00D | ||
1920 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1921 | 0x00, 0x09, 0xB6, 0x7C, // 0009B67C | ||
1922 | 0x00, 0x01, 0x05, 0x10, // 00010510 | ||
1923 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
1924 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1925 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
1926 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
1927 | 0x00, 0x09, 0xB6, 0x7F, // 0009B67F | ||
1928 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
1929 | 0x00, 0x08, 0x09, 0x42, // 00080942 | ||
1930 | 0x00, 0x07, 0x84, 0x0C, // 0007840C | ||
1931 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
1932 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
1933 | 0x00, 0x07, 0x8C, 0x0C, // 00078C0C | ||
1934 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
1935 | 0x00, 0x07, 0x24, 0x30, // 00072430 | ||
1936 | 0x00, 0x08, 0x2D, 0x41, // 00082D41 | ||
1937 | 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5 | ||
1938 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
1939 | 0x00, 0x02, 0x16, 0x35, // 00021635 | ||
1940 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
1941 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1942 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1943 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1944 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1945 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1946 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1947 | 0x00, 0x06, 0x9C, 0x1C, // 00069C1C | ||
1948 | 0x00, 0x06, 0x04, 0x6A, // 0006046A | ||
1949 | 0x00, 0x06, 0x08, 0x77, // 00060877 | ||
1950 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
1951 | 0x00, 0x07, 0x17, 0x12, // 00071712 | ||
1952 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
1953 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
1954 | 0x00, 0x02, 0x16, 0x71, // 00021671 | ||
1955 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
1956 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
1957 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
1958 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1959 | 0x00, 0x06, 0x24, 0x66, // 00062466 | ||
1960 | 0x00, 0x06, 0x2C, 0x67, // 00062C67 | ||
1961 | 0x00, 0x06, 0x34, 0x68, // 00063468 | ||
1962 | 0x00, 0x06, 0x3C, 0x69, // 00063C69 | ||
1963 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1964 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1965 | 0x00, 0x0B, 0x64, 0xC4, // 000B64C4 | ||
1966 | 0x00, 0x0B, 0x6D, 0xC5, // 000B6DC5 | ||
1967 | 0x00, 0x0B, 0x76, 0xC6, // 000B76C6 | ||
1968 | 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7 | ||
1969 | 0x00, 0x08, 0x25, 0x8C, // 0008258C | ||
1970 | 0x00, 0x08, 0x2D, 0x8D, // 00082D8D | ||
1971 | 0x00, 0x08, 0x35, 0x8E, // 0008358E | ||
1972 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1973 | 0x00, 0x08, 0x3D, 0x8F, // 00083D8F | ||
1974 | 0x00, 0x06, 0x84, 0x6A, // 0006846A | ||
1975 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1976 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
1977 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
1978 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
1979 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
1980 | 0x00, 0x06, 0x90, 0x22, // 00069022 | ||
1981 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
1982 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
1983 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
1984 | 0x00, 0x04, 0x3F, 0x08, // 00043F08 | ||
1985 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
1986 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
1987 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
1988 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
1989 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
1990 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
1991 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
1992 | 0x00, 0x06, 0x84, 0x6A, // 0006846A | ||
1993 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
1994 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
1995 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
1996 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
1997 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
1998 | }; | ||
1999 | // addres 06800 count 1077 (4314 bytes) | ||
2000 | static const unsigned char maspcm_array10[] = { | ||
2001 | 0xf0, 0x00, 0x04, 0x35, 0x08, 0x00, | ||
2002 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2003 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2004 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2005 | 0x00, 0x07, 0x0F, 0x00, // 00070F00 | ||
2006 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2007 | 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E | ||
2008 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2009 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
2010 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
2011 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2012 | 0x00, 0x0A, 0x09, 0x78, // 000A0978 | ||
2013 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2014 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2015 | 0x00, 0x08, 0xA1, 0x41, // 0008A141 | ||
2016 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2017 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2018 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2019 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2020 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2021 | 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E | ||
2022 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
2023 | 0x00, 0x07, 0x26, 0x69, // 00072669 | ||
2024 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
2025 | 0x00, 0x0B, 0x75, 0x7E, // 000B757E | ||
2026 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2027 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
2028 | 0x00, 0x0A, 0xF7, 0x86, // 000AF786 | ||
2029 | 0x00, 0x0A, 0xEF, 0x85, // 000AEF85 | ||
2030 | 0x00, 0x0A, 0x36, 0x7F, // 000A367F | ||
2031 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
2032 | 0x00, 0x0B, 0x64, 0x70, // 000B6470 | ||
2033 | 0x00, 0x06, 0x98, 0x79, // 00069879 | ||
2034 | 0x00, 0x06, 0x90, 0x78, // 00069078 | ||
2035 | 0x00, 0x06, 0xA8, 0x77, // 0006A877 | ||
2036 | 0x00, 0x06, 0xB0, 0x7A, // 0006B07A | ||
2037 | 0x00, 0x06, 0xBC, 0x64, // 0006BC64 | ||
2038 | 0x00, 0x06, 0xB8, 0x71, // 0006B871 | ||
2039 | 0x00, 0x06, 0xB8, 0x70, // 0006B870 | ||
2040 | 0x00, 0x06, 0xB8, 0x69, // 0006B869 | ||
2041 | 0x00, 0x06, 0xB8, 0x7B, // 0006B87B | ||
2042 | 0x00, 0x06, 0xB8, 0x7C, // 0006B87C | ||
2043 | 0x00, 0x06, 0x9C, 0x6B, // 00069C6B | ||
2044 | 0x00, 0x06, 0xBC, 0x6E, // 0006BC6E | ||
2045 | 0x00, 0x06, 0xBC, 0x72, // 0006BC72 | ||
2046 | 0x00, 0x06, 0xB8, 0x74, // 0006B874 | ||
2047 | 0x00, 0x06, 0xB8, 0x7D, // 0006B87D | ||
2048 | 0x00, 0x06, 0xBC, 0x73, // 0006BC73 | ||
2049 | 0x00, 0x06, 0x9C, 0x7D, // 00069C7D | ||
2050 | 0x00, 0x06, 0xBC, 0x7C, // 0006BC7C | ||
2051 | 0x00, 0x06, 0xBC, 0x7B, // 0006BC7B | ||
2052 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2053 | 0x00, 0x06, 0x3C, 0x65, // 00063C65 | ||
2054 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2055 | 0x00, 0x09, 0xBF, 0x41, // 0009BF41 | ||
2056 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2057 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2058 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2059 | 0x00, 0x06, 0xBC, 0x7A, // 0006BC7A | ||
2060 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
2061 | 0x00, 0x07, 0x3D, 0xFF, // 00073DFF | ||
2062 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2063 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2064 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2065 | 0x00, 0x07, 0x1C, 0x90, // 00071C90 | ||
2066 | 0x00, 0x07, 0x74, 0x01, // 00077401 | ||
2067 | 0x00, 0x07, 0x34, 0xA0, // 000734A0 | ||
2068 | 0x00, 0x06, 0x08, 0x76, // 00060876 | ||
2069 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2070 | 0x00, 0x08, 0x21, 0x41, // 00082141 | ||
2071 | 0x00, 0x06, 0xB8, 0x16, // 0006B816 | ||
2072 | 0x00, 0x06, 0x90, 0x24, // 00069024 | ||
2073 | 0x00, 0x06, 0x90, 0x2C, // 0006902C | ||
2074 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
2075 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
2076 | 0x00, 0x06, 0x98, 0x25, // 00069825 | ||
2077 | 0x00, 0x06, 0x98, 0x2D, // 0006982D | ||
2078 | 0x00, 0x06, 0xB0, 0x1D, // 0006B01D | ||
2079 | 0x00, 0x06, 0xA0, 0x10, // 0006A010 | ||
2080 | 0x00, 0x06, 0x98, 0x21, // 00069821 | ||
2081 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2082 | 0x00, 0x07, 0x3C, 0x24, // 00073C24 | ||
2083 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2084 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2085 | 0x00, 0x07, 0x6C, 0x01, // 00076C01 | ||
2086 | 0x00, 0x07, 0x2C, 0x98, // 00072C98 | ||
2087 | 0x00, 0x06, 0xBC, 0x16, // 0006BC16 | ||
2088 | 0x00, 0x06, 0x94, 0x2A, // 0006942A | ||
2089 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2090 | 0x00, 0x06, 0xAC, 0x2B, // 0006AC2B | ||
2091 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
2092 | 0x00, 0x07, 0x3D, 0xFF, // 00073DFF | ||
2093 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2094 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2095 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2096 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
2097 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2098 | 0x00, 0x07, 0x2C, 0x90, // 00072C90 | ||
2099 | 0x00, 0x06, 0xBC, 0x14, // 0006BC14 | ||
2100 | 0x00, 0x06, 0x94, 0x1C, // 0006941C | ||
2101 | 0x00, 0x06, 0x9C, 0x26, // 00069C26 | ||
2102 | 0x00, 0x06, 0x9C, 0x2E, // 00069C2E | ||
2103 | 0x00, 0x06, 0xAC, 0x1D, // 0006AC1D | ||
2104 | 0x00, 0x06, 0xAC, 0x27, // 0006AC27 | ||
2105 | 0x00, 0x06, 0xAC, 0x2F, // 0006AC2F | ||
2106 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2107 | 0x00, 0x07, 0x0C, 0x04, // 00070C04 | ||
2108 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2109 | 0x00, 0x07, 0x14, 0x10, // 00071410 | ||
2110 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2111 | 0x00, 0x06, 0x88, 0x4B, // 0006884B | ||
2112 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2113 | 0x00, 0x06, 0x94, 0x06, // 00069406 | ||
2114 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2115 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2116 | 0x00, 0x07, 0x1E, 0x62, // 00071E62 | ||
2117 | 0x00, 0x06, 0x10, 0x78, // 00061078 | ||
2118 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2119 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
2120 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2121 | 0x00, 0x07, 0x1F, 0x18, // 00071F18 | ||
2122 | 0x00, 0x06, 0x98, 0x22, // 00069822 | ||
2123 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2124 | 0x00, 0x02, 0x9E, 0xF0, // 00029EF0 | ||
2125 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2126 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
2127 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2128 | 0x00, 0x07, 0x2C, 0x80, // 00072C80 | ||
2129 | 0x00, 0x07, 0x74, 0x00, // 00077400 | ||
2130 | 0x00, 0x07, 0x34, 0x04, // 00073404 | ||
2131 | 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0 | ||
2132 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2133 | 0x00, 0x08, 0x1B, 0xC6, // 00081BC6 | ||
2134 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2135 | 0x00, 0x07, 0x2C, 0x40, // 00072C40 | ||
2136 | 0x00, 0x07, 0x74, 0x02, // 00077402 | ||
2137 | 0x00, 0x07, 0x34, 0x00, // 00073400 | ||
2138 | 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0 | ||
2139 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2140 | 0x00, 0x08, 0x1B, 0xC6, // 00081BC6 | ||
2141 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2142 | 0x00, 0x07, 0x2C, 0x04, // 00072C04 | ||
2143 | 0x00, 0x07, 0x74, 0x00, // 00077400 | ||
2144 | 0x00, 0x07, 0x34, 0x20, // 00073420 | ||
2145 | 0x00, 0x04, 0x17, 0x00, // 00041700 | ||
2146 | 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0 | ||
2147 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2148 | 0x00, 0x08, 0x1B, 0xC6, // 00081BC6 | ||
2149 | 0x00, 0x0A, 0xD2, 0x41, // 000AD241 | ||
2150 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2151 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2152 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
2153 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2154 | 0x00, 0x07, 0x27, 0x18, // 00072718 | ||
2155 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2156 | 0x00, 0x06, 0x98, 0x3B, // 0006983B | ||
2157 | 0x00, 0x06, 0x9C, 0x75, // 00069C75 | ||
2158 | 0x00, 0x06, 0xA0, 0x53, // 0006A053 | ||
2159 | 0x00, 0x06, 0x28, 0x77, // 00062877 | ||
2160 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2161 | 0x00, 0x07, 0x16, 0x40, // 00071640 | ||
2162 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2163 | 0x00, 0x07, 0x24, 0x90, // 00072490 | ||
2164 | 0x00, 0x0B, 0x49, 0x7D, // 000B497D | ||
2165 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2166 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
2167 | 0x00, 0x06, 0x90, 0x1E, // 0006901E | ||
2168 | 0x00, 0x06, 0xA0, 0x1F, // 0006A01F | ||
2169 | 0x00, 0x06, 0x88, 0x14, // 00068814 | ||
2170 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2171 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2172 | 0x00, 0x04, 0x17, 0x08, // 00041708 | ||
2173 | 0x00, 0x04, 0x1F, 0x08, // 00041F08 | ||
2174 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
2175 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
2176 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2177 | 0x00, 0x0B, 0x49, 0x40, // 000B4940 | ||
2178 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2179 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2180 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2181 | 0x00, 0x07, 0x88, 0x0D, // 0007880D | ||
2182 | 0x00, 0x07, 0x90, 0x0D, // 0007900D | ||
2183 | 0x00, 0x07, 0x98, 0x0D, // 0007980D | ||
2184 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
2185 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2186 | 0x00, 0x07, 0x16, 0x50, // 00071650 | ||
2187 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2188 | 0x00, 0x07, 0x26, 0x90, // 00072690 | ||
2189 | 0x00, 0x0B, 0x49, 0x7D, // 000B497D | ||
2190 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2191 | 0x00, 0x07, 0x06, 0x70, // 00070670 | ||
2192 | 0x00, 0x06, 0x94, 0x20, // 00069420 | ||
2193 | 0x00, 0x06, 0xA4, 0x21, // 0006A421 | ||
2194 | 0x00, 0x06, 0x8C, 0x15, // 00068C15 | ||
2195 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2196 | 0x00, 0x0B, 0x52, 0x75, // 000B5275 | ||
2197 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2198 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2199 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2200 | 0x00, 0x04, 0x0F, 0x08, // 00040F08 | ||
2201 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2202 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2203 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2204 | 0x00, 0x07, 0x8C, 0x0E, // 00078C0E | ||
2205 | 0x00, 0x06, 0x94, 0x15, // 00069415 | ||
2206 | 0x00, 0x02, 0x1C, 0x0E, // 00021C0E | ||
2207 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2208 | 0x00, 0x07, 0x0C, 0xD3, // 00070CD3 | ||
2209 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2210 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2211 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2212 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
2213 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
2214 | 0x00, 0x07, 0x0E, 0x32, // 00070E32 | ||
2215 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
2216 | 0x00, 0x07, 0x26, 0x70, // 00072670 | ||
2217 | 0x00, 0x07, 0x6C, 0x00, // 00076C00 | ||
2218 | 0x00, 0x07, 0x2E, 0x90, // 00072E90 | ||
2219 | 0x00, 0x06, 0x8C, 0x22, // 00068C22 | ||
2220 | 0x00, 0x04, 0x80, 0x4F, // 0004804F | ||
2221 | 0x00, 0x06, 0x08, 0x78, // 00060878 | ||
2222 | 0x00, 0x06, 0xA4, 0x24, // 0006A424 | ||
2223 | 0x00, 0x06, 0xAC, 0x25, // 0006AC25 | ||
2224 | 0x00, 0x06, 0x5C, 0x3C, // 00065C3C | ||
2225 | 0x00, 0x06, 0x5C, 0x3B, // 00065C3B | ||
2226 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
2227 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2228 | 0x00, 0x02, 0x19, 0x1D, // 0002191D | ||
2229 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2230 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
2231 | 0x00, 0x07, 0x6C, 0x06, // 00076C06 | ||
2232 | 0x00, 0x07, 0x2C, 0xEB, // 00072CEB | ||
2233 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2234 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2235 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2236 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2237 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2238 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2239 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
2240 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
2241 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2242 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2243 | 0x00, 0x0A, 0xC7, 0x82, // 000AC782 | ||
2244 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
2245 | 0x00, 0x0A, 0xC7, 0x81, // 000AC781 | ||
2246 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2247 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2248 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2249 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2250 | 0x00, 0x07, 0x54, 0x04, // 00075404 | ||
2251 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2252 | 0x00, 0x06, 0x30, 0x2C, // 0006302C | ||
2253 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2254 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2255 | 0x00, 0x02, 0x19, 0x0C, // 0002190C | ||
2256 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2257 | 0x00, 0x0A, 0xF6, 0x41, // 000AF641 | ||
2258 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2259 | 0x00, 0x02, 0x18, 0xFA, // 000218FA | ||
2260 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2261 | 0x00, 0x06, 0x30, 0x2C, // 0006302C | ||
2262 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2263 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2264 | 0x00, 0x02, 0x19, 0x0C, // 0002190C | ||
2265 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2266 | 0x00, 0x0A, 0xF6, 0x41, // 000AF641 | ||
2267 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2268 | 0x00, 0x02, 0x19, 0x03, // 00021903 | ||
2269 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2270 | 0x00, 0x06, 0x38, 0x52, // 00063852 | ||
2271 | 0x00, 0x06, 0x30, 0x2C, // 0006302C | ||
2272 | 0x00, 0x09, 0xBF, 0x7A, // 0009BF7A | ||
2273 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2274 | 0x00, 0x0A, 0xFF, 0x41, // 000AFF41 | ||
2275 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2276 | 0x00, 0x0B, 0x36, 0x41, // 000B3641 | ||
2277 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2278 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2279 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2280 | 0x00, 0x06, 0xB0, 0x2C, // 0006B02C | ||
2281 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2282 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2283 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2284 | 0x00, 0x02, 0x18, 0xE4, // 000218E4 | ||
2285 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2286 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2287 | 0x00, 0x0B, 0x40, 0x7D, // 000B407D | ||
2288 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2289 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2290 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2291 | 0x00, 0x06, 0x84, 0x15, // 00068415 | ||
2292 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2293 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2294 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2295 | 0x00, 0x0C, 0x06, 0x27, // 000C0627 | ||
2296 | 0x00, 0x04, 0x35, 0x18, // 00043518 | ||
2297 | 0x00, 0x04, 0xB8, 0x1E, // 0004B81E | ||
2298 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2299 | 0x00, 0x0E, 0x06, 0x27, // 000E0627 | ||
2300 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2301 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2302 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2303 | 0x00, 0x0C, 0x0E, 0x27, // 000C0E27 | ||
2304 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2305 | 0x00, 0x04, 0xB8, 0x0E, // 0004B80E | ||
2306 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2307 | 0x00, 0x0E, 0x0E, 0x27, // 000E0E27 | ||
2308 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2309 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2310 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2311 | 0x00, 0x0C, 0x16, 0x27, // 000C1627 | ||
2312 | 0x00, 0x04, 0x35, 0x18, // 00043518 | ||
2313 | 0x00, 0x04, 0xB8, 0x1E, // 0004B81E | ||
2314 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2315 | 0x00, 0x0E, 0x16, 0x27, // 000E1627 | ||
2316 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2317 | 0x00, 0x04, 0xB8, 0x16, // 0004B816 | ||
2318 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2319 | 0x00, 0x0C, 0x1E, 0x27, // 000C1E27 | ||
2320 | 0x00, 0x04, 0x35, 0x08, // 00043508 | ||
2321 | 0x00, 0x04, 0xB8, 0x0E, // 0004B80E | ||
2322 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2323 | 0x00, 0x0E, 0x1E, 0x27, // 000E1E27 | ||
2324 | 0x00, 0x07, 0x64, 0x01, // 00076401 | ||
2325 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2326 | 0x00, 0x07, 0x27, 0x12, // 00072712 | ||
2327 | 0x00, 0x07, 0x80, 0x0D, // 0007800D | ||
2328 | 0x00, 0x07, 0x88, 0x0D, // 0007880D | ||
2329 | 0x00, 0x07, 0x90, 0x0D, // 0007900D | ||
2330 | 0x00, 0x07, 0x98, 0x0D, // 0007980D | ||
2331 | 0x00, 0x06, 0xA0, 0x22, // 0006A022 | ||
2332 | 0x00, 0x07, 0x80, 0x0F, // 0007800F | ||
2333 | 0x00, 0x07, 0x88, 0x0F, // 0007880F | ||
2334 | 0x00, 0x07, 0x90, 0x0F, // 0007900F | ||
2335 | 0x00, 0x07, 0x98, 0x07, // 00079807 | ||
2336 | 0x00, 0x06, 0x2C, 0x79, // 00062C79 | ||
2337 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2338 | 0x00, 0x0C, 0x09, 0x0D, // 000C090D | ||
2339 | 0x00, 0x0C, 0x11, 0x0D, // 000C110D | ||
2340 | 0x00, 0x0C, 0x19, 0x0D, // 000C190D | ||
2341 | 0x00, 0x0C, 0x21, 0x0D, // 000C210D | ||
2342 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2343 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2344 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2345 | 0x00, 0x06, 0x8C, 0x66, // 00068C66 | ||
2346 | 0x00, 0x06, 0x94, 0x67, // 00069467 | ||
2347 | 0x00, 0x06, 0x9C, 0x68, // 00069C68 | ||
2348 | 0x00, 0x06, 0xA4, 0x69, // 0006A469 | ||
2349 | 0x00, 0x06, 0x00, 0x7A, // 0006007A | ||
2350 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2351 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
2352 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2353 | 0x00, 0x02, 0x19, 0xF8, // 000219F8 | ||
2354 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2355 | 0x00, 0x06, 0x00, 0x24, // 00060024 | ||
2356 | 0x00, 0x06, 0x08, 0x78, // 00060878 | ||
2357 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
2358 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2359 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2360 | 0x00, 0x08, 0x89, 0x41, // 00088941 | ||
2361 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2362 | 0x00, 0x06, 0x00, 0x2C, // 0006002C | ||
2363 | 0x00, 0x06, 0x08, 0x1C, // 0006081C | ||
2364 | 0x00, 0x08, 0x80, 0xC1, // 000880C1 | ||
2365 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2366 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2367 | 0x00, 0x08, 0x9B, 0x41, // 00089B41 | ||
2368 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2369 | 0x00, 0x09, 0x80, 0x7F, // 0009807F | ||
2370 | 0x00, 0x06, 0x14, 0x7B, // 0006147B | ||
2371 | 0x00, 0x06, 0x1C, 0x7A, // 00061C7A | ||
2372 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2373 | 0x00, 0x02, 0x9F, 0x28, // 00029F28 | ||
2374 | 0x00, 0x08, 0x98, 0xC3, // 000898C3 | ||
2375 | 0x00, 0x02, 0x87, 0x10, // 00028710 | ||
2376 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2377 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
2378 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2379 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2380 | 0x00, 0x06, 0x94, 0x7B, // 0006947B | ||
2381 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2382 | 0x00, 0x07, 0x14, 0x12, // 00071412 | ||
2383 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2384 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
2385 | 0x00, 0x08, 0xA0, 0xC2, // 0008A0C2 | ||
2386 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2387 | 0x00, 0x02, 0x19, 0xF8, // 000219F8 | ||
2388 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2389 | 0x00, 0x06, 0x24, 0x2A, // 0006242A | ||
2390 | 0x00, 0x08, 0xA3, 0xC4, // 0008A3C4 | ||
2391 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2392 | 0x00, 0x02, 0x19, 0xF8, // 000219F8 | ||
2393 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2394 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2395 | 0x00, 0x07, 0x1E, 0x01, // 00071E01 | ||
2396 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
2397 | 0x00, 0x07, 0x04, 0x09, // 00070409 | ||
2398 | 0x00, 0x06, 0x08, 0x69, // 00060869 | ||
2399 | 0x00, 0x06, 0x9C, 0x22, // 00069C22 | ||
2400 | 0x00, 0x06, 0x10, 0x6A, // 0006106A | ||
2401 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
2402 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2403 | 0x00, 0x02, 0x19, 0xA4, // 000219A4 | ||
2404 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2405 | 0x00, 0x08, 0x92, 0x41, // 00089241 | ||
2406 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2407 | 0x00, 0x02, 0x19, 0xA4, // 000219A4 | ||
2408 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2409 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2410 | 0x00, 0x07, 0x55, 0x5C, // 0007555C | ||
2411 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2412 | 0x00, 0x07, 0x5D, 0x04, // 00075D04 | ||
2413 | 0x00, 0x07, 0x1C, 0x00, // 00071C00 | ||
2414 | 0x00, 0x07, 0x65, 0x58, // 00076558 | ||
2415 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
2416 | 0x00, 0x07, 0x6D, 0x14, // 00076D14 | ||
2417 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
2418 | 0x00, 0x07, 0x94, 0x0F, // 0007940F | ||
2419 | 0x00, 0x07, 0x9C, 0x0F, // 00079C0F | ||
2420 | 0x00, 0x07, 0xA4, 0x0F, // 0007A40F | ||
2421 | 0x00, 0x07, 0xAC, 0x0F, // 0007AC0F | ||
2422 | 0x00, 0x06, 0x38, 0x3A, // 0006383A | ||
2423 | 0x00, 0x0B, 0x76, 0x7D, // 000B767D | ||
2424 | 0x00, 0x06, 0x10, 0x6C, // 0006106C | ||
2425 | 0x00, 0x0A, 0xFF, 0x5F, // 000AFF5F | ||
2426 | 0x00, 0x06, 0x84, 0x05, // 00068405 | ||
2427 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
2428 | 0x00, 0x09, 0x3F, 0x54, // 00093F54 | ||
2429 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2430 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2431 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2432 | 0x00, 0x06, 0xB4, 0x15, // 0006B415 | ||
2433 | 0x00, 0x07, 0x77, 0xFC, // 000777FC | ||
2434 | 0x00, 0x07, 0x34, 0x00, // 00073400 | ||
2435 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2436 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2437 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2438 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2439 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2440 | 0x00, 0x01, 0x4E, 0x80, // 00014E80 | ||
2441 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2442 | 0x00, 0x09, 0x80, 0x87, // 00098087 | ||
2443 | 0x00, 0x09, 0x88, 0x87, // 00098887 | ||
2444 | 0x00, 0x0C, 0x20, 0x12, // 000C2012 | ||
2445 | 0x00, 0x0E, 0x21, 0x12, // 000E2112 | ||
2446 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2447 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2448 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2449 | 0x00, 0x0C, 0x28, 0x12, // 000C2812 | ||
2450 | 0x00, 0x0E, 0x29, 0x12, // 000E2912 | ||
2451 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2452 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2453 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2454 | 0x00, 0x09, 0x84, 0x48, // 00098448 | ||
2455 | 0x00, 0x09, 0x8D, 0x48, // 00098D48 | ||
2456 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2457 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2458 | 0x00, 0x09, 0xA4, 0x48, // 0009A448 | ||
2459 | 0x00, 0x08, 0x04, 0x40, // 00080440 | ||
2460 | 0x00, 0x09, 0xAD, 0x48, // 0009AD48 | ||
2461 | 0x00, 0x08, 0x0D, 0x40, // 00080D40 | ||
2462 | 0x00, 0x0A, 0xE4, 0xC6, // 000AE4C6 | ||
2463 | 0x00, 0x0A, 0xC0, 0xC6, // 000AC0C6 | ||
2464 | 0x00, 0x0A, 0xED, 0xC6, // 000AEDC6 | ||
2465 | 0x00, 0x0A, 0xC9, 0xC6, // 000AC9C6 | ||
2466 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2467 | 0x00, 0x07, 0xE4, 0x0F, // 0007E40F | ||
2468 | 0x00, 0x07, 0xC4, 0x0F, // 0007C40F | ||
2469 | 0x00, 0x07, 0xEC, 0x0F, // 0007EC0F | ||
2470 | 0x00, 0x07, 0xCC, 0x0F, // 0007CC0F | ||
2471 | 0x00, 0x06, 0x00, 0x69, // 00060069 | ||
2472 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
2473 | 0x00, 0x07, 0x0E, 0x65, // 00070E65 | ||
2474 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
2475 | 0x00, 0x06, 0x1C, 0x64, // 00061C64 | ||
2476 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2477 | 0x00, 0x07, 0x14, 0x39, // 00071439 | ||
2478 | 0x00, 0x06, 0x88, 0x22, // 00068822 | ||
2479 | 0x00, 0x04, 0x0F, 0x00, // 00040F00 | ||
2480 | 0x00, 0x08, 0x90, 0xC2, // 000890C2 | ||
2481 | 0x00, 0x02, 0x9E, 0x28, // 00029E28 | ||
2482 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
2483 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2484 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2485 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2486 | 0x00, 0x08, 0x09, 0x41, // 00080941 | ||
2487 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2488 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2489 | 0x00, 0x06, 0x80, 0x69, // 00068069 | ||
2490 | 0x00, 0x07, 0x88, 0x07, // 00078807 | ||
2491 | 0x00, 0x07, 0x4C, 0x01, // 00074C01 | ||
2492 | 0x00, 0x0B, 0x76, 0x75, // 000B7675 | ||
2493 | 0x00, 0x07, 0x0E, 0x01, // 00070E01 | ||
2494 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
2495 | 0x00, 0x07, 0x04, 0x04, // 00070404 | ||
2496 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2497 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2498 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2499 | 0x00, 0x06, 0x80, 0x4B, // 0006804B | ||
2500 | 0x00, 0x07, 0x44, 0x00, // 00074400 | ||
2501 | 0x00, 0x07, 0x05, 0x3D, // 0007053D | ||
2502 | 0x00, 0x06, 0xB4, 0x15, // 0006B415 | ||
2503 | 0x00, 0x06, 0x8C, 0x2A, // 00068C2A | ||
2504 | 0x00, 0x06, 0x94, 0x72, // 00069472 | ||
2505 | 0x00, 0x06, 0x80, 0x4B, // 0006804B | ||
2506 | 0x00, 0x06, 0x00, 0x24, // 00060024 | ||
2507 | 0x00, 0x06, 0x08, 0x78, // 00060878 | ||
2508 | 0x00, 0x06, 0x18, 0x76, // 00061876 | ||
2509 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2510 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2511 | 0x00, 0x08, 0x89, 0x41, // 00088941 | ||
2512 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2513 | 0x00, 0x06, 0x00, 0x2C, // 0006002C | ||
2514 | 0x00, 0x06, 0x08, 0x20, // 00060820 | ||
2515 | 0x00, 0x08, 0x80, 0xC1, // 000880C1 | ||
2516 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2517 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2518 | 0x00, 0x06, 0x0C, 0x26, // 00060C26 | ||
2519 | 0x00, 0x06, 0x14, 0x1C, // 0006141C | ||
2520 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
2521 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
2522 | 0x00, 0x08, 0x89, 0xC2, // 000889C2 | ||
2523 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2524 | 0x00, 0x08, 0x09, 0xC3, // 000809C3 | ||
2525 | 0x00, 0x06, 0x24, 0x24, // 00062424 | ||
2526 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
2527 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2528 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
2529 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
2530 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2531 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
2532 | 0x00, 0x06, 0x24, 0x2E, // 0006242E | ||
2533 | 0x00, 0x09, 0x22, 0xC4, // 000922C4 | ||
2534 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2535 | 0x00, 0x08, 0x24, 0xC3, // 000824C3 | ||
2536 | 0x00, 0x09, 0x29, 0xC4, // 000929C4 | ||
2537 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2538 | 0x00, 0x08, 0x0C, 0x40, // 00080C40 | ||
2539 | 0x00, 0x07, 0x54, 0x00, // 00075400 | ||
2540 | 0x00, 0x07, 0x14, 0x20, // 00071420 | ||
2541 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2542 | 0x00, 0x08, 0x80, 0xC2, // 000880C2 | ||
2543 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
2544 | 0x00, 0x02, 0x1A, 0x86, // 00021A86 | ||
2545 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2546 | 0x00, 0x08, 0x89, 0xC2, // 000889C2 | ||
2547 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
2548 | 0x00, 0x02, 0x1A, 0x86, // 00021A86 | ||
2549 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2550 | 0x00, 0x06, 0x28, 0x3A, // 0006283A | ||
2551 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2552 | 0x00, 0x0A, 0xED, 0x5F, // 000AED5F | ||
2553 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
2554 | 0x00, 0x09, 0x2D, 0x54, // 00092D54 | ||
2555 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2556 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2557 | 0x00, 0x04, 0xB8, 0x0D, // 0004B80D | ||
2558 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2559 | 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C | ||
2560 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2561 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2562 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2563 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2564 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2565 | 0x00, 0x01, 0x0D, 0x10, // 00010D10 | ||
2566 | 0x00, 0x06, 0x20, 0x76, // 00062076 | ||
2567 | 0x00, 0x09, 0x86, 0x8D, // 0009868D | ||
2568 | 0x00, 0x09, 0x8E, 0x8D, // 00098E8D | ||
2569 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2570 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2571 | 0x00, 0x08, 0x08, 0x40, // 00080840 | ||
2572 | 0x00, 0x0C, 0x31, 0x08, // 000C3108 | ||
2573 | 0x00, 0x0E, 0x31, 0x09, // 000E3109 | ||
2574 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2575 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2576 | 0x00, 0x0C, 0x01, 0x08, // 000C0108 | ||
2577 | 0x00, 0x0E, 0x01, 0x09, // 000E0109 | ||
2578 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2579 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2580 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2581 | 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C | ||
2582 | 0x00, 0x09, 0x9F, 0x7F, // 00099F7F | ||
2583 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2584 | 0x00, 0x08, 0x36, 0x42, // 00083642 | ||
2585 | 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C | ||
2586 | 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F | ||
2587 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2588 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
2589 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2590 | 0x00, 0x07, 0xF4, 0x0C, // 0007F40C | ||
2591 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2592 | 0x00, 0x07, 0xC4, 0x0C, // 0007C40C | ||
2593 | 0x00, 0x02, 0x16, 0x52, // 00021652 | ||
2594 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2595 | 0x00, 0x07, 0x0E, 0x56, // 00070E56 | ||
2596 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2597 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2598 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2599 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
2600 | 0x00, 0x06, 0x00, 0x7B, // 0006007B | ||
2601 | 0x00, 0x06, 0x10, 0x74, // 00061074 | ||
2602 | 0x00, 0x08, 0x00, 0x41, // 00080041 | ||
2603 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2604 | 0x00, 0x07, 0x1C, 0x30, // 00071C30 | ||
2605 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2606 | 0x00, 0x02, 0x9E, 0x18, // 00029E18 | ||
2607 | 0x00, 0x08, 0x88, 0xC3, // 000888C3 | ||
2608 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2609 | 0x00, 0x02, 0x15, 0xDB, // 000215DB | ||
2610 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2611 | 0x00, 0x07, 0x0E, 0x66, // 00070E66 | ||
2612 | 0x00, 0x06, 0x80, 0x7B, // 0006807B | ||
2613 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2614 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2615 | 0x00, 0x06, 0x88, 0x0E, // 0006880E | ||
2616 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2617 | 0x00, 0x06, 0x08, 0x24, // 00060824 | ||
2618 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2619 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2620 | 0x00, 0x06, 0x08, 0x2C, // 0006082C | ||
2621 | 0x00, 0x06, 0x34, 0x26, // 00063426 | ||
2622 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2623 | 0x00, 0x08, 0x86, 0xC1, // 000886C1 | ||
2624 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2625 | 0x00, 0x07, 0x1F, 0x00, // 00071F00 | ||
2626 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2627 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2628 | 0x00, 0x08, 0xA8, 0xC3, // 0008A8C3 | ||
2629 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
2630 | 0x00, 0x08, 0x80, 0xC2, // 000880C2 | ||
2631 | 0x00, 0x06, 0x20, 0x74, // 00062074 | ||
2632 | 0x00, 0x08, 0x28, 0xC3, // 000828C3 | ||
2633 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2634 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2635 | 0x00, 0x06, 0x18, 0x79, // 00061879 | ||
2636 | 0x00, 0x06, 0x14, 0x6E, // 0006146E | ||
2637 | 0x00, 0x08, 0xA4, 0x41, // 0008A441 | ||
2638 | 0x00, 0x02, 0x9E, 0x20, // 00029E20 | ||
2639 | 0x00, 0x08, 0xBB, 0x42, // 0008BB42 | ||
2640 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2641 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
2642 | 0x00, 0x08, 0x10, 0x40, // 00081040 | ||
2643 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2644 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2645 | 0x00, 0x06, 0x98, 0x79, // 00069879 | ||
2646 | 0x00, 0x06, 0x94, 0x6E, // 0006946E | ||
2647 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2648 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2649 | 0x00, 0x06, 0x08, 0x24, // 00060824 | ||
2650 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2651 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2652 | 0x00, 0x06, 0x08, 0x2C, // 0006082C | ||
2653 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
2654 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2655 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2656 | 0x00, 0x06, 0x18, 0x71, // 00061871 | ||
2657 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2658 | 0x00, 0x06, 0x24, 0x6B, // 0006246B | ||
2659 | 0x00, 0x08, 0xA9, 0xC0, // 0008A9C0 | ||
2660 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2661 | 0x00, 0x08, 0x2D, 0xC2, // 00082DC2 | ||
2662 | 0x00, 0x08, 0xB4, 0x41, // 0008B441 | ||
2663 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2664 | 0x00, 0x02, 0x1A, 0xA5, // 00021AA5 | ||
2665 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2666 | 0x00, 0x08, 0xB5, 0x42, // 0008B542 | ||
2667 | 0x00, 0x02, 0x86, 0x10, // 00028610 | ||
2668 | 0x00, 0x02, 0x1A, 0xA5, // 00021AA5 | ||
2669 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2670 | 0x00, 0x06, 0x34, 0x26, // 00063426 | ||
2671 | 0x00, 0x0A, 0xD1, 0x41, // 000AD141 | ||
2672 | 0x00, 0x0A, 0xF6, 0x7E, // 000AF67E | ||
2673 | 0x00, 0x08, 0x12, 0xC6, // 000812C6 | ||
2674 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2675 | 0x00, 0x0A, 0xC2, 0x7E, // 000AC27E | ||
2676 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2677 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2678 | 0x00, 0x06, 0xA4, 0x6B, // 0006A46B | ||
2679 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2680 | 0x00, 0x07, 0x24, 0x25, // 00072425 | ||
2681 | 0x00, 0x08, 0x93, 0xC5, // 000893C5 | ||
2682 | 0x00, 0x06, 0xA8, 0x71, // 0006A871 | ||
2683 | 0x00, 0x08, 0x9C, 0xC2, // 00089CC2 | ||
2684 | 0x00, 0x02, 0x88, 0x10, // 00028810 | ||
2685 | 0x00, 0x02, 0x1B, 0x86, // 00021B86 | ||
2686 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2687 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2688 | 0x00, 0x06, 0x18, 0x52, // 00061852 | ||
2689 | 0x00, 0x07, 0x54, 0x08, // 00075408 | ||
2690 | 0x00, 0x07, 0x14, 0x00, // 00071400 | ||
2691 | 0x00, 0x07, 0x7C, 0x06, // 00077C06 | ||
2692 | 0x00, 0x07, 0x3E, 0xFD, // 00073EFD | ||
2693 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2694 | 0x00, 0x02, 0x9F, 0x20, // 00029F20 | ||
2695 | 0x00, 0x0A, 0xC3, 0xC2, // 000AC3C2 | ||
2696 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2697 | 0x00, 0x02, 0x1B, 0xA7, // 00021BA7 | ||
2698 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2699 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
2700 | 0x00, 0x06, 0x34, 0x26, // 00063426 | ||
2701 | 0x00, 0x06, 0x3C, 0x1C, // 00063C1C | ||
2702 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2703 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2704 | 0x00, 0x06, 0x18, 0x70, // 00061870 | ||
2705 | 0x00, 0x08, 0x86, 0xC7, // 000886C7 | ||
2706 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2707 | 0x00, 0x08, 0x00, 0xC2, // 000800C2 | ||
2708 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2709 | 0x00, 0x07, 0x24, 0x25, // 00072425 | ||
2710 | 0x00, 0x06, 0x28, 0x79, // 00062879 | ||
2711 | 0x00, 0x08, 0x93, 0xC0, // 000893C0 | ||
2712 | 0x00, 0x06, 0x80, 0x70, // 00068070 | ||
2713 | 0x00, 0x08, 0x94, 0xC2, // 000894C2 | ||
2714 | 0x00, 0x02, 0x88, 0x38, // 00028838 | ||
2715 | 0x00, 0x08, 0xBD, 0x41, // 0008BD41 | ||
2716 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2717 | 0x00, 0x09, 0xAD, 0x41, // 0009AD41 | ||
2718 | 0x00, 0x07, 0x7C, 0x06, // 00077C06 | ||
2719 | 0x00, 0x07, 0x3E, 0xFD, // 00073EFD | ||
2720 | 0x00, 0x02, 0x1B, 0xB0, // 00021BB0 | ||
2721 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2722 | 0x00, 0x06, 0xA8, 0x79, // 0006A879 | ||
2723 | 0x00, 0x06, 0xB8, 0x0F, // 0006B80F | ||
2724 | 0x00, 0x06, 0x14, 0x26, // 00061426 | ||
2725 | 0x00, 0x06, 0x20, 0x7D, // 0006207D | ||
2726 | 0x00, 0x06, 0x28, 0x7C, // 0006287C | ||
2727 | 0x00, 0x08, 0x32, 0x60, // 00083260 | ||
2728 | 0x00, 0x02, 0x86, 0x18, // 00028618 | ||
2729 | 0x00, 0x08, 0x2D, 0xC4, // 00082DC4 | ||
2730 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2731 | 0x00, 0x02, 0x81, 0x08, // 00028108 | ||
2732 | 0x00, 0x0B, 0x64, 0x7F, // 000B647F | ||
2733 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2734 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2735 | 0x00, 0x06, 0xA8, 0x7C, // 0006A87C | ||
2736 | 0x00, 0x06, 0xA0, 0x7D, // 0006A07D | ||
2737 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2738 | 0x00, 0x07, 0x3C, 0x01, // 00073C01 | ||
2739 | 0x00, 0x06, 0x00, 0x7C, // 0006007C | ||
2740 | 0x00, 0x06, 0x30, 0x79, // 00063079 | ||
2741 | 0x00, 0x08, 0xBF, 0xC0, // 0008BFC0 | ||
2742 | 0x00, 0x02, 0x88, 0xC0, // 000288C0 | ||
2743 | 0x00, 0x08, 0xB6, 0x41, // 0008B641 | ||
2744 | 0x00, 0x02, 0x9E, 0xB0, // 00029EB0 | ||
2745 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2746 | 0x00, 0x08, 0xBA, 0xC1, // 0008BAC1 | ||
2747 | 0x00, 0x06, 0x34, 0x6E, // 0006346E | ||
2748 | 0x00, 0x08, 0xBF, 0xC6, // 0008BFC6 | ||
2749 | 0x00, 0x07, 0x5C, 0x00, // 00075C00 | ||
2750 | 0x00, 0x07, 0x1F, 0x00, // 00071F00 | ||
2751 | 0x00, 0x07, 0x54, 0x01, // 00075401 | ||
2752 | 0x00, 0x07, 0x16, 0x00, // 00071600 | ||
2753 | 0x00, 0x08, 0xAF, 0xC3, // 0008AFC3 | ||
2754 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
2755 | 0x00, 0x08, 0xBF, 0xC2, // 0008BFC2 | ||
2756 | 0x00, 0x08, 0x2F, 0xC3, // 00082FC3 | ||
2757 | 0x00, 0x02, 0x86, 0x08, // 00028608 | ||
2758 | 0x00, 0x08, 0x3F, 0xC2, // 00083FC2 | ||
2759 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2760 | 0x00, 0x02, 0x1C, 0x15, // 00021C15 | ||
2761 | 0x00, 0x07, 0x4C, 0x06, // 00074C06 | ||
2762 | 0x00, 0x07, 0x0E, 0xFD, // 00070EFD | ||
2763 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2764 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2765 | 0x00, 0x06, 0x80, 0x7C, // 0006807C | ||
2766 | 0x00, 0x06, 0x88, 0x0F, // 0006880F | ||
2767 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2768 | 0x00, 0x06, 0x04, 0x64, // 00060464 | ||
2769 | 0x00, 0x06, 0x0C, 0x72, // 00060C72 | ||
2770 | 0x00, 0x06, 0x10, 0x74, // 00061074 | ||
2771 | 0x00, 0x08, 0x80, 0x40, // 00088040 | ||
2772 | 0x00, 0x02, 0x9F, 0x40, // 00029F40 | ||
2773 | 0x00, 0x08, 0x89, 0x40, // 00088940 | ||
2774 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2775 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2776 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2777 | 0x00, 0x08, 0x92, 0x40, // 00089240 | ||
2778 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2779 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2780 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2781 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2782 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2783 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2784 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
2785 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2786 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2787 | 0x00, 0x04, 0x07, 0x00, // 00040700 | ||
2788 | 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0 | ||
2789 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2790 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2791 | 0x00, 0x02, 0x81, 0x10, // 00028110 | ||
2792 | 0x00, 0x02, 0x1B, 0x68, // 00021B68 | ||
2793 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2794 | 0x00, 0x07, 0x80, 0x07, // 00078007 | ||
2795 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2796 | 0x00, 0x07, 0x06, 0x61, // 00070661 | ||
2797 | 0x00, 0x07, 0x4C, 0x0C, // 00074C0C | ||
2798 | 0x00, 0x07, 0x0C, 0x00, // 00070C00 | ||
2799 | 0x00, 0x06, 0x14, 0x64, // 00061464 | ||
2800 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2801 | 0x00, 0x0A, 0xC7, 0x81, // 000AC781 | ||
2802 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2803 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2804 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2805 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2806 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2807 | 0x00, 0x06, 0x94, 0x64, // 00069464 | ||
2808 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2809 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
2810 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2811 | 0x00, 0x07, 0x0C, 0x02, // 00070C02 | ||
2812 | 0x00, 0x06, 0x10, 0x7A, // 0006107A | ||
2813 | 0x00, 0x06, 0x20, 0x1C, // 0006201C | ||
2814 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2815 | 0x00, 0x0A, 0xC3, 0x81, // 000AC381 | ||
2816 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2817 | 0x00, 0x0B, 0x52, 0x7F, // 000B527F | ||
2818 | 0x00, 0x02, 0x81, 0x48, // 00028148 | ||
2819 | 0x00, 0x08, 0x9A, 0x41, // 00089A41 | ||
2820 | 0x00, 0x02, 0x9E, 0x38, // 00029E38 | ||
2821 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2822 | 0x00, 0x06, 0x08, 0x24, // 00060824 | ||
2823 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2824 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2825 | 0x00, 0x06, 0x08, 0x2C, // 0006082C | ||
2826 | 0x00, 0x0B, 0x52, 0x40, // 000B5240 | ||
2827 | 0x00, 0x0A, 0xE1, 0x7E, // 000AE17E | ||
2828 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2829 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2830 | 0x00, 0x06, 0x90, 0x7A, // 0006907A | ||
2831 | 0x00, 0x06, 0xA0, 0x1C, // 0006A01C | ||
2832 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2833 | 0x00, 0x07, 0x06, 0x69, // 00070669 | ||
2834 | 0x00, 0x07, 0x4C, 0x00, // 00074C00 | ||
2835 | 0x00, 0x07, 0x0C, 0x01, // 00070C01 | ||
2836 | 0x00, 0x07, 0x44, 0x01, // 00074401 | ||
2837 | 0x00, 0x07, 0x06, 0x6C, // 0007066C | ||
2838 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2839 | 0x00, 0x0A, 0xCF, 0x81, // 000ACF81 | ||
2840 | 0x00, 0x06, 0x18, 0x77, // 00061877 | ||
2841 | 0x00, 0x06, 0x80, 0x22, // 00068022 | ||
2842 | 0x00, 0x0B, 0x09, 0xC3, // 000B09C3 | ||
2843 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2844 | 0x00, 0x02, 0x1B, 0x68, // 00021B68 | ||
2845 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2846 | 0x00, 0x06, 0x24, 0x6B, // 0006246B | ||
2847 | 0x00, 0x0B, 0x1B, 0x41, // 000B1B41 | ||
2848 | 0x00, 0x06, 0x14, 0x65, // 00061465 | ||
2849 | 0x00, 0x06, 0x04, 0x6A, // 0006046A | ||
2850 | 0x00, 0x08, 0x28, 0x41, // 00082841 | ||
2851 | 0x00, 0x02, 0x9F, 0x08, // 00029F08 | ||
2852 | 0x00, 0x08, 0x82, 0xC0, // 000882C0 | ||
2853 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2854 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
2855 | 0x00, 0x02, 0x1B, 0x66, // 00021B66 | ||
2856 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2857 | 0x00, 0x0B, 0x40, 0x41, // 000B4041 | ||
2858 | 0x00, 0x0B, 0x64, 0x40, // 000B6440 | ||
2859 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2860 | 0x00, 0x0B, 0x76, 0x40, // 000B7640 | ||
2861 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2862 | 0x00, 0x08, 0x9B, 0x40, // 00089B40 | ||
2863 | 0x00, 0x02, 0x9E, 0x28, // 00029E28 | ||
2864 | 0x00, 0x04, 0x27, 0x08, // 00042708 | ||
2865 | 0x00, 0x04, 0x2F, 0x08, // 00042F08 | ||
2866 | 0x00, 0x04, 0x37, 0x08, // 00043708 | ||
2867 | 0x00, 0x04, 0x3F, 0x08, // 00043F08 | ||
2868 | 0x00, 0x07, 0xA0, 0x0D, // 0007A00D | ||
2869 | 0x00, 0x07, 0xA8, 0x0D, // 0007A80D | ||
2870 | 0x00, 0x07, 0xB0, 0x0D, // 0007B00D | ||
2871 | 0x00, 0x07, 0xB8, 0x0D, // 0007B80D | ||
2872 | 0x00, 0x06, 0x98, 0x77, // 00069877 | ||
2873 | 0x00, 0x06, 0x84, 0x6A, // 0006846A | ||
2874 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2875 | 0x00, 0x06, 0x00, 0x6D, // 0006006D | ||
2876 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2877 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2878 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2879 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2880 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2881 | 0x00, 0x06, 0xC0, 0x6D, // 0006C06D | ||
2882 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2883 | 0x00, 0x02, 0x3F, 0xCC, // 00023FCC | ||
2884 | 0x00, 0x07, 0x6C, 0x06, // 00076C06 | ||
2885 | 0x00, 0x07, 0x2F, 0x78, // 00072F78 | ||
2886 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2887 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2888 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2889 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2890 | 0x00, 0x02, 0x19, 0x5B, // 0002195B | ||
2891 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2892 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2893 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2894 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2895 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2896 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2897 | 0x00, 0x00, 0xC1, 0x80, // 0000C180 | ||
2898 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2899 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2900 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2901 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2902 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2903 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2904 | 0x00, 0x06, 0x00, 0x1C, // 0006001C | ||
2905 | 0x00, 0x07, 0x6C, 0x01, // 00076C01 | ||
2906 | 0x00, 0x07, 0x2E, 0x00, // 00072E00 | ||
2907 | 0x00, 0x07, 0x7C, 0x01, // 00077C01 | ||
2908 | 0x00, 0x07, 0x3E, 0x68, // 00073E68 | ||
2909 | 0x00, 0x0A, 0xF1, 0x7E, // 000AF17E | ||
2910 | 0x00, 0x09, 0x00, 0xC6, // 000900C6 | ||
2911 | 0x00, 0x02, 0x88, 0x08, // 00028808 | ||
2912 | 0x00, 0x08, 0x00, 0xC5, // 000800C5 | ||
2913 | 0x00, 0x06, 0x2C, 0x64, // 00062C64 | ||
2914 | 0x00, 0x0A, 0x00, 0x7F, // 000A007F | ||
2915 | 0x00, 0x06, 0x20, 0x7A, // 0006207A | ||
2916 | 0x00, 0x06, 0xB8, 0x22, // 0006B822 | ||
2917 | 0x00, 0x04, 0x3F, 0x00, // 00043F00 | ||
2918 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2919 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2920 | 0x00, 0x08, 0x3F, 0xC0, // 00083FC0 | ||
2921 | 0x00, 0x08, 0xAD, 0x40, // 0008AD40 | ||
2922 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2923 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
2924 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2925 | 0x00, 0x06, 0x2C, 0x7F, // 00062C7F | ||
2926 | 0x00, 0x08, 0xA4, 0x40, // 0008A440 | ||
2927 | 0x00, 0x02, 0x9E, 0x08, // 00029E08 | ||
2928 | 0x00, 0x0B, 0x6D, 0x6F, // 000B6D6F | ||
2929 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
2930 | 0x00, 0x02, 0x1A, 0xAD, // 00021AAD | ||
2931 | 0x00, 0x06, 0xB0, 0x1C, // 0006B01C | ||
2932 | 0x00, 0x0A, 0xFF, 0x7E, // 000AFF7E | ||
2933 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2934 | 0x00, 0x06, 0x84, 0x72, // 00068472 | ||
2935 | 0x00, 0x06, 0xAC, 0x7F, // 0006AC7F | ||
2936 | 0x00, 0x07, 0xB8, 0x07, // 0007B807 | ||
2937 | 0x00, 0x06, 0x10, 0x2C, // 0006102C | ||
2938 | 0x00, 0x0B, 0x64, 0x6D, // 000B646D | ||
2939 | 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E | ||
2940 | 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F | ||
2941 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2942 | 0x00, 0x02, 0x81, 0x20, // 00028120 | ||
2943 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
2944 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
2945 | 0x00, 0x06, 0x9C, 0x7B, // 00069C7B | ||
2946 | 0x00, 0x0B, 0x64, 0x6E, // 000B646E | ||
2947 | 0x00, 0x06, 0x34, 0x6D, // 0006346D | ||
2948 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2949 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2950 | 0x00, 0x06, 0xA4, 0x7F, // 0006A47F | ||
2951 | 0x00, 0x06, 0xB4, 0x0F, // 0006B40F | ||
2952 | 0x00, 0x06, 0xB4, 0x6C, // 0006B46C | ||
2953 | 0x00, 0x0B, 0x76, 0x7F, // 000B767F | ||
2954 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2955 | 0x00, 0x0B, 0x6D, 0x40, // 000B6D40 | ||
2956 | 0x00, 0x08, 0x3F, 0x40, // 00083F40 | ||
2957 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2958 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2959 | 0x00, 0x06, 0xB4, 0x6B, // 0006B46B | ||
2960 | 0x00, 0x04, 0xB0, 0x0D, // 0004B00D | ||
2961 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2962 | 0x00, 0x09, 0xB6, 0x7C, // 0009B67C | ||
2963 | 0x00, 0x01, 0x05, 0x10, // 00010510 | ||
2964 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
2965 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2966 | 0x00, 0x08, 0x00, 0x42, // 00080042 | ||
2967 | 0x00, 0x0B, 0x7F, 0x40, // 000B7F40 | ||
2968 | 0x00, 0x09, 0xB6, 0x7F, // 0009B67F | ||
2969 | 0x00, 0x02, 0x82, 0x08, // 00028208 | ||
2970 | 0x00, 0x08, 0x3F, 0x42, // 00083F42 | ||
2971 | 0x00, 0x07, 0x84, 0x0C, // 0007840C | ||
2972 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
2973 | 0x00, 0x09, 0xA6, 0x7F, // 0009A67F | ||
2974 | 0x00, 0x07, 0xBC, 0x0C, // 0007BC0C | ||
2975 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
2976 | 0x00, 0x07, 0x24, 0x30, // 00072430 | ||
2977 | 0x00, 0x08, 0x2D, 0x41, // 00082D41 | ||
2978 | 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5 | ||
2979 | 0x00, 0x02, 0x9F, 0x10, // 00029F10 | ||
2980 | 0x00, 0x02, 0x1B, 0xBE, // 00021BBE | ||
2981 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
2982 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2983 | 0x00, 0x07, 0x3F, 0x18, // 00073F18 | ||
2984 | 0x00, 0x06, 0x00, 0x78, // 00060078 | ||
2985 | 0x00, 0x06, 0x10, 0x24, // 00061024 | ||
2986 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
2987 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2988 | 0x00, 0x02, 0x9F, 0x18, // 00029F18 | ||
2989 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
2990 | 0x00, 0x07, 0x3C, 0x00, // 00073C00 | ||
2991 | 0x00, 0x06, 0x10, 0x2C, // 0006102C | ||
2992 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2993 | 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E | ||
2994 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2995 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
2996 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
2997 | 0x00, 0x06, 0x04, 0x64, // 00060464 | ||
2998 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
2999 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
3000 | 0x00, 0x00, 0xDE, 0x87, // 0000DE87 | ||
3001 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
3002 | 0x00, 0x06, 0x90, 0x20, // 00069020 | ||
3003 | 0x00, 0x06, 0x9C, 0x62, // 00069C62 | ||
3004 | 0x00, 0x06, 0x9C, 0x6E, // 00069C6E | ||
3005 | 0x00, 0x06, 0x9C, 0x63, // 00069C63 | ||
3006 | 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D | ||
3007 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3008 | 0x00, 0x06, 0x04, 0x73, // 00060473 | ||
3009 | 0x00, 0x07, 0x5C, 0x01, // 00075C01 | ||
3010 | 0x00, 0x07, 0x1E, 0x00, // 00071E00 | ||
3011 | 0x00, 0x08, 0x80, 0x41, // 00088041 | ||
3012 | 0x00, 0x02, 0x9E, 0x10, // 00029E10 | ||
3013 | 0x00, 0x02, 0x1B, 0x7F, // 00021B7F | ||
3014 | 0x00, 0x02, 0x81, 0x28, // 00028128 | ||
3015 | 0x00, 0x0B, 0x40, 0x7F, // 000B407F | ||
3016 | 0x00, 0x08, 0x12, 0x42, // 00081242 | ||
3017 | 0x00, 0x09, 0x1B, 0xC2, // 00091BC2 | ||
3018 | 0x00, 0x02, 0x87, 0x08, // 00028708 | ||
3019 | 0x00, 0x08, 0x92, 0xC3, // 000892C3 | ||
3020 | 0x00, 0x06, 0x84, 0x73, // 00068473 | ||
3021 | 0x00, 0x07, 0x64, 0x00, // 00076400 | ||
3022 | 0x00, 0x07, 0x27, 0x00, // 00072700 | ||
3023 | 0x00, 0x07, 0x7C, 0x00, // 00077C00 | ||
3024 | 0x00, 0x07, 0x3C, 0x00, // 00073C00 | ||
3025 | 0x00, 0x0B, 0x5B, 0x40, // 000B5B40 | ||
3026 | 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F | ||
3027 | 0x00, 0x06, 0xA4, 0x05, // 0006A405 | ||
3028 | 0x00, 0x01, 0x41, 0x80, // 00014180 | ||
3029 | 0x00, 0x06, 0xB8, 0x22, // 0006B822 | ||
3030 | 0x00, 0x07, 0x98, 0x0F, // 0007980F | ||
3031 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3032 | 0x00, 0x07, 0x98, 0x0F, // 0007980F | ||
3033 | 0x00, 0x00, 0xC1, 0x87, // 0000C187 | ||
3034 | 0x00, 0x06, 0x90, 0x1C, // 0006901C | ||
3035 | 0x00, 0x06, 0x9C, 0x62, // 00069C62 | ||
3036 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3037 | 0x00, 0x06, 0x9C, 0x63, // 00069C63 | ||
3038 | 0x00, 0x06, 0x9C, 0x6E, // 00069C6E | ||
3039 | 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D | ||
3040 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
3041 | 0x00, 0x0B, 0x40, 0x40, // 000B4040 | ||
3042 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3043 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3044 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3045 | 0x00, 0x06, 0x84, 0x62, // 00068462 | ||
3046 | 0x00, 0x06, 0x84, 0x63, // 00068463 | ||
3047 | 0x00, 0x06, 0x04, 0x62, // 00060462 | ||
3048 | 0x00, 0x06, 0x1C, 0x63, // 00061C63 | ||
3049 | 0x00, 0x0A, 0x0F, 0x41, // 000A0F41 | ||
3050 | 0x00, 0x08, 0x97, 0xC0, // 000897C0 | ||
3051 | 0x00, 0x08, 0x1B, 0xC2, // 00081BC2 | ||
3052 | 0x00, 0x0A, 0x12, 0x47, // 000A1247 | ||
3053 | 0x00, 0x07, 0x65, 0x00, // 00076500 | ||
3054 | 0x00, 0x07, 0x24, 0x00, // 00072400 | ||
3055 | 0x00, 0x07, 0x6D, 0x00, // 00076D00 | ||
3056 | 0x00, 0x07, 0x2C, 0x00, // 00072C00 | ||
3057 | 0x00, 0x07, 0x75, 0x00, // 00077500 | ||
3058 | 0x00, 0x07, 0x34, 0x00, // 00073400 | ||
3059 | 0x00, 0x0C, 0x12, 0x25, // 000C1225 | ||
3060 | 0x00, 0x0E, 0x11, 0x24, // 000E1124 | ||
3061 | 0x00, 0x0E, 0x13, 0x26, // 000E1326 | ||
3062 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3063 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3064 | 0x00, 0x06, 0x04, 0x6C, // 0006046C | ||
3065 | 0x00, 0x00, 0xC1, 0x07, // 0000C107 | ||
3066 | 0x00, 0x09, 0x12, 0xC0, // 000912C0 | ||
3067 | 0x00, 0x06, 0xBC, 0x62, // 0006BC62 | ||
3068 | 0x00, 0x06, 0x9C, 0x63, // 00069C63 | ||
3069 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3070 | 0x00, 0x06, 0x94, 0x6C, // 0006946C | ||
3071 | 0x00, 0x06, 0x94, 0x0F, // 0006940F | ||
3072 | 0x00, 0x03, 0x33, 0x33, // 00033333 | ||
3073 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3074 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3075 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3076 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3077 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3078 | 0x00, 0x00, 0x00, 0x00, // 00000000 | ||
3079 | }; | ||
3080 | |||
3081 | struct i2c_block { | ||
3082 | const unsigned char *data; | ||
3083 | unsigned len; | ||
3084 | }; | ||
3085 | |||
3086 | static struct i2c_block maspcm[] = { | ||
3087 | { maspcm_array1, sizeof(maspcm_array1) }, | ||
3088 | { maspcm_array2, sizeof(maspcm_array2) }, | ||
3089 | { maspcm_array3, sizeof(maspcm_array3) }, | ||
3090 | { maspcm_array4, sizeof(maspcm_array4) }, | ||
3091 | { maspcm_array5, sizeof(maspcm_array5) }, | ||
3092 | { maspcm_array6, sizeof(maspcm_array6) }, | ||
3093 | { maspcm_array7, sizeof(maspcm_array7) }, | ||
3094 | { maspcm_array8, sizeof(maspcm_array8) }, | ||
3095 | { maspcm_array9, sizeof(maspcm_array9) }, | ||
3096 | { maspcm_array10, sizeof(maspcm_array10) }, | ||
3097 | }; | ||
3098 | |||
3099 | /************ End of MAS pcm codec ************/ | ||
3100 | |||
3101 | #define WAVRECORD_QUIT BUTTON_OFF | ||
3102 | |||
3103 | #define CFGFILE_VERSION 0 /* Current config file version */ | ||
3104 | #define CFGFILE_MINVERSION 0 /* Minimum config file version to accept */ | ||
3105 | |||
3106 | #define PCM_MAIN_IO_CONTROL 0x0661 | ||
3107 | #define PCM_IF_STATUS_CONTROL 0x0662 | ||
3108 | #define PCM_OFREQ_CONTROL 0x0663 | ||
3109 | #define PCM_OUTPUT_CLOCK_CONF 0x0664 | ||
3110 | #define PCM_FRAME_COUNTER 0x0665 | ||
3111 | #define PCM_APP_RUNNING 0x0666 | ||
3112 | #define PCM_SAMPLE_RATE_STATUS 0x0667 | ||
3113 | #define PCM_BUFFER_ERROR_COUNTER 0x0668 | ||
3114 | #define PCM_SOFT_MUTE 0x0669 | ||
3115 | #define PCM_SPDIF_CHANNEL_STATUS 0x066a | ||
3116 | #define PCM_SAMPLE_RATE 0x066b | ||
3117 | #define PCM_VOL_OUT_LL 0x066c | ||
3118 | #define PCM_VOL_OUT_RL 0x066d | ||
3119 | #define PCM_VOL_OUT_LR 0x066e | ||
3120 | #define PCM_VOL_OUT_RR 0x066f | ||
3121 | #define PCM_VOL_IN_LL 0x0670 | ||
3122 | #define PCM_VOL_IN_RL 0x0671 | ||
3123 | #define PCM_VOL_IN_LR 0x0672 | ||
3124 | #define PCM_VOL_IN_RR 0x0673 | ||
3125 | |||
3126 | #define IRQ3 (*((volatile unsigned long*)0x0900010C)) | ||
3127 | |||
3128 | #define LOW_WATER_CHUNKSIZE (256*1024) | ||
3129 | |||
3130 | /* declarations */ | ||
3131 | |||
3132 | struct riff_header | ||
3133 | { | ||
3134 | uint8_t riff_id[4]; /* 00h - "RIFF" */ | ||
3135 | uint32_t riff_size; /* 04h - sz following headers + data_size */ | ||
3136 | /* format header */ | ||
3137 | uint8_t format[4]; /* 08h - "WAVE" */ | ||
3138 | uint8_t format_id[4]; /* 0Ch - "fmt " */ | ||
3139 | uint32_t format_size; /* 10h - 16 for PCM (sz format data) */ | ||
3140 | /* format data */ | ||
3141 | uint16_t audio_format; /* 14h - 1=PCM */ | ||
3142 | uint16_t num_channels; /* 16h - 1=M, 2=S, etc. */ | ||
3143 | uint32_t sample_rate; /* 18h - HZ */ | ||
3144 | uint32_t byte_rate; /* 1Ch - num_channels*sample_rate*bits_per_sample/8 */ | ||
3145 | uint16_t block_align; /* 20h - num_channels*bits_per_samples/8 */ | ||
3146 | uint16_t bits_per_sample; /* 22h - 8=8 bits, 16=16 bits, etc. */ | ||
3147 | /* Not for audio_format=1 (PCM) */ | ||
3148 | /* unsigned short extra_param_size; 24h - size of extra data */ | ||
3149 | /* unsigned char *extra_params; */ | ||
3150 | /* data header */ | ||
3151 | uint8_t data_id[4]; /* 24h - "data" */ | ||
3152 | uint32_t data_size; /* 28h - num_samples*num_channels*bits_per_sample/8 */ | ||
3153 | /* unsigned char *data; 2ch - actual sound data */ | ||
3154 | } __attribute__((packed)); | ||
3155 | |||
3156 | #define RIFF_FMT_HEADER_SIZE 12 /* format -> format_size */ | ||
3157 | #define RIFF_FMT_DATA_SIZE 16 /* audio_format -> bits_per_sample */ | ||
3158 | #define RIFF_DATA_HEADER_SIZE 8 /* data_id -> data_size */ | ||
3159 | |||
3160 | #define PCM_DEPTH_BYTES 2 | ||
3161 | #define PCM_DEPTH_BITS 16 | ||
3162 | |||
3163 | /* Define our own source constants since REC_SRC_FMRADIO will intrude on the count */ | ||
3164 | enum { | ||
3165 | WAV_SRC_LINE = 0, | ||
3166 | WAV_SRC_MIC, | ||
3167 | #ifdef HAVE_SPDIF_REC | ||
3168 | WAV_SRC_SPDIF, | ||
3169 | #endif | ||
3170 | WAV_NUM_SRC, | ||
3171 | }; | ||
3172 | |||
3173 | void rec_tick(void) __attribute__((interrupt_handler)); | ||
3174 | |||
3175 | /* settings */ | ||
3176 | struct rec_config { | ||
3177 | int samplerate; /* index */ | ||
3178 | int channels; | ||
3179 | int source; | ||
3180 | }; | ||
3181 | |||
3182 | struct rec_config reccfg_disk = { 7, 1, 0 }; | ||
3183 | struct rec_config reccfg; /* running config */ | ||
3184 | |||
3185 | static const char cfg_filename[] = "wavrecord.cfg"; | ||
3186 | static char *samplerate_str[9] = { "8000", "11025", "12000", | ||
3187 | "16000", "22050", "24000", | ||
3188 | "32000", "44100", "48000" }; | ||
3189 | static char *channel_str[2] = { "mono", "stereo" }; | ||
3190 | static char *source_str[WAV_NUM_SRC] = { "line in", "mic", | ||
3191 | HAVE_SPDIF_REC_("spdif",) }; | ||
3192 | |||
3193 | struct configdata disk_config[] = { | ||
3194 | { TYPE_ENUM, 0, 9, { .int_p = &reccfg_disk.samplerate }, "sample rate", | ||
3195 | samplerate_str }, | ||
3196 | { TYPE_ENUM, 0, 2, { .int_p = &reccfg_disk.channels }, "channels", | ||
3197 | channel_str }, | ||
3198 | { TYPE_ENUM, 0, WAV_NUM_SRC, { .int_p = &reccfg_disk.source }, "source", | ||
3199 | source_str }, | ||
3200 | }; | ||
3201 | |||
3202 | static char recfilename[MAX_PATH]; | ||
3203 | |||
3204 | static unsigned char *aud_buf; | ||
3205 | static ssize_t aud_size; | ||
3206 | static unsigned char *plug_buf; | ||
3207 | |||
3208 | static int aud_read = 0; | ||
3209 | static volatile int aud_write = 0; | ||
3210 | static volatile int num_rec_bytes = 0; | ||
3211 | |||
3212 | static const struct riff_header header_template = | ||
3213 | { | ||
3214 | /* "RIFF" header */ | ||
3215 | { 'R', 'I', 'F', 'F' }, /* riff_id */ | ||
3216 | 0, /* riff_size (*) */ | ||
3217 | /* format header */ | ||
3218 | { 'W', 'A', 'V', 'E' }, /* format */ | ||
3219 | { 'f', 'm', 't', ' ' }, /* format_id */ | ||
3220 | htole32(16), /* format_size */ | ||
3221 | /* format data */ | ||
3222 | htole16(1), /* audio_format */ | ||
3223 | 0, /* num_channels (*) */ | ||
3224 | 0, /* sample_rate (*) */ | ||
3225 | 0, /* byte_rate (*) */ | ||
3226 | 0, /* block_align (*) */ | ||
3227 | htole16(PCM_DEPTH_BITS), /* bits_per_sample */ | ||
3228 | /* data header */ | ||
3229 | { 'd', 'a', 't', 'a' }, /* data_id */ | ||
3230 | 0 /* data_size (*) */ | ||
3231 | /* (*) updated during ENC_END_FILE event */ | ||
3232 | }; | ||
3233 | |||
3234 | /** i2c, MAS configuration **/ | ||
3235 | |||
3236 | void i2c_random_write(int addr, int cmd, const unsigned char* data, int size) | ||
3237 | { | ||
3238 | plug_buf[0] = cmd; | ||
3239 | rb->memcpy(plug_buf+1, data, size); | ||
3240 | |||
3241 | rb->i2c_begin(); | ||
3242 | rb->i2c_write(addr, plug_buf, size+1); | ||
3243 | rb->i2c_end(); | ||
3244 | } | ||
3245 | |||
3246 | void mas_freeze(void) | ||
3247 | { | ||
3248 | static const unsigned char freeze[] = { 0x00, 0x00 }; | ||
3249 | |||
3250 | /* Freeze DSP */ | ||
3251 | i2c_random_write(MAS_ADR, MAS_DATA_WRITE, freeze, sizeof(freeze)); | ||
3252 | /* mas_run(0); in core implementation */ | ||
3253 | |||
3254 | /* stop all internal transfers */ | ||
3255 | rb->mas_writereg(0x3b, 0x00318); /* stopdma 1 */ | ||
3256 | rb->mas_writereg(0x43, 0x00300); /* stopdma 2 */ | ||
3257 | rb->mas_writereg(0x4b, 0); /* stopdma 3 */ | ||
3258 | rb->mas_writereg(0x53, 0x00318); /* stopdma 4 */ | ||
3259 | rb->mas_writereg(0x6b, 0); /* stopdma 5 */ | ||
3260 | rb->mas_writereg(0xbb, 0x00318); /* stopdma 6 */ | ||
3261 | rb->mas_writereg(0xc3, 0x00300); /* stopdma 7 */ | ||
3262 | rb->mas_writereg(0x06, 0); /* stopdma 8 */ | ||
3263 | } | ||
3264 | |||
3265 | void mas_download_pcm(void) | ||
3266 | { | ||
3267 | static const unsigned char runi2s[] = { 0x10, 0x00 }; | ||
3268 | unsigned i; | ||
3269 | |||
3270 | mas_freeze(); | ||
3271 | |||
3272 | /* Download program to MAS memory */ | ||
3273 | for ( i = 0; i < (sizeof(maspcm)/sizeof(struct i2c_block)); i++ ) | ||
3274 | i2c_random_write(MAS_ADR, MAS_DATA_WRITE, maspcm[i].data, maspcm[i].len); | ||
3275 | |||
3276 | rb->mas_writereg(0x6b, 0xc0000); /* Reconfigure data to program memory */ | ||
3277 | |||
3278 | /* Start execution at D0:1000 */ | ||
3279 | i2c_random_write(MAS_ADR, MAS_DATA_WRITE, runi2s, sizeof(runi2s)); | ||
3280 | /* mas_run(0x1000); in core implementation */ | ||
3281 | } | ||
3282 | |||
3283 | void mas_restore(void) | ||
3284 | { | ||
3285 | static const unsigned char resetdsp[] = { 0x88, 0x00 }; | ||
3286 | static const unsigned char initdsp[] = { 0x8c, 0x00 }; | ||
3287 | unsigned long val; | ||
3288 | |||
3289 | i2c_random_write(MAS_ADR, MAS_CONTROL, resetdsp, sizeof(resetdsp)); | ||
3290 | /* mas_direct_config_write(MAS_CONTROL, 0x8d00); in core implementation */ | ||
3291 | rb->sleep(1); | ||
3292 | i2c_random_write(MAS_ADR, MAS_CONTROL, initdsp, sizeof(initdsp)); | ||
3293 | /* mas_direct_config_write(MAS_CONTROL, 0x8c00); in core implementation */ | ||
3294 | |||
3295 | /* Stop the current application */ | ||
3296 | val = 0; | ||
3297 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1); | ||
3298 | do | ||
3299 | rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1); | ||
3300 | while(val); | ||
3301 | |||
3302 | #ifdef HAVE_SPDIF_OUT | ||
3303 | val = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */ | ||
3304 | #else | ||
3305 | val = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */ | ||
3306 | #endif | ||
3307 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_INTERFACE_CONTROL, &val, 1); | ||
3308 | |||
3309 | val = 0x0025; /* Set Demand mode and validate all settings */ | ||
3310 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val, 1); | ||
3311 | |||
3312 | val = 0x000c; /* Start the Layer2/3 decoder applications */ | ||
3313 | rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1); | ||
3314 | do | ||
3315 | rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1); | ||
3316 | while((val & 0x000c) != 0x000c); | ||
3317 | } | ||
3318 | |||
3319 | /** Very basic recording engine **/ | ||
3320 | |||
3321 | void rec_tick(void) | ||
3322 | { | ||
3323 | int d1, d2, d3; | ||
3324 | |||
3325 | ICR |= 0x0010; /* Begin with setting the IRQ to edge sensitive */ | ||
3326 | |||
3327 | if(!(PADRH & 0x80)) | ||
3328 | { /* /EOD is low - transfer 36 bytes (9 sample pairs, 1 MASPCM DMA block) */ | ||
3329 | asm volatile ( | ||
3330 | "add %[buf], %[writ] \n" /* write pos -> addr */ | ||
3331 | "mov #9, %[i] \n" /* block size = 9*4 */ | ||
3332 | |||
3333 | ".r_loop: \n" | ||
3334 | "xor.b #0x08, @(r0,gbr) \n" /* set PR active */ | ||
3335 | ".r_wait1: \n" | ||
3336 | "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */ | ||
3337 | "cmp/pz %[scrt] \n" | ||
3338 | "bf .r_wait1 \n" | ||
3339 | |||
3340 | "mov.b @%[mas], %[data] \n" /* read data from MAS */ | ||
3341 | "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */ | ||
3342 | "extu.b %[data], %[data] \n" | ||
3343 | |||
3344 | "xor.b #0x08, @(r0,gbr) \n" /* set PR active */ | ||
3345 | ".r_wait2: \n" | ||
3346 | "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */ | ||
3347 | "cmp/pz %[scrt] \n" | ||
3348 | "bf .r_wait2 \n" | ||
3349 | |||
3350 | "mov.b @%[mas], %[scrt] \n" /* read data from MAS */ | ||
3351 | "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */ | ||
3352 | "shll8 %[data] \n" | ||
3353 | "extu.b %[scrt], %[scrt] \n" | ||
3354 | "or %[scrt], %[data] \n" | ||
3355 | |||
3356 | "xor.b #0x08, @(r0,gbr) \n" /* set PR active */ | ||
3357 | ".r_wait3: \n" | ||
3358 | "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */ | ||
3359 | "cmp/pz %[scrt] \n" | ||
3360 | "bf .r_wait3 \n" | ||
3361 | |||
3362 | "mov.b @%[mas], %[scrt] \n" /* read data from MAS */ | ||
3363 | "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */ | ||
3364 | "shll8 %[data] \n" | ||
3365 | "extu.b %[scrt], %[scrt] \n" | ||
3366 | "or %[scrt], %[data] \n" | ||
3367 | |||
3368 | "xor.b #0x08, @(r0,gbr) \n" /* set PR active */ | ||
3369 | ".r_wait4: \n" | ||
3370 | "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */ | ||
3371 | "cmp/pz %[scrt] \n" | ||
3372 | "bf .r_wait4 \n" | ||
3373 | |||
3374 | "mov.b @%[mas], %[scrt] \n" /* read data from MAS */ | ||
3375 | "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */ | ||
3376 | "shll8 %[data] \n" | ||
3377 | "extu.b %[scrt], %[scrt] \n" | ||
3378 | "or %[scrt], %[data] \n" | ||
3379 | |||
3380 | "mov.l %[data], @%[writ] \n" | ||
3381 | |||
3382 | "add #4, %[writ] \n" /* advance buffer pointer */ | ||
3383 | "cmp/hi %[writ], %[end] \n" | ||
3384 | "bt .r_nowrap \n" | ||
3385 | "mov %[buf], %[writ] \n" /* wrap if necessary */ | ||
3386 | ".r_nowrap: \n" | ||
3387 | |||
3388 | "add #-1, %[i] \n" /* count down block size */ | ||
3389 | "cmp/pl %[i] \n" /* exit if zero */ | ||
3390 | "bt .r_loop \n" | ||
3391 | |||
3392 | ".r_end: \n" | ||
3393 | "sub %[buf], %[writ] \n" /* eddr -> write pos */ | ||
3394 | : /* outputs */ | ||
3395 | [writ]"+r"(aud_write), | ||
3396 | [i] "=&r"(d1), | ||
3397 | [data]"=&r"(d2), | ||
3398 | [scrt]"=&r"(d3) | ||
3399 | : /* inputs */ | ||
3400 | [buf] "r"(aud_buf), | ||
3401 | [end] "r"(aud_buf + aud_size), | ||
3402 | [padh]"z"(PADRH_ADDR), | ||
3403 | [pbdh]"r"(PBDRH_ADDR), | ||
3404 | [mas] "r"(0x04000000) | ||
3405 | ); | ||
3406 | num_rec_bytes += 36; | ||
3407 | } | ||
3408 | } | ||
3409 | |||
3410 | void rec_tick_enable(bool on) | ||
3411 | { | ||
3412 | int oldlevel = disable_irq_save(); | ||
3413 | |||
3414 | if(on) | ||
3415 | { | ||
3416 | IPRA = (IPRA & 0xfff0) | 0x000b; | ||
3417 | ICR &= ~0x0010; /* IRQ3 level sensitive */ | ||
3418 | IPRB &= 0xff0f; /* Disable IRQ6 */ | ||
3419 | } | ||
3420 | else | ||
3421 | { | ||
3422 | IPRA &= 0xfff0; | ||
3423 | ICR &= ~0x0002; /* Set IRQ6 to level sensitive and back again. */ | ||
3424 | ICR |= 0x0002; /* This will clear a pending request. */ | ||
3425 | IPRB = (IPRB & 0xff0f) | 0x0080; /* Reenable IRQ6 */ | ||
3426 | } | ||
3427 | |||
3428 | restore_irq(oldlevel); | ||
3429 | } | ||
3430 | |||
3431 | void hijack_interrupts(bool on) | ||
3432 | { | ||
3433 | static bool taken = false; | ||
3434 | static unsigned long orig_IRQ3; | ||
3435 | |||
3436 | if (on && !taken) | ||
3437 | { | ||
3438 | orig_IRQ3 = IRQ3; | ||
3439 | IRQ3 = (unsigned long)rec_tick; | ||
3440 | } | ||
3441 | else if (!on && taken) | ||
3442 | { | ||
3443 | IRQ3 = orig_IRQ3; | ||
3444 | } | ||
3445 | taken = on; | ||
3446 | } | ||
3447 | |||
3448 | static bool update_wav_header(char *filename, int sample_rate, | ||
3449 | int num_channels, int num_bytes) | ||
3450 | { | ||
3451 | struct riff_header hdr; | ||
3452 | int fd; | ||
3453 | bool ret; | ||
3454 | |||
3455 | fd = rb->open(filename, O_RDWR); | ||
3456 | if (fd < 0) | ||
3457 | return false; | ||
3458 | |||
3459 | rb->memcpy(&hdr, &header_template, sizeof (struct riff_header)); | ||
3460 | |||
3461 | /* "RIFF" header */ | ||
3462 | hdr.riff_size = htole32(RIFF_FMT_HEADER_SIZE + RIFF_FMT_DATA_SIZE | ||
3463 | + RIFF_DATA_HEADER_SIZE + num_bytes); | ||
3464 | |||
3465 | /* format data */ | ||
3466 | hdr.num_channels = htole16(num_channels); | ||
3467 | hdr.sample_rate = htole32(sample_rate); | ||
3468 | hdr.byte_rate = htole32(sample_rate * num_channels * PCM_DEPTH_BYTES); | ||
3469 | hdr.block_align = htole16(num_channels * PCM_DEPTH_BYTES); | ||
3470 | |||
3471 | /* data header */ | ||
3472 | hdr.data_size = htole32(num_bytes); | ||
3473 | |||
3474 | ret = (rb->write(fd, &hdr, sizeof (struct riff_header)) | ||
3475 | == sizeof (struct riff_header)); | ||
3476 | rb->close(fd); | ||
3477 | return ret; | ||
3478 | } | ||
3479 | |||
3480 | static int record_file(char *filename) | ||
3481 | { | ||
3482 | bool recording, saving; | ||
3483 | int fd, low_water, i; | ||
3484 | int bytes_written; | ||
3485 | int button; | ||
3486 | unsigned long mas; | ||
3487 | |||
3488 | static const unsigned sampr[9][2] = { | ||
3489 | {0, 8000}, {1, 11025}, {2, 12000}, | ||
3490 | {4, 16000}, {5, 22050}, {6, 24000}, | ||
3491 | {8, 32000}, {9, 44100}, {10, 48000} | ||
3492 | }; | ||
3493 | |||
3494 | fd = rb->open(filename, O_RDWR|O_CREAT|O_TRUNC, 0666); | ||
3495 | if (fd < 0) | ||
3496 | { | ||
3497 | rb->splash(2*HZ, "Couldn't create WAV file"); | ||
3498 | return PLUGIN_ERROR; | ||
3499 | } | ||
3500 | /* write template header */ | ||
3501 | if (rb->write(fd, &header_template, sizeof (struct riff_header)) | ||
3502 | != sizeof (struct riff_header)) | ||
3503 | { | ||
3504 | rb->close(fd); | ||
3505 | rb->splash(2*HZ, "Write error"); | ||
3506 | return PLUGIN_ERROR; | ||
3507 | } | ||
3508 | |||
3509 | rb->sound_set_pitch(PITCH_SPEED_100); /* reset pitch */ | ||
3510 | mas_download_pcm(); | ||
3511 | num_rec_bytes = 0; | ||
3512 | bytes_written = 0; | ||
3513 | |||
3514 | rb->lcd_clear_display(); | ||
3515 | rb->lcd_puts(0, 0, filename); | ||
3516 | |||
3517 | switch (reccfg.source) | ||
3518 | { | ||
3519 | case WAV_SRC_LINE: | ||
3520 | rb->mas_codec_writereg(0, (rb->global_settings->rec_left_gain << 12) | ||
3521 | | (rb->global_settings->rec_right_gain << 8) | ||
3522 | | 0x07); | ||
3523 | rb->mas_codec_writereg(8, 0); | ||
3524 | break; | ||
3525 | |||
3526 | case WAV_SRC_MIC: | ||
3527 | rb->mas_codec_writereg(0, (rb->global_settings->rec_mic_gain << 4) | ||
3528 | | 0x0d); | ||
3529 | rb->mas_codec_writereg(8, 0x8000); /* Copy left channel to right */ | ||
3530 | break; | ||
3531 | |||
3532 | #ifdef HAVE_SPDIF_REC | ||
3533 | case WAV_SRC_SPDIF: | ||
3534 | rb->mas_codec_writereg(0, 0x01); | ||
3535 | break; | ||
3536 | #endif | ||
3537 | } | ||
3538 | |||
3539 | #ifdef HAVE_SPDIF_REC | ||
3540 | if (reccfg.source == WAV_SRC_SPDIF) | ||
3541 | rb->lcd_putsf(0, 1, "16bit %s", channel_str[reccfg.channels]); | ||
3542 | else | ||
3543 | #endif | ||
3544 | rb->lcd_putsf(0, 1, "%sHz 16bit %s", | ||
3545 | samplerate_str[reccfg.samplerate], channel_str[reccfg.channels]); | ||
3546 | |||
3547 | rb->lcd_update(); | ||
3548 | |||
3549 | mas = 0x0060 /* no framing, little endian */ | ||
3550 | | ((reccfg.channels == 0) ? 0x10 : 0) /* mono/stereo */ | ||
3551 | | sampr[reccfg.samplerate][0]; | ||
3552 | rb->mas_writemem(MAS_BANK_D0, PCM_SAMPLE_RATE, &mas, 1); | ||
3553 | |||
3554 | #ifdef HAVE_SPDIF_OUT | ||
3555 | mas = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */ | ||
3556 | #else | ||
3557 | mas = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */ | ||
3558 | #endif | ||
3559 | rb->mas_writemem(MAS_BANK_D0, PCM_IF_STATUS_CONTROL, &mas, 1); | ||
3560 | |||
3561 | #ifdef HAVE_SPDIF_IN | ||
3562 | if (reccfg.source == AUDIO_SRC_SPDIF) | ||
3563 | mas = 0x2225; /* recording, S/PDIF input, validate */ | ||
3564 | else | ||
3565 | #endif | ||
3566 | mas = 0x2125; /* recording, ADC input, validate */ | ||
3567 | rb->mas_writemem(MAS_BANK_D0, PCM_MAIN_IO_CONTROL, &mas, 1); | ||
3568 | |||
3569 | mas = 0x80001; /* avoid distortion (overflow on full-range input samples) */ | ||
3570 | rb->mas_writemem(MAS_BANK_D0, PCM_VOL_IN_LL, &mas, 1); /* LL */ | ||
3571 | rb->mas_writemem(MAS_BANK_D0, PCM_VOL_IN_RR, &mas, 1); /* RR */ | ||
3572 | |||
3573 | hijack_interrupts(true); | ||
3574 | rec_tick_enable(true); | ||
3575 | recording = true; | ||
3576 | saving = false; | ||
3577 | low_water = 5 /* seconds */ | ||
3578 | * PCM_DEPTH_BYTES | ||
3579 | * sampr[reccfg.samplerate][1] /* samples per second */ | ||
3580 | * (reccfg.channels + 1); | ||
3581 | |||
3582 | while (recording || saving) | ||
3583 | { | ||
3584 | int to_save, write_now, result; | ||
3585 | |||
3586 | if (saving) | ||
3587 | { | ||
3588 | to_save = num_rec_bytes - bytes_written; | ||
3589 | if (to_save > aud_size) | ||
3590 | { | ||
3591 | rec_tick_enable(false); | ||
3592 | #if (CONFIG_STORAGE & STORAGE_MMC) | ||
3593 | rb->splash(HZ, "Data overrun (slow MMC)"); | ||
3594 | #else | ||
3595 | rb->splash(HZ, "Data overrun"); | ||
3596 | #endif | ||
3597 | recording = false; | ||
3598 | saving = false; | ||
3599 | break; | ||
3600 | } | ||
3601 | write_now = MIN(to_save, aud_size - aud_read); | ||
3602 | #if (CONFIG_STORAGE & STORAGE_MMC) | ||
3603 | write_now = MIN(write_now, 256*1024); | ||
3604 | #else | ||
3605 | write_now = MIN(write_now, 1024*1024); | ||
3606 | #endif | ||
3607 | result = rb->write(fd, aud_buf + aud_read, write_now); | ||
3608 | if (result < 0) | ||
3609 | { | ||
3610 | rec_tick_enable(false); | ||
3611 | rb->splash(HZ, "Write error"); | ||
3612 | recording = false; | ||
3613 | saving = false; | ||
3614 | break; | ||
3615 | } | ||
3616 | bytes_written += result; | ||
3617 | if (result != write_now) | ||
3618 | { | ||
3619 | rec_tick_enable(false); | ||
3620 | rb->splash(HZ, "Disk full"); | ||
3621 | recording = false; | ||
3622 | saving = false; | ||
3623 | break; | ||
3624 | } | ||
3625 | if (bytes_written >= 0x7fe00000) | ||
3626 | { | ||
3627 | rec_tick_enable(false); | ||
3628 | rb->splash(HZ, "Max file size reached"); | ||
3629 | recording = false; | ||
3630 | saving = false; | ||
3631 | break; | ||
3632 | } | ||
3633 | aud_read += write_now; | ||
3634 | if (aud_read == aud_size) | ||
3635 | aud_read = 0; | ||
3636 | |||
3637 | if (to_save == write_now) | ||
3638 | saving = false; | ||
3639 | |||
3640 | rb->yield(); | ||
3641 | button = rb->button_get(false); | ||
3642 | } | ||
3643 | else | ||
3644 | { | ||
3645 | button = rb->button_get_w_tmo(HZ/2); | ||
3646 | if (aud_size - (num_rec_bytes - bytes_written) < low_water) | ||
3647 | saving = true; | ||
3648 | } | ||
3649 | if (button == BUTTON_OFF) | ||
3650 | { | ||
3651 | rec_tick_enable(false); | ||
3652 | recording = false; | ||
3653 | saving = true; | ||
3654 | } | ||
3655 | rb->lcd_putsf(0, 2, "Bytes: %d", num_rec_bytes); | ||
3656 | rb->lcd_update(); | ||
3657 | } | ||
3658 | /* read sample rate from MAS */ | ||
3659 | rb->mas_readmem(MAS_BANK_D0, PCM_SAMPLE_RATE_STATUS, &mas, 1); | ||
3660 | rb->close(fd); | ||
3661 | |||
3662 | hijack_interrupts(false); | ||
3663 | mas_restore(); | ||
3664 | rb->sound_set(SOUND_CHANNELS, rb->global_settings->channel_config); | ||
3665 | rb->sound_set(SOUND_STEREO_WIDTH, rb->global_settings->stereo_width); | ||
3666 | |||
3667 | for (i = 0; i < 9; i++) | ||
3668 | { | ||
3669 | if (sampr[i][0] == mas) | ||
3670 | break; | ||
3671 | } | ||
3672 | if (i == 9 || !(update_wav_header(filename, sampr[i][1], | ||
3673 | (reccfg.channels + 1), bytes_written))) | ||
3674 | { | ||
3675 | rb->splash(HZ, "Updating WAV header failed"); | ||
3676 | } | ||
3677 | |||
3678 | return PLUGIN_OK; | ||
3679 | } | ||
3680 | |||
3681 | static int recording_menu(void) | ||
3682 | { | ||
3683 | int menupos = 3; | ||
3684 | int rc = 0; | ||
3685 | bool done = false; | ||
3686 | |||
3687 | static const struct opt_items freqs[9] = { | ||
3688 | { "8000Hz", TALK_ID(8, UNIT_KHZ) }, | ||
3689 | { "11025Hz", TALK_ID(11, UNIT_KHZ) }, | ||
3690 | { "12000Hz", TALK_ID(12, UNIT_KHZ) }, | ||
3691 | { "16000Hz", TALK_ID(16, UNIT_KHZ) }, | ||
3692 | { "22050Hz", TALK_ID(22, UNIT_KHZ) }, | ||
3693 | { "24000Hz", TALK_ID(24, UNIT_KHZ) }, | ||
3694 | { "32000Hz", TALK_ID(32, UNIT_KHZ) }, | ||
3695 | { "44100Hz", TALK_ID(44, UNIT_KHZ) }, | ||
3696 | { "48000Hz", TALK_ID(48, UNIT_KHZ) }, | ||
3697 | }; | ||
3698 | static const struct opt_items chans[2] = { | ||
3699 | { STR(LANG_CHANNEL_MONO) }, | ||
3700 | { STR(LANG_CHANNEL_STEREO) }, | ||
3701 | }; | ||
3702 | static const struct opt_items srcs[WAV_NUM_SRC] = { | ||
3703 | { "Line In", -1 }, | ||
3704 | { "Microphone", -1 }, | ||
3705 | #ifdef HAVE_SPDIF_REC | ||
3706 | { "S/PDIF", -1 }, | ||
3707 | #endif | ||
3708 | }; | ||
3709 | |||
3710 | MENUITEM_STRINGLIST(menu, "WAV Recording", NULL, "Set sample rate", | ||
3711 | "Set channels", "Set Source", "Start recording", "Quit"); | ||
3712 | |||
3713 | while (!done) | ||
3714 | { | ||
3715 | switch (rb->do_menu(&menu, &menupos, NULL, false)) | ||
3716 | { | ||
3717 | case 0: /* Set sample rate */ | ||
3718 | rb->set_option("Sample rate", &reccfg.samplerate, INT, freqs, 9, NULL); | ||
3719 | break; | ||
3720 | |||
3721 | case 1: /* Set channels */ | ||
3722 | rb->set_option("Channels", &reccfg.channels, INT, chans, 2, NULL); | ||
3723 | break; | ||
3724 | |||
3725 | case 2: /* Set source */ | ||
3726 | rb->set_option("Source", &reccfg.source, INT, srcs, WAV_NUM_SRC, NULL); | ||
3727 | break; | ||
3728 | |||
3729 | case 3: /* Start recording */ | ||
3730 | rb->create_numbered_filename(recfilename, | ||
3731 | rb->global_settings->rec_directory, | ||
3732 | "rec_", ".wav", 4 | ||
3733 | IF_CNFN_NUM_(, NULL)); | ||
3734 | rc = record_file(recfilename); | ||
3735 | done = true; | ||
3736 | break; | ||
3737 | |||
3738 | case 4: /* Quit */ | ||
3739 | rc = PLUGIN_OK; | ||
3740 | done = true; | ||
3741 | break; | ||
3742 | |||
3743 | case MENU_ATTACHED_USB: | ||
3744 | rc = PLUGIN_USB_CONNECTED; | ||
3745 | done = true; | ||
3746 | break; | ||
3747 | } | ||
3748 | } | ||
3749 | return rc; | ||
3750 | } | ||
3751 | |||
3752 | /* plugin entry point */ | ||
3753 | enum plugin_status plugin_start(const void* parameter) | ||
3754 | { | ||
3755 | size_t buf_size; | ||
3756 | int align; | ||
3757 | int rc; | ||
3758 | const char *recbasedir; | ||
3759 | |||
3760 | (void)parameter; | ||
3761 | |||
3762 | plug_buf = rb->plugin_get_buffer(&buf_size); | ||
3763 | if (buf_size < 6700) /* needed for i2c transfer */ | ||
3764 | { | ||
3765 | rb->splash(HZ, "Out of memory."); | ||
3766 | return PLUGIN_ERROR; | ||
3767 | } | ||
3768 | |||
3769 | recbasedir = rb->global_settings->rec_directory; | ||
3770 | if (rb->strcmp(recbasedir, "/") && !rb->dir_exists(recbasedir)) | ||
3771 | { | ||
3772 | rc = rb->mkdir(recbasedir); | ||
3773 | if (rc < 0) | ||
3774 | { | ||
3775 | rb->splashf(HZ*2, "Can't create directory %s. Error %d.", | ||
3776 | recbasedir, rc); | ||
3777 | return PLUGIN_ERROR; | ||
3778 | } | ||
3779 | } | ||
3780 | |||
3781 | aud_buf = rb->plugin_get_audio_buffer(&buf_size); | ||
3782 | aud_size = buf_size; | ||
3783 | align = (-(long)aud_buf) & 3; | ||
3784 | aud_buf += align; | ||
3785 | aud_size -= align; | ||
3786 | aud_size &= ~3; | ||
3787 | |||
3788 | configfile_load(cfg_filename, disk_config, | ||
3789 | sizeof(disk_config) / sizeof(disk_config[0]), | ||
3790 | CFGFILE_MINVERSION); | ||
3791 | rb->memcpy(&reccfg, &reccfg_disk, sizeof(reccfg)); /* copy to running config */ | ||
3792 | |||
3793 | rc = recording_menu(); | ||
3794 | |||
3795 | if (rb->memcmp(&reccfg, &reccfg_disk, sizeof(reccfg))) /* save settings if changed */ | ||
3796 | { | ||
3797 | rb->memcpy(&reccfg_disk, &reccfg, sizeof(reccfg)); | ||
3798 | configfile_save(cfg_filename, disk_config, | ||
3799 | sizeof(disk_config) / sizeof(disk_config[0]), | ||
3800 | CFGFILE_VERSION); | ||
3801 | } | ||
3802 | return rc; | ||
3803 | |||
3804 | #if 0 | ||
3805 | #if (CONFIG_STORAGE & STORAGE_MMC) | ||
3806 | return record_file("/<MMC1>/test.wav"); | ||
3807 | #else | ||
3808 | return record_file("/test.wav"); | ||
3809 | #endif | ||
3810 | #endif | ||
3811 | } | ||
diff --git a/apps/plugins/wormlet.c b/apps/plugins/wormlet.c index a8447c9952..b18cdc21f8 100644 --- a/apps/plugins/wormlet.c +++ b/apps/plugins/wormlet.c | |||
@@ -46,36 +46,8 @@ static long max_cycle; | |||
46 | when a new argh is made */ | 46 | when a new argh is made */ |
47 | #define MIN_ARGH_DIST 5 | 47 | #define MIN_ARGH_DIST 5 |
48 | 48 | ||
49 | #if (CONFIG_KEYPAD == RECORDER_PAD) | 49 | #if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
50 | #define BTN_DIR_UP BUTTON_UP | 50 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
51 | #define BTN_DIR_DOWN BUTTON_DOWN | ||
52 | #define BTN_DIR_LEFT BUTTON_LEFT | ||
53 | #define BTN_DIR_RIGHT BUTTON_RIGHT | ||
54 | #define BTN_PLAYER2_DIR1 BUTTON_F2 | ||
55 | #define BTN_PLAYER2_DIR2 BUTTON_F3 | ||
56 | #define BTN_STARTPAUSE BUTTON_PLAY | ||
57 | #define BTN_QUIT BUTTON_OFF | ||
58 | #define BTN_STOPRESET BUTTON_ON | ||
59 | #define BTN_TOGGLE_KEYS BUTTON_F1 | ||
60 | |||
61 | #if BUTTON_REMOTE != 0 | ||
62 | #define BTN_RC_UP BUTTON_RC_VOL_UP | ||
63 | #define BTN_RC_DOWN BUTTON_RC_VOL_DOWN | ||
64 | #define REMOTE | ||
65 | #define MULTIPLAYER | ||
66 | #endif | ||
67 | |||
68 | #elif (CONFIG_KEYPAD == ONDIO_PAD) | ||
69 | #define BTN_DIR_UP BUTTON_UP | ||
70 | #define BTN_DIR_DOWN BUTTON_DOWN | ||
71 | #define BTN_DIR_LEFT BUTTON_LEFT | ||
72 | #define BTN_DIR_RIGHT BUTTON_RIGHT | ||
73 | #define BTN_STARTPAUSE (BUTTON_MENU|BUTTON_REL) | ||
74 | #define BTN_QUIT (BUTTON_OFF|BUTTON_REL) | ||
75 | #define BTN_STOPRESET (BUTTON_OFF|BUTTON_MENU) | ||
76 | |||
77 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | ||
78 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | ||
79 | 51 | ||
80 | #define BTN_DIR_UP BUTTON_MENU | 52 | #define BTN_DIR_UP BUTTON_MENU |
81 | #define BTN_DIR_DOWN BUTTON_PLAY | 53 | #define BTN_DIR_DOWN BUTTON_PLAY |
diff --git a/apps/plugins/xobox.c b/apps/plugins/xobox.c index b923e23986..e2cccba8fc 100644 --- a/apps/plugins/xobox.c +++ b/apps/plugins/xobox.c | |||
@@ -115,24 +115,6 @@ | |||
115 | #define DOWN BUTTON_SCROLL_DOWN | 115 | #define DOWN BUTTON_SCROLL_DOWN |
116 | #define PAUSE BUTTON_PLAY | 116 | #define PAUSE BUTTON_PLAY |
117 | 117 | ||
118 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
119 | |||
120 | #define QUIT BUTTON_OFF | ||
121 | #define LEFT BUTTON_LEFT | ||
122 | #define RIGHT BUTTON_RIGHT | ||
123 | #define DOWN BUTTON_DOWN | ||
124 | #define UP BUTTON_UP | ||
125 | #define PAUSE BUTTON_PLAY | ||
126 | |||
127 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
128 | |||
129 | #define QUIT BUTTON_OFF | ||
130 | #define LEFT BUTTON_LEFT | ||
131 | #define RIGHT BUTTON_RIGHT | ||
132 | #define DOWN BUTTON_DOWN | ||
133 | #define UP BUTTON_UP | ||
134 | #define PAUSE BUTTON_MENU | ||
135 | |||
136 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) | 118 | #elif (CONFIG_KEYPAD == GIGABEAT_S_PAD) |
137 | 119 | ||
138 | #define QUIT BUTTON_BACK | 120 | #define QUIT BUTTON_BACK |
diff --git a/apps/plugins/zxbox/keymaps.h b/apps/plugins/zxbox/keymaps.h index c2d434415c..967b979883 100644 --- a/apps/plugins/zxbox/keymaps.h +++ b/apps/plugins/zxbox/keymaps.h | |||
@@ -47,24 +47,8 @@ | |||
47 | #define ZX_SELECT BUTTON_SELECT | 47 | #define ZX_SELECT BUTTON_SELECT |
48 | #define ZX_MENU BUTTON_PLAY | 48 | #define ZX_MENU BUTTON_PLAY |
49 | 49 | ||
50 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
51 | #define ZX_SELECT BUTTON_PLAY | ||
52 | #define ZX_MENU BUTTON_F1 | ||
53 | #define ZX_LEFT BUTTON_LEFT | ||
54 | #define ZX_RIGHT BUTTON_RIGHT | ||
55 | #define ZX_UP BUTTON_UP | ||
56 | #define ZX_DOWN BUTTON_DOWN | ||
57 | |||
58 | #elif CONFIG_KEYPAD == ONDIO_PAD | ||
59 | #define ZX_SELECT BUTTON_MENU | ||
60 | #define ZX_MENU BUTTON_OFF | ||
61 | #define ZX_LEFT BUTTON_LEFT | ||
62 | #define ZX_RIGHT BUTTON_RIGHT | ||
63 | #define ZX_UP BUTTON_UP | ||
64 | #define ZX_DOWN BUTTON_DOWN | ||
65 | |||
66 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD | 50 | #elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD |
67 | #define ZX_SELECT BUTTON_SELECT | 51 | #define ZX_SELECT BUTTON_SELECT |
68 | #define ZX_MENU BUTTON_PLAY | 52 | #define ZX_MENU BUTTON_PLAY |
69 | #define ZX_LEFT BUTTON_LEFT | 53 | #define ZX_LEFT BUTTON_LEFT |
70 | #define ZX_RIGHT BUTTON_RIGHT | 54 | #define ZX_RIGHT BUTTON_RIGHT |
diff --git a/apps/plugins/zxbox/zxbox_keyb.c b/apps/plugins/zxbox/zxbox_keyb.c index 046f07379d..4dc50e2ae8 100644 --- a/apps/plugins/zxbox/zxbox_keyb.c +++ b/apps/plugins/zxbox/zxbox_keyb.c | |||
@@ -7,12 +7,6 @@ | |||
7 | #define O_BINARY 0 | 7 | #define O_BINARY 0 |
8 | #endif | 8 | #endif |
9 | 9 | ||
10 | #if CONFIG_KEYPAD == RECORDER_PAD | ||
11 | #define BUTTONBAR_HEIGHT 8 | ||
12 | #else | ||
13 | #define BUTTONBAR_HEIGHT 0 | ||
14 | #endif | ||
15 | |||
16 | #define DEFAULT_MARGIN 6 | 10 | #define DEFAULT_MARGIN 6 |
17 | #define KBD_BUF_SIZE 500 | 11 | #define KBD_BUF_SIZE 500 |
18 | #define kbd_loaded false | 12 | #define kbd_loaded false |
@@ -27,22 +21,6 @@ | |||
27 | #define KBD_UP BUTTON_UP | 21 | #define KBD_UP BUTTON_UP |
28 | #define KBD_DOWN BUTTON_DOWN | 22 | #define KBD_DOWN BUTTON_DOWN |
29 | 23 | ||
30 | #elif CONFIG_KEYPAD == RECORDER_PAD | ||
31 | #define KBD_SELECT BUTTON_PLAY | ||
32 | #define KBD_ABORT BUTTON_OFF | ||
33 | #define KBD_LEFT BUTTON_LEFT | ||
34 | #define KBD_RIGHT BUTTON_RIGHT | ||
35 | #define KBD_UP BUTTON_UP | ||
36 | #define KBD_DOWN BUTTON_DOWN | ||
37 | |||
38 | #elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */ | ||
39 | #define KBD_SELECT BUTTON_MENU | ||
40 | #define KBD_ABORT BUTTON_OFF | ||
41 | #define KBD_LEFT BUTTON_LEFT | ||
42 | #define KBD_RIGHT BUTTON_RIGHT | ||
43 | #define KBD_UP BUTTON_UP | ||
44 | #define KBD_DOWN BUTTON_DOWN | ||
45 | |||
46 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ | 24 | #elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \ |
47 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ | 25 | (CONFIG_KEYPAD == IPOD_3G_PAD) || \ |
48 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) | 26 | (CONFIG_KEYPAD == IPOD_1G2G_PAD) |
@@ -412,7 +390,7 @@ int zx_kbd_input(char* text/*, int buflen*/) | |||
412 | param[l].font_h = param[l].font->height; | 390 | param[l].font_h = param[l].font->height; |
413 | 391 | ||
414 | /* check if FONT_UI fits the screen */ | 392 | /* check if FONT_UI fits the screen */ |
415 | if (2*param[l].font_h+3 + BUTTONBAR_HEIGHT > | 393 | if (2*param[l].font_h+3 > |
416 | rb->screens[l]->getheight()) { | 394 | rb->screens[l]->getheight()) { |
417 | param[l].font = rb->font_get(FONT_SYSFIXED); | 395 | param[l].font = rb->font_get(FONT_SYSFIXED); |
418 | param[l].font_h = param[l].font->height; | 396 | param[l].font_h = param[l].font->height; |
@@ -492,10 +470,10 @@ int zx_kbd_input(char* text/*, int buflen*/) | |||
492 | param[l].lines = param[l].DEFAULT_LINES; | 470 | param[l].lines = param[l].DEFAULT_LINES; |
493 | param[l].keyboard_margin = DEFAULT_MARGIN; | 471 | param[l].keyboard_margin = DEFAULT_MARGIN; |
494 | } else { | 472 | } else { |
495 | param[l].lines = (rb->screens[l]->lcdheight - BUTTONBAR_HEIGHT - | 473 | param[l].lines = (rb->screens[l]->lcdheight - |
496 | statusbar_size) / param[l].font_h - 1; | 474 | statusbar_size) / param[l].font_h - 1; |
497 | param[l].keyboard_margin = rb->screens[l]->lcdheight - | 475 | param[l].keyboard_margin = rb->screens[l]->lcdheight - |
498 | BUTTONBAR_HEIGHT - statusbar_size - | 476 | statusbar_size - |
499 | (param[l].lines+1)*param[l].font_h; | 477 | (param[l].lines+1)*param[l].font_h; |
500 | if (param[l].keyboard_margin < 3) { | 478 | if (param[l].keyboard_margin < 3) { |
501 | param[l].lines--; | 479 | param[l].lines--; |