summaryrefslogtreecommitdiffstats
path: root/apps
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
parent17f7cc92c258bc456a27c3e7c5a19c9409851879 (diff)
downloadrockbox-092c340a2062fa98b7387fc5fd63578ddae7d0b6.tar.gz
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')
-rw-r--r--apps/SOURCES9
-rw-r--r--apps/debug_menu.c63
-rw-r--r--apps/features.txt19
-rw-r--r--apps/gui/buttonbar.c131
-rw-r--r--apps/gui/buttonbar.h85
-rw-r--r--apps/gui/list.c4
-rw-r--r--apps/gui/option_select.h5
-rw-r--r--apps/gui/skin_engine/skin_tokens.c4
-rw-r--r--apps/gui/viewport.c7
-rw-r--r--apps/gui/wps.c4
-rw-r--r--apps/keymaps/keymap-ondio.c252
-rw-r--r--apps/keymaps/keymap-player.c165
-rw-r--r--apps/keymaps/keymap-recorder.c312
-rw-r--r--apps/lang/english.lang447
-rw-r--r--apps/main.c22
-rw-r--r--apps/menu.c34
-rw-r--r--apps/menus/main_menu.c30
-rw-r--r--apps/menus/recording_menu.c29
-rw-r--r--apps/menus/settings_menu.c24
-rw-r--r--apps/menus/sound_menu.c15
-rw-r--r--apps/menus/theme_menu.c22
-rw-r--r--apps/menus/time_menu.c6
-rw-r--r--apps/misc.c15
-rw-r--r--apps/mpeg.c1079
-rw-r--r--apps/plugin.c34
-rw-r--r--apps/plugin.h36
-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
-rw-r--r--apps/radio/presets.c11
-rw-r--r--apps/radio/radio.c13
-rw-r--r--apps/recorder/jpeg_load.c37
-rw-r--r--apps/recorder/keyboard.c29
-rw-r--r--apps/recorder/recording.c286
-rw-r--r--apps/recorder/resize.c91
-rw-r--r--apps/recorder/resize.h56
-rw-r--r--apps/root_menu.c18
-rw-r--r--apps/screen_access.c16
-rw-r--r--apps/screen_access.h4
-rw-r--r--apps/screens.c260
-rw-r--r--apps/screens.h3
-rw-r--r--apps/settings.c16
-rw-r--r--apps/settings.h8
-rw-r--r--apps/settings_list.c55
-rw-r--r--apps/talk.c33
-rw-r--r--apps/tree.c22
117 files changed, 125 insertions, 18279 deletions
diff --git a/apps/SOURCES b/apps/SOURCES
index 107431d464..bf01dbcac4 100644
--- a/apps/SOURCES
+++ b/apps/SOURCES
@@ -75,9 +75,6 @@ iap/iap-lingo7.c
#endif
#endif
screen_access.c
-#ifdef HAVE_BUTTONBAR
-gui/buttonbar.c
-#endif
#ifdef HAVE_LCD_BITMAP
gui/icon.c
#endif
@@ -208,12 +205,6 @@ keymaps/keymap-h1x0_h3x0.c
|| (CONFIG_KEYPAD == IPOD_3G_PAD) \
|| (CONFIG_KEYPAD == IPOD_1G2G_PAD))
keymaps/keymap-ipod.c
-#elif CONFIG_KEYPAD == RECORDER_PAD
-keymaps/keymap-recorder.c
-#elif CONFIG_KEYPAD == ONDIO_PAD
-keymaps/keymap-ondio.c
-#elif CONFIG_KEYPAD == PLAYER_PAD
-keymaps/keymap-player.c
#elif CONFIG_KEYPAD == IAUDIO_X5M5_PAD
keymaps/keymap-x5.c
#elif CONFIG_KEYPAD == IAUDIO_M3_PAD
diff --git a/apps/debug_menu.c b/apps/debug_menu.c
index bc272e2a85..8913558e6c 100644
--- a/apps/debug_menu.c
+++ b/apps/debug_menu.c
@@ -1004,16 +1004,7 @@ static bool view_battery(void)
lcd_putsf(0, 2, "External: %d.%03d V", y / 1000, y % 1000);
#endif
#if CONFIG_CHARGING
-#if defined ARCHOS_RECORDER
- lcd_putsf(0, 3, "Chgr: %s %s",
- charger_inserted() ? "present" : "absent",
- charger_enabled() ? "on" : "off");
- lcd_putsf(0, 5, "short delta: %d", short_delta);
- lcd_putsf(0, 6, "long delta: %d", long_delta);
- lcd_puts(0, 7, power_message);
- lcd_putsf(0, 8, "USB Inserted: %s",
- usb_inserted() ? "yes" : "no");
-#elif defined IPOD_NANO || defined IPOD_VIDEO
+#if defined IPOD_NANO || defined IPOD_VIDEO
int usb_pwr = (GPIOL_INPUT_VAL & 0x10)?true:false;
int ext_pwr = (GPIOL_INPUT_VAL & 0x08)?false:true;
int dock = (GPIOA_INPUT_VAL & 0x10)?true:false;
@@ -1181,18 +1172,6 @@ static bool view_battery(void)
case 3: /* remaining time estimation: */
-#ifdef ARCHOS_RECORDER
- lcd_putsf(0, 0, "charge_state: %d", charge_state);
-
- lcd_putsf(0, 1, "Cycle time: %d m", powermgmt_last_cycle_startstop_min);
-
- lcd_putsf(0, 2, "Lvl@cyc st: %d%%", powermgmt_last_cycle_level);
-
- lcd_putsf(0, 3, "P=%2d I=%2d", pid_p, pid_i);
-
- lcd_putsf(0, 4, "Trickle sec: %d/60", trickle_sec);
-#endif /* ARCHOS_RECORDER */
-
#if (CONFIG_BATTERY_MEASURE & VOLTAGE_MEASURE)
lcd_putsf(0, 5, "Last PwrHist: %d.%03dV",
power_history[0] / 1000,
@@ -1903,30 +1882,7 @@ static bool dbg_tagcache_info(void)
}
#endif
-#if CONFIG_CPU == SH7034
-static bool dbg_save_roms(void)
-{
- int fd;
- int oldmode = system_memory_guard(MEMGUARD_NONE);
-
- fd = creat("/internal_rom_0000-FFFF.bin", 0666);
- if(fd >= 0)
- {
- write(fd, (void *)0, 0x10000);
- close(fd);
- }
-
- fd = creat("/internal_rom_2000000-203FFFF.bin", 0666);
- if(fd >= 0)
- {
- write(fd, (void *)0x2000000, 0x40000);
- close(fd);
- }
-
- system_memory_guard(oldmode);
- return false;
-}
-#elif defined CPU_COLDFIRE
+#if defined CPU_COLDFIRE
static bool dbg_save_roms(void)
{
int fd;
@@ -2091,11 +2047,6 @@ static int radio_callback(int btn, struct gui_synclist *lists)
simplelist_addline(
"sd_set: %d Hz", lv24020lp_get(LV24020LP_SD_SET) );
#endif /* LV24020LP */
-#if (CONFIG_TUNER & S1A0903X01)
- simplelist_addline(
- "Samsung regs: %08X", s1a0903x01_get(RADIO_ALL));
- /* This one doesn't return dynamic data atm */
-#endif /* S1A0903X01 */
#if (CONFIG_TUNER & TEA5767)
struct tea5767_dbg_info nfo;
tea5767_dbg_info(&nfo);
@@ -2218,7 +2169,7 @@ static bool dbg_metadatalog(void)
return false;
}
-#if CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE)
+#if defined(CPU_COLDFIRE)
static bool dbg_set_memory_guard(void)
{
static const struct opt_items names[MAXMEMGUARD] = {
@@ -2233,7 +2184,7 @@ static bool dbg_set_memory_guard(void)
return false;
}
-#endif /* CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE) */
+#endif /* defined(CPU_COLDFIRE) */
#if defined(HAVE_EEPROM) && !defined(HAVE_EEPROM_SETTINGS)
static bool dbg_write_eeprom(void)
@@ -2589,13 +2540,13 @@ static const struct {
unsigned char *desc; /* string or ID */
bool (*function) (void); /* return true if USB was connected */
} menuitems[] = {
-#if CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE) || \
+#if defined(CPU_COLDFIRE) || \
(defined(CPU_PP) && !(CONFIG_STORAGE & STORAGE_SD)) || \
CONFIG_CPU == IMX31L || defined(CPU_TCC780X) || CONFIG_CPU == AS3525v2 || \
CONFIG_CPU == AS3525 || CONFIG_CPU == RK27XX
{ "Dump ROM contents", dbg_save_roms },
#endif
-#if CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE) || defined(CPU_PP) \
+#if defined(CPU_COLDFIRE) || defined(CPU_PP) \
|| CONFIG_CPU == S3C2440 || CONFIG_CPU == IMX31L || CONFIG_CPU == AS3525 \
|| CONFIG_CPU == DM320 || defined(CPU_S5L870X) || CONFIG_CPU == AS3525v2 \
|| CONFIG_CPU == RK27XX
@@ -2616,7 +2567,7 @@ static const struct {
#if defined(IRIVER_H100_SERIES) && !defined(SIMULATOR)
{ "S/PDIF analyzer", dbg_spdif },
#endif
-#if CONFIG_CPU == SH7034 || defined(CPU_COLDFIRE)
+#if defined(CPU_COLDFIRE)
{ "Catch mem accesses", dbg_set_memory_guard },
#endif
{ "View OS stacks", dbg_os },
diff --git a/apps/features.txt b/apps/features.txt
index 2e487943fe..7b50b4026c 100644
--- a/apps/features.txt
+++ b/apps/features.txt
@@ -80,14 +80,6 @@ lcd_invert
lcd_sleep
#endif
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
-masf
-#endif
-
-#if (CONFIG_CODEC == MAS3507D)
-masd
-#endif
-
#if defined(HAVE_MORSE_INPUT)
morse_input
#endif
@@ -115,13 +107,6 @@ radio_remote
#endif
#endif
-#if (CONFIG_KEYPAD == RECORDER_PAD)
-recorder_pad
-#if defined(CONFIG_TUNER)
-radio_screen_button_bar
-#endif
-#endif
-
#if defined(HAVE_RECORDING)
recording
#if CONFIG_CODEC == SWCODEC
@@ -158,10 +143,6 @@ rtc
serial_port
#endif
-#if defined(ARCHOS_RECORDER) || defined(ARCHOS_PLAYER)
-soft_shutdown
-#endif
-
#if defined(HAVE_SPDIF_POWER)
spdif_power
#endif
diff --git a/apps/gui/buttonbar.c b/apps/gui/buttonbar.c
deleted file mode 100644
index 48ef6d0994..0000000000
--- a/apps/gui/buttonbar.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) Linus Nielsen Feltzing (2002)
- *
- * 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.
- *
- ****************************************************************************/
-/*
-2005 Kevin Ferrare :
- - Multi screen support
- - Rewrote a lot of code to avoid global vars and make it accept eventually
- more that 3 buttons on the bar (just the prototype of gui_buttonbar_set
- and the constant BUTTONBAR_MAX_BUTTONS to modify)
-2008 Jonathan Gordon
- - redone to use viewports, items will NOT scroll in their vp.
- Bar is always drawn at the bottom of the screen. This may be changed later.
- Callers need to remember to adjust their viewports to not be overwitten
-*/
-#include "config.h"
-#include "buttonbar.h"
-#include "viewport.h"
-#include "lcd.h"
-#include "font.h"
-#include "string-extra.h"
-#include "settings.h"
-
-static struct viewport bb_vp[NB_SCREENS];
-void gui_buttonbar_init(struct gui_buttonbar * buttonbar)
-{
- gui_buttonbar_unset(buttonbar);
- FOR_NB_SCREENS(i)
- {
- viewport_set_defaults(&bb_vp[i], i);
- bb_vp[i].font = FONT_SYSFIXED;
- bb_vp[i].y = screens[i].lcdheight - BUTTONBAR_HEIGHT;
- bb_vp[i].height = BUTTONBAR_HEIGHT;
- bb_vp[i].drawmode = DRMODE_COMPLEMENT;
- }
-}
-
-void gui_buttonbar_set_display(struct gui_buttonbar * buttonbar,
- struct screen * display)
-{
- buttonbar->display = display;
-}
-
-static void gui_buttonbar_draw_button(struct gui_buttonbar * buttonbar, int num)
-{
- int button_width;
- int fh, fw;
- struct screen * display = buttonbar->display;
- struct viewport vp = bb_vp[display->screen_type];
-
- button_width = display->lcdwidth/BUTTONBAR_MAX_BUTTONS;
- vp.width = button_width-1;
- vp.x = button_width * num;
- display->set_viewport(&vp);
- display->fill_viewport();
- if(buttonbar->caption[num][0] != 0)
- {
- display->getstringsize(buttonbar->caption[num], &fw, &fh);
- display->putsxy((button_width - fw)/2,
- (vp.height-fh)/2, buttonbar->caption[num]);
- }
- display->set_viewport(NULL);
-}
-
-void gui_buttonbar_set(struct gui_buttonbar * buttonbar,
- const char *caption1,
- const char *caption2,
- const char *caption3)
-{
- gui_buttonbar_unset(buttonbar);
- if(caption1)
- {
- strlcpy(buttonbar->caption[0], caption1, BUTTONBAR_CAPTION_LENGTH);
- }
- if(caption2)
- {
- strlcpy(buttonbar->caption[1], caption2, BUTTONBAR_CAPTION_LENGTH);
- }
- if(caption3)
- {
- strlcpy(buttonbar->caption[2], caption3, BUTTONBAR_CAPTION_LENGTH);
- }
-}
-
-void gui_buttonbar_unset(struct gui_buttonbar * buttonbar)
-{
- int i;
- for(i = 0;i < BUTTONBAR_MAX_BUTTONS;i++)
- buttonbar->caption[i][0] = 0;
-}
-
-void gui_buttonbar_draw(struct gui_buttonbar * buttonbar)
-{
- struct screen * display = buttonbar->display;
- if(!global_settings.buttonbar || !gui_buttonbar_isset(buttonbar))
- return;
- int i;
- display->set_viewport(&bb_vp[display->screen_type]);
- display->clear_viewport();
- for(i = 0;i < BUTTONBAR_MAX_BUTTONS;i++)
- gui_buttonbar_draw_button(buttonbar, i);
- display->set_viewport(&bb_vp[display->screen_type]);
- display->update_viewport();
- display->set_viewport(NULL);
-}
-
-bool gui_buttonbar_isset(struct gui_buttonbar * buttonbar)
-{
- /* If all buttons are unset, the button bar is considered disabled */
- int i;
- for(i = 0;i < BUTTONBAR_MAX_BUTTONS;i++)
- if(buttonbar->caption[i][0] != 0)
- return true;
- return false;
-}
diff --git a/apps/gui/buttonbar.h b/apps/gui/buttonbar.h
deleted file mode 100644
index 884e3132bf..0000000000
--- a/apps/gui/buttonbar.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2005 by Kevin Ferrare
- *
- * 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 _GUI_BUTTONBAR_H_
-#define _GUI_BUTTONBAR_H_
-#include "config.h"
-#include "button.h"
-#include "screen_access.h"
-
-
-#ifdef HAVE_BUTTONBAR
-#define BUTTONBAR_HEIGHT 8
-#define BUTTONBAR_MAX_BUTTONS 3
-#define BUTTONBAR_CAPTION_LENGTH 8
-
-
-struct gui_buttonbar
-{
- char caption[BUTTONBAR_MAX_BUTTONS][BUTTONBAR_CAPTION_LENGTH];
- struct screen * display;
-};
-
-/*
- * Initializes the buttonbar
- * - buttonbar : the buttonbar
- */
-extern void gui_buttonbar_init(struct gui_buttonbar * buttonbar);
-
-/*
- * Attach the buttonbar to a screen
- * - buttonbar : the buttonbar
- * - display : the display to attach the buttonbar
- */
-extern void gui_buttonbar_set_display(struct gui_buttonbar * buttonbar,
- struct screen * display);
-
-/*
- * Set the caption of the items of the buttonbar
- * - buttonbar : the buttonbar
- * - caption1,2,3 : the first, second and thirds items of the bar
- */
-extern void gui_buttonbar_set(struct gui_buttonbar * buttonbar,
- const char *caption1,
- const char *caption2,
- const char *caption3);
-
-/*
- * Disable the buttonbar
- * - buttonbar : the buttonbar
- */
-extern void gui_buttonbar_unset(struct gui_buttonbar * buttonbar);
-
-/*
- * Draw the buttonbar on it's attached screen
- * - buttonbar : the buttonbar
- */
-extern void gui_buttonbar_draw(struct gui_buttonbar * buttonbar);
-
-/*
- * Returns true if the buttonbar has something to display, false otherwise
- * - buttonbar : the buttonbar
- */
-extern bool gui_buttonbar_isset(struct gui_buttonbar * buttonbar);
-#else
-#define BUTTONBAR_HEIGHT 0
-#endif
-#endif /* _GUI_BUTTONBAR_H_ */
diff --git a/apps/gui/list.c b/apps/gui/list.c
index 425cab9a0f..8533f93275 100644
--- a/apps/gui/list.c
+++ b/apps/gui/list.c
@@ -553,10 +553,6 @@ void gui_synclist_set_viewport_defaults(struct viewport *vp,
enum screen_type screen)
{
viewport_set_defaults(vp, screen);
-#ifdef HAVE_BUTTONBAR
- if (screens[screen].has_buttonbar)
- vp->height -= BUTTONBAR_HEIGHT;
-#endif
}
#ifdef HAVE_LCD_COLOR
diff --git a/apps/gui/option_select.h b/apps/gui/option_select.h
index 4ccc15a14e..7ca9a4ebbb 100644
--- a/apps/gui/option_select.h
+++ b/apps/gui/option_select.h
@@ -25,9 +25,8 @@
#include "screen_access.h"
#include "settings.h"
-#if defined (HAVE_SCROLLWHEEL) || \
- (CONFIG_KEYPAD == PLAYER_PAD)
-/* Define this if your target makes sense to have
+#if defined (HAVE_SCROLLWHEEL)
+/* Define this if your target makes sense to have
smaller values at the top of the list increasing down the list */
#define ASCENDING_INT_SETTINGS
#endif
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c
index 1cff83eb9a..75c3203066 100644
--- a/apps/gui/skin_engine/skin_tokens.c
+++ b/apps/gui/skin_engine/skin_tokens.c
@@ -126,7 +126,7 @@ char* get_dir(char* buf, int buf_size, const char* path, int level)
return buf;
}
-#if (CONFIG_CODEC != MAS3507D) && defined (HAVE_PITCHCONTROL)
+#if defined (HAVE_PITCHCONTROL)
/* A helper to determine the enum value for pitch/speed.
When there are two choices (i.e. boolean), return 1 if the value is
@@ -1452,7 +1452,7 @@ const char *get_token_value(struct gui_wps *gwps,
}
#endif /* (CONFIG_CODEC == SWCODEC) */
-#if (CONFIG_CODEC != MAS3507D) && defined (HAVE_PITCHCONTROL)
+#if defined (HAVE_PITCHCONTROL)
case SKIN_TOKEN_SOUND_PITCH:
{
int32_t pitch = sound_get_pitch();
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c
index 194954c1d2..fad3255cdb 100644
--- a/apps/gui/viewport.c
+++ b/apps/gui/viewport.c
@@ -262,13 +262,6 @@ void viewportmanager_init()
#ifdef HAVE_LCD_BITMAP
void viewportmanager_theme_changed(const int which)
{
-#ifdef HAVE_BUTTONBAR
- if (which & THEME_BUTTONBAR)
- { /* don't handle further, the custom ui viewport ignores the buttonbar,
- * as does viewport_set_defaults(), since only lists use it*/
- screens[SCREEN_MAIN].has_buttonbar = global_settings.buttonbar;
- }
-#endif
if (which & THEME_LANGUAGE)
{
}
diff --git a/apps/gui/wps.c b/apps/gui/wps.c
index c27c434d12..a930edaded 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -355,10 +355,6 @@ bool ffwd_rew(int button)
if (!skin_get_global_state()->paused)
audio_pause();
#endif
-#if CONFIG_KEYPAD == PLAYER_PAD
- FOR_NB_SCREENS(i)
- skin_get_gwps(WPS, i)->display->scroll_stop();
-#endif
if (direction > 0)
status_set_ffmode(STATUS_FASTFORWARD);
else
diff --git a/apps/keymaps/keymap-ondio.c b/apps/keymaps/keymap-ondio.c
deleted file mode 100644
index 3a6f667601..0000000000
--- a/apps/keymaps/keymap-ondio.c
+++ /dev/null
@@ -1,252 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 Jonathan Gordon
- *
- * 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.
- *
- ****************************************************************************/
-
-/* *
- * Button Code Definitions for archos ondio fm/sp targets
- */
-
-#include "config.h"
-#include "action.h"
-#include "button.h"
-#include "settings.h"
-
-/* CONTEXT_CUSTOM's used in this file...
-
-CONTEXT_CUSTOM|CONTEXT_TREE = the standard list/tree defines (without directions)
-
-
-*/
-
-static const struct button_mapping button_context_standard[] = {
- { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
- { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
-
- { ACTION_STD_CONTEXT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
- { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_STD_MENU, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
- { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping button_context_wps[] = {
- { ACTION_WPS_PLAY, BUTTON_OFF|BUTTON_REL, BUTTON_OFF },
- { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
- { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
- { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
- { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REPEAT, BUTTON_OFF },
- { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_BROWSE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- { ACTION_WPS_CONTEXT, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
- /* { ACTION_WPS_MENU, BUTTON_NONE, BUTTON_NONE }, we can't have that */
- { ACTION_STD_KEYLOCK, BUTTON_MENU|BUTTON_DOWN, BUTTON_NONE },
- /* { ACTION_WPS_VIEW_PLAYLIST,BUTTON_NONE, BUTTON_NONE }, can't have this either */
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping button_context_settings[] = {
- { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
- { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_MENU, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-
-static const struct button_mapping button_context_tree[] = {
- { ACTION_TREE_WPS, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_listtree */
-
-static const struct button_mapping button_context_tree_scroll_lr[] = {
- { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
- { ACTION_TREE_PGLEFT, BUTTON_MENU|BUTTON_LEFT, BUTTON_NONE },
- { ACTION_TREE_ROOT_INIT, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_MENU|BUTTON_LEFT },
- { ACTION_TREE_PGLEFT, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_TREE_PGRIGHT, BUTTON_MENU|BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_TREE_PGRIGHT, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|CONTEXT_TREE),
-};
-
-static const struct button_mapping button_context_yesno[] = {
- { ACTION_YESNO_ACCEPT, BUTTON_RIGHT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-
-static const struct button_mapping button_context_bmark[] = {
- { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_BMS_DELETE, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
-}; /* button_context_settings_bmark */
-
-static const struct button_mapping button_context_pitchscreen[] = {
- { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
- { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
- { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
- { ACTION_PS_TOGGLE_MODE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_MENU },
- { ACTION_PS_RESET, BUTTON_MENU, BUTTON_NONE },
- { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_pitchscreen */
-
-#ifdef HAVE_RECORDING
-static const struct button_mapping button_context_rectrigger[] = {
- { ACTION_STD_OK, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_RECSCREEN)
-};
-static const struct button_mapping button_context_recscreen[] = {
- { ACTION_REC_PAUSE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- { ACTION_SETTINGS_INC, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_recscreen */
-#endif /* HAVE_RECORDING */
-
-static const struct button_mapping button_context_keyboard[] = {
- { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_SELECT, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- { ACTION_KBD_DONE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
- { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
- { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-}; /* button_context_keyboard */
-
-static const struct button_mapping button_context_morse_input[] = {
- { ACTION_KBD_CURSOR_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_BACKSPACE, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- { ACTION_KBD_DONE, BUTTON_MENU|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
- { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_SELECT, BUTTON_UP, BUTTON_NONE },
- { ACTION_KBD_MORSE_SELECT, BUTTON_UP|BUTTON_REL, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-}; /* button_context_morse_input */
-
-#if CONFIG_TUNER
-static const struct button_mapping button_context_radio[] = {
- { ACTION_FM_MENU, BUTTON_MENU | BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_FM_RECORD_DBLPRE, BUTTON_MENU, BUTTON_NONE},
- { ACTION_FM_RECORD, BUTTON_MENU | BUTTON_REL, BUTTON_NONE },
- { ACTION_FM_STOP, BUTTON_OFF | BUTTON_REPEAT, BUTTON_OFF },
- { ACTION_FM_EXIT, BUTTON_OFF | BUTTON_REL, BUTTON_OFF },
- { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
-
-#ifndef HAS_BUTTON_HOLD
- { ACTION_STD_KEYLOCK, BUTTON_MENU|BUTTON_DOWN, BUTTON_NONE },
-#endif
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
-
-};
-#endif
-
-const struct button_mapping* get_context_mapping( int context )
-{
- switch( context )
- {
- case CONTEXT_STD:
- return button_context_standard;
-
- case CONTEXT_WPS:
- return button_context_wps;
-
- case CONTEXT_SETTINGS:
- return button_context_settings;
-
- case CONTEXT_YESNOSCREEN:
- return button_context_yesno;
-
- case CONTEXT_BOOKMARKSCREEN:
- return button_context_bmark;
- case CONTEXT_PITCHSCREEN:
- return button_context_pitchscreen;
- case CONTEXT_TREE:
- case CONTEXT_MAINMENU:
- if (global_settings.hold_lr_for_scroll_in_list)
- return button_context_tree_scroll_lr;
- /* else fall through to CUSTOM|CONTEXT_TREE */
- case CONTEXT_CUSTOM|CONTEXT_TREE:
- return button_context_tree;
-#ifdef HAVE_RECORDING
- case CONTEXT_RECSCREEN:
- return button_context_recscreen;
- case CONTEXT_SETTINGS_RECTRIGGER:
- return button_context_rectrigger;
-#endif
- case CONTEXT_KEYBOARD:
- return button_context_keyboard;
- case CONTEXT_MORSE_INPUT:
- return button_context_morse_input;
-#if CONFIG_TUNER
- case CONTEXT_FM:
- return button_context_radio;
-#endif
- case CONTEXT_LIST:
- default:
- return button_context_standard;
- }
-}
diff --git a/apps/keymaps/keymap-player.c b/apps/keymaps/keymap-player.c
deleted file mode 100644
index bcfb4869df..0000000000
--- a/apps/keymaps/keymap-player.c
+++ /dev/null
@@ -1,165 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 Jonathan Gordon
- *
- * 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.
- *
- ****************************************************************************/
-
-/* *
- * Button Code Definitions for archos player targets
- *
- */
-
-#include "config.h"
-#include "action.h"
-#include "button.h"
-
-static const struct button_mapping button_context_standard[] = {
- { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
-
- { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
- { ACTION_STD_CANCEL, BUTTON_STOP, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
- { ACTION_STD_MENU, BUTTON_MENU, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping button_context_wps[] = {
- { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
- { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
- { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
- { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
- { ACTION_WPS_STOP, BUTTON_STOP, BUTTON_NONE },
-
- { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_LEFT, BUTTON_NONE },
- { ACTION_WPS_VOLDOWN, BUTTON_MENU|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_MENU|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
-
- { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON },
- { ACTION_WPS_MENU, BUTTON_MENU|BUTTON_REL, BUTTON_MENU },
- { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
- { ACTION_STD_KEYLOCK, BUTTON_MENU|BUTTON_STOP, BUTTON_NONE },
- { ACTION_WPS_HOTKEY, BUTTON_MENU|BUTTON_ON, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping button_context_settings[] = {
- { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-
-static const struct button_mapping button_context_tree[] = {
- { ACTION_TREE_WPS, BUTTON_ON, BUTTON_NONE },
- { ACTION_TREE_HOTKEY, BUTTON_MENU|BUTTON_ON, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_listtree */
-
-static const struct button_mapping button_context_yesno[] = {
- { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_settings_yesno */
-
-static const struct button_mapping button_context_bmark[] = {
- { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
- { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_ON, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
-}; /* button_context_settings_bmark */
-
-/*****************************************************************************
- * Remote control mappings
- *****************************************************************************/
-
-static const struct button_mapping remote_button_context_standard[] = {
- { ACTION_STD_PREV, BUTTON_RC_LEFT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_RC_RIGHT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_RC_STOP, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RC_PLAY, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping remote_button_context_wps[] = {
- { ACTION_WPS_PLAY, BUTTON_RC_PLAY, BUTTON_NONE },
- { ACTION_WPS_SKIPNEXT, BUTTON_RC_RIGHT, BUTTON_NONE },
- { ACTION_WPS_SKIPPREV, BUTTON_RC_LEFT, BUTTON_NONE },
- { ACTION_WPS_STOP, BUTTON_RC_STOP, BUTTON_NONE },
-
- { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-
-
-static const struct button_mapping* get_context_mapping_remote( int context )
-{
- context ^= CONTEXT_REMOTE;
-
- switch (context)
- {
- case CONTEXT_WPS:
- return remote_button_context_wps;
-
- default:
- return remote_button_context_standard;
- }
-}
-
-const struct button_mapping* get_context_mapping( int context )
-{
- if (context&CONTEXT_REMOTE)
- return get_context_mapping_remote(context);
-
- switch (context)
- {
- case CONTEXT_WPS:
- return button_context_wps;
-
- case CONTEXT_SETTINGS:
- return button_context_settings;
-
- case CONTEXT_YESNOSCREEN:
- return button_context_yesno;
-
- case CONTEXT_TREE:
- case CONTEXT_MAINMENU:
- return button_context_tree;
- case CONTEXT_BOOKMARKSCREEN:
- return button_context_bmark;
- case CONTEXT_STD:
- case CONTEXT_LIST:
- default:
- return button_context_standard;
- }
-}
diff --git a/apps/keymaps/keymap-recorder.c b/apps/keymaps/keymap-recorder.c
deleted file mode 100644
index da3b5b525e..0000000000
--- a/apps/keymaps/keymap-recorder.c
+++ /dev/null
@@ -1,312 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- * $Id$
- *
- * Copyright (C) 2006 Antoine Cellerier <dionoea @t videolan d.t org>
- *
- * 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.
- *
- ****************************************************************************/
-
-/* *
- * Button Code Definitions for archos recorder target
- *
- * \TODO handle F3
- */
-
-#include "config.h"
-#include "action.h"
-#include "button.h"
-#include "settings.h"
-
-/* CONTEXT_CUSTOM's used in this file...
-
-CONTEXT_CUSTOM|1 = the standard list/tree defines (without directions)
-
-
-*/
-
-static const struct button_mapping button_context_standard[] = {
- { ACTION_STD_PREV, BUTTON_UP, BUTTON_NONE },
- { ACTION_STD_PREVREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_STD_NEXTREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
-
- { ACTION_STD_OK, BUTTON_ON, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_RIGHT },
-
- { ACTION_STD_OK, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
- { ACTION_STD_MENU, BUTTON_F1, BUTTON_NONE },
- { ACTION_STD_QUICKSCREEN, BUTTON_F2, BUTTON_NONE },
- { ACTION_STD_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
- { ACTION_STD_CANCEL, BUTTON_OFF, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_F3, BUTTON_F3, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping button_context_wps[] = {
- { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
- { ACTION_WPS_PLAY, BUTTON_PLAY|BUTTON_REL, BUTTON_PLAY },
- { ACTION_WPS_SKIPNEXT, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_WPS_SKIPPREV, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
- { ACTION_WPS_SEEKBACK, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_SEEKFWD, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_STOPSEEK, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT|BUTTON_REPEAT },
- { ACTION_WPS_STOPSEEK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT|BUTTON_REPEAT },
- { ACTION_WPS_STOP, BUTTON_OFF|BUTTON_REL, BUTTON_OFF },
- { ACTION_WPS_VOLDOWN, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_WPS_VOLDOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_UP, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_MENU, BUTTON_F1|BUTTON_REL, BUTTON_F1 },
- { ACTION_WPS_CONTEXT, BUTTON_PLAY|BUTTON_REPEAT, BUTTON_PLAY },
- { ACTION_WPS_QUICKSCREEN, BUTTON_F2|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_WPS_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 },
- { ACTION_WPS_BROWSE, BUTTON_ON|BUTTON_REL, BUTTON_ON },
- { ACTION_WPS_ID3SCREEN, BUTTON_F1|BUTTON_ON, BUTTON_NONE },
- { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_UP, BUTTON_ON },
- { ACTION_WPS_PITCHSCREEN, BUTTON_ON|BUTTON_DOWN, BUTTON_ON },
- { ACTION_STD_KEYLOCK, BUTTON_F1|BUTTON_DOWN, BUTTON_NONE },
- { ACTION_F3, BUTTON_F3, BUTTON_NONE },
- { ACTION_WPS_ABSETB_NEXTDIR, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_WPS_ABSETA_PREVDIR, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
- { ACTION_WPS_ABRESET, BUTTON_ON|BUTTON_OFF, BUTTON_ON },
-
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping button_context_settings[] = {
- { ACTION_SETTINGS_INC, BUTTON_UP, BUTTON_NONE },
- { ACTION_SETTINGS_INCREPEAT, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_SETTINGS_DEC, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_SETTINGS_DECREPEAT, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_PREV, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_PREVREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_NEXTREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-
-static const struct button_mapping button_context_tree[] = {
- { ACTION_TREE_WPS, BUTTON_ON|BUTTON_REL, BUTTON_ON },
- { ACTION_TREE_STOP, BUTTON_OFF, BUTTON_NONE },
- { ACTION_TREE_HOTKEY, BUTTON_F2|BUTTON_REL, BUTTON_F2 },
- { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
- { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP, BUTTON_NONE },
- { ACTION_LISTTREE_PGUP, BUTTON_ON|BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN, BUTTON_NONE },
- { ACTION_LISTTREE_PGDOWN, BUTTON_ON|BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_listtree */
-
-
-static const struct button_mapping button_context_tree_scroll_lr[] = {
- { ACTION_NONE, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_LEFT|BUTTON_REL, BUTTON_LEFT },
- { ACTION_TREE_ROOT_INIT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_LEFT },
- { ACTION_TREE_PGLEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_NONE, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RIGHT|BUTTON_REL, BUTTON_RIGHT },
- { ACTION_TREE_PGRIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_CUSTOM|1),
-};
-
-static const struct button_mapping button_context_yesno[] = {
- { ACTION_YESNO_ACCEPT, BUTTON_PLAY, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-static const struct button_mapping button_context_quickscreen[] = {
- { ACTION_QS_TOP, BUTTON_UP, BUTTON_NONE },
- { ACTION_QS_TOP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_QS_DOWN, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_QS_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_QS_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_QS_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_QS_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_QS_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_PLAY, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_quickscreen */
-
-static const struct button_mapping button_context_pitchscreen[] = {
- { ACTION_PS_INC_SMALL, BUTTON_UP, BUTTON_NONE },
- { ACTION_PS_INC_BIG, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_PS_DEC_SMALL, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_PS_DEC_BIG, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_PS_NUDGE_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_PS_NUDGE_LEFTOFF, BUTTON_LEFT|BUTTON_REL, BUTTON_NONE },
- { ACTION_PS_NUDGE_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_PS_NUDGE_RIGHTOFF, BUTTON_RIGHT|BUTTON_REL, BUTTON_NONE },
- { ACTION_PS_TOGGLE_MODE, BUTTON_F1, BUTTON_NONE },
- { ACTION_PS_RESET, BUTTON_ON, BUTTON_NONE },
- { ACTION_PS_EXIT, BUTTON_OFF, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_pitchcreen */
-
-static const struct button_mapping button_context_recscreen[] = {
- { ACTION_REC_PAUSE, BUTTON_PLAY, BUTTON_NONE },
- { ACTION_REC_F2, BUTTON_F2, BUTTON_NONE },
- { ACTION_REC_F3, BUTTON_F3, BUTTON_NONE },
- { ACTION_SETTINGS_INC, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_SETTINGS_INCREPEAT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_SETTINGS_DEC, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_SETTINGS_DECREPEAT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-}; /* button_context_recscreen */
-
-static const struct button_mapping button_context_keyboard[] = {
- { ACTION_KBD_LEFT, BUTTON_LEFT, BUTTON_NONE },
- { ACTION_KBD_LEFT, BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_RIGHT, BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_KBD_RIGHT, BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_LEFT, BUTTON_ON|BUTTON_LEFT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT, BUTTON_NONE },
- { ACTION_KBD_CURSOR_RIGHT, BUTTON_ON|BUTTON_RIGHT|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_SELECT, BUTTON_PLAY, BUTTON_NONE },
- { ACTION_KBD_PAGE_FLIP, BUTTON_F1, BUTTON_NONE },
- { ACTION_KBD_DONE, BUTTON_F2, BUTTON_NONE },
- { ACTION_KBD_ABORT, BUTTON_OFF, BUTTON_NONE },
- { ACTION_KBD_BACKSPACE, BUTTON_F3, BUTTON_NONE },
- { ACTION_KBD_BACKSPACE, BUTTON_F3|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_UP, BUTTON_UP, BUTTON_NONE },
- { ACTION_KBD_UP, BUTTON_UP|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_DOWN, BUTTON_DOWN, BUTTON_NONE },
- { ACTION_KBD_DOWN, BUTTON_DOWN|BUTTON_REPEAT, BUTTON_NONE },
- { ACTION_KBD_MORSE_SELECT, BUTTON_PLAY|BUTTON_REL, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-}; /* button_context_keyboard */
-
-static const struct button_mapping button_context_bmark[] = {
- { ACTION_NONE, BUTTON_ON, BUTTON_NONE },
- { ACTION_BMS_DELETE, BUTTON_PLAY|BUTTON_ON, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_LIST),
-
-}; /* button_context_settings_bmark */
-
-static const struct button_mapping button_context_radio[] = {
- { ACTION_FM_MENU, BUTTON_F1, BUTTON_NONE },
- { ACTION_FM_PRESET, BUTTON_F2|BUTTON_REL, BUTTON_F2 },
- { ACTION_FM_RECORD, BUTTON_F3, BUTTON_NONE },
- { ACTION_FM_FREEZE, BUTTON_PLAY, BUTTON_NONE },
- { ACTION_FM_STOP, BUTTON_OFF, BUTTON_NONE },
- { ACTION_FM_MODE, BUTTON_ON | BUTTON_REPEAT, BUTTON_ON },
- { ACTION_FM_EXIT, BUTTON_ON | BUTTON_REL, BUTTON_ON },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_SETTINGS)
-
-};
-
-#if BUTTON_REMOTE != 0
-/*****************************************************************************
- * Remote control mappings
- *****************************************************************************/
-
-static const struct button_mapping remote_button_context_standard[] = {
- { ACTION_STD_PREV, BUTTON_RC_LEFT, BUTTON_NONE },
- { ACTION_STD_NEXT, BUTTON_RC_RIGHT, BUTTON_NONE },
- { ACTION_STD_CANCEL, BUTTON_RC_STOP, BUTTON_NONE },
- { ACTION_STD_OK, BUTTON_RC_PLAY, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST
-};
-
-static const struct button_mapping remote_button_context_wps[] = {
- { ACTION_WPS_PLAY, BUTTON_RC_PLAY, BUTTON_NONE },
- { ACTION_WPS_SKIPNEXT, BUTTON_RC_RIGHT, BUTTON_NONE },
- { ACTION_WPS_SKIPPREV, BUTTON_RC_LEFT, BUTTON_NONE },
- { ACTION_WPS_STOP, BUTTON_RC_STOP, BUTTON_NONE },
-
- { ACTION_WPS_VOLDOWN, BUTTON_RC_VOL_DOWN, BUTTON_NONE },
- { ACTION_WPS_VOLUP, BUTTON_RC_VOL_UP, BUTTON_NONE },
-
- LAST_ITEM_IN_LIST__NEXTLIST(CONTEXT_STD)
-};
-
-
-static const struct button_mapping* get_context_mapping_remote( int context )
-{
- context ^= CONTEXT_REMOTE;
-
- switch (context)
- {
- case CONTEXT_WPS:
- return remote_button_context_wps;
-
- default:
- return remote_button_context_standard;
- }
-}
-#endif /* BUTTON_REMOTE != 0 */
-
-const struct button_mapping* get_context_mapping( int context )
-{
-#if BUTTON_REMOTE != 0
- if (context&CONTEXT_REMOTE)
- return get_context_mapping_remote(context);
-#endif
-
- switch( context )
- {
- case CONTEXT_WPS:
- return button_context_wps;
- case CONTEXT_SETTINGS_TIME:
- case CONTEXT_SETTINGS:
- return button_context_settings;
-
- case CONTEXT_YESNOSCREEN:
- return button_context_yesno;
-
- case CONTEXT_PITCHSCREEN:
- return button_context_pitchscreen;
- case CONTEXT_BOOKMARKSCREEN:
- return button_context_bmark;
- case CONTEXT_TREE:
- case CONTEXT_MAINMENU:
- if (global_settings.hold_lr_for_scroll_in_list)
- return button_context_tree_scroll_lr;
- /* else fall through to CUSTOM|1 */
- case CONTEXT_CUSTOM|1:
- return button_context_tree;
-
- case CONTEXT_QUICKSCREEN:
- return button_context_quickscreen;
-
- case CONTEXT_RECSCREEN:
- case CONTEXT_SETTINGS_RECTRIGGER:
- return button_context_recscreen;
- case CONTEXT_KEYBOARD:
- case CONTEXT_MORSE_INPUT:
- return button_context_keyboard;
- case CONTEXT_FM:
- return button_context_radio;
-
- case CONTEXT_STD:
- case CONTEXT_LIST:
- default:
- return button_context_standard;
- }
-}
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index bc27a9fb4c..11770606a1 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -52,13 +52,6 @@
# The target names used are picked from the configure script and are set in the
# MODELNAME variable in the root makefile. Currently, they are:
# Target Target string
-# Archos
-# Player/Studio archosplayer
-# Recorder archosrecorder
-# FM Recorder archosfmrecorder
-# Recorder V2 archosrecorderv2
-# Ondio SP archosondiosp
-# Ondio FM archosondiofm
# iriver
# H100/H110/H115 iriverh100
# H120/H140 iriverh120
@@ -333,7 +326,6 @@
iriverh100,iriverh120,iriverh300: "NAVI = Yes"
ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*,sansaconnect: "SELECT = Yes"
mrobe500: "PLAY, POWER, or top-right = Yes"
- archosplayer: "(PLAY/STOP)"
vibe500: "OK = Yes"
creativezen*: "Select = Yes"
</source>
@@ -343,7 +335,6 @@
iriverh100,iriverh120,iriverh300: "NAVI = Yes"
ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*,sansaconnect: "SELECT = Yes"
mrobe500: "PLAY, POWER, or top-right = Yes"
- archosplayer: "(PLAY/STOP)"
vibe500: "OK = Yes"
creativezen*: "Select = Yes"
</dest>
@@ -357,15 +348,12 @@
user: core
<source>
*: "Any Other = No"
- archosplayer: none
</source>
<dest>
*: "Any Other = No"
- archosplayer: none
</dest>
<voice>
*: ""
- archosplayer: none
</voice>
</phrase>
<phrase>
@@ -1273,159 +1261,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_LOUDNESS
- desc: in sound_settings
- user: core
- <source>
- *: none
- masf: "Loudness"
- </source>
- <dest>
- *: none
- masf: "Loudness"
- </dest>
- <voice>
- *: none
- masf: "Loudness"
- </voice>
-</phrase>
-<phrase>
- id: LANG_AUTOVOL
- desc: in sound_settings
- user: core
- <source>
- *: none
- masf: "Auto Volume"
- </source>
- <dest>
- *: none
- masf: "Auto Volume"
- </dest>
- <voice>
- *: none
- masf: "Auto Volume"
- </voice>
-</phrase>
-<phrase>
- id: LANG_DECAY
- desc: in sound_settings
- user: core
- <source>
- *: none
- masf: "AV Decay Time"
- </source>
- <dest>
- *: none
- masf: "AV Decay Time"
- </dest>
- <voice>
- *: none
- masf: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_SUPERBASS
- desc: in sound settings
- user: core
- <source>
- *: none
- masf: "Super Bass"
- </source>
- <dest>
- *: none
- masf: "Super Bass"
- </dest>
- <voice>
- *: none
- masf: "Super Bass"
- </voice>
-</phrase>
-<phrase>
- id: LANG_MDB_ENABLE
- desc: in sound settings
- user: core
- <source>
- *: none
- masf: "MDB Enable"
- </source>
- <dest>
- *: none
- masf: "MDB Enable"
- </dest>
- <voice>
- *: none
- masf: "MDB Enable"
- </voice>
-</phrase>
-<phrase>
- id: LANG_MDB_STRENGTH
- desc: in sound settings
- user: core
- <source>
- *: none
- masf: "MDB Strength"
- </source>
- <dest>
- *: none
- masf: "MDB Strength"
- </dest>
- <voice>
- *: none
- masf: "MDB Strength"
- </voice>
-</phrase>
-<phrase>
- id: LANG_MDB_HARMONICS
- desc: in sound settings
- user: core
- <source>
- *: none
- masf: "MDB Harmonics"
- </source>
- <dest>
- *: none
- masf: "MDB Harmonics"
- </dest>
- <voice>
- *: none
- masf: "MDB Harmonics"
- </voice>
-</phrase>
-<phrase>
- id: LANG_MDB_CENTER
- desc: in sound settings
- user: core
- <source>
- *: none
- masf: "MDB Centre Frequency"
- </source>
- <dest>
- *: none
- masf: "MDB Centre Frequency"
- </dest>
- <voice>
- *: none
- masf: "MDB Centre Frequency"
- </voice>
-</phrase>
-<phrase>
- id: LANG_MDB_SHAPE
- desc: in sound settings
- user: core
- <source>
- *: none
- masf: "MDB Shape"
- </source>
- <dest>
- *: none
- masf: "MDB Shape"
- </dest>
- <voice>
- *: none
- masf: "MDB Shape"
- </voice>
-</phrase>
-<phrase>
id: LANG_GENERAL_SETTINGS
desc: in the main menu
user: core
@@ -2322,7 +2157,6 @@
iaudiox5,iaudiom5,gigabeat*,mrobe100,samsungyh*: "Building database... %d found (LEFT to return)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)"
gogearsa9200: "Building database... %d found (REW to return)"
- archosplayer: "Building DB %d found"
</source>
<dest>
*: "Building database... %d found (OFF to return)"
@@ -2331,7 +2165,6 @@
iaudiox5,iaudiom5,gigabeat*,mrobe100,samsungyh*: "Building database... %d found (LEFT to return)"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)"
gogearsa9200: "Building database... %d found (REW to return)"
- archosplayer: "Building DB %d found"
</dest>
<voice>
*: "entries found for database"
@@ -3263,23 +3096,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_BUTTON_BAR
- desc: in settings menu
- user: core
- <source>
- *: none
- recorder_pad: "Button Bar"
- </source>
- <dest>
- *: none
- recorder_pad: "Button Bar"
- </dest>
- <voice>
- *: none
- recorder_pad: "Button Bar"
- </voice>
-</phrase>
-<phrase>
id: LANG_VOLUME_DISPLAY
desc: Volume type title
user: core
@@ -3353,15 +3169,12 @@
user: core
<source>
*: "Peak Meter"
- masd: none
</source>
<dest>
*: "Peak Meter"
- masd: none
</dest>
<voice>
*: "Peak Meter"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3370,15 +3183,12 @@
user: core
<source>
*: "Clip Hold Time"
- masd: none
</source>
<dest>
*: "Clip Hold Time"
- masd: none
</dest>
<voice>
*: "Clip Hold Time"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3387,15 +3197,12 @@
user: core
<source>
*: "Peak Hold Time"
- masd: none
</source>
<dest>
*: "Peak Hold Time"
- masd: none
</dest>
<voice>
*: "Peak Hold Time"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3404,15 +3211,12 @@
user: core
<source>
*: "Eternal"
- masd: none
</source>
<dest>
*: "Eternal"
- masd: none
</dest>
<voice>
*: "Eternal"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3421,15 +3225,12 @@
user: core
<source>
*: "Peak Release"
- masd: none
</source>
<dest>
*: "Peak Release"
- masd: none
</dest>
<voice>
*: "Peak Release"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3438,15 +3239,12 @@
user: core
<source>
*: "Scale"
- masd: none
</source>
<dest>
*: "Scale"
- masd: none
</dest>
<voice>
*: "Scale"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3455,15 +3253,12 @@
user: core
<source>
*: "Logarithmic (dB)"
- masd: none
</source>
<dest>
*: "Logarithmic (dB)"
- masd: none
</dest>
<voice>
*: "Logarithmic decibel"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3472,15 +3267,12 @@
user: core
<source>
*: "Linear (%)"
- masd: none
</source>
<dest>
*: "Linear (%)"
- masd: none
</dest>
<voice>
*: "Linear percent"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3489,15 +3281,12 @@
user: core
<source>
*: "Minimum Of Range"
- masd: none
</source>
<dest>
*: "Minimum Of Range"
- masd: none
</dest>
<voice>
*: "Minimum Of Range"
- masd: none
</voice>
</phrase>
<phrase>
@@ -3506,15 +3295,12 @@
user: core
<source>
*: "Maximum Of Range"
- masd: none
</source>
<dest>
*: "Maximum Of Range"
- masd: none
</dest>
<voice>
*: "Maximum Of Range"
- masd: none
</voice>
</phrase>
<phrase>
@@ -5123,57 +4909,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_BUTTONBAR_MENU
- desc: in button bar
- user: core
- <source>
- *: none
- radio_screen_button_bar: "Menu"
- </source>
- <dest>
- *: none
- radio_screen_button_bar: "Menu"
- </dest>
- <voice>
- *: none
- radio_screen_button_bar: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_FM_BUTTONBAR_EXIT
- desc: in radio screen
- user: core
- <source>
- *: none
- radio_screen_button_bar: "Exit"
- </source>
- <dest>
- *: none
- radio_screen_button_bar: "Exit"
- </dest>
- <voice>
- *: none
- radio_screen_button_bar: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_FM_BUTTONBAR_ACTION
- desc: in radio screen
- user: core
- <source>
- *: none
- radio_screen_button_bar: "Action"
- </source>
- <dest>
- *: none
- radio_screen_button_bar: "Action"
- </dest>
- <voice>
- *: none
- radio_screen_button_bar: ""
- </voice>
-</phrase>
-<phrase>
id: LANG_PRESET
desc: in button bar and radio screen / menu
user: core
@@ -5191,40 +4926,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_FM_BUTTONBAR_ADD
- desc: in radio screen
- user: core
- <source>
- *: none
- radio_screen_button_bar: "Add"
- </source>
- <dest>
- *: none
- radio_screen_button_bar: "Add"
- </dest>
- <voice>
- *: none
- radio_screen_button_bar: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_FM_BUTTONBAR_RECORD
- desc: in radio screen
- user: core
- <source>
- *: none
- radio_screen_button_bar: "Record"
- </source>
- <dest>
- *: none
- radio_screen_button_bar: "Record"
- </dest>
- <voice>
- *: none
- radio_screen_button_bar: ""
- </voice>
-</phrase>
-<phrase>
id: LANG_FM_MONO_MODE
desc: in radio screen
user: core
@@ -5777,15 +5478,15 @@
user: core
<source>
*: none
- recording,archosplayer: "Line In"
+ recording: "Line In"
</source>
<dest>
*: none
- recording,archosplayer: "Line In"
+ recording: "Line In"
</dest>
<voice>
*: none
- recording,archosplayer: "Line In"
+ recording: "Line In"
</voice>
</phrase>
<phrase>
@@ -6577,23 +6278,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_SHUTDOWN
- desc: in main menu
- user: core
- <source>
- *: none
- soft_shutdown: "Shut down"
- </source>
- <dest>
- *: none
- soft_shutdown: "Shut down"
- </dest>
- <voice>
- *: none
- soft_shutdown: "Shut down"
- </voice>
-</phrase>
-<phrase>
id: LANG_ROCKBOX_INFO
desc: displayed topmost on the info screen and in the info menu
user: core
@@ -6613,11 +6297,9 @@
user: core
<source>
*: "Buffer:"
- archosplayer: "Buf:"
</source>
<dest>
*: "Buffer:"
- archosplayer: "Buf:"
</dest>
<voice>
*: "Buffer size"
@@ -6629,12 +6311,12 @@
user: core
<source>
*: "Battery: %d%% %dh %dm"
- archosplayer,archosrecorder,archosfmrecorder,archosrecorderv2,archosondio*,iriverifp7xx: "%d%% %dh %dm"
+ iriverifp7xx: "%d%% %dh %dm"
iriverh10,ipodmini1g,ipodmini2g: "Batt: %d%% %dh %dm"
</source>
<dest>
*: "Battery: %d%% %dh %dm"
- archosplayer,archosrecorder,archosfmrecorder,archosrecorderv2,archosondio*,iriverifp7xx: "%d%% %dh %dm"
+ iriverifp7xx: "%d%% %dh %dm"
iriverh10,ipodmini1g,ipodmini2g: "Batt: %d%% %dh %dm"
</dest>
<voice>
@@ -6688,28 +6370,25 @@
</phrase>
<phrase>
id: LANG_DISK_NAME_MMC
- desc: in info menu; name for external disk with multivolume (Ondio; keep short!)
+ desc: in info menu; name for external disk with multivolume (keep short!)
user: core
<source>
*: none
multivolume: "HD1"
sansae200*,sansac200*,sansafuze*,sansaclipplus: "mSD:"
xduoox3: "mSD2:"
- archosondio*: "MMC:"
</source>
<dest>
*: none
multivolume: "HD1"
sansae200*,sansac200*,sansafuze*,sansaclipplus: "MSD:"
xduoox3: "mSD2:"
- archosondio*: "MMC:"
</dest>
<voice>
*: none
multivolume: "H D 1"
sansae200*,sansac200*,sansafuze*,sansaclipplus: "micro S D"
xduoox3: "micro S D 2"
- archosondio*: "M M C"
</voice>
</phrase>
<phrase>
@@ -7806,11 +7485,9 @@
user: core
<source>
*: "End of Song List"
- archosplayer: "End of List"
</source>
<dest>
*: "End of Song List"
- archosplayer: "End of List"
</dest>
<voice>
*: "End of Song List"
@@ -8063,40 +7740,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_CONFIRM_SHUTDOWN
- desc: in shutdown screen
- user: core
- <source>
- *: none
- soft_shutdown: "Press OFF to shut down"
- </source>
- <dest>
- *: none
- soft_shutdown: "Press OFF to shut down"
- </dest>
- <voice>
- *: none
- soft_shutdown: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_REMOVE_MMC
- desc: before acknowledging usb in case an MMC is inserted (Ondio)
- user: core
- <source>
- *: none
- archosondio*: "Please remove inserted MMC"
- </source>
- <dest>
- *: none
- archosondio*: "Please remove inserted MMC"
- </dest>
- <voice>
- *: none
- archosondio*: "Please remove multimedia card"
- </voice>
-</phrase>
-<phrase>
id: LANG_BOOT_CHANGED
desc: File browser discovered the boot file was changed
user: core
@@ -8126,11 +7769,11 @@
</phrase>
<phrase>
id: LANG_OFF_ABORT
- desc: Used on archosrecorder models
+ desc: Used on many models
user: core
<source>
*: "OFF to abort"
- archosplayer,iriverh100,iriverh120,iriverh300: "STOP to abort"
+ iriverh100,iriverh120,iriverh300: "STOP to abort"
ipod*: "PLAY/PAUSE to abort"
iaudiox5,iaudiom5: "Long PLAY to abort"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,vibe500: "PREV to abort"
@@ -8140,7 +7783,7 @@
</source>
<dest>
*: "OFF to abort"
- archosplayer,iriverh100,iriverh120,iriverh300: "STOP to abort"
+ iriverh100,iriverh120,iriverh300: "STOP to abort"
ipod*: "PLAY/PAUSE to abort"
iaudiox5,iaudiom5: "Long PLAY to abort"
iriverh10,iriverh10_5gb,sansae200*,sansac200*,vibe500: "PREV to abort"
@@ -8210,7 +7853,7 @@
</phrase>
<phrase>
id: LANG_PLUGIN_WRONG_MODEL
- desc: The plugin is not compatible with the archos model trying to run it
+ desc: The plugin is not compatible with the player model trying to run it
user: core
<source>
*: "Incompatible model"
@@ -8324,23 +7967,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_BATTERY_TOPOFF_CHARGE
- desc: in info display, shows that top off charge is running Only for V1 archosrecorder
- user: core
- <source>
- *: none
- archosrecorder: "Battery: Top-Off Chg"
- </source>
- <dest>
- *: none
- archosrecorder: "Battery: Top-Off Chg"
- </dest>
- <voice>
- *: none
- archosrecorder: "Top off charge"
- </voice>
-</phrase>
-<phrase>
id: LANG_BATTERY_TRICKLE_CHARGE
desc: in info display, shows that trickle charge is running
user: core
@@ -9804,57 +9430,6 @@
</voice>
</phrase>
<phrase>
- id: LANG_SYSFONT_DIRBROWSE_F1
- desc: in dir browser, F1 button bar text
- user: core
- <source>
- *: none
- recorder_pad: "Menu"
- </source>
- <dest>
- *: none
- recorder_pad: "Menu"
- </dest>
- <voice>
- *: none
- recorder_pad: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_SYSFONT_DIRBROWSE_F2
- desc: in dir browser, F2 button bar text
- user: core
- <source>
- *: none
- recorder_pad: "Option"
- </source>
- <dest>
- *: none
- recorder_pad: "Option"
- </dest>
- <voice>
- *: none
- recorder_pad: ""
- </voice>
-</phrase>
-<phrase>
- id: LANG_SYSFONT_DIRBROWSE_F3
- desc: in dir browser, F3 button bar text
- user: core
- <source>
- *: none
- recorder_pad: "LCD"
- </source>
- <dest>
- *: none
- recorder_pad: "LCD"
- </dest>
- <voice>
- *: none
- recorder_pad: ""
- </voice>
-</phrase>
-<phrase>
id: LANG_SYSFONT_CHANNEL_STEREO
desc: in sound_settings
user: core
@@ -16531,4 +16106,4 @@ id: VOICE_BAT_BENCH_KEYS
*: none
lcd_bitmap: "Show album and artist at the bottom"
</voice>
-</phrase> \ No newline at end of file
+</phrase>
diff --git a/apps/main.c b/apps/main.c
index 208dced923..fe15675c69 100644
--- a/apps/main.c
+++ b/apps/main.c
@@ -418,10 +418,6 @@ static void init(void)
{
int rc;
bool mounted = false;
-#if CONFIG_CHARGING && (CONFIG_CPU == SH7034)
- /* if nobody initialized ATA before, I consider this a cold start */
- bool coldstart = (PACR2 & 0x4000) != 0; /* starting from Flash */
-#endif
system_init();
core_allocator_init();
@@ -528,24 +524,6 @@ static void init(void)
viewportmanager_init();
CHART("<viewportmanager_init");
-#if CONFIG_CHARGING && (CONFIG_CPU == SH7034)
- /* charger_inserted() can't be used here because power_thread()
- hasn't checked power_input_status() yet */
- if (coldstart && (power_input_status() & POWER_INPUT_MAIN_CHARGER)
- && !global_settings.car_adapter_mode
-#ifdef ATA_POWER_PLAYERSTYLE
- && !ide_powered() /* relies on probing result from bootloader */
-#endif
- )
- {
- rc = charging_screen(); /* display a "charging" screen */
- if (rc == 1) /* charger removed */
- power_off();
- /* "On" pressed or USB connected: proceed */
- show_logo(); /* again, to provide better visual feedback */
- }
-#endif
-
CHART(">storage_init");
rc = storage_init();
CHART("<storage_init");
diff --git a/apps/menu.c b/apps/menu.c
index c1af044374..97af181267 100644
--- a/apps/menu.c
+++ b/apps/menu.c
@@ -60,7 +60,6 @@
/* gui api */
#include "list.h"
-#include "buttonbar.h"
#define MAX_MENUS 8
/* used to allow for dynamic menus */
@@ -376,12 +375,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
int stack_top = 0;
bool in_stringlist, done = false;
struct viewport *vps = NULL;
-#ifdef HAVE_BUTTONBAR
- struct gui_buttonbar buttonbar;
- gui_buttonbar_init(&buttonbar);
- gui_buttonbar_set_display(&buttonbar, &(screens[SCREEN_MAIN]) );
- gui_buttonbar_set(&buttonbar, "<<<", "", "");
-#endif
menu_callback_type menu_callback = NULL;
/* if hide_theme is true, assume parent has been fixed before passed into
@@ -394,23 +387,10 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
gui_synclist_draw(&lists);
gui_synclist_speak_item(&lists);
-#ifdef HAVE_BUTTONBAR
- if (!hide_theme)
- {
- gui_buttonbar_set(&buttonbar, "<<<", "", "");
- gui_buttonbar_draw(&buttonbar);
- }
-#endif
while (!done)
{
int new_audio_status;
redraw_lists = false;
- if (!hide_theme)
- {
-#ifdef HAVE_BUTTONBAR
- gui_buttonbar_draw(&buttonbar);
-#endif
- }
#if CONFIG_CODEC == SWCODEC
keyclick_set_callback(gui_synclist_keyclick_callback, &lists);
#endif
@@ -590,13 +570,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
int type = (menu->flags&MENU_TYPE_MASK);
/* entering an item that may not be a list, so stop scrolling */
gui_synclist_scroll_stop(&lists);
-#ifdef HAVE_BUTTONBAR
- if (!hide_theme)
- {
- gui_buttonbar_unset(&buttonbar);
- gui_buttonbar_draw(&buttonbar);
- }
-#endif
selected = get_menu_selection(gui_synclist_get_sel_pos(&lists), menu);
if (type == MT_MENU)
temp = menu->submenus[selected];
@@ -700,13 +673,6 @@ int do_menu(const struct menu_item_ex *start_menu, int *start_selected,
done = true;
break;
}
-#ifdef HAVE_BUTTONBAR
- if (!hide_theme)
- {
- gui_buttonbar_set(&buttonbar, "<<<", "", "");
- gui_buttonbar_draw(&buttonbar);
- }
-#endif
}
else
{
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index ee60b37497..7f94571226 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -264,21 +264,10 @@ static const char* info_getname(int selected_item, void *data,
return str(LANG_BATTERY_CHARGE);
else
#elif CONFIG_CHARGING >= CHARGING_MONITOR
-#ifdef ARCHOS_RECORDER
- /* Report the particular algorithm state */
- if (charge_state == CHARGING)
- return str(LANG_BATTERY_CHARGE);
- else if (charge_state == TOPOFF)
- return str(LANG_BATTERY_TOPOFF_CHARGE);
- else if (charge_state == TRICKLE)
- return str(LANG_BATTERY_TRICKLE_CHARGE);
- else
-#else /* !ARCHOS_RECORDER */
/* Go by what power management reports */
if (charging_state())
return str(LANG_BATTERY_CHARGE);
else
-#endif /* ARCHOS_RECORDER */
#endif /* CONFIG_CHARGING = */
if (battery_level() >= 0)
snprintf(buffer, buffer_len, str(LANG_BATTERY_TIME),
@@ -394,24 +383,6 @@ static int info_speak_item(int selected_item, void * data)
}
else
#elif CONFIG_CHARGING >= CHARGING_MONITOR
-#ifdef ARCHOS_RECORDER
- /* Report the particular algorithm state */
- if (charge_state == CHARGING)
- {
- talk_id(LANG_BATTERY_CHARGE, true);
- if (battery_level() >= 0)
- talk_value(battery_level(), UNIT_PERCENT, true);
- }
- else if (charge_state == TOPOFF)
- talk_id(LANG_BATTERY_TOPOFF_CHARGE, true);
- else if (charge_state == TRICKLE)
- {
- talk_id(LANG_BATTERY_TRICKLE_CHARGE, true);
- if (battery_level() >= 0)
- talk_value(battery_level(), UNIT_PERCENT, true);
- }
- else
-#else /* !ARCHOS_RECORDER */
/* Go by what power management reports */
if (charging_state())
{
@@ -420,7 +391,6 @@ static int info_speak_item(int selected_item, void * data)
talk_value(battery_level(), UNIT_PERCENT, true);
}
else
-#endif /* ARCHOS_RECORDER */
#endif /* CONFIG_CHARGING = */
if (battery_level() >= 0)
{
diff --git a/apps/menus/recording_menu.c b/apps/menus/recording_menu.c
index 21c6cff5fb..0f24420a63 100644
--- a/apps/menus/recording_menu.c
+++ b/apps/menus/recording_menu.c
@@ -117,20 +117,6 @@ static void make_options_from_indexes(const struct opt_items *src_names,
static int recfrequency_func(void)
{
-#if CONFIG_CODEC == MAS3587F
- static const struct opt_items names[6] = {
- { "44.1kHz", TALK_ID(44, UNIT_KHZ) },
- { "48kHz", TALK_ID(48, UNIT_KHZ) },
- { "32kHz", TALK_ID(32, UNIT_KHZ) },
- { "22.05kHz", TALK_ID(22, UNIT_KHZ) },
- { "24kHz", TALK_ID(24, UNIT_KHZ) },
- { "16kHz", TALK_ID(16, UNIT_KHZ) }
- };
- return set_option(str(LANG_FREQUENCY),
- &global_settings.rec_frequency, INT,
- names, 6, NULL );
-#endif /* CONFIG_CODEC == MAS3587F */
-
#if CONFIG_CODEC == SWCODEC
static const struct opt_items names[REC_NUM_FREQ] = {
REC_HAVE_96_([REC_FREQ_96] = { "96kHz", TALK_ID(96, UNIT_KHZ) },)
@@ -221,11 +207,6 @@ static int recchannels_func(void)
[CHN_MODE_STEREO] = { STR(LANG_CHANNEL_STEREO) },
[CHN_MODE_MONO] = { STR(LANG_CHANNEL_MONO) }
};
-#if CONFIG_CODEC == MAS3587F
- return set_option(str(LANG_CHANNELS),
- &global_settings.rec_channels, INT,
- names, CHN_NUM_MODES, NULL );
-#endif /* CONFIG_CODEC == MAS3587F */
#if CONFIG_CODEC == SWCODEC
struct opt_items opts[CHN_NUM_MODES];
@@ -329,10 +310,6 @@ static int recmenu_callback(int action,
}
return action;
}
-#if CONFIG_CODEC == MAS3587F
-MENUITEM_SETTING(rec_quality, &global_settings.rec_quality, NULL);
-MENUITEM_SETTING(rec_editable, &global_settings.rec_editable, NULL);
-#endif
MENUITEM_SETTING(rec_split_type, &global_settings.rec_split_type, NULL);
MENUITEM_SETTING(rec_split_method, &global_settings.rec_split_method, NULL);
@@ -626,9 +603,6 @@ MENUITEM_FUNCTION(save_recpresets_item, 0, ID2P(LANG_SAVE_SETTINGS),
MAKE_MENU(recording_settings_menu, ID2P(LANG_RECORDING_SETTINGS),
NULL, Icon_Recording,
-#if CONFIG_CODEC == MAS3587F
- &rec_quality,
-#endif
#if CONFIG_CODEC == SWCODEC
&recformat, &enc_global_config_menu_item,
#endif
@@ -637,9 +611,6 @@ MAKE_MENU(recording_settings_menu, ID2P(LANG_RECORDING_SETTINGS),
#if CONFIG_CODEC == SWCODEC
&recmonomode,
#endif
-#if CONFIG_CODEC == MAS3587F
- &rec_editable,
-#endif
&filesplitoptionsmenu,
&rec_prerecord_time,
&clear_rec_directory_item,
diff --git a/apps/menus/settings_menu.c b/apps/menus/settings_menu.c
index 2a08ab0a4e..2957b0635c 100644
--- a/apps/menus/settings_menu.c
+++ b/apps/menus/settings_menu.c
@@ -339,27 +339,6 @@ MAKE_MENU(keyclick_menu, ID2P(LANG_KEYCLICK), 0, Icon_NOICON,
#endif
#endif
-
-#if CONFIG_CODEC == MAS3507D
-void dac_line_in(bool enable);
-static int linein_callback(int action,
- const struct menu_item_ex *this_item,
- struct gui_synclist *this_list)
-{
- (void)this_item;
- (void)this_list;
- switch (action)
- {
- case ACTION_EXIT_MENUITEM: /* on exit */
-#ifndef SIMULATOR
- dac_line_in(global_settings.line_in);
-#endif
- break;
- }
- return action;
-}
-MENUITEM_SETTING(line_in, &global_settings.line_in, linein_callback);
-#endif
#if CONFIG_CHARGING
MENUITEM_SETTING(car_adapter_mode, &global_settings.car_adapter_mode, NULL);
MENUITEM_SETTING(car_adapter_mode_delay, &global_settings.car_adapter_mode_delay, NULL);
@@ -440,9 +419,6 @@ MAKE_MENU(system_menu, ID2P(LANG_SYSTEM),
#ifdef HAVE_MORSE_INPUT
&morse_input,
#endif
-#if CONFIG_CODEC == MAS3507D
- &line_in,
-#endif
#if CONFIG_CHARGING
&car_adapter_mode_menu,
#endif
diff --git a/apps/menus/sound_menu.c b/apps/menus/sound_menu.c
index f39d980a35..ee966ac62a 100644
--- a/apps/menus/sound_menu.c
+++ b/apps/menus/sound_menu.c
@@ -218,17 +218,6 @@ static int timestretch_callback(int action,
&compressor_knee, &compressor_attack, &compressor_release);
#endif
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- MENUITEM_SETTING(loudness, &global_settings.loudness, NULL);
- MENUITEM_SETTING(avc, &global_settings.avc, NULL);
- MENUITEM_SETTING(superbass, &global_settings.superbass, NULL);
- MENUITEM_SETTING(mdb_enable, &global_settings.mdb_enable, NULL);
- MENUITEM_SETTING(mdb_strength, &global_settings.mdb_strength, NULL);
- MENUITEM_SETTING(mdb_harmonics, &global_settings.mdb_harmonics, NULL);
- MENUITEM_SETTING(mdb_center, &global_settings.mdb_center, NULL);
- MENUITEM_SETTING(mdb_shape, &global_settings.mdb_shape, NULL);
-#endif
-
#ifdef HAVE_SPEAKER
MENUITEM_SETTING(speaker_mode, &global_settings.speaker_mode, NULL);
#endif
@@ -272,10 +261,6 @@ MAKE_MENU(sound_settings, ID2P(LANG_SOUND_SETTINGS), NULL, Icon_Audio,
#endif
,&compressor_menu
#endif
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- ,&loudness,&avc,&superbass,&mdb_enable,&mdb_strength
- ,&mdb_harmonics,&mdb_center,&mdb_shape
-#endif
#ifdef HAVE_SPEAKER
,&speaker_mode
#endif
diff --git a/apps/menus/theme_menu.c b/apps/menus/theme_menu.c
index 10d1291daa..138a2f928a 100644
--- a/apps/menus/theme_menu.c
+++ b/apps/menus/theme_menu.c
@@ -198,22 +198,6 @@ static int statusbar_callback(int action,
return statusbar_callback_ex(action, this_item, SCREEN_MAIN);
}
-#ifdef HAVE_BUTTONBAR
-static int buttonbar_callback(int action,
- const struct menu_item_ex *this_item,
- struct gui_synclist *this_list)
-{
- (void)this_item;
- (void)this_list;
- switch (action)
- {
- case ACTION_EXIT_MENUITEM:
- viewportmanager_theme_changed(THEME_BUTTONBAR);
- break;
- }
- return ACTION_REDRAW;
-}
-#endif
MENUITEM_SETTING(scrollbar_item, &global_settings.scrollbar, NULL);
MENUITEM_SETTING(scrollbar_width, &global_settings.scrollbar_width, NULL);
MENUITEM_SETTING(statusbar, &global_settings.statusbar,
@@ -222,9 +206,6 @@ MENUITEM_SETTING(statusbar, &global_settings.statusbar,
MENUITEM_SETTING(remote_statusbar, &global_settings.remote_statusbar,
statusbar_callback_remote);
#endif
-#ifdef HAVE_BUTTONBAR
-MENUITEM_SETTING(buttonbar, &global_settings.buttonbar, buttonbar_callback);
-#endif
MENUITEM_SETTING(volume_type, &global_settings.volume_type, NULL);
MENUITEM_SETTING(battery_display, &global_settings.battery_display, NULL);
MAKE_MENU(bars_menu, ID2P(LANG_BARS_MENU), 0, Icon_NOICON,
@@ -232,9 +213,6 @@ MAKE_MENU(bars_menu, ID2P(LANG_BARS_MENU), 0, Icon_NOICON,
#ifdef HAVE_REMOTE_LCD
&remote_statusbar,
#endif
-#if CONFIG_KEYPAD == RECORDER_PAD
- &buttonbar,
-#endif
&volume_type
#if (CONFIG_BATTERY_MEASURE != 0)
, &battery_display
diff --git a/apps/menus/time_menu.c b/apps/menus/time_menu.c
index 811996ca40..6ebf005ffd 100644
--- a/apps/menus/time_menu.c
+++ b/apps/menus/time_menu.c
@@ -264,12 +264,6 @@ int time_screen(void* ignored)
FOR_NB_SCREENS(i)
{
viewport_set_defaults(&clock_vps[i], i);
-#ifdef HAVE_BUTTONBAR
- if (global_settings.buttonbar)
- {
- clock_vps[i].height -= BUTTONBAR_HEIGHT;
- }
-#endif
nb_lines = viewport_get_nb_lines(&clock_vps[i]);
gui_synclist_set_viewport_defaults(&menu[i], i);
diff --git a/apps/misc.c b/apps/misc.c
index 9a9e428268..2e3292dba5 100644
--- a/apps/misc.c
+++ b/apps/misc.c
@@ -436,17 +436,6 @@ bool list_stop_handler(void)
}
}
#if CONFIG_CHARGING
-#if (CONFIG_KEYPAD == RECORDER_PAD) && !defined(HAVE_SW_POWEROFF)
- else
- {
- if (charger_inserted())
- charging_splash();
- else
- shutdown_screen(); /* won't return if shutdown actually happens */
-
- ret = true; /* screen is dirty, caller needs to refresh */
- }
-#endif
#ifndef HAVE_POWEROFF_WHILE_CHARGING
{
static long last_off = 0;
@@ -595,10 +584,6 @@ long default_event_handler_ex(long event, void (*callback)(void *), void *parame
case SYS_USB_CONNECTED:
if (callback != NULL)
callback(parameter);
-#if (CONFIG_STORAGE & STORAGE_MMC) && (defined(ARCHOS_ONDIOSP) || defined(ARCHOS_ONDIOFM))
- if (!mmc_touched() ||
- (mmc_remove_request() == SYS_HOTSWAP_EXTRACTED))
-#endif
{
system_flush();
#ifdef BOOTFILE
diff --git a/apps/mpeg.c b/apps/mpeg.c
index d3e0e5c137..e04c227cb1 100644
--- a/apps/mpeg.c
+++ b/apps/mpeg.c
@@ -46,7 +46,6 @@
#include "settings.h"
#ifndef SIMULATOR
#include "i2c.h"
-#include "mas35xx.h"
#include "system.h"
#include "usb.h"
#include "file.h"
@@ -81,14 +80,6 @@
extern unsigned long mas_version_code;
#endif
-#if CONFIG_CODEC == MAS3587F
-extern enum /* from mp3_playback.c */
-{
- MPEG_DECODER,
- MPEG_ENCODER
-} mpeg_mode;
-#endif /* CONFIG_CODEC == MAS3587F */
-
#define MPEG_PLAY 1
#define MPEG_STOP 2
#define MPEG_PAUSE 3
@@ -184,61 +175,6 @@ struct audio_resume_info
unsigned long offset;
};
-#if CONFIG_CODEC == MAS3587F
-static char recording_filename[MAX_PATH]; /* argument to thread */
-static char delayed_filename[MAX_PATH]; /* internal copy of above */
-
-static char xing_buffer[MAX_XING_HEADER_SIZE];
-
-static bool init_recording_done;
-static bool init_playback_done;
-static bool prerecording; /* True if prerecording is enabled */
-static bool is_prerecording; /* True if we are prerecording */
-static bool is_recording; /* We are recording */
-
-static enum {
- NOT_SAVING = 0, /* reasons to save data, sorted by importance */
- BUFFER_FULL,
- NEW_FILE,
- STOP_RECORDING
-} saving_status;
-
-static int rec_frequency_index; /* For create_xing_header() calls */
-static int rec_version_index; /* For create_xing_header() calls */
-
-struct prerecord_info {
- int mempos;
- unsigned long framecount;
-};
-
-static struct prerecord_info prerecord_buffer[MPEG_MAX_PRERECORD_SECONDS];
-static int prerecord_index; /* Current index in the prerecord buffer */
-static int prerecording_max_seconds; /* Max number of seconds to store */
-static int prerecord_count; /* Number of seconds in the prerecord buffer */
-static int prerecord_timeout; /* The tick count of the next prerecord data
- store */
-
-static unsigned long record_start_time; /* Value of current_tick when recording
- was started */
-static unsigned long pause_start_time; /* Value of current_tick when pause was
- started */
-static unsigned long last_rec_time;
-static unsigned long num_rec_bytes;
-static unsigned long last_rec_bytes;
-static unsigned long frame_count_start;
-static unsigned long frame_count_end;
-static unsigned long saved_header = 0;
-
-/* Shadow MAS registers */
-unsigned long shadow_encoder_control = 0;
-#endif /* CONFIG_CODEC == MAS3587F */
-
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
-unsigned long shadow_io_control_main = 0;
-unsigned long shadow_soft_mute = 0;
-unsigned shadow_codec_reg0;
-#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
-
#ifdef HAVE_RECORDING
static const unsigned char empty_id3_header[] =
{
@@ -253,18 +189,6 @@ static int get_playable_space(void);
static int get_unswapped_space(void);
#endif /* !SIMULATOR */
-#if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR)
-static void init_recording(void);
-static void prepend_header(void);
-static void update_header(void);
-static void start_prerecording(void);
-static void start_recording(void);
-static void stop_recording(void);
-static int get_unsaved_space(void);
-static void pause_recording(void);
-static void resume_recording(void);
-#endif /* (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR) */
-
static void audio_reset_buffer_noalloc(void* buf, size_t bufsize);
static void audio_reset_buffer(void);
@@ -540,12 +464,6 @@ static int shrink_callback(int handle, unsigned hints, void* start, size_t old_s
size_t wanted_size = (hints & BUFLIB_SHRINK_SIZE_MASK);
ssize_t size = (ssize_t)old_size - wanted_size;
-#if !defined(SIMULATOR) && (CONFIG_CODEC == MAS3587F)
- /* FIXME: Cannot give the buffer during recording yet */
- if (is_recording)
- return BUFLIB_CB_CANNOT_SHRINK;
-#endif
-
/* keep at least 256K for the buffering */
if ((size - extradata_size) < AUDIO_BUFFER_RESERVE)
{
@@ -677,9 +595,6 @@ void audio_get_debugdata(struct audio_debug *dbgdata)
dbgdata->last_dma_chunk_size = last_dma_chunk_size;
-#if CONFIG_CPU == SH7034
- dbgdata->dma_on = (SCR0 & 0x80) != 0;
-#endif
dbgdata->playing = playing;
dbgdata->play_pending = play_pending;
dbgdata->is_playing = is_playing;
@@ -758,108 +673,6 @@ static int get_unswapped_space(void)
return space;
}
-#if CONFIG_CODEC == MAS3587F
-static int get_unsaved_space(void)
-{
- int space = audiobuf_write - audiobuf_read;
- if (space < 0)
- space += audiobuflen;
- return space;
-}
-
-static void drain_dma_buffer(void)
-{
- while (PBDRH & 0x40)
- {
- xor_b(0x08, &PADRH);
-
- while (PBDRH & 0x80);
-
- xor_b(0x08, &PADRH);
-
- while (!(PBDRH & 0x80));
- }
-}
-
-#ifdef DEBUG
-static long timing_info_index = 0;
-static long timing_info[1024];
-#endif /* DEBUG */
-
-void rec_tick (void) __attribute__ ((section (".icode")));
-void rec_tick(void)
-{
- int i;
- int delay;
- char data;
-
- if(is_recording && (PBDRH & 0x40))
- {
-#ifdef DEBUG
- timing_info[timing_info_index++] = current_tick;
- TCNT2 = 0;
-#endif /* DEBUG */
- /* Note: Although this loop is run in interrupt context, further
- * optimisation will do no good. The MAS would then deliver bad
- * frames occasionally, as observed in extended experiments. */
- i = 0;
- while (PBDRH & 0x40) /* We try to read as long as EOD is high */
- {
- xor_b(0x08, &PADRH); /* Set PR active, independent of polarity */
-
- delay = 100;
- while (PBDRH & 0x80) /* Wait until /RTW becomes active */
- {
- if (--delay <= 0) /* Bail out if we have to wait too long */
- { /* i.e. the MAS doesn't want to talk to us */
- xor_b(0x08, &PADRH); /* Set PR inactive */
- goto transfer_end; /* and get out of here */
- }
- }
-
- data = *(unsigned char *)0x04000000; /* read data byte */
-
- xor_b(0x08, &PADRH); /* Set PR inactive */
-
- mpeg_audiobuf[audiobuf_write++] = data;
-
- if (audiobuf_write >= audiobuflen)
- audiobuf_write = 0;
-
- i++;
- }
- transfer_end:
-
-#ifdef DEBUG
- timing_info[timing_info_index++] = TCNT2 + (i << 16);
- timing_info_index &= 0x3ff;
-#endif /* DEBUG */
-
- num_rec_bytes += i;
-
- if(is_prerecording)
- {
- if(TIME_AFTER(current_tick, prerecord_timeout))
- {
- prerecord_timeout = current_tick + HZ;
- queue_post(&mpeg_queue, MPEG_PRERECORDING_TICK, 0);
- }
- }
- else
- {
- /* Signal to save the data if we are running out of buffer
- space */
- if (audiobuflen - get_unsaved_space() < MPEG_RECORDING_LOW_WATER
- && saving_status == NOT_SAVING)
- {
- saving_status = BUFFER_FULL;
- queue_post(&mpeg_queue, MPEG_SAVE_DATA, 0);
- }
- }
- }
-}
-#endif /* CONFIG_CODEC == MAS3587F */
-
void playback_tick(void)
{
struct trackdata *ptd = get_trackdata(0);
@@ -1158,11 +971,6 @@ static void track_change(void)
{
DEBUGF("Track change\n");
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- /* Reset the AVC */
- sound_set_avc(-1);
-#endif /* (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) */
-
if (num_tracks_in_memory() > 0)
{
remove_current_tag();
@@ -1293,13 +1101,6 @@ static void mpeg_thread(void)
int amount_to_read;
int t1, t2;
unsigned long start_elapsed, start_offset;
-#if CONFIG_CODEC == MAS3587F
- int amount_to_save;
- int save_endpos = 0;
- int rc;
- int level;
- long offset;
-#endif /* CONFIG_CODEC == MAS3587F */
is_playing = false;
play_pending = false;
@@ -1308,10 +1109,6 @@ static void mpeg_thread(void)
while(1)
{
-#if CONFIG_CODEC == MAS3587F
- if(mpeg_mode == MPEG_DECODER)
- {
-#endif /* CONFIG_CODEC == MAS3587F */
yield();
/* Swap if necessary, and don't block on the queue_wait() */
@@ -1836,321 +1633,11 @@ static void mpeg_thread(void)
break;
#endif /* !USB_NONE */
-#if CONFIG_CODEC == MAS3587F
- case MPEG_INIT_RECORDING:
- init_recording();
- init_recording_done = true;
- break;
-#endif /* CONFIG_CODEC == MAS3587F */
-
case SYS_TIMEOUT:
if (playing)
playlist_update_resume_info(audio_current_track());
break;
}
-#if CONFIG_CODEC == MAS3587F
- }
- else
- {
- queue_wait(&mpeg_queue, &ev);
- switch(ev.id)
- {
- case MPEG_RECORD:
- if (is_prerecording)
- {
- int startpos;
-
- /* Go back prerecord_count seconds in the buffer */
- startpos = prerecord_index - prerecord_count;
- if(startpos < 0)
- startpos += prerecording_max_seconds;
-
- /* Read the position data from the prerecord buffer */
- frame_count_start = prerecord_buffer[startpos].framecount;
- startpos = prerecord_buffer[startpos].mempos;
-
- DEBUGF("Start looking at address %x (%x)\n",
- mpeg_audiobuf+startpos, startpos);
-
- saved_header = mpeg_get_last_header();
-
- mem_find_next_frame(startpos, &offset, 1800,
- saved_header, mpeg_audiobuf,
- audiobuflen);
-
- audiobuf_read = startpos + offset;
- if(audiobuf_read >= audiobuflen)
- audiobuf_read -= audiobuflen;
-
- DEBUGF("New audiobuf_read address: %x (%x)\n",
- mpeg_audiobuf+audiobuf_read, audiobuf_read);
-
- level = disable_irq_save();
- num_rec_bytes = get_unsaved_space();
- restore_irq(level);
- }
- else
- {
- frame_count_start = 0;
- num_rec_bytes = 0;
- audiobuf_read = MPEG_RESERVED_HEADER_SPACE;
- audiobuf_write = MPEG_RESERVED_HEADER_SPACE;
- }
-
- prepend_header();
- DEBUGF("Recording...\n");
- start_recording();
-
- /* Wait until at least one frame is encoded and get the
- frame header, for later use by the Xing header
- generation */
- sleep(HZ/5);
- saved_header = mpeg_get_last_header();
-
- /* delayed until buffer is saved, don't open yet */
- strcpy(delayed_filename, recording_filename);
- mpeg_file = -1;
-
- break;
-
- case MPEG_STOP:
- DEBUGF("MPEG_STOP\n");
-
- stop_recording();
-
- /* Save the remaining data in the buffer */
- save_endpos = audiobuf_write;
- saving_status = STOP_RECORDING;
- queue_post(&mpeg_queue, MPEG_SAVE_DATA, 0);
- break;
-
- case MPEG_STOP_DONE:
- DEBUGF("MPEG_STOP_DONE\n");
-
- if (mpeg_file >= 0)
- close(mpeg_file);
- mpeg_file = -1;
-
- update_header();
-#ifdef DEBUG1
- {
- int i;
- for(i = 0;i < 512;i++)
- {
- DEBUGF("%d - %d us (%d bytes)\n",
- timing_info[i*2],
- (timing_info[i*2+1] & 0xffff) *
- 10000 / 13824,
- timing_info[i*2+1] >> 16);
- }
- }
-#endif /* DEBUG1 */
-
- if (prerecording)
- {
- start_prerecording();
- }
- mpeg_stop_done = true;
- break;
-
- case MPEG_NEW_FILE:
- /* Bail out when a more important save is happening */
- if (saving_status > NEW_FILE)
- break;
-
- /* Make sure we have at least one complete frame
- in the buffer. If we haven't recorded a single
- frame within 200ms, the MAS is probably not recording
- anything, and we bail out. */
- amount_to_save = get_unsaved_space();
- if (amount_to_save < 1800)
- {
- sleep(HZ/5);
- amount_to_save = get_unsaved_space();
- }
-
- mas_readmem(MAS_BANK_D0, MAS_D0_MPEG_FRAME_COUNT,
- &frame_count_end, 1);
-
- last_rec_time = current_tick - record_start_time;
- record_start_time = current_tick;
- if (paused)
- pause_start_time = record_start_time;
-
- /* capture all values at one point */
- level = disable_irq_save();
- save_endpos = audiobuf_write;
- last_rec_bytes = num_rec_bytes;
- num_rec_bytes = 0;
- restore_irq(level);
-
- if (amount_to_save >= 1800)
- {
- /* Now find a frame boundary to split at */
- save_endpos -= 1800;
- if (save_endpos < 0)
- save_endpos += audiobuflen;
-
- rc = mem_find_next_frame(save_endpos, &offset, 1800,
- saved_header, mpeg_audiobuf,
- audiobuflen);
- if (!rc) /* No header found, save whole buffer */
- offset = 1800;
-
- save_endpos += offset;
- if (save_endpos >= audiobuflen)
- save_endpos -= audiobuflen;
-
- last_rec_bytes += offset - 1800;
- level = disable_irq_save();
- num_rec_bytes += 1800 - offset;
- restore_irq(level);
- }
-
- saving_status = NEW_FILE;
- queue_post(&mpeg_queue, MPEG_SAVE_DATA, 0);
- break;
-
- case MPEG_SAVE_DATA:
- if (saving_status == BUFFER_FULL)
- save_endpos = audiobuf_write;
-
- if (mpeg_file < 0) /* delayed file open */
- {
- mpeg_file = open(delayed_filename, O_WRONLY|O_CREAT, 0666);
-
- if (mpeg_file < 0)
- panicf("recfile: %d", mpeg_file);
- }
-
- amount_to_save = save_endpos - audiobuf_read;
- if (amount_to_save < 0)
- amount_to_save += audiobuflen;
-
- amount_to_save = MIN(amount_to_save,
- audiobuflen - audiobuf_read);
-#if (CONFIG_STORAGE & STORAGE_MMC)
- /* MMC is slow, so don't save too large chunks at once */
- amount_to_save = MIN(0x40000, amount_to_save);
-#elif MEMORYSIZE == 8
- amount_to_save = MIN(0x100000, amount_to_save);
-#endif
- rc = write(mpeg_file, mpeg_audiobuf + audiobuf_read,
- amount_to_save);
- if (rc < 0)
- {
- if (errno == ENOSPC)
- {
- mpeg_errno = AUDIOERR_DISK_FULL;
- stop_recording();
- queue_post(&mpeg_queue, MPEG_STOP_DONE, 0);
- /* will close the file */
- break;
- }
- else
- panicf("rec wrt: %d", rc);
- }
-
- audiobuf_read += amount_to_save;
- if (audiobuf_read >= audiobuflen)
- audiobuf_read = 0;
-
- if (audiobuf_read == save_endpos) /* all saved */
- {
- switch (saving_status)
- {
- case BUFFER_FULL:
- rc = fsync(mpeg_file);
- if (rc < 0)
- panicf("rec fls: %d", rc);
- storage_sleep();
- break;
-
- case NEW_FILE:
- /* Close the current file */
- rc = close(mpeg_file);
- if (rc < 0)
- panicf("rec cls: %d", rc);
- mpeg_file = -1;
- update_header();
- storage_sleep();
-
- /* copy new filename */
- strcpy(delayed_filename, recording_filename);
- prepend_header();
- frame_count_start = frame_count_end;
- break;
-
- case STOP_RECORDING:
- queue_post(&mpeg_queue, MPEG_STOP_DONE, 0);
- /* will close the file */
- break;
-
- default:
- break;
- }
- saving_status = NOT_SAVING;
- }
- else /* tell ourselves to save the next chunk */
- queue_post(&mpeg_queue, MPEG_SAVE_DATA, 0);
-
- break;
-
- case MPEG_PRERECORDING_TICK:
- if(!is_prerecording)
- break;
-
- /* Store the write pointer every second */
- prerecord_buffer[prerecord_index].mempos = audiobuf_write;
- mas_readmem(MAS_BANK_D0, MAS_D0_MPEG_FRAME_COUNT,
- &prerecord_buffer[prerecord_index].framecount, 1);
-
- /* Wrap if necessary */
- if(++prerecord_index == prerecording_max_seconds)
- prerecord_index = 0;
-
- /* Update the number of seconds recorded */
- if(prerecord_count < prerecording_max_seconds)
- prerecord_count++;
- break;
-
- case MPEG_INIT_PLAYBACK:
- /* Stop the prerecording */
- stop_recording();
- reset_mp3_buffer();
- mp3_play_init();
- init_playback_done = true;
- break;
-
- case MPEG_PAUSE_RECORDING:
- pause_recording();
- break;
-
- case MPEG_RESUME_RECORDING:
- resume_recording();
- break;
-
- case SYS_USB_CONNECTED:
- /* We can safely go to USB mode if no recording
- is taking place */
- if((!is_recording || is_prerecording) && mpeg_stop_done)
- {
- /* Even if we aren't recording, we still call this
- function, to put the MAS in monitoring mode,
- to save power. */
- stop_recording();
-
- /* Tell the USB thread that we are safe */
- DEBUGF("mpeg_thread got SYS_USB_CONNECTED\n");
- usb_acknowledge(SYS_USB_CONNECTED_ACK);
-
- /* Wait until the USB cable is extracted again */
- usb_wait_for_disconnect(&mpeg_queue);
- }
- break;
- }
- }
-#endif /* CONFIG_CODEC == MAS3587F */
}
}
#endif /* !SIMULATOR */
@@ -2195,557 +1682,6 @@ struct mp3entry* audio_next_track(void)
#endif /* !SIMULATOR */
}
-#if CONFIG_CODEC == MAS3587F
-#ifndef SIMULATOR
-void audio_init_playback(void)
-{
- init_playback_done = false;
- queue_post(&mpeg_queue, MPEG_INIT_PLAYBACK, 0);
-
- while(!init_playback_done)
- sleep(1);
-}
-
-
-/****************************************************************************
- * Recording functions
- ***************************************************************************/
-void audio_init_recording(void)
-{
- init_recording_done = false;
- queue_post(&mpeg_queue, MPEG_INIT_RECORDING, 0);
-
- while(!init_recording_done)
- sleep(1);
-}
-
-static void init_recording(void)
-{
- unsigned long val;
- int rc;
-
- /* Disable IRQ6 */
- IPRB &= 0xff0f;
-
- stop_playing();
- is_playing = false;
- paused = false;
-
- /* Init the recording variables */
- is_recording = false;
- is_prerecording = false;
-
- /* Have to grab the audio buffer in case voice had it */
- audio_reset_buffer();
-
- mpeg_stop_done = true;
-
- mas_reset();
-
- /* Enable the audio CODEC and the DSP core, max analog voltage range */
- rc = mas_direct_config_write(MAS_CONTROL, 0x8c00);
- if(rc < 0)
- panicf("mas_ctrl_w: %d", rc);
-
- /* Stop the current application */
- val = 0;
- mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1);
- do
- {
- mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1);
- } while(val);
-
- /* Perform black magic as described by the data sheet */
- if((mas_version_code & 0x0fff) == 0x0102)
- {
- DEBUGF("Performing MAS black magic for B2 version\n");
- mas_writereg(0xa3, 0x98);
- mas_writereg(0x94, 0xfffff);
- val = 0;
- mas_writemem(MAS_BANK_D1, 0, &val, 1);
- mas_writereg(0xa3, 0x90);
- }
-
- /* Enable A/D Converters */
- shadow_codec_reg0 = 0xcccd;
- mas_codec_writereg(0x0, shadow_codec_reg0);
-
- /* Copy left channel to right (mono mode) */
- mas_codec_writereg(8, 0x8000);
-
- /* ADC scale 0%, DSP scale 100%
- We use the DSP output for monitoring, because it works with all
- sources including S/PDIF */
- mas_codec_writereg(6, 0x0000);
- mas_codec_writereg(7, 0x4000);
-
- /* No mute */
- shadow_soft_mute = 0;
- mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute, 1);
-
-#ifdef HAVE_SPDIF_OUT
- val = 0x09; /* Disable SDO and SDI, low impedance S/PDIF outputs */
-#else
- val = 0x2d; /* Disable SDO and SDI, disable S/PDIF output */
-#endif
- mas_writemem(MAS_BANK_D0, MAS_D0_INTERFACE_CONTROL, &val, 1);
-
- /* Set Demand mode, monitoring OFF and validate all settings */
- shadow_io_control_main = 0x125;
- mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1);
-
- /* Start the encoder application */
- val = 0x40;
- mas_writemem(MAS_BANK_D0, MAS_D0_APP_SELECT, &val, 1);
- do
- {
- mas_readmem(MAS_BANK_D0, MAS_D0_APP_RUNNING, &val, 1);
- } while(!(val & 0x40));
-
- /* We have started the recording application with monitoring OFF.
- This is because we want to record at least one frame to fill the DMA
- buffer, because the silly MAS will not negate EOD until at least one
- DMA transfer has taken place.
- Now let's wait for some data to be encoded. */
- sleep(HZ/5);
-
- /* Now set it to Monitoring mode as default, saves power */
- shadow_io_control_main = 0x525;
- mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1);
-
- /* Wait until the DSP has accepted the settings */
- do
- {
- mas_readmem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val,1);
- } while(val & 1);
-
- drain_dma_buffer();
- mpeg_mode = MPEG_ENCODER;
-
- DEBUGF("MAS Recording application started\n");
-
- /* At this point, all settings are the reset MAS defaults, next thing is to
- call mpeg_set_recording_options(). */
-}
-
-void audio_record(const char *filename)
-{
- mpeg_errno = 0;
-
- strlcpy(recording_filename, filename, MAX_PATH);
-
- queue_post(&mpeg_queue, MPEG_RECORD, 0);
-}
-
-void audio_pause_recording(void)
-{
- queue_post(&mpeg_queue, MPEG_PAUSE_RECORDING, 0);
-}
-
-void audio_resume_recording(void)
-{
- queue_post(&mpeg_queue, MPEG_RESUME_RECORDING, 0);
-}
-
-static void prepend_header(void)
-{
- int startpos;
- unsigned i;
-
- /* Make room for header */
- audiobuf_read -= MPEG_RESERVED_HEADER_SPACE;
- if(audiobuf_read < 0)
- {
- /* Clear the bottom half */
- memset(mpeg_audiobuf, 0, audiobuf_read + MPEG_RESERVED_HEADER_SPACE);
-
- /* And the top half */
- audiobuf_read += audiobuflen;
- memset(mpeg_audiobuf + audiobuf_read, 0, audiobuflen - audiobuf_read);
- }
- else
- {
- memset(mpeg_audiobuf + audiobuf_read, 0, MPEG_RESERVED_HEADER_SPACE);
- }
- /* Copy the empty ID3 header */
- startpos = audiobuf_read;
- for(i = 0; i < sizeof(empty_id3_header); i++)
- {
- mpeg_audiobuf[startpos++] = empty_id3_header[i];
- if(startpos == audiobuflen)
- startpos = 0;
- }
-}
-
-static void update_header(void)
-{
- int fd, framelen;
- unsigned long frames;
-
- if (last_rec_bytes > 0)
- {
- /* Create the Xing header */
- fd = open(delayed_filename, O_RDWR);
- if (fd < 0)
- panicf("rec upd: %d (%s)", fd, recording_filename);
-
- frames = frame_count_end - frame_count_start;
- /* If the number of recorded frames has reached 0x7ffff,
- we can no longer trust it */
- if (frame_count_end == 0x7ffff)
- frames = 0;
-
- /* saved_header is saved right before stopping the MAS */
- framelen = create_xing_header(fd, 0, last_rec_bytes, xing_buffer,
- frames, last_rec_time * (1000/HZ),
- saved_header, NULL, false,
- mpeg_audiobuf, audiobuflen);
-
- lseek(fd, MPEG_RESERVED_HEADER_SPACE - framelen, SEEK_SET);
- write(fd, xing_buffer, framelen);
- close(fd);
- }
-}
-
-static void start_prerecording(void)
-{
- unsigned long val;
-
- DEBUGF("Starting prerecording\n");
-
- prerecord_index = 0;
- prerecord_count = 0;
- prerecord_timeout = current_tick + HZ;
- memset(prerecord_buffer, 0, sizeof(prerecord_buffer));
- reset_mp3_buffer();
-
- is_prerecording = true;
-
- /* Stop monitoring and start the encoder */
- shadow_io_control_main &= ~(1 << 10);
- mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1);
- DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main);
-
- /* Wait until the DSP has accepted the settings */
- do
- {
- mas_readmem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val,1);
- } while(val & 1);
-
- is_recording = true;
- saving_status = NOT_SAVING;
-
- demand_irq_enable(true);
-}
-
-static void start_recording(void)
-{
- unsigned long val;
-
- if(is_prerecording)
- {
- /* This will make the IRQ handler start recording
- for real, i.e send MPEG_SAVE_DATA messages when
- the buffer is full */
- is_prerecording = false;
- }
- else
- {
- /* If prerecording is off, we need to stop the monitoring
- and start the encoder */
- shadow_io_control_main &= ~(1 << 10);
- mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1);
- DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main);
-
- /* Wait until the DSP has accepted the settings */
- do
- {
- mas_readmem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val,1);
- } while(val & 1);
- }
-
- is_recording = true;
- saving_status = NOT_SAVING;
- paused = false;
-
- /* Store the current time */
- if(prerecording)
- record_start_time = current_tick - prerecord_count * HZ;
- else
- record_start_time = current_tick;
-
- pause_start_time = 0;
-
- demand_irq_enable(true);
-}
-
-static void pause_recording(void)
-{
- pause_start_time = current_tick;
-
- /* Set the pause bit */
- shadow_soft_mute |= 2;
- mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute, 1);
-
- paused = true;
-}
-
-static void resume_recording(void)
-{
- paused = false;
-
- /* Clear the pause bit */
- shadow_soft_mute &= ~2;
- mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute, 1);
-
- /* Compensate for the time we have been paused */
- if(pause_start_time)
- {
- record_start_time =
- current_tick - (pause_start_time - record_start_time);
- pause_start_time = 0;
- }
-}
-
-static void stop_recording(void)
-{
- unsigned long val;
-
- /* Let it finish the last frame */
- if(!paused)
- pause_recording();
- sleep(HZ/5);
-
- demand_irq_enable(false);
-
- is_recording = false;
- is_prerecording = false;
-
- last_rec_bytes = num_rec_bytes;
- mas_readmem(MAS_BANK_D0, MAS_D0_MPEG_FRAME_COUNT, &frame_count_end, 1);
- last_rec_time = current_tick - record_start_time;
-
- /* Start monitoring */
- shadow_io_control_main |= (1 << 10);
- mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main, 1);
- DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main);
-
- /* Wait until the DSP has accepted the settings */
- do
- {
- mas_readmem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &val,1);
- } while(val & 1);
-
- resume_recording();
-}
-
-void audio_set_recording_options(struct audio_recording_options *options)
-{
- bool is_mpeg1;
-
- is_mpeg1 = (options->rec_frequency < 3);
-
- rec_version_index = is_mpeg1?3:2;
- rec_frequency_index = options->rec_frequency % 3;
-
- shadow_encoder_control = (options->rec_quality << 17) |
- (rec_frequency_index << 10) |
- ((is_mpeg1?1:0) << 9) |
- (((options->rec_channels * 2 + 1) & 3) << 6) |
- (1 << 5) /* MS-stereo */ |
- (1 << 2) /* Is an original */;
- mas_writemem(MAS_BANK_D0, MAS_D0_ENCODER_CONTROL, &shadow_encoder_control,1);
-
- DEBUGF("mas_writemem(MAS_BANK_D0, ENCODER_CONTROL, %x)\n", shadow_encoder_control);
-
-#if CONFIG_TUNER & S1A0903X01
- /* Store the (unpitched) MAS PLL frequency. Used for avoiding FM
- interference with the Samsung tuner. */
- if (rec_frequency_index)
- mas_store_pllfreq(24576000);
- else
- mas_store_pllfreq(22579000);
-#endif
-
- shadow_soft_mute = options->rec_editable?4:0;
- mas_writemem(MAS_BANK_D0, MAS_D0_SOFT_MUTE, &shadow_soft_mute,1);
-
- DEBUGF("mas_writemem(MAS_BANK_D0, SOFT_MUTE, %x)\n", shadow_soft_mute);
-
- shadow_io_control_main = ((1 << 10) | /* Monitoring ON */
- ((options->rec_source < 2)?1:2) << 8) | /* Input select */
- (1 << 5) | /* SDO strobe invert */
- ((is_mpeg1?0:1) << 3) |
- (1 << 2) | /* Inverted SIBC clock signal */
- 1; /* Validate */
- mas_writemem(MAS_BANK_D0, MAS_D0_IO_CONTROL_MAIN, &shadow_io_control_main,1);
-
- DEBUGF("mas_writemem(MAS_BANK_D0, IO_CONTROL_MAIN, %x)\n", shadow_io_control_main);
-
- if(options->rec_source == AUDIO_SRC_MIC)
- {
- /* Copy left channel to right (mono mode) */
- mas_codec_writereg(8, 0x8000);
- }
- else
- {
- /* Stereo input mode */
- mas_codec_writereg(8, 0);
- }
-
- prerecording_max_seconds = options->rec_prerecord_time;
- if(prerecording_max_seconds)
- {
- prerecording = true;
- start_prerecording();
- }
- else
- {
- prerecording = false;
- is_prerecording = false;
- is_recording = false;
- }
-}
-
-/* If use_mic is true, the left gain is used */
-void audio_set_recording_gain(int left, int right, int type)
-{
- /* Enable both left and right A/D */
- shadow_codec_reg0 = (left << 12) |
- (right << 8) |
- (left << 4) |
- (type==AUDIO_GAIN_MIC?0x0008:0) | /* Connect left A/D to mic */
- 0x0007;
- mas_codec_writereg(0x0, shadow_codec_reg0);
-}
-
-/* try to make some kind of beep, also in recording mode */
-void audio_beep(int duration)
-{
- long starttick = current_tick;
- do
- { /* toggle bit 0 of codec register 0, toggling the DAC off & on.
- * While this is still audible even without an external signal,
- * it doesn't affect the (pre-)recording. */
- mas_codec_writereg(0, shadow_codec_reg0 ^ 1);
- mas_codec_writereg(0, shadow_codec_reg0);
- yield();
- }
- while (current_tick - starttick < duration);
-}
-
-void audio_new_file(const char *filename)
-{
- mpeg_errno = 0;
-
- strlcpy(recording_filename, filename, MAX_PATH);
-
- queue_post(&mpeg_queue, MPEG_NEW_FILE, 0);
-}
-
-unsigned long audio_recorded_time(void)
-{
- if(is_prerecording)
- return prerecord_count * HZ;
-
- if(is_recording)
- {
- if(paused)
- return pause_start_time - record_start_time;
- else
- return current_tick - record_start_time;
- }
-
- return 0;
-}
-
-unsigned long audio_num_recorded_bytes(void)
-{
- int num_bytes;
- int index;
-
- if(is_recording)
- {
- if(is_prerecording)
- {
- index = prerecord_index - prerecord_count;
- if(index < 0)
- index += prerecording_max_seconds;
-
- num_bytes = audiobuf_write - prerecord_buffer[index].mempos;
- if(num_bytes < 0)
- num_bytes += audiobuflen;
-
- return num_bytes;
- }
- else
- return num_rec_bytes;
- }
- else
- return 0;
-}
-
-#else /* SIMULATOR */
-
-/* dummies coming up */
-
-void audio_init_playback(void)
-{
- /* a dummy */
-}
-unsigned long audio_recorded_time(void)
-{
- /* a dummy */
- return 0;
-}
-void audio_beep(int duration)
-{
- /* a dummy */
- (void)duration;
-}
-void audio_pause_recording(void)
-{
- /* a dummy */
-}
-void audio_resume_recording(void)
-{
- /* a dummy */
-}
-unsigned long audio_num_recorded_bytes(void)
-{
- /* a dummy */
- return 0;
-}
-void audio_record(const char *filename)
-{
- /* a dummy */
- (void)filename;
-}
-void audio_new_file(const char *filename)
-{
- /* a dummy */
- (void)filename;
-}
-
-void audio_set_recording_gain(int left, int right, int type)
-{
- /* a dummy */
- (void)left;
- (void)right;
- (void)type;
-}
-void audio_init_recording(void)
-{
- /* a dummy */
-}
-void audio_set_recording_options(struct audio_recording_options *options)
-{
- /* a dummy */
- (void)options;
-}
-#endif /* SIMULATOR */
-#endif /* CONFIG_CODEC == MAS3587F */
-
size_t audio_buffer_size(void)
{
if (audiobuf_handle > 0)
@@ -2977,14 +1913,6 @@ int audio_status(void)
if(paused)
ret |= AUDIO_STATUS_PAUSE;
-#if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR)
- if(is_recording && !is_prerecording)
- ret |= AUDIO_STATUS_RECORD;
-
- if(is_prerecording)
- ret |= AUDIO_STATUS_PRERECORD;
-#endif /* CONFIG_CODEC == MAS3587F */
-
if(mpeg_errno)
ret |= AUDIO_STATUS_ERROR;
@@ -3039,13 +1967,6 @@ void audio_init(void)
memset(trackdata, 0, sizeof(trackdata));
-#if (CONFIG_CODEC == MAS3587F) && !defined(SIMULATOR)
- if (HW_MASK & PR_ACTIVE_HIGH)
- and_b(~0x08, &PADRH);
- else
- or_b(0x08, &PADRH);
-#endif /* CONFIG_CODEC == MAS3587F */
-
#ifdef DEBUG
#ifndef SIMULATOR
dbg_timer_start();
diff --git a/apps/plugin.c b/apps/plugin.c
index 4293d861f9..959232ddb7 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -318,13 +318,9 @@ static const struct plugin_api rockbox_api = {
viewport_set_fullscreen,
#endif
+#ifdef HAVE_BACKLIGHT
/* lcd backlight */
- /* The backlight_* functions must be present in the API regardless whether
- * HAVE_BACKLIGHT is defined or not. The reason is that the stock Ondio has
- * no backlight but can be modded to have backlight (it's prepared on the
- * PCB). This makes backlight an all-target feature API wise, and keeps API
- * compatible between stock and modded Ondio.
- * For OLED targets like the Sansa Clip, the backlight_* functions control
+ /* For OLED targets like the Sansa Clip, the backlight_* functions control
* the display enable, which has essentially the same effect. */
is_backlight_on,
backlight_on,
@@ -346,6 +342,7 @@ static const struct plugin_api rockbox_api = {
remote_backlight_set_timeout_plugged,
#endif
#endif /* HAVE_REMOTE_LCD */
+#endif /* HAVE_BACKLIGHT */
/* list */
gui_synclist_init,
@@ -615,8 +612,7 @@ static const struct plugin_api rockbox_api = {
#ifdef AUDIOHW_HAVE_EQ
sound_enum_hw_eq_band_setting,
#endif
-#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \
- (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL)
+#if ((CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL)
sound_set_pitch,
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
@@ -684,13 +680,6 @@ static const struct plugin_api rockbox_api = {
keyclick_click,
#endif /* CONFIG_CODEC == SWCODEC */
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- peak_meter_scale_value,
- peak_meter_set_use_dbfs,
- peak_meter_get_use_dbfs,
-#endif
-
-
/* metadata */
get_metadata,
mp3info,
@@ -742,21 +731,6 @@ static const struct plugin_api rockbox_api = {
mpeg_get_last_header,
#endif
-#if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC)
- /* MAS communication */
- mas_readmem,
- mas_writemem,
- mas_readreg,
- mas_writereg,
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- mas_codec_writereg,
- mas_codec_readreg,
- i2c_begin,
- i2c_end,
- i2c_write,
-#endif
-#endif /* !SIMULATOR && CONFIG_CODEC != SWCODEC */
-
/* menu */
root_menu_get_options,
do_menu,
diff --git a/apps/plugin.h b/apps/plugin.h
index acaee27687..ecc662cb7f 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -88,8 +88,6 @@ void* plugin_get_buffer(size_t *buffer_size);
#ifdef HAVE_RECORDING
#include "recording.h"
#endif
-#else
-#include "mas35xx.h"
#endif /* CONFIG_CODEC == SWCODEC */
#include "settings.h"
#include "timer.h"
@@ -355,13 +353,9 @@ struct plugin_api {
const enum screen_type screen);
#endif
+#ifdef HAVE_BACKLIGHT
/* lcd backlight */
- /* The backlight_* functions must be present in the API regardless whether
- * HAVE_BACKLIGHT is defined or not. The reason is that the stock Ondio has
- * no backlight but can be modded to have backlight (it's prepared on the
- * PCB). This makes backlight an all-target feature API wise, and keeps API
- * compatible between stock and modded Ondio.
- * For OLED targets like the Sansa Clip, the backlight_* functions control
+ /* For OLED targets like the Sansa Clip, the backlight_* functions control
* the display enable, which has essentially the same effect. */
bool (*is_backlight_on)(bool ignore_always_off);
void (*backlight_on)(void);
@@ -383,6 +377,7 @@ struct plugin_api {
void (*remote_backlight_set_timeout_plugged)(int index);
#endif
#endif /* HAVE_REMOTE_LCD */
+#endif /* HAVE_BACKLIGHT */
/* list */
void (*gui_synclist_init)(struct gui_synclist * lists,
@@ -689,8 +684,7 @@ struct plugin_api {
int (*sound_enum_hw_eq_band_setting)(unsigned int band,
unsigned int band_setting);
#endif /* AUDIOHW_HAVE_EQ */
-#if ((CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F) || \
- (CONFIG_CODEC == SWCODEC)) && defined (HAVE_PITCHCONTROL)
+#if ((CONFIG_CODEC == SWCODEC) && defined (HAVE_PITCHCONTROL))
void (*sound_set_pitch)(int32_t pitch);
#endif
#if (CONFIG_PLATFORM & PLATFORM_NATIVE)
@@ -771,13 +765,6 @@ struct plugin_api {
void (*keyclick_click)(bool rawbutton, int action);
#endif /* CONFIG_CODEC == SWCODEC */
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- unsigned short (*peak_meter_scale_value)(unsigned short val,
- int meterwidth);
- void (*peak_meter_set_use_dbfs)(bool use);
- bool (*peak_meter_get_use_dbfs)(void);
-#endif
-
/* metadata */
bool (*get_metadata)(struct mp3entry* id3, int fd, const char* trackname);
bool (*mp3info)(struct mp3entry *entry, const char *filename);
@@ -845,21 +832,6 @@ struct plugin_api {
unsigned long (*mpeg_get_last_header)(void);
#endif
- /* MAS communication */
-#if !defined(SIMULATOR) && (CONFIG_CODEC != SWCODEC)
- int (*mas_readmem)(int bank, int addr, unsigned long* dest, int len);
- int (*mas_writemem)(int bank, int addr, const unsigned long* src, int len);
- int (*mas_readreg)(int reg);
- int (*mas_writereg)(int reg, unsigned int val);
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- int (*mas_codec_writereg)(int reg, unsigned int val);
- int (*mas_codec_readreg)(int reg);
- void (*i2c_begin)(void);
- void (*i2c_end)(void);
- int (*i2c_write)(int address, const unsigned char* buf, int count );
-#endif
-#endif /* !SIMULATOR && CONFIG_CODEC != SWCODEC */
-
/* menu */
struct menu_table *(*root_menu_get_options)(int *nb_options);
int (*do_menu)(const struct menu_item_ex *menu, int *start_selected,
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--;
diff --git a/apps/radio/presets.c b/apps/radio/presets.c
index acd6dc8711..72e8c3bd65 100644
--- a/apps/radio/presets.c
+++ b/apps/radio/presets.c
@@ -473,21 +473,10 @@ int handle_radio_presets(void)
struct gui_synclist lists;
int result = 0;
int action = ACTION_NONE;
-#ifdef HAVE_BUTTONBAR
- struct gui_buttonbar buttonbar;
-#endif
if(presets_loaded == false)
return result;
-#ifdef HAVE_BUTTONBAR
- gui_buttonbar_init(&buttonbar);
- gui_buttonbar_set_display(&buttonbar, &(screens[SCREEN_MAIN]) );
- gui_buttonbar_set(&buttonbar, str(LANG_FM_BUTTONBAR_ADD),
- str(LANG_FM_BUTTONBAR_EXIT),
- str(LANG_FM_BUTTONBAR_ACTION));
- gui_buttonbar_draw(&buttonbar);
-#endif
gui_synclist_init(&lists, presets_get_name, NULL, false, 1, NULL);
gui_synclist_set_title(&lists, str(LANG_PRESET), NOICON);
gui_synclist_set_icon_callback(&lists, NULL);
diff --git a/apps/radio/radio.c b/apps/radio/radio.c
index 08b9c501e2..362d10f9a3 100644
--- a/apps/radio/radio.c
+++ b/apps/radio/radio.c
@@ -61,14 +61,7 @@
#if CONFIG_TUNER
-#if CONFIG_KEYPAD == RECORDER_PAD
-#define FM_RECORD
-#define FM_PRESET_ADD
-#define FM_PRESET_ACTION
-#define FM_PRESET
-#define FM_MODE
-
-#elif (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
+#if (CONFIG_KEYPAD == IRIVER_H100_PAD) || (CONFIG_KEYPAD == IRIVER_H300_PAD)
#define FM_PRESET
#define FM_MODE
#define FM_NEXT_PRESET
@@ -86,10 +79,6 @@
have to be taken to hear any interference. */
#define HAVE_NOISY_IDLE_MODE
-#elif CONFIG_KEYPAD == ONDIO_PAD
-#define FM_RECORD_DBLPRE
-#define FM_RECORD
-
#elif (CONFIG_KEYPAD == SANSA_E200_PAD) || (CONFIG_KEYPAD == SANSA_C200_PAD) ||\
(CONFIG_KEYPAD == SANSA_FUZE_PAD) || (CONFIG_KEYPAD == SANSA_CLIP_PAD) ||\
(CONFIG_KEYPAD == PHILIPS_HDD1630_PAD)||(CONFIG_KEYPAD == COWON_D2_PAD)||\
diff --git a/apps/recorder/jpeg_load.c b/apps/recorder/jpeg_load.c
index 61ec3bfa0e..16a2f4e3a3 100644
--- a/apps/recorder/jpeg_load.c
+++ b/apps/recorder/jpeg_load.c
@@ -137,21 +137,7 @@ static struct jpeg jpeg;
INLINE unsigned range_limit(int value)
{
-#if CONFIG_CPU == SH7034
- unsigned tmp;
- asm ( /* Note: Uses knowledge that only low byte of result is used */
- "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)
/* Note: Uses knowledge that only the low byte of the result is used */
asm (
"cmp.l #255,%[v] \n" /* overflow? */
@@ -232,7 +218,7 @@ INLINE unsigned scale_output(int value)
*/
#define MULTIPLY(var1, var2) ((var1) * (var2))
-#if defined(CPU_SH) || defined(CPU_COLDFIRE) || \
+#if defined(CPU_COLDFIRE) || \
(defined(CPU_ARM) && ARM_ARCH > 4)
#define MULTIPLY16(var,const) (((short) (var)) * ((short) (const)))
#else
@@ -1687,24 +1673,6 @@ static void search_restart(struct jpeg *p_jpeg)
}
/* Figure F.12: extend sign bit. */
-#if CONFIG_CPU == SH7034
-/* SH1 lacks a variable-shift instruction */
-#define HUFF_EXTEND(x,s) ((x) < extend_test[s] ? (x) + extend_offset[s] : (x))
-
-static const int extend_test[16] = /* entry n is 2**(n-1) */
-{
- 0, 0x0001, 0x0002, 0x0004, 0x0008, 0x0010, 0x0020, 0x0040, 0x0080,
- 0x0100, 0x0200, 0x0400, 0x0800, 0x1000, 0x2000, 0x4000
-};
-
-static const int extend_offset[16] = /* entry n is (-1 << n) + 1 */
-{
- 0, ((-1)<<1) + 1, ((-1)<<2) + 1, ((-1)<<3) + 1, ((-1)<<4) + 1,
- ((-1)<<5) + 1, ((-1)<<6) + 1, ((-1)<<7) + 1, ((-1)<<8) + 1,
- ((-1)<<9) + 1, ((-1)<<10) + 1, ((-1)<<11) + 1, ((-1)<<12) + 1,
- ((-1)<<13) + 1, ((-1)<<14) + 1, ((-1)<<15) + 1
-};
-#else
/* This saves some code and data size, benchmarks about the same on RAM */
#define HUFF_EXTEND(x,s) \
({ \
@@ -1712,7 +1680,6 @@ static const int extend_offset[16] = /* entry n is (-1 << n) + 1 */
int s__ = s; \
x__ & BIT_N(s__- 1) ? x__ : x__ + (-1 << s__) + 1; \
})
-#endif
/* Decode a single value */
#define huff_decode_dc(p_jpeg, tbl, s, r) \
diff --git a/apps/recorder/keyboard.c b/apps/recorder/keyboard.c
index 6e91d69b6d..4b19287b7f 100644
--- a/apps/recorder/keyboard.c
+++ b/apps/recorder/keyboard.c
@@ -27,7 +27,6 @@
#include "settings.h"
#include "misc.h"
#include "rbunicode.h"
-#include "buttonbar.h"
#include "logf.h"
#include "hangul.h"
#include "action.h"
@@ -343,15 +342,6 @@ int kbd_input(char* text, int buflen, unsigned short *kbd)
viewportmanager_theme_enable(l, false, NULL);
}
-#ifdef HAVE_BUTTONBAR
- struct gui_buttonbar buttonbar;
- bool buttonbar_config = global_settings.buttonbar;
-
- global_settings.buttonbar = true;
- gui_buttonbar_init(&buttonbar);
- gui_buttonbar_set_display(&buttonbar, &screens[SCREEN_MAIN]);
-#endif
-
/* initialize state */
state.text = text;
state.buflen = buflen;
@@ -482,12 +472,6 @@ int kbd_input(char* text, int buflen, unsigned short *kbd)
#endif
}
-#ifdef HAVE_BUTTONBAR
- /* draw the button bar */
- gui_buttonbar_set(&buttonbar, "Shift", "OK", "Del");
- gui_buttonbar_draw(&buttonbar);
-#endif
-
FOR_NB_SCREENS(l)
screens[l].update();
@@ -693,10 +677,6 @@ int kbd_input(char* text, int buflen, unsigned short *kbd)
state.changed = 0;
}
-#ifdef HAVE_BUTTONBAR
- global_settings.buttonbar = buttonbar_config;
-#endif
-
if (ret < 0)
splash(HZ/2, ID2P(LANG_CANCEL));
@@ -736,7 +716,7 @@ static void kbd_calc_params(struct keyboard_parameters *pm,
pm->font_h = font->height;
/* check if FONT_UI fits the screen */
- if (2*pm->font_h + 3 + BUTTONBAR_HEIGHT > sc->getheight())
+ if (2*pm->font_h + 3 > sc->getheight())
{
pm->curfont = FONT_SYSFIXED;
font = font_get(FONT_SYSFIXED);
@@ -796,13 +776,12 @@ static void kbd_calc_params(struct keyboard_parameters *pm,
}
recalc_param:
#endif
- pm->lines = (sc_h - BUTTONBAR_HEIGHT) / pm->font_h - 1;
+ pm->lines = sc_h / pm->font_h - 1;
if (pm->default_lines && pm->lines > pm->default_lines)
pm->lines = pm->default_lines;
- pm->keyboard_margin = sc_h - BUTTONBAR_HEIGHT
- - (pm->lines+1)*pm->font_h;
+ pm->keyboard_margin = sc_h - (pm->lines+1)*pm->font_h;
if (pm->keyboard_margin < 3 && pm->lines > 1)
{
@@ -840,7 +819,7 @@ recalc_param:
#endif
#ifdef HAVE_MORSE_INPUT
- pm->old_main_y = sc_h - pm->font_h - BUTTONBAR_HEIGHT;
+ pm->old_main_y = sc_h - pm->font_h;
if (state->morse_mode)
{
int y = pm->main_y;
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c
index b67436839c..553f815e52 100644
--- a/apps/recorder/recording.c
+++ b/apps/recorder/recording.c
@@ -145,11 +145,6 @@ bool in_recording_screen(void)
return (rec_status & RCSTAT_IN_RECSCREEN) != 0;
}
-#if CONFIG_KEYPAD == RECORDER_PAD
-static bool f2_rec_screen(void);
-static bool f3_rec_screen(void);
-#endif
-
#define MAX_FILE_SIZE 0x7F800000 /* 2 GB - 4 MB */
#ifndef HAVE_REMOTE_LCD
@@ -1574,47 +1569,6 @@ bool recording_screen(bool no_source)
}
break;
-#if CONFIG_KEYPAD == RECORDER_PAD
- case ACTION_REC_F2:
- if(audio_stat != AUDIO_STATUS_RECORD)
- {
-#if (CONFIG_LED == LED_REAL)
- /* led is restored at begin of loop / end of function */
- led(false);
-#endif
- if (f2_rec_screen())
- {
- rec_status |= RCSTAT_HAVE_RECORDED;
- done = true;
- }
- else
- update_countdown = 0; /* Update immediately */
- }
- break;
-
- case ACTION_REC_F3:
- if(audio_stat & AUDIO_STATUS_RECORD)
- {
- rec_command(RECORDING_CMD_START_NEWFILE);
- last_seconds = 0;
- }
- else
- {
-#if (CONFIG_LED == LED_REAL)
- /* led is restored at begin of loop / end of function */
- led(false);
-#endif
- if (f3_rec_screen())
- {
- rec_status |= RCSTAT_HAVE_RECORDED;
- done = true;
- }
- else
- update_countdown = 0; /* Update immediately */
- }
- break;
-#endif /* CONFIG_KEYPAD == RECORDER_PAD */
-
case SYS_POWEROFF:
default_event_handler(SYS_POWEROFF);
done = true;
@@ -1941,246 +1895,6 @@ rec_abort:
return (rec_status & RCSTAT_BEEN_IN_USB_MODE) != 0;
} /* recording_screen */
-#if CONFIG_KEYPAD == RECORDER_PAD
-static bool f2_rec_screen(void)
-{
- static const char* const freq_str[6] =
- {
- "44.1kHz",
- "48kHz",
- "32kHz",
- "22.05kHz",
- "24kHz",
- "16kHz"
- };
-
- bool exit = false;
- bool used = false;
- int w, h;
- char buf[32];
- int button;
- struct audio_recording_options rec_options;
-
- FOR_NB_SCREENS(i)
- {
- screens[i].set_viewport(NULL);
- screens[i].setfont(FONT_SYSFIXED);
- screens[i].getstringsize("A",&w,&h);
- }
-
- while (!exit) {
- const char* ptr;
-
- FOR_NB_SCREENS(i)
- {
- screens[i].clear_display();
-
- /* Recording quality */
- screens[i].putsxy(0, LCD_HEIGHT/2 - h*2,
- str(LANG_SYSFONT_RECORDING_QUALITY));
- }
-
- snprintf(buf, sizeof(buf), "%d", global_settings.rec_quality);
- FOR_NB_SCREENS(i)
- {
- screens[i].putsxy(0, LCD_HEIGHT/2-h, buf);
- screens[i].mono_bitmap(bitmap_icons_7x8[Icon_FastBackward],
- LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8);
- }
-
- /* Frequency */
- snprintf(buf, sizeof buf, "%s:", str(LANG_SYSFONT_RECORDING_FREQUENCY));
- ptr = freq_str[global_settings.rec_frequency];
- FOR_NB_SCREENS(i)
- {
- screens[i].getstringsize(buf,&w,&h);
- screens[i].putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, buf);
- screens[i].getstringsize(ptr, &w, &h);
- screens[i].putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h, ptr);
- screens[i].mono_bitmap(bitmap_icons_7x8[Icon_DownArrow],
- LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8);
- }
-
- /* Channel mode */
- switch ( global_settings.rec_channels ) {
- case 0:
- ptr = str(LANG_SYSFONT_CHANNEL_STEREO);
- break;
-
- case 1:
- ptr = str(LANG_SYSFONT_CHANNEL_MONO);
- break;
- }
-
- FOR_NB_SCREENS(i)
- {
- screens[i].getstringsize(str(LANG_SYSFONT_CHANNELS), &w, &h);
- screens[i].putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h*2,
- str(LANG_SYSFONT_CHANNELS));
- screens[i].getstringsize(str(LANG_SYSFONT_MODE), &w, &h);
- screens[i].putsxy(LCD_WIDTH - w, LCD_HEIGHT/2 - h,
- str(LANG_SYSFONT_MODE));
- screens[i].getstringsize(ptr, &w, &h);
- screens[i].putsxy(LCD_WIDTH - w, LCD_HEIGHT/2, ptr);
- screens[i].mono_bitmap(bitmap_icons_7x8[Icon_FastForward],
- LCD_WIDTH/2 + 8, LCD_HEIGHT/2 - 4, 7, 8);
-
- screens[i].update();
- }
-
- button = button_get(true);
- switch (button) {
- case BUTTON_LEFT:
- case BUTTON_F2 | BUTTON_LEFT:
- global_settings.rec_quality++;
- if(global_settings.rec_quality > 7)
- global_settings.rec_quality = 0;
- used = true;
- break;
-
- case BUTTON_DOWN:
- case BUTTON_F2 | BUTTON_DOWN:
- global_settings.rec_frequency++;
- if(global_settings.rec_frequency > 5)
- global_settings.rec_frequency = 0;
- used = true;
- break;
-
- case BUTTON_RIGHT:
- case BUTTON_F2 | BUTTON_RIGHT:
- global_settings.rec_channels++;
- if(global_settings.rec_channels > 1)
- global_settings.rec_channels = 0;
- used = true;
- break;
-
- case BUTTON_F2 | BUTTON_REL:
- if ( used )
- exit = true;
- used = true;
- break;
-
- case BUTTON_F2 | BUTTON_REPEAT:
- used = true;
- break;
-
- default:
- if(default_event_handler(button) == SYS_USB_CONNECTED)
- return true;
- break;
- }
- }
-
- rec_init_recording_options(&rec_options);
- rec_set_recording_options(&rec_options);
-
- set_gain();
-
- settings_save();
- FOR_NB_SCREENS(i)
- screens[i].setfont(FONT_UI);
-
- return false;
-}
-
-static bool f3_rec_screen(void)
-{
- bool exit = false;
- bool used = false;
- int w, h;
- int button;
- const char *src_str[] =
- {
- str(LANG_SYSFONT_RECORDING_SRC_MIC),
- str(LANG_SYSFONT_LINE_IN),
- str(LANG_SYSFONT_RECORDING_SRC_DIGITAL)
- };
- struct audio_recording_options rec_options;
-
- FOR_NB_SCREENS(i)
- {
- screens[i].set_viewport(NULL);
- screens[i].setfont(FONT_SYSFIXED);
- screens[i].getstringsize("A",&w,&h);
- }
-
- while (!exit) {
- const char* ptr = src_str[global_settings.rec_source];
- FOR_NB_SCREENS(i)
- {
- screens[i].clear_display();
-
- /* Recording source */
- screens[i].putsxy(0, LCD_HEIGHT/2 - h*2,
- str(LANG_SYSFONT_RECORDING_SOURCE));
-
- screens[i].getstringsize(ptr, &w, &h);
- screens[i].putsxy(0, LCD_HEIGHT/2-h, ptr);
- screens[i].mono_bitmap(bitmap_icons_7x8[Icon_FastBackward],
- LCD_WIDTH/2 - 16, LCD_HEIGHT/2 - 4, 7, 8);
- }
-
- /* trigger setup */
- ptr = str(LANG_SYSFONT_RECORD_TRIGGER);
- FOR_NB_SCREENS(i)
- {
- screens[i].getstringsize(ptr,&w,&h);
- screens[i].putsxy((LCD_WIDTH-w)/2, LCD_HEIGHT - h*2, ptr);
- screens[i].mono_bitmap(bitmap_icons_7x8[Icon_DownArrow],
- LCD_WIDTH/2 - 3, LCD_HEIGHT - h*3, 7, 8);
-
- screens[i].update();
- }
-
- button = button_get(true);
- switch (button) {
- case BUTTON_DOWN:
- case BUTTON_F3 | BUTTON_DOWN:
-#ifndef SIMULATOR
- rectrigger();
- settings_apply_trigger();
-#endif
- exit = true;
- break;
-
- case BUTTON_LEFT:
- case BUTTON_F3 | BUTTON_LEFT:
- global_settings.rec_source++;
- if(global_settings.rec_source > AUDIO_SRC_MAX)
- global_settings.rec_source = 0;
- used = true;
- break;
-
- case BUTTON_F3 | BUTTON_REL:
- if ( used )
- exit = true;
- used = true;
- break;
-
- case BUTTON_F3 | BUTTON_REPEAT:
- used = true;
- break;
-
- default:
- if(default_event_handler(button) == SYS_USB_CONNECTED)
- return true;
- break;
- }
- }
-
- rec_init_recording_options(&rec_options);
- rec_set_recording_options(&rec_options);
-
- set_gain();
-
- settings_save();
- FOR_NB_SCREENS(i)
- screens[i].setfont(FONT_UI);
-
- return false;
-}
-#endif /* CONFIG_KEYPAD == RECORDER_PAD */
-
#if CONFIG_CODEC == SWCODEC
void audio_beep(int duration)
{
diff --git a/apps/recorder/resize.c b/apps/recorder/resize.c
index ac6b7a3120..6f561039c3 100644
--- a/apps/recorder/resize.c
+++ b/apps/recorder/resize.c
@@ -63,14 +63,8 @@
#endif
#include <jpeg_load.h>
-#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))))
-#define MULQ(a, b) ((int32_t) (((int16_t) (a)) * ((int16_t) (b))))
-#else
#define MULUQ(a, b) ((a) * (b))
#define MULQ(a, b) ((a) * (b))
-#endif
#ifdef HAVE_LCD_COLOR
#define CHANNEL_BYTES (sizeof(struct uint32_argb)/sizeof(uint32_t))
@@ -151,18 +145,6 @@ int recalc_dimension(struct dim *dst, struct dim *src)
"movclr.l %%acc" #num ", %0" \
: "=d" (dest) \
)
-#elif defined(CPU_SH)
-/* calculate the 32-bit product of unsigned 16-bit op1 and op2 */
-static inline int32_t mul_s16_s16(int16_t op1, int16_t op2)
-{
- return (int32_t)(op1 * op2);
-}
-
-/* calculate the 32-bit product of signed 16-bit op1 and op2 */
-static inline uint32_t mul_u16_u16(uint16_t op1, uint16_t op2)
-{
- return (uint32_t)(op1 * op2);
-}
#endif
/* horizontal area average scaler */
@@ -171,13 +153,8 @@ static bool scale_h_area(void *out_line_ptr,
{
SDEBUGF("scale_h_area\n");
unsigned int ix, ox, oxe, mul;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- const uint32_t h_i_val = ctx->src->width,
- h_o_val = ctx->bm->width;
-#else
const uint32_t h_i_val = ctx->h_i_val,
h_o_val = ctx->h_o_val;
-#endif
#ifdef HAVE_LCD_COLOR
struct uint32_argb rgbvalacc = { 0, 0, 0, 0 },
rgbvaltmp = { 0, 0, 0, 0 },
@@ -298,15 +275,6 @@ static bool scale_h_area(void *out_line_ptr,
mul = h_o_val - oxe;
MAC(tmp, mul, 0);
MAC_OUT(acc, 0);
-#elif defined(CPU_SH)
-/* SH-1 16x16->32 math */
- /* add saved partial pixel from start of area */
- acc = mul_u16_u16(acc, h_o_val) + mul_u16_u16(tmp, mul);
-
- /* get new pixel , then add its partial coverage to this area */
- tmp = *(part->buf);
- mul = h_o_val - oxe;
- acc += mul_u16_u16(tmp, mul);
#else
/* generic C math */
/* add saved partial pixel from start of area */
@@ -317,10 +285,8 @@ static bool scale_h_area(void *out_line_ptr,
mul = h_o_val - oxe;
acc += tmp * mul;
#endif /* CPU */
-#if !(defined(CPU_SH) || defined(TEST_SH_MATH))
/* round, divide, and either store or accumulate to output row */
acc = (acc + (1 << 21)) >> 22;
-#endif
if (accum)
{
acc += out_line[ox];
@@ -346,13 +312,8 @@ static bool scale_h_area(void *out_line_ptr,
static inline bool scale_v_area(struct rowset *rset, struct scaler_context *ctx)
{
uint32_t mul, oy, iy, oye;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- const uint32_t v_i_val = ctx->src->height,
- v_o_val = ctx->bm->height;
-#else
const uint32_t v_i_val = ctx->v_i_val,
v_o_val = ctx->v_o_val;
-#endif
/* Set up rounding and scale factors */
mul = 0;
@@ -409,13 +370,8 @@ static bool scale_h_linear(void *out_line_ptr, struct scaler_context *ctx,
bool accum)
{
unsigned int ix, ox, ixe;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- const uint32_t h_i_val = ctx->src->width - 1,
- h_o_val = ctx->bm->width - 1;
-#else
const uint32_t h_i_val = ctx->h_i_val,
h_o_val = ctx->h_o_val;
-#endif
/* type x = x is an ugly hack for hiding an unitialized data warning. The
values are conditionally initialized before use, but other values are
set such that this will occur before these are used.
@@ -531,9 +487,6 @@ static bool scale_h_linear(void *out_line_ptr, struct scaler_context *ctx,
#if defined(CPU_COLDFIRE)
/* Coldfire EMAC math */
MAC(val, h_o_val, 0);
-#elif defined(CPU_SH)
-/* SH-1 16x16->32 math */
- val = mul_u16_u16(val, h_o_val);
#else
/* generic C math */
val = val * h_o_val;
@@ -552,9 +505,6 @@ static bool scale_h_linear(void *out_line_ptr, struct scaler_context *ctx,
#if defined(CPU_COLDFIRE)
/* Coldfire EMAC math */
MAC(inc, ixe, 0);
-#elif defined(CPU_SH)
-/* SH-1 16x16->32 math */
- val += mul_s16_s16(inc, ixe);
#else
/* generic C math */
val += inc * ixe;
@@ -565,16 +515,10 @@ static bool scale_h_linear(void *out_line_ptr, struct scaler_context *ctx,
MAC_OUT(val, 0);
#endif
/* Now multiply the color increment to its proper value */
-#if defined(CPU_SH)
-/* SH-1 16x16->32 math */
- inc = mul_s16_s16(inc, h_i_val);
-#else
/* generic C math */
inc *= h_i_val;
-#endif
} else
val += inc;
-#if !(defined(CPU_SH) || defined(TEST_SH_MATH))
/* round and scale values, and accumulate or store to output */
if (accum)
{
@@ -582,15 +526,6 @@ static bool scale_h_linear(void *out_line_ptr, struct scaler_context *ctx,
} else {
out_line[ox] = (val + (1 << 21)) >> 22;
}
-#else
- /* round and scale values, and accumulate or store to output */
- if (accum)
- {
- out_line[ox] += val;
- } else {
- out_line[ox] = val;
- }
-#endif
#endif
ixe += h_i_val;
}
@@ -603,13 +538,8 @@ static inline bool scale_v_linear(struct rowset *rset,
{
uint32_t iy, iye;
int32_t oy;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- const uint32_t v_i_val = ctx->src->height - 1,
- v_o_val = ctx->bm->height - 1;
-#else
const uint32_t v_i_val = ctx->v_i_val,
v_o_val = ctx->v_o_val;
-#endif
/* Set up our buffers, to store the increment and current value for each
column, and one temp buffer used to read in new rows.
*/
@@ -892,9 +822,6 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
ctx.bm = bm;
ctx.src = src;
ctx.dither = dither;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- uint32_t div;
-#endif
#if !defined(PLUGIN)
#if defined(HAVE_LCD_COLOR) && defined(HAVE_JPEG)
ctx.output_row = format_index ? output_row_32_native_fromyuv
@@ -914,23 +841,15 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
{
#endif
ctx.h_scaler = scale_h_area;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- div = sw;
-#else
uint32_t h_div = (1U << 24) / sw;
ctx.h_i_val = sw * h_div;
ctx.h_o_val = dw * h_div;
-#endif
#ifdef HAVE_UPSCALER
} else {
ctx.h_scaler = scale_h_linear;
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- div = dw - 1;
-#else
uint32_t h_div = (1U << 24) / (dw - 1);
ctx.h_i_val = (sw - 1) * h_div;
ctx.h_o_val = (dw - 1) * h_div;
-#endif
}
#endif
#ifdef CPU_COLDFIRE
@@ -941,27 +860,17 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
if (sh > dh)
#endif
{
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- div *= sh;
- ctx.recip = ((uint32_t)(-div)) / div + 1;
-#else
uint32_t v_div = (1U << 22) / sh;
ctx.v_i_val = sh * v_div;
ctx.v_o_val = dh * v_div;
-#endif
ret = scale_v_area(rset, &ctx);
}
#ifdef HAVE_UPSCALER
else
{
-#if defined(CPU_SH) || defined (TEST_SH_MATH)
- div *= dh - 1;
- ctx.recip = ((uint32_t)(-div)) / div + 1;
-#else
uint32_t v_div = (1U << 22) / dh;
ctx.v_i_val = (sh - 1) * v_div;
ctx.v_o_val = (dh - 1) * v_div;
-#endif
ret = scale_v_linear(rset, &ctx);
}
#endif
diff --git a/apps/recorder/resize.h b/apps/recorder/resize.h
index 7e0a991eea..0282a17197 100644
--- a/apps/recorder/resize.h
+++ b/apps/recorder/resize.h
@@ -43,59 +43,7 @@
#define MAX_SC_STACK_ALLOC 0
#define HAVE_UPSCALER 1
-#if defined(CPU_SH)
-/* perform 32x32->40 unsigned multiply, round off and return top 8 bits */
-static inline uint32_t sc_mul_u32_rnd(uint32_t m, uint32_t n)
-{
- unsigned r, t1, t2, t3;
- unsigned h = 1 << 15;
- /* notation:
- m = ab, n = cd
- final result is (((a *c) << 32) + ((b * c + a * d) << 16) + b * d +
- (1 << 31)) >> 32
- */
- asm (
- "swap.w %[m], %[t1]\n\t" /* t1 = ba */
- "mulu %[m], %[n]\n\t" /* b * d */
- "swap.w %[n], %[t3]\n\t" /* t3 = dc */
- "sts macl, %[r]\n\t" /* r = b * d */
- "mulu %[m], %[t3]\n\t" /* b * c */
- "shlr16 %[r]\n\t"
- "sts macl, %[t2]\n\t" /* t2 = b * c */
- "mulu %[t1], %[t3]\n\t" /* a * c */
- "add %[t2], %[r]\n\t"
- "sts macl, %[t3]\n\t" /* t3 = a * c */
- "mulu %[t1], %[n]\n\t" /* a * d */
- "shll16 %[t3]\n\t"
- "sts macl, %[t2]\n\t" /* t2 = a * d */
- "add %[t2], %[r]\n\t"
- "add %[t3], %[r]\n\t" /* r = ((b * d) >> 16) + (b * c + a * d) +
- ((a * c) << 16) */
- "add %[h], %[r]\n\t" /* round result */
- "shlr16 %[r]\n\t" /* truncate result */
- : /* outputs */
- [r] "=&r"(r),
- [t1]"=&r"(t1),
- [t2]"=&r"(t2),
- [t3]"=&r"(t3)
- : /* inputs */
- [h] "r" (h),
- [m] "r" (m),
- [n] "r" (n)
- );
- return r;
-}
-#elif defined(TEST_SH_MATH)
-static inline uint32_t sc_mul_u32_rnd(uint32_t op1, uint32_t op2)
-{
- uint64_t tmp = (uint64_t)op1 * op2;
- tmp += 1LU << 31;
- tmp >>= 32;
- return tmp;
-}
-#else
#define SC_OUT(n, c) (((n) + (1 << 23)) >> 24)
-#endif
#ifndef SC_OUT
#define SC_OUT(n, c) (sc_mul_u32_rnd(n, (c)->recip))
#endif
@@ -125,14 +73,10 @@ struct uint32_argb {
horizontal scaler, and row output
*/
struct scaler_context {
-#if defined(CPU_SH) || defined(TEST_SH_MATH)
- uint32_t recip;
-#else
uint32_t h_i_val;
uint32_t h_o_val;
uint32_t v_i_val;
uint32_t v_o_val;
-#endif
struct bitmap *bm;
struct dim *src;
unsigned char *buf;
diff --git a/apps/root_menu.c b/apps/root_menu.c
index 49379bbbfc..9ff7325ce1 100644
--- a/apps/root_menu.c
+++ b/apps/root_menu.c
@@ -484,21 +484,6 @@ MENUITEM_RETURNVALUE(playlists, ID2P(LANG_CATALOG), GO_TO_PLAYLISTS_SCREEN,
MENUITEM_RETURNVALUE(system_menu_, ID2P(LANG_SYSTEM), GO_TO_SYSTEM_SCREEN,
NULL, Icon_System_menu);
-#if CONFIG_KEYPAD == PLAYER_PAD
-static int do_shutdown(void)
-{
-#if CONFIG_CHARGING
- if (charger_inserted())
- charging_splash();
- else
-#endif
- sys_poweroff();
- return 0;
-}
-MENUITEM_FUNCTION(do_shutdown_item, 0, ID2P(LANG_SHUTDOWN),
- do_shutdown, NULL, NULL, Icon_NOICON);
-#endif
-
struct menu_item_ex root_menu_;
static struct menu_callback_with_desc root_menu_desc = {
item_callback, ID2P(LANG_ROCKBOX_TITLE), Icon_Rockbox };
@@ -521,9 +506,6 @@ static struct menu_table menu_table[] = {
{ "playlists", &playlists },
{ "plugins", &rocks_browser },
{ "system_menu", &system_menu_ },
-#if CONFIG_KEYPAD == PLAYER_PAD
- { "shutdown", &do_shutdown_item },
-#endif
{ "shortcuts", &shortcut_menu },
};
#define MAX_MENU_ITEMS (sizeof(menu_table) / sizeof(struct menu_table))
diff --git a/apps/screen_access.c b/apps/screen_access.c
index fe5e943cca..a966d07876 100644
--- a/apps/screen_access.c
+++ b/apps/screen_access.c
@@ -61,10 +61,6 @@ static int screen_helper_getnblines(void)
#ifdef HAVE_LCD_BITMAP
if(global_settings.statusbar != STATUSBAR_OFF)
height -= STATUSBAR_HEIGHT;
-#ifdef HAVE_BUTTONBAR
- if(global_settings.buttonbar && screens[0].has_buttonbar)
- height -= BUTTONBAR_HEIGHT;
-#endif
#endif
return height / screens[0].getcharheight();
}
@@ -134,10 +130,6 @@ static int screen_helper_remote_getnblines(void)
#ifdef HAVE_LCD_BITMAP
if(global_settings.statusbar != STATUSBAR_OFF)
height -= STATUSBAR_HEIGHT;
-#ifdef HAVE_BUTTONBAR
- if(global_settings.buttonbar && screens[1].has_buttonbar)
- height -= BUTTONBAR_HEIGHT;
-#endif
#endif
return height / screens[1].getcharheight();
}
@@ -276,9 +268,6 @@ struct screen screens[NB_SCREENS] =
.backdrop_load=&backdrop_load,
.backdrop_show=&backdrop_show,
#endif
-#ifdef HAVE_BUTTONBAR
- .has_buttonbar=false,
-#endif
#if defined(HAVE_LCD_BITMAP)
.set_framebuffer = (void*)lcd_set_framebuffer,
#if defined(HAVE_LCD_COLOR)
@@ -369,14 +358,11 @@ struct screen screens[NB_SCREENS] =
.backlight_off=&remote_backlight_off,
.is_backlight_on=&is_remote_backlight_on,
.backlight_set_timeout=&remote_backlight_set_timeout,
-
+
#if LCD_DEPTH > 1
.backdrop_load=&remote_backdrop_load,
.backdrop_show=&remote_backdrop_show,
#endif
-#ifdef HAVE_BUTTONBAR
- .has_buttonbar=false,
-#endif
#if defined(HAVE_LCD_BITMAP)
.set_framebuffer = (void*)lcd_remote_set_framebuffer,
#endif
diff --git a/apps/screen_access.h b/apps/screen_access.h
index c4a87849b8..6b90bc9313 100644
--- a/apps/screen_access.h
+++ b/apps/screen_access.h
@@ -23,7 +23,6 @@
#define _SCREEN_ACCESS_H_
#include "lcd.h"
-#include "buttonbar.h"
#include "scroll_engine.h"
#include "backdrop.h"
#include "line.h"
@@ -64,9 +63,6 @@ struct screen
#if (CONFIG_LED == LED_VIRTUAL) || defined(HAVE_REMOTE_LCD)
bool has_disk_led;
#endif
-#ifdef HAVE_BUTTONBAR
- bool has_buttonbar;
-#endif
void (*set_drawmode)(int mode);
void (*set_viewport)(struct viewport* vp);
int (*getwidth)(void);
diff --git a/apps/screens.c b/apps/screens.c
index e7262704f0..52e8cadc7e 100644
--- a/apps/screens.c
+++ b/apps/screens.c
@@ -56,230 +56,8 @@
#include "language.h"
#include "replaygain.h"
-#if defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2)
-#include "adc.h"
-#endif
-
-#if (CONFIG_STORAGE & STORAGE_MMC) && (defined(ARCHOS_ONDIOSP) || defined(ARCHOS_ONDIOFM))
-int mmc_remove_request(void)
-{
- struct queue_event ev;
- FOR_NB_SCREENS(i)
- screens[i].clear_display();
- splash(0, ID2P(LANG_REMOVE_MMC));
-
- while (1)
- {
- queue_wait_w_tmo(&button_queue, &ev, HZ/2);
- switch (ev.id)
- {
- case SYS_HOTSWAP_EXTRACTED:
- return SYS_HOTSWAP_EXTRACTED;
-
- case SYS_USB_DISCONNECTED:
- return SYS_USB_DISCONNECTED;
- }
- }
-}
-#endif
#include "ctype.h"
-/* the charging screen is only used for archos targets */
-#if CONFIG_CHARGING && !defined(HAVE_POWEROFF_WHILE_CHARGING) && defined(CPU_SH)
-
-#ifdef HAVE_LCD_BITMAP
-static void charging_display_info(bool animate)
-{
- unsigned char charging_logo[36];
- const int pox_x = (LCD_WIDTH - sizeof(charging_logo)) / 2;
- const int pox_y = 32;
- static unsigned phase = 3;
- unsigned i;
-
-#if !defined(NEED_ATA_POWER_BATT_MEASURE)
- {
- int battv = battery_voltage();
- lcd_putsf(0, 7, " Batt: %d.%02dV %d%% ", battv / 1000,
- (battv % 1000) / 10, battery_level());
- }
-#elif defined(ARCHOS_FMRECORDER) || defined(ARCHOS_RECORDERV2)
- /* IDE power is normally off here, so display input current instead */
- lcd_putsf(7, 7, "%dmA ",
- (adc_read(ADC_EXT_POWER) * EXT_SCALE_FACTOR) / 10000);
-#endif
-
-#ifdef ARCHOS_RECORDER
- lcd_puts(0, 2, "Charge mode:");
-
- const char *s;
- if (charge_state == CHARGING)
- s = str(LANG_BATTERY_CHARGE);
- else if (charge_state == TOPOFF)
- s = str(LANG_BATTERY_TOPOFF_CHARGE);
- else if (charge_state == TRICKLE)
- s = str(LANG_BATTERY_TRICKLE_CHARGE);
- else
- s = "not charging";
-
- lcd_puts(0, 3, s);
- if (!charger_enabled())
- animate = false;
-#endif /* ARCHOS_RECORDER */
-
- /* middle part */
- memset(charging_logo+3, 0x00, 32);
- charging_logo[0] = 0x3C;
- charging_logo[1] = 0x24;
- charging_logo[2] = charging_logo[35] = 0xFF;
-
- if (!animate)
- { /* draw the outline */
- /* middle part */
- lcd_mono_bitmap(charging_logo, pox_x, pox_y + 8,
- sizeof(charging_logo), 8);
- lcd_set_drawmode(DRMODE_FG);
- /* upper line */
- charging_logo[0] = charging_logo[1] = 0x00;
- memset(charging_logo+2, 0x80, 34);
- lcd_mono_bitmap(charging_logo, pox_x, pox_y, sizeof(charging_logo), 8);
- /* lower line */
- memset(charging_logo+2, 0x01, 34);
- lcd_mono_bitmap(charging_logo, pox_x, pox_y + 16,
- sizeof(charging_logo), 8);
- lcd_set_drawmode(DRMODE_SOLID);
- }
- else
- { /* animate the middle part */
- for (i = 3; i<MIN(sizeof(charging_logo)-1, phase); i++)
- {
- if ((i-phase) % 8 == 0)
- { /* draw a "bubble" here */
- unsigned bitpos;
- bitpos = (phase + i/8) % 15; /* "bounce" effect */
- if (bitpos > 7)
- bitpos = 14 - bitpos;
- charging_logo[i] = BIT_N(bitpos);
- }
- }
- lcd_mono_bitmap(charging_logo, pox_x, pox_y + 8,
- sizeof(charging_logo), 8);
- phase++;
- }
- lcd_update();
-}
-#else /* not HAVE_LCD_BITMAP */
-
-static unsigned long logo_chars[4];
-static const unsigned char logo_pattern[] = {
- 0x07, 0x04, 0x1c, 0x14, 0x1c, 0x04, 0x07, 0, /* char 1 */
- 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0, /* char 2 */
- 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0, /* char 3 */
- 0x1f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x1f, 0, /* char 4 */
-};
-
-static void logo_lock_patterns(bool on)
-{
- int i;
-
- if (on)
- {
- for (i = 0; i < 4; i++)
- logo_chars[i] = lcd_get_locked_pattern();
- }
- else
- {
- for (i = 0; i < 4; i++)
- lcd_unlock_pattern(logo_chars[i]);
- }
-}
-
-static void charging_display_info(bool animate)
-{
- int battv;
- unsigned i, ypos;
- static unsigned phase = 3;
- char buf[32];
-
- battv = battery_voltage();
- lcd_putsf(4, 1, " %d.%02dV", battv / 1000, (battv % 1000) / 10);
-
- memcpy(buf, logo_pattern, 32); /* copy logo patterns */
-
- if (!animate) /* build the screen */
- {
- lcd_double_height(false);
- lcd_puts(0, 0, "[Charging]");
- for (i = 0; i < 4; i++)
- lcd_putc(i, 1, logo_chars[i]);
- }
- else /* animate the logo */
- {
- for (i = 3; i < MIN(19, phase); i++)
- {
- if ((i - phase) % 5 == 0)
- { /* draw a "bubble" here */
- ypos = (phase + i/5) % 9; /* "bounce" effect */
- if (ypos > 4)
- ypos = 8 - ypos;
- buf[5 - ypos + 8 * (i/5)] |= 0x10u >> (i%5);
- }
- }
- phase++;
- }
-
- for (i = 0; i < 4; i++)
- lcd_define_pattern(logo_chars[i], buf + 8 * i);
-
- lcd_update();
-}
-#endif /* (not) HAVE_LCD_BITMAP */
-
-/* blocks while charging, returns on event:
- 1 if charger cable was removed
- 2 if Off/Stop key was pressed
- 3 if On key was pressed
- 4 if USB was connected */
-
-int charging_screen(void)
-{
- unsigned int button;
- int rc = 0;
-
- ide_power_enable(false); /* power down the disk, else would be spinning */
-
- lcd_clear_display();
- backlight_set_timeout(global_settings.backlight_timeout);
-#ifdef HAVE_REMOTE_LCD
- remote_backlight_set_timeout(global_settings.remote_backlight_timeout);
-#endif
- backlight_set_timeout_plugged(global_settings.backlight_timeout_plugged);
-
-#ifdef HAVE_LCD_CHARCELLS
- logo_lock_patterns(true);
-#endif
- charging_display_info(false);
-
- do
- {
- gui_syncstatusbar_draw(&statusbars, false);
- charging_display_info(true);
- button = get_action(CONTEXT_STD,HZ/3);
- if (button == ACTION_STD_OK)
- rc = 2;
- else if (usb_detect() == USB_INSERTED)
- rc = 3;
- /* do not depend on power management thread here */
- else if (!(power_input_status() & POWER_INPUT_MAIN_CHARGER))
- rc = 1;
- } while (!rc);
-
-#ifdef HAVE_LCD_CHARCELLS
- logo_lock_patterns(false);
-#endif
- return rc;
-}
-#endif /* CONFIG_CHARGING && !HAVE_POWEROFF_WHILE_CHARGING && defined(CPU_SH) */
-
#if CONFIG_CHARGING
void charging_splash(void)
{
@@ -585,44 +363,6 @@ bool set_time_screen(const char* title, struct tm *tm)
}
#endif /* defined(HAVE_LCD_BITMAP) && (CONFIG_RTC != 0) */
-#if (CONFIG_KEYPAD == RECORDER_PAD) && !defined(HAVE_SW_POWEROFF)
-#include "scroll_engine.h"
-bool shutdown_screen(void)
-{
- int button;
- bool done = false;
- long time_entered = current_tick;
-
- lcd_scroll_stop();
-
- splash(0, str(LANG_CONFIRM_SHUTDOWN));
-
- while(!done && TIME_BEFORE(current_tick,time_entered+HZ*2))
- {
- button = get_action(CONTEXT_STD,HZ);
- switch(button)
- {
- case ACTION_STD_CANCEL:
- sys_poweroff();
- break;
-
- /* do nothing here, because ACTION_NONE might be caused
- * by timeout or button release. In case of timeout the loop
- * is terminated by TIME_BEFORE */
- case ACTION_NONE:
- break;
-
- default:
- if(default_event_handler(button) == SYS_USB_CONNECTED)
- return true;
- done = true;
- break;
- }
- }
- return false;
-}
-#endif
-
static const int id3_headers[]=
{
LANG_ID3_TITLE,
diff --git a/apps/screens.h b/apps/screens.h
index d8b697a2a0..2201f679bd 100644
--- a/apps/screens.h
+++ b/apps/screens.h
@@ -26,9 +26,6 @@
struct screen;
-#if CONFIG_CHARGING && !defined(HAVE_POWEROFF_WHILE_CHARGING) && defined(CPU_SH)
-int charging_screen(void);
-#endif
#if CONFIG_CHARGING || defined(SIMULATOR)
void charging_splash(void);
#endif
diff --git a/apps/settings.c b/apps/settings.c
index 046c14628c..185e2c3576 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -74,9 +74,6 @@
#include "bootchart.h"
#include "scroll_engine.h"
-#if CONFIG_CODEC == MAS3507D
-void dac_line_in(bool enable);
-#endif
struct user_settings global_settings;
struct system_status global_status;
@@ -759,16 +756,6 @@ void sound_settings_apply(void)
#endif
sound_set(SOUND_CHANNELS, global_settings.channel_config);
sound_set(SOUND_STEREO_WIDTH, global_settings.stereo_width);
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- sound_set(SOUND_LOUDNESS, global_settings.loudness);
- sound_set(SOUND_AVC, global_settings.avc);
- sound_set(SOUND_MDB_STRENGTH, global_settings.mdb_strength);
- sound_set(SOUND_MDB_HARMONICS, global_settings.mdb_harmonics);
- sound_set(SOUND_MDB_CENTER, global_settings.mdb_center);
- sound_set(SOUND_MDB_SHAPE, global_settings.mdb_shape);
- sound_set(SOUND_MDB_ENABLE, global_settings.mdb_enable);
- sound_set(SOUND_SUPERBASS, global_settings.superbass);
-#endif
#ifdef AUDIOHW_HAVE_BASS_CUTOFF
sound_set(SOUND_BASS_CUTOFF, global_settings.bass_cutoff);
#endif
@@ -868,9 +855,6 @@ void settings_apply(bool read_disk)
#ifdef HAVE_DISK_STORAGE
storage_spindown(global_settings.disk_spindown);
#endif
-#if (CONFIG_CODEC == MAS3507D) && (CONFIG_PLATFORM & PLATFORM_NATIVE)
- dac_line_in(global_settings.line_in);
-#endif
set_poweroff_timeout(global_settings.poweroff);
if (global_settings.sleeptimer_on_startup)
set_sleeptimer_duration(global_settings.sleeptimer_duration);
diff --git a/apps/settings.h b/apps/settings.h
index b72eec6f8b..4661966ad2 100644
--- a/apps/settings.h
+++ b/apps/settings.h
@@ -535,10 +535,6 @@ struct user_settings
int remote_statusbar;
#endif
-#if CONFIG_KEYPAD == RECORDER_PAD
- bool buttonbar; /* 0=hide, 1=show */
-#endif
-
#ifdef HAVE_LCD_BITMAP
int scrollbar; /* SCROLLBAR_* enum values */
int scrollbar_width;
@@ -728,10 +724,6 @@ struct user_settings
#endif
#endif /* HAVE_REMOTE_LCD */
-#if CONFIG_CODEC == MAS3507D
- bool line_in; /* false=off, true=active */
-#endif
-
#ifdef HAVE_BUTTON_LIGHT
int buttonlight_timeout;
#endif
diff --git a/apps/settings_list.c b/apps/settings_list.c
index 435a09bb8a..348caec6e5 100644
--- a/apps/settings_list.c
+++ b/apps/settings_list.c
@@ -310,11 +310,7 @@ static const char graphic_numeric[] = "graphic,numeric";
#ifdef HAVE_RECORDING
/* these should be in the config.h files */
-#if CONFIG_CODEC == MAS3587F
-# define DEFAULT_REC_MIC_GAIN 8
-# define DEFAULT_REC_LEFT_GAIN 2
-# define DEFAULT_REC_RIGHT_GAIN 2
-#elif CONFIG_CODEC == SWCODEC
+#if CONFIG_CODEC == SWCODEC
# ifdef HAVE_UDA1380
# define DEFAULT_REC_MIC_GAIN 16
# define DEFAULT_REC_LEFT_GAIN 0
@@ -595,17 +591,6 @@ static void eq_set_default(void* setting, void* defaultval)
{
memcpy(setting, defaultval, sizeof(struct eq_band_setting));
}
-
-#endif
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
-static void set_mdb_enable(bool value)
-{
- sound_set_mdb_enable((int)value);
-}
-static void set_superbass(bool value)
-{
- sound_set_superbass((int)value);
-}
#endif
#ifdef HAVE_QUICKSCREEN
@@ -849,17 +834,6 @@ const struct settings_list settings[] = {
#endif /* HAVE_WM8978 */
#endif /* AUDIOHW_HAVE_EQ */
/* 3-d enhancement effect */
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- SOUND_SETTING(0,loudness, LANG_LOUDNESS, "loudness", SOUND_LOUDNESS),
- /* requires index, uses table defined by driver */
- STRINGCHOICE_SETTING(F_SOUNDSETTING,avc,LANG_AUTOVOL,0,"auto volume",
- "off,20 ms,2 s,4 s,8 s,", sound_set_avc, 5,
- LANG_OFF,TALK_ID(20, UNIT_MS),TALK_ID(2, UNIT_SEC),
- TALK_ID(4, UNIT_SEC),TALK_ID(8, UNIT_SEC)),
- OFFON_SETTING(F_SOUNDSETTING, superbass, LANG_SUPERBASS, false, "superbass",
- set_superbass),
-#endif
-
CHOICE_SETTING(F_SOUNDSETTING, channel_config, LANG_CHANNEL_CONFIGURATION,
0,"channels",
"stereo,mono,custom,mono left,mono right,karaoke",
@@ -993,9 +967,6 @@ const struct settings_list settings[] = {
INT(DEFAULT_THEME_SEPARATOR),"list separator color",NULL,UNUSED},
#endif
#endif
-#if CONFIG_KEYPAD == RECORDER_PAD
- OFFON_SETTING(F_THEMESETTING,buttonbar, LANG_BUTTON_BAR ,true,"buttonbar", NULL),
-#endif
CHOICE_SETTING(F_THEMESETTING, volume_type, LANG_VOLUME_DISPLAY, 0,
"volume display", graphic_numeric, NULL, 2,
ID2P(LANG_DISPLAY_GRAPHIC),
@@ -1336,21 +1307,6 @@ const struct settings_list settings[] = {
"peak meter clipcounter", NULL),
#endif /* HAVE_RECORDING */
#endif /* HAVE_LCD_BITMAP */
-#if (CONFIG_CODEC == MAS3587F) || (CONFIG_CODEC == MAS3539F)
- SOUND_SETTING(F_SOUNDSETTING, mdb_strength, LANG_MDB_STRENGTH,
- "mdb strength", SOUND_MDB_STRENGTH),
- SOUND_SETTING(F_SOUNDSETTING, mdb_harmonics, LANG_MDB_HARMONICS,
- "mdb harmonics", SOUND_MDB_HARMONICS),
- SOUND_SETTING(F_SOUNDSETTING, mdb_center, LANG_MDB_CENTER,
- "mdb center", SOUND_MDB_CENTER),
- SOUND_SETTING(F_SOUNDSETTING, mdb_shape, LANG_MDB_SHAPE,
- "mdb shape", SOUND_MDB_SHAPE),
- OFFON_SETTING(F_SOUNDSETTING, mdb_enable, LANG_MDB_ENABLE,
- false, "mdb enable", set_mdb_enable),
-#endif
-#if CONFIG_CODEC == MAS3507D
- OFFON_SETTING(F_SOUNDSETTING, line_in,LANG_LINE_IN,false,"line in",NULL),
-#endif
/* voice */
OFFON_SETTING(F_TEMPVAR, talk_menu, LANG_VOICE_MENU, true, "talk menu", NULL),
CHOICE_SETTING(0, talk_dir, LANG_VOICE_DIR, 0,
@@ -1442,15 +1398,6 @@ const struct settings_list settings[] = {
INT(DEFAULT_REC_RIGHT_GAIN),
"rec right gain",NULL,UNUSED},
#endif /* DEFAULT_REC_RIGHT_GAIN */
-#if CONFIG_CODEC == MAS3587F
- {F_T_INT|F_RECSETTING,&global_settings.rec_frequency,
- LANG_FREQUENCY, INT(0), "rec frequency",
- "44,48,32,22,24,16", UNUSED},
- INT_SETTING(F_RECSETTING, rec_quality, LANG_RECORDING_QUALITY, 5,
- "rec quality", UNIT_INT, 0, 7, 1, NULL, NULL, NULL),
- OFFON_SETTING(F_RECSETTING, rec_editable, LANG_RECORDING_EDITABLE, false,
- "editable recordings", NULL),
-#endif /* CONFIG_CODEC == MAS3587F */
#if CONFIG_CODEC == SWCODEC
{F_T_INT|F_RECSETTING,&global_settings.rec_frequency,
LANG_FREQUENCY,INT(REC_FREQ_DEFAULT),
diff --git a/apps/talk.c b/apps/talk.c
index 72b9a2eb30..3aedaf34ec 100644
--- a/apps/talk.c
+++ b/apps/talk.c
@@ -107,17 +107,13 @@ struct voicefile_header /* file format of our voice file */
/***************** Globals *****************/
-#if (CONFIG_CODEC == SWCODEC && MEMORYSIZE <= 2) || defined(ONDIO_SERIES)
+#if (CONFIG_CODEC == SWCODEC && MEMORYSIZE <= 2)
/* On low memory swcodec targets the entire voice file wouldn't fit in memory
- * together with codecs, so we load clips each time they are accessed.
- * The Ondios have slow storage access and loading the entire voice file would
- * take several seconds, so we use the same mechanism. */
+ * together with codecs, so we load clips each time they are accessed. */
#define TALK_PROGRESSIVE_LOAD
-#if !defined(ONDIO_SERIES)
/* 70+ clips should fit into 100k */
#define MAX_CLIP_BUFFER_SIZE (100000)
#endif
-#endif
#ifndef MAX_CLIP_BUFFER_SIZE
/* 1GB should be enough for everybody; will be capped to voicefile size */
@@ -212,14 +208,6 @@ static void sync_callback(int handle, bool sync_on)
mutex_lock(&read_buffer_mutex);
else
mutex_unlock(&read_buffer_mutex);
-#if CONFIG_CPU == SH7034
- /* DMA must not interrupt during buffer move or commit_buffer copies
- * from inconsistent buflib buffer */
- if (sync_on)
- CHCR3 &= ~0x0001; /* disable the DMA (and therefore the interrupt also) */
- else
- CHCR3 |= 0x0001; /* re-enable the DMA */
-#endif
}
static ssize_t read_to_handle_ex(int fd, struct buflib_context *ctx, int handle,
@@ -781,9 +769,6 @@ void talk_force_shutup(void)
if (QUEUE_LEVEL == 0) /* has ended anyway */
return;
-#if CONFIG_CPU == SH7034
- CHCR3 &= ~0x0001; /* disable the DMA (and therefore the interrupt also) */
-#endif /* CONFIG_CPU == SH7034 */
/* search next frame boundary and continue up to there */
pos = search = mp3_get_pos();
end = buflib_get_data(&clip_ctx, queue[queue_read].handle);
@@ -814,10 +799,6 @@ void talk_force_shutup(void)
queue_write = (queue_read + 1) & QUEUE_MASK; /* will be empty after next callback */
queue[queue_read].length = sent; /* current one ends after this */
-#if CONFIG_CPU == SH7034
- DTCR3 = sent; /* let the DMA finish this frame */
- CHCR3 |= 0x0001; /* re-enable DMA */
-#endif /* CONFIG_CPU == SH7034 */
thumbnail_buf_used = 0;
return;
}
@@ -854,10 +835,6 @@ static void queue_clip(struct queue_entry *clip, bool enqueue)
if (!clip->length)
return; /* safety check */
-#if CONFIG_CPU == SH7034
- /* disable the DMA temporarily, to be safe of race condition */
- CHCR3 &= ~0x0001;
-#endif
talk_queue_lock();
queue_level = QUEUE_LEVEL; /* check old level */
qe = &queue[queue_write];
@@ -880,12 +857,6 @@ static void queue_clip(struct queue_entry *clip, bool enqueue)
curr_hd[2] = commit_buffer[3];
mp3_play_pause(true); /* kickoff audio */
}
- else
- {
-#if CONFIG_CPU == SH7034
- CHCR3 |= 0x0001; /* re-enable DMA */
-#endif
- }
need_shutup = true;
diff --git a/apps/tree.c b/apps/tree.c
index 8635f98011..9b6ce06af0 100644
--- a/apps/tree.c
+++ b/apps/tree.c
@@ -71,7 +71,6 @@
/* gui api */
#include "list.h"
#include "splash.h"
-#include "buttonbar.h"
#include "quickscreen.h"
#include "appevents.h"
@@ -84,9 +83,6 @@ struct gui_synclist tree_lists;
/* I put it here because other files doesn't use it yet,
* but should be elsewhere since it will be used mostly everywhere */
-#ifdef HAVE_BUTTONBAR
-static struct gui_buttonbar tree_buttonbar;
-#endif
static struct tree_context tc;
char lastfile[MAX_PATH];
@@ -307,11 +303,6 @@ void tree_gui_init(void)
FOR_NB_SCREENS(i)
screens[i].double_height(false);
#endif
-#ifdef HAVE_BUTTONBAR
- gui_buttonbar_init(&tree_buttonbar);
- /* since archos only have one screen, no need to create more than that */
- gui_buttonbar_set_display(&tree_buttonbar, &(screens[SCREEN_MAIN]) );
-#endif
gui_synclist_init(&tree_lists, &tree_get_filename, &tc, false, 1, NULL);
gui_synclist_set_voice_callback(&tree_lists, tree_voice_cb);
gui_synclist_set_icon_callback(&tree_lists,
@@ -464,7 +455,7 @@ static int update_dir(void)
}
#endif
}
-
+
gui_synclist_set_nb_items(&tree_lists, tc.filesindir);
gui_synclist_set_icon_callback(&tree_lists,
global_settings.show_icons?tree_get_fileicon:NULL);
@@ -472,17 +463,6 @@ static int update_dir(void)
tc.selected_item=tc.filesindir-1;
gui_synclist_select_item(&tree_lists, tc.selected_item);
-#ifdef HAVE_BUTTONBAR
- if (global_settings.buttonbar) {
- if (*tc.dirfilter < NUM_FILTER_MODES)
- gui_buttonbar_set(&tree_buttonbar, str(LANG_SYSFONT_DIRBROWSE_F1),
- str(LANG_SYSFONT_DIRBROWSE_F2),
- str(LANG_SYSFONT_DIRBROWSE_F3));
- else
- gui_buttonbar_set(&tree_buttonbar, "<<<", "", "");
- gui_buttonbar_draw(&tree_buttonbar);
- }
-#endif
gui_synclist_draw(&tree_lists);
gui_synclist_speak_item(&tree_lists);
return tc.filesindir;