summaryrefslogtreecommitdiffstats
path: root/apps/plugins
diff options
context:
space:
mode:
authorSolomon Peachy <pizza@shaftnet.org>2020-07-15 19:40:55 -0400
committerSolomon Peachy <pizza@shaftnet.org>2020-07-24 21:20:13 +0000
commit092c340a2062fa98b7387fc5fd63578ddae7d0b6 (patch)
tree98ec96946eeb2ae709cb0528cc6998e21bb9b290 /apps/plugins
parent17f7cc92c258bc456a27c3e7c5a19c9409851879 (diff)
downloadrockbox-092c340a2062fa98b7387fc5fd63578ddae7d0b6.tar.gz
rockbox-092c340a2062fa98b7387fc5fd63578ddae7d0b6.tar.bz2
rockbox-092c340a2062fa98b7387fc5fd63578ddae7d0b6.zip
[1/4] Remove SH support and all archos targets
This removes all code specific to SH targets Change-Id: I7980523785d2596e65c06430f4638eec74a06061
Diffstat (limited to 'apps/plugins')
-rw-r--r--apps/plugins/SOURCES35
-rw-r--r--apps/plugins/SUBDIRS7
-rw-r--r--apps/plugins/alpine_cdc.c1195
-rw-r--r--apps/plugins/battery_bench.c35
-rw-r--r--apps/plugins/beatbox/beatbox.c14
-rw-r--r--apps/plugins/blackjack.c32
-rw-r--r--apps/plugins/brickmania.c25
-rw-r--r--apps/plugins/bubbles.c1
-rw-r--r--apps/plugins/calculator.c25
-rw-r--r--apps/plugins/calendar.c26
-rw-r--r--apps/plugins/chessbox/chessbox_pgn.h32
-rw-r--r--apps/plugins/chessclock.c35
-rw-r--r--apps/plugins/chip8.c24
-rw-r--r--apps/plugins/chopper.c11
-rw-r--r--apps/plugins/credits.c7
-rw-r--r--apps/plugins/cube.c34
-rw-r--r--apps/plugins/euroconverter.c599
-rw-r--r--apps/plugins/firmware_flash.c1033
-rw-r--r--apps/plugins/flipit.c53
-rw-r--r--apps/plugins/fractals/cpu_sh7043.h96
-rw-r--r--apps/plugins/fractals/fractal.h28
-rw-r--r--apps/plugins/fractals/mandelbrot_set.h9
-rw-r--r--apps/plugins/goban/goban.h21
-rw-r--r--apps/plugins/goban/goban.make9
-rw-r--r--apps/plugins/greyscale.c18
-rw-r--r--apps/plugins/imageviewer/imageviewer_button.h27
-rw-r--r--apps/plugins/imageviewer/jpeg/jpeg_decoder.c18
-rw-r--r--apps/plugins/jewels.c22
-rw-r--r--apps/plugins/lib/SOURCES2
-rw-r--r--apps/plugins/lib/grey_core.c30
-rw-r--r--apps/plugins/lib/grey_draw.c3
-rw-r--r--apps/plugins/lib/grey_sh.S137
-rw-r--r--apps/plugins/lib/helper.c14
-rw-r--r--apps/plugins/lib/pluginlib_actions.c39
-rw-r--r--apps/plugins/lib/xlcd_scroll.c143
-rw-r--r--apps/plugins/lrcplayer.c6
-rw-r--r--apps/plugins/lua/Makefile5
-rw-r--r--apps/plugins/lua/lua.make8
-rw-r--r--apps/plugins/lua/rocklib.c7
-rw-r--r--apps/plugins/minesweeper.c27
-rw-r--r--apps/plugins/nim.c285
-rw-r--r--apps/plugins/oscilloscope.c28
-rw-r--r--apps/plugins/pegbox.c36
-rw-r--r--apps/plugins/pictureflow/pictureflow.c16
-rw-r--r--apps/plugins/pictureflow/pictureflow.make8
-rw-r--r--apps/plugins/plugin.lds2
-rw-r--r--apps/plugins/pong.c18
-rw-r--r--apps/plugins/reversi/reversi-gui.h24
-rw-r--r--apps/plugins/rockblox.c37
-rw-r--r--apps/plugins/rockbox_flash.c967
-rw-r--r--apps/plugins/rockboy/lcd.c153
-rw-r--r--apps/plugins/rockboy/rockboy.c10
-rw-r--r--apps/plugins/rockboy/sys_rockbox.c54
-rw-r--r--apps/plugins/sliding_puzzle.c31
-rw-r--r--apps/plugins/snake.c20
-rw-r--r--apps/plugins/snake2.c22
-rw-r--r--apps/plugins/sokoban.c57
-rw-r--r--apps/plugins/solitaire.c47
-rw-r--r--apps/plugins/spacerocks.c22
-rw-r--r--apps/plugins/splitedit.c64
-rw-r--r--apps/plugins/star.c38
-rw-r--r--apps/plugins/starfield.c12
-rw-r--r--apps/plugins/stopwatch.c26
-rw-r--r--apps/plugins/sudoku/sudoku.h27
-rw-r--r--apps/plugins/test_scanrate.c6
-rw-r--r--apps/plugins/text_viewer/tv_button.h40
-rw-r--r--apps/plugins/video.c1030
-rw-r--r--apps/plugins/vu_meter.c38
-rw-r--r--apps/plugins/wavplay.c3676
-rw-r--r--apps/plugins/wavrecord.c3811
-rw-r--r--apps/plugins/wormlet.c32
-rw-r--r--apps/plugins/xobox.c18
-rw-r--r--apps/plugins/zxbox/keymaps.h18
-rw-r--r--apps/plugins/zxbox/zxbox_keyb.c28
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
#if PLUGIN_BUFFER_SIZE <= 0x20000 && defined(HAVE_LCD_BITMAP)
-#if CONFIG_KEYPAD != ONDIO_PAD && CONFIG_KEYPAD != SANSA_M200_PAD \
+#if CONFIG_KEYPAD != SANSA_M200_PAD \
&& CONFIG_KEYPAD != HM60X_PAD
/* not enough buttons for rockboy */
rockboy.c
@@ -106,44 +106,16 @@ pictureflow.c
splitedit.c
#endif
-#if CONFIG_LCD == LCD_SSD1815
-video.c
-#endif
-
#endif /* HWCODEC */
-
-#if defined(ARCHOS_PLAYER) || defined(ARCHOS_RECORDER) || \
- defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2)
-alpine_cdc.c
-#endif
-
-#if defined(ARCHOS_PLAYER) || defined(ARCHOS_RECORDER) || \
- defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2) || \
- defined(ARCHOS_ONDIOFM) || defined(ARCHOS_ONDIOSP)
-firmware_flash.c
-#endif
-
#if defined(IRIVER_H100_SERIES)
iriver_flash.c
#endif
-#if (CONFIG_CPU == SH7034)
-rockbox_flash.c
-#endif /* CONFIG_CPU */
-
#if defined(IPOD_NANO2G)
crypt_firmware.c
#endif
-#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F))
-wavplay.c
-#endif
-
-#if (CONFIG_CODEC == MAS3587F)
-wavrecord.c
-#endif
-
#endif /* PLATFORM_NATIVE */
metronome.c
@@ -217,11 +189,6 @@ rocklife.c
#endif /* HAVE_LCD_BITMAP */
-#ifdef HAVE_LCD_CHARCELLS /* Archos Player model only */
-euroconverter.c
-nim.c
-#endif /* HAVE_LCD_CHARCELLS */
-
#if LCD_DEPTH > 1 /* non-mono bitmap targets */
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
puzzles
#endif
-#if (CONFIG_KEYPAD != ONDIO_PAD) /* not enough buttons */ \
- && (CONFIG_KEYPAD != SANSA_M200_PAD) /* not enough buttons */ \
+#if (CONFIG_KEYPAD != SANSA_M200_PAD) /* not enough buttons */ \
&& (CONFIG_KEYPAD != HM60X_PAD) /* not enough buttons */ \
&& (LCD_PIXELFORMAT != HORIZONTAL_PACKING) /* TODO */ \
&& (LCD_PIXELFORMAT != VERTICAL_INTERLEAVED) /* TODO */ \
@@ -48,11 +47,7 @@ imageviewer
sudoku
reversi
goban
-
-/* setjmp/longjmp are not implemented on sh */
-#if (CONFIG_CPU != SH7034)
frotz
-#endif
#ifndef OLYMPUS_MROBE_500
#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 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- *
- * Copyright (C) 2003-2005 Jörg Hohensohn
- *
- * Alpine CD changer Project
- * This is a feasibility study for Archos emulating an Alpine M-Bus CD changer.
- *
- * Currently it will do seeks and change tracks, but nothing like disks.
- * The debug version shows a dump of the M-Bus communication on screen.
- *
- * Usage: Start plugin, it will stay in the background and do the emulation.
- * You need to make an adapter with an 8-pin DIN plug for the radio at one end
- * and a 4-ring 3.5 mm plug for the Archos headphone jack at the other.
- * The Archos remote pin connects to the M-Bus, audio as usual.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#include "plugin.h"
-
-#ifdef HAVE_LCD_CHARCELLS /* player model */
-#define LINES 2
-#define COLUMNS 11
-#else /* recorder models */
-#define LINES 8
-#define COLUMNS 32 /* can't really tell for proportional font */
-#endif
-
-/****************** imports ******************/
-
-#include "sh7034.h"
-#include "system.h"
-
-/****************** constants ******************/
-
-/* measured bit time on the M-Bus is 3.075 ms = 325.2 Hz */
-#define MBUS_BAUDRATE 3252 /* make it 10 * bittime */
-#define MBUS_STEP_FREQ (MBUS_BAUDRATE/2) /* 5 steps per bit */
-#define MBUS_BIT_FREQ (MBUS_BAUDRATE/10) /* the true bit frequency again */
-
-#define MBUS_MAX_SIZE 16 /* maximum length of an M-Bus packet, incl. checksum */
-#define MBUS_RCV_QUEUESIZE 4 /* how many packets can be queued by receiver */
-
-#define ERI1 (*((volatile unsigned long*)0x090001A0)) /* RX error */
-#define RXI1 (*((volatile unsigned long*)0x090001A4)) /* RX */
-
-#define PB10 0x0400
-
-/* receive status */
-#define RX_BUSY 0 /* reception in progress */
-#define RX_RECEIVED 1 /* valid data available */
-#define RX_FRAMING 2 /* frame error */
-#define RX_OVERRUN 3 /* receiver overrun */
-#define RX_PARITY 4 /* parity error */
-#define RX_SYMBOL 5 /* invalid bit timing */
-#define RX_OVERFLOW 6 /* buffer full */
-#define RX_OVERLAP 7 /* receive interrupt while transmitting */
-
-/* timer operation mode */
-#define TM_OFF 0 /* not in use */
-#define TM_TRANSMIT 1 /* periodic timer to transmit */
-#define TM_RX_TIMEOUT 2 /* single shot for receive timeout */
-
-/* emulation play state */
-#define EMU_IDLE 0
-#define EMU_PREPARING 1
-#define EMU_STOPPED 2
-#define EMU_PAUSED 3
-#define EMU_PLAYING 4
-#define EMU_SPINUP 5
-#define EMU_FF 6
-#define EMU_FR 7
-
-
-/****************** prototypes ******************/
-
-void timer_init(unsigned hz, unsigned to); /* setup static timer registers and values */
-void timer_set_mode(int mode); /* define for what the timer should be used right now */
-void timer4_isr(void); /* IMIA4 ISR */
-
-void transmit_isr(void); /* 2nd level ISR for M-Bus transmission */
-
-void uart_init(unsigned baudrate); /* UART setup */
-void uart_rx_isr(void) __attribute__((interrupt_handler)); /* RXI1 ISR */
-void uart_err_isr(void) __attribute__((interrupt_handler)); /* ERI1 ISR */
-void receive_timeout_isr(void); /* 2nd level ISR for receiver timeout */
-
-void mbus_init(void); /* prepare the M-Bus layer */
-int mbus_send(unsigned char* p_msg, int digits); /* packet send */
-int mbus_receive(unsigned char* p_msg, unsigned bufsize, int timeout); /* packet receive */
-
-unsigned char calc_checksum(unsigned char* p_msg, int digits); /* make M-Bus checksum */
-bool bit_test(unsigned char* buf, unsigned bit); /* test one bit of M-Bus packet */
-void bit_set(unsigned char* buf, unsigned bit, bool val); /* set/clear one bit of M-Bus packet */
-
-void print_scroll(char* string); /* implements a scrolling screen */
-void dump_packet(char* dest, int dst_size, char* src, int n); /* convert packet to ASCII */
-
-void emu_init(void); /* init changer emulation */
-void emu_process_packet(unsigned char* mbus_msg, int msg_size); /* feed a received radio packet */
-void emu_tick(void); /* for regular actions of the emulator */
-
-int get_playtime(void); /* return the current track time in seconds */
-int get_tracklength(void); /* return the total length of the current track */
-void set_track(int selected);
-int get_track(void); /* return the track number */
-void set_play(void); /* start or resume playback */
-void set_pause(void); /* pause playback */
-void set_stop(void); /* stop playback */
-void set_position(int seconds); /* seek */
-void get_playmsg(void); /* update the play message with Rockbox info */
-void get_diskmsg(void); /* update the disk status message with Rockbox info */
-
-void sound_neutral(void); /* set to everything flat and 0 dB volume */
-void sound_normal(void); /* return to user settings */
-
-void thread(void); /* the thread running it all */
-int main(const void* parameter); /* main loop */
-enum plugin_status plugin_start(const void* parameter); /* entry */
-
-
-/****************** data types ******************/
-
-/* one entry in the receive queue */
-typedef struct
-{
- unsigned char buf[MBUS_MAX_SIZE]; /* message buffer */
- unsigned size; /* length of data in the buffer */
- unsigned error; /* error code from reception */
-} t_rcv_queue_entry;
-
-
-/****************** globals ******************/
-
-
-/* information owned by the timer transmit ISR */
-struct
-{
- unsigned char send_buf[MBUS_MAX_SIZE]; /* M-Bus message */
- unsigned send_size; /* current length of data in the buffer */
- unsigned index; /* index for which byte to send */
- unsigned byte; /* which byte to send */
- unsigned bitmask; /* which bit to send */
- unsigned step; /* where in the pulse are we */
- bool bit; /* currently sent bit */
- bool collision; /* set if a collision happened */
- bool busy; /* flag if in transmission */
-} gSendIRQ;
-
-
-/* information owned by the UART receive ISR */
-struct
-{
- t_rcv_queue_entry queue[MBUS_RCV_QUEUESIZE]; /* M-Bus message queue */
- unsigned buf_read; /* readout maintained by the user application */
- unsigned buf_write; /* writing maintained by ISR */
- bool overflow; /* indicate queue overflow */
- unsigned byte; /* currently assembled byte */
- unsigned bit; /* which bit to receive */
-} gRcvIRQ;
-
-
-/* information owned by the timer */
-struct
-{
- unsigned mode; /* off, transmit, receive timout */
- unsigned transmit; /* value for transmit */
- unsigned timeout; /* value for receive timeout */
-} gTimer;
-
-
-/* information owned by the changer emulation */
-struct
-{
- unsigned char playmsg[15]; /* current play state msg */
- unsigned char changemsg[11]; /* changing message */
- unsigned char diskmsg[12]; /* disk status message */
- long poll_interval; /* call the emu each n ticks */
- int time; /* seconds within the song */
- int set_state; /* the desired state to change into */
-} gEmu;
-
-
-/* communication to the worker thread */
-struct
-{
- bool foreground; /* set as long as we're owning the UI */
- bool exiting; /* signal to the thread that we want to exit */
- unsigned int thread; /* worker thread id */
-} gTread;
-
-
-/****************** implementation ******************/
-
-
-/* setup static timer registers and values */
-void timer_init(unsigned hz, unsigned to)
-{
- rb->memset(&gTimer, 0, sizeof(gTimer));
-
- gTimer.transmit = TIMER_FREQ / hz; /* time for bit transitions */
- gTimer.timeout = TIMER_FREQ / to; /* time for receive timeout */
-}
-
-
-/* define for what the timer should be used right now */
-void timer_set_mode(int mode)
-{
- TCNT4 = 0; /* start counting at 0 */
- gTimer.mode = mode; /* store the mode */
-
- if (mode == TM_RX_TIMEOUT)
- {
- rb->timer_register(1, NULL, gTimer.timeout, timer4_isr IF_COP(, CPU));
- IPRD = (IPRD & 0xFF0F) | 11 << 4; /* interrupt priority */
- }
- else if (mode == TM_TRANSMIT)
- {
- rb->timer_register(1, NULL, gTimer.transmit, timer4_isr IF_COP(, CPU));
- IPRD = (IPRD & 0xFF0F) | 14 << 4; /* interrupt priority */
- }
- else
- {
- rb->timer_unregister();
- }
-}
-
-
-void timer4_isr(void) /* IMIA4 */
-{
- switch (gTimer.mode)
- { /* distribute the interrupt */
- case TM_TRANSMIT:
- transmit_isr();
- break;
- case TM_RX_TIMEOUT:
- receive_timeout_isr();
- rb->timer_unregister(); /* single shot */
- break;
- default:
- timer_set_mode(TM_OFF); /* spurious interrupt */
- } /* switch */
-}
-
-
-/* About Alpine M-Bus
- * ------------------
- *
- * The protocol uses a single wire in half duplex mode.
- * A bit like I2C, this wire is either pulled low or left floating high.
- * Bit time is ~3 ms, a "zero" is coded as ~0.6 ms low, a "one" as ~1.8 ms low.
- * Nice to view in a 0.6 ms grid:
- *
- * 0 0.6 1.2 1.8 2.4 3.0
- * | | | | | |
- * __ ___________________
- * \____/ \ "zero" bit
- * __ _________
- * \______________/ \ "one" bit
- *
- * So I send out the data in a timer interrupt spawned to 0.6 ms.
- * In phases where the line is floating high, I can check for collisions.
- * (happens if the other side driving it low, too.)
- *
- * Data is transmitted in multiples of 4 bit, to ease BCD representation.
- */
-
-
-/* 2nd level ISR for M-Bus transmission */
-void transmit_isr(void)
-{
- bool exit = false;
-
- TSR4 &= ~0x01; /* clear the interrupt */
-
- switch(gSendIRQ.step++)
- {
- case 0:
- and_b(~0x04, &PBDRH); /* low (read-modify-write access may have changed it while it was input) */
- or_b(0x04, &PBIORH); /* drive low (output) */
- break;
- case 1: /* 0.6 ms */
- if (!gSendIRQ.bit) /* sending "zero"? */
- and_b(~0x04, &PBIORH); /* float (input) */
- break;
- case 2: /* 1.2 ms */
- if (!gSendIRQ.bit && ((PBDR & PB10) == 0))
- gSendIRQ.collision = true;
- break;
- case 3: /* 1.8 ms */
- if (gSendIRQ.bit) /* sending "one"? */
- and_b(~0x04, &PBIORH); /* float (input) */
- else if ((PBDR & PB10) == 0)
- gSendIRQ.collision = true;
- break;
- case 4: /* 2.4 ms */
- if ((PBDR & PB10) == 0)
- gSendIRQ.collision = true;
-
- /* prepare next round */
- gSendIRQ.step = 0;
- gSendIRQ.bitmask >>= 1;
- if (gSendIRQ.bitmask)
- { /* new bit */
- gSendIRQ.bit = (gSendIRQ.byte & gSendIRQ.bitmask) != 0;
- }
- else
- { /* new byte */
- if (++gSendIRQ.index < gSendIRQ.send_size)
- {
- gSendIRQ.bitmask = 0x08;
- gSendIRQ.byte = gSendIRQ.send_buf[gSendIRQ.index];
- gSendIRQ.bit = (gSendIRQ.byte & gSendIRQ.bitmask) != 0;
- }
- else
- exit = true; /* done */
- }
- break;
- }
-
- if (exit || gSendIRQ.collision)
- { /* stop transmission */
- or_b(0x20, PBCR1_ADDR+1); /* RxD1 again for PB10 */
- timer_set_mode(TM_OFF); /* stop the timer */
- gSendIRQ.busy = false; /* do this last, to avoid race conditions */
- }
-}
-
-
-/* For receiving, I use the "normal" serial RX feature of the CPU,
- * so we can receive within an interrupt, no line polling necessary.
- * Luckily, the M-Bus bit always starts with a falling edge and ends with a high,
- * this matches with the start bit and the stop bit of a serial transmission.
- * The baudrate is set such that the M-Bus bit time (ca. 3ms) matches
- * the serial reception time of one byte, so we receive one byte per
- * M-Bus bit.
- * Start bit, 8 data bits and stop bit (total=10) nicely fall into the 5
- * phases like above:
- *
- * 0 0.6 1.2 1.8 2.4 3.0 ms
- * | | | | | | time
- * __ _______________________________
- * \_______/ \ "zero" bit
- * __ _______________
- * \_______________________/ \ "one" bit
- *
- * | | | | | | | | | | | serial sampling interval
- * Start 0 1 2 3 4 5 6 7 Stop bit (LSB first!)
- *
- * By looking at the bit pattern in the serial byte we can distinguish
- * the short low from the longer low, tell "zero" and "one" apart.
- * So we receive 0xFE for a "zero", 0xE0 for a "one".
- * It may be necessary to treat the bits next to transitions as don't care,
- * in case the timing is not so accurate.
- * Bits are always sent "back-to-back", so I detect the packet end by timeout.
- */
-
-
-void uart_init(unsigned baudrate)
-{
- RXI1 = (unsigned long)uart_rx_isr; /* install ISR */
- ERI1 = (unsigned long)uart_err_isr; /* install ISR */
-
- SCR1 = 0x00; /* disable everything; select async mode with SCK pin as I/O */
- SMR1 = 0x00; /* async, 8N1, NoMultiProc, sysclock/1 */
- BRR1 = ((FREQ/(32*baudrate))-1);
-
- IPRE = (IPRE & ~0xf000) | 0xc000; /* interrupt on level 12 */
-
- rb->sleep(1); /* hardware needs to settle for at least one bit interval */
-
- and_b(~(SCI_RDRF | SCI_ORER | SCI_FER | SCI_PER), &SSR1); /* clear any receiver flag */
- or_b(SCI_RE | SCI_RIE , &SCR1); /* enable the receiver with interrupt */
-}
-
-
-void uart_rx_isr(void) /* RXI1 */
-{
- unsigned char data;
- t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; /* short cut */
-
- data = RDR1; /* get data */
-
- and_b(~SCI_RDRF, &SSR1); /* clear data received flag */
-
- if (gTimer.mode == TM_TRANSMIT)
- p_entry->error = RX_OVERLAP; /* oops, we're also transmitting, stop */
- else
- timer_set_mode(TM_RX_TIMEOUT); /* (re)spawn timeout */
-
- if (p_entry->error != RX_BUSY)
- return;
-
- if ((data & ~0x00) == 0xFE) /* 01111111 in line order (reverse) */
- { /* "zero" received */
- gRcvIRQ.byte <<= 1;
- }
- else if ((data & ~0x00) == 0xE0) /* 00000111 in line order (reverse) */
- { /* "one" received */
- gRcvIRQ.byte = gRcvIRQ.byte << 1 | 0x01;
- }
- else
- { /* unrecognized pulse */
- p_entry->error = RX_SYMBOL;
- }
-
- if (p_entry->error == RX_BUSY)
- {
- if (++gRcvIRQ.bit >= 4)
- { /* byte completed */
- if (p_entry->size >= sizeof(p_entry->buf))
- {
- p_entry->error = RX_OVERFLOW; /* buffer full */
- }
- else
- {
- p_entry->buf[p_entry->size] = gRcvIRQ.byte;
- gRcvIRQ.byte = 0;
- gRcvIRQ.bit = 0;
- p_entry->size++;
- }
- }
- }
-}
-
-
-void uart_err_isr(void) /* ERI1 */
-{
- t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; /* short cut */
-
- if (p_entry->error == RX_BUSY)
- { /* terminate reception in case of error */
- if (SSR1 & SCI_FER)
- p_entry->error = RX_FRAMING;
- else if (SSR1 & SCI_ORER)
- p_entry->error = RX_OVERRUN;
- else if (SSR1 & SCI_PER)
- p_entry->error = RX_PARITY;
- }
-
- /* clear any receiver flag */
- and_b(~(SCI_RDRF | SCI_ORER | SCI_FER | SCI_PER), &SSR1);
-}
-
-
-/* 2nd level ISR for receiver timeout, this finalizes reception */
-void receive_timeout_isr(void)
-{
- t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write]; /* short cut */
-
- timer_set_mode(TM_OFF); /* single shot */
-
- if (p_entry->error == RX_BUSY) /* everthing OK so far? */
- p_entry->error = RX_RECEIVED; /* end with valid data */
-
- /* move to next queue entry */
- gRcvIRQ.buf_write++;
- if (gRcvIRQ.buf_write >= MBUS_RCV_QUEUESIZE)
- gRcvIRQ.buf_write = 0;
- p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_write];
-
- if (gRcvIRQ.buf_write == gRcvIRQ.buf_read)
- { /* queue overflow */
- gRcvIRQ.overflow = true;
- /* what can I do? Continueing overwrites the oldest. */
- }
-
- gRcvIRQ.byte = 0;
- gRcvIRQ.bit = 0;
- p_entry->size = 0;
- p_entry->error = RX_BUSY; /* enable receive on new entry */
-}
-
-
-/* generate the checksum */
-unsigned char calc_checksum(unsigned char* p_msg, int digits)
-{
- int chk = 0;
- int i;
-
- for (i=0; i<digits; i++)
- {
- chk ^= p_msg[i];
- }
- chk = (chk+1) % 16;
-
- return chk;
-}
-
-
-/****************** high-level M-Bus functions ******************/
-
-void mbus_init(void)
-{
- /* init the send object */
- rb->memset(&gSendIRQ, 0, sizeof(gSendIRQ));
- timer_init(MBUS_STEP_FREQ, (MBUS_BIT_FREQ*10)/15); /* setup frequency and timeout (1.5 bit) */
-
- /* init receiver */
- rb->memset(&gRcvIRQ, 0, sizeof(gRcvIRQ));
- uart_init(MBUS_BAUDRATE);
-}
-
-
-/* send out a number of BCD digits (one per byte) with M-Bus protocol */
-int mbus_send(unsigned char* p_msg, int digits)
-{
- /* wait for previous transmit/receive to end */
- while(gTimer.mode != TM_OFF) /* wait for "free line" */
- rb->sleep(1);
-
- /* fill in our part */
- rb->memcpy(gSendIRQ.send_buf, p_msg, digits);
-
- /* add checksum */
- gSendIRQ.send_buf[digits] = calc_checksum(p_msg, digits);
- digits++;
-
- /* debug dump, to be removed */
- if (gTread.foreground)
- {
- char buf[MBUS_MAX_SIZE+1];
- dump_packet(buf, sizeof(buf), gSendIRQ.send_buf, digits);
- /*print_scroll(buf); */
- }
-
- gSendIRQ.send_size = digits;
-
- /* prepare everything so the ISR can start right away */
- gSendIRQ.index = 0;
- gSendIRQ.byte = gSendIRQ.send_buf[0];
- gSendIRQ.bitmask = 0x08;
- gSendIRQ.step = 0;
- gSendIRQ.bit = (gSendIRQ.byte & gSendIRQ.bitmask) != 0;
- gSendIRQ.collision = false;
- gSendIRQ.busy = true;
-
- /* last chance to wait for a new detected receive to end */
- while(gTimer.mode != TM_OFF) /* wait for "free line" */
- rb->sleep(1);
-
- and_b(~0x30, PBCR1_ADDR+1); /* GPIO for PB10 */
- timer_set_mode(TM_TRANSMIT); /* run */
-
- /* make the call blocking until sent out */
- rb->sleep(digits*4*HZ/MBUS_BIT_FREQ); /* should take this long */
-
- while(gSendIRQ.busy) /* poll in case it lasts longer */
- rb->sleep(1); /* (should not happen) */
-
- /* debug output, to be removed */
- if (gTread.foreground)
- {
- if (gSendIRQ.collision)
- print_scroll("collision");
- }
-
- return gSendIRQ.collision;
-}
-
-
-/* returns the size of message copy, 0 if timed out, negative on error */
-int mbus_receive(unsigned char* p_msg, unsigned bufsize, int timeout)
-{
- int retval = 0;
-
- do
- {
- if (gRcvIRQ.buf_read != gRcvIRQ.buf_write)
- { /* something in the queue */
- t_rcv_queue_entry* p_entry = &gRcvIRQ.queue[gRcvIRQ.buf_read]; /* short cut */
-
- if (p_entry->error == RX_RECEIVED)
- { /* seems valid */
- rb->memcpy(p_msg, p_entry->buf, MIN(p_entry->size, bufsize));
- retval = p_entry->size; /* return message size */
- }
- else
- { /* an error occured */
- retval = - p_entry->error; /* return negative number */
- }
-
- /* next queue readout position */
- gRcvIRQ.buf_read++;
- if (gRcvIRQ.buf_read >= MBUS_RCV_QUEUESIZE)
- gRcvIRQ.buf_read = 0;
-
- return retval; /* exit */
- }
-
- if (timeout != 0 || gTimer.mode != TM_OFF) /* also carry on if reception in progress */
- {
- if (timeout != -1 && timeout != 0) /* if not infinite or expired */
- timeout--;
-
- rb->sleep(1); /* wait a while */
- }
-
- } while (timeout != 0 || gTimer.mode != TM_OFF);
-
- return 0; /* timeout */
-}
-
-
-/****************** MMI helper fuctions ******************/
-
-
-void print_scroll(char* string)
-{
- static char screen[LINES][COLUMNS+1]; /* visible strings */
- static unsigned pos = 0; /* next print position */
- static unsigned screentop = 0; /* for scrolling */
-
- if (!gTread.foreground)
- return; /* just to protect careless callers */
-
- if (pos >= LINES)
- { /* need to scroll first */
- int i;
- rb->lcd_clear_display();
- screentop++;
- for (i=0; i<LINES-1; i++)
- rb->lcd_puts(0, i, screen[(i+screentop) % LINES]);
-
- pos = LINES-1;
- }
-
- /* no strncpy avail. */
- rb->snprintf(screen[(pos+screentop) % LINES], sizeof(screen[0]), "%s", string);
-
- rb->lcd_puts(0, pos, screen[(pos+screentop) % LINES]);
- rb->lcd_update();
- pos++;
-}
-
-
-void dump_packet(char* dest, int dst_size, char* src, int n)
-{
- int i;
- int len = MIN(dst_size-1, n);
-
- for (i=0; i<len; i++)
- { /* convert to hex digits */
- dest[i] = src[i] < 10 ? '0' + src[i] : 'A' + src[i] - 10;
- }
- dest[i] = '\0'; /* zero terminate string */
-}
-
-
-/****************** CD changer emulation ******************/
-
-bool bit_test(unsigned char* buf, unsigned bit)
-{
- return (buf[bit>>2] & BIT_N(bit&3)) != 0;
-}
-
-
-void bit_set(unsigned char* buf, unsigned bit, bool val)
-{
- if (val)
- buf[bit>>2] |= BIT_N(bit&3);
- else
- buf[bit>>2] &= ~BIT_N(bit&3);
-}
-
-
-void emu_init(void)
-{
- rb->memset(&gEmu, 0, sizeof(gEmu));
-
- gEmu.poll_interval = HZ;
-
- /* init the play message to 990000000000000 */
- gEmu.playmsg[0] = gEmu.playmsg[1] = 0x9;
-
- /* init the changing message to 9B900000001 */
- gEmu.changemsg[0] = gEmu.changemsg[2] = 0x9;
- gEmu.changemsg[1] = 0xB;
- gEmu.changemsg[10] = 0x1;
-
- /* init the disk status message to 9C1019999990 */
- rb->memset(&gEmu.diskmsg, 0x9, sizeof(gEmu.diskmsg));
- gEmu.diskmsg[1] = 0xC;
- gEmu.diskmsg[2] = gEmu.diskmsg[4] = 0x1;
- gEmu.diskmsg[3] = gEmu.diskmsg[11] = 0x0;
-}
-
-/* feed a radio command into the emulator */
-void emu_process_packet(unsigned char* mbus_msg, int msg_size)
-{
- bool playmsg_dirty = false;
- bool diskmsg_dirty = false;
-
- if (msg_size == 2 && mbus_msg[0] == 1 && mbus_msg[1] == 8)
- { /* 18: ping */
- mbus_send("\x09\x08", 2); /* 98: ping OK */
- }
- else if (msg_size == 5 && mbus_msg[0] == 1 && mbus_msg[1] == 1 && mbus_msg[2] == 1)
- { /* set play state */
- if (bit_test(mbus_msg, 16))
- {
- if (gEmu.set_state == EMU_FF || gEmu.set_state == EMU_FR) /* was seeking? */
- { /* seek to final position */
- set_position(gEmu.time);
- }
- else if (gEmu.set_state != EMU_PLAYING && gEmu.set_state != EMU_PAUSED)
- { /* was not playing yet, better send disk message */
- diskmsg_dirty = true;
- }
- set_play();
- gEmu.set_state = EMU_PLAYING;
- playmsg_dirty = true;
- }
-
- if (bit_test(mbus_msg, 17))
- {
- gEmu.set_state = EMU_PAUSED;
- playmsg_dirty = true;
- set_pause();
- }
-
- if (bit_test(mbus_msg, 14))
- {
- gEmu.set_state = EMU_STOPPED;
- playmsg_dirty = true;
- set_stop();
- }
-
- if (bit_test(mbus_msg, 18))
- {
- gEmu.set_state = EMU_FF;
- playmsg_dirty = true;
- set_pause();
- }
-
- if (bit_test(mbus_msg, 19))
- {
- gEmu.set_state = EMU_FR;
- playmsg_dirty = true;
- set_pause();
- }
-
- if (bit_test(mbus_msg, 12)) /* scan stop */
- {
- bit_set(gEmu.playmsg, 51, false);
- playmsg_dirty = true;
- }
-
- if (gEmu.set_state == EMU_FF || gEmu.set_state == EMU_FR)
- gEmu.poll_interval = HZ/4; /* faster refresh */
- else
- gEmu.poll_interval = HZ;
- }
- else if (msg_size == 8 && mbus_msg[0] == 1 && mbus_msg[1] == 1 && mbus_msg[2] == 4)
- { /* set program mode */
- gEmu.playmsg[11] = mbus_msg[3]; /* copy repeat, random, intro */
- gEmu.playmsg[12] = mbus_msg[4]; /* ToDo */
- playmsg_dirty = true;
- }
- else if (msg_size ==8 && mbus_msg[0] == 1 && mbus_msg[1] == 1 && mbus_msg[2] == 3)
- { /* changing */
- gEmu.time = 0; /* reset playtime */
- playmsg_dirty = true;
- if (mbus_msg[3] == 0)
- { /* changing track */
- if (mbus_msg[4] == 0xA && mbus_msg[5] == 0x3)
- { /* next random */
- gEmu.playmsg[3] = rb->rand() % 10; /* ToDo */
- gEmu.playmsg[4] = rb->rand() % 10;
- }
- else if (mbus_msg[4] == 0xB && mbus_msg[5] == 0x3)
- { /* previous random */
- gEmu.playmsg[3] = rb->rand() % 10; /* ToDo */
- gEmu.playmsg[4] = rb->rand() % 10;
- }
- else
- { /* normal track select */
- set_track(mbus_msg[4]*10 + mbus_msg[5]);
- }
- }
- else
- { /* changing disk */
- diskmsg_dirty = true;
- gEmu.changemsg[3] = mbus_msg[3]; /* copy disk */
- gEmu.diskmsg[2] = mbus_msg[3];
- gEmu.changemsg[7] = gEmu.playmsg[11]; /* copy flags from status */
- gEmu.changemsg[8] = gEmu.playmsg[12];
- /*gEmu.playmsg[3] = 0; */ /* reset to track 1 */
- /*gEmu.playmsg[4] = 1; */
- mbus_send(gEmu.changemsg, sizeof(gEmu.changemsg));
- }
- }
- else
- { /* if in doubt, send Ack */
- mbus_send("\x09\x0F\x00\x00\x00\x00\x00", 7);
- }
-
- if (playmsg_dirty)
- {
- rb->yield(); /* give the audio thread a chance to process */
- get_playmsg(); /* force update */
- mbus_send(gEmu.playmsg, sizeof(gEmu.playmsg));
- }
-
- if (diskmsg_dirty)
- {
- get_diskmsg(); /* force update */
- mbus_send(gEmu.diskmsg, sizeof(gEmu.diskmsg));
- }
-}
-
-
-/* called each second in case the emulator has something to do */
-void emu_tick(void)
-{
- get_playmsg(); /* force update */
- if (bit_test(gEmu.playmsg, 56)) /* play bit */
- {
- unsigned remain; /* helper as we walk down the digits */
-
- switch(gEmu.set_state)
- {
- case EMU_FF:
- gEmu.time += 10;
- case EMU_FR:
- gEmu.time -= 5;
-
- if (gEmu.time < 0)
- gEmu.time = 0;
- else if (gEmu.time > get_tracklength())
- gEmu.time = get_tracklength();
-
- /* convert value to MM:SS */
- remain = (unsigned)gEmu.time;
- gEmu.playmsg[7] = remain / (10*60);
- remain -= gEmu.playmsg[7] * (10*60);
- gEmu.playmsg[8] = remain / 60;
- remain -= gEmu.playmsg[8] * 60;
- gEmu.playmsg[9] = remain / 10;
- remain -= gEmu.playmsg[9] * 10;
- gEmu.playmsg[10] = remain;
- }
-
- mbus_send(gEmu.playmsg, sizeof(gEmu.playmsg));
- }
-}
-
-
-/****************** communication with Rockbox playback ******************/
-
-
-/* update the play message with Rockbox info */
-void get_playmsg(void)
-{
- int track, time;
-
- if (gEmu.set_state != EMU_FF && gEmu.set_state != EMU_FR)
- {
- switch(rb->audio_status())
- {
- case AUDIO_STATUS_PLAY:
- print_scroll("AudioStat Play");
- if (gEmu.set_state == EMU_FF || gEmu.set_state == EMU_FR)
- gEmu.playmsg[2] = gEmu.set_state; /* set FF/FR */
- else
- gEmu.playmsg[2] = EMU_PLAYING; /* set normal play */
-
- bit_set(gEmu.playmsg, 56, true); /* set play */
- bit_set(gEmu.playmsg, 57, false); /* clear pause */
- bit_set(gEmu.playmsg, 59, false); /* clear stop */
- break;
-
- case AUDIO_STATUS_PLAY | AUDIO_STATUS_PAUSE:
- print_scroll("AudioStat Pause");
- gEmu.playmsg[2] = EMU_PAUSED;
- bit_set(gEmu.playmsg, 56, false); /* clear play */
- bit_set(gEmu.playmsg, 57, true); /* set pause */
- bit_set(gEmu.playmsg, 59, false); /* clear stop */
- break;
-
- default:
- print_scroll("AudioStat 0");
- gEmu.playmsg[2] = EMU_STOPPED;
- bit_set(gEmu.playmsg, 56, false); /* clear play */
- bit_set(gEmu.playmsg, 57, false); /* clear pause */
- bit_set(gEmu.playmsg, 59, true); /* set stop */
- break;
- }
-
- /* convert value to MM:SS */
- time = get_playtime();
- gEmu.time = time; /* copy it */
- gEmu.playmsg[7] = time / (10*60);
- time -= gEmu.playmsg[7] * (10*60);
- gEmu.playmsg[8] = time / 60;
- time -= gEmu.playmsg[8] * 60;
- gEmu.playmsg[9] = time / 10;
- time -= gEmu.playmsg[9] * 10;
- gEmu.playmsg[10] = time;
- }
- else /* FF/FR */
- {
- gEmu.playmsg[2] = gEmu.set_state; /* in FF/FR, report that instead */
- }
-
- track = get_track();
- gEmu.playmsg[3] = track / 10;
- gEmu.playmsg[4] = track % 10;
-}
-
-/* update the disk status message with Rockbox info */
-void get_diskmsg(void)
-{
- int tracks = rb->playlist_amount();
- if (tracks > 99)
- tracks = 99;
- gEmu.diskmsg[5] = tracks / 10;
- gEmu.diskmsg[6] = tracks % 10;
-}
-
-/* return the current track time in seconds */
-int get_playtime(void)
-{
- struct mp3entry* p_mp3entry;
-
- p_mp3entry = rb->audio_current_track();
- if (p_mp3entry == NULL)
- return 0;
-
- return p_mp3entry->elapsed / 1000;
-}
-
-/* return the total length of the current track */
-int get_tracklength(void)
-{
- struct mp3entry* p_mp3entry;
-
- p_mp3entry = rb->audio_current_track();
- if (p_mp3entry == NULL)
- return 0;
-
- return p_mp3entry->length / 1000;
-}
-
-/* change to a new track */
-void set_track(int selected)
-{
- if (selected > get_track())
- {
- print_scroll("audio_next");
- rb->audio_next();
- }
- else if (selected < get_track())
- {
- print_scroll("audio_prev");
- rb->audio_prev();
- }
-}
-
-/* return the track number */
-int get_track(void)
-{
- struct mp3entry* p_mp3entry;
-
- p_mp3entry = rb->audio_current_track();
- if (p_mp3entry == NULL)
- return 0;
-
- return p_mp3entry->index + 1; /* track numbers start with 1 */
-}
-
-/* start or resume playback */
-void set_play(void)
-{
- if (rb->audio_status() == AUDIO_STATUS_PLAY)
- return;
-
- if (rb->audio_status() == (AUDIO_STATUS_PLAY | AUDIO_STATUS_PAUSE))
- {
- print_scroll("audio_resume");
- rb->audio_resume();
- }
- else
- {
- print_scroll("audio_play(0, 0)");
- rb->audio_play(0, 0);
- }
-}
-
-/* pause playback */
-void set_pause(void)
-{
- if (rb->audio_status() == AUDIO_STATUS_PLAY)
- {
- print_scroll("audio_pause");
- rb->audio_pause();
- }
-}
-
-/* stop playback */
-void set_stop(void)
-{
- if (rb->audio_status() & AUDIO_STATUS_PLAY)
- {
- print_scroll("audio_stop");
- rb->audio_stop();
- }
-}
-
-/* seek */
-void set_position(int seconds)
-{
- if (rb->audio_status() & AUDIO_STATUS_PLAY)
- {
- print_scroll("audio_ff_rewind");
- rb->audio_ff_rewind(seconds * 1000);
- }
-}
-
-/****************** main thread + helper ******************/
-
-/* set to everything flat and 0 dB volume */
-void sound_neutral(void)
-{ /* neutral sound settings */
- rb->sound_set(SOUND_BASS, 0);
- rb->sound_set(SOUND_TREBLE, 0);
- rb->sound_set(SOUND_BALANCE, 0);
- rb->sound_set(SOUND_VOLUME, 0);
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- rb->sound_set(SOUND_LOUDNESS, 0);
- rb->sound_set(SOUND_SUPERBASS, 0);
- rb->sound_set(SOUND_AVC, 0);
-#endif
-}
-
-/* return to user settings */
-void sound_normal(void)
-{ /* restore sound settings */
- rb->sound_set(SOUND_BASS, rb->global_settings->bass);
- rb->sound_set(SOUND_TREBLE, rb->global_settings->treble);
- rb->sound_set(SOUND_BALANCE, rb->global_settings->balance);
- rb->sound_set(SOUND_VOLUME, rb->global_settings->volume);
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- rb->sound_set(SOUND_LOUDNESS, rb->global_settings->loudness);
- rb->sound_set(SOUND_SUPERBASS, rb->global_settings->superbass);
- rb->sound_set(SOUND_AVC, rb->global_settings->avc);
-#endif
-}
-
-/* the thread running it all */
-void thread(void)
-{
- int msg_size;
- unsigned char mbus_msg[MBUS_MAX_SIZE];
- char buf[32];
- bool connected = false;
- long last_tick = *rb->current_tick; /* for 1 sec tick */
-
- do
- {
- msg_size = mbus_receive(mbus_msg, sizeof(mbus_msg), 1);
- if (msg_size > 0)
- { /* received something */
- if(gTread.foreground)
- {
- dump_packet(buf, sizeof(buf), mbus_msg, msg_size);
- /*print_scroll(buf); */
- }
- if (msg_size > 2 && mbus_msg[0] == 1
- && mbus_msg[msg_size-1] == calc_checksum(mbus_msg, msg_size-1))
- { /* sanity and checksum OK */
- if (!connected)
- { /* with the first received packet: */
- sound_neutral(); /* set to flat and 0dB volume */
- connected = true;
- }
- emu_process_packet(mbus_msg, msg_size-1); /* pass without chksum */
- }
- else if(gTread.foreground)
- { /* not OK */
- print_scroll("bad packet");
- }
- }
- else if (msg_size < 0 && gTread.foreground)
- { /* error */
- rb->snprintf(buf, sizeof(buf), "rcv error %d", msg_size);
- print_scroll(buf);
- }
-
- if (*rb->current_tick - last_tick >= gEmu.poll_interval)
- { /* call the emulation regulary */
- emu_tick();
- last_tick += gEmu.poll_interval;
- }
-
- } while (!gTread.exiting);
-}
-
-/* callback to end the TSR plugin, called before a new one gets loaded */
-static bool exit_tsr(bool reenter)
-{
- if (reenter)
- return false; /* dont let it start again */
- gTread.exiting = true; /* tell the thread to end */
- rb->thread_wait(gTread.thread); /* wait until it did */
-
- uart_init(BAUDRATE); /* return to standard baudrate */
- IPRE = (IPRE & ~0xF000); /* UART interrupt off */
- timer_set_mode(TM_OFF); /* timer interrupt off */
-
- sound_normal(); /* restore sound settings */
- return true;
-}
-
-/****************** main ******************/
-
-
-int main(const void* parameter)
-{
- (void)parameter;
-#ifdef DEBUG
- int button;
-#endif
- size_t buf_size;
- ssize_t stacksize;
- void* stack;
-
- mbus_init(); /* init the M-Bus layer */
- emu_init(); /* init emulator */
-
- rb->splash(HZ/5, "Alpine CDC"); /* be quick on autostart */
-
-#ifdef DEBUG
- print_scroll("Alpine M-Bus Test");
- print_scroll("any key to TSR");
-#endif
-
- /* init the worker thread */
- stack = rb->plugin_get_buffer(&buf_size); /* use the rest as stack */
- stacksize = buf_size;
- stack = (void*)(((unsigned int)stack + 100) & ~3); /* a bit away, 32 bit align */
- stacksize = (stacksize - 100) & ~3;
- if (stacksize < DEFAULT_STACK_SIZE)
- {
- rb->splash(HZ*2, "Out of memory");
- return -1;
- }
-
- rb->memset(&gTread, 0, sizeof(gTread));
- gTread.foreground = true;
- gTread.thread = rb->create_thread(thread, stack, stacksize, 0, "CDC"
- IF_PRIO(, PRIORITY_BACKGROUND)
- IF_COP(, CPU));
-
-#ifdef DEBUG
- do
- {
- button = rb->button_get(true);
- } while (button & BUTTON_REL);
-#endif
-
- gTread.foreground = false; /* we're in the background now */
- rb->plugin_tsr(exit_tsr); /* stay resident */
-
-#ifdef DEBUG
- return rb->default_event_handler(button);
-#else
- return 0;
-#endif
-}
-
-
-/***************** Plugin Entry Point *****************/
-
-
-enum plugin_status plugin_start(const void* parameter)
-{
- /* now go ahead and have fun! */
- return (main(parameter)==0) ? PLUGIN_OK : PLUGIN_ERROR;
-}
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 @@
#define EV_EXIT 1337
-/* seems to work with 1300, but who knows... */
+/* seems to work with 1300, but who knows... */
#define THREAD_STACK_SIZE DEFAULT_STACK_SIZE + 0x200
-#if CONFIG_KEYPAD == RECORDER_PAD
-
-#define BATTERY_ON BUTTON_PLAY
-#define BATTERY_OFF BUTTON_OFF
-#define BATTERY_ON_TXT "PLAY - start"
-#define BATTERY_OFF_TXT "OFF"
-
-#if BUTTON_REMOTE != 0
-#define BATTERY_RC_ON BUTTON_RC_PLAY
-#define BATTERY_RC_OFF BUTTON_RC_STOP
-#endif
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-
-#define BATTERY_ON BUTTON_RIGHT
-#define BATTERY_OFF BUTTON_OFF
-#define BATTERY_ON_TXT "RIGHT - start"
-#define BATTERY_OFF_TXT "OFF"
-
-#elif CONFIG_KEYPAD == PLAYER_PAD
-
-#define BATTERY_ON BUTTON_PLAY
-#define BATTERY_OFF BUTTON_STOP
-#define BATTERY_ON_TXT "PLAY - start"
-#define BATTERY_OFF_TXT "STOP"
-
-#define BATTERY_RC_ON BUTTON_RC_PLAY
-#define BATTERY_RC_OFF BUTTON_RC_STOP
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
-
+
#define BATTERY_ON BUTTON_ON
#define BATTERY_RC_ON BUTTON_RC_ON
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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define BTN_QUIT BUTTON_OFF
-#define BTN_RIGHT BUTTON_RIGHT
-#define BTN_UP BUTTON_UP
-#define BTN_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define BTN_QUIT BUTTON_OFF
-#define BTN_RIGHT BUTTON_RIGHT
-#define BTN_UP BUTTON_UP
-#define BTN_DOWN BUTTON_DOWN
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define BTN_QUIT BUTTON_OFF
#define BTN_RIGHT BUTTON_RIGHT
#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 {
BJ_END,
};
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define BJACK_SELECT_NAME "PLAY"
-#define BJACK_STAY_NAME "F1"
-#define BJACK_QUIT_NAME "OFF"
-#define BJACK_DOUBLE_NAME "F2"
-#define BJACK_SELECT BUTTON_PLAY
-#define BJACK_QUIT BUTTON_OFF
-#define BJACK_MAX (BUTTON_ON|BUTTON_UP)
-#define BJACK_MIN (BUTTON_ON|BUTTON_DOWN)
-#define BJACK_STAY BUTTON_F1
-#define BJACK_DOUBLEDOWN BUTTON_F2
-#define BJACK_UP BUTTON_UP
-#define BJACK_DOWN BUTTON_DOWN
-#define BJACK_RIGHT BUTTON_RIGHT
-#define BJACK_LEFT BUTTON_LEFT
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define BJACK_SELECT_NAME "MENU"
-#define BJACK_STAY_NAME "RIGHT"
-#define BJACK_QUIT_NAME "OFF"
-#define BJACK_DOUBLE_NAME "UP"
-#define BJACK_SELECT BUTTON_MENU
-#define BJACK_QUIT BUTTON_OFF
-#define BJACK_STAY BUTTON_RIGHT
-#define BJACK_DOUBLEDOWN BUTTON_UP
-#define BJACK_UP BUTTON_UP
-#define BJACK_DOWN BUTTON_DOWN
-#define BJACK_RIGHT BUTTON_RIGHT
-#define BJACK_LEFT BUTTON_LEFT
-
-#elif CONFIG_KEYPAD == IRIVER_H10_PAD
+#if CONFIG_KEYPAD == IRIVER_H10_PAD
#define BJACK_SELECT_NAME "PLAY"
#define BJACK_STAY_NAME ">>|"
#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 @@
#define DOWN BUTTON_DOWN
#define RC_QUIT BUTTON_RC_STOP
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define CONTINUE_TEXT "MENU To Continue"
-#define QUIT BUTTON_OFF
-#define LEFT BUTTON_LEFT
-#define RIGHT BUTTON_RIGHT
-#define SELECT BUTTON_MENU
-#define UP BUTTON_UP
-#define DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == RECORDER_PAD
-#define QUIT BUTTON_OFF
-#define LEFT BUTTON_LEFT
-#define RIGHT BUTTON_RIGHT
-#define SELECT BUTTON_PLAY
-#define UP BUTTON_UP
-#define DOWN BUTTON_DOWN
-
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
@@ -1461,9 +1444,7 @@ static int brickmania_help(void)
"< & >:",
#endif
"Moves", "the", "paddle", "",
-#if CONFIG_KEYPAD == ONDIO_PAD
- "MENU:",
-#elif (CONFIG_KEYPAD == RECORDER_PAD) || (CONFIG_KEYPAD == IAUDIO_M3_PAD)
+#if (CONFIG_KEYPAD == IAUDIO_M3_PAD)
"PLAY:",
#elif CONFIG_KEYPAD == IRIVER_H300_PAD
"NAVI:",
@@ -1484,9 +1465,7 @@ static int brickmania_help(void)
(CONFIG_KEYPAD == SANSA_FUZE_PAD)
"MENU:",
#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD) || \
- (CONFIG_KEYPAD == ONDIO_PAD) || \
- (CONFIG_KEYPAD == RECORDER_PAD)
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
"STOP:",
#else
"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 {
/* these are better off shooting with up */
#if (CONFIG_KEYPAD == SAMSUNG_YH820_PAD) \
|| (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD) \
- || (CONFIG_KEYPAD == ONDIO_PAD) \
|| (CONFIG_KEYPAD == IRIVER_H10_PAD)
#define SHOOT_WITH_UP
#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 "="
#endif
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define CALCULATOR_LEFT BUTTON_LEFT
-#define CALCULATOR_RIGHT BUTTON_RIGHT
-#define CALCULATOR_UP BUTTON_UP
-#define CALCULATOR_DOWN BUTTON_DOWN
-#define CALCULATOR_QUIT BUTTON_OFF
-#define CALCULATOR_INPUT BUTTON_PLAY
-#define CALCULATOR_CALC BUTTON_F3
-#define CALCULATOR_OPERATORS BUTTON_F2
-#define CALCULATOR_CLEAR BUTTON_F1
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define CALCULATOR_LEFT BUTTON_LEFT
-#define CALCULATOR_RIGHT BUTTON_RIGHT
-#define CALCULATOR_UP BUTTON_UP
-#define CALCULATOR_DOWN BUTTON_DOWN
-#define CALCULATOR_QUIT BUTTON_OFF
-#define CALCULATOR_INPUT_CALC_PRE BUTTON_MENU
-#define CALCULATOR_INPUT (BUTTON_MENU | BUTTON_REL)
-#define CALCULATOR_CALC (BUTTON_MENU | BUTTON_REPEAT)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define CALCULATOR_LEFT BUTTON_LEFT
#define CALCULATOR_RIGHT BUTTON_RIGHT
#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 @@
#include "lib/playback_control.h"
#include "lib/configfile.h"
-
-
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define CALENDAR_QUIT BUTTON_OFF
-#define CALENDAR_SELECT BUTTON_PLAY
-#define CALENDAR_NEXT_WEEK BUTTON_DOWN
-#define CALENDAR_PREV_WEEK BUTTON_UP
-#define CALENDAR_NEXT_DAY BUTTON_RIGHT
-#define CALENDAR_PREV_DAY BUTTON_LEFT
-#define CALENDAR_NEXT_MONTH (BUTTON_ON|BUTTON_DOWN)
-#define CALENDAR_PREV_MONTH (BUTTON_ON|BUTTON_UP)
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define CALENDAR_QUIT BUTTON_OFF
-#define CALENDAR_SELECT (BUTTON_MENU|BUTTON_REL)
-#define CALENDAR_NEXT_WEEK BUTTON_DOWN
-#define CALENDAR_PREV_WEEK BUTTON_UP
-#define CALENDAR_NEXT_DAY BUTTON_RIGHT
-#define CALENDAR_PREV_DAY BUTTON_LEFT
-#define CALENDAR_NEXT_MONTH (BUTTON_MENU|BUTTON_DOWN)
-#define CALENDAR_PREV_MONTH (BUTTON_MENU|BUTTON_UP)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define CALENDAR_QUIT BUTTON_OFF
#define CALENDAR_SELECT BUTTON_SELECT
#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 @@
#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
-#elif CONFIG_KEYPAD == RECORDER_PAD
-#define CB_SELECT BUTTON_PLAY
-#define CB_UP BUTTON_UP
-#define CB_DOWN BUTTON_DOWN
-#define CB_LEFT BUTTON_LEFT
-#define CB_RIGHT BUTTON_RIGHT
-#define CB_PLAY BUTTON_ON
-#define CB_LEVEL BUTTON_F1
-#define CB_RESTART BUTTON_F3
-#define CB_MENU BUTTON_OFF
-#define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT)
-#define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT)
-#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
-#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define CB_SELECT_PRE BUTTON_MENU
-#define CB_SELECT (BUTTON_MENU|BUTTON_REL)
-#define CB_UP BUTTON_UP
-#define CB_DOWN BUTTON_DOWN
-#define CB_LEFT BUTTON_LEFT
-#define CB_RIGHT BUTTON_RIGHT
-#define CB_PLAY_PRE BUTTON_MENU
-#define CB_PLAY (BUTTON_MENU|BUTTON_REPEAT)
-#define CB_LEVEL (BUTTON_MENU|BUTTON_OFF)
-#define CB_RESTART (BUTTON_MENU|BUTTON_LEFT)
-#define CB_MENU BUTTON_OFF
-#define CB_SCROLL_UP (BUTTON_UP|BUTTON_REPEAT)
-#define CB_SCROLL_DOWN (BUTTON_DOWN|BUTTON_REPEAT)
-#define CB_SCROLL_LEFT (BUTTON_LEFT|BUTTON_REPEAT)
-#define CB_SCROLL_RIGHT (BUTTON_RIGHT|BUTTON_REPEAT)
-
#elif (CONFIG_KEYPAD == GIGABEAT_PAD)
#define CB_SELECT BUTTON_SELECT
#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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define CHC_QUIT BUTTON_OFF
-#define CHC_STARTSTOP BUTTON_PLAY
-#define CHC_RESET BUTTON_LEFT
-#define CHC_MENU BUTTON_F1
-#define CHC_SETTINGS_INC BUTTON_UP
-#define CHC_SETTINGS_DEC BUTTON_DOWN
-#define CHC_SETTINGS_OK BUTTON_PLAY
-#define CHC_SETTINGS_OK2 BUTTON_LEFT
-#define CHC_SETTINGS_CANCEL BUTTON_OFF
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define CHC_QUIT BUTTON_OFF
-#define CHC_STARTSTOP BUTTON_RIGHT
-#define CHC_RESET BUTTON_LEFT
-#define CHC_MENU BUTTON_MENU
-#define CHC_SETTINGS_INC BUTTON_UP
-#define CHC_SETTINGS_DEC BUTTON_DOWN
-#define CHC_SETTINGS_OK BUTTON_RIGHT
-#define CHC_SETTINGS_OK2 BUTTON_LEFT
-#define CHC_SETTINGS_CANCEL BUTTON_MENU
-
-#elif CONFIG_KEYPAD == PLAYER_PAD
-#define CHC_QUIT BUTTON_ON
-#define CHC_STARTSTOP BUTTON_PLAY
-#define CHC_RESET BUTTON_STOP
-#define CHC_MENU BUTTON_MENU
-#define CHC_SETTINGS_INC BUTTON_RIGHT
-#define CHC_SETTINGS_DEC BUTTON_LEFT
-#define CHC_SETTINGS_OK BUTTON_PLAY
-#define CHC_SETTINGS_CANCEL BUTTON_STOP
-#define CHC_SETTINGS_CANCEL2 BUTTON_MENU
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define CHC_QUIT BUTTON_SELECT
#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)
#endif
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD /* only 9 out of 16 chip8 buttons */
-#define CHIP8_OFF BUTTON_OFF
-#define CHIP8_KEY1 BUTTON_F1
-#define CHIP8_KEY2 BUTTON_UP
-#define CHIP8_KEY3 BUTTON_F3
-#define CHIP8_KEY4 BUTTON_LEFT
-#define CHIP8_KEY5 BUTTON_PLAY
-#define CHIP8_KEY6 BUTTON_RIGHT
-#define CHIP8_KEY7 BUTTON_F2
-#define CHIP8_KEY8 BUTTON_DOWN
-#define CHIP8_KEY9 BUTTON_ON
-
-#elif CONFIG_KEYPAD == ONDIO_PAD /* even more limited */
-#define CHIP8_OFF BUTTON_OFF
-#define CHIP8_KEY2 BUTTON_UP
-#define CHIP8_KEY4 BUTTON_LEFT
-#define CHIP8_KEY5 BUTTON_MENU
-#define CHIP8_KEY6 BUTTON_RIGHT
-#define CHIP8_KEY8 BUTTON_DOWN
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define CHIP8_OFF BUTTON_OFF
#define CHIP8_KEY2 BUTTON_UP
#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:
#define ACTION BUTTON_SELECT
#define ACTIONTEXT "SELECT"
-#elif CONFIG_KEYPAD == RECORDER_PAD
-#define QUIT BUTTON_OFF
-#define ACTION BUTTON_PLAY
-#define ACTIONTEXT "PLAY"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define QUIT BUTTON_OFF
-#define ACTION BUTTON_UP
-#define ACTION2 BUTTON_MENU
-#define ACTIONTEXT "UP"
-
#elif CONFIG_KEYPAD == GIGABEAT_S_PAD \
|| CONFIG_KEYPAD == SAMSUNG_YPR0_PAD
#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
static void roll_credits(void)
{
/* to do: use target defines iso keypads to set animation timings */
-#if (CONFIG_KEYPAD == RECORDER_PAD)
- #define PAUSE_TIME 1.2
- #define ANIM_SPEED 35
-#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
- (CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
+ (CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define PAUSE_TIME 0
#define ANIM_SPEED 100
#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 @@
#define DISP_TIME 30
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define CUBE_QUIT BUTTON_OFF
-#define CUBE_NEXT BUTTON_RIGHT
-#define CUBE_PREV BUTTON_LEFT
-#define CUBE_INC BUTTON_UP
-#define CUBE_DEC BUTTON_DOWN
-#define CUBE_MODE BUTTON_F1
-#define CUBE_PAUSE BUTTON_PLAY
-#define CUBE_HIGHSPEED BUTTON_ON
-
-#elif CONFIG_KEYPAD == PLAYER_PAD
-#define CUBE_QUIT BUTTON_STOP
-#define CUBE_INC BUTTON_RIGHT
-#define CUBE_DEC BUTTON_LEFT
-#define CUBE_NEXT (BUTTON_ON | BUTTON_RIGHT)
-#define CUBE_PREV (BUTTON_ON | BUTTON_LEFT)
-#define CUBE_MODE BUTTON_MENU
-#define CUBE_PAUSE BUTTON_PLAY
-#define CUBE_HIGHSPEED_PRE BUTTON_ON
-#define CUBE_HIGHSPEED (BUTTON_ON | BUTTON_REL)
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define CUBE_QUIT BUTTON_OFF
-#define CUBE_NEXT BUTTON_RIGHT
-#define CUBE_PREV BUTTON_LEFT
-#define CUBE_INC BUTTON_UP
-#define CUBE_DEC BUTTON_DOWN
-#define CUBE_MODE_PRE BUTTON_MENU
-#define CUBE_MODE (BUTTON_MENU | BUTTON_REL)
-#define CUBE_PAUSE (BUTTON_MENU | BUTTON_LEFT)
-#define CUBE_HIGHSPEED (BUTTON_MENU | BUTTON_RIGHT)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define CUBE_QUIT BUTTON_OFF
#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 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2003 Pierre Delore
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "plugin.h"
-#include "lib/configfile.h"
-#include "lib/pluginlib_exit.h"
-
-/* Euro converter for the player */
-/*
-Use:
-+ : Digit +1
-- : Digit -1
-PLAY : Next digit
-STOP : Prev digit
-ON : RESET
-ON+PLAY : Swap Euro<>Home
-MENU : Display the Menu
- Currency -> Allows to choose the currency
- Exit-> Exit the plugin
-
-Notes:
-I don't use float.
-I use signed long long (64 bits).
-A value have 5 digits after the . (123.45 = 12345000)
-
-To do:
-- The Irish currency needs 6 digits after the . to have sufficient precision on big number
-*/
-
-
-
-/* Name and path of the config file*/
-static const char cfg_filename[] = "euroconverter.cfg";
-#define CFGFILE_VERSION 0 /* Current config file version */
-#define CFGFILE_MINVERSION 0 /* Minimum config file version to accept */
-
-/* typedef for simplifying usage of long long type */
-typedef long long int longlong_t;
-
-/*Pattern for the converter*/
-static unsigned char pattern_euro[]={0x07, 0x08, 0x1E, 0x10, 0x1E, 0x08, 0x07}; /* */
-static unsigned char pattern_home[]={0x04, 0x0A, 0x11, 0x1F, 0x11, 0x11, 0x1F}; /* Home icon*/
-
-/* 1 euro = ... (remenber 5 digits after the .)*/
-static int currency[12]={
- 655957, /*FRF France*/
- 195583, /*DEM Germany*/
- 1376030, /*ATS Austria*/
- 4033990, /*BEF Belgium*/
- 16638600, /*ESP Spain*/
- 594573, /*FIM Finland*/
- 78756, /*IEP Ireland*/
- 193627000, /*ITL Italy*/
- 4033990, /*LUF Luxemburg*/
- 220371, /*NLG Netherlands*/
- 20048200, /*PTE Portugal*/
- 34075100, /*GRD Greece*/
- };
-
-/* Number of digit of the currency (for the display) */
-static int nb_digit[12]={
- 2, /*FRF France*/
- 2, /*DEM Germany*/
- 2, /*ATS Austria*/
- 2, /*BEF Belgium*/
- 0, /*ESP Spain*/
- 2, /*FIM Finland*/
- 2, /*IEP Ireland*/
- 0, /*ITL Italy*/
- 2, /*LUF Luxemburg*/
- 2, /*NLG Netherlands*/
- 0, /*PTE Portugal*/
- 0 /*GRD Greece*/
- };
-
-/* max euro to have home currency */
-static longlong_t max_euro[12]={
- 99999999000LL, /*FRF France 999 999.99 */
- 99999999000LL, /*DEM Germany 999 999.99 */
- 99999999000LL, /*ATS Austria 999 999.99 */
- 99999999000LL, /*BEF Belgium 999 999.99 */
- 99999999000LL, /*ESP Spain 99 999 999 */
- 99999999000LL, /*FIM Finland 999 999.99 */
- 99999999000LL, /*IEP Ireland 999 999.99 */
- 51645690000LL, /*ITL Italy 999 999 999 */
- 99999999000LL, /*LUF Luxemburg 999 999.99 */
- 99999999000LL, /*NLG Netherlands 999 999.99 */
- 99999999000LL, /*PTE Portugal 99 999 999 */
- 29347028000LL /*GRD Greece 99 999 999 */
- };
-
-/* max home to have euro currency */
-/* 92233720300000 Limitation due to the max capacity of long long (2^63)*/
-static longlong_t max_curr[12]={
- 99999999000LL, /*FRF France 152449.02 */
- 99999999000LL, /*DEM Germany 511291.88 */
- 99999999000LL, /*ATS Austria 72672.83 */
- 99999999000LL, /*BEF Belgium 24789.35 */
- 92233720300000LL,/*ESP Spain 5543358.23 */
- 99999999000LL, /*FIM Finland 168187.92 */
- 9999999900LL, /*IEP Ireland 1269744.51 exact value=1269738.07 */
- 92233720300000LL,/*ITL Italy 476347.41 */
- 99999999000LL, /*LUF Luxemburg 24789.35 */
- 99999999000LL, /*NLG Netherlands 453780.21 */
- 92233720300000LL,/*PTE Portugal 4600598.57 */
- 92233720300000LL /*GRD Greece 2706777.69 */
- };
-
-static unsigned char *abbrev_str[12] = {
- "...FRF...", /*France*/
- "...DEM...", /*Germany*/
- "...ATS...", /*Austria*/
- "...BEF...", /*Belgium*/
- "...ESP...", /*Spain*/
- "...FIM...", /*Finland*/
- "...IEP...", /*Ireland*/
- "...ITL...", /*Italy*/
- "...LUF...", /*Luxemburg*/
- "...NLG...", /*Netherlands*/
- "...PTE...", /*Portugal*/
- "...GRD..." /*Greece*/
- };
-
-
-static unsigned long heuro,hhome; /*Handles for the new patterns*/
-
-static char *currency_str[12] = {
- "France",
- "Germany",
- "Austria",
- "Belgium",
- "Spain",
- "Finland",
- "Ireland",
- "Italy",
- "Luxemburg",
- "Netherlands",
- "Portugal",
- "Greece"
-};
-
-
-static int country; /*Country selected*/
-static int cur_pos; /*Cursor position*/
-static longlong_t inc;
-
-/* Persistent settings */
-static struct configdata config[] = {
- { TYPE_ENUM, 0, 12, { .int_p = &country }, "country", currency_str }
-};
-
-
-/* 64bits*64 bits with 5 digits after the . */
-static longlong_t mymul(longlong_t a, longlong_t b)
-{
- return((a*b)/100000LL);
-}
-
-
-/* 64bits/64 bits with 5 digits after the . */
-static longlong_t mydiv(longlong_t a, longlong_t b)
-{
- return((a*100000LL)/b);
-}
-
-
-/* 123.45=12345000 split => i=123 f=45000*/
-static void split(longlong_t v, longlong_t* i, longlong_t* f)
-{
- longlong_t t;
-
- t=v/100000LL;
- (*i)=t;
- (*f)=(v-(t*100000LL));
-}
-
-
-/* result=10^n */
-static longlong_t pow10(int n)
-{
- int i;
- longlong_t r;
-
- r=1;
- for (i=0;i<n;i++)
- r=r*10LL;
- return(r);
-}
-
-
-/* round the i.f at n digit after the . */
-static void round(longlong_t* i, longlong_t* f, int n)
-{
-
- longlong_t m;
- int add=0;
-
- m=(int)pow10(5-n-1);
- if (((*f)/m)%10>=5)
- add=1;
- if (n>0)
- {
- (*f)=((*f)/(int)pow10(5-n))+add;
- if ((*f)==100LL)
- {
- (*i)+=1;
- (*f)=0;
- }
- }
- else
- {
- (*i)+=add;
- (*f)=0;
- }
-}
-
-
-/* Display the imput and the result
- pos: false : first line
- : true : second line
-*/
-static void display(longlong_t euro, longlong_t home, bool pos)
-{
- longlong_t i,f;
- unsigned char str[20];
- unsigned char s1[20];
- unsigned char s2[20];
-
- if (pos)
- { /*Edit the second line*/
- rb->strcpy(s1," %6d.%02d");
- if (nb_digit[country]==2)
- rb->strcpy(s2,"\xee\x84\x90%06d.%02d");
- else
- rb->strcpy(s2,"\xee\x84\x90%09d");
- }
- else
- {
- rb->strcpy(s1,"\xee\x84\x90%06d.%02d");
- if (nb_digit[country]==2)
- rb->strcpy(s2," %6d.%02d");
- else
- rb->strcpy(s2," %9d");
- }
-
- rb->lcd_remove_cursor();
- /*First line*/
- rb->lcd_putc(0,0,heuro);
- split(euro,&i,&f);
- if (pos)
- round(&i,&f,2);
- rb->snprintf(str,sizeof(str),s1,(int)i,(int)f);
-
- if (!pos)
- {
- rb->lcd_puts(1,0,str);
- rb->lcd_put_cursor(10-cur_pos,0,0x5F);
- }
- else
- rb->lcd_puts_scroll(1,0,str);
-
- /*Second line*/
- rb->lcd_putc(0,1,hhome);
- split(home,&i,&f);
- if (!pos)
- round(&i,&f,nb_digit[country]);
- rb->snprintf(str,sizeof(str),s2,(int)i,(int)f);
- if (pos)
- {
- rb->lcd_puts(1,1,str);
- rb->lcd_put_cursor(10-cur_pos,1,0x5F);
- }
- else
- rb->lcd_puts_scroll(1,1,str);
-
- rb->lcd_update();
-}
-
-
-/* Show country Abbreviation */
-static void show_abbrev(void)
-{
- rb->splash(HZ*3/4,abbrev_str[country]);
-}
-
-
-/* Save the config to disk */
-static void save_config(void)
-{
- configfile_save(cfg_filename, config, 1, CFGFILE_VERSION);
-}
-
-
-/* Load the config from disk */
-static void load_config(void)
-{
- configfile_load(cfg_filename, config, 1, CFGFILE_MINVERSION);
-}
-
-
-/*Currency choice*/
-static void currency_menu(void)
-{
- int c=country;
-
- rb->lcd_clear_display();
- while (true)
- {
- rb->lcd_puts(0,0,"Currency:");
- rb->lcd_puts(0,1,currency_str[c]);
- rb->lcd_update();
- switch (rb->button_get(true))
- {
- case BUTTON_RIGHT|BUTTON_REL:
- c++;
- if (c>11)
- c=0;
- break;
- case BUTTON_LEFT|BUTTON_REL:
- c--;
- if (c<0)
- c=11;
- break;
- case BUTTON_PLAY|BUTTON_REL:
- country=c;
- save_config();
- return;
- break;
- case BUTTON_STOP|BUTTON_REL:
- return;
- }
- }
-}
-
-
-/* Display the choice menu. */
-static int euro_menu(void)
-{
- int c=0;
-
-
- while (true)
- {
- rb->lcd_clear_display();
- rb->lcd_puts(0,0," Currency");
- rb->lcd_puts(0,1," Exit");
- rb->lcd_putc(0,c,0xe110);
- rb->lcd_update();
-
- switch (rb->button_get(true))
- {
- case BUTTON_RIGHT|BUTTON_REL:
- c=1;
- break;
- case BUTTON_LEFT|BUTTON_REL:
- c=0;
- break;
- case BUTTON_PLAY|BUTTON_REL:
- if (c==0)
- currency_menu();
- else
- return 1;
- break;
- case BUTTON_STOP|BUTTON_REL:
- return 0;
- }
- }
-}
-
-
-/* Call when the program end */
-static void euro_exit(void)
-{
- //Restore the old pattern (i don't find another way to do this. An idea?)
- rb->lcd_unlock_pattern(heuro);
- rb->lcd_unlock_pattern(hhome);
-
- //Clear the screen
- rb->lcd_clear_display();
- rb->lcd_update();
-}
-
-
-/* this is the plugin entry point */
-enum plugin_status plugin_start(const void* parameter)
-{
- bool end, pos;
- longlong_t e,h,old_e,old_h;
- int button;
-
- /* if you don't use the parameter, you can do like
- this to avoid the compiler warning about it */
- (void)parameter;
- atexit(euro_exit);
-
- /*Get the pattern handle*/
- heuro=rb->lcd_get_locked_pattern();
- hhome=rb->lcd_get_locked_pattern();
- rb->lcd_define_pattern(heuro, pattern_euro);
- rb->lcd_define_pattern(hhome, pattern_home);
-
- h=0;
- e=0;
- end=false;
- pos=false;
- country=0;
- cur_pos=3;
- inc=100000;
-
- load_config();
-
- /*Empty the event queue*/
- rb->button_clear_queue();
-
- display(e,h,false);
- show_abbrev();
- display(e,h,false);
-
- /*Main loop*/
- while(end!=true)
- {
- button = rb->button_get(true);
- switch (button)
- {
- case BUTTON_MENU|BUTTON_REL:
- switch (euro_menu())
- {
- case 1:
- end=true;
- break;
- }
- if (!pos)
- {
- if (e>max_euro[country])
- e=0;
- cur_pos=3;
- }
- else
- {
- if (h>max_curr[country])
- h=0;
- if (nb_digit[country]==2)
- cur_pos=3;
- else
- cur_pos=0;
- }
-
- display(e,h,pos);
- break;
-
- case BUTTON_ON | BUTTON_PLAY:
- pos=!pos;
-
- case BUTTON_ON | BUTTON_REL:
- e=0;
- h=0;
- if (!pos)
- {
- cur_pos=3;
- inc=100000;
- }
- else
- {
- inc=100000;
- if (nb_digit[country]==2)
- cur_pos=3;
- else
- cur_pos=0;
- }
- show_abbrev();
- break;
-
- case BUTTON_STOP|BUTTON_REL:
- cur_pos--;
- if (!pos)
- {
- if (cur_pos<0)
- cur_pos=0;
- if (cur_pos==2)
- cur_pos=1;
- if (cur_pos>2)
- inc=pow10(3+cur_pos-1);
- else
- inc=pow10(3+cur_pos);
- }
- else
- {
- if (cur_pos<0)
- cur_pos=0;
- if (nb_digit[country]==2)
- {
- if (cur_pos==2)
- cur_pos=1;
- if (cur_pos>2)
- inc=pow10(3+cur_pos-1);
- else
- inc=pow10(3+cur_pos);
- }
- else
- inc=pow10(5+cur_pos);
-
- }
- break;
-
- case BUTTON_PLAY|BUTTON_REL:
- cur_pos++;
- if (!pos)
- {
- if (cur_pos>8)
- cur_pos=8;
- if (cur_pos==2)
- cur_pos=3;
- if (cur_pos>2)
- inc=pow10(3+cur_pos-1);
- else
- inc=pow10(3+cur_pos);
- }
- else
- {
- if (cur_pos>8)
- cur_pos=8;
- if (nb_digit[country]==2)
- {
- if (cur_pos==2)
- cur_pos=3;
- if (cur_pos>2)
- inc=pow10(3+cur_pos-1);
- else
- inc=pow10(3+cur_pos);
- }
- else
- inc=pow10(5+cur_pos);
- }
- break;
-
- case BUTTON_LEFT|BUTTON_REL:
- case BUTTON_LEFT|BUTTON_REPEAT:
- if (!pos)
- {
- e-=inc;
- if (e<0)
- e=0;
- }
- else
- {
- h-=inc;
- if (h<0)
- h=0;
- }
- break;
-
- case BUTTON_RIGHT|BUTTON_REL:
- case BUTTON_RIGHT|BUTTON_REPEAT:
- old_e=e;
- old_h=h;
- if (!pos)
- {
- e+=inc;
- if (e>max_euro[country])
- e=old_e;
- }
- else
- {
- h+=inc;
- if (h>max_curr[country])
- h=old_h;
- }
- break;
-
- default:
- exit_on_usb(button);
- break;
- }
- /*Display*/
- if (!pos) /*Euro>home*/
- h=mymul(e,currency[country]);
- else /*Home>euro*/
- e=mydiv(h,currency[country]);
- display(e,h,pos);
- }
- return PLUGIN_OK;
-}
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 @@
-/***************************************************************************
-* __________ __ ___.
-* Open \______ \ ____ ____ | | _\_ |__ _______ ___
-* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
-* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
-* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
-* \/ \/ \/ \/ \/
-* $Id$
-*
-* Plugin for reprogramming the whole Flash ROM chip with a new content.
-* !!! DON'T MESS WITH THIS CODE UNLESS YOU'RE ABSOLUTELY SURE WHAT YOU DO !!!
-*
-* Copyright (C) 2003 Jörg Hohensohn [IDC]Dragon
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-* KIND, either express or implied.
-*
-****************************************************************************/
-#include "plugin.h"
-
-/* define DUMMY if you only want to "play" with the UI, does no harm */
-/* #define DUMMY */
-
-#ifndef UINT8
-#define UINT8 unsigned char
-#endif
-
-#ifndef UINT16
-#define UINT16 unsigned short
-#endif
-
-#ifndef UINT32
-#define UINT32 unsigned long
-#endif
-
-/* platform IDs as I have used them in my firmware templates */
-#define ID_RECORDER 0
-#define ID_FM 1
-#define ID_PLAYER 2
-#define ID_REC_V2 3
-#define ID_ONDIO_FM 4
-#define ID_ONDIO_SP 5
-
-/* Here I have to check for ARCHOS_* defines in source code, which is
- generally strongly discouraged. But here I'm not checking for a certain
- feature, I'm checking for the model itself. */
-#if defined(ARCHOS_PLAYER)
-#define FILE_TYPE "player"
-#define KEEP VERSION_ADR /* keep the firmware version */
-#define PLATFORM_ID ID_PLAYER
-#elif defined(ARCHOS_RECORDER)
-#define FILE_TYPE "rec"
-#define KEEP MASK_ADR /* keep the mask value */
-#define PLATFORM_ID ID_RECORDER
-#elif defined(ARCHOS_RECORDERV2)
-#define FILE_TYPE "v2"
-#define KEEP MASK_ADR /* keep the mask value */
-#define PLATFORM_ID ID_REC_V2
-#elif defined(ARCHOS_FMRECORDER)
-#define FILE_TYPE "fm"
-#define KEEP MASK_ADR /* keep the mask value */
-#define PLATFORM_ID ID_FM
-#elif defined(ARCHOS_ONDIOFM)
-#define FILE_TYPE "ondiofm"
-#define KEEP MASK_ADR /* keep the mask value */
-#define PLATFORM_ID ID_ONDIO_FM
-#elif defined(ARCHOS_ONDIOSP)
-#define FILE_TYPE "ondiosp"
-#define KEEP MASK_ADR /* keep the mask value */
-#define PLATFORM_ID ID_ONDIO_SP
-#else
-#error this platform is not (yet) flashable
-#endif
-
-
-
-#if CONFIG_KEYPAD == ONDIO_PAD /* limited keypad */
-#define KEY1 BUTTON_LEFT
-#define KEY2 BUTTON_UP
-#define KEY3 BUTTON_RIGHT
-#define KEYNAME1 "[Left]"
-#define KEYNAME2 "[Up]"
-#define KEYNAME3 "[Right]"
-#else /* recorder keypad */
-#define KEY1 BUTTON_F1
-#define KEY2 BUTTON_F2
-#define KEY3 BUTTON_F3
-#define KEYNAME1 "[F1]"
-#define KEYNAME2 "[F2]"
-#define KEYNAME3 "[F3]"
-#endif
-
-/* result of the CheckFirmwareFile() function */
-typedef enum
-{
- eOK = 0,
- eFileNotFound, /* errors from here on */
- eTooBig,
- eTooSmall,
- eReadErr,
- eBadContent,
- eCrcErr,
- eBadPlatform,
-} tCheckResult;
-
-/* result of the CheckBootROM() function */
-typedef enum
-{
- eBootROM, /* the supported boot ROM(s) */
- eUnknown, /* unknown boot ROM */
- eROMless, /* flash mapped to zero */
-} tCheckROM;
-
-typedef struct
-{
- UINT8 manufacturer;
- UINT8 id;
- int size;
- char name[32];
-} tFlashInfo;
-
-#define MASK_ADR 0xFC /* position of hardware mask value in Flash */
-#define VERSION_ADR 0xFE /* position of firmware version value in Flash */
-#define PLATFORM_ADR 0xFB /* position of my platform ID value in Flash */
-#define SEC_SIZE 4096 /* size of one flash sector */
-static UINT8* sector; /* better not place this on the stack... */
-static volatile UINT8* FB = (UINT8*)0x02000000; /* Flash base address */
-
-
-/***************** Flash Functions *****************/
-
-
-/* read the manufacturer and device ID */
-bool ReadID(volatile UINT8* pBase, UINT8* pManufacturerID, UINT8* pDeviceID)
-{
- UINT8 not_manu, not_id; /* read values before switching to ID mode */
- UINT8 manu, id; /* read values when in ID mode */
-
- pBase = (UINT8*)((UINT32)pBase & 0xFFF80000); /* down to 512k align */
-
- /* read the normal content */
- not_manu = pBase[0]; /* should be 'A' (0x41) and 'R' (0x52) */
- not_id = pBase[1]; /* from the "ARCH" marker */
-
- pBase[0x5555] = 0xAA; /* enter command mode */
- pBase[0x2AAA] = 0x55;
- pBase[0x5555] = 0x90; /* ID command */
- rb->sleep(HZ/50); /* Atmel wants 20ms pause here */
-
- manu = pBase[0];
- id = pBase[1];
-
- pBase[0] = 0xF0; /* reset flash (back to normal read mode) */
- rb->sleep(HZ/50); /* Atmel wants 20ms pause here */
-
- /* I assume success if the obtained values are different from
- the normal flash content. This is not perfectly bulletproof, they
- could theoretically be the same by chance, causing us to fail. */
- if (not_manu != manu || not_id != id) /* a value has changed */
- {
- *pManufacturerID = manu; /* return the results */
- *pDeviceID = id;
- return true; /* success */
- }
- return false; /* fail */
-}
-
-
-/* erase the sector which contains the given address */
-bool EraseSector(volatile UINT8* pAddr)
-{
-#ifdef DUMMY
- (void)pAddr; /* prevents warning */
- return true;
-#else
- volatile UINT8* pBase = (UINT8*)((UINT32)pAddr & 0xFFF80000); /* round down to 512k align */
- unsigned timeout = 43000; /* the timeout loop should be no less than 25ms */
-
- pBase[0x5555] = 0xAA; /* enter command mode */
- pBase[0x2AAA] = 0x55;
- pBase[0x5555] = 0x80; /* erase command */
- pBase[0x5555] = 0xAA; /* enter command mode */
- pBase[0x2AAA] = 0x55;
- *pAddr = 0x30; /* erase the sector */
-
- /* I counted 7 instructions for this loop -> min. 0.58 us per round */
- /* Plus memory waitstates it will be much more, gives margin */
- while (*pAddr != 0xFF && --timeout); /* poll for erased */
-
- return (timeout != 0);
-#endif
-}
-
-
-/* address must be in an erased location */
-static inline bool ProgramByte(volatile UINT8* pAddr, UINT8 data)
-{
-#ifdef DUMMY
- (void)pAddr; /* prevents warnings */
- (void)data;
- return true;
-#else
- unsigned timeout = 35; /* the timeout loop should be no less than 20us */
-
- if (~*pAddr & data) /* just a safety feature, not really necessary */
- return false; /* can't set any bit from 0 to 1 */
-
- FB[0x5555] = 0xAA; /* enter command mode */
- FB[0x2AAA] = 0x55;
- FB[0x5555] = 0xA0; /* byte program command */
-
- *pAddr = data;
-
- /* I counted 7 instructions for this loop -> min. 0.58 us per round */
- /* Plus memory waitstates it will be much more, gives margin */
- while (*pAddr != data && --timeout); /* poll for programmed */
-
- return (timeout != 0);
-#endif
-}
-
-
-/* this returns true if supported and fills the info struct */
-bool GetFlashInfo(tFlashInfo* pInfo)
-{
- rb->memset(pInfo, 0, sizeof(tFlashInfo));
-
- if (!ReadID(FB, &pInfo->manufacturer, &pInfo->id))
- return false;
-
- if (pInfo->manufacturer == 0xBF) /* SST */
- {
- if (pInfo->id == 0xD6)
- {
- pInfo->size = 256* 1024; /* 256k */
- rb->strcpy(pInfo->name, "SST39VF020");
- return true;
- }
- else if (pInfo->id == 0xD7)
- {
- pInfo->size = 512* 1024; /* 512k */
- rb->strcpy(pInfo->name, "SST39VF040");
- return true;
- }
- else
- return false;
- }
- return false;
-}
-
-/*********** Firmware File Functions + helpers ************/
-
-/* test if the version number is consistent with the platform */
-bool CheckPlatform(int platform_id, UINT16 version)
-{
- if (version == 200)
- { /* for my very first firmwares, I foolishly changed it to 200 */
- return (platform_id == ID_RECORDER || platform_id == ID_FM);
- }
- else if (version == 123)
- { /* it can be a FM or V2 recorder */
- return (platform_id == ID_FM || platform_id == ID_REC_V2);
- }
- else if (version == 132)
- { /* newer Ondio, and seen on a V2 recorder */
- return (platform_id == ID_ONDIO_SP || platform_id == ID_ONDIO_FM
- || platform_id == ID_REC_V2);
- }
- else if (version == 104)
- { /* classic Ondio128 */
- return (platform_id == ID_ONDIO_FM);
- }
- else if (version >= 115 && version <= 129)
- { /* the range of Recorders seen so far */
- return (platform_id == ID_RECORDER);
- }
- else if (version == 0 || (version >= 300 && version <= 508))
- { /* for very old players, I've seen zero */
- return (platform_id == ID_PLAYER);
- }
-
- return false; /* unknown */
-}
-
-
-tCheckResult CheckFirmwareFile(char* filename, int chipsize, bool is_romless)
-{
- int i;
- int fd;
- int fileleft; /* size info, how many left for reading */
- int fileread = 0; /* total size as read from the file */
- int read_now; /* how many to read for this sector */
- int got_now; /* how many gotten for this sector */
- unsigned crc32 = 0xFFFFFFFF; /* CCITT init value */
- unsigned file_crc; /* CRC value read from file */
- bool has_crc;
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- return eFileNotFound;
-
- fileleft = rb->filesize(fd);
- if (fileleft > chipsize)
- {
- rb->close(fd);
- return eTooBig;
- }
- else if (fileleft < 20000) /* give it some reasonable lower limit */
- {
- rb->close(fd);
- return eTooSmall;
- }
-
- if (fileleft == 256*1024)
- { /* original dumped firmware file has no CRC nor platform ID */
- has_crc = false;
- }
- else
- {
- has_crc = true;
- fileleft -= sizeof(unsigned); /* exclude the last 4 bytes */
- }
-
- /* do some sanity checks */
-
- got_now = rb->read(fd, sector, SEC_SIZE); /* read first sector */
- fileread += got_now;
- fileleft -= got_now;
- if (got_now != SEC_SIZE)
- {
- rb->close(fd);
- return eReadErr;
- }
-
- /* version number in file plausible with this hardware? */
- if (!CheckPlatform(PLATFORM_ID, *(UINT16*)(sector + VERSION_ADR)))
- {
- rb->close(fd);
- return eBadPlatform;
- }
-
- if (has_crc)
- {
- crc32 = rb->crc_32(sector, SEC_SIZE, crc32); /* checksum */
-
- /* in addition to the CRC, my files also have a platform ID */
- if (sector[PLATFORM_ADR] != PLATFORM_ID) /* for our hardware? */
- {
- rb->close(fd);
- return eBadPlatform;
- }
- }
-
- if (is_romless)
- { /* in this case, there is not much we can check */
- if (*(UINT32*)sector != 0x00000200) /* reset vector */
- {
- rb->close(fd);
- return eBadContent;
- }
- }
- else
- {
- /* compare some bytes which have to be identical */
- if (*(UINT32*)sector != 0x41524348) /* "ARCH" */
- {
- rb->close(fd);
- return eBadContent;
- }
-
- for (i = 0x30; i<MASK_ADR-2; i++) /* leave two bytes for me */
- {
- if (sector[i] != FB[i])
- {
- rb->close(fd);
- return eBadContent;
- }
- }
- }
-
- /* check if we can read the whole file, and do checksum */
- do
- {
- read_now = MIN(SEC_SIZE, fileleft);
- got_now = rb->read(fd, sector, read_now);
- fileread += got_now;
- fileleft -= got_now;
-
- if (read_now != got_now)
- {
- rb->close(fd);
- return eReadErr;
- }
-
- if (has_crc)
- {
- crc32 = rb->crc_32(sector, got_now, crc32); /* checksum */
- }
- } while (fileleft);
-
- if (has_crc)
- {
- got_now = rb->read(fd, &file_crc, sizeof(file_crc));
- if (got_now != sizeof(file_crc))
- {
- rb->close(fd);
- return eReadErr;
- }
- }
-
- /* must be EOF now */
- got_now = rb->read(fd, sector, SEC_SIZE);
- rb->close(fd);
- if (got_now != 0)
- return eReadErr;
-
- if (has_crc && file_crc != crc32)
- return eCrcErr;
-
- return eOK;
-}
-
-
-/* returns the # of failures, 0 on success */
-unsigned ProgramFirmwareFile(char* filename, int chipsize)
-{
- int i, j;
- int fd;
- int read = SEC_SIZE; /* how many for this sector */
- UINT16 keep = *(UINT16*)(FB + KEEP); /* we must keep this! */
- unsigned failures = 0;
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- return false;
-
- for (i=0; i<chipsize; i+=SEC_SIZE)
- {
- if (!EraseSector(FB + i))
- {
- /* nothing we can do, let the programming count the errors */
- }
-
- if (read == SEC_SIZE) /* not EOF yet */
- {
- read = rb->read(fd, sector, SEC_SIZE);
- if (i==0)
- { /* put original value back in */
- *(UINT16*)(sector + KEEP) = keep;
- }
-
- for (j=0; j<read; j++)
- {
- if (!ProgramByte(FB + i + j, sector[j]))
- {
- failures++;
- }
- }
- }
- }
-
- rb->close(fd);
-
- return failures;
-}
-
-
-/* returns the # of failures, 0 on success */
-unsigned VerifyFirmwareFile(char* filename)
-{
- int i=0, j;
- int fd;
- int read = SEC_SIZE; /* how many for this sector */
- unsigned failures = 0;
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- return false;
-
- do
- {
- read = rb->read(fd, sector, SEC_SIZE);
-
- for (j=0; j<read; j++)
- {
- /* position of keep value is no error */
- if (FB[i] != sector[j] && i != KEEP && i != (KEEP+1))
- {
- failures++;
- }
- i++;
- }
- }
- while (read == SEC_SIZE);
-
- rb->close(fd);
-
- return failures;
-}
-
-
-/***************** Support Functions *****************/
-
-/* check if we have "normal" boot ROM or flash mirrored to zero */
-tCheckROM CheckBootROM(void)
-{
- unsigned boot_crc;
- unsigned* pFlash = (unsigned*)FB;
- unsigned* pRom = (unsigned*)0x0;
- unsigned i;
-
- boot_crc = rb->crc_32((unsigned char*)0x0, 64*1024, 0xFFFFFFFF);
- if (boot_crc == 0x56DBA4EE /* the known boot ROM */
-#if PLATFORM_ID == ID_PLAYER
- /* alternative boot ROM found in one single player so far */
- || boot_crc == 0x358099E8
-#endif
- )
- return eBootROM;
-
- /* check if ROM is a flash mirror */
- for (i=0; i<256*1024/sizeof(unsigned); i++)
- {
- if (*pRom++ != *pFlash++)
- { /* difference means no mirror */
- return eUnknown;
- }
- }
-
- return eROMless;
-}
-
-
-/***************** User Interface Functions *****************/
-
-int WaitForButton(void)
-{
- int button;
-
- do
- {
- button = rb->button_get(true);
- } while (IS_SYSEVENT(button) || (button & BUTTON_REL));
-
- return button;
-}
-
-#ifdef HAVE_LCD_BITMAP
-/* Recorder implementation */
-
-/* helper for DoUserDialog() */
-void ShowFlashInfo(tFlashInfo* pInfo)
-{
- if (!pInfo->manufacturer)
- {
- rb->lcd_puts(0, 0, "Flash: M=?? D=??");
- rb->lcd_puts(0, 1, "Impossible to program");
- }
- else
- {
- rb->lcd_putsf(0, 0, "Flash: M=%02x D=%02x",
- pInfo->manufacturer, pInfo->id);
-
-
- if (pInfo->size)
- {
- rb->lcd_puts(0, 1, pInfo->name);
- rb->lcd_putsf(0, 2, "Size: %d KB", pInfo->size / 1024);
- }
- else
- {
- rb->lcd_puts(0, 1, "Unsupported chip");
- }
-
- }
-
- rb->lcd_update();
-}
-
-
-/* Kind of our main function, defines the application flow. */
-void DoUserDialog(char* filename)
-{
- tFlashInfo FlashInfo;
- char default_filename[32];
- int button;
- int rc; /* generic return code */
- size_t memleft;
- tCheckROM result;
- bool is_romless;
-
- /* this can only work if Rockbox runs in DRAM, not flash ROM */
- if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */
- { /* we're running from flash */
- rb->splash(HZ*3, "Not from ROM");
- return; /* exit */
- }
-
- /* test if the user is running the correct plugin for this box */
- if (!CheckPlatform(PLATFORM_ID, *(UINT16*)(FB + VERSION_ADR)))
- {
- rb->splash(HZ*3, "Wrong plugin");
- return; /* exit */
- }
-
- /* refuse to work if the power may fail meanwhile */
- if (!rb->battery_level_safe())
- {
- rb->splash(HZ*3, "Battery too low!");
- return; /* exit */
- }
-
- /* check boot ROM */
- result = CheckBootROM();
- if (result == eUnknown)
- { /* no support for any other yet */
- rb->splash(HZ*3, "Wrong boot ROM");
- return; /* exit */
- }
- is_romless = (result == eROMless);
-
- /* compose filename if none given */
- if (filename == NULL)
- {
- rb->snprintf(
- default_filename,
- sizeof(default_filename),
- "/firmware_%s%s.bin",
- FILE_TYPE,
- is_romless ? "_norom" : "");
- filename = default_filename;
- }
-
- /* "allocate" memory */
- sector = rb->plugin_get_buffer(&memleft);
- if (memleft < SEC_SIZE) /* need buffer for a flash sector */
- {
- rb->splash(HZ*3, "Out of memory");
- return; /* exit */
- }
-
- rb->lcd_setfont(FONT_SYSFIXED);
-
- rc = GetFlashInfo(&FlashInfo);
- ShowFlashInfo(&FlashInfo);
- if (FlashInfo.size == 0) /* no valid chip */
- {
- rb->splash(HZ*3, "Sorry!");
- return; /* exit */
- }
-
- rb->lcd_puts(0, 3, "using file:");
- rb->lcd_puts_scroll(0, 4, filename);
- rb->lcd_puts(0, 6, KEYNAME1 " to check file");
- rb->lcd_puts(0, 7, "other key to exit");
- rb->lcd_update();
-
- button = WaitForButton();
- if (button != KEY1)
- {
- return;
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "checking...");
- rb->lcd_update();
-
- rc = CheckFirmwareFile(filename, FlashInfo.size, is_romless);
- rb->lcd_puts(0, 0, "checked:");
- switch (rc)
- {
- case eOK:
- rb->lcd_puts(0, 1, "File OK.");
- break;
- case eFileNotFound:
- rb->lcd_puts(0, 1, "File not found.");
- rb->lcd_puts(0, 2, "Put this in root:");
- rb->lcd_puts_scroll(0, 4, filename);
- break;
- case eTooBig:
- rb->lcd_puts(0, 1, "File too big,");
- rb->lcd_puts(0, 2, "larger than chip.");
- break;
- case eTooSmall:
- rb->lcd_puts(0, 1, "File too small.");
- rb->lcd_puts(0, 2, "Incomplete?");
- break;
- case eReadErr:
- rb->lcd_puts(0, 1, "Read error.");
- break;
- case eBadContent:
- rb->lcd_puts(0, 1, "File invalid.");
- rb->lcd_puts(0, 2, "Sanity check fail.");
- break;
- case eCrcErr:
- rb->lcd_puts(0, 1, "File invalid.");
- rb->lcd_puts(0, 2, "CRC check failed,");
- rb->lcd_puts(0, 3, "checksum mismatch.");
- break;
- case eBadPlatform:
- rb->lcd_puts(0, 1, "Wrong file for");
- rb->lcd_puts(0, 2, "this hardware.");
- break;
- default:
- rb->lcd_puts(0, 1, "Check failed.");
- break;
- }
-
- if (rc == eOK)
- {
- rb->lcd_puts(0, 6, KEYNAME2 " to program");
- rb->lcd_puts(0, 7, "other key to exit");
- }
- else
- { /* error occured */
- rb->lcd_puts(0, 6, "Any key to exit");
- }
-
- rb->lcd_update();
-
- button = WaitForButton();
- if (button != KEY2 || rc != eOK)
- {
- return;
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "Program all Flash?");
- rb->lcd_puts(0, 1, "Are you sure?");
- rb->lcd_puts(0, 2, "If it goes wrong,");
- rb->lcd_puts(0, 3, "it kills your box!");
- rb->lcd_puts(0, 4, "See documentation.");
-
- rb->lcd_puts(0, 6, KEYNAME3 " to proceed");
- rb->lcd_puts(0, 7, "other key to exit");
- rb->lcd_update();
-
- button = WaitForButton();
- if (button != KEY3)
- {
- return;
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "Programming...");
- rb->lcd_update();
-
- rc = ProgramFirmwareFile(filename, FlashInfo.size);
- if (rc)
- { /* errors */
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "Panic:");
- rb->lcd_puts(0, 1, "Programming fail!");
- rb->lcd_putsf(0, 2, "%d errors", rc);
- rb->lcd_update();
- button = WaitForButton();
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "Verifying...");
- rb->lcd_update();
-
- rc = VerifyFirmwareFile(filename);
-
- rb->lcd_clear_display();
- if (rc == 0)
- {
- rb->lcd_puts(0, 0, "Verify OK.");
- }
- else
- {
- rb->lcd_puts(0, 0, "Panic:");
- rb->lcd_puts(0, 1, "Verify fail!");
- rb->lcd_putsf(0, 2, "%d errors", rc);
- }
- rb->lcd_puts(0, 7, "Any key to exit");
- rb->lcd_update();
-
- button = WaitForButton();
-}
-
-#else /* HAVE_LCD_BITMAP */
-/* Player implementation */
-
-/* helper for DoUserDialog() */
-void ShowFlashInfo(tFlashInfo* pInfo)
-{
- char buf[32];
-
- if (!pInfo->manufacturer)
- {
- rb->lcd_puts_scroll(0, 0, "Flash: M=? D=?");
- rb->lcd_puts_scroll(0, 1, "Impossible to program");
- rb->lcd_update();
- WaitForButton();
- }
- else
- {
- rb->snprintf(buf, sizeof(buf), "Flash: M=%02x D=%02x",
- pInfo->manufacturer, pInfo->id);
- rb->lcd_puts_scroll(0, 0, buf);
-
- if (pInfo->size)
- {
- rb->snprintf(buf, sizeof(buf), "Size: %d KB", pInfo->size / 1024);
- rb->lcd_puts_scroll(0, 1, buf);
- rb->lcd_update();
- }
- else
- {
- rb->lcd_puts_scroll(0, 1, "Unsupported chip");
- rb->lcd_update();
- WaitForButton();
- }
- }
-}
-
-
-void DoUserDialog(char* filename)
-{
- tFlashInfo FlashInfo;
- char buf[32];
- char default_filename[32];
- int button;
- int rc; /* generic return code */
- size_t memleft;
- tCheckROM result;
- bool is_romless;
-
- /* this can only work if Rockbox runs in DRAM, not flash ROM */
- if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */
- { /* we're running from flash */
- rb->splash(HZ*3, "Not from ROM");
- return; /* exit */
- }
-
- /* test if the user is running the correct plugin for this box */
- if (!CheckPlatform(PLATFORM_ID, *(UINT16*)(FB + VERSION_ADR)))
- {
- rb->splash(HZ*3, "Wrong version");
- return; /* exit */
- }
-
- /* refuse to work if the power may fail meanwhile */
- if (!rb->battery_level_safe())
- {
- rb->splash(HZ*3, "Batt. too low!");
- return; /* exit */
- }
-
- /* check boot ROM */
- result = CheckBootROM();
- if (result == eUnknown)
- { /* no support for any other yet */
- rb->splash(HZ*3, "Wrong boot ROM");
- return; /* exit */
- }
- is_romless = (result == eROMless);
-
- /* compose filename if none given */
- if (filename == NULL)
- {
- rb->snprintf(
- default_filename,
- sizeof(default_filename),
- "/firmware_%s%s.bin",
- FILE_TYPE,
- is_romless ? "_norom" : "");
- filename = default_filename;
- }
-
- /* "allocate" memory */
- sector = rb->plugin_get_buffer(&memleft);
- if (memleft < SEC_SIZE) /* need buffer for a flash sector */
- {
- rb->splash(HZ*3, "Out of memory");
- return; /* exit */
- }
-
- rc = GetFlashInfo(&FlashInfo);
- ShowFlashInfo(&FlashInfo);
-
- if (FlashInfo.size == 0) /* no valid chip */
- {
- return; /* exit */
- }
-
- rb->lcd_puts_scroll(0, 0, filename);
- rb->lcd_puts_scroll(0, 1, "[Menu] to check");
- rb->lcd_update();
-
- button = WaitForButton();
- if (button != BUTTON_MENU)
- {
- return;
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "Checking...");
- rb->lcd_update();
-
- rc = CheckFirmwareFile(filename, FlashInfo.size, is_romless);
- rb->lcd_puts(0, 0, "Checked:");
- switch (rc)
- {
- case eOK:
- rb->lcd_puts(0, 1, "File OK.");
- break;
- case eFileNotFound:
- rb->lcd_puts_scroll(0, 0, "File not found:");
- rb->lcd_puts_scroll(0, 1, filename);
- break;
- case eTooBig:
- rb->lcd_puts_scroll(0, 0, "File too big,");
- rb->lcd_puts_scroll(0, 1, "larger than chip.");
- break;
- case eTooSmall:
- rb->lcd_puts_scroll(0, 0, "File too small.");
- rb->lcd_puts_scroll(0, 1, "Incomplete?");
- break;
- case eReadErr:
- rb->lcd_puts_scroll(0, 0, "Read error.");
- break;
- case eBadContent:
- rb->lcd_puts_scroll(0, 0, "File invalid.");
- rb->lcd_puts_scroll(0, 1, "Sanity check failed.");
- break;
- case eCrcErr:
- rb->lcd_puts_scroll(0, 0, "File invalid.");
- rb->lcd_puts_scroll(0, 1, "CRC check failed.");
- break;
- case eBadPlatform:
- rb->lcd_puts_scroll(0, 0, "Wrong file for");
- rb->lcd_puts_scroll(0, 1, "this hardware.");
- break;
- default:
- rb->lcd_puts_scroll(0, 0, "Check failed.");
- break;
- }
- rb->lcd_update();
-
- rb->sleep(HZ*3);
-
- if (rc == eOK)
- {
- rb->lcd_puts_scroll(0, 0, "[On] to program,");
- rb->lcd_puts_scroll(0, 1, "other key to exit.");
- rb->lcd_update();
- }
- else
- { /* error occured */
- return;
- }
-
- button = WaitForButton();
-
- if (button != BUTTON_ON)
- {
- return;
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Are you sure?");
- rb->lcd_puts_scroll(0, 1, "[+] to proceed.");
- rb->lcd_update();
-
- button = WaitForButton();
-
- if (button != BUTTON_RIGHT)
- {
- return;
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Programming...");
- rb->lcd_update();
-
- rc = ProgramFirmwareFile(filename, FlashInfo.size);
-
- if (rc)
- { /* errors */
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Programming failed!");
- rb->snprintf(buf, sizeof(buf), "%d errors", rc);
- rb->lcd_puts_scroll(0, 1, buf);
- rb->lcd_update();
- WaitForButton();
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Verifying...");
- rb->lcd_update();
-
- rc = VerifyFirmwareFile(filename);
-
- rb->lcd_clear_display();
-
- if (rc == 0)
- {
- rb->lcd_puts_scroll(0, 0, "Verify OK.");
- }
- else
- {
- rb->snprintf(buf, sizeof(buf), "Verify failed! %d errors", rc);
- rb->lcd_puts_scroll(0, 0, buf);
- }
-
- rb->lcd_puts_scroll(0, 1, "Press any key to exit.");
- rb->lcd_update();
- WaitForButton();
-}
-
-#endif /* not HAVE_LCD_BITMAP */
-
-
-/***************** Plugin Entry Point *****************/
-
-enum plugin_status plugin_start(const void* parameter)
-{
- int oldmode;
-
- /* now go ahead and have fun! */
- oldmode = rb->system_memory_guard(MEMGUARD_NONE); /*disable memory guard */
- DoUserDialog((char*) parameter);
- rb->system_memory_guard(oldmode); /* re-enable memory guard */
-
- return PLUGIN_OK;
-}
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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define FLIPIT_LEFT BUTTON_LEFT
-#define FLIPIT_RIGHT BUTTON_RIGHT
-#define FLIPIT_UP BUTTON_UP
-#define FLIPIT_DOWN BUTTON_DOWN
-#define FLIPIT_QUIT BUTTON_OFF
-#define FLIPIT_SHUFFLE BUTTON_F1
-#define FLIPIT_SOLVE BUTTON_F2
-#define FLIPIT_STEP_BY_STEP BUTTON_F3
-#define FLIPIT_TOGGLE BUTTON_PLAY
-
-#elif CONFIG_KEYPAD == PLAYER_PAD
-#define FLIPIT_LEFT BUTTON_LEFT
-#define FLIPIT_RIGHT BUTTON_RIGHT
-#define FLIPIT_UP_PRE BUTTON_ON
-#define FLIPIT_UP (BUTTON_ON | BUTTON_REL)
-#define FLIPIT_DOWN BUTTON_MENU
-#define FLIPIT_QUIT BUTTON_STOP
-#define FLIPIT_SHUFFLE (BUTTON_ON | BUTTON_LEFT)
-#define FLIPIT_SOLVE (BUTTON_ON | BUTTON_RIGHT)
-#define FLIPIT_STEP_BY_STEP (BUTTON_ON | BUTTON_PLAY)
-#define FLIPIT_TOGGLE BUTTON_PLAY
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define FLIPIT_LEFT BUTTON_LEFT
-#define FLIPIT_RIGHT BUTTON_RIGHT
-#define FLIPIT_UP BUTTON_UP
-#define FLIPIT_DOWN BUTTON_DOWN
-#define FLIPIT_QUIT BUTTON_OFF
-#define FLIPIT_SHUFFLE (BUTTON_MENU | BUTTON_LEFT)
-#define FLIPIT_SOLVE (BUTTON_MENU | BUTTON_UP)
-#define FLIPIT_STEP_BY_STEP (BUTTON_MENU | BUTTON_RIGHT)
-#define FLIPIT_TOGGLE_PRE BUTTON_MENU
-#define FLIPIT_TOGGLE (BUTTON_MENU | BUTTON_REL)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define FLIPIT_LEFT BUTTON_LEFT
#define FLIPIT_RIGHT BUTTON_RIGHT
@@ -937,20 +902,8 @@ enum plugin_status plugin_start(const void* parameter)
/* print instructions */
rb->lcd_clear_display();
rb->lcd_setfont(FONT_SYSFIXED);
-#if CONFIG_KEYPAD == RECORDER_PAD
- rb->lcd_putsxy(2, 8, "[OFF] to stop");
- rb->lcd_putsxy(2, 18, "[PLAY] toggle");
- rb->lcd_putsxy(2, 28, "[F1] shuffle");
- rb->lcd_putsxy(2, 38, "[F2] solution");
- rb->lcd_putsxy(2, 48, "[F3] step by step");
-#elif CONFIG_KEYPAD == ONDIO_PAD
- rb->lcd_putsxy(2, 8, "[OFF] to stop");
- rb->lcd_putsxy(2, 18, "[MODE] toggle");
- rb->lcd_putsxy(2, 28, "[M-LEFT] shuffle");
- rb->lcd_putsxy(2, 38, "[M-UP] solution");
- rb->lcd_putsxy(2, 48, "[M-RIGHT] step by step");
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
rb->lcd_putsxy(2, 8, "[STOP] to stop");
rb->lcd_putsxy(2, 18, "[SELECT] toggle");
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 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2009 Tomer Shalev
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#ifndef _CPU_SH7043_H
-#define _CPU_SH7043_H
-
-inline static short muls16_asr10(short a, short b)
-{
- short r;
- asm (
- "muls %[a],%[b] \n"
- "sts macl,%[r] \n"
- "shlr8 %[r] \n"
- "shlr2 %[r] \n"
- : /* outputs */
- [r]"=r"(r)
- : /* inputs */
- [a]"r"(a),
- [b]"r"(b)
- );
- return r;
-}
-
-inline static long muls32_asr26(long a, long b)
-{
- long r, t1, t2, t3;
- asm (
- /* Signed 32bit * 32bit -> 64bit multiplication.
- Notation: xxab * xxcd, where each letter represents 16 bits.
- xx is the 64 bit sign extension. */
- "swap.w %[a],%[t1] \n" /* t1 = ba */
- "mulu %[t1],%[b] \n" /* a * d */
- "swap.w %[b],%[t3] \n" /* t3 = dc */
- "sts macl,%[t2] \n" /* t2 = a * d */
- "mulu %[t1],%[t3] \n" /* a * c */
- "sts macl,%[r] \n" /* hi = a * c */
- "mulu %[a],%[t3] \n" /* b * c */
- "clrt \n"
- "sts macl,%[t3] \n" /* t3 = b * c */
- "addc %[t2],%[t3] \n" /* t3 += t2, carry -> t2 */
- "movt %[t2] \n"
- "mulu %[a],%[b] \n" /* b * d */
- "mov %[t3],%[t1] \n" /* t1t3 = t2t3 << 16 */
- "xtrct %[t2],%[t1] \n"
- "shll16 %[t3] \n"
- "sts macl,%[t2] \n" /* lo = b * d */
- "clrt \n" /* hi.lo += t1t3 */
- "addc %[t3],%[t2] \n"
- "addc %[t1],%[r] \n"
- "cmp/pz %[a] \n" /* ab >= 0 ? */
- "bt 1f \n"
- "sub %[b],%[r] \n" /* no: hi -= cd (sign extension of ab is -1) */
- "1: \n"
- "cmp/pz %[b] \n" /* cd >= 0 ? */
- "bt 2f \n"
- "sub %[a],%[r] \n" /* no: hi -= ab (sign extension of cd is -1) */
- "2: \n"
- /* Shift right by 26 and return low 32 bits */
- "shll2 %[r] \n" /* hi <<= 6 */
- "shll2 %[r] \n"
- "shll2 %[r] \n"
- "shlr16 %[t2] \n" /* (unsigned)lo >>= 26 */
- "shlr8 %[t2] \n"
- "shlr2 %[t2] \n"
- "or %[t2],%[r] \n" /* combine result */
- : /* outputs */
- [r] "=&r"(r),
- [t1]"=&r"(t1),
- [t2]"=&r"(t2),
- [t3]"=&r"(t3)
- : /* inputs */
- [a] "r" (a),
- [b] "r" (b)
- );
- return r;
-}
-
-#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 @@
#define _FRACTAL_H
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define FRACTAL_QUIT BUTTON_OFF
-#define FRACTAL_UP BUTTON_UP
-#define FRACTAL_DOWN BUTTON_DOWN
-#define FRACTAL_LEFT BUTTON_LEFT
-#define FRACTAL_RIGHT BUTTON_RIGHT
-#define FRACTAL_ZOOM_IN BUTTON_PLAY
-#define FRACTAL_ZOOM_OUT BUTTON_ON
-#define FRACTAL_PRECISION_INC BUTTON_F2
-#define FRACTAL_PRECISION_DEC BUTTON_F1
-#define FRACTAL_RESET BUTTON_F3
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define FRACTAL_QUIT BUTTON_OFF
-#define FRACTAL_UP BUTTON_UP
-#define FRACTAL_DOWN BUTTON_DOWN
-#define FRACTAL_LEFT BUTTON_LEFT
-#define FRACTAL_RIGHT BUTTON_RIGHT
-#define FRACTAL_ZOOM_IN_PRE BUTTON_MENU
-#define FRACTAL_ZOOM_IN (BUTTON_MENU | BUTTON_REL)
-#define FRACTAL_ZOOM_IN2 (BUTTON_MENU | BUTTON_UP)
-#define FRACTAL_ZOOM_OUT (BUTTON_MENU | BUTTON_DOWN)
-#define FRACTAL_PRECISION_INC (BUTTON_MENU | BUTTON_RIGHT)
-#define FRACTAL_PRECISION_DEC (BUTTON_MENU | BUTTON_LEFT)
-#define FRACTAL_RESET (BUTTON_MENU | BUTTON_OFF)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define FRACTAL_QUIT BUTTON_OFF
#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 @@
#include "fractal_sets.h"
/* CPU stuff */
-#if CONFIG_CPU == SH7034
-#include "cpu_sh7043.h"
-#elif defined CPU_COLDFIRE
+#if defined CPU_COLDFIRE
#include "cpu_coldfire.h"
#elif defined CPU_ARM
#include "cpu_arm.h"
#endif
-#if CONFIG_CPU == SH7034
-#define MULS16_ASR10(a, b) muls16_asr10(a, b)
-#define MULS32_ASR26(a, b) muls32_asr26(a, b)
-#elif defined CPU_COLDFIRE
+#if defined CPU_COLDFIRE
/* Needs the EMAC initialised to fractional mode w/o rounding and saturation */
#define MULS32_INIT() coldfire_set_macsr(EMAC_FRACTIONAL)
#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 @@
#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
/* no next var */
-#elif (CONFIG_KEYPAD == RECORDER_PAD)
-#define GBN_BUTTON_UP BUTTON_UP
-#define GBN_BUTTON_DOWN BUTTON_DOWN
-#define GBN_BUTTON_LEFT BUTTON_LEFT
-#define GBN_BUTTON_RIGHT BUTTON_RIGHT
-#define GBN_BUTTON_RETREAT BUTTON_F1
-#define GBN_BUTTON_ADVANCE BUTTON_F3
-#define GBN_BUTTON_MENU BUTTON_F2
-#define GBN_BUTTON_PLAY BUTTON_PLAY | BUTTON_REL
-#define GBN_BUTTON_CONTEXT BUTTON_PLAY | BUTTON_REPEAT
-#define GBN_BUTTON_NEXT_VAR BUTTON_ON
-
-#elif (CONFIG_KEYPAD == ONDIO_PAD)
-#define GBN_BUTTON_UP BUTTON_UP
-#define GBN_BUTTON_DOWN BUTTON_DOWN
-#define GBN_BUTTON_LEFT BUTTON_LEFT
-#define GBN_BUTTON_RIGHT BUTTON_RIGHT
-#define GBN_BUTTON_MENU BUTTON_MENU | BUTTON_REPEAT
-#define GBN_BUTTON_PLAY BUTTON_MENU | BUTTON_REL
-#define GBN_BUTTON_NAV_MODE BUTTON_OFF
-
#elif (CONFIG_KEYPAD == SAMSUNG_YH92X_PAD)
#define GBN_BUTTON_UP BUTTON_UP
#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))
OTHER_SRC += $(GOBAN_SRC)
ifndef APP_TYPE
-ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET)))))
- ### lowmem targets
- ROCKS += $(GOBAN_BUILDDIR)/goban.ovl
- GOBAN_OUTLDS = $(GOBAN_BUILDDIR)/goban.link
- GOBAN_OVLFLAGS = -T$(GOBAN_OUTLDS) -Wl,--gc-sections -Wl,-Map,$(basename $@).map
-else
- ### all other targets
+ ### all targets
ROCKS += $(GOBAN_BUILDDIR)/goban.rock
-endif
else
### simulator
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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define GREYSCALE_SHIFT BUTTON_ON
-#define GREYSCALE_UP BUTTON_UP
-#define GREYSCALE_DOWN BUTTON_DOWN
-#define GREYSCALE_LEFT BUTTON_LEFT
-#define GREYSCALE_RIGHT BUTTON_RIGHT
-#define GREYSCALE_OFF BUTTON_OFF
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define GREYSCALE_SHIFT BUTTON_MENU
-#define GREYSCALE_UP BUTTON_UP
-#define GREYSCALE_DOWN BUTTON_DOWN
-#define GREYSCALE_LEFT BUTTON_LEFT
-#define GREYSCALE_RIGHT BUTTON_RIGHT
-#define GREYSCALE_OFF BUTTON_OFF
-
-#elif CONFIG_KEYPAD == IRIVER_H100_PAD
+#if CONFIG_KEYPAD == IRIVER_H100_PAD
#define GREYSCALE_SHIFT BUTTON_ON
#define GREYSCALE_UP BUTTON_UP
#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 @@
#include "plugin.h"
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define IMGVIEW_ZOOM_IN BUTTON_PLAY
-#define IMGVIEW_ZOOM_OUT BUTTON_ON
-#define IMGVIEW_UP BUTTON_UP
-#define IMGVIEW_DOWN BUTTON_DOWN
-#define IMGVIEW_LEFT BUTTON_LEFT
-#define IMGVIEW_RIGHT BUTTON_RIGHT
-#define IMGVIEW_NEXT BUTTON_F3
-#define IMGVIEW_PREVIOUS BUTTON_F2
-#define IMGVIEW_MENU BUTTON_OFF
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define IMGVIEW_ZOOM_PRE BUTTON_MENU
-#define IMGVIEW_ZOOM_IN (BUTTON_MENU | BUTTON_REL)
-#define IMGVIEW_ZOOM_OUT (BUTTON_MENU | BUTTON_DOWN)
-#define IMGVIEW_UP BUTTON_UP
-#define IMGVIEW_DOWN BUTTON_DOWN
-#define IMGVIEW_LEFT BUTTON_LEFT
-#define IMGVIEW_RIGHT BUTTON_RIGHT
-#define IMGVIEW_NEXT (BUTTON_MENU | BUTTON_RIGHT)
-#define IMGVIEW_PREVIOUS (BUTTON_MENU | BUTTON_LEFT)
-#define IMGVIEW_MENU BUTTON_OFF
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define IMGVIEW_ZOOM_IN BUTTON_SELECT
#define IMGVIEW_ZOOM_OUT BUTTON_MODE
#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 @@
INLINE unsigned range_limit(int value)
{
-#if CONFIG_CPU == SH7034
- unsigned tmp;
- asm ( /* Note: Uses knowledge that only low byte of result is used */
- "mov #-128,%[t] \n"
- "sub %[t],%[v] \n" /* value -= -128; equals value += 128; */
- "extu.b %[v],%[t] \n"
- "cmp/eq %[v],%[t] \n" /* low byte == whole number ? */
- "bt 1f \n" /* yes: no overflow */
- "cmp/pz %[v] \n" /* overflow: positive? */
- "subc %[v],%[v] \n" /* %[r] now either 0 or 0xffffffff */
- "1: \n"
- : /* outputs */
- [v]"+r"(value),
- [t]"=&r"(tmp)
- );
- return value;
-#elif defined(CPU_COLDFIRE)
+#if defined(CPU_COLDFIRE)
asm ( /* Note: Uses knowledge that only the low byte of the result is used */
"add.l #128,%[v] \n" /* value += 128; */
"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 @@
#include "pluginbitmaps/jewels.h"
/* button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define JEWELS_UP BUTTON_UP
-#define JEWELS_DOWN BUTTON_DOWN
-#define JEWELS_LEFT BUTTON_LEFT
-#define JEWELS_RIGHT BUTTON_RIGHT
-#define JEWELS_SELECT BUTTON_PLAY
-#define JEWELS_CANCEL BUTTON_OFF
-#define HK_SELECT "PLAY"
-#define HK_CANCEL "OFF"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define JEWELS_UP BUTTON_UP
-#define JEWELS_DOWN BUTTON_DOWN
-#define JEWELS_LEFT BUTTON_LEFT
-#define JEWELS_RIGHT BUTTON_RIGHT
-#define JEWELS_SELECT BUTTON_MENU
-#define JEWELS_CANCEL BUTTON_OFF
-#define HK_SELECT "MENU"
-#define HK_CANCEL "OFF"
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define JEWELS_UP BUTTON_UP
#define JEWELS_DOWN BUTTON_DOWN
#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
#ifdef CPU_COLDFIRE
grey_coldfire.S
-#elif CONFIG_CPU == SH7034
-grey_sh.S
#endif
#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 @@
#ifndef SIMULATOR
-#if defined ARCHOS_RECORDER /* verified */ \
- || defined ARCHOS_FMRECORDER /* should be identical */ \
- || defined ARCHOS_RECORDERV2 /* should be identical */ \
- || defined ARCHOS_ONDIOFM /* verified */ \
- || defined ARCHOS_ONDIOSP /* verified */
-/* Average measurements of a Recorder v1, an Ondio FM, a backlight-modded
- * Ondio FM, and an Ondio SP. */
-static const unsigned char lcdlinear[256] = {
- 5, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 29, 31, 33, 35,
- 37, 39, 40, 42, 43, 45, 46, 48, 49, 50, 51, 53, 54, 55, 57, 58,
- 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 68, 69, 70, 71, 71, 72,
- 73, 74, 74, 75, 76, 77, 77, 78, 79, 79, 80, 80, 81, 81, 82, 82,
- 83, 84, 84, 85, 86, 86, 87, 87, 88, 88, 89, 89, 90, 90, 91, 91,
- 92, 92, 93, 93, 94, 94, 95, 95, 96, 96, 97, 98, 98, 99, 100, 100,
-101, 101, 102, 103, 103, 104, 105, 105, 106, 106, 107, 107, 108, 108, 109, 109,
-110, 110, 111, 112, 112, 113, 114, 114, 115, 115, 116, 117, 117, 118, 119, 119,
-120, 120, 121, 122, 123, 123, 124, 125, 126, 126, 127, 128, 129, 129, 130, 131,
-132, 132, 133, 134, 135, 135, 136, 137, 138, 138, 139, 140, 140, 141, 141, 142,
-143, 144, 145, 146, 147, 147, 148, 149, 150, 151, 152, 153, 154, 154, 155, 156,
-157, 158, 159, 160, 161, 161, 162, 163, 164, 165, 166, 167, 168, 168, 169, 170,
-171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 184, 185, 186, 187,
-188, 189, 191, 192, 194, 195, 197, 198, 199, 200, 202, 203, 204, 205, 207, 208,
-209, 210, 212, 213, 215, 216, 218, 219, 220, 221, 222, 223, 225, 226, 227, 228,
-229, 230, 232, 233, 234, 235, 237, 238, 239, 240, 242, 243, 244, 246, 247, 248
-};
-/* The actual LCD scanrate varies a lot with temperature on these targets */
-#define LCD_SCANRATE 67 /* Hz */
-
-#elif defined IAUDIO_M3 /* verified */
+#if defined IAUDIO_M3 /* verified */
/* Average measurements of 2 iAudio remotes connected to an M3. */
static const unsigned char lcdlinear[256] = {
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,
+ (~yc & _GREY_BMASK);
#endif /* LCD_PIXELFORMAT */
-#if ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 1) && (CONFIG_CPU == SH7034)) \
- || ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 2) && defined(CPU_COLDFIRE)) \
+#if ((LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 2) && defined(CPU_COLDFIRE)) \
|| ((LCD_PIXELFORMAT == VERTICAL_INTERLEAVED) && defined(CPU_COLDFIRE))
_grey_line1(width, dst + idx, src, _grey_info.gvalue);
#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 @@
-/***************************************************************************
-* __________ __ ___.
-* Open \______ \ ____ ____ | | _\_ |__ _______ ___
-* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
-* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
-* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
-* \/ \/ \/ \/ \/
-* $Id$
-*
-* New greyscale framework
-* SH1 assembler routines
-*
-* This is a generic framework to display 129 shades of grey on low-depth
-* bitmap LCDs (Archos b&w, Iriver & Ipod 4-grey) within plugins.
-*
-* Copyright (C) 2008 Jens Arnold
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-* KIND, either express or implied.
-*
-****************************************************************************/
-
-#include "config.h"
-/* Plugins should not normally do this, but we need to check a macro, and
- * plugin.h would confuse the assembler. */
-
- .text
- .global __grey_line1
- .type __grey_line1, @function
-
-#if (LCD_PIXELFORMAT == VERTICAL_PACKING) && (LCD_DEPTH == 1)
-
-/****************************************************************************
- * void _grey_line1(int width, r4
- * unsigned char *dst, r5
- * const unsigned char *src, r6
- * const unsigned char *lut); r7
- */
-
-__grey_line1:
- mov #1, r0
- tst r0, r6
- bt .p1_h_end
-
- mov.b @r6+, r0
- extu.b r0, r0
- mov.b @(r0, r7), r0
- add #-1, r4
- mov.b r0, @r5
- add #8, r5
-.p1_h_end:
-
- mov #2, r0
- cmp/hs r0, r4
- bf .p2_t_end
- tst r0, r6
- bt .p2_h_end
-
- mov.w @r6+, r1
- extu.b r1, r0
- mov.b @(r0, r7), r0
- shlr8 r1
- mov.b r0, @(8, r5)
- extu.b r1, r0
- mov.b @(r0, r7), r0
- add #-2, r4
- mov.b r0, @r5
- add #16, r5
-.p2_h_end:
-
- add #-4, r4
- cmp/pz r4
- bf .p4_end
-
- add r6, r4
-
-.p4_loop:
- mov.l @r6+, r1
- swap.w r1, r2
- extu.b r2, r0
- mov.b @(r0, r7), r0
- shlr8 r2
- mov.b r0, @(8, r5)
- extu.b r2, r0
- mov.b @(r0, r7), r2
- extu.b r1, r0
- mov.b r2, @r5
- add #16, r5
- mov.b @(r0, r7), r0
- shlr8 r1
- mov.b r0, @(8, r5)
- extu.b r1, r0
- mov.b @(r0, r7), r0
- cmp/hs r6, r4
- mov.b r0, @r5
- add #16, r5
- bt .p4_loop
-
- /* No need to correct the count, we're only testing bits from now on. */
-
-.p4_end:
- mov #2, r0
- tst r0, r4
- bt .p2_t_end
-
- mov.w @r6+, r1
- extu.b r1, r0
- mov.b @(r0, r7), r0
- shlr8 r1
- mov.b r0, @(8, r5)
- extu.b r1, r0
- mov.b @(r0, r7), r0
- mov.b r0, @r5
- add #16, r5
-.p2_t_end:
-
- mov #1, r0
- tst r0, r4
- bt .p1_t_end
-
- mov.b @r6+, r0
- extu.b r0, r0
- mov.b @(r0, r7), r0
- rts
- mov.b r0, @r5
-.p1_t_end:
-
- rts
- nop
- .size __grey_line1, . - __grey_line1
-
-#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 @@
#include "plugin.h"
#include "helper.h"
-#ifdef CPU_SH
-/* Lookup table for using the BIT_N() macro in plugins */
-const unsigned bit_n_table[32] = {
- 1LU<< 0, 1LU<< 1, 1LU<< 2, 1LU<< 3,
- 1LU<< 4, 1LU<< 5, 1LU<< 6, 1LU<< 7,
- 1LU<< 8, 1LU<< 9, 1LU<<10, 1LU<<11,
- 1LU<<12, 1LU<<13, 1LU<<14, 1LU<<15,
- 1LU<<16, 1LU<<17, 1LU<<18, 1LU<<19,
- 1LU<<20, 1LU<<21, 1LU<<22, 1LU<<23,
- 1LU<<24, 1LU<<25, 1LU<<26, 1LU<<27,
- 1LU<<28, 1LU<<29, 1LU<<30, 1LU<<31
-};
-#endif
-
/* Force the backlight on */
void backlight_force_on(void)
{
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[] =
{ PLA_DOWN_REPEAT, BUTTON_RC_REW|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_LEFT_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
{ PLA_RIGHT_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
-#elif (CONFIG_KEYPAD == PLAYER_PAD) || \
- (CONFIG_KEYPAD == RECORDER_PAD)
- { PLA_UP, BUTTON_RC_VOL_UP, BUTTON_NONE},
- { PLA_DOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE},
- { PLA_LEFT, BUTTON_RC_LEFT, BUTTON_NONE},
- { PLA_RIGHT, BUTTON_RC_RIGHT, BUTTON_NONE},
- { PLA_UP_REPEAT, BUTTON_RC_VOL_UP|BUTTON_REPEAT, BUTTON_NONE},
- { PLA_DOWN_REPEAT, BUTTON_RC_VOL_DOWN|BUTTON_REPEAT, BUTTON_NONE},
- { PLA_LEFT_REPEAT, BUTTON_RC_LEFT|BUTTON_REPEAT, BUTTON_NONE},
- { PLA_RIGHT_REPEAT, BUTTON_RC_RIGHT|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_REMOTE_KEYPAD == MROBE_REMOTE)
{ PLA_UP, BUTTON_RC_PLAY, BUTTON_NONE},
{ PLA_DOWN, BUTTON_RC_DOWN, BUTTON_NONE},
@@ -101,9 +91,7 @@ const struct button_mapping pla_main_ctx[] =
|| (CONFIG_KEYPAD == IRIVER_H300_PAD) \
|| (CONFIG_KEYPAD == IAUDIO_X5M5_PAD) \
|| (CONFIG_KEYPAD == GIGABEAT_PAD) \
- || (CONFIG_KEYPAD == RECORDER_PAD) \
|| (CONFIG_KEYPAD == IRIVER_IFP7XX_PAD) \
- || (CONFIG_KEYPAD == ONDIO_PAD) \
|| (CONFIG_KEYPAD == SANSA_C200_PAD) \
|| (CONFIG_KEYPAD == GIGABEAT_S_PAD) \
|| (CONFIG_KEYPAD == MROBE100_PAD) \
@@ -145,15 +133,6 @@ const struct button_mapping pla_main_ctx[] =
{ PLA_DOWN_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
{ PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
-#elif (CONFIG_KEYPAD == PLAYER_PAD)
- { PLA_UP, BUTTON_PLAY, BUTTON_NONE },
- { PLA_DOWN, BUTTON_STOP, BUTTON_NONE },
- { PLA_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { PLA_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { PLA_UP_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE },
- { PLA_DOWN_REPEAT, BUTTON_STOP|BUTTON_REPEAT, BUTTON_NONE },
- { PLA_LEFT_REPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { PLA_RIGHT_REPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
#elif (CONFIG_KEYPAD == IRIVER_H10_PAD)
{ PLA_UP, BUTTON_SCROLL_UP, BUTTON_NONE },
{ PLA_DOWN, BUTTON_SCROLL_DOWN, BUTTON_NONE },
@@ -339,24 +318,6 @@ const struct button_mapping pla_main_ctx[] =
{PLA_SELECT, BUTTON_SELECT, BUTTON_NONE},
{PLA_SELECT_REL, BUTTON_SELECT|BUTTON_REL, BUTTON_SELECT},
{PLA_SELECT_REPEAT, BUTTON_SELECT|BUTTON_REPEAT, BUTTON_NONE},
-#elif (CONFIG_KEYPAD == RECORDER_PAD)
- {PLA_CANCEL, BUTTON_ON, BUTTON_NONE},
- {PLA_EXIT, BUTTON_OFF, BUTTON_NONE},
- {PLA_SELECT, BUTTON_PLAY, BUTTON_NONE},
- {PLA_SELECT_REL, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY},
- {PLA_SELECT_REPEAT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_NONE},
-#elif (CONFIG_KEYPAD == ONDIO_PAD)
- {PLA_CANCEL, BUTTON_OFF|BUTTON_REL, BUTTON_OFF},
- {PLA_EXIT, BUTTON_OFF|BUTTON_REPEAT, BUTTON_NONE},
- {PLA_SELECT, BUTTON_MENU, BUTTON_NONE},
- {PLA_SELECT_REL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
- {PLA_SELECT_REPEAT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
-#elif (CONFIG_KEYPAD == PLAYER_PAD)
- {PLA_CANCEL, BUTTON_MENU|BUTTON_REL, BUTTON_MENU},
- {PLA_EXIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE},
- {PLA_SELECT, BUTTON_ON, BUTTON_NONE},
- {PLA_SELECT_REL, BUTTON_ON|BUTTON_REL, BUTTON_ON},
- {PLA_SELECT_REPEAT, BUTTON_ON|BUTTON_REPEAT, BUTTON_NONE},
#elif (CONFIG_KEYPAD == SANSA_FUZE_PAD)
{PLA_CANCEL, BUTTON_HOME|BUTTON_REL, BUTTON_HOME},
{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)
{
#if LCD_PIXELFORMAT == VERTICAL_PACKING
-#if (CONFIG_CPU == SH7034) && (LCD_DEPTH == 1)
- asm (
- "mov #0,r4 \n" /* x = 0 */
- "mova .su_shifttbl,r0 \n" /* calculate jump destination for */
- "mov.b @(r0,%[cnt]),%[cnt] \n" /* shift amount from table */
- "bra .su_cloop \n" /* skip table */
- "add r0,%[cnt] \n"
-
- ".align 2 \n"
- ".su_shifttbl: \n" /* shift jump offset table */
- ".byte .su_shift0 - .su_shifttbl \n"
- ".byte .su_shift1 - .su_shifttbl \n"
- ".byte .su_shift2 - .su_shifttbl \n"
- ".byte .su_shift3 - .su_shifttbl \n"
- ".byte .su_shift4 - .su_shifttbl \n"
- ".byte .su_shift5 - .su_shifttbl \n"
- ".byte .su_shift6 - .su_shifttbl \n"
- ".byte .su_shift7 - .su_shifttbl \n"
-
- ".su_cloop: \n" /* repeat for every column */
- "mov %[addr],r2 \n" /* get start address */
- "mov #0,r3 \n" /* current_row = 0 */
- "mov #0,r1 \n" /* fill with zero */
-
- ".su_iloop: \n" /* repeat for all rows */
- "sub %[wide],r2 \n" /* address -= width */
- "mov.b @r2,r0 \n" /* get data byte */
- "shll8 r1 \n" /* old data to 2nd byte */
- "extu.b r0,r0 \n" /* extend unsigned */
- "or r1,r0 \n" /* combine old data */
- "jmp @%[cnt] \n" /* jump into shift "path" */
- "extu.b r0,r1 \n" /* store data for next round */
-
- ".su_shift6: \n" /* shift right by 0..7 bits */
- "shll2 r0 \n"
- "bra .su_shift0 \n"
- "shlr8 r0 \n"
- ".su_shift4: \n"
- "shlr2 r0 \n"
- ".su_shift2: \n"
- "bra .su_shift0 \n"
- "shlr2 r0 \n"
- ".su_shift7: \n"
- "shlr2 r0 \n"
- ".su_shift5: \n"
- "shlr2 r0 \n"
- ".su_shift3: \n"
- "shlr2 r0 \n"
- ".su_shift1: \n"
- "shlr r0 \n"
- ".su_shift0: \n"
-
- "mov.b r0,@r2 \n" /* store data */
- "add #1,r3 \n" /* current_row++ */
- "cmp/hi r3,%[rows] \n" /* current_row < bheight - shift ? */
- "bt .su_iloop \n"
-
- "add #1,%[addr] \n" /* start_address++ */
- "add #1,r4 \n" /* x++ */
- "cmp/hi r4,%[wide] \n" /* x < width ? */
- "bt .su_cloop \n"
- : /* outputs */
- : /* inputs */
- [addr]"r"(rb->lcd_framebuffer + blocklen * LCD_FBWIDTH),
- [wide]"r"(LCD_FBWIDTH),
- [rows]"r"(blocklen),
- [cnt] "r"(bitcount)
- : /* clobbers */
- "r0", "r1", "r2", "r3", "r4"
- );
-#elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
+#if defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
asm (
"move.l %[wide],%%d3\n" /* columns = width */
@@ -590,76 +520,7 @@ void xlcd_scroll_down(int count)
{
#if LCD_PIXELFORMAT == VERTICAL_PACKING
-#if (CONFIG_CPU == SH7034) && (LCD_DEPTH == 1)
- asm (
- "mov #0,r4 \n" /* x = 0 */
- "mova .sd_shifttbl,r0 \n" /* calculate jump destination for */
- "mov.b @(r0,%[cnt]),%[cnt] \n" /* shift amount from table */
- "bra .sd_cloop \n" /* skip table */
- "add r0,%[cnt] \n"
-
- ".align 2 \n"
- ".sd_shifttbl: \n" /* shift jump offset table */
- ".byte .sd_shift0 - .sd_shifttbl \n"
- ".byte .sd_shift1 - .sd_shifttbl \n"
- ".byte .sd_shift2 - .sd_shifttbl \n"
- ".byte .sd_shift3 - .sd_shifttbl \n"
- ".byte .sd_shift4 - .sd_shifttbl \n"
- ".byte .sd_shift5 - .sd_shifttbl \n"
- ".byte .sd_shift6 - .sd_shifttbl \n"
- ".byte .sd_shift7 - .sd_shifttbl \n"
-
- ".sd_cloop: \n" /* repeat for every column */
- "mov %[addr],r2 \n" /* get start address */
- "mov #0,r3 \n" /* current_row = 0 */
- "mov #0,r1 \n" /* fill with zero */
-
- ".sd_iloop: \n" /* repeat for all rows */
- "shlr8 r1 \n" /* shift right to get residue */
- "mov.b @r2,r0 \n" /* get data byte */
- "jmp @%[cnt] \n" /* jump into shift "path" */
- "extu.b r0,r0 \n" /* extend unsigned */
-
- ".sd_shift6: \n" /* shift left by 0..7 bits */
- "shll8 r0 \n"
- "bra .sd_shift0 \n"
- "shlr2 r0 \n"
- ".sd_shift4: \n"
- "shll2 r0 \n"
- ".sd_shift2: \n"
- "bra .sd_shift0 \n"
- "shll2 r0 \n"
- ".sd_shift7: \n"
- "shll2 r0 \n"
- ".sd_shift5: \n"
- "shll2 r0 \n"
- ".sd_shift3: \n"
- "shll2 r0 \n"
- ".sd_shift1: \n"
- "shll r0 \n"
- ".sd_shift0: \n"
-
- "or r0,r1 \n" /* combine with last residue */
- "mov.b r1,@r2 \n" /* store data */
- "add %[wide],r2 \n" /* address += width */
- "add #1,r3 \n" /* current_row++ */
- "cmp/hi r3,%[rows] \n" /* current_row < bheight - shift ? */
- "bt .sd_iloop \n"
-
- "add #1,%[addr] \n" /* start_address++ */
- "add #1,r4 \n" /* x++ */
- "cmp/hi r4,%[wide] \n" /* x < width ? */
- "bt .sd_cloop \n"
- : /* outputs */
- : /* inputs */
- [addr]"r"(rb->lcd_framebuffer + blockcount * LCD_FBWIDTH),
- [wide]"r"(LCD_WIDTH),
- [rows]"r"(blocklen),
- [cnt] "r"(bitcount)
- : /* clobbers */
- "r0", "r1", "r2", "r3", "r4"
- );
-#elif defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
+#if defined(CPU_COLDFIRE) && (LCD_DEPTH == 2)
asm (
"move.l %[wide],%%d3\n" /* columns = width */
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)
switch (button)
{
case ACTION_WPS_BROWSE:
-#if CONFIG_KEYPAD == ONDIO_PAD
- /* ondio doesn't have ACTION_WPS_MENU,
- so use ACTION_WPS_BROWSE for menu */
- ret = LRC_GOTO_MENU;
- break;
-#endif
case ACTION_WPS_STOP:
save_changes();
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))
DIRS = .
ifndef APP_TYPE
-ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET)))))
- LDS := archos.lds
- OUTPUT = $(OUTDIR)/lua.ovl
-else ## iRiver/iPod/... targets
LDS := ../plugin.lds
OUTPUT = $(OUTDIR)/lua.rock
-endif
else ## simulators
OUTPUT = $(OUTDIR)/lua.rock
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
ifndef APP_TYPE
-ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET)))))
- ### lowmem targets
- ROCKS += $(LUA_BUILDDIR)/lua.ovl
- LUA_OUTLDS = $(LUA_BUILDDIR)/lua.link
- LUA_OVLFLAGS = -T$(LUA_OUTLDS) -Wl,--gc-sections -Wl,-Map,$(basename $@).map
-else
- ### all other targets
ROCKS += $(LUA_BUILDDIR)/lua.rock
-endif
else
### simulator
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 @@
* from Lua in its stack in direct order (the first argument is pushed first). To return values to Lua,
* a C function just pushes them onto the stack, in direct order (the first result is pushed first),
* and returns the number of results. Any other value in the stack below the results will be properly
- * discarded by Lua. Like a Lua function, a C function called by Lua can also return many results.
+ * discarded by Lua. Like a Lua function, a C function called by Lua can also return many results.
*
* When porting new functions, don't forget to check rocklib_aux.pl whether it automatically creates
* wrappers for the function and if so, add the function names to @forbidden_functions. This is to
@@ -487,8 +487,7 @@ RB_WRAP(sound)
lua_pushstring (L, rb->sound_unit(setting));
return 1;
break;
-#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \
- (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL)
+#if ((CONFIG_CODEC == SWCODEC) && defined (HAVE_PITCHCONTROL))
case SOUND_SET_PITCH:
rb->sound_set_pitch(setting);
return 1;/*nil*/
@@ -496,7 +495,7 @@ RB_WRAP(sound)
#endif
case SOUND_VAL2PHYS:
value = luaL_checkint(L, 3);
- result = rb->sound_val2phys(setting, value);
+ result = rb->sound_val2phys(setting, value);
break;
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 {
};
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-# define MINESWP_LEFT BUTTON_LEFT
-# define MINESWP_RIGHT BUTTON_RIGHT
-# define MINESWP_UP BUTTON_UP
-# define MINESWP_DOWN BUTTON_DOWN
-# define MINESWP_QUIT BUTTON_OFF
-# define MINESWP_TOGGLE BUTTON_ON
-# define MINESWP_TOGGLE2 BUTTON_F1
-# define MINESWP_DISCOVER BUTTON_PLAY
-# define MINESWP_DISCOVER2 BUTTON_F2
-# define MINESWP_INFO BUTTON_F3
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-# define MINESWP_LEFT BUTTON_LEFT
-# define MINESWP_RIGHT BUTTON_RIGHT
-# define MINESWP_UP BUTTON_UP
-# define MINESWP_DOWN BUTTON_DOWN
-# define MINESWP_QUIT BUTTON_OFF
-# define MINESWP_TOGGLE_PRE BUTTON_MENU
-# define MINESWP_TOGGLE (BUTTON_MENU | BUTTON_REL)
-# define MINESWP_DISCOVER (BUTTON_MENU | BUTTON_REPEAT)
-# define MINESWP_INFO (BUTTON_MENU | BUTTON_OFF)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
# define MINESWP_LEFT BUTTON_LEFT
# define MINESWP_RIGHT BUTTON_RIGHT
# 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 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2003 Pierre Delore
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "plugin.h"
-#include "lib/pluginlib_exit.h"
-
-/* NIM game for the player
-
-Rules of nim game
------------------
-There are 21 matches.
-Two players (you and the cpu) alternately pick a certain number of matches and the one,
-who takes the last match, loses.
-
-
-History:
--------
-V1.0 : 2003-07-22
- First release of the game
-V1.1 : 2003-07-22
- I Change the patterns definition in order to have a clean code
-V1.2 : 2003-07-30
- Patch from JB that change:
- . the win and lose message
- . the BUTTON_STOP code
- . Add a test
- I suppress the exit variable
- I suppress or translates the comments which were in French
- I put min=1 at the of the main loop ( When there are 21 matches you can decide not to
- take a match. Later you are obliged to take at least one.)
-*/
-
-
-
-/*Pattern for the game*/
-static unsigned char smile[]={0x00, 0x11, 0x04, 0x04, 0x00, 0x11, 0x0E}; /* :-) */
-static unsigned char cry[] ={0x00, 0x11, 0x04, 0x04, 0x00, 0x0E, 0x11}; /* :-( */
-static unsigned char pattern3[]={0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15}; /*3 parts*/
-static unsigned char pattern2[]={0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14}; /*2 parts*/
-static unsigned char pattern1[]={0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10}; /*1 part*/
-
-static unsigned long hsmile,hcry,h1,h2; /*Handle for the new pattern*/
-
-static bool end; /*If true game is finished*/
-
-/*Display that the action it's impossible*/
-static void impossible(void)
-{
- rb->lcd_puts(0,1,"Impossible!");
- rb->lcd_update();
- rb->sleep(HZ);
- return;
-}
-
-/*Display that the CPU lose :) */
-static void lose(void)
-{
- rb->lcd_define_pattern(hsmile,smile);
- rb->lcd_puts(0,1,"You Win!!");
- rb->lcd_putc(8,1,hsmile);
- rb->lcd_update();
- end=true;
- rb->sleep(HZ*2);
- return;
-}
-
-
-/* Display that the CPU win :( */
-static void win(void)
-{
- rb->lcd_define_pattern(hcry,cry);
- rb->lcd_puts(0,1,"You Lose!!");
- rb->lcd_putc(9,1,hcry);
- rb->lcd_update();
- end=true;
- rb->sleep(HZ*2);
- return;
-}
-
-
-/*Display the first line*/
-static void display_first_line(int x)
-{
- int i;
-
- rb->lcd_putsf(0,0," =%d",x);
-
- rb->lcd_define_pattern(h1,pattern3);
- for (i=0;i<x/3;i++)
- rb->lcd_putc(i,0,h1);
-
- if (x%3==2)
- {
- rb->lcd_define_pattern(h2,pattern2);
- rb->lcd_putc(i,0,h2);
- }
- if (x%3==1)
- {
- rb->lcd_define_pattern(h2,pattern1);
- rb->lcd_putc(i,0,h2);
- }
-}
-
-/* Call when the program end */
-static void nim_exit(void)
-{
- /*Restore the old pattern*/
- rb->lcd_unlock_pattern(h1);
- rb->lcd_unlock_pattern(h2);
- rb->lcd_unlock_pattern(hsmile);
- rb->lcd_unlock_pattern(hcry);
-
- /*Clear the screen*/
- rb->lcd_clear_display();
- rb->lcd_update();
-}
-
-/* this is the plugin entry point */
-enum plugin_status plugin_start(const void* parameter)
-{
- int y,z,button;
- int x,v,min;
- bool ok;
- bool go;
- atexit(nim_exit);
-
- /* if you don't use the parameter, you can do like
- this to avoid the compiler warning about it */
- (void)parameter;
-
- /*Get the pattern handle*/
- h1=rb->lcd_get_locked_pattern();
- h2=rb->lcd_get_locked_pattern();
- hcry=rb->lcd_get_locked_pattern();
- hsmile=rb->lcd_get_locked_pattern();
-
-
- rb->splash(HZ, "NIM V1.2");
- rb->lcd_clear_display();
-
- /* Main loop */
- while (1)
- {
- /* Init */
- x=21;
- v=1;
- y=1;
- end=false;
- min=0;
-
- /*Empty the event queue*/
- rb->button_clear_queue();
-
- /* Game loop */
- while(end!=true)
- {
- do
- {
- ok=1;
- y=1;
- display_first_line(x);
-
- rb->lcd_putsf(0,1,"[%d..%d]?=%d",min,v,y);
- rb->lcd_update();
-
- go=false;
- while (!go)
- {
- button = rb->button_get(true);
- switch ( button )
- {
- case BUTTON_STOP|BUTTON_REL:
- go = true;
- return PLUGIN_OK;
- break;
-
- case BUTTON_PLAY|BUTTON_REL:
- go=true;
- break;
-
- case BUTTON_LEFT|BUTTON_REL:
- go=false;
- if (y>min)
- y--;
- break;
-
- case BUTTON_RIGHT|BUTTON_REL:
- go=false;
- if (y<v)
- y++;
- break;
-
- default:
- exit_on_usb(button);
- break;
- }
- display_first_line(x);
- rb->lcd_putsf(0,1,"[%d..%d]?=%d",min,v,y);
- rb->lcd_update();
- }
-
- if ( (y==0) && (x<21))
- {
- impossible();
- ok=false;
- }
- else
- {
- if (y!=0) /*If y=0 and x=21 jump to CPU code */
- {
- if ((y>v) || (y>x))
- {
- impossible();
- ok=false;
- }
- if (y-x==0)
- win();
- else
- {
- v=y*2;
- x-=y;
- }
- }
- }
- }
- while (ok==false);
-
- display_first_line(x);
-
- /*CPU*/
- if (x==1)
- lose();
- else
- if (x==2)
- win();
- y=0;
- if (end==false)
- {
- for (z=v;z>=1;z--)
- {
- if (x-z==1)
- y=z;
- }
- if (y<=0)
- {
- for(z=v;z>=1;z--)
- {
- if(x-(z*3)==2)
- y=z;
- }
- if ((y==0) && (x>14))
- y=v;
- if (y==0)
- y=1;
- }
- v=y*2;
- x-=y;
- rb->lcd_putsf(0,1,"I take=%d",y);
- rb->lcd_update();
- rb->sleep(HZ);
- }
- if ((x==1)&&(!end))
- win();
- min=1;
- }
- }
- return PLUGIN_OK;
-}
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 @@
#include "lib/osd.h"
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define OSCILLOSCOPE_QUIT BUTTON_OFF
-#define OSCILLOSCOPE_DRAWMODE BUTTON_F1
-#define OSCILLOSCOPE_ADVMODE BUTTON_F2
-#define OSCILLOSCOPE_ORIENTATION BUTTON_F3
-#define OSCILLOSCOPE_PAUSE BUTTON_PLAY
-#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
-#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
-#define OSCILLOSCOPE_VOL_UP BUTTON_UP
-#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define OSCILLOSCOPE_QUIT BUTTON_OFF
-#define OSCILLOSCOPE_DRAWMODE_PRE BUTTON_MENU
-#define OSCILLOSCOPE_DRAWMODE (BUTTON_MENU | BUTTON_REL)
-#define OSCILLOSCOPE_ADVMODE (BUTTON_MENU | BUTTON_RIGHT)
-#define OSCILLOSCOPE_ORIENTATION (BUTTON_MENU | BUTTON_LEFT)
-#define OSCILLOSCOPE_PAUSE (BUTTON_MENU | BUTTON_OFF)
-#define OSCILLOSCOPE_SPEED_UP BUTTON_RIGHT
-#define OSCILLOSCOPE_SPEED_DOWN BUTTON_LEFT
-#define OSCILLOSCOPE_VOL_UP BUTTON_UP
-#define OSCILLOSCOPE_VOL_DOWN BUTTON_DOWN
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define OSCILLOSCOPE_QUIT BUTTON_OFF
#define OSCILLOSCOPE_DRAWMODE BUTTON_SELECT
#define OSCILLOSCOPE_ADVMODE BUTTON_MODE
@@ -934,9 +911,6 @@ static void get_peaks(int *left, int *right)
#elif defined (SIMULATOR)
*left = rand() % 0x8000;
*right = rand() % 0x8000;
-#elif (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- *left = rb->mas_codec_readreg(0xC);
- *right = rb->mas_codec_readreg(0xD);
#else
*left = 0;
*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 @@
#define HOLE 6
#define PLAYER 7
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define PEGBOX_SELECT BUTTON_ON
-#define PEGBOX_QUIT BUTTON_OFF
-#define PEGBOX_RESTART BUTTON_F2
-#define PEGBOX_LVL_UP BUTTON_F1
-#define PEGBOX_LVL_DOWN BUTTON_F3
-#define PEGBOX_UP BUTTON_UP
-#define PEGBOX_DOWN BUTTON_DOWN
-#define PEGBOX_RIGHT BUTTON_RIGHT
-#define PEGBOX_LEFT BUTTON_LEFT
-
-#define SELECT_TEXT "ON"
-#define QUIT_TEXT "OFF"
-#define RESTART_TEXT "F2"
-#define LVL_UP_TEXT "F1"
-#define LVL_DOWN_TEXT "F3"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define PEGBOX_SELECT BUTTON_OFF
-#define PEGBOX_QUIT (BUTTON_MENU | BUTTON_LEFT)
-#define PEGBOX_RESTART (BUTTON_MENU | BUTTON_RIGHT)
-#define PEGBOX_LVL_UP (BUTTON_MENU | BUTTON_UP)
-#define PEGBOX_LVL_DOWN (BUTTON_MENU | BUTTON_DOWN)
-#define PEGBOX_UP BUTTON_UP
-#define PEGBOX_DOWN BUTTON_DOWN
-#define PEGBOX_RIGHT BUTTON_RIGHT
-#define PEGBOX_LEFT BUTTON_LEFT
-
-#define SELECT_TEXT "OFF"
-#define QUIT_TEXT "M+LEFT"
-#define RESTART_TEXT "M+RIGHT"
-#define LVL_UP_TEXT "M+UP"
-#define LVL_DOWN_TEXT "M+DOWN"
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define PEGBOX_SELECT BUTTON_SELECT
#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[] =
{ACTION_NONE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT},
{ACTION_NONE, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT},
#endif
-#if CONFIG_KEYPAD == ONDIO_PAD
- {PF_SELECT, BUTTON_UP|BUTTON_REL, BUTTON_UP},
- {PF_CONTEXT, BUTTON_UP|BUTTON_REPEAT, BUTTON_UP},
- {ACTION_NONE, BUTTON_UP, BUTTON_NONE},
- {ACTION_NONE, BUTTON_DOWN, BUTTON_NONE},
- {ACTION_NONE, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE},
-#endif
LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_PLUGIN|1)
};
#endif /* !USE_CORE_PREVNEXT */
@@ -147,8 +140,7 @@ const struct button_mapping pf_context_buttons[] =
{PF_QUIT, BUTTON_RC_REC, BUTTON_NONE},
#elif CONFIG_KEYPAD == MEIZU_M6SL_PAD
{PF_QUIT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU},
-#elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD || \
- CONFIG_KEYPAD == RECORDER_PAD || CONFIG_KEYPAD == ONDIO_PAD
+#elif CONFIG_KEYPAD == IRIVER_H100_PAD || CONFIG_KEYPAD == IRIVER_H300_PAD
{PF_QUIT, BUTTON_OFF, BUTTON_NONE},
#elif CONFIG_KEYPAD == PBELL_VIBE500_PAD
{PF_QUIT, BUTTON_REC, BUTTON_NONE},
@@ -691,13 +683,7 @@ static inline PFreal fdiv(PFreal num, PFreal den)
#define fabs(a) (a < 0 ? -a : a)
#define fbound(min,val,max) (fmax((min),fmin((max),(val))))
-#if CONFIG_CPU == SH7034
-/* 16*16->32 bit multiplication is a single instrcution on the SH1 */
-#define MULUQ(a, b) ((uint32_t) (((uint16_t) (a)) * ((uint16_t) (b))))
-#else
#define MULUQ(a, b) ((a) * (b))
-#endif
-
#if 0
#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))
OTHER_SRC += $(PICTUREFLOW_SRC)
ifndef APP_TYPE
-ifneq (,$(strip $(foreach tgt,RECORDER ONDIO,$(findstring $(tgt),$(TARGET)))))
- ### lowmem targets
- ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.ovl
- PICTUREFLOW_OUTLDS = $(PICTUREFLOW_OBJDIR)/picutreflow.link
- PICTUREFLOW_OVLFLAGS = -T$(PICTUREFLOW_OUTLDS) -Wl,--gc-sections -Wl,-Map,$(basename $@).map
-else
- ### all other targets
ROCKS += $(PICTUREFLOW_OBJDIR)/pictureflow.rock
-endif
else
### simulator
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 @@
OUTPUT_FORMAT(elf32-m68k)
#elif defined(CPU_ARM)
OUTPUT_FORMAT(elf32-littlearm)
-#elif defined(CPU_SH)
-OUTPUT_FORMAT(elf32-sh)
#elif defined(CPU_MIPS)
OUTPUT_FORMAT(elf32-littlemips)
#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 @@
#define MOVE_STEP LCD_HEIGHT / 32 /* move pad this many steps up/down each move */
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define PONG_QUIT BUTTON_OFF
-#define PONG_PAUSE BUTTON_ON
-#define PONG_LEFT_UP BUTTON_F1
-#define PONG_LEFT_DOWN BUTTON_LEFT
-#define PONG_RIGHT_UP BUTTON_F3
-#define PONG_RIGHT_DOWN BUTTON_RIGHT
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define PONG_QUIT BUTTON_OFF
-#define PONG_PAUSE BUTTON_RIGHT
-#define PONG_LEFT_UP BUTTON_LEFT
-#define PONG_LEFT_DOWN BUTTON_MENU
-#define PONG_RIGHT_UP BUTTON_UP
-#define PONG_RIGHT_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == IRIVER_H100_PAD
+#if CONFIG_KEYPAD == IRIVER_H100_PAD
#define PONG_QUIT BUTTON_OFF
#define PONG_LEFT_UP BUTTON_UP
#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 @@
#define GAME_FILE PLUGIN_GAMES_DIR "/reversi.rev"
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define REVERSI_BUTTON_QUIT BUTTON_OFF
-#define REVERSI_BUTTON_UP BUTTON_UP
-#define REVERSI_BUTTON_DOWN BUTTON_DOWN
-#define REVERSI_BUTTON_LEFT BUTTON_LEFT
-#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
-#define REVERSI_BUTTON_MAKE_MOVE BUTTON_PLAY
-#define REVERSI_BUTTON_MENU BUTTON_F1
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define REVERSI_BUTTON_QUIT BUTTON_OFF
-#define REVERSI_BUTTON_UP BUTTON_UP
-#define REVERSI_BUTTON_DOWN BUTTON_DOWN
-#define REVERSI_BUTTON_LEFT BUTTON_LEFT
-#define REVERSI_BUTTON_RIGHT BUTTON_RIGHT
-#define REVERSI_BUTTON_MAKE_MOVE BUTTON_MENU
-#define REVERSI_BUTTON_MAKE_MOVE_SHORTPRESS
-#define REVERSI_BUTTON_MENU_LONGPRESS
-#define REVERSI_BUTTON_MENU BUTTON_MENU
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define REVERSI_BUTTON_QUIT BUTTON_OFF
#define REVERSI_BUTTON_UP BUTTON_UP
#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 @@
#define ROCKBLOX_RC_OFF BUTTON_RC_STOP
-#elif CONFIG_KEYPAD == RECORDER_PAD
-
-#define ROCKBLOX_OFF BUTTON_OFF
-#define ROCKBLOX_ROTATE_CCW BUTTON_UP
-#define ROCKBLOX_ROTATE_CW BUTTON_PLAY
-#define ROCKBLOX_DOWN BUTTON_DOWN
-#define ROCKBLOX_LEFT BUTTON_LEFT
-#define ROCKBLOX_RIGHT BUTTON_RIGHT
-#define ROCKBLOX_DROP BUTTON_ON
-#define ROCKBLOX_RESTART BUTTON_F1
-
-#elif CONFIG_KEYPAD == PLAYER_PAD
-
-#define ROCKBLOX_OFF_PRE BUTTON_STOP
-#define ROCKBLOX_OFF (BUTTON_STOP|BUTTON_REL)
-#define ROCKBLOX_ROTATE_CCW BUTTON_PLAY
-#define ROCKBLOX_ROTATE_CW (BUTTON_ON|BUTTON_PLAY)
-#define ROCKBLOX_DOWN BUTTON_MENU
-#define ROCKBLOX_LEFT BUTTON_LEFT
-#define ROCKBLOX_RIGHT BUTTON_RIGHT
-#define ROCKBLOX_DROP_PRE BUTTON_ON
-#define ROCKBLOX_DROP (BUTTON_ON|BUTTON_REL)
-#define ROCKBLOX_RESTART (BUTTON_STOP|BUTTON_MENU)
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-
-#define ROCKBLOX_OFF_PRE BUTTON_OFF
-#define ROCKBLOX_OFF (BUTTON_OFF|BUTTON_REL)
-#define ROCKBLOX_ROTATE_CCW BUTTON_UP
-#define ROCKBLOX_ROTATE_CW (BUTTON_MENU|BUTTON_UP)
-#define ROCKBLOX_DOWN BUTTON_DOWN
-#define ROCKBLOX_LEFT BUTTON_LEFT
-#define ROCKBLOX_RIGHT BUTTON_RIGHT
-#define ROCKBLOX_DROP_PRE BUTTON_MENU
-#define ROCKBLOX_DROP (BUTTON_MENU|BUTTON_REL)
-#define ROCKBLOX_RESTART (BUTTON_OFF|BUTTON_MENU)
-
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
#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 @@
-/***************************************************************************
-* __________ __ ___.
-* Open \______ \ ____ ____ | | _\_ |__ _______ ___
-* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
-* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
-* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
-* \/ \/ \/ \/ \/
-* $Id$
-*
-* Plugin for reprogramming only the second image in Flash ROM.
-* !!! DON'T MESS WITH THIS CODE UNLESS YOU'RE ABSOLUTELY SURE WHAT YOU DO !!!
-*
-* Copyright (C) 2003 Jörg Hohensohn aka [IDC]Dragon
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-* KIND, either express or implied.
-*
-****************************************************************************/
-#include "plugin.h"
-
-/* define DUMMY if you only want to "play" with the UI, does no harm */
-/* #define DUMMY */
-
-#define LATEST_BOOTLOADER_VERSION 3 /* update this with the bootloader */
-
-#ifndef UINT8
-#define UINT8 unsigned char
-#endif
-
-#ifndef UINT16
-#define UINT16 unsigned short
-#endif
-
-#ifndef UINT32
-#define UINT32 unsigned long
-#endif
-
-/* hard-coded values */
-static volatile UINT8* FB = (UINT8*)0x02000000; /* Flash base address */
-#define SECTORSIZE 4096 /* size of one flash sector */
-
-#define ROCKBOX_DEST 0x09000000
-#define ROCKBOX_EXEC 0x09000200
-#define BOOT_VERS_ADR 0xFA /* position of bootloader version value in Flash */
-#define FW_VERS_ADR 0xFE /* position of firmware version value in Flash */
-#define UCL_HEADER 26 /* size of the header generated by uclpack */
-
-#if CONFIG_KEYPAD == ONDIO_PAD /* limited keypad */
-#define KEY1 BUTTON_LEFT
-#define KEY2 BUTTON_UP
-#define KEYNAME1 "Left"
-#define KEYNAME2 "Up"
-#else /* recorder keypad */
-#define KEY1 BUTTON_F1
-#define KEY2 BUTTON_F2
-#define KEYNAME1 "F1"
-#define KEYNAME2 "F2"
-#endif
-
-typedef struct
-{
- UINT32 destination; /* address to copy it to */
- UINT32 size; /* how many bytes of payload (to the next header) */
- UINT32 execute; /* entry point */
- UINT32 flags; /* uncompressed or compressed */
- /* end of header, now comes the payload */
-} tImageHeader;
-
-/* result of the CheckFirmwareFile() function */
-typedef enum
-{
- eOK = 0,
- eFileNotFound, /* errors from here on */
- eTooBig,
- eTooSmall,
- eReadErr,
- eNotUCL,
- eWrongAlgorithm,
- eMultiBlocks,
- eBadRomLink
-} tCheckResult;
-
-typedef struct
-{
- UINT8 manufacturer;
- UINT8 id;
- int size;
- char name[32];
-} tFlashInfo;
-
-static UINT8* sector; /* better not place this on the stack... */
-
-/***************** Flash Functions *****************/
-
-
-/* read the manufacturer and device ID */
-static bool ReadID(volatile UINT8* pBase, UINT8* pManufacturerID,
- UINT8* pDeviceID)
-{
- UINT8 not_manu, not_id; /* read values before switching to ID mode */
- UINT8 manu, id; /* read values when in ID mode */
-
- pBase = (UINT8*)((UINT32)pBase & 0xFFF80000); /* round down to 512k align,
- to make sure */
-
- not_manu = pBase[0]; /* read the normal content */
- not_id = pBase[1]; /* should be 'A' (0x41) and 'R' (0x52) from the
- "ARCH" marker */
-
- pBase[0x5555] = 0xAA; /* enter command mode */
- pBase[0x2AAA] = 0x55;
- pBase[0x5555] = 0x90; /* ID command */
- rb->sleep(HZ/50); /* Atmel wants 20ms pause here */
-
- manu = pBase[0];
- id = pBase[1];
-
- pBase[0] = 0xF0; /* reset flash (back to normal read mode) */
- rb->sleep(HZ/50); /* Atmel wants 20ms pause here */
-
- /* I assume success if the obtained values are different from
- the normal flash content. This is not perfectly bulletproof, they
- could theoretically be the same by chance, causing us to fail. */
- if (not_manu != manu || not_id != id) /* a value has changed */
- {
- *pManufacturerID = manu; /* return the results */
- *pDeviceID = id;
- return true; /* success */
- }
- return false; /* fail */
-}
-
-/* erase the sector which contains the given address */
-static bool EraseSector(volatile UINT8* pAddr)
-{
-#ifdef DUMMY
- (void)pAddr; /* prevents warning */
- return true;
-#else
- volatile UINT8* pBase =
- (UINT8*)((UINT32)pAddr & 0xFFF80000); /* round down to 512k align */
- unsigned timeout = 43000; /* the timeout loop should be no less than
- 25ms */
-
- pBase[0x5555] = 0xAA; /* enter command mode */
- pBase[0x2AAA] = 0x55;
- pBase[0x5555] = 0x80; /* erase command */
- pBase[0x5555] = 0xAA; /* enter command mode */
- pBase[0x2AAA] = 0x55;
- *pAddr = 0x30; /* erase the sector */
-
- /* I counted 7 instructions for this loop -> min. 0.58 us per round
- Plus memory waitstates it will be much more, gives margin */
- while (*pAddr != 0xFF && --timeout); /* poll for erased */
-
- return (timeout != 0);
-#endif
-}
-
-/* address must be in an erased location */
-static inline bool ProgramByte(volatile UINT8* pAddr, UINT8 data)
-{
-#ifdef DUMMY
- (void)pAddr; /* prevents warnings */
- (void)data;
- return true;
-#else
- unsigned timeout = 35; /* the timeout loop should be no less than 20us */
-
- if (~*pAddr & data) /* just a safety feature, not really necessary */
- return false; /* can't set any bit from 0 to 1 */
-
- FB[0x5555] = 0xAA; /* enter command mode */
- FB[0x2AAA] = 0x55;
- FB[0x5555] = 0xA0; /* byte program command */
-
- *pAddr = data;
-
- /* I counted 7 instructions for this loop -> min. 0.58 us per round
- Plus memory waitstates it will be much more, gives margin */
- while (*pAddr != data && --timeout); /* poll for programmed */
-
- return (timeout != 0);
-#endif
-}
-
-/* this returns true if supported and fills the info struct */
-static bool GetFlashInfo(tFlashInfo* pInfo)
-{
- rb->memset(pInfo, 0, sizeof(tFlashInfo));
-
- if (!ReadID(FB, &pInfo->manufacturer, &pInfo->id))
- return false;
-
- if (pInfo->manufacturer == 0xBF) /* SST */
- {
- if (pInfo->id == 0xD6)
- {
- pInfo->size = 256* 1024; /* 256k */
- rb->strcpy(pInfo->name, "SST39VF020");
- return true;
- }
- else if (pInfo->id == 0xD7)
- {
- pInfo->size = 512* 1024; /* 512k */
- rb->strcpy(pInfo->name, "SST39VF040");
- return true;
- }
- else
- return false;
- }
- return false;
-}
-
-
-/*********** Tool Functions ************/
-
-/* read a 32 bit value from memory, big endian */
-static UINT32 Read32(UINT8* pByte)
-{
- UINT32 value;
-
- value = (UINT32)pByte[0] << 24;
- value |= (UINT32)pByte[1] << 16;
- value |= (UINT32)pByte[2] << 8;
- value |= (UINT32)pByte[3];
-
- return value;
-}
-
-/* get the start address of the second image */
-static tImageHeader* GetSecondImage(void)
-{
- tImageHeader* pImage1;
- UINT32 pos = 0; /* default: not found */
- UINT32* pFlash = (UINT32*)FB;
-
- /* determine the first image position */
- pos = pFlash[2] + pFlash[3]; /* position + size of the bootloader
- = after it */
- pos = (pos + 3) & ~3; /* be sure it's 32 bit aligned */
- pImage1 = (tImageHeader*)pos;
-
- if (pImage1->destination != ROCKBOX_DEST ||
- pImage1->execute != ROCKBOX_EXEC)
- return 0; /* seems to be no Archos/Rockbox image in here */
-
- if (pImage1->size != 0)
- {
- /* success, we have a second image */
- pos = (UINT32)pImage1 + sizeof(tImageHeader) + pImage1->size;
- if (((pos + SECTORSIZE-1) & ~(SECTORSIZE-1)) != pos)
- { /* not sector-aligned */
- pos = 0; /* sanity check failed */
- }
- }
-
- return (tImageHeader*)pos;
-}
-
-/* return bootloader version */
-static inline unsigned BootloaderVersion(void)
-{
- return FB[BOOT_VERS_ADR];
-}
-
-/*********** Image File Functions ************/
-
-/* so far, only compressed images in UCL NRV algorithm 2e supported */
-tCheckResult CheckImageFile(char* filename, int space,
- tImageHeader* pHeader, UINT8* pos)
-{
- int i;
- int fd;
- int filesize; /* size info */
-
- int fileread = 0; /* total size as read from the file */
- int read; /* how many for this sector */
-
- /* magic file header for compressed files */
- static const UINT8 magic[8] = { 0x00,0xe9,0x55,0x43,0x4c,0xff,0x01,0x1a };
- UINT8 ucl_header[UCL_HEADER];
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- return eFileNotFound;
-
- filesize = rb->filesize(fd);
- if (filesize - (int)sizeof(ucl_header) - 8 > space)
- {
- rb->close(fd);
- return eTooBig;
- }
- else if (filesize < 10000) /* give it some reasonable lower limit */
- {
- rb->close(fd);
- return eTooSmall;
- }
-
- /* do some sanity checks */
-
- read = rb->read(fd, ucl_header, sizeof(ucl_header));
- fileread += read;
- if (read != sizeof(ucl_header))
- {
- rb->close(fd);
- return eReadErr;
- }
-
- /* compare the magic header */
- for (i=0; i<8; i++)
- {
- if (ucl_header[i] != magic[i])
- {
- rb->close(fd);
- return eNotUCL;
- }
- }
-
- pHeader->size = Read32(ucl_header + 22); /* compressed size */
- if (pHeader->size != filesize - sizeof(ucl_header) - 8)
- {
- rb->close(fd);
- return eMultiBlocks;
- }
-
- /* fill in the hardcoded defaults of the header */
- pHeader->destination = ROCKBOX_DEST;
- pHeader->execute = ROCKBOX_EXEC;
-
- if (Read32(ucl_header + 18) > pHeader->size) /* compare with uncompressed
- size */
- { /* compressed, normal case */
- pHeader->flags = 0x00000001; /* flags for UCL compressed */
-
- /* check for supported algorithm */
- if (ucl_header[12] != 0x2E)
- {
- rb->close(fd);
- return eWrongAlgorithm;
- }
- }
- else
- { /* uncompressed, either to be copied or run directly in flash */
- UINT32 reset_vector; /* image has to start with reset vector */
-
- pHeader->flags = 0x00000000; /* uncompressed */
-
- read = rb->read(fd, &reset_vector, sizeof(reset_vector));
- fileread += read;
- if (read != sizeof(reset_vector))
- {
- rb->close(fd);
- return eReadErr;
- }
- if (reset_vector >= (UINT32)FB
- && reset_vector < (UINT32)FB+512*1024) /* ROM address? */
- {
- /* assume in-place, executing directly in flash */
- pHeader->destination = (UINT32)(pos + sizeof(tImageHeader));
-
- /* for new RomBox, this isn't the reset vector,
- but the link address, for us to check the position */
- if(pHeader->destination != reset_vector) /* compare link addr. */
- {
- rb->close(fd);
- return eBadRomLink; /* not matching the start address */
- }
-
- /* read the now following reset vector */
- read = rb->read(fd, &reset_vector, sizeof(reset_vector));
- fileread += read;
- if (read != sizeof(reset_vector))
- {
- rb->close(fd);
- return eReadErr;
- }
- }
-
- pHeader->execute = reset_vector;
- }
-
- /* check if we can read the whole file */
- do
- {
- read = rb->read(fd, sector, SECTORSIZE);
- fileread += read;
- } while (read == SECTORSIZE);
-
- rb->close(fd);
-
- if (fileread != filesize)
- return eReadErr;
-
- return eOK;
-}
-
-
-/* returns the # of failures, 0 on success */
-static unsigned ProgramImageFile(char* filename, UINT8* pos,
- tImageHeader* pImageHeader,
- int start, int size)
-{
- int i;
- int fd;
- int read; /* how many for this sector */
- unsigned failures = 0;
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- return false;
-
- /* no error checking necessary here, we checked for minimum size
- already */
- rb->lseek(fd, start, SEEK_SET); /* go to start position */
-
- *(tImageHeader*)sector = *pImageHeader; /* copy header into sector
- buffer */
- read = rb->read(fd, sector + sizeof(tImageHeader),
- SECTORSIZE - sizeof(tImageHeader)); /* payload behind */
- size -= read;
- read += sizeof(tImageHeader); /* to be programmed, but not part of the
- file */
-
- do {
- if (!EraseSector(pos))
- {
- /* nothing we can do, let the programming count the errors */
- }
-
- for (i=0; i<read; i++)
- {
- if (!ProgramByte(pos + i, sector[i]))
- {
- failures++;
- }
- }
-
- pos += SECTORSIZE;
- read = rb->read(fd, sector, (size > SECTORSIZE) ? SECTORSIZE : size);
- /* payload for next sector */
- size -= read;
- } while (read > 0);
-
- rb->close(fd);
-
- return failures;
-}
-
-/* returns the # of failures, 0 on success */
-static unsigned VerifyImageFile(char* filename, UINT8* pos,
- tImageHeader* pImageHeader,
- int start, int size)
-{
- int i;
- int fd;
- int read; /* how many for this sector */
- unsigned failures = 0;
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- return false;
-
- /* no error checking necessary here, we checked for minimum size
- already */
- rb->lseek(fd, start, SEEK_SET); /* go to start position */
-
- *(tImageHeader*)sector = *pImageHeader; /* copy header into sector
- buffer */
- read = rb->read(fd, sector + sizeof(tImageHeader),
- SECTORSIZE - sizeof(tImageHeader)); /* payload behind */
-
- size -= read;
- read += sizeof(tImageHeader); /* to be programmed, but not part of the
- file */
-
- do
- {
- for (i=0; i<read; i++)
- {
- if (pos[i] != sector[i])
- {
- failures++;
- }
- }
-
- pos += SECTORSIZE;
- read = rb->read(fd, sector, (size > SECTORSIZE) ? SECTORSIZE : size);
- /* payload for next sector */
- size -= read;
- } while (read);
-
- rb->close(fd);
-
- return failures;
-}
-
-
-/***************** User Interface Functions *****************/
-
-static int WaitForButton(void)
-{
- int button;
-
- do
- {
- button = rb->button_get(true);
- } while (IS_SYSEVENT(button) || (button & BUTTON_REL));
-
- return button;
-}
-
-#ifdef HAVE_LCD_BITMAP
-/* helper for DoUserDialog() */
-static void ShowFlashInfo(tFlashInfo* pInfo, tImageHeader* pImageHeader)
-{
- char buf[32];
-
- if (!pInfo->manufacturer)
- {
- rb->lcd_puts_scroll(0, 0, "Flash: M=?? D=??");
- }
- else
- {
- if (pInfo->size)
- {
- rb->snprintf(buf, sizeof(buf), "Flash size: %d KB",
- pInfo->size / 1024);
- rb->lcd_puts_scroll(0, 0, buf);
- }
- else
- {
- rb->lcd_puts_scroll(0, 0, "Unsupported chip");
- }
-
- }
-
- if (pImageHeader)
- {
- rb->snprintf(buf, sizeof(buf), "Image at %d KB",
- ((UINT8*)pImageHeader - FB) / 1024);
- rb->lcd_puts_scroll(0, 1, buf);
- }
- else
- {
- rb->lcd_puts_scroll(0, 1, "No image found!");
- }
-}
-
-
-/* Kind of our main function, defines the application flow. */
-/* recorder version */
-static void DoUserDialog(char* filename)
-{
- tImageHeader ImageHeader;
- tFlashInfo FlashInfo;
- int button;
- int rc; /* generic return code */
- UINT32 space, aligned_size, true_size;
- UINT8* pos;
- size_t memleft;
- unsigned bl_version;
- bool show_greet = false;
-
- /* this can only work if Rockbox runs in DRAM, not flash ROM */
- if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */
- { /* we're running from flash */
- rb->splash(HZ*3, "Not from ROM");
- return; /* exit */
- }
-
- /* refuse to work if the power may fail meanwhile */
- if (!rb->battery_level_safe())
- {
- rb->splash(HZ*3, "Battery too low!");
- return; /* exit */
- }
-
- /* "allocate" memory */
- sector = rb->plugin_get_buffer(&memleft);
- if (memleft < SECTORSIZE) /* need buffer for a flash sector */
- {
- rb->splash(HZ*3, "Out of memory");
- return; /* exit */
- }
-
- rb->lcd_setfont(FONT_SYSFIXED);
-
- pos = (void*)GetSecondImage();
- rc = GetFlashInfo(&FlashInfo);
-
- ShowFlashInfo(&FlashInfo, (void*)pos);
- rb->lcd_update();
-
- if (FlashInfo.size == 0) /* no valid chip */
- {
- rb->splash(HZ*3, "Not flashable");
- return; /* exit */
- }
- else if (pos == 0)
- {
- rb->splash(HZ*3, "No image");
- return; /* exit */
- }
-
- bl_version = BootloaderVersion();
- /* Upgrade currently not recommended for FM and V2
- recorder due to bugs in V3 BootBox. (FS#12426) */
-#if !defined(ARCHOS_FMRECORDER) && !defined(ARCHOS_RECORDERV2)
- if (bl_version < LATEST_BOOTLOADER_VERSION)
- {
- rb->lcd_putsf(0, 0, "Bootloader V%d", bl_version);
- rb->lcd_puts(0, 1, "Hint: You're not ");
- rb->lcd_puts(0, 2, "using the latest ");
- rb->lcd_puts(0, 3, "bootloader. ");
- rb->lcd_puts(0, 4, "A full reflash is ");
- rb->lcd_puts(0, 5, "recommended. ");
- rb->lcd_puts(0, 6, "Press " KEYNAME1 " to ignore");
- rb->lcd_update();
-
- if (WaitForButton() != KEY1)
- {
- return;
- }
- rb->lcd_clear_display();
- }
-#endif
-
- rb->lcd_puts(0, show_greet ? 0 : 3, "Checking...");
- rb->lcd_update();
-
- space = FlashInfo.size - (pos-FB + sizeof(ImageHeader));
- /* size minus start */
-
- rc = CheckImageFile(filename, space, &ImageHeader, pos);
- if (rc != eOK)
- {
- rb->lcd_clear_display(); /* make room for error message */
- show_greet = true; /* verbose */
- }
-
- rb->lcd_puts(0, show_greet ? 0 : 3, "Checked:");
- switch (rc) {
- case eOK:
- rb->lcd_puts(0, show_greet ? 0 : 4, "File OK.");
- break;
- case eNotUCL:
- rb->lcd_puts(0, 1, "File not UCL ");
- rb->lcd_puts(0, 2, "compressed.");
- rb->lcd_puts(0, 3, "Use uclpack --2e");
- rb->lcd_puts(0, 4, " --10 rockbox.bin");
- break;
- case eWrongAlgorithm:
- rb->lcd_puts(0, 1, "Wrong algorithm");
- rb->lcd_puts(0, 2, "for compression.");
- rb->lcd_puts(0, 3, "Use uclpack --2e");
- rb->lcd_puts(0, 4, " --10 rockbox.bin");
- break;
- case eFileNotFound:
- rb->lcd_puts(0, 1, "File not found:");
- rb->lcd_puts_scroll(0, 2, filename);
- break;
- case eTooBig:
- rb->lcd_puts(0, 1, "File too big,");
- rb->lcd_puts(0, 2, "won't fit in chip.");
- if (bl_version < LATEST_BOOTLOADER_VERSION)
- {
- rb->lcd_puts(0, 3, "Upgrade bootloader");
- }
- break;
- case eTooSmall:
- rb->lcd_puts(0, 1, "File too small.");
- rb->lcd_puts(0, 2, "Incomplete?");
- break;
- case eReadErr:
- rb->lcd_puts(0, 1, "File read error.");
- break;
- case eMultiBlocks:
- rb->lcd_puts(0, 1, "File invalid.");
- rb->lcd_puts(0, 2, "Blocksize");
- rb->lcd_puts(0, 3, " too small?");
- break;
- case eBadRomLink:
- rb->lcd_puts(0, 1, "Bootloader not");
- rb->lcd_puts(0, 2, "compatible with");
- rb->lcd_puts(0, 3, "RomBox. Start");
- rb->lcd_puts(0, 4, "address mismatch.");
- break;
- default:
- rb->lcd_puts(0, 1, "Check failed.");
- break;
- }
-
- if (rc == eOK)
- { /* was OK */
- rb->lcd_puts(0, 6, "[" KEYNAME2 "] to program");
- rb->lcd_puts(0, 7, "other key to exit");
- }
- else
- { /* error occured */
- rb->lcd_puts(0, 6, "Any key to exit");
- }
- rb->lcd_update();
-
- button = WaitForButton();
- if (rc != eOK || button != KEY2)
- {
- return;
- }
-
- true_size = ImageHeader.size;
- aligned_size = ((sizeof(tImageHeader) + true_size + SECTORSIZE-1) &
- ~(SECTORSIZE-1)) - sizeof(tImageHeader); /* round up to
- next flash
- sector */
- ImageHeader.size = aligned_size; /* increase image size such that we reach
- the next sector */
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Programming...");
- rb->lcd_update();
-
- rc = ProgramImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size);
- if (rc)
- { /* errors */
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, "Error:");
- rb->lcd_puts(0, 1, "Programming fail!");
- rb->lcd_putsf(0, 2, "%d errors", rc);
- rb->lcd_update();
- button = WaitForButton();
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Verifying...");
- rb->lcd_update();
-
- rc = VerifyImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size);
-
- rb->lcd_clear_display();
- if (rc == 0)
- {
- rb->lcd_puts(0, 0, "Verify OK.");
- }
- else
- {
- rb->lcd_puts(0, 0, "Error:");
- rb->lcd_puts(0, 1, "Verify fail!");
- rb->lcd_putsf(0, 2, "%d errors", rc);
- rb->lcd_puts(0, 3, "Use safe image");
- rb->lcd_puts(0, 4, "if booting hangs:");
- rb->lcd_puts(0, 5, "F1 during power-on");
- }
- rb->lcd_puts(0, 7, "Any key to exit");
- rb->lcd_update();
- WaitForButton();
-}
-
-#else /* #ifdef HAVE_LCD_BITMAP */
-
-/* Player version */
-static void DoUserDialog(char* filename)
-{
- tImageHeader ImageHeader;
- tFlashInfo FlashInfo;
- static char buf[MAX_PATH];
- int button;
- int rc; /* generic return code */
- UINT32 space, aligned_size, true_size;
- UINT8* pos;
- size_t memleft;
- unsigned bl_version;
-
- /* this can only work if Rockbox runs in DRAM, not flash ROM */
- if ((UINT8*)rb >= FB && (UINT8*)rb < FB + 4096*1024) /* 4 MB max */
- { /* we're running from flash */
- rb->splash(HZ*3, "Not from ROM");
- return; /* exit */
- }
-
- /* refuse to work if the power may fail meanwhile */
- if (!rb->battery_level_safe())
- {
- rb->splash(HZ*3, "Batt. too low!");
- return; /* exit */
- }
-
- /* "allocate" memory */
- sector = rb->plugin_get_buffer(&memleft);
- if (memleft < SECTORSIZE) /* need buffer for a flash sector */
- {
- rb->splash(HZ*3, "Out of memory");
- return; /* exit */
- }
-
- pos = (void*)GetSecondImage();
- rc = GetFlashInfo(&FlashInfo);
-
- if (FlashInfo.size == 0) /* no valid chip */
- {
- rb->splash(HZ*3, "Not flashable");
- return; /* exit */
- }
- else if (pos == 0)
- {
- rb->splash(HZ*3, "No image");
- return; /* exit */
- }
-
- bl_version = BootloaderVersion();
- if (bl_version < LATEST_BOOTLOADER_VERSION)
- {
- rb->lcd_puts_scroll(0, 0, "Hint: You're not using the latest bootloader. A full reflash is recommended, but not required.");
- rb->lcd_puts_scroll(0, 1, "Press [Menu] to ignore");
- rb->lcd_update();
-
- if (WaitForButton() != BUTTON_MENU)
- {
- return;
- }
- rb->lcd_clear_display();
- }
-
- rb->lcd_puts(0, 0, "Checking...");
- rb->lcd_update();
-
- space = FlashInfo.size - (pos-FB + sizeof(ImageHeader));
- /* size minus start */
-
- rc = CheckImageFile(filename, space, &ImageHeader, pos);
- rb->lcd_puts(0, 0, "Checked:");
- switch (rc) {
- case eOK:
- rb->lcd_puts(0, 1, "File OK.");
- rb->sleep(HZ*1);
- break;
- case eNotUCL:
- rb->lcd_puts_scroll(0, 1, "File not UCL compressed.");
- break;
- case eWrongAlgorithm:
- rb->lcd_puts_scroll(0, 1, "Wrong compression algorithm.");
- break;
- case eFileNotFound:
- rb->lcd_puts_scroll(0, 1, "File not found.");
- break;
- case eTooBig:
- if (bl_version < LATEST_BOOTLOADER_VERSION)
- {
- rb->lcd_puts_scroll(0, 1, "File too big, upgrade bootloader.");
- }
- else
- {
- rb->lcd_puts_scroll(0, 1, "File too big.");
- }
- break;
- case eTooSmall:
- rb->lcd_puts_scroll(0, 1, "File too small. Incomplete?");
- break;
- case eReadErr:
- rb->lcd_puts_scroll(0, 1, "File read error.");
- break;
- case eMultiBlocks:
- rb->lcd_puts_scroll(0, 1, "File invalid. Blocksize too small?");
- break;
- case eBadRomLink:
- rb->lcd_puts_scroll(0, 1, "Bootloader not compatible with RomBox.");
- break;
- default:
- rb->lcd_puts_scroll(0, 1, "Check failed.");
- break;
- }
- rb->lcd_update();
-
- if (rc == eOK)
- { /* was OK */
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "[ON] to program,");
- rb->lcd_puts_scroll(0, 1, "other key to exit.");
- }
- else
- { /* error occured */
- WaitForButton();
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Flash failed.");
- rb->lcd_puts_scroll(0, 1, "Any key to exit.");
- }
- rb->lcd_update();
-
- button = WaitForButton();
- if (rc != eOK || button != BUTTON_ON)
- {
- return;
- }
-
- true_size = ImageHeader.size;
- aligned_size = ((sizeof(tImageHeader) + true_size + SECTORSIZE-1) &
- ~(SECTORSIZE-1)) - sizeof(tImageHeader); /* round up to
- next flash
- sector */
- ImageHeader.size = aligned_size; /* increase image size such that we reach
- the next sector */
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Programming...");
- rb->lcd_update();
-
- rc = ProgramImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size);
- if (rc)
- { /* errors */
- rb->lcd_clear_display();
- rb->snprintf(buf, sizeof(buf), "%d errors", rc);
- rb->lcd_puts_scroll(0, 0, "Programming failed!");
- rb->lcd_puts_scroll(0, 1, buf);
- rb->lcd_update();
- button = WaitForButton();
- }
-
- rb->lcd_clear_display();
- rb->lcd_puts_scroll(0, 0, "Verifying...");
- rb->lcd_update();
-
- rc = VerifyImageFile(filename, pos, &ImageHeader, UCL_HEADER, true_size);
-
- rb->lcd_clear_display();
- if (rc == 0)
- {
- rb->lcd_puts(0, 0, "Verify OK.");
- rb->lcd_update();
- }
- else
- {
- rb->snprintf(buf, sizeof(buf), "Verify fail! %d errors", rc);
- rb->lcd_puts_scroll(0, 0, buf);
- rb->lcd_puts_scroll(0, 1, "Use safe image if booting hangs: [-] during power-on");
- rb->lcd_update();
- button = WaitForButton();
- }
-}
-
-#endif /* not HAVE_LCD_BITMAP */
-
-
-
-/***************** Plugin Entry Point *****************/
-
-enum plugin_status plugin_start(const void* parameter)
-{
- int oldmode;
-
- if (parameter == NULL)
- {
- rb->splash(HZ*3, "Play .ucl file!");
- return PLUGIN_OK;
- }
-
- /* now go ahead and have fun! */
- oldmode = rb->system_memory_guard(MEMGUARD_NONE); /*disable memory guard */
- DoUserDialog((char*) parameter);
- rb->system_memory_guard(oldmode); /* re-enable memory guard */
-
- return PLUGIN_OK;
-}
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;
static void updatepatpix(void)
{
int i, j;
-#if ((CONFIG_CPU != SH7034) && !defined(CPU_COLDFIRE))
+#if !defined(CPU_COLDFIRE)
int k, a, c;
#endif
byte *vram = lcd.vbank[0];
@@ -83,76 +83,7 @@ static void updatepatpix(void)
patdirty[i] = 0;
for (j = 0; j < 8; j++)
{
-#if CONFIG_CPU == SH7034
- asm volatile (
- "mov.w @%2,r1 \n"
- "swap.b r1,r2 \n"
-
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@%0 \n"
- "mov.b r0,@(7,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(1,%0) \n"
- "mov.b r0,@(6,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(2,%0) \n"
- "mov.b r0,@(5,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(3,%0) \n"
- "mov.b r0,@(4,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(4,%0) \n"
- "mov.b r0,@(3,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(5,%0) \n"
- "mov.b r0,@(2,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(6,%0) \n"
- "mov.b r0,@(1,%1) \n"
- "mov #0,r0 \n"
- "shlr r1 \n"
- "rotcl r0 \n"
- "shlr r2 \n"
- "rotcl r0 \n"
- "mov.b r0,@(7,%0) \n"
- "mov.b r0,@%1 \n"
- : /* outputs */
- : /* inputs */
- /* %0 */ "r"(patpix[i+1024][j]),
- /* %1 */ "r"(patpix[i][j]),
- /* %2 */ "r"(&vram[(i<<4)|(j<<1)])
- : /* clobbers */
- "r0", "r1", "r2"
- );
-#elif defined(CPU_COLDFIRE)
+#if defined(CPU_COLDFIRE)
asm volatile (
"move.b (%2),%%d2 \n"
"move.b (1,%2),%%d1 \n"
@@ -229,85 +160,7 @@ static void updatepatpix(void)
patpix[i+1024][j][7-k];
#endif
}
-#if CONFIG_CPU == SH7034
- asm volatile (
- "mov.l @%0,r0 \n"
- "mov.l @(4,%0),r1 \n"
- "mov.l r0,@(56,%1) \n"
- "mov.l r1,@(60,%1) \n"
- "mov.l @(8,%0),r0 \n"
- "mov.l @(12,%0),r1 \n"
- "mov.l r0,@(48,%1) \n"
- "mov.l r1,@(52,%1) \n"
- "mov.l @(16,%0),r0 \n"
- "mov.l @(20,%0),r1 \n"
- "mov.l r0,@(40,%1) \n"
- "mov.l r1,@(44,%1) \n"
- "mov.l @(24,%0),r0 \n"
- "mov.l @(28,%0),r1 \n"
- "mov.l r0,@(32,%1) \n"
- "mov.l r1,@(36,%1) \n"
- "mov.l @(32,%0),r0 \n"
- "mov.l @(36,%0),r1 \n"
- "mov.l r0,@(24,%1) \n"
- "mov.l r1,@(28,%1) \n"
- "mov.l @(40,%0),r0 \n"
- "mov.l @(44,%0),r1 \n"
- "mov.l r0,@(16,%1) \n"
- "mov.l r1,@(20,%1) \n"
- "mov.l @(48,%0),r0 \n"
- "mov.l @(52,%0),r1 \n"
- "mov.l r0,@(8,%1) \n"
- "mov.l r1,@(12,%1) \n"
- "mov.l @(56,%0),r0 \n"
- "mov.l @(60,%0),r1 \n"
- "mov.l r0,@%1 \n"
- "mov.l r1,@(4,%1) \n"
-
- "add %2,%0 \n"
- "add %2,%1 \n"
-
- "mov.l @%0,r0 \n"
- "mov.l @(4,%0),r1 \n"
- "mov.l r0,@(56,%1) \n"
- "mov.l r1,@(60,%1) \n"
- "mov.l @(8,%0),r0 \n"
- "mov.l @(12,%0),r1 \n"
- "mov.l r0,@(48,%1) \n"
- "mov.l r1,@(52,%1) \n"
- "mov.l @(16,%0),r0 \n"
- "mov.l @(20,%0),r1 \n"
- "mov.l r0,@(40,%1) \n"
- "mov.l r1,@(44,%1) \n"
- "mov.l @(24,%0),r0 \n"
- "mov.l @(28,%0),r1 \n"
- "mov.l r0,@(32,%1) \n"
- "mov.l r1,@(36,%1) \n"
- "mov.l @(32,%0),r0 \n"
- "mov.l @(36,%0),r1 \n"
- "mov.l r0,@(24,%1) \n"
- "mov.l r1,@(28,%1) \n"
- "mov.l @(40,%0),r0 \n"
- "mov.l @(44,%0),r1 \n"
- "mov.l r0,@(16,%1) \n"
- "mov.l r1,@(20,%1) \n"
- "mov.l @(48,%0),r0 \n"
- "mov.l @(52,%0),r1 \n"
- "mov.l r0,@(8,%1) \n"
- "mov.l r1,@(12,%1) \n"
- "mov.l @(56,%0),r0 \n"
- "mov.l @(60,%0),r1 \n"
- "mov.l r0,@%1 \n"
- "mov.l r1,@(4,%1) \n"
- : /* outputs */
- : /* inputs */
- /* %0 */ "r"(patpix[i][0]),
- /* %1 */ "r"(patpix[i+2048][0]),
- /* %2 */ "r"(1024*64)
- : /* clobbers */
- "r0", "r1"
- );
-#elif defined(CPU_COLDFIRE)
+#if defined(CPU_COLDFIRE)
asm volatile (
"movem.l (%0),%%d0-%%d3 \n"
"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)
options.SELECT = BUTTON_SELECT;
options.MENU = BUTTON_OFF;
-#elif CONFIG_KEYPAD == RECORDER_PAD
- options.UP = BUTTON_UP;
- options.DOWN = BUTTON_DOWN;
-
- options.A = BUTTON_F1;
- options.B = BUTTON_F2;
- options.START = BUTTON_F3;
- options.SELECT = BUTTON_PLAY;
- options.MENU = BUTTON_OFF;
-
#elif CONFIG_KEYPAD == IPOD_4G_PAD
options.UP = BUTTON_MENU;
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)
if (rb->button_hold()&~holdbutton)
fb.mode=(fb.mode+1)%4;
holdbutton=rb->button_hold();
-#elif CONFIG_KEYPAD == RECORDER_PAD
- if (pressed & BUTTON_ON)
- fb.mode=(fb.mode+1)%4;
#endif
#ifdef HAVE_WHEEL_POSITION
@@ -220,12 +217,10 @@ void ev_poll(void)
#else
if(pressed & options.MENU) {
#endif
-#if (CONFIG_KEYPAD != RECORDER_PAD)
#ifdef HAVE_WHEEL_POSITION
rb->wheel_send_events(true);
#endif
if (do_user_menu() == USER_MENU_QUIT)
-#endif
{
die("");
cleanshut=1;
@@ -300,54 +295,6 @@ void vid_update(int scanline)
balance += LCD_WIDTH;
if (balance > 0)
{
-#if (CONFIG_CPU == SH7034) && !defined(SIMULATOR)
- asm volatile (
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
- "mov.b @%0,r0 \n"
- "add %1,%0 \n"
- "tst #0x02, r0 \n" /* ~bit 1 */
- "rotcr r1 \n"
-
- "shlr16 r1 \n"
- "shlr8 r1 \n"
- "not r1,r1 \n" /* account for negated bits */
- "mov.b r1,@%2 \n"
- : /* outputs */
- : /* inputs */
- /* %0 */ "r"(scan.buf[0] + cnt),
- /* %1 */ "r"(256), /* scan.buf line length */
- /* %2 */ "r"(frameb++)
- : /* clobbers */
- "r0", "r1"
- );
-#else
register unsigned scrbyte = 0;
if (scan.buf[0][cnt] & 0x02) scrbyte |= 0x01;
if (scan.buf[1][cnt] & 0x02) scrbyte |= 0x02;
@@ -358,7 +305,6 @@ void vid_update(int scanline)
if (scan.buf[6][cnt] & 0x02) scrbyte |= 0x40;
if (scan.buf[7][cnt] & 0x02) scrbyte |= 0x80;
*(frameb++) = scrbyte;
-#endif
balance -= 160;
}
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 @@
#include "plugin.h"
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define PUZZLE_QUIT BUTTON_OFF
-#define PUZZLE_LEFT BUTTON_LEFT
-#define PUZZLE_RIGHT BUTTON_RIGHT
-#define PUZZLE_UP BUTTON_UP
-#define PUZZLE_DOWN BUTTON_DOWN
-#define PUZZLE_SHUFFLE BUTTON_F1
-#define PUZZLE_PICTURE BUTTON_F2
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define PUZZLE_QUIT BUTTON_OFF
-#define PUZZLE_LEFT BUTTON_LEFT
-#define PUZZLE_RIGHT BUTTON_RIGHT
-#define PUZZLE_UP BUTTON_UP
-#define PUZZLE_DOWN BUTTON_DOWN
-#define PUZZLE_SHUFFLE_PICTURE_PRE BUTTON_MENU
-#define PUZZLE_SHUFFLE (BUTTON_MENU | BUTTON_REPEAT)
-#define PUZZLE_PICTURE (BUTTON_MENU | BUTTON_REL)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define PUZZLE_QUIT BUTTON_OFF
#define PUZZLE_LEFT BUTTON_LEFT
@@ -853,15 +834,7 @@ enum plugin_status plugin_start(
/* print instructions */
rb->lcd_clear_display();
rb->lcd_setfont(FONT_SYSFIXED);
-#if CONFIG_KEYPAD == RECORDER_PAD
- rb->lcd_putsxy(3, 18, "[OFF] to stop");
- rb->lcd_putsxy(3, 28, "[F1] shuffle");
- rb->lcd_putsxy(3, 38, "[F2] change pic");
-#elif CONFIG_KEYPAD == ONDIO_PAD
- rb->lcd_putsxy(0, 18, "[OFF] to stop");
- rb->lcd_putsxy(0, 28, "[MODE..] shuffle");
- rb->lcd_putsxy(0, 38, "[MODE] change pic");
-#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
+#if (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
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;
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define SNAKE_QUIT BUTTON_OFF
-#define SNAKE_LEFT BUTTON_LEFT
-#define SNAKE_RIGHT BUTTON_RIGHT
-#define SNAKE_UP BUTTON_UP
-#define SNAKE_DOWN BUTTON_DOWN
-#define SNAKE_PLAYPAUSE BUTTON_PLAY
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define SNAKE_QUIT BUTTON_OFF
-#define SNAKE_LEFT BUTTON_LEFT
-#define SNAKE_RIGHT BUTTON_RIGHT
-#define SNAKE_UP BUTTON_UP
-#define SNAKE_DOWN BUTTON_DOWN
-#define SNAKE_PLAYPAUSE BUTTON_MENU
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define SNAKE_QUIT BUTTON_OFF
#define SNAKE_LEFT BUTTON_LEFT
#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
#endif
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define SNAKE2_LEFT BUTTON_LEFT
-#define SNAKE2_RIGHT BUTTON_RIGHT
-#define SNAKE2_UP BUTTON_UP
-#define SNAKE2_DOWN BUTTON_DOWN
-#define SNAKE2_QUIT BUTTON_OFF
-#define SNAKE2_PLAYPAUSE BUTTON_PLAY
-#define SNAKE2_PLAYPAUSE_TEXT "Play"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define SNAKE2_LEFT BUTTON_LEFT
-#define SNAKE2_RIGHT BUTTON_RIGHT
-#define SNAKE2_UP BUTTON_UP
-#define SNAKE2_DOWN BUTTON_DOWN
-#define SNAKE2_QUIT BUTTON_OFF
-#define SNAKE2_PLAYPAUSE BUTTON_MENU
-#define SNAKE2_PLAYPAUSE_TEXT "Menu"
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define SNAKE2_LEFT BUTTON_LEFT
#define SNAKE2_RIGHT BUTTON_RIGHT
#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 @@
#endif
/* size of code+bss */
-#if CONFIG_CPU == SH7034
-#define CODE_SIZE 0x3000 /* 12k */
-#else
#define CODE_SIZE 0x5000 /* 20k */
-#endif
#define CODE_AND_UNDO_SIZE (CODE_SIZE+0x1000) /* + 4k */
@@ -104,39 +100,8 @@
#define SOKOBAN_MOVE_MIN SOKOBAN_MOVE_DOWN
/* variable button definitions */
-#if (CONFIG_KEYPAD == RECORDER_PAD)
-#define SOKOBAN_LEFT BUTTON_LEFT
-#define SOKOBAN_RIGHT BUTTON_RIGHT
-#define SOKOBAN_UP BUTTON_UP
-#define SOKOBAN_DOWN BUTTON_DOWN
-#define SOKOBAN_MENU BUTTON_OFF
-#define SOKOBAN_UNDO BUTTON_ON
-#define SOKOBAN_REDO BUTTON_PLAY
-#define SOKOBAN_LEVEL_DOWN BUTTON_F1
-#define SOKOBAN_LEVEL_REPEAT BUTTON_F2
-#define SOKOBAN_LEVEL_UP BUTTON_F3
-#define SOKOBAN_PAUSE BUTTON_PLAY
-#define BUTTON_SAVE BUTTON_ON
-#define BUTTON_SAVE_NAME "ON"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define SOKOBAN_LEFT BUTTON_LEFT
-#define SOKOBAN_RIGHT BUTTON_RIGHT
-#define SOKOBAN_UP BUTTON_UP
-#define SOKOBAN_DOWN BUTTON_DOWN
-#define SOKOBAN_MENU BUTTON_OFF
-#define SOKOBAN_UNDO_PRE BUTTON_MENU
-#define SOKOBAN_UNDO (BUTTON_MENU | BUTTON_REL)
-#define SOKOBAN_REDO (BUTTON_MENU | BUTTON_DOWN)
-#define SOKOBAN_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT)
-#define SOKOBAN_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP)
-#define SOKOBAN_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT)
-#define SOKOBAN_PAUSE BUTTON_MENU
-#define BUTTON_SAVE BUTTON_MENU
-#define BUTTON_SAVE_NAME "MENU"
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define SOKOBAN_LEFT BUTTON_LEFT
#define SOKOBAN_RIGHT BUTTON_RIGHT
#define SOKOBAN_UP BUTTON_UP
@@ -1642,22 +1607,8 @@ static int sokoban_menu(void)
rb->screens[i]->clear_display();
rb->lcd_setfont(SOKOBAN_FONT);
-#if (CONFIG_KEYPAD == RECORDER_PAD)
- rb->lcd_putsxy(3, 6, "[OFF] Menu");
- rb->lcd_putsxy(3, 16, "[ON] Undo");
- rb->lcd_putsxy(3, 26, "[PLAY] Redo");
- rb->lcd_putsxy(3, 36, "[F1] Down a Level");
- rb->lcd_putsxy(3, 46, "[F2] Restart Level");
- rb->lcd_putsxy(3, 56, "[F3] Up a Level");
-#elif CONFIG_KEYPAD == ONDIO_PAD
- rb->lcd_putsxy(3, 6, "[OFF] Menu");
- rb->lcd_putsxy(3, 16, "[MODE] Undo");
- rb->lcd_putsxy(3, 26, "[MODE+DOWN] Redo");
- rb->lcd_putsxy(3, 36, "[MODE+LEFT] Previous Level");
- rb->lcd_putsxy(3, 46, "[MODE+UP] Restart Level");
- rb->lcd_putsxy(3, 56, "[MODE+RIGHT] Up Level");
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
rb->lcd_putsxy(3, 6, "[STOP] Menu");
rb->lcd_putsxy(3, 16, "[REC] Undo");
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 @@
* Key definitions
*/
-#if CONFIG_KEYPAD == RECORDER_PAD
-# define SOL_QUIT BUTTON_OFF
-# define SOL_UP BUTTON_UP
-# define SOL_DOWN BUTTON_DOWN
-# define SOL_LEFT BUTTON_LEFT
-# define SOL_RIGHT BUTTON_RIGHT
-# define SOL_MOVE BUTTON_ON
-# define SOL_DRAW BUTTON_F1
-# define SOL_REM2CUR BUTTON_PLAY
-# define SOL_CUR2STACK BUTTON_F2
-# define SOL_REM2STACK BUTTON_F3
-# define HK_MOVE "ON"
-# define HK_DRAW "F1"
-# define HK_REM2CUR "PLAY"
-# define HK_CUR2STACK "F2"
-# define HK_REM2STACK "F3"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-# define SOL_QUIT BUTTON_OFF
-# define SOL_UP_PRE BUTTON_UP
-# define SOL_UP (BUTTON_UP | BUTTON_REL)
-# define SOL_DOWN_PRE BUTTON_DOWN
-# define SOL_DOWN (BUTTON_DOWN | BUTTON_REL)
-# define SOL_LEFT_PRE BUTTON_LEFT
-# define SOL_LEFT (BUTTON_LEFT | BUTTON_REL)
-# define SOL_RIGHT_PRE BUTTON_RIGHT
-# define SOL_RIGHT (BUTTON_RIGHT | BUTTON_REL)
-# define SOL_MOVE_PRE BUTTON_MENU
-# define SOL_MOVE (BUTTON_MENU | BUTTON_REL)
-# define SOL_DRAW_PRE BUTTON_MENU
-# define SOL_DRAW (BUTTON_MENU | BUTTON_REPEAT)
-# define SOL_REM2CUR_PRE BUTTON_DOWN
-# define SOL_REM2CUR (BUTTON_DOWN | BUTTON_REPEAT)
-# define SOL_CUR2STACK_PRE BUTTON_UP
-# define SOL_CUR2STACK (BUTTON_UP | BUTTON_REPEAT)
-# define SOL_REM2STACK_PRE BUTTON_RIGHT
-# define SOL_REM2STACK (BUTTON_RIGHT | BUTTON_REPEAT)
-# define HK_MOVE "MODE"
-# define HK_DRAW "MODE.."
-# define HK_REM2CUR "DOWN.."
-# define HK_CUR2STACK "UP.."
-# define HK_REM2STACK "RIGHT.."
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
# define SOL_QUIT BUTTON_OFF
# define SOL_UP BUTTON_UP
# 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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define AST_PAUSE BUTTON_ON
-#define AST_QUIT BUTTON_OFF
-#define AST_THRUST BUTTON_UP
-#define AST_HYPERSPACE BUTTON_DOWN
-#define AST_LEFT BUTTON_LEFT
-#define AST_RIGHT BUTTON_RIGHT
-#define AST_FIRE BUTTON_PLAY
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define AST_PAUSE (BUTTON_MENU | BUTTON_OFF)
-#define AST_QUIT BUTTON_OFF
-#define AST_THRUST BUTTON_UP
-#define AST_HYPERSPACE BUTTON_DOWN
-#define AST_LEFT BUTTON_LEFT
-#define AST_RIGHT BUTTON_RIGHT
-#define AST_FIRE BUTTON_MENU
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define AST_PAUSE BUTTON_REC
#define AST_QUIT BUTTON_OFF
#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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define SPLITEDIT_QUIT BUTTON_OFF
-#define SPLITEDIT_PLAY BUTTON_PLAY
-#define SPLITEDIT_SAVE BUTTON_F1
-#define SPLITEDIT_LOOP_MODE BUTTON_F2
-#define SPLITEDIT_SCALE BUTTON_F3
-#define SPLITEDIT_SPEED50 (BUTTON_ON | BUTTON_LEFT)
-#define SPLITEDIT_SPEED100 (BUTTON_ON | BUTTON_PLAY)
-#define SPLITEDIT_SPEED150 (BUTTON_ON | BUTTON_RIGHT)
-#define SPLITEDIT_MENU_RUN BUTTON_PLAY
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define SPLITEDIT_QUIT BUTTON_OFF
-#define SPLITEDIT_PLAY_PRE BUTTON_MENU
-#define SPLITEDIT_PLAY (BUTTON_MENU | BUTTON_REL)
-#define SPLITEDIT_SAVE (BUTTON_MENU | BUTTON_LEFT)
-#define SPLITEDIT_LOOP_MODE (BUTTON_MENU | BUTTON_UP)
-#define SPLITEDIT_SCALE (BUTTON_MENU | BUTTON_RIGHT)
-#define SPLITEDIT_MENU_RUN BUTTON_RIGHT
-
-#elif CONFIG_KEYPAD == IRIVER_H100_PAD
+#if CONFIG_KEYPAD == IRIVER_H100_PAD
#define SPLITEDIT_QUIT BUTTON_OFF
#define SPLITEDIT_PLAY BUTTON_ON
#define SPLITEDIT_SAVE BUTTON_SELECT
@@ -279,12 +259,6 @@ static void update_icons(void)
LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT,
BMPWIDTH, BMPHEIGHT);
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- /* The scale icon */
- rb->lcd_mono_bitmap(SCALE_BMP[rb->peak_meter_get_use_dbfs() ? 1 : 0],
- 2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT,
- BMPWIDTH, BMPHEIGHT);
-#else
{
static int idx;
if (idx < 0 || idx > 1) idx = 0;
@@ -293,7 +267,6 @@ static void update_icons(void)
2 *LCD_WIDTH/3 + LCD_WIDTH/3 / 2 - BMPWIDTH/2, LCD_HEIGHT - BMPHEIGHT,
BMPWIDTH, BMPHEIGHT);
}
-#endif
rb->lcd_update_rect(0, LCD_HEIGHT - BMPHEIGHT, LCD_WIDTH, BMPHEIGHT);
}
@@ -961,14 +934,7 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
{
/* read volume info */
unsigned short volume;
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- volume = rb->mas_codec_readreg(0x0c);
- volume += rb->mas_codec_readreg(0x0d);
- volume = volume / 2;
- volume = rb->peak_meter_scale_value(volume, OSCI_HEIGHT);
-#else
volume = OSCI_HEIGHT / 2;
-#endif
/* update osci_buffer */
if (osci_valid || lastx == x)
@@ -1126,25 +1092,6 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
lastx = time_to_xpos(mp3->elapsed);
break;
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
-#ifdef SPLITEDIT_SPEED100
- case SPLITEDIT_SPEED150:
- rb->sound_set_pitch(150L*PITCH_SPEED_PRECISION);
- splitedit_invalidate_osci();
- break;
-
- case SPLITEDIT_SPEED100:
- rb->sound_set_pitch(PITCH_SPEED_100);
- splitedit_invalidate_osci();
- break;
-
- case SPLITEDIT_SPEED50:
- rb->sound_set_pitch(50L*PITCH_SPEED_PRECISION);
- splitedit_invalidate_osci();
- break;
-#endif
-#endif
-
case BUTTON_LEFT:
case BUTTON_LEFT | BUTTON_REPEAT:
if (splitedit_get_split_x() > OSCI_X + 2)
@@ -1185,9 +1132,6 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
break;
case SPLITEDIT_SCALE:
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- rb->peak_meter_set_use_dbfs(!rb->peak_meter_get_use_dbfs());
-#endif
splitedit_invalidate_osci();
update_icons();
break;
@@ -1257,12 +1201,6 @@ static unsigned long splitedit_editor(struct mp3entry * mp3_to_split,
}
}
}
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
-#ifdef SPLITEDIT_SPEED100
- rb->sound_set_pitch(1000); /* make sure to reset pitch */
-#endif
-#endif
-
}
return retval;
}
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 @@
#define STAR_CONTROL_BLOCK 1
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define STAR_QUIT BUTTON_OFF
-#define STAR_LEFT BUTTON_LEFT
-#define STAR_RIGHT BUTTON_RIGHT
-#define STAR_UP BUTTON_UP
-#define STAR_DOWN BUTTON_DOWN
-#define STAR_TOGGLE_CONTROL BUTTON_ON
-#define STAR_TOGGLE_CONTROL2 BUTTON_PLAY
-#define STAR_LEVEL_UP BUTTON_F3
-#define STAR_LEVEL_DOWN BUTTON_F1
-#define STAR_LEVEL_REPEAT BUTTON_F2
-#define STAR_TOGGLE_CONTROL_NAME "ON"
-#define STAR_QUIT_NAME "OFF"
-#define STAR_LEVEL_UP_NAME "F3"
-#define STAR_LEVEL_DOWN_NAME "F1"
-#define STAR_LEVEL_REPEAT_NAME "F2"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define STAR_QUIT BUTTON_OFF
-#define STAR_LEFT BUTTON_LEFT
-#define STAR_RIGHT BUTTON_RIGHT
-#define STAR_UP BUTTON_UP
-#define STAR_DOWN BUTTON_DOWN
-#define STAR_TOGGLE_CONTROL_PRE BUTTON_MENU
-#define STAR_TOGGLE_CONTROL (BUTTON_MENU | BUTTON_REL)
-#define STAR_LEVEL_UP (BUTTON_MENU | BUTTON_RIGHT)
-#define STAR_LEVEL_DOWN (BUTTON_MENU | BUTTON_LEFT)
-#define STAR_LEVEL_REPEAT (BUTTON_MENU | BUTTON_UP)
-#define STAR_TOGGLE_CONTROL_NAME "MODE"
-#define STAR_QUIT_NAME "OFF"
-#define STAR_LEVEL_UP_NAME "M >"
-#define STAR_LEVEL_DOWN_NAME "M <"
-#define STAR_LEVEL_REPEAT_NAME "M ^"
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define STAR_QUIT BUTTON_OFF
#define STAR_LEFT BUTTON_LEFT
#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)
rb->sleep(1);
rb->lcd_clear_display();
-#if ((CONFIG_CODEC == SWCODEC) || !defined(SIMULATOR) && \
- ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)))
-
+#if (CONFIG_CODEC == SWCODEC)
/* This will make the stars pulse to the music */
if(pulse){
/* Get the peaks. ( Borrowed from vu_meter ) */
-#if (CONFIG_CODEC == SWCODEC)
static struct pcm_peaks peaks;
rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
&peaks);
#define left_peak peaks.left
#define right_peak peaks.right
-#else
- int left_peak = rb->mas_codec_readreg(0xC);
- int right_peak = rb->mas_codec_readreg(0xD);
-#endif
+
/* Devide peak data by 4098 to bring the max
value down from ~32k to 8 */
left_peak = left_peak/0x1000;
@@ -261,8 +255,6 @@ static int plugin_main(void)
starfield.z_move = avg_peak;
} /* if pulse */
-#else
- (void) avg_peak;
#endif
starfield_move_and_draw(&starfield);
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 @@
#define STOPWATCH_FILE PLUGIN_APPS_DATA_DIR "/stopwatch.dat"
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define STOPWATCH_QUIT BUTTON_OFF
-#define STOPWATCH_START_STOP BUTTON_PLAY
-#define STOPWATCH_RESET_TIMER BUTTON_LEFT
-#define STOPWATCH_LAP_TIMER BUTTON_ON
-#define STOPWATCH_SCROLL_UP BUTTON_UP
-#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define STOPWATCH_QUIT BUTTON_OFF
-#define STOPWATCH_START_STOP BUTTON_RIGHT
-#define STOPWATCH_RESET_TIMER BUTTON_LEFT
-#define STOPWATCH_LAP_TIMER BUTTON_MENU
-#define STOPWATCH_SCROLL_UP BUTTON_UP
-#define STOPWATCH_SCROLL_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == PLAYER_PAD
-#define STOPWATCH_QUIT BUTTON_MENU
-#define STOPWATCH_START_STOP BUTTON_PLAY
-#define STOPWATCH_RESET_TIMER BUTTON_STOP
-#define STOPWATCH_LAP_TIMER BUTTON_ON
-#define STOPWATCH_SCROLL_UP BUTTON_RIGHT
-#define STOPWATCH_SCROLL_DOWN BUTTON_LEFT
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define STOPWATCH_QUIT BUTTON_OFF
#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 @@
#define GAME_FILE PLUGIN_GAMES_DIR "/sudoku.ss"
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define SUDOKU_BUTTON_QUIT BUTTON_OFF
-#define SUDOKU_BUTTON_UP BUTTON_UP
-#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
-#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
-#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
-#define SUDOKU_BUTTON_TOGGLE BUTTON_PLAY
-#define SUDOKU_BUTTON_MENU BUTTON_F1
-#define SUDOKU_BUTTON_POSSIBLE BUTTON_F2
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define SUDOKU_BUTTON_QUIT BUTTON_OFF
-#define SUDOKU_BUTTON_UP BUTTON_UP
-#define SUDOKU_BUTTON_DOWN BUTTON_DOWN
-#define SUDOKU_BUTTON_LEFT BUTTON_LEFT
-#define SUDOKU_BUTTON_RIGHT BUTTON_RIGHT
-#define SUDOKU_BUTTON_ALTTOGGLE (BUTTON_MENU | BUTTON_DOWN)
-#define SUDOKU_BUTTON_TOGGLE_PRE BUTTON_MENU
-#define SUDOKU_BUTTON_TOGGLE (BUTTON_MENU | BUTTON_REL)
-#define SUDOKU_BUTTON_MENU_PRE BUTTON_MENU
-#define SUDOKU_BUTTON_MENU (BUTTON_MENU | BUTTON_REPEAT)
-#define SUDOKU_BUTTON_POSSIBLE (BUTTON_MENU | BUTTON_LEFT)
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define SUDOKU_BUTTON_QUIT BUTTON_OFF
#define SUDOKU_BUTTON_UP BUTTON_UP
#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 };
#endif /*HAVE_SCROLLWHEEL*/
/* Default refresh rates in 1/10 Hz */
-#if defined ARCHOS_RECORDER || defined ARCHOS_FMRECORDER \
- || defined ARCHOS_RECORDERV2 || defined ARCHOS_ONDIOFM \
- || defined ARCHOS_ONDIOSP
-#define DEFAULT_SCAN_RATE 670
-#elif defined IAUDIO_M3
+#if defined IAUDIO_M3
#define DEFAULT_SCAN_RATE 1500
#define HORIZ_SCAN /* LCD controller updates the panel sideways */
#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 @@
* TV_COLUMN_RIGHT one column right
*/
-/* Recorder keys */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define TV_QUIT BUTTON_OFF
-#define TV_SCROLL_UP BUTTON_UP
-#define TV_SCROLL_DOWN BUTTON_DOWN
-#define TV_SCREEN_LEFT BUTTON_LEFT
-#define TV_SCREEN_RIGHT BUTTON_RIGHT
-#define TV_MENU BUTTON_F1
-#define TV_AUTOSCROLL BUTTON_PLAY
-#define TV_LINE_UP (BUTTON_ON | BUTTON_UP)
-#define TV_LINE_DOWN (BUTTON_ON | BUTTON_DOWN)
-#define TV_COLUMN_LEFT (BUTTON_ON | BUTTON_LEFT)
-#define TV_COLUMN_RIGHT (BUTTON_ON | BUTTON_RIGHT)
-#define TV_BOOKMARK BUTTON_F2
-
-/* Ondio keys */
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define TV_QUIT BUTTON_OFF
-#define TV_SCROLL_UP BUTTON_UP
-#define TV_SCROLL_DOWN BUTTON_DOWN
-#define TV_SCREEN_LEFT BUTTON_LEFT
-#define TV_SCREEN_RIGHT BUTTON_RIGHT
-#define TV_MENU (BUTTON_MENU|BUTTON_REPEAT)
-#define TV_AUTOSCROLL_PRE BUTTON_MENU
-#define TV_AUTOSCROLL (BUTTON_MENU|BUTTON_REL)
-#define TV_BOOKMARK (BUTTON_MENU|BUTTON_OFF)
-
-/* Player keys */
-#elif CONFIG_KEYPAD == PLAYER_PAD
-#define TV_QUIT BUTTON_STOP
-#define TV_SCROLL_UP BUTTON_LEFT
-#define TV_SCROLL_DOWN BUTTON_RIGHT
-#define TV_SCREEN_LEFT (BUTTON_ON|BUTTON_LEFT)
-#define TV_SCREEN_RIGHT (BUTTON_ON|BUTTON_RIGHT)
-#define TV_MENU BUTTON_MENU
-#define TV_AUTOSCROLL BUTTON_PLAY
-#define TV_BOOKMARK BUTTON_ON
-
/* iRiver H1x0 && H3x0 keys */
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
(CONFIG_KEYPAD == IRIVER_H300_PAD)
#define TV_QUIT BUTTON_OFF
#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 @@
-/***************************************************************************
-* __________ __ ___.
-* Open \______ \ ____ ____ | | _\_ |__ _______ ___
-* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
-* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
-* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
-* \/ \/ \/ \/ \/
-* $Id$
-*
-* Plugin for video playback
-* Reads raw image data + audio data from a file
-* !!!!!!!!!! Code Police free zone !!!!!!!!!!
-*
-* Copyright (C) 2003-2004 J�g Hohensohn aka [IDC]Dragon
-*
-* This program is free software; you can redistribute it and/or
-* modify it under the terms of the GNU General Public License
-* as published by the Free Software Foundation; either version 2
-* of the License, or (at your option) any later version.
-*
-* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-* KIND, either express or implied.
-*
-****************************************************************************/
-
-
-/****************** imports ******************/
-
-#include "plugin.h"
-#include "sh7034.h"
-#include "system.h"
-#include "lib/helper.h"
-
-#ifdef HAVE_LCD_BITMAP /* and definitely not for the Player, haha */
-
-
-
-/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define VIDEO_STOP_SEEK BUTTON_PLAY
-#define VIDEO_RESUME BUTTON_PLAY
-#define VIDEO_DEBUG BUTTON_F1
-#define VIDEO_CONTRAST_DOWN BUTTON_F2
-#define VIDEO_CONTRAST_UP BUTTON_F3
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define VIDEO_STOP_SEEK_PRE BUTTON_MENU
-#define VIDEO_STOP_SEEK (BUTTON_MENU | BUTTON_REL)
-#define VIDEO_RESUME BUTTON_RIGHT
-#define VIDEO_CONTRAST_DOWN (BUTTON_MENU | BUTTON_DOWN)
-#define VIDEO_CONTRAST_UP (BUTTON_MENU | BUTTON_UP)
-
-#endif
-/****************** constants ******************/
-
-#define SCREENSIZE (LCD_WIDTH*LCD_HEIGHT/8) /* in bytes */
-#define FPS 68 /* default fps for headerless (old video-only) file */
-#define MAX_ACC 20 /* maximum FF/FR speedup */
-#define FF_TICKS 3000; /* experimentally found nice */
-
-/* trigger levels, we need about 80 kB/sec */
-#define SPINUP_INIT 5000 /* from what level on to refill, in milliseconds */
-#define SPINUP_SAFETY 700 /* how much on top of the measured spinup time */
-#define CHUNK (1024*32) /* read size */
-
-
-/****************** prototypes ******************/
-static void timer4_isr(void); /* IMIA4 ISR */
-int check_button(void); /* determine next relative frame */
-
-
-/****************** data types ******************/
-
-/* plugins don't introduce headers, so structs are repeated from rvf_format.h */
-
-#define HEADER_MAGIC 0x52564668 /* "RVFh" at file start */
-#define AUDIO_MAGIC 0x41756446 /* "AudF" for each audio block */
-#define FILEVERSION 100 /* 1.00 */
-
-/* format type definitions */
-#define VIDEOFORMAT_NO_VIDEO 0
-#define VIDEOFORMAT_RAW 1
-#define AUDIOFORMAT_NO_AUDIO 0
-#define AUDIOFORMAT_MP3 1
-#define AUDIOFORMAT_MP3_BITSWAPPED 2
-
-/* bit flags */
-#define FLAG_LOOP 0x00000001 /* loop the playback, e.g. for stills */
-
-typedef struct /* contains whatever might be useful to the player */
-{
- /* general info (16 entries = 64 byte) */
- unsigned long magic; /* HEADER_MAGIC */
- unsigned long version; /* file version */
- unsigned long flags; /* combination of FLAG_xx */
- unsigned long blocksize; /* how many bytes per block (=video frame) */
- unsigned long bps_average; /* bits per second of the whole stream */
- unsigned long bps_peak; /* max. of above (audio may be VBR) */
- unsigned long resume_pos; /* file position to resume to */
- unsigned long reserved[9]; /* reserved, should be zero */
-
- /* video info (16 entries = 64 byte) */
- unsigned long video_format; /* one of VIDEOFORMAT_xxx */
- unsigned long video_1st_frame; /* byte position of first video frame */
- unsigned long video_duration; /* total length of video part, in ms */
- unsigned long video_payload_size; /* total amount of video data, in bytes */
- unsigned long video_bitrate; /* derived from resolution and frame time, in bps */
- unsigned long video_frametime; /* frame interval in 11.0592 MHz clocks */
- long video_preroll; /* video is how much ahead, in 11.0592 MHz clocks */
- unsigned long video_width; /* in pixels */
- unsigned long video_height; /* in pixels */
- unsigned long video_reserved[7]; /* reserved, should be zero */
-
- /* audio info (16 entries = 64 byte) */
- unsigned long audio_format; /* one of AUDIOFORMAT_xxx */
- unsigned long audio_1st_frame; /* byte position of first video frame */
- unsigned long audio_duration; /* total length of audio part, in ms */
- unsigned long audio_payload_size; /* total amount of audio data, in bytes */
- unsigned long audio_avg_bitrate; /* average audio bitrate, in bits per second */
- unsigned long audio_peak_bitrate; /* maximum bitrate */
- unsigned long audio_headersize; /* offset to payload in audio frames */
- long audio_min_associated; /* minimum offset to video frame, in bytes */
- long audio_max_associated; /* maximum offset to video frame, in bytes */
- unsigned long audio_reserved[7]; /* reserved, should be zero */
-
- /* more to come... ? */
-
- /* Note: padding up to 'blocksize' with zero following this header */
-} tFileHeader;
-
-typedef struct /* the little header for all audio blocks */
-{
- unsigned long magic; /* AUDIO_MAGIC indicates an audio block */
- unsigned char previous_block; /* previous how many blocks backwards */
- unsigned char next_block; /* next how many blocks forward */
- short associated_video; /* offset to block with corresponding video */
- unsigned short frame_start; /* offset to first frame starting in this block */
- unsigned short frame_end; /* offset to behind last frame ending in this block */
-} tAudioFrameHeader;
-
-
-
-/****************** globals ******************/
-
-static char gPrint[32]; /* a global printf buffer, saves stack */
-
-
-/* playstate */
-static struct
-{
- enum
- {
- paused,
- playing,
- } state;
- bool bAudioUnderrun;
- bool bVideoUnderrun;
- bool bHasAudio;
- bool bHasVideo;
- int nTimeOSD; /* OSD should stay for this many frames */
- bool bDirtyOSD; /* OSD needs redraw */
- bool bRefilling; /* set if refilling buffer */
- bool bSeeking;
- int nSeekAcc; /* accelleration value for seek */
- int nSeekPos; /* current file position for seek */
- bool bDiskSleep; /* disk is suspended */
-#if FREQ == 12000000 /* Ondio speed kludge */
- int nFrameTimeAdjusted;
-#endif
-} gPlay;
-
-/* buffer information */
-static struct
-{
- ssize_t bufsize;
- int granularity; /* common multiple of block and sector size */
- unsigned char* pBufStart; /* start of ring buffer */
- unsigned char* pBufEnd; /* end of ring buffer */
- int osd_ypos;
- int osd_height;
-
- int vidcount; /* how many video blocks are known in a row */
- unsigned char* pBufFill; /* write pointer for disk, owned by main task */
- unsigned char* pReadVideo; /* video readout, maintained by timer ISR */
- unsigned char* pReadAudio; /* audio readout, maintained by demand ISR */
- bool bEOF; /* flag for end of file */
- int low_water; /* reload threshold */
- int high_water; /* end of reload threshold */
- int spinup_safety; /* safety margin when recalculating low_water */
- int nReadChunk; /* how much data for normal buffer fill */
- int nSeekChunk; /* how much data while seeking */
-} gBuf;
-
-/* statistics */
-static struct
-{
- int minAudioAvail;
- int minVideoAvail;
- int nAudioUnderruns;
- int nVideoUnderruns;
- long minSpinup;
- long maxSpinup;
-} gStats;
-
-tFileHeader gFileHdr; /* file header */
-
-/****************** implementation ******************/
-
-/* tool function: return how much playable audio/video is left */
-static int Available(unsigned char* pSnapshot)
-{
- if (pSnapshot <= gBuf.pBufFill)
- return gBuf.pBufFill - pSnapshot;
- else
- return gBuf.bufsize - (pSnapshot - gBuf.pBufFill);
-}
-
-/* debug function to draw buffer indicators */
-#ifdef VIDEO_DEBUG
-static void DrawBuf(void)
-{
- int ypos, fill, video, audio;
-
- rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
- rb->lcd_fillrect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- rb->lcd_set_drawmode(DRMODE_SOLID);
-
- ypos = gBuf.osd_ypos + gBuf.osd_height/2 - 3; /* center vertically */
-
- rb->lcd_hline(1, LCD_WIDTH-2, ypos + 3);
- rb->lcd_vline(0, ypos, ypos + 6);
- rb->lcd_vline(LCD_WIDTH-1, ypos, ypos + 6);
-
- /* calculate new tick positions */
- fill = 1 + ((gBuf.pBufFill - gBuf.pBufStart) * (LCD_WIDTH-2)) / gBuf.bufsize;
- video = 1 + ((gBuf.pReadVideo - gBuf.pBufStart) * (LCD_WIDTH-2)) / gBuf.bufsize;
- audio = 1 + ((gBuf.pReadAudio - gBuf.pBufStart) * (LCD_WIDTH-2)) / gBuf.bufsize;
-
- rb->lcd_drawpixel(fill, ypos + 4);
- rb->lcd_drawpixel(video, ypos + 2);
- rb->lcd_drawpixel(audio, ypos + 1);
-
- if (gPlay.state == paused) /* we have to draw ourselves */
- rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- else
- gPlay.bDirtyOSD = true; /* redraw it with next timer IRQ */
-}
-#endif
-
-
-/* helper function to draw a position indicator */
-static void DrawPosition(int pos, int total)
-{
- int w, h;
- int sec; /* estimated seconds */
- int ypos;
-
- rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
- rb->lcd_fillrect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- rb->lcd_set_drawmode(DRMODE_SOLID);
-
- /* print the estimated position */
- sec = pos / (gFileHdr.bps_average/8);
- if (sec < 100*60) /* fits into mm:ss format */
- rb->snprintf(gPrint, sizeof(gPrint), "%02d:%02dm", sec/60, sec%60);
- else /* a very long clip, hh:mm format */
- rb->snprintf(gPrint, sizeof(gPrint), "%02d:%02dh", sec/3600, (sec/60)%60);
-
- rb->lcd_getstringsize(gPrint, &w, &h);
- w++;
- ypos = gBuf.osd_ypos + (gBuf.osd_height - h) / 2;
- rb->lcd_putsxy(0, ypos, gPrint);
-
- /* draw a slider over the rest of the line */
- rb->gui_scrollbar_draw(rb->screens[SCREEN_MAIN], w, ypos, LCD_WIDTH-w,
- h, total, 0, pos, HORIZONTAL);
-
- if (gPlay.state == paused) /* we have to draw ourselves */
- rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- else /* let the display time do it */
- {
- gPlay.nTimeOSD = FPS;
- gPlay.bDirtyOSD = true; /* redraw it with next timer IRQ */
- }
-}
-
-/* Put text on OSD and activate it for 1 second */
-static void osd_show_text(void)
-{
- int h, ypos;
-
- rb->lcd_set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID);
- rb->lcd_fillrect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- rb->lcd_set_drawmode(DRMODE_SOLID);
-
- rb->lcd_getstringsize(gPrint, NULL, &h);
- ypos = gBuf.osd_ypos + (gBuf.osd_height - h) / 2;
- rb->lcd_putsxy(0, ypos, gPrint);
-
- if (gPlay.state == paused) /* we have to draw ourselves */
- rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- else /* let the display time do it */
- {
- gPlay.nTimeOSD = FPS; /* display it for 1 sec */
- gPlay.bDirtyOSD = true; /* let the refresh copy it to LCD */
- }
-}
-
-/* helper function to change the volume by a certain amount, +/- */
-static void ChangeVolume(int delta)
-{
- int minvol = rb->sound_min(SOUND_VOLUME);
- int maxvol = rb->sound_max(SOUND_VOLUME);
- int vol = rb->global_settings->volume + delta;
-
- if (vol > maxvol) vol = maxvol;
- else if (vol < minvol) vol = minvol;
- if (vol != rb->global_settings->volume)
- {
- rb->sound_set(SOUND_VOLUME, vol);
- rb->global_settings->volume = vol;
-
- rb->snprintf(gPrint, sizeof(gPrint), "Vol: %d dB", vol);
- osd_show_text();
- }
-}
-
-
-/* helper function to change the LCD contrast by a certain amount, +/- */
-static void ChangeContrast(int delta)
-{
- static int mycontrast = -1; /* the "permanent" value while running */
- int contrast; /* updated value */
-
- if (mycontrast == -1)
- mycontrast = rb->global_settings->contrast;
-
- contrast = mycontrast + delta;
- if (contrast > 63) contrast = 63;
- else if (contrast < 5) contrast = 5;
- if (contrast != mycontrast)
- {
- rb->lcd_set_contrast(contrast);
- mycontrast = contrast;
-
- rb->snprintf(gPrint, sizeof(gPrint), "Contrast: %d", contrast);
- osd_show_text();
- }
-}
-
-
-/* sync the video to the current audio */
-static void SyncVideo(void)
-{
- tAudioFrameHeader* pAudioBuf;
-
- pAudioBuf = (tAudioFrameHeader*)(gBuf.pReadAudio);
- if (pAudioBuf->magic == AUDIO_MAGIC)
- {
- gBuf.vidcount = 0; /* nothing known */
- /* sync the video position */
- gBuf.pReadVideo = gBuf.pReadAudio +
- (long)pAudioBuf->associated_video * (long)gFileHdr.blocksize;
-
- /* handle possible wrap */
- if (gBuf.pReadVideo >= gBuf.pBufEnd)
- gBuf.pReadVideo -= gBuf.bufsize;
- else if (gBuf.pReadVideo < gBuf.pBufStart)
- gBuf.pReadVideo += gBuf.bufsize;
- }
-}
-
-
-/* timer interrupt handler to display a frame */
-static void timer4_isr(void)
-{
- int available;
- tAudioFrameHeader* pAudioBuf;
- int height; /* height to display */
-
- /* reduce height if we have OSD on */
- height = gFileHdr.video_height;
- if (gPlay.nTimeOSD > 0)
- {
- gPlay.nTimeOSD--;
- height = MIN(gBuf.osd_ypos, height);
- if (gPlay.bDirtyOSD)
- {
- rb->lcd_update_rect(0, gBuf.osd_ypos, LCD_WIDTH, gBuf.osd_height);
- gPlay.bDirtyOSD = false;
- }
- }
-
- rb->lcd_blit_mono(gBuf.pReadVideo, 0, 0,
- gFileHdr.video_width, height/8, gFileHdr.video_width);
-
- available = Available(gBuf.pReadVideo);
-
- /* loop to skip audio frame(s) */
- while(1)
- {
- /* just for the statistics */
- if (!gBuf.bEOF && available < gStats.minVideoAvail)
- gStats.minVideoAvail = available;
-
- if (available <= (int)gFileHdr.blocksize)
- { /* no data for next frame */
-
- if (gBuf.bEOF && (gFileHdr.flags & FLAG_LOOP))
- { /* loop now, assuming the looped clip fits in memory */
- gBuf.pReadVideo = gBuf.pBufStart + gFileHdr.video_1st_frame;
- /* FixMe: pReadVideo is incremented below */
- }
- else
- {
- gPlay.bVideoUnderrun = true;
- rb->timer_unregister(); /* disable ourselves */
- return; /* no data available */
- }
- }
- else /* normal advance for next time */
- {
- gBuf.pReadVideo += gFileHdr.blocksize;
- if (gBuf.pReadVideo >= gBuf.pBufEnd)
- gBuf.pReadVideo -= gBuf.bufsize; /* wraparound */
- available -= gFileHdr.blocksize;
- }
-
- if (!gPlay.bHasAudio)
- break; /* no need to skip any audio */
-
- if (gBuf.vidcount)
- {
- /* we know the next is a video frame */
- gBuf.vidcount--;
- break; /* exit the loop */
- }
-
- pAudioBuf = (tAudioFrameHeader*)(gBuf.pReadVideo);
- if (pAudioBuf->magic == AUDIO_MAGIC)
- { /* we ran into audio, can happen after seek */
- gBuf.vidcount = pAudioBuf->next_block;
- if (gBuf.vidcount)
- gBuf.vidcount--; /* minus the audio block */
- }
- } /* while */
-}
-
-
-/* ISR function to get more mp3 data */
-static void GetMoreMp3(const void** start, size_t* size)
-{
- int available;
- int advance;
-
- tAudioFrameHeader* pAudioBuf = (tAudioFrameHeader*)(gBuf.pReadAudio);
-
- advance = pAudioBuf->next_block * gFileHdr.blocksize;
-
- available = Available(gBuf.pReadAudio);
-
- /* just for the statistics */
- if (!gBuf.bEOF && available < gStats.minAudioAvail)
- gStats.minAudioAvail = available;
-
- if (available < advance + (int)gFileHdr.blocksize || advance == 0)
- {
- gPlay.bAudioUnderrun = true;
- return; /* no data available */
- }
-
- gBuf.pReadAudio += advance;
- if (gBuf.pReadAudio >= gBuf.pBufEnd)
- gBuf.pReadAudio -= gBuf.bufsize; /* wraparound */
-
- *start = gBuf.pReadAudio + gFileHdr.audio_headersize;
- *size = gFileHdr.blocksize - gFileHdr.audio_headersize;
-}
-
-
-static int WaitForButton(void)
-{
- int button;
-
- do
- {
- button = rb->button_get(true);
- rb->default_event_handler(button);
- } while ((button & BUTTON_REL) && button != SYS_USB_CONNECTED);
-
- return button;
-}
-
-
-static bool WantResume(int fd)
-{
- int button;
-
- rb->lcd_puts(0, 0, "Resume to this");
- rb->lcd_puts(0, 1, "last position?");
- rb->lcd_puts(0, 2, "PLAY = yes");
- rb->lcd_puts(0, 3, "Any Other = no");
- rb->lcd_puts(0, 4, " (plays from start)");
- DrawPosition(gFileHdr.resume_pos, rb->filesize(fd));
- rb->lcd_update();
-
- button = WaitForButton();
- return (button == VIDEO_RESUME);
-}
-
-
-static int SeekTo(int fd, int nPos)
-{
- int read_now, got_now;
-
- if (gPlay.bHasAudio)
- rb->mp3_play_stop(); /* stop audio ISR */
- if (gPlay.bHasVideo)
- rb->timer_unregister(); /* stop the timer */
-
- rb->lseek(fd, nPos, SEEK_SET);
-
- gBuf.pBufFill = gBuf.pBufStart; /* all empty */
- gBuf.pReadVideo = gBuf.pReadAudio = gBuf.pBufStart;
-
- read_now = gBuf.low_water - 1; /* less than low water, so loading will continue */
- read_now -= read_now % gBuf.granularity; /* round down to granularity */
- got_now = rb->read(fd, gBuf.pBufFill, read_now);
- gBuf.bEOF = (read_now != got_now);
- gBuf.pBufFill += got_now;
-
- if (nPos == 0)
- { /* we seeked to the start */
- if (gPlay.bHasVideo)
- gBuf.pReadVideo += gFileHdr.video_1st_frame;
-
- if (gPlay.bHasAudio)
- gBuf.pReadAudio += gFileHdr.audio_1st_frame;
- }
- else
- { /* we have to search for the positions */
- if (gPlay.bHasAudio) /* prepare audio playback, if contained */
- {
- /* search for audio frame */
- while (((tAudioFrameHeader*)(gBuf.pReadAudio))->magic != AUDIO_MAGIC)
- gBuf.pReadAudio += gFileHdr.blocksize;
-
- if (gPlay.bHasVideo)
- SyncVideo(); /* pick the right video for that */
- }
- }
-
- /* synchronous start */
- gPlay.state = playing;
- if (gPlay.bHasAudio)
- {
- gPlay.bAudioUnderrun = false;
- rb->mp3_play_data(gBuf.pReadAudio + gFileHdr.audio_headersize,
- gFileHdr.blocksize - gFileHdr.audio_headersize, GetMoreMp3);
- rb->mp3_play_pause(true); /* kickoff audio */
- }
- if (gPlay.bHasVideo)
- {
- gPlay.bVideoUnderrun = false;
- /* start display interrupt */
-#if FREQ == 12000000 /* Ondio speed kludge */
- rb->timer_register(1, NULL, gPlay.nFrameTimeAdjusted,
- timer4_isr IF_COP(, CPU));
-#else
- rb->timer_register(1, NULL, gFileHdr.video_frametime,
- timer4_isr IF_COP(, CPU));
-#endif
- }
-
- return 0;
-}
-
-/* called from default_event_handler_ex() or at end of playback */
-static void Cleanup(void *fd)
-{
- rb->close(*(int*)fd); /* close the file */
-
- if (gPlay.bHasVideo)
- rb->timer_unregister(); /* stop video ISR, now I can use the display again */
-
- if (gPlay.bHasAudio)
- rb->mp3_play_stop(); /* stop audio ISR */
-
- /* Turn on backlight timeout (revert to settings) */
- backlight_use_settings();
-
- /* restore normal contrast */
- rb->lcd_set_contrast(rb->global_settings->contrast);
-}
-
-/* returns >0 if continue, =0 to stop, <0 to abort (USB) */
-static int PlayTick(int fd)
-{
- int button;
- static int lastbutton = 0;
- int avail_audio = -1, avail_video = -1;
- int retval = 1;
- int filepos;
-
- /* check buffer level */
-
- if (gPlay.bHasAudio)
- avail_audio = Available(gBuf.pReadAudio);
- if (gPlay.bHasVideo)
- avail_video = Available(gBuf.pReadVideo);
-
- if ((gPlay.bHasAudio && avail_audio < gBuf.low_water)
- || (gPlay.bHasVideo && avail_video < gBuf.low_water))
- {
- gPlay.bRefilling = true; /* go to refill mode */
- }
-
- if ((!gPlay.bHasAudio || gPlay.bAudioUnderrun)
- && (!gPlay.bHasVideo || gPlay.bVideoUnderrun)
- && gBuf.bEOF)
- {
- if (gFileHdr.resume_pos)
- { /* we played til the end, clear resume position */
- gFileHdr.resume_pos = 0;
- rb->lseek(fd, 0, SEEK_SET); /* save resume position */
- rb->write(fd, &gFileHdr, sizeof(gFileHdr));
- }
- Cleanup(&fd);
- return 0; /* all expired */
- }
-
- if (!gPlay.bRefilling || gBuf.bEOF)
- { /* nothing to do */
- button = rb->button_get_w_tmo(HZ/10);
- }
- else
- { /* refill buffer */
- int read_now, got_now;
- int buf_free;
- long spinup; /* measure the spinup time */
-
- /* how much can we reload, don't fill completely, would appear empty */
- buf_free = gBuf.bufsize - MAX(avail_audio, avail_video) - gBuf.high_water;
- if (buf_free < 0)
- buf_free = 0; /* just for safety */
- buf_free -= buf_free % gBuf.granularity; /* round down to granularity */
-
- /* in one piece max. up to buffer end (wrap after that) */
- read_now = MIN(buf_free, gBuf.pBufEnd - gBuf.pBufFill);
-
- /* load piecewise, to stay responsive */
- read_now = MIN(read_now, gBuf.nReadChunk);
-
- if (read_now == buf_free)
- gPlay.bRefilling = false; /* last piece requested */
-
- spinup = *rb->current_tick; /* in case this is interesting below */
-
- got_now = rb->read(fd, gBuf.pBufFill, read_now);
- if (got_now != read_now || read_now == 0)
- {
- gBuf.bEOF = true;
- gPlay.bRefilling = false;
- }
-
- if (gPlay.bDiskSleep) /* statistics about the spinup time */
- {
- spinup = *rb->current_tick - spinup;
- gPlay.bDiskSleep = false;
- if (spinup > gStats.maxSpinup)
- gStats.maxSpinup = spinup;
- if (spinup < gStats.minSpinup)
- gStats.minSpinup = spinup;
-
- /* recalculate the low water mark from real measurements */
- gBuf.low_water = (gStats.maxSpinup + gBuf.spinup_safety)
- * gFileHdr.bps_peak / 8 / HZ;
- }
-
- if (!gPlay.bRefilling
-#ifdef HAVE_DISK_STORAGE
- && rb->global_settings->disk_spindown < 20 /* condition for test only */
-#endif
- )
- {
- rb->storage_sleep(); /* no point in leaving the disk run til timeout */
- gPlay.bDiskSleep = true;
- }
-
- gBuf.pBufFill += got_now;
- if (gBuf.pBufFill >= gBuf.pBufEnd)
- gBuf.pBufFill = gBuf.pBufStart; /* wrap */
-
- rb->yield(); /* have mercy with the other threads */
- button = rb->button_get(false);
- }
-
- /* check keypresses */
-
- if (button != BUTTON_NONE)
- {
- filepos = rb->lseek(fd, 0, SEEK_CUR);
-
- if (gPlay.bHasVideo) /* video position is more accurate */
- filepos -= Available(gBuf.pReadVideo); /* take video position */
- else
- filepos -= Available(gBuf.pReadAudio); /* else audio */
-
- switch (button) { /* set exit conditions */
- case BUTTON_OFF:
- if (gFileHdr.magic == HEADER_MAGIC /* only if file has header */
- && !(gFileHdr.flags & FLAG_LOOP)) /* not for stills */
- {
- gFileHdr.resume_pos = filepos;
- rb->lseek(fd, 0, SEEK_SET); /* save resume position */
- rb->write(fd, &gFileHdr, sizeof(gFileHdr));
- }
- Cleanup(&fd);
- retval = 0; /* signal "stopped" to caller */
- break;
- case VIDEO_STOP_SEEK:
-#ifdef VIDEO_STOP_SEEK_PRE
- if (lastbutton != VIDEO_STOP_SEEK_PRE)
- break;
-#endif
- if (gPlay.bSeeking)
- {
- gPlay.bSeeking = false;
- gPlay.state = playing;
- SeekTo(fd, gPlay.nSeekPos);
- }
- else if (gPlay.state == playing)
- {
- gPlay.state = paused;
- if (gPlay.bHasAudio)
- rb->mp3_play_pause(false); /* pause audio */
- if (gPlay.bHasVideo)
- rb->timer_unregister(); /* stop the timer */
- }
- else if (gPlay.state == paused)
- {
- gPlay.state = playing;
- if (gPlay.bHasAudio)
- {
- if (gPlay.bHasVideo)
- SyncVideo();
- rb->mp3_play_pause(true); /* play audio */
- }
- if (gPlay.bHasVideo)
- { /* start the video */
-#if FREQ == 12000000 /* Ondio speed kludge */
- rb->timer_register(1, NULL,
- gPlay.nFrameTimeAdjusted, timer4_isr);
-#else
- rb->timer_register(1, NULL,
- gFileHdr.video_frametime, timer4_isr);
-#endif
- }
- }
- break;
- case BUTTON_UP:
- case BUTTON_UP | BUTTON_REPEAT:
- if (gPlay.bHasAudio)
- ChangeVolume(1);
- break;
- case BUTTON_DOWN:
- case BUTTON_DOWN | BUTTON_REPEAT:
- if (gPlay.bHasAudio)
- ChangeVolume(-1);
- break;
- case BUTTON_LEFT:
- case BUTTON_LEFT | BUTTON_REPEAT:
- if (!gPlay.bSeeking) /* prepare seek */
- {
- gPlay.nSeekPos = filepos;
- gPlay.bSeeking = true;
- gPlay.nSeekAcc = 0;
- }
- else if (gPlay.nSeekAcc > 0) /* other direction, stop sliding */
- gPlay.nSeekAcc = 0;
- else
- gPlay.nSeekAcc--;
- break;
- case BUTTON_RIGHT:
- case BUTTON_RIGHT | BUTTON_REPEAT:
- if (!gPlay.bSeeking) /* prepare seek */
- {
- gPlay.nSeekPos = filepos;
- gPlay.bSeeking = true;
- gPlay.nSeekAcc = 0;
- }
- else if (gPlay.nSeekAcc < 0) /* other direction, stop sliding */
- gPlay.nSeekAcc = 0;
- else
- gPlay.nSeekAcc++;
- break;
-#ifdef VIDEO_DEBUG
- case VIDEO_DEBUG: /* debug key */
- case VIDEO_DEBUG | BUTTON_REPEAT:
- DrawBuf(); /* show buffer status */
- gPlay.nTimeOSD = FPS/2;
- gPlay.bDirtyOSD = true;
- break;
-#endif
- case VIDEO_CONTRAST_DOWN: /* contrast down */
- case VIDEO_CONTRAST_DOWN | BUTTON_REPEAT:
- if (gPlay.bHasVideo)
- ChangeContrast(-1);
- break;
- case VIDEO_CONTRAST_UP: /* contrast up */
- case VIDEO_CONTRAST_UP | BUTTON_REPEAT:
- if (gPlay.bHasVideo)
- ChangeContrast(1);
- break;
- default:
- if (rb->default_event_handler_ex(button, Cleanup, &fd)
- == SYS_USB_CONNECTED)
- retval = -1; /* signal "aborted" to caller */
- break;
- }
-
- lastbutton = button;
- } /* if (button != BUTTON_NONE) */
-
-
- /* handle seeking */
-
- if (gPlay.bSeeking) /* seeking? */
- {
- if (gPlay.nSeekAcc < -MAX_ACC)
- gPlay.nSeekAcc = -MAX_ACC;
- else if (gPlay.nSeekAcc > MAX_ACC)
- gPlay.nSeekAcc = MAX_ACC;
-
- gPlay.nSeekPos += gPlay.nSeekAcc * gBuf.nSeekChunk;
- if (gPlay.nSeekPos < 0)
- gPlay.nSeekPos = 0;
- if (gPlay.nSeekPos > rb->filesize(fd) - gBuf.granularity)
- {
- gPlay.nSeekPos = rb->filesize(fd);
- gPlay.nSeekPos -= gPlay.nSeekPos % gBuf.granularity;
- }
- DrawPosition(gPlay.nSeekPos, rb->filesize(fd));
- }
-
-
- /* check + recover underruns */
-
- if ((gPlay.bAudioUnderrun || gPlay.bVideoUnderrun) && !gBuf.bEOF)
- {
- gBuf.spinup_safety += HZ/2; /* add extra spinup time for the future */
- filepos = rb->lseek(fd, 0, SEEK_CUR);
-
- if (gPlay.bHasVideo && gPlay.bVideoUnderrun)
- {
- gStats.nVideoUnderruns++;
- filepos -= Available(gBuf.pReadVideo); /* take video position */
- SeekTo(fd, filepos);
- }
- else if (gPlay.bHasAudio && gPlay.bAudioUnderrun)
- {
- gStats.nAudioUnderruns++;
- filepos -= Available(gBuf.pReadAudio); /* else audio */
- SeekTo(fd, filepos);
- }
- }
-
- return retval;
-}
-
-
-static int main(char* filename)
-{
- int file_size;
- int fd; /* file descriptor handle */
- int read_now, got_now;
- int button = 0;
- int retval;
-
- /* try to open the file */
- fd = rb->open(filename, O_RDWR);
- if (fd < 0)
- return PLUGIN_ERROR;
- file_size = rb->filesize(fd);
-
- /* reset pitch value to ensure synchronous playback */
- rb->sound_set_pitch(PITCH_SPEED_100);
-
- /* init statistics */
- rb->memset(&gStats, 0, sizeof(gStats));
- gStats.minAudioAvail = gStats.minVideoAvail = INT_MAX;
- gStats.minSpinup = INT_MAX;
-
- /* init playback state */
- rb->memset(&gPlay, 0, sizeof(gPlay));
-
- /* init buffer */
- rb->memset(&gBuf, 0, sizeof(gBuf));
- gBuf.pBufStart = rb->plugin_get_audio_buffer((size_t *)&gBuf.bufsize);
- /*gBuf.bufsize = 1700*1024; // test, like 2MB version!!!! */
- gBuf.pBufFill = gBuf.pBufStart; /* all empty */
-
- /* init OSD */
- rb->lcd_getstringsize("X", NULL, &retval);
- gBuf.osd_height = (retval + 7) & ~7;
- gBuf.osd_ypos = LCD_HEIGHT - gBuf.osd_height;
-
- /* load file header */
- read_now = sizeof(gFileHdr);
- got_now = rb->read(fd, &gFileHdr, read_now);
- rb->lseek(fd, 0, SEEK_SET); /* rewind to restart sector-aligned */
- if (got_now != read_now)
- {
- rb->close(fd);
- return (PLUGIN_ERROR);
- }
-
- /* check header */
- if (gFileHdr.magic != HEADER_MAGIC)
- { /* old file, use default info */
- rb->memset(&gFileHdr, 0, sizeof(gFileHdr));
- gFileHdr.blocksize = SCREENSIZE;
- if (file_size < SCREENSIZE * FPS) /* less than a second */
- gFileHdr.flags |= FLAG_LOOP;
- gFileHdr.video_format = VIDEOFORMAT_RAW;
- gFileHdr.video_width = LCD_WIDTH;
- gFileHdr.video_height = LCD_HEIGHT;
- gFileHdr.video_frametime = 11059200 / FPS;
- gFileHdr.bps_peak = gFileHdr.bps_average = LCD_WIDTH * LCD_HEIGHT * FPS;
- }
-
-#if FREQ == 12000000 /* Ondio speed kludge, 625 / 576 == 12000000 / 11059200 */
- gPlay.nFrameTimeAdjusted = (gFileHdr.video_frametime * 625) / 576;
-#endif
-
- /* continue buffer init: align the end, calc low water, read sizes */
- gBuf.granularity = gFileHdr.blocksize;
- while (gBuf.granularity % 512) /* common multiple of sector size */
- gBuf.granularity *= 2;
- gBuf.bufsize -= gBuf.bufsize % gBuf.granularity; /* round down */
- gBuf.pBufEnd = gBuf.pBufStart + gBuf.bufsize;
- gBuf.low_water = SPINUP_INIT * gFileHdr.bps_peak / 8000;
- gBuf.spinup_safety = SPINUP_SAFETY * HZ / 1000; /* in time ticks */
- if (gFileHdr.audio_min_associated < 0)
- gBuf.high_water = 0 - gFileHdr.audio_min_associated;
- else
- gBuf.high_water = 1; /* never fill buffer completely, would appear empty */
- gBuf.nReadChunk = (CHUNK + gBuf.granularity - 1); /* round up */
- gBuf.nReadChunk -= gBuf.nReadChunk % gBuf.granularity;/* and align */
- gBuf.nSeekChunk = rb->filesize(fd) / FF_TICKS;
- gBuf.nSeekChunk += gBuf.granularity - 1; /* round up */
- gBuf.nSeekChunk -= gBuf.nSeekChunk % gBuf.granularity; /* and align */
-
- /* prepare video playback, if contained */
- if (gFileHdr.video_format == VIDEOFORMAT_RAW)
- {
- gPlay.bHasVideo = true;
- /* Turn off backlight timeout */
- backlight_ignore_timeout();
- }
-
- /* prepare audio playback, if contained */
- if (gFileHdr.audio_format == AUDIOFORMAT_MP3_BITSWAPPED)
- {
- gPlay.bHasAudio = true;
- }
-
- /* start playback by seeking to zero or resume position */
- if (gFileHdr.resume_pos && WantResume(fd)) /* ask the user */
- SeekTo(fd, gFileHdr.resume_pos);
- else
- SeekTo(fd, 0);
-
- /* all that's left to do is keep the buffer full */
- do /* the main loop */
- {
- retval = PlayTick(fd);
- } while (retval > 0);
-
- if (retval < 0) /* aborted? */
- {
- return PLUGIN_USB_CONNECTED;
- }
-
-#ifndef DEBUG /* for release compilations, only display the stats in case of error */
- if (gStats.nAudioUnderruns || gStats.nVideoUnderruns)
-#endif
- {
- /* display statistics */
- rb->lcd_clear_display();
- rb->snprintf(gPrint, sizeof(gPrint), "%d Audio Underruns", gStats.nAudioUnderruns);
- rb->lcd_puts(0, 0, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "%d Video Underruns", gStats.nVideoUnderruns);
- rb->lcd_puts(0, 1, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "%d MinAudio bytes", gStats.minAudioAvail);
- rb->lcd_puts(0, 2, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "%d MinVideo bytes", gStats.minVideoAvail);
- rb->lcd_puts(0, 3, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "MinSpinup %ld.%02ld", gStats.minSpinup/HZ, gStats.minSpinup%HZ);
- rb->lcd_puts(0, 4, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "MaxSpinup %ld.%02ld", gStats.maxSpinup/HZ, gStats.maxSpinup%HZ);
- rb->lcd_puts(0, 5, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "LowWater: %d", gBuf.low_water);
- rb->lcd_puts(0, 6, gPrint);
- rb->snprintf(gPrint, sizeof(gPrint), "HighWater: %d", gBuf.high_water);
- rb->lcd_puts(0, 7, gPrint);
-
- rb->lcd_update();
- button = WaitForButton();
- }
- return (button == SYS_USB_CONNECTED) ? PLUGIN_USB_CONNECTED : PLUGIN_OK;
-}
-
-
-/***************** Plugin Entry Point *****************/
-
-enum plugin_status plugin_start(const void* parameter)
-{
- if (parameter == NULL)
- {
- rb->splash(HZ*2, "Play .rvf file!");
- return PLUGIN_ERROR;
- }
-
- /* now go ahead and have fun! */
- return main((char*) parameter);
-}
-
-#endif /* #ifdef HAVE_LCD_BITMAP */
-
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 @@
/* variable button definitions */
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define VUMETER_QUIT BUTTON_OFF
-#define VUMETER_HELP BUTTON_ON
-#define VUMETER_MENU BUTTON_F1
-#define VUMETER_UP BUTTON_UP
-#define VUMETER_DOWN BUTTON_DOWN
-#define LABEL_HELP "ON"
-#define LABEL_QUIT "OFF"
-#define LABEL_MENU "F1"
-#define LABEL_VOLUME "UP/DOWN"
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define VUMETER_QUIT BUTTON_OFF
-#define VUMETER_HELP_PRE BUTTON_MENU
-#define VUMETER_HELP (BUTTON_MENU | BUTTON_REL)
-#define VUMETER_MENU_PRE BUTTON_MENU
-#define VUMETER_MENU (BUTTON_MENU | BUTTON_REPEAT)
-#define VUMETER_UP BUTTON_UP
-#define VUMETER_DOWN BUTTON_DOWN
-#define LABEL_HELP "MODE"
-#define LABEL_QUIT "OFF"
-#define LABEL_MENU "MODE.."
-#define LABEL_VOLUME "UP/DOWN"
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
- (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || \
+ (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define VUMETER_QUIT BUTTON_OFF
#define VUMETER_HELP BUTTON_ON
#define VUMETER_MENU BUTTON_SELECT
@@ -804,10 +780,7 @@ static void draw_digital_minimeters(void) {
static void analog_meter(void) {
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- int left_peak = rb->mas_codec_readreg(0xC);
- int right_peak = rb->mas_codec_readreg(0xD);
-#elif (CONFIG_CODEC == SWCODEC)
+#if (CONFIG_CODEC == SWCODEC)
static struct pcm_peaks peaks;
rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
&peaks);
@@ -864,10 +837,7 @@ static void analog_meter(void) {
}
static void digital_meter(void) {
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- int left_peak = rb->mas_codec_readreg(0xC);
- int right_peak = rb->mas_codec_readreg(0xD);
-#elif (CONFIG_CODEC == SWCODEC)
+#if (CONFIG_CODEC == SWCODEC)
static struct pcm_peaks peaks;
rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
&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 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 Jörg Hohensohn
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "plugin.h"
-
-
-
-/************ Start of MAS pcm codec, raw i2c blocks ************/
-
-// address 04640 count 30 (126 bytes)
-static const unsigned char maspcm_array1[] = {
- 0xe0, 0x00, 0x00, 0x1e, 0x06, 0x40,
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x25, // 00000025
- 0x00, 0x00, 0x00, 0x04, // 00000004
- 0x00, 0x00, 0x48, 0x00, // 00004800
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xFF, 0xFF, // 0000FFFF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x82, 0x00, // 00008200
- 0x00, 0x00, 0x00, 0x0A, // 0000000A
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x03, 0x18, // 00000318
- 0x00, 0x00, 0x03, 0x18, // 00000318
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x03, 0x18, // 00000318
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x03, 0x00, // 00000300
-};
-// address 04674 count 81 (330 bytes)
-static const unsigned char maspcm_array2[] = {
- 0xe0, 0x00, 0x00, 0x51, 0x06, 0x74,
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x00, 0x60, // 00000060
- 0x00, 0x00, 0x00, 0x60, // 00000060
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0xC0, 0x00, // 0000C000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x1E, // 0000001E
- 0x00, 0x00, 0x42, 0x11, // 00004211
- 0x00, 0x00, 0x58, 0x33, // 00005833
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x01, 0x20, 0x01, // 00012001
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x29, // 00000029
- 0x00, 0x00, 0x30, 0xC3, // 000030C3
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x02, 0x00, // 00000200
- 0x00, 0x01, 0x20, 0x00, // 00012000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x2D, // 0000002D
- 0x00, 0x00, 0x2C, 0x86, // 00002C86
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x00, 0x30, // 00000030
- 0x00, 0x00, 0x00, 0x30, // 00000030
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x01, 0x80, 0x00, // 00018000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x3C, // 0000003C
- 0x00, 0x00, 0x21, 0x93, // 00002193
- 0x00, 0x00, 0x58, 0x33, // 00005833
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x40, 0x01, // 00024001
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x52, // 00000052
- 0x00, 0x00, 0x18, 0xAD, // 000018AD
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x02, 0x00, // 00000200
- 0x00, 0x02, 0x40, 0x00, // 00024000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x5A, // 0000005A
- 0x00, 0x00, 0x16, 0x81, // 00001681
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x18, // 00000018
- 0x00, 0x00, 0x00, 0x18, // 00000018
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x03, 0x00, 0x00, // 00030000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x78, // 00000078
- 0x00, 0x00, 0x10, 0xED, // 000010ED
- 0x00, 0x00, 0x58, 0x33, // 00005833
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x04, 0x80, 0x03, // 00048003
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0xA5, // 000000A5
- 0x00, 0x00, 0x0C, 0x56, // 00000C56
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x02, 0x00, // 00000200
- 0x00, 0x04, 0x80, 0x00, // 00048000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0xB4, // 000000B4
- 0x00, 0x00, 0x0B, 0x51, // 00000B51
-};
-// address 04661 count 19 (82 bytes)
-static const unsigned char maspcm_array3[] = {
- 0xe0, 0x00, 0x00, 0x13, 0x06, 0x61,
- 0x00, 0x00, 0x01, 0x25, // 00000125
- 0x00, 0x00, 0x00, 0x05, // 00000005
- 0x00, 0x00, 0x48, 0x00, // 00004800
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x82, 0x00, // 00008200
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
-};
-// address 046E4 count 16 (70 bytes)
-static const unsigned char maspcm_array4[] = {
- 0xe0, 0x00, 0x00, 0x10, 0x06, 0xe4,
- 0x00, 0x00, 0x06, 0x74, // 00000674
- 0x00, 0x00, 0x06, 0x7D, // 0000067D
- 0x00, 0x00, 0x06, 0x86, // 00000686
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x00, 0x06, 0x8F, // 0000068F
- 0x00, 0x00, 0x06, 0x98, // 00000698
- 0x00, 0x00, 0x06, 0xA1, // 000006A1
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x00, 0x06, 0xAA, // 000006AA
- 0x00, 0x00, 0x06, 0xB3, // 000006B3
- 0x00, 0x00, 0x06, 0xBC, // 000006BC
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
-};
-// address 04700 count 18 (78 byte)
-static const unsigned char maspcm_array5[] = {
- 0xe0, 0x00, 0x00, 0x12, 0x07, 0x00,
- 0x00, 0x00, 0x06, 0xBC, // 000006BC
- 0x00, 0x00, 0x00, 0x0A, // 0000000A
- 0x00, 0x00, 0x06, 0x74, // 00000674
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x06, 0x7D, // 0000067D
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x06, 0x86, // 00000686
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x06, 0x8F, // 0000068F
- 0x00, 0x00, 0x00, 0x04, // 00000004
- 0x00, 0x00, 0x06, 0x98, // 00000698
- 0x00, 0x00, 0x00, 0x05, // 00000005
- 0x00, 0x00, 0x06, 0xA1, // 000006A1
- 0x00, 0x00, 0x00, 0x06, // 00000006
- 0x00, 0x00, 0x06, 0xAA, // 000006AA
- 0x00, 0x00, 0x00, 0x08, // 00000008
- 0x00, 0x00, 0x06, 0xB3, // 000006B3
- 0x00, 0x00, 0x00, 0x09, // 00000009
-};
-// address 06600 count 63 (258 bytes)
-static const unsigned char maspcm_array6[] = {
- 0xf0, 0x00, 0x00, 0x3f, 0x06, 0x00,
- 0x00, 0x00, 0x0B, 0xAD, // 00000BAD
- 0x00, 0x00, 0x10, 0x00, // 00001000
- 0x00, 0x00, 0x20, 0x00, // 00002000
- 0x00, 0x00, 0x30, 0x00, // 00003000
- 0x00, 0x00, 0x40, 0x00, // 00004000
- 0x00, 0x00, 0x50, 0x00, // 00005000
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x70, 0x00, // 00007000
- 0x00, 0x00, 0x80, 0x00, // 00008000
- 0x00, 0x00, 0x90, 0x00, // 00009000
- 0x00, 0x00, 0xA0, 0x00, // 0000A000
- 0x00, 0x00, 0xB0, 0x00, // 0000B000
- 0x00, 0x00, 0xC0, 0x00, // 0000C000
- 0x00, 0x00, 0xD0, 0x00, // 0000D000
- 0x00, 0x00, 0xE0, 0x00, // 0000E000
- 0x00, 0x00, 0xF0, 0x00, // 0000F000
- 0x00, 0x01, 0x00, 0x00, // 00010000
- 0x00, 0x01, 0x10, 0x00, // 00011000
- 0x00, 0x01, 0x20, 0x00, // 00012000
- 0x00, 0x01, 0x30, 0x00, // 00013000
- 0x00, 0x01, 0x40, 0x00, // 00014000
- 0x00, 0x01, 0x50, 0x00, // 00015000
- 0x00, 0x01, 0x60, 0x00, // 00016000
- 0x00, 0x01, 0x70, 0x00, // 00017000
- 0x00, 0x01, 0x80, 0x00, // 00018000
- 0x00, 0x01, 0x90, 0x00, // 00019000
- 0x00, 0x01, 0xA0, 0x00, // 0001A000
- 0x00, 0x01, 0xB0, 0x00, // 0001B000
- 0x00, 0x01, 0xC0, 0x00, // 0001C000
- 0x00, 0x01, 0xD0, 0x00, // 0001D000
- 0x00, 0x01, 0xE0, 0x00, // 0001E000
- 0x00, 0x01, 0xF0, 0x00, // 0001F000
- 0x00, 0x02, 0x00, 0x00, // 00020000
- 0x00, 0x02, 0x10, 0x00, // 00021000
- 0x00, 0x02, 0x20, 0x00, // 00022000
- 0x00, 0x02, 0x30, 0x00, // 00023000
- 0x00, 0x02, 0x40, 0x00, // 00024000
- 0x00, 0x00, 0x05, 0xFF, // 000005FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x05, 0xFF, // 000005FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x0C, // 0000000C
-};
-// address 06640 count 12 (54 bytes)
-static const unsigned char maspcm_array7[] = {
- 0xf0, 0x00, 0x00, 0x0c, 0x06, 0x40,
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-// address 06660 count 28 (118 bytes)
-static const unsigned char maspcm_array8[] = {
- 0xf0, 0x00, 0x00, 0x1c, 0x06, 0x60,
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-// address 04800 count 1668 (6678 bytes)
-static const unsigned char maspcm_array9[] = {
- 0xe0, 0x00, 0x06, 0x84, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x47, 0xC0, // 000747C0
- 0x00, 0x07, 0x04, 0x00, // 00070400
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6B, // 0006C06B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x90, // 00070690
- 0x00, 0x07, 0x4C, 0x07, // 00074C07
- 0x00, 0x07, 0x0F, 0xFF, // 00070FFF
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x1D, // 0006801D
- 0x00, 0x06, 0x80, 0x1F, // 0006801F
- 0x00, 0x06, 0x80, 0x21, // 00068021
- 0x00, 0x06, 0x80, 0x23, // 00068023
- 0x00, 0x06, 0x84, 0x1D, // 0006841D
- 0x00, 0x06, 0x84, 0x1F, // 0006841F
- 0x00, 0x06, 0x84, 0x21, // 00068421
- 0x00, 0x06, 0x84, 0x23, // 00068423
- 0x00, 0x06, 0x88, 0x17, // 00068817
- 0x00, 0x06, 0x8C, 0x17, // 00068C17
- 0x00, 0x06, 0xD0, 0x6D, // 0006D06D
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x57, // 00071E57
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x90, // 00070690
- 0x00, 0x07, 0x4C, 0x07, // 00074C07
- 0x00, 0x07, 0x0F, 0xFF, // 00070FFF
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x1D, // 0006801D
- 0x00, 0x06, 0x80, 0x1F, // 0006801F
- 0x00, 0x06, 0x80, 0x21, // 00068021
- 0x00, 0x06, 0x80, 0x23, // 00068023
- 0x00, 0x06, 0x84, 0x1D, // 0006841D
- 0x00, 0x06, 0x84, 0x1F, // 0006841F
- 0x00, 0x06, 0x84, 0x21, // 00068421
- 0x00, 0x06, 0x84, 0x23, // 00068423
- 0x00, 0x06, 0x88, 0x17, // 00068817
- 0x00, 0x06, 0x8C, 0x17, // 00068C17
- 0x00, 0x06, 0xD0, 0x6D, // 0006D06D
- 0x00, 0x06, 0x98, 0x1E, // 0006981E
- 0x00, 0x04, 0x05, 0x08, // 00040508
- 0x00, 0x04, 0x0D, 0x08, // 00040D08
- 0x00, 0x04, 0x15, 0x08, // 00041508
- 0x00, 0x04, 0x1D, 0x08, // 00041D08
- 0x00, 0x04, 0x25, 0x08, // 00042508
- 0x00, 0x04, 0x2D, 0x08, // 00042D08
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x30, // 00073C30
- 0x00, 0x06, 0x80, 0x3B, // 0006803B
- 0x00, 0x06, 0x88, 0x5B, // 0006885B
- 0x00, 0x06, 0x94, 0x3B, // 0006943B
- 0x00, 0x06, 0x9C, 0x43, // 00069C43
- 0x00, 0x06, 0xA0, 0x53, // 0006A053
- 0x00, 0x06, 0xA8, 0x4B, // 0006A84B
- 0x00, 0x06, 0xB4, 0x53, // 0006B453
- 0x00, 0x06, 0xBC, 0x06, // 0006BC06
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x36, 0x63, // 00073663
- 0x00, 0x02, 0x12, 0x57, // 00021257
- 0x00, 0x07, 0x6C, 0x18, // 00076C18
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0x45, // 00073C45
- 0x00, 0x06, 0xB0, 0x20, // 0006B020
- 0x00, 0x04, 0x36, 0x00, // 00043600
- 0x00, 0x02, 0x12, 0x46, // 00021246
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0x4C, // 00073C4C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x66, // 00070666
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x7F, // 0006947F
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x07, 0x88, 0x04, // 00078804
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x0B, 0x49, 0x7F, // 000B497F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x0A, 0xC1, 0xC2, // 000AC1C2
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x10, 0x70, // 00021070
- 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x90, 0x04, // 00079004
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xC2, 0xC1, // 000AC2C1
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x02, 0x10, 0x85, // 00021085
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6D, // 0006C06D
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x04, // 00076C04
- 0x00, 0x07, 0x2C, 0x7E, // 00072C7E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x10, 0x54, // 00021054
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x74, // 00098074
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x00, // 00071F00
- 0x00, 0x08, 0x80, 0x42, // 00088042
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x11, 0x51, // 00021151
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0A, 0xC2, 0xC3, // 000AC2C3
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x78, // 00098078
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x42, // 00088042
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x11, 0x51, // 00021151
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x66, // 00070666
- 0x00, 0x07, 0x56, 0x00, // 00075600
- 0x00, 0x07, 0x14, 0x03, // 00071403
- 0x00, 0x06, 0x8C, 0x3B, // 00068C3B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x07, 0x90, 0x04, // 00079004
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2F, 0x00, // 00072F00
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x00, // 00070400
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x06, 0xAC, 0x05, // 0006AC05
- 0x00, 0x01, 0x41, 0x00, // 00014100
- 0x00, 0x06, 0x84, 0x1C, // 0006841C
- 0x00, 0x07, 0x8C, 0x0C, // 00078C0C
- 0x00, 0x07, 0x8C, 0x0C, // 00078C0C
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1C, 0x90, // 00071C90
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x17, 0x00, // 00071700
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x25, 0xFF, // 000725FF
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x06, 0x9C, 0x25, // 00069C25
- 0x00, 0x06, 0x98, 0x2D, // 0006982D
- 0x00, 0x06, 0x94, 0x3C, // 0006943C
- 0x00, 0x06, 0xA4, 0x16, // 0006A416
- 0x00, 0x06, 0xA0, 0x16, // 0006A016
- 0x00, 0x06, 0x8C, 0x3B, // 00068C3B
- 0x00, 0x06, 0xAC, 0x24, // 0006AC24
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x0B, 0x52, 0x6F, // 000B526F
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1E, 0x90, // 00071E90
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x1E, // 0006881E
- 0x00, 0x06, 0x90, 0x15, // 00069015
- 0x00, 0x06, 0x98, 0x1F, // 0006981F
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x6F, // 0006846F
- 0x00, 0x06, 0x84, 0x70, // 00068470
- 0x00, 0x04, 0x05, 0x10, // 00040510
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x36, 0x63, // 00073663
- 0x00, 0x02, 0x12, 0x57, // 00021257
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x04, 0x2C, 0x08, // 00042C08
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0xD2, // 00073CD2
- 0x00, 0x06, 0xB0, 0x22, // 0006B022
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x14, 0x20, // 00041420
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x07, 0x66, 0x00, // 00076600
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x5C, 0x80, // 00075C80
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3D, 0x00, // 00073D00
- 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x36, 0xC4, // 000836C4
- 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x02, 0x12, 0x46, // 00021246
- 0x00, 0x09, 0x92, 0x51, // 00099251
- 0x00, 0x08, 0x36, 0xC2, // 000836C2
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0xEA, // 00073CEA
- 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D
- 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C
- 0x00, 0x0B, 0x7F, 0x7F, // 000B7F7F
- 0x00, 0x09, 0xB6, 0x7D, // 0009B67D
- 0x00, 0x0A, 0x3F, 0x53, // 000A3F53
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x0A, 0xF6, 0x43, // 000AF643
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x18, // 00071F18
- 0x00, 0x07, 0x6C, 0x04, // 00076C04
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x04, 0x0C, 0x08, // 00040C08
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x0A, 0x09, 0xC6, // 000A09C6
- 0x00, 0x08, 0x8F, 0xC1, // 00088FC1
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x09, 0x25, // 000C0925
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x00, // 00070400
- 0x00, 0x06, 0x98, 0x53, // 00069853
- 0x00, 0x06, 0x90, 0x2C, // 0006902C
- 0x00, 0x06, 0xA4, 0x24, // 0006A424
- 0x00, 0x06, 0x80, 0x53, // 00068053
- 0x00, 0x06, 0x88, 0x54, // 00068854
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x06, 0x14, 0x6F, // 0006146F
- 0x00, 0x06, 0x00, 0x52, // 00060052
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x06, 0x1C, 0x70, // 00061C70
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x38, // 00029F38
- 0x00, 0x0A, 0x09, 0x74, // 000A0974
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xC9, 0x43, // 000AC943
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0xA1, 0x42, // 0008A142
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x08, 0x1B, 0x41, // 00081B41
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x6F, // 0006946F
- 0x00, 0x06, 0x9C, 0x70, // 00069C70
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x0B, 0x00, 0x41, // 000B0041
- 0x00, 0x07, 0x6C, 0x04, // 00076C04
- 0x00, 0x07, 0x2D, 0x1E, // 00072D1E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x6D, // 0006806D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x24, // 00060424
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x61, // 00071661
- 0x00, 0x08, 0x8C, 0x80, // 00088C80
- 0x00, 0x02, 0x89, 0x10, // 00028910
- 0x00, 0x02, 0x11, 0x03, // 00021103
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x07, 0x54, 0x0C, // 0007540C
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x0A, 0xD8, 0x7E, // 000AD87E
- 0x00, 0x0A, 0xC8, 0x41, // 000AC841
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0A, 0xC8, 0xC2, // 000AC8C2
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x10, 0x08, // 00021008
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x98, 0x07, // 00079807
- 0x00, 0x06, 0x04, 0x6F, // 0006046F
- 0x00, 0x06, 0x0C, 0x70, // 00060C70
- 0x00, 0x0A, 0x10, 0x7D, // 000A107D
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x08, 0x99, 0xC2, // 000899C2
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x10, 0xC2, // 000210C2
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x6B, // 00070E6B
- 0x00, 0x0B, 0x52, 0x50, // 000B5250
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x1C, // 0006881C
- 0x00, 0x0A, 0xCC, 0x82, // 000ACC82
- 0x00, 0x04, 0x1D, 0x88, // 00041D88
- 0x00, 0x04, 0x1D, 0x00, // 00041D00
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x88, 0x04, // 00078804
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x90, // 00070690
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x17, 0x18, // 00071718
- 0x00, 0x06, 0x80, 0x1F, // 0006801F
- 0x00, 0x06, 0x8C, 0x3B, // 00068C3B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x53, // 00069053
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x65, // 00070E65
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x26, 0x68, // 00072668
- 0x00, 0x06, 0x88, 0x20, // 00068820
- 0x00, 0x07, 0x90, 0x06, // 00079006
- 0x00, 0x06, 0x94, 0x7F, // 0006947F
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x07, 0x90, 0x07, // 00079007
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x6B, // 00070E6B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x20, // 00068820
- 0x00, 0x04, 0x0E, 0x00, // 00040E00
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x40, // 00071C40
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x6A, // 0006806A
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x20, // 00071C20
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x6C, // 0006806C
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x10, // 00071C10
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x76, // 00068076
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x67, // 00071E67
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0xE4, // 000706E4
- 0x00, 0x0A, 0xD1, 0x4F, // 000AD14F
- 0x00, 0x08, 0x10, 0xC2, // 000810C2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x1C, // 0006981C
- 0x00, 0x07, 0x90, 0x04, // 00079004
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x07, 0x54, 0x08, // 00075408
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x0A, 0xCC, 0x81, // 000ACC81
- 0x00, 0x08, 0x92, 0xC1, // 000892C1
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x11, 0xBD, // 000211BD
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x02, 0x12, 0x57, // 00021257
- 0x00, 0x07, 0x36, 0x63, // 00073663
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3D, 0xA4, // 00073DA4
- 0x00, 0x06, 0xB0, 0x20, // 0006B020
- 0x00, 0x04, 0x36, 0x08, // 00043608
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x06, 0x00, // 00040600
- 0x00, 0x07, 0x66, 0x00, // 00076600
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x5C, 0x80, // 00075C80
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3D, 0x00, // 00073D00
- 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x36, 0xC4, // 000836C4
- 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x12, 0x46, // 00021246
- 0x00, 0x09, 0x92, 0x51, // 00099251
- 0x00, 0x08, 0x36, 0xC2, // 000836C2
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3D, 0xBF, // 00073DBF
- 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D
- 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C
- 0x00, 0x04, 0x06, 0x08, // 00040608
- 0x00, 0x04, 0x07, 0x08, // 00040708
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x62, // 00070E62
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x2D, // 0007142D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x1C, // 0006881C
- 0x00, 0x04, 0x0C, 0x00, // 00040C00
- 0x00, 0x0A, 0xD2, 0xC1, // 000AD2C1
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x4F, // 0006904F
- 0x00, 0x06, 0x94, 0x77, // 00069477
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x39, // 00070639
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x61, // 00070E61
- 0x00, 0x07, 0x54, 0x12, // 00075412
- 0x00, 0x07, 0x14, 0x30, // 00071430
- 0x00, 0x06, 0x84, 0x1C, // 0006841C
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x06, 0x88, 0x1C, // 0006881C
- 0x00, 0x04, 0x0C, 0x00, // 00040C00
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x09, 0xAC, 0x7F, // 0009AC7F
- 0x00, 0x0A, 0xC1, 0x50, // 000AC150
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0A, 0x24, 0x7F, // 000A247F
- 0x00, 0x0A, 0xC9, 0xC2, // 000AC9C2
- 0x00, 0x08, 0x0B, 0xC1, // 00080BC1
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xA4, 0x00, // 0007A400
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x07, 0x8C, 0x00, // 00078C00
- 0x00, 0x07, 0xAC, 0x00, // 0007AC00
- 0x00, 0x04, 0xA8, 0x00, // 0004A800
- 0x00, 0x07, 0xB4, 0x00, // 0007B400
- 0x00, 0x06, 0x84, 0x45, // 00068445
- 0x00, 0x06, 0x84, 0x46, // 00068446
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x40, // 00071640
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x26, 0x90, // 00072690
- 0x00, 0x0B, 0x49, 0x75, // 000B4975
- 0x00, 0x06, 0x94, 0x1E, // 0006941E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x1F, // 0006A41F
- 0x00, 0x06, 0x8C, 0x15, // 00068C15
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6A, // 0007066A
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x1F, 0x08, // 00041F08
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x06, 0xA4, 0x65, // 0006A465
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x84, 0x0D, // 0007840D
- 0x00, 0x07, 0x8C, 0x5D, // 00078C5D
- 0x00, 0x06, 0xAC, 0x79, // 0006AC79
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x0B, 0x76, 0x41, // 000B7641
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0C, 0x0B, 0x0D, // 000C0B0D
- 0x00, 0x0C, 0x13, 0x0D, // 000C130D
- 0x00, 0x0C, 0x1B, 0x0D, // 000C1B0D
- 0x00, 0x0C, 0x23, 0x0D, // 000C230D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB4, 0x6A, // 0006B46A
- 0x00, 0x06, 0x8C, 0x66, // 00068C66
- 0x00, 0x06, 0x94, 0x67, // 00069467
- 0x00, 0x06, 0x9C, 0x68, // 00069C68
- 0x00, 0x06, 0xA4, 0x69, // 0006A469
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x27, 0x12, // 00072712
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x03, 0x00, // 00040300
- 0x00, 0x04, 0x0B, 0x00, // 00040B00
- 0x00, 0x04, 0x13, 0x00, // 00041300
- 0x00, 0x04, 0x1B, 0x00, // 00041B00
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x07, 0x80, 0x0F, // 0007800F
- 0x00, 0x07, 0x88, 0x0F, // 0007880F
- 0x00, 0x07, 0x90, 0x0F, // 0007900F
- 0x00, 0x07, 0x98, 0x07, // 00079807
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x0A, 0xC4, 0x81, // 000AC481
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x74, // 00098074
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x66, // 00071E66
- 0x00, 0x07, 0x64, 0x04, // 00076404
- 0x00, 0x07, 0x24, 0x08, // 00072408
- 0x00, 0x08, 0x88, 0x41, // 00088841
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x12, 0x8F, // 0002128F
- 0x00, 0x07, 0x56, 0x00, // 00075600
- 0x00, 0x07, 0x14, 0x01, // 00071401
- 0x00, 0x06, 0xA0, 0x08, // 0006A008
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x20, // 00069820
- 0x00, 0x07, 0x90, 0x06, // 00079006
- 0x00, 0x08, 0x98, 0x42, // 00089842
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x18, 0x00, // 00021800
- 0x00, 0x07, 0x56, 0x00, // 00075600
- 0x00, 0x07, 0x14, 0x02, // 00071402
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x90, 0x06, // 00079006
- 0x00, 0x02, 0x10, 0x54, // 00021054
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x64, 0x68, // 000B6468
- 0x00, 0x0A, 0xBE, 0xC4, // 000ABEC4
- 0x00, 0x09, 0xA4, 0x46, // 0009A446
- 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x05, // 0006A405
- 0x00, 0x06, 0xBC, 0x0D, // 0006BC0D
- 0x00, 0x01, 0x41, 0x00, // 00014100
- 0x00, 0x06, 0xAC, 0x0F, // 0006AC0F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB4, 0x0D, // 0006B40D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xBD, 0x4A, // 0009BD4A
- 0x00, 0x09, 0xB6, 0x7C, // 0009B67C
- 0x00, 0x0A, 0xE4, 0x40, // 000AE440
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x07, 0x6F, 0xFF, // 00076FFF
- 0x00, 0x07, 0x2F, 0xFF, // 00072FFF
- 0x00, 0x01, 0x03, 0xA6, // 000103A6
- 0x00, 0x0A, 0x2D, 0x7C, // 000A2D7C
- 0x00, 0x09, 0xA4, 0x41, // 0009A441
- 0x00, 0x09, 0xBF, 0x41, // 0009BF41
- 0x00, 0x08, 0xE4, 0xC5, // 0008E4C5
- 0x00, 0x09, 0x1E, 0xC4, // 00091EC4
- 0x00, 0x02, 0x87, 0x10, // 00028710
- 0x00, 0x0A, 0xE3, 0xC3, // 000AE3C3
- 0x00, 0x08, 0xBF, 0xC5, // 0008BFC5
- 0x00, 0x07, 0x75, 0xD9, // 000775D9
- 0x00, 0x07, 0x36, 0x23, // 00073623
- 0x00, 0x09, 0xA7, 0x40, // 0009A740
- 0x00, 0x07, 0x6D, 0x14, // 00076D14
- 0x00, 0x0C, 0x36, 0x27, // 000C3627
- 0x00, 0x07, 0x2F, 0x2C, // 00072F2C
- 0x00, 0x0B, 0x7D, 0x75, // 000B7D75
- 0x00, 0x08, 0xAD, 0xC4, // 0008ADC4
- 0x00, 0x00, 0xC7, 0x87, // 0000C787
- 0x00, 0x0A, 0x6E, 0xC6, // 000A6EC6
- 0x00, 0x09, 0xA4, 0x44, // 0009A444
- 0x00, 0x08, 0xAD, 0x41, // 0008AD41
- 0x00, 0x09, 0xA4, 0xC5, // 0009A4C5
- 0x00, 0x09, 0xAD, 0x43, // 0009AD43
- 0x00, 0x09, 0xB4, 0x6D, // 0009B46D
- 0x00, 0x09, 0xA4, 0x49, // 0009A449
- 0x00, 0x0A, 0xF6, 0x7F, // 000AF67F
- 0x00, 0x0A, 0x24, 0x77, // 000A2477
- 0x00, 0x02, 0x86, 0x30, // 00028630
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x08, 0xBE, 0x48, // 0008BE48
- 0x00, 0x02, 0x87, 0x18, // 00028718
- 0x00, 0x09, 0xA4, 0x49, // 0009A449
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x09, 0xA4, 0x77, // 0009A477
- 0x00, 0x0B, 0x7F, 0x74, // 000B7F74
- 0x00, 0x08, 0xB6, 0x44, // 0008B644
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x0B, 0x5B, 0x41, // 000B5B41
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0x9B, 0x53, // 00099B53
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x00, 0xC7, 0x87, // 0000C787
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x09, 0xB6, 0x4F, // 0009B64F
- 0x00, 0x08, 0x35, 0xC6, // 000835C6
- 0x00, 0x0B, 0x3F, 0xC7, // 000B3FC7
- 0x00, 0x0A, 0xEC, 0xC4, // 000AECC4
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0D, 0x00, // 00070D00
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x69, // 00071E69
- 0x00, 0x0B, 0x64, 0x7F, // 000B647F
- 0x00, 0x06, 0x90, 0x78, // 00069078
- 0x00, 0x0B, 0x6D, 0x7E, // 000B6D7E
- 0x00, 0x06, 0x98, 0x22, // 00069822
- 0x00, 0x0A, 0xDF, 0x84, // 000ADF84
- 0x00, 0x0A, 0xDF, 0x85, // 000ADF85
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x77, // 00069877
- 0x00, 0x06, 0x98, 0x7A, // 0006987A
- 0x00, 0x06, 0xB8, 0x68, // 0006B868
- 0x00, 0x06, 0xB8, 0x69, // 0006B869
- 0x00, 0x06, 0xB8, 0x6F, // 0006B86F
- 0x00, 0x06, 0xB8, 0x70, // 0006B870
- 0x00, 0x06, 0xB8, 0x71, // 0006B871
- 0x00, 0x06, 0xB8, 0x72, // 0006B872
- 0x00, 0x06, 0xB8, 0x73, // 0006B873
- 0x00, 0x06, 0xB8, 0x74, // 0006B874
- 0x00, 0x06, 0xB8, 0x75, // 0006B875
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x28, 0x6A, // 0006286A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA8, 0x61, // 0006A861
- 0x00, 0x07, 0x65, 0x5D, // 0007655D
- 0x00, 0x07, 0x24, 0x10, // 00072410
- 0x00, 0x06, 0x30, 0x6C, // 0006306C
- 0x00, 0x07, 0x6D, 0x59, // 00076D59
- 0x00, 0x07, 0x2C, 0x50, // 00072C50
- 0x00, 0x08, 0xB6, 0x40, // 0008B640
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x07, 0x65, 0x05, // 00076505
- 0x00, 0x07, 0x25, 0x70, // 00072570
- 0x00, 0x07, 0x6D, 0x15, // 00076D15
- 0x00, 0x07, 0x2D, 0x60, // 00072D60
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA0, 0x66, // 0006A066
- 0x00, 0x06, 0xA8, 0x67, // 0006A867
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x20, // 00071C20
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3D, 0xFF, // 00073DFF
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x00, // 00070E00
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x35, 0xFF, // 000735FF
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x26, 0x98, // 00072698
- 0x00, 0x07, 0x6C, 0x01, // 00076C01
- 0x00, 0x07, 0x2C, 0x90, // 00072C90
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x90, // 00070490
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x06, 0x98, 0x15, // 00069815
- 0x00, 0x06, 0xB8, 0x16, // 0006B816
- 0x00, 0x06, 0xB4, 0x14, // 0006B414
- 0x00, 0x06, 0x88, 0x28, // 00068828
- 0x00, 0x06, 0x88, 0x22, // 00068822
- 0x00, 0x06, 0x90, 0x2E, // 0006902E
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x9C, 0x1C, // 00069C1C
- 0x00, 0x06, 0xB4, 0x26, // 0006B426
- 0x00, 0x06, 0xB4, 0x24, // 0006B424
- 0x00, 0x06, 0xB4, 0x2E, // 0006B42E
- 0x00, 0x06, 0xA0, 0x29, // 0006A029
- 0x00, 0x06, 0xA8, 0x1D, // 0006A81D
- 0x00, 0x06, 0xA8, 0x21, // 0006A821
- 0x00, 0x06, 0xA8, 0x2F, // 0006A82F
- 0x00, 0x06, 0x84, 0x1D, // 0006841D
- 0x00, 0x08, 0x3F, 0x41, // 00083F41
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x01, 0x01, 0x21, // 00010121
- 0x00, 0x06, 0xB8, 0x6E, // 0006B86E
- 0x00, 0x07, 0xA8, 0x0F, // 0007A80F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x38, 0x78, // 00063878
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x05, 0x89, // 00070589
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x07, 0x0D, 0x4B, // 00070D4B
- 0x00, 0x07, 0x54, 0x05, // 00075405
- 0x00, 0x07, 0x15, 0x59, // 00071559
- 0x00, 0x07, 0x5C, 0x05, // 00075C05
- 0x00, 0x07, 0x1D, 0xBD, // 00071DBD
- 0x00, 0x08, 0xBF, 0x40, // 0008BF40
- 0x00, 0x02, 0x9F, 0x40, // 00029F40
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0xC8, // 000704C8
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x07, 0x0C, 0xEE, // 00070CEE
- 0x00, 0x07, 0x54, 0x05, // 00075405
- 0x00, 0x07, 0x14, 0xF8, // 000714F8
- 0x00, 0x07, 0x5C, 0x05, // 00075C05
- 0x00, 0x07, 0x1D, 0x16, // 00071D16
- 0x00, 0x06, 0x80, 0x09, // 00068009
- 0x00, 0x06, 0x88, 0x0D, // 0006880D
- 0x00, 0x06, 0x90, 0x0C, // 0006900C
- 0x00, 0x06, 0x98, 0x0B, // 0006980B
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x20, // 00072720
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x3F, 0x00, // 00043F00
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x0A, 0xFF, 0x44, // 000AFF44
- 0x00, 0x06, 0xA0, 0x5B, // 0006A05B
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x00, // 00072700
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x10, // 00071C10
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x06, 0xA0, 0x5B, // 0006A05B
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x64, 0x04, // 00076404
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x1C, 0x30, // 00071C30
- 0x00, 0x08, 0x24, 0xC7, // 000824C7
- 0x00, 0x06, 0x88, 0x4B, // 0006884B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x9C, 0x06, // 00069C06
- 0x00, 0x06, 0xA0, 0x5B, // 0006A05B
- 0x00, 0x06, 0xA4, 0x76, // 0006A476
- 0x00, 0x06, 0x28, 0x77, // 00062877
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x40, // 00071640
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x90, // 00072490
- 0x00, 0x0B, 0x49, 0x7D, // 000B497D
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x90, 0x1E, // 0006901E
- 0x00, 0x06, 0xA0, 0x1F, // 0006A01F
- 0x00, 0x06, 0x88, 0x14, // 00068814
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x1F, 0x08, // 00041F08
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x07, 0x88, 0x0D, // 0007880D
- 0x00, 0x07, 0x90, 0x0D, // 0007900D
- 0x00, 0x07, 0x98, 0x0D, // 0007980D
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x05, // 0000C105
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0x43, // 00070743
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x38, 0x61, // 00063861
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0xBF, 0x40, // 0008BF40
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x13, 0x6E, // 0002136E
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x06, 0x18, 0x1C, // 0006181C
- 0x00, 0x09, 0x12, 0xC0, // 000912C0
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x9B, 0x44, // 00089B44
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x1B, 0xC2, // 00081BC2
- 0x00, 0x07, 0x45, 0x5D, // 0007455D
- 0x00, 0x07, 0x04, 0x10, // 00070410
- 0x00, 0x07, 0x4D, 0x59, // 00074D59
- 0x00, 0x07, 0x0C, 0x50, // 00070C50
- 0x00, 0x06, 0x98, 0x1C, // 0006981C
- 0x00, 0x00, 0xC1, 0x04, // 0000C104
- 0x00, 0x07, 0x54, 0x04, // 00075404
- 0x00, 0x07, 0x17, 0x60, // 00071760
- 0x00, 0x09, 0x80, 0x48, // 00098048
- 0x00, 0x09, 0x89, 0x78, // 00098978
- 0x00, 0x08, 0x38, 0xC1, // 000838C1
- 0x00, 0x06, 0x90, 0x0F, // 0006900F
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x65, // 00071665
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x07, 0x88, 0x03, // 00078803
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x69, // 00068869
- 0x00, 0x06, 0x88, 0x61, // 00068861
- 0x00, 0x06, 0x08, 0x6F, // 0006086F
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x08, 0x89, 0x41, // 00088941
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x13, 0x8B, // 0002138B
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x88, 0x42, // 00088842
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0xC1, 0x01, // 0000C101
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0x7F, // 0007077F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x6F, // 0006906F
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x10, 0x66, // 00061066
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x16, 0x14, // 00021614
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x10, 0x67, // 00061067
- 0x00, 0x08, 0x91, 0xC2, // 000891C2
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x16, 0x14, // 00021614
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x10, 0x76, // 00061076
- 0x00, 0x06, 0x08, 0x7A, // 0006087A
- 0x00, 0x0A, 0x00, 0xC2, // 000A00C2
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x0C, 0x26, // 00060C26
- 0x00, 0x06, 0x14, 0x1C, // 0006141C
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0x89, 0xC2, // 000889C2
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x06, 0x24, 0x24, // 00062424
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x06, 0x24, 0x2E, // 0006242E
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x20, // 00072C20
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x89, 0xC5, // 000889C5
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x6D, 0x70, // 000B6D70
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x04, 0xB8, 0x0D, // 0004B80D
- 0x00, 0x06, 0xA8, 0x79, // 0006A879
- 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C
- 0x00, 0x00, 0xC1, 0x01, // 0000C101
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0xC5, // 000707C5
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x08, 0x29, 0x40, // 00082940
- 0x00, 0x08, 0x08, 0x40, // 00080840
- 0x00, 0x0C, 0x31, 0x08, // 000C3108
- 0x00, 0x0E, 0x31, 0x09, // 000E3109
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x10, 0x73, // 00061073
- 0x00, 0x0C, 0x01, 0x08, // 000C0108
- 0x00, 0x0E, 0x01, 0x09, // 000E0109
- 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C
- 0x00, 0x09, 0xA7, 0x7F, // 0009A77F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x36, 0x42, // 00083642
- 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C
- 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x06, 0x20, 0x79, // 00062079
- 0x00, 0x08, 0x12, 0x42, // 00081242
- 0x00, 0x08, 0xA4, 0x41, // 0008A441
- 0x00, 0x07, 0xF4, 0x0C, // 0007F40C
- 0x00, 0x07, 0xC4, 0x0C, // 0007C40C
- 0x00, 0x02, 0x9F, 0x50, // 00029F50
- 0x00, 0x06, 0x90, 0x73, // 00069073
- 0x00, 0x06, 0xA0, 0x79, // 0006A079
- 0x00, 0x08, 0x9B, 0x41, // 00089B41
- 0x00, 0x02, 0x87, 0x20, // 00028720
- 0x00, 0x08, 0x0D, 0x40, // 00080D40
- 0x00, 0x08, 0x05, 0x40, // 00080540
- 0x00, 0x02, 0x13, 0xCB, // 000213CB
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x13, 0xBE, // 000213BE
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x00, 0x74, // 00060074
- 0x00, 0x06, 0x0C, 0x1C, // 00060C1C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x14, 0x80, // 00071480
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9E, 0x48, // 00029E48
- 0x00, 0x08, 0x91, 0xC2, // 000891C2
- 0x00, 0x02, 0x89, 0x38, // 00028938
- 0x00, 0x02, 0x15, 0xDB, // 000215DB
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0xF8, // 000707F8
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0E, // 0006800E
- 0x00, 0x02, 0x16, 0x52, // 00021652
- 0x00, 0x07, 0x4C, 0x04, // 00074C04
- 0x00, 0x07, 0x0F, 0xFF, // 00070FFF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x06, 0x00, 0x69, // 00060069
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x65, // 00070E65
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x0A, 0x12, 0xC3, // 000A12C3
- 0x00, 0x06, 0x88, 0x22, // 00068822
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x0A, 0xC0, 0xC2, // 000AC0C2
- 0x00, 0x04, 0x0F, 0x00, // 00040F00
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x09, 0x41, // 00080941
- 0x00, 0x06, 0x00, 0x6A, // 0006006A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x69, // 00068069
- 0x00, 0x07, 0x88, 0x07, // 00078807
- 0x00, 0x06, 0x80, 0x6F, // 0006806F
- 0x00, 0x00, 0xC1, 0x03, // 0000C103
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0x1B, // 0007041B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x04, 0x26, // 00060426
- 0x00, 0x06, 0x28, 0x7A, // 0006287A
- 0x00, 0x06, 0x38, 0x7A, // 0006387A
- 0x00, 0x06, 0x0C, 0x1C, // 00060C1C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x18, 0x70, // 00061870
- 0x00, 0x08, 0x80, 0xC1, // 000880C1
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x07, 0x74, 0x00, // 00077400
- 0x00, 0x07, 0x34, 0x40, // 00073440
- 0x00, 0x06, 0x08, 0x74, // 00060874
- 0x00, 0x08, 0xA5, 0x41, // 0008A541
- 0x00, 0x02, 0x9E, 0x30, // 00029E30
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x08, 0xA0, 0xC6, // 0008A0C6
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x02, 0x81, 0x80, // 00028180
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x70, // 00029F70
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x21, // 00072421
- 0x00, 0x08, 0x93, 0xC0, // 000893C0
- 0x00, 0x06, 0x80, 0x70, // 00068070
- 0x00, 0x06, 0xA8, 0x7A, // 0006A87A
- 0x00, 0x08, 0x94, 0xC2, // 000894C2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x16, 0x11, // 00021611
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0x40, // 00070440
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x81, 0x10, // 00028110
- 0x00, 0x02, 0x14, 0xAC, // 000214AC
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x80, 0x07, // 00078007
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC7, 0x81, // 000AC781
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x14, 0xC1, // 000214C1
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x06, 0x10, 0x7A, // 0006107A
- 0x00, 0x06, 0x18, 0x77, // 00061877
- 0x00, 0x04, 0x25, 0x08, // 00042508
- 0x00, 0x04, 0x2D, 0x08, // 00042D08
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0x3D, 0x08, // 00043D08
- 0x00, 0x0A, 0xCF, 0x81, // 000ACF81
- 0x00, 0x02, 0x9F, 0x70, // 00029F70
- 0x00, 0x06, 0x0C, 0x6A, // 00060C6A
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9E, 0x50, // 00029E50
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x0B, 0x49, 0x41, // 000B4941
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x06, 0x0C, 0x65, // 00060C65
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x02, 0x81, 0x70, // 00028170
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x06, 0x0C, 0x6A, // 00060C6A
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x50, // 00029F50
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x0B, 0x49, 0x41, // 000B4941
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x3F, 0x08, // 00043F08
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x06, 0x0C, 0x65, // 00060C65
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x06, 0x04, 0x6A, // 0006046A
- 0x00, 0x06, 0x14, 0x65, // 00061465
- 0x00, 0x09, 0x00, 0xC2, // 000900C2
- 0x00, 0x08, 0x11, 0x41, // 00081141
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x08, 0x10, 0x41, // 00081041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x08, 0x40, // 00080840
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x06, 0x8C, 0x6A, // 00068C6A
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x06, 0x98, 0x77, // 00069877
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x02, // 00070C02
- 0x00, 0x06, 0x10, 0x7A, // 0006107A
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC3, 0x81, // 000AC381
- 0x00, 0x02, 0x9F, 0x58, // 00029F58
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x40, // 00029E40
- 0x00, 0x0B, 0x52, 0x7E, // 000B527E
- 0x00, 0x02, 0x16, 0x2E, // 0002162E
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0xAC, // 000704AC
- 0x00, 0x06, 0x90, 0x7A, // 0006907A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x02, 0x81, 0x18, // 00028118
- 0x00, 0x08, 0x9A, 0x42, // 00089A42
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x7A, // 0006907A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6D, // 0006C06D
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x05, // 00076C05
- 0x00, 0x07, 0x2C, 0xBA, // 00072CBA
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x13, 0x3B, // 0002133B
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x80, // 0000C180
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x10, 0x68, // 00061068
- 0x00, 0x04, 0x04, 0x08, // 00040408
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x14, 0xDD, // 000214DD
- 0x00, 0x06, 0x28, 0x6C, // 0006286C
- 0x00, 0x04, 0x0C, 0x08, // 00040C08
- 0x00, 0x07, 0x64, 0x3F, // 0007643F
- 0x00, 0x07, 0x27, 0xFF, // 000727FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xA4, 0x44, // 0009A444
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x0A, 0xD2, 0xC4, // 000AD2C4
- 0x00, 0x09, 0x80, 0x48, // 00098048
- 0x00, 0x09, 0xB1, 0x78, // 0009B178
- 0x00, 0x08, 0x00, 0xC6, // 000800C6
- 0x00, 0x09, 0x89, 0x48, // 00098948
- 0x00, 0x09, 0xB2, 0x78, // 0009B278
- 0x00, 0x08, 0x09, 0xC6, // 000809C6
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x09, 0x90, 0x48, // 00099048
- 0x00, 0x09, 0xB0, 0x78, // 0009B078
- 0x00, 0x08, 0x02, 0xC6, // 000802C6
- 0x00, 0x09, 0x91, 0x48, // 00099148
- 0x00, 0x09, 0xB1, 0x78, // 0009B178
- 0x00, 0x08, 0x0A, 0xC6, // 00080AC6
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x18, 0x68, // 00061868
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x09, 0x9B, 0x7D, // 00099B7D
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x81, 0xC0, // 000881C0
- 0x00, 0x09, 0x03, 0xC0, // 000903C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x01, 0x0A, 0x20, // 00010A20
- 0x00, 0x0B, 0x49, 0x7F, // 000B497F
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x0B, 0x76, 0x78, // 000B7678
- 0x00, 0x09, 0x92, 0x48, // 00099248
- 0x00, 0x09, 0x89, 0x48, // 00098948
- 0x00, 0x09, 0x9A, 0x68, // 00099A68
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x08, 0x9F, 0xC1, // 00089FC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB0, 0x68, // 0006B068
- 0x00, 0x09, 0x92, 0x48, // 00099248
- 0x00, 0x09, 0x89, 0x48, // 00098948
- 0x00, 0x09, 0x9A, 0x68, // 00099A68
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x04, 0x14, 0x08, // 00041408
- 0x00, 0x08, 0x9F, 0xC1, // 00089FC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB0, 0x68, // 0006B068
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x30, 0x71, // 00063071
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x08, 0xB6, 0x40, // 0008B640
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x15, 0x31, // 00021531
- 0x00, 0x06, 0x18, 0x7A, // 0006187A
- 0x00, 0x06, 0x30, 0x72, // 00063072
- 0x00, 0x07, 0x06, 0x00, // 00070600
- 0x00, 0x06, 0x08, 0x28, // 00060828
- 0x00, 0x08, 0x38, 0x41, // 00083841
- 0x00, 0x08, 0x90, 0xC1, // 000890C1
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x07, 0x54, 0x03, // 00075403
- 0x00, 0x07, 0x17, 0xF0, // 000717F0
- 0x00, 0x06, 0xB8, 0x22, // 0006B822
- 0x00, 0x01, 0x04, 0x90, // 00010490
- 0x00, 0x09, 0x92, 0x48, // 00099248
- 0x00, 0x0A, 0xE7, 0x8A, // 000AE78A
- 0x00, 0x0A, 0xEF, 0x8A, // 000AEF8A
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0xAD, 0x78, // 0009AD78
- 0x00, 0x08, 0x24, 0xC5, // 000824C5
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x72, // 0006B072
- 0x00, 0x07, 0xE0, 0x0E, // 0007E00E
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB0, 0x71, // 0006B071
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x81, 0xC0, // 000881C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1D, 0xE8, // 00071DE8
- 0x00, 0x0B, 0x76, 0x7F, // 000B767F
- 0x00, 0x08, 0x93, 0xC0, // 000893C0
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x05, 0x38, // 00070538
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x71, // 0006B071
- 0x00, 0x06, 0xB8, 0x28, // 0006B828
- 0x00, 0x06, 0x80, 0x4B, // 0006804B
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x81, 0xC0, // 000881C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x06, 0x18, 0x68, // 00061868
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0A, 0x10, 0x44, // 000A1044
- 0x00, 0x0A, 0x20, 0x42, // 000A2042
- 0x00, 0x08, 0x12, 0xC4, // 000812C4
- 0x00, 0x09, 0x03, 0xC2, // 000903C2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0x00, 0x7C, // 000A007C
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x20, // 00070420
- 0x00, 0x07, 0x54, 0x05, // 00075405
- 0x00, 0x07, 0x15, 0x7C, // 0007157C
- 0x00, 0x0B, 0x49, 0x41, // 000B4941
- 0x00, 0x0B, 0x64, 0x7F, // 000B647F
- 0x00, 0x0B, 0x5B, 0x78, // 000B5B78
- 0x00, 0x09, 0xA4, 0x7C, // 0009A47C
- 0x00, 0x06, 0x90, 0x0A, // 0006900A
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x09, 0x94, 0x83, // 00099483
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0x89, 0x41, // 00098941
- 0x00, 0x09, 0x92, 0x41, // 00099241
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x09, 0xC4, // 000809C4
- 0x00, 0x01, 0x04, 0x13, // 00010413
- 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x82, // 0000C182
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0x89, 0x41, // 00098941
- 0x00, 0x09, 0x92, 0x41, // 00099241
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x09, 0xC4, // 000809C4
- 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x82, // 0000C182
- 0x00, 0x04, 0x2C, 0x08, // 00042C08
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x15, 0x62, // 00021562
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x08, 0xAE, 0x54, // 0008AE54
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x68, // 0006B068
- 0x00, 0x04, 0x34, 0x08, // 00043408
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x10, 0x68, // 00061068
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x82, 0x47, // 00088247
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x02, 0x15, 0x96, // 00021596
- 0x00, 0x0B, 0x64, 0x41, // 000B6441
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x09, 0xA4, 0x78, // 0009A478
- 0x00, 0x0A, 0xEC, 0x8C, // 000AEC8C
- 0x00, 0x0A, 0xE4, 0x7F, // 000AE47F
- 0x00, 0x0A, 0xF4, 0x84, // 000AF484
- 0x00, 0x0A, 0xF4, 0x8C, // 000AF48C
- 0x00, 0x0A, 0xCC, 0x84, // 000ACC84
- 0x00, 0x07, 0x64, 0x3F, // 0007643F
- 0x00, 0x07, 0x27, 0xFF, // 000727FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xA4, 0x44, // 0009A444
- 0x00, 0x09, 0x85, 0xC2, // 000985C2
- 0x00, 0x09, 0x86, 0xC3, // 000986C3
- 0x00, 0x08, 0x00, 0xC0, // 000800C0
- 0x00, 0x08, 0x12, 0x50, // 00081250
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x02, 0x87, 0x18, // 00028718
- 0x00, 0x08, 0x92, 0x54, // 00089254
- 0x00, 0x08, 0x2E, 0x40, // 00082E40
- 0x00, 0x08, 0x31, 0x40, // 00083140
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x09, 0x8D, 0xC2, // 00098DC2
- 0x00, 0x09, 0x8E, 0xC3, // 00098EC3
- 0x00, 0x08, 0x09, 0xC1, // 000809C1
- 0x00, 0x08, 0x12, 0x50, // 00081250
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0x92, 0x54, // 00089254
- 0x00, 0x06, 0x28, 0x6C, // 0006286C
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x06, 0x90, 0x68, // 00069068
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x09, 0x90, 0x48, // 00099048
- 0x00, 0x09, 0xB0, 0x78, // 0009B078
- 0x00, 0x08, 0x02, 0xC6, // 000802C6
- 0x00, 0x09, 0x91, 0x48, // 00099148
- 0x00, 0x09, 0xB1, 0x78, // 0009B178
- 0x00, 0x08, 0x0A, 0xC6, // 00080AC6
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x02, 0x81, 0x18, // 00028118
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3C, 0xC0, // 00073CC0
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x35, 0x60, // 00073560
- 0x00, 0x06, 0x20, 0x2E, // 0006202E
- 0x00, 0x06, 0x18, 0x1C, // 0006181C
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x06, 0x00, 0x75, // 00060075
- 0x00, 0x06, 0x08, 0x7A, // 0006087A
- 0x00, 0x06, 0xA0, 0x20, // 0006A020
- 0x00, 0x08, 0x9C, 0xC3, // 00089CC3
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x1B, 0xC2, // 00081BC2
- 0x00, 0x09, 0x16, 0xC3, // 000916C3
- 0x00, 0x02, 0x89, 0x10, // 00028910
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x30, // 00070430
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x08, 0x97, 0xC3, // 000897C3
- 0x00, 0x02, 0x89, 0x10, // 00028910
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x70, // 00070470
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x7F, // 0006987F
- 0x00, 0x06, 0x84, 0x06, // 00068406
- 0x00, 0x06, 0x80, 0x75, // 00068075
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x15, 0xFC, // 000215FC
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x07, 0x0D, 0xE2, // 00070DE2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x32, // 00070E32
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x8C, 0x22, // 00068C22
- 0x00, 0x06, 0x5C, 0x14, // 00065C14
- 0x00, 0x06, 0xA8, 0x74, // 0006A874
- 0x00, 0x06, 0x5C, 0x24, // 00065C24
- 0x00, 0x06, 0x5C, 0x26, // 00065C26
- 0x00, 0x06, 0x5C, 0x2E, // 00065C2E
- 0x00, 0x06, 0x5C, 0x25, // 00065C25
- 0x00, 0x06, 0x5C, 0x27, // 00065C27
- 0x00, 0x06, 0x5C, 0x2F, // 00065C2F
- 0x00, 0x06, 0x5C, 0x44, // 00065C44
- 0x00, 0x04, 0x80, 0x03, // 00048003
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x06, // 0000C106
- 0x00, 0x06, 0x84, 0x74, // 00068474
- 0x00, 0x06, 0x84, 0x43, // 00068443
- 0x00, 0x06, 0x5C, 0x3C, // 00065C3C
- 0x00, 0x06, 0x5C, 0x3B, // 00065C3B
- 0x00, 0x06, 0x5C, 0x54, // 00065C54
- 0x00, 0x06, 0x5C, 0x53, // 00065C53
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x25, // 00070E25
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA8, 0x74, // 0006A874
- 0x00, 0x06, 0x8C, 0x22, // 00068C22
- 0x00, 0x06, 0x5C, 0x14, // 00065C14
- 0x00, 0x06, 0x5C, 0x24, // 00065C24
- 0x00, 0x06, 0x5C, 0x26, // 00065C26
- 0x00, 0x06, 0x5C, 0x2E, // 00065C2E
- 0x00, 0x06, 0x5C, 0x25, // 00065C25
- 0x00, 0x06, 0x5C, 0x27, // 00065C27
- 0x00, 0x06, 0x5C, 0x2F, // 00065C2F
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x06, 0x5C, 0x44, // 00065C44
- 0x00, 0x06, 0x5C, 0x43, // 00065C43
- 0x00, 0x06, 0x5C, 0x3C, // 00065C3C
- 0x00, 0x06, 0x5C, 0x3B, // 00065C3B
- 0x00, 0x06, 0x5C, 0x54, // 00065C54
- 0x00, 0x06, 0x5C, 0x53, // 00065C53
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x02, // 00071C02
- 0x00, 0x02, 0x81, 0x10, // 00028110
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x01, // 00071C01
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x65, // 00071665
- 0x00, 0x06, 0x00, 0x61, // 00060061
- 0x00, 0x06, 0x20, 0x7A, // 0006207A
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x06, 0x9C, 0x7F, // 00069C7F
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x1F, 0x00, // 00041F00
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x07, 0x0C, 0x14, // 00070C14
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x98, 0x1F, // 0007981F
- 0x00, 0x04, 0x17, 0x00, // 00041700
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x06, 0x00, 0x6A, // 0006006A
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x61, // 00068061
- 0x00, 0x07, 0x90, 0x07, // 00079007
- 0x00, 0x06, 0x3C, 0x26, // 00063C26
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x08, 0x3F, 0x40, // 00083F40
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x06, 0x1C, 0x1C, // 00061C1C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xBC, 0x1C, // 0006BC1C
- 0x00, 0x04, 0xB0, 0x0D, // 0004B00D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xB6, 0x7C, // 0009B67C
- 0x00, 0x01, 0x05, 0x10, // 00010510
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x09, 0xB6, 0x7F, // 0009B67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x09, 0x42, // 00080942
- 0x00, 0x07, 0x84, 0x0C, // 0007840C
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x07, 0x8C, 0x0C, // 00078C0C
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x30, // 00072430
- 0x00, 0x08, 0x2D, 0x41, // 00082D41
- 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x16, 0x35, // 00021635
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x9C, 0x1C, // 00069C1C
- 0x00, 0x06, 0x04, 0x6A, // 0006046A
- 0x00, 0x06, 0x08, 0x77, // 00060877
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x17, 0x12, // 00071712
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x16, 0x71, // 00021671
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x06, 0x24, 0x66, // 00062466
- 0x00, 0x06, 0x2C, 0x67, // 00062C67
- 0x00, 0x06, 0x34, 0x68, // 00063468
- 0x00, 0x06, 0x3C, 0x69, // 00063C69
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x64, 0xC4, // 000B64C4
- 0x00, 0x0B, 0x6D, 0xC5, // 000B6DC5
- 0x00, 0x0B, 0x76, 0xC6, // 000B76C6
- 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7
- 0x00, 0x08, 0x25, 0x8C, // 0008258C
- 0x00, 0x08, 0x2D, 0x8D, // 00082D8D
- 0x00, 0x08, 0x35, 0x8E, // 0008358E
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x08, 0x3D, 0x8F, // 00083D8F
- 0x00, 0x06, 0x84, 0x6A, // 0006846A
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x3F, 0x08, // 00043F08
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x06, 0x84, 0x6A, // 0006846A
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-// addres 06800 count 1077 (4314 bytes)
-static const unsigned char maspcm_array10[] = {
- 0xf0, 0x00, 0x04, 0x35, 0x08, 0x00,
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x0A, 0x09, 0x78, // 000A0978
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x08, 0xA1, 0x41, // 0008A141
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x26, 0x69, // 00072669
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x0B, 0x75, 0x7E, // 000B757E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x0A, 0xF7, 0x86, // 000AF786
- 0x00, 0x0A, 0xEF, 0x85, // 000AEF85
- 0x00, 0x0A, 0x36, 0x7F, // 000A367F
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x0B, 0x64, 0x70, // 000B6470
- 0x00, 0x06, 0x98, 0x79, // 00069879
- 0x00, 0x06, 0x90, 0x78, // 00069078
- 0x00, 0x06, 0xA8, 0x77, // 0006A877
- 0x00, 0x06, 0xB0, 0x7A, // 0006B07A
- 0x00, 0x06, 0xBC, 0x64, // 0006BC64
- 0x00, 0x06, 0xB8, 0x71, // 0006B871
- 0x00, 0x06, 0xB8, 0x70, // 0006B870
- 0x00, 0x06, 0xB8, 0x69, // 0006B869
- 0x00, 0x06, 0xB8, 0x7B, // 0006B87B
- 0x00, 0x06, 0xB8, 0x7C, // 0006B87C
- 0x00, 0x06, 0x9C, 0x6B, // 00069C6B
- 0x00, 0x06, 0xBC, 0x6E, // 0006BC6E
- 0x00, 0x06, 0xBC, 0x72, // 0006BC72
- 0x00, 0x06, 0xB8, 0x74, // 0006B874
- 0x00, 0x06, 0xB8, 0x7D, // 0006B87D
- 0x00, 0x06, 0xBC, 0x73, // 0006BC73
- 0x00, 0x06, 0x9C, 0x7D, // 00069C7D
- 0x00, 0x06, 0xBC, 0x7C, // 0006BC7C
- 0x00, 0x06, 0xBC, 0x7B, // 0006BC7B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x3C, 0x65, // 00063C65
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xBF, 0x41, // 0009BF41
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xBC, 0x7A, // 0006BC7A
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3D, 0xFF, // 00073DFF
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1C, 0x90, // 00071C90
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x34, 0xA0, // 000734A0
- 0x00, 0x06, 0x08, 0x76, // 00060876
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x21, 0x41, // 00082141
- 0x00, 0x06, 0xB8, 0x16, // 0006B816
- 0x00, 0x06, 0x90, 0x24, // 00069024
- 0x00, 0x06, 0x90, 0x2C, // 0006902C
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x98, 0x25, // 00069825
- 0x00, 0x06, 0x98, 0x2D, // 0006982D
- 0x00, 0x06, 0xB0, 0x1D, // 0006B01D
- 0x00, 0x06, 0xA0, 0x10, // 0006A010
- 0x00, 0x06, 0x98, 0x21, // 00069821
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x24, // 00073C24
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x07, 0x6C, 0x01, // 00076C01
- 0x00, 0x07, 0x2C, 0x98, // 00072C98
- 0x00, 0x06, 0xBC, 0x16, // 0006BC16
- 0x00, 0x06, 0x94, 0x2A, // 0006942A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xAC, 0x2B, // 0006AC2B
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3D, 0xFF, // 00073DFF
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x90, // 00072C90
- 0x00, 0x06, 0xBC, 0x14, // 0006BC14
- 0x00, 0x06, 0x94, 0x1C, // 0006941C
- 0x00, 0x06, 0x9C, 0x26, // 00069C26
- 0x00, 0x06, 0x9C, 0x2E, // 00069C2E
- 0x00, 0x06, 0xAC, 0x1D, // 0006AC1D
- 0x00, 0x06, 0xAC, 0x27, // 0006AC27
- 0x00, 0x06, 0xAC, 0x2F, // 0006AC2F
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x04, // 00070C04
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x10, // 00071410
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x4B, // 0006884B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x06, // 00069406
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x62, // 00071E62
- 0x00, 0x06, 0x10, 0x78, // 00061078
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x18, // 00071F18
- 0x00, 0x06, 0x98, 0x22, // 00069822
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x9E, 0xF0, // 00029EF0
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x80, // 00072C80
- 0x00, 0x07, 0x74, 0x00, // 00077400
- 0x00, 0x07, 0x34, 0x04, // 00073404
- 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x1B, 0xC6, // 00081BC6
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x40, // 00072C40
- 0x00, 0x07, 0x74, 0x02, // 00077402
- 0x00, 0x07, 0x34, 0x00, // 00073400
- 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x1B, 0xC6, // 00081BC6
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x04, // 00072C04
- 0x00, 0x07, 0x74, 0x00, // 00077400
- 0x00, 0x07, 0x34, 0x20, // 00073420
- 0x00, 0x04, 0x17, 0x00, // 00041700
- 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x1B, 0xC6, // 00081BC6
- 0x00, 0x0A, 0xD2, 0x41, // 000AD241
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x18, // 00072718
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x3B, // 0006983B
- 0x00, 0x06, 0x9C, 0x75, // 00069C75
- 0x00, 0x06, 0xA0, 0x53, // 0006A053
- 0x00, 0x06, 0x28, 0x77, // 00062877
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x40, // 00071640
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x90, // 00072490
- 0x00, 0x0B, 0x49, 0x7D, // 000B497D
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x90, 0x1E, // 0006901E
- 0x00, 0x06, 0xA0, 0x1F, // 0006A01F
- 0x00, 0x06, 0x88, 0x14, // 00068814
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x1F, 0x08, // 00041F08
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x07, 0x88, 0x0D, // 0007880D
- 0x00, 0x07, 0x90, 0x0D, // 0007900D
- 0x00, 0x07, 0x98, 0x0D, // 0007980D
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x50, // 00071650
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x26, 0x90, // 00072690
- 0x00, 0x0B, 0x49, 0x7D, // 000B497D
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x70, // 00070670
- 0x00, 0x06, 0x94, 0x20, // 00069420
- 0x00, 0x06, 0xA4, 0x21, // 0006A421
- 0x00, 0x06, 0x8C, 0x15, // 00068C15
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0B, 0x52, 0x75, // 000B5275
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x06, 0x94, 0x15, // 00069415
- 0x00, 0x02, 0x1C, 0x0E, // 00021C0E
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0C, 0xD3, // 00070CD3
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x32, // 00070E32
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x26, 0x70, // 00072670
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2E, 0x90, // 00072E90
- 0x00, 0x06, 0x8C, 0x22, // 00068C22
- 0x00, 0x04, 0x80, 0x4F, // 0004804F
- 0x00, 0x06, 0x08, 0x78, // 00060878
- 0x00, 0x06, 0xA4, 0x24, // 0006A424
- 0x00, 0x06, 0xAC, 0x25, // 0006AC25
- 0x00, 0x06, 0x5C, 0x3C, // 00065C3C
- 0x00, 0x06, 0x5C, 0x3B, // 00065C3B
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0x1D, // 0002191D
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x06, // 00076C06
- 0x00, 0x07, 0x2C, 0xEB, // 00072CEB
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC7, 0x82, // 000AC782
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x0A, 0xC7, 0x81, // 000AC781
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x54, 0x04, // 00075404
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x06, 0x30, 0x2C, // 0006302C
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x19, 0x0C, // 0002190C
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0A, 0xF6, 0x41, // 000AF641
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x18, 0xFA, // 000218FA
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x30, 0x2C, // 0006302C
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x19, 0x0C, // 0002190C
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0A, 0xF6, 0x41, // 000AF641
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0x03, // 00021903
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x38, 0x52, // 00063852
- 0x00, 0x06, 0x30, 0x2C, // 0006302C
- 0x00, 0x09, 0xBF, 0x7A, // 0009BF7A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xFF, 0x41, // 000AFF41
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x36, 0x41, // 000B3641
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x2C, // 0006B02C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x18, 0xE4, // 000218E4
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x40, 0x7D, // 000B407D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x15, // 00068415
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x06, 0x27, // 000C0627
- 0x00, 0x04, 0x35, 0x18, // 00043518
- 0x00, 0x04, 0xB8, 0x1E, // 0004B81E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x06, 0x27, // 000E0627
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x0E, 0x27, // 000C0E27
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x0E, // 0004B80E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x0E, 0x27, // 000E0E27
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x16, 0x27, // 000C1627
- 0x00, 0x04, 0x35, 0x18, // 00043518
- 0x00, 0x04, 0xB8, 0x1E, // 0004B81E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x16, 0x27, // 000E1627
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x1E, 0x27, // 000C1E27
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x0E, // 0004B80E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x1E, 0x27, // 000E1E27
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x27, 0x12, // 00072712
- 0x00, 0x07, 0x80, 0x0D, // 0007800D
- 0x00, 0x07, 0x88, 0x0D, // 0007880D
- 0x00, 0x07, 0x90, 0x0D, // 0007900D
- 0x00, 0x07, 0x98, 0x0D, // 0007980D
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x07, 0x80, 0x0F, // 0007800F
- 0x00, 0x07, 0x88, 0x0F, // 0007880F
- 0x00, 0x07, 0x90, 0x0F, // 0007900F
- 0x00, 0x07, 0x98, 0x07, // 00079807
- 0x00, 0x06, 0x2C, 0x79, // 00062C79
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x09, 0x0D, // 000C090D
- 0x00, 0x0C, 0x11, 0x0D, // 000C110D
- 0x00, 0x0C, 0x19, 0x0D, // 000C190D
- 0x00, 0x0C, 0x21, 0x0D, // 000C210D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x8C, 0x66, // 00068C66
- 0x00, 0x06, 0x94, 0x67, // 00069467
- 0x00, 0x06, 0x9C, 0x68, // 00069C68
- 0x00, 0x06, 0xA4, 0x69, // 0006A469
- 0x00, 0x06, 0x00, 0x7A, // 0006007A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xF8, // 000219F8
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x00, 0x24, // 00060024
- 0x00, 0x06, 0x08, 0x78, // 00060878
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0x89, 0x41, // 00088941
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x00, 0x2C, // 0006002C
- 0x00, 0x06, 0x08, 0x1C, // 0006081C
- 0x00, 0x08, 0x80, 0xC1, // 000880C1
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x08, 0x9B, 0x41, // 00089B41
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x09, 0x80, 0x7F, // 0009807F
- 0x00, 0x06, 0x14, 0x7B, // 0006147B
- 0x00, 0x06, 0x1C, 0x7A, // 00061C7A
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x28, // 00029F28
- 0x00, 0x08, 0x98, 0xC3, // 000898C3
- 0x00, 0x02, 0x87, 0x10, // 00028710
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x7B, // 0006947B
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x12, // 00071412
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0xA0, 0xC2, // 0008A0C2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x19, 0xF8, // 000219F8
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x24, 0x2A, // 0006242A
- 0x00, 0x08, 0xA3, 0xC4, // 0008A3C4
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xF8, // 000219F8
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x01, // 00071E01
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x09, // 00070409
- 0x00, 0x06, 0x08, 0x69, // 00060869
- 0x00, 0x06, 0x9C, 0x22, // 00069C22
- 0x00, 0x06, 0x10, 0x6A, // 0006106A
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xA4, // 000219A4
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xA4, // 000219A4
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x07, 0x55, 0x5C, // 0007555C
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5D, 0x04, // 00075D04
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x65, 0x58, // 00076558
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x6D, 0x14, // 00076D14
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x07, 0x94, 0x0F, // 0007940F
- 0x00, 0x07, 0x9C, 0x0F, // 00079C0F
- 0x00, 0x07, 0xA4, 0x0F, // 0007A40F
- 0x00, 0x07, 0xAC, 0x0F, // 0007AC0F
- 0x00, 0x06, 0x38, 0x3A, // 0006383A
- 0x00, 0x0B, 0x76, 0x7D, // 000B767D
- 0x00, 0x06, 0x10, 0x6C, // 0006106C
- 0x00, 0x0A, 0xFF, 0x5F, // 000AFF5F
- 0x00, 0x06, 0x84, 0x05, // 00068405
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x09, 0x3F, 0x54, // 00093F54
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB4, 0x15, // 0006B415
- 0x00, 0x07, 0x77, 0xFC, // 000777FC
- 0x00, 0x07, 0x34, 0x00, // 00073400
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x01, 0x4E, 0x80, // 00014E80
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x87, // 00098087
- 0x00, 0x09, 0x88, 0x87, // 00098887
- 0x00, 0x0C, 0x20, 0x12, // 000C2012
- 0x00, 0x0E, 0x21, 0x12, // 000E2112
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x28, 0x12, // 000C2812
- 0x00, 0x0E, 0x29, 0x12, // 000E2912
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x84, 0x48, // 00098448
- 0x00, 0x09, 0x8D, 0x48, // 00098D48
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x09, 0xA4, 0x48, // 0009A448
- 0x00, 0x08, 0x04, 0x40, // 00080440
- 0x00, 0x09, 0xAD, 0x48, // 0009AD48
- 0x00, 0x08, 0x0D, 0x40, // 00080D40
- 0x00, 0x0A, 0xE4, 0xC6, // 000AE4C6
- 0x00, 0x0A, 0xC0, 0xC6, // 000AC0C6
- 0x00, 0x0A, 0xED, 0xC6, // 000AEDC6
- 0x00, 0x0A, 0xC9, 0xC6, // 000AC9C6
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xE4, 0x0F, // 0007E40F
- 0x00, 0x07, 0xC4, 0x0F, // 0007C40F
- 0x00, 0x07, 0xEC, 0x0F, // 0007EC0F
- 0x00, 0x07, 0xCC, 0x0F, // 0007CC0F
- 0x00, 0x06, 0x00, 0x69, // 00060069
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x65, // 00070E65
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x06, 0x1C, 0x64, // 00061C64
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x39, // 00071439
- 0x00, 0x06, 0x88, 0x22, // 00068822
- 0x00, 0x04, 0x0F, 0x00, // 00040F00
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x02, 0x9E, 0x28, // 00029E28
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x08, 0x09, 0x41, // 00080941
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x69, // 00068069
- 0x00, 0x07, 0x88, 0x07, // 00078807
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x0B, 0x76, 0x75, // 000B7675
- 0x00, 0x07, 0x0E, 0x01, // 00070E01
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x04, // 00070404
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x4B, // 0006804B
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x05, 0x3D, // 0007053D
- 0x00, 0x06, 0xB4, 0x15, // 0006B415
- 0x00, 0x06, 0x8C, 0x2A, // 00068C2A
- 0x00, 0x06, 0x94, 0x72, // 00069472
- 0x00, 0x06, 0x80, 0x4B, // 0006804B
- 0x00, 0x06, 0x00, 0x24, // 00060024
- 0x00, 0x06, 0x08, 0x78, // 00060878
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0x89, 0x41, // 00088941
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x00, 0x2C, // 0006002C
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x08, 0x80, 0xC1, // 000880C1
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x06, 0x0C, 0x26, // 00060C26
- 0x00, 0x06, 0x14, 0x1C, // 0006141C
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0x89, 0xC2, // 000889C2
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x06, 0x24, 0x24, // 00062424
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x06, 0x24, 0x2E, // 0006242E
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0xC2, // 000880C2
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x1A, 0x86, // 00021A86
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x89, 0xC2, // 000889C2
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x1A, 0x86, // 00021A86
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x28, 0x3A, // 0006283A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xED, 0x5F, // 000AED5F
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x09, 0x2D, 0x54, // 00092D54
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x04, 0xB8, 0x0D, // 0004B80D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x01, 0x0D, 0x10, // 00010D10
- 0x00, 0x06, 0x20, 0x76, // 00062076
- 0x00, 0x09, 0x86, 0x8D, // 0009868D
- 0x00, 0x09, 0x8E, 0x8D, // 00098E8D
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x08, 0x40, // 00080840
- 0x00, 0x0C, 0x31, 0x08, // 000C3108
- 0x00, 0x0E, 0x31, 0x09, // 000E3109
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x01, 0x08, // 000C0108
- 0x00, 0x0E, 0x01, 0x09, // 000E0109
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C
- 0x00, 0x09, 0x9F, 0x7F, // 00099F7F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x36, 0x42, // 00083642
- 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C
- 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xF4, 0x0C, // 0007F40C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xC4, 0x0C, // 0007C40C
- 0x00, 0x02, 0x16, 0x52, // 00021652
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0E, 0x56, // 00070E56
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x06, 0x00, 0x7B, // 0006007B
- 0x00, 0x06, 0x10, 0x74, // 00061074
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x30, // 00071C30
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x18, // 00029E18
- 0x00, 0x08, 0x88, 0xC3, // 000888C3
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x15, 0xDB, // 000215DB
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0E, 0x66, // 00070E66
- 0x00, 0x06, 0x80, 0x7B, // 0006807B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0E, // 0006880E
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x08, 0x24, // 00060824
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x08, 0x2C, // 0006082C
- 0x00, 0x06, 0x34, 0x26, // 00063426
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x86, 0xC1, // 000886C1
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x00, // 00071F00
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0xA8, 0xC3, // 0008A8C3
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0x80, 0xC2, // 000880C2
- 0x00, 0x06, 0x20, 0x74, // 00062074
- 0x00, 0x08, 0x28, 0xC3, // 000828C3
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x06, 0x18, 0x79, // 00061879
- 0x00, 0x06, 0x14, 0x6E, // 0006146E
- 0x00, 0x08, 0xA4, 0x41, // 0008A441
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x08, 0xBB, 0x42, // 0008BB42
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x08, 0x10, 0x40, // 00081040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x79, // 00069879
- 0x00, 0x06, 0x94, 0x6E, // 0006946E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x08, 0x24, // 00060824
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x08, 0x2C, // 0006082C
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x18, 0x71, // 00061871
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x24, 0x6B, // 0006246B
- 0x00, 0x08, 0xA9, 0xC0, // 0008A9C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x2D, 0xC2, // 00082DC2
- 0x00, 0x08, 0xB4, 0x41, // 0008B441
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1A, 0xA5, // 00021AA5
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0xB5, 0x42, // 0008B542
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x1A, 0xA5, // 00021AA5
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x34, 0x26, // 00063426
- 0x00, 0x0A, 0xD1, 0x41, // 000AD141
- 0x00, 0x0A, 0xF6, 0x7E, // 000AF67E
- 0x00, 0x08, 0x12, 0xC6, // 000812C6
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0A, 0xC2, 0x7E, // 000AC27E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x6B, // 0006A46B
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x25, // 00072425
- 0x00, 0x08, 0x93, 0xC5, // 000893C5
- 0x00, 0x06, 0xA8, 0x71, // 0006A871
- 0x00, 0x08, 0x9C, 0xC2, // 00089CC2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x1B, 0x86, // 00021B86
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x18, 0x52, // 00061852
- 0x00, 0x07, 0x54, 0x08, // 00075408
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x7C, 0x06, // 00077C06
- 0x00, 0x07, 0x3E, 0xFD, // 00073EFD
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0A, 0xC3, 0xC2, // 000AC3C2
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0xA7, // 00021BA7
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x06, 0x34, 0x26, // 00063426
- 0x00, 0x06, 0x3C, 0x1C, // 00063C1C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x18, 0x70, // 00061870
- 0x00, 0x08, 0x86, 0xC7, // 000886C7
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x25, // 00072425
- 0x00, 0x06, 0x28, 0x79, // 00062879
- 0x00, 0x08, 0x93, 0xC0, // 000893C0
- 0x00, 0x06, 0x80, 0x70, // 00068070
- 0x00, 0x08, 0x94, 0xC2, // 000894C2
- 0x00, 0x02, 0x88, 0x38, // 00028838
- 0x00, 0x08, 0xBD, 0x41, // 0008BD41
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x09, 0xAD, 0x41, // 0009AD41
- 0x00, 0x07, 0x7C, 0x06, // 00077C06
- 0x00, 0x07, 0x3E, 0xFD, // 00073EFD
- 0x00, 0x02, 0x1B, 0xB0, // 00021BB0
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0xA8, 0x79, // 0006A879
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x06, 0x14, 0x26, // 00061426
- 0x00, 0x06, 0x20, 0x7D, // 0006207D
- 0x00, 0x06, 0x28, 0x7C, // 0006287C
- 0x00, 0x08, 0x32, 0x60, // 00083260
- 0x00, 0x02, 0x86, 0x18, // 00028618
- 0x00, 0x08, 0x2D, 0xC4, // 00082DC4
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x0B, 0x64, 0x7F, // 000B647F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA8, 0x7C, // 0006A87C
- 0x00, 0x06, 0xA0, 0x7D, // 0006A07D
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x01, // 00073C01
- 0x00, 0x06, 0x00, 0x7C, // 0006007C
- 0x00, 0x06, 0x30, 0x79, // 00063079
- 0x00, 0x08, 0xBF, 0xC0, // 0008BFC0
- 0x00, 0x02, 0x88, 0xC0, // 000288C0
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x02, 0x9E, 0xB0, // 00029EB0
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x08, 0xBA, 0xC1, // 0008BAC1
- 0x00, 0x06, 0x34, 0x6E, // 0006346E
- 0x00, 0x08, 0xBF, 0xC6, // 0008BFC6
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x00, // 00071F00
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0xAF, 0xC3, // 0008AFC3
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0xBF, 0xC2, // 0008BFC2
- 0x00, 0x08, 0x2F, 0xC3, // 00082FC3
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x3F, 0xC2, // 00083FC2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x1C, 0x15, // 00021C15
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0E, 0xFD, // 00070EFD
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x7C, // 0006807C
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x64, // 00060464
- 0x00, 0x06, 0x0C, 0x72, // 00060C72
- 0x00, 0x06, 0x10, 0x74, // 00061074
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9F, 0x40, // 00029F40
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x81, 0x10, // 00028110
- 0x00, 0x02, 0x1B, 0x68, // 00021B68
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x80, 0x07, // 00078007
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x06, 0x14, 0x64, // 00061464
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC7, 0x81, // 000AC781
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x64, // 00069464
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x02, // 00070C02
- 0x00, 0x06, 0x10, 0x7A, // 0006107A
- 0x00, 0x06, 0x20, 0x1C, // 0006201C
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC3, 0x81, // 000AC381
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x02, 0x81, 0x48, // 00028148
- 0x00, 0x08, 0x9A, 0x41, // 00089A41
- 0x00, 0x02, 0x9E, 0x38, // 00029E38
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x08, 0x24, // 00060824
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x08, 0x2C, // 0006082C
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x0A, 0xE1, 0x7E, // 000AE17E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x7A, // 0006907A
- 0x00, 0x06, 0xA0, 0x1C, // 0006A01C
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xCF, 0x81, // 000ACF81
- 0x00, 0x06, 0x18, 0x77, // 00061877
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0B, 0x09, 0xC3, // 000B09C3
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x68, // 00021B68
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x24, 0x6B, // 0006246B
- 0x00, 0x0B, 0x1B, 0x41, // 000B1B41
- 0x00, 0x06, 0x14, 0x65, // 00061465
- 0x00, 0x06, 0x04, 0x6A, // 0006046A
- 0x00, 0x08, 0x28, 0x41, // 00082841
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x82, 0xC0, // 000882C0
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x66, // 00021B66
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x40, 0x41, // 000B4041
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9E, 0x28, // 00029E28
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x3F, 0x08, // 00043F08
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x06, 0x98, 0x77, // 00069877
- 0x00, 0x06, 0x84, 0x6A, // 0006846A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6D, // 0006C06D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x06, // 00076C06
- 0x00, 0x07, 0x2F, 0x78, // 00072F78
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x19, 0x5B, // 0002195B
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x80, // 0000C180
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x07, 0x6C, 0x01, // 00076C01
- 0x00, 0x07, 0x2E, 0x00, // 00072E00
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3E, 0x68, // 00073E68
- 0x00, 0x0A, 0xF1, 0x7E, // 000AF17E
- 0x00, 0x09, 0x00, 0xC6, // 000900C6
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x08, 0x00, 0xC5, // 000800C5
- 0x00, 0x06, 0x2C, 0x64, // 00062C64
- 0x00, 0x0A, 0x00, 0x7F, // 000A007F
- 0x00, 0x06, 0x20, 0x7A, // 0006207A
- 0x00, 0x06, 0xB8, 0x22, // 0006B822
- 0x00, 0x04, 0x3F, 0x00, // 00043F00
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x08, 0x3F, 0xC0, // 00083FC0
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x2C, 0x7F, // 00062C7F
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x6D, 0x6F, // 000B6D6F
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x02, 0x1A, 0xAD, // 00021AAD
- 0x00, 0x06, 0xB0, 0x1C, // 0006B01C
- 0x00, 0x0A, 0xFF, 0x7E, // 000AFF7E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x72, // 00068472
- 0x00, 0x06, 0xAC, 0x7F, // 0006AC7F
- 0x00, 0x07, 0xB8, 0x07, // 0007B807
- 0x00, 0x06, 0x10, 0x2C, // 0006102C
- 0x00, 0x0B, 0x64, 0x6D, // 000B646D
- 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x81, 0x20, // 00028120
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x9C, 0x7B, // 00069C7B
- 0x00, 0x0B, 0x64, 0x6E, // 000B646E
- 0x00, 0x06, 0x34, 0x6D, // 0006346D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x7F, // 0006A47F
- 0x00, 0x06, 0xB4, 0x0F, // 0006B40F
- 0x00, 0x06, 0xB4, 0x6C, // 0006B46C
- 0x00, 0x0B, 0x76, 0x7F, // 000B767F
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x08, 0x3F, 0x40, // 00083F40
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x06, 0xB4, 0x6B, // 0006B46B
- 0x00, 0x04, 0xB0, 0x0D, // 0004B00D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xB6, 0x7C, // 0009B67C
- 0x00, 0x01, 0x05, 0x10, // 00010510
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x09, 0xB6, 0x7F, // 0009B67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x3F, 0x42, // 00083F42
- 0x00, 0x07, 0x84, 0x0C, // 0007840C
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x07, 0xBC, 0x0C, // 0007BC0C
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x30, // 00072430
- 0x00, 0x08, 0x2D, 0x41, // 00082D41
- 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1B, 0xBE, // 00021BBE
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3F, 0x18, // 00073F18
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x10, 0x24, // 00061024
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x00, // 00073C00
- 0x00, 0x06, 0x10, 0x2C, // 0006102C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x06, 0x04, 0x64, // 00060464
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0xDE, 0x87, // 0000DE87
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x9C, 0x62, // 00069C62
- 0x00, 0x06, 0x9C, 0x6E, // 00069C6E
- 0x00, 0x06, 0x9C, 0x63, // 00069C63
- 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x73, // 00060473
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x08, 0x12, 0x42, // 00081242
- 0x00, 0x09, 0x1B, 0xC2, // 00091BC2
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0x92, 0xC3, // 000892C3
- 0x00, 0x06, 0x84, 0x73, // 00068473
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x00, // 00072700
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x00, // 00073C00
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x06, 0xA4, 0x05, // 0006A405
- 0x00, 0x01, 0x41, 0x80, // 00014180
- 0x00, 0x06, 0xB8, 0x22, // 0006B822
- 0x00, 0x07, 0x98, 0x0F, // 0007980F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x98, 0x0F, // 0007980F
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x9C, 0x62, // 00069C62
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x9C, 0x63, // 00069C63
- 0x00, 0x06, 0x9C, 0x6E, // 00069C6E
- 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x62, // 00068462
- 0x00, 0x06, 0x84, 0x63, // 00068463
- 0x00, 0x06, 0x04, 0x62, // 00060462
- 0x00, 0x06, 0x1C, 0x63, // 00061C63
- 0x00, 0x0A, 0x0F, 0x41, // 000A0F41
- 0x00, 0x08, 0x97, 0xC0, // 000897C0
- 0x00, 0x08, 0x1B, 0xC2, // 00081BC2
- 0x00, 0x0A, 0x12, 0x47, // 000A1247
- 0x00, 0x07, 0x65, 0x00, // 00076500
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x6D, 0x00, // 00076D00
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x07, 0x75, 0x00, // 00077500
- 0x00, 0x07, 0x34, 0x00, // 00073400
- 0x00, 0x0C, 0x12, 0x25, // 000C1225
- 0x00, 0x0E, 0x11, 0x24, // 000E1124
- 0x00, 0x0E, 0x13, 0x26, // 000E1326
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x6C, // 0006046C
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x09, 0x12, 0xC0, // 000912C0
- 0x00, 0x06, 0xBC, 0x62, // 0006BC62
- 0x00, 0x06, 0x9C, 0x63, // 00069C63
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x6C, // 0006946C
- 0x00, 0x06, 0x94, 0x0F, // 0006940F
- 0x00, 0x03, 0x33, 0x33, // 00033333
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-
-struct i2c_block {
- const unsigned char *data;
- unsigned len;
-};
-
-static struct i2c_block maspcm[] = {
- { maspcm_array1, sizeof(maspcm_array1) },
- { maspcm_array2, sizeof(maspcm_array2) },
- { maspcm_array3, sizeof(maspcm_array3) },
- { maspcm_array4, sizeof(maspcm_array4) },
- { maspcm_array5, sizeof(maspcm_array5) },
- { maspcm_array6, sizeof(maspcm_array6) },
- { maspcm_array7, sizeof(maspcm_array7) },
- { maspcm_array8, sizeof(maspcm_array8) },
- { maspcm_array9, sizeof(maspcm_array9) },
- { maspcm_array10, sizeof(maspcm_array10) },
-};
-
-/************ End of MAS pcm codec ************/
-
-#define WAVPLAY_QUIT BUTTON_OFF
-
-#define PCM_MAIN_IO_CONTROL 0x0661
-#define PCM_IF_STATUS_CONTROL 0x0662
-#define PCM_OFREQ_CONTROL 0x0663
-#define PCM_OUTPUT_CLOCK_CONF 0x0664
-#define PCM_FRAME_COUNTER 0x0665
-#define PCM_APP_RUNNING 0x0666
-#define PCM_SAMPLE_RATE_STATUS 0x0667
-#define PCM_BUFFER_ERROR_COUNTER 0x0668
-#define PCM_SOFT_MUTE 0x0669
-#define PCM_SPDIF_CHANNEL_STATUS 0x066a
-#define PCM_SAMPLE_RATE 0x066b
-#define PCM_VOL_OUT_LL 0x066c
-#define PCM_VOL_OUT_RL 0x066d
-#define PCM_VOL_OUT_LR 0x066e
-#define PCM_VOL_OUT_RR 0x066f
-#define PCM_VOL_IN_LL 0x0670
-#define PCM_VOL_IN_RL 0x0671
-#define PCM_VOL_IN_LR 0x0672
-#define PCM_VOL_IN_RR 0x0673
-
-#define IRQ3 (*((volatile unsigned long*)0x0900010C))
-#define IRQ6 (*((volatile unsigned long*)0x09000118))
-#define DEI3 (*((volatile unsigned long*)0x09000138))
-
-#define PLAY_OK 0
-#define PLAY_ERROR -1
-#define PLAY_GOT_USB 1
-
-#define LOW_WATER_CHUNKSIZE (256*1024)
-
-/* declarations */
-
-void start_demand_isr(void) __attribute__((interrupt_handler));
-void stop_demand_isr(void) __attribute__((interrupt_handler));
-void dma_end_isr(void) __attribute__((interrupt_handler));
-
-/* variables */
-
-static unsigned char *aud_buf;
-static ssize_t aud_size;
-static unsigned char *plug_buf;
-
-static void (*pcm_callback)(unsigned char**, int*) = NULL;
-static bool playing = false;
-static bool filling;
-static int last_dma_chunksize;
-static int aud_read = 0;
-static int aud_write = 0;
-static int low_water = (256*1024);
-
-/** i2c, MAS configuration **/
-
-void i2c_random_write(int addr, int cmd, const unsigned char* data, int size)
-{
- plug_buf[0] = cmd;
- rb->memcpy(plug_buf+1, data, size);
-
- rb->i2c_begin();
- rb->i2c_write(addr, plug_buf, size+1);
- rb->i2c_end();
-}
-
-void mas_freeze(void)
-{
- static const unsigned char freeze[] = { 0x00, 0x00 };
-
- /* Freeze DSP */
- i2c_random_write(MAS_ADR, MAS_DATA_WRITE, freeze, sizeof(freeze));
- /* mas_run(0); in core implementation */
-
- /* stop all internal transfers */
- rb->mas_writereg(0x3b, 0x00318); /* stopdma 1 */
- rb->mas_writereg(0x43, 0x00300); /* stopdma 2 */
- rb->mas_writereg(0x4b, 0); /* stopdma 3 */
- rb->mas_writereg(0x53, 0x00318); /* stopdma 4 */
- rb->mas_writereg(0x6b, 0); /* stopdma 5 */
- rb->mas_writereg(0xbb, 0x00318); /* stopdma 6 */
- rb->mas_writereg(0xc3, 0x00300); /* stopdma 7 */
- rb->mas_writereg(0x06, 0); /* stopdma 8 */
-}
-
-void mas_download_pcm(void)
-{
- static const unsigned char runi2s[] = { 0x10, 0x00 };
- unsigned i;
-
- mas_freeze();
-
- // Download program to MAS memory
- for ( i = 0; i < (sizeof(maspcm)/sizeof(struct i2c_block)); i++ )
- i2c_random_write(MAS_ADR, MAS_DATA_WRITE, maspcm[i].data, maspcm[i].len);
-
- rb->mas_writereg(0x6b, 0xc0000); /* Reconfigure data to program memory */
-
- /* Start execution at D0:1000 */
- i2c_random_write(MAS_ADR, MAS_DATA_WRITE, runi2s, sizeof(runi2s));
- /* mas_run(0x1000); in core implementation */
-}
-
-void mas_restore(void)
-{
- static const unsigned char resetdsp[] = { 0x88, 0x00 };
- static const unsigned char initdsp[] = { 0x8c, 0x00 };
- unsigned long val;
-
- i2c_random_write(MAS_ADR, MAS_CONTROL, resetdsp, sizeof(resetdsp));
- /* mas_direct_config_write(MAS_CONTROL, 0x8d00); in core implementation */
- rb->sleep(1);
- i2c_random_write(MAS_ADR, MAS_CONTROL, initdsp, sizeof(initdsp));
- /* mas_direct_config_write(MAS_CONTROL, 0x8c00); in core implementation */
-
- /* Stop the current application */
- val = 0;
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1);
- do
- rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1);
- while(val);
-
-#ifdef HAVE_SPDIF_OUT
- val = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */
-#else
- val = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */
-#endif
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_INTERFACE_CONTROL, &val, 1);
-
- val = 0x0025; /* Set Demand mode and validate all settings */
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val, 1);
-
- val = 0x000c; /* Start the Layer2/3 decoder applications */
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1);
- do
- rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1);
- while((val & 0x000c) != 0x000c);
-}
-
-void pcm_channel_config(int channel_config, int stereo_width)
-{
- /* default values: stereo */
- unsigned long val_ll = 0x80001;
- unsigned long val_lr = 0;
- unsigned long val_rl = 0;
- unsigned long val_rr = 0x80001;
-
- switch(channel_config)
- {
- /* Note: cases are in different order that in firmware/sound.c
- * to work around a gcc bug (jumptable creation)! */
-
- /* case SOUND_CHAN_STEREO unnecessary */
-
- case SOUND_CHAN_MONO:
- val_ll = 0xc0001;
- val_lr = 0xc0001;
- val_rl = 0xc0001;
- val_rr = 0xc0001;
- break;
-
- case SOUND_CHAN_MONO_LEFT:
- val_ll = 0x80001;
- val_lr = 0x80001;
- val_rl = 0;
- val_rr = 0;
- break;
-
- case SOUND_CHAN_MONO_RIGHT:
- val_ll = 0;
- val_lr = 0;
- val_rl = 0x80001;
- val_rr = 0x80001;
- break;
-
- case SOUND_CHAN_KARAOKE:
- val_ll = 0xc0001;
- val_lr = 0x3ffff;
- val_rl = 0x3ffff;
- val_rr = 0xc0001;
- break;
-
- case SOUND_CHAN_CUSTOM:
- {
- /* fixed point variables (matching MAS internal format)
- integer part: upper 13 bits (inlcuding sign)
- fractional part: lower 19 bits */
- long fp_width, fp_straight, fp_cross;
-
- fp_width = (stereo_width * 0x7ffff) / 100;
- if (stereo_width <= 100)
- {
- fp_straight = - (0x7ffff + fp_width) / 2;
- fp_cross = fp_straight + fp_width;
- }
- else
- {
- /* straight = - (1 + width) / (2 * width) */
- fp_straight = - (((0x7ffff + fp_width) / (fp_width >> 9)) << 9);
- fp_cross = 0x7ffff + fp_straight;
- }
- val_ll = val_rr = fp_straight & 0xfffff;
- val_lr = val_rl = fp_cross & 0xfffff;
- }
- break;
-
- }
-
- rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_LL, &val_ll, 1); /* LL */
- rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_LR, &val_lr, 1); /* LR */
- rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_RL, &val_rl, 1); /* RL */
- rb->mas_writemem(MAS_BANK_D0, PCM_VOL_OUT_RR, &val_rr, 1); /* RR */
-}
-
-/** Basic playback system **/
-
-void start_demand_isr(void)
-{
- ICR |= 0x0010; /* IRQ3 edge sensitive */
- or_b(0x80, &SCR0);
-}
-
-void stop_demand_isr(void)
-{
- and_b(~0x80, &SCR0);
-}
-
-void dma_end_isr(void)
-{
- unsigned char* start;
- int size = 0;
-
- if (pcm_callback)
- pcm_callback(&start, &size);
-
- if (size > 0)
- {
- DTCR3 = size;
- SAR3 = (unsigned int) start;
- }
- else
- {
- CHCR3 &= ~0x0001; /* Disable the DMA interrupt */
- playing = false;
- }
- CHCR3 &= ~0x0002; /* Clear DMA interrupt */
-}
-
-void demand_irq_enable(bool on)
-{
- int oldlevel = disable_irq_save();
-
- if(on)
- {
- IPRA = (IPRA & 0xfff0) | 0x000b;
- ICR &= ~0x0010; /* IRQ3 level sensitive */
- }
- else
- {
- IPRA &= 0xfff0;
- }
-
- restore_irq(oldlevel);
-}
-
-static inline int available(void)
-{
- int space = aud_write - aud_read;
- if (space < 0)
- space += aud_size;
-
- return space;
-}
-
-void pcm_get_more(unsigned char** start, int* size)
-{
- int advance;
-
- aud_read += last_dma_chunksize;
- if (aud_read >= aud_size)
- aud_read = 0;
-
- advance = MIN(available(), aud_size - aud_read);
- advance = MIN(0x4000, advance);
-
- *start = aud_buf + aud_read;
- *size = advance;
-
- last_dma_chunksize = advance;
-}
-
-void pcm_start(void)
-{
- int advance;
-
- advance = MIN(available(), aud_size - aud_read);
- advance = MIN(0x4000, advance);
-
- if (!advance)
- return;
-
- pcm_callback = pcm_get_more;
-
- /* init DMA */
- DAR3 = 0x5FFFEC3;
- CHCR3 &= ~0x0002; /* Clear interrupt */
- CHCR3 = 0x1504; /* Single address destination, TXI0, IE=1 */
- DMAOR = 0x0001; /* Enable DMA */
-
- SAR3 = (unsigned int)(aud_buf + aud_read);
- DTCR3 = advance;
- last_dma_chunksize = advance;
-
- playing = true;
- demand_irq_enable(true);
- CHCR3 |= 0x0001; /* Enable DMA IRQ */
-}
-
-void hijack_interrupts(bool on)
-{
- static bool taken = false;
- static unsigned long orig_DEI3, orig_IRQ3, orig_IRQ6;
-
- if (on && !taken)
- {
- orig_IRQ3 = IRQ3;
- IRQ3 = (unsigned long)start_demand_isr;
- orig_IRQ6 = IRQ6;
- IRQ6 = (unsigned long)stop_demand_isr;
- orig_DEI3 = DEI3;
- DEI3 = (unsigned long)dma_end_isr;
- }
- else if (!on && taken)
- {
- IRQ3 = orig_IRQ3;
- IRQ6 = orig_IRQ6;
- DEI3 = orig_DEI3;
- }
- taken = on;
-}
-
-void cleanup(void *fd)
-{
- demand_irq_enable(false);
- hijack_interrupts(false);
-
- mas_restore();
- rb->sound_set(SOUND_CHANNELS, rb->global_settings->channel_config);
- rb->sound_set(SOUND_STEREO_WIDTH, rb->global_settings->stereo_width);
-
- /* reconfigure SCI */
- while (!(SSR0 & SCI_TEND)); /* wait for end of transfer */
- BRR0 = 2; /* ~1 MBit/s */
-
- rb->close(*(int*)fd);
-}
-
-int play_file(char* filename)
-{
- int button;
- int fd;
- int wanted, got;
- unsigned format, channels, samplerate, samplebits, bytes, time;
- unsigned rate = 0;
- unsigned long mas;
-
- fd = rb->open(filename, O_RDONLY);
- if (fd < 0)
- {
- rb->splash(2*HZ, "Couldn't open WAV file");
- return PLAY_ERROR;
- }
-
- /* Process WAV header */
- wanted = 44;
- got = rb->read(fd, aud_buf, wanted); /* wav header */
- if (got < 0)
- {
- rb->splash(2*HZ, "Read error");
- rb->close(fd);
- return PLAY_ERROR;
- }
- else if (got < wanted)
- {
- rb->splash(2*HZ, "File too short");
- rb->close(fd);
- return PLAY_ERROR;
- }
-
- if (rb->memcmp(aud_buf, "RIFF", 4)
- || rb->memcmp(aud_buf + 8, "WAVE", 4)
- || rb->memcmp(aud_buf + 12, "fmt ", 4)
- || rb->memcmp(aud_buf + 36, "data", 4))
- {
- rb->splash(2*HZ, "No canonical WAV file");
- rb->close(fd);
- return PLAY_ERROR;
- }
-
- format = letoh16(*(uint16_t *)(aud_buf + 20));
- if (format != 1)
- {
- rb->splashf(2*HZ, "Unsupported format: %d", format);
- rb->close(fd);
- return PLAY_ERROR;
- }
-
- channels = letoh16(*(uint16_t *)(aud_buf + 22));
- if (channels > 2)
- {
- rb->splashf(2*HZ, "Too many channels: %d", channels);
- rb->close(fd);
- return PLAY_ERROR;
- }
-
- samplebits = letoh16(*(uint16_t *)(aud_buf + 34));
- if (samplebits != 16)
- {
- rb->splashf(2*HZ, "Unsupported sample depth: %dbit", samplebits);
- rb->close(fd);
- return PLAY_ERROR;
- }
-
- samplerate = letoh32(*(uint32_t *)(aud_buf + 24));
- switch (samplerate)
- {
- case 8000: rate = 0; break;
- case 11025: rate = 1; break;
- case 12000: rate = 2; break;
- case 16000: rate = 4; break;
- case 22050: rate = 5; break;
- case 24000: rate = 6; break;
- case 32000: rate = 8; break;
- case 44100: rate = 9; break;
- case 48000: rate = 10; break;
- default:
- rb->splashf(2*HZ, "Unsupported samplerate: %dHz", samplerate);
- rb->close(fd);
- return PLAY_ERROR;
- }
- bytes = letoh32(*(uint32_t *)(aud_buf + 40));
- time = bytes / (samplerate * 2 * channels);
-
- rb->lcd_puts(0, 0, "Playing WAV file");
- rb->lcd_putsf(0, 1, "%dHz %s", samplerate,
- (channels == 1) ? "mono" : "stereo");
- rb->lcd_putsf(0, 2, "Length: %d:%02d", time / 60, time % 60);
- rb->lcd_update();
-
- rb->sound_set_pitch(PITCH_SPEED_100); /* reset pitch */
- mas_download_pcm(); /* Download PCM codec */
-
- /* Configure PCM codec */
- pcm_channel_config(rb->global_settings->channel_config,
- rb->global_settings->stereo_width);
-#ifdef HAVE_SPDIF_OUT
- mas = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */
-#else
- mas = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */
-#endif
- rb->mas_writemem(MAS_BANK_D0, PCM_IF_STATUS_CONTROL, &mas, 1);
-
- mas = 0x0060 /* no framing, little endian */
- | ((channels == 1) ? 0x10 : 0) /* mono or stereo */
- | rate; /* bitrate */
- rb->mas_writemem(MAS_BANK_D0, PCM_SAMPLE_RATE, &mas, 1);
-
- mas = 0x1025; /* playback, SIBC clock invert, validate */
- rb->mas_writemem(MAS_BANK_D0, PCM_MAIN_IO_CONTROL, &mas, 1);
-
- /* configure SCI */
- while (!(SSR0 & SCI_TEND)); /* wait for end of transfer */
- BRR0 = 0; /* maximum speed, ~3 MBit/s */
-
-#if !(CONFIG_STORAGE & STORAGE_MMC)
- low_water = 5 /* seconds */
- * 2 /* bytes per sample */
- * channels
- * samplerate;
-#endif
-
- hijack_interrupts(true);
- filling = true;
-
- /* Playback loop */
- while (filling || playing)
- {
- if (filling)
- {
- int free_space = aud_read - aud_write;
-
- if (free_space <= 0)
- free_space += aud_size;
- free_space -= 2;
-
- if (free_space <= 0)
- {
- filling = false;
- rb->storage_sleep();
- }
- else
- {
- wanted = MIN(free_space, aud_size - aud_write);
-#if (CONFIG_STORAGE & STORAGE_MMC)
- wanted = MIN(wanted, 256*1024);
-#elif MEMORYSIZE == 8
- wanted = MIN(wanted, 1024*1024);
-#endif
- if (available() < low_water)
- wanted = MIN(wanted, LOW_WATER_CHUNKSIZE);
-
- got = rb->read(fd, aud_buf + aud_write, wanted);
-
- if (got > 0)
- {
- rb->bitswap(aud_buf + aud_write, got);
-
- aud_write += got;
- if (aud_write >= aud_size)
- aud_write = 0;
- }
- else /* end of file */
- {
- filling = false;
- }
-
- if (((available() >= low_water) || !filling) && !playing)
- pcm_start();
- }
- button = rb->button_get(false);
- }
- else
- {
- button = rb->button_get_w_tmo(HZ/2);
- if ((available() < low_water) && (got > 0))
- filling = true;
- }
- if (button == WAVPLAY_QUIT)
- break;
- else if (rb->default_event_handler_ex(button, cleanup, &fd) == SYS_USB_CONNECTED)
- return PLAY_GOT_USB;
-
-
- }
- cleanup(&fd);
- return PLAY_OK;
-}
-
-/* plugin entry point */
-enum plugin_status plugin_start(const void* parameter)
-{
- size_t buf_size;
-
- if (!parameter)
- {
- rb->splash(HZ, "Play WAV file!");
- return PLUGIN_OK;
- }
-
- plug_buf = rb->plugin_get_buffer(&buf_size);
- if (buf_size < 6700) /* needed for i2c transfer */
- {
- rb->splash(HZ, "Out of memory.");
- return PLUGIN_ERROR;
- }
-
- aud_buf = rb->plugin_get_audio_buffer(&buf_size);
- aud_size = buf_size;
-
- switch (play_file((char*)parameter))
- {
- case PLAY_OK:
- return PLUGIN_OK;
- case PLAY_GOT_USB:
- return PLUGIN_USB_CONNECTED;
- default:
- return PLUGIN_ERROR;
- }
-}
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 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2007 Jens Arnold
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-#include "plugin.h"
-#include "lib/configfile.h"
-
-
-
-/************ Start of MAS pcm codec, raw i2c blocks ************/
-
-// address 04640 count 30 (126 bytes)
-static const unsigned char maspcm_array1[] = {
- 0xe0, 0x00, 0x00, 0x1e, 0x06, 0x40,
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x25, // 00000025
- 0x00, 0x00, 0x00, 0x04, // 00000004
- 0x00, 0x00, 0x48, 0x00, // 00004800
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xFF, 0xFF, // 0000FFFF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x82, 0x00, // 00008200
- 0x00, 0x00, 0x00, 0x0A, // 0000000A
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x03, 0x18, // 00000318
- 0x00, 0x00, 0x03, 0x18, // 00000318
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x03, 0x18, // 00000318
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x03, 0x00, // 00000300
-};
-// address 04674 count 81 (330 bytes)
-static const unsigned char maspcm_array2[] = {
- 0xe0, 0x00, 0x00, 0x51, 0x06, 0x74,
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x00, 0x60, // 00000060
- 0x00, 0x00, 0x00, 0x60, // 00000060
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0xC0, 0x00, // 0000C000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x1E, // 0000001E
- 0x00, 0x00, 0x42, 0x11, // 00004211
- 0x00, 0x00, 0x58, 0x33, // 00005833
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x01, 0x20, 0x01, // 00012001
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x29, // 00000029
- 0x00, 0x00, 0x30, 0xC3, // 000030C3
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x00, 0x40, // 00000040
- 0x00, 0x00, 0x02, 0x00, // 00000200
- 0x00, 0x01, 0x20, 0x00, // 00012000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x2D, // 0000002D
- 0x00, 0x00, 0x2C, 0x86, // 00002C86
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x00, 0x30, // 00000030
- 0x00, 0x00, 0x00, 0x30, // 00000030
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x01, 0x80, 0x00, // 00018000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x3C, // 0000003C
- 0x00, 0x00, 0x21, 0x93, // 00002193
- 0x00, 0x00, 0x58, 0x33, // 00005833
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x40, 0x01, // 00024001
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x52, // 00000052
- 0x00, 0x00, 0x18, 0xAD, // 000018AD
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x02, 0x00, // 00000200
- 0x00, 0x02, 0x40, 0x00, // 00024000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x5A, // 0000005A
- 0x00, 0x00, 0x16, 0x81, // 00001681
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x18, // 00000018
- 0x00, 0x00, 0x00, 0x18, // 00000018
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x03, 0x00, 0x00, // 00030000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0x78, // 00000078
- 0x00, 0x00, 0x10, 0xED, // 000010ED
- 0x00, 0x00, 0x58, 0x33, // 00005833
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x04, 0x80, 0x03, // 00048003
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0xA5, // 000000A5
- 0x00, 0x00, 0x0C, 0x56, // 00000C56
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x00, 0x10, // 00000010
- 0x00, 0x00, 0x02, 0x00, // 00000200
- 0x00, 0x04, 0x80, 0x00, // 00048000
- 0x00, 0x00, 0x00, 0x14, // 00000014
- 0x00, 0x00, 0x00, 0xB4, // 000000B4
- 0x00, 0x00, 0x0B, 0x51, // 00000B51
-};
-// address 04661 count 19 (82 bytes)
-static const unsigned char maspcm_array3[] = {
- 0xe0, 0x00, 0x00, 0x13, 0x06, 0x61,
- 0x00, 0x00, 0x01, 0x25, // 00000125
- 0x00, 0x00, 0x00, 0x05, // 00000005
- 0x00, 0x00, 0x48, 0x00, // 00004800
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x82, 0x00, // 00008200
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x08, 0x00, 0x00, // 00080000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x00, // 00080000
-};
-// address 046E4 count 16 (70 bytes)
-static const unsigned char maspcm_array4[] = {
- 0xe0, 0x00, 0x00, 0x10, 0x06, 0xe4,
- 0x00, 0x00, 0x06, 0x74, // 00000674
- 0x00, 0x00, 0x06, 0x7D, // 0000067D
- 0x00, 0x00, 0x06, 0x86, // 00000686
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x00, 0x06, 0x8F, // 0000068F
- 0x00, 0x00, 0x06, 0x98, // 00000698
- 0x00, 0x00, 0x06, 0xA1, // 000006A1
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x00, 0x06, 0xAA, // 000006AA
- 0x00, 0x00, 0x06, 0xB3, // 000006B3
- 0x00, 0x00, 0x06, 0xBC, // 000006BC
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
- 0x00, 0x0F, 0xFF, 0xFF, // 000FFFFF
-};
-// address 04700 count 18 (78 byte)
-static const unsigned char maspcm_array5[] = {
- 0xe0, 0x00, 0x00, 0x12, 0x07, 0x00,
- 0x00, 0x00, 0x06, 0xBC, // 000006BC
- 0x00, 0x00, 0x00, 0x0A, // 0000000A
- 0x00, 0x00, 0x06, 0x74, // 00000674
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x06, 0x7D, // 0000067D
- 0x00, 0x00, 0x00, 0x01, // 00000001
- 0x00, 0x00, 0x06, 0x86, // 00000686
- 0x00, 0x00, 0x00, 0x02, // 00000002
- 0x00, 0x00, 0x06, 0x8F, // 0000068F
- 0x00, 0x00, 0x00, 0x04, // 00000004
- 0x00, 0x00, 0x06, 0x98, // 00000698
- 0x00, 0x00, 0x00, 0x05, // 00000005
- 0x00, 0x00, 0x06, 0xA1, // 000006A1
- 0x00, 0x00, 0x00, 0x06, // 00000006
- 0x00, 0x00, 0x06, 0xAA, // 000006AA
- 0x00, 0x00, 0x00, 0x08, // 00000008
- 0x00, 0x00, 0x06, 0xB3, // 000006B3
- 0x00, 0x00, 0x00, 0x09, // 00000009
-};
-// address 06600 count 63 (258 bytes)
-static const unsigned char maspcm_array6[] = {
- 0xf0, 0x00, 0x00, 0x3f, 0x06, 0x00,
- 0x00, 0x00, 0x0B, 0xAD, // 00000BAD
- 0x00, 0x00, 0x10, 0x00, // 00001000
- 0x00, 0x00, 0x20, 0x00, // 00002000
- 0x00, 0x00, 0x30, 0x00, // 00003000
- 0x00, 0x00, 0x40, 0x00, // 00004000
- 0x00, 0x00, 0x50, 0x00, // 00005000
- 0x00, 0x00, 0x60, 0x00, // 00006000
- 0x00, 0x00, 0x70, 0x00, // 00007000
- 0x00, 0x00, 0x80, 0x00, // 00008000
- 0x00, 0x00, 0x90, 0x00, // 00009000
- 0x00, 0x00, 0xA0, 0x00, // 0000A000
- 0x00, 0x00, 0xB0, 0x00, // 0000B000
- 0x00, 0x00, 0xC0, 0x00, // 0000C000
- 0x00, 0x00, 0xD0, 0x00, // 0000D000
- 0x00, 0x00, 0xE0, 0x00, // 0000E000
- 0x00, 0x00, 0xF0, 0x00, // 0000F000
- 0x00, 0x01, 0x00, 0x00, // 00010000
- 0x00, 0x01, 0x10, 0x00, // 00011000
- 0x00, 0x01, 0x20, 0x00, // 00012000
- 0x00, 0x01, 0x30, 0x00, // 00013000
- 0x00, 0x01, 0x40, 0x00, // 00014000
- 0x00, 0x01, 0x50, 0x00, // 00015000
- 0x00, 0x01, 0x60, 0x00, // 00016000
- 0x00, 0x01, 0x70, 0x00, // 00017000
- 0x00, 0x01, 0x80, 0x00, // 00018000
- 0x00, 0x01, 0x90, 0x00, // 00019000
- 0x00, 0x01, 0xA0, 0x00, // 0001A000
- 0x00, 0x01, 0xB0, 0x00, // 0001B000
- 0x00, 0x01, 0xC0, 0x00, // 0001C000
- 0x00, 0x01, 0xD0, 0x00, // 0001D000
- 0x00, 0x01, 0xE0, 0x00, // 0001E000
- 0x00, 0x01, 0xF0, 0x00, // 0001F000
- 0x00, 0x02, 0x00, 0x00, // 00020000
- 0x00, 0x02, 0x10, 0x00, // 00021000
- 0x00, 0x02, 0x20, 0x00, // 00022000
- 0x00, 0x02, 0x30, 0x00, // 00023000
- 0x00, 0x02, 0x40, 0x00, // 00024000
- 0x00, 0x00, 0x05, 0xFF, // 000005FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x00, 0x20, // 00000020
- 0x00, 0x00, 0x03, 0x00, // 00000300
- 0x00, 0x00, 0x05, 0xFF, // 000005FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x90, // 00000090
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x0C, // 0000000C
-};
-// address 06640 count 12 (54 bytes)
-static const unsigned char maspcm_array7[] = {
- 0xf0, 0x00, 0x00, 0x0c, 0x06, 0x40,
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-// address 06660 count 28 (118 bytes)
-static const unsigned char maspcm_array8[] = {
- 0xf0, 0x00, 0x00, 0x1c, 0x06, 0x60,
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-// address 04800 count 1668 (6678 bytes)
-static const unsigned char maspcm_array9[] = {
- 0xe0, 0x00, 0x06, 0x84, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x47, 0xC0, // 000747C0
- 0x00, 0x07, 0x04, 0x00, // 00070400
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6B, // 0006C06B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x90, // 00070690
- 0x00, 0x07, 0x4C, 0x07, // 00074C07
- 0x00, 0x07, 0x0F, 0xFF, // 00070FFF
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x1D, // 0006801D
- 0x00, 0x06, 0x80, 0x1F, // 0006801F
- 0x00, 0x06, 0x80, 0x21, // 00068021
- 0x00, 0x06, 0x80, 0x23, // 00068023
- 0x00, 0x06, 0x84, 0x1D, // 0006841D
- 0x00, 0x06, 0x84, 0x1F, // 0006841F
- 0x00, 0x06, 0x84, 0x21, // 00068421
- 0x00, 0x06, 0x84, 0x23, // 00068423
- 0x00, 0x06, 0x88, 0x17, // 00068817
- 0x00, 0x06, 0x8C, 0x17, // 00068C17
- 0x00, 0x06, 0xD0, 0x6D, // 0006D06D
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x57, // 00071E57
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x90, // 00070690
- 0x00, 0x07, 0x4C, 0x07, // 00074C07
- 0x00, 0x07, 0x0F, 0xFF, // 00070FFF
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x1D, // 0006801D
- 0x00, 0x06, 0x80, 0x1F, // 0006801F
- 0x00, 0x06, 0x80, 0x21, // 00068021
- 0x00, 0x06, 0x80, 0x23, // 00068023
- 0x00, 0x06, 0x84, 0x1D, // 0006841D
- 0x00, 0x06, 0x84, 0x1F, // 0006841F
- 0x00, 0x06, 0x84, 0x21, // 00068421
- 0x00, 0x06, 0x84, 0x23, // 00068423
- 0x00, 0x06, 0x88, 0x17, // 00068817
- 0x00, 0x06, 0x8C, 0x17, // 00068C17
- 0x00, 0x06, 0xD0, 0x6D, // 0006D06D
- 0x00, 0x06, 0x98, 0x1E, // 0006981E
- 0x00, 0x04, 0x05, 0x08, // 00040508
- 0x00, 0x04, 0x0D, 0x08, // 00040D08
- 0x00, 0x04, 0x15, 0x08, // 00041508
- 0x00, 0x04, 0x1D, 0x08, // 00041D08
- 0x00, 0x04, 0x25, 0x08, // 00042508
- 0x00, 0x04, 0x2D, 0x08, // 00042D08
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x30, // 00073C30
- 0x00, 0x06, 0x80, 0x3B, // 0006803B
- 0x00, 0x06, 0x88, 0x5B, // 0006885B
- 0x00, 0x06, 0x94, 0x3B, // 0006943B
- 0x00, 0x06, 0x9C, 0x43, // 00069C43
- 0x00, 0x06, 0xA0, 0x53, // 0006A053
- 0x00, 0x06, 0xA8, 0x4B, // 0006A84B
- 0x00, 0x06, 0xB4, 0x53, // 0006B453
- 0x00, 0x06, 0xBC, 0x06, // 0006BC06
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x36, 0x63, // 00073663
- 0x00, 0x02, 0x12, 0x57, // 00021257
- 0x00, 0x07, 0x6C, 0x18, // 00076C18
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0x45, // 00073C45
- 0x00, 0x06, 0xB0, 0x20, // 0006B020
- 0x00, 0x04, 0x36, 0x00, // 00043600
- 0x00, 0x02, 0x12, 0x46, // 00021246
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0x4C, // 00073C4C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x66, // 00070666
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x7F, // 0006947F
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x07, 0x88, 0x04, // 00078804
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x0B, 0x49, 0x7F, // 000B497F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x0A, 0xC1, 0xC2, // 000AC1C2
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x10, 0x70, // 00021070
- 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x90, 0x04, // 00079004
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xC2, 0xC1, // 000AC2C1
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x02, 0x10, 0x85, // 00021085
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6D, // 0006C06D
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x04, // 00076C04
- 0x00, 0x07, 0x2C, 0x7E, // 00072C7E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x10, 0x54, // 00021054
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x74, // 00098074
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x00, // 00071F00
- 0x00, 0x08, 0x80, 0x42, // 00088042
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x11, 0x51, // 00021151
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0A, 0xC2, 0xC3, // 000AC2C3
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x78, // 00098078
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x42, // 00088042
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x11, 0x51, // 00021151
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x66, // 00070666
- 0x00, 0x07, 0x56, 0x00, // 00075600
- 0x00, 0x07, 0x14, 0x03, // 00071403
- 0x00, 0x06, 0x8C, 0x3B, // 00068C3B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x07, 0x90, 0x04, // 00079004
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2F, 0x00, // 00072F00
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x00, // 00070400
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x06, 0xAC, 0x05, // 0006AC05
- 0x00, 0x01, 0x41, 0x00, // 00014100
- 0x00, 0x06, 0x84, 0x1C, // 0006841C
- 0x00, 0x07, 0x8C, 0x0C, // 00078C0C
- 0x00, 0x07, 0x8C, 0x0C, // 00078C0C
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1C, 0x90, // 00071C90
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x17, 0x00, // 00071700
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x25, 0xFF, // 000725FF
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x06, 0x9C, 0x25, // 00069C25
- 0x00, 0x06, 0x98, 0x2D, // 0006982D
- 0x00, 0x06, 0x94, 0x3C, // 0006943C
- 0x00, 0x06, 0xA4, 0x16, // 0006A416
- 0x00, 0x06, 0xA0, 0x16, // 0006A016
- 0x00, 0x06, 0x8C, 0x3B, // 00068C3B
- 0x00, 0x06, 0xAC, 0x24, // 0006AC24
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x0B, 0x52, 0x6F, // 000B526F
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1E, 0x90, // 00071E90
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x1E, // 0006881E
- 0x00, 0x06, 0x90, 0x15, // 00069015
- 0x00, 0x06, 0x98, 0x1F, // 0006981F
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x6F, // 0006846F
- 0x00, 0x06, 0x84, 0x70, // 00068470
- 0x00, 0x04, 0x05, 0x10, // 00040510
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x36, 0x63, // 00073663
- 0x00, 0x02, 0x12, 0x57, // 00021257
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x04, 0x2C, 0x08, // 00042C08
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0xD2, // 00073CD2
- 0x00, 0x06, 0xB0, 0x22, // 0006B022
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x14, 0x20, // 00041420
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x07, 0x66, 0x00, // 00076600
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x5C, 0x80, // 00075C80
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3D, 0x00, // 00073D00
- 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x36, 0xC4, // 000836C4
- 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x02, 0x12, 0x46, // 00021246
- 0x00, 0x09, 0x92, 0x51, // 00099251
- 0x00, 0x08, 0x36, 0xC2, // 000836C2
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3C, 0xEA, // 00073CEA
- 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D
- 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C
- 0x00, 0x0B, 0x7F, 0x7F, // 000B7F7F
- 0x00, 0x09, 0xB6, 0x7D, // 0009B67D
- 0x00, 0x0A, 0x3F, 0x53, // 000A3F53
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x0A, 0xF6, 0x43, // 000AF643
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x18, // 00071F18
- 0x00, 0x07, 0x6C, 0x04, // 00076C04
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x04, 0x0C, 0x08, // 00040C08
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x0A, 0x09, 0xC6, // 000A09C6
- 0x00, 0x08, 0x8F, 0xC1, // 00088FC1
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x09, 0x25, // 000C0925
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x00, // 00070400
- 0x00, 0x06, 0x98, 0x53, // 00069853
- 0x00, 0x06, 0x90, 0x2C, // 0006902C
- 0x00, 0x06, 0xA4, 0x24, // 0006A424
- 0x00, 0x06, 0x80, 0x53, // 00068053
- 0x00, 0x06, 0x88, 0x54, // 00068854
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x06, 0x14, 0x6F, // 0006146F
- 0x00, 0x06, 0x00, 0x52, // 00060052
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x06, 0x1C, 0x70, // 00061C70
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x38, // 00029F38
- 0x00, 0x0A, 0x09, 0x74, // 000A0974
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xC9, 0x43, // 000AC943
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0xA1, 0x42, // 0008A142
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x08, 0x1B, 0x41, // 00081B41
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x6F, // 0006946F
- 0x00, 0x06, 0x9C, 0x70, // 00069C70
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x0B, 0x00, 0x41, // 000B0041
- 0x00, 0x07, 0x6C, 0x04, // 00076C04
- 0x00, 0x07, 0x2D, 0x1E, // 00072D1E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x6D, // 0006806D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x24, // 00060424
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x61, // 00071661
- 0x00, 0x08, 0x8C, 0x80, // 00088C80
- 0x00, 0x02, 0x89, 0x10, // 00028910
- 0x00, 0x02, 0x11, 0x03, // 00021103
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x07, 0x54, 0x0C, // 0007540C
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x0A, 0xD8, 0x7E, // 000AD87E
- 0x00, 0x0A, 0xC8, 0x41, // 000AC841
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0A, 0xC8, 0xC2, // 000AC8C2
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x10, 0x08, // 00021008
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x98, 0x07, // 00079807
- 0x00, 0x06, 0x04, 0x6F, // 0006046F
- 0x00, 0x06, 0x0C, 0x70, // 00060C70
- 0x00, 0x0A, 0x10, 0x7D, // 000A107D
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x08, 0x99, 0xC2, // 000899C2
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x10, 0xC2, // 000210C2
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x6B, // 00070E6B
- 0x00, 0x0B, 0x52, 0x50, // 000B5250
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x1C, // 0006881C
- 0x00, 0x0A, 0xCC, 0x82, // 000ACC82
- 0x00, 0x04, 0x1D, 0x88, // 00041D88
- 0x00, 0x04, 0x1D, 0x00, // 00041D00
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x88, 0x04, // 00078804
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x90, // 00070690
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x17, 0x18, // 00071718
- 0x00, 0x06, 0x80, 0x1F, // 0006801F
- 0x00, 0x06, 0x8C, 0x3B, // 00068C3B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x53, // 00069053
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x65, // 00070E65
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x26, 0x68, // 00072668
- 0x00, 0x06, 0x88, 0x20, // 00068820
- 0x00, 0x07, 0x90, 0x06, // 00079006
- 0x00, 0x06, 0x94, 0x7F, // 0006947F
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x07, 0x90, 0x07, // 00079007
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x6B, // 00070E6B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x20, // 00068820
- 0x00, 0x04, 0x0E, 0x00, // 00040E00
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x40, // 00071C40
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x6A, // 0006806A
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x20, // 00071C20
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x6C, // 0006806C
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x10, // 00071C10
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x0A, 0xD1, 0xC3, // 000AD1C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x76, // 00068076
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x67, // 00071E67
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0xE4, // 000706E4
- 0x00, 0x0A, 0xD1, 0x4F, // 000AD14F
- 0x00, 0x08, 0x10, 0xC2, // 000810C2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x1C, // 0006981C
- 0x00, 0x07, 0x90, 0x04, // 00079004
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x07, 0x54, 0x08, // 00075408
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x0A, 0xCC, 0x81, // 000ACC81
- 0x00, 0x08, 0x92, 0xC1, // 000892C1
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x11, 0xBD, // 000211BD
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x02, 0x12, 0x57, // 00021257
- 0x00, 0x07, 0x36, 0x63, // 00073663
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3D, 0xA4, // 00073DA4
- 0x00, 0x06, 0xB0, 0x20, // 0006B020
- 0x00, 0x04, 0x36, 0x08, // 00043608
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x06, 0x00, // 00040600
- 0x00, 0x07, 0x66, 0x00, // 00076600
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x5C, 0x80, // 00075C80
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3D, 0x00, // 00073D00
- 0x00, 0x0A, 0xC8, 0xC4, // 000AC8C4
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x36, 0xC4, // 000836C4
- 0x00, 0x0A, 0xC8, 0xC3, // 000AC8C3
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x0A, 0xC8, 0xC7, // 000AC8C7
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x12, 0x46, // 00021246
- 0x00, 0x09, 0x92, 0x51, // 00099251
- 0x00, 0x08, 0x36, 0xC2, // 000836C2
- 0x00, 0x07, 0x7C, 0x04, // 00077C04
- 0x00, 0x07, 0x3D, 0xBF, // 00073DBF
- 0x00, 0x06, 0xAC, 0x6D, // 0006AC6D
- 0x00, 0x06, 0xAC, 0x6C, // 0006AC6C
- 0x00, 0x04, 0x06, 0x08, // 00040608
- 0x00, 0x04, 0x07, 0x08, // 00040708
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x62, // 00070E62
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x2D, // 0007142D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x1C, // 0006881C
- 0x00, 0x04, 0x0C, 0x00, // 00040C00
- 0x00, 0x0A, 0xD2, 0xC1, // 000AD2C1
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x4F, // 0006904F
- 0x00, 0x06, 0x94, 0x77, // 00069477
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x39, // 00070639
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x61, // 00070E61
- 0x00, 0x07, 0x54, 0x12, // 00075412
- 0x00, 0x07, 0x14, 0x30, // 00071430
- 0x00, 0x06, 0x84, 0x1C, // 0006841C
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x06, 0x88, 0x1C, // 0006881C
- 0x00, 0x04, 0x0C, 0x00, // 00040C00
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x09, 0xAC, 0x7F, // 0009AC7F
- 0x00, 0x0A, 0xC1, 0x50, // 000AC150
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0A, 0x24, 0x7F, // 000A247F
- 0x00, 0x0A, 0xC9, 0xC2, // 000AC9C2
- 0x00, 0x08, 0x0B, 0xC1, // 00080BC1
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xA4, 0x00, // 0007A400
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x07, 0x8C, 0x00, // 00078C00
- 0x00, 0x07, 0xAC, 0x00, // 0007AC00
- 0x00, 0x04, 0xA8, 0x00, // 0004A800
- 0x00, 0x07, 0xB4, 0x00, // 0007B400
- 0x00, 0x06, 0x84, 0x45, // 00068445
- 0x00, 0x06, 0x84, 0x46, // 00068446
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x40, // 00071640
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x26, 0x90, // 00072690
- 0x00, 0x0B, 0x49, 0x75, // 000B4975
- 0x00, 0x06, 0x94, 0x1E, // 0006941E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x1F, // 0006A41F
- 0x00, 0x06, 0x8C, 0x15, // 00068C15
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6A, // 0007066A
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x1F, 0x08, // 00041F08
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x06, 0xA4, 0x65, // 0006A465
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x84, 0x0D, // 0007840D
- 0x00, 0x07, 0x8C, 0x5D, // 00078C5D
- 0x00, 0x06, 0xAC, 0x79, // 0006AC79
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x0B, 0x76, 0x41, // 000B7641
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0C, 0x0B, 0x0D, // 000C0B0D
- 0x00, 0x0C, 0x13, 0x0D, // 000C130D
- 0x00, 0x0C, 0x1B, 0x0D, // 000C1B0D
- 0x00, 0x0C, 0x23, 0x0D, // 000C230D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB4, 0x6A, // 0006B46A
- 0x00, 0x06, 0x8C, 0x66, // 00068C66
- 0x00, 0x06, 0x94, 0x67, // 00069467
- 0x00, 0x06, 0x9C, 0x68, // 00069C68
- 0x00, 0x06, 0xA4, 0x69, // 0006A469
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x27, 0x12, // 00072712
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x03, 0x00, // 00040300
- 0x00, 0x04, 0x0B, 0x00, // 00040B00
- 0x00, 0x04, 0x13, 0x00, // 00041300
- 0x00, 0x04, 0x1B, 0x00, // 00041B00
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x07, 0x80, 0x0F, // 0007800F
- 0x00, 0x07, 0x88, 0x0F, // 0007880F
- 0x00, 0x07, 0x90, 0x0F, // 0007900F
- 0x00, 0x07, 0x98, 0x07, // 00079807
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x1C, // 0006801C
- 0x00, 0x0A, 0xC4, 0x81, // 000AC481
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x74, // 00098074
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x66, // 00071E66
- 0x00, 0x07, 0x64, 0x04, // 00076404
- 0x00, 0x07, 0x24, 0x08, // 00072408
- 0x00, 0x08, 0x88, 0x41, // 00088841
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x12, 0x8F, // 0002128F
- 0x00, 0x07, 0x56, 0x00, // 00075600
- 0x00, 0x07, 0x14, 0x01, // 00071401
- 0x00, 0x06, 0xA0, 0x08, // 0006A008
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x20, // 00069820
- 0x00, 0x07, 0x90, 0x06, // 00079006
- 0x00, 0x08, 0x98, 0x42, // 00089842
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x18, 0x00, // 00021800
- 0x00, 0x07, 0x56, 0x00, // 00075600
- 0x00, 0x07, 0x14, 0x02, // 00071402
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x90, 0x06, // 00079006
- 0x00, 0x02, 0x10, 0x54, // 00021054
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x64, 0x68, // 000B6468
- 0x00, 0x0A, 0xBE, 0xC4, // 000ABEC4
- 0x00, 0x09, 0xA4, 0x46, // 0009A446
- 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x05, // 0006A405
- 0x00, 0x06, 0xBC, 0x0D, // 0006BC0D
- 0x00, 0x01, 0x41, 0x00, // 00014100
- 0x00, 0x06, 0xAC, 0x0F, // 0006AC0F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB4, 0x0D, // 0006B40D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xBD, 0x4A, // 0009BD4A
- 0x00, 0x09, 0xB6, 0x7C, // 0009B67C
- 0x00, 0x0A, 0xE4, 0x40, // 000AE440
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x07, 0x6F, 0xFF, // 00076FFF
- 0x00, 0x07, 0x2F, 0xFF, // 00072FFF
- 0x00, 0x01, 0x03, 0xA6, // 000103A6
- 0x00, 0x0A, 0x2D, 0x7C, // 000A2D7C
- 0x00, 0x09, 0xA4, 0x41, // 0009A441
- 0x00, 0x09, 0xBF, 0x41, // 0009BF41
- 0x00, 0x08, 0xE4, 0xC5, // 0008E4C5
- 0x00, 0x09, 0x1E, 0xC4, // 00091EC4
- 0x00, 0x02, 0x87, 0x10, // 00028710
- 0x00, 0x0A, 0xE3, 0xC3, // 000AE3C3
- 0x00, 0x08, 0xBF, 0xC5, // 0008BFC5
- 0x00, 0x07, 0x75, 0xD9, // 000775D9
- 0x00, 0x07, 0x36, 0x23, // 00073623
- 0x00, 0x09, 0xA7, 0x40, // 0009A740
- 0x00, 0x07, 0x6D, 0x14, // 00076D14
- 0x00, 0x0C, 0x36, 0x27, // 000C3627
- 0x00, 0x07, 0x2F, 0x2C, // 00072F2C
- 0x00, 0x0B, 0x7D, 0x75, // 000B7D75
- 0x00, 0x08, 0xAD, 0xC4, // 0008ADC4
- 0x00, 0x00, 0xC7, 0x87, // 0000C787
- 0x00, 0x0A, 0x6E, 0xC6, // 000A6EC6
- 0x00, 0x09, 0xA4, 0x44, // 0009A444
- 0x00, 0x08, 0xAD, 0x41, // 0008AD41
- 0x00, 0x09, 0xA4, 0xC5, // 0009A4C5
- 0x00, 0x09, 0xAD, 0x43, // 0009AD43
- 0x00, 0x09, 0xB4, 0x6D, // 0009B46D
- 0x00, 0x09, 0xA4, 0x49, // 0009A449
- 0x00, 0x0A, 0xF6, 0x7F, // 000AF67F
- 0x00, 0x0A, 0x24, 0x77, // 000A2477
- 0x00, 0x02, 0x86, 0x30, // 00028630
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x08, 0xBE, 0x48, // 0008BE48
- 0x00, 0x02, 0x87, 0x18, // 00028718
- 0x00, 0x09, 0xA4, 0x49, // 0009A449
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x09, 0xA4, 0x77, // 0009A477
- 0x00, 0x0B, 0x7F, 0x74, // 000B7F74
- 0x00, 0x08, 0xB6, 0x44, // 0008B644
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x0B, 0x5B, 0x41, // 000B5B41
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0x9B, 0x53, // 00099B53
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x00, 0xC7, 0x87, // 0000C787
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x09, 0xB6, 0x4F, // 0009B64F
- 0x00, 0x08, 0x35, 0xC6, // 000835C6
- 0x00, 0x0B, 0x3F, 0xC7, // 000B3FC7
- 0x00, 0x0A, 0xEC, 0xC4, // 000AECC4
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0D, 0x00, // 00070D00
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x69, // 00071E69
- 0x00, 0x0B, 0x64, 0x7F, // 000B647F
- 0x00, 0x06, 0x90, 0x78, // 00069078
- 0x00, 0x0B, 0x6D, 0x7E, // 000B6D7E
- 0x00, 0x06, 0x98, 0x22, // 00069822
- 0x00, 0x0A, 0xDF, 0x84, // 000ADF84
- 0x00, 0x0A, 0xDF, 0x85, // 000ADF85
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x77, // 00069877
- 0x00, 0x06, 0x98, 0x7A, // 0006987A
- 0x00, 0x06, 0xB8, 0x68, // 0006B868
- 0x00, 0x06, 0xB8, 0x69, // 0006B869
- 0x00, 0x06, 0xB8, 0x6F, // 0006B86F
- 0x00, 0x06, 0xB8, 0x70, // 0006B870
- 0x00, 0x06, 0xB8, 0x71, // 0006B871
- 0x00, 0x06, 0xB8, 0x72, // 0006B872
- 0x00, 0x06, 0xB8, 0x73, // 0006B873
- 0x00, 0x06, 0xB8, 0x74, // 0006B874
- 0x00, 0x06, 0xB8, 0x75, // 0006B875
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x28, 0x6A, // 0006286A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA8, 0x61, // 0006A861
- 0x00, 0x07, 0x65, 0x5D, // 0007655D
- 0x00, 0x07, 0x24, 0x10, // 00072410
- 0x00, 0x06, 0x30, 0x6C, // 0006306C
- 0x00, 0x07, 0x6D, 0x59, // 00076D59
- 0x00, 0x07, 0x2C, 0x50, // 00072C50
- 0x00, 0x08, 0xB6, 0x40, // 0008B640
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x07, 0x65, 0x05, // 00076505
- 0x00, 0x07, 0x25, 0x70, // 00072570
- 0x00, 0x07, 0x6D, 0x15, // 00076D15
- 0x00, 0x07, 0x2D, 0x60, // 00072D60
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA0, 0x66, // 0006A066
- 0x00, 0x06, 0xA8, 0x67, // 0006A867
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x20, // 00071C20
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3D, 0xFF, // 00073DFF
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x00, // 00070E00
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x35, 0xFF, // 000735FF
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x26, 0x98, // 00072698
- 0x00, 0x07, 0x6C, 0x01, // 00076C01
- 0x00, 0x07, 0x2C, 0x90, // 00072C90
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x90, // 00070490
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x06, 0x98, 0x15, // 00069815
- 0x00, 0x06, 0xB8, 0x16, // 0006B816
- 0x00, 0x06, 0xB4, 0x14, // 0006B414
- 0x00, 0x06, 0x88, 0x28, // 00068828
- 0x00, 0x06, 0x88, 0x22, // 00068822
- 0x00, 0x06, 0x90, 0x2E, // 0006902E
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x9C, 0x1C, // 00069C1C
- 0x00, 0x06, 0xB4, 0x26, // 0006B426
- 0x00, 0x06, 0xB4, 0x24, // 0006B424
- 0x00, 0x06, 0xB4, 0x2E, // 0006B42E
- 0x00, 0x06, 0xA0, 0x29, // 0006A029
- 0x00, 0x06, 0xA8, 0x1D, // 0006A81D
- 0x00, 0x06, 0xA8, 0x21, // 0006A821
- 0x00, 0x06, 0xA8, 0x2F, // 0006A82F
- 0x00, 0x06, 0x84, 0x1D, // 0006841D
- 0x00, 0x08, 0x3F, 0x41, // 00083F41
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x01, 0x01, 0x21, // 00010121
- 0x00, 0x06, 0xB8, 0x6E, // 0006B86E
- 0x00, 0x07, 0xA8, 0x0F, // 0007A80F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x38, 0x78, // 00063878
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x05, 0x89, // 00070589
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x07, 0x0D, 0x4B, // 00070D4B
- 0x00, 0x07, 0x54, 0x05, // 00075405
- 0x00, 0x07, 0x15, 0x59, // 00071559
- 0x00, 0x07, 0x5C, 0x05, // 00075C05
- 0x00, 0x07, 0x1D, 0xBD, // 00071DBD
- 0x00, 0x08, 0xBF, 0x40, // 0008BF40
- 0x00, 0x02, 0x9F, 0x40, // 00029F40
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0xC8, // 000704C8
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x07, 0x0C, 0xEE, // 00070CEE
- 0x00, 0x07, 0x54, 0x05, // 00075405
- 0x00, 0x07, 0x14, 0xF8, // 000714F8
- 0x00, 0x07, 0x5C, 0x05, // 00075C05
- 0x00, 0x07, 0x1D, 0x16, // 00071D16
- 0x00, 0x06, 0x80, 0x09, // 00068009
- 0x00, 0x06, 0x88, 0x0D, // 0006880D
- 0x00, 0x06, 0x90, 0x0C, // 0006900C
- 0x00, 0x06, 0x98, 0x0B, // 0006980B
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x20, // 00072720
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x3F, 0x00, // 00043F00
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x0A, 0xFF, 0x44, // 000AFF44
- 0x00, 0x06, 0xA0, 0x5B, // 0006A05B
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x00, // 00072700
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x10, // 00071C10
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x06, 0xA0, 0x5B, // 0006A05B
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x64, 0x04, // 00076404
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x1C, 0x30, // 00071C30
- 0x00, 0x08, 0x24, 0xC7, // 000824C7
- 0x00, 0x06, 0x88, 0x4B, // 0006884B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x9C, 0x06, // 00069C06
- 0x00, 0x06, 0xA0, 0x5B, // 0006A05B
- 0x00, 0x06, 0xA4, 0x76, // 0006A476
- 0x00, 0x06, 0x28, 0x77, // 00062877
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x40, // 00071640
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x90, // 00072490
- 0x00, 0x0B, 0x49, 0x7D, // 000B497D
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x90, 0x1E, // 0006901E
- 0x00, 0x06, 0xA0, 0x1F, // 0006A01F
- 0x00, 0x06, 0x88, 0x14, // 00068814
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x1F, 0x08, // 00041F08
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x07, 0x88, 0x0D, // 0007880D
- 0x00, 0x07, 0x90, 0x0D, // 0007900D
- 0x00, 0x07, 0x98, 0x0D, // 0007980D
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x05, // 0000C105
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0x43, // 00070743
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x38, 0x61, // 00063861
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0xBF, 0x40, // 0008BF40
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x13, 0x6E, // 0002136E
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x06, 0x18, 0x1C, // 0006181C
- 0x00, 0x09, 0x12, 0xC0, // 000912C0
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x9B, 0x44, // 00089B44
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x1B, 0xC2, // 00081BC2
- 0x00, 0x07, 0x45, 0x5D, // 0007455D
- 0x00, 0x07, 0x04, 0x10, // 00070410
- 0x00, 0x07, 0x4D, 0x59, // 00074D59
- 0x00, 0x07, 0x0C, 0x50, // 00070C50
- 0x00, 0x06, 0x98, 0x1C, // 0006981C
- 0x00, 0x00, 0xC1, 0x04, // 0000C104
- 0x00, 0x07, 0x54, 0x04, // 00075404
- 0x00, 0x07, 0x17, 0x60, // 00071760
- 0x00, 0x09, 0x80, 0x48, // 00098048
- 0x00, 0x09, 0x89, 0x78, // 00098978
- 0x00, 0x08, 0x38, 0xC1, // 000838C1
- 0x00, 0x06, 0x90, 0x0F, // 0006900F
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x65, // 00071665
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x07, 0x88, 0x03, // 00078803
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x69, // 00068869
- 0x00, 0x06, 0x88, 0x61, // 00068861
- 0x00, 0x06, 0x08, 0x6F, // 0006086F
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x08, 0x89, 0x41, // 00088941
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x13, 0x8B, // 0002138B
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x88, 0x42, // 00088842
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0xC1, 0x01, // 0000C101
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0x7F, // 0007077F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x6F, // 0006906F
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x10, 0x66, // 00061066
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x16, 0x14, // 00021614
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x10, 0x67, // 00061067
- 0x00, 0x08, 0x91, 0xC2, // 000891C2
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x16, 0x14, // 00021614
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x10, 0x76, // 00061076
- 0x00, 0x06, 0x08, 0x7A, // 0006087A
- 0x00, 0x0A, 0x00, 0xC2, // 000A00C2
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x0C, 0x26, // 00060C26
- 0x00, 0x06, 0x14, 0x1C, // 0006141C
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0x89, 0xC2, // 000889C2
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x06, 0x24, 0x24, // 00062424
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x06, 0x24, 0x2E, // 0006242E
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x20, // 00072C20
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x89, 0xC5, // 000889C5
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x6D, 0x70, // 000B6D70
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x04, 0xB8, 0x0D, // 0004B80D
- 0x00, 0x06, 0xA8, 0x79, // 0006A879
- 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C
- 0x00, 0x00, 0xC1, 0x01, // 0000C101
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0xC5, // 000707C5
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x08, 0x29, 0x40, // 00082940
- 0x00, 0x08, 0x08, 0x40, // 00080840
- 0x00, 0x0C, 0x31, 0x08, // 000C3108
- 0x00, 0x0E, 0x31, 0x09, // 000E3109
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x10, 0x73, // 00061073
- 0x00, 0x0C, 0x01, 0x08, // 000C0108
- 0x00, 0x0E, 0x01, 0x09, // 000E0109
- 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C
- 0x00, 0x09, 0xA7, 0x7F, // 0009A77F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x36, 0x42, // 00083642
- 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C
- 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x06, 0x20, 0x79, // 00062079
- 0x00, 0x08, 0x12, 0x42, // 00081242
- 0x00, 0x08, 0xA4, 0x41, // 0008A441
- 0x00, 0x07, 0xF4, 0x0C, // 0007F40C
- 0x00, 0x07, 0xC4, 0x0C, // 0007C40C
- 0x00, 0x02, 0x9F, 0x50, // 00029F50
- 0x00, 0x06, 0x90, 0x73, // 00069073
- 0x00, 0x06, 0xA0, 0x79, // 0006A079
- 0x00, 0x08, 0x9B, 0x41, // 00089B41
- 0x00, 0x02, 0x87, 0x20, // 00028720
- 0x00, 0x08, 0x0D, 0x40, // 00080D40
- 0x00, 0x08, 0x05, 0x40, // 00080540
- 0x00, 0x02, 0x13, 0xCB, // 000213CB
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x13, 0xBE, // 000213BE
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x00, 0x74, // 00060074
- 0x00, 0x06, 0x0C, 0x1C, // 00060C1C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x14, 0x80, // 00071480
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9E, 0x48, // 00029E48
- 0x00, 0x08, 0x91, 0xC2, // 000891C2
- 0x00, 0x02, 0x89, 0x38, // 00028938
- 0x00, 0x02, 0x15, 0xDB, // 000215DB
- 0x00, 0x07, 0x44, 0x04, // 00074404
- 0x00, 0x07, 0x07, 0xF8, // 000707F8
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0E, // 0006800E
- 0x00, 0x02, 0x16, 0x52, // 00021652
- 0x00, 0x07, 0x4C, 0x04, // 00074C04
- 0x00, 0x07, 0x0F, 0xFF, // 00070FFF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x06, 0x00, 0x69, // 00060069
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x65, // 00070E65
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x0A, 0x12, 0xC3, // 000A12C3
- 0x00, 0x06, 0x88, 0x22, // 00068822
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x0A, 0xC0, 0xC2, // 000AC0C2
- 0x00, 0x04, 0x0F, 0x00, // 00040F00
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x14, 0x14, // 00021414
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x09, 0x41, // 00080941
- 0x00, 0x06, 0x00, 0x6A, // 0006006A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x69, // 00068069
- 0x00, 0x07, 0x88, 0x07, // 00078807
- 0x00, 0x06, 0x80, 0x6F, // 0006806F
- 0x00, 0x00, 0xC1, 0x03, // 0000C103
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0x1B, // 0007041B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x06, 0x04, 0x26, // 00060426
- 0x00, 0x06, 0x28, 0x7A, // 0006287A
- 0x00, 0x06, 0x38, 0x7A, // 0006387A
- 0x00, 0x06, 0x0C, 0x1C, // 00060C1C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x18, 0x70, // 00061870
- 0x00, 0x08, 0x80, 0xC1, // 000880C1
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x07, 0x74, 0x00, // 00077400
- 0x00, 0x07, 0x34, 0x40, // 00073440
- 0x00, 0x06, 0x08, 0x74, // 00060874
- 0x00, 0x08, 0xA5, 0x41, // 0008A541
- 0x00, 0x02, 0x9E, 0x30, // 00029E30
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x08, 0xA0, 0xC6, // 0008A0C6
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x02, 0x81, 0x80, // 00028180
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x70, // 00029F70
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x21, // 00072421
- 0x00, 0x08, 0x93, 0xC0, // 000893C0
- 0x00, 0x06, 0x80, 0x70, // 00068070
- 0x00, 0x06, 0xA8, 0x7A, // 0006A87A
- 0x00, 0x08, 0x94, 0xC2, // 000894C2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x16, 0x11, // 00021611
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0x40, // 00070440
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x81, 0x10, // 00028110
- 0x00, 0x02, 0x14, 0xAC, // 000214AC
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x80, 0x07, // 00078007
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC7, 0x81, // 000AC781
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x14, 0xC1, // 000214C1
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x06, 0x10, 0x7A, // 0006107A
- 0x00, 0x06, 0x18, 0x77, // 00061877
- 0x00, 0x04, 0x25, 0x08, // 00042508
- 0x00, 0x04, 0x2D, 0x08, // 00042D08
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0x3D, 0x08, // 00043D08
- 0x00, 0x0A, 0xCF, 0x81, // 000ACF81
- 0x00, 0x02, 0x9F, 0x70, // 00029F70
- 0x00, 0x06, 0x0C, 0x6A, // 00060C6A
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9E, 0x50, // 00029E50
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x0B, 0x49, 0x41, // 000B4941
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x06, 0x0C, 0x65, // 00060C65
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x02, 0x81, 0x70, // 00028170
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x06, 0x0C, 0x6A, // 00060C6A
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x50, // 00029F50
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x0B, 0x49, 0x41, // 000B4941
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x3F, 0x08, // 00043F08
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x06, 0x0C, 0x65, // 00060C65
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x06, 0x04, 0x6A, // 0006046A
- 0x00, 0x06, 0x14, 0x65, // 00061465
- 0x00, 0x09, 0x00, 0xC2, // 000900C2
- 0x00, 0x08, 0x11, 0x41, // 00081141
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x08, 0x10, 0x41, // 00081041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x08, 0x40, // 00080840
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x06, 0x8C, 0x6A, // 00068C6A
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x06, 0x98, 0x77, // 00069877
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x02, // 00070C02
- 0x00, 0x06, 0x10, 0x7A, // 0006107A
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC3, 0x81, // 000AC381
- 0x00, 0x02, 0x9F, 0x58, // 00029F58
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x40, // 00029E40
- 0x00, 0x0B, 0x52, 0x7E, // 000B527E
- 0x00, 0x02, 0x16, 0x2E, // 0002162E
- 0x00, 0x07, 0x44, 0x05, // 00074405
- 0x00, 0x07, 0x04, 0xAC, // 000704AC
- 0x00, 0x06, 0x90, 0x7A, // 0006907A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x0F, // 0006800F
- 0x00, 0x02, 0x81, 0x18, // 00028118
- 0x00, 0x08, 0x9A, 0x42, // 00089A42
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x7A, // 0006907A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6D, // 0006C06D
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x05, // 00076C05
- 0x00, 0x07, 0x2C, 0xBA, // 00072CBA
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x13, 0x3B, // 0002133B
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x80, // 0000C180
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x10, 0x68, // 00061068
- 0x00, 0x04, 0x04, 0x08, // 00040408
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x14, 0xDD, // 000214DD
- 0x00, 0x06, 0x28, 0x6C, // 0006286C
- 0x00, 0x04, 0x0C, 0x08, // 00040C08
- 0x00, 0x07, 0x64, 0x3F, // 0007643F
- 0x00, 0x07, 0x27, 0xFF, // 000727FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xA4, 0x44, // 0009A444
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x0A, 0xD2, 0xC4, // 000AD2C4
- 0x00, 0x09, 0x80, 0x48, // 00098048
- 0x00, 0x09, 0xB1, 0x78, // 0009B178
- 0x00, 0x08, 0x00, 0xC6, // 000800C6
- 0x00, 0x09, 0x89, 0x48, // 00098948
- 0x00, 0x09, 0xB2, 0x78, // 0009B278
- 0x00, 0x08, 0x09, 0xC6, // 000809C6
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x09, 0x90, 0x48, // 00099048
- 0x00, 0x09, 0xB0, 0x78, // 0009B078
- 0x00, 0x08, 0x02, 0xC6, // 000802C6
- 0x00, 0x09, 0x91, 0x48, // 00099148
- 0x00, 0x09, 0xB1, 0x78, // 0009B178
- 0x00, 0x08, 0x0A, 0xC6, // 00080AC6
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x18, 0x68, // 00061868
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x09, 0x9B, 0x7D, // 00099B7D
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x81, 0xC0, // 000881C0
- 0x00, 0x09, 0x03, 0xC0, // 000903C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x01, 0x0A, 0x20, // 00010A20
- 0x00, 0x0B, 0x49, 0x7F, // 000B497F
- 0x00, 0x04, 0x14, 0x00, // 00041400
- 0x00, 0x0B, 0x76, 0x78, // 000B7678
- 0x00, 0x09, 0x92, 0x48, // 00099248
- 0x00, 0x09, 0x89, 0x48, // 00098948
- 0x00, 0x09, 0x9A, 0x68, // 00099A68
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x08, 0x9F, 0xC1, // 00089FC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB0, 0x68, // 0006B068
- 0x00, 0x09, 0x92, 0x48, // 00099248
- 0x00, 0x09, 0x89, 0x48, // 00098948
- 0x00, 0x09, 0x9A, 0x68, // 00099A68
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x04, 0x14, 0x08, // 00041408
- 0x00, 0x08, 0x9F, 0xC1, // 00089FC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB0, 0x68, // 0006B068
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x30, 0x71, // 00063071
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x08, 0xB6, 0x40, // 0008B640
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x15, 0x31, // 00021531
- 0x00, 0x06, 0x18, 0x7A, // 0006187A
- 0x00, 0x06, 0x30, 0x72, // 00063072
- 0x00, 0x07, 0x06, 0x00, // 00070600
- 0x00, 0x06, 0x08, 0x28, // 00060828
- 0x00, 0x08, 0x38, 0x41, // 00083841
- 0x00, 0x08, 0x90, 0xC1, // 000890C1
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x07, 0x54, 0x03, // 00075403
- 0x00, 0x07, 0x17, 0xF0, // 000717F0
- 0x00, 0x06, 0xB8, 0x22, // 0006B822
- 0x00, 0x01, 0x04, 0x90, // 00010490
- 0x00, 0x09, 0x92, 0x48, // 00099248
- 0x00, 0x0A, 0xE7, 0x8A, // 000AE78A
- 0x00, 0x0A, 0xEF, 0x8A, // 000AEF8A
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0xAD, 0x78, // 0009AD78
- 0x00, 0x08, 0x24, 0xC5, // 000824C5
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x72, // 0006B072
- 0x00, 0x07, 0xE0, 0x0E, // 0007E00E
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0xB0, 0x71, // 0006B071
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x81, 0xC0, // 000881C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1D, 0xE8, // 00071DE8
- 0x00, 0x0B, 0x76, 0x7F, // 000B767F
- 0x00, 0x08, 0x93, 0xC0, // 000893C0
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x05, 0x38, // 00070538
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x71, // 0006B071
- 0x00, 0x06, 0xB8, 0x28, // 0006B828
- 0x00, 0x06, 0x80, 0x4B, // 0006804B
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x08, 0x81, 0xC0, // 000881C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x06, 0x18, 0x68, // 00061868
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0A, 0x10, 0x44, // 000A1044
- 0x00, 0x0A, 0x20, 0x42, // 000A2042
- 0x00, 0x08, 0x12, 0xC4, // 000812C4
- 0x00, 0x09, 0x03, 0xC2, // 000903C2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0x00, 0x7C, // 000A007C
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x20, // 00070420
- 0x00, 0x07, 0x54, 0x05, // 00075405
- 0x00, 0x07, 0x15, 0x7C, // 0007157C
- 0x00, 0x0B, 0x49, 0x41, // 000B4941
- 0x00, 0x0B, 0x64, 0x7F, // 000B647F
- 0x00, 0x0B, 0x5B, 0x78, // 000B5B78
- 0x00, 0x09, 0xA4, 0x7C, // 0009A47C
- 0x00, 0x06, 0x90, 0x0A, // 0006900A
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x09, 0x94, 0x83, // 00099483
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0x89, 0x41, // 00098941
- 0x00, 0x09, 0x92, 0x41, // 00099241
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x09, 0xC4, // 000809C4
- 0x00, 0x01, 0x04, 0x13, // 00010413
- 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x82, // 0000C182
- 0x00, 0x08, 0x36, 0x41, // 00083641
- 0x00, 0x09, 0x89, 0x41, // 00098941
- 0x00, 0x09, 0x92, 0x41, // 00099241
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x09, 0xC4, // 000809C4
- 0x00, 0x08, 0xAF, 0xC1, // 0008AFC1
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x00, 0xC1, 0x82, // 0000C182
- 0x00, 0x04, 0x2C, 0x08, // 00042C08
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x15, 0x62, // 00021562
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x08, 0xAE, 0x54, // 0008AE54
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x68, // 0006B068
- 0x00, 0x04, 0x34, 0x08, // 00043408
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x10, 0x68, // 00061068
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x82, 0x47, // 00088247
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x02, 0x15, 0x96, // 00021596
- 0x00, 0x0B, 0x64, 0x41, // 000B6441
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x09, 0xA4, 0x78, // 0009A478
- 0x00, 0x0A, 0xEC, 0x8C, // 000AEC8C
- 0x00, 0x0A, 0xE4, 0x7F, // 000AE47F
- 0x00, 0x0A, 0xF4, 0x84, // 000AF484
- 0x00, 0x0A, 0xF4, 0x8C, // 000AF48C
- 0x00, 0x0A, 0xCC, 0x84, // 000ACC84
- 0x00, 0x07, 0x64, 0x3F, // 0007643F
- 0x00, 0x07, 0x27, 0xFF, // 000727FF
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xA4, 0x44, // 0009A444
- 0x00, 0x09, 0x85, 0xC2, // 000985C2
- 0x00, 0x09, 0x86, 0xC3, // 000986C3
- 0x00, 0x08, 0x00, 0xC0, // 000800C0
- 0x00, 0x08, 0x12, 0x50, // 00081250
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x02, 0x87, 0x18, // 00028718
- 0x00, 0x08, 0x92, 0x54, // 00089254
- 0x00, 0x08, 0x2E, 0x40, // 00082E40
- 0x00, 0x08, 0x31, 0x40, // 00083140
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x09, 0x8D, 0xC2, // 00098DC2
- 0x00, 0x09, 0x8E, 0xC3, // 00098EC3
- 0x00, 0x08, 0x09, 0xC1, // 000809C1
- 0x00, 0x08, 0x12, 0x50, // 00081250
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x08, 0x9A, 0x54, // 00089A54
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0x92, 0x54, // 00089254
- 0x00, 0x06, 0x28, 0x6C, // 0006286C
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x06, 0x90, 0x68, // 00069068
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x30, // 00029F30
- 0x00, 0x09, 0x90, 0x48, // 00099048
- 0x00, 0x09, 0xB0, 0x78, // 0009B078
- 0x00, 0x08, 0x02, 0xC6, // 000802C6
- 0x00, 0x09, 0x91, 0x48, // 00099148
- 0x00, 0x09, 0xB1, 0x78, // 0009B178
- 0x00, 0x08, 0x0A, 0xC6, // 00080AC6
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0A, 0xC0, 0xC4, // 000AC0C4
- 0x00, 0x0A, 0xC9, 0xC4, // 000AC9C4
- 0x00, 0x02, 0x81, 0x18, // 00028118
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3C, 0xC0, // 00073CC0
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x35, 0x60, // 00073560
- 0x00, 0x06, 0x20, 0x2E, // 0006202E
- 0x00, 0x06, 0x18, 0x1C, // 0006181C
- 0x00, 0x06, 0x10, 0x6E, // 0006106E
- 0x00, 0x06, 0x00, 0x75, // 00060075
- 0x00, 0x06, 0x08, 0x7A, // 0006087A
- 0x00, 0x06, 0xA0, 0x20, // 0006A020
- 0x00, 0x08, 0x9C, 0xC3, // 00089CC3
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x1B, 0xC2, // 00081BC2
- 0x00, 0x09, 0x16, 0xC3, // 000916C3
- 0x00, 0x02, 0x89, 0x10, // 00028910
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x30, // 00070430
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x08, 0x97, 0xC3, // 000897C3
- 0x00, 0x02, 0x89, 0x10, // 00028910
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x70, // 00070470
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x7F, // 0006987F
- 0x00, 0x06, 0x84, 0x06, // 00068406
- 0x00, 0x06, 0x80, 0x75, // 00068075
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x15, 0xFC, // 000215FC
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x07, 0x0D, 0xE2, // 00070DE2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x32, // 00070E32
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x8C, 0x22, // 00068C22
- 0x00, 0x06, 0x5C, 0x14, // 00065C14
- 0x00, 0x06, 0xA8, 0x74, // 0006A874
- 0x00, 0x06, 0x5C, 0x24, // 00065C24
- 0x00, 0x06, 0x5C, 0x26, // 00065C26
- 0x00, 0x06, 0x5C, 0x2E, // 00065C2E
- 0x00, 0x06, 0x5C, 0x25, // 00065C25
- 0x00, 0x06, 0x5C, 0x27, // 00065C27
- 0x00, 0x06, 0x5C, 0x2F, // 00065C2F
- 0x00, 0x06, 0x5C, 0x44, // 00065C44
- 0x00, 0x04, 0x80, 0x03, // 00048003
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x06, // 0000C106
- 0x00, 0x06, 0x84, 0x74, // 00068474
- 0x00, 0x06, 0x84, 0x43, // 00068443
- 0x00, 0x06, 0x5C, 0x3C, // 00065C3C
- 0x00, 0x06, 0x5C, 0x3B, // 00065C3B
- 0x00, 0x06, 0x5C, 0x54, // 00065C54
- 0x00, 0x06, 0x5C, 0x53, // 00065C53
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x25, // 00070E25
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA8, 0x74, // 0006A874
- 0x00, 0x06, 0x8C, 0x22, // 00068C22
- 0x00, 0x06, 0x5C, 0x14, // 00065C14
- 0x00, 0x06, 0x5C, 0x24, // 00065C24
- 0x00, 0x06, 0x5C, 0x26, // 00065C26
- 0x00, 0x06, 0x5C, 0x2E, // 00065C2E
- 0x00, 0x06, 0x5C, 0x25, // 00065C25
- 0x00, 0x06, 0x5C, 0x27, // 00065C27
- 0x00, 0x06, 0x5C, 0x2F, // 00065C2F
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x06, 0x5C, 0x44, // 00065C44
- 0x00, 0x06, 0x5C, 0x43, // 00065C43
- 0x00, 0x06, 0x5C, 0x3C, // 00065C3C
- 0x00, 0x06, 0x5C, 0x3B, // 00065C3B
- 0x00, 0x06, 0x5C, 0x54, // 00065C54
- 0x00, 0x06, 0x5C, 0x53, // 00065C53
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x02, // 00071C02
- 0x00, 0x02, 0x81, 0x10, // 00028110
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x01, // 00071C01
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x65, // 00071665
- 0x00, 0x06, 0x00, 0x61, // 00060061
- 0x00, 0x06, 0x20, 0x7A, // 0006207A
- 0x00, 0x07, 0x4C, 0x05, // 00074C05
- 0x00, 0x06, 0x9C, 0x7F, // 00069C7F
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x1F, 0x00, // 00041F00
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x07, 0x0C, 0x14, // 00070C14
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x98, 0x1F, // 0007981F
- 0x00, 0x04, 0x17, 0x00, // 00041700
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x06, 0x00, 0x6A, // 0006006A
- 0x00, 0x08, 0x12, 0x41, // 00081241
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x61, // 00068061
- 0x00, 0x07, 0x90, 0x07, // 00079007
- 0x00, 0x06, 0x3C, 0x26, // 00063C26
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x08, 0x3F, 0x40, // 00083F40
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x06, 0x1C, 0x1C, // 00061C1C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xBC, 0x1C, // 0006BC1C
- 0x00, 0x04, 0xB0, 0x0D, // 0004B00D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xB6, 0x7C, // 0009B67C
- 0x00, 0x01, 0x05, 0x10, // 00010510
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x09, 0xB6, 0x7F, // 0009B67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x09, 0x42, // 00080942
- 0x00, 0x07, 0x84, 0x0C, // 0007840C
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x07, 0x8C, 0x0C, // 00078C0C
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x30, // 00072430
- 0x00, 0x08, 0x2D, 0x41, // 00082D41
- 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x16, 0x35, // 00021635
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x9C, 0x1C, // 00069C1C
- 0x00, 0x06, 0x04, 0x6A, // 0006046A
- 0x00, 0x06, 0x08, 0x77, // 00060877
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x17, 0x12, // 00071712
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x16, 0x71, // 00021671
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x06, 0x24, 0x66, // 00062466
- 0x00, 0x06, 0x2C, 0x67, // 00062C67
- 0x00, 0x06, 0x34, 0x68, // 00063468
- 0x00, 0x06, 0x3C, 0x69, // 00063C69
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x64, 0xC4, // 000B64C4
- 0x00, 0x0B, 0x6D, 0xC5, // 000B6DC5
- 0x00, 0x0B, 0x76, 0xC6, // 000B76C6
- 0x00, 0x0B, 0x7F, 0xC7, // 000B7FC7
- 0x00, 0x08, 0x25, 0x8C, // 0008258C
- 0x00, 0x08, 0x2D, 0x8D, // 00082D8D
- 0x00, 0x08, 0x35, 0x8E, // 0008358E
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x08, 0x3D, 0x8F, // 00083D8F
- 0x00, 0x06, 0x84, 0x6A, // 0006846A
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x06, 0x90, 0x22, // 00069022
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x3F, 0x08, // 00043F08
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x06, 0x84, 0x6A, // 0006846A
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-// addres 06800 count 1077 (4314 bytes)
-static const unsigned char maspcm_array10[] = {
- 0xf0, 0x00, 0x04, 0x35, 0x08, 0x00,
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0F, 0x00, // 00070F00
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x0A, 0x09, 0x78, // 000A0978
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x08, 0xA1, 0x41, // 0008A141
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x5B, 0x7E, // 000B5B7E
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x26, 0x69, // 00072669
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x0B, 0x75, 0x7E, // 000B757E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x0A, 0xF7, 0x86, // 000AF786
- 0x00, 0x0A, 0xEF, 0x85, // 000AEF85
- 0x00, 0x0A, 0x36, 0x7F, // 000A367F
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x0B, 0x64, 0x70, // 000B6470
- 0x00, 0x06, 0x98, 0x79, // 00069879
- 0x00, 0x06, 0x90, 0x78, // 00069078
- 0x00, 0x06, 0xA8, 0x77, // 0006A877
- 0x00, 0x06, 0xB0, 0x7A, // 0006B07A
- 0x00, 0x06, 0xBC, 0x64, // 0006BC64
- 0x00, 0x06, 0xB8, 0x71, // 0006B871
- 0x00, 0x06, 0xB8, 0x70, // 0006B870
- 0x00, 0x06, 0xB8, 0x69, // 0006B869
- 0x00, 0x06, 0xB8, 0x7B, // 0006B87B
- 0x00, 0x06, 0xB8, 0x7C, // 0006B87C
- 0x00, 0x06, 0x9C, 0x6B, // 00069C6B
- 0x00, 0x06, 0xBC, 0x6E, // 0006BC6E
- 0x00, 0x06, 0xBC, 0x72, // 0006BC72
- 0x00, 0x06, 0xB8, 0x74, // 0006B874
- 0x00, 0x06, 0xB8, 0x7D, // 0006B87D
- 0x00, 0x06, 0xBC, 0x73, // 0006BC73
- 0x00, 0x06, 0x9C, 0x7D, // 00069C7D
- 0x00, 0x06, 0xBC, 0x7C, // 0006BC7C
- 0x00, 0x06, 0xBC, 0x7B, // 0006BC7B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x3C, 0x65, // 00063C65
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xBF, 0x41, // 0009BF41
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xBC, 0x7A, // 0006BC7A
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3D, 0xFF, // 00073DFF
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1C, 0x90, // 00071C90
- 0x00, 0x07, 0x74, 0x01, // 00077401
- 0x00, 0x07, 0x34, 0xA0, // 000734A0
- 0x00, 0x06, 0x08, 0x76, // 00060876
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x21, 0x41, // 00082141
- 0x00, 0x06, 0xB8, 0x16, // 0006B816
- 0x00, 0x06, 0x90, 0x24, // 00069024
- 0x00, 0x06, 0x90, 0x2C, // 0006902C
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x98, 0x25, // 00069825
- 0x00, 0x06, 0x98, 0x2D, // 0006982D
- 0x00, 0x06, 0xB0, 0x1D, // 0006B01D
- 0x00, 0x06, 0xA0, 0x10, // 0006A010
- 0x00, 0x06, 0x98, 0x21, // 00069821
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x24, // 00073C24
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x07, 0x6C, 0x01, // 00076C01
- 0x00, 0x07, 0x2C, 0x98, // 00072C98
- 0x00, 0x06, 0xBC, 0x16, // 0006BC16
- 0x00, 0x06, 0x94, 0x2A, // 0006942A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xAC, 0x2B, // 0006AC2B
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3D, 0xFF, // 00073DFF
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x90, // 00072C90
- 0x00, 0x06, 0xBC, 0x14, // 0006BC14
- 0x00, 0x06, 0x94, 0x1C, // 0006941C
- 0x00, 0x06, 0x9C, 0x26, // 00069C26
- 0x00, 0x06, 0x9C, 0x2E, // 00069C2E
- 0x00, 0x06, 0xAC, 0x1D, // 0006AC1D
- 0x00, 0x06, 0xAC, 0x27, // 0006AC27
- 0x00, 0x06, 0xAC, 0x2F, // 0006AC2F
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x04, // 00070C04
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x10, // 00071410
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x4B, // 0006884B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x06, // 00069406
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x62, // 00071E62
- 0x00, 0x06, 0x10, 0x78, // 00061078
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x18, // 00071F18
- 0x00, 0x06, 0x98, 0x22, // 00069822
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x9E, 0xF0, // 00029EF0
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x80, // 00072C80
- 0x00, 0x07, 0x74, 0x00, // 00077400
- 0x00, 0x07, 0x34, 0x04, // 00073404
- 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x1B, 0xC6, // 00081BC6
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x40, // 00072C40
- 0x00, 0x07, 0x74, 0x02, // 00077402
- 0x00, 0x07, 0x34, 0x00, // 00073400
- 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x1B, 0xC6, // 00081BC6
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2C, 0x04, // 00072C04
- 0x00, 0x07, 0x74, 0x00, // 00077400
- 0x00, 0x07, 0x34, 0x20, // 00073420
- 0x00, 0x04, 0x17, 0x00, // 00041700
- 0x00, 0x0A, 0xED, 0xC0, // 000AEDC0
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x1B, 0xC6, // 00081BC6
- 0x00, 0x0A, 0xD2, 0x41, // 000AD241
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x18, // 00072718
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x3B, // 0006983B
- 0x00, 0x06, 0x9C, 0x75, // 00069C75
- 0x00, 0x06, 0xA0, 0x53, // 0006A053
- 0x00, 0x06, 0x28, 0x77, // 00062877
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x40, // 00071640
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x90, // 00072490
- 0x00, 0x0B, 0x49, 0x7D, // 000B497D
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x90, 0x1E, // 0006901E
- 0x00, 0x06, 0xA0, 0x1F, // 0006A01F
- 0x00, 0x06, 0x88, 0x14, // 00068814
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x17, 0x08, // 00041708
- 0x00, 0x04, 0x1F, 0x08, // 00041F08
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0B, 0x49, 0x40, // 000B4940
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x07, 0x88, 0x0D, // 0007880D
- 0x00, 0x07, 0x90, 0x0D, // 0007900D
- 0x00, 0x07, 0x98, 0x0D, // 0007980D
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x50, // 00071650
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x26, 0x90, // 00072690
- 0x00, 0x0B, 0x49, 0x7D, // 000B497D
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x70, // 00070670
- 0x00, 0x06, 0x94, 0x20, // 00069420
- 0x00, 0x06, 0xA4, 0x21, // 0006A421
- 0x00, 0x06, 0x8C, 0x15, // 00068C15
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0B, 0x52, 0x75, // 000B5275
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x04, 0x0F, 0x08, // 00040F08
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x07, 0x8C, 0x0E, // 00078C0E
- 0x00, 0x06, 0x94, 0x15, // 00069415
- 0x00, 0x02, 0x1C, 0x0E, // 00021C0E
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0C, 0xD3, // 00070CD3
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x32, // 00070E32
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x07, 0x26, 0x70, // 00072670
- 0x00, 0x07, 0x6C, 0x00, // 00076C00
- 0x00, 0x07, 0x2E, 0x90, // 00072E90
- 0x00, 0x06, 0x8C, 0x22, // 00068C22
- 0x00, 0x04, 0x80, 0x4F, // 0004804F
- 0x00, 0x06, 0x08, 0x78, // 00060878
- 0x00, 0x06, 0xA4, 0x24, // 0006A424
- 0x00, 0x06, 0xAC, 0x25, // 0006AC25
- 0x00, 0x06, 0x5C, 0x3C, // 00065C3C
- 0x00, 0x06, 0x5C, 0x3B, // 00065C3B
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0x1D, // 0002191D
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x06, // 00076C06
- 0x00, 0x07, 0x2C, 0xEB, // 00072CEB
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC7, 0x82, // 000AC782
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x0A, 0xC7, 0x81, // 000AC781
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x54, 0x04, // 00075404
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x06, 0x30, 0x2C, // 0006302C
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x19, 0x0C, // 0002190C
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0A, 0xF6, 0x41, // 000AF641
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x18, 0xFA, // 000218FA
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x30, 0x2C, // 0006302C
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x19, 0x0C, // 0002190C
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0A, 0xF6, 0x41, // 000AF641
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0x03, // 00021903
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x38, 0x52, // 00063852
- 0x00, 0x06, 0x30, 0x2C, // 0006302C
- 0x00, 0x09, 0xBF, 0x7A, // 0009BF7A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xFF, 0x41, // 000AFF41
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x36, 0x41, // 000B3641
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB0, 0x2C, // 0006B02C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x18, 0xE4, // 000218E4
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x40, 0x7D, // 000B407D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x15, // 00068415
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x06, 0x27, // 000C0627
- 0x00, 0x04, 0x35, 0x18, // 00043518
- 0x00, 0x04, 0xB8, 0x1E, // 0004B81E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x06, 0x27, // 000E0627
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x0E, 0x27, // 000C0E27
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x0E, // 0004B80E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x0E, 0x27, // 000E0E27
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x16, 0x27, // 000C1627
- 0x00, 0x04, 0x35, 0x18, // 00043518
- 0x00, 0x04, 0xB8, 0x1E, // 0004B81E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x16, 0x27, // 000E1627
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x16, // 0004B816
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x1E, 0x27, // 000C1E27
- 0x00, 0x04, 0x35, 0x08, // 00043508
- 0x00, 0x04, 0xB8, 0x0E, // 0004B80E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0E, 0x1E, 0x27, // 000E1E27
- 0x00, 0x07, 0x64, 0x01, // 00076401
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x27, 0x12, // 00072712
- 0x00, 0x07, 0x80, 0x0D, // 0007800D
- 0x00, 0x07, 0x88, 0x0D, // 0007880D
- 0x00, 0x07, 0x90, 0x0D, // 0007900D
- 0x00, 0x07, 0x98, 0x0D, // 0007980D
- 0x00, 0x06, 0xA0, 0x22, // 0006A022
- 0x00, 0x07, 0x80, 0x0F, // 0007800F
- 0x00, 0x07, 0x88, 0x0F, // 0007880F
- 0x00, 0x07, 0x90, 0x0F, // 0007900F
- 0x00, 0x07, 0x98, 0x07, // 00079807
- 0x00, 0x06, 0x2C, 0x79, // 00062C79
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x09, 0x0D, // 000C090D
- 0x00, 0x0C, 0x11, 0x0D, // 000C110D
- 0x00, 0x0C, 0x19, 0x0D, // 000C190D
- 0x00, 0x0C, 0x21, 0x0D, // 000C210D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x8C, 0x66, // 00068C66
- 0x00, 0x06, 0x94, 0x67, // 00069467
- 0x00, 0x06, 0x9C, 0x68, // 00069C68
- 0x00, 0x06, 0xA4, 0x69, // 0006A469
- 0x00, 0x06, 0x00, 0x7A, // 0006007A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xF8, // 000219F8
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x00, 0x24, // 00060024
- 0x00, 0x06, 0x08, 0x78, // 00060878
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0x89, 0x41, // 00088941
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x00, 0x2C, // 0006002C
- 0x00, 0x06, 0x08, 0x1C, // 0006081C
- 0x00, 0x08, 0x80, 0xC1, // 000880C1
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x08, 0x9B, 0x41, // 00089B41
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x09, 0x80, 0x7F, // 0009807F
- 0x00, 0x06, 0x14, 0x7B, // 0006147B
- 0x00, 0x06, 0x1C, 0x7A, // 00061C7A
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x28, // 00029F28
- 0x00, 0x08, 0x98, 0xC3, // 000898C3
- 0x00, 0x02, 0x87, 0x10, // 00028710
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x7B, // 0006947B
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x12, // 00071412
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0xA0, 0xC2, // 0008A0C2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x19, 0xF8, // 000219F8
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x24, 0x2A, // 0006242A
- 0x00, 0x08, 0xA3, 0xC4, // 0008A3C4
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xF8, // 000219F8
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x01, // 00071E01
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x09, // 00070409
- 0x00, 0x06, 0x08, 0x69, // 00060869
- 0x00, 0x06, 0x9C, 0x22, // 00069C22
- 0x00, 0x06, 0x10, 0x6A, // 0006106A
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xA4, // 000219A4
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x92, 0x41, // 00089241
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x19, 0xA4, // 000219A4
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x07, 0x55, 0x5C, // 0007555C
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x5D, 0x04, // 00075D04
- 0x00, 0x07, 0x1C, 0x00, // 00071C00
- 0x00, 0x07, 0x65, 0x58, // 00076558
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x6D, 0x14, // 00076D14
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x07, 0x94, 0x0F, // 0007940F
- 0x00, 0x07, 0x9C, 0x0F, // 00079C0F
- 0x00, 0x07, 0xA4, 0x0F, // 0007A40F
- 0x00, 0x07, 0xAC, 0x0F, // 0007AC0F
- 0x00, 0x06, 0x38, 0x3A, // 0006383A
- 0x00, 0x0B, 0x76, 0x7D, // 000B767D
- 0x00, 0x06, 0x10, 0x6C, // 0006106C
- 0x00, 0x0A, 0xFF, 0x5F, // 000AFF5F
- 0x00, 0x06, 0x84, 0x05, // 00068405
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x09, 0x3F, 0x54, // 00093F54
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xB4, 0x15, // 0006B415
- 0x00, 0x07, 0x77, 0xFC, // 000777FC
- 0x00, 0x07, 0x34, 0x00, // 00073400
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x01, 0x4E, 0x80, // 00014E80
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x80, 0x87, // 00098087
- 0x00, 0x09, 0x88, 0x87, // 00098887
- 0x00, 0x0C, 0x20, 0x12, // 000C2012
- 0x00, 0x0E, 0x21, 0x12, // 000E2112
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x28, 0x12, // 000C2812
- 0x00, 0x0E, 0x29, 0x12, // 000E2912
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0x84, 0x48, // 00098448
- 0x00, 0x09, 0x8D, 0x48, // 00098D48
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x09, 0xA4, 0x48, // 0009A448
- 0x00, 0x08, 0x04, 0x40, // 00080440
- 0x00, 0x09, 0xAD, 0x48, // 0009AD48
- 0x00, 0x08, 0x0D, 0x40, // 00080D40
- 0x00, 0x0A, 0xE4, 0xC6, // 000AE4C6
- 0x00, 0x0A, 0xC0, 0xC6, // 000AC0C6
- 0x00, 0x0A, 0xED, 0xC6, // 000AEDC6
- 0x00, 0x0A, 0xC9, 0xC6, // 000AC9C6
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xE4, 0x0F, // 0007E40F
- 0x00, 0x07, 0xC4, 0x0F, // 0007C40F
- 0x00, 0x07, 0xEC, 0x0F, // 0007EC0F
- 0x00, 0x07, 0xCC, 0x0F, // 0007CC0F
- 0x00, 0x06, 0x00, 0x69, // 00060069
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x07, 0x0E, 0x65, // 00070E65
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x06, 0x1C, 0x64, // 00061C64
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x39, // 00071439
- 0x00, 0x06, 0x88, 0x22, // 00068822
- 0x00, 0x04, 0x0F, 0x00, // 00040F00
- 0x00, 0x08, 0x90, 0xC2, // 000890C2
- 0x00, 0x02, 0x9E, 0x28, // 00029E28
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x08, 0x09, 0x41, // 00080941
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x69, // 00068069
- 0x00, 0x07, 0x88, 0x07, // 00078807
- 0x00, 0x07, 0x4C, 0x01, // 00074C01
- 0x00, 0x0B, 0x76, 0x75, // 000B7675
- 0x00, 0x07, 0x0E, 0x01, // 00070E01
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x04, 0x04, // 00070404
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x06, 0x80, 0x4B, // 0006804B
- 0x00, 0x07, 0x44, 0x00, // 00074400
- 0x00, 0x07, 0x05, 0x3D, // 0007053D
- 0x00, 0x06, 0xB4, 0x15, // 0006B415
- 0x00, 0x06, 0x8C, 0x2A, // 00068C2A
- 0x00, 0x06, 0x94, 0x72, // 00069472
- 0x00, 0x06, 0x80, 0x4B, // 0006804B
- 0x00, 0x06, 0x00, 0x24, // 00060024
- 0x00, 0x06, 0x08, 0x78, // 00060878
- 0x00, 0x06, 0x18, 0x76, // 00061876
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0x89, 0x41, // 00088941
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x00, 0x2C, // 0006002C
- 0x00, 0x06, 0x08, 0x20, // 00060820
- 0x00, 0x08, 0x80, 0xC1, // 000880C1
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x06, 0x0C, 0x26, // 00060C26
- 0x00, 0x06, 0x14, 0x1C, // 0006141C
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0x89, 0xC2, // 000889C2
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x09, 0xC3, // 000809C3
- 0x00, 0x06, 0x24, 0x24, // 00062424
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x06, 0x24, 0x2E, // 0006242E
- 0x00, 0x09, 0x22, 0xC4, // 000922C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x24, 0xC3, // 000824C3
- 0x00, 0x09, 0x29, 0xC4, // 000929C4
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x0C, 0x40, // 00080C40
- 0x00, 0x07, 0x54, 0x00, // 00075400
- 0x00, 0x07, 0x14, 0x20, // 00071420
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0xC2, // 000880C2
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x1A, 0x86, // 00021A86
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x89, 0xC2, // 000889C2
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x1A, 0x86, // 00021A86
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x28, 0x3A, // 0006283A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xED, 0x5F, // 000AED5F
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x09, 0x2D, 0x54, // 00092D54
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x04, 0xB8, 0x0D, // 0004B80D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xBF, 0x7C, // 0009BF7C
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x01, 0x0D, 0x10, // 00010D10
- 0x00, 0x06, 0x20, 0x76, // 00062076
- 0x00, 0x09, 0x86, 0x8D, // 0009868D
- 0x00, 0x09, 0x8E, 0x8D, // 00098E8D
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x08, 0x40, // 00080840
- 0x00, 0x0C, 0x31, 0x08, // 000C3108
- 0x00, 0x0E, 0x31, 0x09, // 000E3109
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0C, 0x01, 0x08, // 000C0108
- 0x00, 0x0E, 0x01, 0x09, // 000E0109
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xF6, 0x7C, // 000AF67C
- 0x00, 0x09, 0x9F, 0x7F, // 00099F7F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x36, 0x42, // 00083642
- 0x00, 0x0A, 0xC0, 0x7C, // 000AC07C
- 0x00, 0x09, 0xBF, 0x7F, // 0009BF7F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xF4, 0x0C, // 0007F40C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0xC4, 0x0C, // 0007C40C
- 0x00, 0x02, 0x16, 0x52, // 00021652
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0E, 0x56, // 00070E56
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x06, 0x00, 0x7B, // 0006007B
- 0x00, 0x06, 0x10, 0x74, // 00061074
- 0x00, 0x08, 0x00, 0x41, // 00080041
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1C, 0x30, // 00071C30
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x18, // 00029E18
- 0x00, 0x08, 0x88, 0xC3, // 000888C3
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x02, 0x15, 0xDB, // 000215DB
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0E, 0x66, // 00070E66
- 0x00, 0x06, 0x80, 0x7B, // 0006807B
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x88, 0x0E, // 0006880E
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x08, 0x24, // 00060824
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x08, 0x2C, // 0006082C
- 0x00, 0x06, 0x34, 0x26, // 00063426
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x86, 0xC1, // 000886C1
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x00, // 00071F00
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0xA8, 0xC3, // 0008A8C3
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0x80, 0xC2, // 000880C2
- 0x00, 0x06, 0x20, 0x74, // 00062074
- 0x00, 0x08, 0x28, 0xC3, // 000828C3
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x06, 0x18, 0x79, // 00061879
- 0x00, 0x06, 0x14, 0x6E, // 0006146E
- 0x00, 0x08, 0xA4, 0x41, // 0008A441
- 0x00, 0x02, 0x9E, 0x20, // 00029E20
- 0x00, 0x08, 0xBB, 0x42, // 0008BB42
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x08, 0x10, 0x40, // 00081040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x98, 0x79, // 00069879
- 0x00, 0x06, 0x94, 0x6E, // 0006946E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x08, 0x24, // 00060824
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x08, 0x2C, // 0006082C
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x18, 0x71, // 00061871
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x24, 0x6B, // 0006246B
- 0x00, 0x08, 0xA9, 0xC0, // 0008A9C0
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x2D, 0xC2, // 00082DC2
- 0x00, 0x08, 0xB4, 0x41, // 0008B441
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1A, 0xA5, // 00021AA5
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0xB5, 0x42, // 0008B542
- 0x00, 0x02, 0x86, 0x10, // 00028610
- 0x00, 0x02, 0x1A, 0xA5, // 00021AA5
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x34, 0x26, // 00063426
- 0x00, 0x0A, 0xD1, 0x41, // 000AD141
- 0x00, 0x0A, 0xF6, 0x7E, // 000AF67E
- 0x00, 0x08, 0x12, 0xC6, // 000812C6
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0A, 0xC2, 0x7E, // 000AC27E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x6B, // 0006A46B
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x25, // 00072425
- 0x00, 0x08, 0x93, 0xC5, // 000893C5
- 0x00, 0x06, 0xA8, 0x71, // 0006A871
- 0x00, 0x08, 0x9C, 0xC2, // 00089CC2
- 0x00, 0x02, 0x88, 0x10, // 00028810
- 0x00, 0x02, 0x1B, 0x86, // 00021B86
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x18, 0x52, // 00061852
- 0x00, 0x07, 0x54, 0x08, // 00075408
- 0x00, 0x07, 0x14, 0x00, // 00071400
- 0x00, 0x07, 0x7C, 0x06, // 00077C06
- 0x00, 0x07, 0x3E, 0xFD, // 00073EFD
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x20, // 00029F20
- 0x00, 0x0A, 0xC3, 0xC2, // 000AC3C2
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0xA7, // 00021BA7
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x06, 0x34, 0x26, // 00063426
- 0x00, 0x06, 0x3C, 0x1C, // 00063C1C
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x06, 0x18, 0x70, // 00061870
- 0x00, 0x08, 0x86, 0xC7, // 000886C7
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x00, 0xC2, // 000800C2
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x25, // 00072425
- 0x00, 0x06, 0x28, 0x79, // 00062879
- 0x00, 0x08, 0x93, 0xC0, // 000893C0
- 0x00, 0x06, 0x80, 0x70, // 00068070
- 0x00, 0x08, 0x94, 0xC2, // 000894C2
- 0x00, 0x02, 0x88, 0x38, // 00028838
- 0x00, 0x08, 0xBD, 0x41, // 0008BD41
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x09, 0xAD, 0x41, // 0009AD41
- 0x00, 0x07, 0x7C, 0x06, // 00077C06
- 0x00, 0x07, 0x3E, 0xFD, // 00073EFD
- 0x00, 0x02, 0x1B, 0xB0, // 00021BB0
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0xA8, 0x79, // 0006A879
- 0x00, 0x06, 0xB8, 0x0F, // 0006B80F
- 0x00, 0x06, 0x14, 0x26, // 00061426
- 0x00, 0x06, 0x20, 0x7D, // 0006207D
- 0x00, 0x06, 0x28, 0x7C, // 0006287C
- 0x00, 0x08, 0x32, 0x60, // 00083260
- 0x00, 0x02, 0x86, 0x18, // 00028618
- 0x00, 0x08, 0x2D, 0xC4, // 00082DC4
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x02, 0x81, 0x08, // 00028108
- 0x00, 0x0B, 0x64, 0x7F, // 000B647F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA8, 0x7C, // 0006A87C
- 0x00, 0x06, 0xA0, 0x7D, // 0006A07D
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x01, // 00073C01
- 0x00, 0x06, 0x00, 0x7C, // 0006007C
- 0x00, 0x06, 0x30, 0x79, // 00063079
- 0x00, 0x08, 0xBF, 0xC0, // 0008BFC0
- 0x00, 0x02, 0x88, 0xC0, // 000288C0
- 0x00, 0x08, 0xB6, 0x41, // 0008B641
- 0x00, 0x02, 0x9E, 0xB0, // 00029EB0
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x08, 0xBA, 0xC1, // 0008BAC1
- 0x00, 0x06, 0x34, 0x6E, // 0006346E
- 0x00, 0x08, 0xBF, 0xC6, // 0008BFC6
- 0x00, 0x07, 0x5C, 0x00, // 00075C00
- 0x00, 0x07, 0x1F, 0x00, // 00071F00
- 0x00, 0x07, 0x54, 0x01, // 00075401
- 0x00, 0x07, 0x16, 0x00, // 00071600
- 0x00, 0x08, 0xAF, 0xC3, // 0008AFC3
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0xBF, 0xC2, // 0008BFC2
- 0x00, 0x08, 0x2F, 0xC3, // 00082FC3
- 0x00, 0x02, 0x86, 0x08, // 00028608
- 0x00, 0x08, 0x3F, 0xC2, // 00083FC2
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x1C, 0x15, // 00021C15
- 0x00, 0x07, 0x4C, 0x06, // 00074C06
- 0x00, 0x07, 0x0E, 0xFD, // 00070EFD
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x7C, // 0006807C
- 0x00, 0x06, 0x88, 0x0F, // 0006880F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x64, // 00060464
- 0x00, 0x06, 0x0C, 0x72, // 00060C72
- 0x00, 0x06, 0x10, 0x74, // 00061074
- 0x00, 0x08, 0x80, 0x40, // 00088040
- 0x00, 0x02, 0x9F, 0x40, // 00029F40
- 0x00, 0x08, 0x89, 0x40, // 00088940
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x08, 0x92, 0x40, // 00089240
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x04, 0x07, 0x00, // 00040700
- 0x00, 0x0A, 0xC9, 0xC0, // 000AC9C0
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x81, 0x10, // 00028110
- 0x00, 0x02, 0x1B, 0x68, // 00021B68
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x80, 0x07, // 00078007
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x61, // 00070661
- 0x00, 0x07, 0x4C, 0x0C, // 00074C0C
- 0x00, 0x07, 0x0C, 0x00, // 00070C00
- 0x00, 0x06, 0x14, 0x64, // 00061464
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC7, 0x81, // 000AC781
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x64, // 00069464
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x02, // 00070C02
- 0x00, 0x06, 0x10, 0x7A, // 0006107A
- 0x00, 0x06, 0x20, 0x1C, // 0006201C
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xC3, 0x81, // 000AC381
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x0B, 0x52, 0x7F, // 000B527F
- 0x00, 0x02, 0x81, 0x48, // 00028148
- 0x00, 0x08, 0x9A, 0x41, // 00089A41
- 0x00, 0x02, 0x9E, 0x38, // 00029E38
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x08, 0x24, // 00060824
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x06, 0x08, 0x2C, // 0006082C
- 0x00, 0x0B, 0x52, 0x40, // 000B5240
- 0x00, 0x0A, 0xE1, 0x7E, // 000AE17E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x90, 0x7A, // 0006907A
- 0x00, 0x06, 0xA0, 0x1C, // 0006A01C
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x69, // 00070669
- 0x00, 0x07, 0x4C, 0x00, // 00074C00
- 0x00, 0x07, 0x0C, 0x01, // 00070C01
- 0x00, 0x07, 0x44, 0x01, // 00074401
- 0x00, 0x07, 0x06, 0x6C, // 0007066C
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0A, 0xCF, 0x81, // 000ACF81
- 0x00, 0x06, 0x18, 0x77, // 00061877
- 0x00, 0x06, 0x80, 0x22, // 00068022
- 0x00, 0x0B, 0x09, 0xC3, // 000B09C3
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x68, // 00021B68
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x24, 0x6B, // 0006246B
- 0x00, 0x0B, 0x1B, 0x41, // 000B1B41
- 0x00, 0x06, 0x14, 0x65, // 00061465
- 0x00, 0x06, 0x04, 0x6A, // 0006046A
- 0x00, 0x08, 0x28, 0x41, // 00082841
- 0x00, 0x02, 0x9F, 0x08, // 00029F08
- 0x00, 0x08, 0x82, 0xC0, // 000882C0
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x66, // 00021B66
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x40, 0x41, // 000B4041
- 0x00, 0x0B, 0x64, 0x40, // 000B6440
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x0B, 0x76, 0x40, // 000B7640
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x08, 0x9B, 0x40, // 00089B40
- 0x00, 0x02, 0x9E, 0x28, // 00029E28
- 0x00, 0x04, 0x27, 0x08, // 00042708
- 0x00, 0x04, 0x2F, 0x08, // 00042F08
- 0x00, 0x04, 0x37, 0x08, // 00043708
- 0x00, 0x04, 0x3F, 0x08, // 00043F08
- 0x00, 0x07, 0xA0, 0x0D, // 0007A00D
- 0x00, 0x07, 0xA8, 0x0D, // 0007A80D
- 0x00, 0x07, 0xB0, 0x0D, // 0007B00D
- 0x00, 0x07, 0xB8, 0x0D, // 0007B80D
- 0x00, 0x06, 0x98, 0x77, // 00069877
- 0x00, 0x06, 0x84, 0x6A, // 0006846A
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x6D, // 0006006D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xC0, 0x6D, // 0006C06D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x3F, 0xCC, // 00023FCC
- 0x00, 0x07, 0x6C, 0x06, // 00076C06
- 0x00, 0x07, 0x2F, 0x78, // 00072F78
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x19, 0x5B, // 0002195B
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0xC1, 0x80, // 0000C180
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x00, 0x1C, // 0006001C
- 0x00, 0x07, 0x6C, 0x01, // 00076C01
- 0x00, 0x07, 0x2E, 0x00, // 00072E00
- 0x00, 0x07, 0x7C, 0x01, // 00077C01
- 0x00, 0x07, 0x3E, 0x68, // 00073E68
- 0x00, 0x0A, 0xF1, 0x7E, // 000AF17E
- 0x00, 0x09, 0x00, 0xC6, // 000900C6
- 0x00, 0x02, 0x88, 0x08, // 00028808
- 0x00, 0x08, 0x00, 0xC5, // 000800C5
- 0x00, 0x06, 0x2C, 0x64, // 00062C64
- 0x00, 0x0A, 0x00, 0x7F, // 000A007F
- 0x00, 0x06, 0x20, 0x7A, // 0006207A
- 0x00, 0x06, 0xB8, 0x22, // 0006B822
- 0x00, 0x04, 0x3F, 0x00, // 00043F00
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x08, 0x3F, 0xC0, // 00083FC0
- 0x00, 0x08, 0xAD, 0x40, // 0008AD40
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x06, 0x2C, 0x7F, // 00062C7F
- 0x00, 0x08, 0xA4, 0x40, // 0008A440
- 0x00, 0x02, 0x9E, 0x08, // 00029E08
- 0x00, 0x0B, 0x6D, 0x6F, // 000B6D6F
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x02, 0x1A, 0xAD, // 00021AAD
- 0x00, 0x06, 0xB0, 0x1C, // 0006B01C
- 0x00, 0x0A, 0xFF, 0x7E, // 000AFF7E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x72, // 00068472
- 0x00, 0x06, 0xAC, 0x7F, // 0006AC7F
- 0x00, 0x07, 0xB8, 0x07, // 0007B807
- 0x00, 0x06, 0x10, 0x2C, // 0006102C
- 0x00, 0x0B, 0x64, 0x6D, // 000B646D
- 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E
- 0x00, 0x0B, 0x5B, 0x7F, // 000B5B7F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x81, 0x20, // 00028120
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x9C, 0x7B, // 00069C7B
- 0x00, 0x0B, 0x64, 0x6E, // 000B646E
- 0x00, 0x06, 0x34, 0x6D, // 0006346D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0xA4, 0x7F, // 0006A47F
- 0x00, 0x06, 0xB4, 0x0F, // 0006B40F
- 0x00, 0x06, 0xB4, 0x6C, // 0006B46C
- 0x00, 0x0B, 0x76, 0x7F, // 000B767F
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x0B, 0x6D, 0x40, // 000B6D40
- 0x00, 0x08, 0x3F, 0x40, // 00083F40
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x06, 0xB4, 0x6B, // 0006B46B
- 0x00, 0x04, 0xB0, 0x0D, // 0004B00D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x09, 0xB6, 0x7C, // 0009B67C
- 0x00, 0x01, 0x05, 0x10, // 00010510
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x00, 0x42, // 00080042
- 0x00, 0x0B, 0x7F, 0x40, // 000B7F40
- 0x00, 0x09, 0xB6, 0x7F, // 0009B67F
- 0x00, 0x02, 0x82, 0x08, // 00028208
- 0x00, 0x08, 0x3F, 0x42, // 00083F42
- 0x00, 0x07, 0x84, 0x0C, // 0007840C
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x09, 0xA6, 0x7F, // 0009A67F
- 0x00, 0x07, 0xBC, 0x0C, // 0007BC0C
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x24, 0x30, // 00072430
- 0x00, 0x08, 0x2D, 0x41, // 00082D41
- 0x00, 0x08, 0xA4, 0xC5, // 0008A4C5
- 0x00, 0x02, 0x9F, 0x10, // 00029F10
- 0x00, 0x02, 0x1B, 0xBE, // 00021BBE
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3F, 0x18, // 00073F18
- 0x00, 0x06, 0x00, 0x78, // 00060078
- 0x00, 0x06, 0x10, 0x24, // 00061024
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x02, 0x9F, 0x18, // 00029F18
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x00, // 00073C00
- 0x00, 0x06, 0x10, 0x2C, // 0006102C
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0A, 0xD2, 0x7E, // 000AD27E
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x06, 0x04, 0x64, // 00060464
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x00, 0xDE, 0x87, // 0000DE87
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x90, 0x20, // 00069020
- 0x00, 0x06, 0x9C, 0x62, // 00069C62
- 0x00, 0x06, 0x9C, 0x6E, // 00069C6E
- 0x00, 0x06, 0x9C, 0x63, // 00069C63
- 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x73, // 00060473
- 0x00, 0x07, 0x5C, 0x01, // 00075C01
- 0x00, 0x07, 0x1E, 0x00, // 00071E00
- 0x00, 0x08, 0x80, 0x41, // 00088041
- 0x00, 0x02, 0x9E, 0x10, // 00029E10
- 0x00, 0x02, 0x1B, 0x7F, // 00021B7F
- 0x00, 0x02, 0x81, 0x28, // 00028128
- 0x00, 0x0B, 0x40, 0x7F, // 000B407F
- 0x00, 0x08, 0x12, 0x42, // 00081242
- 0x00, 0x09, 0x1B, 0xC2, // 00091BC2
- 0x00, 0x02, 0x87, 0x08, // 00028708
- 0x00, 0x08, 0x92, 0xC3, // 000892C3
- 0x00, 0x06, 0x84, 0x73, // 00068473
- 0x00, 0x07, 0x64, 0x00, // 00076400
- 0x00, 0x07, 0x27, 0x00, // 00072700
- 0x00, 0x07, 0x7C, 0x00, // 00077C00
- 0x00, 0x07, 0x3C, 0x00, // 00073C00
- 0x00, 0x0B, 0x5B, 0x40, // 000B5B40
- 0x00, 0x0B, 0x6D, 0x7F, // 000B6D7F
- 0x00, 0x06, 0xA4, 0x05, // 0006A405
- 0x00, 0x01, 0x41, 0x80, // 00014180
- 0x00, 0x06, 0xB8, 0x22, // 0006B822
- 0x00, 0x07, 0x98, 0x0F, // 0007980F
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x07, 0x98, 0x0F, // 0007980F
- 0x00, 0x00, 0xC1, 0x87, // 0000C187
- 0x00, 0x06, 0x90, 0x1C, // 0006901C
- 0x00, 0x06, 0x9C, 0x62, // 00069C62
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x9C, 0x63, // 00069C63
- 0x00, 0x06, 0x9C, 0x6E, // 00069C6E
- 0x00, 0x06, 0xAC, 0x7D, // 0006AC7D
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x0B, 0x40, 0x40, // 000B4040
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x84, 0x62, // 00068462
- 0x00, 0x06, 0x84, 0x63, // 00068463
- 0x00, 0x06, 0x04, 0x62, // 00060462
- 0x00, 0x06, 0x1C, 0x63, // 00061C63
- 0x00, 0x0A, 0x0F, 0x41, // 000A0F41
- 0x00, 0x08, 0x97, 0xC0, // 000897C0
- 0x00, 0x08, 0x1B, 0xC2, // 00081BC2
- 0x00, 0x0A, 0x12, 0x47, // 000A1247
- 0x00, 0x07, 0x65, 0x00, // 00076500
- 0x00, 0x07, 0x24, 0x00, // 00072400
- 0x00, 0x07, 0x6D, 0x00, // 00076D00
- 0x00, 0x07, 0x2C, 0x00, // 00072C00
- 0x00, 0x07, 0x75, 0x00, // 00077500
- 0x00, 0x07, 0x34, 0x00, // 00073400
- 0x00, 0x0C, 0x12, 0x25, // 000C1225
- 0x00, 0x0E, 0x11, 0x24, // 000E1124
- 0x00, 0x0E, 0x13, 0x26, // 000E1326
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x04, 0x6C, // 0006046C
- 0x00, 0x00, 0xC1, 0x07, // 0000C107
- 0x00, 0x09, 0x12, 0xC0, // 000912C0
- 0x00, 0x06, 0xBC, 0x62, // 0006BC62
- 0x00, 0x06, 0x9C, 0x63, // 00069C63
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x06, 0x94, 0x6C, // 0006946C
- 0x00, 0x06, 0x94, 0x0F, // 0006940F
- 0x00, 0x03, 0x33, 0x33, // 00033333
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
- 0x00, 0x00, 0x00, 0x00, // 00000000
-};
-
-struct i2c_block {
- const unsigned char *data;
- unsigned len;
-};
-
-static struct i2c_block maspcm[] = {
- { maspcm_array1, sizeof(maspcm_array1) },
- { maspcm_array2, sizeof(maspcm_array2) },
- { maspcm_array3, sizeof(maspcm_array3) },
- { maspcm_array4, sizeof(maspcm_array4) },
- { maspcm_array5, sizeof(maspcm_array5) },
- { maspcm_array6, sizeof(maspcm_array6) },
- { maspcm_array7, sizeof(maspcm_array7) },
- { maspcm_array8, sizeof(maspcm_array8) },
- { maspcm_array9, sizeof(maspcm_array9) },
- { maspcm_array10, sizeof(maspcm_array10) },
-};
-
-/************ End of MAS pcm codec ************/
-
-#define WAVRECORD_QUIT BUTTON_OFF
-
-#define CFGFILE_VERSION 0 /* Current config file version */
-#define CFGFILE_MINVERSION 0 /* Minimum config file version to accept */
-
-#define PCM_MAIN_IO_CONTROL 0x0661
-#define PCM_IF_STATUS_CONTROL 0x0662
-#define PCM_OFREQ_CONTROL 0x0663
-#define PCM_OUTPUT_CLOCK_CONF 0x0664
-#define PCM_FRAME_COUNTER 0x0665
-#define PCM_APP_RUNNING 0x0666
-#define PCM_SAMPLE_RATE_STATUS 0x0667
-#define PCM_BUFFER_ERROR_COUNTER 0x0668
-#define PCM_SOFT_MUTE 0x0669
-#define PCM_SPDIF_CHANNEL_STATUS 0x066a
-#define PCM_SAMPLE_RATE 0x066b
-#define PCM_VOL_OUT_LL 0x066c
-#define PCM_VOL_OUT_RL 0x066d
-#define PCM_VOL_OUT_LR 0x066e
-#define PCM_VOL_OUT_RR 0x066f
-#define PCM_VOL_IN_LL 0x0670
-#define PCM_VOL_IN_RL 0x0671
-#define PCM_VOL_IN_LR 0x0672
-#define PCM_VOL_IN_RR 0x0673
-
-#define IRQ3 (*((volatile unsigned long*)0x0900010C))
-
-#define LOW_WATER_CHUNKSIZE (256*1024)
-
-/* declarations */
-
-struct riff_header
-{
- uint8_t riff_id[4]; /* 00h - "RIFF" */
- uint32_t riff_size; /* 04h - sz following headers + data_size */
- /* format header */
- uint8_t format[4]; /* 08h - "WAVE" */
- uint8_t format_id[4]; /* 0Ch - "fmt " */
- uint32_t format_size; /* 10h - 16 for PCM (sz format data) */
- /* format data */
- uint16_t audio_format; /* 14h - 1=PCM */
- uint16_t num_channels; /* 16h - 1=M, 2=S, etc. */
- uint32_t sample_rate; /* 18h - HZ */
- uint32_t byte_rate; /* 1Ch - num_channels*sample_rate*bits_per_sample/8 */
- uint16_t block_align; /* 20h - num_channels*bits_per_samples/8 */
- uint16_t bits_per_sample; /* 22h - 8=8 bits, 16=16 bits, etc. */
- /* Not for audio_format=1 (PCM) */
-/* unsigned short extra_param_size; 24h - size of extra data */
-/* unsigned char *extra_params; */
- /* data header */
- uint8_t data_id[4]; /* 24h - "data" */
- uint32_t data_size; /* 28h - num_samples*num_channels*bits_per_sample/8 */
-/* unsigned char *data; 2ch - actual sound data */
-} __attribute__((packed));
-
-#define RIFF_FMT_HEADER_SIZE 12 /* format -> format_size */
-#define RIFF_FMT_DATA_SIZE 16 /* audio_format -> bits_per_sample */
-#define RIFF_DATA_HEADER_SIZE 8 /* data_id -> data_size */
-
-#define PCM_DEPTH_BYTES 2
-#define PCM_DEPTH_BITS 16
-
-/* Define our own source constants since REC_SRC_FMRADIO will intrude on the count */
-enum {
- WAV_SRC_LINE = 0,
- WAV_SRC_MIC,
-#ifdef HAVE_SPDIF_REC
- WAV_SRC_SPDIF,
-#endif
- WAV_NUM_SRC,
-};
-
-void rec_tick(void) __attribute__((interrupt_handler));
-
-/* settings */
-struct rec_config {
- int samplerate; /* index */
- int channels;
- int source;
-};
-
-struct rec_config reccfg_disk = { 7, 1, 0 };
-struct rec_config reccfg; /* running config */
-
-static const char cfg_filename[] = "wavrecord.cfg";
-static char *samplerate_str[9] = { "8000", "11025", "12000",
- "16000", "22050", "24000",
- "32000", "44100", "48000" };
-static char *channel_str[2] = { "mono", "stereo" };
-static char *source_str[WAV_NUM_SRC] = { "line in", "mic",
- HAVE_SPDIF_REC_("spdif",) };
-
-struct configdata disk_config[] = {
- { TYPE_ENUM, 0, 9, { .int_p = &reccfg_disk.samplerate }, "sample rate",
- samplerate_str },
- { TYPE_ENUM, 0, 2, { .int_p = &reccfg_disk.channels }, "channels",
- channel_str },
- { TYPE_ENUM, 0, WAV_NUM_SRC, { .int_p = &reccfg_disk.source }, "source",
- source_str },
-};
-
-static char recfilename[MAX_PATH];
-
-static unsigned char *aud_buf;
-static ssize_t aud_size;
-static unsigned char *plug_buf;
-
-static int aud_read = 0;
-static volatile int aud_write = 0;
-static volatile int num_rec_bytes = 0;
-
-static const struct riff_header header_template =
-{
- /* "RIFF" header */
- { 'R', 'I', 'F', 'F' }, /* riff_id */
- 0, /* riff_size (*) */
- /* format header */
- { 'W', 'A', 'V', 'E' }, /* format */
- { 'f', 'm', 't', ' ' }, /* format_id */
- htole32(16), /* format_size */
- /* format data */
- htole16(1), /* audio_format */
- 0, /* num_channels (*) */
- 0, /* sample_rate (*) */
- 0, /* byte_rate (*) */
- 0, /* block_align (*) */
- htole16(PCM_DEPTH_BITS), /* bits_per_sample */
- /* data header */
- { 'd', 'a', 't', 'a' }, /* data_id */
- 0 /* data_size (*) */
- /* (*) updated during ENC_END_FILE event */
-};
-
-/** i2c, MAS configuration **/
-
-void i2c_random_write(int addr, int cmd, const unsigned char* data, int size)
-{
- plug_buf[0] = cmd;
- rb->memcpy(plug_buf+1, data, size);
-
- rb->i2c_begin();
- rb->i2c_write(addr, plug_buf, size+1);
- rb->i2c_end();
-}
-
-void mas_freeze(void)
-{
- static const unsigned char freeze[] = { 0x00, 0x00 };
-
- /* Freeze DSP */
- i2c_random_write(MAS_ADR, MAS_DATA_WRITE, freeze, sizeof(freeze));
- /* mas_run(0); in core implementation */
-
- /* stop all internal transfers */
- rb->mas_writereg(0x3b, 0x00318); /* stopdma 1 */
- rb->mas_writereg(0x43, 0x00300); /* stopdma 2 */
- rb->mas_writereg(0x4b, 0); /* stopdma 3 */
- rb->mas_writereg(0x53, 0x00318); /* stopdma 4 */
- rb->mas_writereg(0x6b, 0); /* stopdma 5 */
- rb->mas_writereg(0xbb, 0x00318); /* stopdma 6 */
- rb->mas_writereg(0xc3, 0x00300); /* stopdma 7 */
- rb->mas_writereg(0x06, 0); /* stopdma 8 */
-}
-
-void mas_download_pcm(void)
-{
- static const unsigned char runi2s[] = { 0x10, 0x00 };
- unsigned i;
-
- mas_freeze();
-
- /* Download program to MAS memory */
- for ( i = 0; i < (sizeof(maspcm)/sizeof(struct i2c_block)); i++ )
- i2c_random_write(MAS_ADR, MAS_DATA_WRITE, maspcm[i].data, maspcm[i].len);
-
- rb->mas_writereg(0x6b, 0xc0000); /* Reconfigure data to program memory */
-
- /* Start execution at D0:1000 */
- i2c_random_write(MAS_ADR, MAS_DATA_WRITE, runi2s, sizeof(runi2s));
- /* mas_run(0x1000); in core implementation */
-}
-
-void mas_restore(void)
-{
- static const unsigned char resetdsp[] = { 0x88, 0x00 };
- static const unsigned char initdsp[] = { 0x8c, 0x00 };
- unsigned long val;
-
- i2c_random_write(MAS_ADR, MAS_CONTROL, resetdsp, sizeof(resetdsp));
- /* mas_direct_config_write(MAS_CONTROL, 0x8d00); in core implementation */
- rb->sleep(1);
- i2c_random_write(MAS_ADR, MAS_CONTROL, initdsp, sizeof(initdsp));
- /* mas_direct_config_write(MAS_CONTROL, 0x8c00); in core implementation */
-
- /* Stop the current application */
- val = 0;
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1);
- do
- rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1);
- while(val);
-
-#ifdef HAVE_SPDIF_OUT
- val = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */
-#else
- val = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */
-#endif
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_INTERFACE_CONTROL, &val, 1);
-
- val = 0x0025; /* Set Demand mode and validate all settings */
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val, 1);
-
- val = 0x000c; /* Start the Layer2/3 decoder applications */
- rb->mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1);
- do
- rb->mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1);
- while((val & 0x000c) != 0x000c);
-}
-
-/** Very basic recording engine **/
-
-void rec_tick(void)
-{
- int d1, d2, d3;
-
- ICR |= 0x0010; /* Begin with setting the IRQ to edge sensitive */
-
- if(!(PADRH & 0x80))
- { /* /EOD is low - transfer 36 bytes (9 sample pairs, 1 MASPCM DMA block) */
- asm volatile (
- "add %[buf], %[writ] \n" /* write pos -> addr */
- "mov #9, %[i] \n" /* block size = 9*4 */
-
- ".r_loop: \n"
- "xor.b #0x08, @(r0,gbr) \n" /* set PR active */
- ".r_wait1: \n"
- "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */
- "cmp/pz %[scrt] \n"
- "bf .r_wait1 \n"
-
- "mov.b @%[mas], %[data] \n" /* read data from MAS */
- "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */
- "extu.b %[data], %[data] \n"
-
- "xor.b #0x08, @(r0,gbr) \n" /* set PR active */
- ".r_wait2: \n"
- "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */
- "cmp/pz %[scrt] \n"
- "bf .r_wait2 \n"
-
- "mov.b @%[mas], %[scrt] \n" /* read data from MAS */
- "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */
- "shll8 %[data] \n"
- "extu.b %[scrt], %[scrt] \n"
- "or %[scrt], %[data] \n"
-
- "xor.b #0x08, @(r0,gbr) \n" /* set PR active */
- ".r_wait3: \n"
- "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */
- "cmp/pz %[scrt] \n"
- "bf .r_wait3 \n"
-
- "mov.b @%[mas], %[scrt] \n" /* read data from MAS */
- "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */
- "shll8 %[data] \n"
- "extu.b %[scrt], %[scrt] \n"
- "or %[scrt], %[data] \n"
-
- "xor.b #0x08, @(r0,gbr) \n" /* set PR active */
- ".r_wait4: \n"
- "mov.b @%[pbdh], %[scrt] \n" /* wait for RTW */
- "cmp/pz %[scrt] \n"
- "bf .r_wait4 \n"
-
- "mov.b @%[mas], %[scrt] \n" /* read data from MAS */
- "xor.b #0x08, @(r0,gbr) \n" /* set PR inactive */
- "shll8 %[data] \n"
- "extu.b %[scrt], %[scrt] \n"
- "or %[scrt], %[data] \n"
-
- "mov.l %[data], @%[writ] \n"
-
- "add #4, %[writ] \n" /* advance buffer pointer */
- "cmp/hi %[writ], %[end] \n"
- "bt .r_nowrap \n"
- "mov %[buf], %[writ] \n" /* wrap if necessary */
- ".r_nowrap: \n"
-
- "add #-1, %[i] \n" /* count down block size */
- "cmp/pl %[i] \n" /* exit if zero */
- "bt .r_loop \n"
-
- ".r_end: \n"
- "sub %[buf], %[writ] \n" /* eddr -> write pos */
- : /* outputs */
- [writ]"+r"(aud_write),
- [i] "=&r"(d1),
- [data]"=&r"(d2),
- [scrt]"=&r"(d3)
- : /* inputs */
- [buf] "r"(aud_buf),
- [end] "r"(aud_buf + aud_size),
- [padh]"z"(PADRH_ADDR),
- [pbdh]"r"(PBDRH_ADDR),
- [mas] "r"(0x04000000)
- );
- num_rec_bytes += 36;
- }
-}
-
-void rec_tick_enable(bool on)
-{
- int oldlevel = disable_irq_save();
-
- if(on)
- {
- IPRA = (IPRA & 0xfff0) | 0x000b;
- ICR &= ~0x0010; /* IRQ3 level sensitive */
- IPRB &= 0xff0f; /* Disable IRQ6 */
- }
- else
- {
- IPRA &= 0xfff0;
- ICR &= ~0x0002; /* Set IRQ6 to level sensitive and back again. */
- ICR |= 0x0002; /* This will clear a pending request. */
- IPRB = (IPRB & 0xff0f) | 0x0080; /* Reenable IRQ6 */
- }
-
- restore_irq(oldlevel);
-}
-
-void hijack_interrupts(bool on)
-{
- static bool taken = false;
- static unsigned long orig_IRQ3;
-
- if (on && !taken)
- {
- orig_IRQ3 = IRQ3;
- IRQ3 = (unsigned long)rec_tick;
- }
- else if (!on && taken)
- {
- IRQ3 = orig_IRQ3;
- }
- taken = on;
-}
-
-static bool update_wav_header(char *filename, int sample_rate,
- int num_channels, int num_bytes)
-{
- struct riff_header hdr;
- int fd;
- bool ret;
-
- fd = rb->open(filename, O_RDWR);
- if (fd < 0)
- return false;
-
- rb->memcpy(&hdr, &header_template, sizeof (struct riff_header));
-
- /* "RIFF" header */
- hdr.riff_size = htole32(RIFF_FMT_HEADER_SIZE + RIFF_FMT_DATA_SIZE
- + RIFF_DATA_HEADER_SIZE + num_bytes);
-
- /* format data */
- hdr.num_channels = htole16(num_channels);
- hdr.sample_rate = htole32(sample_rate);
- hdr.byte_rate = htole32(sample_rate * num_channels * PCM_DEPTH_BYTES);
- hdr.block_align = htole16(num_channels * PCM_DEPTH_BYTES);
-
- /* data header */
- hdr.data_size = htole32(num_bytes);
-
- ret = (rb->write(fd, &hdr, sizeof (struct riff_header))
- == sizeof (struct riff_header));
- rb->close(fd);
- return ret;
-}
-
-static int record_file(char *filename)
-{
- bool recording, saving;
- int fd, low_water, i;
- int bytes_written;
- int button;
- unsigned long mas;
-
- static const unsigned sampr[9][2] = {
- {0, 8000}, {1, 11025}, {2, 12000},
- {4, 16000}, {5, 22050}, {6, 24000},
- {8, 32000}, {9, 44100}, {10, 48000}
- };
-
- fd = rb->open(filename, O_RDWR|O_CREAT|O_TRUNC, 0666);
- if (fd < 0)
- {
- rb->splash(2*HZ, "Couldn't create WAV file");
- return PLUGIN_ERROR;
- }
- /* write template header */
- if (rb->write(fd, &header_template, sizeof (struct riff_header))
- != sizeof (struct riff_header))
- {
- rb->close(fd);
- rb->splash(2*HZ, "Write error");
- return PLUGIN_ERROR;
- }
-
- rb->sound_set_pitch(PITCH_SPEED_100); /* reset pitch */
- mas_download_pcm();
- num_rec_bytes = 0;
- bytes_written = 0;
-
- rb->lcd_clear_display();
- rb->lcd_puts(0, 0, filename);
-
- switch (reccfg.source)
- {
- case WAV_SRC_LINE:
- rb->mas_codec_writereg(0, (rb->global_settings->rec_left_gain << 12)
- | (rb->global_settings->rec_right_gain << 8)
- | 0x07);
- rb->mas_codec_writereg(8, 0);
- break;
-
- case WAV_SRC_MIC:
- rb->mas_codec_writereg(0, (rb->global_settings->rec_mic_gain << 4)
- | 0x0d);
- rb->mas_codec_writereg(8, 0x8000); /* Copy left channel to right */
- break;
-
-#ifdef HAVE_SPDIF_REC
- case WAV_SRC_SPDIF:
- rb->mas_codec_writereg(0, 0x01);
- break;
-#endif
- }
-
-#ifdef HAVE_SPDIF_REC
- if (reccfg.source == WAV_SRC_SPDIF)
- rb->lcd_putsf(0, 1, "16bit %s", channel_str[reccfg.channels]);
- else
-#endif
- rb->lcd_putsf(0, 1, "%sHz 16bit %s",
- samplerate_str[reccfg.samplerate], channel_str[reccfg.channels]);
-
- rb->lcd_update();
-
- mas = 0x0060 /* no framing, little endian */
- | ((reccfg.channels == 0) ? 0x10 : 0) /* mono/stereo */
- | sampr[reccfg.samplerate][0];
- rb->mas_writemem(MAS_BANK_D0, PCM_SAMPLE_RATE, &mas, 1);
-
-#ifdef HAVE_SPDIF_OUT
- mas = 0x0009; /* Disable SDO and SDI, low impedance S/PDIF outputs */
-#else
- mas = 0x002d; /* Disable SDO and SDI, disable S/PDIF output */
-#endif
- rb->mas_writemem(MAS_BANK_D0, PCM_IF_STATUS_CONTROL, &mas, 1);
-
-#ifdef HAVE_SPDIF_IN
- if (reccfg.source == AUDIO_SRC_SPDIF)
- mas = 0x2225; /* recording, S/PDIF input, validate */
- else
-#endif
- mas = 0x2125; /* recording, ADC input, validate */
- rb->mas_writemem(MAS_BANK_D0, PCM_MAIN_IO_CONTROL, &mas, 1);
-
- mas = 0x80001; /* avoid distortion (overflow on full-range input samples) */
- rb->mas_writemem(MAS_BANK_D0, PCM_VOL_IN_LL, &mas, 1); /* LL */
- rb->mas_writemem(MAS_BANK_D0, PCM_VOL_IN_RR, &mas, 1); /* RR */
-
- hijack_interrupts(true);
- rec_tick_enable(true);
- recording = true;
- saving = false;
- low_water = 5 /* seconds */
- * PCM_DEPTH_BYTES
- * sampr[reccfg.samplerate][1] /* samples per second */
- * (reccfg.channels + 1);
-
- while (recording || saving)
- {
- int to_save, write_now, result;
-
- if (saving)
- {
- to_save = num_rec_bytes - bytes_written;
- if (to_save > aud_size)
- {
- rec_tick_enable(false);
-#if (CONFIG_STORAGE & STORAGE_MMC)
- rb->splash(HZ, "Data overrun (slow MMC)");
-#else
- rb->splash(HZ, "Data overrun");
-#endif
- recording = false;
- saving = false;
- break;
- }
- write_now = MIN(to_save, aud_size - aud_read);
-#if (CONFIG_STORAGE & STORAGE_MMC)
- write_now = MIN(write_now, 256*1024);
-#else
- write_now = MIN(write_now, 1024*1024);
-#endif
- result = rb->write(fd, aud_buf + aud_read, write_now);
- if (result < 0)
- {
- rec_tick_enable(false);
- rb->splash(HZ, "Write error");
- recording = false;
- saving = false;
- break;
- }
- bytes_written += result;
- if (result != write_now)
- {
- rec_tick_enable(false);
- rb->splash(HZ, "Disk full");
- recording = false;
- saving = false;
- break;
- }
- if (bytes_written >= 0x7fe00000)
- {
- rec_tick_enable(false);
- rb->splash(HZ, "Max file size reached");
- recording = false;
- saving = false;
- break;
- }
- aud_read += write_now;
- if (aud_read == aud_size)
- aud_read = 0;
-
- if (to_save == write_now)
- saving = false;
-
- rb->yield();
- button = rb->button_get(false);
- }
- else
- {
- button = rb->button_get_w_tmo(HZ/2);
- if (aud_size - (num_rec_bytes - bytes_written) < low_water)
- saving = true;
- }
- if (button == BUTTON_OFF)
- {
- rec_tick_enable(false);
- recording = false;
- saving = true;
- }
- rb->lcd_putsf(0, 2, "Bytes: %d", num_rec_bytes);
- rb->lcd_update();
- }
- /* read sample rate from MAS */
- rb->mas_readmem(MAS_BANK_D0, PCM_SAMPLE_RATE_STATUS, &mas, 1);
- rb->close(fd);
-
- hijack_interrupts(false);
- mas_restore();
- rb->sound_set(SOUND_CHANNELS, rb->global_settings->channel_config);
- rb->sound_set(SOUND_STEREO_WIDTH, rb->global_settings->stereo_width);
-
- for (i = 0; i < 9; i++)
- {
- if (sampr[i][0] == mas)
- break;
- }
- if (i == 9 || !(update_wav_header(filename, sampr[i][1],
- (reccfg.channels + 1), bytes_written)))
- {
- rb->splash(HZ, "Updating WAV header failed");
- }
-
- return PLUGIN_OK;
-}
-
-static int recording_menu(void)
-{
- int menupos = 3;
- int rc = 0;
- bool done = false;
-
- static const struct opt_items freqs[9] = {
- { "8000Hz", TALK_ID(8, UNIT_KHZ) },
- { "11025Hz", TALK_ID(11, UNIT_KHZ) },
- { "12000Hz", TALK_ID(12, UNIT_KHZ) },
- { "16000Hz", TALK_ID(16, UNIT_KHZ) },
- { "22050Hz", TALK_ID(22, UNIT_KHZ) },
- { "24000Hz", TALK_ID(24, UNIT_KHZ) },
- { "32000Hz", TALK_ID(32, UNIT_KHZ) },
- { "44100Hz", TALK_ID(44, UNIT_KHZ) },
- { "48000Hz", TALK_ID(48, UNIT_KHZ) },
- };
- static const struct opt_items chans[2] = {
- { STR(LANG_CHANNEL_MONO) },
- { STR(LANG_CHANNEL_STEREO) },
- };
- static const struct opt_items srcs[WAV_NUM_SRC] = {
- { "Line In", -1 },
- { "Microphone", -1 },
-#ifdef HAVE_SPDIF_REC
- { "S/PDIF", -1 },
-#endif
- };
-
- MENUITEM_STRINGLIST(menu, "WAV Recording", NULL, "Set sample rate",
- "Set channels", "Set Source", "Start recording", "Quit");
-
- while (!done)
- {
- switch (rb->do_menu(&menu, &menupos, NULL, false))
- {
- case 0: /* Set sample rate */
- rb->set_option("Sample rate", &reccfg.samplerate, INT, freqs, 9, NULL);
- break;
-
- case 1: /* Set channels */
- rb->set_option("Channels", &reccfg.channels, INT, chans, 2, NULL);
- break;
-
- case 2: /* Set source */
- rb->set_option("Source", &reccfg.source, INT, srcs, WAV_NUM_SRC, NULL);
- break;
-
- case 3: /* Start recording */
- rb->create_numbered_filename(recfilename,
- rb->global_settings->rec_directory,
- "rec_", ".wav", 4
- IF_CNFN_NUM_(, NULL));
- rc = record_file(recfilename);
- done = true;
- break;
-
- case 4: /* Quit */
- rc = PLUGIN_OK;
- done = true;
- break;
-
- case MENU_ATTACHED_USB:
- rc = PLUGIN_USB_CONNECTED;
- done = true;
- break;
- }
- }
- return rc;
-}
-
-/* plugin entry point */
-enum plugin_status plugin_start(const void* parameter)
-{
- size_t buf_size;
- int align;
- int rc;
- const char *recbasedir;
-
- (void)parameter;
-
- plug_buf = rb->plugin_get_buffer(&buf_size);
- if (buf_size < 6700) /* needed for i2c transfer */
- {
- rb->splash(HZ, "Out of memory.");
- return PLUGIN_ERROR;
- }
-
- recbasedir = rb->global_settings->rec_directory;
- if (rb->strcmp(recbasedir, "/") && !rb->dir_exists(recbasedir))
- {
- rc = rb->mkdir(recbasedir);
- if (rc < 0)
- {
- rb->splashf(HZ*2, "Can't create directory %s. Error %d.",
- recbasedir, rc);
- return PLUGIN_ERROR;
- }
- }
-
- aud_buf = rb->plugin_get_audio_buffer(&buf_size);
- aud_size = buf_size;
- align = (-(long)aud_buf) & 3;
- aud_buf += align;
- aud_size -= align;
- aud_size &= ~3;
-
- configfile_load(cfg_filename, disk_config,
- sizeof(disk_config) / sizeof(disk_config[0]),
- CFGFILE_MINVERSION);
- rb->memcpy(&reccfg, &reccfg_disk, sizeof(reccfg)); /* copy to running config */
-
- rc = recording_menu();
-
- if (rb->memcmp(&reccfg, &reccfg_disk, sizeof(reccfg))) /* save settings if changed */
- {
- rb->memcpy(&reccfg_disk, &reccfg, sizeof(reccfg));
- configfile_save(cfg_filename, disk_config,
- sizeof(disk_config) / sizeof(disk_config[0]),
- CFGFILE_VERSION);
- }
- return rc;
-
-#if 0
-#if (CONFIG_STORAGE & STORAGE_MMC)
- return record_file("/<MMC1>/test.wav");
-#else
- return record_file("/test.wav");
-#endif
-#endif
-}
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;
when a new argh is made */
#define MIN_ARGH_DIST 5
-#if (CONFIG_KEYPAD == RECORDER_PAD)
-#define BTN_DIR_UP BUTTON_UP
-#define BTN_DIR_DOWN BUTTON_DOWN
-#define BTN_DIR_LEFT BUTTON_LEFT
-#define BTN_DIR_RIGHT BUTTON_RIGHT
-#define BTN_PLAYER2_DIR1 BUTTON_F2
-#define BTN_PLAYER2_DIR2 BUTTON_F3
-#define BTN_STARTPAUSE BUTTON_PLAY
-#define BTN_QUIT BUTTON_OFF
-#define BTN_STOPRESET BUTTON_ON
-#define BTN_TOGGLE_KEYS BUTTON_F1
-
-#if BUTTON_REMOTE != 0
-#define BTN_RC_UP BUTTON_RC_VOL_UP
-#define BTN_RC_DOWN BUTTON_RC_VOL_DOWN
-#define REMOTE
-#define MULTIPLAYER
-#endif
-
-#elif (CONFIG_KEYPAD == ONDIO_PAD)
-#define BTN_DIR_UP BUTTON_UP
-#define BTN_DIR_DOWN BUTTON_DOWN
-#define BTN_DIR_LEFT BUTTON_LEFT
-#define BTN_DIR_RIGHT BUTTON_RIGHT
-#define BTN_STARTPAUSE (BUTTON_MENU|BUTTON_REL)
-#define BTN_QUIT (BUTTON_OFF|BUTTON_REL)
-#define BTN_STOPRESET (BUTTON_OFF|BUTTON_MENU)
-
-#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
- (CONFIG_KEYPAD == IPOD_1G2G_PAD)
+#if (CONFIG_KEYPAD == IPOD_4G_PAD) || (CONFIG_KEYPAD == IPOD_3G_PAD) || \
+ (CONFIG_KEYPAD == IPOD_1G2G_PAD)
#define BTN_DIR_UP BUTTON_MENU
#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 @@
#define DOWN BUTTON_SCROLL_DOWN
#define PAUSE BUTTON_PLAY
-#elif CONFIG_KEYPAD == RECORDER_PAD
-
-#define QUIT BUTTON_OFF
-#define LEFT BUTTON_LEFT
-#define RIGHT BUTTON_RIGHT
-#define DOWN BUTTON_DOWN
-#define UP BUTTON_UP
-#define PAUSE BUTTON_PLAY
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-
-#define QUIT BUTTON_OFF
-#define LEFT BUTTON_LEFT
-#define RIGHT BUTTON_RIGHT
-#define DOWN BUTTON_DOWN
-#define UP BUTTON_UP
-#define PAUSE BUTTON_MENU
-
#elif (CONFIG_KEYPAD == GIGABEAT_S_PAD)
#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 @@
#define ZX_SELECT BUTTON_SELECT
#define ZX_MENU BUTTON_PLAY
-#elif CONFIG_KEYPAD == RECORDER_PAD
-#define ZX_SELECT BUTTON_PLAY
-#define ZX_MENU BUTTON_F1
-#define ZX_LEFT BUTTON_LEFT
-#define ZX_RIGHT BUTTON_RIGHT
-#define ZX_UP BUTTON_UP
-#define ZX_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define ZX_SELECT BUTTON_MENU
-#define ZX_MENU BUTTON_OFF
-#define ZX_LEFT BUTTON_LEFT
-#define ZX_RIGHT BUTTON_RIGHT
-#define ZX_UP BUTTON_UP
-#define ZX_DOWN BUTTON_DOWN
-
#elif CONFIG_KEYPAD == IRIVER_IFP7XX_PAD
-#define ZX_SELECT BUTTON_SELECT
+#define ZX_SELECT BUTTON_SELECT
#define ZX_MENU BUTTON_PLAY
#define ZX_LEFT BUTTON_LEFT
#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 @@
#define O_BINARY 0
#endif
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define BUTTONBAR_HEIGHT 8
-#else
-#define BUTTONBAR_HEIGHT 0
-#endif
-
#define DEFAULT_MARGIN 6
#define KBD_BUF_SIZE 500
#define kbd_loaded false
@@ -27,22 +21,6 @@
#define KBD_UP BUTTON_UP
#define KBD_DOWN BUTTON_DOWN
-#elif CONFIG_KEYPAD == RECORDER_PAD
-#define KBD_SELECT BUTTON_PLAY
-#define KBD_ABORT BUTTON_OFF
-#define KBD_LEFT BUTTON_LEFT
-#define KBD_RIGHT BUTTON_RIGHT
-#define KBD_UP BUTTON_UP
-#define KBD_DOWN BUTTON_DOWN
-
-#elif CONFIG_KEYPAD == ONDIO_PAD /* restricted Ondio keypad */
-#define KBD_SELECT BUTTON_MENU
-#define KBD_ABORT BUTTON_OFF
-#define KBD_LEFT BUTTON_LEFT
-#define KBD_RIGHT BUTTON_RIGHT
-#define KBD_UP BUTTON_UP
-#define KBD_DOWN BUTTON_DOWN
-
#elif (CONFIG_KEYPAD == IPOD_4G_PAD) || \
(CONFIG_KEYPAD == IPOD_3G_PAD) || \
(CONFIG_KEYPAD == IPOD_1G2G_PAD)
@@ -412,7 +390,7 @@ int zx_kbd_input(char* text/*, int buflen*/)
param[l].font_h = param[l].font->height;
/* check if FONT_UI fits the screen */
- if (2*param[l].font_h+3 + BUTTONBAR_HEIGHT >
+ if (2*param[l].font_h+3 >
rb->screens[l]->getheight()) {
param[l].font = rb->font_get(FONT_SYSFIXED);
param[l].font_h = param[l].font->height;
@@ -492,10 +470,10 @@ int zx_kbd_input(char* text/*, int buflen*/)
param[l].lines = param[l].DEFAULT_LINES;
param[l].keyboard_margin = DEFAULT_MARGIN;
} else {
- param[l].lines = (rb->screens[l]->lcdheight - BUTTONBAR_HEIGHT -
+ param[l].lines = (rb->screens[l]->lcdheight -
statusbar_size) / param[l].font_h - 1;
param[l].keyboard_margin = rb->screens[l]->lcdheight -
- BUTTONBAR_HEIGHT - statusbar_size -
+ statusbar_size -
(param[l].lines+1)*param[l].font_h;
if (param[l].keyboard_margin < 3) {
param[l].lines--;