summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorne Wuff <torne@wolfpuppy.org.uk>2011-11-06 22:44:25 +0000
committerTorne Wuff <torne@wolfpuppy.org.uk>2011-11-06 22:44:25 +0000
commit569285794b9112f0134ddad4bb886308ea4a7be6 (patch)
treece702cb07829820261a682c471133c76d11c610e
parentd9b7d58fa6c9ceb136bea429adf6746cc7138208 (diff)
downloadrockbox-569285794b9112f0134ddad4bb886308ea4a7be6.tar.gz
rockbox-569285794b9112f0134ddad4bb886308ea4a7be6.zip
Bulk convert all DOS line endings to UNIX.
For the git migration we want a nice clean repository with UNIX line endings. git does not use svn:eol-style, we just need the file contents to be sane. Sorry everybody. I know this messes up blame. Scumbag *NIX developer says migrating to git will make line ending issues go away; commits giant change to svn which changes line endings anyway. :) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30924 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/codecs/libgme/2413tone.h40
-rw-r--r--apps/codecs/libgme/281btone.h40
-rw-r--r--apps/codecs/libgme/ay_emu.c1198
-rw-r--r--apps/codecs/libgme/blargg_config.h84
-rw-r--r--apps/codecs/libgme/emu2413.c3962
-rw-r--r--apps/codecs/libgme/emu2413.h328
-rw-r--r--apps/codecs/libgme/emutables.h420
-rw-r--r--apps/codecs/libgme/emutypes.h82
-rw-r--r--apps/codecs/libgme/hes_apu_adpcm.c594
-rw-r--r--apps/codecs/libgme/inflate/mbreader.c32
-rw-r--r--apps/codecs/libgme/inflate/mbreader.h30
-rw-r--r--apps/codecs/libgme/kss_cpu.c70
-rw-r--r--apps/codecs/libgme/nes_cpu_run.h2244
-rw-r--r--apps/codecs/libgme/nes_vrc7_apu.c176
-rw-r--r--apps/codecs/libgme/opl_apu.c396
-rw-r--r--apps/codecs/libgme/opl_apu.h126
-rw-r--r--apps/codecs/libgme/opltables.h484
-rw-r--r--apps/codecs/libgme/sgc_cpu.c72
-rw-r--r--apps/codecs/libgme/sgc_emu.c960
-rw-r--r--apps/codecs/libgme/sgc_emu.h390
-rw-r--r--apps/codecs/libgme/sms_fm_apu.c164
-rw-r--r--apps/codecs/libgme/sms_fm_apu.h86
-rw-r--r--apps/codecs/libgme/track_filter.c588
-rw-r--r--apps/codecs/libgme/track_filter.h180
-rw-r--r--apps/codecs/libgme/vrc7tone.h40
-rw-r--r--apps/codecs/libgme/ym2413_emu.c90
-rw-r--r--apps/codecs/libgme/ym2413_emu.h122
-rw-r--r--apps/codecs/libgme/ymtables.h1118
-rw-r--r--apps/codecs/libgme/z80_cpu.h232
-rw-r--r--apps/codecs/libgme/z80_cpu_run.h3392
-rw-r--r--apps/lang/arabic.lang26
-rw-r--r--apps/lang/latviesu.lang25500
-rw-r--r--firmware/drivers/audio/cs42l55.c490
-rw-r--r--firmware/drivers/audio/dac3550a.c2
-rw-r--r--firmware/export/ata-defines.h116
-rw-r--r--firmware/export/config/rk27generic.h378
-rw-r--r--firmware/export/dac3550a.h2
-rw-r--r--firmware/export/mascodec.h2
-rw-r--r--firmware/export/s5l8702.h1660
-rw-r--r--firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c2
-rw-r--r--firmware/target/arm/s5l8700/postmortemstub.S616
-rw-r--r--firmware/target/arm/s5l8702/debug-s5l8702.c332
-rw-r--r--firmware/target/arm/s5l8702/debug-target.h66
-rw-r--r--firmware/target/arm/s5l8702/i2c-s5l8702.c392
-rw-r--r--firmware/target/arm/s5l8702/kernel-s5l8702.c112
-rw-r--r--firmware/target/arm/s5l8702/pcm-s5l8702.c456
-rw-r--r--firmware/target/arm/s5l8702/pcm-target.h80
-rw-r--r--firmware/target/arm/s5l8702/system-target.h94
-rw-r--r--firmware/target/arm/s5l8702/timer-s5l8702.c188
-rw-r--r--firmware/target/sh/archos/mascodec-archos.c2
-rw-r--r--rbutil/e200rpatcher/e200rpatcher.rc2
-rw-r--r--rbutil/ipodpatcher/ipodpatcher.rc2
-rw-r--r--rbutil/sansapatcher/sansapatcher.rc2
-rw-r--r--utils/MTP/sendfirm.manifest16
-rw-r--r--utils/tcctool/tcctool-windows.txt62
-rw-r--r--utils/themeeditor/qtfindreplacedialog/findreplace_global.h42
-rw-r--r--utils/themeeditor/qtfindreplacedialog/findreplacedialog.ui64
-rw-r--r--utils/themeeditor/qtfindreplacedialog/findreplaceform.ui408
-rw-r--r--utils/themeeditor/themeeditor.rc2
59 files changed, 24428 insertions, 24428 deletions
diff --git a/apps/codecs/libgme/2413tone.h b/apps/codecs/libgme/2413tone.h
index e4366ab245..c0922c1225 100644
--- a/apps/codecs/libgme/2413tone.h
+++ b/apps/codecs/libgme/2413tone.h
@@ -1,20 +1,20 @@
1/* YM2413 tone by okazaki@angel.ne.jp */ 1/* YM2413 tone by okazaki@angel.ne.jp */
20x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 20x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
30x61,0x61,0x1e,0x17,0xf0,0x7f,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 30x61,0x61,0x1e,0x17,0xf0,0x7f,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
40x13,0x41,0x16,0x0e,0xfd,0xf4,0x23,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 40x13,0x41,0x16,0x0e,0xfd,0xf4,0x23,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
50x03,0x01,0x9a,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 50x03,0x01,0x9a,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
60x11,0x61,0x0e,0x07,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 60x11,0x61,0x0e,0x07,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
70x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 70x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
80x21,0x22,0x16,0x05,0xf0,0x71,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 80x21,0x22,0x16,0x05,0xf0,0x71,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
90x21,0x61,0x1d,0x07,0x82,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 90x21,0x61,0x1d,0x07,0x82,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
100x23,0x21,0x2d,0x16,0x90,0x90,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 100x23,0x21,0x2d,0x16,0x90,0x90,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
110x21,0x21,0x1b,0x06,0x64,0x65,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 110x21,0x21,0x1b,0x06,0x64,0x65,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
120x21,0x21,0x0b,0x1a,0x85,0xa0,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 120x21,0x21,0x0b,0x1a,0x85,0xa0,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
130x23,0x01,0x83,0x10,0xff,0xb4,0x10,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 130x23,0x01,0x83,0x10,0xff,0xb4,0x10,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
140x97,0xc1,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 140x97,0xc1,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
150x61,0x00,0x0c,0x05,0xc2,0xf6,0x40,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 150x61,0x00,0x0c,0x05,0xc2,0xf6,0x40,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
160x01,0x01,0x56,0x03,0x94,0xc2,0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 160x01,0x01,0x56,0x03,0x94,0xc2,0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
170x21,0x01,0x89,0x03,0xf1,0xe4,0xf0,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 170x21,0x01,0x89,0x03,0xf1,0xe4,0xf0,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
180x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 180x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
190x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 190x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
200x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 200x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
diff --git a/apps/codecs/libgme/281btone.h b/apps/codecs/libgme/281btone.h
index 1300523fbe..83f63bff00 100644
--- a/apps/codecs/libgme/281btone.h
+++ b/apps/codecs/libgme/281btone.h
@@ -1,20 +1,20 @@
1/* YMF281B tone by Chabin */ 1/* YMF281B tone by Chabin */
20x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 20x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
30x62,0x21,0x1a,0x07,0xf0,0x6f,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 30x62,0x21,0x1a,0x07,0xf0,0x6f,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
40x00,0x10,0x44,0x02,0xf6,0xf4,0x54,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 40x00,0x10,0x44,0x02,0xf6,0xf4,0x54,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
50x03,0x01,0x97,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 50x03,0x01,0x97,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
60x01,0x61,0x0a,0x0f,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 60x01,0x61,0x0a,0x0f,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
70x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 70x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
80x00,0x61,0x8a,0x0e,0xc0,0x61,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 80x00,0x61,0x8a,0x0e,0xc0,0x61,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
90x21,0x61,0x1b,0x07,0x84,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 90x21,0x61,0x1b,0x07,0x84,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
100x37,0x32,0xc9,0x01,0x66,0x64,0x40,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 100x37,0x32,0xc9,0x01,0x66,0x64,0x40,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
110x01,0x21,0x06,0x03,0xa5,0x71,0x51,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 110x01,0x21,0x06,0x03,0xa5,0x71,0x51,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
120x06,0x11,0x5e,0x07,0xf3,0xf2,0xf6,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 120x06,0x11,0x5e,0x07,0xf3,0xf2,0xf6,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
130x00,0x20,0x18,0x06,0xf5,0xf3,0x20,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 130x00,0x20,0x18,0x06,0xf5,0xf3,0x20,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
140x97,0x41,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 140x97,0x41,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
150x65,0x61,0x15,0x00,0xf7,0xf3,0x16,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 150x65,0x61,0x15,0x00,0xf7,0xf3,0x16,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
160x01,0x31,0x0e,0x07,0xfa,0xf3,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 160x01,0x31,0x0e,0x07,0xfa,0xf3,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
170x48,0x61,0x09,0x07,0xf1,0x94,0xf0,0xf5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 170x48,0x61,0x09,0x07,0xf1,0x94,0xf0,0xf5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
180x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 180x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
190x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 190x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
200x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 200x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
diff --git a/apps/codecs/libgme/ay_emu.c b/apps/codecs/libgme/ay_emu.c
index 42e739f2df..92faba4929 100644
--- a/apps/codecs/libgme/ay_emu.c
+++ b/apps/codecs/libgme/ay_emu.c
@@ -1,599 +1,599 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3#include "ay_emu.h" 3#include "ay_emu.h"
4 4
5#include "blargg_endian.h" 5#include "blargg_endian.h"
6 6
7/* Copyright (C) 2006-2009 Shay Green. This module is free software; you 7/* Copyright (C) 2006-2009 Shay Green. This module is free software; you
8can redistribute it and/or modify it under the terms of the GNU Lesser 8can redistribute it and/or modify it under the terms of the GNU Lesser
9General Public License as published by the Free Software Foundation; either 9General Public License as published by the Free Software Foundation; either
10version 2.1 of the License, or (at your option) any later version. This 10version 2.1 of the License, or (at your option) any later version. This
11module is distributed in the hope that it will be useful, but WITHOUT ANY 11module is distributed in the hope that it will be useful, but WITHOUT ANY
12WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 12WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 13FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
14details. You should have received a copy of the GNU Lesser General Public 14details. You should have received a copy of the GNU Lesser General Public
15License along with this module; if not, write to the Free Software Foundation, 15License along with this module; if not, write to the Free Software Foundation,
16Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 16Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
17 17
18#include "blargg_source.h" 18#include "blargg_source.h"
19 19
20const char* const gme_wrong_file_type = "Wrong file type for this emulator"; 20const char* const gme_wrong_file_type = "Wrong file type for this emulator";
21 21
22// TODO: probably don't need detailed errors as to why file is corrupt 22// TODO: probably don't need detailed errors as to why file is corrupt
23 23
24int const spectrum_clock = 3546900; // 128K Spectrum 24int const spectrum_clock = 3546900; // 128K Spectrum
25int const spectrum_period = 70908; 25int const spectrum_period = 70908;
26 26
27//int const spectrum_clock = 3500000; // 48K Spectrum 27//int const spectrum_clock = 3500000; // 48K Spectrum
28//int const spectrum_period = 69888; 28//int const spectrum_period = 69888;
29 29
30int const cpc_clock = 2000000; 30int const cpc_clock = 2000000;
31 31
32static void clear_track_vars( struct Ay_Emu *this ) 32static void clear_track_vars( struct Ay_Emu *this )
33{ 33{
34 this->current_track = -1; 34 this->current_track = -1;
35 track_stop( &this->track_filter ); 35 track_stop( &this->track_filter );
36} 36}
37 37
38void Ay_init( struct Ay_Emu *this ) 38void Ay_init( struct Ay_Emu *this )
39{ 39{
40 this->sample_rate = 0; 40 this->sample_rate = 0;
41 this->mute_mask_ = 0; 41 this->mute_mask_ = 0;
42 this->tempo = (int)FP_ONE_TEMPO; 42 this->tempo = (int)FP_ONE_TEMPO;
43 this->gain = (int)FP_ONE_GAIN; 43 this->gain = (int)FP_ONE_GAIN;
44 this->track_count = 0; 44 this->track_count = 0;
45 45
46 // defaults 46 // defaults
47 this->tfilter = *track_get_setup( &this->track_filter ); 47 this->tfilter = *track_get_setup( &this->track_filter );
48 this->tfilter.max_initial = 2; 48 this->tfilter.max_initial = 2;
49 this->tfilter.lookahead = 6; 49 this->tfilter.lookahead = 6;
50 this->track_filter.silence_ignored_ = false; 50 this->track_filter.silence_ignored_ = false;
51 51
52 this->beeper_output = NULL; 52 this->beeper_output = NULL;
53 disable_beeper( this ); 53 disable_beeper( this );
54 54
55 Ay_apu_init( &this->apu ); 55 Ay_apu_init( &this->apu );
56 Z80_init( &this->cpu ); 56 Z80_init( &this->cpu );
57 57
58 // clears fields 58 // clears fields
59 this->voice_count = 0; 59 this->voice_count = 0;
60 this->voice_types = 0; 60 this->voice_types = 0;
61 clear_track_vars( this ); 61 clear_track_vars( this );
62} 62}
63 63
64// Track info 64// Track info
65 65
66// Given pointer to 2-byte offset of data, returns pointer to data, or NULL if 66// Given pointer to 2-byte offset of data, returns pointer to data, or NULL if
67// offset is 0 or there is less than min_size bytes of data available. 67// offset is 0 or there is less than min_size bytes of data available.
68static byte const* get_data( struct file_t const* file, byte const ptr [], int min_size ) 68static byte const* get_data( struct file_t const* file, byte const ptr [], int min_size )
69{ 69{
70 int offset = (int16_t) get_be16( ptr ); 70 int offset = (int16_t) get_be16( ptr );
71 int pos = ptr - (byte const*) file->header; 71 int pos = ptr - (byte const*) file->header;
72 int size = file->end - (byte const*) file->header; 72 int size = file->end - (byte const*) file->header;
73 assert( (unsigned) pos <= (unsigned) size - 2 ); 73 assert( (unsigned) pos <= (unsigned) size - 2 );
74 int limit = size - min_size; 74 int limit = size - min_size;
75 if ( limit < 0 || !offset || (unsigned) (pos + offset) > (unsigned) limit ) 75 if ( limit < 0 || !offset || (unsigned) (pos + offset) > (unsigned) limit )
76 return NULL; 76 return NULL;
77 return ptr + offset; 77 return ptr + offset;
78} 78}
79 79
80static blargg_err_t parse_header( byte const in [], int size, struct file_t* out ) 80static blargg_err_t parse_header( byte const in [], int size, struct file_t* out )
81{ 81{
82 if ( size < header_size ) 82 if ( size < header_size )
83 return gme_wrong_file_type; 83 return gme_wrong_file_type;
84 84
85 out->header = (struct header_t const*) in; 85 out->header = (struct header_t const*) in;
86 out->end = in + size; 86 out->end = in + size;
87 struct header_t const* h = (struct header_t const*) in; 87 struct header_t const* h = (struct header_t const*) in;
88 if ( memcmp( h->tag, "ZXAYEMUL", 8 ) ) 88 if ( memcmp( h->tag, "ZXAYEMUL", 8 ) )
89 return gme_wrong_file_type; 89 return gme_wrong_file_type;
90 90
91 out->tracks = get_data( out, h->track_info, (h->max_track + 1) * 4 ); 91 out->tracks = get_data( out, h->track_info, (h->max_track + 1) * 4 );
92 if ( !out->tracks ) 92 if ( !out->tracks )
93 return "missing track data"; 93 return "missing track data";
94 94
95 return 0; 95 return 0;
96} 96}
97 97
98// Setup 98// Setup
99 99
100static void change_clock_rate( struct Ay_Emu *this, int rate ) 100static void change_clock_rate( struct Ay_Emu *this, int rate )
101{ 101{
102 this->clock_rate_ = rate; 102 this->clock_rate_ = rate;
103 Buffer_clock_rate( &this->stereo_buf, rate ); 103 Buffer_clock_rate( &this->stereo_buf, rate );
104} 104}
105 105
106blargg_err_t Ay_load_mem( struct Ay_Emu *this, byte const in [], long size ) 106blargg_err_t Ay_load_mem( struct Ay_Emu *this, byte const in [], long size )
107{ 107{
108 // Unload 108 // Unload
109 this->voice_count = 0; 109 this->voice_count = 0;
110 this->track_count = 0; 110 this->track_count = 0;
111 this->m3u.size = 0; 111 this->m3u.size = 0;
112 clear_track_vars( this ); 112 clear_track_vars( this );
113 113
114 assert( offsetof (struct header_t,track_info [2]) == header_size ); 114 assert( offsetof (struct header_t,track_info [2]) == header_size );
115 115
116 RETURN_ERR( parse_header( in, size, &this->file ) ); 116 RETURN_ERR( parse_header( in, size, &this->file ) );
117 117
118 /* if ( file.header->vers > 2 ) 118 /* if ( file.header->vers > 2 )
119 warning( "Unknown file version" ); */ 119 warning( "Unknown file version" ); */
120 120
121 this->voice_count = ay_osc_count + 1; // +1 for beeper 121 this->voice_count = ay_osc_count + 1; // +1 for beeper
122 static int const types [ay_osc_count + 1] = { 122 static int const types [ay_osc_count + 1] = {
123 wave_type+0, wave_type+1, wave_type+2, mixed_type+1 123 wave_type+0, wave_type+1, wave_type+2, mixed_type+1
124 }; 124 };
125 this->voice_types = types; 125 this->voice_types = types;
126 126
127 Ay_apu_volume( &this->apu, this->gain); 127 Ay_apu_volume( &this->apu, this->gain);
128 128
129 // Setup buffer 129 // Setup buffer
130 change_clock_rate( this, spectrum_clock ); 130 change_clock_rate( this, spectrum_clock );
131 RETURN_ERR( Buffer_set_channel_count( &this->stereo_buf, this->voice_count, this->voice_types ) ); 131 RETURN_ERR( Buffer_set_channel_count( &this->stereo_buf, this->voice_count, this->voice_types ) );
132 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf ); 132 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf );
133 133
134 Sound_set_tempo( this, this->tempo ); 134 Sound_set_tempo( this, this->tempo );
135 Sound_mute_voices( this, this->mute_mask_ ); 135 Sound_mute_voices( this, this->mute_mask_ );
136 136
137 this->track_count = this->file.header->max_track + 1; 137 this->track_count = this->file.header->max_track + 1;
138 return 0; 138 return 0;
139} 139}
140 140
141static void set_beeper_output( struct Ay_Emu *this, struct Blip_Buffer* b ) 141static void set_beeper_output( struct Ay_Emu *this, struct Blip_Buffer* b )
142{ 142{
143 this->beeper_output = b; 143 this->beeper_output = b;
144 if ( b && !this->cpc_mode ) 144 if ( b && !this->cpc_mode )
145 this->beeper_mask = 0x10; 145 this->beeper_mask = 0x10;
146 else 146 else
147 disable_beeper( this ); 147 disable_beeper( this );
148} 148}
149 149
150static void set_voice( struct Ay_Emu *this, int i, struct Blip_Buffer* center ) 150static void set_voice( struct Ay_Emu *this, int i, struct Blip_Buffer* center )
151{ 151{
152 if ( i >= ay_osc_count ) 152 if ( i >= ay_osc_count )
153 set_beeper_output( this, center ); 153 set_beeper_output( this, center );
154 else 154 else
155 Ay_apu_set_output( &this->apu, i, center ); 155 Ay_apu_set_output( &this->apu, i, center );
156} 156}
157 157
158static blargg_err_t run_clocks( struct Ay_Emu *this, blip_time_t* duration, int msec ) 158static blargg_err_t run_clocks( struct Ay_Emu *this, blip_time_t* duration, int msec )
159{ 159{
160#if defined(ROCKBOX) 160#if defined(ROCKBOX)
161 (void) msec; 161 (void) msec;
162#endif 162#endif
163 163
164 cpu_time_t *end = duration; 164 cpu_time_t *end = duration;
165 struct Z80_Cpu* cpu = &this->cpu; 165 struct Z80_Cpu* cpu = &this->cpu;
166 Z80_set_time( cpu, 0 ); 166 Z80_set_time( cpu, 0 );
167 167
168 // Since detection of CPC mode will halve clock rate during the frame 168 // Since detection of CPC mode will halve clock rate during the frame
169 // and thus generate up to twice as much sound, we must generate half 169 // and thus generate up to twice as much sound, we must generate half
170 // as much until mode is known. 170 // as much until mode is known.
171 if ( !(this->spectrum_mode | this->cpc_mode) ) 171 if ( !(this->spectrum_mode | this->cpc_mode) )
172 *end /= 2; 172 *end /= 2;
173 173
174 while ( Z80_time( cpu ) < *end ) 174 while ( Z80_time( cpu ) < *end )
175 { 175 {
176 run_cpu( this, min( *end, this->next_play ) ); 176 run_cpu( this, min( *end, this->next_play ) );
177 177
178 if ( Z80_time( cpu ) >= this->next_play ) 178 if ( Z80_time( cpu ) >= this->next_play )
179 { 179 {
180 // next frame 180 // next frame
181 this->next_play += this->play_period; 181 this->next_play += this->play_period;
182 182
183 if ( cpu->r.iff1 ) 183 if ( cpu->r.iff1 )
184 { 184 {
185 // interrupt enabled 185 // interrupt enabled
186 186
187 if ( this->mem.ram [cpu->r.pc] == 0x76 ) 187 if ( this->mem.ram [cpu->r.pc] == 0x76 )
188 cpu->r.pc++; // advance past HALT instruction 188 cpu->r.pc++; // advance past HALT instruction
189 189
190 cpu->r.iff1 = 0; 190 cpu->r.iff1 = 0;
191 cpu->r.iff2 = 0; 191 cpu->r.iff2 = 0;
192 192
193 this->mem.ram [--cpu->r.sp] = (byte) (cpu->r.pc >> 8); 193 this->mem.ram [--cpu->r.sp] = (byte) (cpu->r.pc >> 8);
194 this->mem.ram [--cpu->r.sp] = (byte) (cpu->r.pc); 194 this->mem.ram [--cpu->r.sp] = (byte) (cpu->r.pc);
195 195
196 // fixed interrupt 196 // fixed interrupt
197 cpu->r.pc = 0x38; 197 cpu->r.pc = 0x38;
198 Z80_adjust_time( cpu, 12 ); 198 Z80_adjust_time( cpu, 12 );
199 199
200 if ( cpu->r.im == 2 ) 200 if ( cpu->r.im == 2 )
201 { 201 {
202 // vectored interrupt 202 // vectored interrupt
203 addr_t addr = cpu->r.i * 0x100 + 0xFF; 203 addr_t addr = cpu->r.i * 0x100 + 0xFF;
204 cpu->r.pc = this->mem.ram [(addr + 1) & 0xFFFF] * 0x100 + this->mem.ram [addr]; 204 cpu->r.pc = this->mem.ram [(addr + 1) & 0xFFFF] * 0x100 + this->mem.ram [addr];
205 Z80_adjust_time( cpu, 6 ); 205 Z80_adjust_time( cpu, 6 );
206 } 206 }
207 } 207 }
208 } 208 }
209 } 209 }
210 210
211 // End time frame 211 // End time frame
212 *end = Z80_time( cpu ); 212 *end = Z80_time( cpu );
213 this->next_play -= *end; 213 this->next_play -= *end;
214 check( this->next_play >= 0 ); 214 check( this->next_play >= 0 );
215 Z80_adjust_time( cpu, -*end ); 215 Z80_adjust_time( cpu, -*end );
216 Ay_apu_end_frame( &this->apu, *end ); 216 Ay_apu_end_frame( &this->apu, *end );
217 return 0; 217 return 0;
218} 218}
219 219
220// Emulation 220// Emulation
221 221
222void cpu_out_( struct Ay_Emu *this, cpu_time_t time, addr_t addr, int data ) 222void cpu_out_( struct Ay_Emu *this, cpu_time_t time, addr_t addr, int data )
223{ 223{
224 // Spectrum 224 // Spectrum
225 if ( !this->cpc_mode ) 225 if ( !this->cpc_mode )
226 { 226 {
227 switch ( addr & 0xFEFF ) 227 switch ( addr & 0xFEFF )
228 { 228 {
229 case 0xFEFD: 229 case 0xFEFD:
230 this->spectrum_mode = true; 230 this->spectrum_mode = true;
231 Ay_apu_write_addr( &this->apu, data ); 231 Ay_apu_write_addr( &this->apu, data );
232 return; 232 return;
233 233
234 case 0xBEFD: 234 case 0xBEFD:
235 this->spectrum_mode = true; 235 this->spectrum_mode = true;
236 Ay_apu_write_data( &this->apu, time, data ); 236 Ay_apu_write_data( &this->apu, time, data );
237 return; 237 return;
238 } 238 }
239 } 239 }
240 240
241 // CPC 241 // CPC
242 if ( !this->spectrum_mode ) 242 if ( !this->spectrum_mode )
243 { 243 {
244 switch ( addr >> 8 ) 244 switch ( addr >> 8 )
245 { 245 {
246 case 0xF6: 246 case 0xF6:
247 switch ( data & 0xC0 ) 247 switch ( data & 0xC0 )
248 { 248 {
249 case 0xC0: 249 case 0xC0:
250 Ay_apu_write_addr( &this->apu, this->cpc_latch ); 250 Ay_apu_write_addr( &this->apu, this->cpc_latch );
251 goto enable_cpc; 251 goto enable_cpc;
252 252
253 case 0x80: 253 case 0x80:
254 Ay_apu_write_data( &this->apu, time, this->cpc_latch ); 254 Ay_apu_write_data( &this->apu, time, this->cpc_latch );
255 goto enable_cpc; 255 goto enable_cpc;
256 } 256 }
257 break; 257 break;
258 258
259 case 0xF4: 259 case 0xF4:
260 this->cpc_latch = data; 260 this->cpc_latch = data;
261 goto enable_cpc; 261 goto enable_cpc;
262 } 262 }
263 } 263 }
264 264
265 /* dprintf( "Unmapped OUT: $%04X <- $%02X\n", addr, data ); */ 265 /* dprintf( "Unmapped OUT: $%04X <- $%02X\n", addr, data ); */
266 return; 266 return;
267 267
268enable_cpc: 268enable_cpc:
269 if ( !this->cpc_mode ) 269 if ( !this->cpc_mode )
270 { 270 {
271 this->cpc_mode = true; 271 this->cpc_mode = true;
272 disable_beeper( this ); 272 disable_beeper( this );
273 273
274 change_clock_rate( this, cpc_clock ); 274 change_clock_rate( this, cpc_clock );
275 Sound_set_tempo( this, this->tempo ); 275 Sound_set_tempo( this, this->tempo );
276 } 276 }
277} 277}
278 278
279blargg_err_t Ay_set_sample_rate( struct Ay_Emu *this, int rate ) 279blargg_err_t Ay_set_sample_rate( struct Ay_Emu *this, int rate )
280{ 280{
281 require( !this->sample_rate ); // sample rate can't be changed once set 281 require( !this->sample_rate ); // sample rate can't be changed once set
282 Buffer_init( &this->stereo_buf ); 282 Buffer_init( &this->stereo_buf );
283 RETURN_ERR( Buffer_set_sample_rate( &this->stereo_buf, rate, 1000 / 20 ) ); 283 RETURN_ERR( Buffer_set_sample_rate( &this->stereo_buf, rate, 1000 / 20 ) );
284 284
285 // Set buffer bass 285 // Set buffer bass
286 Buffer_bass_freq( &this->stereo_buf, 160 ); 286 Buffer_bass_freq( &this->stereo_buf, 160 );
287 287
288 this->sample_rate = rate; 288 this->sample_rate = rate;
289 RETURN_ERR( track_init( &this->track_filter, this ) ); 289 RETURN_ERR( track_init( &this->track_filter, this ) );
290 this->tfilter.max_silence = 6 * stereo * this->sample_rate; 290 this->tfilter.max_silence = 6 * stereo * this->sample_rate;
291 return 0; 291 return 0;
292} 292}
293 293
294void Sound_mute_voice( struct Ay_Emu *this, int index, bool mute ) 294void Sound_mute_voice( struct Ay_Emu *this, int index, bool mute )
295{ 295{
296 require( (unsigned) index < (unsigned) this->voice_count ); 296 require( (unsigned) index < (unsigned) this->voice_count );
297 int bit = 1 << index; 297 int bit = 1 << index;
298 int mask = this->mute_mask_ | bit; 298 int mask = this->mute_mask_ | bit;
299 if ( !mute ) 299 if ( !mute )
300 mask ^= bit; 300 mask ^= bit;
301 Sound_mute_voices( this, mask ); 301 Sound_mute_voices( this, mask );
302} 302}
303 303
304void Sound_mute_voices( struct Ay_Emu *this, int mask ) 304void Sound_mute_voices( struct Ay_Emu *this, int mask )
305{ 305{
306 require( this->sample_rate ); // sample rate must be set first 306 require( this->sample_rate ); // sample rate must be set first
307 this->mute_mask_ = mask; 307 this->mute_mask_ = mask;
308 308
309 int i; 309 int i;
310 for ( i = this->voice_count; i--; ) 310 for ( i = this->voice_count; i--; )
311 { 311 {
312 if ( mask & (1 << i) ) 312 if ( mask & (1 << i) )
313 { 313 {
314 set_voice( this, i, 0 ); 314 set_voice( this, i, 0 );
315 } 315 }
316 else 316 else
317 { 317 {
318 struct channel_t ch = Buffer_channel( &this->stereo_buf, i ); 318 struct channel_t ch = Buffer_channel( &this->stereo_buf, i );
319 assert( (ch.center && ch.left && ch.right) || 319 assert( (ch.center && ch.left && ch.right) ||
320 (!ch.center && !ch.left && !ch.right) ); // all or nothing 320 (!ch.center && !ch.left && !ch.right) ); // all or nothing
321 set_voice( this, i, ch.center ); 321 set_voice( this, i, ch.center );
322 } 322 }
323 } 323 }
324} 324}
325 325
326void Sound_set_tempo( struct Ay_Emu *this, int t ) 326void Sound_set_tempo( struct Ay_Emu *this, int t )
327{ 327{
328 require( this->sample_rate ); // sample rate must be set first 328 require( this->sample_rate ); // sample rate must be set first
329 int const min = (int)(FP_ONE_TEMPO*0.02); 329 int const min = (int)(FP_ONE_TEMPO*0.02);
330 int const max = (int)(FP_ONE_TEMPO*4.00); 330 int const max = (int)(FP_ONE_TEMPO*4.00);
331 if ( t < min ) t = min; 331 if ( t < min ) t = min;
332 if ( t > max ) t = max; 332 if ( t > max ) t = max;
333 this->tempo = t; 333 this->tempo = t;
334 334
335 int p = spectrum_period; 335 int p = spectrum_period;
336 if ( this->clock_rate_ != spectrum_clock ) 336 if ( this->clock_rate_ != spectrum_clock )
337 p = this->clock_rate_ / 50; 337 p = this->clock_rate_ / 50;
338 338
339 this->play_period = (blip_time_t) ((p * FP_ONE_TEMPO) / t); 339 this->play_period = (blip_time_t) ((p * FP_ONE_TEMPO) / t);
340} 340}
341 341
342blargg_err_t Ay_start_track( struct Ay_Emu *this, int track ) 342blargg_err_t Ay_start_track( struct Ay_Emu *this, int track )
343{ 343{
344 clear_track_vars( this ); 344 clear_track_vars( this );
345 345
346 // Remap track if playlist available 346 // Remap track if playlist available
347 if ( this->m3u.size > 0 ) { 347 if ( this->m3u.size > 0 ) {
348 struct entry_t* e = &this->m3u.entries[track]; 348 struct entry_t* e = &this->m3u.entries[track];
349 track = e->track; 349 track = e->track;
350 } 350 }
351 351
352 this->current_track = track; 352 this->current_track = track;
353 Buffer_clear( &this->stereo_buf ); 353 Buffer_clear( &this->stereo_buf );
354 354
355 byte* const mem = this->mem.ram; 355 byte* const mem = this->mem.ram;
356 356
357 memset( mem + 0x0000, 0xC9, 0x100 ); // fill RST vectors with RET 357 memset( mem + 0x0000, 0xC9, 0x100 ); // fill RST vectors with RET
358 memset( mem + 0x0100, 0xFF, 0x4000 - 0x100 ); 358 memset( mem + 0x0100, 0xFF, 0x4000 - 0x100 );
359 memset( mem + ram_addr, 0x00, mem_size - ram_addr ); 359 memset( mem + ram_addr, 0x00, mem_size - ram_addr );
360 360
361 // locate data blocks 361 // locate data blocks
362 byte const* const data = get_data( &this->file, this->file.tracks + track * 4 + 2, 14 ); 362 byte const* const data = get_data( &this->file, this->file.tracks + track * 4 + 2, 14 );
363 if ( !data ) 363 if ( !data )
364 return "file data missing"; 364 return "file data missing";
365 365
366 byte const* const more_data = get_data( &this->file, data + 10, 6 ); 366 byte const* const more_data = get_data( &this->file, data + 10, 6 );
367 if ( !more_data ) 367 if ( !more_data )
368 return "file data missing"; 368 return "file data missing";
369 369
370 byte const* blocks = get_data( &this->file, data + 12, 8 ); 370 byte const* blocks = get_data( &this->file, data + 12, 8 );
371 if ( !blocks ) 371 if ( !blocks )
372 return "file data missing"; 372 return "file data missing";
373 373
374 // initial addresses 374 // initial addresses
375 unsigned addr = get_be16( blocks ); 375 unsigned addr = get_be16( blocks );
376 if ( !addr ) 376 if ( !addr )
377 return "file data missing"; 377 return "file data missing";
378 378
379 unsigned init = get_be16( more_data + 2 ); 379 unsigned init = get_be16( more_data + 2 );
380 if ( !init ) 380 if ( !init )
381 init = addr; 381 init = addr;
382 382
383 // copy blocks into memory 383 // copy blocks into memory
384 do 384 do
385 { 385 {
386 blocks += 2; 386 blocks += 2;
387 unsigned len = get_be16( blocks ); blocks += 2; 387 unsigned len = get_be16( blocks ); blocks += 2;
388 if ( addr + len > mem_size ) 388 if ( addr + len > mem_size )
389 { 389 {
390 /* warning( "Bad data block size" ); */ 390 /* warning( "Bad data block size" ); */
391 len = mem_size - addr; 391 len = mem_size - addr;
392 } 392 }
393 check( len ); 393 check( len );
394 byte const* in = get_data( &this->file, blocks, 0 ); blocks += 2; 394 byte const* in = get_data( &this->file, blocks, 0 ); blocks += 2;
395 if ( len > (unsigned) (this->file.end - in) ) 395 if ( len > (unsigned) (this->file.end - in) )
396 { 396 {
397 /* warning( "File data missing" ); */ 397 /* warning( "File data missing" ); */
398 len = this->file.end - in; 398 len = this->file.end - in;
399 } 399 }
400 400
401 memcpy( mem + addr, in, len ); 401 memcpy( mem + addr, in, len );
402 402
403 if ( this->file.end - blocks < 8 ) 403 if ( this->file.end - blocks < 8 )
404 { 404 {
405 /* warning( "File data missing" ); */ 405 /* warning( "File data missing" ); */
406 break; 406 break;
407 } 407 }
408 } 408 }
409 while ( (addr = get_be16( blocks )) != 0 ); 409 while ( (addr = get_be16( blocks )) != 0 );
410 410
411 // copy and configure driver 411 // copy and configure driver
412 static byte const passive [] = { 412 static byte const passive [] = {
413 0xF3, // DI 413 0xF3, // DI
414 0xCD, 0, 0, // CALL init 414 0xCD, 0, 0, // CALL init
415 0xED, 0x5E, // LOOP: IM 2 415 0xED, 0x5E, // LOOP: IM 2
416 0xFB, // EI 416 0xFB, // EI
417 0x76, // HALT 417 0x76, // HALT
418 0x18, 0xFA // JR LOOP 418 0x18, 0xFA // JR LOOP
419 }; 419 };
420 static byte const active [] = { 420 static byte const active [] = {
421 0xF3, // DI 421 0xF3, // DI
422 0xCD, 0, 0, // CALL init 422 0xCD, 0, 0, // CALL init
423 0xED, 0x56, // LOOP: IM 1 423 0xED, 0x56, // LOOP: IM 1
424 0xFB, // EI 424 0xFB, // EI
425 0x76, // HALT 425 0x76, // HALT
426 0xCD, 0, 0, // CALL play 426 0xCD, 0, 0, // CALL play
427 0x18, 0xF7 // JR LOOP 427 0x18, 0xF7 // JR LOOP
428 }; 428 };
429 memcpy( mem, passive, sizeof passive ); 429 memcpy( mem, passive, sizeof passive );
430 int const play_addr = get_be16( more_data + 4 ); 430 int const play_addr = get_be16( more_data + 4 );
431 if ( play_addr ) 431 if ( play_addr )
432 { 432 {
433 memcpy( mem, active, sizeof active ); 433 memcpy( mem, active, sizeof active );
434 mem [ 9] = play_addr; 434 mem [ 9] = play_addr;
435 mem [10] = play_addr >> 8; 435 mem [10] = play_addr >> 8;
436 } 436 }
437 mem [2] = init; 437 mem [2] = init;
438 mem [3] = init >> 8; 438 mem [3] = init >> 8;
439 439
440 mem [0x38] = 0xFB; // Put EI at interrupt vector (followed by RET) 440 mem [0x38] = 0xFB; // Put EI at interrupt vector (followed by RET)
441 441
442 // start at spectrum speed 442 // start at spectrum speed
443 change_clock_rate( this, spectrum_clock ); 443 change_clock_rate( this, spectrum_clock );
444 Sound_set_tempo( this, this->tempo ); 444 Sound_set_tempo( this, this->tempo );
445 445
446 struct registers_t r; 446 struct registers_t r;
447 memset( &r, 0, sizeof(struct registers_t) ); 447 memset( &r, 0, sizeof(struct registers_t) );
448 448
449 r.sp = get_be16( more_data ); 449 r.sp = get_be16( more_data );
450 r.b.a = r.b.b = r.b.d = r.b.h = data [8]; 450 r.b.a = r.b.b = r.b.d = r.b.h = data [8];
451 r.b.flags = r.b.c = r.b.e = r.b.l = data [9]; 451 r.b.flags = r.b.c = r.b.e = r.b.l = data [9];
452 r.alt.w = r.w; 452 r.alt.w = r.w;
453 r.ix = r.iy = r.w.hl; 453 r.ix = r.iy = r.w.hl;
454 454
455 memset( this->mem.padding1, 0xFF, sizeof this->mem.padding1 ); 455 memset( this->mem.padding1, 0xFF, sizeof this->mem.padding1 );
456 456
457 int const mirrored = 0x80; // this much is mirrored after end of memory 457 int const mirrored = 0x80; // this much is mirrored after end of memory
458 memset( this->mem.ram + mem_size + mirrored, 0xFF, sizeof this->mem.ram - mem_size - mirrored ); 458 memset( this->mem.ram + mem_size + mirrored, 0xFF, sizeof this->mem.ram - mem_size - mirrored );
459 memcpy( this->mem.ram + mem_size, this->mem.ram, mirrored ); // some code wraps around (ugh) 459 memcpy( this->mem.ram + mem_size, this->mem.ram, mirrored ); // some code wraps around (ugh)
460 460
461 Z80_reset( &this->cpu, this->mem.padding1, this->mem.padding1 ); 461 Z80_reset( &this->cpu, this->mem.padding1, this->mem.padding1 );
462 Z80_map_mem( &this->cpu, 0, mem_size, this->mem.ram, this->mem.ram ); 462 Z80_map_mem( &this->cpu, 0, mem_size, this->mem.ram, this->mem.ram );
463 this->cpu.r = r; 463 this->cpu.r = r;
464 464
465 this->beeper_delta = (int) ((ay_amp_range*4)/5); 465 this->beeper_delta = (int) ((ay_amp_range*4)/5);
466 this->last_beeper = 0; 466 this->last_beeper = 0;
467 this->next_play = this->play_period; 467 this->next_play = this->play_period;
468 this->spectrum_mode = false; 468 this->spectrum_mode = false;
469 this->cpc_mode = false; 469 this->cpc_mode = false;
470 this->cpc_latch = 0; 470 this->cpc_latch = 0;
471 set_beeper_output( this, this->beeper_output ); 471 set_beeper_output( this, this->beeper_output );
472 Ay_apu_reset( &this->apu ); 472 Ay_apu_reset( &this->apu );
473 473
474 // a few tunes rely on channels having tone enabled at the beginning 474 // a few tunes rely on channels having tone enabled at the beginning
475 Ay_apu_write_addr( &this->apu, 7 ); 475 Ay_apu_write_addr( &this->apu, 7 );
476 Ay_apu_write_data( &this->apu, 0, 0x38 ); 476 Ay_apu_write_data( &this->apu, 0, 0x38 );
477 477
478 // convert filter times to samples 478 // convert filter times to samples
479 struct setup_t s = this->tfilter; 479 struct setup_t s = this->tfilter;
480 s.max_initial *= this->sample_rate * stereo; 480 s.max_initial *= this->sample_rate * stereo;
481 #ifdef GME_DISABLE_SILENCE_LOOKAHEAD 481 #ifdef GME_DISABLE_SILENCE_LOOKAHEAD
482 s.lookahead = 1; 482 s.lookahead = 1;
483 #endif 483 #endif
484 track_setup( &this->track_filter, &s ); 484 track_setup( &this->track_filter, &s );
485 485
486 return track_start( &this->track_filter ); 486 return track_start( &this->track_filter );
487} 487}
488 488
489// Tell/Seek 489// Tell/Seek
490 490
491static int msec_to_samples( int msec, int sample_rate ) 491static int msec_to_samples( int msec, int sample_rate )
492{ 492{
493 int sec = msec / 1000; 493 int sec = msec / 1000;
494 msec -= sec * 1000; 494 msec -= sec * 1000;
495 return (sec * sample_rate + msec * sample_rate / 1000) * stereo; 495 return (sec * sample_rate + msec * sample_rate / 1000) * stereo;
496} 496}
497 497
498int Track_tell( struct Ay_Emu *this ) 498int Track_tell( struct Ay_Emu *this )
499{ 499{
500 int rate = this->sample_rate * stereo; 500 int rate = this->sample_rate * stereo;
501 int sec = track_sample_count( &this->track_filter ) / rate; 501 int sec = track_sample_count( &this->track_filter ) / rate;
502 return sec * 1000 + (track_sample_count( &this->track_filter ) - sec * rate) * 1000 / rate; 502 return sec * 1000 + (track_sample_count( &this->track_filter ) - sec * rate) * 1000 / rate;
503} 503}
504 504
505blargg_err_t Track_seek( struct Ay_Emu *this, int msec ) 505blargg_err_t Track_seek( struct Ay_Emu *this, int msec )
506{ 506{
507 int time = msec_to_samples( msec, this->sample_rate ); 507 int time = msec_to_samples( msec, this->sample_rate );
508 if ( time < track_sample_count( &this->track_filter ) ) 508 if ( time < track_sample_count( &this->track_filter ) )
509 RETURN_ERR( Ay_start_track( this, this->current_track ) ); 509 RETURN_ERR( Ay_start_track( this, this->current_track ) );
510 return Track_skip( this, time - track_sample_count( &this->track_filter ) ); 510 return Track_skip( this, time - track_sample_count( &this->track_filter ) );
511} 511}
512 512
513blargg_err_t skip_( void *emu, int count ) 513blargg_err_t skip_( void *emu, int count )
514{ 514{
515 struct Ay_Emu* this = (struct Ay_Emu*) emu; 515 struct Ay_Emu* this = (struct Ay_Emu*) emu;
516 516
517 // for long skip, mute sound 517 // for long skip, mute sound
518 const int threshold = 32768; 518 const int threshold = 32768;
519 if ( count > threshold ) 519 if ( count > threshold )
520 { 520 {
521 int saved_mute = this->mute_mask_; 521 int saved_mute = this->mute_mask_;
522 Sound_mute_voices( this, ~0 ); 522 Sound_mute_voices( this, ~0 );
523 523
524 int n = count - threshold/2; 524 int n = count - threshold/2;
525 n &= ~(2048-1); // round to multiple of 2048 525 n &= ~(2048-1); // round to multiple of 2048
526 count -= n; 526 count -= n;
527 RETURN_ERR( skippy_( &this->track_filter, n ) ); 527 RETURN_ERR( skippy_( &this->track_filter, n ) );
528 528
529 Sound_mute_voices( this, saved_mute ); 529 Sound_mute_voices( this, saved_mute );
530 } 530 }
531 531
532 return skippy_( &this->track_filter, count ); 532 return skippy_( &this->track_filter, count );
533} 533}
534 534
535blargg_err_t Track_skip( struct Ay_Emu *this, int count ) 535blargg_err_t Track_skip( struct Ay_Emu *this, int count )
536{ 536{
537 require( this->current_track >= 0 ); // start_track() must have been called already 537 require( this->current_track >= 0 ); // start_track() must have been called already
538 return track_skip( &this->track_filter, count ); 538 return track_skip( &this->track_filter, count );
539} 539}
540 540
541int Track_get_length( struct Ay_Emu* this, int n ) 541int Track_get_length( struct Ay_Emu* this, int n )
542{ 542{
543 int length = 0; 543 int length = 0;
544 544
545 byte const* track_info = get_data( &this->file, this->file.tracks + n * 4 + 2, 6 ); 545 byte const* track_info = get_data( &this->file, this->file.tracks + n * 4 + 2, 6 );
546 if ( track_info ) 546 if ( track_info )
547 length = get_be16( track_info + 4 ) * (1000 / 50); // frames to msec 547 length = get_be16( track_info + 4 ) * (1000 / 50); // frames to msec
548 548
549 if ( (this->m3u.size > 0) && (n < this->m3u.size) ) { 549 if ( (this->m3u.size > 0) && (n < this->m3u.size) ) {
550 struct entry_t* entry = &this->m3u.entries [n]; 550 struct entry_t* entry = &this->m3u.entries [n];
551 length = entry->length; 551 length = entry->length;
552 } 552 }
553 553
554 if ( length <= 0 ) 554 if ( length <= 0 )
555 length = 120 * 1000; /* 2 minutes */ 555 length = 120 * 1000; /* 2 minutes */
556 556
557 return length; 557 return length;
558} 558}
559 559
560void Track_set_fade( struct Ay_Emu *this, int start_msec, int length_msec ) 560void Track_set_fade( struct Ay_Emu *this, int start_msec, int length_msec )
561{ 561{
562 track_set_fade( &this->track_filter, msec_to_samples( start_msec, this->sample_rate ), 562 track_set_fade( &this->track_filter, msec_to_samples( start_msec, this->sample_rate ),
563 length_msec * this->sample_rate / (1000 / stereo) ); 563 length_msec * this->sample_rate / (1000 / stereo) );
564} 564}
565 565
566blargg_err_t Ay_play( struct Ay_Emu *this, int out_count, sample_t* out ) 566blargg_err_t Ay_play( struct Ay_Emu *this, int out_count, sample_t* out )
567{ 567{
568 require( this->current_track >= 0 ); 568 require( this->current_track >= 0 );
569 require( out_count % stereo == 0 ); 569 require( out_count % stereo == 0 );
570 return track_play( &this->track_filter, out_count, out ); 570 return track_play( &this->track_filter, out_count, out );
571} 571}
572 572
573blargg_err_t play_( void *emu, int count, sample_t* out ) 573blargg_err_t play_( void *emu, int count, sample_t* out )
574{ 574{
575 struct Ay_Emu* this = (struct Ay_Emu*) emu; 575 struct Ay_Emu* this = (struct Ay_Emu*) emu;
576 576
577 int remain = count; 577 int remain = count;
578 while ( remain ) 578 while ( remain )
579 { 579 {
580 Buffer_disable_immediate_removal( &this->stereo_buf ); 580 Buffer_disable_immediate_removal( &this->stereo_buf );
581 remain -= Buffer_read_samples( &this->stereo_buf, &out [count - remain], remain ); 581 remain -= Buffer_read_samples( &this->stereo_buf, &out [count - remain], remain );
582 if ( remain ) 582 if ( remain )
583 { 583 {
584 if ( this->buf_changed_count != Buffer_channels_changed_count( &this->stereo_buf ) ) 584 if ( this->buf_changed_count != Buffer_channels_changed_count( &this->stereo_buf ) )
585 { 585 {
586 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf ); 586 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf );
587 587
588 // Remute voices 588 // Remute voices
589 Sound_mute_voices( this, this->mute_mask_ ); 589 Sound_mute_voices( this, this->mute_mask_ );
590 } 590 }
591 int msec = Buffer_length( &this->stereo_buf ); 591 int msec = Buffer_length( &this->stereo_buf );
592 blip_time_t clocks_emulated = msec * this->clock_rate_ / 1000 - 100; 592 blip_time_t clocks_emulated = msec * this->clock_rate_ / 1000 - 100;
593 RETURN_ERR( run_clocks( this, &clocks_emulated, msec ) ); 593 RETURN_ERR( run_clocks( this, &clocks_emulated, msec ) );
594 assert( clocks_emulated ); 594 assert( clocks_emulated );
595 Buffer_end_frame( &this->stereo_buf, clocks_emulated ); 595 Buffer_end_frame( &this->stereo_buf, clocks_emulated );
596 } 596 }
597 } 597 }
598 return 0; 598 return 0;
599} 599}
diff --git a/apps/codecs/libgme/blargg_config.h b/apps/codecs/libgme/blargg_config.h
index 6490c15cfb..398913d1fe 100644
--- a/apps/codecs/libgme/blargg_config.h
+++ b/apps/codecs/libgme/blargg_config.h
@@ -1,42 +1,42 @@
1// Library configuration. Modify this file as necessary. 1// Library configuration. Modify this file as necessary.
2 2
3#ifndef BLARGG_CONFIG_H 3#ifndef BLARGG_CONFIG_H
4#define BLARGG_CONFIG_H 4#define BLARGG_CONFIG_H
5 5
6// Uncomment to enable platform-specific optimizations 6// Uncomment to enable platform-specific optimizations
7//#define BLARGG_NONPORTABLE 1 7//#define BLARGG_NONPORTABLE 1
8 8
9// Uncomment if automatic byte-order determination doesn't work 9// Uncomment if automatic byte-order determination doesn't work
10#ifdef ROCKBOX_BIG_ENDIAN 10#ifdef ROCKBOX_BIG_ENDIAN
11 #define BLARGG_BIG_ENDIAN 1 11 #define BLARGG_BIG_ENDIAN 1
12#endif 12#endif
13 13
14// Uncomment if you get errors in the bool section of blargg_common.h 14// Uncomment if you get errors in the bool section of blargg_common.h
15#define BLARGG_COMPILER_HAS_BOOL 1 15#define BLARGG_COMPILER_HAS_BOOL 1
16 16
17// Uncomment to use fast gb apu implementation 17// Uncomment to use fast gb apu implementation
18// #define GB_APU_FAST 1 18// #define GB_APU_FAST 1
19 19
20// Uncomment to remove agb emulation support 20// Uncomment to remove agb emulation support
21// #define GB_APU_NO_AGB 1 21// #define GB_APU_NO_AGB 1
22 22
23// Uncomment to emulate only nes apu 23// Uncomment to emulate only nes apu
24// #define NSF_EMU_APU_ONLY 1 24// #define NSF_EMU_APU_ONLY 1
25 25
26// Uncomment to remove vrc7 apu support 26// Uncomment to remove vrc7 apu support
27// #define NSF_EMU_NO_VRC7 1 27// #define NSF_EMU_NO_VRC7 1
28 28
29// Uncomment to remove fmopl apu support 29// Uncomment to remove fmopl apu support
30// #define KSS_EMU_NO_FMOPL 1 30// #define KSS_EMU_NO_FMOPL 1
31 31
32// To handle undefined reference to assert 32// To handle undefined reference to assert
33#define NDEBUG 1 33#define NDEBUG 1
34 34
35// Use standard config.h if present 35// Use standard config.h if present
36#define HAVE_CONFIG_H 1 36#define HAVE_CONFIG_H 1
37 37
38#ifdef HAVE_CONFIG_H 38#ifdef HAVE_CONFIG_H
39 #include "config.h" 39 #include "config.h"
40#endif 40#endif
41 41
42#endif 42#endif
diff --git a/apps/codecs/libgme/emu2413.c b/apps/codecs/libgme/emu2413.c
index a4637ce15b..01075821cb 100644
--- a/apps/codecs/libgme/emu2413.c
+++ b/apps/codecs/libgme/emu2413.c
@@ -1,1981 +1,1981 @@
1/*********************************************************************************** 1/***********************************************************************************
2 2
3 emu2413.c -- YM2413 emulator written by Mitsutaka Okazaki 2001 3 emu2413.c -- YM2413 emulator written by Mitsutaka Okazaki 2001
4 4
5 2001 01-08 : Version 0.10 -- 1st version. 5 2001 01-08 : Version 0.10 -- 1st version.
6 2001 01-15 : Version 0.20 -- semi-public version. 6 2001 01-15 : Version 0.20 -- semi-public version.
7 2001 01-16 : Version 0.30 -- 1st public version. 7 2001 01-16 : Version 0.30 -- 1st public version.
8 2001 01-17 : Version 0.31 -- Fixed bassdrum problem. 8 2001 01-17 : Version 0.31 -- Fixed bassdrum problem.
9 : Version 0.32 -- LPF implemented. 9 : Version 0.32 -- LPF implemented.
10 2001 01-18 : Version 0.33 -- Fixed the drum problem, refine the mix-down method. 10 2001 01-18 : Version 0.33 -- Fixed the drum problem, refine the mix-down method.
11 -- Fixed the LFO bug. 11 -- Fixed the LFO bug.
12 2001 01-24 : Version 0.35 -- Fixed the drum problem, 12 2001 01-24 : Version 0.35 -- Fixed the drum problem,
13 support undocumented EG behavior. 13 support undocumented EG behavior.
14 2001 02-02 : Version 0.38 -- Improved the performance. 14 2001 02-02 : Version 0.38 -- Improved the performance.
15 Fixed the hi-hat and cymbal model. 15 Fixed the hi-hat and cymbal model.
16 Fixed the default percussive datas. 16 Fixed the default percussive datas.
17 Noise reduction. 17 Noise reduction.
18 Fixed the feedback problem. 18 Fixed the feedback problem.
19 2001 03-03 : Version 0.39 -- Fixed some drum bugs. 19 2001 03-03 : Version 0.39 -- Fixed some drum bugs.
20 Improved the performance. 20 Improved the performance.
21 2001 03-04 : Version 0.40 -- Improved the feedback. 21 2001 03-04 : Version 0.40 -- Improved the feedback.
22 Change the default table size. 22 Change the default table size.
23 Clock and Rate can be changed during play. 23 Clock and Rate can be changed during play.
24 2001 06-24 : Version 0.50 -- Improved the hi-hat and the cymbal tone. 24 2001 06-24 : Version 0.50 -- Improved the hi-hat and the cymbal tone.
25 Added VRC7 patch (OPLL_reset_patch is changed). 25 Added VRC7 patch (OPLL_reset_patch is changed).
26 Fixed OPLL_reset() bug. 26 Fixed OPLL_reset() bug.
27 Added OPLL_setMask, OPLL_getMask and OPLL_toggleMask. 27 Added OPLL_setMask, OPLL_getMask and OPLL_toggleMask.
28 Added OPLL_writeIO. 28 Added OPLL_writeIO.
29 2001 09-28 : Version 0.51 -- Removed the noise table. 29 2001 09-28 : Version 0.51 -- Removed the noise table.
30 2002 01-28 : Version 0.52 -- Added Stereo mode. 30 2002 01-28 : Version 0.52 -- Added Stereo mode.
31 2002 02-07 : Version 0.53 -- Fixed some drum bugs. 31 2002 02-07 : Version 0.53 -- Fixed some drum bugs.
32 2002 02-20 : Version 0.54 -- Added the best quality mode. 32 2002 02-20 : Version 0.54 -- Added the best quality mode.
33 2002 03-02 : Version 0.55 -- Removed OPLL_init & OPLL_close. 33 2002 03-02 : Version 0.55 -- Removed OPLL_init & OPLL_close.
34 2002 05-30 : Version 0.60 -- Fixed HH&CYM generator and all voice datas. 34 2002 05-30 : Version 0.60 -- Fixed HH&CYM generator and all voice datas.
35 2004 04-10 : Version 0.61 -- Added YMF281B tone (defined by Chabin). 35 2004 04-10 : Version 0.61 -- Added YMF281B tone (defined by Chabin).
36 36
37 2011 03-22 : --------------- Modified by gama to use precalculated tables. 37 2011 03-22 : --------------- Modified by gama to use precalculated tables.
38 38
39 References: 39 References:
40 fmopl.c -- 1999,2000 written by Tatsuyuki Satoh (MAME development). 40 fmopl.c -- 1999,2000 written by Tatsuyuki Satoh (MAME development).
41 fmopl.c(fixed) -- (C) 2002 Jarek Burczynski. 41 fmopl.c(fixed) -- (C) 2002 Jarek Burczynski.
42 s_opl.c -- 2001 written by Mamiya (NEZplug development). 42 s_opl.c -- 2001 written by Mamiya (NEZplug development).
43 fmgen.cpp -- 1999,2000 written by cisc. 43 fmgen.cpp -- 1999,2000 written by cisc.
44 fmpac.ill -- 2000 created by NARUTO. 44 fmpac.ill -- 2000 created by NARUTO.
45 MSX-Datapack 45 MSX-Datapack
46 YMU757 data sheet 46 YMU757 data sheet
47 YM2143 data sheet 47 YM2143 data sheet
48 48
49**************************************************************************************/ 49**************************************************************************************/
50#include <stdio.h> 50#include <stdio.h>
51#include <stdlib.h> 51#include <stdlib.h>
52#include <string.h> 52#include <string.h>
53#include <math.h> 53#include <math.h>
54#include "emu2413.h" 54#include "emu2413.h"
55 55
56#include "emutables.h" 56#include "emutables.h"
57#if !defined(ROCKBOX) 57#if !defined(ROCKBOX)
58 #define EMU2413_CALCUL_TABLES 58 #define EMU2413_CALCUL_TABLES
59#else 59#else
60 #define EMU2413_COMPACTION 60 #define EMU2413_COMPACTION
61 #include "emutables.h" 61 #include "emutables.h"
62#endif 62#endif
63 63
64#if defined(EMU2413_COMPACTION) && !defined(ROCKBOX) 64#if defined(EMU2413_COMPACTION) && !defined(ROCKBOX)
65#define OPLL_TONE_NUM 1 65#define OPLL_TONE_NUM 1
66static unsigned char default_inst[OPLL_TONE_NUM][(16 + 3) * 16] = { 66static unsigned char default_inst[OPLL_TONE_NUM][(16 + 3) * 16] = {
67 { 67 {
68#include "2413tone.h" 68#include "2413tone.h"
69 } 69 }
70}; 70};
71#else 71#else
72#define OPLL_TONE_NUM 3 72#define OPLL_TONE_NUM 3
73static unsigned char default_inst[OPLL_TONE_NUM][(16 + 3) * 16] = { 73static unsigned char default_inst[OPLL_TONE_NUM][(16 + 3) * 16] = {
74 { 74 {
75#include "2413tone.h" 75#include "2413tone.h"
76 }, 76 },
77 { 77 {
78#include "vrc7tone.h" 78#include "vrc7tone.h"
79 }, 79 },
80 { 80 {
81#include "281btone.h" 81#include "281btone.h"
82 } 82 }
83}; 83};
84#endif 84#endif
85 85
86/* Size of Sintable ( 8 -- 18 can be used. 9 recommended.) */ 86/* Size of Sintable ( 8 -- 18 can be used. 9 recommended.) */
87#define PG_BITS 9 87#define PG_BITS 9
88#define PG_WIDTH (1<<PG_BITS) 88#define PG_WIDTH (1<<PG_BITS)
89 89
90/* Phase increment counter */ 90/* Phase increment counter */
91#define DP_BITS 18 91#define DP_BITS 18
92#define DP_WIDTH (1<<DP_BITS) 92#define DP_WIDTH (1<<DP_BITS)
93#define DP_BASE_BITS (DP_BITS - PG_BITS) 93#define DP_BASE_BITS (DP_BITS - PG_BITS)
94 94
95/* Dynamic range (Accuracy of sin table) */ 95/* Dynamic range (Accuracy of sin table) */
96#define DB_PREC 48 96#define DB_PREC 48
97#define DB_BITS 8 97#define DB_BITS 8
98#define DB_STEP ((double)DB_PREC/(1<<DB_BITS)) 98#define DB_STEP ((double)DB_PREC/(1<<DB_BITS))
99#define DB_MUTE (1<<DB_BITS) 99#define DB_MUTE (1<<DB_BITS)
100 100
101/* Dynamic range of envelope */ 101/* Dynamic range of envelope */
102#define EG_STEP 0.375 102#define EG_STEP 0.375
103#define EG_BITS 7 103#define EG_BITS 7
104#define EG_MUTE (1<<EG_BITS) 104#define EG_MUTE (1<<EG_BITS)
105 105
106/* Dynamic range of total level */ 106/* Dynamic range of total level */
107#define TL_STEP 0.75 107#define TL_STEP 0.75
108#define TL_BITS 6 108#define TL_BITS 6
109#define TL_MUTE (1<<TL_BITS) 109#define TL_MUTE (1<<TL_BITS)
110 110
111/* Dynamic range of sustine level */ 111/* Dynamic range of sustine level */
112#define SL_STEP 3.0 112#define SL_STEP 3.0
113#define SL_BITS 4 113#define SL_BITS 4
114#define SL_MUTE (1<<SL_BITS) 114#define SL_MUTE (1<<SL_BITS)
115 115
116#define EG2DB(d) ((d)*(e_int32)(EG_STEP/DB_STEP)) 116#define EG2DB(d) ((d)*(e_int32)(EG_STEP/DB_STEP))
117#define TL2EG(d) ((d)*(e_int32)(TL_STEP/EG_STEP)) 117#define TL2EG(d) ((d)*(e_int32)(TL_STEP/EG_STEP))
118#define SL2EG(d) ((d)*(e_int32)(SL_STEP/EG_STEP)) 118#define SL2EG(d) ((d)*(e_int32)(SL_STEP/EG_STEP))
119 119
120#define DB_POS(x) (x*DB_MUTE/DB_PREC) 120#define DB_POS(x) (x*DB_MUTE/DB_PREC)
121#define DB_NEG(x) (DB_MUTE+DB_MUTE+x*DB_MUTE/DB_PREC) 121#define DB_NEG(x) (DB_MUTE+DB_MUTE+x*DB_MUTE/DB_PREC)
122 122
123/* Bits for liner value */ 123/* Bits for liner value */
124#define DB2LIN_AMP_BITS 8 124#define DB2LIN_AMP_BITS 8
125#define SLOT_AMP_BITS (DB2LIN_AMP_BITS) 125#define SLOT_AMP_BITS (DB2LIN_AMP_BITS)
126 126
127/* Bits for envelope phase incremental counter */ 127/* Bits for envelope phase incremental counter */
128#define EG_DP_BITS 22 128#define EG_DP_BITS 22
129#define EG_DP_WIDTH (1<<EG_DP_BITS) 129#define EG_DP_WIDTH (1<<EG_DP_BITS)
130 130
131/* Bits for Pitch and Amp modulator */ 131/* Bits for Pitch and Amp modulator */
132#define PM_PG_BITS 8 132#define PM_PG_BITS 8
133#define PM_PG_WIDTH (1<<PM_PG_BITS) 133#define PM_PG_WIDTH (1<<PM_PG_BITS)
134#define PM_DP_BITS 16 134#define PM_DP_BITS 16
135#define PM_DP_WIDTH (1<<PM_DP_BITS) 135#define PM_DP_WIDTH (1<<PM_DP_BITS)
136#define AM_PG_BITS 8 136#define AM_PG_BITS 8
137#define AM_PG_WIDTH (1<<AM_PG_BITS) 137#define AM_PG_WIDTH (1<<AM_PG_BITS)
138#define AM_DP_BITS 16 138#define AM_DP_BITS 16
139#define AM_DP_WIDTH (1<<AM_DP_BITS) 139#define AM_DP_WIDTH (1<<AM_DP_BITS)
140 140
141/* PM table is calcurated by PM_AMP * pow(2,PM_DEPTH*sin(x)/1200) */ 141/* PM table is calcurated by PM_AMP * pow(2,PM_DEPTH*sin(x)/1200) */
142#define PM_AMP_BITS 8 142#define PM_AMP_BITS 8
143#define PM_AMP (1<<PM_AMP_BITS) 143#define PM_AMP (1<<PM_AMP_BITS)
144 144
145/* PM speed(Hz) and depth(cent) */ 145/* PM speed(Hz) and depth(cent) */
146#define PM_SPEED 6.4 146#define PM_SPEED 6.4
147#define PM_DEPTH 13.75 147#define PM_DEPTH 13.75
148 148
149/* AM speed(Hz) and depth(dB) */ 149/* AM speed(Hz) and depth(dB) */
150#define AM_SPEED 3.6413 150#define AM_SPEED 3.6413
151#define AM_DEPTH 4.875 151#define AM_DEPTH 4.875
152 152
153/* Cut the lower b bit(s) off. */ 153/* Cut the lower b bit(s) off. */
154#define HIGHBITS(c,b) ((c)>>(b)) 154#define HIGHBITS(c,b) ((c)>>(b))
155 155
156/* Leave the lower b bit(s). */ 156/* Leave the lower b bit(s). */
157#define LOWBITS(c,b) ((c)&((1<<(b))-1)) 157#define LOWBITS(c,b) ((c)&((1<<(b))-1))
158 158
159/* Expand x which is s bits to d bits. */ 159/* Expand x which is s bits to d bits. */
160#define EXPAND_BITS(x,s,d) ((x)<<((d)-(s))) 160#define EXPAND_BITS(x,s,d) ((x)<<((d)-(s)))
161 161
162/* Expand x which is s bits to d bits and fill expanded bits '1' */ 162/* Expand x which is s bits to d bits and fill expanded bits '1' */
163#define EXPAND_BITS_X(x,s,d) (((x)<<((d)-(s)))|((1<<((d)-(s)))-1)) 163#define EXPAND_BITS_X(x,s,d) (((x)<<((d)-(s)))|((1<<((d)-(s)))-1))
164 164
165/* Adjust envelope speed which depends on sampling rate. */ 165/* Adjust envelope speed which depends on sampling rate. */
166#define RATE_ADJUST(x) (rate==49716?(e_uint32)x:(e_uint32)(((long long)(x)*clk/rate+36)/72)) 166#define RATE_ADJUST(x) (rate==49716?(e_uint32)x:(e_uint32)(((long long)(x)*clk/rate+36)/72))
167 167
168#define MOD(o,x) (&(o)->slot[(x)<<1]) 168#define MOD(o,x) (&(o)->slot[(x)<<1])
169#define CAR(o,x) (&(o)->slot[((x)<<1)|1]) 169#define CAR(o,x) (&(o)->slot[((x)<<1)|1])
170 170
171#define BIT(s,b) (((s)>>(b))&1) 171#define BIT(s,b) (((s)>>(b))&1)
172 172
173/* Input clock */ 173/* Input clock */
174static e_uint32 clk = 844451141; 174static e_uint32 clk = 844451141;
175/* Sampling rate */ 175/* Sampling rate */
176static e_uint32 rate = 3354932; 176static e_uint32 rate = 3354932;
177 177
178/* WaveTable for each envelope amp */ 178/* WaveTable for each envelope amp */
179static e_uint16 fullsintable[PG_WIDTH]; 179static e_uint16 fullsintable[PG_WIDTH];
180static e_uint16 halfsintable[PG_WIDTH]; 180static e_uint16 halfsintable[PG_WIDTH];
181 181
182static e_uint16 *waveform[2] = { fullsintable, halfsintable }; 182static e_uint16 *waveform[2] = { fullsintable, halfsintable };
183 183
184/* LFO Table */ 184/* LFO Table */
185#ifdef EMU2413_CALCUL_TABLES 185#ifdef EMU2413_CALCUL_TABLES
186 static e_int32 pmtable[PM_PG_WIDTH]; 186 static e_int32 pmtable[PM_PG_WIDTH];
187 static e_int32 amtable[AM_PG_WIDTH]; 187 static e_int32 amtable[AM_PG_WIDTH];
188 #define PMTABLE(x) pmtable[x] 188 #define PMTABLE(x) pmtable[x]
189 #define AMTABLE(x) amtable[x] 189 #define AMTABLE(x) amtable[x]
190#else 190#else
191 #define PMTABLE(x) (e_int32)pm_coeff[x] 191 #define PMTABLE(x) (e_int32)pm_coeff[x]
192 #if (PM_PG_WIDTH != 256) 192 #if (PM_PG_WIDTH != 256)
193 #error PM_PG_WIDTH must be set to 256 if EMU2413_CALCUL_TABLES is not defined 193 #error PM_PG_WIDTH must be set to 256 if EMU2413_CALCUL_TABLES is not defined
194 #endif 194 #endif
195 #define AMTABLE(x) (e_int32)am_coeff[x] 195 #define AMTABLE(x) (e_int32)am_coeff[x]
196 #if (AM_PG_WIDTH != 256) 196 #if (AM_PG_WIDTH != 256)
197 #error AM_PG_WIDTH must be set to 256 if EMU2413_CALCUL_TABLES is not defined 197 #error AM_PG_WIDTH must be set to 256 if EMU2413_CALCUL_TABLES is not defined
198 #endif 198 #endif
199#endif 199#endif
200 200
201/* Phase delta for LFO */ 201/* Phase delta for LFO */
202static e_uint32 pm_dphase; 202static e_uint32 pm_dphase;
203static e_uint32 am_dphase; 203static e_uint32 am_dphase;
204 204
205/* dB to Liner table */ 205/* dB to Liner table */
206static e_int16 DB2LIN_TABLE[(DB_MUTE + DB_MUTE) * 2]; 206static e_int16 DB2LIN_TABLE[(DB_MUTE + DB_MUTE) * 2];
207 207
208/* Liner to Log curve conversion table (for Attack rate). */ 208/* Liner to Log curve conversion table (for Attack rate). */
209#ifdef EMU2413_CALCUL_TABLES 209#ifdef EMU2413_CALCUL_TABLES
210 static e_uint16 ar_adjust_table[1 << EG_BITS]; 210 static e_uint16 ar_adjust_table[1 << EG_BITS];
211 #define AR_ADJUST_TABLE(x) ar_adjust_table[x] 211 #define AR_ADJUST_TABLE(x) ar_adjust_table[x]
212#else 212#else
213 #define AR_ADJUST_TABLE(x) ar_adjust_coeff[x] 213 #define AR_ADJUST_TABLE(x) ar_adjust_coeff[x]
214 #if (EG_BITS != 7) 214 #if (EG_BITS != 7)
215 #error EG_BITS must be set to 7 if EMU2413_CALCUL_TABLES is not defined 215 #error EG_BITS must be set to 7 if EMU2413_CALCUL_TABLES is not defined
216 #endif 216 #endif
217#endif 217#endif
218 218
219/* Empty voice data */ 219/* Empty voice data */
220static OPLL_PATCH null_patch = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 220static OPLL_PATCH null_patch = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
221 221
222/* Basic voice Data */ 222/* Basic voice Data */
223static OPLL_PATCH default_patch[OPLL_TONE_NUM][(16 + 3) * 2]; 223static OPLL_PATCH default_patch[OPLL_TONE_NUM][(16 + 3) * 2];
224 224
225/* Definition of envelope mode */ 225/* Definition of envelope mode */
226enum OPLL_EG_STATE 226enum OPLL_EG_STATE
227{ READY, ATTACK, DECAY, SUSHOLD, SUSTINE, RELEASE, SETTLE, FINISH }; 227{ READY, ATTACK, DECAY, SUSHOLD, SUSTINE, RELEASE, SETTLE, FINISH };
228 228
229/* Phase incr table for Attack */ 229/* Phase incr table for Attack */
230static e_uint32 dphaseARTable[16][16]; 230static e_uint32 dphaseARTable[16][16];
231/* Phase incr table for Decay and Release */ 231/* Phase incr table for Decay and Release */
232static e_uint32 dphaseDRTable[16][16]; 232static e_uint32 dphaseDRTable[16][16];
233 233
234/* KSL + TL Table */ 234/* KSL + TL Table */
235e_uint8 tllTable[16][8][1 << TL_BITS][4]; 235e_uint8 tllTable[16][8][1 << TL_BITS][4];
236static e_int32 rksTable[2][8][2]; 236static e_int32 rksTable[2][8][2];
237 237
238/* We may not have too much SRAM in rockbox */ 238/* We may not have too much SRAM in rockbox */
239#if !defined(ROCKBOX) 239#if !defined(ROCKBOX)
240/* Phase incr table for PG */ 240/* Phase incr table for PG */
241static e_uint32 dphaseTable[512][8][16]; 241static e_uint32 dphaseTable[512][8][16];
242#endif 242#endif
243 243
244/*************************************************** 244/***************************************************
245 245
246 Create tables 246 Create tables
247 247
248****************************************************/ 248****************************************************/
249#ifdef EMU2413_CALCUL_TABLES 249#ifdef EMU2413_CALCUL_TABLES
250INLINE static e_int32 250INLINE static e_int32
251Min (e_int32 i, e_int32 j) 251Min (e_int32 i, e_int32 j)
252{ 252{
253 if (i < j) 253 if (i < j)
254 return i; 254 return i;
255 else 255 else
256 return j; 256 return j;
257} 257}
258 258
259/* Table for AR to LogCurve. */ 259/* Table for AR to LogCurve. */
260static void 260static void
261makeAdjustTable (void) 261makeAdjustTable (void)
262{ 262{
263 e_int32 i; 263 e_int32 i;
264 264
265 ar_adjust_table[0] = (1 << EG_BITS) - 1; 265 ar_adjust_table[0] = (1 << EG_BITS) - 1;
266 for (i = 1; i < (1<<EG_BITS); i++) 266 for (i = 1; i < (1<<EG_BITS); i++)
267 ar_adjust_table[i] = (e_uint16) ((double) (1<<EG_BITS)-1 - ((1<<EG_BITS)-1)*log(i)/log(127)); 267 ar_adjust_table[i] = (e_uint16) ((double) (1<<EG_BITS)-1 - ((1<<EG_BITS)-1)*log(i)/log(127));
268} 268}
269#endif 269#endif
270 270
271/* Table for dB(0 -- (1<<DB_BITS)-1) to Liner(0 -- DB2LIN_AMP_WIDTH) */ 271/* Table for dB(0 -- (1<<DB_BITS)-1) to Liner(0 -- DB2LIN_AMP_WIDTH) */
272static void 272static void
273makeDB2LinTable (void) 273makeDB2LinTable (void)
274{ 274{
275 e_int32 i; 275 e_int32 i;
276 for (i = 0; i < DB_MUTE + DB_MUTE; i++) 276 for (i = 0; i < DB_MUTE + DB_MUTE; i++)
277 { 277 {
278 #ifdef EMU2413_CALCUL_TABLES 278 #ifdef EMU2413_CALCUL_TABLES
279 DB2LIN_TABLE[i] = (e_int16) ((double) ((1 << DB2LIN_AMP_BITS) - 1) * pow (10, -(double) i * DB_STEP / 20)); 279 DB2LIN_TABLE[i] = (e_int16) ((double) ((1 << DB2LIN_AMP_BITS) - 1) * pow (10, -(double) i * DB_STEP / 20));
280 #else 280 #else
281 DB2LIN_TABLE[i] = db2lin_coeff[i]; 281 DB2LIN_TABLE[i] = db2lin_coeff[i];
282 #endif 282 #endif
283 if (i >= DB_MUTE) DB2LIN_TABLE[i] = 0; 283 if (i >= DB_MUTE) DB2LIN_TABLE[i] = 0;
284 DB2LIN_TABLE[i + DB_MUTE + DB_MUTE] = (e_int16) (-DB2LIN_TABLE[i]); 284 DB2LIN_TABLE[i + DB_MUTE + DB_MUTE] = (e_int16) (-DB2LIN_TABLE[i]);
285 } 285 }
286} 286}
287 287
288#ifdef EMU2413_CALCUL_TABLES 288#ifdef EMU2413_CALCUL_TABLES
289/* Liner(+0.0 - +1.0) to dB((1<<DB_BITS) - 1 -- 0) */ 289/* Liner(+0.0 - +1.0) to dB((1<<DB_BITS) - 1 -- 0) */
290static e_int32 290static e_int32
291lin2db (double d) 291lin2db (double d)
292{ 292{
293 if (d == 0) 293 if (d == 0)
294 return (DB_MUTE - 1); 294 return (DB_MUTE - 1);
295 else 295 else
296 return Min (-(e_int32) (20.0 * log10 (d) / DB_STEP), DB_MUTE-1); /* 0 -- 127 */ 296 return Min (-(e_int32) (20.0 * log10 (d) / DB_STEP), DB_MUTE-1); /* 0 -- 127 */
297} 297}
298#endif 298#endif
299 299
300/* Sin Table */ 300/* Sin Table */
301static void 301static void
302makeSinTable (void) 302makeSinTable (void)
303{ 303{
304 e_int32 i; 304 e_int32 i;
305 305
306 for (i = 0; i < PG_WIDTH / 4; i++) 306 for (i = 0; i < PG_WIDTH / 4; i++)
307 #ifdef EMU2413_CALCUL_TABLES 307 #ifdef EMU2413_CALCUL_TABLES
308 fullsintable[i] = (e_uint32) lin2db (sin (2.0 * PI * i / PG_WIDTH) ); 308 fullsintable[i] = (e_uint32) lin2db (sin (2.0 * PI * i / PG_WIDTH) );
309 #else 309 #else
310 fullsintable[i] = sin_coeff[i]; 310 fullsintable[i] = sin_coeff[i];
311 #endif 311 #endif
312 312
313 for (i = 0; i < PG_WIDTH / 4; i++) 313 for (i = 0; i < PG_WIDTH / 4; i++)
314 { 314 {
315 fullsintable[PG_WIDTH / 2 - 1 - i] = fullsintable[i]; 315 fullsintable[PG_WIDTH / 2 - 1 - i] = fullsintable[i];
316 } 316 }
317 317
318 for (i = 0; i < PG_WIDTH / 2; i++) 318 for (i = 0; i < PG_WIDTH / 2; i++)
319 { 319 {
320 fullsintable[PG_WIDTH / 2 + i] = (e_uint32) (DB_MUTE + DB_MUTE + fullsintable[i]); 320 fullsintable[PG_WIDTH / 2 + i] = (e_uint32) (DB_MUTE + DB_MUTE + fullsintable[i]);
321 } 321 }
322 322
323 for (i = 0; i < PG_WIDTH / 2; i++) 323 for (i = 0; i < PG_WIDTH / 2; i++)
324 halfsintable[i] = fullsintable[i]; 324 halfsintable[i] = fullsintable[i];
325 for (i = PG_WIDTH / 2; i < PG_WIDTH; i++) 325 for (i = PG_WIDTH / 2; i < PG_WIDTH; i++)
326 halfsintable[i] = fullsintable[0]; 326 halfsintable[i] = fullsintable[0];
327} 327}
328 328
329#ifdef EMU2413_CALCUL_TABLES 329#ifdef EMU2413_CALCUL_TABLES
330static double saw(double phase) 330static double saw(double phase)
331{ 331{
332 if(phase <= PI/2) 332 if(phase <= PI/2)
333 return phase * 2 / PI ; 333 return phase * 2 / PI ;
334 else if(phase <= PI*3/2) 334 else if(phase <= PI*3/2)
335 return 2.0 - ( phase * 2 / PI ); 335 return 2.0 - ( phase * 2 / PI );
336 else 336 else
337 return -4.0 + phase * 2 / PI; 337 return -4.0 + phase * 2 / PI;
338} 338}
339 339
340/* Table for Pitch Modulator */ 340/* Table for Pitch Modulator */
341static void 341static void
342makePmTable (void) 342makePmTable (void)
343{ 343{
344 e_int32 i; 344 e_int32 i;
345 345
346 for (i = 0; i < PM_PG_WIDTH; i++) 346 for (i = 0; i < PM_PG_WIDTH; i++)
347 /* pmtable[i] = (e_int32) ((double) PM_AMP * pow (2, (double) PM_DEPTH * sin (2.0 * PI * i / PM_PG_WIDTH) / 1200)); */ 347 /* pmtable[i] = (e_int32) ((double) PM_AMP * pow (2, (double) PM_DEPTH * sin (2.0 * PI * i / PM_PG_WIDTH) / 1200)); */
348 pmtable[i] = (e_int32) ((double) PM_AMP * pow (2, (double) PM_DEPTH * saw (2.0 * PI * i / PM_PG_WIDTH) / 1200)); 348 pmtable[i] = (e_int32) ((double) PM_AMP * pow (2, (double) PM_DEPTH * saw (2.0 * PI * i / PM_PG_WIDTH) / 1200));
349} 349}
350 350
351/* Table for Amp Modulator */ 351/* Table for Amp Modulator */
352static void 352static void
353makeAmTable (void) 353makeAmTable (void)
354{ 354{
355 e_int32 i; 355 e_int32 i;
356 356
357 for (i = 0; i < AM_PG_WIDTH; i++) 357 for (i = 0; i < AM_PG_WIDTH; i++)
358 /* amtable[i] = (e_int32) ((double) AM_DEPTH / 2 / DB_STEP * (1.0 + sin (2.0 * PI * i / PM_PG_WIDTH))); */ 358 /* amtable[i] = (e_int32) ((double) AM_DEPTH / 2 / DB_STEP * (1.0 + sin (2.0 * PI * i / PM_PG_WIDTH))); */
359 amtable[i] = (e_int32) ((double) AM_DEPTH / 2 / DB_STEP * (1.0 + saw (2.0 * PI * i / PM_PG_WIDTH))); 359 amtable[i] = (e_int32) ((double) AM_DEPTH / 2 / DB_STEP * (1.0 + saw (2.0 * PI * i / PM_PG_WIDTH)));
360} 360}
361#endif 361#endif
362 362
363#if !defined(ROCKBOX) 363#if !defined(ROCKBOX)
364/* Phase increment counter table */ 364/* Phase increment counter table */
365static void 365static void
366makeDphaseTable (void) 366makeDphaseTable (void)
367{ 367{
368 e_uint32 fnum, block, ML; 368 e_uint32 fnum, block, ML;
369 e_uint32 mltable[16] = 369 e_uint32 mltable[16] =
370 { 1, 1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2, 8 * 2, 9 * 2, 10 * 2, 10 * 2, 12 * 2, 12 * 2, 15 * 2, 15 * 2 }; 370 { 1, 1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2, 8 * 2, 9 * 2, 10 * 2, 10 * 2, 12 * 2, 12 * 2, 15 * 2, 15 * 2 };
371 371
372 for (fnum = 0; fnum < 512; fnum++) 372 for (fnum = 0; fnum < 512; fnum++)
373 for (block = 0; block < 8; block++) 373 for (block = 0; block < 8; block++)
374 for (ML = 0; ML < 16; ML++) 374 for (ML = 0; ML < 16; ML++)
375 dphaseTable[fnum][block][ML] = RATE_ADJUST (((fnum * mltable[ML]) << block) >> (20 - DP_BITS)); 375 dphaseTable[fnum][block][ML] = RATE_ADJUST (((fnum * mltable[ML]) << block) >> (20 - DP_BITS));
376} 376}
377#endif 377#endif
378 378
379static void 379static void
380makeTllTable (void) 380makeTllTable (void)
381{ 381{
382/* Multiplication owith 8 to have an integer result. This allows to remove floating point operation. */ 382/* Multiplication owith 8 to have an integer result. This allows to remove floating point operation. */
383#define dB2(x) (int)((x)*2*8) 383#define dB2(x) (int)((x)*2*8)
384 384
385 static int kltable[16] = { 385 static int kltable[16] = {
386 dB2 ( 0.000), dB2 ( 9.000), dB2 (12.000), dB2 (13.875), dB2 (15.000), dB2 (16.125), dB2 (16.875), dB2 (17.625), 386 dB2 ( 0.000), dB2 ( 9.000), dB2 (12.000), dB2 (13.875), dB2 (15.000), dB2 (16.125), dB2 (16.875), dB2 (17.625),
387 dB2 (18.000), dB2 (18.750), dB2 (19.125), dB2 (19.500), dB2 (19.875), dB2 (20.250), dB2 (20.625), dB2 (21.000) 387 dB2 (18.000), dB2 (18.750), dB2 (19.125), dB2 (19.500), dB2 (19.875), dB2 (20.250), dB2 (20.625), dB2 (21.000)
388 }; 388 };
389 389
390 e_int32 tmp; 390 e_int32 tmp;
391 e_int32 fnum, block, TL, KL; 391 e_int32 fnum, block, TL, KL;
392 392
393 for (fnum = 0; fnum < 16; fnum++) 393 for (fnum = 0; fnum < 16; fnum++)
394 for (block = 0; block < 8; block++) 394 for (block = 0; block < 8; block++)
395 for (TL = 0; TL < 64; TL++) 395 for (TL = 0; TL < 64; TL++)
396 for (KL = 0; KL < 4; KL++) 396 for (KL = 0; KL < 4; KL++)
397 { 397 {
398 if (KL == 0) 398 if (KL == 0)
399 { 399 {
400 tllTable[fnum][block][TL][KL] = TL2EG (TL); 400 tllTable[fnum][block][TL][KL] = TL2EG (TL);
401 } 401 }
402 else 402 else
403 { 403 {
404 tmp = (e_int32) ((kltable[fnum] - dB2 (3.000) * (7 - block))/8); 404 tmp = (e_int32) ((kltable[fnum] - dB2 (3.000) * (7 - block))/8);
405 if (tmp <= 0) 405 if (tmp <= 0)
406 tllTable[fnum][block][TL][KL] = TL2EG (TL); 406 tllTable[fnum][block][TL][KL] = TL2EG (TL);
407 else 407 else
408 /* tllTable[fnum][block][TL][KL] = (e_uint32) ((tmp >> (3 - KL)) / EG_STEP) + TL2EG (TL); */ 408 /* tllTable[fnum][block][TL][KL] = (e_uint32) ((tmp >> (3 - KL)) / EG_STEP) + TL2EG (TL); */
409 tllTable[fnum][block][TL][KL] = (e_uint32) ((tmp << KL) / (int)(EG_STEP*8)) + TL2EG (TL); 409 tllTable[fnum][block][TL][KL] = (e_uint32) ((tmp << KL) / (int)(EG_STEP*8)) + TL2EG (TL);
410 } 410 }
411 } 411 }
412} 412}
413 413
414#ifdef USE_SPEC_ENV_SPEED 414#ifdef USE_SPEC_ENV_SPEED
415static double attacktime[16][4] = { 415static double attacktime[16][4] = {
416 {0, 0, 0, 0}, 416 {0, 0, 0, 0},
417 {1730.15, 1400.60, 1153.43, 988.66}, 417 {1730.15, 1400.60, 1153.43, 988.66},
418 {865.08, 700.30, 576.72, 494.33}, 418 {865.08, 700.30, 576.72, 494.33},
419 {432.54, 350.15, 288.36, 247.16}, 419 {432.54, 350.15, 288.36, 247.16},
420 {216.27, 175.07, 144.18, 123.58}, 420 {216.27, 175.07, 144.18, 123.58},
421 {108.13, 87.54, 72.09, 61.79}, 421 {108.13, 87.54, 72.09, 61.79},
422 {54.07, 43.77, 36.04, 30.90}, 422 {54.07, 43.77, 36.04, 30.90},
423 {27.03, 21.88, 18.02, 15.45}, 423 {27.03, 21.88, 18.02, 15.45},
424 {13.52, 10.94, 9.01, 7.72}, 424 {13.52, 10.94, 9.01, 7.72},
425 {6.76, 5.47, 4.51, 3.86}, 425 {6.76, 5.47, 4.51, 3.86},
426 {3.38, 2.74, 2.25, 1.93}, 426 {3.38, 2.74, 2.25, 1.93},
427 {1.69, 1.37, 1.13, 0.97}, 427 {1.69, 1.37, 1.13, 0.97},
428 {0.84, 0.70, 0.60, 0.54}, 428 {0.84, 0.70, 0.60, 0.54},
429 {0.50, 0.42, 0.34, 0.30}, 429 {0.50, 0.42, 0.34, 0.30},
430 {0.28, 0.22, 0.18, 0.14}, 430 {0.28, 0.22, 0.18, 0.14},
431 {0.00, 0.00, 0.00, 0.00} 431 {0.00, 0.00, 0.00, 0.00}
432}; 432};
433 433
434static double decaytime[16][4] = { 434static double decaytime[16][4] = {
435 {0, 0, 0, 0}, 435 {0, 0, 0, 0},
436 {20926.60, 16807.20, 14006.00, 12028.60}, 436 {20926.60, 16807.20, 14006.00, 12028.60},
437 {10463.30, 8403.58, 7002.98, 6014.32}, 437 {10463.30, 8403.58, 7002.98, 6014.32},
438 {5231.64, 4201.79, 3501.49, 3007.16}, 438 {5231.64, 4201.79, 3501.49, 3007.16},
439 {2615.82, 2100.89, 1750.75, 1503.58}, 439 {2615.82, 2100.89, 1750.75, 1503.58},
440 {1307.91, 1050.45, 875.37, 751.79}, 440 {1307.91, 1050.45, 875.37, 751.79},
441 {653.95, 525.22, 437.69, 375.90}, 441 {653.95, 525.22, 437.69, 375.90},
442 {326.98, 262.61, 218.84, 187.95}, 442 {326.98, 262.61, 218.84, 187.95},
443 {163.49, 131.31, 109.42, 93.97}, 443 {163.49, 131.31, 109.42, 93.97},
444 {81.74, 65.65, 54.71, 46.99}, 444 {81.74, 65.65, 54.71, 46.99},
445 {40.87, 32.83, 27.36, 23.49}, 445 {40.87, 32.83, 27.36, 23.49},
446 {20.44, 16.41, 13.68, 11.75}, 446 {20.44, 16.41, 13.68, 11.75},
447 {10.22, 8.21, 6.84, 5.87}, 447 {10.22, 8.21, 6.84, 5.87},
448 {5.11, 4.10, 3.42, 2.94}, 448 {5.11, 4.10, 3.42, 2.94},
449 {2.55, 2.05, 1.71, 1.47}, 449 {2.55, 2.05, 1.71, 1.47},
450 {1.27, 1.27, 1.27, 1.27} 450 {1.27, 1.27, 1.27, 1.27}
451}; 451};
452#endif 452#endif
453 453
454/* Rate Table for Attack */ 454/* Rate Table for Attack */
455static void 455static void
456makeDphaseARTable (void) 456makeDphaseARTable (void)
457{ 457{
458 e_int32 AR, Rks, RM, RL; 458 e_int32 AR, Rks, RM, RL;
459 459
460#ifdef USE_SPEC_ENV_SPEED 460#ifdef USE_SPEC_ENV_SPEED
461 e_uint32 attacktable[16][4]; 461 e_uint32 attacktable[16][4];
462 462
463 for (RM = 0; RM < 16; RM++) 463 for (RM = 0; RM < 16; RM++)
464 for (RL = 0; RL < 4; RL++) 464 for (RL = 0; RL < 4; RL++)
465 { 465 {
466 if (RM == 0) 466 if (RM == 0)
467 attacktable[RM][RL] = 0; 467 attacktable[RM][RL] = 0;
468 else if (RM == 15) 468 else if (RM == 15)
469 attacktable[RM][RL] = EG_DP_WIDTH; 469 attacktable[RM][RL] = EG_DP_WIDTH;
470 else 470 else
471 attacktable[RM][RL] = (e_uint32) ((double) (1 << EG_DP_BITS) / (attacktime[RM][RL] * 3579545 / 72000)); 471 attacktable[RM][RL] = (e_uint32) ((double) (1 << EG_DP_BITS) / (attacktime[RM][RL] * 3579545 / 72000));
472 472
473 } 473 }
474#endif 474#endif
475 475
476 for (AR = 0; AR < 16; AR++) 476 for (AR = 0; AR < 16; AR++)
477 for (Rks = 0; Rks < 16; Rks++) 477 for (Rks = 0; Rks < 16; Rks++)
478 { 478 {
479 RM = AR + (Rks >> 2); 479 RM = AR + (Rks >> 2);
480 RL = Rks & 3; 480 RL = Rks & 3;
481 if (RM > 15) 481 if (RM > 15)
482 RM = 15; 482 RM = 15;
483 switch (AR) 483 switch (AR)
484 { 484 {
485 case 0: 485 case 0:
486 dphaseARTable[AR][Rks] = 0; 486 dphaseARTable[AR][Rks] = 0;
487 break; 487 break;
488 case 15: 488 case 15:
489 dphaseARTable[AR][Rks] = 0;/*EG_DP_WIDTH;*/ 489 dphaseARTable[AR][Rks] = 0;/*EG_DP_WIDTH;*/
490 break; 490 break;
491 default: 491 default:
492#ifdef USE_SPEC_ENV_SPEED 492#ifdef USE_SPEC_ENV_SPEED
493 dphaseARTable[AR][Rks] = RATE_ADJUST (attacktable[RM][RL]); 493 dphaseARTable[AR][Rks] = RATE_ADJUST (attacktable[RM][RL]);
494#else 494#else
495 dphaseARTable[AR][Rks] = RATE_ADJUST ((3 * (RL + 4) << (RM + 1))); 495 dphaseARTable[AR][Rks] = RATE_ADJUST ((3 * (RL + 4) << (RM + 1)));
496#endif 496#endif
497 break; 497 break;
498 } 498 }
499 } 499 }
500} 500}
501 501
502/* Rate Table for Decay and Release */ 502/* Rate Table for Decay and Release */
503static void 503static void
504makeDphaseDRTable (void) 504makeDphaseDRTable (void)
505{ 505{
506 e_int32 DR, Rks, RM, RL; 506 e_int32 DR, Rks, RM, RL;
507 507
508#ifdef USE_SPEC_ENV_SPEED 508#ifdef USE_SPEC_ENV_SPEED
509 e_uint32 decaytable[16][4]; 509 e_uint32 decaytable[16][4];
510 510
511 for (RM = 0; RM < 16; RM++) 511 for (RM = 0; RM < 16; RM++)
512 for (RL = 0; RL < 4; RL++) 512 for (RL = 0; RL < 4; RL++)
513 if (RM == 0) 513 if (RM == 0)
514 decaytable[RM][RL] = 0; 514 decaytable[RM][RL] = 0;
515 else 515 else
516 decaytable[RM][RL] = (e_uint32) ((double) (1 << EG_DP_BITS) / (decaytime[RM][RL] * 3579545 / 72000)); 516 decaytable[RM][RL] = (e_uint32) ((double) (1 << EG_DP_BITS) / (decaytime[RM][RL] * 3579545 / 72000));
517#endif 517#endif
518 518
519 for (DR = 0; DR < 16; DR++) 519 for (DR = 0; DR < 16; DR++)
520 for (Rks = 0; Rks < 16; Rks++) 520 for (Rks = 0; Rks < 16; Rks++)
521 { 521 {
522 RM = DR + (Rks >> 2); 522 RM = DR + (Rks >> 2);
523 RL = Rks & 3; 523 RL = Rks & 3;
524 if (RM > 15) 524 if (RM > 15)
525 RM = 15; 525 RM = 15;
526 switch (DR) 526 switch (DR)
527 { 527 {
528 case 0: 528 case 0:
529 dphaseDRTable[DR][Rks] = 0; 529 dphaseDRTable[DR][Rks] = 0;
530 break; 530 break;
531 default: 531 default:
532#ifdef USE_SPEC_ENV_SPEED 532#ifdef USE_SPEC_ENV_SPEED
533 dphaseDRTable[DR][Rks] = RATE_ADJUST (decaytable[RM][RL]); 533 dphaseDRTable[DR][Rks] = RATE_ADJUST (decaytable[RM][RL]);
534#else 534#else
535 dphaseDRTable[DR][Rks] = RATE_ADJUST ((RL + 4) << (RM - 1)); 535 dphaseDRTable[DR][Rks] = RATE_ADJUST ((RL + 4) << (RM - 1));
536#endif 536#endif
537 break; 537 break;
538 } 538 }
539 } 539 }
540} 540}
541 541
542static void 542static void
543makeRksTable (void) 543makeRksTable (void)
544{ 544{
545 545
546 e_int32 fnum8, block, KR; 546 e_int32 fnum8, block, KR;
547 547
548 for (fnum8 = 0; fnum8 < 2; fnum8++) 548 for (fnum8 = 0; fnum8 < 2; fnum8++)
549 for (block = 0; block < 8; block++) 549 for (block = 0; block < 8; block++)
550 for (KR = 0; KR < 2; KR++) 550 for (KR = 0; KR < 2; KR++)
551 { 551 {
552 if (KR != 0) 552 if (KR != 0)
553 rksTable[fnum8][block][KR] = (block << 1) + fnum8; 553 rksTable[fnum8][block][KR] = (block << 1) + fnum8;
554 else 554 else
555 rksTable[fnum8][block][KR] = block >> 1; 555 rksTable[fnum8][block][KR] = block >> 1;
556 } 556 }
557} 557}
558 558
559void 559void
560OPLL_dump2patch (const e_uint8 * dump, OPLL_PATCH * patch) 560OPLL_dump2patch (const e_uint8 * dump, OPLL_PATCH * patch)
561{ 561{
562 patch[0].AM = (dump[0] >> 7) & 1; 562 patch[0].AM = (dump[0] >> 7) & 1;
563 patch[1].AM = (dump[1] >> 7) & 1; 563 patch[1].AM = (dump[1] >> 7) & 1;
564 patch[0].PM = (dump[0] >> 6) & 1; 564 patch[0].PM = (dump[0] >> 6) & 1;
565 patch[1].PM = (dump[1] >> 6) & 1; 565 patch[1].PM = (dump[1] >> 6) & 1;
566 patch[0].EG = (dump[0] >> 5) & 1; 566 patch[0].EG = (dump[0] >> 5) & 1;
567 patch[1].EG = (dump[1] >> 5) & 1; 567 patch[1].EG = (dump[1] >> 5) & 1;
568 patch[0].KR = (dump[0] >> 4) & 1; 568 patch[0].KR = (dump[0] >> 4) & 1;
569 patch[1].KR = (dump[1] >> 4) & 1; 569 patch[1].KR = (dump[1] >> 4) & 1;
570 patch[0].ML = (dump[0]) & 15; 570 patch[0].ML = (dump[0]) & 15;
571 patch[1].ML = (dump[1]) & 15; 571 patch[1].ML = (dump[1]) & 15;
572 patch[0].KL = (dump[2] >> 6) & 3; 572 patch[0].KL = (dump[2] >> 6) & 3;
573 patch[1].KL = (dump[3] >> 6) & 3; 573 patch[1].KL = (dump[3] >> 6) & 3;
574 patch[0].TL = (dump[2]) & 63; 574 patch[0].TL = (dump[2]) & 63;
575 patch[0].FB = (dump[3]) & 7; 575 patch[0].FB = (dump[3]) & 7;
576 patch[0].WF = (dump[3] >> 3) & 1; 576 patch[0].WF = (dump[3] >> 3) & 1;
577 patch[1].WF = (dump[3] >> 4) & 1; 577 patch[1].WF = (dump[3] >> 4) & 1;
578 patch[0].AR = (dump[4] >> 4) & 15; 578 patch[0].AR = (dump[4] >> 4) & 15;
579 patch[1].AR = (dump[5] >> 4) & 15; 579 patch[1].AR = (dump[5] >> 4) & 15;
580 patch[0].DR = (dump[4]) & 15; 580 patch[0].DR = (dump[4]) & 15;
581 patch[1].DR = (dump[5]) & 15; 581 patch[1].DR = (dump[5]) & 15;
582 patch[0].SL = (dump[6] >> 4) & 15; 582 patch[0].SL = (dump[6] >> 4) & 15;
583 patch[1].SL = (dump[7] >> 4) & 15; 583 patch[1].SL = (dump[7] >> 4) & 15;
584 patch[0].RR = (dump[6]) & 15; 584 patch[0].RR = (dump[6]) & 15;
585 patch[1].RR = (dump[7]) & 15; 585 patch[1].RR = (dump[7]) & 15;
586} 586}
587 587
588void 588void
589OPLL_getDefaultPatch (e_int32 type, e_int32 num, OPLL_PATCH * patch) 589OPLL_getDefaultPatch (e_int32 type, e_int32 num, OPLL_PATCH * patch)
590{ 590{
591 OPLL_dump2patch (default_inst[type] + num * 16, patch); 591 OPLL_dump2patch (default_inst[type] + num * 16, patch);
592} 592}
593 593
594static void 594static void
595makeDefaultPatch ( void ) 595makeDefaultPatch ( void )
596{ 596{
597 e_int32 i, j; 597 e_int32 i, j;
598 598
599 for (i = 0; i < OPLL_TONE_NUM; i++) 599 for (i = 0; i < OPLL_TONE_NUM; i++)
600 for (j = 0; j < 19; j++) 600 for (j = 0; j < 19; j++)
601 OPLL_getDefaultPatch (i, j, &default_patch[i][j * 2]); 601 OPLL_getDefaultPatch (i, j, &default_patch[i][j * 2]);
602 602
603} 603}
604 604
605void 605void
606OPLL_setPatch (OPLL * opll, const e_uint8 * dump) 606OPLL_setPatch (OPLL * opll, const e_uint8 * dump)
607{ 607{
608 OPLL_PATCH patch[2]; 608 OPLL_PATCH patch[2];
609 int i; 609 int i;
610 610
611 for (i = 0; i < 19; i++) 611 for (i = 0; i < 19; i++)
612 { 612 {
613 OPLL_dump2patch (dump + i * 16, patch); 613 OPLL_dump2patch (dump + i * 16, patch);
614 memcpy (&opll->patch[i*2+0], &patch[0], sizeof (OPLL_PATCH)); 614 memcpy (&opll->patch[i*2+0], &patch[0], sizeof (OPLL_PATCH));
615 memcpy (&opll->patch[i*2+1], &patch[1], sizeof (OPLL_PATCH)); 615 memcpy (&opll->patch[i*2+1], &patch[1], sizeof (OPLL_PATCH));
616 } 616 }
617} 617}
618 618
619void 619void
620OPLL_patch2dump (const OPLL_PATCH * patch, e_uint8 * dump) 620OPLL_patch2dump (const OPLL_PATCH * patch, e_uint8 * dump)
621{ 621{
622 dump[0] = (e_uint8) ((patch[0].AM << 7) + (patch[0].PM << 6) + (patch[0].EG << 5) + (patch[0].KR << 4) + patch[0].ML); 622 dump[0] = (e_uint8) ((patch[0].AM << 7) + (patch[0].PM << 6) + (patch[0].EG << 5) + (patch[0].KR << 4) + patch[0].ML);
623 dump[1] = (e_uint8) ((patch[1].AM << 7) + (patch[1].PM << 6) + (patch[1].EG << 5) + (patch[1].KR << 4) + patch[1].ML); 623 dump[1] = (e_uint8) ((patch[1].AM << 7) + (patch[1].PM << 6) + (patch[1].EG << 5) + (patch[1].KR << 4) + patch[1].ML);
624 dump[2] = (e_uint8) ((patch[0].KL << 6) + patch[0].TL); 624 dump[2] = (e_uint8) ((patch[0].KL << 6) + patch[0].TL);
625 dump[3] = (e_uint8) ((patch[1].KL << 6) + (patch[1].WF << 4) + (patch[0].WF << 3) + patch[0].FB); 625 dump[3] = (e_uint8) ((patch[1].KL << 6) + (patch[1].WF << 4) + (patch[0].WF << 3) + patch[0].FB);
626 dump[4] = (e_uint8) ((patch[0].AR << 4) + patch[0].DR); 626 dump[4] = (e_uint8) ((patch[0].AR << 4) + patch[0].DR);
627 dump[5] = (e_uint8) ((patch[1].AR << 4) + patch[1].DR); 627 dump[5] = (e_uint8) ((patch[1].AR << 4) + patch[1].DR);
628 dump[6] = (e_uint8) ((patch[0].SL << 4) + patch[0].RR); 628 dump[6] = (e_uint8) ((patch[0].SL << 4) + patch[0].RR);
629 dump[7] = (e_uint8) ((patch[1].SL << 4) + patch[1].RR); 629 dump[7] = (e_uint8) ((patch[1].SL << 4) + patch[1].RR);
630 dump[8] = 0; 630 dump[8] = 0;
631 dump[9] = 0; 631 dump[9] = 0;
632 dump[10] = 0; 632 dump[10] = 0;
633 dump[11] = 0; 633 dump[11] = 0;
634 dump[12] = 0; 634 dump[12] = 0;
635 dump[13] = 0; 635 dump[13] = 0;
636 dump[14] = 0; 636 dump[14] = 0;
637 dump[15] = 0; 637 dump[15] = 0;
638} 638}
639 639
640/************************************************************ 640/************************************************************
641 641
642 Calc Parameters 642 Calc Parameters
643 643
644************************************************************/ 644************************************************************/
645 645
646INLINE static e_uint32 646INLINE static e_uint32
647calc_eg_dphase (OPLL_SLOT * slot) 647calc_eg_dphase (OPLL_SLOT * slot)
648{ 648{
649 649
650 switch (slot->eg_mode) 650 switch (slot->eg_mode)
651 { 651 {
652 case ATTACK: 652 case ATTACK:
653 return dphaseARTable[slot->patch->AR][slot->rks]; 653 return dphaseARTable[slot->patch->AR][slot->rks];
654 654
655 case DECAY: 655 case DECAY:
656 return dphaseDRTable[slot->patch->DR][slot->rks]; 656 return dphaseDRTable[slot->patch->DR][slot->rks];
657 657
658 case SUSHOLD: 658 case SUSHOLD:
659 return 0; 659 return 0;
660 660
661 case SUSTINE: 661 case SUSTINE:
662 return dphaseDRTable[slot->patch->RR][slot->rks]; 662 return dphaseDRTable[slot->patch->RR][slot->rks];
663 663
664 case RELEASE: 664 case RELEASE:
665 if (slot->sustine) 665 if (slot->sustine)
666 return dphaseDRTable[5][slot->rks]; 666 return dphaseDRTable[5][slot->rks];
667 else if (slot->patch->EG) 667 else if (slot->patch->EG)
668 return dphaseDRTable[slot->patch->RR][slot->rks]; 668 return dphaseDRTable[slot->patch->RR][slot->rks];
669 else 669 else
670 return dphaseDRTable[7][slot->rks]; 670 return dphaseDRTable[7][slot->rks];
671 671
672 case SETTLE: 672 case SETTLE:
673 return dphaseDRTable[15][0]; 673 return dphaseDRTable[15][0];
674 674
675 case FINISH: 675 case FINISH:
676 return 0; 676 return 0;
677 677
678 default: 678 default:
679 return 0; 679 return 0;
680 } 680 }
681} 681}
682 682
683/************************************************************* 683/*************************************************************
684 684
685 OPLL internal interfaces 685 OPLL internal interfaces
686 686
687*************************************************************/ 687*************************************************************/
688#define SLOT_BD1 12 688#define SLOT_BD1 12
689#define SLOT_BD2 13 689#define SLOT_BD2 13
690#define SLOT_HH 14 690#define SLOT_HH 14
691#define SLOT_SD 15 691#define SLOT_SD 15
692#define SLOT_TOM 16 692#define SLOT_TOM 16
693#define SLOT_CYM 17 693#define SLOT_CYM 17
694 694
695/* We will set this dinamically, but not sure if this affects playback */ 695/* We will set this dinamically, but not sure if this affects playback */
696#if defined(ROCKBOX) 696#if defined(ROCKBOX)
697INLINE static void 697INLINE static void
698UPDATE_PG(OPLL_SLOT * slot) 698UPDATE_PG(OPLL_SLOT * slot)
699{ 699{
700 static const e_uint32 mltable[16] = 700 static const e_uint32 mltable[16] =
701 { 1, 1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2, 8 * 2, 9 * 2, 10 * 2, 10 * 2, 12 * 2, 12 * 2, 15 * 2, 15 * 2 }; 701 { 1, 1 * 2, 2 * 2, 3 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2, 8 * 2, 9 * 2, 10 * 2, 10 * 2, 12 * 2, 12 * 2, 15 * 2, 15 * 2 };
702 702
703 slot->dphase = RATE_ADJUST (((slot->fnum * mltable[slot->patch->ML]) << slot->block) >> (20 - DP_BITS)); 703 slot->dphase = RATE_ADJUST (((slot->fnum * mltable[slot->patch->ML]) << slot->block) >> (20 - DP_BITS));
704} 704}
705#else 705#else
706#define UPDATE_PG(S) (S)->dphase = dphaseTable[(S)->fnum][(S)->block][(S)->patch->ML] 706#define UPDATE_PG(S) (S)->dphase = dphaseTable[(S)->fnum][(S)->block][(S)->patch->ML]
707#endif 707#endif
708 708
709#define UPDATE_TLL(S)\ 709#define UPDATE_TLL(S)\
710(((S)->type==0)?\ 710(((S)->type==0)?\
711((S)->tll = tllTable[((S)->fnum)>>5][(S)->block][(S)->patch->TL][(S)->patch->KL]):\ 711((S)->tll = tllTable[((S)->fnum)>>5][(S)->block][(S)->patch->TL][(S)->patch->KL]):\
712((S)->tll = tllTable[((S)->fnum)>>5][(S)->block][(S)->volume][(S)->patch->KL])) 712((S)->tll = tllTable[((S)->fnum)>>5][(S)->block][(S)->volume][(S)->patch->KL]))
713#define UPDATE_RKS(S) (S)->rks = rksTable[((S)->fnum)>>8][(S)->block][(S)->patch->KR] 713#define UPDATE_RKS(S) (S)->rks = rksTable[((S)->fnum)>>8][(S)->block][(S)->patch->KR]
714#define UPDATE_WF(S) (S)->sintbl = waveform[(S)->patch->WF] 714#define UPDATE_WF(S) (S)->sintbl = waveform[(S)->patch->WF]
715#define UPDATE_EG(S) (S)->eg_dphase = calc_eg_dphase(S) 715#define UPDATE_EG(S) (S)->eg_dphase = calc_eg_dphase(S)
716#define UPDATE_ALL(S)\ 716#define UPDATE_ALL(S)\
717 UPDATE_PG(S);\ 717 UPDATE_PG(S);\
718 UPDATE_TLL(S);\ 718 UPDATE_TLL(S);\
719 UPDATE_RKS(S);\ 719 UPDATE_RKS(S);\
720 UPDATE_WF(S); \ 720 UPDATE_WF(S); \
721 UPDATE_EG(S) /* EG should be updated last. */ 721 UPDATE_EG(S) /* EG should be updated last. */
722 722
723 723
724/* Slot key on */ 724/* Slot key on */
725INLINE static void 725INLINE static void
726slotOn (OPLL_SLOT * slot) 726slotOn (OPLL_SLOT * slot)
727{ 727{
728 slot->eg_mode = ATTACK; 728 slot->eg_mode = ATTACK;
729 slot->eg_phase = 0; 729 slot->eg_phase = 0;
730 slot->phase = 0; 730 slot->phase = 0;
731 UPDATE_EG(slot); 731 UPDATE_EG(slot);
732} 732}
733 733
734/* Slot key on without reseting the phase */ 734/* Slot key on without reseting the phase */
735INLINE static void 735INLINE static void
736slotOn2 (OPLL_SLOT * slot) 736slotOn2 (OPLL_SLOT * slot)
737{ 737{
738 slot->eg_mode = ATTACK; 738 slot->eg_mode = ATTACK;
739 slot->eg_phase = 0; 739 slot->eg_phase = 0;
740 UPDATE_EG(slot); 740 UPDATE_EG(slot);
741} 741}
742 742
743/* Slot key off */ 743/* Slot key off */
744INLINE static void 744INLINE static void
745slotOff (OPLL_SLOT * slot) 745slotOff (OPLL_SLOT * slot)
746{ 746{
747 if (slot->eg_mode == ATTACK) 747 if (slot->eg_mode == ATTACK)
748 slot->eg_phase = EXPAND_BITS (AR_ADJUST_TABLE(HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS)), EG_BITS, EG_DP_BITS); 748 slot->eg_phase = EXPAND_BITS (AR_ADJUST_TABLE(HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS)), EG_BITS, EG_DP_BITS);
749 slot->eg_mode = RELEASE; 749 slot->eg_mode = RELEASE;
750 UPDATE_EG(slot); 750 UPDATE_EG(slot);
751} 751}
752 752
753/* Channel key on */ 753/* Channel key on */
754INLINE static void 754INLINE static void
755keyOn (OPLL * opll, e_int32 i) 755keyOn (OPLL * opll, e_int32 i)
756{ 756{
757 if (!opll->slot_on_flag[i * 2]) 757 if (!opll->slot_on_flag[i * 2])
758 slotOn (MOD(opll,i)); 758 slotOn (MOD(opll,i));
759 if (!opll->slot_on_flag[i * 2 + 1]) 759 if (!opll->slot_on_flag[i * 2 + 1])
760 slotOn (CAR(opll,i)); 760 slotOn (CAR(opll,i));
761 opll->key_status[i] = 1; 761 opll->key_status[i] = 1;
762} 762}
763 763
764/* Channel key off */ 764/* Channel key off */
765INLINE static void 765INLINE static void
766keyOff (OPLL * opll, e_int32 i) 766keyOff (OPLL * opll, e_int32 i)
767{ 767{
768 if (opll->slot_on_flag[i * 2 + 1]) 768 if (opll->slot_on_flag[i * 2 + 1])
769 slotOff (CAR(opll,i)); 769 slotOff (CAR(opll,i));
770 opll->key_status[i] = 0; 770 opll->key_status[i] = 0;
771} 771}
772 772
773INLINE static void 773INLINE static void
774keyOn_BD (OPLL * opll) 774keyOn_BD (OPLL * opll)
775{ 775{
776 keyOn (opll, 6); 776 keyOn (opll, 6);
777} 777}
778INLINE static void 778INLINE static void
779keyOn_SD (OPLL * opll) 779keyOn_SD (OPLL * opll)
780{ 780{
781 if (!opll->slot_on_flag[SLOT_SD]) 781 if (!opll->slot_on_flag[SLOT_SD])
782 slotOn (CAR(opll,7)); 782 slotOn (CAR(opll,7));
783} 783}
784INLINE static void 784INLINE static void
785keyOn_TOM (OPLL * opll) 785keyOn_TOM (OPLL * opll)
786{ 786{
787 if (!opll->slot_on_flag[SLOT_TOM]) 787 if (!opll->slot_on_flag[SLOT_TOM])
788 slotOn (MOD(opll,8)); 788 slotOn (MOD(opll,8));
789} 789}
790INLINE static void 790INLINE static void
791keyOn_HH (OPLL * opll) 791keyOn_HH (OPLL * opll)
792{ 792{
793 if (!opll->slot_on_flag[SLOT_HH]) 793 if (!opll->slot_on_flag[SLOT_HH])
794 slotOn2 (MOD(opll,7)); 794 slotOn2 (MOD(opll,7));
795} 795}
796INLINE static void 796INLINE static void
797keyOn_CYM (OPLL * opll) 797keyOn_CYM (OPLL * opll)
798{ 798{
799 if (!opll->slot_on_flag[SLOT_CYM]) 799 if (!opll->slot_on_flag[SLOT_CYM])
800 slotOn2 (CAR(opll,8)); 800 slotOn2 (CAR(opll,8));
801} 801}
802 802
803/* Drum key off */ 803/* Drum key off */
804INLINE static void 804INLINE static void
805keyOff_BD (OPLL * opll) 805keyOff_BD (OPLL * opll)
806{ 806{
807 keyOff (opll, 6); 807 keyOff (opll, 6);
808} 808}
809INLINE static void 809INLINE static void
810keyOff_SD (OPLL * opll) 810keyOff_SD (OPLL * opll)
811{ 811{
812 if (opll->slot_on_flag[SLOT_SD]) 812 if (opll->slot_on_flag[SLOT_SD])
813 slotOff (CAR(opll,7)); 813 slotOff (CAR(opll,7));
814} 814}
815INLINE static void 815INLINE static void
816keyOff_TOM (OPLL * opll) 816keyOff_TOM (OPLL * opll)
817{ 817{
818 if (opll->slot_on_flag[SLOT_TOM]) 818 if (opll->slot_on_flag[SLOT_TOM])
819 slotOff (MOD(opll,8)); 819 slotOff (MOD(opll,8));
820} 820}
821INLINE static void 821INLINE static void
822keyOff_HH (OPLL * opll) 822keyOff_HH (OPLL * opll)
823{ 823{
824 if (opll->slot_on_flag[SLOT_HH]) 824 if (opll->slot_on_flag[SLOT_HH])
825 slotOff (MOD(opll,7)); 825 slotOff (MOD(opll,7));
826} 826}
827INLINE static void 827INLINE static void
828keyOff_CYM (OPLL * opll) 828keyOff_CYM (OPLL * opll)
829{ 829{
830 if (opll->slot_on_flag[SLOT_CYM]) 830 if (opll->slot_on_flag[SLOT_CYM])
831 slotOff (CAR(opll,8)); 831 slotOff (CAR(opll,8));
832} 832}
833 833
834/* Change a voice */ 834/* Change a voice */
835INLINE static void 835INLINE static void
836setPatch (OPLL * opll, e_int32 i, e_int32 num) 836setPatch (OPLL * opll, e_int32 i, e_int32 num)
837{ 837{
838 opll->patch_number[i] = num; 838 opll->patch_number[i] = num;
839 MOD(opll,i)->patch = &opll->patch[num * 2 + 0]; 839 MOD(opll,i)->patch = &opll->patch[num * 2 + 0];
840 CAR(opll,i)->patch = &opll->patch[num * 2 + 1]; 840 CAR(opll,i)->patch = &opll->patch[num * 2 + 1];
841} 841}
842 842
843/* Change a rhythm voice */ 843/* Change a rhythm voice */
844INLINE static void 844INLINE static void
845setSlotPatch (OPLL_SLOT * slot, OPLL_PATCH * patch) 845setSlotPatch (OPLL_SLOT * slot, OPLL_PATCH * patch)
846{ 846{
847 slot->patch = patch; 847 slot->patch = patch;
848} 848}
849 849
850/* Set sustine parameter */ 850/* Set sustine parameter */
851INLINE static void 851INLINE static void
852setSustine (OPLL * opll, e_int32 c, e_int32 sustine) 852setSustine (OPLL * opll, e_int32 c, e_int32 sustine)
853{ 853{
854 CAR(opll,c)->sustine = sustine; 854 CAR(opll,c)->sustine = sustine;
855 if (MOD(opll,c)->type) 855 if (MOD(opll,c)->type)
856 MOD(opll,c)->sustine = sustine; 856 MOD(opll,c)->sustine = sustine;
857} 857}
858 858
859/* Volume : 6bit ( Volume register << 2 ) */ 859/* Volume : 6bit ( Volume register << 2 ) */
860INLINE static void 860INLINE static void
861setVolume (OPLL * opll, e_int32 c, e_int32 volume) 861setVolume (OPLL * opll, e_int32 c, e_int32 volume)
862{ 862{
863 CAR(opll,c)->volume = volume; 863 CAR(opll,c)->volume = volume;
864} 864}
865 865
866INLINE static void 866INLINE static void
867setSlotVolume (OPLL_SLOT * slot, e_int32 volume) 867setSlotVolume (OPLL_SLOT * slot, e_int32 volume)
868{ 868{
869 slot->volume = volume; 869 slot->volume = volume;
870} 870}
871 871
872/* Set F-Number ( fnum : 9bit ) */ 872/* Set F-Number ( fnum : 9bit ) */
873INLINE static void 873INLINE static void
874setFnumber (OPLL * opll, e_int32 c, e_int32 fnum) 874setFnumber (OPLL * opll, e_int32 c, e_int32 fnum)
875{ 875{
876 CAR(opll,c)->fnum = fnum; 876 CAR(opll,c)->fnum = fnum;
877 MOD(opll,c)->fnum = fnum; 877 MOD(opll,c)->fnum = fnum;
878} 878}
879 879
880/* Set Block data (block : 3bit ) */ 880/* Set Block data (block : 3bit ) */
881INLINE static void 881INLINE static void
882setBlock (OPLL * opll, e_int32 c, e_int32 block) 882setBlock (OPLL * opll, e_int32 c, e_int32 block)
883{ 883{
884 CAR(opll,c)->block = block; 884 CAR(opll,c)->block = block;
885 MOD(opll,c)->block = block; 885 MOD(opll,c)->block = block;
886} 886}
887 887
888/* Change Rhythm Mode */ 888/* Change Rhythm Mode */
889INLINE static void 889INLINE static void
890update_rhythm_mode (OPLL * opll) 890update_rhythm_mode (OPLL * opll)
891{ 891{
892 if (opll->patch_number[6] & 0x10) 892 if (opll->patch_number[6] & 0x10)
893 { 893 {
894 if (!(opll->slot_on_flag[SLOT_BD2] | (opll->reg[0x0e] & 32))) 894 if (!(opll->slot_on_flag[SLOT_BD2] | (opll->reg[0x0e] & 32)))
895 { 895 {
896 opll->slot[SLOT_BD1].eg_mode = FINISH; 896 opll->slot[SLOT_BD1].eg_mode = FINISH;
897 opll->slot[SLOT_BD2].eg_mode = FINISH; 897 opll->slot[SLOT_BD2].eg_mode = FINISH;
898 setPatch (opll, 6, opll->reg[0x36] >> 4); 898 setPatch (opll, 6, opll->reg[0x36] >> 4);
899 } 899 }
900 } 900 }
901 else if (opll->reg[0x0e] & 32) 901 else if (opll->reg[0x0e] & 32)
902 { 902 {
903 opll->patch_number[6] = 16; 903 opll->patch_number[6] = 16;
904 opll->slot[SLOT_BD1].eg_mode = FINISH; 904 opll->slot[SLOT_BD1].eg_mode = FINISH;
905 opll->slot[SLOT_BD2].eg_mode = FINISH; 905 opll->slot[SLOT_BD2].eg_mode = FINISH;
906 setSlotPatch (&opll->slot[SLOT_BD1], &opll->patch[16 * 2 + 0]); 906 setSlotPatch (&opll->slot[SLOT_BD1], &opll->patch[16 * 2 + 0]);
907 setSlotPatch (&opll->slot[SLOT_BD2], &opll->patch[16 * 2 + 1]); 907 setSlotPatch (&opll->slot[SLOT_BD2], &opll->patch[16 * 2 + 1]);
908 } 908 }
909 909
910 if (opll->patch_number[7] & 0x10) 910 if (opll->patch_number[7] & 0x10)
911 { 911 {
912 if (!((opll->slot_on_flag[SLOT_HH] && opll->slot_on_flag[SLOT_SD]) | (opll->reg[0x0e] & 32))) 912 if (!((opll->slot_on_flag[SLOT_HH] && opll->slot_on_flag[SLOT_SD]) | (opll->reg[0x0e] & 32)))
913 { 913 {
914 opll->slot[SLOT_HH].type = 0; 914 opll->slot[SLOT_HH].type = 0;
915 opll->slot[SLOT_HH].eg_mode = FINISH; 915 opll->slot[SLOT_HH].eg_mode = FINISH;
916 opll->slot[SLOT_SD].eg_mode = FINISH; 916 opll->slot[SLOT_SD].eg_mode = FINISH;
917 setPatch (opll, 7, opll->reg[0x37] >> 4); 917 setPatch (opll, 7, opll->reg[0x37] >> 4);
918 } 918 }
919 } 919 }
920 else if (opll->reg[0x0e] & 32) 920 else if (opll->reg[0x0e] & 32)
921 { 921 {
922 opll->patch_number[7] = 17; 922 opll->patch_number[7] = 17;
923 opll->slot[SLOT_HH].type = 1; 923 opll->slot[SLOT_HH].type = 1;
924 opll->slot[SLOT_HH].eg_mode = FINISH; 924 opll->slot[SLOT_HH].eg_mode = FINISH;
925 opll->slot[SLOT_SD].eg_mode = FINISH; 925 opll->slot[SLOT_SD].eg_mode = FINISH;
926 setSlotPatch (&opll->slot[SLOT_HH], &opll->patch[17 * 2 + 0]); 926 setSlotPatch (&opll->slot[SLOT_HH], &opll->patch[17 * 2 + 0]);
927 setSlotPatch (&opll->slot[SLOT_SD], &opll->patch[17 * 2 + 1]); 927 setSlotPatch (&opll->slot[SLOT_SD], &opll->patch[17 * 2 + 1]);
928 } 928 }
929 929
930 if (opll->patch_number[8] & 0x10) 930 if (opll->patch_number[8] & 0x10)
931 { 931 {
932 if (!((opll->slot_on_flag[SLOT_CYM] && opll->slot_on_flag[SLOT_TOM]) | (opll->reg[0x0e] & 32))) 932 if (!((opll->slot_on_flag[SLOT_CYM] && opll->slot_on_flag[SLOT_TOM]) | (opll->reg[0x0e] & 32)))
933 { 933 {
934 opll->slot[SLOT_TOM].type = 0; 934 opll->slot[SLOT_TOM].type = 0;
935 opll->slot[SLOT_TOM].eg_mode = FINISH; 935 opll->slot[SLOT_TOM].eg_mode = FINISH;
936 opll->slot[SLOT_CYM].eg_mode = FINISH; 936 opll->slot[SLOT_CYM].eg_mode = FINISH;
937 setPatch (opll, 8, opll->reg[0x38] >> 4); 937 setPatch (opll, 8, opll->reg[0x38] >> 4);
938 } 938 }
939 } 939 }
940 else if (opll->reg[0x0e] & 32) 940 else if (opll->reg[0x0e] & 32)
941 { 941 {
942 opll->patch_number[8] = 18; 942 opll->patch_number[8] = 18;
943 opll->slot[SLOT_TOM].type = 1; 943 opll->slot[SLOT_TOM].type = 1;
944 opll->slot[SLOT_TOM].eg_mode = FINISH; 944 opll->slot[SLOT_TOM].eg_mode = FINISH;
945 opll->slot[SLOT_CYM].eg_mode = FINISH; 945 opll->slot[SLOT_CYM].eg_mode = FINISH;
946 setSlotPatch (&opll->slot[SLOT_TOM], &opll->patch[18 * 2 + 0]); 946 setSlotPatch (&opll->slot[SLOT_TOM], &opll->patch[18 * 2 + 0]);
947 setSlotPatch (&opll->slot[SLOT_CYM], &opll->patch[18 * 2 + 1]); 947 setSlotPatch (&opll->slot[SLOT_CYM], &opll->patch[18 * 2 + 1]);
948 } 948 }
949} 949}
950 950
951INLINE static void 951INLINE static void
952update_key_status (OPLL * opll) 952update_key_status (OPLL * opll)
953{ 953{
954 int ch; 954 int ch;
955 955
956 for (ch = 0; ch < 9; ch++) 956 for (ch = 0; ch < 9; ch++)
957 opll->slot_on_flag[ch * 2] = opll->slot_on_flag[ch * 2 + 1] = (opll->reg[0x20 + ch]) & 0x10; 957 opll->slot_on_flag[ch * 2] = opll->slot_on_flag[ch * 2 + 1] = (opll->reg[0x20 + ch]) & 0x10;
958 958
959 if (opll->reg[0x0e] & 32) 959 if (opll->reg[0x0e] & 32)
960 { 960 {
961 opll->slot_on_flag[SLOT_BD1] |= (opll->reg[0x0e] & 0x10); 961 opll->slot_on_flag[SLOT_BD1] |= (opll->reg[0x0e] & 0x10);
962 opll->slot_on_flag[SLOT_BD2] |= (opll->reg[0x0e] & 0x10); 962 opll->slot_on_flag[SLOT_BD2] |= (opll->reg[0x0e] & 0x10);
963 opll->slot_on_flag[SLOT_SD] |= (opll->reg[0x0e] & 0x08); 963 opll->slot_on_flag[SLOT_SD] |= (opll->reg[0x0e] & 0x08);
964 opll->slot_on_flag[SLOT_HH] |= (opll->reg[0x0e] & 0x01); 964 opll->slot_on_flag[SLOT_HH] |= (opll->reg[0x0e] & 0x01);
965 opll->slot_on_flag[SLOT_TOM] |= (opll->reg[0x0e] & 0x04); 965 opll->slot_on_flag[SLOT_TOM] |= (opll->reg[0x0e] & 0x04);
966 opll->slot_on_flag[SLOT_CYM] |= (opll->reg[0x0e] & 0x02); 966 opll->slot_on_flag[SLOT_CYM] |= (opll->reg[0x0e] & 0x02);
967 } 967 }
968} 968}
969 969
970void 970void
971OPLL_copyPatch (OPLL * opll, e_int32 num, OPLL_PATCH * patch) 971OPLL_copyPatch (OPLL * opll, e_int32 num, OPLL_PATCH * patch)
972{ 972{
973 memcpy (&opll->patch[num], patch, sizeof (OPLL_PATCH)); 973 memcpy (&opll->patch[num], patch, sizeof (OPLL_PATCH));
974} 974}
975 975
976/*********************************************************** 976/***********************************************************
977 977
978 Initializing 978 Initializing
979 979
980***********************************************************/ 980***********************************************************/
981 981
982static void 982static void
983OPLL_SLOT_reset (OPLL_SLOT * slot, int type) 983OPLL_SLOT_reset (OPLL_SLOT * slot, int type)
984{ 984{
985 slot->type = type; 985 slot->type = type;
986 slot->sintbl = waveform[0]; 986 slot->sintbl = waveform[0];
987 slot->phase = 0; 987 slot->phase = 0;
988 slot->dphase = 0; 988 slot->dphase = 0;
989 slot->output[0] = 0; 989 slot->output[0] = 0;
990 slot->output[1] = 0; 990 slot->output[1] = 0;
991 slot->feedback = 0; 991 slot->feedback = 0;
992 slot->eg_mode = FINISH; 992 slot->eg_mode = FINISH;
993 slot->eg_phase = EG_DP_WIDTH; 993 slot->eg_phase = EG_DP_WIDTH;
994 slot->eg_dphase = 0; 994 slot->eg_dphase = 0;
995 slot->rks = 0; 995 slot->rks = 0;
996 slot->tll = 0; 996 slot->tll = 0;
997 slot->sustine = 0; 997 slot->sustine = 0;
998 slot->fnum = 0; 998 slot->fnum = 0;
999 slot->block = 0; 999 slot->block = 0;
1000 slot->volume = 0; 1000 slot->volume = 0;
1001 slot->pgout = 0; 1001 slot->pgout = 0;
1002 slot->egout = 0; 1002 slot->egout = 0;
1003 slot->patch = &null_patch; 1003 slot->patch = &null_patch;
1004} 1004}
1005 1005
1006static void 1006static void
1007internal_refresh (void) 1007internal_refresh (void)
1008{ 1008{
1009#if !defined(ROCKBOX) 1009#if !defined(ROCKBOX)
1010 makeDphaseTable (); 1010 makeDphaseTable ();
1011#endif 1011#endif
1012 makeDphaseARTable (); 1012 makeDphaseARTable ();
1013 makeDphaseDRTable (); 1013 makeDphaseDRTable ();
1014 pm_dphase = (e_uint32) RATE_ADJUST ((int)(PM_SPEED * PM_DP_WIDTH) / (clk / 72)); 1014 pm_dphase = (e_uint32) RATE_ADJUST ((int)(PM_SPEED * PM_DP_WIDTH) / (clk / 72));
1015 am_dphase = (e_uint32) RATE_ADJUST ((int)(AM_SPEED * AM_DP_WIDTH) / (clk / 72)); 1015 am_dphase = (e_uint32) RATE_ADJUST ((int)(AM_SPEED * AM_DP_WIDTH) / (clk / 72));
1016} 1016}
1017 1017
1018static void 1018static void
1019maketables (e_uint32 c, e_uint32 r) 1019maketables (e_uint32 c, e_uint32 r)
1020{ 1020{
1021 if (c != clk) 1021 if (c != clk)
1022 { 1022 {
1023 clk = c; 1023 clk = c;
1024#ifdef EMU2413_CALCUL_TABLES 1024#ifdef EMU2413_CALCUL_TABLES
1025 makePmTable (); 1025 makePmTable ();
1026 makeAmTable (); 1026 makeAmTable ();
1027 makeAdjustTable (); 1027 makeAdjustTable ();
1028#endif 1028#endif
1029 makeDB2LinTable (); 1029 makeDB2LinTable ();
1030 makeTllTable (); 1030 makeTllTable ();
1031 makeRksTable (); 1031 makeRksTable ();
1032 makeSinTable (); 1032 makeSinTable ();
1033 makeDefaultPatch (); 1033 makeDefaultPatch ();
1034 } 1034 }
1035 1035
1036 if (r != rate) 1036 if (r != rate)
1037 { 1037 {
1038 rate = r; 1038 rate = r;
1039 internal_refresh (); 1039 internal_refresh ();
1040 } 1040 }
1041} 1041}
1042 1042
1043void 1043void
1044OPLL_new (OPLL *opll, e_uint32 clk, e_uint32 rate) 1044OPLL_new (OPLL *opll, e_uint32 clk, e_uint32 rate)
1045{ 1045{
1046 e_int32 i; 1046 e_int32 i;
1047 1047
1048 maketables (clk, rate); 1048 maketables (clk, rate);
1049 1049
1050 memset(opll, 0, sizeof (OPLL)); 1050 memset(opll, 0, sizeof (OPLL));
1051 for (i = 0; i < 19 * 2; i++) 1051 for (i = 0; i < 19 * 2; i++)
1052 memcpy(&opll->patch[i],&null_patch,sizeof(OPLL_PATCH)); 1052 memcpy(&opll->patch[i],&null_patch,sizeof(OPLL_PATCH));
1053 1053
1054 opll->mask = 0; 1054 opll->mask = 0;
1055 1055
1056 OPLL_reset (opll); 1056 OPLL_reset (opll);
1057 OPLL_reset_patch (opll, 0); 1057 OPLL_reset_patch (opll, 0);
1058} 1058}
1059 1059
1060 1060
1061void 1061void
1062OPLL_delete (OPLL * opll) 1062OPLL_delete (OPLL * opll)
1063{ 1063{
1064 (void) opll; 1064 (void) opll;
1065} 1065}
1066 1066
1067 1067
1068/* Reset patch datas by system default. */ 1068/* Reset patch datas by system default. */
1069void 1069void
1070OPLL_reset_patch (OPLL * opll, e_int32 type) 1070OPLL_reset_patch (OPLL * opll, e_int32 type)
1071{ 1071{
1072 e_int32 i; 1072 e_int32 i;
1073 1073
1074 for (i = 0; i < 19 * 2; i++) 1074 for (i = 0; i < 19 * 2; i++)
1075 OPLL_copyPatch (opll, i, &default_patch[type % OPLL_TONE_NUM][i]); 1075 OPLL_copyPatch (opll, i, &default_patch[type % OPLL_TONE_NUM][i]);
1076} 1076}
1077 1077
1078/* Reset whole of OPLL except patch datas. */ 1078/* Reset whole of OPLL except patch datas. */
1079void 1079void
1080OPLL_reset (OPLL * opll) 1080OPLL_reset (OPLL * opll)
1081{ 1081{
1082 e_int32 i; 1082 e_int32 i;
1083 1083
1084 if (!opll) 1084 if (!opll)
1085 return; 1085 return;
1086 1086
1087 opll->adr = 0; 1087 opll->adr = 0;
1088 opll->out = 0; 1088 opll->out = 0;
1089 1089
1090 opll->pm_phase = 0; 1090 opll->pm_phase = 0;
1091 opll->am_phase = 0; 1091 opll->am_phase = 0;
1092 1092
1093 opll->noise_seed = 0xffff; 1093 opll->noise_seed = 0xffff;
1094 opll->mask = 0; 1094 opll->mask = 0;
1095 1095
1096 for (i = 0; i <18; i++) 1096 for (i = 0; i <18; i++)
1097 OPLL_SLOT_reset(&opll->slot[i], i%2); 1097 OPLL_SLOT_reset(&opll->slot[i], i%2);
1098 1098
1099 for (i = 0; i < 9; i++) 1099 for (i = 0; i < 9; i++)
1100 { 1100 {
1101 opll->key_status[i] = 0; 1101 opll->key_status[i] = 0;
1102 setPatch (opll, i, 0); 1102 setPatch (opll, i, 0);
1103 } 1103 }
1104 1104
1105 for (i = 0; i < 0x40; i++) 1105 for (i = 0; i < 0x40; i++)
1106 OPLL_writeReg (opll, i, 0); 1106 OPLL_writeReg (opll, i, 0);
1107 1107
1108#ifndef EMU2413_COMPACTION 1108#ifndef EMU2413_COMPACTION
1109 opll->realstep = (e_uint32) ((1 << 31) / rate); 1109 opll->realstep = (e_uint32) ((1 << 31) / rate);
1110 opll->opllstep = (e_uint32) ((1 << 31) / (clk / 72)); 1110 opll->opllstep = (e_uint32) ((1 << 31) / (clk / 72));
1111 opll->oplltime = 0; 1111 opll->oplltime = 0;
1112 for (i = 0; i < 14; i++) 1112 for (i = 0; i < 14; i++)
1113 opll->pan[i] = 2; 1113 opll->pan[i] = 2;
1114 opll->sprev[0] = opll->sprev[1] = 0; 1114 opll->sprev[0] = opll->sprev[1] = 0;
1115 opll->snext[0] = opll->snext[1] = 0; 1115 opll->snext[0] = opll->snext[1] = 0;
1116#endif 1116#endif
1117} 1117}
1118 1118
1119/* Force Refresh (When external program changes some parameters). */ 1119/* Force Refresh (When external program changes some parameters). */
1120void 1120void
1121OPLL_forceRefresh (OPLL * opll) 1121OPLL_forceRefresh (OPLL * opll)
1122{ 1122{
1123 e_int32 i; 1123 e_int32 i;
1124 1124
1125 if (opll == NULL) 1125 if (opll == NULL)
1126 return; 1126 return;
1127 1127
1128 for (i = 0; i < 9; i++) 1128 for (i = 0; i < 9; i++)
1129 setPatch(opll,i,opll->patch_number[i]); 1129 setPatch(opll,i,opll->patch_number[i]);
1130 1130
1131 for (i = 0; i < 18; i++) 1131 for (i = 0; i < 18; i++)
1132 { 1132 {
1133 UPDATE_PG (&opll->slot[i]); 1133 UPDATE_PG (&opll->slot[i]);
1134 UPDATE_RKS (&opll->slot[i]); 1134 UPDATE_RKS (&opll->slot[i]);
1135 UPDATE_TLL (&opll->slot[i]); 1135 UPDATE_TLL (&opll->slot[i]);
1136 UPDATE_WF (&opll->slot[i]); 1136 UPDATE_WF (&opll->slot[i]);
1137 UPDATE_EG (&opll->slot[i]); 1137 UPDATE_EG (&opll->slot[i]);
1138 } 1138 }
1139} 1139}
1140 1140
1141void 1141void
1142OPLL_set_rate (OPLL * opll, e_uint32 r) 1142OPLL_set_rate (OPLL * opll, e_uint32 r)
1143{ 1143{
1144 if (rate == r) return; 1144 if (rate == r) return;
1145 if (opll->quality) 1145 if (opll->quality)
1146 rate = 49716; 1146 rate = 49716;
1147 else 1147 else
1148 rate = r; 1148 rate = r;
1149 internal_refresh (); 1149 internal_refresh ();
1150 rate = r; 1150 rate = r;
1151} 1151}
1152 1152
1153void 1153void
1154OPLL_set_quality (OPLL * opll, e_uint32 q) 1154OPLL_set_quality (OPLL * opll, e_uint32 q)
1155{ 1155{
1156 opll->quality = q; 1156 opll->quality = q;
1157 OPLL_set_rate (opll, rate); 1157 OPLL_set_rate (opll, rate);
1158} 1158}
1159 1159
1160/********************************************************* 1160/*********************************************************
1161 1161
1162 Generate wave data 1162 Generate wave data
1163 1163
1164*********************************************************/ 1164*********************************************************/
1165/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 2PI). */ 1165/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 2PI). */
1166#if ( SLOT_AMP_BITS - PG_BITS ) > 0 1166#if ( SLOT_AMP_BITS - PG_BITS ) > 0
1167#define wave2_2pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS )) 1167#define wave2_2pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS ))
1168#else 1168#else
1169#define wave2_2pi(e) ( (e) << ( PG_BITS - SLOT_AMP_BITS )) 1169#define wave2_2pi(e) ( (e) << ( PG_BITS - SLOT_AMP_BITS ))
1170#endif 1170#endif
1171 1171
1172/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 4PI). */ 1172/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 4PI). */
1173#if ( SLOT_AMP_BITS - PG_BITS - 1 ) == 0 1173#if ( SLOT_AMP_BITS - PG_BITS - 1 ) == 0
1174#define wave2_4pi(e) (e) 1174#define wave2_4pi(e) (e)
1175#elif ( SLOT_AMP_BITS - PG_BITS - 1 ) > 0 1175#elif ( SLOT_AMP_BITS - PG_BITS - 1 ) > 0
1176#define wave2_4pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 1 )) 1176#define wave2_4pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 1 ))
1177#else 1177#else
1178#define wave2_4pi(e) ( (e) << ( 1 + PG_BITS - SLOT_AMP_BITS )) 1178#define wave2_4pi(e) ( (e) << ( 1 + PG_BITS - SLOT_AMP_BITS ))
1179#endif 1179#endif
1180 1180
1181/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 8PI). */ 1181/* Convert Amp(0 to EG_HEIGHT) to Phase(0 to 8PI). */
1182#if ( SLOT_AMP_BITS - PG_BITS - 2 ) == 0 1182#if ( SLOT_AMP_BITS - PG_BITS - 2 ) == 0
1183#define wave2_8pi(e) (e) 1183#define wave2_8pi(e) (e)
1184#elif ( SLOT_AMP_BITS - PG_BITS - 2 ) > 0 1184#elif ( SLOT_AMP_BITS - PG_BITS - 2 ) > 0
1185#define wave2_8pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 2 )) 1185#define wave2_8pi(e) ( (e) >> ( SLOT_AMP_BITS - PG_BITS - 2 ))
1186#else 1186#else
1187#define wave2_8pi(e) ( (e) << ( 2 + PG_BITS - SLOT_AMP_BITS )) 1187#define wave2_8pi(e) ( (e) << ( 2 + PG_BITS - SLOT_AMP_BITS ))
1188#endif 1188#endif
1189 1189
1190/* Update AM, PM unit */ 1190/* Update AM, PM unit */
1191INLINE static void 1191INLINE static void
1192update_ampm (OPLL * opll) 1192update_ampm (OPLL * opll)
1193{ 1193{
1194 opll->pm_phase = (opll->pm_phase + pm_dphase) & (PM_DP_WIDTH - 1); 1194 opll->pm_phase = (opll->pm_phase + pm_dphase) & (PM_DP_WIDTH - 1);
1195 opll->am_phase = (opll->am_phase + am_dphase) & (AM_DP_WIDTH - 1); 1195 opll->am_phase = (opll->am_phase + am_dphase) & (AM_DP_WIDTH - 1);
1196 opll->lfo_am = AMTABLE(HIGHBITS (opll->am_phase, AM_DP_BITS - AM_PG_BITS)); 1196 opll->lfo_am = AMTABLE(HIGHBITS (opll->am_phase, AM_DP_BITS - AM_PG_BITS));
1197 opll->lfo_pm = PMTABLE(HIGHBITS (opll->pm_phase, PM_DP_BITS - PM_PG_BITS)); 1197 opll->lfo_pm = PMTABLE(HIGHBITS (opll->pm_phase, PM_DP_BITS - PM_PG_BITS));
1198} 1198}
1199 1199
1200/* PG */ 1200/* PG */
1201INLINE static void 1201INLINE static void
1202calc_phase (OPLL_SLOT * slot, e_int32 lfo) 1202calc_phase (OPLL_SLOT * slot, e_int32 lfo)
1203{ 1203{
1204 if (slot->patch->PM) 1204 if (slot->patch->PM)
1205 slot->phase += (slot->dphase * lfo) >> PM_AMP_BITS; 1205 slot->phase += (slot->dphase * lfo) >> PM_AMP_BITS;
1206 else 1206 else
1207 slot->phase += slot->dphase; 1207 slot->phase += slot->dphase;
1208 1208
1209 slot->phase &= (DP_WIDTH - 1); 1209 slot->phase &= (DP_WIDTH - 1);
1210 1210
1211 slot->pgout = HIGHBITS (slot->phase, DP_BASE_BITS); 1211 slot->pgout = HIGHBITS (slot->phase, DP_BASE_BITS);
1212} 1212}
1213 1213
1214/* Update Noise unit */ 1214/* Update Noise unit */
1215INLINE static void 1215INLINE static void
1216update_noise (OPLL * opll) 1216update_noise (OPLL * opll)
1217{ 1217{
1218 if(opll->noise_seed&1) opll->noise_seed ^= 0x8003020; 1218 if(opll->noise_seed&1) opll->noise_seed ^= 0x8003020;
1219 opll->noise_seed >>= 1; 1219 opll->noise_seed >>= 1;
1220} 1220}
1221 1221
1222/* EG */ 1222/* EG */
1223INLINE static void 1223INLINE static void
1224calc_envelope (OPLL_SLOT * slot, e_int32 lfo) 1224calc_envelope (OPLL_SLOT * slot, e_int32 lfo)
1225{ 1225{
1226#define S2E(x) (SL2EG((e_int32)(x/SL_STEP))<<(EG_DP_BITS-EG_BITS)) 1226#define S2E(x) (SL2EG((e_int32)(x/SL_STEP))<<(EG_DP_BITS-EG_BITS))
1227 1227
1228 static e_uint32 SL[16] = { 1228 static e_uint32 SL[16] = {
1229 S2E (0.0), S2E (3.0), S2E (6.0), S2E (9.0), S2E (12.0), S2E (15.0), S2E (18.0), S2E (21.0), 1229 S2E (0.0), S2E (3.0), S2E (6.0), S2E (9.0), S2E (12.0), S2E (15.0), S2E (18.0), S2E (21.0),
1230 S2E (24.0), S2E (27.0), S2E (30.0), S2E (33.0), S2E (36.0), S2E (39.0), S2E (42.0), S2E (48.0) 1230 S2E (24.0), S2E (27.0), S2E (30.0), S2E (33.0), S2E (36.0), S2E (39.0), S2E (42.0), S2E (48.0)
1231 }; 1231 };
1232 1232
1233 e_uint32 egout; 1233 e_uint32 egout;
1234 1234
1235 switch (slot->eg_mode) 1235 switch (slot->eg_mode)
1236 { 1236 {
1237 case ATTACK: 1237 case ATTACK:
1238 egout = AR_ADJUST_TABLE(HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS)); 1238 egout = AR_ADJUST_TABLE(HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS));
1239 slot->eg_phase += slot->eg_dphase; 1239 slot->eg_phase += slot->eg_dphase;
1240 if((EG_DP_WIDTH & slot->eg_phase)||(slot->patch->AR==15)) 1240 if((EG_DP_WIDTH & slot->eg_phase)||(slot->patch->AR==15))
1241 { 1241 {
1242 egout = 0; 1242 egout = 0;
1243 slot->eg_phase = 0; 1243 slot->eg_phase = 0;
1244 slot->eg_mode = DECAY; 1244 slot->eg_mode = DECAY;
1245 UPDATE_EG (slot); 1245 UPDATE_EG (slot);
1246 } 1246 }
1247 break; 1247 break;
1248 1248
1249 case DECAY: 1249 case DECAY:
1250 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); 1250 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS);
1251 slot->eg_phase += slot->eg_dphase; 1251 slot->eg_phase += slot->eg_dphase;
1252 if (slot->eg_phase >= SL[slot->patch->SL]) 1252 if (slot->eg_phase >= SL[slot->patch->SL])
1253 { 1253 {
1254 if (slot->patch->EG) 1254 if (slot->patch->EG)
1255 { 1255 {
1256 slot->eg_phase = SL[slot->patch->SL]; 1256 slot->eg_phase = SL[slot->patch->SL];
1257 slot->eg_mode = SUSHOLD; 1257 slot->eg_mode = SUSHOLD;
1258 UPDATE_EG (slot); 1258 UPDATE_EG (slot);
1259 } 1259 }
1260 else 1260 else
1261 { 1261 {
1262 slot->eg_phase = SL[slot->patch->SL]; 1262 slot->eg_phase = SL[slot->patch->SL];
1263 slot->eg_mode = SUSTINE; 1263 slot->eg_mode = SUSTINE;
1264 UPDATE_EG (slot); 1264 UPDATE_EG (slot);
1265 } 1265 }
1266 } 1266 }
1267 break; 1267 break;
1268 1268
1269 case SUSHOLD: 1269 case SUSHOLD:
1270 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); 1270 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS);
1271 if (slot->patch->EG == 0) 1271 if (slot->patch->EG == 0)
1272 { 1272 {
1273 slot->eg_mode = SUSTINE; 1273 slot->eg_mode = SUSTINE;
1274 UPDATE_EG (slot); 1274 UPDATE_EG (slot);
1275 } 1275 }
1276 break; 1276 break;
1277 1277
1278 case SUSTINE: 1278 case SUSTINE:
1279 case RELEASE: 1279 case RELEASE:
1280 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); 1280 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS);
1281 slot->eg_phase += slot->eg_dphase; 1281 slot->eg_phase += slot->eg_dphase;
1282 if (egout >= (1 << EG_BITS)) 1282 if (egout >= (1 << EG_BITS))
1283 { 1283 {
1284 slot->eg_mode = FINISH; 1284 slot->eg_mode = FINISH;
1285 egout = (1 << EG_BITS) - 1; 1285 egout = (1 << EG_BITS) - 1;
1286 } 1286 }
1287 break; 1287 break;
1288 1288
1289 case SETTLE: 1289 case SETTLE:
1290 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS); 1290 egout = HIGHBITS (slot->eg_phase, EG_DP_BITS - EG_BITS);
1291 slot->eg_phase += slot->eg_dphase; 1291 slot->eg_phase += slot->eg_dphase;
1292 if (egout >= (1 << EG_BITS)) 1292 if (egout >= (1 << EG_BITS))
1293 { 1293 {
1294 slot->eg_mode = ATTACK; 1294 slot->eg_mode = ATTACK;
1295 egout = (1 << EG_BITS) - 1; 1295 egout = (1 << EG_BITS) - 1;
1296 UPDATE_EG(slot); 1296 UPDATE_EG(slot);
1297 } 1297 }
1298 break; 1298 break;
1299 1299
1300 case FINISH: 1300 case FINISH:
1301 egout = (1 << EG_BITS) - 1; 1301 egout = (1 << EG_BITS) - 1;
1302 break; 1302 break;
1303 1303
1304 default: 1304 default:
1305 egout = (1 << EG_BITS) - 1; 1305 egout = (1 << EG_BITS) - 1;
1306 break; 1306 break;
1307 } 1307 }
1308 1308
1309 if (slot->patch->AM) 1309 if (slot->patch->AM)
1310 egout = EG2DB (egout + slot->tll) + lfo; 1310 egout = EG2DB (egout + slot->tll) + lfo;
1311 else 1311 else
1312 egout = EG2DB (egout + slot->tll); 1312 egout = EG2DB (egout + slot->tll);
1313 1313
1314 if (egout >= DB_MUTE) 1314 if (egout >= DB_MUTE)
1315 egout = DB_MUTE - 1; 1315 egout = DB_MUTE - 1;
1316 1316
1317 slot->egout = egout | 3; 1317 slot->egout = egout | 3;
1318} 1318}
1319 1319
1320/* CARRIOR */ 1320/* CARRIOR */
1321INLINE static e_int32 1321INLINE static e_int32
1322calc_slot_car (OPLL_SLOT * slot, e_int32 fm) 1322calc_slot_car (OPLL_SLOT * slot, e_int32 fm)
1323{ 1323{
1324 if (slot->egout >= (DB_MUTE - 1)) 1324 if (slot->egout >= (DB_MUTE - 1))
1325 { 1325 {
1326 slot->output[0] = 0; 1326 slot->output[0] = 0;
1327 } 1327 }
1328 else 1328 else
1329 { 1329 {
1330 slot->output[0] = DB2LIN_TABLE[slot->sintbl[(slot->pgout+wave2_8pi(fm))&(PG_WIDTH-1)] + slot->egout]; 1330 slot->output[0] = DB2LIN_TABLE[slot->sintbl[(slot->pgout+wave2_8pi(fm))&(PG_WIDTH-1)] + slot->egout];
1331 } 1331 }
1332 1332
1333 slot->output[1] = (slot->output[1] + slot->output[0]) >> 1; 1333 slot->output[1] = (slot->output[1] + slot->output[0]) >> 1;
1334 return slot->output[1]; 1334 return slot->output[1];
1335} 1335}
1336 1336
1337/* MODULATOR */ 1337/* MODULATOR */
1338INLINE static e_int32 1338INLINE static e_int32
1339calc_slot_mod (OPLL_SLOT * slot) 1339calc_slot_mod (OPLL_SLOT * slot)
1340{ 1340{
1341 e_int32 fm; 1341 e_int32 fm;
1342 1342
1343 slot->output[1] = slot->output[0]; 1343 slot->output[1] = slot->output[0];
1344 1344
1345 if (slot->egout >= (DB_MUTE - 1)) 1345 if (slot->egout >= (DB_MUTE - 1))
1346 { 1346 {
1347 slot->output[0] = 0; 1347 slot->output[0] = 0;
1348 } 1348 }
1349 else if (slot->patch->FB != 0) 1349 else if (slot->patch->FB != 0)
1350 { 1350 {
1351 fm = wave2_4pi (slot->feedback) >> (7 - slot->patch->FB); 1351 fm = wave2_4pi (slot->feedback) >> (7 - slot->patch->FB);
1352 slot->output[0] = DB2LIN_TABLE[slot->sintbl[(slot->pgout+fm)&(PG_WIDTH-1)] + slot->egout]; 1352 slot->output[0] = DB2LIN_TABLE[slot->sintbl[(slot->pgout+fm)&(PG_WIDTH-1)] + slot->egout];
1353 } 1353 }
1354 else 1354 else
1355 { 1355 {
1356 slot->output[0] = DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout]; 1356 slot->output[0] = DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout];
1357 } 1357 }
1358 1358
1359 slot->feedback = (slot->output[1] + slot->output[0]) >> 1; 1359 slot->feedback = (slot->output[1] + slot->output[0]) >> 1;
1360 1360
1361 return slot->feedback; 1361 return slot->feedback;
1362 1362
1363} 1363}
1364 1364
1365/* TOM */ 1365/* TOM */
1366INLINE static e_int32 1366INLINE static e_int32
1367calc_slot_tom (OPLL_SLOT * slot) 1367calc_slot_tom (OPLL_SLOT * slot)
1368{ 1368{
1369 if (slot->egout >= (DB_MUTE - 1)) 1369 if (slot->egout >= (DB_MUTE - 1))
1370 return 0; 1370 return 0;
1371 1371
1372 return DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout]; 1372 return DB2LIN_TABLE[slot->sintbl[slot->pgout] + slot->egout];
1373 1373
1374} 1374}
1375 1375
1376/* SNARE */ 1376/* SNARE */
1377INLINE static e_int32 1377INLINE static e_int32
1378calc_slot_snare (OPLL_SLOT * slot, e_uint32 noise) 1378calc_slot_snare (OPLL_SLOT * slot, e_uint32 noise)
1379{ 1379{
1380 if(slot->egout>=(DB_MUTE-1)) 1380 if(slot->egout>=(DB_MUTE-1))
1381 return 0; 1381 return 0;
1382 1382
1383 if(BIT(slot->pgout,7)) 1383 if(BIT(slot->pgout,7))
1384 return DB2LIN_TABLE[(noise?DB_POS(0):DB_POS(15))+slot->egout]; 1384 return DB2LIN_TABLE[(noise?DB_POS(0):DB_POS(15))+slot->egout];
1385 else 1385 else
1386 return DB2LIN_TABLE[(noise?DB_NEG(0):DB_NEG(15))+slot->egout]; 1386 return DB2LIN_TABLE[(noise?DB_NEG(0):DB_NEG(15))+slot->egout];
1387} 1387}
1388 1388
1389/* 1389/*
1390 TOP-CYM 1390 TOP-CYM
1391 */ 1391 */
1392INLINE static e_int32 1392INLINE static e_int32
1393calc_slot_cym (OPLL_SLOT * slot, e_uint32 pgout_hh) 1393calc_slot_cym (OPLL_SLOT * slot, e_uint32 pgout_hh)
1394{ 1394{
1395 e_uint32 dbout; 1395 e_uint32 dbout;
1396 1396
1397 if (slot->egout >= (DB_MUTE - 1)) 1397 if (slot->egout >= (DB_MUTE - 1))
1398 return 0; 1398 return 0;
1399 else if( 1399 else if(
1400 /* the same as fmopl.c */ 1400 /* the same as fmopl.c */
1401 ((BIT(pgout_hh,PG_BITS-8)^BIT(pgout_hh,PG_BITS-1))|BIT(pgout_hh,PG_BITS-7)) ^ 1401 ((BIT(pgout_hh,PG_BITS-8)^BIT(pgout_hh,PG_BITS-1))|BIT(pgout_hh,PG_BITS-7)) ^
1402 /* different from fmopl.c */ 1402 /* different from fmopl.c */
1403 (BIT(slot->pgout,PG_BITS-7)&!BIT(slot->pgout,PG_BITS-5)) 1403 (BIT(slot->pgout,PG_BITS-7)&!BIT(slot->pgout,PG_BITS-5))
1404 ) 1404 )
1405 dbout = DB_NEG(3); 1405 dbout = DB_NEG(3);
1406 else 1406 else
1407 dbout = DB_POS(3); 1407 dbout = DB_POS(3);
1408 1408
1409 return DB2LIN_TABLE[dbout + slot->egout]; 1409 return DB2LIN_TABLE[dbout + slot->egout];
1410} 1410}
1411 1411
1412/* 1412/*
1413 HI-HAT 1413 HI-HAT
1414*/ 1414*/
1415INLINE static e_int32 1415INLINE static e_int32
1416calc_slot_hat (OPLL_SLOT *slot, e_int32 pgout_cym, e_uint32 noise) 1416calc_slot_hat (OPLL_SLOT *slot, e_int32 pgout_cym, e_uint32 noise)
1417{ 1417{
1418 e_uint32 dbout; 1418 e_uint32 dbout;
1419 1419
1420 if (slot->egout >= (DB_MUTE - 1)) 1420 if (slot->egout >= (DB_MUTE - 1))
1421 return 0; 1421 return 0;
1422 else if( 1422 else if(
1423 /* the same as fmopl.c */ 1423 /* the same as fmopl.c */
1424 ((BIT(slot->pgout,PG_BITS-8)^BIT(slot->pgout,PG_BITS-1))|BIT(slot->pgout,PG_BITS-7)) ^ 1424 ((BIT(slot->pgout,PG_BITS-8)^BIT(slot->pgout,PG_BITS-1))|BIT(slot->pgout,PG_BITS-7)) ^
1425 /* different from fmopl.c */ 1425 /* different from fmopl.c */
1426 (BIT(pgout_cym,PG_BITS-7)&!BIT(pgout_cym,PG_BITS-5)) 1426 (BIT(pgout_cym,PG_BITS-7)&!BIT(pgout_cym,PG_BITS-5))
1427 ) 1427 )
1428 { 1428 {
1429 if(noise) 1429 if(noise)
1430 dbout = DB_NEG(12); 1430 dbout = DB_NEG(12);
1431 else 1431 else
1432 dbout = DB_NEG(24); 1432 dbout = DB_NEG(24);
1433 } 1433 }
1434 else 1434 else
1435 { 1435 {
1436 if(noise) 1436 if(noise)
1437 dbout = DB_POS(12); 1437 dbout = DB_POS(12);
1438 else 1438 else
1439 dbout = DB_POS(24); 1439 dbout = DB_POS(24);
1440 } 1440 }
1441 1441
1442 return DB2LIN_TABLE[dbout + slot->egout]; 1442 return DB2LIN_TABLE[dbout + slot->egout];
1443} 1443}
1444 1444
1445static e_int16 1445static e_int16
1446calc (OPLL * opll) EMU2413_CALC_ICODE; 1446calc (OPLL * opll) EMU2413_CALC_ICODE;
1447static e_int16 1447static e_int16
1448calc (OPLL * opll) 1448calc (OPLL * opll)
1449{ 1449{
1450 e_int32 i; 1450 e_int32 i;
1451 1451
1452 update_ampm (opll); 1452 update_ampm (opll);
1453 update_noise (opll); 1453 update_noise (opll);
1454 1454
1455 for (i = 0; i < 18; i++) 1455 for (i = 0; i < 18; i++)
1456 { 1456 {
1457 calc_phase(&opll->slot[i],opll->lfo_pm); 1457 calc_phase(&opll->slot[i],opll->lfo_pm);
1458 calc_envelope(&opll->slot[i],opll->lfo_am); 1458 calc_envelope(&opll->slot[i],opll->lfo_am);
1459 } 1459 }
1460 1460
1461 e_uint32 channel_mask = opll->mask; 1461 e_uint32 channel_mask = opll->mask;
1462 for (i = 0; i < 9; i++) { 1462 for (i = 0; i < 9; i++) {
1463 if (CAR(opll,i)->eg_mode != FINISH) 1463 if (CAR(opll,i)->eg_mode != FINISH)
1464 channel_mask |= (1 << i); 1464 channel_mask |= (1 << i);
1465 } 1465 }
1466 1466
1467 e_int32 mix = 0; 1467 e_int32 mix = 0;
1468 1468
1469 /* CH6 */ 1469 /* CH6 */
1470 if (opll->patch_number[6] & 0x10) { 1470 if (opll->patch_number[6] & 0x10) {
1471 if (channel_mask & OPLL_MASK_CH (6)) { 1471 if (channel_mask & OPLL_MASK_CH (6)) {
1472 mix += calc_slot_car (CAR(opll,6), calc_slot_mod(MOD(opll,6))); 1472 mix += calc_slot_car (CAR(opll,6), calc_slot_mod(MOD(opll,6)));
1473 channel_mask &= ~(1 << 6); 1473 channel_mask &= ~(1 << 6);
1474 } 1474 }
1475 } 1475 }
1476 1476
1477 /* CH7 */ 1477 /* CH7 */
1478 if (opll->patch_number[7] & 0x10) { 1478 if (opll->patch_number[7] & 0x10) {
1479 if (MOD(opll,7)->eg_mode != FINISH) 1479 if (MOD(opll,7)->eg_mode != FINISH)
1480 mix += calc_slot_hat (MOD(opll,7), CAR(opll,8)->pgout, opll->noise_seed&1); 1480 mix += calc_slot_hat (MOD(opll,7), CAR(opll,8)->pgout, opll->noise_seed&1);
1481 if (channel_mask & OPLL_MASK_SD) { 1481 if (channel_mask & OPLL_MASK_SD) {
1482 mix -= calc_slot_snare (CAR(opll,7), opll->noise_seed&1); 1482 mix -= calc_slot_snare (CAR(opll,7), opll->noise_seed&1);
1483 channel_mask &= ~OPLL_MASK_SD; 1483 channel_mask &= ~OPLL_MASK_SD;
1484 } 1484 }
1485 } 1485 }
1486 1486
1487 /* CH8 */ 1487 /* CH8 */
1488 if (opll->patch_number[8] & 0x10) { 1488 if (opll->patch_number[8] & 0x10) {
1489 if (MOD(opll,8)->eg_mode != FINISH) 1489 if (MOD(opll,8)->eg_mode != FINISH)
1490 mix += calc_slot_tom (MOD(opll,8)); 1490 mix += calc_slot_tom (MOD(opll,8));
1491 if (channel_mask & OPLL_MASK_CYM) { 1491 if (channel_mask & OPLL_MASK_CYM) {
1492 mix -= calc_slot_cym (CAR(opll,8), MOD(opll,7)->pgout); 1492 mix -= calc_slot_cym (CAR(opll,8), MOD(opll,7)->pgout);
1493 channel_mask &= ~OPLL_MASK_CYM; 1493 channel_mask &= ~OPLL_MASK_CYM;
1494 } 1494 }
1495 } 1495 }
1496 1496
1497 mix <<= 1; 1497 mix <<= 1;
1498 1498
1499 opll->current_mask = channel_mask; 1499 opll->current_mask = channel_mask;
1500 for (i = 0; channel_mask; channel_mask >>= 1, ++i) { 1500 for (i = 0; channel_mask; channel_mask >>= 1, ++i) {
1501 if (channel_mask & 1) { 1501 if (channel_mask & 1) {
1502 mix += calc_slot_car (CAR(opll,i), calc_slot_mod(MOD(opll,i))); 1502 mix += calc_slot_car (CAR(opll,i), calc_slot_mod(MOD(opll,i)));
1503 } 1503 }
1504 } 1504 }
1505 1505
1506 return (e_int16) mix << 3; 1506 return (e_int16) mix << 3;
1507} 1507}
1508 1508
1509void 1509void
1510OPLL_set_internal_mute(OPLL * opll, e_uint32 mute) 1510OPLL_set_internal_mute(OPLL * opll, e_uint32 mute)
1511{ 1511{
1512 opll->internal_mute = mute; 1512 opll->internal_mute = mute;
1513} 1513}
1514 1514
1515e_uint32 1515e_uint32
1516OPLL_is_internal_muted(OPLL * opll) 1516OPLL_is_internal_muted(OPLL * opll)
1517{ 1517{
1518 return opll->internal_mute; 1518 return opll->internal_mute;
1519} 1519}
1520 1520
1521static e_uint32 1521static e_uint32
1522check_mute_helper(OPLL * opll) 1522check_mute_helper(OPLL * opll)
1523{ 1523{
1524 for (int i = 0; i < 6; i++) { 1524 for (int i = 0; i < 6; i++) {
1525 /* if (ch[i].car.eg_mode != FINISH) return 0; */ 1525 /* if (ch[i].car.eg_mode != FINISH) return 0; */
1526 if (!(opll->current_mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH)) return 0; 1526 if (!(opll->current_mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH)) return 0;
1527 } 1527 }
1528 1528
1529 if (!(opll->reg[0x0e] & 0x20)) { 1529 if (!(opll->reg[0x0e] & 0x20)) {
1530 for(int i = 6; i < 9; i++) { 1530 for(int i = 6; i < 9; i++) {
1531 /* if (ch[i].car.eg_mode != FINISH) return 0; */ 1531 /* if (ch[i].car.eg_mode != FINISH) return 0; */
1532 if (!(opll->current_mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH)) return 0; 1532 if (!(opll->current_mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH)) return 0;
1533 } 1533 }
1534 } else { 1534 } else {
1535 /* if (ch[6].car.eg_mode != FINISH) return false; 1535 /* if (ch[6].car.eg_mode != FINISH) return false;
1536 if (ch[7].mod.eg_mode != FINISH) return false; 1536 if (ch[7].mod.eg_mode != FINISH) return false;
1537 if (ch[7].car.eg_mode != FINISH) return false; 1537 if (ch[7].car.eg_mode != FINISH) return false;
1538 if (ch[8].mod.eg_mode != FINISH) return false; 1538 if (ch[8].mod.eg_mode != FINISH) return false;
1539 if (ch[8].car.eg_mode != FINISH) return false; */ 1539 if (ch[8].car.eg_mode != FINISH) return false; */
1540 if (!(opll->current_mask & OPLL_MASK_CH (6)) && (CAR(opll,6)->eg_mode != FINISH)) return 0; 1540 if (!(opll->current_mask & OPLL_MASK_CH (6)) && (CAR(opll,6)->eg_mode != FINISH)) return 0;
1541 if (!(opll->current_mask & OPLL_MASK_CH (7)) && (MOD(opll,7)->eg_mode != FINISH)) return 0; 1541 if (!(opll->current_mask & OPLL_MASK_CH (7)) && (MOD(opll,7)->eg_mode != FINISH)) return 0;
1542 if (!(opll->current_mask & OPLL_MASK_CH (7)) && (CAR(opll,7)->eg_mode != FINISH)) return 0; 1542 if (!(opll->current_mask & OPLL_MASK_CH (7)) && (CAR(opll,7)->eg_mode != FINISH)) return 0;
1543 if (!(opll->current_mask & OPLL_MASK_CH (8)) && (MOD(opll,8)->eg_mode != FINISH)) return 0; 1543 if (!(opll->current_mask & OPLL_MASK_CH (8)) && (MOD(opll,8)->eg_mode != FINISH)) return 0;
1544 if (!(opll->current_mask & OPLL_MASK_CH (8)) && (CAR(opll,8)->eg_mode != FINISH)) return 0; 1544 if (!(opll->current_mask & OPLL_MASK_CH (8)) && (CAR(opll,8)->eg_mode != FINISH)) return 0;
1545 } 1545 }
1546 1546
1547 return 1; /* nothing is playing, then mute */ 1547 return 1; /* nothing is playing, then mute */
1548} 1548}
1549 1549
1550static void 1550static void
1551check_mute(OPLL * opll) 1551check_mute(OPLL * opll)
1552{ 1552{
1553 OPLL_set_internal_mute (opll, check_mute_helper (opll)); 1553 OPLL_set_internal_mute (opll, check_mute_helper (opll));
1554} 1554}
1555 1555
1556EMU2413_API e_int16 *OPLL_update_buffer(OPLL * opll, e_uint32 length) 1556EMU2413_API e_int16 *OPLL_update_buffer(OPLL * opll, e_uint32 length)
1557{ 1557{
1558 e_int16* buf = opll->buffer; 1558 e_int16* buf = opll->buffer;
1559 while (length--) { 1559 while (length--) {
1560 *(buf++) = calc (opll); 1560 *(buf++) = calc (opll);
1561 } 1561 }
1562 check_mute (opll); 1562 check_mute (opll);
1563 1563
1564 return opll->buffer; 1564 return opll->buffer;
1565} 1565}
1566 1566
1567#ifdef EMU2413_COMPACTION 1567#ifdef EMU2413_COMPACTION
1568e_int16 1568e_int16
1569OPLL_calc (OPLL * opll) 1569OPLL_calc (OPLL * opll)
1570{ 1570{
1571 return calc (opll); 1571 return calc (opll);
1572} 1572}
1573#else 1573#else
1574e_int16 1574e_int16
1575OPLL_calc (OPLL * opll) 1575OPLL_calc (OPLL * opll)
1576{ 1576{
1577 if (!opll->quality) 1577 if (!opll->quality)
1578 return calc (opll); 1578 return calc (opll);
1579 1579
1580 while (opll->realstep > opll->oplltime) 1580 while (opll->realstep > opll->oplltime)
1581 { 1581 {
1582 opll->oplltime += opll->opllstep; 1582 opll->oplltime += opll->opllstep;
1583 opll->prev = opll->next; 1583 opll->prev = opll->next;
1584 opll->next = calc (opll); 1584 opll->next = calc (opll);
1585 } 1585 }
1586 1586
1587 opll->oplltime -= opll->realstep; 1587 opll->oplltime -= opll->realstep;
1588 opll->out = (e_int16) (((double) opll->next * (opll->opllstep - opll->oplltime) 1588 opll->out = (e_int16) (((double) opll->next * (opll->opllstep - opll->oplltime)
1589 + (double) opll->prev * opll->oplltime) / opll->opllstep); 1589 + (double) opll->prev * opll->oplltime) / opll->opllstep);
1590 1590
1591 return (e_int16) opll->out; 1591 return (e_int16) opll->out;
1592} 1592}
1593#endif 1593#endif
1594 1594
1595e_uint32 1595e_uint32
1596OPLL_setMask (OPLL * opll, e_uint32 mask) 1596OPLL_setMask (OPLL * opll, e_uint32 mask)
1597{ 1597{
1598 e_uint32 ret; 1598 e_uint32 ret;
1599 1599
1600 if (opll) 1600 if (opll)
1601 { 1601 {
1602 ret = opll->mask; 1602 ret = opll->mask;
1603 opll->mask = mask; 1603 opll->mask = mask;
1604 return ret; 1604 return ret;
1605 } 1605 }
1606 else 1606 else
1607 return 0; 1607 return 0;
1608} 1608}
1609 1609
1610e_uint32 1610e_uint32
1611OPLL_toggleMask (OPLL * opll, e_uint32 mask) 1611OPLL_toggleMask (OPLL * opll, e_uint32 mask)
1612{ 1612{
1613 e_uint32 ret; 1613 e_uint32 ret;
1614 1614
1615 if (opll) 1615 if (opll)
1616 { 1616 {
1617 ret = opll->mask; 1617 ret = opll->mask;
1618 opll->mask ^= mask; 1618 opll->mask ^= mask;
1619 return ret; 1619 return ret;
1620 } 1620 }
1621 else 1621 else
1622 return 0; 1622 return 0;
1623} 1623}
1624 1624
1625/**************************************************** 1625/****************************************************
1626 1626
1627 I/O Ctrl 1627 I/O Ctrl
1628 1628
1629*****************************************************/ 1629*****************************************************/
1630 1630
1631void 1631void
1632OPLL_writeReg (OPLL * opll, e_uint32 reg, e_uint32 data) 1632OPLL_writeReg (OPLL * opll, e_uint32 reg, e_uint32 data)
1633{ 1633{
1634 e_int32 i, v, ch; 1634 e_int32 i, v, ch;
1635 1635
1636 data = data & 0xff; 1636 data = data & 0xff;
1637 reg = reg & 0x3f; 1637 reg = reg & 0x3f;
1638 opll->reg[reg] = (e_uint8) data; 1638 opll->reg[reg] = (e_uint8) data;
1639 1639
1640 switch (reg) 1640 switch (reg)
1641 { 1641 {
1642 case 0x00: 1642 case 0x00:
1643 opll->patch[0].AM = (data >> 7) & 1; 1643 opll->patch[0].AM = (data >> 7) & 1;
1644 opll->patch[0].PM = (data >> 6) & 1; 1644 opll->patch[0].PM = (data >> 6) & 1;
1645 opll->patch[0].EG = (data >> 5) & 1; 1645 opll->patch[0].EG = (data >> 5) & 1;
1646 opll->patch[0].KR = (data >> 4) & 1; 1646 opll->patch[0].KR = (data >> 4) & 1;
1647 opll->patch[0].ML = (data) & 15; 1647 opll->patch[0].ML = (data) & 15;
1648 for (i = 0; i < 9; i++) 1648 for (i = 0; i < 9; i++)
1649 { 1649 {
1650 if (opll->patch_number[i] == 0) 1650 if (opll->patch_number[i] == 0)
1651 { 1651 {
1652 UPDATE_PG (MOD(opll,i)); 1652 UPDATE_PG (MOD(opll,i));
1653 UPDATE_RKS (MOD(opll,i)); 1653 UPDATE_RKS (MOD(opll,i));
1654 UPDATE_EG (MOD(opll,i)); 1654 UPDATE_EG (MOD(opll,i));
1655 } 1655 }
1656 } 1656 }
1657 break; 1657 break;
1658 1658
1659 case 0x01: 1659 case 0x01:
1660 opll->patch[1].AM = (data >> 7) & 1; 1660 opll->patch[1].AM = (data >> 7) & 1;
1661 opll->patch[1].PM = (data >> 6) & 1; 1661 opll->patch[1].PM = (data >> 6) & 1;
1662 opll->patch[1].EG = (data >> 5) & 1; 1662 opll->patch[1].EG = (data >> 5) & 1;
1663 opll->patch[1].KR = (data >> 4) & 1; 1663 opll->patch[1].KR = (data >> 4) & 1;
1664 opll->patch[1].ML = (data) & 15; 1664 opll->patch[1].ML = (data) & 15;
1665 for (i = 0; i < 9; i++) 1665 for (i = 0; i < 9; i++)
1666 { 1666 {
1667 if (opll->patch_number[i] == 0) 1667 if (opll->patch_number[i] == 0)
1668 { 1668 {
1669 UPDATE_PG (CAR(opll,i)); 1669 UPDATE_PG (CAR(opll,i));
1670 UPDATE_RKS (CAR(opll,i)); 1670 UPDATE_RKS (CAR(opll,i));
1671 UPDATE_EG (CAR(opll,i)); 1671 UPDATE_EG (CAR(opll,i));
1672 } 1672 }
1673 } 1673 }
1674 break; 1674 break;
1675 1675
1676 case 0x02: 1676 case 0x02:
1677 opll->patch[0].KL = (data >> 6) & 3; 1677 opll->patch[0].KL = (data >> 6) & 3;
1678 opll->patch[0].TL = (data) & 63; 1678 opll->patch[0].TL = (data) & 63;
1679 for (i = 0; i < 9; i++) 1679 for (i = 0; i < 9; i++)
1680 { 1680 {
1681 if (opll->patch_number[i] == 0) 1681 if (opll->patch_number[i] == 0)
1682 { 1682 {
1683 UPDATE_TLL(MOD(opll,i)); 1683 UPDATE_TLL(MOD(opll,i));
1684 } 1684 }
1685 } 1685 }
1686 break; 1686 break;
1687 1687
1688 case 0x03: 1688 case 0x03:
1689 opll->patch[1].KL = (data >> 6) & 3; 1689 opll->patch[1].KL = (data >> 6) & 3;
1690 opll->patch[1].WF = (data >> 4) & 1; 1690 opll->patch[1].WF = (data >> 4) & 1;
1691 opll->patch[0].WF = (data >> 3) & 1; 1691 opll->patch[0].WF = (data >> 3) & 1;
1692 opll->patch[0].FB = (data) & 7; 1692 opll->patch[0].FB = (data) & 7;
1693 for (i = 0; i < 9; i++) 1693 for (i = 0; i < 9; i++)
1694 { 1694 {
1695 if (opll->patch_number[i] == 0) 1695 if (opll->patch_number[i] == 0)
1696 { 1696 {
1697 UPDATE_WF(MOD(opll,i)); 1697 UPDATE_WF(MOD(opll,i));
1698 UPDATE_WF(CAR(opll,i)); 1698 UPDATE_WF(CAR(opll,i));
1699 } 1699 }
1700 } 1700 }
1701 break; 1701 break;
1702 1702
1703 case 0x04: 1703 case 0x04:
1704 opll->patch[0].AR = (data >> 4) & 15; 1704 opll->patch[0].AR = (data >> 4) & 15;
1705 opll->patch[0].DR = (data) & 15; 1705 opll->patch[0].DR = (data) & 15;
1706 for (i = 0; i < 9; i++) 1706 for (i = 0; i < 9; i++)
1707 { 1707 {
1708 if (opll->patch_number[i] == 0) 1708 if (opll->patch_number[i] == 0)
1709 { 1709 {
1710 UPDATE_EG (MOD(opll,i)); 1710 UPDATE_EG (MOD(opll,i));
1711 } 1711 }
1712 } 1712 }
1713 break; 1713 break;
1714 1714
1715 case 0x05: 1715 case 0x05:
1716 opll->patch[1].AR = (data >> 4) & 15; 1716 opll->patch[1].AR = (data >> 4) & 15;
1717 opll->patch[1].DR = (data) & 15; 1717 opll->patch[1].DR = (data) & 15;
1718 for (i = 0; i < 9; i++) 1718 for (i = 0; i < 9; i++)
1719 { 1719 {
1720 if (opll->patch_number[i] == 0) 1720 if (opll->patch_number[i] == 0)
1721 { 1721 {
1722 UPDATE_EG(CAR(opll,i)); 1722 UPDATE_EG(CAR(opll,i));
1723 } 1723 }
1724 } 1724 }
1725 break; 1725 break;
1726 1726
1727 case 0x06: 1727 case 0x06:
1728 opll->patch[0].SL = (data >> 4) & 15; 1728 opll->patch[0].SL = (data >> 4) & 15;
1729 opll->patch[0].RR = (data) & 15; 1729 opll->patch[0].RR = (data) & 15;
1730 for (i = 0; i < 9; i++) 1730 for (i = 0; i < 9; i++)
1731 { 1731 {
1732 if (opll->patch_number[i] == 0) 1732 if (opll->patch_number[i] == 0)
1733 { 1733 {
1734 UPDATE_EG (MOD(opll,i)); 1734 UPDATE_EG (MOD(opll,i));
1735 } 1735 }
1736 } 1736 }
1737 break; 1737 break;
1738 1738
1739 case 0x07: 1739 case 0x07:
1740 opll->patch[1].SL = (data >> 4) & 15; 1740 opll->patch[1].SL = (data >> 4) & 15;
1741 opll->patch[1].RR = (data) & 15; 1741 opll->patch[1].RR = (data) & 15;
1742 for (i = 0; i < 9; i++) 1742 for (i = 0; i < 9; i++)
1743 { 1743 {
1744 if (opll->patch_number[i] == 0) 1744 if (opll->patch_number[i] == 0)
1745 { 1745 {
1746 UPDATE_EG (CAR(opll,i)); 1746 UPDATE_EG (CAR(opll,i));
1747 } 1747 }
1748 } 1748 }
1749 break; 1749 break;
1750 1750
1751 case 0x0e: 1751 case 0x0e:
1752 update_rhythm_mode (opll); 1752 update_rhythm_mode (opll);
1753 if (data & 32) 1753 if (data & 32)
1754 { 1754 {
1755 if (data & 0x10) 1755 if (data & 0x10)
1756 keyOn_BD (opll); 1756 keyOn_BD (opll);
1757 else 1757 else
1758 keyOff_BD (opll); 1758 keyOff_BD (opll);
1759 if (data & 0x8) 1759 if (data & 0x8)
1760 keyOn_SD (opll); 1760 keyOn_SD (opll);
1761 else 1761 else
1762 keyOff_SD (opll); 1762 keyOff_SD (opll);
1763 if (data & 0x4) 1763 if (data & 0x4)
1764 keyOn_TOM (opll); 1764 keyOn_TOM (opll);
1765 else 1765 else
1766 keyOff_TOM (opll); 1766 keyOff_TOM (opll);
1767 if (data & 0x2) 1767 if (data & 0x2)
1768 keyOn_CYM (opll); 1768 keyOn_CYM (opll);
1769 else 1769 else
1770 keyOff_CYM (opll); 1770 keyOff_CYM (opll);
1771 if (data & 0x1) 1771 if (data & 0x1)
1772 keyOn_HH (opll); 1772 keyOn_HH (opll);
1773 else 1773 else
1774 keyOff_HH (opll); 1774 keyOff_HH (opll);
1775 } 1775 }
1776 update_key_status (opll); 1776 update_key_status (opll);
1777 1777
1778 UPDATE_ALL (MOD(opll,6)); 1778 UPDATE_ALL (MOD(opll,6));
1779 UPDATE_ALL (CAR(opll,6)); 1779 UPDATE_ALL (CAR(opll,6));
1780 UPDATE_ALL (MOD(opll,7)); 1780 UPDATE_ALL (MOD(opll,7));
1781 UPDATE_ALL (CAR(opll,7)); 1781 UPDATE_ALL (CAR(opll,7));
1782 UPDATE_ALL (MOD(opll,8)); 1782 UPDATE_ALL (MOD(opll,8));
1783 UPDATE_ALL (CAR(opll,8)); 1783 UPDATE_ALL (CAR(opll,8));
1784 1784
1785 break; 1785 break;
1786 1786
1787 case 0x0f: 1787 case 0x0f:
1788 break; 1788 break;
1789 1789
1790 case 0x10: 1790 case 0x10:
1791 case 0x11: 1791 case 0x11:
1792 case 0x12: 1792 case 0x12:
1793 case 0x13: 1793 case 0x13:
1794 case 0x14: 1794 case 0x14:
1795 case 0x15: 1795 case 0x15:
1796 case 0x16: 1796 case 0x16:
1797 case 0x17: 1797 case 0x17:
1798 case 0x18: 1798 case 0x18:
1799 ch = reg - 0x10; 1799 ch = reg - 0x10;
1800 setFnumber (opll, ch, data + ((opll->reg[0x20 + ch] & 1) << 8)); 1800 setFnumber (opll, ch, data + ((opll->reg[0x20 + ch] & 1) << 8));
1801 UPDATE_ALL (MOD(opll,ch)); 1801 UPDATE_ALL (MOD(opll,ch));
1802 UPDATE_ALL (CAR(opll,ch)); 1802 UPDATE_ALL (CAR(opll,ch));
1803 break; 1803 break;
1804 1804
1805 case 0x20: 1805 case 0x20:
1806 case 0x21: 1806 case 0x21:
1807 case 0x22: 1807 case 0x22:
1808 case 0x23: 1808 case 0x23:
1809 case 0x24: 1809 case 0x24:
1810 case 0x25: 1810 case 0x25:
1811 case 0x26: 1811 case 0x26:
1812 case 0x27: 1812 case 0x27:
1813 case 0x28: 1813 case 0x28:
1814 ch = reg - 0x20; 1814 ch = reg - 0x20;
1815 setFnumber (opll, ch, ((data & 1) << 8) + opll->reg[0x10 + ch]); 1815 setFnumber (opll, ch, ((data & 1) << 8) + opll->reg[0x10 + ch]);
1816 setBlock (opll, ch, (data >> 1) & 7); 1816 setBlock (opll, ch, (data >> 1) & 7);
1817 setSustine (opll, ch, (data >> 5) & 1); 1817 setSustine (opll, ch, (data >> 5) & 1);
1818 if (data & 0x10) 1818 if (data & 0x10)
1819 keyOn (opll, ch); 1819 keyOn (opll, ch);
1820 else 1820 else
1821 keyOff (opll, ch); 1821 keyOff (opll, ch);
1822 UPDATE_ALL (MOD(opll,ch)); 1822 UPDATE_ALL (MOD(opll,ch));
1823 UPDATE_ALL (CAR(opll,ch)); 1823 UPDATE_ALL (CAR(opll,ch));
1824 update_key_status (opll); 1824 update_key_status (opll);
1825 update_rhythm_mode (opll); 1825 update_rhythm_mode (opll);
1826 break; 1826 break;
1827 1827
1828 case 0x30: 1828 case 0x30:
1829 case 0x31: 1829 case 0x31:
1830 case 0x32: 1830 case 0x32:
1831 case 0x33: 1831 case 0x33:
1832 case 0x34: 1832 case 0x34:
1833 case 0x35: 1833 case 0x35:
1834 case 0x36: 1834 case 0x36:
1835 case 0x37: 1835 case 0x37:
1836 case 0x38: 1836 case 0x38:
1837 i = (data >> 4) & 15; 1837 i = (data >> 4) & 15;
1838 v = data & 15; 1838 v = data & 15;
1839 if ((opll->reg[0x0e] & 32) && (reg >= 0x36)) 1839 if ((opll->reg[0x0e] & 32) && (reg >= 0x36))
1840 { 1840 {
1841 switch (reg) 1841 switch (reg)
1842 { 1842 {
1843 case 0x37: 1843 case 0x37:
1844 setSlotVolume (MOD(opll,7), i << 2); 1844 setSlotVolume (MOD(opll,7), i << 2);
1845 break; 1845 break;
1846 case 0x38: 1846 case 0x38:
1847 setSlotVolume (MOD(opll,8), i << 2); 1847 setSlotVolume (MOD(opll,8), i << 2);
1848 break; 1848 break;
1849 default: 1849 default:
1850 break; 1850 break;
1851 } 1851 }
1852 } 1852 }
1853 else 1853 else
1854 { 1854 {
1855 setPatch (opll, reg - 0x30, i); 1855 setPatch (opll, reg - 0x30, i);
1856 } 1856 }
1857 setVolume (opll, reg - 0x30, v << 2); 1857 setVolume (opll, reg - 0x30, v << 2);
1858 UPDATE_ALL (MOD(opll,reg - 0x30)); 1858 UPDATE_ALL (MOD(opll,reg - 0x30));
1859 UPDATE_ALL (CAR(opll,reg - 0x30)); 1859 UPDATE_ALL (CAR(opll,reg - 0x30));
1860 break; 1860 break;
1861 1861
1862 default: 1862 default:
1863 break; 1863 break;
1864 1864
1865 } 1865 }
1866} 1866}
1867 1867
1868void 1868void
1869OPLL_writeIO (OPLL * opll, e_uint32 adr, e_uint32 val) 1869OPLL_writeIO (OPLL * opll, e_uint32 adr, e_uint32 val)
1870{ 1870{
1871 if (adr & 1) 1871 if (adr & 1)
1872 OPLL_writeReg (opll, opll->adr, val); 1872 OPLL_writeReg (opll, opll->adr, val);
1873 else 1873 else
1874 opll->adr = val; 1874 opll->adr = val;
1875} 1875}
1876 1876
1877e_uint32 1877e_uint32
1878OPLL_read(OPLL * opll, e_uint32 a) 1878OPLL_read(OPLL * opll, e_uint32 a)
1879{ 1879{
1880 if( !(a&1) ) 1880 if( !(a&1) )
1881 { 1881 {
1882 /* status port */ 1882 /* status port */
1883 return opll->status; 1883 return opll->status;
1884 } 1884 }
1885 return 0xff; 1885 return 0xff;
1886} 1886}
1887 1887
1888#ifndef EMU2413_COMPACTION 1888#ifndef EMU2413_COMPACTION
1889/* STEREO MODE (OPT) */ 1889/* STEREO MODE (OPT) */
1890void 1890void
1891OPLL_set_pan (OPLL * opll, e_uint32 ch, e_uint32 pan) 1891OPLL_set_pan (OPLL * opll, e_uint32 ch, e_uint32 pan)
1892{ 1892{
1893 opll->pan[ch & 15] = pan & 3; 1893 opll->pan[ch & 15] = pan & 3;
1894} 1894}
1895 1895
1896static void 1896static void
1897calc_stereo (OPLL * opll, e_int32 out[2]) 1897calc_stereo (OPLL * opll, e_int32 out[2])
1898{ 1898{
1899 e_int32 b[4] = { 0, 0, 0, 0 }; /* Ignore, Right, Left, Center */ 1899 e_int32 b[4] = { 0, 0, 0, 0 }; /* Ignore, Right, Left, Center */
1900 e_int32 r[4] = { 0, 0, 0, 0 }; /* Ignore, Right, Left, Center */ 1900 e_int32 r[4] = { 0, 0, 0, 0 }; /* Ignore, Right, Left, Center */
1901 e_int32 i; 1901 e_int32 i;
1902 1902
1903 update_ampm (opll); 1903 update_ampm (opll);
1904 update_noise (opll); 1904 update_noise (opll);
1905 1905
1906 for(i=0;i<18;i++) 1906 for(i=0;i<18;i++)
1907 { 1907 {
1908 calc_phase(&opll->slot[i],opll->lfo_pm); 1908 calc_phase(&opll->slot[i],opll->lfo_pm);
1909 calc_envelope(&opll->slot[i],opll->lfo_am); 1909 calc_envelope(&opll->slot[i],opll->lfo_am);
1910 } 1910 }
1911 1911
1912 for (i = 0; i < 6; i++) 1912 for (i = 0; i < 6; i++)
1913 if (!(opll->mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH)) 1913 if (!(opll->mask & OPLL_MASK_CH (i)) && (CAR(opll,i)->eg_mode != FINISH))
1914 b[opll->pan[i]] += calc_slot_car (CAR(opll,i), calc_slot_mod (MOD(opll,i))); 1914 b[opll->pan[i]] += calc_slot_car (CAR(opll,i), calc_slot_mod (MOD(opll,i)));
1915 1915
1916 1916
1917 if (opll->patch_number[6] <= 15) 1917 if (opll->patch_number[6] <= 15)
1918 { 1918 {
1919 if (!(opll->mask & OPLL_MASK_CH (6)) && (CAR(opll,6)->eg_mode != FINISH)) 1919 if (!(opll->mask & OPLL_MASK_CH (6)) && (CAR(opll,6)->eg_mode != FINISH))
1920 b[opll->pan[6]] += calc_slot_car (CAR(opll,6), calc_slot_mod (MOD(opll,6))); 1920 b[opll->pan[6]] += calc_slot_car (CAR(opll,6), calc_slot_mod (MOD(opll,6)));
1921 } 1921 }
1922 else 1922 else
1923 { 1923 {
1924 if (!(opll->mask & OPLL_MASK_BD) && (CAR(opll,6)->eg_mode != FINISH)) 1924 if (!(opll->mask & OPLL_MASK_BD) && (CAR(opll,6)->eg_mode != FINISH))
1925 r[opll->pan[9]] += calc_slot_car (CAR(opll,6), calc_slot_mod (MOD(opll,6))); 1925 r[opll->pan[9]] += calc_slot_car (CAR(opll,6), calc_slot_mod (MOD(opll,6)));
1926 } 1926 }
1927 1927
1928 if (opll->patch_number[7] <= 15) 1928 if (opll->patch_number[7] <= 15)
1929 { 1929 {
1930 if (!(opll->mask & OPLL_MASK_CH (7)) && (CAR (opll,7)->eg_mode != FINISH)) 1930 if (!(opll->mask & OPLL_MASK_CH (7)) && (CAR (opll,7)->eg_mode != FINISH))
1931 b[opll->pan[7]] += calc_slot_car (CAR (opll,7), calc_slot_mod (MOD (opll,7))); 1931 b[opll->pan[7]] += calc_slot_car (CAR (opll,7), calc_slot_mod (MOD (opll,7)));
1932 } 1932 }
1933 else 1933 else
1934 { 1934 {
1935 if (!(opll->mask & OPLL_MASK_HH) && (MOD (opll,7)->eg_mode != FINISH)) 1935 if (!(opll->mask & OPLL_MASK_HH) && (MOD (opll,7)->eg_mode != FINISH))
1936 r[opll->pan[10]] += calc_slot_hat (MOD (opll,7), CAR(opll,8)->pgout, opll->noise_seed&1); 1936 r[opll->pan[10]] += calc_slot_hat (MOD (opll,7), CAR(opll,8)->pgout, opll->noise_seed&1);
1937 if (!(opll->mask & OPLL_MASK_SD) && (CAR (opll,7)->eg_mode != FINISH)) 1937 if (!(opll->mask & OPLL_MASK_SD) && (CAR (opll,7)->eg_mode != FINISH))
1938 r[opll->pan[11]] -= calc_slot_snare (CAR (opll,7), opll->noise_seed&1); 1938 r[opll->pan[11]] -= calc_slot_snare (CAR (opll,7), opll->noise_seed&1);
1939 } 1939 }
1940 1940
1941 if (opll->patch_number[8] <= 15) 1941 if (opll->patch_number[8] <= 15)
1942 { 1942 {
1943 if (!(opll->mask & OPLL_MASK_CH (8)) && (CAR (opll,8)->eg_mode != FINISH)) 1943 if (!(opll->mask & OPLL_MASK_CH (8)) && (CAR (opll,8)->eg_mode != FINISH))
1944 b[opll->pan[8]] += calc_slot_car (CAR (opll,8), calc_slot_mod (MOD (opll,8))); 1944 b[opll->pan[8]] += calc_slot_car (CAR (opll,8), calc_slot_mod (MOD (opll,8)));
1945 } 1945 }
1946 else 1946 else
1947 { 1947 {
1948 if (!(opll->mask & OPLL_MASK_TOM) && (MOD (opll,8)->eg_mode != FINISH)) 1948 if (!(opll->mask & OPLL_MASK_TOM) && (MOD (opll,8)->eg_mode != FINISH))
1949 r[opll->pan[12]] += calc_slot_tom (MOD (opll,8)); 1949 r[opll->pan[12]] += calc_slot_tom (MOD (opll,8));
1950 if (!(opll->mask & OPLL_MASK_CYM) && (CAR (opll,8)->eg_mode != FINISH)) 1950 if (!(opll->mask & OPLL_MASK_CYM) && (CAR (opll,8)->eg_mode != FINISH))
1951 r[opll->pan[13]] -= calc_slot_cym (CAR (opll,8), MOD(opll,7)->pgout); 1951 r[opll->pan[13]] -= calc_slot_cym (CAR (opll,8), MOD(opll,7)->pgout);
1952 } 1952 }
1953 1953
1954 out[1] = (b[1] + b[3] + ((r[1] + r[3]) << 1)) <<3; 1954 out[1] = (b[1] + b[3] + ((r[1] + r[3]) << 1)) <<3;
1955 out[0] = (b[2] + b[3] + ((r[2] + r[3]) << 1)) <<3; 1955 out[0] = (b[2] + b[3] + ((r[2] + r[3]) << 1)) <<3;
1956} 1956}
1957 1957
1958void 1958void
1959OPLL_calc_stereo (OPLL * opll, e_int32 out[2]) 1959OPLL_calc_stereo (OPLL * opll, e_int32 out[2])
1960{ 1960{
1961 if (!opll->quality) 1961 if (!opll->quality)
1962 { 1962 {
1963 calc_stereo (opll, out); 1963 calc_stereo (opll, out);
1964 return; 1964 return;
1965 } 1965 }
1966 1966
1967 while (opll->realstep > opll->oplltime) 1967 while (opll->realstep > opll->oplltime)
1968 { 1968 {
1969 opll->oplltime += opll->opllstep; 1969 opll->oplltime += opll->opllstep;
1970 opll->sprev[0] = opll->snext[0]; 1970 opll->sprev[0] = opll->snext[0];
1971 opll->sprev[1] = opll->snext[1]; 1971 opll->sprev[1] = opll->snext[1];
1972 calc_stereo (opll, opll->snext); 1972 calc_stereo (opll, opll->snext);
1973 } 1973 }
1974 1974
1975 opll->oplltime -= opll->realstep; 1975 opll->oplltime -= opll->realstep;
1976 out[0] = (e_int16) (((double) opll->snext[0] * (opll->opllstep - opll->oplltime) 1976 out[0] = (e_int16) (((double) opll->snext[0] * (opll->opllstep - opll->oplltime)
1977 + (double) opll->sprev[0] * opll->oplltime) / opll->opllstep); 1977 + (double) opll->sprev[0] * opll->oplltime) / opll->opllstep);
1978 out[1] = (e_int16) (((double) opll->snext[1] * (opll->opllstep - opll->oplltime) 1978 out[1] = (e_int16) (((double) opll->snext[1] * (opll->opllstep - opll->oplltime)
1979 + (double) opll->sprev[1] * opll->oplltime) / opll->opllstep); 1979 + (double) opll->sprev[1] * opll->oplltime) / opll->opllstep);
1980} 1980}
1981#endif /* EMU2413_COMPACTION */ 1981#endif /* EMU2413_COMPACTION */
diff --git a/apps/codecs/libgme/emu2413.h b/apps/codecs/libgme/emu2413.h
index 6a19b102a1..254f042957 100644
--- a/apps/codecs/libgme/emu2413.h
+++ b/apps/codecs/libgme/emu2413.h
@@ -1,164 +1,164 @@
1#ifndef _EMU2413_H_ 1#ifndef _EMU2413_H_
2#define _EMU2413_H_ 2#define _EMU2413_H_
3 3
4#include "blargg_common.h" 4#include "blargg_common.h"
5#include "emutypes.h" 5#include "emutypes.h"
6 6
7#ifdef EMU2413_DLL_EXPORTS 7#ifdef EMU2413_DLL_EXPORTS
8 #define EMU2413_API __declspec(dllexport) 8 #define EMU2413_API __declspec(dllexport)
9#elif defined(EMU2413_DLL_IMPORTS) 9#elif defined(EMU2413_DLL_IMPORTS)
10 #define EMU2413_API __declspec(dllimport) 10 #define EMU2413_API __declspec(dllimport)
11#else 11#else
12 #define EMU2413_API 12 #define EMU2413_API
13#endif 13#endif
14 14
15#ifdef __cplusplus 15#ifdef __cplusplus
16extern "C" { 16extern "C" {
17#endif 17#endif
18 18
19#define AUDIO_MONO_BUFFER_SIZE 1024 19#define AUDIO_MONO_BUFFER_SIZE 1024
20 20
21#define PI 3.14159265358979323846 21#define PI 3.14159265358979323846
22 22
23enum OPLL_TONE_ENUM {OPLL_2413_TONE=0, OPLL_VRC7_TONE=1, OPLL_281B_TONE=2} ; 23enum OPLL_TONE_ENUM {OPLL_2413_TONE=0, OPLL_VRC7_TONE=1, OPLL_281B_TONE=2} ;
24 24
25/* voice data */ 25/* voice data */
26typedef struct __OPLL_PATCH { 26typedef struct __OPLL_PATCH {
27 e_uint32 TL,FB,EG,ML,AR,DR,SL,RR,KR,KL,AM,PM,WF ; 27 e_uint32 TL,FB,EG,ML,AR,DR,SL,RR,KR,KL,AM,PM,WF ;
28} OPLL_PATCH ; 28} OPLL_PATCH ;
29 29
30/* slot */ 30/* slot */
31typedef struct __OPLL_SLOT { 31typedef struct __OPLL_SLOT {
32 32
33 OPLL_PATCH *patch; 33 OPLL_PATCH *patch;
34 34
35 e_int32 type ; /* 0 : modulator 1 : carrier */ 35 e_int32 type ; /* 0 : modulator 1 : carrier */
36 36
37 /* OUTPUT */ 37 /* OUTPUT */
38 e_int32 feedback ; 38 e_int32 feedback ;
39 e_int32 output[2] ; /* Output value of slot */ 39 e_int32 output[2] ; /* Output value of slot */
40 40
41 /* for Phase Generator (PG) */ 41 /* for Phase Generator (PG) */
42 e_uint16 *sintbl ; /* Wavetable */ 42 e_uint16 *sintbl ; /* Wavetable */
43 e_uint32 phase ; /* Phase */ 43 e_uint32 phase ; /* Phase */
44 e_uint32 dphase ; /* Phase increment amount */ 44 e_uint32 dphase ; /* Phase increment amount */
45 e_uint32 pgout ; /* output */ 45 e_uint32 pgout ; /* output */
46 46
47 /* for Envelope Generator (EG) */ 47 /* for Envelope Generator (EG) */
48 e_int32 fnum ; /* F-Number */ 48 e_int32 fnum ; /* F-Number */
49 e_int32 block ; /* Block */ 49 e_int32 block ; /* Block */
50 e_int32 volume ; /* Current volume */ 50 e_int32 volume ; /* Current volume */
51 e_int32 sustine ; /* Sustine 1 = ON, 0 = OFF */ 51 e_int32 sustine ; /* Sustine 1 = ON, 0 = OFF */
52 e_uint32 tll ; /* Total Level + Key scale level*/ 52 e_uint32 tll ; /* Total Level + Key scale level*/
53 e_uint32 rks ; /* Key scale offset (Rks) */ 53 e_uint32 rks ; /* Key scale offset (Rks) */
54 e_int32 eg_mode ; /* Current state */ 54 e_int32 eg_mode ; /* Current state */
55 e_uint32 eg_phase ; /* Phase */ 55 e_uint32 eg_phase ; /* Phase */
56 e_uint32 eg_dphase ; /* Phase increment amount */ 56 e_uint32 eg_dphase ; /* Phase increment amount */
57 e_uint32 egout ; /* output */ 57 e_uint32 egout ; /* output */
58 58
59} OPLL_SLOT ; 59} OPLL_SLOT ;
60 60
61/* Mask */ 61/* Mask */
62#define OPLL_MASK_CH(x) (1<<(x)) 62#define OPLL_MASK_CH(x) (1<<(x))
63#define OPLL_MASK_HH (1<<(9)) 63#define OPLL_MASK_HH (1<<(9))
64#define OPLL_MASK_CYM (1<<(10)) 64#define OPLL_MASK_CYM (1<<(10))
65#define OPLL_MASK_TOM (1<<(11)) 65#define OPLL_MASK_TOM (1<<(11))
66#define OPLL_MASK_SD (1<<(12)) 66#define OPLL_MASK_SD (1<<(12))
67#define OPLL_MASK_BD (1<<(13)) 67#define OPLL_MASK_BD (1<<(13))
68#define OPLL_MASK_RHYTHM ( OPLL_MASK_HH | OPLL_MASK_CYM | OPLL_MASK_TOM | OPLL_MASK_SD | OPLL_MASK_BD ) 68#define OPLL_MASK_RHYTHM ( OPLL_MASK_HH | OPLL_MASK_CYM | OPLL_MASK_TOM | OPLL_MASK_SD | OPLL_MASK_BD )
69 69
70/* opll */ 70/* opll */
71typedef struct __OPLL { 71typedef struct __OPLL {
72 72
73 e_uint32 adr ; 73 e_uint32 adr ;
74 e_int32 out ; 74 e_int32 out ;
75 75
76#ifndef EMU2413_COMPACTION 76#ifndef EMU2413_COMPACTION
77 e_uint32 realstep ; 77 e_uint32 realstep ;
78 e_uint32 oplltime ; 78 e_uint32 oplltime ;
79 e_uint32 opllstep ; 79 e_uint32 opllstep ;
80 e_int32 prev, next ; 80 e_int32 prev, next ;
81 e_int32 sprev[2],snext[2]; 81 e_int32 sprev[2],snext[2];
82 e_uint32 pan[16]; 82 e_uint32 pan[16];
83#endif 83#endif
84 84
85 /* Register */ 85 /* Register */
86 e_uint8 reg[0x40] ; 86 e_uint8 reg[0x40] ;
87 e_int32 slot_on_flag[18] ; 87 e_int32 slot_on_flag[18] ;
88 88
89 /* Pitch Modulator */ 89 /* Pitch Modulator */
90 e_uint32 pm_phase ; 90 e_uint32 pm_phase ;
91 e_int32 lfo_pm ; 91 e_int32 lfo_pm ;
92 92
93 /* Amp Modulator */ 93 /* Amp Modulator */
94 e_int32 am_phase ; 94 e_int32 am_phase ;
95 e_int32 lfo_am ; 95 e_int32 lfo_am ;
96 96
97 e_uint32 quality; 97 e_uint32 quality;
98 98
99 /* Noise Generator */ 99 /* Noise Generator */
100 e_uint32 noise_seed ; 100 e_uint32 noise_seed ;
101 101
102 /* Channel Data */ 102 /* Channel Data */
103 e_int32 patch_number[9]; 103 e_int32 patch_number[9];
104 e_int32 key_status[9] ; 104 e_int32 key_status[9] ;
105 105
106 /* Slot */ 106 /* Slot */
107 OPLL_SLOT slot[18] ; 107 OPLL_SLOT slot[18] ;
108 108
109 /* Voice Data */ 109 /* Voice Data */
110 OPLL_PATCH patch[19*2] ; 110 OPLL_PATCH patch[19*2] ;
111 e_int32 patch_update[2] ; /* flag for check patch update */ 111 e_int32 patch_update[2] ; /* flag for check patch update */
112 112
113 e_uint32 mask ; 113 e_uint32 mask ;
114 e_uint32 current_mask; 114 e_uint32 current_mask;
115 e_uint32 status; 115 e_uint32 status;
116 116
117 e_uint32 internal_mute; 117 e_uint32 internal_mute;
118 e_int16 buffer[AUDIO_MONO_BUFFER_SIZE]; 118 e_int16 buffer[AUDIO_MONO_BUFFER_SIZE];
119} OPLL ; 119} OPLL ;
120 120
121/* Create Object */ 121/* Create Object */
122EMU2413_API void OPLL_new(OPLL *, e_uint32 clk, e_uint32 rate) ; 122EMU2413_API void OPLL_new(OPLL *, e_uint32 clk, e_uint32 rate) ;
123EMU2413_API void OPLL_delete(OPLL *) ; 123EMU2413_API void OPLL_delete(OPLL *) ;
124 124
125/* Setup */ 125/* Setup */
126EMU2413_API void OPLL_reset(OPLL *) ; 126EMU2413_API void OPLL_reset(OPLL *) ;
127EMU2413_API void OPLL_reset_patch(OPLL *, e_int32) ; 127EMU2413_API void OPLL_reset_patch(OPLL *, e_int32) ;
128EMU2413_API void OPLL_set_rate(OPLL *opll, e_uint32 r) ; 128EMU2413_API void OPLL_set_rate(OPLL *opll, e_uint32 r) ;
129EMU2413_API void OPLL_set_quality(OPLL *opll, e_uint32 q) ; 129EMU2413_API void OPLL_set_quality(OPLL *opll, e_uint32 q) ;
130EMU2413_API void OPLL_set_pan(OPLL *, e_uint32 ch, e_uint32 pan); 130EMU2413_API void OPLL_set_pan(OPLL *, e_uint32 ch, e_uint32 pan);
131EMU2413_API void OPLL_set_internal_mute(OPLL *, e_uint32 mute); 131EMU2413_API void OPLL_set_internal_mute(OPLL *, e_uint32 mute);
132EMU2413_API e_uint32 OPLL_is_internal_muted(OPLL *); 132EMU2413_API e_uint32 OPLL_is_internal_muted(OPLL *);
133 133
134/* Port/Register access */ 134/* Port/Register access */
135EMU2413_API void OPLL_writeIO(OPLL *, e_uint32 reg, e_uint32 val); 135EMU2413_API void OPLL_writeIO(OPLL *, e_uint32 reg, e_uint32 val);
136EMU2413_API void OPLL_writeReg(OPLL *, e_uint32 reg, e_uint32 val); 136EMU2413_API void OPLL_writeReg(OPLL *, e_uint32 reg, e_uint32 val);
137EMU2413_API e_uint32 OPLL_read(OPLL *, e_uint32 port); 137EMU2413_API e_uint32 OPLL_read(OPLL *, e_uint32 port);
138 138
139/* Synthsize */ 139/* Synthsize */
140EMU2413_API e_int16 OPLL_calc(OPLL *) EMU2413_CALC_ICODE; 140EMU2413_API e_int16 OPLL_calc(OPLL *) EMU2413_CALC_ICODE;
141EMU2413_API void OPLL_calc_stereo(OPLL *, e_int32 out[2]) ; 141EMU2413_API void OPLL_calc_stereo(OPLL *, e_int32 out[2]) ;
142EMU2413_API e_int16 *OPLL_update_buffer(OPLL *, e_uint32 length) ; 142EMU2413_API e_int16 *OPLL_update_buffer(OPLL *, e_uint32 length) ;
143 143
144/* Misc */ 144/* Misc */
145EMU2413_API void OPLL_setPatch(OPLL *, const e_uint8 *dump) ; 145EMU2413_API void OPLL_setPatch(OPLL *, const e_uint8 *dump) ;
146EMU2413_API void OPLL_copyPatch(OPLL *, e_int32, OPLL_PATCH *) ; 146EMU2413_API void OPLL_copyPatch(OPLL *, e_int32, OPLL_PATCH *) ;
147EMU2413_API void OPLL_forceRefresh(OPLL *) ; 147EMU2413_API void OPLL_forceRefresh(OPLL *) ;
148/* Utility */ 148/* Utility */
149EMU2413_API void OPLL_dump2patch(const e_uint8 *dump, OPLL_PATCH *patch) ; 149EMU2413_API void OPLL_dump2patch(const e_uint8 *dump, OPLL_PATCH *patch) ;
150EMU2413_API void OPLL_patch2dump(const OPLL_PATCH *patch, e_uint8 *dump) ; 150EMU2413_API void OPLL_patch2dump(const OPLL_PATCH *patch, e_uint8 *dump) ;
151EMU2413_API void OPLL_getDefaultPatch(e_int32 type, e_int32 num, OPLL_PATCH *) ; 151EMU2413_API void OPLL_getDefaultPatch(e_int32 type, e_int32 num, OPLL_PATCH *) ;
152 152
153/* Channel Mask */ 153/* Channel Mask */
154EMU2413_API e_uint32 OPLL_setMask(OPLL *, e_uint32 mask) ; 154EMU2413_API e_uint32 OPLL_setMask(OPLL *, e_uint32 mask) ;
155EMU2413_API e_uint32 OPLL_toggleMask(OPLL *, e_uint32 mask) ; 155EMU2413_API e_uint32 OPLL_toggleMask(OPLL *, e_uint32 mask) ;
156 156
157#define dump2patch OPLL_dump2patch 157#define dump2patch OPLL_dump2patch
158 158
159#ifdef __cplusplus 159#ifdef __cplusplus
160} 160}
161#endif 161#endif
162 162
163#endif 163#endif
164 164
diff --git a/apps/codecs/libgme/emutables.h b/apps/codecs/libgme/emutables.h
index e34f100bc4..739c8c390a 100644
--- a/apps/codecs/libgme/emutables.h
+++ b/apps/codecs/libgme/emutables.h
@@ -1,210 +1,210 @@
1#ifndef _EMUTABLES_H_ 1#ifndef _EMUTABLES_H_
2#define _EMUTABLES_H_ 2#define _EMUTABLES_H_
3 3
4/* Precalculated emu2413 tables for use in Rockbox, 4/* Precalculated emu2413 tables for use in Rockbox,
5 Calculated for 44Khz sampling rate */ 5 Calculated for 44Khz sampling rate */
6 6
7#include "emutypes.h" 7#include "emutypes.h"
8 8
9static const e_uint16 sin_coeff[] = { 9static const e_uint16 sin_coeff[] = {
10 255, 203, 171, 152, 139, 129, 120, 10 255, 203, 171, 152, 139, 129, 120,
11 113, 107, 102, 97, 92, 88, 85, 11 113, 107, 102, 97, 92, 88, 85,
12 81, 78, 75, 72, 70, 67, 65, 12 81, 78, 75, 72, 70, 67, 65,
13 63, 61, 59, 57, 55, 53, 52, 13 63, 61, 59, 57, 55, 53, 52,
14 50, 48, 47, 45, 44, 43, 41, 14 50, 48, 47, 45, 44, 43, 41,
15 40, 39, 38, 37, 35, 34, 33, 15 40, 39, 38, 37, 35, 34, 33,
16 32, 31, 30, 29, 28, 28, 27, 16 32, 31, 30, 29, 28, 28, 27,
17 26, 25, 24, 23, 23, 22, 21, 17 26, 25, 24, 23, 23, 22, 21,
18 21, 20, 19, 19, 18, 17, 17, 18 21, 20, 19, 19, 18, 17, 17,
19 16, 16, 15, 14, 14, 13, 13, 19 16, 16, 15, 14, 14, 13, 13,
20 12, 12, 11, 11, 11, 10, 10, 20 12, 12, 11, 11, 11, 10, 10,
21 9, 9, 8, 8, 8, 7, 7, 21 9, 9, 8, 8, 8, 7, 7,
22 7, 6, 6, 6, 5, 5, 5, 22 7, 6, 6, 6, 5, 5, 5,
23 4, 4, 4, 4, 3, 3, 3, 23 4, 4, 4, 4, 3, 3, 3,
24 3, 2, 2, 2, 2, 2, 2, 24 3, 2, 2, 2, 2, 2, 2,
25 1, 1, 1, 1, 1, 1, 1, 25 1, 1, 1, 1, 1, 1, 1,
26 0, 0, 0, 0, 0, 0, 0, 26 0, 0, 0, 0, 0, 0, 0,
27 0, 0, 0, 0, 0, 0, 0, 27 0, 0, 0, 0, 0, 0, 0,
28 0, 0, 28 0, 0,
29}; 29};
30 30
31static const e_int16 pm_coeff[] = { 31static const e_int16 pm_coeff[] = {
32 256, 256, 256, 256, 256, 256, 256, 32 256, 256, 256, 256, 256, 256, 256,
33 256, 256, 256, 256, 256, 256, 256, 33 256, 256, 256, 256, 256, 256, 256,
34 256, 256, 256, 256, 256, 256, 256, 34 256, 256, 256, 256, 256, 256, 256,
35 256, 256, 256, 256, 256, 256, 256, 35 256, 256, 256, 256, 256, 256, 256,
36 256, 256, 256, 256, 257, 257, 257, 36 256, 256, 256, 256, 257, 257, 257,
37 257, 257, 257, 257, 257, 257, 257, 37 257, 257, 257, 257, 257, 257, 257,
38 257, 257, 257, 257, 257, 257, 257, 38 257, 257, 257, 257, 257, 257, 257,
39 257, 257, 257, 257, 257, 257, 257, 39 257, 257, 257, 257, 257, 257, 257,
40 257, 257, 257, 257, 257, 257, 257, 40 257, 257, 257, 257, 257, 257, 257,
41 258, 258, 258, 257, 257, 257, 257, 41 258, 258, 258, 257, 257, 257, 257,
42 257, 257, 257, 257, 257, 257, 257, 42 257, 257, 257, 257, 257, 257, 257,
43 257, 257, 257, 257, 257, 257, 257, 43 257, 257, 257, 257, 257, 257, 257,
44 257, 257, 257, 257, 257, 257, 257, 44 257, 257, 257, 257, 257, 257, 257,
45 257, 257, 257, 257, 257, 257, 256, 45 257, 257, 257, 257, 257, 257, 256,
46 256, 256, 256, 256, 256, 256, 256, 46 256, 256, 256, 256, 256, 256, 256,
47 256, 256, 256, 256, 256, 256, 256, 47 256, 256, 256, 256, 256, 256, 256,
48 256, 256, 256, 256, 256, 256, 256, 48 256, 256, 256, 256, 256, 256, 256,
49 256, 256, 256, 256, 256, 256, 256, 49 256, 256, 256, 256, 256, 256, 256,
50 256, 256, 256, 255, 255, 255, 255, 50 256, 256, 256, 255, 255, 255, 255,
51 255, 255, 255, 255, 255, 255, 255, 51 255, 255, 255, 255, 255, 255, 255,
52 255, 255, 255, 255, 255, 255, 255, 52 255, 255, 255, 255, 255, 255, 255,
53 255, 255, 255, 255, 255, 255, 255, 53 255, 255, 255, 255, 255, 255, 255,
54 255, 255, 255, 255, 255, 255, 254, 54 255, 255, 255, 255, 255, 255, 254,
55 254, 254, 254, 254, 254, 254, 254, 55 254, 254, 254, 254, 254, 254, 254,
56 254, 254, 254, 254, 254, 254, 254, 56 254, 254, 254, 254, 254, 254, 254,
57 254, 254, 254, 254, 254, 254, 254, 57 254, 254, 254, 254, 254, 254, 254,
58 254, 254, 254, 254, 254, 254, 254, 58 254, 254, 254, 254, 254, 254, 254,
59 254, 254, 254, 253, 254, 254, 254, 59 254, 254, 254, 253, 254, 254, 254,
60 254, 254, 254, 254, 254, 254, 254, 60 254, 254, 254, 254, 254, 254, 254,
61 254, 254, 254, 254, 254, 254, 254, 61 254, 254, 254, 254, 254, 254, 254,
62 254, 254, 254, 254, 254, 254, 254, 62 254, 254, 254, 254, 254, 254, 254,
63 254, 254, 254, 254, 254, 254, 254, 63 254, 254, 254, 254, 254, 254, 254,
64 254, 255, 255, 255, 255, 255, 255, 64 254, 255, 255, 255, 255, 255, 255,
65 255, 255, 255, 255, 255, 255, 255, 65 255, 255, 255, 255, 255, 255, 255,
66 255, 255, 255, 255, 255, 255, 255, 66 255, 255, 255, 255, 255, 255, 255,
67 255, 255, 255, 255, 255, 255, 255, 67 255, 255, 255, 255, 255, 255, 255,
68 255, 255, 255, 255, 68 255, 255, 255, 255,
69}; 69};
70 70
71static const e_int8 am_coeff[] = { 71static const e_int8 am_coeff[] = {
72 13, 13, 13, 13, 13, 14, 14, 72 13, 13, 13, 13, 13, 14, 14,
73 14, 14, 14, 15, 15, 15, 15, 73 14, 14, 14, 15, 15, 15, 15,
74 15, 16, 16, 16, 16, 16, 17, 74 15, 16, 16, 16, 16, 16, 17,
75 17, 17, 17, 17, 18, 18, 18, 75 17, 17, 17, 17, 18, 18, 18,
76 18, 18, 19, 19, 19, 19, 19, 76 18, 18, 19, 19, 19, 19, 19,
77 20, 20, 20, 20, 20, 21, 21, 77 20, 20, 20, 20, 20, 21, 21,
78 21, 21, 21, 22, 22, 22, 22, 78 21, 21, 21, 22, 22, 22, 22,
79 22, 23, 23, 23, 23, 23, 24, 79 22, 23, 23, 23, 23, 23, 24,
80 24, 24, 24, 24, 25, 25, 25, 80 24, 24, 24, 24, 25, 25, 25,
81 25, 26, 25, 25, 25, 25, 24, 81 25, 26, 25, 25, 25, 25, 24,
82 24, 24, 24, 24, 23, 23, 23, 82 24, 24, 24, 24, 23, 23, 23,
83 23, 23, 22, 22, 22, 22, 22, 83 23, 23, 22, 22, 22, 22, 22,
84 21, 21, 21, 21, 21, 20, 20, 84 21, 21, 21, 21, 21, 20, 20,
85 20, 20, 20, 19, 19, 19, 19, 85 20, 20, 20, 19, 19, 19, 19,
86 19, 18, 18, 18, 18, 18, 17, 86 19, 18, 18, 18, 18, 18, 17,
87 17, 17, 17, 17, 16, 16, 16, 87 17, 17, 17, 17, 16, 16, 16,
88 16, 16, 15, 15, 15, 15, 15, 88 16, 16, 15, 15, 15, 15, 15,
89 14, 14, 14, 14, 14, 13, 13, 89 14, 14, 14, 14, 14, 13, 13,
90 13, 13, 13, 12, 12, 12, 12, 90 13, 13, 13, 12, 12, 12, 12,
91 11, 11, 11, 11, 11, 10, 10, 91 11, 11, 11, 11, 11, 10, 10,
92 10, 10, 10, 9, 9, 9, 9, 92 10, 10, 10, 9, 9, 9, 9,
93 9, 8, 8, 8, 8, 8, 7, 93 9, 8, 8, 8, 8, 8, 7,
94 7, 7, 7, 7, 6, 6, 6, 94 7, 7, 7, 7, 6, 6, 6,
95 6, 6, 5, 5, 5, 5, 5, 95 6, 6, 5, 5, 5, 5, 5,
96 4, 4, 4, 4, 4, 3, 3, 96 4, 4, 4, 4, 4, 3, 3,
97 3, 3, 3, 2, 2, 2, 2, 97 3, 3, 3, 2, 2, 2, 2,
98 2, 1, 1, 1, 1, 1, 0, 98 2, 1, 1, 1, 1, 1, 0,
99 0, 0, 0, 0, 0, 0, 0, 99 0, 0, 0, 0, 0, 0, 0,
100 0, 1, 1, 1, 1, 1, 2, 100 0, 1, 1, 1, 1, 1, 2,
101 2, 2, 2, 2, 3, 3, 3, 101 2, 2, 2, 2, 3, 3, 3,
102 3, 3, 4, 4, 4, 4, 4, 102 3, 3, 4, 4, 4, 4, 4,
103 5, 5, 5, 5, 5, 6, 6, 103 5, 5, 5, 5, 5, 6, 6,
104 6, 6, 6, 7, 7, 7, 7, 104 6, 6, 6, 7, 7, 7, 7,
105 7, 8, 8, 8, 8, 8, 9, 105 7, 8, 8, 8, 8, 8, 9,
106 9, 9, 9, 9, 10, 10, 10, 106 9, 9, 9, 9, 10, 10, 10,
107 10, 10, 11, 11, 11, 11, 11, 107 10, 10, 11, 11, 11, 11, 11,
108 12, 12, 12, 12, 108 12, 12, 12, 12,
109}; 109};
110 110
111static const e_int16 db2lin_coeff[] = { 111static const e_int16 db2lin_coeff[] = {
112 255, 249, 244, 239, 233, 228, 224, 112 255, 249, 244, 239, 233, 228, 224,
113 219, 214, 209, 205, 201, 196, 192, 113 219, 214, 209, 205, 201, 196, 192,
114 188, 184, 180, 176, 172, 169, 165, 114 188, 184, 180, 176, 172, 169, 165,
115 162, 158, 155, 151, 148, 145, 142, 115 162, 158, 155, 151, 148, 145, 142,
116 139, 136, 133, 130, 127, 125, 122, 116 139, 136, 133, 130, 127, 125, 122,
117 119, 117, 114, 112, 109, 107, 105, 117 119, 117, 114, 112, 109, 107, 105,
118 102, 100, 98, 96, 94, 92, 90, 118 102, 100, 98, 96, 94, 92, 90,
119 88, 86, 84, 82, 81, 79, 77, 119 88, 86, 84, 82, 81, 79, 77,
120 76, 74, 72, 71, 69, 68, 66, 120 76, 74, 72, 71, 69, 68, 66,
121 65, 64, 62, 61, 60, 58, 57, 121 65, 64, 62, 61, 60, 58, 57,
122 56, 55, 53, 52, 51, 50, 49, 122 56, 55, 53, 52, 51, 50, 49,
123 48, 47, 46, 45, 44, 43, 42, 123 48, 47, 46, 45, 44, 43, 42,
124 41, 40, 39, 38, 38, 37, 36, 124 41, 40, 39, 38, 38, 37, 36,
125 35, 34, 34, 33, 32, 32, 31, 125 35, 34, 34, 33, 32, 32, 31,
126 30, 30, 29, 28, 28, 27, 27, 126 30, 30, 29, 28, 28, 27, 27,
127 26, 25, 25, 24, 24, 23, 23, 127 26, 25, 25, 24, 24, 23, 23,
128 22, 22, 21, 21, 20, 20, 19, 128 22, 22, 21, 21, 20, 20, 19,
129 19, 19, 18, 18, 17, 17, 17, 129 19, 19, 18, 18, 17, 17, 17,
130 16, 16, 16, 15, 15, 15, 14, 130 16, 16, 16, 15, 15, 15, 14,
131 14, 14, 13, 13, 13, 12, 12, 131 14, 14, 13, 13, 13, 12, 12,
132 12, 12, 11, 11, 11, 11, 10, 132 12, 12, 11, 11, 11, 11, 10,
133 10, 10, 10, 10, 9, 9, 9, 133 10, 10, 10, 10, 9, 9, 9,
134 9, 8, 8, 8, 8, 8, 8, 134 9, 8, 8, 8, 8, 8, 8,
135 7, 7, 7, 7, 7, 7, 6, 135 7, 7, 7, 7, 7, 7, 6,
136 6, 6, 6, 6, 6, 6, 5, 136 6, 6, 6, 6, 6, 6, 5,
137 5, 5, 5, 5, 5, 5, 5, 137 5, 5, 5, 5, 5, 5, 5,
138 5, 4, 4, 4, 4, 4, 4, 138 5, 4, 4, 4, 4, 4, 4,
139 4, 4, 4, 4, 3, 3, 3, 139 4, 4, 4, 4, 3, 3, 3,
140 3, 3, 3, 3, 3, 3, 3, 140 3, 3, 3, 3, 3, 3, 3,
141 3, 3, 3, 2, 2, 2, 2, 141 3, 3, 3, 2, 2, 2, 2,
142 2, 2, 2, 2, 2, 2, 2, 142 2, 2, 2, 2, 2, 2, 2,
143 2, 2, 2, 2, 2, 2, 2, 143 2, 2, 2, 2, 2, 2, 2,
144 2, 1, 1, 1, 1, 1, 1, 144 2, 1, 1, 1, 1, 1, 1,
145 1, 1, 1, 1, 1, 1, 1, 145 1, 1, 1, 1, 1, 1, 1,
146 1, 1, 1, 1, 1, 1, 1, 146 1, 1, 1, 1, 1, 1, 1,
147 1, 1, 1, 1, 1, 1, 1, 147 1, 1, 1, 1, 1, 1, 1,
148 1, 1, 1, 1, 1, 0, 0, 148 1, 1, 1, 1, 1, 0, 0,
149 0, 0, 0, 0, 0, 0, 0, 149 0, 0, 0, 0, 0, 0, 0,
150 0, 0, 0, 0, 0, 0, 0, 150 0, 0, 0, 0, 0, 0, 0,
151 0, 0, 0, 0, 0, 0, 0, 151 0, 0, 0, 0, 0, 0, 0,
152 0, 0, 0, 0, 0, 0, 0, 152 0, 0, 0, 0, 0, 0, 0,
153 0, 0, 0, 0, 0, 0, 0, 153 0, 0, 0, 0, 0, 0, 0,
154 0, 0, 0, 0, 0, 0, 0, 154 0, 0, 0, 0, 0, 0, 0,
155 0, 0, 0, 0, 0, 0, 0, 155 0, 0, 0, 0, 0, 0, 0,
156 0, 0, 0, 0, 0, 0, 0, 156 0, 0, 0, 0, 0, 0, 0,
157 0, 0, 0, 0, 0, 0, 0, 157 0, 0, 0, 0, 0, 0, 0,
158 0, 0, 0, 0, 0, 0, 0, 158 0, 0, 0, 0, 0, 0, 0,
159 0, 0, 0, 0, 0, 0, 0, 159 0, 0, 0, 0, 0, 0, 0,
160 0, 0, 0, 0, 0, 0, 0, 160 0, 0, 0, 0, 0, 0, 0,
161 0, 0, 0, 0, 0, 0, 0, 161 0, 0, 0, 0, 0, 0, 0,
162 0, 0, 0, 0, 0, 0, 0, 162 0, 0, 0, 0, 0, 0, 0,
163 0, 0, 0, 0, 0, 0, 0, 163 0, 0, 0, 0, 0, 0, 0,
164 0, 0, 0, 0, 0, 0, 0, 164 0, 0, 0, 0, 0, 0, 0,
165 0, 0, 0, 0, 0, 0, 0, 165 0, 0, 0, 0, 0, 0, 0,
166 0, 0, 0, 0, 0, 0, 0, 166 0, 0, 0, 0, 0, 0, 0,
167 0, 0, 0, 0, 0, 0, 0, 167 0, 0, 0, 0, 0, 0, 0,
168 0, 0, 0, 0, 0, 0, 0, 168 0, 0, 0, 0, 0, 0, 0,
169 0, 0, 0, 0, 0, 0, 0, 169 0, 0, 0, 0, 0, 0, 0,
170 0, 0, 0, 0, 0, 0, 0, 170 0, 0, 0, 0, 0, 0, 0,
171 0, 0, 0, 0, 0, 0, 0, 171 0, 0, 0, 0, 0, 0, 0,
172 0, 0, 0, 0, 0, 0, 0, 172 0, 0, 0, 0, 0, 0, 0,
173 0, 0, 0, 0, 0, 0, 0, 173 0, 0, 0, 0, 0, 0, 0,
174 0, 0, 0, 0, 0, 0, 0, 174 0, 0, 0, 0, 0, 0, 0,
175 0, 0, 0, 0, 0, 0, 0, 175 0, 0, 0, 0, 0, 0, 0,
176 0, 0, 0, 0, 0, 0, 0, 176 0, 0, 0, 0, 0, 0, 0,
177 0, 0, 0, 0, 0, 0, 0, 177 0, 0, 0, 0, 0, 0, 0,
178 0, 0, 0, 0, 0, 0, 0, 178 0, 0, 0, 0, 0, 0, 0,
179 0, 0, 0, 0, 0, 0, 0, 179 0, 0, 0, 0, 0, 0, 0,
180 0, 0, 0, 0, 0, 0, 0, 180 0, 0, 0, 0, 0, 0, 0,
181 0, 0, 0, 0, 0, 0, 0, 181 0, 0, 0, 0, 0, 0, 0,
182 0, 0, 0, 0, 0, 0, 0, 182 0, 0, 0, 0, 0, 0, 0,
183 0, 0, 0, 0, 0, 0, 0, 183 0, 0, 0, 0, 0, 0, 0,
184 0, 0, 0, 0, 0, 0, 0, 184 0, 0, 0, 0, 0, 0, 0,
185 0, 185 0,
186}; 186};
187 187
188static const e_uint16 ar_adjust_coeff[] = { 188static const e_uint16 ar_adjust_coeff[] = {
189 127, 108, 98, 90, 84, 80, 75, 189 127, 108, 98, 90, 84, 80, 75,
190 72, 69, 66, 64, 61, 59, 57, 190 72, 69, 66, 64, 61, 59, 57,
191 56, 54, 52, 51, 49, 48, 47, 191 56, 54, 52, 51, 49, 48, 47,
192 45, 44, 43, 42, 41, 40, 39, 192 45, 44, 43, 42, 41, 40, 39,
193 38, 37, 36, 36, 35, 34, 33, 193 38, 37, 36, 36, 35, 34, 33,
194 33, 32, 31, 30, 30, 29, 29, 194 33, 32, 31, 30, 30, 29, 29,
195 28, 27, 27, 26, 26, 25, 24, 195 28, 27, 27, 26, 26, 25, 24,
196 24, 23, 23, 22, 22, 21, 21, 196 24, 23, 23, 22, 22, 21, 21,
197 21, 20, 20, 19, 19, 18, 18, 197 21, 20, 20, 19, 19, 18, 18,
198 17, 17, 17, 16, 16, 15, 15, 198 17, 17, 17, 16, 16, 15, 15,
199 15, 14, 14, 14, 13, 13, 13, 199 15, 14, 14, 14, 13, 13, 13,
200 12, 12, 12, 11, 11, 11, 10, 200 12, 12, 12, 11, 11, 11, 10,
201 10, 10, 9, 9, 9, 9, 8, 201 10, 10, 9, 9, 9, 9, 8,
202 8, 8, 7, 7, 7, 7, 6, 202 8, 8, 7, 7, 7, 7, 6,
203 6, 6, 6, 5, 5, 5, 4, 203 6, 6, 6, 5, 5, 5, 4,
204 4, 4, 4, 4, 3, 3, 3, 204 4, 4, 4, 4, 3, 3, 3,
205 3, 2, 2, 2, 2, 1, 1, 205 3, 2, 2, 2, 2, 1, 1,
206 1, 1, 1, 0, 0, 0, 0, 206 1, 1, 1, 0, 0, 0, 0,
207 0, 207 0,
208}; 208};
209 209
210#endif 210#endif
diff --git a/apps/codecs/libgme/emutypes.h b/apps/codecs/libgme/emutypes.h
index bf5d7e1bf2..bc523db072 100644
--- a/apps/codecs/libgme/emutypes.h
+++ b/apps/codecs/libgme/emutypes.h
@@ -1,41 +1,41 @@
1#ifndef _EMUTYPES_H_ 1#ifndef _EMUTYPES_H_
2#define _EMUTYPES_H_ 2#define _EMUTYPES_H_
3 3
4#if defined(_MSC_VER) 4#if defined(_MSC_VER)
5#define INLINE __forceinline 5#define INLINE __forceinline
6#elif defined(__GNUC__) 6#elif defined(__GNUC__)
7#define INLINE __inline__ 7#define INLINE __inline__
8#elif defined(_MWERKS_) 8#elif defined(_MWERKS_)
9#define INLINE inline 9#define INLINE inline
10#else 10#else
11#define INLINE 11#define INLINE
12#endif 12#endif
13 13
14#if defined(EMU_DLL_IMPORTS) 14#if defined(EMU_DLL_IMPORTS)
15#define EMU2149_DLL_IMPORTS 15#define EMU2149_DLL_IMPORTS
16#define EMU2212_DLL_IMPORTS 16#define EMU2212_DLL_IMPORTS
17#define EMU2413_DLL_IMPORTS 17#define EMU2413_DLL_IMPORTS
18#define EMU8950_DLL_IMPORTS 18#define EMU8950_DLL_IMPORTS
19#define EMU76489_DLL_IMPORTS 19#define EMU76489_DLL_IMPORTS
20#endif 20#endif
21 21
22#ifdef __cplusplus 22#ifdef __cplusplus
23extern "C" { 23extern "C" {
24#endif 24#endif
25 25
26typedef unsigned int e_uint; 26typedef unsigned int e_uint;
27typedef signed int e_int; 27typedef signed int e_int;
28 28
29typedef unsigned char e_uint8 ; 29typedef unsigned char e_uint8 ;
30typedef signed char e_int8 ; 30typedef signed char e_int8 ;
31 31
32typedef unsigned short e_uint16 ; 32typedef unsigned short e_uint16 ;
33typedef signed short e_int16 ; 33typedef signed short e_int16 ;
34 34
35typedef unsigned int e_uint32 ; 35typedef unsigned int e_uint32 ;
36typedef signed int e_int32 ; 36typedef signed int e_int32 ;
37 37
38#ifdef __cplusplus 38#ifdef __cplusplus
39} 39}
40#endif 40#endif
41#endif 41#endif
diff --git a/apps/codecs/libgme/hes_apu_adpcm.c b/apps/codecs/libgme/hes_apu_adpcm.c
index 69ac7120d0..de9b894f5d 100644
--- a/apps/codecs/libgme/hes_apu_adpcm.c
+++ b/apps/codecs/libgme/hes_apu_adpcm.c
@@ -1,297 +1,297 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3#include "hes_apu_adpcm.h" 3#include "hes_apu_adpcm.h"
4 4
5/* Copyright (C) 2006-2008 Shay Green. This module is free software; you 5/* Copyright (C) 2006-2008 Shay Green. This module is free software; you
6can redistribute it and/or modify it under the terms of the GNU Lesser 6can redistribute it and/or modify it under the terms of the GNU Lesser
7General Public License as published by the Free Software Foundation; either 7General Public License as published by the Free Software Foundation; either
8version 2.1 of the License, or (at your option) any later version. This 8version 2.1 of the License, or (at your option) any later version. This
9module is distributed in the hope that it will be useful, but WITHOUT ANY 9module is distributed in the hope that it will be useful, but WITHOUT ANY
10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 11FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12details. You should have received a copy of the GNU Lesser General Public 12details. You should have received a copy of the GNU Lesser General Public
13License along with this module; if not, write to the Free Software Foundation, 13License along with this module; if not, write to the Free Software Foundation,
14Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 14Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
15 15
16 16
17void Adpcm_init( struct Hes_Apu_Adpcm* this ) 17void Adpcm_init( struct Hes_Apu_Adpcm* this )
18{ 18{
19 this->output = NULL; 19 this->output = NULL;
20 memset( &this->state, 0, sizeof( this->state ) ); 20 memset( &this->state, 0, sizeof( this->state ) );
21 Adpcm_reset( this ); 21 Adpcm_reset( this );
22} 22}
23 23
24void Adpcm_reset( struct Hes_Apu_Adpcm* this ) 24void Adpcm_reset( struct Hes_Apu_Adpcm* this )
25{ 25{
26 this->last_time = 0; 26 this->last_time = 0;
27 this->next_timer = 0; 27 this->next_timer = 0;
28 this->last_amp = 0; 28 this->last_amp = 0;
29 29
30 memset( &this->state.pcmbuf, 0, sizeof(this->state.pcmbuf) ); 30 memset( &this->state.pcmbuf, 0, sizeof(this->state.pcmbuf) );
31 memset( &this->state.port, 0, sizeof(this->state.port) ); 31 memset( &this->state.port, 0, sizeof(this->state.port) );
32 32
33 this->state.ad_sample = 0; 33 this->state.ad_sample = 0;
34 this->state.ad_ref_index = 0; 34 this->state.ad_ref_index = 0;
35 35
36 this->state.addr = 0; 36 this->state.addr = 0;
37 this->state.freq = 0; 37 this->state.freq = 0;
38 this->state.writeptr = 0; 38 this->state.writeptr = 0;
39 this->state.readptr = 0; 39 this->state.readptr = 0;
40 this->state.playflag = 0; 40 this->state.playflag = 0;
41 this->state.repeatflag = 0; 41 this->state.repeatflag = 0;
42 this->state.length = 0; 42 this->state.length = 0;
43 this->state.volume = 0xFF; 43 this->state.volume = 0xFF;
44 this->state.fadetimer = 0; 44 this->state.fadetimer = 0;
45 this->state.fadecount = 0; 45 this->state.fadecount = 0;
46} 46}
47 47
48static short stepsize[49] = { 48static short stepsize[49] = {
49 16, 17, 19, 21, 23, 25, 28, 49 16, 17, 19, 21, 23, 25, 28,
50 31, 34, 37, 41, 45, 50, 55, 50 31, 34, 37, 41, 45, 50, 55,
51 60, 66, 73, 80, 88, 97, 107, 51 60, 66, 73, 80, 88, 97, 107,
52 118, 130, 143, 157, 173, 190, 209, 52 118, 130, 143, 157, 173, 190, 209,
53 230, 253, 279, 307, 337, 371, 408, 53 230, 253, 279, 307, 337, 371, 408,
54 449, 494, 544, 598, 658, 724, 796, 54 449, 494, 544, 598, 658, 724, 796,
55 876, 963,1060,1166,1282,1411,1552 55 876, 963,1060,1166,1282,1411,1552
56}; 56};
57 57
58static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code ); 58static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code );
59static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code ) 59static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code )
60{ 60{
61 struct State* state = &this->state; 61 struct State* state = &this->state;
62 int step = stepsize[state->ad_ref_index]; 62 int step = stepsize[state->ad_ref_index];
63 int delta; 63 int delta;
64 int c = code & 7; 64 int c = code & 7;
65#if 1 65#if 1
66 delta = 0; 66 delta = 0;
67 if ( c & 4 ) delta += step; 67 if ( c & 4 ) delta += step;
68 step >>= 1; 68 step >>= 1;
69 if ( c & 2 ) delta += step; 69 if ( c & 2 ) delta += step;
70 step >>= 1; 70 step >>= 1;
71 if ( c & 1 ) delta += step; 71 if ( c & 1 ) delta += step;
72 step >>= 1; 72 step >>= 1;
73 delta += step; 73 delta += step;
74#else 74#else
75 delta = ( ( c + c + 1 ) * step ) / 8; // maybe faster, but introduces rounding 75 delta = ( ( c + c + 1 ) * step ) / 8; // maybe faster, but introduces rounding
76#endif 76#endif
77 if ( c != code ) 77 if ( c != code )
78 { 78 {
79 state->ad_sample -= delta; 79 state->ad_sample -= delta;
80 if ( state->ad_sample < -2048 ) 80 if ( state->ad_sample < -2048 )
81 state->ad_sample = -2048; 81 state->ad_sample = -2048;
82 } 82 }
83 else 83 else
84 { 84 {
85 state->ad_sample += delta; 85 state->ad_sample += delta;
86 if ( state->ad_sample > 2047 ) 86 if ( state->ad_sample > 2047 )
87 state->ad_sample = 2047; 87 state->ad_sample = 2047;
88 } 88 }
89 89
90 static int const steps [8] = { 90 static int const steps [8] = {
91 -1, -1, -1, -1, 2, 4, 6, 8 91 -1, -1, -1, -1, 2, 4, 6, 8
92 }; 92 };
93 state->ad_ref_index += steps [c]; 93 state->ad_ref_index += steps [c];
94 if ( state->ad_ref_index < 0 ) 94 if ( state->ad_ref_index < 0 )
95 state->ad_ref_index = 0; 95 state->ad_ref_index = 0;
96 else if ( state->ad_ref_index > 48 ) 96 else if ( state->ad_ref_index > 48 )
97 state->ad_ref_index = 48; 97 state->ad_ref_index = 48;
98 98
99 return state->ad_sample; 99 return state->ad_sample;
100} 100}
101 101
102static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time ); 102static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time );
103static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time ) 103static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time )
104{ 104{
105 struct State* state = &this->state; 105 struct State* state = &this->state;
106 int volume = state->volume; 106 int volume = state->volume;
107 int fadetimer = state->fadetimer; 107 int fadetimer = state->fadetimer;
108 int fadecount = state->fadecount; 108 int fadecount = state->fadecount;
109 int last_time = this->last_time; 109 int last_time = this->last_time;
110 int next_timer = this->next_timer; 110 int next_timer = this->next_timer;
111 int last_amp = this->last_amp; 111 int last_amp = this->last_amp;
112 112
113 struct Blip_Buffer* output = this->output; // cache often-used values 113 struct Blip_Buffer* output = this->output; // cache often-used values
114 114
115 while ( state->playflag && last_time < end_time ) 115 while ( state->playflag && last_time < end_time )
116 { 116 {
117 while ( last_time >= next_timer ) 117 while ( last_time >= next_timer )
118 { 118 {
119 if ( fadetimer ) 119 if ( fadetimer )
120 { 120 {
121 if ( fadecount > 0 ) 121 if ( fadecount > 0 )
122 { 122 {
123 fadecount--; 123 fadecount--;
124 volume = 0xFF * fadecount / fadetimer; 124 volume = 0xFF * fadecount / fadetimer;
125 } 125 }
126 else if ( fadecount < 0 ) 126 else if ( fadecount < 0 )
127 { 127 {
128 fadecount++; 128 fadecount++;
129 volume = 0xFF - ( 0xFF * fadecount / fadetimer ); 129 volume = 0xFF - ( 0xFF * fadecount / fadetimer );
130 } 130 }
131 } 131 }
132 next_timer += 7159; // 7159091/1000; 132 next_timer += 7159; // 7159091/1000;
133 } 133 }
134 int amp; 134 int amp;
135 if ( state->ad_low_nibble ) 135 if ( state->ad_low_nibble )
136 { 136 {
137 amp = Adpcm_decode( this, state->pcmbuf[ state->playptr ] & 0x0F ); 137 amp = Adpcm_decode( this, state->pcmbuf[ state->playptr ] & 0x0F );
138 state->ad_low_nibble = false; 138 state->ad_low_nibble = false;
139 state->playptr++; 139 state->playptr++;
140 state->playedsamplecount++; 140 state->playedsamplecount++;
141 if ( state->playedsamplecount == state->playlength ) 141 if ( state->playedsamplecount == state->playlength )
142 { 142 {
143 state->playflag = 0; 143 state->playflag = 0;
144 } 144 }
145 } 145 }
146 else 146 else
147 { 147 {
148 amp = Adpcm_decode( this, state->pcmbuf[ state->playptr ] >> 4 ); 148 amp = Adpcm_decode( this, state->pcmbuf[ state->playptr ] >> 4 );
149 state->ad_low_nibble = true; 149 state->ad_low_nibble = true;
150 } 150 }
151 amp = amp * volume / 0xFF; 151 amp = amp * volume / 0xFF;
152 int delta = amp - last_amp; 152 int delta = amp - last_amp;
153 if ( output && delta ) 153 if ( output && delta )
154 { 154 {
155 last_amp = amp; 155 last_amp = amp;
156 Synth_offset_inline( &this->synth, last_time, delta, output ); 156 Synth_offset_inline( &this->synth, last_time, delta, output );
157 } 157 }
158 last_time += state->freq; 158 last_time += state->freq;
159 } 159 }
160 160
161 if ( !state->playflag ) 161 if ( !state->playflag )
162 { 162 {
163 while ( next_timer <= end_time ) next_timer += 7159; // 7159091/1000 163 while ( next_timer <= end_time ) next_timer += 7159; // 7159091/1000
164 last_time = end_time; 164 last_time = end_time;
165 } 165 }
166 166
167 this->last_time = last_time; 167 this->last_time = last_time;
168 this->next_timer = next_timer; 168 this->next_timer = next_timer;
169 this->last_amp = last_amp; 169 this->last_amp = last_amp;
170 state->volume = volume; 170 state->volume = volume;
171 state->fadetimer = fadetimer; 171 state->fadetimer = fadetimer;
172 state->fadecount = fadecount; 172 state->fadecount = fadecount;
173} 173}
174 174
175void Adpcm_write_data( struct Hes_Apu_Adpcm* this, blip_time_t time, int addr, int data ) 175void Adpcm_write_data( struct Hes_Apu_Adpcm* this, blip_time_t time, int addr, int data )
176{ 176{
177 if ( time > this->last_time ) Adpcm_run_until( this, time ); 177 if ( time > this->last_time ) Adpcm_run_until( this, time );
178 struct State* state = &this->state; 178 struct State* state = &this->state;
179 179
180 data &= 0xFF; 180 data &= 0xFF;
181 state->port[ addr & 15 ] = data; 181 state->port[ addr & 15 ] = data;
182 switch ( addr & 15 ) 182 switch ( addr & 15 )
183 { 183 {
184 case 8: 184 case 8:
185 state->addr &= 0xFF00; 185 state->addr &= 0xFF00;
186 state->addr |= data; 186 state->addr |= data;
187 break; 187 break;
188 case 9: 188 case 9:
189 state->addr &= 0xFF; 189 state->addr &= 0xFF;
190 state->addr |= data << 8; 190 state->addr |= data << 8;
191 break; 191 break;
192 case 10: 192 case 10:
193 state->pcmbuf[ state->writeptr++ ] = data; 193 state->pcmbuf[ state->writeptr++ ] = data;
194 state->playlength ++; 194 state->playlength ++;
195 break; 195 break;
196 case 11: 196 case 11:
197 dprintf("ADPCM DMA 0x%02X", data); 197 dprintf("ADPCM DMA 0x%02X", data);
198 break; 198 break;
199 case 13: 199 case 13:
200 if ( data & 0x80 ) 200 if ( data & 0x80 )
201 { 201 {
202 state->addr = 0; 202 state->addr = 0;
203 state->freq = 0; 203 state->freq = 0;
204 state->writeptr = 0; 204 state->writeptr = 0;
205 state->readptr = 0; 205 state->readptr = 0;
206 state->playflag = 0; 206 state->playflag = 0;
207 state->repeatflag = 0; 207 state->repeatflag = 0;
208 state->length = 0; 208 state->length = 0;
209 state->volume = 0xFF; 209 state->volume = 0xFF;
210 } 210 }
211 if ( ( data & 3 ) == 3 ) 211 if ( ( data & 3 ) == 3 )
212 { 212 {
213 state->writeptr = state->addr; 213 state->writeptr = state->addr;
214 } 214 }
215 if ( data & 8 ) 215 if ( data & 8 )
216 { 216 {
217 state->readptr = state->addr ? state->addr - 1 : state->addr; 217 state->readptr = state->addr ? state->addr - 1 : state->addr;
218 } 218 }
219 if ( data & 0x10 ) 219 if ( data & 0x10 )
220 { 220 {
221 state->length = state->addr; 221 state->length = state->addr;
222 } 222 }
223 state->repeatflag = data & 0x20; 223 state->repeatflag = data & 0x20;
224 state->playflag = data & 0x40; 224 state->playflag = data & 0x40;
225 if ( state->playflag ) 225 if ( state->playflag )
226 { 226 {
227 state->playptr = state->readptr; 227 state->playptr = state->readptr;
228 state->playlength = state->length + 1; 228 state->playlength = state->length + 1;
229 state->playedsamplecount = 0; 229 state->playedsamplecount = 0;
230 state->ad_sample = 0; 230 state->ad_sample = 0;
231 state->ad_low_nibble = false; 231 state->ad_low_nibble = false;
232 } 232 }
233 break; 233 break;
234 case 14: 234 case 14:
235 state->freq = 7159091 / ( 32000 / ( 16 - ( data & 15 ) ) ); 235 state->freq = 7159091 / ( 32000 / ( 16 - ( data & 15 ) ) );
236 break; 236 break;
237 case 15: 237 case 15:
238 switch ( data & 15 ) 238 switch ( data & 15 )
239 { 239 {
240 case 0: 240 case 0:
241 case 8: 241 case 8:
242 case 12: 242 case 12:
243 state->fadetimer = -100; 243 state->fadetimer = -100;
244 state->fadecount = state->fadetimer; 244 state->fadecount = state->fadetimer;
245 break; 245 break;
246 case 10: 246 case 10:
247 state->fadetimer = 5000; 247 state->fadetimer = 5000;
248 state->fadecount = state->fadetimer; 248 state->fadecount = state->fadetimer;
249 break; 249 break;
250 case 14: 250 case 14:
251 state->fadetimer = 1500; 251 state->fadetimer = 1500;
252 state->fadecount = state->fadetimer; 252 state->fadecount = state->fadetimer;
253 break; 253 break;
254 } 254 }
255 break; 255 break;
256 } 256 }
257} 257}
258 258
259int Adpcm_read_data( struct Hes_Apu_Adpcm* this, blip_time_t time, int addr ) 259int Adpcm_read_data( struct Hes_Apu_Adpcm* this, blip_time_t time, int addr )
260{ 260{
261 if ( time > this->last_time ) Adpcm_run_until( this, time ); 261 if ( time > this->last_time ) Adpcm_run_until( this, time );
262 262
263 struct State* state = &this->state; 263 struct State* state = &this->state;
264 switch ( addr & 15 ) 264 switch ( addr & 15 )
265 { 265 {
266 case 10: 266 case 10:
267 return state->pcmbuf [state->readptr++]; 267 return state->pcmbuf [state->readptr++];
268 case 11: 268 case 11:
269 return state->port [11] & ~1; 269 return state->port [11] & ~1;
270 case 12: 270 case 12:
271 if (!state->playflag) 271 if (!state->playflag)
272 { 272 {
273 state->port [12] |= 1; 273 state->port [12] |= 1;
274 state->port [12] &= ~8; 274 state->port [12] &= ~8;
275 } 275 }
276 else 276 else
277 { 277 {
278 state->port [12] &= ~1; 278 state->port [12] &= ~1;
279 state->port [12] |= 8; 279 state->port [12] |= 8;
280 } 280 }
281 return state->port [12]; 281 return state->port [12];
282 case 13: 282 case 13:
283 return state->port [13]; 283 return state->port [13];
284 } 284 }
285 285
286 return 0xFF; 286 return 0xFF;
287} 287}
288 288
289void Adpcm_end_frame( struct Hes_Apu_Adpcm* this, blip_time_t end_time ) 289void Adpcm_end_frame( struct Hes_Apu_Adpcm* this, blip_time_t end_time )
290{ 290{
291 Adpcm_run_until( this, end_time ); 291 Adpcm_run_until( this, end_time );
292 this->last_time -= end_time; 292 this->last_time -= end_time;
293 this->next_timer -= end_time; 293 this->next_timer -= end_time;
294 check( last_time >= 0 ); 294 check( last_time >= 0 );
295 if ( this->output ) 295 if ( this->output )
296 Blip_set_modified( this->output ); 296 Blip_set_modified( this->output );
297} 297}
diff --git a/apps/codecs/libgme/inflate/mbreader.c b/apps/codecs/libgme/inflate/mbreader.c
index 96e45cd6c8..825787927c 100644
--- a/apps/codecs/libgme/inflate/mbreader.c
+++ b/apps/codecs/libgme/inflate/mbreader.c
@@ -1,16 +1,16 @@
1 1
2/* Memory buffer reader, simulates file read 2/* Memory buffer reader, simulates file read
3 @ gama 3 @ gama
4*/ 4*/
5 5
6#include "mbreader.h" 6#include "mbreader.h"
7 7
8int mbread(struct mbreader_t *md, void *buf, size_t n) 8int mbread(struct mbreader_t *md, void *buf, size_t n)
9{ 9{
10 if (!md) return -1; 10 if (!md) return -1;
11 size_t read_bytes = (md->offset+n) > md->size ? 11 size_t read_bytes = (md->offset+n) > md->size ?
12 md->size-md->offset : n; 12 md->size-md->offset : n;
13 memcpy(buf,md->ptr + md->offset,read_bytes); 13 memcpy(buf,md->ptr + md->offset,read_bytes);
14 md->offset += read_bytes; 14 md->offset += read_bytes;
15 return read_bytes; 15 return read_bytes;
16} 16}
diff --git a/apps/codecs/libgme/inflate/mbreader.h b/apps/codecs/libgme/inflate/mbreader.h
index 6427f18231..d345c0c424 100644
--- a/apps/codecs/libgme/inflate/mbreader.h
+++ b/apps/codecs/libgme/inflate/mbreader.h
@@ -1,15 +1,15 @@
1 1
2#ifndef MBREADER_H 2#ifndef MBREADER_H
3#define MBREADER_H 3#define MBREADER_H
4 4
5#include "codeclib.h" 5#include "codeclib.h"
6 6
7struct mbreader_t { 7struct mbreader_t {
8 const char *ptr; 8 const char *ptr;
9 size_t size; 9 size_t size;
10 size_t offset; 10 size_t offset;
11}; 11};
12 12
13int mbread(struct mbreader_t *md, void *buf, size_t n); 13int mbread(struct mbreader_t *md, void *buf, size_t n);
14 14
15#endif 15#endif
diff --git a/apps/codecs/libgme/kss_cpu.c b/apps/codecs/libgme/kss_cpu.c
index 891a7df255..20601e608f 100644
--- a/apps/codecs/libgme/kss_cpu.c
+++ b/apps/codecs/libgme/kss_cpu.c
@@ -1,35 +1,35 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3#include "kss_emu.h" 3#include "kss_emu.h"
4 4
5#include "blargg_endian.h" 5#include "blargg_endian.h"
6//#include "z80_cpu_log.h" 6//#include "z80_cpu_log.h"
7 7
8/* Copyright (C) 2006-2008 Shay Green. This module is free software; you 8/* Copyright (C) 2006-2008 Shay Green. This module is free software; you
9can redistribute it and/or modify it under the terms of the GNU Lesser 9can redistribute it and/or modify it under the terms of the GNU Lesser
10General Public License as published by the Free Software Foundation; either 10General Public License as published by the Free Software Foundation; either
11version 2.1 of the License, or (at your option) any later version. This 11version 2.1 of the License, or (at your option) any later version. This
12module is distributed in the hope that it will be useful, but WITHOUT ANY 12module is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 14FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15details. You should have received a copy of the GNU Lesser General Public 15details. You should have received a copy of the GNU Lesser General Public
16License along with this module; if not, write to the Free Software Foundation, 16License along with this module; if not, write to the Free Software Foundation,
17Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 17Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
18 18
19#include "blargg_source.h" 19#include "blargg_source.h"
20 20
21#define OUT_PORT( addr, data ) cpu_out( this, TIME(), addr, data ) 21#define OUT_PORT( addr, data ) cpu_out( this, TIME(), addr, data )
22#define IN_PORT( addr ) cpu_in( this, TIME(), addr ) 22#define IN_PORT( addr ) cpu_in( this, TIME(), addr )
23#define WRITE_MEM( addr, data ) {FLUSH_TIME(); cpu_write( this, addr, data );} 23#define WRITE_MEM( addr, data ) {FLUSH_TIME(); cpu_write( this, addr, data );}
24#define IDLE_ADDR idle_addr 24#define IDLE_ADDR idle_addr
25 25
26#define CPU_BEGIN \ 26#define CPU_BEGIN \
27bool run_cpu( struct Kss_Emu* this, kss_time_t end_time )\ 27bool run_cpu( struct Kss_Emu* this, kss_time_t end_time )\
28{\ 28{\
29 struct Z80_Cpu *cpu = &this->cpu; \ 29 struct Z80_Cpu *cpu = &this->cpu; \
30 Z80_set_end_time( cpu, end_time ); 30 Z80_set_end_time( cpu, end_time );
31 31
32 #include "z80_cpu_run.h" 32 #include "z80_cpu_run.h"
33 33
34 return warning; 34 return warning;
35} 35}
diff --git a/apps/codecs/libgme/nes_cpu_run.h b/apps/codecs/libgme/nes_cpu_run.h
index 5b964d5070..fd1fea9659 100644
--- a/apps/codecs/libgme/nes_cpu_run.h
+++ b/apps/codecs/libgme/nes_cpu_run.h
@@ -1,1122 +1,1122 @@
1// NES 6502 cpu emulator run function 1// NES 6502 cpu emulator run function
2 2
3#if 0 3#if 0
4/* Define these macros in the source file before #including this file. 4/* Define these macros in the source file before #including this file.
5- Parameters might be expressions, so they are best evaluated only once, 5- Parameters might be expressions, so they are best evaluated only once,
6though they NEVER have side-effects, so multiple evaluation is OK. 6though they NEVER have side-effects, so multiple evaluation is OK.
7- Output parameters might be a multiple-assignment expression like "a=x", 7- Output parameters might be a multiple-assignment expression like "a=x",
8so they must NOT be parenthesized. 8so they must NOT be parenthesized.
9- Except where noted, time() and related functions will NOT work 9- Except where noted, time() and related functions will NOT work
10correctly inside a macro. TIME() is always correct, and FLUSH_TIME() and 10correctly inside a macro. TIME() is always correct, and FLUSH_TIME() and
11CACHE_TIME() allow the time changing functions to work. 11CACHE_TIME() allow the time changing functions to work.
12- Macros "returning" void may use a {} statement block. */ 12- Macros "returning" void may use a {} statement block. */
13 13
14 // 0 <= addr <= 0xFFFF + page_size 14 // 0 <= addr <= 0xFFFF + page_size
15 // time functions can be used 15 // time functions can be used
16 int READ_MEM( addr_t ); 16 int READ_MEM( addr_t );
17 void WRITE_MEM( addr_t, int data ); 17 void WRITE_MEM( addr_t, int data );
18 // 0 <= READ_MEM() <= 0xFF 18 // 0 <= READ_MEM() <= 0xFF
19 19
20 // 0 <= addr <= 0x1FF 20 // 0 <= addr <= 0x1FF
21 int READ_LOW( addr_t ); 21 int READ_LOW( addr_t );
22 void WRITE_LOW( addr_t, int data ); 22 void WRITE_LOW( addr_t, int data );
23 // 0 <= READ_LOW() <= 0xFF 23 // 0 <= READ_LOW() <= 0xFF
24 24
25 // Often-used instructions attempt these before using a normal memory access. 25 // Often-used instructions attempt these before using a normal memory access.
26 // Optional; defaults to READ_MEM() and WRITE_MEM() 26 // Optional; defaults to READ_MEM() and WRITE_MEM()
27 bool CAN_READ_FAST( addr_t ); // if true, uses result of READ_FAST 27 bool CAN_READ_FAST( addr_t ); // if true, uses result of READ_FAST
28 void READ_FAST( addr_t, int& out ); // ALWAYS called BEFORE CAN_READ_FAST 28 void READ_FAST( addr_t, int& out ); // ALWAYS called BEFORE CAN_READ_FAST
29 bool CAN_WRITE_FAST( addr_t ); // if true, uses WRITE_FAST instead of WRITE_MEM 29 bool CAN_WRITE_FAST( addr_t ); // if true, uses WRITE_FAST instead of WRITE_MEM
30 void WRITE_FAST( addr_t, int data ); 30 void WRITE_FAST( addr_t, int data );
31 31
32 // Used by instructions most often used to access the NES PPU (LDA abs and BIT abs). 32 // Used by instructions most often used to access the NES PPU (LDA abs and BIT abs).
33 // Optional; defaults to READ_MEM. 33 // Optional; defaults to READ_MEM.
34 void READ_PPU( addr_t, int& out ); 34 void READ_PPU( addr_t, int& out );
35 // 0 <= out <= 0xFF 35 // 0 <= out <= 0xFF
36 36
37// The following can be used within macros: 37// The following can be used within macros:
38 38
39 // Current time 39 // Current time
40 time_t TIME(); 40 time_t TIME();
41 41
42 // Allows use of time functions 42 // Allows use of time functions
43 void FLUSH_TIME(); 43 void FLUSH_TIME();
44 44
45 // Must be used before end of macro if FLUSH_TIME() was used earlier 45 // Must be used before end of macro if FLUSH_TIME() was used earlier
46 void CACHE_TIME(); 46 void CACHE_TIME();
47 47
48// Configuration (optional; commented behavior if defined) 48// Configuration (optional; commented behavior if defined)
49 49
50 // Emulates dummy reads for indexed instructions 50 // Emulates dummy reads for indexed instructions
51 #define NES_CPU_DUMMY_READS 1 51 #define NES_CPU_DUMMY_READS 1
52 52
53 // Optimizes as if map_code( 0, 0x10000 + cpu_padding, FLAT_MEM ) is always in effect 53 // Optimizes as if map_code( 0, 0x10000 + cpu_padding, FLAT_MEM ) is always in effect
54 #define FLAT_MEM my_mem_array 54 #define FLAT_MEM my_mem_array
55 55
56 // Expanded just before beginning of code, to help debugger 56 // Expanded just before beginning of code, to help debugger
57 #define CPU_BEGIN void my_run_cpu() { 57 #define CPU_BEGIN void my_run_cpu() {
58 58
59#endif 59#endif
60 60
61/* Copyright (C) 2003-2008 Shay Green. This module is free software; you 61/* Copyright (C) 2003-2008 Shay Green. This module is free software; you
62can redistribute it and/or modify it under the terms of the GNU Lesser 62can redistribute it and/or modify it under the terms of the GNU Lesser
63General Public License as published by the Free Software Foundation; either 63General Public License as published by the Free Software Foundation; either
64version 2.1 of the License, or (at your option) any later version. This 64version 2.1 of the License, or (at your option) any later version. This
65module is distributed in the hope that it will be useful, but WITHOUT ANY 65module is distributed in the hope that it will be useful, but WITHOUT ANY
66WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 66WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
67FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 67FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
68details. You should have received a copy of the GNU Lesser General Public 68details. You should have received a copy of the GNU Lesser General Public
69License along with this module; if not, write to the Free Software Foundation, 69License along with this module; if not, write to the Free Software Foundation,
70Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 70Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
71 71
72// Allows MWCW debugger to step through code properly 72// Allows MWCW debugger to step through code properly
73#ifdef CPU_BEGIN 73#ifdef CPU_BEGIN
74 CPU_BEGIN 74 CPU_BEGIN
75#endif 75#endif
76 76
77// Time 77// Time
78#define TIME() (s_time + s.base) 78#define TIME() (s_time + s.base)
79#define FLUSH_TIME() {s.time = s_time - time_offset;} 79#define FLUSH_TIME() {s.time = s_time - time_offset;}
80#define CACHE_TIME() {s_time = s.time + time_offset;} 80#define CACHE_TIME() {s_time = s.time + time_offset;}
81 81
82// Defaults 82// Defaults
83#ifndef CAN_WRITE_FAST 83#ifndef CAN_WRITE_FAST
84 #define CAN_WRITE_FAST( addr ) 0 84 #define CAN_WRITE_FAST( addr ) 0
85 #define WRITE_FAST( addr, data ) 85 #define WRITE_FAST( addr, data )
86#endif 86#endif
87 87
88#ifndef CAN_READ_FAST 88#ifndef CAN_READ_FAST
89 #define CAN_READ_FAST( addr ) 0 89 #define CAN_READ_FAST( addr ) 0
90 #define READ_FAST( addr, out ) 90 #define READ_FAST( addr, out )
91#endif 91#endif
92 92
93#ifndef READ_PPU 93#ifndef READ_PPU
94 #define READ_PPU( addr, out )\ 94 #define READ_PPU( addr, out )\
95 {\ 95 {\
96 FLUSH_TIME();\ 96 FLUSH_TIME();\
97 out = READ_MEM( addr );\ 97 out = READ_MEM( addr );\
98 CACHE_TIME();\ 98 CACHE_TIME();\
99 } 99 }
100#endif 100#endif
101 101
102#define READ_STACK READ_LOW 102#define READ_STACK READ_LOW
103#define WRITE_STACK WRITE_LOW 103#define WRITE_STACK WRITE_LOW
104 104
105// Dummy reads 105// Dummy reads
106#ifdef NES_CPU_DUMMY_READS 106#ifdef NES_CPU_DUMMY_READS
107 // TODO: optimize time handling 107 // TODO: optimize time handling
108 #define DUMMY_READ( addr, idx ) \ 108 #define DUMMY_READ( addr, idx ) \
109 if ( (addr & 0xFF) < idx )\ 109 if ( (addr & 0xFF) < idx )\
110 {\ 110 {\
111 int const time_offset = 1;\ 111 int const time_offset = 1;\
112 FLUSH_TIME();\ 112 FLUSH_TIME();\
113 READ_MEM( (addr - 0x100) );\ 113 READ_MEM( (addr - 0x100) );\
114 CACHE_TIME();\ 114 CACHE_TIME();\
115 } 115 }
116#else 116#else
117 #define DUMMY_READ( addr, idx ) 117 #define DUMMY_READ( addr, idx )
118#endif 118#endif
119 119
120// Code 120// Code
121#ifdef FLAT_MEM 121#ifdef FLAT_MEM
122 #define CODE_PAGE( addr ) (FLAT_MEM) 122 #define CODE_PAGE( addr ) (FLAT_MEM)
123 #define CODE_OFFSET( addr ) (addr) 123 #define CODE_OFFSET( addr ) (addr)
124#else 124#else
125 #define CODE_PAGE( addr ) (s.code_map [NES_CPU_PAGE( addr )]) 125 #define CODE_PAGE( addr ) (s.code_map [NES_CPU_PAGE( addr )])
126 #define CODE_OFFSET( addr ) NES_CPU_OFFSET( addr ) 126 #define CODE_OFFSET( addr ) NES_CPU_OFFSET( addr )
127#endif 127#endif
128#define READ_CODE( addr ) (CODE_PAGE( addr ) [CODE_OFFSET( addr )]) 128#define READ_CODE( addr ) (CODE_PAGE( addr ) [CODE_OFFSET( addr )])
129 129
130// Stack 130// Stack
131#define SET_SP( v ) (sp = ((v) + 1) | 0x100) 131#define SET_SP( v ) (sp = ((v) + 1) | 0x100)
132#define GET_SP() ((sp - 1) & 0xFF) 132#define GET_SP() ((sp - 1) & 0xFF)
133#define SP( o ) ((sp + (o - (o>0)*0x100)) | 0x100) 133#define SP( o ) ((sp + (o - (o>0)*0x100)) | 0x100)
134 134
135// Truncation 135// Truncation
136#define BYTE( n ) ((uint8_t ) (n)) /* (unsigned) n & 0xFF */ 136#define BYTE( n ) ((uint8_t ) (n)) /* (unsigned) n & 0xFF */
137#define SBYTE( n ) ((int8_t ) (n)) /* (BYTE( n ) ^ 0x80) - 0x80 */ 137#define SBYTE( n ) ((int8_t ) (n)) /* (BYTE( n ) ^ 0x80) - 0x80 */
138#define WORD( n ) ((uint16_t) (n)) /* (unsigned) n & 0xFFFF */ 138#define WORD( n ) ((uint16_t) (n)) /* (unsigned) n & 0xFFFF */
139 139
140// Flags with hex value for clarity when used as mask. 140// Flags with hex value for clarity when used as mask.
141// Stored in indicated variable during emulation. 141// Stored in indicated variable during emulation.
142int const n80 = 0x80; // nz 142int const n80 = 0x80; // nz
143int const v40 = 0x40; // flags 143int const v40 = 0x40; // flags
144int const r20 = 0x20; 144int const r20 = 0x20;
145int const b10 = 0x10; 145int const b10 = 0x10;
146int const d08 = 0x08; // flags 146int const d08 = 0x08; // flags
147int const i04 = 0x04; // flags 147int const i04 = 0x04; // flags
148int const z02 = 0x02; // nz 148int const z02 = 0x02; // nz
149int const c01 = 0x01; // c 149int const c01 = 0x01; // c
150 150
151#define IS_NEG (nz & 0x8080) 151#define IS_NEG (nz & 0x8080)
152 152
153#define GET_FLAGS( out ) \ 153#define GET_FLAGS( out ) \
154{\ 154{\
155 out = flags & (v40 | d08 | i04);\ 155 out = flags & (v40 | d08 | i04);\
156 out += ((nz >> 8) | nz) & n80;\ 156 out += ((nz >> 8) | nz) & n80;\
157 out += c >> 8 & c01;\ 157 out += c >> 8 & c01;\
158 if ( !BYTE( nz ) )\ 158 if ( !BYTE( nz ) )\
159 out += z02;\ 159 out += z02;\
160} 160}
161 161
162#define SET_FLAGS( in ) \ 162#define SET_FLAGS( in ) \
163{\ 163{\
164 flags = in & (v40 | d08 | i04);\ 164 flags = in & (v40 | d08 | i04);\
165 c = nz = in << 8;\ 165 c = nz = in << 8;\
166 nz += ~in & z02;\ 166 nz += ~in & z02;\
167} 167}
168 168
169{ 169{
170 int const time_offset = 0; 170 int const time_offset = 0;
171 171
172 // Local state 172 // Local state
173 struct cpu_state_t s; 173 struct cpu_state_t s;
174 #ifdef FLAT_MEM 174 #ifdef FLAT_MEM
175 s.base = cpu->cpu_state_.base; 175 s.base = cpu->cpu_state_.base;
176 #else 176 #else
177 s = cpu->cpu_state_; 177 s = cpu->cpu_state_;
178 #endif 178 #endif
179 cpu->cpu_state = &s; 179 cpu->cpu_state = &s;
180 int s_time = cpu->cpu_state_.time; // helps even on x86 180 int s_time = cpu->cpu_state_.time; // helps even on x86
181 181
182 // Registers 182 // Registers
183 int pc = cpu->r.pc; 183 int pc = cpu->r.pc;
184 int a = cpu->r.a; 184 int a = cpu->r.a;
185 int x = cpu->r.x; 185 int x = cpu->r.x;
186 int y = cpu->r.y; 186 int y = cpu->r.y;
187 int sp; 187 int sp;
188 SET_SP( cpu->r.sp ); 188 SET_SP( cpu->r.sp );
189 189
190 // Flags 190 // Flags
191 int flags; 191 int flags;
192 int c; // carry set if (c & 0x100) != 0 192 int c; // carry set if (c & 0x100) != 0
193 int nz; // Z set if (nz & 0xFF) == 0, N set if (nz & 0x8080) != 0 193 int nz; // Z set if (nz & 0xFF) == 0, N set if (nz & 0x8080) != 0
194 { 194 {
195 int temp = cpu->r.flags; 195 int temp = cpu->r.flags;
196 SET_FLAGS( temp ); 196 SET_FLAGS( temp );
197 } 197 }
198 198
199loop: 199loop:
200 200
201 // Check all values 201 // Check all values
202 check( (unsigned) sp - 0x100 < 0x100 ); 202 check( (unsigned) sp - 0x100 < 0x100 );
203 check( (unsigned) pc < 0x10000 ); 203 check( (unsigned) pc < 0x10000 );
204 check( (unsigned) a < 0x100 ); 204 check( (unsigned) a < 0x100 );
205 check( (unsigned) x < 0x100 ); 205 check( (unsigned) x < 0x100 );
206 check( (unsigned) y < 0x100 ); 206 check( (unsigned) y < 0x100 );
207 207
208 // Read instruction 208 // Read instruction
209 byte const* instr = CODE_PAGE( pc ); 209 byte const* instr = CODE_PAGE( pc );
210 int opcode; 210 int opcode;
211 211
212 if ( CODE_OFFSET(~0) == ~0 ) 212 if ( CODE_OFFSET(~0) == ~0 )
213 { 213 {
214 opcode = instr [pc]; 214 opcode = instr [pc];
215 pc++; 215 pc++;
216 instr += pc; 216 instr += pc;
217 } 217 }
218 else 218 else
219 { 219 {
220 instr += CODE_OFFSET( pc ); 220 instr += CODE_OFFSET( pc );
221 opcode = *instr++; 221 opcode = *instr++;
222 pc++; 222 pc++;
223 } 223 }
224 224
225 // local to function in case it helps optimizer 225 // local to function in case it helps optimizer
226 static byte const clock_table [256] = 226 static byte const clock_table [256] =
227 {// 0 1 2 3 4 5 6 7 8 9 A B C D E F 227 {// 0 1 2 3 4 5 6 7 8 9 A B C D E F
228 0,6,2,8,3,3,5,5,3,2,2,2,4,4,6,6,// 0 228 0,6,2,8,3,3,5,5,3,2,2,2,4,4,6,6,// 0
229 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 1 229 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 1
230 6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,// 2 230 6,6,0,8,3,3,5,5,4,2,2,2,4,4,6,6,// 2
231 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 3 231 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 3
232 6,6,2,8,3,3,5,5,3,2,2,2,3,4,6,6,// 4 232 6,6,2,8,3,3,5,5,3,2,2,2,3,4,6,6,// 4
233 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 5 233 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 5
234 6,6,2,8,3,3,5,5,4,2,2,2,5,4,6,6,// 6 234 6,6,2,8,3,3,5,5,4,2,2,2,5,4,6,6,// 6
235 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 7 235 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// 7
236 2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,// 8 236 2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,// 8
237 2,6,2,6,4,4,4,4,2,5,2,5,5,5,5,5,// 9 237 2,6,2,6,4,4,4,4,2,5,2,5,5,5,5,5,// 9
238 2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,// A 238 2,6,2,6,3,3,3,3,2,2,2,2,4,4,4,4,// A
239 2,5,2,5,4,4,4,4,2,4,2,4,4,4,4,4,// B 239 2,5,2,5,4,4,4,4,2,4,2,4,4,4,4,4,// B
240 2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6,// C 240 2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6,// C
241 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// D 241 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7,// D
242 2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6,// E 242 2,6,2,8,3,3,5,5,2,2,2,2,4,4,6,6,// E
243 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7 // F 243 2,5,2,8,4,4,6,6,2,4,2,7,4,4,7,7 // F
244 }; // 0x00 was 7 and 0x22 was 2 244 }; // 0x00 was 7 and 0x22 was 2
245 245
246 // Update time 246 // Update time
247 if ( s_time >= 0 ) 247 if ( s_time >= 0 )
248 goto out_of_time; 248 goto out_of_time;
249 249
250 #ifdef CPU_INSTR_HOOK 250 #ifdef CPU_INSTR_HOOK
251 { CPU_INSTR_HOOK( (pc-1), (&instr [-1]), a, x, y, GET_SP(), TIME() ); } 251 { CPU_INSTR_HOOK( (pc-1), (&instr [-1]), a, x, y, GET_SP(), TIME() ); }
252 #endif 252 #endif
253 253
254 s_time += clock_table [opcode]; 254 s_time += clock_table [opcode];
255 255
256 int data; 256 int data;
257 data = *instr; 257 data = *instr;
258 258
259 switch ( opcode ) 259 switch ( opcode )
260 { 260 {
261 261
262// Macros 262// Macros
263 263
264#define GET_MSB() (instr [1]) 264#define GET_MSB() (instr [1])
265#define ADD_PAGE( out ) (pc++, out = data + 0x100 * GET_MSB()) 265#define ADD_PAGE( out ) (pc++, out = data + 0x100 * GET_MSB())
266#define GET_ADDR() GET_LE16( instr ) 266#define GET_ADDR() GET_LE16( instr )
267 267
268#define PAGE_PENALTY( lsb ) s_time += (lsb) >> 8; 268#define PAGE_PENALTY( lsb ) s_time += (lsb) >> 8;
269 269
270#define INC_DEC( reg, n ) reg = BYTE( nz = reg + n ); goto loop; 270#define INC_DEC( reg, n ) reg = BYTE( nz = reg + n ); goto loop;
271 271
272#define IND_Y( cross, out ) {\ 272#define IND_Y( cross, out ) {\
273 int temp = READ_LOW( data ) + y;\ 273 int temp = READ_LOW( data ) + y;\
274 out = temp + 0x100 * READ_LOW( BYTE( data + 1 ) );\ 274 out = temp + 0x100 * READ_LOW( BYTE( data + 1 ) );\
275 cross( temp );\ 275 cross( temp );\
276 } 276 }
277 277
278#define IND_X( out ) {\ 278#define IND_X( out ) {\
279 int temp = data + x;\ 279 int temp = data + x;\
280 out = 0x100 * READ_LOW( BYTE( temp + 1 ) ) + READ_LOW( BYTE( temp ) );\ 280 out = 0x100 * READ_LOW( BYTE( temp + 1 ) ) + READ_LOW( BYTE( temp ) );\
281 } 281 }
282 282
283#define ARITH_ADDR_MODES( op )\ 283#define ARITH_ADDR_MODES( op )\
284case op - 0x04: /* (ind,x) */\ 284case op - 0x04: /* (ind,x) */\
285 IND_X( data )\ 285 IND_X( data )\
286 goto ptr##op;\ 286 goto ptr##op;\
287case op + 0x0C: /* (ind),y */\ 287case op + 0x0C: /* (ind),y */\
288 IND_Y( PAGE_PENALTY, data )\ 288 IND_Y( PAGE_PENALTY, data )\
289 goto ptr##op;\ 289 goto ptr##op;\
290case op + 0x10: /* zp,X */\ 290case op + 0x10: /* zp,X */\
291 data = BYTE( data + x );\ 291 data = BYTE( data + x );\
292case op + 0x00: /* zp */\ 292case op + 0x00: /* zp */\
293 data = READ_LOW( data );\ 293 data = READ_LOW( data );\
294 goto imm##op;\ 294 goto imm##op;\
295case op + 0x14: /* abs,Y */\ 295case op + 0x14: /* abs,Y */\
296 data += y;\ 296 data += y;\
297 goto ind##op;\ 297 goto ind##op;\
298case op + 0x18: /* abs,X */\ 298case op + 0x18: /* abs,X */\
299 data += x;\ 299 data += x;\
300ind##op:\ 300ind##op:\
301 PAGE_PENALTY( data );\ 301 PAGE_PENALTY( data );\
302case op + 0x08: /* abs */\ 302case op + 0x08: /* abs */\
303 ADD_PAGE( data );\ 303 ADD_PAGE( data );\
304ptr##op:\ 304ptr##op:\
305 FLUSH_TIME();\ 305 FLUSH_TIME();\
306 data = READ_MEM( data );\ 306 data = READ_MEM( data );\
307 CACHE_TIME();\ 307 CACHE_TIME();\
308case op + 0x04: /* imm */\ 308case op + 0x04: /* imm */\
309imm##op: 309imm##op:
310 310
311// TODO: more efficient way to handle negative branch that wraps PC around 311// TODO: more efficient way to handle negative branch that wraps PC around
312#define BRANCH( cond )\ 312#define BRANCH( cond )\
313{\ 313{\
314 ++pc;\ 314 ++pc;\
315 if ( !(cond) ) goto loop;\ 315 if ( !(cond) ) goto loop;\
316 s_time++;\ 316 s_time++;\
317 int offset = SBYTE( data );\ 317 int offset = SBYTE( data );\
318 s_time += (BYTE(pc) + offset) >> 8 & 1;\ 318 s_time += (BYTE(pc) + offset) >> 8 & 1;\
319 pc = WORD( pc + offset );\ 319 pc = WORD( pc + offset );\
320 goto loop;\ 320 goto loop;\
321} 321}
322 322
323// Often-Used 323// Often-Used
324 324
325 case 0xB5: // LDA zp,x 325 case 0xB5: // LDA zp,x
326 a = nz = READ_LOW( BYTE( data + x ) ); 326 a = nz = READ_LOW( BYTE( data + x ) );
327 pc++; 327 pc++;
328 goto loop; 328 goto loop;
329 329
330 case 0xA5: // LDA zp 330 case 0xA5: // LDA zp
331 a = nz = READ_LOW( data ); 331 a = nz = READ_LOW( data );
332 pc++; 332 pc++;
333 goto loop; 333 goto loop;
334 334
335 case 0xD0: // BNE 335 case 0xD0: // BNE
336 BRANCH( BYTE( nz ) ); 336 BRANCH( BYTE( nz ) );
337 337
338 case 0x20: { // JSR 338 case 0x20: { // JSR
339 int temp = pc + 1; 339 int temp = pc + 1;
340 pc = GET_ADDR(); 340 pc = GET_ADDR();
341 WRITE_STACK( SP( -1 ), temp >> 8 ); 341 WRITE_STACK( SP( -1 ), temp >> 8 );
342 sp = SP( -2 ); 342 sp = SP( -2 );
343 WRITE_STACK( sp, temp ); 343 WRITE_STACK( sp, temp );
344 goto loop; 344 goto loop;
345 } 345 }
346 346
347 case 0x4C: // JMP abs 347 case 0x4C: // JMP abs
348 pc = GET_ADDR(); 348 pc = GET_ADDR();
349 goto loop; 349 goto loop;
350 350
351 case 0xE8: // INX 351 case 0xE8: // INX
352 INC_DEC( x, 1 ) 352 INC_DEC( x, 1 )
353 353
354 case 0x10: // BPL 354 case 0x10: // BPL
355 BRANCH( !IS_NEG ) 355 BRANCH( !IS_NEG )
356 356
357 ARITH_ADDR_MODES( 0xC5 ) // CMP 357 ARITH_ADDR_MODES( 0xC5 ) // CMP
358 nz = a - data; 358 nz = a - data;
359 pc++; 359 pc++;
360 c = ~nz; 360 c = ~nz;
361 nz &= 0xFF; 361 nz &= 0xFF;
362 goto loop; 362 goto loop;
363 363
364 case 0x30: // BMI 364 case 0x30: // BMI
365 BRANCH( IS_NEG ) 365 BRANCH( IS_NEG )
366 366
367 case 0xF0: // BEQ 367 case 0xF0: // BEQ
368 BRANCH( !BYTE( nz ) ); 368 BRANCH( !BYTE( nz ) );
369 369
370 case 0x95: // STA zp,x 370 case 0x95: // STA zp,x
371 data = BYTE( data + x ); 371 data = BYTE( data + x );
372 case 0x85: // STA zp 372 case 0x85: // STA zp
373 pc++; 373 pc++;
374 WRITE_LOW( data, a ); 374 WRITE_LOW( data, a );
375 goto loop; 375 goto loop;
376 376
377 case 0xC8: // INY 377 case 0xC8: // INY
378 INC_DEC( y, 1 ) 378 INC_DEC( y, 1 )
379 379
380 case 0xA8: // TAY 380 case 0xA8: // TAY
381 y = a; 381 y = a;
382 nz = a; 382 nz = a;
383 goto loop; 383 goto loop;
384 384
385 case 0x98: // TYA 385 case 0x98: // TYA
386 a = y; 386 a = y;
387 nz = y; 387 nz = y;
388 goto loop; 388 goto loop;
389 389
390 case 0xAD:{// LDA abs 390 case 0xAD:{// LDA abs
391 int addr = GET_ADDR(); 391 int addr = GET_ADDR();
392 pc += 2; 392 pc += 2;
393 READ_PPU( addr, a = nz ); 393 READ_PPU( addr, a = nz );
394 goto loop; 394 goto loop;
395 } 395 }
396 396
397 case 0x60: // RTS 397 case 0x60: // RTS
398 pc = 1 + READ_STACK( sp ); 398 pc = 1 + READ_STACK( sp );
399 pc += 0x100 * READ_STACK( SP( 1 ) ); 399 pc += 0x100 * READ_STACK( SP( 1 ) );
400 sp = SP( 2 ); 400 sp = SP( 2 );
401 goto loop; 401 goto loop;
402 402
403 { 403 {
404 int addr; 404 int addr;
405 405
406 case 0x8D: // STA abs 406 case 0x8D: // STA abs
407 addr = GET_ADDR(); 407 addr = GET_ADDR();
408 pc += 2; 408 pc += 2;
409 if ( CAN_WRITE_FAST( addr ) ) 409 if ( CAN_WRITE_FAST( addr ) )
410 { 410 {
411 WRITE_FAST( addr, a ); 411 WRITE_FAST( addr, a );
412 goto loop; 412 goto loop;
413 } 413 }
414 sta_ptr: 414 sta_ptr:
415 FLUSH_TIME(); 415 FLUSH_TIME();
416 WRITE_MEM( addr, a ); 416 WRITE_MEM( addr, a );
417 CACHE_TIME(); 417 CACHE_TIME();
418 goto loop; 418 goto loop;
419 419
420 case 0x99: // STA abs,Y 420 case 0x99: // STA abs,Y
421 addr = y + GET_ADDR(); 421 addr = y + GET_ADDR();
422 pc += 2; 422 pc += 2;
423 if ( CAN_WRITE_FAST( addr ) ) 423 if ( CAN_WRITE_FAST( addr ) )
424 { 424 {
425 WRITE_FAST( addr, a ); 425 WRITE_FAST( addr, a );
426 goto loop; 426 goto loop;
427 } 427 }
428 goto sta_abs_x; 428 goto sta_abs_x;
429 429
430 case 0x9D: // STA abs,X (slightly more common than STA abs) 430 case 0x9D: // STA abs,X (slightly more common than STA abs)
431 addr = x + GET_ADDR(); 431 addr = x + GET_ADDR();
432 pc += 2; 432 pc += 2;
433 if ( CAN_WRITE_FAST( addr ) ) 433 if ( CAN_WRITE_FAST( addr ) )
434 { 434 {
435 WRITE_FAST( addr, a ); 435 WRITE_FAST( addr, a );
436 goto loop; 436 goto loop;
437 } 437 }
438 DUMMY_READ( addr, x ); 438 DUMMY_READ( addr, x );
439 sta_abs_x: 439 sta_abs_x:
440 FLUSH_TIME(); 440 FLUSH_TIME();
441 WRITE_MEM( addr, a ); 441 WRITE_MEM( addr, a );
442 CACHE_TIME(); 442 CACHE_TIME();
443 goto loop; 443 goto loop;
444 444
445 case 0x91: // STA (ind),Y 445 case 0x91: // STA (ind),Y
446 #define NO_PAGE_PENALTY( lsb ) 446 #define NO_PAGE_PENALTY( lsb )
447 IND_Y( NO_PAGE_PENALTY, addr ) 447 IND_Y( NO_PAGE_PENALTY, addr )
448 pc++; 448 pc++;
449 DUMMY_READ( addr, y ); 449 DUMMY_READ( addr, y );
450 goto sta_ptr; 450 goto sta_ptr;
451 451
452 case 0x81: // STA (ind,X) 452 case 0x81: // STA (ind,X)
453 IND_X( addr ) 453 IND_X( addr )
454 pc++; 454 pc++;
455 goto sta_ptr; 455 goto sta_ptr;
456 456
457 } 457 }
458 458
459 case 0xA9: // LDA #imm 459 case 0xA9: // LDA #imm
460 pc++; 460 pc++;
461 a = data; 461 a = data;
462 nz = data; 462 nz = data;
463 goto loop; 463 goto loop;
464 464
465 // common read instructions 465 // common read instructions
466 { 466 {
467 int addr; 467 int addr;
468 468
469 case 0xA1: // LDA (ind,X) 469 case 0xA1: // LDA (ind,X)
470 IND_X( addr ) 470 IND_X( addr )
471 pc++; 471 pc++;
472 goto a_nz_read_addr; 472 goto a_nz_read_addr;
473 473
474 case 0xB1:// LDA (ind),Y 474 case 0xB1:// LDA (ind),Y
475 addr = READ_LOW( data ) + y; 475 addr = READ_LOW( data ) + y;
476 PAGE_PENALTY( addr ); 476 PAGE_PENALTY( addr );
477 addr += 0x100 * READ_LOW( BYTE( data + 1 ) ); 477 addr += 0x100 * READ_LOW( BYTE( data + 1 ) );
478 pc++; 478 pc++;
479 READ_FAST( addr, a = nz ); 479 READ_FAST( addr, a = nz );
480 if ( CAN_READ_FAST( addr ) ) 480 if ( CAN_READ_FAST( addr ) )
481 goto loop; 481 goto loop;
482 DUMMY_READ( addr, y ); 482 DUMMY_READ( addr, y );
483 goto a_nz_read_addr; 483 goto a_nz_read_addr;
484 484
485 case 0xB9: // LDA abs,Y 485 case 0xB9: // LDA abs,Y
486 PAGE_PENALTY( data + y ); 486 PAGE_PENALTY( data + y );
487 addr = GET_ADDR() + y; 487 addr = GET_ADDR() + y;
488 pc += 2; 488 pc += 2;
489 READ_FAST( addr, a = nz ); 489 READ_FAST( addr, a = nz );
490 if ( CAN_READ_FAST( addr ) ) 490 if ( CAN_READ_FAST( addr ) )
491 goto loop; 491 goto loop;
492 goto a_nz_read_addr; 492 goto a_nz_read_addr;
493 493
494 case 0xBD: // LDA abs,X 494 case 0xBD: // LDA abs,X
495 PAGE_PENALTY( data + x ); 495 PAGE_PENALTY( data + x );
496 addr = GET_ADDR() + x; 496 addr = GET_ADDR() + x;
497 pc += 2; 497 pc += 2;
498 READ_FAST( addr, a = nz ); 498 READ_FAST( addr, a = nz );
499 if ( CAN_READ_FAST( addr ) ) 499 if ( CAN_READ_FAST( addr ) )
500 goto loop; 500 goto loop;
501 DUMMY_READ( addr, x ); 501 DUMMY_READ( addr, x );
502 a_nz_read_addr: 502 a_nz_read_addr:
503 FLUSH_TIME(); 503 FLUSH_TIME();
504 a = nz = READ_MEM( addr ); 504 a = nz = READ_MEM( addr );
505 CACHE_TIME(); 505 CACHE_TIME();
506 goto loop; 506 goto loop;
507 507
508 } 508 }
509 509
510// Branch 510// Branch
511 511
512 case 0x50: // BVC 512 case 0x50: // BVC
513 BRANCH( !(flags & v40) ) 513 BRANCH( !(flags & v40) )
514 514
515 case 0x70: // BVS 515 case 0x70: // BVS
516 BRANCH( flags & v40 ) 516 BRANCH( flags & v40 )
517 517
518 case 0xB0: // BCS 518 case 0xB0: // BCS
519 BRANCH( c & 0x100 ) 519 BRANCH( c & 0x100 )
520 520
521 case 0x90: // BCC 521 case 0x90: // BCC
522 BRANCH( !(c & 0x100) ) 522 BRANCH( !(c & 0x100) )
523 523
524// Load/store 524// Load/store
525 525
526 case 0x94: // STY zp,x 526 case 0x94: // STY zp,x
527 data = BYTE( data + x ); 527 data = BYTE( data + x );
528 case 0x84: // STY zp 528 case 0x84: // STY zp
529 pc++; 529 pc++;
530 WRITE_LOW( data, y ); 530 WRITE_LOW( data, y );
531 goto loop; 531 goto loop;
532 532
533 case 0x96: // STX zp,y 533 case 0x96: // STX zp,y
534 data = BYTE( data + y ); 534 data = BYTE( data + y );
535 case 0x86: // STX zp 535 case 0x86: // STX zp
536 pc++; 536 pc++;
537 WRITE_LOW( data, x ); 537 WRITE_LOW( data, x );
538 goto loop; 538 goto loop;
539 539
540 case 0xB6: // LDX zp,y 540 case 0xB6: // LDX zp,y
541 data = BYTE( data + y ); 541 data = BYTE( data + y );
542 case 0xA6: // LDX zp 542 case 0xA6: // LDX zp
543 data = READ_LOW( data ); 543 data = READ_LOW( data );
544 case 0xA2: // LDX #imm 544 case 0xA2: // LDX #imm
545 pc++; 545 pc++;
546 x = data; 546 x = data;
547 nz = data; 547 nz = data;
548 goto loop; 548 goto loop;
549 549
550 case 0xB4: // LDY zp,x 550 case 0xB4: // LDY zp,x
551 data = BYTE( data + x ); 551 data = BYTE( data + x );
552 case 0xA4: // LDY zp 552 case 0xA4: // LDY zp
553 data = READ_LOW( data ); 553 data = READ_LOW( data );
554 case 0xA0: // LDY #imm 554 case 0xA0: // LDY #imm
555 pc++; 555 pc++;
556 y = data; 556 y = data;
557 nz = data; 557 nz = data;
558 goto loop; 558 goto loop;
559 559
560 case 0xBC: // LDY abs,X 560 case 0xBC: // LDY abs,X
561 data += x; 561 data += x;
562 PAGE_PENALTY( data ); 562 PAGE_PENALTY( data );
563 case 0xAC:{// LDY abs 563 case 0xAC:{// LDY abs
564 int addr = data + 0x100 * GET_MSB(); 564 int addr = data + 0x100 * GET_MSB();
565 pc += 2; 565 pc += 2;
566 FLUSH_TIME(); 566 FLUSH_TIME();
567 y = nz = READ_MEM( addr ); 567 y = nz = READ_MEM( addr );
568 CACHE_TIME(); 568 CACHE_TIME();
569 goto loop; 569 goto loop;
570 } 570 }
571 571
572 case 0xBE: // LDX abs,y 572 case 0xBE: // LDX abs,y
573 data += y; 573 data += y;
574 PAGE_PENALTY( data ); 574 PAGE_PENALTY( data );
575 case 0xAE:{// LDX abs 575 case 0xAE:{// LDX abs
576 int addr = data + 0x100 * GET_MSB(); 576 int addr = data + 0x100 * GET_MSB();
577 pc += 2; 577 pc += 2;
578 FLUSH_TIME(); 578 FLUSH_TIME();
579 x = nz = READ_MEM( addr ); 579 x = nz = READ_MEM( addr );
580 CACHE_TIME(); 580 CACHE_TIME();
581 goto loop; 581 goto loop;
582 } 582 }
583 583
584 { 584 {
585 int temp; 585 int temp;
586 case 0x8C: // STY abs 586 case 0x8C: // STY abs
587 temp = y; 587 temp = y;
588 goto store_abs; 588 goto store_abs;
589 589
590 case 0x8E: // STX abs 590 case 0x8E: // STX abs
591 temp = x; 591 temp = x;
592 store_abs: 592 store_abs:
593 { 593 {
594 int addr = GET_ADDR(); 594 int addr = GET_ADDR();
595 pc += 2; 595 pc += 2;
596 if ( CAN_WRITE_FAST( addr ) ) 596 if ( CAN_WRITE_FAST( addr ) )
597 { 597 {
598 WRITE_FAST( addr, temp ); 598 WRITE_FAST( addr, temp );
599 goto loop; 599 goto loop;
600 } 600 }
601 FLUSH_TIME(); 601 FLUSH_TIME();
602 WRITE_MEM( addr, temp ); 602 WRITE_MEM( addr, temp );
603 CACHE_TIME(); 603 CACHE_TIME();
604 goto loop; 604 goto loop;
605 } 605 }
606 } 606 }
607 607
608// Compare 608// Compare
609 609
610 case 0xEC: {// CPX abs 610 case 0xEC: {// CPX abs
611 int addr = GET_ADDR(); 611 int addr = GET_ADDR();
612 pc++; 612 pc++;
613 FLUSH_TIME(); 613 FLUSH_TIME();
614 data = READ_MEM( addr ); 614 data = READ_MEM( addr );
615 CACHE_TIME(); 615 CACHE_TIME();
616 goto cpx_data; 616 goto cpx_data;
617 } 617 }
618 618
619 case 0xE4: // CPX zp 619 case 0xE4: // CPX zp
620 data = READ_LOW( data ); 620 data = READ_LOW( data );
621 case 0xE0: // CPX #imm 621 case 0xE0: // CPX #imm
622 cpx_data: 622 cpx_data:
623 nz = x - data; 623 nz = x - data;
624 pc++; 624 pc++;
625 c = ~nz; 625 c = ~nz;
626 nz &= 0xFF; 626 nz &= 0xFF;
627 goto loop; 627 goto loop;
628 628
629 case 0xCC:{// CPY abs 629 case 0xCC:{// CPY abs
630 int addr = GET_ADDR(); 630 int addr = GET_ADDR();
631 pc++; 631 pc++;
632 FLUSH_TIME(); 632 FLUSH_TIME();
633 data = READ_MEM( addr ); 633 data = READ_MEM( addr );
634 CACHE_TIME(); 634 CACHE_TIME();
635 goto cpy_data; 635 goto cpy_data;
636 } 636 }
637 637
638 case 0xC4: // CPY zp 638 case 0xC4: // CPY zp
639 data = READ_LOW( data ); 639 data = READ_LOW( data );
640 case 0xC0: // CPY #imm 640 case 0xC0: // CPY #imm
641 cpy_data: 641 cpy_data:
642 nz = y - data; 642 nz = y - data;
643 pc++; 643 pc++;
644 c = ~nz; 644 c = ~nz;
645 nz &= 0xFF; 645 nz &= 0xFF;
646 goto loop; 646 goto loop;
647 647
648// Logical 648// Logical
649 649
650 ARITH_ADDR_MODES( 0x25 ) // AND 650 ARITH_ADDR_MODES( 0x25 ) // AND
651 nz = (a &= data); 651 nz = (a &= data);
652 pc++; 652 pc++;
653 goto loop; 653 goto loop;
654 654
655 ARITH_ADDR_MODES( 0x45 ) // EOR 655 ARITH_ADDR_MODES( 0x45 ) // EOR
656 nz = (a ^= data); 656 nz = (a ^= data);
657 pc++; 657 pc++;
658 goto loop; 658 goto loop;
659 659
660 ARITH_ADDR_MODES( 0x05 ) // ORA 660 ARITH_ADDR_MODES( 0x05 ) // ORA
661 nz = (a |= data); 661 nz = (a |= data);
662 pc++; 662 pc++;
663 goto loop; 663 goto loop;
664 664
665 case 0x2C:{// BIT abs 665 case 0x2C:{// BIT abs
666 int addr = GET_ADDR(); 666 int addr = GET_ADDR();
667 pc += 2; 667 pc += 2;
668 READ_PPU( addr, nz ); 668 READ_PPU( addr, nz );
669 flags = (flags & ~v40) + (nz & v40); 669 flags = (flags & ~v40) + (nz & v40);
670 if ( a & nz ) 670 if ( a & nz )
671 goto loop; 671 goto loop;
672 nz <<= 8; // result must be zero, even if N bit is set 672 nz <<= 8; // result must be zero, even if N bit is set
673 goto loop; 673 goto loop;
674 } 674 }
675 675
676 case 0x24: // BIT zp 676 case 0x24: // BIT zp
677 nz = READ_LOW( data ); 677 nz = READ_LOW( data );
678 pc++; 678 pc++;
679 flags = (flags & ~v40) + (nz & v40); 679 flags = (flags & ~v40) + (nz & v40);
680 if ( a & nz ) 680 if ( a & nz )
681 goto loop; // Z should be clear, and nz must be non-zero if nz & a is 681 goto loop; // Z should be clear, and nz must be non-zero if nz & a is
682 nz <<= 8; // set Z flag without affecting N flag 682 nz <<= 8; // set Z flag without affecting N flag
683 goto loop; 683 goto loop;
684 684
685// Add/subtract 685// Add/subtract
686 686
687 ARITH_ADDR_MODES( 0xE5 ) // SBC 687 ARITH_ADDR_MODES( 0xE5 ) // SBC
688 case 0xEB: // unofficial equivalent 688 case 0xEB: // unofficial equivalent
689 data ^= 0xFF; 689 data ^= 0xFF;
690 goto adc_imm; 690 goto adc_imm;
691 691
692 ARITH_ADDR_MODES( 0x65 ) // ADC 692 ARITH_ADDR_MODES( 0x65 ) // ADC
693 adc_imm: { 693 adc_imm: {
694 int carry = c >> 8 & 1; 694 int carry = c >> 8 & 1;
695 int ov = (a ^ 0x80) + carry + SBYTE( data ); 695 int ov = (a ^ 0x80) + carry + SBYTE( data );
696 flags = (flags & ~v40) + (ov >> 2 & v40); 696 flags = (flags & ~v40) + (ov >> 2 & v40);
697 c = nz = a + data + carry; 697 c = nz = a + data + carry;
698 pc++; 698 pc++;
699 a = BYTE( nz ); 699 a = BYTE( nz );
700 goto loop; 700 goto loop;
701 } 701 }
702 702
703// Shift/rotate 703// Shift/rotate
704 704
705 case 0x4A: // LSR A 705 case 0x4A: // LSR A
706 c = 0; 706 c = 0;
707 case 0x6A: // ROR A 707 case 0x6A: // ROR A
708 nz = c >> 1 & 0x80; 708 nz = c >> 1 & 0x80;
709 c = a << 8; 709 c = a << 8;
710 nz += a >> 1; 710 nz += a >> 1;
711 a = nz; 711 a = nz;
712 goto loop; 712 goto loop;
713 713
714 case 0x0A: // ASL A 714 case 0x0A: // ASL A
715 nz = a << 1; 715 nz = a << 1;
716 c = nz; 716 c = nz;
717 a = BYTE( nz ); 717 a = BYTE( nz );
718 goto loop; 718 goto loop;
719 719
720 case 0x2A: { // ROL A 720 case 0x2A: { // ROL A
721 nz = a << 1; 721 nz = a << 1;
722 int temp = c >> 8 & 1; 722 int temp = c >> 8 & 1;
723 c = nz; 723 c = nz;
724 nz += temp; 724 nz += temp;
725 a = BYTE( nz ); 725 a = BYTE( nz );
726 goto loop; 726 goto loop;
727 } 727 }
728 728
729 case 0x5E: // LSR abs,X 729 case 0x5E: // LSR abs,X
730 data += x; 730 data += x;
731 case 0x4E: // LSR abs 731 case 0x4E: // LSR abs
732 c = 0; 732 c = 0;
733 case 0x6E: // ROR abs 733 case 0x6E: // ROR abs
734 ror_abs: { 734 ror_abs: {
735 ADD_PAGE( data ); 735 ADD_PAGE( data );
736 FLUSH_TIME(); 736 FLUSH_TIME();
737 int temp = READ_MEM( data ); 737 int temp = READ_MEM( data );
738 nz = (c >> 1 & 0x80) + (temp >> 1); 738 nz = (c >> 1 & 0x80) + (temp >> 1);
739 c = temp << 8; 739 c = temp << 8;
740 goto rotate_common; 740 goto rotate_common;
741 } 741 }
742 742
743 case 0x3E: // ROL abs,X 743 case 0x3E: // ROL abs,X
744 data += x; 744 data += x;
745 goto rol_abs; 745 goto rol_abs;
746 746
747 case 0x1E: // ASL abs,X 747 case 0x1E: // ASL abs,X
748 data += x; 748 data += x;
749 case 0x0E: // ASL abs 749 case 0x0E: // ASL abs
750 c = 0; 750 c = 0;
751 case 0x2E: // ROL abs 751 case 0x2E: // ROL abs
752 rol_abs: 752 rol_abs:
753 ADD_PAGE( data ); 753 ADD_PAGE( data );
754 nz = c >> 8 & 1; 754 nz = c >> 8 & 1;
755 FLUSH_TIME(); 755 FLUSH_TIME();
756 nz += (c = READ_MEM( data ) << 1); 756 nz += (c = READ_MEM( data ) << 1);
757 rotate_common: 757 rotate_common:
758 pc++; 758 pc++;
759 WRITE_MEM( data, BYTE( nz ) ); 759 WRITE_MEM( data, BYTE( nz ) );
760 CACHE_TIME(); 760 CACHE_TIME();
761 goto loop; 761 goto loop;
762 762
763 case 0x7E: // ROR abs,X 763 case 0x7E: // ROR abs,X
764 data += x; 764 data += x;
765 goto ror_abs; 765 goto ror_abs;
766 766
767 case 0x76: // ROR zp,x 767 case 0x76: // ROR zp,x
768 data = BYTE( data + x ); 768 data = BYTE( data + x );
769 goto ror_zp; 769 goto ror_zp;
770 770
771 case 0x56: // LSR zp,x 771 case 0x56: // LSR zp,x
772 data = BYTE( data + x ); 772 data = BYTE( data + x );
773 case 0x46: // LSR zp 773 case 0x46: // LSR zp
774 c = 0; 774 c = 0;
775 case 0x66: // ROR zp 775 case 0x66: // ROR zp
776 ror_zp: { 776 ror_zp: {
777 int temp = READ_LOW( data ); 777 int temp = READ_LOW( data );
778 nz = (c >> 1 & 0x80) + (temp >> 1); 778 nz = (c >> 1 & 0x80) + (temp >> 1);
779 c = temp << 8; 779 c = temp << 8;
780 goto write_nz_zp; 780 goto write_nz_zp;
781 } 781 }
782 782
783 case 0x36: // ROL zp,x 783 case 0x36: // ROL zp,x
784 data = BYTE( data + x ); 784 data = BYTE( data + x );
785 goto rol_zp; 785 goto rol_zp;
786 786
787 case 0x16: // ASL zp,x 787 case 0x16: // ASL zp,x
788 data = BYTE( data + x ); 788 data = BYTE( data + x );
789 case 0x06: // ASL zp 789 case 0x06: // ASL zp
790 c = 0; 790 c = 0;
791 case 0x26: // ROL zp 791 case 0x26: // ROL zp
792 rol_zp: 792 rol_zp:
793 nz = c >> 8 & 1; 793 nz = c >> 8 & 1;
794 nz += (c = READ_LOW( data ) << 1); 794 nz += (c = READ_LOW( data ) << 1);
795 goto write_nz_zp; 795 goto write_nz_zp;
796 796
797// Increment/decrement 797// Increment/decrement
798 798
799 case 0xCA: // DEX 799 case 0xCA: // DEX
800 INC_DEC( x, -1 ) 800 INC_DEC( x, -1 )
801 801
802 case 0x88: // DEY 802 case 0x88: // DEY
803 INC_DEC( y, -1 ) 803 INC_DEC( y, -1 )
804 804
805 case 0xF6: // INC zp,x 805 case 0xF6: // INC zp,x
806 data = BYTE( data + x ); 806 data = BYTE( data + x );
807 case 0xE6: // INC zp 807 case 0xE6: // INC zp
808 nz = 1; 808 nz = 1;
809 goto add_nz_zp; 809 goto add_nz_zp;
810 810
811 case 0xD6: // DEC zp,x 811 case 0xD6: // DEC zp,x
812 data = BYTE( data + x ); 812 data = BYTE( data + x );
813 case 0xC6: // DEC zp 813 case 0xC6: // DEC zp
814 nz = -1; 814 nz = -1;
815 add_nz_zp: 815 add_nz_zp:
816 nz += READ_LOW( data ); 816 nz += READ_LOW( data );
817 write_nz_zp: 817 write_nz_zp:
818 pc++; 818 pc++;
819 WRITE_LOW( data, nz ); 819 WRITE_LOW( data, nz );
820 goto loop; 820 goto loop;
821 821
822 case 0xFE: // INC abs,x 822 case 0xFE: // INC abs,x
823 data = x + GET_ADDR(); 823 data = x + GET_ADDR();
824 goto inc_ptr; 824 goto inc_ptr;
825 825
826 case 0xEE: // INC abs 826 case 0xEE: // INC abs
827 data = GET_ADDR(); 827 data = GET_ADDR();
828 inc_ptr: 828 inc_ptr:
829 nz = 1; 829 nz = 1;
830 goto inc_common; 830 goto inc_common;
831 831
832 case 0xDE: // DEC abs,x 832 case 0xDE: // DEC abs,x
833 data = x + GET_ADDR(); 833 data = x + GET_ADDR();
834 goto dec_ptr; 834 goto dec_ptr;
835 835
836 case 0xCE: // DEC abs 836 case 0xCE: // DEC abs
837 data = GET_ADDR(); 837 data = GET_ADDR();
838 dec_ptr: 838 dec_ptr:
839 nz = -1; 839 nz = -1;
840 inc_common: 840 inc_common:
841 FLUSH_TIME(); 841 FLUSH_TIME();
842 pc += 2; 842 pc += 2;
843 nz += READ_MEM( data ); 843 nz += READ_MEM( data );
844 WRITE_MEM( data, BYTE( nz ) ); 844 WRITE_MEM( data, BYTE( nz ) );
845 CACHE_TIME(); 845 CACHE_TIME();
846 goto loop; 846 goto loop;
847 847
848// Transfer 848// Transfer
849 849
850 case 0xAA: // TAX 850 case 0xAA: // TAX
851 x = nz = a; 851 x = nz = a;
852 goto loop; 852 goto loop;
853 853
854 case 0x8A: // TXA 854 case 0x8A: // TXA
855 a = nz = x; 855 a = nz = x;
856 goto loop; 856 goto loop;
857 857
858 case 0x9A: // TXS 858 case 0x9A: // TXS
859 SET_SP( x ); // verified (no flag change) 859 SET_SP( x ); // verified (no flag change)
860 goto loop; 860 goto loop;
861 861
862 case 0xBA: // TSX 862 case 0xBA: // TSX
863 x = nz = GET_SP(); 863 x = nz = GET_SP();
864 goto loop; 864 goto loop;
865 865
866// Stack 866// Stack
867 867
868 case 0x48: // PHA 868 case 0x48: // PHA
869 sp = SP( -1 ); 869 sp = SP( -1 );
870 WRITE_STACK( sp, a ); 870 WRITE_STACK( sp, a );
871 goto loop; 871 goto loop;
872 872
873 case 0x68: // PLA 873 case 0x68: // PLA
874 a = nz = READ_STACK( sp ); 874 a = nz = READ_STACK( sp );
875 sp = SP( 1 ); 875 sp = SP( 1 );
876 goto loop; 876 goto loop;
877 877
878 case 0x40:{// RTI 878 case 0x40:{// RTI
879 pc = READ_STACK( SP( 1 ) ); 879 pc = READ_STACK( SP( 1 ) );
880 pc += READ_STACK( SP( 2 ) ) * 0x100; 880 pc += READ_STACK( SP( 2 ) ) * 0x100;
881 int temp = READ_STACK( sp ); 881 int temp = READ_STACK( sp );
882 sp = SP( 3 ); 882 sp = SP( 3 );
883 data = flags; 883 data = flags;
884 SET_FLAGS( temp ); 884 SET_FLAGS( temp );
885 cpu->r.flags = flags; // update externally-visible I flag 885 cpu->r.flags = flags; // update externally-visible I flag
886 int delta = s.base - cpu->irq_time; 886 int delta = s.base - cpu->irq_time;
887 if ( delta <= 0 ) goto loop; // end_time < irq_time 887 if ( delta <= 0 ) goto loop; // end_time < irq_time
888 if ( flags & i04 ) goto loop; 888 if ( flags & i04 ) goto loop;
889 s_time += delta; 889 s_time += delta;
890 s.base = cpu->irq_time; 890 s.base = cpu->irq_time;
891 goto loop; 891 goto loop;
892 } 892 }
893 893
894 case 0x28:{// PLP 894 case 0x28:{// PLP
895 int temp = READ_STACK( sp ); 895 int temp = READ_STACK( sp );
896 sp = SP( 1 ); 896 sp = SP( 1 );
897 int changed = flags ^ temp; 897 int changed = flags ^ temp;
898 SET_FLAGS( temp ); 898 SET_FLAGS( temp );
899 if ( !(changed & i04) ) 899 if ( !(changed & i04) )
900 goto loop; // I flag didn't change 900 goto loop; // I flag didn't change
901 if ( flags & i04 ) 901 if ( flags & i04 )
902 goto handle_sei; 902 goto handle_sei;
903 goto handle_cli; 903 goto handle_cli;
904 } 904 }
905 905
906 case 0x08:{// PHP 906 case 0x08:{// PHP
907 int temp; 907 int temp;
908 GET_FLAGS( temp ); 908 GET_FLAGS( temp );
909 sp = SP( -1 ); 909 sp = SP( -1 );
910 WRITE_STACK( sp, temp | (b10 | r20) ); 910 WRITE_STACK( sp, temp | (b10 | r20) );
911 goto loop; 911 goto loop;
912 } 912 }
913 913
914 case 0x6C:{// JMP (ind) 914 case 0x6C:{// JMP (ind)
915 data = GET_ADDR(); 915 data = GET_ADDR();
916 byte const* page = CODE_PAGE( data ); 916 byte const* page = CODE_PAGE( data );
917 pc = page [CODE_OFFSET( data )]; 917 pc = page [CODE_OFFSET( data )];
918 data = (data & 0xFF00) + ((data + 1) & 0xFF); 918 data = (data & 0xFF00) + ((data + 1) & 0xFF);
919 pc += page [CODE_OFFSET( data )] * 0x100; 919 pc += page [CODE_OFFSET( data )] * 0x100;
920 goto loop; 920 goto loop;
921 } 921 }
922 922
923 case 0x00: // BRK 923 case 0x00: // BRK
924 goto handle_brk; 924 goto handle_brk;
925 925
926// Flags 926// Flags
927 927
928 case 0x38: // SEC 928 case 0x38: // SEC
929 c = 0x100; 929 c = 0x100;
930 goto loop; 930 goto loop;
931 931
932 case 0x18: // CLC 932 case 0x18: // CLC
933 c = 0; 933 c = 0;
934 goto loop; 934 goto loop;
935 935
936 case 0xB8: // CLV 936 case 0xB8: // CLV
937 flags &= ~v40; 937 flags &= ~v40;
938 goto loop; 938 goto loop;
939 939
940 case 0xD8: // CLD 940 case 0xD8: // CLD
941 flags &= ~d08; 941 flags &= ~d08;
942 goto loop; 942 goto loop;
943 943
944 case 0xF8: // SED 944 case 0xF8: // SED
945 flags |= d08; 945 flags |= d08;
946 goto loop; 946 goto loop;
947 947
948 case 0x58: // CLI 948 case 0x58: // CLI
949 if ( !(flags & i04) ) 949 if ( !(flags & i04) )
950 goto loop; 950 goto loop;
951 flags &= ~i04; 951 flags &= ~i04;
952 handle_cli: { 952 handle_cli: {
953 //dprintf( "CLI at %d\n", TIME ); 953 //dprintf( "CLI at %d\n", TIME );
954 cpu->r.flags = flags; // update externally-visible I flag 954 cpu->r.flags = flags; // update externally-visible I flag
955 int delta = s.base - cpu->irq_time; 955 int delta = s.base - cpu->irq_time;
956 if ( delta <= 0 ) 956 if ( delta <= 0 )
957 { 957 {
958 if ( TIME() < cpu->irq_time ) 958 if ( TIME() < cpu->irq_time )
959 goto loop; 959 goto loop;
960 goto delayed_cli; 960 goto delayed_cli;
961 } 961 }
962 s.base = cpu->irq_time; 962 s.base = cpu->irq_time;
963 s_time += delta; 963 s_time += delta;
964 if ( s_time < 0 ) 964 if ( s_time < 0 )
965 goto loop; 965 goto loop;
966 966
967 if ( delta >= s_time + 1 ) 967 if ( delta >= s_time + 1 )
968 { 968 {
969 // delayed irq until after next instruction 969 // delayed irq until after next instruction
970 s.base += s_time + 1; 970 s.base += s_time + 1;
971 s_time = -1; 971 s_time = -1;
972 goto loop; 972 goto loop;
973 } 973 }
974 974
975 // TODO: implement 975 // TODO: implement
976 delayed_cli: 976 delayed_cli:
977 dprintf( "Delayed CLI not emulated\n" ); 977 dprintf( "Delayed CLI not emulated\n" );
978 goto loop; 978 goto loop;
979 } 979 }
980 980
981 case 0x78: // SEI 981 case 0x78: // SEI
982 if ( flags & i04 ) 982 if ( flags & i04 )
983 goto loop; 983 goto loop;
984 flags |= i04; 984 flags |= i04;
985 handle_sei: { 985 handle_sei: {
986 cpu->r.flags = flags; // update externally-visible I flag 986 cpu->r.flags = flags; // update externally-visible I flag
987 int delta = s.base - cpu->end_time; 987 int delta = s.base - cpu->end_time;
988 s.base = cpu->end_time; 988 s.base = cpu->end_time;
989 s_time += delta; 989 s_time += delta;
990 if ( s_time < 0 ) 990 if ( s_time < 0 )
991 goto loop; 991 goto loop;
992 992
993 dprintf( "Delayed SEI not emulated\n" ); 993 dprintf( "Delayed SEI not emulated\n" );
994 goto loop; 994 goto loop;
995 } 995 }
996 996
997// Unofficial 997// Unofficial
998 998
999 // SKW - skip word 999 // SKW - skip word
1000 case 0x1C: case 0x3C: case 0x5C: case 0x7C: case 0xDC: case 0xFC: 1000 case 0x1C: case 0x3C: case 0x5C: case 0x7C: case 0xDC: case 0xFC:
1001 PAGE_PENALTY( data + x ); 1001 PAGE_PENALTY( data + x );
1002 case 0x0C: 1002 case 0x0C:
1003 pc++; 1003 pc++;
1004 // SKB - skip byte 1004 // SKB - skip byte
1005 case 0x74: case 0x04: case 0x14: case 0x34: case 0x44: case 0x54: case 0x64: 1005 case 0x74: case 0x04: case 0x14: case 0x34: case 0x44: case 0x54: case 0x64:
1006 case 0x80: case 0x82: case 0x89: case 0xC2: case 0xD4: case 0xE2: case 0xF4: 1006 case 0x80: case 0x82: case 0x89: case 0xC2: case 0xD4: case 0xE2: case 0xF4:
1007 pc++; 1007 pc++;
1008 goto loop; 1008 goto loop;
1009 1009
1010 // NOP 1010 // NOP
1011 case 0xEA: case 0x1A: case 0x3A: case 0x5A: case 0x7A: case 0xDA: case 0xFA: 1011 case 0xEA: case 0x1A: case 0x3A: case 0x5A: case 0x7A: case 0xDA: case 0xFA:
1012 goto loop; 1012 goto loop;
1013 1013
1014 case halt_opcode: // HLT - halt processor 1014 case halt_opcode: // HLT - halt processor
1015 if ( pc-- > 0x10000 ) 1015 if ( pc-- > 0x10000 )
1016 { 1016 {
1017 // handle wrap-around (assumes caller has put page of HLT at 0x10000) 1017 // handle wrap-around (assumes caller has put page of HLT at 0x10000)
1018 pc = WORD( pc ); 1018 pc = WORD( pc );
1019 goto loop; 1019 goto loop;
1020 } 1020 }
1021 case 0x02: case 0x12: case 0x32: case 0x42: case 0x52: 1021 case 0x02: case 0x12: case 0x32: case 0x42: case 0x52:
1022 case 0x62: case 0x72: case 0x92: case 0xB2: case 0xD2: case 0xF2: 1022 case 0x62: case 0x72: case 0x92: case 0xB2: case 0xD2: case 0xF2:
1023 goto stop; 1023 goto stop;
1024 1024
1025// Unimplemented 1025// Unimplemented
1026 1026
1027 case 0xFF: // force 256-entry jump table for optimization purposes 1027 case 0xFF: // force 256-entry jump table for optimization purposes
1028 c |= 1; // compiler doesn't know that this won't affect anything 1028 c |= 1; // compiler doesn't know that this won't affect anything
1029 default: 1029 default:
1030 check( (unsigned) opcode < 0x100 ); 1030 check( (unsigned) opcode < 0x100 );
1031 1031
1032 #ifdef UNIMPL_INSTR 1032 #ifdef UNIMPL_INSTR
1033 UNIMPL_INSTR(); 1033 UNIMPL_INSTR();
1034 #endif 1034 #endif
1035 1035
1036 // At least skip over proper number of bytes instruction uses 1036 // At least skip over proper number of bytes instruction uses
1037 static unsigned char const illop_lens [8] = { 1037 static unsigned char const illop_lens [8] = {
1038 0x40, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0xA0 1038 0x40, 0x40, 0x40, 0x80, 0x40, 0x40, 0x80, 0xA0
1039 }; 1039 };
1040 int opcode = instr [-1]; 1040 int opcode = instr [-1];
1041 int len = illop_lens [opcode >> 2 & 7] >> (opcode << 1 & 6) & 3; 1041 int len = illop_lens [opcode >> 2 & 7] >> (opcode << 1 & 6) & 3;
1042 if ( opcode == 0x9C ) 1042 if ( opcode == 0x9C )
1043 len = 2; 1043 len = 2;
1044 pc += len; 1044 pc += len;
1045 1045
1046 // Account for extra clock 1046 // Account for extra clock
1047 if ( (opcode >> 4) == 0x0B ) 1047 if ( (opcode >> 4) == 0x0B )
1048 { 1048 {
1049 if ( opcode == 0xB3 ) 1049 if ( opcode == 0xB3 )
1050 data = READ_LOW( data ); 1050 data = READ_LOW( data );
1051 if ( opcode != 0xB7 ) 1051 if ( opcode != 0xB7 )
1052 PAGE_PENALTY( data + y ); 1052 PAGE_PENALTY( data + y );
1053 } 1053 }
1054 goto loop; 1054 goto loop;
1055 } 1055 }
1056 assert( false ); // catch missing 'goto loop' or accidental 'break' 1056 assert( false ); // catch missing 'goto loop' or accidental 'break'
1057 1057
1058 int result_; 1058 int result_;
1059handle_brk: 1059handle_brk:
1060 pc++; 1060 pc++;
1061 result_ = b10 | 4; 1061 result_ = b10 | 4;
1062 1062
1063#ifdef CPU_DONE 1063#ifdef CPU_DONE
1064interrupt: 1064interrupt:
1065#endif 1065#endif
1066 { 1066 {
1067 s_time += 7; 1067 s_time += 7;
1068 1068
1069 // Save PC and read vector 1069 // Save PC and read vector
1070 WRITE_STACK( SP( -1 ), pc >> 8 ); 1070 WRITE_STACK( SP( -1 ), pc >> 8 );
1071 WRITE_STACK( SP( -2 ), pc ); 1071 WRITE_STACK( SP( -2 ), pc );
1072 pc = GET_LE16( &READ_CODE( 0xFFFA ) + (result_ & 4) ); 1072 pc = GET_LE16( &READ_CODE( 0xFFFA ) + (result_ & 4) );
1073 1073
1074 // Save flags 1074 // Save flags
1075 int temp; 1075 int temp;
1076 GET_FLAGS( temp ); 1076 GET_FLAGS( temp );
1077 temp |= r20 + (result_ & b10); // B flag set for BRK 1077 temp |= r20 + (result_ & b10); // B flag set for BRK
1078 sp = SP( -3 ); 1078 sp = SP( -3 );
1079 WRITE_STACK( sp, temp ); 1079 WRITE_STACK( sp, temp );
1080 1080
1081 // Update I flag in externally-visible flags 1081 // Update I flag in externally-visible flags
1082 cpu->r.flags = (flags |= i04); 1082 cpu->r.flags = (flags |= i04);
1083 1083
1084 // Update time 1084 // Update time
1085 int delta = s.base - cpu->end_time; 1085 int delta = s.base - cpu->end_time;
1086 if ( delta >= 0 ) 1086 if ( delta >= 0 )
1087 goto loop; 1087 goto loop;
1088 s_time += delta; 1088 s_time += delta;
1089 s.base = cpu->end_time; 1089 s.base = cpu->end_time;
1090 goto loop; 1090 goto loop;
1091 } 1091 }
1092 1092
1093out_of_time: 1093out_of_time:
1094 pc--; 1094 pc--;
1095 1095
1096 // Optional action that triggers interrupt or changes irq/end time 1096 // Optional action that triggers interrupt or changes irq/end time
1097 #ifdef CPU_DONE 1097 #ifdef CPU_DONE
1098 { 1098 {
1099 CPU_DONE( result_ ); 1099 CPU_DONE( result_ );
1100 if ( result_ >= 0 ) 1100 if ( result_ >= 0 )
1101 goto interrupt; 1101 goto interrupt;
1102 if ( s_time < 0 ) 1102 if ( s_time < 0 )
1103 goto loop; 1103 goto loop;
1104 } 1104 }
1105 #endif 1105 #endif
1106stop: 1106stop:
1107 1107
1108 // Flush cached state 1108 // Flush cached state
1109 cpu->r.pc = pc; 1109 cpu->r.pc = pc;
1110 cpu->r.sp = GET_SP(); 1110 cpu->r.sp = GET_SP();
1111 cpu->r.a = a; 1111 cpu->r.a = a;
1112 cpu->r.x = x; 1112 cpu->r.x = x;
1113 cpu->r.y = y; 1113 cpu->r.y = y;
1114 1114
1115 int temp; 1115 int temp;
1116 GET_FLAGS( temp ); 1116 GET_FLAGS( temp );
1117 cpu->r.flags = temp; 1117 cpu->r.flags = temp;
1118 1118
1119 cpu->cpu_state_.base = s.base; 1119 cpu->cpu_state_.base = s.base;
1120 cpu->cpu_state_.time = s_time; 1120 cpu->cpu_state_.time = s_time;
1121 cpu->cpu_state = &cpu->cpu_state_; 1121 cpu->cpu_state = &cpu->cpu_state_;
1122} 1122}
diff --git a/apps/codecs/libgme/nes_vrc7_apu.c b/apps/codecs/libgme/nes_vrc7_apu.c
index 95bc676c26..8d3c2e88a6 100644
--- a/apps/codecs/libgme/nes_vrc7_apu.c
+++ b/apps/codecs/libgme/nes_vrc7_apu.c
@@ -1,88 +1,88 @@
1 1
2#include "nes_vrc7_apu.h" 2#include "nes_vrc7_apu.h"
3#include "blargg_source.h" 3#include "blargg_source.h"
4 4
5int const period = 36; // NES CPU clocks per FM clock 5int const period = 36; // NES CPU clocks per FM clock
6 6
7void Vrc7_init( struct Nes_Vrc7_Apu* this ) 7void Vrc7_init( struct Nes_Vrc7_Apu* this )
8{ 8{
9 Synth_init( &this->synth ); 9 Synth_init( &this->synth );
10 10
11 OPLL_new ( &this->opll, 3579545, 3579545 / 72 ); 11 OPLL_new ( &this->opll, 3579545, 3579545 / 72 );
12 OPLL_reset_patch( &this->opll, OPLL_VRC7_TONE ); 12 OPLL_reset_patch( &this->opll, OPLL_VRC7_TONE );
13 13
14 this->osc.output = 0; 14 this->osc.output = 0;
15 this->osc.last_amp = 0; 15 this->osc.last_amp = 0;
16 this->mask = 0; 16 this->mask = 0;
17 17
18 Vrc7_volume( this, (int)FP_ONE_VOLUME ); 18 Vrc7_volume( this, (int)FP_ONE_VOLUME );
19 Vrc7_reset( this ); 19 Vrc7_reset( this );
20} 20}
21 21
22void Vrc7_reset( struct Nes_Vrc7_Apu* this ) 22void Vrc7_reset( struct Nes_Vrc7_Apu* this )
23{ 23{
24 this->addr = 0; 24 this->addr = 0;
25 this->next_time = 0; 25 this->next_time = 0;
26 this->osc.last_amp = 0; 26 this->osc.last_amp = 0;
27 27
28 OPLL_reset (&this->opll); 28 OPLL_reset (&this->opll);
29 OPLL_setMask(&this->opll, this->mask); 29 OPLL_setMask(&this->opll, this->mask);
30} 30}
31 31
32void Vrc7_set_rate( struct Nes_Vrc7_Apu* this, int r ) 32void Vrc7_set_rate( struct Nes_Vrc7_Apu* this, int r )
33{ 33{
34 OPLL_set_quality( &this->opll, r < 44100 ? 0 : 1 ); 34 OPLL_set_quality( &this->opll, r < 44100 ? 0 : 1 );
35} 35}
36 36
37void Vrc7_write_reg( struct Nes_Vrc7_Apu* this, int data ) 37void Vrc7_write_reg( struct Nes_Vrc7_Apu* this, int data )
38{ 38{
39 this->addr = data; 39 this->addr = data;
40} 40}
41 41
42void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time ); 42void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time );
43void Vrc7_write_data( struct Nes_Vrc7_Apu* this, blip_time_t time, int data ) 43void Vrc7_write_data( struct Nes_Vrc7_Apu* this, blip_time_t time, int data )
44{ 44{
45 if ( time > this->next_time ) 45 if ( time > this->next_time )
46 Vrc7_run_until( this, time ); 46 Vrc7_run_until( this, time );
47 47
48 OPLL_writeIO( &this->opll, 0, this->addr ); 48 OPLL_writeIO( &this->opll, 0, this->addr );
49 OPLL_writeIO( &this->opll, 1, data ); 49 OPLL_writeIO( &this->opll, 1, data );
50} 50}
51 51
52void Vrc7_end_frame( struct Nes_Vrc7_Apu* this, blip_time_t time ) 52void Vrc7_end_frame( struct Nes_Vrc7_Apu* this, blip_time_t time )
53{ 53{
54 if ( time > this->next_time ) 54 if ( time > this->next_time )
55 Vrc7_run_until( this, time ); 55 Vrc7_run_until( this, time );
56 56
57 this->next_time -= time; 57 this->next_time -= time;
58 assert( this->next_time >= 0 ); 58 assert( this->next_time >= 0 );
59 59
60 if ( this->osc.output ) 60 if ( this->osc.output )
61 Blip_set_modified( this->osc.output ); 61 Blip_set_modified( this->osc.output );
62} 62}
63 63
64void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time ) 64void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time )
65{ 65{
66 require( end_time > this->next_time ); 66 require( end_time > this->next_time );
67 67
68 blip_time_t time = this->next_time; 68 blip_time_t time = this->next_time;
69 OPLL* opll = &this->opll; // cache 69 OPLL* opll = &this->opll; // cache
70 struct Blip_Buffer* const output = this-> osc.output; 70 struct Blip_Buffer* const output = this-> osc.output;
71 if ( output ) 71 if ( output )
72 { 72 {
73 do 73 do
74 { 74 {
75 int amp = OPLL_calc( opll ) << 1; 75 int amp = OPLL_calc( opll ) << 1;
76 int delta = amp - this->osc.last_amp; 76 int delta = amp - this->osc.last_amp;
77 if ( delta ) 77 if ( delta )
78 { 78 {
79 this->osc.last_amp = amp; 79 this->osc.last_amp = amp;
80 Synth_offset_inline( &this->synth, time, delta, output ); 80 Synth_offset_inline( &this->synth, time, delta, output );
81 } 81 }
82 time += period; 82 time += period;
83 } 83 }
84 while ( time < end_time ); 84 while ( time < end_time );
85 } 85 }
86 86
87 this->next_time = time; 87 this->next_time = time;
88} 88}
diff --git a/apps/codecs/libgme/opl_apu.c b/apps/codecs/libgme/opl_apu.c
index 64b2714b81..b573baef11 100644
--- a/apps/codecs/libgme/opl_apu.c
+++ b/apps/codecs/libgme/opl_apu.c
@@ -1,198 +1,198 @@
1#include "opl_apu.h" 1#include "opl_apu.h"
2 2
3#include "blargg_source.h" 3#include "blargg_source.h"
4 4
5/* NOTE: Removed unused chips ~ gama */ 5/* NOTE: Removed unused chips ~ gama */
6 6
7blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type ) 7blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type )
8{ 8{
9 Synth_init( &this->synth ); 9 Synth_init( &this->synth );
10 10
11 this->type_ = type; 11 this->type_ = type;
12 this->clock_ = clock; 12 this->clock_ = clock;
13 this->rate_ = rate; 13 this->rate_ = rate;
14 this->period_ = period; 14 this->period_ = period;
15 Opl_set_output( this, 0 ); 15 Opl_set_output( this, 0 );
16 Opl_volume( this, (int)FP_ONE_VOLUME ); 16 Opl_volume( this, (int)FP_ONE_VOLUME );
17 17
18 switch (type) 18 switch (type)
19 { 19 {
20 case type_opll: 20 case type_opll:
21 case type_msxmusic: 21 case type_msxmusic:
22 case type_smsfmunit: 22 case type_smsfmunit:
23 OPLL_new ( &this->opll, clock, rate ); 23 OPLL_new ( &this->opll, clock, rate );
24 OPLL_reset_patch( &this->opll, OPLL_2413_TONE ); 24 OPLL_reset_patch( &this->opll, OPLL_2413_TONE );
25 break; 25 break;
26 case type_vrc7: 26 case type_vrc7:
27 OPLL_new ( &this->opll, clock, rate ); 27 OPLL_new ( &this->opll, clock, rate );
28 OPLL_reset_patch( &this->opll, OPLL_VRC7_TONE ); 28 OPLL_reset_patch( &this->opll, OPLL_VRC7_TONE );
29 break; 29 break;
30 case type_msxaudio: 30 case type_msxaudio:
31 OPL_init( &this->opl, this->opl_memory, sizeof this->opl_memory ); 31 OPL_init( &this->opl, this->opl_memory, sizeof this->opl_memory );
32 OPL_setSampleRate( &this->opl, rate, clock ); 32 OPL_setSampleRate( &this->opl, rate, clock );
33 OPL_setInternalVolume(&this->opl, 1 << 13); 33 OPL_setInternalVolume(&this->opl, 1 << 13);
34 break; 34 break;
35 } 35 }
36 36
37 Opl_reset( this ); 37 Opl_reset( this );
38 return 0; 38 return 0;
39} 39}
40 40
41void Opl_shutdown( struct Opl_Apu* this ) 41void Opl_shutdown( struct Opl_Apu* this )
42{ 42{
43 switch (this->type_) 43 switch (this->type_)
44 { 44 {
45 case type_opll: 45 case type_opll:
46 case type_msxmusic: 46 case type_msxmusic:
47 case type_smsfmunit: 47 case type_smsfmunit:
48 case type_vrc7: 48 case type_vrc7:
49 OPLL_delete( &this->opll ); 49 OPLL_delete( &this->opll );
50 break; 50 break;
51 case type_msxaudio: break; 51 case type_msxaudio: break;
52 } 52 }
53} 53}
54 54
55void Opl_reset( struct Opl_Apu* this ) 55void Opl_reset( struct Opl_Apu* this )
56{ 56{
57 this->addr = 0; 57 this->addr = 0;
58 this->next_time = 0; 58 this->next_time = 0;
59 this->last_amp = 0; 59 this->last_amp = 0;
60 60
61 switch (this->type_) 61 switch (this->type_)
62 { 62 {
63 case type_opll: 63 case type_opll:
64 case type_msxmusic: 64 case type_msxmusic:
65 case type_smsfmunit: 65 case type_smsfmunit:
66 case type_vrc7: 66 case type_vrc7:
67 OPLL_reset( &this->opll ); 67 OPLL_reset( &this->opll );
68 OPLL_setMask( &this->opll, 0 ); 68 OPLL_setMask( &this->opll, 0 );
69 break; 69 break;
70 case type_msxaudio: 70 case type_msxaudio:
71 OPL_reset( &this->opl ); 71 OPL_reset( &this->opl );
72 break; 72 break;
73 } 73 }
74} 74}
75 75
76static void run_until( struct Opl_Apu* this, blip_time_t end_time ); 76static void run_until( struct Opl_Apu* this, blip_time_t end_time );
77void Opl_write_data( struct Opl_Apu* this, blip_time_t time, int data ) 77void Opl_write_data( struct Opl_Apu* this, blip_time_t time, int data )
78{ 78{
79 run_until( this, time ); 79 run_until( this, time );
80 switch (this->type_) 80 switch (this->type_)
81 { 81 {
82 case type_opll: 82 case type_opll:
83 case type_msxmusic: 83 case type_msxmusic:
84 case type_smsfmunit: 84 case type_smsfmunit:
85 case type_vrc7: 85 case type_vrc7:
86 OPLL_writeIO( &this->opll, 0, this->addr ); 86 OPLL_writeIO( &this->opll, 0, this->addr );
87 OPLL_writeIO( &this->opll, 1, data ); 87 OPLL_writeIO( &this->opll, 1, data );
88 break; 88 break;
89 case type_msxaudio: 89 case type_msxaudio:
90 OPL_writeReg( &this->opl, this->addr, data ); 90 OPL_writeReg( &this->opl, this->addr, data );
91 break; 91 break;
92 } 92 }
93} 93}
94 94
95int Opl_read( struct Opl_Apu* this, blip_time_t time, int port ) 95int Opl_read( struct Opl_Apu* this, blip_time_t time, int port )
96{ 96{
97 run_until( this, time ); 97 run_until( this, time );
98 switch (this->type_) 98 switch (this->type_)
99 { 99 {
100 case type_opll: 100 case type_opll:
101 case type_msxmusic: 101 case type_msxmusic:
102 case type_smsfmunit: 102 case type_smsfmunit:
103 case type_vrc7: 103 case type_vrc7:
104 return OPLL_read( &this->opll, port ); 104 return OPLL_read( &this->opll, port );
105 case type_msxaudio: 105 case type_msxaudio:
106 return OPL_readStatus( &this->opl ); 106 return OPL_readStatus( &this->opl );
107 } 107 }
108 108
109 return 0; 109 return 0;
110} 110}
111 111
112void Opl_end_frame( struct Opl_Apu* this, blip_time_t time ) 112void Opl_end_frame( struct Opl_Apu* this, blip_time_t time )
113{ 113{
114 run_until( this, time ); 114 run_until( this, time );
115 this->next_time -= time; 115 this->next_time -= time;
116 116
117 if ( this->output_ ) 117 if ( this->output_ )
118 Blip_set_modified( this->output_ ); 118 Blip_set_modified( this->output_ );
119} 119}
120 120
121static void run_until( struct Opl_Apu* this, blip_time_t end_time ) 121static void run_until( struct Opl_Apu* this, blip_time_t end_time )
122{ 122{
123 if ( end_time > this->next_time ) 123 if ( end_time > this->next_time )
124 { 124 {
125 blip_time_t time_delta = end_time - this->next_time; 125 blip_time_t time_delta = end_time - this->next_time;
126 blip_time_t time = this->next_time; 126 blip_time_t time = this->next_time;
127 unsigned count = time_delta / this->period_ + 1; 127 unsigned count = time_delta / this->period_ + 1;
128 switch (this->type_) 128 switch (this->type_)
129 { 129 {
130 case type_opll: 130 case type_opll:
131 case type_msxmusic: 131 case type_msxmusic:
132 case type_smsfmunit: 132 case type_smsfmunit:
133 case type_vrc7: 133 case type_vrc7:
134 { 134 {
135 OPLL* opll = &this->opll; // cache 135 OPLL* opll = &this->opll; // cache
136 struct Blip_Buffer* const output = this->output_; 136 struct Blip_Buffer* const output = this->output_;
137 while ( count > 0 ) 137 while ( count > 0 )
138 { 138 {
139 unsigned todo = count; 139 unsigned todo = count;
140 if ( todo > 1024 ) todo = 1024; 140 if ( todo > 1024 ) todo = 1024;
141 short *buffer = OPLL_update_buffer(opll, todo); 141 short *buffer = OPLL_update_buffer(opll, todo);
142 142
143 if ( output && buffer ) 143 if ( output && buffer )
144 { 144 {
145 int last_amp = this->last_amp; 145 int last_amp = this->last_amp;
146 unsigned i; 146 unsigned i;
147 for ( i = 0; i < todo; i++ ) 147 for ( i = 0; i < todo; i++ )
148 { 148 {
149 int amp = buffer [i]; 149 int amp = buffer [i];
150 int delta = amp - last_amp; 150 int delta = amp - last_amp;
151 if ( delta ) 151 if ( delta )
152 { 152 {
153 last_amp = amp; 153 last_amp = amp;
154 Synth_offset_inline( &this->synth, time, delta, output ); 154 Synth_offset_inline( &this->synth, time, delta, output );
155 } 155 }
156 time += this->period_; 156 time += this->period_;
157 } 157 }
158 this->last_amp = last_amp; 158 this->last_amp = last_amp;
159 } 159 }
160 count -= todo; 160 count -= todo;
161 } 161 }
162 } 162 }
163 break; 163 break;
164 case type_msxaudio: 164 case type_msxaudio:
165 { 165 {
166 struct Y8950* opl = &this->opl; 166 struct Y8950* opl = &this->opl;
167 struct Blip_Buffer* const output = this->output_; 167 struct Blip_Buffer* const output = this->output_;
168 while ( count > 0 ) 168 while ( count > 0 )
169 { 169 {
170 unsigned todo = count; 170 unsigned todo = count;
171 if ( todo > 1024 ) todo = 1024; 171 if ( todo > 1024 ) todo = 1024;
172 int *buffer = OPL_updateBuffer(opl, todo); 172 int *buffer = OPL_updateBuffer(opl, todo);
173 173
174 if ( output && buffer ) 174 if ( output && buffer )
175 { 175 {
176 int last_amp = this->last_amp; 176 int last_amp = this->last_amp;
177 unsigned i; 177 unsigned i;
178 for ( i = 0; i < todo; i++ ) 178 for ( i = 0; i < todo; i++ )
179 { 179 {
180 int amp = buffer [i]; 180 int amp = buffer [i];
181 int delta = amp - last_amp; 181 int delta = amp - last_amp;
182 if ( delta ) 182 if ( delta )
183 { 183 {
184 last_amp = amp; 184 last_amp = amp;
185 Synth_offset_inline( &this->synth, time, delta, output ); 185 Synth_offset_inline( &this->synth, time, delta, output );
186 } 186 }
187 time += this->period_; 187 time += this->period_;
188 } 188 }
189 this->last_amp = last_amp; 189 this->last_amp = last_amp;
190 } 190 }
191 count -= todo; 191 count -= todo;
192 } 192 }
193 } 193 }
194 break; 194 break;
195 } 195 }
196 this->next_time = time; 196 this->next_time = time;
197 } 197 }
198} 198}
diff --git a/apps/codecs/libgme/opl_apu.h b/apps/codecs/libgme/opl_apu.h
index f24a8d60c2..76fa766492 100644
--- a/apps/codecs/libgme/opl_apu.h
+++ b/apps/codecs/libgme/opl_apu.h
@@ -1,63 +1,63 @@
1#ifndef OPL_APU_H 1#ifndef OPL_APU_H
2#define OPL_APU_H 2#define OPL_APU_H
3 3
4#include "blargg_common.h" 4#include "blargg_common.h"
5#include "blargg_source.h" 5#include "blargg_source.h"
6#include "blip_buffer.h" 6#include "blip_buffer.h"
7 7
8#include "emu8950.h" 8#include "emu8950.h"
9#include "emu2413.h" 9#include "emu2413.h"
10 10
11enum opl_type_t { type_opll = 0x10, type_msxmusic = 0x11, type_smsfmunit = 0x12, 11enum opl_type_t { type_opll = 0x10, type_msxmusic = 0x11, type_smsfmunit = 0x12,
12 type_vrc7 = 0x13, type_msxaudio = 0x21 }; 12 type_vrc7 = 0x13, type_msxaudio = 0x21 };
13 13
14enum { opl_osc_count = 1 }; 14enum { opl_osc_count = 1 };
15 15
16struct Opl_Apu { 16struct Opl_Apu {
17 struct Blip_Buffer* output_; 17 struct Blip_Buffer* output_;
18 enum opl_type_t type_; 18 enum opl_type_t type_;
19 19
20 blip_time_t next_time; 20 blip_time_t next_time;
21 int last_amp; 21 int last_amp;
22 int addr; 22 int addr;
23 23
24 long clock_; 24 long clock_;
25 long rate_; 25 long rate_;
26 blip_time_t period_; 26 blip_time_t period_;
27 27
28 struct Blip_Synth synth; 28 struct Blip_Synth synth;
29 29
30 // OPL chips 30 // OPL chips
31 struct Y8950 opl; 31 struct Y8950 opl;
32 OPLL opll; 32 OPLL opll;
33 33
34 unsigned char regs[ 0x100 ]; 34 unsigned char regs[ 0x100 ];
35 unsigned char opl_memory[ 32768 ]; 35 unsigned char opl_memory[ 32768 ];
36}; 36};
37 37
38blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type ); 38blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type );
39void Opl_shutdown( struct Opl_Apu* this ); 39void Opl_shutdown( struct Opl_Apu* this );
40 40
41void Opl_reset( struct Opl_Apu* this ); 41void Opl_reset( struct Opl_Apu* this );
42static inline void Opl_volume( struct Opl_Apu* this, int v ) { Synth_volume( &this->synth, v / (4096 * 6) ); } 42static inline void Opl_volume( struct Opl_Apu* this, int v ) { Synth_volume( &this->synth, v / (4096 * 6) ); }
43 43
44static inline void Opl_osc_output( struct Opl_Apu* this, int i, struct Blip_Buffer* buf ) 44static inline void Opl_osc_output( struct Opl_Apu* this, int i, struct Blip_Buffer* buf )
45{ 45{
46#if defined(ROCKBOX) 46#if defined(ROCKBOX)
47 (void) i; 47 (void) i;
48#endif 48#endif
49 assert( (unsigned) i < opl_osc_count ); 49 assert( (unsigned) i < opl_osc_count );
50 this->output_ = buf; 50 this->output_ = buf;
51} 51}
52 52
53static inline void Opl_set_output( struct Opl_Apu* this, struct Blip_Buffer* buf ) { Opl_osc_output( this, 0, buf ); } 53static inline void Opl_set_output( struct Opl_Apu* this, struct Blip_Buffer* buf ) { Opl_osc_output( this, 0, buf ); }
54void Opl_end_frame( struct Opl_Apu* this, blip_time_t ); 54void Opl_end_frame( struct Opl_Apu* this, blip_time_t );
55 55
56static inline void Opl_write_addr( struct Opl_Apu* this, int data ) { this->addr = data; } 56static inline void Opl_write_addr( struct Opl_Apu* this, int data ) { this->addr = data; }
57void Opl_write_data( struct Opl_Apu* this, blip_time_t, int data ); 57void Opl_write_data( struct Opl_Apu* this, blip_time_t, int data );
58 58
59int Opl_read( struct Opl_Apu* this, blip_time_t, int port ); 59int Opl_read( struct Opl_Apu* this, blip_time_t, int port );
60 60
61static inline bool Opl_supported( void ) { return true; } 61static inline bool Opl_supported( void ) { return true; }
62 62
63#endif 63#endif
diff --git a/apps/codecs/libgme/opltables.h b/apps/codecs/libgme/opltables.h
index 6ec10eaa6e..50fc0a86c6 100644
--- a/apps/codecs/libgme/opltables.h
+++ b/apps/codecs/libgme/opltables.h
@@ -1,242 +1,242 @@
1#ifndef _OPLTABLES_H_ 1#ifndef _OPLTABLES_H_
2#define _OPLTABLES_H_ 2#define _OPLTABLES_H_
3 3
4/* Precalculated emu8950 tables for use in Rockbox, 4/* Precalculated emu8950 tables for use in Rockbox,
5 Calculated for 44Khz sampling rate */ 5 Calculated for 44Khz sampling rate */
6 6
7static const short ar_adjust_coeff[] = { 7static const short ar_adjust_coeff[] = {
8 255, 227, 210, 198, 189, 181, 175, 170, 165, 161, 157, 8 255, 227, 210, 198, 189, 181, 175, 170, 165, 161, 157,
9 153, 150, 147, 144, 141, 139, 136, 134, 132, 130, 128, 9 153, 150, 147, 144, 141, 139, 136, 134, 132, 130, 128,
10 126, 125, 123, 121, 120, 118, 117, 115, 114, 113, 112, 10 126, 125, 123, 121, 120, 118, 117, 115, 114, 113, 112,
11 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 11 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100,
12 99, 98, 97, 96, 95, 94, 94, 93, 92, 91, 91, 12 99, 98, 97, 96, 95, 94, 94, 93, 92, 91, 91,
13 90, 89, 88, 88, 87, 86, 86, 85, 84, 84, 83, 13 90, 89, 88, 88, 87, 86, 86, 85, 84, 84, 83,
14 82, 82, 81, 81, 80, 79, 79, 78, 78, 77, 77, 14 82, 82, 81, 81, 80, 79, 79, 78, 78, 77, 77,
15 76, 76, 75, 75, 74, 74, 73, 73, 72, 72, 71, 15 76, 76, 75, 75, 74, 74, 73, 73, 72, 72, 71,
16 71, 70, 70, 69, 69, 69, 68, 68, 67, 67, 66, 16 71, 70, 70, 69, 69, 69, 68, 68, 67, 67, 66,
17 66, 66, 65, 65, 64, 64, 64, 63, 63, 62, 62, 17 66, 66, 65, 65, 64, 64, 64, 63, 63, 62, 62,
18 62, 61, 61, 61, 60, 60, 60, 59, 59, 59, 58, 18 62, 61, 61, 61, 60, 60, 60, 59, 59, 59, 58,
19 58, 58, 57, 57, 57, 56, 56, 56, 55, 55, 55, 19 58, 58, 57, 57, 57, 56, 56, 56, 55, 55, 55,
20 54, 54, 54, 53, 53, 53, 53, 52, 52, 52, 51, 20 54, 54, 54, 53, 53, 53, 53, 52, 52, 52, 51,
21 51, 51, 50, 50, 50, 50, 49, 49, 49, 49, 48, 21 51, 51, 50, 50, 50, 50, 49, 49, 49, 49, 48,
22 48, 48, 48, 47, 47, 47, 46, 46, 46, 46, 45, 22 48, 48, 48, 47, 47, 47, 46, 46, 46, 46, 45,
23 45, 45, 45, 44, 44, 44, 44, 44, 43, 43, 43, 23 45, 45, 45, 44, 44, 44, 44, 44, 43, 43, 43,
24 43, 42, 42, 42, 42, 41, 41, 41, 41, 41, 40, 24 43, 42, 42, 42, 42, 41, 41, 41, 41, 41, 40,
25 40, 40, 40, 39, 39, 39, 39, 39, 38, 38, 38, 25 40, 40, 40, 39, 39, 39, 39, 39, 38, 38, 38,
26 38, 38, 37, 37, 37, 37, 37, 36, 36, 36, 36, 26 38, 38, 37, 37, 37, 37, 37, 36, 36, 36, 36,
27 36, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34, 27 36, 35, 35, 35, 35, 35, 34, 34, 34, 34, 34,
28 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 32, 28 33, 33, 33, 33, 33, 33, 32, 32, 32, 32, 32,
29 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30,
30 30, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 30 30, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28,
31 28, 28, 27, 27, 27, 27, 27, 27, 26, 26, 26, 31 28, 28, 27, 27, 27, 27, 27, 27, 26, 26, 26,
32 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25, 32 26, 26, 26, 26, 25, 25, 25, 25, 25, 25, 25,
33 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23, 33 24, 24, 24, 24, 24, 24, 23, 23, 23, 23, 23,
34 23, 23, 22, 22, 22, 22, 22, 22, 22, 21, 21, 34 23, 23, 22, 22, 22, 22, 22, 22, 22, 21, 21,
35 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20, 35 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 20,
36 20, 20, 19, 19, 19, 19, 19, 19, 19, 19, 18, 36 20, 20, 19, 19, 19, 19, 19, 19, 19, 19, 18,
37 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 37 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17,
38 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 38 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16,
39 16, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14, 39 16, 15, 15, 15, 15, 15, 15, 15, 15, 14, 14,
40 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13, 40 14, 14, 14, 14, 14, 14, 14, 13, 13, 13, 13,
41 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 41 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12,
42 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11, 42 12, 12, 12, 11, 11, 11, 11, 11, 11, 11, 11,
43 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 43 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
44 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 44 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8,
45 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 45 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7,
46 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 46 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6,
47 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 47 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5,
48 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 48 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4,
49 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 49 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3,
50 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 50 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2,
51 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 51 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
52 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 52 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,
53 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
54 0, 0, 0, 0, 0 54 0, 0, 0, 0, 0
55}; 55};
56 56
57static const short db2lin_coeff[] = { 57static const short db2lin_coeff[] = {
58 2047, 2003, 1960, 1918, 1877, 1837, 1798, 1759, 1722, 1685, 1649, 58 2047, 2003, 1960, 1918, 1877, 1837, 1798, 1759, 1722, 1685, 1649,
59 1614, 1579, 1546, 1513, 1480, 1449, 1418, 1387, 1358, 1329, 1300, 59 1614, 1579, 1546, 1513, 1480, 1449, 1418, 1387, 1358, 1329, 1300,
60 1273, 1245, 1219, 1193, 1167, 1142, 1118, 1094, 1071, 1048, 1025, 60 1273, 1245, 1219, 1193, 1167, 1142, 1118, 1094, 1071, 1048, 1025,
61 1004, 982, 961, 941, 920, 901, 882, 863, 844, 826, 809, 61 1004, 982, 961, 941, 920, 901, 882, 863, 844, 826, 809,
62 791, 774, 758, 742, 726, 710, 695, 680, 666, 651, 638, 62 791, 774, 758, 742, 726, 710, 695, 680, 666, 651, 638,
63 624, 611, 598, 585, 572, 560, 548, 536, 525, 514, 503, 63 624, 611, 598, 585, 572, 560, 548, 536, 525, 514, 503,
64 492, 481, 471, 461, 451, 442, 432, 423, 414, 405, 396, 64 492, 481, 471, 461, 451, 442, 432, 423, 414, 405, 396,
65 388, 380, 371, 364, 356, 348, 341, 333, 326, 319, 312, 65 388, 380, 371, 364, 356, 348, 341, 333, 326, 319, 312,
66 306, 299, 293, 287, 280, 274, 269, 263, 257, 252, 246, 66 306, 299, 293, 287, 280, 274, 269, 263, 257, 252, 246,
67 241, 236, 231, 226, 221, 216, 212, 207, 203, 198, 194, 67 241, 236, 231, 226, 221, 216, 212, 207, 203, 198, 194,
68 190, 186, 182, 178, 174, 170, 167, 163, 160, 156, 153, 68 190, 186, 182, 178, 174, 170, 167, 163, 160, 156, 153,
69 150, 147, 143, 140, 137, 134, 131, 129, 126, 123, 121, 69 150, 147, 143, 140, 137, 134, 131, 129, 126, 123, 121,
70 118, 115, 113, 111, 108, 106, 104, 101, 99, 97, 95, 70 118, 115, 113, 111, 108, 106, 104, 101, 99, 97, 95,
71 93, 91, 89, 87, 85, 83, 82, 80, 78, 76, 75, 71 93, 91, 89, 87, 85, 83, 82, 80, 78, 76, 75,
72 73, 72, 70, 69, 67, 66, 64, 63, 61, 60, 59, 72 73, 72, 70, 69, 67, 66, 64, 63, 61, 60, 59,
73 58, 56, 55, 54, 53, 52, 51, 49, 48, 47, 46, 73 58, 56, 55, 54, 53, 52, 51, 49, 48, 47, 46,
74 45, 44, 43, 42, 42, 41, 40, 39, 38, 37, 36, 74 45, 44, 43, 42, 42, 41, 40, 39, 38, 37, 36,
75 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 75 36, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29,
76 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22, 76 28, 27, 27, 26, 26, 25, 25, 24, 23, 23, 22,
77 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18, 77 22, 21, 21, 21, 20, 20, 19, 19, 18, 18, 18,
78 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 78 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14,
79 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 79 13, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11,
80 11, 10, 10, 10, 10, 9, 9, 9, 9, 9, 8, 80 11, 10, 10, 10, 10, 9, 9, 9, 9, 9, 8,
81 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 81 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7,
82 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 82 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5,
83 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 83 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4,
84 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 84 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
85 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 85 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2,
86 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 86 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
87 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 87 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
88 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 88 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
89 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 89 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
90 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
91 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
92 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
93 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
95 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
97 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
98 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
99 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
104 0, 0, 0, 0, 0, 0 104 0, 0, 0, 0, 0, 0
105}; 105};
106 106
107static const short sin_coeff[] = { 107static const short sin_coeff[] = {
108 511, 235, 203, 185, 171, 161, 152, 145, 139, 134, 129, 108 511, 235, 203, 185, 171, 161, 152, 145, 139, 134, 129,
109 124, 120, 117, 113, 110, 107, 104, 102, 99, 97, 95, 109 124, 120, 117, 113, 110, 107, 104, 102, 99, 97, 95,
110 92, 90, 88, 87, 85, 83, 81, 80, 78, 77, 75, 110 92, 90, 88, 87, 85, 83, 81, 80, 78, 77, 75,
111 74, 72, 71, 70, 69, 67, 66, 65, 64, 63, 62, 111 74, 72, 71, 70, 69, 67, 66, 65, 64, 63, 62,
112 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52, 112 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 52,
113 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43, 113 51, 50, 49, 48, 48, 47, 46, 45, 45, 44, 43,
114 43, 42, 41, 41, 40, 39, 39, 38, 38, 37, 37, 114 43, 42, 41, 41, 40, 39, 39, 38, 38, 37, 37,
115 36, 35, 35, 34, 34, 33, 33, 32, 32, 31, 31, 115 36, 35, 35, 34, 34, 33, 33, 32, 32, 31, 31,
116 30, 30, 29, 29, 28, 28, 28, 27, 27, 26, 26, 116 30, 30, 29, 29, 28, 28, 28, 27, 27, 26, 26,
117 25, 25, 25, 24, 24, 23, 23, 23, 22, 22, 22, 117 25, 25, 25, 24, 24, 23, 23, 23, 22, 22, 22,
118 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 118 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, 18,
119 18, 17, 17, 17, 16, 16, 16, 16, 15, 15, 15, 119 18, 17, 17, 17, 16, 16, 16, 16, 15, 15, 15,
120 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12, 120 14, 14, 14, 14, 13, 13, 13, 13, 12, 12, 12,
121 12, 11, 11, 11, 11, 11, 10, 10, 10, 10, 9, 121 12, 11, 11, 11, 11, 11, 10, 10, 10, 10, 9,
122 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 122 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7,
123 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5, 123 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 5,
124 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 124 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4,
125 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 125 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
126 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 126 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
127 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 127 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
128 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 128 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
131 0, 0, 0, 131 0, 0, 0,
132}; 132};
133 133
134static const short pm0_coeff[] = { 134static const short pm0_coeff[] = {
135 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 135 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
136 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 136 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
137 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 137 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
138 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 138 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
139 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 139 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
140 256, 256, 257, 257, 257, 257, 257, 257, 257, 257, 257, 140 256, 256, 257, 257, 257, 257, 257, 257, 257, 257, 257,
141 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256, 141 257, 257, 257, 257, 257, 257, 256, 256, 256, 256, 256,
142 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 142 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
143 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 143 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
144 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 144 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
145 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 145 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
146 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255, 146 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255,
147 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 147 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
148 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 148 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
149 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 149 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
150 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
151 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 151 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254,
152 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 152 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
153 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
154 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
155 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 155 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
156 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 156 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
157 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 157 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
158 255, 255, 255, 158 255, 255, 255,
159}; 159};
160 160
161static const short pm1_coeff[] = { 161static const short pm1_coeff[] = {
162 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 162 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
163 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, 163 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 257,
164 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 164 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
165 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 165 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
166 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 166 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
167 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, 167 257, 258, 258, 258, 258, 258, 258, 258, 258, 258, 258,
168 258, 258, 258, 258, 258, 258, 258, 257, 257, 257, 257, 168 258, 258, 258, 258, 258, 258, 258, 257, 257, 257, 257,
169 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 169 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
170 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 170 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
171 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 256, 171 257, 257, 257, 257, 257, 257, 257, 257, 257, 256, 256,
172 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 172 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
173 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255, 173 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255,
174 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 174 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
175 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 175 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254,
176 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 176 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
177 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 177 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
178 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253, 178 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 253,
179 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 179 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253,
180 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 180 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
181 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 181 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
182 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 182 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
183 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255, 183 254, 254, 254, 254, 254, 255, 255, 255, 255, 255, 255,
184 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 184 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
185 255, 255, 255, 185 255, 255, 255,
186}; 186};
187 187
188static const short am0_coeff[] = { 188static const short am0_coeff[] = {
189 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 189 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
190 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 190 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
191 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 191 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
192 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 192 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
193 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 193 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
194 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 194 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
195 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 195 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
196 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 196 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4,
197 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 197 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
198 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 198 4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3,
199 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 199 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
200 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 200 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2,
201 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 201 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1,
202 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 202 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
203 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 203 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 209 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
210 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 210 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
211 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 211 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
212 2, 2, 2, 212 2, 2, 2,
213}; 213};
214 214
215static const short am1_coeff[] = { 215static const short am1_coeff[] = {
216 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 216 12, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15,
217 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19, 217 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 19,
218 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 218 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21,
219 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 219 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23,
220 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 220 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25,
221 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 221 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
222 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 222 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
223 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23, 223 24, 24, 24, 24, 24, 24, 24, 24, 23, 23, 23,
224 23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21, 224 23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21,
225 21, 20, 20, 20, 20, 19, 19, 19, 19, 18, 18, 225 21, 20, 20, 20, 20, 19, 19, 19, 19, 18, 18,
226 18, 17, 17, 17, 17, 16, 16, 16, 15, 15, 15, 226 18, 17, 17, 17, 17, 16, 16, 16, 15, 15, 15,
227 14, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11, 227 14, 14, 14, 14, 13, 13, 13, 12, 12, 12, 11,
228 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 228 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8,
229 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5, 229 8, 7, 7, 7, 7, 6, 6, 6, 5, 5, 5,
230 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 230 5, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2,
231 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 231 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
235 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 235 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
236 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 236 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5,
237 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 237 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8,
238 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11, 238 8, 8, 9, 9, 9, 9, 10, 10, 10, 11, 11,
239 11, 12, 12, 239 11, 12, 12,
240}; 240};
241 241
242#endif 242#endif
diff --git a/apps/codecs/libgme/sgc_cpu.c b/apps/codecs/libgme/sgc_cpu.c
index 3bd2d15df9..d23c01499b 100644
--- a/apps/codecs/libgme/sgc_cpu.c
+++ b/apps/codecs/libgme/sgc_cpu.c
@@ -1,36 +1,36 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3#include "sgc_emu.h" 3#include "sgc_emu.h"
4 4
5#include "blargg_endian.h" 5#include "blargg_endian.h"
6//#include "z80_cpu_log.h" 6//#include "z80_cpu_log.h"
7 7
8/* Copyright (C) 2009 Shay Green. This module is free software; you 8/* Copyright (C) 2009 Shay Green. This module is free software; you
9can redistribute it and/or modify it under the terms of the GNU Lesser 9can redistribute it and/or modify it under the terms of the GNU Lesser
10General Public License as published by the Free Software Foundation; either 10General Public License as published by the Free Software Foundation; either
11version 2.1 of the License, or (at your option) any later version. This 11version 2.1 of the License, or (at your option) any later version. This
12module is distributed in the hope that it will be useful, but WITHOUT ANY 12module is distributed in the hope that it will be useful, but WITHOUT ANY
13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 13WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 14FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
15details. You should have received a copy of the GNU Lesser General Public 15details. You should have received a copy of the GNU Lesser General Public
16License along with this module; if not, write to the Free Software Foundation, 16License along with this module; if not, write to the Free Software Foundation,
17Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 17Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
18 18
19#include "blargg_source.h" 19#include "blargg_source.h"
20 20
21#define OUT_PORT( addr, data ) cpu_out( this, TIME(), addr, data ) 21#define OUT_PORT( addr, data ) cpu_out( this, TIME(), addr, data )
22#define IN_PORT( addr ) 0 // cpu in 22#define IN_PORT( addr ) 0 // cpu in
23#define WRITE_MEM( addr, data ) cpu_write( this, addr, data ) 23#define WRITE_MEM( addr, data ) cpu_write( this, addr, data )
24#define IDLE_ADDR this->idle_addr 24#define IDLE_ADDR this->idle_addr
25#define RST_BASE this->vectors_addr 25#define RST_BASE this->vectors_addr
26 26
27#define CPU_BEGIN \ 27#define CPU_BEGIN \
28bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time )\ 28bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time )\
29{\ 29{\
30 Sgc_Cpu* cpu = &this->cpu; \ 30 Sgc_Cpu* cpu = &this->cpu; \
31 Z80_set_end_time( cpu, end_time ); 31 Z80_set_end_time( cpu, end_time );
32 32
33 #include "z80_cpu_run.h" 33 #include "z80_cpu_run.h"
34 34
35 return warning; 35 return warning;
36} 36}
diff --git a/apps/codecs/libgme/sgc_emu.c b/apps/codecs/libgme/sgc_emu.c
index e7253a8d5b..267f2c9271 100644
--- a/apps/codecs/libgme/sgc_emu.c
+++ b/apps/codecs/libgme/sgc_emu.c
@@ -1,480 +1,480 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3#include "sgc_emu.h" 3#include "sgc_emu.h"
4 4
5/* Copyright (C) 2009 Shay Green. This module is free software; you 5/* Copyright (C) 2009 Shay Green. This module is free software; you
6can redistribute it and/or modify it under the terms of the GNU Lesser 6can redistribute it and/or modify it under the terms of the GNU Lesser
7General Public License as published by the Free Software Foundation; either 7General Public License as published by the Free Software Foundation; either
8version 2.1 of the License, or (at your option) any later version. This 8version 2.1 of the License, or (at your option) any later version. This
9module is distributed in the hope that it will be useful, but WITHOUT ANY 9module is distributed in the hope that it will be useful, but WITHOUT ANY
10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 11FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12details. You should have received a copy of the GNU Lesser General Public 12details. You should have received a copy of the GNU Lesser General Public
13License aint with this module; if not, write to the Free Software Foundation, 13License aint with this module; if not, write to the Free Software Foundation,
14Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 14Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
15 15
16#include "blargg_source.h" 16#include "blargg_source.h"
17 17
18int const osc_count = sms_osc_count + fm_apu_osc_count; 18int const osc_count = sms_osc_count + fm_apu_osc_count;
19 19
20const char gme_wrong_file_type [] = "Wrong file type for this emulator"; 20const char gme_wrong_file_type [] = "Wrong file type for this emulator";
21 21
22static void clear_track_vars( struct Sgc_Emu* this ) 22static void clear_track_vars( struct Sgc_Emu* this )
23{ 23{
24 this->current_track = -1; 24 this->current_track = -1;
25 track_stop( &this->track_filter ); 25 track_stop( &this->track_filter );
26} 26}
27 27
28void Sgc_init( struct Sgc_Emu* this ) 28void Sgc_init( struct Sgc_Emu* this )
29{ 29{
30 assert( offsetof (struct header_t,copyright [32]) == header_size ); 30 assert( offsetof (struct header_t,copyright [32]) == header_size );
31 31
32 this->sample_rate = 0; 32 this->sample_rate = 0;
33 this->mute_mask_ = 0; 33 this->mute_mask_ = 0;
34 this->tempo = (int)FP_ONE_TEMPO; 34 this->tempo = (int)FP_ONE_TEMPO;
35 this->gain = (int)FP_ONE_GAIN; 35 this->gain = (int)FP_ONE_GAIN;
36 36
37 // defaults 37 // defaults
38 this->tfilter = *track_get_setup( &this->track_filter ); 38 this->tfilter = *track_get_setup( &this->track_filter );
39 this->tfilter.max_initial = 2; 39 this->tfilter.max_initial = 2;
40 this->tfilter.lookahead = 6; 40 this->tfilter.lookahead = 6;
41 this->track_filter.silence_ignored_ = false; 41 this->track_filter.silence_ignored_ = false;
42 42
43 Sms_apu_init( &this->apu ); 43 Sms_apu_init( &this->apu );
44 Fm_apu_create( &this->fm_apu ); 44 Fm_apu_create( &this->fm_apu );
45 45
46 Rom_init( &this->rom, 0x4000 ); 46 Rom_init( &this->rom, 0x4000 );
47 Z80_init( &this->cpu ); 47 Z80_init( &this->cpu );
48 48
49 Sound_set_gain( this, (int)(FP_ONE_GAIN*1.2) ); 49 Sound_set_gain( this, (int)(FP_ONE_GAIN*1.2) );
50 50
51 // Unload 51 // Unload
52 this->voice_count = 0; 52 this->voice_count = 0;
53 this->voice_types = 0; 53 this->voice_types = 0;
54 clear_track_vars( this ); 54 clear_track_vars( this );
55} 55}
56 56
57// Setup 57// Setup
58 58
59blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size ) 59blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size )
60{ 60{
61 RETURN_ERR( Rom_load( &this->rom, data, size, header_size, &this->header, 0 ) ); 61 RETURN_ERR( Rom_load( &this->rom, data, size, header_size, &this->header, 0 ) );
62 62
63 if ( !valid_tag( &this->header ) ) 63 if ( !valid_tag( &this->header ) )
64 return gme_wrong_file_type; 64 return gme_wrong_file_type;
65 65
66 /* if ( header.vers != 1 ) 66 /* if ( header.vers != 1 )
67 warning( "Unknown file version" ); */ 67 warning( "Unknown file version" ); */
68 68
69 /* if ( header.system > 2 ) 69 /* if ( header.system > 2 )
70 warning( "Unknown system" ); */ 70 warning( "Unknown system" ); */
71 71
72 addr_t load_addr = get_le16( this->header.load_addr ); 72 addr_t load_addr = get_le16( this->header.load_addr );
73 /* if ( load_addr < 0x400 ) 73 /* if ( load_addr < 0x400 )
74 set_warning( "Invalid load address" ); */ 74 set_warning( "Invalid load address" ); */
75 75
76 Rom_set_addr( &this->rom, load_addr ); 76 Rom_set_addr( &this->rom, load_addr );
77 this->play_period = clock_rate( this ) / 60; 77 this->play_period = clock_rate( this ) / 60;
78 78
79 if ( sega_mapping( this ) && Fm_apu_supported() ) 79 if ( sega_mapping( this ) && Fm_apu_supported() )
80 RETURN_ERR( Fm_apu_init( &this->fm_apu, clock_rate( this ), clock_rate( this ) / 72 ) ); 80 RETURN_ERR( Fm_apu_init( &this->fm_apu, clock_rate( this ), clock_rate( this ) / 72 ) );
81 81
82 this->m3u.size = 0; 82 this->m3u.size = 0;
83 this->track_count = this->header.song_count; 83 this->track_count = this->header.song_count;
84 this->voice_count = sega_mapping( this ) ? osc_count : sms_osc_count; 84 this->voice_count = sega_mapping( this ) ? osc_count : sms_osc_count;
85 static int const types [sms_osc_count + fm_apu_osc_count] = { 85 static int const types [sms_osc_count + fm_apu_osc_count] = {
86 wave_type+1, wave_type+2, wave_type+3, mixed_type+1, mixed_type+2 86 wave_type+1, wave_type+2, wave_type+3, mixed_type+1, mixed_type+2
87 }; 87 };
88 this->voice_types = types; 88 this->voice_types = types;
89 89
90 Sms_apu_volume( &this->apu, this->gain ); 90 Sms_apu_volume( &this->apu, this->gain );
91 Fm_apu_volume( &this->fm_apu, this->gain ); 91 Fm_apu_volume( &this->fm_apu, this->gain );
92 92
93 // Setup buffer 93 // Setup buffer
94 this->clock_rate_ = clock_rate( this ); 94 this->clock_rate_ = clock_rate( this );
95 Buffer_clock_rate( &this->stereo_buf, clock_rate( this ) ); 95 Buffer_clock_rate( &this->stereo_buf, clock_rate( this ) );
96 RETURN_ERR( Buffer_set_channel_count( &this->stereo_buf, this->voice_count, this->voice_types ) ); 96 RETURN_ERR( Buffer_set_channel_count( &this->stereo_buf, this->voice_count, this->voice_types ) );
97 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf ); 97 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf );
98 98
99 Sound_set_tempo( this, this->tempo ); 99 Sound_set_tempo( this, this->tempo );
100 Sound_mute_voices( this, this->mute_mask_ ); 100 Sound_mute_voices( this, this->mute_mask_ );
101 return 0; 101 return 0;
102} 102}
103 103
104static void Sound_set_voice( struct Sgc_Emu* this, int i, struct Blip_Buffer* c, struct Blip_Buffer* l, struct Blip_Buffer* r ) 104static void Sound_set_voice( struct Sgc_Emu* this, int i, struct Blip_Buffer* c, struct Blip_Buffer* l, struct Blip_Buffer* r )
105{ 105{
106 if ( i < sms_osc_count ) 106 if ( i < sms_osc_count )
107 Sms_apu_set_output( &this->apu, i, c, l, r ); 107 Sms_apu_set_output( &this->apu, i, c, l, r );
108 else 108 else
109 Fm_apu_set_output( &this->fm_apu, c ); 109 Fm_apu_set_output( &this->fm_apu, c );
110} 110}
111 111
112static blargg_err_t run_clocks( struct Sgc_Emu* this, blip_time_t* duration, int msec ) 112static blargg_err_t run_clocks( struct Sgc_Emu* this, blip_time_t* duration, int msec )
113{ 113{
114#if defined(ROCKBOX) 114#if defined(ROCKBOX)
115 (void) msec; 115 (void) msec;
116#endif 116#endif
117 117
118 cpu_time_t t = *duration; 118 cpu_time_t t = *duration;
119 while ( Z80_time( &this->cpu ) < t ) 119 while ( Z80_time( &this->cpu ) < t )
120 { 120 {
121 cpu_time_t next = min( t, this->next_play ); 121 cpu_time_t next = min( t, this->next_play );
122 if ( run_cpu( this, next ) ) 122 if ( run_cpu( this, next ) )
123 { 123 {
124 /* warning( "Unsupported CPU instruction" ); */ 124 /* warning( "Unsupported CPU instruction" ); */
125 Z80_set_time( &this->cpu, next ); 125 Z80_set_time( &this->cpu, next );
126 } 126 }
127 127
128 if ( this->cpu.r.pc == this->idle_addr ) 128 if ( this->cpu.r.pc == this->idle_addr )
129 Z80_set_time( &this->cpu, next ); 129 Z80_set_time( &this->cpu, next );
130 130
131 if ( Z80_time( &this->cpu ) >= this->next_play ) 131 if ( Z80_time( &this->cpu ) >= this->next_play )
132 { 132 {
133 this->next_play += this->play_period; 133 this->next_play += this->play_period;
134 if ( this->cpu.r.pc == this->idle_addr ) 134 if ( this->cpu.r.pc == this->idle_addr )
135 jsr( this, this->header.play_addr ); 135 jsr( this, this->header.play_addr );
136 } 136 }
137 } 137 }
138 138
139 this->next_play -= t; 139 this->next_play -= t;
140 check( this->next_play >= 0 ); 140 check( this->next_play >= 0 );
141 Z80_adjust_time( &this->cpu, -t ); 141 Z80_adjust_time( &this->cpu, -t );
142 142
143 Sms_apu_end_frame( &this->apu, t ); 143 Sms_apu_end_frame( &this->apu, t );
144 if ( sega_mapping( this ) && this->fm_accessed ) 144 if ( sega_mapping( this ) && this->fm_accessed )
145 { 145 {
146 if ( Fm_apu_supported() ) 146 if ( Fm_apu_supported() )
147 Fm_apu_end_frame( &this->fm_apu, t ); 147 Fm_apu_end_frame( &this->fm_apu, t );
148 /* else 148 /* else
149 warning( "FM sound not supported" ); */ 149 warning( "FM sound not supported" ); */
150 } 150 }
151 151
152 return 0; 152 return 0;
153} 153}
154 154
155// Emulation 155// Emulation
156 156
157void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data ) 157void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data )
158{ 158{
159 int port = addr & 0xFF; 159 int port = addr & 0xFF;
160 160
161 if ( sega_mapping( this ) ) 161 if ( sega_mapping( this ) )
162 { 162 {
163 switch ( port ) 163 switch ( port )
164 { 164 {
165 case 0x06: 165 case 0x06:
166 Sms_apu_write_ggstereo( &this->apu, time, data ); 166 Sms_apu_write_ggstereo( &this->apu, time, data );
167 return; 167 return;
168 168
169 case 0x7E: 169 case 0x7E:
170 case 0x7F: 170 case 0x7F:
171 Sms_apu_write_data( &this->apu, time, data ); /* dprintf( "$7E<-%02X\n", data ); */ 171 Sms_apu_write_data( &this->apu, time, data ); /* dprintf( "$7E<-%02X\n", data ); */
172 return; 172 return;
173 173
174 case 0xF0: 174 case 0xF0:
175 this->fm_accessed = true; 175 this->fm_accessed = true;
176 if ( Fm_apu_supported() ) 176 if ( Fm_apu_supported() )
177 Fm_apu_write_addr( &this->fm_apu, data );//, dprintf( "$F0<-%02X\n", data ); 177 Fm_apu_write_addr( &this->fm_apu, data );//, dprintf( "$F0<-%02X\n", data );
178 return; 178 return;
179 179
180 case 0xF1: 180 case 0xF1:
181 this->fm_accessed = true; 181 this->fm_accessed = true;
182 if ( Fm_apu_supported() ) 182 if ( Fm_apu_supported() )
183 Fm_apu_write_data( &this->fm_apu, time, data );//, dprintf( "$F1<-%02X\n", data ); 183 Fm_apu_write_data( &this->fm_apu, time, data );//, dprintf( "$F1<-%02X\n", data );
184 return; 184 return;
185 } 185 }
186 } 186 }
187 else if ( port >= 0xE0 ) 187 else if ( port >= 0xE0 )
188 { 188 {
189 Sms_apu_write_data( &this->apu, time, data ); 189 Sms_apu_write_data( &this->apu, time, data );
190 return; 190 return;
191 } 191 }
192} 192}
193 193
194void jsr( struct Sgc_Emu* this, byte addr [2] ) 194void jsr( struct Sgc_Emu* this, byte addr [2] )
195{ 195{
196 *Z80_write( &this->cpu, --this->cpu.r.sp ) = this->idle_addr >> 8; 196 *Z80_write( &this->cpu, --this->cpu.r.sp ) = this->idle_addr >> 8;
197 *Z80_write( &this->cpu, --this->cpu.r.sp ) = this->idle_addr & 0xFF; 197 *Z80_write( &this->cpu, --this->cpu.r.sp ) = this->idle_addr & 0xFF;
198 this->cpu.r.pc = get_le16( addr ); 198 this->cpu.r.pc = get_le16( addr );
199} 199}
200 200
201static void set_bank( struct Sgc_Emu* this, int bank, void const* data ) 201static void set_bank( struct Sgc_Emu* this, int bank, void const* data )
202{ 202{
203 //dprintf( "map bank %d to %p\n", bank, (byte*) data - rom.at_addr( 0 ) ); 203 //dprintf( "map bank %d to %p\n", bank, (byte*) data - rom.at_addr( 0 ) );
204 Z80_map_mem( &this->cpu, bank * this->rom.bank_size, this->rom.bank_size, this->unmapped_write, data ); 204 Z80_map_mem( &this->cpu, bank * this->rom.bank_size, this->rom.bank_size, this->unmapped_write, data );
205} 205}
206 206
207void cpu_write( struct Sgc_Emu* this, addr_t addr, int data ) 207void cpu_write( struct Sgc_Emu* this, addr_t addr, int data )
208{ 208{
209 if ( (addr ^ 0xFFFC) > 3 || !sega_mapping( this ) ) 209 if ( (addr ^ 0xFFFC) > 3 || !sega_mapping( this ) )
210 { 210 {
211 *Z80_write( &this->cpu, addr ) = data; 211 *Z80_write( &this->cpu, addr ) = data;
212 return; 212 return;
213 } 213 }
214 214
215 switch ( addr ) 215 switch ( addr )
216 { 216 {
217 case 0xFFFC: 217 case 0xFFFC:
218 Z80_map_mem_rw( &this->cpu, 2 * this->rom.bank_size, this->rom.bank_size, this->ram2 ); 218 Z80_map_mem_rw( &this->cpu, 2 * this->rom.bank_size, this->rom.bank_size, this->ram2 );
219 if ( data & 0x08 ) 219 if ( data & 0x08 )
220 break; 220 break;
221 221
222 this->bank2 = this->ram2; 222 this->bank2 = this->ram2;
223 // FALL THROUGH 223 // FALL THROUGH
224 224
225 case 0xFFFF: { 225 case 0xFFFF: {
226 bool rom_mapped = (Z80_read( &this->cpu, 2 * this->rom.bank_size ) == this->bank2); 226 bool rom_mapped = (Z80_read( &this->cpu, 2 * this->rom.bank_size ) == this->bank2);
227 this->bank2 = Rom_at_addr( &this->rom, data * this->rom.bank_size ); 227 this->bank2 = Rom_at_addr( &this->rom, data * this->rom.bank_size );
228 if ( rom_mapped ) 228 if ( rom_mapped )
229 set_bank( this, 2, this->bank2 ); 229 set_bank( this, 2, this->bank2 );
230 break; 230 break;
231 } 231 }
232 232
233 case 0xFFFD: 233 case 0xFFFD:
234 set_bank( this, 0, Rom_at_addr( &this->rom, data * this->rom.bank_size ) ); 234 set_bank( this, 0, Rom_at_addr( &this->rom, data * this->rom.bank_size ) );
235 break; 235 break;
236 236
237 case 0xFFFE: 237 case 0xFFFE:
238 set_bank( this, 1, Rom_at_addr( &this->rom, data * this->rom.bank_size ) ); 238 set_bank( this, 1, Rom_at_addr( &this->rom, data * this->rom.bank_size ) );
239 break; 239 break;
240 } 240 }
241} 241}
242 242
243blargg_err_t Sgc_set_sample_rate( struct Sgc_Emu* this, int rate ) 243blargg_err_t Sgc_set_sample_rate( struct Sgc_Emu* this, int rate )
244{ 244{
245 require( !this->sample_rate ); // sample rate can't be changed once set 245 require( !this->sample_rate ); // sample rate can't be changed once set
246 Buffer_init( &this->stereo_buf ); 246 Buffer_init( &this->stereo_buf );
247 Buffer_set_sample_rate( &this->stereo_buf, rate, 1000 / 20 ); 247 Buffer_set_sample_rate( &this->stereo_buf, rate, 1000 / 20 );
248 248
249 // Set buffer bass 249 // Set buffer bass
250 Buffer_bass_freq( &this->stereo_buf, 80 ); 250 Buffer_bass_freq( &this->stereo_buf, 80 );
251 251
252 this->sample_rate = rate; 252 this->sample_rate = rate;
253 RETURN_ERR( track_init( &this->track_filter, this ) ); 253 RETURN_ERR( track_init( &this->track_filter, this ) );
254 this->tfilter.max_silence = 6 * stereo * this->sample_rate; 254 this->tfilter.max_silence = 6 * stereo * this->sample_rate;
255 return 0; 255 return 0;
256} 256}
257 257
258void Sound_mute_voice( struct Sgc_Emu* this, int index, bool mute ) 258void Sound_mute_voice( struct Sgc_Emu* this, int index, bool mute )
259{ 259{
260 require( (unsigned) index < (unsigned) this->voice_count ); 260 require( (unsigned) index < (unsigned) this->voice_count );
261 int bit = 1 << index; 261 int bit = 1 << index;
262 int mask = this->mute_mask_ | bit; 262 int mask = this->mute_mask_ | bit;
263 if ( !mute ) 263 if ( !mute )
264 mask ^= bit; 264 mask ^= bit;
265 Sound_mute_voices( this, mask ); 265 Sound_mute_voices( this, mask );
266} 266}
267 267
268void Sound_mute_voices( struct Sgc_Emu* this, int mask ) 268void Sound_mute_voices( struct Sgc_Emu* this, int mask )
269{ 269{
270 require( this->sample_rate ); // sample rate must be set first 270 require( this->sample_rate ); // sample rate must be set first
271 this->mute_mask_ = mask; 271 this->mute_mask_ = mask;
272 272
273 int i; 273 int i;
274 for ( i = this->voice_count; i--; ) 274 for ( i = this->voice_count; i--; )
275 { 275 {
276 if ( mask & (1 << i) ) 276 if ( mask & (1 << i) )
277 { 277 {
278 Sound_set_voice( this, i, 0, 0, 0 ); 278 Sound_set_voice( this, i, 0, 0, 0 );
279 } 279 }
280 else 280 else
281 { 281 {
282 struct channel_t ch = Buffer_channel( &this->stereo_buf, i ); 282 struct channel_t ch = Buffer_channel( &this->stereo_buf, i );
283 assert( (ch.center && ch.left && ch.right) || 283 assert( (ch.center && ch.left && ch.right) ||
284 (!ch.center && !ch.left && !ch.right) ); // all or nothing 284 (!ch.center && !ch.left && !ch.right) ); // all or nothing
285 Sound_set_voice( this, i, ch.center, ch.left, ch.right ); 285 Sound_set_voice( this, i, ch.center, ch.left, ch.right );
286 } 286 }
287 } 287 }
288} 288}
289 289
290void Sound_set_tempo( struct Sgc_Emu* this, int t ) 290void Sound_set_tempo( struct Sgc_Emu* this, int t )
291{ 291{
292 require( this->sample_rate ); // sample rate must be set first 292 require( this->sample_rate ); // sample rate must be set first
293 int const min = (int)(FP_ONE_TEMPO*0.02); 293 int const min = (int)(FP_ONE_TEMPO*0.02);
294 int const max = (int)(FP_ONE_TEMPO*4.00); 294 int const max = (int)(FP_ONE_TEMPO*4.00);
295 if ( t < min ) t = min; 295 if ( t < min ) t = min;
296 if ( t > max ) t = max; 296 if ( t > max ) t = max;
297 this->tempo = t; 297 this->tempo = t;
298 298
299 this->play_period = (int) ((clock_rate( this ) * FP_ONE_TEMPO) / (this->header.rate ? 50 : 60) / t); 299 this->play_period = (int) ((clock_rate( this ) * FP_ONE_TEMPO) / (this->header.rate ? 50 : 60) / t);
300} 300}
301 301
302blargg_err_t Sgc_start_track( struct Sgc_Emu* this, int track ) 302blargg_err_t Sgc_start_track( struct Sgc_Emu* this, int track )
303{ 303{
304 clear_track_vars( this ); 304 clear_track_vars( this );
305 305
306 // Remap track if playlist available 306 // Remap track if playlist available
307 if ( this->m3u.size > 0 ) { 307 if ( this->m3u.size > 0 ) {
308 struct entry_t* e = &this->m3u.entries[track]; 308 struct entry_t* e = &this->m3u.entries[track];
309 track = e->track; 309 track = e->track;
310 } 310 }
311 311
312 this->current_track = track; 312 this->current_track = track;
313 313
314 if ( sega_mapping( this ) ) 314 if ( sega_mapping( this ) )
315 { 315 {
316 Sms_apu_reset( &this->apu, 0, 0 ); 316 Sms_apu_reset( &this->apu, 0, 0 );
317 Fm_apu_reset( &this->fm_apu ); 317 Fm_apu_reset( &this->fm_apu );
318 this->fm_accessed = false; 318 this->fm_accessed = false;
319 } 319 }
320 else 320 else
321 { 321 {
322 Sms_apu_reset( &this->apu, 0x0003, 15 ); 322 Sms_apu_reset( &this->apu, 0x0003, 15 );
323 } 323 }
324 324
325 memset( this->ram , 0, sizeof this->ram ); 325 memset( this->ram , 0, sizeof this->ram );
326 memset( this->ram2, 0, sizeof this->ram2 ); 326 memset( this->ram2, 0, sizeof this->ram2 );
327 memset( this->vectors, 0xFF, sizeof this->vectors ); 327 memset( this->vectors, 0xFF, sizeof this->vectors );
328 Z80_reset( &this->cpu, this->unmapped_write, this->rom.unmapped ); 328 Z80_reset( &this->cpu, this->unmapped_write, this->rom.unmapped );
329 329
330 if ( sega_mapping( this ) ) 330 if ( sega_mapping( this ) )
331 { 331 {
332 this->vectors_addr = 0x10000 - page_size; 332 this->vectors_addr = 0x10000 - page_size;
333 this->idle_addr = this->vectors_addr; 333 this->idle_addr = this->vectors_addr;
334 int i; 334 int i;
335 for ( i = 1; i < 8; ++i ) 335 for ( i = 1; i < 8; ++i )
336 { 336 {
337 this->vectors [i*8 + 0] = 0xC3; // JP addr 337 this->vectors [i*8 + 0] = 0xC3; // JP addr
338 this->vectors [i*8 + 1] = this->header.rst_addrs [i - 1] & 0xff; 338 this->vectors [i*8 + 1] = this->header.rst_addrs [i - 1] & 0xff;
339 this->vectors [i*8 + 2] = this->header.rst_addrs [i - 1] >> 8; 339 this->vectors [i*8 + 2] = this->header.rst_addrs [i - 1] >> 8;
340 } 340 }
341 341
342 Z80_map_mem_rw( &this->cpu, 0xC000, 0x2000, this->ram ); 342 Z80_map_mem_rw( &this->cpu, 0xC000, 0x2000, this->ram );
343 Z80_map_mem( &this->cpu, this->vectors_addr, page_size, this->unmapped_write, this->vectors ); 343 Z80_map_mem( &this->cpu, this->vectors_addr, page_size, this->unmapped_write, this->vectors );
344 344
345 this->bank2 = NULL; 345 this->bank2 = NULL;
346 for ( i = 0; i < 4; ++i ) 346 for ( i = 0; i < 4; ++i )
347 cpu_write( this, 0xFFFC + i, this->header.mapping [i] ); 347 cpu_write( this, 0xFFFC + i, this->header.mapping [i] );
348 } 348 }
349 else 349 else
350 { 350 {
351 if ( !this->coleco_bios ) 351 if ( !this->coleco_bios )
352 return "Coleco BIOS not set"; /* BLARGG_ERR( BLARGG_ERR_CALLER, "Coleco BIOS not set" ); */ 352 return "Coleco BIOS not set"; /* BLARGG_ERR( BLARGG_ERR_CALLER, "Coleco BIOS not set" ); */
353 353
354 this->vectors_addr = 0; 354 this->vectors_addr = 0;
355 Z80_map_mem( &this->cpu, 0, 0x2000, this->unmapped_write, this->coleco_bios ); 355 Z80_map_mem( &this->cpu, 0, 0x2000, this->unmapped_write, this->coleco_bios );
356 int i; 356 int i;
357 for ( i = 0; i < 8; ++i ) 357 for ( i = 0; i < 8; ++i )
358 Z80_map_mem_rw( &this->cpu, 0x6000 + i*0x400, 0x400, this->ram ); 358 Z80_map_mem_rw( &this->cpu, 0x6000 + i*0x400, 0x400, this->ram );
359 359
360 this->idle_addr = 0x2000; 360 this->idle_addr = 0x2000;
361 Z80_map_mem( &this->cpu, 0x2000, page_size, this->unmapped_write, this->vectors ); 361 Z80_map_mem( &this->cpu, 0x2000, page_size, this->unmapped_write, this->vectors );
362 362
363 for ( i = 0; i < 0x8000 / this->rom.bank_size; ++i ) 363 for ( i = 0; i < 0x8000 / this->rom.bank_size; ++i )
364 { 364 {
365 int addr = 0x8000 + i*this->rom.bank_size; 365 int addr = 0x8000 + i*this->rom.bank_size;
366 Z80_map_mem( &this->cpu, addr, this->rom.bank_size, this->unmapped_write, Rom_at_addr( &this->rom, addr ) ); 366 Z80_map_mem( &this->cpu, addr, this->rom.bank_size, this->unmapped_write, Rom_at_addr( &this->rom, addr ) );
367 } 367 }
368 } 368 }
369 369
370 this->cpu.r.sp = get_le16( this->header.stack_ptr ); 370 this->cpu.r.sp = get_le16( this->header.stack_ptr );
371 this->cpu.r.b.a = track; 371 this->cpu.r.b.a = track;
372 this->next_play = this->play_period; 372 this->next_play = this->play_period;
373 373
374 jsr( this, this->header.init_addr ); 374 jsr( this, this->header.init_addr );
375 375
376 Buffer_clear( &this->stereo_buf ); 376 Buffer_clear( &this->stereo_buf );
377 377
378 // convert filter times to samples 378 // convert filter times to samples
379 struct setup_t s = this->tfilter; 379 struct setup_t s = this->tfilter;
380 s.max_initial *= this->sample_rate * stereo; 380 s.max_initial *= this->sample_rate * stereo;
381 #ifdef GME_DISABLE_SILENCE_LOOKAHEAD 381 #ifdef GME_DISABLE_SILENCE_LOOKAHEAD
382 s.lookahead = 1; 382 s.lookahead = 1;
383 #endif 383 #endif
384 track_setup( &this->track_filter, &s ); 384 track_setup( &this->track_filter, &s );
385 385
386 return track_start( &this->track_filter ); 386 return track_start( &this->track_filter );
387} 387}
388 388
389// Tell/Seek 389// Tell/Seek
390 390
391static int msec_to_samples( int msec, int sample_rate ) 391static int msec_to_samples( int msec, int sample_rate )
392{ 392{
393 int sec = msec / 1000; 393 int sec = msec / 1000;
394 msec -= sec * 1000; 394 msec -= sec * 1000;
395 return (sec * sample_rate + msec * sample_rate / 1000) * stereo; 395 return (sec * sample_rate + msec * sample_rate / 1000) * stereo;
396} 396}
397 397
398int Track_tell( struct Sgc_Emu* this ) 398int Track_tell( struct Sgc_Emu* this )
399{ 399{
400 int rate = this->sample_rate * stereo; 400 int rate = this->sample_rate * stereo;
401 int sec = track_sample_count( &this->track_filter ) / rate; 401 int sec = track_sample_count( &this->track_filter ) / rate;
402 return sec * 1000 + (track_sample_count( &this->track_filter ) - sec * rate) * 1000 / rate; 402 return sec * 1000 + (track_sample_count( &this->track_filter ) - sec * rate) * 1000 / rate;
403} 403}
404 404
405blargg_err_t Track_seek( struct Sgc_Emu* this, int msec ) 405blargg_err_t Track_seek( struct Sgc_Emu* this, int msec )
406{ 406{
407 int time = msec_to_samples( msec, this->sample_rate ); 407 int time = msec_to_samples( msec, this->sample_rate );
408 if ( time < track_sample_count( &this->track_filter ) ) 408 if ( time < track_sample_count( &this->track_filter ) )
409 RETURN_ERR( Sgc_start_track( this, this->current_track ) ); 409 RETURN_ERR( Sgc_start_track( this, this->current_track ) );
410 return Track_skip( this, time - track_sample_count( &this->track_filter ) ); 410 return Track_skip( this, time - track_sample_count( &this->track_filter ) );
411} 411}
412 412
413blargg_err_t Track_skip( struct Sgc_Emu* this, int count ) 413blargg_err_t Track_skip( struct Sgc_Emu* this, int count )
414{ 414{
415 require( this->current_track >= 0 ); // start_track() must have been called already 415 require( this->current_track >= 0 ); // start_track() must have been called already
416 return track_skip( &this->track_filter, count ); 416 return track_skip( &this->track_filter, count );
417} 417}
418 418
419blargg_err_t skip_( void* emu, int count ) 419blargg_err_t skip_( void* emu, int count )
420{ 420{
421 struct Sgc_Emu* this = (struct Sgc_Emu*) emu; 421 struct Sgc_Emu* this = (struct Sgc_Emu*) emu;
422 422
423 // for long skip, mute sound 423 // for long skip, mute sound
424 const int threshold = 32768; 424 const int threshold = 32768;
425 if ( count > threshold ) 425 if ( count > threshold )
426 { 426 {
427 int saved_mute = this->mute_mask_; 427 int saved_mute = this->mute_mask_;
428 Sound_mute_voices( this, ~0 ); 428 Sound_mute_voices( this, ~0 );
429 429
430 int n = count - threshold/2; 430 int n = count - threshold/2;
431 n &= ~(2048-1); // round to multiple of 2048 431 n &= ~(2048-1); // round to multiple of 2048
432 count -= n; 432 count -= n;
433 RETURN_ERR( skippy_( &this->track_filter, n ) ); 433 RETURN_ERR( skippy_( &this->track_filter, n ) );
434 434
435 Sound_mute_voices( this, saved_mute ); 435 Sound_mute_voices( this, saved_mute );
436 } 436 }
437 437
438 return skippy_( &this->track_filter, count ); 438 return skippy_( &this->track_filter, count );
439} 439}
440 440
441void Track_set_fade( struct Sgc_Emu* this, int start_msec, int length_msec ) 441void Track_set_fade( struct Sgc_Emu* this, int start_msec, int length_msec )
442{ 442{
443 track_set_fade( &this->track_filter, msec_to_samples( start_msec, this->sample_rate ), 443 track_set_fade( &this->track_filter, msec_to_samples( start_msec, this->sample_rate ),
444 length_msec * this->sample_rate / (1000 / stereo) ); 444 length_msec * this->sample_rate / (1000 / stereo) );
445} 445}
446 446
447blargg_err_t Sgc_play( struct Sgc_Emu* this, int out_count, sample_t* out ) 447blargg_err_t Sgc_play( struct Sgc_Emu* this, int out_count, sample_t* out )
448{ 448{
449 require( this->current_track >= 0 ); 449 require( this->current_track >= 0 );
450 require( out_count % stereo == 0 ); 450 require( out_count % stereo == 0 );
451 return track_play( &this->track_filter, out_count, out ); 451 return track_play( &this->track_filter, out_count, out );
452} 452}
453 453
454blargg_err_t play_( void* emu, int count, sample_t out [] ) 454blargg_err_t play_( void* emu, int count, sample_t out [] )
455{ 455{
456 struct Sgc_Emu* this = (struct Sgc_Emu*) emu; 456 struct Sgc_Emu* this = (struct Sgc_Emu*) emu;
457 457
458 int remain = count; 458 int remain = count;
459 while ( remain ) 459 while ( remain )
460 { 460 {
461 Buffer_disable_immediate_removal( &this->stereo_buf ); 461 Buffer_disable_immediate_removal( &this->stereo_buf );
462 remain -= Buffer_read_samples( &this->stereo_buf, &out [count - remain], remain ); 462 remain -= Buffer_read_samples( &this->stereo_buf, &out [count - remain], remain );
463 if ( remain ) 463 if ( remain )
464 { 464 {
465 if ( this->buf_changed_count != Buffer_channels_changed_count( &this->stereo_buf ) ) 465 if ( this->buf_changed_count != Buffer_channels_changed_count( &this->stereo_buf ) )
466 { 466 {
467 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf ); 467 this->buf_changed_count = Buffer_channels_changed_count( &this->stereo_buf );
468 468
469 // Remute voices 469 // Remute voices
470 Sound_mute_voices( this, this->mute_mask_ ); 470 Sound_mute_voices( this, this->mute_mask_ );
471 } 471 }
472 int msec = Buffer_length( &this->stereo_buf ); 472 int msec = Buffer_length( &this->stereo_buf );
473 blip_time_t clocks_emulated = msec * this->clock_rate_ / 1000 - 100; 473 blip_time_t clocks_emulated = msec * this->clock_rate_ / 1000 - 100;
474 RETURN_ERR( run_clocks( this, &clocks_emulated, msec ) ); 474 RETURN_ERR( run_clocks( this, &clocks_emulated, msec ) );
475 assert( clocks_emulated ); 475 assert( clocks_emulated );
476 Buffer_end_frame( &this->stereo_buf, clocks_emulated ); 476 Buffer_end_frame( &this->stereo_buf, clocks_emulated );
477 } 477 }
478 } 478 }
479 return 0; 479 return 0;
480} 480}
diff --git a/apps/codecs/libgme/sgc_emu.h b/apps/codecs/libgme/sgc_emu.h
index 6595c02daf..83cde1e6ae 100644
--- a/apps/codecs/libgme/sgc_emu.h
+++ b/apps/codecs/libgme/sgc_emu.h
@@ -1,195 +1,195 @@
1// Sega/Game Gear/Coleco SGC music file emulator 1// Sega/Game Gear/Coleco SGC music file emulator
2 2
3// Game_Music_Emu 0.6-pre 3// Game_Music_Emu 0.6-pre
4#ifndef SGC_EMU_H 4#ifndef SGC_EMU_H
5#define SGC_EMU_H 5#define SGC_EMU_H
6 6
7#include "blargg_common.h" 7#include "blargg_common.h"
8#include "multi_buffer.h" 8#include "multi_buffer.h"
9 9
10#include "rom_data.h" 10#include "rom_data.h"
11#include "z80_cpu.h" 11#include "z80_cpu.h"
12#include "sms_fm_apu.h" 12#include "sms_fm_apu.h"
13#include "sms_apu.h" 13#include "sms_apu.h"
14#include "m3u_playlist.h" 14#include "m3u_playlist.h"
15#include "track_filter.h" 15#include "track_filter.h"
16 16
17typedef struct Z80_Cpu Sgc_Cpu; 17typedef struct Z80_Cpu Sgc_Cpu;
18 18
19// SGC file header 19// SGC file header
20enum { header_size = 0xA0 }; 20enum { header_size = 0xA0 };
21struct header_t 21struct header_t
22{ 22{
23 char tag [4]; // "SGC\x1A" 23 char tag [4]; // "SGC\x1A"
24 byte vers; // 0x01 24 byte vers; // 0x01
25 byte rate; // 0=NTSC 1=PAL 25 byte rate; // 0=NTSC 1=PAL
26 byte reserved1 [2]; 26 byte reserved1 [2];
27 byte load_addr [2]; 27 byte load_addr [2];
28 byte init_addr [2]; 28 byte init_addr [2];
29 byte play_addr [2]; 29 byte play_addr [2];
30 byte stack_ptr [2]; 30 byte stack_ptr [2];
31 byte reserved2 [2]; 31 byte reserved2 [2];
32 byte rst_addrs [7*2]; 32 byte rst_addrs [7*2];
33 byte mapping [4]; // Used by Sega only 33 byte mapping [4]; // Used by Sega only
34 byte first_song; // Song to start playing first 34 byte first_song; // Song to start playing first
35 byte song_count; 35 byte song_count;
36 byte first_effect; 36 byte first_effect;
37 byte last_effect; 37 byte last_effect;
38 byte system; // 0=Master System 1=Game Gear 2=Colecovision 38 byte system; // 0=Master System 1=Game Gear 2=Colecovision
39 byte reserved3 [23]; 39 byte reserved3 [23];
40 char game [32]; // strings can be 32 chars, NOT terminated 40 char game [32]; // strings can be 32 chars, NOT terminated
41 char author [32]; 41 char author [32];
42 char copyright [32]; 42 char copyright [32];
43}; 43};
44 44
45// True if header has valid file signature 45// True if header has valid file signature
46static inline bool valid_tag( struct header_t* h ) 46static inline bool valid_tag( struct header_t* h )
47{ 47{
48 return 0 == memcmp( h->tag, "SGC\x1A", 4 ); 48 return 0 == memcmp( h->tag, "SGC\x1A", 4 );
49} 49}
50 50
51static inline int effect_count( struct header_t* h ) { return h->last_effect ? h->last_effect - h->first_effect + 1 : 0; } 51static inline int effect_count( struct header_t* h ) { return h->last_effect ? h->last_effect - h->first_effect + 1 : 0; }
52 52
53struct Sgc_Emu { 53struct Sgc_Emu {
54 bool fm_accessed; 54 bool fm_accessed;
55 55
56 cpu_time_t play_period; 56 cpu_time_t play_period;
57 cpu_time_t next_play; 57 cpu_time_t next_play;
58 void const* bank2; // ROM selected for bank 2, in case RAM is currently hiding it 58 void const* bank2; // ROM selected for bank 2, in case RAM is currently hiding it
59 addr_t vectors_addr; // RST vectors start here 59 addr_t vectors_addr; // RST vectors start here
60 addr_t idle_addr; // return address for init/play routines 60 addr_t idle_addr; // return address for init/play routines
61 void* coleco_bios; 61 void* coleco_bios;
62 62
63 // general 63 // general
64 int voice_count; 64 int voice_count;
65 int const* voice_types; 65 int const* voice_types;
66 int mute_mask_; 66 int mute_mask_;
67 int tempo; 67 int tempo;
68 int gain; 68 int gain;
69 69
70 int sample_rate; 70 int sample_rate;
71 71
72 // track-specific 72 // track-specific
73 int current_track; 73 int current_track;
74 int track_count; 74 int track_count;
75 75
76 int clock_rate_; 76 int clock_rate_;
77 unsigned buf_changed_count; 77 unsigned buf_changed_count;
78 78
79 // M3u Playlist 79 // M3u Playlist
80 struct M3u_Playlist m3u; 80 struct M3u_Playlist m3u;
81 struct header_t header; 81 struct header_t header;
82 82
83 struct setup_t tfilter; 83 struct setup_t tfilter;
84 struct Track_Filter track_filter; 84 struct Track_Filter track_filter;
85 85
86 struct Multi_Buffer stereo_buf; 86 struct Multi_Buffer stereo_buf;
87 87
88 struct Sms_Apu apu; 88 struct Sms_Apu apu;
89 struct Sms_Fm_Apu fm_apu; 89 struct Sms_Fm_Apu fm_apu;
90 90
91 Sgc_Cpu cpu; 91 Sgc_Cpu cpu;
92 92
93 // large items 93 // large items
94 struct Rom_Data rom; 94 struct Rom_Data rom;
95 byte vectors [page_size + page_padding]; 95 byte vectors [page_size + page_padding];
96 byte unmapped_write [0x4000]; 96 byte unmapped_write [0x4000];
97 byte ram [0x2000 + page_padding]; 97 byte ram [0x2000 + page_padding];
98 byte ram2 [0x4000 + page_padding]; 98 byte ram2 [0x4000 + page_padding];
99}; 99};
100 100
101// Basic functionality (see Gme_File.h for file loading/track info functions) 101// Basic functionality (see Gme_File.h for file loading/track info functions)
102 102
103void Sgc_init( struct Sgc_Emu* this ); 103void Sgc_init( struct Sgc_Emu* this );
104 104
105blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size ); 105blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size );
106 106
107static inline int clock_rate( struct Sgc_Emu* this ) { return this->header.rate ? 3546893 : 3579545; } 107static inline int clock_rate( struct Sgc_Emu* this ) { return this->header.rate ? 3546893 : 3579545; }
108 108
109// 0x2000 bytes 109// 0x2000 bytes
110static inline void set_coleco_bios( struct Sgc_Emu* this, void* p ) { this->coleco_bios = p; } 110static inline void set_coleco_bios( struct Sgc_Emu* this, void* p ) { this->coleco_bios = p; }
111 111
112// Set output sample rate. Must be called only once before loading file. 112// Set output sample rate. Must be called only once before loading file.
113blargg_err_t Sgc_set_sample_rate( struct Sgc_Emu* this, int sample_rate ); 113blargg_err_t Sgc_set_sample_rate( struct Sgc_Emu* this, int sample_rate );
114 114
115// Start a track, where 0 is the first track. Also clears warning string. 115// Start a track, where 0 is the first track. Also clears warning string.
116blargg_err_t Sgc_start_track( struct Sgc_Emu* this, int track ); 116blargg_err_t Sgc_start_track( struct Sgc_Emu* this, int track );
117 117
118// Generate 'count' samples info 'buf'. Output is in stereo. Any emulation 118// Generate 'count' samples info 'buf'. Output is in stereo. Any emulation
119// errors set warning string, and major errors also end track. 119// errors set warning string, and major errors also end track.
120blargg_err_t Sgc_play( struct Sgc_Emu* this, int count, sample_t* buf ); 120blargg_err_t Sgc_play( struct Sgc_Emu* this, int count, sample_t* buf );
121 121
122// Track status/control 122// Track status/control
123 123
124// Number of milliseconds (1000 msec = 1 second) played since beginning of track 124// Number of milliseconds (1000 msec = 1 second) played since beginning of track
125int Track_tell( struct Sgc_Emu* this ); 125int Track_tell( struct Sgc_Emu* this );
126 126
127// Seek to new time in track. Seeking backwards or far forward can take a while. 127// Seek to new time in track. Seeking backwards or far forward can take a while.
128blargg_err_t Track_seek( struct Sgc_Emu* this, int msec ); 128blargg_err_t Track_seek( struct Sgc_Emu* this, int msec );
129 129
130// Skip n samples 130// Skip n samples
131blargg_err_t Track_skip( struct Sgc_Emu* this, int n ); 131blargg_err_t Track_skip( struct Sgc_Emu* this, int n );
132 132
133// Set start time and length of track fade out. Once fade ends track_ended() returns 133// Set start time and length of track fade out. Once fade ends track_ended() returns
134// true. Fade time can be changed while track is playing. 134// true. Fade time can be changed while track is playing.
135void Track_set_fade( struct Sgc_Emu* this, int start_msec, int length_msec ); 135void Track_set_fade( struct Sgc_Emu* this, int start_msec, int length_msec );
136 136
137// True if a track has reached its end 137// True if a track has reached its end
138static inline bool Track_ended( struct Sgc_Emu* this ) 138static inline bool Track_ended( struct Sgc_Emu* this )
139{ 139{
140 return track_ended( &this->track_filter ); 140 return track_ended( &this->track_filter );
141} 141}
142 142
143// Disables automatic end-of-track detection and skipping of silence at beginning 143// Disables automatic end-of-track detection and skipping of silence at beginning
144static inline void Track_ignore_silence( struct Sgc_Emu* this, bool disable ) 144static inline void Track_ignore_silence( struct Sgc_Emu* this, bool disable )
145{ 145{
146 this->track_filter.silence_ignored_ = disable; 146 this->track_filter.silence_ignored_ = disable;
147} 147}
148 148
149// Get track length in milliseconds 149// Get track length in milliseconds
150static inline int Track_get_length( struct Sgc_Emu* this, int n ) 150static inline int Track_get_length( struct Sgc_Emu* this, int n )
151{ 151{
152 int length = 120 * 1000; /* 2 minutes */ 152 int length = 120 * 1000; /* 2 minutes */
153 if ( (this->m3u.size > 0) && (n < this->m3u.size) ) { 153 if ( (this->m3u.size > 0) && (n < this->m3u.size) ) {
154 struct entry_t* entry = &this->m3u.entries [n]; 154 struct entry_t* entry = &this->m3u.entries [n];
155 length = entry->length; 155 length = entry->length;
156 } 156 }
157 157
158 return length; 158 return length;
159} 159}
160 160
161// Sound customization 161// Sound customization
162 162
163// Adjust song tempo, where 1.0 = normal, 0.5 = half speed, 2.0 = double speed. 163// Adjust song tempo, where 1.0 = normal, 0.5 = half speed, 2.0 = double speed.
164// Track length as returned by track_info() assumes a tempo of 1.0. 164// Track length as returned by track_info() assumes a tempo of 1.0.
165void Sound_set_tempo( struct Sgc_Emu* this, int t ); 165void Sound_set_tempo( struct Sgc_Emu* this, int t );
166 166
167// Mute/unmute voice i, where voice 0 is first voice 167// Mute/unmute voice i, where voice 0 is first voice
168void Sound_mute_voice( struct Sgc_Emu* this, int index, bool mute ); 168void Sound_mute_voice( struct Sgc_Emu* this, int index, bool mute );
169 169
170// Set muting state of all voices at once using a bit mask, where -1 mutes them all, 170// Set muting state of all voices at once using a bit mask, where -1 mutes them all,
171// 0 unmutes them all, 0x01 mutes just the first voice, etc. 171// 0 unmutes them all, 0x01 mutes just the first voice, etc.
172void Sound_mute_voices( struct Sgc_Emu* this, int mask ); 172void Sound_mute_voices( struct Sgc_Emu* this, int mask );
173 173
174// Change overall output amplitude, where 1.0 results in minimal clamping. 174// Change overall output amplitude, where 1.0 results in minimal clamping.
175// Must be called before set_sample_rate(). 175// Must be called before set_sample_rate().
176static inline void Sound_set_gain( struct Sgc_Emu* this, int g ) 176static inline void Sound_set_gain( struct Sgc_Emu* this, int g )
177{ 177{
178 assert( !this->sample_rate ); // you must set gain before setting sample rate 178 assert( !this->sample_rate ); // you must set gain before setting sample rate
179 this->gain = g; 179 this->gain = g;
180} 180}
181 181
182// True if Master System or Game Gear 182// True if Master System or Game Gear
183static inline bool sega_mapping( struct Sgc_Emu* this ) 183static inline bool sega_mapping( struct Sgc_Emu* this )
184{ 184{
185 return this->header.system <= 1; 185 return this->header.system <= 1;
186} 186}
187 187
188// Emulation (You shouldn't touch these) 188// Emulation (You shouldn't touch these)
189 189
190bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time ); 190bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time );
191void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data ); 191void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data );
192void cpu_write( struct Sgc_Emu* this, addr_t addr, int data ); 192void cpu_write( struct Sgc_Emu* this, addr_t addr, int data );
193void jsr( struct Sgc_Emu* this, byte addr [2] ); 193void jsr( struct Sgc_Emu* this, byte addr [2] );
194 194
195#endif 195#endif
diff --git a/apps/codecs/libgme/sms_fm_apu.c b/apps/codecs/libgme/sms_fm_apu.c
index 6fd00545d6..ee5ce48932 100644
--- a/apps/codecs/libgme/sms_fm_apu.c
+++ b/apps/codecs/libgme/sms_fm_apu.c
@@ -1,82 +1,82 @@
1#include "sms_fm_apu.h" 1#include "sms_fm_apu.h"
2 2
3#include "blargg_source.h" 3#include "blargg_source.h"
4 4
5void Fm_apu_create( struct Sms_Fm_Apu* this ) 5void Fm_apu_create( struct Sms_Fm_Apu* this )
6{ 6{
7 Synth_init( &this->synth ); 7 Synth_init( &this->synth );
8 Ym2413_init( &this->apu ); 8 Ym2413_init( &this->apu );
9} 9}
10 10
11blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate ) 11blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate )
12{ 12{
13 this->period_ = (blip_time_t) (clock_rate / sample_rate); 13 this->period_ = (blip_time_t) (clock_rate / sample_rate);
14 CHECK_ALLOC( !Ym2413_set_rate( &this->apu, sample_rate, clock_rate ) ); 14 CHECK_ALLOC( !Ym2413_set_rate( &this->apu, sample_rate, clock_rate ) );
15 15
16 Fm_apu_set_output( this, 0 ); 16 Fm_apu_set_output( this, 0 );
17 Fm_apu_volume( this, (int)FP_ONE_VOLUME ); 17 Fm_apu_volume( this, (int)FP_ONE_VOLUME );
18 Fm_apu_reset( this ); 18 Fm_apu_reset( this );
19 return 0; 19 return 0;
20} 20}
21 21
22void Fm_apu_reset( struct Sms_Fm_Apu* this ) 22void Fm_apu_reset( struct Sms_Fm_Apu* this )
23{ 23{
24 this->addr = 0; 24 this->addr = 0;
25 this->next_time = 0; 25 this->next_time = 0;
26 this->last_amp = 0; 26 this->last_amp = 0;
27 27
28 Ym2413_reset( &this->apu ); 28 Ym2413_reset( &this->apu );
29} 29}
30 30
31void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time ); 31void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time );
32void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t time, int data ) 32void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t time, int data )
33{ 33{
34 if ( time > this->next_time ) 34 if ( time > this->next_time )
35 fm_run_until( this, time ); 35 fm_run_until( this, time );
36 36
37 Ym2413_write( &this->apu, this->addr, data ); 37 Ym2413_write( &this->apu, this->addr, data );
38} 38}
39 39
40void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time ) 40void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time )
41{ 41{
42 assert( end_time > this->next_time ); 42 assert( end_time > this->next_time );
43 43
44 struct Blip_Buffer* const output = this->output_; 44 struct Blip_Buffer* const output = this->output_;
45 if ( !output ) 45 if ( !output )
46 { 46 {
47 this->next_time = end_time; 47 this->next_time = end_time;
48 return; 48 return;
49 } 49 }
50 50
51 blip_time_t time = this->next_time; 51 blip_time_t time = this->next_time;
52 struct Ym2413_Emu* emu = &this->apu; 52 struct Ym2413_Emu* emu = &this->apu;
53 do 53 do
54 { 54 {
55 short samples [2]; 55 short samples [2];
56 Ym2413_run( emu, 1, samples ); 56 Ym2413_run( emu, 1, samples );
57 int amp = (samples [0] + samples [1]) >> 1; 57 int amp = (samples [0] + samples [1]) >> 1;
58 58
59 int delta = amp - this->last_amp; 59 int delta = amp - this->last_amp;
60 if ( delta ) 60 if ( delta )
61 { 61 {
62 this->last_amp = amp; 62 this->last_amp = amp;
63 Synth_offset_inline( &this->synth, time, delta, output ); 63 Synth_offset_inline( &this->synth, time, delta, output );
64 } 64 }
65 time += this->period_; 65 time += this->period_;
66 } 66 }
67 while ( time < end_time ); 67 while ( time < end_time );
68 68
69 this->next_time = time; 69 this->next_time = time;
70} 70}
71 71
72void Fm_apu_end_frame( struct Sms_Fm_Apu* this, blip_time_t time ) 72void Fm_apu_end_frame( struct Sms_Fm_Apu* this, blip_time_t time )
73{ 73{
74 if ( time > this->next_time ) 74 if ( time > this->next_time )
75 fm_run_until( this, time ); 75 fm_run_until( this, time );
76 76
77 this->next_time -= time; 77 this->next_time -= time;
78 assert( this->next_time >= 0 ); 78 assert( this->next_time >= 0 );
79 79
80 if ( this->output_ ) 80 if ( this->output_ )
81 Blip_set_modified( this->output_ ); 81 Blip_set_modified( this->output_ );
82} 82}
diff --git a/apps/codecs/libgme/sms_fm_apu.h b/apps/codecs/libgme/sms_fm_apu.h
index 00bc2b409c..921db6cef1 100644
--- a/apps/codecs/libgme/sms_fm_apu.h
+++ b/apps/codecs/libgme/sms_fm_apu.h
@@ -1,43 +1,43 @@
1#ifndef SMS_FM_APU_H 1#ifndef SMS_FM_APU_H
2#define SMS_FM_APU_H 2#define SMS_FM_APU_H
3 3
4#include "blargg_common.h" 4#include "blargg_common.h"
5#include "blip_buffer.h" 5#include "blip_buffer.h"
6#include "ym2413_emu.h" 6#include "ym2413_emu.h"
7 7
8enum { fm_apu_osc_count = 1 }; 8enum { fm_apu_osc_count = 1 };
9 9
10struct Sms_Fm_Apu { 10struct Sms_Fm_Apu {
11 struct Blip_Buffer* output_; 11 struct Blip_Buffer* output_;
12 blip_time_t next_time; 12 blip_time_t next_time;
13 int last_amp; 13 int last_amp;
14 int addr; 14 int addr;
15 15
16 int clock_; 16 int clock_;
17 int rate_; 17 int rate_;
18 blip_time_t period_; 18 blip_time_t period_;
19 19
20 struct Blip_Synth synth; 20 struct Blip_Synth synth;
21 struct Ym2413_Emu apu; 21 struct Ym2413_Emu apu;
22}; 22};
23 23
24void Fm_apu_create( struct Sms_Fm_Apu* this ); 24void Fm_apu_create( struct Sms_Fm_Apu* this );
25 25
26static inline bool Fm_apu_supported( void ) { return Ym2413_supported(); } 26static inline bool Fm_apu_supported( void ) { return Ym2413_supported(); }
27blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate ); 27blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate );
28 28
29static inline void Fm_apu_set_output( struct Sms_Fm_Apu* this, struct Blip_Buffer* b ) 29static inline void Fm_apu_set_output( struct Sms_Fm_Apu* this, struct Blip_Buffer* b )
30{ 30{
31 this->output_ = b; 31 this->output_ = b;
32} 32}
33 33
34static inline void Fm_apu_volume( struct Sms_Fm_Apu* this, int v ) { Synth_volume( &this->synth, (v*2) / 5 / 4096 ); } 34static inline void Fm_apu_volume( struct Sms_Fm_Apu* this, int v ) { Synth_volume( &this->synth, (v*2) / 5 / 4096 ); }
35 35
36void Fm_apu_reset( struct Sms_Fm_Apu* this ); 36void Fm_apu_reset( struct Sms_Fm_Apu* this );
37 37
38static inline void Fm_apu_write_addr( struct Sms_Fm_Apu* this, int data ) { this->addr = data; } 38static inline void Fm_apu_write_addr( struct Sms_Fm_Apu* this, int data ) { this->addr = data; }
39void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t, int data ); 39void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t, int data );
40 40
41void Fm_apu_end_frame( struct Sms_Fm_Apu* this, blip_time_t t ); 41void Fm_apu_end_frame( struct Sms_Fm_Apu* this, blip_time_t t );
42 42
43#endif 43#endif
diff --git a/apps/codecs/libgme/track_filter.c b/apps/codecs/libgme/track_filter.c
index 4776dcc7df..d0d75f2ded 100644
--- a/apps/codecs/libgme/track_filter.c
+++ b/apps/codecs/libgme/track_filter.c
@@ -1,294 +1,294 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3#include "track_filter.h" 3#include "track_filter.h"
4 4
5/* Copyright (C) 2003-2008 Shay Green. This module is free software; you 5/* Copyright (C) 2003-2008 Shay Green. This module is free software; you
6can redistribute it and/or modify it under the terms of the GNU Lesser 6can redistribute it and/or modify it under the terms of the GNU Lesser
7General Public License as published by the Free Software Foundation; either 7General Public License as published by the Free Software Foundation; either
8version 2.1 of the License, or (at your option) any later version. This 8version 2.1 of the License, or (at your option) any later version. This
9module is distributed in the hope that it will be useful, but WITHOUT ANY 9module is distributed in the hope that it will be useful, but WITHOUT ANY
10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 10WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 11FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12details. You should have received a copy of the GNU Lesser General Public 12details. You should have received a copy of the GNU Lesser General Public
13License along with this module; if not, write to the Free Software Foundation, 13License along with this module; if not, write to the Free Software Foundation,
14Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 14Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
15 15
16#include "blargg_source.h" 16#include "blargg_source.h"
17 17
18int const fade_block_size = 512; 18int const fade_block_size = 512;
19int const fade_shift = 8; // fade ends with gain at 1.0 / (1 << fade_shift) 19int const fade_shift = 8; // fade ends with gain at 1.0 / (1 << fade_shift)
20int const silence_threshold = 8; 20int const silence_threshold = 8;
21 21
22void track_create( struct Track_Filter* this ) 22void track_create( struct Track_Filter* this )
23{ 23{
24 this->emu_ = NULL; 24 this->emu_ = NULL;
25 this->setup_.max_initial = 0; 25 this->setup_.max_initial = 0;
26 this->setup_.lookahead = 0; 26 this->setup_.lookahead = 0;
27 this->setup_.max_silence = indefinite_count; 27 this->setup_.max_silence = indefinite_count;
28 this->silence_ignored_ = false; 28 this->silence_ignored_ = false;
29 track_stop( this ); 29 track_stop( this );
30} 30}
31 31
32blargg_err_t track_init( struct Track_Filter* this, void* emu ) 32blargg_err_t track_init( struct Track_Filter* this, void* emu )
33{ 33{
34 this->emu_ = emu; 34 this->emu_ = emu;
35 return 0; 35 return 0;
36} 36}
37 37
38static void clear_time_vars( struct Track_Filter* this ) 38static void clear_time_vars( struct Track_Filter* this )
39{ 39{
40 this->emu_time = this->buf_remain; 40 this->emu_time = this->buf_remain;
41 this->out_time = 0; 41 this->out_time = 0;
42 this->silence_time = 0; 42 this->silence_time = 0;
43 this->silence_count = 0; 43 this->silence_count = 0;
44} 44}
45 45
46void track_stop( struct Track_Filter* this ) 46void track_stop( struct Track_Filter* this )
47{ 47{
48 this->emu_track_ended_ = true; 48 this->emu_track_ended_ = true;
49 this->track_ended_ = true; 49 this->track_ended_ = true;
50 this->fade_start = indefinite_count; 50 this->fade_start = indefinite_count;
51 this->fade_step = 1; 51 this->fade_step = 1;
52 this->buf_remain = 0; 52 this->buf_remain = 0;
53 this->emu_error = NULL; 53 this->emu_error = NULL;
54 clear_time_vars( this ); 54 clear_time_vars( this );
55} 55}
56 56
57blargg_err_t track_start( struct Track_Filter* this ) 57blargg_err_t track_start( struct Track_Filter* this )
58{ 58{
59 this->emu_error = NULL; 59 this->emu_error = NULL;
60 track_stop( this ); 60 track_stop( this );
61 61
62 this->emu_track_ended_ = false; 62 this->emu_track_ended_ = false;
63 this->track_ended_ = false; 63 this->track_ended_ = false;
64 64
65 if ( !this->silence_ignored_ ) 65 if ( !this->silence_ignored_ )
66 { 66 {
67 // play until non-silence or end of track 67 // play until non-silence or end of track
68 while ( this->emu_time < this->setup_.max_initial ) 68 while ( this->emu_time < this->setup_.max_initial )
69 { 69 {
70 fill_buf( this ); 70 fill_buf( this );
71 if ( this->buf_remain | this->emu_track_ended_ ) 71 if ( this->buf_remain | this->emu_track_ended_ )
72 break; 72 break;
73 } 73 }
74 } 74 }
75 75
76 clear_time_vars( this ); 76 clear_time_vars( this );
77 return this->emu_error; 77 return this->emu_error;
78} 78}
79 79
80static void end_track_if_error( struct Track_Filter* this, blargg_err_t err ) 80static void end_track_if_error( struct Track_Filter* this, blargg_err_t err )
81{ 81{
82 if ( err ) 82 if ( err )
83 { 83 {
84 this->emu_error = err; 84 this->emu_error = err;
85 this->emu_track_ended_ = true; 85 this->emu_track_ended_ = true;
86 } 86 }
87} 87}
88 88
89blargg_err_t track_skip( struct Track_Filter* this, int count ) 89blargg_err_t track_skip( struct Track_Filter* this, int count )
90{ 90{
91 this->emu_error = NULL; 91 this->emu_error = NULL;
92 this->out_time += count; 92 this->out_time += count;
93 93
94 // remove from silence and buf first 94 // remove from silence and buf first
95 { 95 {
96 int n = min( count, this->silence_count ); 96 int n = min( count, this->silence_count );
97 this->silence_count -= n; 97 this->silence_count -= n;
98 count -= n; 98 count -= n;
99 99
100 n = min( count, this->buf_remain ); 100 n = min( count, this->buf_remain );
101 this->buf_remain -= n; 101 this->buf_remain -= n;
102 count -= n; 102 count -= n;
103 } 103 }
104 104
105 if ( count && !this->emu_track_ended_ ) 105 if ( count && !this->emu_track_ended_ )
106 { 106 {
107 this->emu_time += count; 107 this->emu_time += count;
108 this->silence_time = this->emu_time; // would otherwise be invalid 108 this->silence_time = this->emu_time; // would otherwise be invalid
109 end_track_if_error( this, skip_( this->emu_, count ) ); 109 end_track_if_error( this, skip_( this->emu_, count ) );
110 } 110 }
111 111
112 if ( !(this->silence_count | this->buf_remain) ) // caught up to emulator, so update track ended 112 if ( !(this->silence_count | this->buf_remain) ) // caught up to emulator, so update track ended
113 this->track_ended_ |= this->emu_track_ended_; 113 this->track_ended_ |= this->emu_track_ended_;
114 114
115 return this->emu_error; 115 return this->emu_error;
116} 116}
117 117
118blargg_err_t skippy_( struct Track_Filter* this, int count ) 118blargg_err_t skippy_( struct Track_Filter* this, int count )
119{ 119{
120 while ( count && !this->emu_track_ended_ ) 120 while ( count && !this->emu_track_ended_ )
121 { 121 {
122 int n = buf_size; 122 int n = buf_size;
123 if ( n > count ) 123 if ( n > count )
124 n = count; 124 n = count;
125 count -= n; 125 count -= n;
126 RETURN_ERR( play_( this->emu_, n, this->buf ) ); 126 RETURN_ERR( play_( this->emu_, n, this->buf ) );
127 } 127 }
128 return 0; 128 return 0;
129} 129}
130 130
131// Fading 131// Fading
132 132
133void track_set_fade( struct Track_Filter* this, int start, int length ) 133void track_set_fade( struct Track_Filter* this, int start, int length )
134{ 134{
135 this->fade_start = start; 135 this->fade_start = start;
136 this->fade_step = length / (fade_block_size * fade_shift); 136 this->fade_step = length / (fade_block_size * fade_shift);
137 if ( this->fade_step < 1 ) 137 if ( this->fade_step < 1 )
138 this->fade_step = 1; 138 this->fade_step = 1;
139} 139}
140 140
141static bool is_fading( struct Track_Filter* this ) 141static bool is_fading( struct Track_Filter* this )
142{ 142{
143 return this->out_time >= this->fade_start && this->fade_start != indefinite_count; 143 return this->out_time >= this->fade_start && this->fade_start != indefinite_count;
144} 144}
145 145
146// unit / pow( 2.0, (double) x / step ) 146// unit / pow( 2.0, (double) x / step )
147static int int_log( int x, int step, int unit ) 147static int int_log( int x, int step, int unit )
148{ 148{
149 int shift = x / step; 149 int shift = x / step;
150 int fraction = (x - shift * step) * unit / step; 150 int fraction = (x - shift * step) * unit / step;
151 return ((unit - fraction) + (fraction >> 1)) >> shift; 151 return ((unit - fraction) + (fraction >> 1)) >> shift;
152} 152}
153 153
154static void handle_fade( struct Track_Filter* this, sample_t out [], int out_count ) 154static void handle_fade( struct Track_Filter* this, sample_t out [], int out_count )
155{ 155{
156 int i; 156 int i;
157 for ( i = 0; i < out_count; i += fade_block_size ) 157 for ( i = 0; i < out_count; i += fade_block_size )
158 { 158 {
159 int const shift = 14; 159 int const shift = 14;
160 int const unit = 1 << shift; 160 int const unit = 1 << shift;
161 int gain = int_log( (this->out_time + i - this->fade_start) / fade_block_size, 161 int gain = int_log( (this->out_time + i - this->fade_start) / fade_block_size,
162 this->fade_step, unit ); 162 this->fade_step, unit );
163 if ( gain < (unit >> fade_shift) ) 163 if ( gain < (unit >> fade_shift) )
164 this->track_ended_ = this->emu_track_ended_ = true; 164 this->track_ended_ = this->emu_track_ended_ = true;
165 165
166 sample_t* io = &out [i]; 166 sample_t* io = &out [i];
167 for ( int count = min( fade_block_size, out_count - i ); count; --count ) 167 for ( int count = min( fade_block_size, out_count - i ); count; --count )
168 { 168 {
169 *io = (sample_t) ((*io * gain) >> shift); 169 *io = (sample_t) ((*io * gain) >> shift);
170 ++io; 170 ++io;
171 } 171 }
172 } 172 }
173} 173}
174 174
175// Silence detection 175// Silence detection
176 176
177static void emu_play( struct Track_Filter* this, sample_t out [], int count ) 177static void emu_play( struct Track_Filter* this, sample_t out [], int count )
178{ 178{
179 this->emu_time += count; 179 this->emu_time += count;
180 if ( !this->emu_track_ended_ ) 180 if ( !this->emu_track_ended_ )
181 end_track_if_error( this, play_( this->emu_, count, out ) ); 181 end_track_if_error( this, play_( this->emu_, count, out ) );
182 else 182 else
183 memset( out, 0, count * sizeof *out ); 183 memset( out, 0, count * sizeof *out );
184} 184}
185 185
186// number of consecutive silent samples at end 186// number of consecutive silent samples at end
187static int count_silence( sample_t begin [], int size ) 187static int count_silence( sample_t begin [], int size )
188{ 188{
189 sample_t first = *begin; 189 sample_t first = *begin;
190 *begin = silence_threshold * 2; // sentinel 190 *begin = silence_threshold * 2; // sentinel
191 sample_t* p = begin + size; 191 sample_t* p = begin + size;
192 while ( (unsigned) (*--p + silence_threshold) <= (unsigned) silence_threshold * 2 ) { } 192 while ( (unsigned) (*--p + silence_threshold) <= (unsigned) silence_threshold * 2 ) { }
193 *begin = first; 193 *begin = first;
194 return size - (p - begin); 194 return size - (p - begin);
195} 195}
196 196
197// fill internal buffer and check it for silence 197// fill internal buffer and check it for silence
198void fill_buf( struct Track_Filter* this ) 198void fill_buf( struct Track_Filter* this )
199{ 199{
200 assert( !this->buf_remain ); 200 assert( !this->buf_remain );
201 if ( !this->emu_track_ended_ ) 201 if ( !this->emu_track_ended_ )
202 { 202 {
203 emu_play( this, this->buf, buf_size ); 203 emu_play( this, this->buf, buf_size );
204 int silence = count_silence( this->buf, buf_size ); 204 int silence = count_silence( this->buf, buf_size );
205 if ( silence < buf_size ) 205 if ( silence < buf_size )
206 { 206 {
207 this->silence_time = this->emu_time - silence; 207 this->silence_time = this->emu_time - silence;
208 this->buf_remain = buf_size; 208 this->buf_remain = buf_size;
209 return; 209 return;
210 } 210 }
211 } 211 }
212 this->silence_count += buf_size; 212 this->silence_count += buf_size;
213} 213}
214 214
215blargg_err_t track_play( struct Track_Filter* this, int out_count, sample_t out [] ) 215blargg_err_t track_play( struct Track_Filter* this, int out_count, sample_t out [] )
216{ 216{
217 this->emu_error = NULL; 217 this->emu_error = NULL;
218 if ( this->track_ended_ ) 218 if ( this->track_ended_ )
219 { 219 {
220 memset( out, 0, out_count * sizeof *out ); 220 memset( out, 0, out_count * sizeof *out );
221 } 221 }
222 else 222 else
223 { 223 {
224 assert( this->emu_time >= this->out_time ); 224 assert( this->emu_time >= this->out_time );
225 225
226 // prints nifty graph of how far ahead we are when searching for silence 226 // prints nifty graph of how far ahead we are when searching for silence
227 //dprintf( "%*s \n", int ((emu_time - out_time) * 7 / 44100), "*" ); 227 //dprintf( "%*s \n", int ((emu_time - out_time) * 7 / 44100), "*" );
228 228
229 // use any remaining silence samples 229 // use any remaining silence samples
230 int pos = 0; 230 int pos = 0;
231 if ( this->silence_count ) 231 if ( this->silence_count )
232 { 232 {
233 if ( !this->silence_ignored_ ) 233 if ( !this->silence_ignored_ )
234 { 234 {
235 // during a run of silence, run emulator at >=2x speed so it gets ahead 235 // during a run of silence, run emulator at >=2x speed so it gets ahead
236 int ahead_time = this->setup_.lookahead * (this->out_time + out_count - this->silence_time) + 236 int ahead_time = this->setup_.lookahead * (this->out_time + out_count - this->silence_time) +
237 this->silence_time; 237 this->silence_time;
238 while ( this->emu_time < ahead_time && !(this->buf_remain | this->emu_track_ended_) ) 238 while ( this->emu_time < ahead_time && !(this->buf_remain | this->emu_track_ended_) )
239 fill_buf( this ); 239 fill_buf( this );
240 240
241 // end track if sufficient silence has been found 241 // end track if sufficient silence has been found
242 if ( this->emu_time - this->silence_time > this->setup_.max_silence ) 242 if ( this->emu_time - this->silence_time > this->setup_.max_silence )
243 { 243 {
244 this->track_ended_ = this->emu_track_ended_ = true; 244 this->track_ended_ = this->emu_track_ended_ = true;
245 this->silence_count = out_count; 245 this->silence_count = out_count;
246 this->buf_remain = 0; 246 this->buf_remain = 0;
247 } 247 }
248 } 248 }
249 249
250 // fill from remaining silence 250 // fill from remaining silence
251 pos = min( this->silence_count, out_count ); 251 pos = min( this->silence_count, out_count );
252 memset( out, 0, pos * sizeof *out ); 252 memset( out, 0, pos * sizeof *out );
253 this->silence_count -= pos; 253 this->silence_count -= pos;
254 } 254 }
255 255
256 // use any remaining samples from buffer 256 // use any remaining samples from buffer
257 if ( this->buf_remain ) 257 if ( this->buf_remain )
258 { 258 {
259 int n = min( this->buf_remain, (int) (out_count - pos) ); 259 int n = min( this->buf_remain, (int) (out_count - pos) );
260 memcpy( out + pos, this->buf + (buf_size - this->buf_remain), n * sizeof *out ); 260 memcpy( out + pos, this->buf + (buf_size - this->buf_remain), n * sizeof *out );
261 this->buf_remain -= n; 261 this->buf_remain -= n;
262 pos += n; 262 pos += n;
263 } 263 }
264 264
265 // generate remaining samples normally 265 // generate remaining samples normally
266 int remain = out_count - pos; 266 int remain = out_count - pos;
267 if ( remain ) 267 if ( remain )
268 { 268 {
269 emu_play( this, out + pos, remain ); 269 emu_play( this, out + pos, remain );
270 this->track_ended_ |= this->emu_track_ended_; 270 this->track_ended_ |= this->emu_track_ended_;
271 271
272 if ( this->silence_ignored_ && !is_fading( this ) ) 272 if ( this->silence_ignored_ && !is_fading( this ) )
273 { 273 {
274 // if left unupdated, ahead_time could become too large 274 // if left unupdated, ahead_time could become too large
275 this->silence_time = this->emu_time; 275 this->silence_time = this->emu_time;
276 } 276 }
277 else 277 else
278 { 278 {
279 // check end for a new run of silence 279 // check end for a new run of silence
280 int silence = count_silence( out + pos, remain ); 280 int silence = count_silence( out + pos, remain );
281 if ( silence < remain ) 281 if ( silence < remain )
282 this->silence_time = this->emu_time - silence; 282 this->silence_time = this->emu_time - silence;
283 283
284 if ( this->emu_time - this->silence_time >= buf_size ) 284 if ( this->emu_time - this->silence_time >= buf_size )
285 fill_buf( this ); // cause silence detection on next play() 285 fill_buf( this ); // cause silence detection on next play()
286 } 286 }
287 } 287 }
288 288
289 if ( is_fading( this ) ) 289 if ( is_fading( this ) )
290 handle_fade( this, out, out_count ); 290 handle_fade( this, out, out_count );
291 } 291 }
292 this->out_time += out_count; 292 this->out_time += out_count;
293 return this->emu_error; 293 return this->emu_error;
294} 294}
diff --git a/apps/codecs/libgme/track_filter.h b/apps/codecs/libgme/track_filter.h
index 35049b91bb..3689be9620 100644
--- a/apps/codecs/libgme/track_filter.h
+++ b/apps/codecs/libgme/track_filter.h
@@ -1,90 +1,90 @@
1// Removes silence from beginning of track, fades end of track. Also looks ahead 1// Removes silence from beginning of track, fades end of track. Also looks ahead
2// for excessive silence, and if found, ends track. 2// for excessive silence, and if found, ends track.
3 3
4// Game_Music_Emu 0.6-pre 4// Game_Music_Emu 0.6-pre
5#ifndef TRACK_FILTER_H 5#ifndef TRACK_FILTER_H
6#define TRACK_FILTER_H 6#define TRACK_FILTER_H
7 7
8#include "blargg_common.h" 8#include "blargg_common.h"
9 9
10typedef short sample_t; 10typedef short sample_t;
11typedef int sample_count_t; 11typedef int sample_count_t;
12 12
13enum { indefinite_count = INT_MAX/2 + 1 }; 13enum { indefinite_count = INT_MAX/2 + 1 };
14enum { buf_size = 2048 }; 14enum { buf_size = 2048 };
15 15
16struct setup_t { 16struct setup_t {
17 sample_count_t max_initial; // maximum silence to strip from beginning of track 17 sample_count_t max_initial; // maximum silence to strip from beginning of track
18 sample_count_t max_silence; // maximum silence in middle of track without it ending 18 sample_count_t max_silence; // maximum silence in middle of track without it ending
19 int lookahead; // internal speed when looking ahead for silence (2=200% etc.) 19 int lookahead; // internal speed when looking ahead for silence (2=200% etc.)
20}; 20};
21 21
22struct Track_Filter { 22struct Track_Filter {
23 void* emu_; 23 void* emu_;
24 struct setup_t setup_; 24 struct setup_t setup_;
25 const char* emu_error; 25 const char* emu_error;
26 bool silence_ignored_; 26 bool silence_ignored_;
27 27
28 // Timing 28 // Timing
29 int out_time; // number of samples played since start of track 29 int out_time; // number of samples played since start of track
30 int emu_time; // number of samples emulator has generated since start of track 30 int emu_time; // number of samples emulator has generated since start of track
31 int emu_track_ended_; // emulator has reached end of track 31 int emu_track_ended_; // emulator has reached end of track
32 volatile int track_ended_; 32 volatile int track_ended_;
33 33
34 // Fading 34 // Fading
35 int fade_start; 35 int fade_start;
36 int fade_step; 36 int fade_step;
37 37
38 // Silence detection 38 // Silence detection
39 int silence_time; // absolute number of samples where most recent silence began 39 int silence_time; // absolute number of samples where most recent silence began
40 int silence_count; // number of samples of silence to play before using buf 40 int silence_count; // number of samples of silence to play before using buf
41 int buf_remain; // number of samples left in silence buffer 41 int buf_remain; // number of samples left in silence buffer
42 sample_t buf [buf_size]; 42 sample_t buf [buf_size];
43}; 43};
44 44
45// Initializes filter. Must be done once before using object. 45// Initializes filter. Must be done once before using object.
46blargg_err_t track_init( struct Track_Filter* this, void* ); 46blargg_err_t track_init( struct Track_Filter* this, void* );
47void track_create( struct Track_Filter* this ); 47void track_create( struct Track_Filter* this );
48 48
49// Gets/sets setup 49// Gets/sets setup
50static inline struct setup_t const* track_get_setup( struct Track_Filter* this ) { return &this->setup_; } 50static inline struct setup_t const* track_get_setup( struct Track_Filter* this ) { return &this->setup_; }
51static inline void track_setup( struct Track_Filter* this, struct setup_t const* s ) { this->setup_ = *s; } 51static inline void track_setup( struct Track_Filter* this, struct setup_t const* s ) { this->setup_ = *s; }
52 52
53// Disables automatic end-of-track detection and skipping of silence at beginning 53// Disables automatic end-of-track detection and skipping of silence at beginning
54static inline void track_ignore_silence( struct Track_Filter* this, bool disable ) { this->silence_ignored_ = disable; } 54static inline void track_ignore_silence( struct Track_Filter* this, bool disable ) { this->silence_ignored_ = disable; }
55 55
56// Clears state and skips initial silence in track 56// Clears state and skips initial silence in track
57blargg_err_t track_start( struct Track_Filter* this ); 57blargg_err_t track_start( struct Track_Filter* this );
58 58
59// Sets time that fade starts, and how long until track ends. 59// Sets time that fade starts, and how long until track ends.
60void track_set_fade( struct Track_Filter* this, sample_count_t start, sample_count_t length ); 60void track_set_fade( struct Track_Filter* this, sample_count_t start, sample_count_t length );
61 61
62// Generates n samples into buf 62// Generates n samples into buf
63blargg_err_t track_play( struct Track_Filter* this, int n, sample_t buf [] ); 63blargg_err_t track_play( struct Track_Filter* this, int n, sample_t buf [] );
64 64
65// Skips n samples 65// Skips n samples
66blargg_err_t track_skip( struct Track_Filter* this, int n ); 66blargg_err_t track_skip( struct Track_Filter* this, int n );
67 67
68// Number of samples played/skipped since start_track() 68// Number of samples played/skipped since start_track()
69static inline int track_sample_count( struct Track_Filter* this ) { return this->out_time; } 69static inline int track_sample_count( struct Track_Filter* this ) { return this->out_time; }
70 70
71// True if track ended. Causes are end of source samples, end of fade, 71// True if track ended. Causes are end of source samples, end of fade,
72// or excessive silence. 72// or excessive silence.
73static inline bool track_ended( struct Track_Filter* this ) { return this->track_ended_; } 73static inline bool track_ended( struct Track_Filter* this ) { return this->track_ended_; }
74 74
75// Clears state 75// Clears state
76void track_stop( struct Track_Filter* this ); 76void track_stop( struct Track_Filter* this );
77 77
78// For use by callbacks 78// For use by callbacks
79 79
80// Sets internal "track ended" flag and stops generation of further source samples 80// Sets internal "track ended" flag and stops generation of further source samples
81static inline void track_set_end( struct Track_Filter* this ) { this->emu_track_ended_ = true; } 81static inline void track_set_end( struct Track_Filter* this ) { this->emu_track_ended_ = true; }
82 82
83// For use by skip_() callback 83// For use by skip_() callback
84blargg_err_t skippy_( struct Track_Filter* this, int count ); 84blargg_err_t skippy_( struct Track_Filter* this, int count );
85void fill_buf( struct Track_Filter* this ); 85void fill_buf( struct Track_Filter* this );
86 86
87// Skip and play callbacks 87// Skip and play callbacks
88blargg_err_t skip_( void* emu, int count ); 88blargg_err_t skip_( void* emu, int count );
89blargg_err_t play_( void* emu, int count, sample_t out [] ); 89blargg_err_t play_( void* emu, int count, sample_t out [] );
90#endif 90#endif
diff --git a/apps/codecs/libgme/vrc7tone.h b/apps/codecs/libgme/vrc7tone.h
index a256c80ba6..c589335c3c 100644
--- a/apps/codecs/libgme/vrc7tone.h
+++ b/apps/codecs/libgme/vrc7tone.h
@@ -1,20 +1,20 @@
1/* VRC7 TONES by okazaki@angel.ne.jp */ 1/* VRC7 TONES by okazaki@angel.ne.jp */
20x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 20x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
30x33,0x01,0x09,0x0e,0x94,0x90,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 30x33,0x01,0x09,0x0e,0x94,0x90,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
40x13,0x41,0x0f,0x0d,0xce,0xd3,0x43,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 40x13,0x41,0x0f,0x0d,0xce,0xd3,0x43,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
50x01,0x12,0x1b,0x06,0xff,0xd2,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 50x01,0x12,0x1b,0x06,0xff,0xd2,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
60x61,0x61,0x1b,0x07,0xaf,0x63,0x20,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 60x61,0x61,0x1b,0x07,0xaf,0x63,0x20,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
70x22,0x21,0x1e,0x06,0xf0,0x76,0x08,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 70x22,0x21,0x1e,0x06,0xf0,0x76,0x08,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
80x66,0x21,0x15,0x00,0x93,0x94,0x20,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 80x66,0x21,0x15,0x00,0x93,0x94,0x20,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
90x21,0x61,0x1c,0x07,0x82,0x81,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 90x21,0x61,0x1c,0x07,0x82,0x81,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
100x23,0x21,0x20,0x1f,0xc0,0x71,0x07,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 100x23,0x21,0x20,0x1f,0xc0,0x71,0x07,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
110x25,0x31,0x26,0x05,0x64,0x41,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 110x25,0x31,0x26,0x05,0x64,0x41,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
120x17,0x21,0x28,0x07,0xff,0x83,0x02,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 120x17,0x21,0x28,0x07,0xff,0x83,0x02,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
130x97,0x81,0x25,0x07,0xcf,0xc8,0x02,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 130x97,0x81,0x25,0x07,0xcf,0xc8,0x02,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
140x21,0x21,0x54,0x0f,0x80,0x7f,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 140x21,0x21,0x54,0x0f,0x80,0x7f,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
150x01,0x01,0x56,0x03,0xd3,0xb2,0x43,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 150x01,0x01,0x56,0x03,0xd3,0xb2,0x43,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
160x31,0x21,0x0c,0x03,0x82,0xc0,0x40,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 160x31,0x21,0x0c,0x03,0x82,0xc0,0x40,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
170x21,0x01,0x0c,0x03,0xd4,0xd3,0x40,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 170x21,0x01,0x0c,0x03,0xd4,0xd3,0x40,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
180x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 180x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
190x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 190x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
200x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 200x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
diff --git a/apps/codecs/libgme/ym2413_emu.c b/apps/codecs/libgme/ym2413_emu.c
index 9efd3dcc3d..d9ada431ca 100644
--- a/apps/codecs/libgme/ym2413_emu.c
+++ b/apps/codecs/libgme/ym2413_emu.c
@@ -1,45 +1,45 @@
1// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.5.5. http://www.slack.net/~ant/
2 2
3#include "ym2413_emu.h" 3#include "ym2413_emu.h"
4 4
5void Ym2413_init( struct Ym2413_Emu* this ) 5void Ym2413_init( struct Ym2413_Emu* this )
6{ 6{
7 this->last_time = disabled_time; this->out = 0; 7 this->last_time = disabled_time; this->out = 0;
8} 8}
9 9
10int Ym2413_set_rate( struct Ym2413_Emu* this, int sample_rate, int clock_rate ) 10int Ym2413_set_rate( struct Ym2413_Emu* this, int sample_rate, int clock_rate )
11{ 11{
12 OPLL_new ( &this->opll, clock_rate, sample_rate ); 12 OPLL_new ( &this->opll, clock_rate, sample_rate );
13 OPLL_reset_patch( &this->opll, OPLL_2413_TONE ); 13 OPLL_reset_patch( &this->opll, OPLL_2413_TONE );
14 14
15 Ym2413_reset( this ); 15 Ym2413_reset( this );
16 return 0; 16 return 0;
17} 17}
18 18
19void Ym2413_reset( struct Ym2413_Emu* this ) 19void Ym2413_reset( struct Ym2413_Emu* this )
20{ 20{
21 OPLL_reset( &this->opll ); 21 OPLL_reset( &this->opll );
22 OPLL_setMask( &this->opll, 0 ); 22 OPLL_setMask( &this->opll, 0 );
23} 23}
24 24
25void Ym2413_write( struct Ym2413_Emu* this, int addr, int data ) 25void Ym2413_write( struct Ym2413_Emu* this, int addr, int data )
26{ 26{
27 OPLL_writeIO( &this->opll, 0, addr ); 27 OPLL_writeIO( &this->opll, 0, addr );
28 OPLL_writeIO( &this->opll, 1, data ); 28 OPLL_writeIO( &this->opll, 1, data );
29} 29}
30 30
31void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask ) 31void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask )
32{ 32{
33 OPLL_setMask( &this->opll, mask ); 33 OPLL_setMask( &this->opll, mask );
34} 34}
35 35
36void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out ) 36void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out )
37{ 37{
38 while ( pair_count-- ) 38 while ( pair_count-- )
39 { 39 {
40 int s = OPLL_calc( &this->opll ) << 1; 40 int s = OPLL_calc( &this->opll ) << 1;
41 out [0] = s; 41 out [0] = s;
42 out [1] = s; 42 out [1] = s;
43 out += 2; 43 out += 2;
44 } 44 }
45} 45}
diff --git a/apps/codecs/libgme/ym2413_emu.h b/apps/codecs/libgme/ym2413_emu.h
index 68d8fe3d8f..8f52b04fbd 100644
--- a/apps/codecs/libgme/ym2413_emu.h
+++ b/apps/codecs/libgme/ym2413_emu.h
@@ -1,61 +1,61 @@
1// YM2413 FM sound chip emulator interface 1// YM2413 FM sound chip emulator interface
2 2
3// Game_Music_Emu 0.6-pre 3// Game_Music_Emu 0.6-pre
4#ifndef YM2413_EMU_H 4#ifndef YM2413_EMU_H
5#define YM2413_EMU_H 5#define YM2413_EMU_H
6 6
7#include "blargg_common.h" 7#include "blargg_common.h"
8#include "emu2413.h" 8#include "emu2413.h"
9 9
10enum { out_chan_count = 2 }; // stereo 10enum { out_chan_count = 2 }; // stereo
11enum { channel_count = 14 }; 11enum { channel_count = 14 };
12enum { disabled_time = -1 }; 12enum { disabled_time = -1 };
13 13
14struct Ym2413_Emu { 14struct Ym2413_Emu {
15 OPLL opll; 15 OPLL opll;
16 16
17 // Impl 17 // Impl
18 int last_time; 18 int last_time;
19 short* out; 19 short* out;
20}; 20};
21 21
22void Ym2413_init( struct Ym2413_Emu* this ); 22void Ym2413_init( struct Ym2413_Emu* this );
23 23
24static inline bool Ym2413_supported( void ) { return true; } 24static inline bool Ym2413_supported( void ) { return true; }
25 25
26// Sets output sample rate and chip clock rates, in Hz. Returns non-zero 26// Sets output sample rate and chip clock rates, in Hz. Returns non-zero
27// if error. 27// if error.
28int Ym2413_set_rate( struct Ym2413_Emu* this, int sample_rate, int clock_rate ); 28int Ym2413_set_rate( struct Ym2413_Emu* this, int sample_rate, int clock_rate );
29 29
30// Resets to power-up state 30// Resets to power-up state
31void Ym2413_reset( struct Ym2413_Emu* this ); 31void Ym2413_reset( struct Ym2413_Emu* this );
32 32
33// Mutes voice n if bit n (1 << n) of mask is set 33// Mutes voice n if bit n (1 << n) of mask is set
34void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask ); 34void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask );
35 35
36// Writes data to addr 36// Writes data to addr
37void Ym2413_write( struct Ym2413_Emu* this, int addr, int data ); 37void Ym2413_write( struct Ym2413_Emu* this, int addr, int data );
38 38
39// Runs and writes pair_count*2 samples to output 39// Runs and writes pair_count*2 samples to output
40void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out ); 40void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out );
41 41
42static inline void Ym2413_enable( struct Ym2413_Emu* this, bool b ) { this->last_time = b ? 0 : disabled_time; } 42static inline void Ym2413_enable( struct Ym2413_Emu* this, bool b ) { this->last_time = b ? 0 : disabled_time; }
43static inline bool Ym2413_enabled( struct Ym2413_Emu* this ) { return this->last_time != disabled_time; } 43static inline bool Ym2413_enabled( struct Ym2413_Emu* this ) { return this->last_time != disabled_time; }
44static inline void Ym2413_begin_frame( struct Ym2413_Emu* this, short* buf ) { this->out = buf; this->last_time = 0; } 44static inline void Ym2413_begin_frame( struct Ym2413_Emu* this, short* buf ) { this->out = buf; this->last_time = 0; }
45 45
46static inline int Ym2413_run_until( struct Ym2413_Emu* this, int time ) 46static inline int Ym2413_run_until( struct Ym2413_Emu* this, int time )
47{ 47{
48 int count = time - this->last_time; 48 int count = time - this->last_time;
49 if ( count > 0 ) 49 if ( count > 0 )
50 { 50 {
51 if ( this->last_time < 0 ) 51 if ( this->last_time < 0 )
52 return false; 52 return false;
53 this->last_time = time; 53 this->last_time = time;
54 short* p = this->out; 54 short* p = this->out;
55 this->out += count * out_chan_count; 55 this->out += count * out_chan_count;
56 Ym2413_run( this, count, p ); 56 Ym2413_run( this, count, p );
57 } 57 }
58 return true; 58 return true;
59} 59}
60 60
61#endif 61#endif
diff --git a/apps/codecs/libgme/ymtables.h b/apps/codecs/libgme/ymtables.h
index 51812c1b57..c1619026b2 100644
--- a/apps/codecs/libgme/ymtables.h
+++ b/apps/codecs/libgme/ymtables.h
@@ -1,559 +1,559 @@
1#ifndef _EMUTABLES_H_ 1#ifndef _EMUTABLES_H_
2#define _EMUTABLES_H_ 2#define _EMUTABLES_H_
3 3
4/* Precompiled ym2612 tables for use in Rockbox */ 4/* Precompiled ym2612 tables for use in Rockbox */
5 5
6static const int tl_coeff[] = { 6static const int tl_coeff[] = {
7 268435455, 267712100, 266990695, 266271234, 265553712, 264838123, 264124462, 263412725, 262702906, 261994999, 261289000, 7 268435455, 267712100, 266990695, 266271234, 265553712, 264838123, 264124462, 263412725, 262702906, 261994999, 261289000,
8 260584903, 259882704, 259182396, 258483976, 257787438, 257092777, 256399988, 255709066, 255020006, 254332802, 253647450, 8 260584903, 259882704, 259182396, 258483976, 257787438, 257092777, 256399988, 255709066, 255020006, 254332802, 253647450,
9 252963945, 252282282, 251602456, 250924462, 250248294, 249573949, 248901421, 248230705, 247561797, 246894691, 246229383, 9 252963945, 252282282, 251602456, 250924462, 250248294, 249573949, 248901421, 248230705, 247561797, 246894691, 246229383,
10 245565867, 244904140, 244244195, 243586029, 242929637, 242275013, 241622154, 240971053, 240321708, 239674112, 239028261, 10 245565867, 244904140, 244244195, 243586029, 242929637, 242275013, 241622154, 240971053, 240321708, 239674112, 239028261,
11 238384150, 237741775, 237101131, 236462214, 235825018, 235189539, 234555773, 233923714, 233293359, 232664702, 232037740, 11 238384150, 237741775, 237101131, 236462214, 235825018, 235189539, 234555773, 233923714, 233293359, 232664702, 232037740,
12 231412466, 230788878, 230166970, 229546738, 228928178, 228311284, 227696052, 227082479, 226470558, 225860287, 225251660, 12 231412466, 230788878, 230166970, 229546738, 228928178, 228311284, 227696052, 227082479, 226470558, 225860287, 225251660,
13 224644674, 224039323, 223435603, 222833510, 222233039, 221634187, 221036948, 220441319, 219847295, 219254871, 218664044, 13 224644674, 224039323, 223435603, 222833510, 222233039, 221634187, 221036948, 220441319, 219847295, 219254871, 218664044,
14 218074809, 217487162, 216901098, 216316614, 215733704, 215152366, 214572594, 213994384, 213417732, 212842635, 212269087, 14 218074809, 217487162, 216901098, 216316614, 215733704, 215152366, 214572594, 213994384, 213417732, 212842635, 212269087,
15 211697084, 211126623, 210557699, 209990308, 209424446, 208860109, 208297293, 207735993, 207176206, 206617927, 206061153, 15 211697084, 211126623, 210557699, 209990308, 209424446, 208860109, 208297293, 207735993, 207176206, 206617927, 206061153,
16 205505879, 204952102, 204399816, 203849019, 203299706, 202751873, 202205517, 201660633, 201117217, 200575266, 200034774, 16 205505879, 204952102, 204399816, 203849019, 203299706, 202751873, 202205517, 201660633, 201117217, 200575266, 200034774,
17 199495740, 198958158, 198422024, 197887335, 197354088, 196822277, 196291899, 195762950, 195235427, 194709325, 194184641, 17 199495740, 198958158, 198422024, 197887335, 197354088, 196822277, 196291899, 195762950, 195235427, 194709325, 194184641,
18 193661370, 193139510, 192619056, 192100005, 191582352, 191066094, 190551228, 190037748, 189525653, 189014937, 188505598, 18 193661370, 193139510, 192619056, 192100005, 191582352, 191066094, 190551228, 190037748, 189525653, 189014937, 188505598,
19 187997631, 187491033, 186985800, 186481928, 185979414, 185478255, 184978446, 184479983, 183982864, 183487085, 182992641, 19 187997631, 187491033, 186985800, 186481928, 185979414, 185478255, 184978446, 184479983, 183982864, 183487085, 182992641,
20 182499530, 182007748, 181517291, 181028155, 180540338, 180053835, 179568643, 179084759, 178602178, 178120898, 177640915, 20 182499530, 182007748, 181517291, 181028155, 180540338, 180053835, 179568643, 179084759, 178602178, 178120898, 177640915,
21 177162225, 176684825, 176208712, 175733881, 175260330, 174788055, 174317053, 173847320, 173378853, 172911648, 172445702, 21 177162225, 176684825, 176208712, 175733881, 175260330, 174788055, 174317053, 173847320, 173378853, 172911648, 172445702,
22 171981012, 171517574, 171055385, 170594441, 170134740, 169676277, 169219049, 168763054, 168308287, 167854746, 167402427, 22 171981012, 171517574, 171055385, 170594441, 170134740, 169676277, 169219049, 168763054, 168308287, 167854746, 167402427,
23 166951327, 166501443, 166052770, 165605307, 165159050, 164713995, 164270139, 163827480, 163386013, 162945736, 162506646, 23 166951327, 166501443, 166052770, 165605307, 165159050, 164713995, 164270139, 163827480, 163386013, 162945736, 162506646,
24 162068738, 161632011, 161196460, 160762083, 160328877, 159896838, 159465963, 159036250, 158607694, 158180293, 157754044, 24 162068738, 161632011, 161196460, 160762083, 160328877, 159896838, 159465963, 159036250, 158607694, 158180293, 157754044,
25 157328943, 156904988, 156482176, 156060502, 155639965, 155220562, 154802288, 154385142, 153969119, 153554218, 153140435, 25 157328943, 156904988, 156482176, 156060502, 155639965, 155220562, 154802288, 154385142, 153969119, 153554218, 153140435,
26 152727766, 152316210, 151905763, 151496422, 151088184, 150681046, 150275005, 149870058, 149466203, 149063435, 148661753, 26 152727766, 152316210, 151905763, 151496422, 151088184, 150681046, 150275005, 149870058, 149466203, 149063435, 148661753,
27 148261154, 147861634, 147463190, 147065821, 146669522, 146274291, 145880125, 145487021, 145094976, 144703988, 144314054, 27 148261154, 147861634, 147463190, 147065821, 146669522, 146274291, 145880125, 145487021, 145094976, 144703988, 144314054,
28 143925170, 143537334, 143150543, 142764795, 142380086, 141996414, 141613775, 141232168, 140851589, 140472035, 140093505, 28 143925170, 143537334, 143150543, 142764795, 142380086, 141996414, 141613775, 141232168, 140851589, 140472035, 140093505,
29 139715994, 139339501, 138964022, 138589555, 138216097, 137843646, 137472198, 137101751, 136732302, 136363849, 135996388, 29 139715994, 139339501, 138964022, 138589555, 138216097, 137843646, 137472198, 137101751, 136732302, 136363849, 135996388,
30 135629918, 135264436, 134899938, 134536423, 134173887, 133812328, 133451743, 133092130, 132733486, 132375808, 132019095, 30 135629918, 135264436, 134899938, 134536423, 134173887, 133812328, 133451743, 133092130, 132733486, 132375808, 132019095,
31 131663342, 131308548, 130954711, 130601826, 130249893, 129898908, 129548869, 129199773, 128851618, 128504401, 128158119, 31 131663342, 131308548, 130954711, 130601826, 130249893, 129898908, 129548869, 129199773, 128851618, 128504401, 128158119,
32 127812771, 127468353, 127124864, 126782300, 126440659, 126099939, 125760137, 125421250, 125083277, 124746214, 124410060, 32 127812771, 127468353, 127124864, 126782300, 126440659, 126099939, 125760137, 125421250, 125083277, 124746214, 124410060,
33 124074812, 123740467, 123407023, 123074477, 122742828, 122412072, 122082208, 121753232, 121425143, 121097939, 120771615, 33 124074812, 123740467, 123407023, 123074477, 122742828, 122412072, 122082208, 121753232, 121425143, 121097939, 120771615,
34 120446172, 120121605, 119797912, 119475092, 119153142, 118832060, 118511843, 118192488, 117873994, 117556359, 117239579, 34 120446172, 120121605, 119797912, 119475092, 119153142, 118832060, 118511843, 118192488, 117873994, 117556359, 117239579,
35 116923653, 116608578, 116294353, 115980974, 115668439, 115356747, 115045894, 114735880, 114426700, 114118354, 113810839, 35 116923653, 116608578, 116294353, 115980974, 115668439, 115356747, 115045894, 114735880, 114426700, 114118354, 113810839,
36 113504152, 113198292, 112893256, 112589042, 112285648, 111983071, 111681310, 111380362, 111080225, 110780896, 110482375, 36 113504152, 113198292, 112893256, 112589042, 112285648, 111983071, 111681310, 111380362, 111080225, 110780896, 110482375,
37 110184657, 109887742, 109591627, 109296310, 109001789, 108708061, 108415125, 108122978, 107831619, 107541044, 107251253, 37 110184657, 109887742, 109591627, 109296310, 109001789, 108708061, 108415125, 108122978, 107831619, 107541044, 107251253,
38 106962243, 106674011, 106386556, 106099876, 105813968, 105528830, 105244461, 104960859, 104678020, 104395944, 104114628, 38 106962243, 106674011, 106386556, 106099876, 105813968, 105528830, 105244461, 104960859, 104678020, 104395944, 104114628,
39 103834069, 103554267, 103275219, 102996923, 102719377, 102442578, 102166526, 101891217, 101616650, 101342823, 101069734, 39 103834069, 103554267, 103275219, 102996923, 102719377, 102442578, 102166526, 101891217, 101616650, 101342823, 101069734,
40 100797381, 100525762, 100254875, 99984718, 99715288, 99446585, 99178606, 98911349, 98644812, 98378993, 98113891, 40 100797381, 100525762, 100254875, 99984718, 99715288, 99446585, 99178606, 98911349, 98644812, 98378993, 98113891,
41 97849503, 97585828, 97322863, 97060606, 96799057, 96538212, 96278070, 96018629, 95759887, 95501842, 95244493, 41 97849503, 97585828, 97322863, 97060606, 96799057, 96538212, 96278070, 96018629, 95759887, 95501842, 95244493,
42 94987837, 94731873, 94476599, 94222012, 93968112, 93714895, 93462361, 93210508, 92959333, 92708835, 92459012, 42 94987837, 94731873, 94476599, 94222012, 93968112, 93714895, 93462361, 93210508, 92959333, 92708835, 92459012,
43 92209863, 91961384, 91713575, 91466434, 91219959, 90974149, 90729000, 90484512, 90240683, 89997511, 89754994, 43 92209863, 91961384, 91713575, 91466434, 91219959, 90974149, 90729000, 90484512, 90240683, 89997511, 89754994,
44 89513131, 89271920, 89031358, 88791445, 88552178, 88313556, 88075578, 87838240, 87601542, 87365481, 87130057, 44 89513131, 89271920, 89031358, 88791445, 88552178, 88313556, 88075578, 87838240, 87601542, 87365481, 87130057,
45 86895267, 86661110, 86427584, 86194687, 85962418, 85730775, 85499756, 85269359, 85039583, 84810427, 84581888, 45 86895267, 86661110, 86427584, 86194687, 85962418, 85730775, 85499756, 85269359, 85039583, 84810427, 84581888,
46 84353965, 84126656, 83899959, 83673874, 83448397, 83223528, 82999266, 82775607, 82552551, 82330096, 82108241, 46 84353965, 84126656, 83899959, 83673874, 83448397, 83223528, 82999266, 82775607, 82552551, 82330096, 82108241,
47 81886984, 81666322, 81446256, 81226782, 81007900, 80789608, 80571904, 80354786, 80138254, 79922305, 79706938, 47 81886984, 81666322, 81446256, 81226782, 81007900, 80789608, 80571904, 80354786, 80138254, 79922305, 79706938,
48 79492151, 79277943, 79064313, 78851258, 78638777, 78426868, 78215531, 78004763, 77794564, 77584930, 77375862, 48 79492151, 79277943, 79064313, 78851258, 78638777, 78426868, 78215531, 78004763, 77794564, 77584930, 77375862,
49 77167357, 76959413, 76752031, 76545207, 76338940, 76133229, 75928072, 75723469, 75519416, 75315914, 75112960, 49 77167357, 76959413, 76752031, 76545207, 76338940, 76133229, 75928072, 75723469, 75519416, 75315914, 75112960,
50 74910552, 74708690, 74507373, 74306597, 74106363, 73906668, 73707512, 73508892, 73310807, 73113256, 72916237, 50 74910552, 74708690, 74507373, 74306597, 74106363, 73906668, 73707512, 73508892, 73310807, 73113256, 72916237,
51 72719749, 72523791, 72328361, 72133457, 71939079, 71745225, 71551892, 71359081, 71166789, 70975016, 70783759, 51 72719749, 72523791, 72328361, 72133457, 71939079, 71745225, 71551892, 71359081, 71166789, 70975016, 70783759,
52 70593018, 70402791, 70213076, 70023872, 69835179, 69646994, 69459315, 69272143, 69085475, 68899310, 68713647, 52 70593018, 70402791, 70213076, 70023872, 69835179, 69646994, 69459315, 69272143, 69085475, 68899310, 68713647,
53 68528484, 68343820, 68159653, 67975983, 67792808, 67610127, 67427937, 67246239, 67065030, 66884310, 66704076, 53 68528484, 68343820, 68159653, 67975983, 67792808, 67610127, 67427937, 67246239, 67065030, 66884310, 66704076,
54 66524328, 66345065, 66166285, 65987986, 65810168, 65632829, 65455968, 65279583, 65103674, 64928239, 64753277, 54 66524328, 66345065, 66166285, 65987986, 65810168, 65632829, 65455968, 65279583, 65103674, 64928239, 64753277,
55 64578786, 64404765, 64231213, 64058129, 63885511, 63713359, 63541670, 63370444, 63199679, 63029375, 62859529, 55 64578786, 64404765, 64231213, 64058129, 63885511, 63713359, 63541670, 63370444, 63199679, 63029375, 62859529,
56 62690141, 62521210, 62352734, 62184711, 62017142, 61850024, 61683357, 61517138, 61351368, 61186044, 61021166, 56 62690141, 62521210, 62352734, 62184711, 62017142, 61850024, 61683357, 61517138, 61351368, 61186044, 61021166,
57 60856731, 60692741, 60529192, 60366083, 60203414, 60041184, 59879391, 59718034, 59557111, 59396622, 59236566, 57 60856731, 60692741, 60529192, 60366083, 60203414, 60041184, 59879391, 59718034, 59557111, 59396622, 59236566,
58 59076941, 58917746, 58758980, 58600642, 58442730, 58285245, 58128183, 57971545, 57815329, 57659533, 57504158, 58 59076941, 58917746, 58758980, 58600642, 58442730, 58285245, 58128183, 57971545, 57815329, 57659533, 57504158,
59 57349201, 57194662, 57040539, 56886832, 56733539, 56580659, 56428190, 56276133, 56124486, 55973247, 55822415, 59 57349201, 57194662, 57040539, 56886832, 56733539, 56580659, 56428190, 56276133, 56124486, 55973247, 55822415,
60 55671990, 55521971, 55372355, 55223143, 55074333, 54925924, 54777915, 54630305, 54483092, 54336276, 54189856, 60 55671990, 55521971, 55372355, 55223143, 55074333, 54925924, 54777915, 54630305, 54483092, 54336276, 54189856,
61 54043830, 53898198, 53752959, 53608110, 53463652, 53319583, 53175903, 53032610, 52889702, 52747180, 52605042, 61 54043830, 53898198, 53752959, 53608110, 53463652, 53319583, 53175903, 53032610, 52889702, 52747180, 52605042,
62 52463287, 52321914, 52180922, 52040310, 51900076, 51760221, 51620743, 51481640, 51342912, 51204558, 51066577, 62 52463287, 52321914, 52180922, 52040310, 51900076, 51760221, 51620743, 51481640, 51342912, 51204558, 51066577,
63 50928968, 50791729, 50654860, 50518360, 50382228, 50246463, 50111064, 49976029, 49841359, 49707051, 49573105, 63 50928968, 50791729, 50654860, 50518360, 50382228, 50246463, 50111064, 49976029, 49841359, 49707051, 49573105,
64 49439520, 49306295, 49173429, 49040922, 48908771, 48776976, 48645537, 48514451, 48383719, 48253339, 48123311, 64 49439520, 49306295, 49173429, 49040922, 48908771, 48776976, 48645537, 48514451, 48383719, 48253339, 48123311,
65 47993633, 47864304, 47735324, 47606691, 47478405, 47350465, 47222869, 47095618, 46968709, 46842142, 46715916, 65 47993633, 47864304, 47735324, 47606691, 47478405, 47350465, 47222869, 47095618, 46968709, 46842142, 46715916,
66 46590031, 46464484, 46339276, 46214406, 46089871, 45965673, 45841809, 45718279, 45595082, 45472216, 45349682, 66 46590031, 46464484, 46339276, 46214406, 46089871, 45965673, 45841809, 45718279, 45595082, 45472216, 45349682,
67 45227478, 45105603, 44984057, 44862838, 44741946, 44621380, 44501139, 44381221, 44261627, 44142355, 44023404, 67 45227478, 45105603, 44984057, 44862838, 44741946, 44621380, 44501139, 44381221, 44261627, 44142355, 44023404,
68 43904774, 43786464, 43668472, 43550798, 43433442, 43316402, 43199677, 43083266, 42967170, 42851386, 42735914, 68 43904774, 43786464, 43668472, 43550798, 43433442, 43316402, 43199677, 43083266, 42967170, 42851386, 42735914,
69 42620753, 42505903, 42391362, 42277130, 42163206, 42049588, 41936277, 41823271, 41710570, 41598172, 41486077, 69 42620753, 42505903, 42391362, 42277130, 42163206, 42049588, 41936277, 41823271, 41710570, 41598172, 41486077,
70 41374285, 41262793, 41151602, 41040711, 40930118, 40819823, 40709826, 40600125, 40490720, 40381609, 40272793, 70 41374285, 41262793, 41151602, 41040711, 40930118, 40819823, 40709826, 40600125, 40490720, 40381609, 40272793,
71 40164269, 40056039, 39948099, 39840451, 39733093, 39626024, 39519243, 39412751, 39306545, 39200625, 39094991, 71 40164269, 40056039, 39948099, 39840451, 39733093, 39626024, 39519243, 39412751, 39306545, 39200625, 39094991,
72 38989642, 38884576, 38779794, 38675294, 38571075, 38467138, 38363480, 38260102, 38157002, 38054180, 37951635, 72 38989642, 38884576, 38779794, 38675294, 38571075, 38467138, 38363480, 38260102, 38157002, 38054180, 37951635,
73 37849367, 37747374, 37645656, 37544212, 37443042, 37342144, 37241518, 37141163, 37041078, 36941264, 36841718, 73 37849367, 37747374, 37645656, 37544212, 37443042, 37342144, 37241518, 37141163, 37041078, 36941264, 36841718,
74 36742440, 36643430, 36544687, 36446210, 36347998, 36250051, 36152368, 36054948, 35957790, 35860895, 35764260, 74 36742440, 36643430, 36544687, 36446210, 36347998, 36250051, 36152368, 36054948, 35957790, 35860895, 35764260,
75 35667886, 35571772, 35475916, 35380319, 35284980, 35189897, 35095071, 35000500, 34906184, 34812122, 34718314, 75 35667886, 35571772, 35475916, 35380319, 35284980, 35189897, 35095071, 35000500, 34906184, 34812122, 34718314,
76 34624758, 34531454, 34438402, 34345601, 34253050, 34160748, 34068695, 33976890, 33885332, 33794021, 33702956, 76 34624758, 34531454, 34438402, 34345601, 34253050, 34160748, 34068695, 33976890, 33885332, 33794021, 33702956,
77 33612137, 33521562, 33431231, 33341144, 33251299, 33161697, 33072336, 32983216, 32894336, 32805695, 32717294, 77 33612137, 33521562, 33431231, 33341144, 33251299, 33161697, 33072336, 32983216, 32894336, 32805695, 32717294,
78 32629130, 32541204, 32453515, 32366063, 32278846, 32191864, 32105116, 32018602, 31932322, 31846273, 31760457, 78 32629130, 32541204, 32453515, 32366063, 32278846, 32191864, 32105116, 32018602, 31932322, 31846273, 31760457,
79 31674872, 31589518, 31504393, 31419498, 31334832, 31250394, 31166183, 31082200, 30998442, 30914911, 30831604, 79 31674872, 31589518, 31504393, 31419498, 31334832, 31250394, 31166183, 31082200, 30998442, 30914911, 30831604,
80 30748522, 30665664, 30583029, 30500617, 30418426, 30336458, 30254710, 30173183, 30091875, 30010786, 29929916, 80 30748522, 30665664, 30583029, 30500617, 30418426, 30336458, 30254710, 30173183, 30091875, 30010786, 29929916,
81 29849263, 29768829, 29688610, 29608608, 29528822, 29449250, 29369893, 29290750, 29211820, 29133103, 29054598, 81 29849263, 29768829, 29688610, 29608608, 29528822, 29449250, 29369893, 29290750, 29211820, 29133103, 29054598,
82 28976304, 28898222, 28820350, 28742687, 28665234, 28587990, 28510954, 28434125, 28357503, 28281088, 28204879, 82 28976304, 28898222, 28820350, 28742687, 28665234, 28587990, 28510954, 28434125, 28357503, 28281088, 28204879,
83 28128875, 28053076, 27977482, 27902091, 27826903, 27751917, 27677134, 27602552, 27528172, 27453991, 27380011, 83 28128875, 28053076, 27977482, 27902091, 27826903, 27751917, 27677134, 27602552, 27528172, 27453991, 27380011,
84 27306230, 27232648, 27159264, 27086078, 27013089, 26940296, 26867700, 26795300, 26723094, 26651083, 26579267, 84 27306230, 27232648, 27159264, 27086078, 27013089, 26940296, 26867700, 26795300, 26723094, 26651083, 26579267,
85 26507643, 26436213, 26364975, 26293929, 26223075, 26152412, 26081939, 26011656, 25941562, 25871657, 25801940, 85 26507643, 26436213, 26364975, 26293929, 26223075, 26152412, 26081939, 26011656, 25941562, 25871657, 25801940,
86 25732412, 25663071, 25593916, 25524948, 25456166, 25387569, 25319157, 25250929, 25182886, 25115025, 25047348, 86 25732412, 25663071, 25593916, 25524948, 25456166, 25387569, 25319157, 25250929, 25182886, 25115025, 25047348,
87 24979852, 24912539, 24845407, 24778456, 24711686, 24645095, 24578684, 24512451, 24446397, 24380522, 24314823, 87 24979852, 24912539, 24845407, 24778456, 24711686, 24645095, 24578684, 24512451, 24446397, 24380522, 24314823,
88 24249302, 24183957, 24118789, 24053796, 23988978, 23924335, 23859866, 23795570, 23731448, 23667499, 23603722, 88 24249302, 24183957, 24118789, 24053796, 23988978, 23924335, 23859866, 23795570, 23731448, 23667499, 23603722,
89 23540117, 23476683, 23413421, 23350328, 23287406, 23224653, 23162070, 23099655, 23037408, 22975329, 22913417, 89 23540117, 23476683, 23413421, 23350328, 23287406, 23224653, 23162070, 23099655, 23037408, 22975329, 22913417,
90 22851673, 22790094, 22728681, 22667434, 22606352, 22545435, 22484682, 22424092, 22363666, 22303402, 22243301, 90 22851673, 22790094, 22728681, 22667434, 22606352, 22545435, 22484682, 22424092, 22363666, 22303402, 22243301,
91 22183362, 22123584, 22063968, 22004512, 21945216, 21886080, 21827104, 21768286, 21709627, 21651126, 21592783, 91 22183362, 22123584, 22063968, 22004512, 21945216, 21886080, 21827104, 21768286, 21709627, 21651126, 21592783,
92 21534597, 21476567, 21418694, 21360977, 21303416, 21246009, 21188758, 21131660, 21074717, 21017926, 20961289, 92 21534597, 21476567, 21418694, 21360977, 21303416, 21246009, 21188758, 21131660, 21074717, 21017926, 20961289,
93 20904805, 20848473, 20792292, 20736263, 20680385, 20624657, 20569080, 20513652, 20458374, 20403245, 20348264, 93 20904805, 20848473, 20792292, 20736263, 20680385, 20624657, 20569080, 20513652, 20458374, 20403245, 20348264,
94 20293432, 20238747, 20184209, 20129819, 20075575, 20021477, 19967525, 19913719, 19860057, 19806540, 19753167, 94 20293432, 20238747, 20184209, 20129819, 20075575, 20021477, 19967525, 19913719, 19860057, 19806540, 19753167,
95 19699938, 19646853, 19593910, 19541111, 19488453, 19435937, 19383563, 19331330, 19279238, 19227286, 19175474, 95 19699938, 19646853, 19593910, 19541111, 19488453, 19435937, 19383563, 19331330, 19279238, 19227286, 19175474,
96 19123802, 19072269, 19020875, 18969619, 18918502, 18867522, 18816680, 18765974, 18715405, 18664973, 18614676, 96 19123802, 19072269, 19020875, 18969619, 18918502, 18867522, 18816680, 18765974, 18715405, 18664973, 18614676,
97 18564515, 18514489, 18464598, 18414842, 18365219, 18315730, 18266375, 18217152, 18168062, 18119105, 18070279, 97 18564515, 18514489, 18464598, 18414842, 18365219, 18315730, 18266375, 18217152, 18168062, 18119105, 18070279,
98 18021585, 17973022, 17924590, 17876289, 17828118, 17780076, 17732164, 17684381, 17636727, 17589201, 17541803, 98 18021585, 17973022, 17924590, 17876289, 17828118, 17780076, 17732164, 17684381, 17636727, 17589201, 17541803,
99 17494533, 17447391, 17400375, 17353486, 17306724, 17260087, 17213577, 17167191, 17120930, 17074795, 17028783, 99 17494533, 17447391, 17400375, 17353486, 17306724, 17260087, 17213577, 17167191, 17120930, 17074795, 17028783,
100 16982896, 16937132, 16891491, 16845974, 16800579, 16755306, 16710155, 16665126, 16620219, 16575432, 16530766, 100 16982896, 16937132, 16891491, 16845974, 16800579, 16755306, 16710155, 16665126, 16620219, 16575432, 16530766,
101 16486221, 16441795, 16397490, 16353303, 16309236, 16265287, 16221457, 16177745, 16134151, 16090674, 16047314, 101 16486221, 16441795, 16397490, 16353303, 16309236, 16265287, 16221457, 16177745, 16134151, 16090674, 16047314,
102 16004072, 15960945, 15917935, 15875041, 15832263, 15789599, 15747051, 15704617, 15662298, 15620093, 15578001, 102 16004072, 15960945, 15917935, 15875041, 15832263, 15789599, 15747051, 15704617, 15662298, 15620093, 15578001,
103 15536023, 15494158, 15452406, 15410766, 15369239, 15327823, 15286519, 15245327, 15204245, 15163274, 15122414, 103 15536023, 15494158, 15452406, 15410766, 15369239, 15327823, 15286519, 15245327, 15204245, 15163274, 15122414,
104 15081663, 15041023, 15000491, 14960070, 14919757, 14879552, 14839456, 14799468, 14759588, 14719815, 14680150, 104 15081663, 15041023, 15000491, 14960070, 14919757, 14879552, 14839456, 14799468, 14759588, 14719815, 14680150,
105 14640591, 14601139, 14561793, 14522554, 14483420, 14444391, 14405468, 14366649, 14327935, 14289326, 14250820, 105 14640591, 14601139, 14561793, 14522554, 14483420, 14444391, 14405468, 14366649, 14327935, 14289326, 14250820,
106 14212418, 14174120, 14135925, 14097833, 14059843, 14021956, 13984171, 13946488, 13908906, 13871426, 13834047, 106 14212418, 14174120, 14135925, 14097833, 14059843, 14021956, 13984171, 13946488, 13908906, 13871426, 13834047,
107 13796768, 13759590, 13722512, 13685534, 13648655, 13611876, 13575196, 13538615, 13502132, 13465748, 13429462, 107 13796768, 13759590, 13722512, 13685534, 13648655, 13611876, 13575196, 13538615, 13502132, 13465748, 13429462,
108 13393273, 13357183, 13321189, 13285292, 13249492, 13213789, 13178182, 13142670, 13107255, 13071934, 13036709, 108 13393273, 13357183, 13321189, 13285292, 13249492, 13213789, 13178182, 13142670, 13107255, 13071934, 13036709,
109 13001579, 12966544, 12931603, 12896756, 12862003, 12827344, 12792778, 12758305, 12723925, 12689638, 12655443, 109 13001579, 12966544, 12931603, 12896756, 12862003, 12827344, 12792778, 12758305, 12723925, 12689638, 12655443,
110 12621341, 12587330, 12553411, 12519583, 12485846, 12452201, 12418646, 12385181, 12351807, 12318522, 12285327, 110 12621341, 12587330, 12553411, 12519583, 12485846, 12452201, 12418646, 12385181, 12351807, 12318522, 12285327,
111 12252222, 12219206, 12186279, 12153440, 12120690, 12088029, 12055455, 12022969, 11990571, 11958260, 11926036, 111 12252222, 12219206, 12186279, 12153440, 12120690, 12088029, 12055455, 12022969, 11990571, 11958260, 11926036,
112 11893899, 11861848, 11829884, 11798006, 11766214, 11734507, 11702886, 11671350, 11639900, 11608533, 11577252, 112 11893899, 11861848, 11829884, 11798006, 11766214, 11734507, 11702886, 11671350, 11639900, 11608533, 11577252,
113 11546055, 11514941, 11483912, 11452966, 11422104, 11391325, 11360628, 11330015, 11299484, 11269035, 11238668, 113 11546055, 11514941, 11483912, 11452966, 11422104, 11391325, 11360628, 11330015, 11299484, 11269035, 11238668,
114 11208384, 11178180, 11148058, 11118018, 11088058, 11058179, 11028380, 10998662, 10969024, 10939466, 10909987, 114 11208384, 11178180, 11148058, 11118018, 11088058, 11058179, 11028380, 10998662, 10969024, 10939466, 10909987,
115 10880588, 10851268, 10822027, 10792865, 10763781, 10734776, 10705849, 10677000, 10648228, 10619535, 10590918, 115 10880588, 10851268, 10822027, 10792865, 10763781, 10734776, 10705849, 10677000, 10648228, 10619535, 10590918,
116 10562379, 10533916, 10505530, 10477221, 10448988, 10420831, 10392750, 10364745, 10336815, 10308960, 10281180, 116 10562379, 10533916, 10505530, 10477221, 10448988, 10420831, 10392750, 10364745, 10336815, 10308960, 10281180,
117 10253476, 10225846, 10198290, 10170809, 10143401, 10116068, 10088808, 10061622, 10034509, 10007468, 9980501, 117 10253476, 10225846, 10198290, 10170809, 10143401, 10116068, 10088808, 10061622, 10034509, 10007468, 9980501,
118 9953607, 9926785, 9900035, 9873357, 9846752, 9820217, 9793755, 9767364, 9741043, 9714794, 9688616, 118 9953607, 9926785, 9900035, 9873357, 9846752, 9820217, 9793755, 9767364, 9741043, 9714794, 9688616,
119 9662508, 9636470, 9610503, 9584605, 9558778, 9533019, 9507331, 9481711, 9456161, 9430679, 9405266, 119 9662508, 9636470, 9610503, 9584605, 9558778, 9533019, 9507331, 9481711, 9456161, 9430679, 9405266,
120 9379922, 9354646, 9329438, 9304298, 9279225, 9254221, 9229283, 9204413, 9179610, 9154874, 9130204, 120 9379922, 9354646, 9329438, 9304298, 9279225, 9254221, 9229283, 9204413, 9179610, 9154874, 9130204,
121 9105601, 9081064, 9056593, 9032188, 9007849, 8983576, 8959368, 8935225, 8911147, 8887134, 8863186, 121 9105601, 9081064, 9056593, 9032188, 9007849, 8983576, 8959368, 8935225, 8911147, 8887134, 8863186,
122 8839302, 8815483, 8791728, 8768037, 8744409, 8720846, 8697346, 8673909, 8650535, 8627225, 8603977, 122 8839302, 8815483, 8791728, 8768037, 8744409, 8720846, 8697346, 8673909, 8650535, 8627225, 8603977,
123 8580792, 8557669, 8534608, 8511610, 8488674, 8465799, 8442987, 8420235, 8397545, 8374916, 8352348, 123 8580792, 8557669, 8534608, 8511610, 8488674, 8465799, 8442987, 8420235, 8397545, 8374916, 8352348,
124 8329841, 8307395, 8285009, 8262683, 8240418, 8218212, 8196067, 8173981, 8151954, 8129987, 8108079, 124 8329841, 8307395, 8285009, 8262683, 8240418, 8218212, 8196067, 8173981, 8151954, 8129987, 8108079,
125 8086230, 8064440, 8042709, 8021036, 7999422, 7977866, 7956368, 7934928, 7913545, 7892221, 7870954, 125 8086230, 8064440, 8042709, 8021036, 7999422, 7977866, 7956368, 7934928, 7913545, 7892221, 7870954,
126 7849744, 7828591, 7807495, 7786456, 7765474, 7744548, 7723679, 7702866, 7682109, 7661408, 7640763, 126 7849744, 7828591, 7807495, 7786456, 7765474, 7744548, 7723679, 7702866, 7682109, 7661408, 7640763,
127 7620173, 7599639, 7579160, 7558737, 7538368, 7518055, 7497796, 7477591, 7457441, 7437346, 7417304, 127 7620173, 7599639, 7579160, 7558737, 7538368, 7518055, 7497796, 7477591, 7457441, 7437346, 7417304,
128 7397317, 7377383, 7357503, 7337677, 7317904, 7298185, 7278518, 7258905, 7239344, 7219836, 7200381, 128 7397317, 7377383, 7357503, 7337677, 7317904, 7298185, 7278518, 7258905, 7239344, 7219836, 7200381,
129 7180978, 7161627, 7142329, 7123082, 7103888, 7084745, 7065654, 7046614, 7027625, 7008688, 6989802, 129 7180978, 7161627, 7142329, 7123082, 7103888, 7084745, 7065654, 7046614, 7027625, 7008688, 6989802,
130 6970966, 6952181, 6933447, 6914764, 6896130, 6877547, 6859014, 6840531, 6822098, 6803715, 6785381, 130 6970966, 6952181, 6933447, 6914764, 6896130, 6877547, 6859014, 6840531, 6822098, 6803715, 6785381,
131 6767096, 6748861, 6730675, 6712537, 6694449, 6676410, 6658419, 6640476, 6622582, 6604736, 6586938, 131 6767096, 6748861, 6730675, 6712537, 6694449, 6676410, 6658419, 6640476, 6622582, 6604736, 6586938,
132 6569188, 6551486, 6533832, 6516225, 6498666, 6481154, 6463689, 6446272, 6428901, 6411577, 6394299, 132 6569188, 6551486, 6533832, 6516225, 6498666, 6481154, 6463689, 6446272, 6428901, 6411577, 6394299,
133 6377069, 6359884, 6342746, 6325655, 6308609, 6291609, 6274655, 6257747, 6240884, 6224066, 6207294, 133 6377069, 6359884, 6342746, 6325655, 6308609, 6291609, 6274655, 6257747, 6240884, 6224066, 6207294,
134 6190568, 6173886, 6157249, 6140657, 6124110, 6107607, 6091149, 6074735, 6058365, 6042040, 6025758, 134 6190568, 6173886, 6157249, 6140657, 6124110, 6107607, 6091149, 6074735, 6058365, 6042040, 6025758,
135 6009521, 5993327, 5977177, 5961070, 5945007, 5928987, 5913010, 5897076, 5881185, 5865337, 5849532, 135 6009521, 5993327, 5977177, 5961070, 5945007, 5928987, 5913010, 5897076, 5881185, 5865337, 5849532,
136 5833769, 5818049, 5802371, 5786735, 5771141, 5755590, 5740080, 5724612, 5709186, 5693802, 5678459, 136 5833769, 5818049, 5802371, 5786735, 5771141, 5755590, 5740080, 5724612, 5709186, 5693802, 5678459,
137 5663157, 5647896, 5632677, 5617498, 5602361, 5587264, 5572208, 5557193, 5542218, 5527283, 5512389, 137 5663157, 5647896, 5632677, 5617498, 5602361, 5587264, 5572208, 5557193, 5542218, 5527283, 5512389,
138 5497534, 5482720, 5467946, 5453211, 5438517, 5423861, 5409246, 5394669, 5380132, 5365635, 5351176, 138 5497534, 5482720, 5467946, 5453211, 5438517, 5423861, 5409246, 5394669, 5380132, 5365635, 5351176,
139 5336756, 5322375, 5308033, 5293729, 5279464, 5265237, 5251049, 5236899, 5222787, 5208713, 5194677, 139 5336756, 5322375, 5308033, 5293729, 5279464, 5265237, 5251049, 5236899, 5222787, 5208713, 5194677,
140 5180679, 5166719, 5152796, 5138911, 5125063, 5111252, 5097479, 5083743, 5070044, 5056382, 5042756, 140 5180679, 5166719, 5152796, 5138911, 5125063, 5111252, 5097479, 5083743, 5070044, 5056382, 5042756,
141 5029167, 5015615, 5002100, 4988620, 4975178, 4961771, 4948400, 4935066, 4921767, 4908505, 4895278, 141 5029167, 5015615, 5002100, 4988620, 4975178, 4961771, 4948400, 4935066, 4921767, 4908505, 4895278,
142 4882086, 4868931, 4855810, 4842725, 4829676, 4816661, 4803682, 4790737, 4777827, 4764953, 4752112, 142 4882086, 4868931, 4855810, 4842725, 4829676, 4816661, 4803682, 4790737, 4777827, 4764953, 4752112,
143 4739307, 4726536, 4713799, 4701097, 4688429, 4675795, 4663195, 4650629, 4638097, 4625599, 4613134, 143 4739307, 4726536, 4713799, 4701097, 4688429, 4675795, 4663195, 4650629, 4638097, 4625599, 4613134,
144 4600703, 4588306, 4575941, 4563611, 4551313, 4539049, 4526817, 4514619, 4502453, 4490320, 4478220, 144 4600703, 4588306, 4575941, 4563611, 4551313, 4539049, 4526817, 4514619, 4502453, 4490320, 4478220,
145 4466153, 4454118, 4442115, 4430145, 4418207, 4406301, 4394428, 4382586, 4370776, 4358998, 4347252, 145 4466153, 4454118, 4442115, 4430145, 4418207, 4406301, 4394428, 4382586, 4370776, 4358998, 4347252,
146 4335538, 4323855, 4312203, 4300583, 4288994, 4277437, 4265910, 4254415, 4242950, 4231517, 4220114, 146 4335538, 4323855, 4312203, 4300583, 4288994, 4277437, 4265910, 4254415, 4242950, 4231517, 4220114,
147 4208742, 4197401, 4186090, 4174810, 4163560, 4152340, 4141151, 4129992, 4118863, 4107764, 4096694, 147 4208742, 4197401, 4186090, 4174810, 4163560, 4152340, 4141151, 4129992, 4118863, 4107764, 4096694,
148 4085655, 4074645, 4063665, 4052715, 4041794, 4030903, 4020041, 4009208, 3998404, 3987630, 3976884, 148 4085655, 4074645, 4063665, 4052715, 4041794, 4030903, 4020041, 4009208, 3998404, 3987630, 3976884,
149 3966168, 3955480, 3944821, 3934191, 3923590, 3913017, 3902472, 3891956, 3881469, 3871009, 3860578, 149 3966168, 3955480, 3944821, 3934191, 3923590, 3913017, 3902472, 3891956, 3881469, 3871009, 3860578,
150 3850175, 3839800, 3829453, 3819133, 3808842, 3798578, 3788342, 3778134, 3767953, 3757799, 3747673, 150 3850175, 3839800, 3829453, 3819133, 3808842, 3798578, 3788342, 3778134, 3767953, 3757799, 3747673,
151 3737574, 3727503, 3717458, 3707441, 3697450, 3687487, 3677550, 3667640, 3657757, 3647900, 3638070, 151 3737574, 3727503, 3717458, 3707441, 3697450, 3687487, 3677550, 3667640, 3657757, 3647900, 3638070,
152 3628267, 3618490, 3608739, 3599014, 3589316, 3579644, 3569998, 3560378, 3550783, 3541215, 3531673, 152 3628267, 3618490, 3608739, 3599014, 3589316, 3579644, 3569998, 3560378, 3550783, 3541215, 3531673,
153 3522156, 3512665, 3503199, 3493759, 3484344, 3474955, 3465591, 3456252, 3446939, 3437650, 3428387, 153 3522156, 3512665, 3503199, 3493759, 3484344, 3474955, 3465591, 3456252, 3446939, 3437650, 3428387,
154 3419148, 3409935, 3400746, 3391582, 3382443, 3373328, 3364238, 3355172, 3346131, 3337114, 3328122, 154 3419148, 3409935, 3400746, 3391582, 3382443, 3373328, 3364238, 3355172, 3346131, 3337114, 3328122,
155 3319153, 3310209, 3301289, 3292393, 3283521, 3274673, 3265849, 3257048, 3248271, 3239518, 3230789, 155 3319153, 3310209, 3301289, 3292393, 3283521, 3274673, 3265849, 3257048, 3248271, 3239518, 3230789,
156 3222083, 3213400, 3204741, 3196105, 3187493, 3178903, 3170337, 3161794, 3153274, 3144777, 3136302, 156 3222083, 3213400, 3204741, 3196105, 3187493, 3178903, 3170337, 3161794, 3153274, 3144777, 3136302,
157 3127851, 3119422, 3111016, 3102633, 3094272, 3085934, 3077619, 3069325, 3061054, 3052806, 3044579, 157 3127851, 3119422, 3111016, 3102633, 3094272, 3085934, 3077619, 3069325, 3061054, 3052806, 3044579,
158 3036375, 3028193, 3020033, 3011895, 3003779, 2995684, 2987612, 2979561, 2971532, 2963525, 2955539, 158 3036375, 3028193, 3020033, 3011895, 3003779, 2995684, 2987612, 2979561, 2971532, 2963525, 2955539,
159 2947575, 2939632, 2931710, 2923810, 2915931, 2908074, 2900237, 2892422, 2884628, 2876855, 2869102, 159 2947575, 2939632, 2931710, 2923810, 2915931, 2908074, 2900237, 2892422, 2884628, 2876855, 2869102,
160 2861371, 2853660, 2845971, 2838302, 2830653, 2823025, 2815418, 2807832, 2800265, 2792719, 2785194, 160 2861371, 2853660, 2845971, 2838302, 2830653, 2823025, 2815418, 2807832, 2800265, 2792719, 2785194,
161 2777689, 2770203, 2762739, 2755294, 2747869, 2740464, 2733080, 2725715, 2718370, 2711045, 2703739, 161 2777689, 2770203, 2762739, 2755294, 2747869, 2740464, 2733080, 2725715, 2718370, 2711045, 2703739,
162 2696453, 2689187, 2681941, 2674714, 2667506, 2660318, 2653149, 2646000, 2638870, 2631759, 2624667, 162 2696453, 2689187, 2681941, 2674714, 2667506, 2660318, 2653149, 2646000, 2638870, 2631759, 2624667,
163 2617594, 2610540, 2603506, 2596490, 2589493, 2582515, 2575556, 2568616, 2561694, 2554791, 2547907, 163 2617594, 2610540, 2603506, 2596490, 2589493, 2582515, 2575556, 2568616, 2561694, 2554791, 2547907,
164 2541041, 2534194, 2527365, 2520554, 2513762, 2506988, 2500233, 2493495, 2486776, 2480075, 2473392, 164 2541041, 2534194, 2527365, 2520554, 2513762, 2506988, 2500233, 2493495, 2486776, 2480075, 2473392,
165 2466727, 2460080, 2453450, 2446839, 2440246, 2433670, 2427112, 2420571, 2414049, 2407544, 2401056, 165 2466727, 2460080, 2453450, 2446839, 2440246, 2433670, 2427112, 2420571, 2414049, 2407544, 2401056,
166 2394586, 2388133, 2381698, 2375280, 2368879, 2362496, 2356130, 2349780, 2343448, 2337134, 2330836, 166 2394586, 2388133, 2381698, 2375280, 2368879, 2362496, 2356130, 2349780, 2343448, 2337134, 2330836,
167 2324555, 2318291, 2312044, 2305813, 2299600, 2293403, 2287223, 2281060, 2274913, 2268783, 2262669, 167 2324555, 2318291, 2312044, 2305813, 2299600, 2293403, 2287223, 2281060, 2274913, 2268783, 2262669,
168 2256572, 2250491, 2244427, 2238379, 2232347, 2226331, 2220332, 2214349, 2208382, 2202431, 2196496, 168 2256572, 2250491, 2244427, 2238379, 2232347, 2226331, 2220332, 2214349, 2208382, 2202431, 2196496,
169 2190577, 2184674, 2178787, 2172916, 2167060, 2161221, 2155397, 2149589, 2143796, 2138019, 2132258, 169 2190577, 2184674, 2178787, 2172916, 2167060, 2161221, 2155397, 2149589, 2143796, 2138019, 2132258,
170 2126512, 2120782, 2115067, 2109368, 2103683, 2098015, 2092361, 2086723, 2081100, 2075492, 2069899, 170 2126512, 2120782, 2115067, 2109368, 2103683, 2098015, 2092361, 2086723, 2081100, 2075492, 2069899,
171 2064321, 2058758, 2053211, 2047678, 2042160, 2036657, 2031169, 2025695, 2020237, 2014793, 2009364, 171 2064321, 2058758, 2053211, 2047678, 2042160, 2036657, 2031169, 2025695, 2020237, 2014793, 2009364,
172 2003949, 1998549, 1993163, 1987792, 1982436, 1977094, 1971766, 1966453, 1961154, 1955869, 1950599, 172 2003949, 1998549, 1993163, 1987792, 1982436, 1977094, 1971766, 1966453, 1961154, 1955869, 1950599,
173 1945342, 1940100, 1934872, 1929658, 1924458, 1919272, 1914101, 1908943, 1903799, 1898668, 1893552, 173 1945342, 1940100, 1934872, 1929658, 1924458, 1919272, 1914101, 1908943, 1903799, 1898668, 1893552,
174 1888450, 1883361, 1878286, 1873224, 1868176, 1863142, 1858122, 1853115, 1848121, 1843141, 1838174, 174 1888450, 1883361, 1878286, 1873224, 1868176, 1863142, 1858122, 1853115, 1848121, 1843141, 1838174,
175 1833221, 1828281, 1823354, 1818441, 1813540, 1808654, 1803780, 1798919, 1794072, 1789237, 1784416, 175 1833221, 1828281, 1823354, 1818441, 1813540, 1808654, 1803780, 1798919, 1794072, 1789237, 1784416,
176 1779607, 1774812, 1770029, 1765259, 1760502, 1755758, 1751027, 1746309, 1741603, 1736910, 1732229, 176 1779607, 1774812, 1770029, 1765259, 1760502, 1755758, 1751027, 1746309, 1741603, 1736910, 1732229,
177 1727561, 1722906, 1718263, 1713633, 1709015, 1704410, 1699817, 1695237, 1690669, 1686113, 1681569, 177 1727561, 1722906, 1718263, 1713633, 1709015, 1704410, 1699817, 1695237, 1690669, 1686113, 1681569,
178 1677038, 1672519, 1668012, 1663517, 1659034, 1654564, 1650105, 1645659, 1641224, 1636801, 1632391, 178 1677038, 1672519, 1668012, 1663517, 1659034, 1654564, 1650105, 1645659, 1641224, 1636801, 1632391,
179 1627992, 1623605, 1619230, 1614866, 1610515, 1606175, 1601847, 1597530, 1593225, 1588932, 1584650, 179 1627992, 1623605, 1619230, 1614866, 1610515, 1606175, 1601847, 1597530, 1593225, 1588932, 1584650,
180 1580380, 1576122, 1571874, 1567639, 1563414, 1559201, 1555000, 1550810, 1546631, 1542463, 1538306, 180 1580380, 1576122, 1571874, 1567639, 1563414, 1559201, 1555000, 1550810, 1546631, 1542463, 1538306,
181 1534161, 1530027, 1525904, 1521792, 1517691, 1513602, 1509523, 1505455, 1501399, 1497353, 1493318, 181 1534161, 1530027, 1525904, 1521792, 1517691, 1513602, 1509523, 1505455, 1501399, 1497353, 1493318,
182 1489294, 1485281, 1481278, 1477287, 1473306, 1469336, 1465376, 1461427, 1457489, 1453562, 1449645, 182 1489294, 1485281, 1481278, 1477287, 1473306, 1469336, 1465376, 1461427, 1457489, 1453562, 1449645,
183 1445738, 1441843, 1437957, 1434082, 1430218, 1426364, 1422520, 1418687, 1414864, 1411051, 1407249, 183 1445738, 1441843, 1437957, 1434082, 1430218, 1426364, 1422520, 1418687, 1414864, 1411051, 1407249,
184 1403457, 1399675, 1395903, 1392142, 1388390, 1384649, 1380918, 1377197, 1373486, 1369784, 1366093, 184 1403457, 1399675, 1395903, 1392142, 1388390, 1384649, 1380918, 1377197, 1373486, 1369784, 1366093,
185 1362412, 1358741, 1355079, 1351428, 1347786, 1344154, 1340532, 1336920, 1333317, 1329724, 1326141, 185 1362412, 1358741, 1355079, 1351428, 1347786, 1344154, 1340532, 1336920, 1333317, 1329724, 1326141,
186 1322567, 1319004, 1315449, 1311904, 1308369, 1304844, 1301327, 1297821, 1294323, 1290836, 1287357, 186 1322567, 1319004, 1315449, 1311904, 1308369, 1304844, 1301327, 1297821, 1294323, 1290836, 1287357,
187 1283888, 1280429, 1276978, 1273537, 1270105, 1266683, 1263269, 1259865, 1256470, 1253084, 1249708, 187 1283888, 1280429, 1276978, 1273537, 1270105, 1266683, 1263269, 1259865, 1256470, 1253084, 1249708,
188 1246340, 1242982, 1239632, 1236292, 1232960, 1229638, 1226324, 1223020, 1219724, 1216437, 1213159, 188 1246340, 1242982, 1239632, 1236292, 1232960, 1229638, 1226324, 1223020, 1219724, 1216437, 1213159,
189 1209890, 1206630, 1203378, 1200136, 1196902, 1193676, 1190460, 1187252, 1184052, 1180862, 1177680, 189 1209890, 1206630, 1203378, 1200136, 1196902, 1193676, 1190460, 1187252, 1184052, 1180862, 1177680,
190 1174506, 1171341, 1168185, 1165037, 1161897, 1158767, 1155644, 1152530, 1149424, 1146327, 1143238, 190 1174506, 1171341, 1168185, 1165037, 1161897, 1158767, 1155644, 1152530, 1149424, 1146327, 1143238,
191 1140157, 1137085, 1134021, 1130965, 1127917, 1124878, 1121846, 1118823, 1115809, 1112802, 1109803, 191 1140157, 1137085, 1134021, 1130965, 1127917, 1124878, 1121846, 1118823, 1115809, 1112802, 1109803,
192 1106813, 1103830, 1100855, 1097889, 1094931, 1091980, 1089037, 1086103, 1083176, 1080257, 1077346, 192 1106813, 1103830, 1100855, 1097889, 1094931, 1091980, 1089037, 1086103, 1083176, 1080257, 1077346,
193 1074443, 1071548, 1068660, 1065781, 1062909, 1060044, 1057188, 1054339, 1051498, 1048664, 1045839, 193 1074443, 1071548, 1068660, 1065781, 1062909, 1060044, 1057188, 1054339, 1051498, 1048664, 1045839,
194 1043020, 1040210, 1037407, 1034611, 1031823, 1029043, 1026270, 1023504, 1020746, 1017996, 1015252, 194 1043020, 1040210, 1037407, 1034611, 1031823, 1029043, 1026270, 1023504, 1020746, 1017996, 1015252,
195 1012517, 1009788, 1007067, 1004353, 1001647, 998948, 996256, 993571, 990894, 988224, 985561, 195 1012517, 1009788, 1007067, 1004353, 1001647, 998948, 996256, 993571, 990894, 988224, 985561,
196 982905, 980256, 977615, 974980, 972353, 969733, 967120, 964514, 961915, 959323, 956737, 196 982905, 980256, 977615, 974980, 972353, 969733, 967120, 964514, 961915, 959323, 956737,
197 954159, 951588, 949024, 946467, 943916, 941373, 938836, 936306, 933783, 931267, 928757, 197 954159, 951588, 949024, 946467, 943916, 941373, 938836, 936306, 933783, 931267, 928757,
198 926254, 923758, 921269, 918787, 916311, 913842, 911379, 908923, 906474, 904031, 901595, 198 926254, 923758, 921269, 918787, 916311, 913842, 911379, 908923, 906474, 904031, 901595,
199 899166, 896743, 894326, 891916, 889513, 887116, 884725, 882341, 879963, 877592, 875227, 199 899166, 896743, 894326, 891916, 889513, 887116, 884725, 882341, 879963, 877592, 875227,
200 872869, 870517, 868171, 865831, 863498, 861171, 858851, 856536, 854228, 851926, 849631, 200 872869, 870517, 868171, 865831, 863498, 861171, 858851, 856536, 854228, 851926, 849631,
201 847341, 845058, 842781, 840510, 838245, 835986, 833733, 831487, 829246, 827011, 824783, 201 847341, 845058, 842781, 840510, 838245, 835986, 833733, 831487, 829246, 827011, 824783,
202 822560, 820344, 818133, 815929, 813730, 811537, 809350, 807169, 804994, 802825, 800662, 202 822560, 820344, 818133, 815929, 813730, 811537, 809350, 807169, 804994, 802825, 800662,
203 798504, 796352, 794206, 792066, 789932, 787803, 785680, 783563, 781452, 779346, 777246, 203 798504, 796352, 794206, 792066, 789932, 787803, 785680, 783563, 781452, 779346, 777246,
204 775151, 773062, 770979, 768902, 766830, 764763, 762703, 760647, 758598, 756553, 754515, 204 775151, 773062, 770979, 768902, 766830, 764763, 762703, 760647, 758598, 756553, 754515,
205 752482, 750454, 748432, 746415, 744403, 742397, 740397, 738402, 736412, 734428, 732448, 205 752482, 750454, 748432, 746415, 744403, 742397, 740397, 738402, 736412, 734428, 732448,
206 730475, 728506, 726543, 724585, 722633, 720686, 718744, 716807, 714875, 712949, 711028, 206 730475, 728506, 726543, 724585, 722633, 720686, 718744, 716807, 714875, 712949, 711028,
207 709112, 707201, 705295, 703394, 701499, 699609, 697723, 695843, 693968, 692098, 690233, 207 709112, 707201, 705295, 703394, 701499, 699609, 697723, 695843, 693968, 692098, 690233,
208 688373, 686518, 684668, 682823, 680983, 679148, 677318, 675493, 673673, 671857, 670047, 208 688373, 686518, 684668, 682823, 680983, 679148, 677318, 675493, 673673, 671857, 670047,
209 668241, 666441, 664645, 662854, 661067, 659286, 657510, 655738, 653971, 652208, 650451, 209 668241, 666441, 664645, 662854, 661067, 659286, 657510, 655738, 653971, 652208, 650451,
210 648698, 646950, 645207, 643468, 641734, 640005, 638280, 636560, 634845, 633134, 631428, 210 648698, 646950, 645207, 643468, 641734, 640005, 638280, 636560, 634845, 633134, 631428,
211 629727, 628030, 626337, 624650, 622966, 621288, 619613, 617944, 616279, 614618, 612962, 211 629727, 628030, 626337, 624650, 622966, 621288, 619613, 617944, 616279, 614618, 612962,
212 611310, 609663, 608020, 606381, 604747, 603118, 601492, 599872, 598255, 596643, 595035, 212 611310, 609663, 608020, 606381, 604747, 603118, 601492, 599872, 598255, 596643, 595035,
213 593432, 591833, 590238, 588647, 587061, 585479, 583901, 582328, 580759, 579194, 577633, 213 593432, 591833, 590238, 588647, 587061, 585479, 583901, 582328, 580759, 579194, 577633,
214 576076, 574524, 572976, 571432, 569892, 568356, 566825, 565297, 563774, 562255, 560740, 214 576076, 574524, 572976, 571432, 569892, 568356, 566825, 565297, 563774, 562255, 560740,
215 559229, 557722, 556219, 554720, 553225, 551734, 550248, 548765, 547286, 545811, 544341, 215 559229, 557722, 556219, 554720, 553225, 551734, 550248, 548765, 547286, 545811, 544341,
216 542874, 541411, 539952, 538497, 537046, 535599, 534155, 532716, 531280, 529849, 528421, 216 542874, 541411, 539952, 538497, 537046, 535599, 534155, 532716, 531280, 529849, 528421,
217 526997, 525577, 524161, 522748, 521340, 519935, 518534, 517136, 515743, 514353, 512967, 217 526997, 525577, 524161, 522748, 521340, 519935, 518534, 517136, 515743, 514353, 512967,
218 511585, 510206, 508831, 507460, 506093, 504729, 503369, 502012, 500660, 499310, 497965, 218 511585, 510206, 508831, 507460, 506093, 504729, 503369, 502012, 500660, 499310, 497965,
219 496623, 495285, 493950, 492619, 491292, 489968, 488648, 487331, 486018, 484708, 483402, 219 496623, 495285, 493950, 492619, 491292, 489968, 488648, 487331, 486018, 484708, 483402,
220 482099, 480800, 479504, 478212, 476924, 475638, 474357, 473078, 471804, 470532, 469264, 220 482099, 480800, 479504, 478212, 476924, 475638, 474357, 473078, 471804, 470532, 469264,
221 468000, 466739, 465481, 464227, 462976, 461728, 460484, 459243, 458005, 456771, 455540, 221 468000, 466739, 465481, 464227, 462976, 461728, 460484, 459243, 458005, 456771, 455540,
222 454313, 453089, 451868, 450650, 449436, 448225, 447017, 445812, 444611, 443413, 442218, 222 454313, 453089, 451868, 450650, 449436, 448225, 447017, 445812, 444611, 443413, 442218,
223 441026, 439838, 438653, 437470, 436292, 435116, 433943, 432774, 431608, 430445, 429285, 223 441026, 439838, 438653, 437470, 436292, 435116, 433943, 432774, 431608, 430445, 429285,
224 428128, 426974, 425824, 424676, 423532, 422391, 421252, 420117, 418985, 417856, 416730, 224 428128, 426974, 425824, 424676, 423532, 422391, 421252, 420117, 418985, 417856, 416730,
225 415607, 414487, 413370, 412256, 411146, 410038, 408933, 407831, 406732, 405636, 404543, 225 415607, 414487, 413370, 412256, 411146, 410038, 408933, 407831, 406732, 405636, 404543,
226 403453, 402365, 401281, 400200, 399121, 398046, 396973, 395903, 394837, 393773, 392712, 226 403453, 402365, 401281, 400200, 399121, 398046, 396973, 395903, 394837, 393773, 392712,
227 391653, 390598, 389545, 388496, 387449, 386405, 385363, 384325, 383289, 382257, 381226, 227 391653, 390598, 389545, 388496, 387449, 386405, 385363, 384325, 383289, 382257, 381226,
228 380199, 379175, 378153, 377134, 376118, 375104, 374093, 373085, 372080, 371077, 370077, 228 380199, 379175, 378153, 377134, 376118, 375104, 374093, 373085, 372080, 371077, 370077,
229 369080, 368085, 367094, 366104, 365118, 364134, 363153, 362174, 361198, 360225, 359254, 229 369080, 368085, 367094, 366104, 365118, 364134, 363153, 362174, 361198, 360225, 359254,
230 358286, 357321, 356358, 355397, 354440, 353485, 352532, 351582, 350635, 349690, 348748, 230 358286, 357321, 356358, 355397, 354440, 353485, 352532, 351582, 350635, 349690, 348748,
231 347808, 346871, 345936, 345004, 344074, 343147, 342222, 341300, 340380, 339463, 338548, 231 347808, 346871, 345936, 345004, 344074, 343147, 342222, 341300, 340380, 339463, 338548,
232 337636, 336726, 335819, 334914, 334011, 333111, 332214, 331318, 330426, 329535, 328647, 232 337636, 336726, 335819, 334914, 334011, 333111, 332214, 331318, 330426, 329535, 328647,
233 327762, 326878, 325997, 325119, 324243, 323369, 322498, 321629, 320762, 319898, 319036, 233 327762, 326878, 325997, 325119, 324243, 323369, 322498, 321629, 320762, 319898, 319036,
234 318176, 317319, 316463, 315611, 314760, 313912, 313066, 312222, 311381, 310542, 309705, 234 318176, 317319, 316463, 315611, 314760, 313912, 313066, 312222, 311381, 310542, 309705,
235 308871, 308038, 307208, 306380, 305555, 304731, 303910, 303091, 302275, 301460, 300648, 235 308871, 308038, 307208, 306380, 305555, 304731, 303910, 303091, 302275, 301460, 300648,
236 299838, 299030, 298224, 297420, 296619, 295819, 295022, 294227, 293434, 292644, 291855, 236 299838, 299030, 298224, 297420, 296619, 295819, 295022, 294227, 293434, 292644, 291855,
237 291069, 290284, 289502, 288722, 287944, 287168, 286394, 285622, 284853, 284085, 283320, 237 291069, 290284, 289502, 288722, 287944, 287168, 286394, 285622, 284853, 284085, 283320,
238 282556, 281795, 281035, 280278, 279523, 278770, 278018, 277269, 276522, 275777, 275034, 238 282556, 281795, 281035, 280278, 279523, 278770, 278018, 277269, 276522, 275777, 275034,
239 274293, 273553, 272816, 272081, 271348, 270617, 269888, 269160, 268435, 267712, 266990, 239 274293, 273553, 272816, 272081, 271348, 270617, 269888, 269160, 268435, 267712, 266990,
240 266271, 265553, 264838, 264124, 263412, 262702, 261994, 261289, 260584, 259882, 259182, 240 266271, 265553, 264838, 264124, 263412, 262702, 261994, 261289, 260584, 259882, 259182,
241 258483, 257787, 257092, 256399, 255709, 255020, 254332, 253647, 252963, 252282, 251602, 241 258483, 257787, 257092, 256399, 255709, 255020, 254332, 253647, 252963, 252282, 251602,
242 250924, 250248, 249573, 248901, 248230, 247561, 246894, 246229, 245565, 244904, 244244, 242 250924, 250248, 249573, 248901, 248230, 247561, 246894, 246229, 245565, 244904, 244244,
243 243586, 242929, 242275, 241622, 240971, 240321, 239674, 239028, 238384, 237741, 237101, 243 243586, 242929, 242275, 241622, 240971, 240321, 239674, 239028, 238384, 237741, 237101,
244 236462, 235825, 235189, 234555, 233923, 233293, 232664, 232037, 231412, 230788, 230166, 244 236462, 235825, 235189, 234555, 233923, 233293, 232664, 232037, 231412, 230788, 230166,
245 229546, 228928, 228311, 227696, 227082, 226470, 225860, 225251, 224644, 224039, 223435, 245 229546, 228928, 228311, 227696, 227082, 226470, 225860, 225251, 224644, 224039, 223435,
246 222833, 222233, 221634, 221036, 220441, 219847, 219254, 218664, 218074, 217487, 216901, 246 222833, 222233, 221634, 221036, 220441, 219847, 219254, 218664, 218074, 217487, 216901,
247 216316, 215733, 215152, 214572, 213994, 213417, 212842, 212269, 211697, 211126, 210557, 247 216316, 215733, 215152, 214572, 213994, 213417, 212842, 212269, 211697, 211126, 210557,
248 209990, 209424, 208860, 208297, 207735, 207176, 206617, 206061, 205505, 204952, 204399, 248 209990, 209424, 208860, 208297, 207735, 207176, 206617, 206061, 205505, 204952, 204399,
249 203849, 203299, 202751, 202205, 201660, 201117, 200575, 200034, 199495, 198958, 198422, 249 203849, 203299, 202751, 202205, 201660, 201117, 200575, 200034, 199495, 198958, 198422,
250 197887, 197354, 196822, 196291, 195762, 195235, 194709, 194184, 193661, 193139, 192619, 250 197887, 197354, 196822, 196291, 195762, 195235, 194709, 194184, 193661, 193139, 192619,
251 192100, 191582, 191066, 190551, 190037, 189525, 189014, 188505, 187997, 187491, 186985, 251 192100, 191582, 191066, 190551, 190037, 189525, 189014, 188505, 187997, 187491, 186985,
252 186481, 185979, 185478, 184978, 184479, 183982, 183487, 182992, 182499, 182007, 181517, 252 186481, 185979, 185478, 184978, 184479, 183982, 183487, 182992, 182499, 182007, 181517,
253 181028, 180540, 180053, 179568, 179084, 178602, 178120, 177640, 177162, 176684, 176208, 253 181028, 180540, 180053, 179568, 179084, 178602, 178120, 177640, 177162, 176684, 176208,
254 175733, 175260, 174788, 174317, 173847, 173378, 172911, 172445, 171981, 171517, 171055, 254 175733, 175260, 174788, 174317, 173847, 173378, 172911, 172445, 171981, 171517, 171055,
255 170594, 170134, 169676, 169219, 168763, 168308, 167854, 167402, 166951, 166501, 166052, 255 170594, 170134, 169676, 169219, 168763, 168308, 167854, 167402, 166951, 166501, 166052,
256 165605, 165159, 164713, 164270, 163827, 163386, 162945, 162506, 162068, 161632, 161196, 256 165605, 165159, 164713, 164270, 163827, 163386, 162945, 162506, 162068, 161632, 161196,
257 160762, 160328, 159896, 159465, 159036, 158607, 158180, 157754, 157328, 156904, 156482, 257 160762, 160328, 159896, 159465, 159036, 158607, 158180, 157754, 157328, 156904, 156482,
258 156060, 155639, 155220, 154802, 154385, 153969, 153554, 153140, 152727, 152316, 151905, 258 156060, 155639, 155220, 154802, 154385, 153969, 153554, 153140, 152727, 152316, 151905,
259 151496, 151088, 150681, 150275, 149870, 149466, 149063, 148661, 148261, 147861, 147463, 259 151496, 151088, 150681, 150275, 149870, 149466, 149063, 148661, 148261, 147861, 147463,
260 147065, 146669, 146274, 145880, 145487, 145094, 144703, 144314, 143925, 143537, 143150, 260 147065, 146669, 146274, 145880, 145487, 145094, 144703, 144314, 143925, 143537, 143150,
261 142764, 142380, 141996, 141613, 141232, 140851, 140472, 140093, 139715, 139339, 138964, 261 142764, 142380, 141996, 141613, 141232, 140851, 140472, 140093, 139715, 139339, 138964,
262 138589, 138216, 137843, 137472, 137101, 136732, 136363, 135996, 135629, 135264, 134899, 262 138589, 138216, 137843, 137472, 137101, 136732, 136363, 135996, 135629, 135264, 134899,
263 134536, 134173, 133812, 133451, 133092, 132733, 132375, 132019, 131663, 131308, 130954, 263 134536, 134173, 133812, 133451, 133092, 132733, 132375, 132019, 131663, 131308, 130954,
264 130601, 130249, 129898, 129548, 129199, 128851, 128504, 128158, 127812, 127468, 127124, 264 130601, 130249, 129898, 129548, 129199, 128851, 128504, 128158, 127812, 127468, 127124,
265 126782, 126440, 126099, 125760, 125421, 125083, 124746, 124410, 124074, 123740, 123407, 265 126782, 126440, 126099, 125760, 125421, 125083, 124746, 124410, 124074, 123740, 123407,
266 123074, 122742, 122412, 122082, 121753, 121425, 121097, 120771, 120446, 120121, 119797, 266 123074, 122742, 122412, 122082, 121753, 121425, 121097, 120771, 120446, 120121, 119797,
267 119475, 119153, 118832, 118511, 118192, 117873, 117556, 117239, 116923, 116608, 116294, 267 119475, 119153, 118832, 118511, 118192, 117873, 117556, 117239, 116923, 116608, 116294,
268 115980, 115668, 115356, 115045, 114735, 114426, 114118, 113810, 113504, 113198, 112893, 268 115980, 115668, 115356, 115045, 114735, 114426, 114118, 113810, 113504, 113198, 112893,
269 112589, 112285, 111983, 111681, 111380, 111080, 110780, 110482, 110184, 109887, 109591, 269 112589, 112285, 111983, 111681, 111380, 111080, 110780, 110482, 110184, 109887, 109591,
270 109296, 109001, 108708, 108415, 108122, 107831, 107541, 107251, 106962, 106674, 106386, 270 109296, 109001, 108708, 108415, 108122, 107831, 107541, 107251, 106962, 106674, 106386,
271 106099, 105813, 105528, 105244, 104960, 104678, 104395, 104114, 103834, 103554, 103275, 271 106099, 105813, 105528, 105244, 104960, 104678, 104395, 104114, 103834, 103554, 103275,
272 102996, 102719, 102442, 102166, 101891, 101616, 101342, 101069, 100797, 100525, 100254, 272 102996, 102719, 102442, 102166, 101891, 101616, 101342, 101069, 100797, 100525, 100254,
273 99984, 99715, 99446, 99178, 98911, 98644, 98378, 98113, 97849, 97585, 97322, 273 99984, 99715, 99446, 99178, 98911, 98644, 98378, 98113, 97849, 97585, 97322,
274 97060, 96799, 96538, 96278, 96018, 95759, 95501, 95244, 94987, 94731, 94476, 274 97060, 96799, 96538, 96278, 96018, 95759, 95501, 95244, 94987, 94731, 94476,
275 94222, 93968, 93714, 93462, 93210, 92959, 92708, 92459, 92209, 91961, 91713, 275 94222, 93968, 93714, 93462, 93210, 92959, 92708, 92459, 92209, 91961, 91713,
276 91466, 91219, 90974, 90729, 90484, 90240, 89997, 89754, 89513, 89271, 89031, 276 91466, 91219, 90974, 90729, 90484, 90240, 89997, 89754, 89513, 89271, 89031,
277 88791, 88552, 88313, 88075, 87838, 87601, 87365, 87130, 86895, 86661, 86427, 277 88791, 88552, 88313, 88075, 87838, 87601, 87365, 87130, 86895, 86661, 86427,
278 86194, 85962, 85730, 85499, 85269, 85039, 84810, 84581, 84353, 84126, 83899, 278 86194, 85962, 85730, 85499, 85269, 85039, 84810, 84581, 84353, 84126, 83899,
279 83673, 83448, 83223, 82999, 82775, 82552, 82330, 82108, 81886, 81666, 81446, 279 83673, 83448, 83223, 82999, 82775, 82552, 82330, 82108, 81886, 81666, 81446,
280 81226, 81007, 80789, 80571, 80354, 80138, 79922, 79706, 79492, 79277, 79064, 280 81226, 81007, 80789, 80571, 80354, 80138, 79922, 79706, 79492, 79277, 79064,
281 78851, 78638, 78426, 78215, 78004, 77794, 77584, 77375, 77167, 76959, 76752, 281 78851, 78638, 78426, 78215, 78004, 77794, 77584, 77375, 77167, 76959, 76752,
282 76545, 76338, 76133, 75928, 75723, 75519, 75315, 75112, 74910, 74708, 74507, 282 76545, 76338, 76133, 75928, 75723, 75519, 75315, 75112, 74910, 74708, 74507,
283 74306, 74106, 73906, 73707, 73508, 73310, 73113, 72916, 72719, 72523, 72328, 283 74306, 74106, 73906, 73707, 73508, 73310, 73113, 72916, 72719, 72523, 72328,
284 72133, 71939, 71745, 71551, 71359, 71166, 70975, 70783, 70593, 70402, 70213, 284 72133, 71939, 71745, 71551, 71359, 71166, 70975, 70783, 70593, 70402, 70213,
285 70023, 69835, 69646, 69459, 69272, 69085, 68899, 68713, 68528, 68343, 68159, 285 70023, 69835, 69646, 69459, 69272, 69085, 68899, 68713, 68528, 68343, 68159,
286 67975, 67792, 67610, 67427, 67246, 67065, 66884, 66704, 66524, 66345, 66166, 286 67975, 67792, 67610, 67427, 67246, 67065, 66884, 66704, 66524, 66345, 66166,
287 65987, 65810, 65632, 65455, 65279, 65103, 64928, 64753, 64578, 64404, 64231, 287 65987, 65810, 65632, 65455, 65279, 65103, 64928, 64753, 64578, 64404, 64231,
288 64058, 63885, 63713, 63541, 63370, 63199, 63029, 62859, 62690, 62521, 62352, 288 64058, 63885, 63713, 63541, 63370, 63199, 63029, 62859, 62690, 62521, 62352,
289 62184, 62017, 61850, 61683, 61517, 61351, 61186, 61021, 60856, 60692, 60529, 289 62184, 62017, 61850, 61683, 61517, 61351, 61186, 61021, 60856, 60692, 60529,
290 60366, 60203, 60041, 59879, 59718, 59557, 59396, 59236, 59076, 58917, 58758, 290 60366, 60203, 60041, 59879, 59718, 59557, 59396, 59236, 59076, 58917, 58758,
291 58600, 58442, 58285, 58128, 57971, 57815, 57659, 57504, 57349, 57194, 57040, 291 58600, 58442, 58285, 58128, 57971, 57815, 57659, 57504, 57349, 57194, 57040,
292 56886, 56733, 56580, 56428, 56276, 56124, 55973, 55822, 55671, 55521, 55372, 292 56886, 56733, 56580, 56428, 56276, 56124, 55973, 55822, 55671, 55521, 55372,
293 55223, 55074, 54925, 54777, 54630, 54483, 54336, 54189, 54043, 53898, 53752, 293 55223, 55074, 54925, 54777, 54630, 54483, 54336, 54189, 54043, 53898, 53752,
294 53608, 53463, 53319, 53175, 53032, 52889, 52747, 52605, 52463, 52321, 52180, 294 53608, 53463, 53319, 53175, 53032, 52889, 52747, 52605, 52463, 52321, 52180,
295 52040, 51900, 51760, 51620, 51481, 51342, 51204, 51066, 50928, 50791, 50654, 295 52040, 51900, 51760, 51620, 51481, 51342, 51204, 51066, 50928, 50791, 50654,
296 50518, 50382, 50246, 50111, 49976, 49841, 49707, 49573, 49439, 49306, 49173, 296 50518, 50382, 50246, 50111, 49976, 49841, 49707, 49573, 49439, 49306, 49173,
297 49040, 48908, 48776, 48645, 48514, 48383, 48253, 48123, 47993, 47864, 47735, 297 49040, 48908, 48776, 48645, 48514, 48383, 48253, 48123, 47993, 47864, 47735,
298 47606, 47478, 47350, 47222, 47095, 46968, 46842, 46715, 46590, 46464, 46339, 298 47606, 47478, 47350, 47222, 47095, 46968, 46842, 46715, 46590, 46464, 46339,
299 46214, 46089, 45965, 45841, 45718, 45595, 45472, 45349, 45227, 45105, 44984, 299 46214, 46089, 45965, 45841, 45718, 45595, 45472, 45349, 45227, 45105, 44984,
300 44862, 44741, 44621, 44501, 44381, 44261, 44142, 44023, 43904, 43786, 43668, 300 44862, 44741, 44621, 44501, 44381, 44261, 44142, 44023, 43904, 43786, 43668,
301 43550, 43433, 43316, 43199, 43083, 42967, 42851, 42735, 42620, 42505, 42391, 301 43550, 43433, 43316, 43199, 43083, 42967, 42851, 42735, 42620, 42505, 42391,
302 42277, 42163, 42049, 41936, 41823, 41710, 41598, 41486, 41374, 41262, 41151, 302 42277, 42163, 42049, 41936, 41823, 41710, 41598, 41486, 41374, 41262, 41151,
303 41040, 40930, 40819, 40709, 40600, 40490, 40381, 40272, 40164, 40056, 39948, 303 41040, 40930, 40819, 40709, 40600, 40490, 40381, 40272, 40164, 40056, 39948,
304 39840, 39733, 39626, 39519, 39412, 39306, 39200, 39094, 38989, 38884, 38779, 304 39840, 39733, 39626, 39519, 39412, 39306, 39200, 39094, 38989, 38884, 38779,
305 38675, 38571, 38467, 38363, 38260, 38157, 38054, 37951, 37849, 37747, 37645, 305 38675, 38571, 38467, 38363, 38260, 38157, 38054, 37951, 37849, 37747, 37645,
306 37544, 37443, 37342, 37241, 37141, 37041, 36941, 36841, 36742, 36643, 36544, 306 37544, 37443, 37342, 37241, 37141, 37041, 36941, 36841, 36742, 36643, 36544,
307 36446, 36347, 36250, 36152, 36054, 35957, 35860, 35764, 35667, 35571, 35475, 307 36446, 36347, 36250, 36152, 36054, 35957, 35860, 35764, 35667, 35571, 35475,
308 35380, 35284, 35189, 35095, 35000, 34906, 34812, 34718, 34624, 34531, 34438, 308 35380, 35284, 35189, 35095, 35000, 34906, 34812, 34718, 34624, 34531, 34438,
309 34345, 34253, 34160, 34068, 33976, 33885 309 34345, 34253, 34160, 34068, 33976, 33885
310}; 310};
311 311
312static const short sindb_coeff[] = { 312static const short sindb_coeff[] = {
313 2401, 2144, 1994, 1887, 1804, 1737, 1680, 1630, 1587, 1548, 1512, 1480, 1450, 313 2401, 2144, 1994, 1887, 1804, 1737, 1680, 1630, 1587, 1548, 1512, 1480, 1450,
314 1423, 1397, 1373, 1351, 1330, 1310, 1291, 1273, 1255, 1239, 1223, 1208, 1194, 314 1423, 1397, 1373, 1351, 1330, 1310, 1291, 1273, 1255, 1239, 1223, 1208, 1194,
315 1180, 1166, 1153, 1141, 1128, 1117, 1105, 1094, 1084, 1073, 1063, 1053, 1043, 315 1180, 1166, 1153, 1141, 1128, 1117, 1105, 1094, 1084, 1073, 1063, 1053, 1043,
316 1034, 1025, 1016, 1007, 999, 990, 982, 974, 967, 959, 952, 944, 937, 316 1034, 1025, 1016, 1007, 999, 990, 982, 974, 967, 959, 952, 944, 937,
317 930, 923, 916, 910, 903, 897, 890, 884, 878, 872, 866, 860, 855, 317 930, 923, 916, 910, 903, 897, 890, 884, 878, 872, 866, 860, 855,
318 849, 843, 838, 832, 827, 822, 817, 812, 807, 802, 797, 792, 787, 318 849, 843, 838, 832, 827, 822, 817, 812, 807, 802, 797, 792, 787,
319 783, 778, 773, 769, 764, 760, 756, 751, 747, 743, 739, 734, 730, 319 783, 778, 773, 769, 764, 760, 756, 751, 747, 743, 739, 734, 730,
320 726, 722, 718, 715, 711, 707, 703, 699, 696, 692, 688, 685, 681, 320 726, 722, 718, 715, 711, 707, 703, 699, 696, 692, 688, 685, 681,
321 678, 674, 671, 667, 664, 661, 657, 654, 651, 648, 644, 641, 638, 321 678, 674, 671, 667, 664, 661, 657, 654, 651, 648, 644, 641, 638,
322 635, 632, 629, 626, 623, 620, 617, 614, 611, 608, 605, 602, 599, 322 635, 632, 629, 626, 623, 620, 617, 614, 611, 608, 605, 602, 599,
323 597, 594, 591, 588, 586, 583, 580, 578, 575, 572, 570, 567, 565, 323 597, 594, 591, 588, 586, 583, 580, 578, 575, 572, 570, 567, 565,
324 562, 560, 557, 555, 552, 550, 547, 545, 542, 540, 538, 535, 533, 324 562, 560, 557, 555, 552, 550, 547, 545, 542, 540, 538, 535, 533,
325 531, 528, 526, 524, 522, 519, 517, 515, 513, 510, 508, 506, 504, 325 531, 528, 526, 524, 522, 519, 517, 515, 513, 510, 508, 506, 504,
326 502, 500, 498, 495, 493, 491, 489, 487, 485, 483, 481, 479, 477, 326 502, 500, 498, 495, 493, 491, 489, 487, 485, 483, 481, 479, 477,
327 475, 473, 471, 469, 467, 465, 464, 462, 460, 458, 456, 454, 452, 327 475, 473, 471, 469, 467, 465, 464, 462, 460, 458, 456, 454, 452,
328 450, 449, 447, 445, 443, 441, 440, 438, 436, 434, 433, 431, 429, 328 450, 449, 447, 445, 443, 441, 440, 438, 436, 434, 433, 431, 429,
329 427, 426, 424, 422, 421, 419, 417, 416, 414, 412, 411, 409, 408, 329 427, 426, 424, 422, 421, 419, 417, 416, 414, 412, 411, 409, 408,
330 406, 404, 403, 401, 400, 398, 396, 395, 393, 392, 390, 389, 387, 330 406, 404, 403, 401, 400, 398, 396, 395, 393, 392, 390, 389, 387,
331 386, 384, 383, 381, 380, 378, 377, 375, 374, 372, 371, 370, 368, 331 386, 384, 383, 381, 380, 378, 377, 375, 374, 372, 371, 370, 368,
332 367, 365, 364, 362, 361, 360, 358, 357, 355, 354, 353, 351, 350, 332 367, 365, 364, 362, 361, 360, 358, 357, 355, 354, 353, 351, 350,
333 349, 347, 346, 345, 343, 342, 341, 339, 338, 337, 336, 334, 333, 333 349, 347, 346, 345, 343, 342, 341, 339, 338, 337, 336, 334, 333,
334 332, 330, 329, 328, 327, 325, 324, 323, 322, 320, 319, 318, 317, 334 332, 330, 329, 328, 327, 325, 324, 323, 322, 320, 319, 318, 317,
335 316, 314, 313, 312, 311, 310, 308, 307, 306, 305, 304, 303, 301, 335 316, 314, 313, 312, 311, 310, 308, 307, 306, 305, 304, 303, 301,
336 300, 299, 298, 297, 296, 295, 293, 292, 291, 290, 289, 288, 287, 336 300, 299, 298, 297, 296, 295, 293, 292, 291, 290, 289, 288, 287,
337 286, 285, 284, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273, 337 286, 285, 284, 282, 281, 280, 279, 278, 277, 276, 275, 274, 273,
338 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260, 338 272, 271, 270, 269, 268, 267, 266, 265, 264, 263, 262, 261, 260,
339 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 339 259, 258, 257, 256, 255, 254, 253, 252, 251, 250, 249, 248, 247,
340 246, 245, 244, 243, 242, 241, 240, 240, 239, 238, 237, 236, 235, 340 246, 245, 244, 243, 242, 241, 240, 240, 239, 238, 237, 236, 235,
341 234, 233, 232, 231, 230, 230, 229, 228, 227, 226, 225, 224, 223, 341 234, 233, 232, 231, 230, 230, 229, 228, 227, 226, 225, 224, 223,
342 222, 222, 221, 220, 219, 218, 217, 216, 216, 215, 214, 213, 212, 342 222, 222, 221, 220, 219, 218, 217, 216, 216, 215, 214, 213, 212,
343 211, 211, 210, 209, 208, 207, 206, 206, 205, 204, 203, 202, 202, 343 211, 211, 210, 209, 208, 207, 206, 206, 205, 204, 203, 202, 202,
344 201, 200, 199, 198, 198, 197, 196, 195, 195, 194, 193, 192, 191, 344 201, 200, 199, 198, 198, 197, 196, 195, 195, 194, 193, 192, 191,
345 191, 190, 189, 188, 188, 187, 186, 185, 185, 184, 183, 182, 182, 345 191, 190, 189, 188, 188, 187, 186, 185, 185, 184, 183, 182, 182,
346 181, 180, 180, 179, 178, 177, 177, 176, 175, 174, 174, 173, 172, 346 181, 180, 180, 179, 178, 177, 177, 176, 175, 174, 174, 173, 172,
347 172, 171, 170, 170, 169, 168, 167, 167, 166, 165, 165, 164, 163, 347 172, 171, 170, 170, 169, 168, 167, 167, 166, 165, 165, 164, 163,
348 163, 162, 161, 161, 160, 159, 159, 158, 157, 157, 156, 155, 155, 348 163, 162, 161, 161, 160, 159, 159, 158, 157, 157, 156, 155, 155,
349 154, 153, 153, 152, 151, 151, 150, 150, 149, 148, 148, 147, 146, 349 154, 153, 153, 152, 151, 151, 150, 150, 149, 148, 148, 147, 146,
350 146, 145, 145, 144, 143, 143, 142, 141, 141, 140, 140, 139, 138, 350 146, 145, 145, 144, 143, 143, 142, 141, 141, 140, 140, 139, 138,
351 138, 137, 137, 136, 135, 135, 134, 134, 133, 133, 132, 131, 131, 351 138, 137, 137, 136, 135, 135, 134, 134, 133, 133, 132, 131, 131,
352 130, 130, 129, 129, 128, 127, 127, 126, 126, 125, 125, 124, 123, 352 130, 130, 129, 129, 128, 127, 127, 126, 126, 125, 125, 124, 123,
353 123, 122, 122, 121, 121, 120, 120, 119, 119, 118, 117, 117, 116, 353 123, 122, 122, 121, 121, 120, 120, 119, 119, 118, 117, 117, 116,
354 116, 115, 115, 114, 114, 113, 113, 112, 112, 111, 111, 110, 110, 354 116, 115, 115, 114, 114, 113, 113, 112, 112, 111, 111, 110, 110,
355 109, 109, 108, 108, 107, 107, 106, 106, 105, 105, 104, 104, 103, 355 109, 109, 108, 108, 107, 107, 106, 106, 105, 105, 104, 104, 103,
356 103, 102, 102, 101, 101, 100, 100, 99, 99, 98, 98, 97, 97, 356 103, 102, 102, 101, 101, 100, 100, 99, 99, 98, 98, 97, 97,
357 96, 96, 95, 95, 94, 94, 94, 93, 93, 92, 92, 91, 91, 357 96, 96, 95, 95, 94, 94, 94, 93, 93, 92, 92, 91, 91,
358 90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 358 90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85,
359 85, 84, 84, 83, 83, 82, 82, 82, 81, 81, 80, 80, 79, 359 85, 84, 84, 83, 83, 82, 82, 82, 81, 81, 80, 80, 79,
360 79, 79, 78, 78, 77, 77, 77, 76, 76, 75, 75, 75, 74, 360 79, 79, 78, 78, 77, 77, 77, 76, 76, 75, 75, 75, 74,
361 74, 73, 73, 73, 72, 72, 71, 71, 71, 70, 70, 69, 69, 361 74, 73, 73, 73, 72, 72, 71, 71, 71, 70, 70, 69, 69,
362 69, 68, 68, 68, 67, 67, 66, 66, 66, 65, 65, 65, 64, 362 69, 68, 68, 68, 67, 67, 66, 66, 66, 65, 65, 65, 64,
363 64, 63, 63, 63, 62, 62, 62, 61, 61, 61, 60, 60, 59, 363 64, 63, 63, 63, 62, 62, 62, 61, 61, 61, 60, 60, 59,
364 59, 59, 58, 58, 58, 57, 57, 57, 56, 56, 56, 55, 55, 364 59, 59, 58, 58, 58, 57, 57, 57, 56, 56, 56, 55, 55,
365 55, 54, 54, 54, 53, 53, 53, 52, 52, 52, 51, 51, 51, 365 55, 54, 54, 54, 53, 53, 53, 52, 52, 52, 51, 51, 51,
366 50, 50, 50, 49, 49, 49, 49, 48, 48, 48, 47, 47, 47, 366 50, 50, 50, 49, 49, 49, 49, 48, 48, 48, 47, 47, 47,
367 46, 46, 46, 45, 45, 45, 45, 44, 44, 44, 43, 43, 43, 367 46, 46, 46, 45, 45, 45, 45, 44, 44, 44, 43, 43, 43,
368 43, 42, 42, 42, 41, 41, 41, 40, 40, 40, 40, 39, 39, 368 43, 42, 42, 42, 41, 41, 41, 40, 40, 40, 40, 39, 39,
369 39, 39, 38, 38, 38, 37, 37, 37, 37, 36, 36, 36, 36, 369 39, 39, 38, 38, 38, 37, 37, 37, 37, 36, 36, 36, 36,
370 35, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 32, 32, 370 35, 35, 35, 35, 34, 34, 34, 34, 33, 33, 33, 32, 32,
371 32, 32, 31, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29, 371 32, 32, 31, 31, 31, 31, 31, 30, 30, 30, 30, 29, 29,
372 29, 29, 28, 28, 28, 28, 27, 27, 27, 27, 27, 26, 26, 372 29, 29, 28, 28, 28, 28, 27, 27, 27, 27, 27, 26, 26,
373 26, 26, 25, 25, 25, 25, 25, 24, 24, 24, 24, 23, 23, 373 26, 26, 25, 25, 25, 25, 25, 24, 24, 24, 24, 23, 23,
374 23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21, 374 23, 23, 23, 22, 22, 22, 22, 22, 21, 21, 21, 21, 21,
375 20, 20, 20, 20, 20, 19, 19, 19, 19, 19, 19, 18, 18, 375 20, 20, 20, 20, 20, 19, 19, 19, 19, 19, 19, 18, 18,
376 18, 18, 18, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 376 18, 18, 18, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16,
377 16, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14, 377 16, 15, 15, 15, 15, 15, 15, 14, 14, 14, 14, 14, 14,
378 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12, 378 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 12, 12, 12,
379 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 379 11, 11, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10,
380 10, 10, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 380 10, 10, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8,
381 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 381 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 7, 7, 7,
382 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 382 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5,
383 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 383 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4,
384 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 384 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
385 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 385 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2,
386 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 386 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
387 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 387 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
388 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 388 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
392}; 392};
393 393
394 394
395static const short lfo_freq_coeff[] = { 395static const short lfo_freq_coeff[] = {
396 0, 3, 6, 9, 12, 15, 18, 21, 25, 28, 31, 34, 37, 396 0, 3, 6, 9, 12, 15, 18, 21, 25, 28, 31, 34, 37,
397 40, 43, 46, 50, 53, 56, 59, 62, 65, 68, 71, 74, 78, 397 40, 43, 46, 50, 53, 56, 59, 62, 65, 68, 71, 74, 78,
398 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 115, 118, 398 81, 84, 87, 90, 93, 96, 99, 102, 105, 108, 111, 115, 118,
399 121, 124, 127, 130, 133, 136, 139, 142, 145, 148, 151, 154, 157, 399 121, 124, 127, 130, 133, 136, 139, 142, 145, 148, 151, 154, 157,
400 160, 163, 166, 169, 172, 175, 178, 180, 183, 186, 189, 192, 195, 400 160, 163, 166, 169, 172, 175, 178, 180, 183, 186, 189, 192, 195,
401 198, 201, 204, 207, 209, 212, 215, 218, 221, 224, 226, 229, 232, 401 198, 201, 204, 207, 209, 212, 215, 218, 221, 224, 226, 229, 232,
402 235, 238, 240, 243, 246, 249, 251, 254, 257, 260, 262, 265, 268, 402 235, 238, 240, 243, 246, 249, 251, 254, 257, 260, 262, 265, 268,
403 270, 273, 276, 278, 281, 283, 286, 289, 291, 294, 296, 299, 301, 403 270, 273, 276, 278, 281, 283, 286, 289, 291, 294, 296, 299, 301,
404 304, 306, 309, 311, 314, 316, 319, 321, 324, 326, 328, 331, 333, 404 304, 306, 309, 311, 314, 316, 319, 321, 324, 326, 328, 331, 333,
405 336, 338, 340, 343, 345, 347, 350, 352, 354, 356, 359, 361, 363, 405 336, 338, 340, 343, 345, 347, 350, 352, 354, 356, 359, 361, 363,
406 365, 367, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 391, 406 365, 367, 370, 372, 374, 376, 378, 380, 382, 384, 386, 388, 391,
407 393, 395, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 415, 407 393, 395, 396, 398, 400, 402, 404, 406, 408, 410, 412, 414, 415,
408 417, 419, 421, 423, 424, 426, 428, 430, 431, 433, 435, 436, 438, 408 417, 419, 421, 423, 424, 426, 428, 430, 431, 433, 435, 436, 438,
409 439, 441, 443, 444, 446, 447, 449, 450, 452, 453, 455, 456, 457, 409 439, 441, 443, 444, 446, 447, 449, 450, 452, 453, 455, 456, 457,
410 459, 460, 461, 463, 464, 465, 467, 468, 469, 470, 472, 473, 474, 410 459, 460, 461, 463, 464, 465, 467, 468, 469, 470, 472, 473, 474,
411 475, 476, 477, 478, 480, 481, 482, 483, 484, 485, 486, 487, 488, 411 475, 476, 477, 478, 480, 481, 482, 483, 484, 485, 486, 487, 488,
412 488, 489, 490, 491, 492, 493, 494, 494, 495, 496, 497, 497, 498, 412 488, 489, 490, 491, 492, 493, 494, 494, 495, 496, 497, 497, 498,
413 499, 499, 500, 501, 501, 502, 502, 503, 504, 504, 504, 505, 505, 413 499, 499, 500, 501, 501, 502, 502, 503, 504, 504, 504, 505, 505,
414 506, 506, 507, 507, 507, 508, 508, 508, 509, 509, 509, 509, 510, 414 506, 506, 507, 507, 507, 508, 508, 508, 509, 509, 509, 509, 510,
415 510, 510, 510, 510, 510, 510, 510, 510, 510, 511, 510, 510, 510, 415 510, 510, 510, 510, 510, 510, 510, 510, 510, 511, 510, 510, 510,
416 510, 510, 510, 510, 510, 510, 510, 509, 509, 509, 509, 508, 508, 416 510, 510, 510, 510, 510, 510, 510, 509, 509, 509, 509, 508, 508,
417 508, 507, 507, 507, 506, 506, 505, 505, 504, 504, 504, 503, 502, 417 508, 507, 507, 507, 506, 506, 505, 505, 504, 504, 504, 503, 502,
418 502, 501, 501, 500, 499, 499, 498, 497, 497, 496, 495, 494, 494, 418 502, 501, 501, 500, 499, 499, 498, 497, 497, 496, 495, 494, 494,
419 493, 492, 491, 490, 489, 488, 488, 487, 486, 485, 484, 483, 482, 419 493, 492, 491, 490, 489, 488, 488, 487, 486, 485, 484, 483, 482,
420 481, 480, 478, 477, 476, 475, 474, 473, 472, 470, 469, 468, 467, 420 481, 480, 478, 477, 476, 475, 474, 473, 472, 470, 469, 468, 467,
421 465, 464, 463, 461, 460, 459, 457, 456, 455, 453, 452, 450, 449, 421 465, 464, 463, 461, 460, 459, 457, 456, 455, 453, 452, 450, 449,
422 447, 446, 444, 443, 441, 439, 438, 436, 435, 433, 431, 430, 428, 422 447, 446, 444, 443, 441, 439, 438, 436, 435, 433, 431, 430, 428,
423 426, 424, 423, 421, 419, 417, 415, 414, 412, 410, 408, 406, 404, 423 426, 424, 423, 421, 419, 417, 415, 414, 412, 410, 408, 406, 404,
424 402, 400, 398, 396, 395, 393, 391, 388, 386, 384, 382, 380, 378, 424 402, 400, 398, 396, 395, 393, 391, 388, 386, 384, 382, 380, 378,
425 376, 374, 372, 370, 367, 365, 363, 361, 359, 356, 354, 352, 350, 425 376, 374, 372, 370, 367, 365, 363, 361, 359, 356, 354, 352, 350,
426 347, 345, 343, 340, 338, 336, 333, 331, 328, 326, 324, 321, 319, 426 347, 345, 343, 340, 338, 336, 333, 331, 328, 326, 324, 321, 319,
427 316, 314, 311, 309, 306, 304, 301, 299, 296, 294, 291, 289, 286, 427 316, 314, 311, 309, 306, 304, 301, 299, 296, 294, 291, 289, 286,
428 283, 281, 278, 276, 273, 270, 268, 265, 262, 260, 257, 254, 251, 428 283, 281, 278, 276, 273, 270, 268, 265, 262, 260, 257, 254, 251,
429 249, 246, 243, 240, 238, 235, 232, 229, 226, 224, 221, 218, 215, 429 249, 246, 243, 240, 238, 235, 232, 229, 226, 224, 221, 218, 215,
430 212, 209, 207, 204, 201, 198, 195, 192, 189, 186, 183, 180, 178, 430 212, 209, 207, 204, 201, 198, 195, 192, 189, 186, 183, 180, 178,
431 175, 172, 169, 166, 163, 160, 157, 154, 151, 148, 145, 142, 139, 431 175, 172, 169, 166, 163, 160, 157, 154, 151, 148, 145, 142, 139,
432 136, 133, 130, 127, 124, 121, 118, 115, 111, 108, 105, 102, 99, 432 136, 133, 130, 127, 124, 121, 118, 115, 111, 108, 105, 102, 99,
433 96, 93, 90, 87, 84, 81, 78, 74, 71, 68, 65, 62, 59, 433 96, 93, 90, 87, 84, 81, 78, 74, 71, 68, 65, 62, 59,
434 56, 53, 50, 46, 43, 40, 37, 34, 31, 28, 25, 21, 18, 434 56, 53, 50, 46, 43, 40, 37, 34, 31, 28, 25, 21, 18,
435 15, 12, 9, 6, 3, 0, -3, -6, -9, -12, -15, -18, -21, 435 15, 12, 9, 6, 3, 0, -3, -6, -9, -12, -15, -18, -21,
436 -25, -28, -31, -34, -37, -40, -43, -46, -50, -53, -56, -59, -62, 436 -25, -28, -31, -34, -37, -40, -43, -46, -50, -53, -56, -59, -62,
437 -65, -68, -71, -74, -78, -81, -84, -87, -90, -93, -96, -99, -102, 437 -65, -68, -71, -74, -78, -81, -84, -87, -90, -93, -96, -99, -102,
438 -105, -108, -111, -115, -118, -121, -124, -127, -130, -133, -136, -139, -142, 438 -105, -108, -111, -115, -118, -121, -124, -127, -130, -133, -136, -139, -142,
439 -145, -148, -151, -154, -157, -160, -163, -166, -169, -172, -175, -178, -180, 439 -145, -148, -151, -154, -157, -160, -163, -166, -169, -172, -175, -178, -180,
440 -183, -186, -189, -192, -195, -198, -201, -204, -207, -209, -212, -215, -218, 440 -183, -186, -189, -192, -195, -198, -201, -204, -207, -209, -212, -215, -218,
441 -221, -224, -226, -229, -232, -235, -238, -240, -243, -246, -249, -251, -254, 441 -221, -224, -226, -229, -232, -235, -238, -240, -243, -246, -249, -251, -254,
442 -257, -260, -262, -265, -268, -270, -273, -276, -278, -281, -283, -286, -289, 442 -257, -260, -262, -265, -268, -270, -273, -276, -278, -281, -283, -286, -289,
443 -291, -294, -296, -299, -301, -304, -306, -309, -311, -314, -316, -319, -321, 443 -291, -294, -296, -299, -301, -304, -306, -309, -311, -314, -316, -319, -321,
444 -324, -326, -328, -331, -333, -336, -338, -340, -343, -345, -347, -350, -352, 444 -324, -326, -328, -331, -333, -336, -338, -340, -343, -345, -347, -350, -352,
445 -354, -356, -359, -361, -363, -365, -367, -370, -372, -374, -376, -378, -380, 445 -354, -356, -359, -361, -363, -365, -367, -370, -372, -374, -376, -378, -380,
446 -382, -384, -386, -388, -391, -393, -395, -396, -398, -400, -402, -404, -406, 446 -382, -384, -386, -388, -391, -393, -395, -396, -398, -400, -402, -404, -406,
447 -408, -410, -412, -414, -415, -417, -419, -421, -423, -424, -426, -428, -430, 447 -408, -410, -412, -414, -415, -417, -419, -421, -423, -424, -426, -428, -430,
448 -431, -433, -435, -436, -438, -439, -441, -443, -444, -446, -447, -449, -450, 448 -431, -433, -435, -436, -438, -439, -441, -443, -444, -446, -447, -449, -450,
449 -452, -453, -455, -456, -457, -459, -460, -461, -463, -464, -465, -467, -468, 449 -452, -453, -455, -456, -457, -459, -460, -461, -463, -464, -465, -467, -468,
450 -469, -470, -472, -473, -474, -475, -476, -477, -478, -480, -481, -482, -483, 450 -469, -470, -472, -473, -474, -475, -476, -477, -478, -480, -481, -482, -483,
451 -484, -485, -486, -487, -488, -488, -489, -490, -491, -492, -493, -494, -494, 451 -484, -485, -486, -487, -488, -488, -489, -490, -491, -492, -493, -494, -494,
452 -495, -496, -497, -497, -498, -499, -499, -500, -501, -501, -502, -502, -503, 452 -495, -496, -497, -497, -498, -499, -499, -500, -501, -501, -502, -502, -503,
453 -504, -504, -504, -505, -505, -506, -506, -507, -507, -507, -508, -508, -508, 453 -504, -504, -504, -505, -505, -506, -506, -507, -507, -507, -508, -508, -508,
454 -509, -509, -509, -509, -510, -510, -510, -510, -510, -510, -510, -510, -510, 454 -509, -509, -509, -509, -510, -510, -510, -510, -510, -510, -510, -510, -510,
455 -510, -511, -510, -510, -510, -510, -510, -510, -510, -510, -510, -510, -509, 455 -510, -511, -510, -510, -510, -510, -510, -510, -510, -510, -510, -510, -509,
456 -509, -509, -509, -508, -508, -508, -507, -507, -507, -506, -506, -505, -505, 456 -509, -509, -509, -508, -508, -508, -507, -507, -507, -506, -506, -505, -505,
457 -504, -504, -504, -503, -502, -502, -501, -501, -500, -499, -499, -498, -497, 457 -504, -504, -504, -503, -502, -502, -501, -501, -500, -499, -499, -498, -497,
458 -497, -496, -495, -494, -494, -493, -492, -491, -490, -489, -488, -488, -487, 458 -497, -496, -495, -494, -494, -493, -492, -491, -490, -489, -488, -488, -487,
459 -486, -485, -484, -483, -482, -481, -480, -478, -477, -476, -475, -474, -473, 459 -486, -485, -484, -483, -482, -481, -480, -478, -477, -476, -475, -474, -473,
460 -472, -470, -469, -468, -467, -465, -464, -463, -461, -460, -459, -457, -456, 460 -472, -470, -469, -468, -467, -465, -464, -463, -461, -460, -459, -457, -456,
461 -455, -453, -452, -450, -449, -447, -446, -444, -443, -441, -439, -438, -436, 461 -455, -453, -452, -450, -449, -447, -446, -444, -443, -441, -439, -438, -436,
462 -435, -433, -431, -430, -428, -426, -424, -423, -421, -419, -417, -415, -414, 462 -435, -433, -431, -430, -428, -426, -424, -423, -421, -419, -417, -415, -414,
463 -412, -410, -408, -406, -404, -402, -400, -398, -396, -395, -393, -391, -388, 463 -412, -410, -408, -406, -404, -402, -400, -398, -396, -395, -393, -391, -388,
464 -386, -384, -382, -380, -378, -376, -374, -372, -370, -367, -365, -363, -361, 464 -386, -384, -382, -380, -378, -376, -374, -372, -370, -367, -365, -363, -361,
465 -359, -356, -354, -352, -350, -347, -345, -343, -340, -338, -336, -333, -331, 465 -359, -356, -354, -352, -350, -347, -345, -343, -340, -338, -336, -333, -331,
466 -328, -326, -324, -321, -319, -316, -314, -311, -309, -306, -304, -301, -299, 466 -328, -326, -324, -321, -319, -316, -314, -311, -309, -306, -304, -301, -299,
467 -296, -294, -291, -289, -286, -283, -281, -278, -276, -273, -270, -268, -265, 467 -296, -294, -291, -289, -286, -283, -281, -278, -276, -273, -270, -268, -265,
468 -262, -260, -257, -254, -251, -249, -246, -243, -240, -238, -235, -232, -229, 468 -262, -260, -257, -254, -251, -249, -246, -243, -240, -238, -235, -232, -229,
469 -226, -224, -221, -218, -215, -212, -209, -207, -204, -201, -198, -195, -192, 469 -226, -224, -221, -218, -215, -212, -209, -207, -204, -201, -198, -195, -192,
470 -189, -186, -183, -180, -178, -175, -172, -169, -166, -163, -160, -157, -154, 470 -189, -186, -183, -180, -178, -175, -172, -169, -166, -163, -160, -157, -154,
471 -151, -148, -145, -142, -139, -136, -133, -130, -127, -124, -121, -118, -115, 471 -151, -148, -145, -142, -139, -136, -133, -130, -127, -124, -121, -118, -115,
472 -111, -108, -105, -102, -99, -96, -93, -90, -87, -84, -81, -78, -74, 472 -111, -108, -105, -102, -99, -96, -93, -90, -87, -84, -81, -78, -74,
473 -71, -68, -65, -62, -59, -56, -53, -50, -46, -43, -40, -37, -34, 473 -71, -68, -65, -62, -59, -56, -53, -50, -46, -43, -40, -37, -34,
474 -31, -28, -25, -21, -18, -15, -12, -9, -6, -3 474 -31, -28, -25, -21, -18, -15, -12, -9, -6, -3
475}; 475};
476 476
477static const short lfo_env_coeff[] = { 477static const short lfo_env_coeff[] = {
478 251, 253, 254, 256, 257, 259, 260, 262, 264, 265, 267, 268, 270, 478 251, 253, 254, 256, 257, 259, 260, 262, 264, 265, 267, 268, 270,
479 271, 273, 274, 276, 277, 279, 281, 282, 284, 285, 287, 288, 290, 479 271, 273, 274, 276, 277, 279, 281, 282, 284, 285, 287, 288, 290,
480 291, 293, 294, 296, 297, 299, 300, 302, 303, 305, 306, 308, 309, 480 291, 293, 294, 296, 297, 299, 300, 302, 303, 305, 306, 308, 309,
481 311, 312, 314, 315, 317, 318, 320, 321, 323, 324, 326, 327, 329, 481 311, 312, 314, 315, 317, 318, 320, 321, 323, 324, 326, 327, 329,
482 330, 332, 333, 335, 336, 337, 339, 340, 342, 343, 345, 346, 348, 482 330, 332, 333, 335, 336, 337, 339, 340, 342, 343, 345, 346, 348,
483 349, 350, 352, 353, 355, 356, 357, 359, 360, 362, 363, 364, 366, 483 349, 350, 352, 353, 355, 356, 357, 359, 360, 362, 363, 364, 366,
484 367, 369, 370, 371, 373, 374, 375, 377, 378, 379, 381, 382, 383, 484 367, 369, 370, 371, 373, 374, 375, 377, 378, 379, 381, 382, 383,
485 385, 386, 387, 389, 390, 391, 392, 394, 395, 396, 397, 399, 400, 485 385, 386, 387, 389, 390, 391, 392, 394, 395, 396, 397, 399, 400,
486 401, 402, 404, 405, 406, 407, 409, 410, 411, 412, 413, 414, 416, 486 401, 402, 404, 405, 406, 407, 409, 410, 411, 412, 413, 414, 416,
487 417, 418, 419, 420, 421, 423, 424, 425, 426, 427, 428, 429, 430, 487 417, 418, 419, 420, 421, 423, 424, 425, 426, 427, 428, 429, 430,
488 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 488 431, 432, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
489 445, 446, 447, 448, 449, 450, 451, 452, 453, 453, 454, 455, 456, 489 445, 446, 447, 448, 449, 450, 451, 452, 453, 453, 454, 455, 456,
490 457, 458, 459, 460, 461, 461, 462, 463, 464, 465, 466, 466, 467, 490 457, 458, 459, 460, 461, 461, 462, 463, 464, 465, 466, 466, 467,
491 468, 469, 469, 470, 471, 472, 473, 473, 474, 475, 475, 476, 477, 491 468, 469, 469, 470, 471, 472, 473, 473, 474, 475, 475, 476, 477,
492 477, 478, 479, 479, 480, 481, 481, 482, 483, 483, 484, 484, 485, 492 477, 478, 479, 479, 480, 481, 481, 482, 483, 483, 484, 484, 485,
493 486, 486, 487, 487, 488, 488, 489, 489, 490, 490, 491, 491, 492, 493 486, 486, 487, 487, 488, 488, 489, 489, 490, 490, 491, 491, 492,
494 492, 493, 493, 493, 494, 494, 495, 495, 495, 496, 496, 497, 497, 494 492, 493, 493, 493, 494, 494, 495, 495, 495, 496, 496, 497, 497,
495 497, 498, 498, 498, 498, 499, 499, 499, 500, 500, 500, 500, 500, 495 497, 498, 498, 498, 498, 499, 499, 499, 500, 500, 500, 500, 500,
496 501, 501, 501, 501, 501, 502, 502, 502, 502, 502, 502, 502, 502, 496 501, 501, 501, 501, 501, 502, 502, 502, 502, 502, 502, 502, 502,
497 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 497 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503, 503,
498 503, 503, 503, 503, 503, 503, 502, 502, 502, 502, 502, 502, 502, 498 503, 503, 503, 503, 503, 503, 502, 502, 502, 502, 502, 502, 502,
499 502, 501, 501, 501, 501, 501, 500, 500, 500, 500, 500, 499, 499, 499 502, 501, 501, 501, 501, 501, 500, 500, 500, 500, 500, 499, 499,
500 499, 498, 498, 498, 498, 497, 497, 497, 496, 496, 495, 495, 495, 500 499, 498, 498, 498, 498, 497, 497, 497, 496, 496, 495, 495, 495,
501 494, 494, 493, 493, 493, 492, 492, 491, 491, 490, 490, 489, 489, 501 494, 494, 493, 493, 493, 492, 492, 491, 491, 490, 490, 489, 489,
502 488, 488, 487, 487, 486, 486, 485, 484, 484, 483, 483, 482, 481, 502 488, 488, 487, 487, 486, 486, 485, 484, 484, 483, 483, 482, 481,
503 481, 480, 479, 479, 478, 477, 477, 476, 475, 475, 474, 473, 473, 503 481, 480, 479, 479, 478, 477, 477, 476, 475, 475, 474, 473, 473,
504 472, 471, 470, 469, 469, 468, 467, 466, 466, 465, 464, 463, 462, 504 472, 471, 470, 469, 469, 468, 467, 466, 466, 465, 464, 463, 462,
505 461, 461, 460, 459, 458, 457, 456, 455, 454, 453, 453, 452, 451, 505 461, 461, 460, 459, 458, 457, 456, 455, 454, 453, 453, 452, 451,
506 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438, 506 450, 449, 448, 447, 446, 445, 444, 443, 442, 441, 440, 439, 438,
507 437, 436, 435, 434, 432, 431, 430, 429, 428, 427, 426, 425, 424, 507 437, 436, 435, 434, 432, 431, 430, 429, 428, 427, 426, 425, 424,
508 423, 421, 420, 419, 418, 417, 416, 414, 413, 412, 411, 410, 409, 508 423, 421, 420, 419, 418, 417, 416, 414, 413, 412, 411, 410, 409,
509 407, 406, 405, 404, 402, 401, 400, 399, 397, 396, 395, 394, 392, 509 407, 406, 405, 404, 402, 401, 400, 399, 397, 396, 395, 394, 392,
510 391, 390, 389, 387, 386, 385, 383, 382, 381, 379, 378, 377, 375, 510 391, 390, 389, 387, 386, 385, 383, 382, 381, 379, 378, 377, 375,
511 374, 373, 371, 370, 369, 367, 366, 364, 363, 362, 360, 359, 357, 511 374, 373, 371, 370, 369, 367, 366, 364, 363, 362, 360, 359, 357,
512 356, 355, 353, 352, 350, 349, 348, 346, 345, 343, 342, 340, 339, 512 356, 355, 353, 352, 350, 349, 348, 346, 345, 343, 342, 340, 339,
513 337, 336, 335, 333, 332, 330, 329, 327, 326, 324, 323, 321, 320, 513 337, 336, 335, 333, 332, 330, 329, 327, 326, 324, 323, 321, 320,
514 318, 317, 315, 314, 312, 311, 309, 308, 306, 305, 303, 302, 300, 514 318, 317, 315, 314, 312, 311, 309, 308, 306, 305, 303, 302, 300,
515 299, 297, 296, 294, 293, 291, 290, 288, 287, 285, 284, 282, 281, 515 299, 297, 296, 294, 293, 291, 290, 288, 287, 285, 284, 282, 281,
516 279, 277, 276, 274, 273, 271, 270, 268, 267, 265, 264, 262, 260, 516 279, 277, 276, 274, 273, 271, 270, 268, 267, 265, 264, 262, 260,
517 259, 257, 256, 254, 253, 251, 250, 248, 247, 245, 244, 242, 240, 517 259, 257, 256, 254, 253, 251, 250, 248, 247, 245, 244, 242, 240,
518 239, 237, 236, 234, 233, 231, 230, 228, 227, 225, 223, 222, 220, 518 239, 237, 236, 234, 233, 231, 230, 228, 227, 225, 223, 222, 220,
519 219, 217, 216, 214, 213, 211, 210, 208, 207, 205, 204, 202, 201, 519 219, 217, 216, 214, 213, 211, 210, 208, 207, 205, 204, 202, 201,
520 199, 198, 196, 195, 193, 192, 190, 189, 187, 186, 184, 183, 181, 520 199, 198, 196, 195, 193, 192, 190, 189, 187, 186, 184, 183, 181,
521 180, 178, 177, 175, 174, 172, 171, 169, 168, 166, 165, 164, 162, 521 180, 178, 177, 175, 174, 172, 171, 169, 168, 166, 165, 164, 162,
522 161, 159, 158, 156, 155, 153, 152, 151, 149, 148, 146, 145, 144, 522 161, 159, 158, 156, 155, 153, 152, 151, 149, 148, 146, 145, 144,
523 142, 141, 139, 138, 137, 135, 134, 133, 131, 130, 129, 127, 126, 523 142, 141, 139, 138, 137, 135, 134, 133, 131, 130, 129, 127, 126,
524 124, 123, 122, 120, 119, 118, 117, 115, 114, 113, 111, 110, 109, 524 124, 123, 122, 120, 119, 118, 117, 115, 114, 113, 111, 110, 109,
525 108, 106, 105, 104, 103, 101, 100, 99, 98, 96, 95, 94, 93, 525 108, 106, 105, 104, 103, 101, 100, 99, 98, 96, 95, 94, 93,
526 92, 90, 89, 88, 87, 86, 84, 83, 82, 81, 80, 79, 78, 526 92, 90, 89, 88, 87, 86, 84, 83, 82, 81, 80, 79, 78,
527 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 527 77, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64,
528 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 528 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51,
529 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 40, 39, 529 50, 49, 48, 47, 46, 45, 45, 44, 43, 42, 41, 40, 39,
530 39, 38, 37, 36, 35, 35, 34, 33, 32, 31, 31, 30, 29, 530 39, 38, 37, 36, 35, 35, 34, 33, 32, 31, 31, 30, 29,
531 29, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 20, 531 29, 28, 27, 26, 26, 25, 24, 24, 23, 22, 22, 21, 20,
532 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13, 532 20, 19, 19, 18, 17, 17, 16, 16, 15, 15, 14, 14, 13,
533 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7, 533 13, 12, 12, 11, 11, 10, 10, 9, 9, 9, 8, 8, 7,
534 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 534 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3,
535 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 535 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
538 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 538 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
539 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 539 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6,
540 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11, 540 6, 7, 7, 7, 8, 8, 9, 9, 9, 10, 10, 11, 11,
541 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 541 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18,
542 19, 19, 20, 20, 21, 22, 22, 23, 24, 24, 25, 26, 26, 542 19, 19, 20, 20, 21, 22, 22, 23, 24, 24, 25, 26, 26,
543 27, 28, 29, 29, 30, 31, 31, 32, 33, 34, 35, 35, 36, 543 27, 28, 29, 29, 30, 31, 31, 32, 33, 34, 35, 35, 36,
544 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 45, 46, 47, 544 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 45, 46, 47,
545 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 545 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
546 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 546 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
547 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88, 547 74, 75, 77, 78, 79, 80, 81, 82, 83, 84, 86, 87, 88,
548 89, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 103, 104, 548 89, 90, 92, 93, 94, 95, 96, 98, 99, 100, 101, 103, 104,
549 105, 106, 108, 109, 110, 111, 113, 114, 115, 117, 118, 119, 120, 549 105, 106, 108, 109, 110, 111, 113, 114, 115, 117, 118, 119, 120,
550 122, 123, 124, 126, 127, 129, 130, 131, 133, 134, 135, 137, 138, 550 122, 123, 124, 126, 127, 129, 130, 131, 133, 134, 135, 137, 138,
551 139, 141, 142, 144, 145, 146, 148, 149, 151, 152, 153, 155, 156, 551 139, 141, 142, 144, 145, 146, 148, 149, 151, 152, 153, 155, 156,
552 158, 159, 161, 162, 164, 165, 166, 168, 169, 171, 172, 174, 175, 552 158, 159, 161, 162, 164, 165, 166, 168, 169, 171, 172, 174, 175,
553 177, 178, 180, 181, 183, 184, 186, 187, 189, 190, 192, 193, 195, 553 177, 178, 180, 181, 183, 184, 186, 187, 189, 190, 192, 193, 195,
554 196, 198, 199, 201, 202, 204, 205, 207, 208, 210, 211, 213, 214, 554 196, 198, 199, 201, 202, 204, 205, 207, 208, 210, 211, 213, 214,
555 216, 217, 219, 220, 222, 223, 225, 227, 228, 230, 231, 233, 234, 555 216, 217, 219, 220, 222, 223, 225, 227, 228, 230, 231, 233, 234,
556 236, 237, 239, 240, 242, 244, 245, 247, 248, 250 556 236, 237, 239, 240, 242, 244, 245, 247, 248, 250
557}; 557};
558 558
559#endif 559#endif
diff --git a/apps/codecs/libgme/z80_cpu.h b/apps/codecs/libgme/z80_cpu.h
index 15115b7e53..341119b6b1 100644
--- a/apps/codecs/libgme/z80_cpu.h
+++ b/apps/codecs/libgme/z80_cpu.h
@@ -1,116 +1,116 @@
1// Z80 CPU emulator 1// Z80 CPU emulator
2 2
3// Game_Music_Emu 0.6-pre 3// Game_Music_Emu 0.6-pre
4#ifndef Z80_CPU_H 4#ifndef Z80_CPU_H
5#define Z80_CPU_H 5#define Z80_CPU_H
6 6
7#include "blargg_source.h" 7#include "blargg_source.h"
8#include "blargg_endian.h" 8#include "blargg_endian.h"
9 9
10typedef int cpu_time_t; 10typedef int cpu_time_t;
11typedef int addr_t; 11typedef int addr_t;
12 12
13enum { page_bits = 10 }; 13enum { page_bits = 10 };
14enum { page_size = 1 << page_bits }; 14enum { page_size = 1 << page_bits };
15enum { page_count = 0x10000 / page_size }; 15enum { page_count = 0x10000 / page_size };
16 16
17// Can read this far past end of memory 17// Can read this far past end of memory
18enum { cpu_padding = 0x100 }; 18enum { cpu_padding = 0x100 };
19 19
20// Can read this many bytes past end of a page 20// Can read this many bytes past end of a page
21enum { page_padding = 4 }; 21enum { page_padding = 4 };
22 22
23#ifdef BLARGG_BIG_ENDIAN 23#ifdef BLARGG_BIG_ENDIAN
24 struct regs_t { byte b,c, d,e, h,l, flags,a; }; 24 struct regs_t { byte b,c, d,e, h,l, flags,a; };
25#else 25#else
26 struct regs_t { byte c,b, e,d, l,h, a,flags; }; 26 struct regs_t { byte c,b, e,d, l,h, a,flags; };
27#endif 27#endif
28// BOOST_STATIC_ASSERT( sizeof (regs_t) == 8 ); 28// BOOST_STATIC_ASSERT( sizeof (regs_t) == 8 );
29 29
30struct pairs_t { uint16_t bc, de, hl, fa; }; 30struct pairs_t { uint16_t bc, de, hl, fa; };
31 31
32// Registers are not updated until run() returns 32// Registers are not updated until run() returns
33struct registers_t { 33struct registers_t {
34 uint16_t pc; 34 uint16_t pc;
35 uint16_t sp; 35 uint16_t sp;
36 uint16_t ix; 36 uint16_t ix;
37 uint16_t iy; 37 uint16_t iy;
38 union { 38 union {
39 struct regs_t b; // b.b, b.c, b.d, b.e, b.h, b.l, b.flags, b.a 39 struct regs_t b; // b.b, b.c, b.d, b.e, b.h, b.l, b.flags, b.a
40 struct pairs_t w; // w.bc, w.de, w.hl. w.fa 40 struct pairs_t w; // w.bc, w.de, w.hl. w.fa
41 }; 41 };
42 union { 42 union {
43 struct regs_t b; 43 struct regs_t b;
44 struct pairs_t w; 44 struct pairs_t w;
45 } alt; 45 } alt;
46 byte iff1; 46 byte iff1;
47 byte iff2; 47 byte iff2;
48 byte r; 48 byte r;
49 byte i; 49 byte i;
50 byte im; 50 byte im;
51}; 51};
52 52
53struct cpu_state_t { 53struct cpu_state_t {
54 byte const* read [page_count + 1]; 54 byte const* read [page_count + 1];
55 byte * write [page_count + 1]; 55 byte * write [page_count + 1];
56 cpu_time_t base; 56 cpu_time_t base;
57 cpu_time_t time; 57 cpu_time_t time;
58}; 58};
59 59
60struct Z80_Cpu { 60struct Z80_Cpu {
61 byte szpc [0x200]; 61 byte szpc [0x200];
62 cpu_time_t end_time_; 62 cpu_time_t end_time_;
63 63
64 struct cpu_state_t* cpu_state; // points to cpu_state_ or a local copy within run() 64 struct cpu_state_t* cpu_state; // points to cpu_state_ or a local copy within run()
65 struct cpu_state_t cpu_state_; 65 struct cpu_state_t cpu_state_;
66 66
67 struct registers_t r; 67 struct registers_t r;
68}; 68};
69 69
70void Z80_init( struct Z80_Cpu* this ); 70void Z80_init( struct Z80_Cpu* this );
71 71
72// Clears registers and maps all pages to unmapped 72// Clears registers and maps all pages to unmapped
73void Z80_reset( struct Z80_Cpu* this, void* unmapped_write, void const* unmapped_read ); 73void Z80_reset( struct Z80_Cpu* this, void* unmapped_write, void const* unmapped_read );
74 74
75// TODO: split mapping out of CPU 75// TODO: split mapping out of CPU
76 76
77// Maps memory. Start and size must be multiple of page_size. 77// Maps memory. Start and size must be multiple of page_size.
78void Z80_map_mem( struct Z80_Cpu* this, addr_t addr, int size, void* write, void const* read ); 78void Z80_map_mem( struct Z80_Cpu* this, addr_t addr, int size, void* write, void const* read );
79 79
80// Time of beginning of next instruction 80// Time of beginning of next instruction
81static inline cpu_time_t Z80_time( struct Z80_Cpu* this ) { return this->cpu_state->time + this->cpu_state->base; } 81static inline cpu_time_t Z80_time( struct Z80_Cpu* this ) { return this->cpu_state->time + this->cpu_state->base; }
82 82
83// Alter current time 83// Alter current time
84static inline void Z80_set_time( struct Z80_Cpu* this, cpu_time_t t ) { this->cpu_state->time = t - this->cpu_state->base; } 84static inline void Z80_set_time( struct Z80_Cpu* this, cpu_time_t t ) { this->cpu_state->time = t - this->cpu_state->base; }
85static inline void Z80_adjust_time( struct Z80_Cpu* this, int delta ) { this->cpu_state->time += delta; } 85static inline void Z80_adjust_time( struct Z80_Cpu* this, int delta ) { this->cpu_state->time += delta; }
86 86
87#ifdef BLARGG_NONPORTABLE 87#ifdef BLARGG_NONPORTABLE
88 #define Z80_CPU_OFFSET( addr ) (addr) 88 #define Z80_CPU_OFFSET( addr ) (addr)
89#else 89#else
90 #define Z80_CPU_OFFSET( addr ) ((addr) & (page_size - 1)) 90 #define Z80_CPU_OFFSET( addr ) ((addr) & (page_size - 1))
91#endif 91#endif
92 92
93// Maps address to pointer to that byte 93// Maps address to pointer to that byte
94static inline byte* Z80_write( struct Z80_Cpu* this, addr_t addr ) 94static inline byte* Z80_write( struct Z80_Cpu* this, addr_t addr )
95{ 95{
96 return this->cpu_state->write [(unsigned) addr >> page_bits] + Z80_CPU_OFFSET( addr ); 96 return this->cpu_state->write [(unsigned) addr >> page_bits] + Z80_CPU_OFFSET( addr );
97} 97}
98 98
99static inline byte const* Z80_read( struct Z80_Cpu* this, addr_t addr ) 99static inline byte const* Z80_read( struct Z80_Cpu* this, addr_t addr )
100{ 100{
101 return this->cpu_state->read [(unsigned) addr >> page_bits] + Z80_CPU_OFFSET( addr ); 101 return this->cpu_state->read [(unsigned) addr >> page_bits] + Z80_CPU_OFFSET( addr );
102} 102}
103 103
104static inline void Z80_map_mem_rw( struct Z80_Cpu* this, addr_t addr, int size, void* p ) 104static inline void Z80_map_mem_rw( struct Z80_Cpu* this, addr_t addr, int size, void* p )
105{ 105{
106 Z80_map_mem( this, addr, size, p, p ); 106 Z80_map_mem( this, addr, size, p, p );
107} 107}
108 108
109static inline void Z80_set_end_time( struct Z80_Cpu* this, cpu_time_t t ) 109static inline void Z80_set_end_time( struct Z80_Cpu* this, cpu_time_t t )
110{ 110{
111 cpu_time_t delta = this->cpu_state->base - t; 111 cpu_time_t delta = this->cpu_state->base - t;
112 this->cpu_state->base = t; 112 this->cpu_state->base = t;
113 this->cpu_state->time += delta; 113 this->cpu_state->time += delta;
114} 114}
115 115
116#endif 116#endif
diff --git a/apps/codecs/libgme/z80_cpu_run.h b/apps/codecs/libgme/z80_cpu_run.h
index 18195ac92b..a453487bb0 100644
--- a/apps/codecs/libgme/z80_cpu_run.h
+++ b/apps/codecs/libgme/z80_cpu_run.h
@@ -1,1696 +1,1696 @@
1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/ 1// Game_Music_Emu 0.6-pre. http://www.slack.net/~ant/
2 2
3// Last validated with zexall 2009.12.05. 3// Last validated with zexall 2009.12.05.
4// Doesn't implement the R register or immediate interrupt after EI. 4// Doesn't implement the R register or immediate interrupt after EI.
5// Address wrap-around isn't completely correct, but is prevented from crashing emulator. 5// Address wrap-around isn't completely correct, but is prevented from crashing emulator.
6// 16-bit memory accesses are made directly to mapped memory, instead of using macro. 6// 16-bit memory accesses are made directly to mapped memory, instead of using macro.
7 7
8#if 0 8#if 0
9/* Define these macros in the source file before #including this file. 9/* Define these macros in the source file before #including this file.
10- Parameters might be expressions, so they are best evaluated only once, 10- Parameters might be expressions, so they are best evaluated only once,
11though they NEVER have side-effects, so multiple evaluation is OK. 11though they NEVER have side-effects, so multiple evaluation is OK.
12- Output parameters might be a multiple-assignment expression like "a=x", 12- Output parameters might be a multiple-assignment expression like "a=x",
13so they must NOT be parenthesized. 13so they must NOT be parenthesized.
14- Except where noted, time() and related functions will NOT work 14- Except where noted, time() and related functions will NOT work
15correctly inside a macro. TIME() is always correct, and between FLUSH_TIME() and 15correctly inside a macro. TIME() is always correct, and between FLUSH_TIME() and
16CACHE_TIME() the normal time changing functions can be used. 16CACHE_TIME() the normal time changing functions can be used.
17- Macros "returning" void may use a {} statement block. */ 17- Macros "returning" void may use a {} statement block. */
18 18
19 // 0 <= addr <= 0xFFFF + 0x100 19 // 0 <= addr <= 0xFFFF + 0x100
20 // Optional; default uses whatever was set with map_mem() 20 // Optional; default uses whatever was set with map_mem()
21 int READ_MEM( addr_t ); 21 int READ_MEM( addr_t );
22 void WRITE_MEM( addr_t, int data ); 22 void WRITE_MEM( addr_t, int data );
23 23
24 // 0 <= port <= 0xFFFF (apparently upper 8 bits are output by hardware) 24 // 0 <= port <= 0xFFFF (apparently upper 8 bits are output by hardware)
25 void OUT_PORT( int port, int data ); 25 void OUT_PORT( int port, int data );
26 int IN_PORT int port ); 26 int IN_PORT int port );
27 27
28 // Reference to Z80_Cpu object used for emulation 28 // Reference to Z80_Cpu object used for emulation
29 #define CPU cpu 29 #define CPU cpu
30 30
31// The following can be used within macros: 31// The following can be used within macros:
32 32
33 // Current time 33 // Current time
34 time_t TIME(); 34 time_t TIME();
35 35
36 // Allows use of time functions 36 // Allows use of time functions
37 void FLUSH_TIME(); 37 void FLUSH_TIME();
38 38
39 // Must be used before end of macro if FLUSH_TIME() was used earlier 39 // Must be used before end of macro if FLUSH_TIME() was used earlier
40 void CACHE_TIME(); 40 void CACHE_TIME();
41 41
42// Configuration (optional; commented behavior if defined) 42// Configuration (optional; commented behavior if defined)
43 43
44 // Optimizes as if map_mem( 0, 0x10000, FLAT_MEM, FLAT_MEM ) is always in effect 44 // Optimizes as if map_mem( 0, 0x10000, FLAT_MEM, FLAT_MEM ) is always in effect
45 #define FLAT_MEM my_mem_array 45 #define FLAT_MEM my_mem_array
46 46
47 // If RST 7 ($FF) is encountered and PC = IDLE_ADDR, stops execution 47 // If RST 7 ($FF) is encountered and PC = IDLE_ADDR, stops execution
48 #define IDLE_ADDR 0x1234 48 #define IDLE_ADDR 0x1234
49 49
50 // Expanded just before beginning of code, to help debugger 50 // Expanded just before beginning of code, to help debugger
51 #define CPU_BEGIN void my_run_cpu() { 51 #define CPU_BEGIN void my_run_cpu() {
52 52
53#endif 53#endif
54 54
55/* Copyright (C) 2006-2008 Shay Green. This module is free software; you 55/* Copyright (C) 2006-2008 Shay Green. This module is free software; you
56can redistribute it and/or modify it under the terms of the GNU Lesser 56can redistribute it and/or modify it under the terms of the GNU Lesser
57General Public License as published by the Free Software Foundation; either 57General Public License as published by the Free Software Foundation; either
58version 2.1 of the License, or (at your option) any later version. This 58version 2.1 of the License, or (at your option) any later version. This
59module is distributed in the hope that it will be useful, but WITHOUT ANY 59module is distributed in the hope that it will be useful, but WITHOUT ANY
60WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 60WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
61FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 61FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
62details. You should have received a copy of the GNU Lesser General Public 62details. You should have received a copy of the GNU Lesser General Public
63License along with this module; if not, write to the Free Software Foundation, 63License along with this module; if not, write to the Free Software Foundation,
64Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ 64Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */
65 65
66#ifdef CPU_BEGIN 66#ifdef CPU_BEGIN
67 CPU_BEGIN 67 CPU_BEGIN
68#endif 68#endif
69 69
70#define R cpu->r 70#define R cpu->r
71 71
72// flags, named with hex value for clarity 72// flags, named with hex value for clarity
73int const S80 = 0x80; 73int const S80 = 0x80;
74int const Z40 = 0x40; 74int const Z40 = 0x40;
75int const F20 = 0x20; 75int const F20 = 0x20;
76int const H10 = 0x10; 76int const H10 = 0x10;
77int const F08 = 0x08; 77int const F08 = 0x08;
78int const V04 = 0x04; 78int const V04 = 0x04;
79int const P04 = 0x04; 79int const P04 = 0x04;
80int const N02 = 0x02; 80int const N02 = 0x02;
81int const C01 = 0x01; 81int const C01 = 0x01;
82 82
83#define SZ28P( n ) cpu->szpc [n] 83#define SZ28P( n ) cpu->szpc [n]
84#define SZ28PC( n ) cpu->szpc [n] 84#define SZ28PC( n ) cpu->szpc [n]
85#define SZ28C( n ) (cpu->szpc [n] & ~P04) 85#define SZ28C( n ) (cpu->szpc [n] & ~P04)
86#define SZ28( n ) SZ28C( n ) 86#define SZ28( n ) SZ28C( n )
87 87
88#define SET_R( n ) (void) (R.r = n) 88#define SET_R( n ) (void) (R.r = n)
89#define GET_R() (R.r) 89#define GET_R() (R.r)
90 90
91// Time 91// Time
92#define TIME() (s_time + s.base) 92#define TIME() (s_time + s.base)
93#define FLUSH_TIME() {s.time = s_time;} 93#define FLUSH_TIME() {s.time = s_time;}
94#define CACHE_TIME() {s_time = s.time;} 94#define CACHE_TIME() {s_time = s.time;}
95 95
96// Memory 96// Memory
97#define RW_MEM( addr, rw ) RW_PAGE( addr, rw ) [RW_OFFSET( addr )] 97#define RW_MEM( addr, rw ) RW_PAGE( addr, rw ) [RW_OFFSET( addr )]
98#define READ_CODE( addr ) RW_MEM( addr, read ) 98#define READ_CODE( addr ) RW_MEM( addr, read )
99 99
100#ifdef FLAT_MEM 100#ifdef FLAT_MEM
101 #define RW_PAGE( addr, rw ) FLAT_MEM 101 #define RW_PAGE( addr, rw ) FLAT_MEM
102 #define RW_OFFSET( addr ) (addr) 102 #define RW_OFFSET( addr ) (addr)
103 #define INSTR( off, addr ) READ_CODE( addr ) 103 #define INSTR( off, addr ) READ_CODE( addr )
104#else 104#else
105 #define RW_PAGE( addr, rw ) s.rw [(unsigned) (addr) >> page_bits] 105 #define RW_PAGE( addr, rw ) s.rw [(unsigned) (addr) >> page_bits]
106 #define RW_OFFSET( addr ) Z80_CPU_OFFSET( addr ) 106 #define RW_OFFSET( addr ) Z80_CPU_OFFSET( addr )
107 #define INSTR( off, addr ) instr [off] 107 #define INSTR( off, addr ) instr [off]
108#endif 108#endif
109 109
110#ifndef READ_MEM 110#ifndef READ_MEM
111 #define READ_MEM( addr ) RW_MEM( addr, read ) 111 #define READ_MEM( addr ) RW_MEM( addr, read )
112#endif 112#endif
113 113
114#ifndef WRITE_MEM 114#ifndef WRITE_MEM
115 #define WRITE_MEM( addr, data ) (RW_MEM( addr, write ) = data) 115 #define WRITE_MEM( addr, data ) (RW_MEM( addr, write ) = data)
116#endif 116#endif
117 117
118#define READ_WORD( addr ) GET_LE16( &RW_MEM( addr, read ) ) 118#define READ_WORD( addr ) GET_LE16( &RW_MEM( addr, read ) )
119#define WRITE_WORD( addr, data ) SET_LE16( &RW_MEM( addr, write ), data ) 119#define WRITE_WORD( addr, data ) SET_LE16( &RW_MEM( addr, write ), data )
120 120
121// Truncation 121// Truncation
122#define BYTE( n ) ((uint8_t ) (n)) /* (unsigned) n & 0xFF */ 122#define BYTE( n ) ((uint8_t ) (n)) /* (unsigned) n & 0xFF */
123#define SBYTE( n ) ((int8_t ) (n)) /* (BYTE( n ) ^ 0x80) - 0x80 */ 123#define SBYTE( n ) ((int8_t ) (n)) /* (BYTE( n ) ^ 0x80) - 0x80 */
124#define WORD( n ) ((uint16_t) (n)) /* (unsigned) n & 0xFFFF */ 124#define WORD( n ) ((uint16_t) (n)) /* (unsigned) n & 0xFFFF */
125 125
126// Misc 126// Misc
127#define CASE5( a, b, c, d, e ) case 0x##a:case 0x##b:case 0x##c:case 0x##d:case 0x##e 127#define CASE5( a, b, c, d, e ) case 0x##a:case 0x##b:case 0x##c:case 0x##d:case 0x##e
128#define CASE6( a, b, c, d, e, f ) CASE5( a, b, c, d, e ): case 0x##f 128#define CASE6( a, b, c, d, e, f ) CASE5( a, b, c, d, e ): case 0x##f
129#define CASE7( a, b, c, d, e, f, g ) CASE6( a, b, c, d, e, f ): case 0x##g 129#define CASE7( a, b, c, d, e, f, g ) CASE6( a, b, c, d, e, f ): case 0x##g
130#define CASE8( a, b, c, d, e, f, g, h ) CASE7( a, b, c, d, e, f, g ): case 0x##h 130#define CASE8( a, b, c, d, e, f, g, h ) CASE7( a, b, c, d, e, f, g ): case 0x##h
131 131
132#ifdef BLARGG_BIG_ENDIAN 132#ifdef BLARGG_BIG_ENDIAN
133 #define R8( n, offset ) ((r.r8_ - offset) [n]) 133 #define R8( n, offset ) ((r.r8_ - offset) [n])
134#elif BLARGG_LITTLE_ENDIAN 134#elif BLARGG_LITTLE_ENDIAN
135 #define R8( n, offset ) ((r.r8_ - offset) [(n) ^ 1]) 135 #define R8( n, offset ) ((r.r8_ - offset) [(n) ^ 1])
136#else 136#else
137 #error "Byte order of CPU must be known" 137 #error "Byte order of CPU must be known"
138#endif 138#endif
139 139
140#define R16( n, shift, offset ) (r.r16_ [((unsigned) (n) >> shift) - (offset >> shift)]) 140#define R16( n, shift, offset ) (r.r16_ [((unsigned) (n) >> shift) - (offset >> shift)])
141 141
142#define EX( x, y ) \ 142#define EX( x, y ) \
143 {\ 143 {\
144 int temp = x;\ 144 int temp = x;\
145 x = y;\ 145 x = y;\
146 y = temp;\ 146 y = temp;\
147 } 147 }
148 148
149#define EXX( name ) \ 149#define EXX( name ) \
150 EX( R.alt.name, r.name ) 150 EX( R.alt.name, r.name )
151 151
152bool warning = false; 152bool warning = false;
153{ 153{
154 struct cpu_state_t s; 154 struct cpu_state_t s;
155 #ifdef FLAT_MEM 155 #ifdef FLAT_MEM
156 s.base = cpu->cpu_state_.base; 156 s.base = cpu->cpu_state_.base;
157 #else 157 #else
158 s = cpu->cpu_state_; 158 s = cpu->cpu_state_;
159 #endif 159 #endif
160 cpu->cpu_state = &s; 160 cpu->cpu_state = &s;
161 161
162 162
163 union r_t { 163 union r_t {
164 struct regs_t b; 164 struct regs_t b;
165 struct pairs_t w; 165 struct pairs_t w;
166 byte r8_ [8]; // indexed 166 byte r8_ [8]; // indexed
167 uint16_t r16_ [4]; 167 uint16_t r16_ [4];
168 } r; 168 } r;
169 r.b = R.b; 169 r.b = R.b;
170 170
171 cpu_time_t s_time = cpu->cpu_state_.time; 171 cpu_time_t s_time = cpu->cpu_state_.time;
172 int pc = R.pc; 172 int pc = R.pc;
173 int sp = R.sp; 173 int sp = R.sp;
174 int ix = R.ix; // TODO: keep in memory for direct access? 174 int ix = R.ix; // TODO: keep in memory for direct access?
175 int iy = R.iy; 175 int iy = R.iy;
176 int flags = R.b.flags; 176 int flags = R.b.flags;
177 177
178 //goto loop; // confuses optimizer 178 //goto loop; // confuses optimizer
179 s_time += 7; 179 s_time += 7;
180 pc -= 2; 180 pc -= 2;
181 181
182call_not_taken: 182call_not_taken:
183 s_time -= 7; 183 s_time -= 7;
184jp_not_taken: 184jp_not_taken:
185 pc += 2; 185 pc += 2;
186loop: 186loop:
187 187
188 check( (unsigned) pc < 0x10000 + 1 ); // +1 so emulator can catch wrap-around 188 check( (unsigned) pc < 0x10000 + 1 ); // +1 so emulator can catch wrap-around
189 check( (unsigned) sp < 0x10000 ); 189 check( (unsigned) sp < 0x10000 );
190 check( (unsigned) flags < 0x100 ); 190 check( (unsigned) flags < 0x100 );
191 check( (unsigned) ix < 0x10000 ); 191 check( (unsigned) ix < 0x10000 );
192 check( (unsigned) iy < 0x10000 ); 192 check( (unsigned) iy < 0x10000 );
193 193
194 byte const* instr = RW_PAGE( pc, read ); 194 byte const* instr = RW_PAGE( pc, read );
195 195
196 int opcode; 196 int opcode;
197 197
198 if ( RW_OFFSET( ~0 ) == ~0 ) 198 if ( RW_OFFSET( ~0 ) == ~0 )
199 { 199 {
200 opcode = instr [RW_OFFSET( pc )]; 200 opcode = instr [RW_OFFSET( pc )];
201 pc++; 201 pc++;
202 instr += RW_OFFSET( pc ); 202 instr += RW_OFFSET( pc );
203 } 203 }
204 else 204 else
205 { 205 {
206 instr += RW_OFFSET( pc ); 206 instr += RW_OFFSET( pc );
207 opcode = *instr++; 207 opcode = *instr++;
208 pc++; 208 pc++;
209 } 209 }
210 210
211 static byte const clock_table [256 * 2] = { 211 static byte const clock_table [256 * 2] = {
212 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 212 // 0 1 2 3 4 5 6 7 8 9 A B C D E F
213 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, // 0 213 4,10, 7, 6, 4, 4, 7, 4, 4,11, 7, 6, 4, 4, 7, 4, // 0
214 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4, // 1 214 8,10, 7, 6, 4, 4, 7, 4,12,11, 7, 6, 4, 4, 7, 4, // 1
215 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, // 2 215 7,10,16, 6, 4, 4, 7, 4, 7,11,16, 6, 4, 4, 7, 4, // 2
216 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4, // 3 216 7,10,13, 6,11,11,10, 4, 7,11,13, 6, 4, 4, 7, 4, // 3
217 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 4 217 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 4
218 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 5 218 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 5
219 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 6 219 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 6
220 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4, // 7 220 7, 7, 7, 7, 7, 7, 4, 7, 4, 4, 4, 4, 4, 4, 7, 4, // 7
221 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 8 221 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 8
222 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 9 222 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // 9
223 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // A 223 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // A
224 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // B 224 4, 4, 4, 4, 4, 4, 7, 4, 4, 4, 4, 4, 4, 4, 7, 4, // B
225 11,10,10,10,17,11, 7,11,11,10,10, 8,17,17, 7,11, // C 225 11,10,10,10,17,11, 7,11,11,10,10, 8,17,17, 7,11, // C
226 11,10,10,11,17,11, 7,11,11, 4,10,11,17, 8, 7,11, // D 226 11,10,10,11,17,11, 7,11,11, 4,10,11,17, 8, 7,11, // D
227 11,10,10,19,17,11, 7,11,11, 4,10, 4,17, 8, 7,11, // E 227 11,10,10,19,17,11, 7,11,11, 4,10, 4,17, 8, 7,11, // E
228 11,10,10, 4,17,11, 7,11,11, 6,10, 4,17, 8, 7,11, // F 228 11,10,10, 4,17,11, 7,11,11, 6,10, 4,17, 8, 7,11, // F
229 229
230 // high four bits are $ED time - 8, low four bits are $DD/$FD time - 8 230 // high four bits are $ED time - 8, low four bits are $DD/$FD time - 8
231 //0 1 2 3 4 5 6 7 8 9 A B C D E F 231 //0 1 2 3 4 5 6 7 8 9 A B C D E F
232 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 232 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
233 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 233 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
234 0x00,0x06,0x0C,0x02,0x00,0x00,0x03,0x00,0x00,0x07,0x0C,0x02,0x00,0x00,0x03,0x00, 234 0x00,0x06,0x0C,0x02,0x00,0x00,0x03,0x00,0x00,0x07,0x0C,0x02,0x00,0x00,0x03,0x00,
235 0x00,0x00,0x00,0x00,0x0F,0x0F,0x0B,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00, 235 0x00,0x00,0x00,0x00,0x0F,0x0F,0x0B,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
236 0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10, 236 0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10,
237 0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10, 237 0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x10,
238 0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0xA0,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0xA0, 238 0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0xA0,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0xA0,
239 0x4B,0x4B,0x7B,0xCB,0x0B,0x6B,0x00,0x0B,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x00, 239 0x4B,0x4B,0x7B,0xCB,0x0B,0x6B,0x00,0x0B,0x40,0x40,0x70,0xC0,0x00,0x60,0x0B,0x00,
240 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00, 240 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,
241 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00, 241 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x00,
242 0x80,0x80,0x80,0x80,0x00,0x00,0x0B,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0B,0x00, 242 0x80,0x80,0x80,0x80,0x00,0x00,0x0B,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x0B,0x00,
243 0xD0,0xD0,0xD0,0xD0,0x00,0x00,0x0B,0x00,0xD0,0xD0,0xD0,0xD0,0x00,0x00,0x0B,0x00, 243 0xD0,0xD0,0xD0,0xD0,0x00,0x00,0x0B,0x00,0xD0,0xD0,0xD0,0xD0,0x00,0x00,0x0B,0x00,
244 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00, 244 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,
245 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 245 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
246 0x00,0x06,0x00,0x0F,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 246 0x00,0x06,0x00,0x0F,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
247 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00, 247 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
248 }; 248 };
249 249
250 if ( s_time >= 0 ) 250 if ( s_time >= 0 )
251 goto out_of_time; 251 goto out_of_time;
252 s_time += clock_table [opcode]; 252 s_time += clock_table [opcode];
253 253
254 #ifdef Z80_CPU_LOG_H 254 #ifdef Z80_CPU_LOG_H
255 //log_opcode( opcode, READ_CODE( pc ) ); 255 //log_opcode( opcode, READ_CODE( pc ) );
256 z80_cpu_log( "log.txt", pc - 1, opcode, READ_CODE( pc ), 256 z80_cpu_log( "log.txt", pc - 1, opcode, READ_CODE( pc ),
257 READ_CODE( pc + 1 ), READ_CODE( pc + 2 ) ); 257 READ_CODE( pc + 1 ), READ_CODE( pc + 2 ) );
258 z80_log_regs( r.b.a, r.w.bc, r.w.de, r.w.hl, sp, ix, iy ); 258 z80_log_regs( r.b.a, r.w.bc, r.w.de, r.w.hl, sp, ix, iy );
259 #endif 259 #endif
260 260
261#define GET_ADDR() GET_LE16( &INSTR( 0, pc ) ) 261#define GET_ADDR() GET_LE16( &INSTR( 0, pc ) )
262 262
263 int data; 263 int data;
264 data = INSTR( 0, pc ); 264 data = INSTR( 0, pc );
265 265
266 switch ( opcode ) 266 switch ( opcode )
267 { 267 {
268// Common 268// Common
269 269
270 case 0x00: // NOP 270 case 0x00: // NOP
271 CASE7( 40, 49, 52, 5B, 64, 6D, 7F ): // LD B,B etc. 271 CASE7( 40, 49, 52, 5B, 64, 6D, 7F ): // LD B,B etc.
272 goto loop; 272 goto loop;
273 273
274 case 0x08:{// EX AF,AF' 274 case 0x08:{// EX AF,AF'
275 EXX( b.a ); 275 EXX( b.a );
276 EX( R.alt.b.flags, flags ); 276 EX( R.alt.b.flags, flags );
277 goto loop; 277 goto loop;
278 } 278 }
279 279
280 case 0xD3: // OUT (imm),A 280 case 0xD3: // OUT (imm),A
281 pc++; 281 pc++;
282 OUT_PORT( (data + r.b.a * 0x100), r.b.a ); 282 OUT_PORT( (data + r.b.a * 0x100), r.b.a );
283 goto loop; 283 goto loop;
284 284
285 case 0x2E: // LD L,imm 285 case 0x2E: // LD L,imm
286 pc++; 286 pc++;
287 r.b.l = data; 287 r.b.l = data;
288 goto loop; 288 goto loop;
289 289
290 case 0x3E: // LD A,imm 290 case 0x3E: // LD A,imm
291 pc++; 291 pc++;
292 r.b.a = data; 292 r.b.a = data;
293 goto loop; 293 goto loop;
294 294
295 case 0x3A:{// LD A,(addr) 295 case 0x3A:{// LD A,(addr)
296 int addr = GET_ADDR(); 296 int addr = GET_ADDR();
297 pc += 2; 297 pc += 2;
298 r.b.a = READ_MEM( addr ); 298 r.b.a = READ_MEM( addr );
299 goto loop; 299 goto loop;
300 } 300 }
301 301
302// Conditional 302// Conditional
303 303
304#define ZERO (flags & Z40) 304#define ZERO (flags & Z40)
305#define CARRY (flags & C01) 305#define CARRY (flags & C01)
306#define EVEN (flags & P04) 306#define EVEN (flags & P04)
307#define MINUS (flags & S80) 307#define MINUS (flags & S80)
308 308
309// JR 309// JR
310// TODO: more efficient way to handle negative branch that wraps PC around 310// TODO: more efficient way to handle negative branch that wraps PC around
311#define JR_( cond, clocks ) {\ 311#define JR_( cond, clocks ) {\
312 pc++;\ 312 pc++;\
313 if ( !(cond) )\ 313 if ( !(cond) )\
314 goto loop;\ 314 goto loop;\
315 int offset = SBYTE( data );\ 315 int offset = SBYTE( data );\
316 pc = WORD( pc + offset );\ 316 pc = WORD( pc + offset );\
317 s_time += clocks;\ 317 s_time += clocks;\
318 goto loop;\ 318 goto loop;\
319} 319}
320 320
321#define JR( cond ) JR_( cond, 5 ) 321#define JR( cond ) JR_( cond, 5 )
322 322
323 case 0x20: JR( !ZERO ) // JR NZ,disp 323 case 0x20: JR( !ZERO ) // JR NZ,disp
324 case 0x28: JR( ZERO ) // JR Z,disp 324 case 0x28: JR( ZERO ) // JR Z,disp
325 case 0x30: JR( !CARRY ) // JR NC,disp 325 case 0x30: JR( !CARRY ) // JR NC,disp
326 case 0x38: JR( CARRY ) // JR C,disp 326 case 0x38: JR( CARRY ) // JR C,disp
327 case 0x18: JR_( true,0) // JR disp 327 case 0x18: JR_( true,0) // JR disp
328 328
329 case 0x10:{// DJNZ disp 329 case 0x10:{// DJNZ disp
330 int temp = r.b.b - 1; 330 int temp = r.b.b - 1;
331 r.b.b = temp; 331 r.b.b = temp;
332 JR( temp ) 332 JR( temp )
333 } 333 }
334 334
335// JP 335// JP
336#define JP( cond ) \ 336#define JP( cond ) \
337 if ( !(cond) )\ 337 if ( !(cond) )\
338 goto jp_not_taken;\ 338 goto jp_not_taken;\
339 pc = GET_ADDR();\ 339 pc = GET_ADDR();\
340 goto loop; 340 goto loop;
341 341
342 case 0xC2: JP( !ZERO ) // JP NZ,addr 342 case 0xC2: JP( !ZERO ) // JP NZ,addr
343 case 0xCA: JP( ZERO ) // JP Z,addr 343 case 0xCA: JP( ZERO ) // JP Z,addr
344 case 0xD2: JP( !CARRY ) // JP NC,addr 344 case 0xD2: JP( !CARRY ) // JP NC,addr
345 case 0xDA: JP( CARRY ) // JP C,addr 345 case 0xDA: JP( CARRY ) // JP C,addr
346 case 0xE2: JP( !EVEN ) // JP PO,addr 346 case 0xE2: JP( !EVEN ) // JP PO,addr
347 case 0xEA: JP( EVEN ) // JP PE,addr 347 case 0xEA: JP( EVEN ) // JP PE,addr
348 case 0xF2: JP( !MINUS ) // JP P,addr 348 case 0xF2: JP( !MINUS ) // JP P,addr
349 case 0xFA: JP( MINUS ) // JP M,addr 349 case 0xFA: JP( MINUS ) // JP M,addr
350 350
351 case 0xC3: // JP addr 351 case 0xC3: // JP addr
352 pc = GET_ADDR(); 352 pc = GET_ADDR();
353 goto loop; 353 goto loop;
354 354
355 case 0xE9: // JP HL 355 case 0xE9: // JP HL
356 pc = r.w.hl; 356 pc = r.w.hl;
357 goto loop; 357 goto loop;
358 358
359// RET 359// RET
360#define RET( cond ) \ 360#define RET( cond ) \
361 if ( cond )\ 361 if ( cond )\
362 goto ret_taken;\ 362 goto ret_taken;\
363 s_time -= 6;\ 363 s_time -= 6;\
364 goto loop; 364 goto loop;
365 365
366 case 0xC0: RET( !ZERO ) // RET NZ 366 case 0xC0: RET( !ZERO ) // RET NZ
367 case 0xC8: RET( ZERO ) // RET Z 367 case 0xC8: RET( ZERO ) // RET Z
368 case 0xD0: RET( !CARRY ) // RET NC 368 case 0xD0: RET( !CARRY ) // RET NC
369 case 0xD8: RET( CARRY ) // RET C 369 case 0xD8: RET( CARRY ) // RET C
370 case 0xE0: RET( !EVEN ) // RET PO 370 case 0xE0: RET( !EVEN ) // RET PO
371 case 0xE8: RET( EVEN ) // RET PE 371 case 0xE8: RET( EVEN ) // RET PE
372 case 0xF0: RET( !MINUS ) // RET P 372 case 0xF0: RET( !MINUS ) // RET P
373 case 0xF8: RET( MINUS ) // RET M 373 case 0xF8: RET( MINUS ) // RET M
374 374
375 case 0xC9: // RET 375 case 0xC9: // RET
376 ret_taken: 376 ret_taken:
377 pc = READ_WORD( sp ); 377 pc = READ_WORD( sp );
378 sp = WORD( sp + 2 ); 378 sp = WORD( sp + 2 );
379 goto loop; 379 goto loop;
380 380
381// CALL 381// CALL
382#define CALL( cond ) \ 382#define CALL( cond ) \
383 if ( cond )\ 383 if ( cond )\
384 goto call_taken;\ 384 goto call_taken;\
385 goto call_not_taken; 385 goto call_not_taken;
386 386
387 case 0xC4: CALL( !ZERO ) // CALL NZ,addr 387 case 0xC4: CALL( !ZERO ) // CALL NZ,addr
388 case 0xCC: CALL( ZERO ) // CALL Z,addr 388 case 0xCC: CALL( ZERO ) // CALL Z,addr
389 case 0xD4: CALL( !CARRY ) // CALL NC,addr 389 case 0xD4: CALL( !CARRY ) // CALL NC,addr
390 case 0xDC: CALL( CARRY ) // CALL C,addr 390 case 0xDC: CALL( CARRY ) // CALL C,addr
391 case 0xE4: CALL( !EVEN ) // CALL PO,addr 391 case 0xE4: CALL( !EVEN ) // CALL PO,addr
392 case 0xEC: CALL( EVEN ) // CALL PE,addr 392 case 0xEC: CALL( EVEN ) // CALL PE,addr
393 case 0xF4: CALL( !MINUS ) // CALL P,addr 393 case 0xF4: CALL( !MINUS ) // CALL P,addr
394 case 0xFC: CALL( MINUS ) // CALL M,addr 394 case 0xFC: CALL( MINUS ) // CALL M,addr
395 395
396 case 0xCD:{// CALL addr 396 case 0xCD:{// CALL addr
397 call_taken: { 397 call_taken: {
398 int addr = pc + 2; 398 int addr = pc + 2;
399 pc = GET_ADDR(); 399 pc = GET_ADDR();
400 sp = WORD( sp - 2 ); 400 sp = WORD( sp - 2 );
401 WRITE_WORD( sp, addr ); 401 WRITE_WORD( sp, addr );
402 goto loop; 402 goto loop;
403 } 403 }
404 } 404 }
405 405
406 case 0xFF: // RST 406 case 0xFF: // RST
407 #ifdef IDLE_ADDR 407 #ifdef IDLE_ADDR
408 if ( pc == IDLE_ADDR + 1 ) 408 if ( pc == IDLE_ADDR + 1 )
409 goto hit_idle_addr; 409 goto hit_idle_addr;
410 #else 410 #else
411 if ( pc > 0x10000 ) 411 if ( pc > 0x10000 )
412 { 412 {
413 pc = WORD( pc - 1 ); 413 pc = WORD( pc - 1 );
414 s_time -= 11; 414 s_time -= 11;
415 goto loop; 415 goto loop;
416 } 416 }
417 #endif 417 #endif
418 CASE7( C7, CF, D7, DF, E7, EF, F7 ): 418 CASE7( C7, CF, D7, DF, E7, EF, F7 ):
419 data = pc; 419 data = pc;
420 pc = opcode & 0x38; 420 pc = opcode & 0x38;
421 #ifdef RST_BASE 421 #ifdef RST_BASE
422 pc += RST_BASE; 422 pc += RST_BASE;
423 #endif 423 #endif
424 goto push_data; 424 goto push_data;
425 425
426// PUSH/POP 426// PUSH/POP
427 case 0xF5: // PUSH AF 427 case 0xF5: // PUSH AF
428 data = r.b.a * 0x100u + flags; 428 data = r.b.a * 0x100u + flags;
429 goto push_data; 429 goto push_data;
430 430
431 case 0xC5: // PUSH BC 431 case 0xC5: // PUSH BC
432 case 0xD5: // PUSH DE 432 case 0xD5: // PUSH DE
433 case 0xE5: // PUSH HL 433 case 0xE5: // PUSH HL
434 data = R16( opcode, 4, 0xC5 ); 434 data = R16( opcode, 4, 0xC5 );
435 push_data: 435 push_data:
436 sp = WORD( sp - 2 ); 436 sp = WORD( sp - 2 );
437 WRITE_WORD( sp, data ); 437 WRITE_WORD( sp, data );
438 goto loop; 438 goto loop;
439 439
440 case 0xF1: // POP AF 440 case 0xF1: // POP AF
441 flags = READ_MEM( sp ); 441 flags = READ_MEM( sp );
442 r.b.a = READ_MEM( (sp + 1) ); 442 r.b.a = READ_MEM( (sp + 1) );
443 sp = WORD( sp + 2 ); 443 sp = WORD( sp + 2 );
444 goto loop; 444 goto loop;
445 445
446 case 0xC1: // POP BC 446 case 0xC1: // POP BC
447 case 0xD1: // POP DE 447 case 0xD1: // POP DE
448 case 0xE1: // POP HL 448 case 0xE1: // POP HL
449 R16( opcode, 4, 0xC1 ) = READ_WORD( sp ); 449 R16( opcode, 4, 0xC1 ) = READ_WORD( sp );
450 sp = WORD( sp + 2 ); 450 sp = WORD( sp + 2 );
451 goto loop; 451 goto loop;
452 452
453// ADC/ADD/SBC/SUB 453// ADC/ADD/SBC/SUB
454 case 0x96: // SUB (HL) 454 case 0x96: // SUB (HL)
455 case 0x86: // ADD (HL) 455 case 0x86: // ADD (HL)
456 flags &= ~C01; 456 flags &= ~C01;
457 case 0x9E: // SBC (HL) 457 case 0x9E: // SBC (HL)
458 case 0x8E: // ADC (HL) 458 case 0x8E: // ADC (HL)
459 data = READ_MEM( r.w.hl ); 459 data = READ_MEM( r.w.hl );
460 goto adc_data; 460 goto adc_data;
461 461
462 case 0xD6: // SUB A,imm 462 case 0xD6: // SUB A,imm
463 case 0xC6: // ADD imm 463 case 0xC6: // ADD imm
464 flags &= ~C01; 464 flags &= ~C01;
465 case 0xDE: // SBC A,imm 465 case 0xDE: // SBC A,imm
466 case 0xCE: // ADC imm 466 case 0xCE: // ADC imm
467 pc++; 467 pc++;
468 goto adc_data; 468 goto adc_data;
469 469
470 CASE7( 90, 91, 92, 93, 94, 95, 97 ): // SUB r 470 CASE7( 90, 91, 92, 93, 94, 95, 97 ): // SUB r
471 CASE7( 80, 81, 82, 83, 84, 85, 87 ): // ADD r 471 CASE7( 80, 81, 82, 83, 84, 85, 87 ): // ADD r
472 flags &= ~C01; 472 flags &= ~C01;
473 CASE7( 98, 99, 9A, 9B, 9C, 9D, 9F ): // SBC r 473 CASE7( 98, 99, 9A, 9B, 9C, 9D, 9F ): // SBC r
474 CASE7( 88, 89, 8A, 8B, 8C, 8D, 8F ): // ADC r 474 CASE7( 88, 89, 8A, 8B, 8C, 8D, 8F ): // ADC r
475 data = R8( opcode & 7, 0 ); 475 data = R8( opcode & 7, 0 );
476 adc_data: { 476 adc_data: {
477 int result = data + (flags & C01); 477 int result = data + (flags & C01);
478 data ^= r.b.a; 478 data ^= r.b.a;
479 flags = opcode >> 3 & N02; // bit 4 is set in subtract opcodes 479 flags = opcode >> 3 & N02; // bit 4 is set in subtract opcodes
480 if ( flags ) 480 if ( flags )
481 result = -result; 481 result = -result;
482 result += r.b.a; 482 result += r.b.a;
483 data ^= result; 483 data ^= result;
484 flags +=(data & H10) + 484 flags +=(data & H10) +
485 ((data + 0x80) >> 6 & V04) + 485 ((data + 0x80) >> 6 & V04) +
486 SZ28C( result & 0x1FF ); 486 SZ28C( result & 0x1FF );
487 r.b.a = result; 487 r.b.a = result;
488 goto loop; 488 goto loop;
489 } 489 }
490 490
491// CP 491// CP
492 case 0xBE: // CP (HL) 492 case 0xBE: // CP (HL)
493 data = READ_MEM( r.w.hl ); 493 data = READ_MEM( r.w.hl );
494 goto cp_data; 494 goto cp_data;
495 495
496 case 0xFE: // CP imm 496 case 0xFE: // CP imm
497 pc++; 497 pc++;
498 goto cp_data; 498 goto cp_data;
499 499
500 CASE7( B8, B9, BA, BB, BC, BD, BF ): // CP r 500 CASE7( B8, B9, BA, BB, BC, BD, BF ): // CP r
501 data = R8( opcode, 0xB8 ); 501 data = R8( opcode, 0xB8 );
502 cp_data: { 502 cp_data: {
503 int result = r.b.a - data; 503 int result = r.b.a - data;
504 flags = N02 + (data & (F20 | F08)) + (result >> 8 & C01); 504 flags = N02 + (data & (F20 | F08)) + (result >> 8 & C01);
505 data ^= r.b.a; 505 data ^= r.b.a;
506 flags +=(((result ^ r.b.a) & data) >> 5 & V04) + 506 flags +=(((result ^ r.b.a) & data) >> 5 & V04) +
507 (((data & H10) ^ result) & (S80 | H10)); 507 (((data & H10) ^ result) & (S80 | H10));
508 if ( BYTE( result ) ) 508 if ( BYTE( result ) )
509 goto loop; 509 goto loop;
510 flags += Z40; 510 flags += Z40;
511 goto loop; 511 goto loop;
512 } 512 }
513 513
514// ADD HL,r.w 514// ADD HL,r.w
515 515
516 case 0x39: // ADD HL,SP 516 case 0x39: // ADD HL,SP
517 data = sp; 517 data = sp;
518 goto add_hl_data; 518 goto add_hl_data;
519 519
520 case 0x09: // ADD HL,BC 520 case 0x09: // ADD HL,BC
521 case 0x19: // ADD HL,DE 521 case 0x19: // ADD HL,DE
522 case 0x29: // ADD HL,HL 522 case 0x29: // ADD HL,HL
523 data = R16( opcode, 4, 0x09 ); 523 data = R16( opcode, 4, 0x09 );
524 add_hl_data: { 524 add_hl_data: {
525 int sum = r.w.hl + data; 525 int sum = r.w.hl + data;
526 data ^= r.w.hl; 526 data ^= r.w.hl;
527 r.w.hl = sum; 527 r.w.hl = sum;
528 flags = (flags & (S80 | Z40 | V04)) + 528 flags = (flags & (S80 | Z40 | V04)) +
529 (sum >> 16) + 529 (sum >> 16) +
530 (sum >> 8 & (F20 | F08)) + 530 (sum >> 8 & (F20 | F08)) +
531 ((data ^ sum) >> 8 & H10); 531 ((data ^ sum) >> 8 & H10);
532 goto loop; 532 goto loop;
533 } 533 }
534 534
535 case 0x27:{// DAA 535 case 0x27:{// DAA
536 int a = r.b.a; 536 int a = r.b.a;
537 if ( a > 0x99 ) 537 if ( a > 0x99 )
538 flags |= C01; 538 flags |= C01;
539 539
540 int adjust = 0x60 * (flags & C01); 540 int adjust = 0x60 * (flags & C01);
541 541
542 if ( flags & H10 || (a & 0x0F) > 9 ) 542 if ( flags & H10 || (a & 0x0F) > 9 )
543 adjust += 0x06; 543 adjust += 0x06;
544 544
545 if ( flags & N02 ) 545 if ( flags & N02 )
546 adjust = -adjust; 546 adjust = -adjust;
547 a += adjust; 547 a += adjust;
548 548
549 flags = (flags & (C01 | N02)) + 549 flags = (flags & (C01 | N02)) +
550 ((r.b.a ^ a) & H10) + 550 ((r.b.a ^ a) & H10) +
551 SZ28P( BYTE( a ) ); 551 SZ28P( BYTE( a ) );
552 r.b.a = a; 552 r.b.a = a;
553 goto loop; 553 goto loop;
554 } 554 }
555 555
556// INC/DEC 556// INC/DEC
557 case 0x34: // INC (HL) 557 case 0x34: // INC (HL)
558 data = READ_MEM( r.w.hl ) + 1; 558 data = READ_MEM( r.w.hl ) + 1;
559 WRITE_MEM( r.w.hl, data ); 559 WRITE_MEM( r.w.hl, data );
560 goto inc_set_flags; 560 goto inc_set_flags;
561 561
562 CASE7( 04, 0C, 14, 1C, 24, 2C, 3C ): // INC r 562 CASE7( 04, 0C, 14, 1C, 24, 2C, 3C ): // INC r
563 data = ++R8( opcode >> 3, 0 ); 563 data = ++R8( opcode >> 3, 0 );
564 inc_set_flags: 564 inc_set_flags:
565 flags = (flags & C01) + 565 flags = (flags & C01) +
566 (((data & 0x0F) - 1) & H10) + 566 (((data & 0x0F) - 1) & H10) +
567 SZ28( BYTE( data ) ); 567 SZ28( BYTE( data ) );
568 if ( data != 0x80 ) 568 if ( data != 0x80 )
569 goto loop; 569 goto loop;
570 flags += V04; 570 flags += V04;
571 goto loop; 571 goto loop;
572 572
573 case 0x35: // DEC (HL) 573 case 0x35: // DEC (HL)
574 data = READ_MEM( r.w.hl ) - 1; 574 data = READ_MEM( r.w.hl ) - 1;
575 WRITE_MEM( r.w.hl, data ); 575 WRITE_MEM( r.w.hl, data );
576 goto dec_set_flags; 576 goto dec_set_flags;
577 577
578 CASE7( 05, 0D, 15, 1D, 25, 2D, 3D ): // DEC r 578 CASE7( 05, 0D, 15, 1D, 25, 2D, 3D ): // DEC r
579 data = --R8( opcode >> 3, 0 ); 579 data = --R8( opcode >> 3, 0 );
580 dec_set_flags: 580 dec_set_flags:
581 flags = (flags & C01) + N02 + 581 flags = (flags & C01) + N02 +
582 (((data & 0x0F) + 1) & H10) + 582 (((data & 0x0F) + 1) & H10) +
583 SZ28( BYTE( data ) ); 583 SZ28( BYTE( data ) );
584 if ( data != 0x7F ) 584 if ( data != 0x7F )
585 goto loop; 585 goto loop;
586 flags += V04; 586 flags += V04;
587 goto loop; 587 goto loop;
588 588
589 case 0x03: // INC BC 589 case 0x03: // INC BC
590 case 0x13: // INC DE 590 case 0x13: // INC DE
591 case 0x23: // INC HL 591 case 0x23: // INC HL
592 R16( opcode, 4, 0x03 )++; 592 R16( opcode, 4, 0x03 )++;
593 goto loop; 593 goto loop;
594 594
595 case 0x33: // INC SP 595 case 0x33: // INC SP
596 sp = WORD( sp + 1 ); 596 sp = WORD( sp + 1 );
597 goto loop; 597 goto loop;
598 598
599 case 0x0B: // DEC BC 599 case 0x0B: // DEC BC
600 case 0x1B: // DEC DE 600 case 0x1B: // DEC DE
601 case 0x2B: // DEC HL 601 case 0x2B: // DEC HL
602 R16( opcode, 4, 0x0B )--; 602 R16( opcode, 4, 0x0B )--;
603 goto loop; 603 goto loop;
604 604
605 case 0x3B: // DEC SP 605 case 0x3B: // DEC SP
606 sp = WORD( sp - 1 ); 606 sp = WORD( sp - 1 );
607 goto loop; 607 goto loop;
608 608
609// AND 609// AND
610 case 0xA6: // AND (HL) 610 case 0xA6: // AND (HL)
611 data = READ_MEM( r.w.hl ); 611 data = READ_MEM( r.w.hl );
612 goto and_data; 612 goto and_data;
613 613
614 case 0xE6: // AND imm 614 case 0xE6: // AND imm
615 pc++; 615 pc++;
616 goto and_data; 616 goto and_data;
617 617
618 CASE7( A0, A1, A2, A3, A4, A5, A7 ): // AND r 618 CASE7( A0, A1, A2, A3, A4, A5, A7 ): // AND r
619 data = R8( opcode, 0xA0 ); 619 data = R8( opcode, 0xA0 );
620 and_data: 620 and_data:
621 r.b.a &= data; 621 r.b.a &= data;
622 flags = SZ28P( r.b.a ) + H10; 622 flags = SZ28P( r.b.a ) + H10;
623 goto loop; 623 goto loop;
624 624
625// OR 625// OR
626 case 0xB6: // OR (HL) 626 case 0xB6: // OR (HL)
627 data = READ_MEM( r.w.hl ); 627 data = READ_MEM( r.w.hl );
628 goto or_data; 628 goto or_data;
629 629
630 case 0xF6: // OR imm 630 case 0xF6: // OR imm
631 pc++; 631 pc++;
632 goto or_data; 632 goto or_data;
633 633
634 CASE7( B0, B1, B2, B3, B4, B5, B7 ): // OR r 634 CASE7( B0, B1, B2, B3, B4, B5, B7 ): // OR r
635 data = R8( opcode, 0xB0 ); 635 data = R8( opcode, 0xB0 );
636 or_data: 636 or_data:
637 r.b.a |= data; 637 r.b.a |= data;
638 flags = SZ28P( r.b.a ); 638 flags = SZ28P( r.b.a );
639 goto loop; 639 goto loop;
640 640
641// XOR 641// XOR
642 case 0xAE: // XOR (HL) 642 case 0xAE: // XOR (HL)
643 data = READ_MEM( r.w.hl ); 643 data = READ_MEM( r.w.hl );
644 goto xor_data; 644 goto xor_data;
645 645
646 case 0xEE: // XOR imm 646 case 0xEE: // XOR imm
647 pc++; 647 pc++;
648 goto xor_data; 648 goto xor_data;
649 649
650 CASE7( A8, A9, AA, AB, AC, AD, AF ): // XOR r 650 CASE7( A8, A9, AA, AB, AC, AD, AF ): // XOR r
651 data = R8( opcode, 0xA8 ); 651 data = R8( opcode, 0xA8 );
652 xor_data: 652 xor_data:
653 r.b.a ^= data; 653 r.b.a ^= data;
654 flags = SZ28P( r.b.a ); 654 flags = SZ28P( r.b.a );
655 goto loop; 655 goto loop;
656 656
657// LD 657// LD
658 CASE7( 70, 71, 72, 73, 74, 75, 77 ): // LD (HL),r 658 CASE7( 70, 71, 72, 73, 74, 75, 77 ): // LD (HL),r
659 WRITE_MEM( r.w.hl, R8( opcode, 0x70 ) ); 659 WRITE_MEM( r.w.hl, R8( opcode, 0x70 ) );
660 goto loop; 660 goto loop;
661 661
662 CASE6( 41, 42, 43, 44, 45, 47 ): // LD B,r 662 CASE6( 41, 42, 43, 44, 45, 47 ): // LD B,r
663 CASE6( 48, 4A, 4B, 4C, 4D, 4F ): // LD C,r 663 CASE6( 48, 4A, 4B, 4C, 4D, 4F ): // LD C,r
664 CASE6( 50, 51, 53, 54, 55, 57 ): // LD D,r 664 CASE6( 50, 51, 53, 54, 55, 57 ): // LD D,r
665 CASE6( 58, 59, 5A, 5C, 5D, 5F ): // LD E,r 665 CASE6( 58, 59, 5A, 5C, 5D, 5F ): // LD E,r
666 CASE6( 60, 61, 62, 63, 65, 67 ): // LD H,r 666 CASE6( 60, 61, 62, 63, 65, 67 ): // LD H,r
667 CASE6( 68, 69, 6A, 6B, 6C, 6F ): // LD L,r 667 CASE6( 68, 69, 6A, 6B, 6C, 6F ): // LD L,r
668 CASE6( 78, 79, 7A, 7B, 7C, 7D ): // LD A,r 668 CASE6( 78, 79, 7A, 7B, 7C, 7D ): // LD A,r
669 R8( opcode >> 3 & 7, 0 ) = R8( opcode & 7, 0 ); 669 R8( opcode >> 3 & 7, 0 ) = R8( opcode & 7, 0 );
670 goto loop; 670 goto loop;
671 671
672 CASE5( 06, 0E, 16, 1E, 26 ): // LD r,imm 672 CASE5( 06, 0E, 16, 1E, 26 ): // LD r,imm
673 R8( opcode >> 3, 0 ) = data; 673 R8( opcode >> 3, 0 ) = data;
674 pc++; 674 pc++;
675 goto loop; 675 goto loop;
676 676
677 case 0x36: // LD (HL),imm 677 case 0x36: // LD (HL),imm
678 pc++; 678 pc++;
679 WRITE_MEM( r.w.hl, data ); 679 WRITE_MEM( r.w.hl, data );
680 goto loop; 680 goto loop;
681 681
682 CASE7( 46, 4E, 56, 5E, 66, 6E, 7E ): // LD r,(HL) 682 CASE7( 46, 4E, 56, 5E, 66, 6E, 7E ): // LD r,(HL)
683 R8( opcode >> 3, 8 ) = READ_MEM( r.w.hl ); 683 R8( opcode >> 3, 8 ) = READ_MEM( r.w.hl );
684 goto loop; 684 goto loop;
685 685
686 case 0x01: // LD r.w,imm 686 case 0x01: // LD r.w,imm
687 case 0x11: 687 case 0x11:
688 case 0x21: 688 case 0x21:
689 R16( opcode, 4, 0x01 ) = GET_ADDR(); 689 R16( opcode, 4, 0x01 ) = GET_ADDR();
690 pc += 2; 690 pc += 2;
691 goto loop; 691 goto loop;
692 692
693 case 0x31: // LD sp,imm 693 case 0x31: // LD sp,imm
694 sp = GET_ADDR(); 694 sp = GET_ADDR();
695 pc += 2; 695 pc += 2;
696 goto loop; 696 goto loop;
697 697
698 case 0x2A:{// LD HL,(addr) 698 case 0x2A:{// LD HL,(addr)
699 int addr = GET_ADDR(); 699 int addr = GET_ADDR();
700 pc += 2; 700 pc += 2;
701 r.w.hl = READ_WORD( addr ); 701 r.w.hl = READ_WORD( addr );
702 goto loop; 702 goto loop;
703 } 703 }
704 704
705 case 0x32:{// LD (addr),A 705 case 0x32:{// LD (addr),A
706 int addr = GET_ADDR(); 706 int addr = GET_ADDR();
707 pc += 2; 707 pc += 2;
708 WRITE_MEM( addr, r.b.a ); 708 WRITE_MEM( addr, r.b.a );
709 goto loop; 709 goto loop;
710 } 710 }
711 711
712 case 0x22:{// LD (addr),HL 712 case 0x22:{// LD (addr),HL
713 int addr = GET_ADDR(); 713 int addr = GET_ADDR();
714 pc += 2; 714 pc += 2;
715 WRITE_WORD( addr, r.w.hl ); 715 WRITE_WORD( addr, r.w.hl );
716 goto loop; 716 goto loop;
717 } 717 }
718 718
719 case 0x02: // LD (BC),A 719 case 0x02: // LD (BC),A
720 case 0x12: // LD (DE),A 720 case 0x12: // LD (DE),A
721 WRITE_MEM( R16( opcode, 4, 0x02 ), r.b.a ); 721 WRITE_MEM( R16( opcode, 4, 0x02 ), r.b.a );
722 goto loop; 722 goto loop;
723 723
724 case 0x0A: // LD A,(BC) 724 case 0x0A: // LD A,(BC)
725 case 0x1A: // LD A,(DE) 725 case 0x1A: // LD A,(DE)
726 r.b.a = READ_MEM( R16( opcode, 4, 0x0A ) ); 726 r.b.a = READ_MEM( R16( opcode, 4, 0x0A ) );
727 goto loop; 727 goto loop;
728 728
729 case 0xF9: // LD SP,HL 729 case 0xF9: // LD SP,HL
730 sp = r.w.hl; 730 sp = r.w.hl;
731 goto loop; 731 goto loop;
732 732
733// Rotate 733// Rotate
734 734
735 case 0x07:{// RLCA 735 case 0x07:{// RLCA
736 int temp = r.b.a; 736 int temp = r.b.a;
737 temp = (temp << 1) + (temp >> 7); 737 temp = (temp << 1) + (temp >> 7);
738 flags = (flags & (S80 | Z40 | P04)) + 738 flags = (flags & (S80 | Z40 | P04)) +
739 (temp & (F20 | F08 | C01)); 739 (temp & (F20 | F08 | C01));
740 r.b.a = temp; 740 r.b.a = temp;
741 goto loop; 741 goto loop;
742 } 742 }
743 743
744 case 0x0F:{// RRCA 744 case 0x0F:{// RRCA
745 int temp = r.b.a; 745 int temp = r.b.a;
746 flags = (flags & (S80 | Z40 | P04)) + 746 flags = (flags & (S80 | Z40 | P04)) +
747 (temp & C01); 747 (temp & C01);
748 temp = (temp << 7) + (temp >> 1); 748 temp = (temp << 7) + (temp >> 1);
749 flags += temp & (F20 | F08); 749 flags += temp & (F20 | F08);
750 r.b.a = temp; 750 r.b.a = temp;
751 goto loop; 751 goto loop;
752 } 752 }
753 753
754 case 0x17:{// RLA 754 case 0x17:{// RLA
755 int temp = (r.b.a << 1) + (flags & C01); 755 int temp = (r.b.a << 1) + (flags & C01);
756 flags = (flags & (S80 | Z40 | P04)) + 756 flags = (flags & (S80 | Z40 | P04)) +
757 (temp & (F20 | F08)) + 757 (temp & (F20 | F08)) +
758 (temp >> 8); 758 (temp >> 8);
759 r.b.a = temp; 759 r.b.a = temp;
760 goto loop; 760 goto loop;
761 } 761 }
762 762
763 case 0x1F:{// RRA 763 case 0x1F:{// RRA
764 int temp = (flags << 7) + (r.b.a >> 1); 764 int temp = (flags << 7) + (r.b.a >> 1);
765 flags = (flags & (S80 | Z40 | P04)) + 765 flags = (flags & (S80 | Z40 | P04)) +
766 (temp & (F20 | F08)) + 766 (temp & (F20 | F08)) +
767 (r.b.a & C01); 767 (r.b.a & C01);
768 r.b.a = temp; 768 r.b.a = temp;
769 goto loop; 769 goto loop;
770 } 770 }
771 771
772// Misc 772// Misc
773 case 0x2F:{// CPL 773 case 0x2F:{// CPL
774 int temp = ~r.b.a; 774 int temp = ~r.b.a;
775 flags = (flags & (S80 | Z40 | P04 | C01)) + 775 flags = (flags & (S80 | Z40 | P04 | C01)) +
776 (temp & (F20 | F08)) + 776 (temp & (F20 | F08)) +
777 (H10 | N02); 777 (H10 | N02);
778 r.b.a = temp; 778 r.b.a = temp;
779 goto loop; 779 goto loop;
780 } 780 }
781 781
782 case 0x3F:{// CCF 782 case 0x3F:{// CCF
783 flags = ((flags & (S80 | Z40 | P04 | C01)) ^ C01) + 783 flags = ((flags & (S80 | Z40 | P04 | C01)) ^ C01) +
784 (flags << 4 & H10) + 784 (flags << 4 & H10) +
785 (r.b.a & (F20 | F08)); 785 (r.b.a & (F20 | F08));
786 goto loop; 786 goto loop;
787 } 787 }
788 788
789 case 0x37: // SCF 789 case 0x37: // SCF
790 flags = ((flags & (S80 | Z40 | P04)) | C01) + 790 flags = ((flags & (S80 | Z40 | P04)) | C01) +
791 (r.b.a & (F20 | F08)); 791 (r.b.a & (F20 | F08));
792 goto loop; 792 goto loop;
793 793
794 case 0xDB: // IN A,(imm) 794 case 0xDB: // IN A,(imm)
795 pc++; 795 pc++;
796 r.b.a = IN_PORT( (data + r.b.a * 0x100) ); 796 r.b.a = IN_PORT( (data + r.b.a * 0x100) );
797 goto loop; 797 goto loop;
798 798
799 case 0xE3:{// EX (SP),HL 799 case 0xE3:{// EX (SP),HL
800 int temp = READ_WORD( sp ); 800 int temp = READ_WORD( sp );
801 WRITE_WORD( sp, r.w.hl ); 801 WRITE_WORD( sp, r.w.hl );
802 r.w.hl = temp; 802 r.w.hl = temp;
803 goto loop; 803 goto loop;
804 } 804 }
805 805
806 case 0xEB: // EX DE,HL 806 case 0xEB: // EX DE,HL
807 EX( r.w.hl, r.w.de ); 807 EX( r.w.hl, r.w.de );
808 goto loop; 808 goto loop;
809 809
810 case 0xD9: // EXX DE,HL 810 case 0xD9: // EXX DE,HL
811 EXX( w.bc ); 811 EXX( w.bc );
812 EXX( w.de ); 812 EXX( w.de );
813 EXX( w.hl ); 813 EXX( w.hl );
814 goto loop; 814 goto loop;
815 815
816 case 0xF3: // DI 816 case 0xF3: // DI
817 R.iff1 = 0; 817 R.iff1 = 0;
818 R.iff2 = 0; 818 R.iff2 = 0;
819 goto loop; 819 goto loop;
820 820
821 case 0xFB: // EI 821 case 0xFB: // EI
822 R.iff1 = 1; 822 R.iff1 = 1;
823 R.iff2 = 1; 823 R.iff2 = 1;
824 // TODO: delayed effect 824 // TODO: delayed effect
825 goto loop; 825 goto loop;
826 826
827 case 0x76: // HALT 827 case 0x76: // HALT
828 goto halt; 828 goto halt;
829 829
830//////////////////////////////////////// CB prefix 830//////////////////////////////////////// CB prefix
831 { 831 {
832 case 0xCB: 832 case 0xCB:
833 pc++; 833 pc++;
834 switch ( data ) 834 switch ( data )
835 { 835 {
836 836
837 // Rotate left 837 // Rotate left
838 838
839 #define RLC( read, write ) {\ 839 #define RLC( read, write ) {\
840 int result = read;\ 840 int result = read;\
841 result = BYTE( result << 1 ) + (result >> 7);\ 841 result = BYTE( result << 1 ) + (result >> 7);\
842 flags = SZ28P( result ) + (result & C01);\ 842 flags = SZ28P( result ) + (result & C01);\
843 write;\ 843 write;\
844 goto loop;\ 844 goto loop;\
845 } 845 }
846 846
847 case 0x06: // RLC (HL) 847 case 0x06: // RLC (HL)
848 s_time += 7; 848 s_time += 7;
849 data = r.w.hl; 849 data = r.w.hl;
850 rlc_data_addr: 850 rlc_data_addr:
851 RLC( READ_MEM( data ), WRITE_MEM( data, result ) ) 851 RLC( READ_MEM( data ), WRITE_MEM( data, result ) )
852 852
853 CASE7( 00, 01, 02, 03, 04, 05, 07 ):{// RLC r 853 CASE7( 00, 01, 02, 03, 04, 05, 07 ):{// RLC r
854 byte* reg = &R8( data, 0 ); 854 byte* reg = &R8( data, 0 );
855 RLC( *reg, *reg = result ) 855 RLC( *reg, *reg = result )
856 } 856 }
857 857
858 #define RL( read, write ) {\ 858 #define RL( read, write ) {\
859 int result = (read << 1) + (flags & C01);\ 859 int result = (read << 1) + (flags & C01);\
860 flags = SZ28PC( result );\ 860 flags = SZ28PC( result );\
861 write;\ 861 write;\
862 goto loop;\ 862 goto loop;\
863 } 863 }
864 864
865 case 0x16: // RL (HL) 865 case 0x16: // RL (HL)
866 s_time += 7; 866 s_time += 7;
867 data = r.w.hl; 867 data = r.w.hl;
868 rl_data_addr: 868 rl_data_addr:
869 RL( READ_MEM( data ), WRITE_MEM( data, result ) ) 869 RL( READ_MEM( data ), WRITE_MEM( data, result ) )
870 870
871 CASE7( 10, 11, 12, 13, 14, 15, 17 ):{// RL r 871 CASE7( 10, 11, 12, 13, 14, 15, 17 ):{// RL r
872 byte* reg = &R8( data, 0x10 ); 872 byte* reg = &R8( data, 0x10 );
873 RL( *reg, *reg = result ) 873 RL( *reg, *reg = result )
874 } 874 }
875 875
876 #define SLA( read, low_bit, write ) {\ 876 #define SLA( read, low_bit, write ) {\
877 int result = (read << 1) + low_bit;\ 877 int result = (read << 1) + low_bit;\
878 flags = SZ28PC( result );\ 878 flags = SZ28PC( result );\
879 write;\ 879 write;\
880 goto loop;\ 880 goto loop;\
881 } 881 }
882 882
883 case 0x26: // SLA (HL) 883 case 0x26: // SLA (HL)
884 s_time += 7; 884 s_time += 7;
885 data = r.w.hl; 885 data = r.w.hl;
886 sla_data_addr: 886 sla_data_addr:
887 SLA( READ_MEM( data ), 0, WRITE_MEM( data, result ) ) 887 SLA( READ_MEM( data ), 0, WRITE_MEM( data, result ) )
888 888
889 CASE7( 20, 21, 22, 23, 24, 25, 27 ):{// SLA r 889 CASE7( 20, 21, 22, 23, 24, 25, 27 ):{// SLA r
890 byte* reg = &R8( data, 0x20 ); 890 byte* reg = &R8( data, 0x20 );
891 SLA( *reg, 0, *reg = result ) 891 SLA( *reg, 0, *reg = result )
892 } 892 }
893 893
894 case 0x36: // SLL (HL) 894 case 0x36: // SLL (HL)
895 s_time += 7; 895 s_time += 7;
896 data = r.w.hl; 896 data = r.w.hl;
897 sll_data_addr: 897 sll_data_addr:
898 SLA( READ_MEM( data ), 1, WRITE_MEM( data, result ) ) 898 SLA( READ_MEM( data ), 1, WRITE_MEM( data, result ) )
899 899
900 CASE7( 30, 31, 32, 33, 34, 35, 37 ):{// SLL r 900 CASE7( 30, 31, 32, 33, 34, 35, 37 ):{// SLL r
901 byte* reg = &R8( data, 0x30 ); 901 byte* reg = &R8( data, 0x30 );
902 SLA( *reg, 1, *reg = result ) 902 SLA( *reg, 1, *reg = result )
903 } 903 }
904 904
905 // Rotate right 905 // Rotate right
906 906
907 #define RRC( read, write ) {\ 907 #define RRC( read, write ) {\
908 int result = read;\ 908 int result = read;\
909 flags = result & C01;\ 909 flags = result & C01;\
910 result = BYTE( result << 7 ) + (result >> 1);\ 910 result = BYTE( result << 7 ) + (result >> 1);\
911 flags += SZ28P( result );\ 911 flags += SZ28P( result );\
912 write;\ 912 write;\
913 goto loop;\ 913 goto loop;\
914 } 914 }
915 915
916 case 0x0E: // RRC (HL) 916 case 0x0E: // RRC (HL)
917 s_time += 7; 917 s_time += 7;
918 data = r.w.hl; 918 data = r.w.hl;
919 rrc_data_addr: 919 rrc_data_addr:
920 RRC( READ_MEM( data ), WRITE_MEM( data, result ) ) 920 RRC( READ_MEM( data ), WRITE_MEM( data, result ) )
921 921
922 CASE7( 08, 09, 0A, 0B, 0C, 0D, 0F ):{// RRC r 922 CASE7( 08, 09, 0A, 0B, 0C, 0D, 0F ):{// RRC r
923 byte* reg = &R8( data, 0x08 ); 923 byte* reg = &R8( data, 0x08 );
924 RRC( *reg, *reg = result ) 924 RRC( *reg, *reg = result )
925 } 925 }
926 926
927 #define RR( read, write ) {\ 927 #define RR( read, write ) {\
928 int result = read;\ 928 int result = read;\
929 int temp = result & C01;\ 929 int temp = result & C01;\
930 result = BYTE( flags << 7 ) + (result >> 1);\ 930 result = BYTE( flags << 7 ) + (result >> 1);\
931 flags = SZ28P( result ) + temp;\ 931 flags = SZ28P( result ) + temp;\
932 write;\ 932 write;\
933 goto loop;\ 933 goto loop;\
934 } 934 }
935 935
936 case 0x1E: // RR (HL) 936 case 0x1E: // RR (HL)
937 s_time += 7; 937 s_time += 7;
938 data = r.w.hl; 938 data = r.w.hl;
939 rr_data_addr: 939 rr_data_addr:
940 RR( READ_MEM( data ), WRITE_MEM( data, result ) ) 940 RR( READ_MEM( data ), WRITE_MEM( data, result ) )
941 941
942 CASE7( 18, 19, 1A, 1B, 1C, 1D, 1F ):{// RR r 942 CASE7( 18, 19, 1A, 1B, 1C, 1D, 1F ):{// RR r
943 byte* reg = &R8( data, 0x18 ); 943 byte* reg = &R8( data, 0x18 );
944 RR( *reg, *reg = result ) 944 RR( *reg, *reg = result )
945 } 945 }
946 946
947 #define SRA( read, write ) {\ 947 #define SRA( read, write ) {\
948 int result = read;\ 948 int result = read;\
949 flags = result & C01;\ 949 flags = result & C01;\
950 result = (result & 0x80) + (result >> 1);\ 950 result = (result & 0x80) + (result >> 1);\
951 flags += SZ28P( result );\ 951 flags += SZ28P( result );\
952 write;\ 952 write;\
953 goto loop;\ 953 goto loop;\
954 } 954 }
955 955
956 case 0x2E: // SRA (HL) 956 case 0x2E: // SRA (HL)
957 data = r.w.hl; 957 data = r.w.hl;
958 s_time += 7; 958 s_time += 7;
959 sra_data_addr: 959 sra_data_addr:
960 SRA( READ_MEM( data ), WRITE_MEM( data, result ) ) 960 SRA( READ_MEM( data ), WRITE_MEM( data, result ) )
961 961
962 CASE7( 28, 29, 2A, 2B, 2C, 2D, 2F ):{// SRA r 962 CASE7( 28, 29, 2A, 2B, 2C, 2D, 2F ):{// SRA r
963 byte* reg = &R8( data, 0x28 ); 963 byte* reg = &R8( data, 0x28 );
964 SRA( *reg, *reg = result ) 964 SRA( *reg, *reg = result )
965 } 965 }
966 966
967 #define SRL( read, write ) {\ 967 #define SRL( read, write ) {\
968 int result = read;\ 968 int result = read;\
969 flags = result & C01;\ 969 flags = result & C01;\
970 result >>= 1;\ 970 result >>= 1;\
971 flags += SZ28P( result );\ 971 flags += SZ28P( result );\
972 write;\ 972 write;\
973 goto loop;\ 973 goto loop;\
974 } 974 }
975 975
976 case 0x3E: // SRL (HL) 976 case 0x3E: // SRL (HL)
977 s_time += 7; 977 s_time += 7;
978 data = r.w.hl; 978 data = r.w.hl;
979 srl_data_addr: 979 srl_data_addr:
980 SRL( READ_MEM( data ), WRITE_MEM( data, result ) ) 980 SRL( READ_MEM( data ), WRITE_MEM( data, result ) )
981 981
982 CASE7( 38, 39, 3A, 3B, 3C, 3D, 3F ):{// SRL r 982 CASE7( 38, 39, 3A, 3B, 3C, 3D, 3F ):{// SRL r
983 byte* reg = &R8( data, 0x38 ); 983 byte* reg = &R8( data, 0x38 );
984 SRL( *reg, *reg = result ) 984 SRL( *reg, *reg = result )
985 } 985 }
986 986
987 // BIT 987 // BIT
988 { 988 {
989 int temp; 989 int temp;
990 CASE8( 46, 4E, 56, 5E, 66, 6E, 76, 7E ): // BIT b,(HL) 990 CASE8( 46, 4E, 56, 5E, 66, 6E, 76, 7E ): // BIT b,(HL)
991 s_time += 4; 991 s_time += 4;
992 temp = READ_MEM( r.w.hl ); 992 temp = READ_MEM( r.w.hl );
993 flags &= C01; 993 flags &= C01;
994 goto bit_temp; 994 goto bit_temp;
995 CASE7( 40, 41, 42, 43, 44, 45, 47 ): // BIT 0,r 995 CASE7( 40, 41, 42, 43, 44, 45, 47 ): // BIT 0,r
996 CASE7( 48, 49, 4A, 4B, 4C, 4D, 4F ): // BIT 1,r 996 CASE7( 48, 49, 4A, 4B, 4C, 4D, 4F ): // BIT 1,r
997 CASE7( 50, 51, 52, 53, 54, 55, 57 ): // BIT 2,r 997 CASE7( 50, 51, 52, 53, 54, 55, 57 ): // BIT 2,r
998 CASE7( 58, 59, 5A, 5B, 5C, 5D, 5F ): // BIT 3,r 998 CASE7( 58, 59, 5A, 5B, 5C, 5D, 5F ): // BIT 3,r
999 CASE7( 60, 61, 62, 63, 64, 65, 67 ): // BIT 4,r 999 CASE7( 60, 61, 62, 63, 64, 65, 67 ): // BIT 4,r
1000 CASE7( 68, 69, 6A, 6B, 6C, 6D, 6F ): // BIT 5,r 1000 CASE7( 68, 69, 6A, 6B, 6C, 6D, 6F ): // BIT 5,r
1001 CASE7( 70, 71, 72, 73, 74, 75, 77 ): // BIT 6,r 1001 CASE7( 70, 71, 72, 73, 74, 75, 77 ): // BIT 6,r
1002 CASE7( 78, 79, 7A, 7B, 7C, 7D, 7F ): // BIT 7,r 1002 CASE7( 78, 79, 7A, 7B, 7C, 7D, 7F ): // BIT 7,r
1003 temp = R8( data & 7, 0 ); 1003 temp = R8( data & 7, 0 );
1004 flags = (flags & C01) + (temp & (F20 | F08)); 1004 flags = (flags & C01) + (temp & (F20 | F08));
1005 bit_temp: 1005 bit_temp:
1006 temp = temp & (1 << (data >> 3 & 7)); 1006 temp = temp & (1 << (data >> 3 & 7));
1007 flags += (temp & S80) + H10; 1007 flags += (temp & S80) + H10;
1008 flags += (unsigned) --temp >> 8 & (Z40 | P04); 1008 flags += (unsigned) --temp >> 8 & (Z40 | P04);
1009 goto loop; 1009 goto loop;
1010 } 1010 }
1011 1011
1012 // SET/RES 1012 // SET/RES
1013 CASE8( 86, 8E, 96, 9E, A6, AE, B6, BE ): // RES b,(HL) 1013 CASE8( 86, 8E, 96, 9E, A6, AE, B6, BE ): // RES b,(HL)
1014 CASE8( C6, CE, D6, DE, E6, EE, F6, FE ):{// SET b,(HL) 1014 CASE8( C6, CE, D6, DE, E6, EE, F6, FE ):{// SET b,(HL)
1015 s_time += 7; 1015 s_time += 7;
1016 int temp = READ_MEM( r.w.hl ); 1016 int temp = READ_MEM( r.w.hl );
1017 int bit = 1 << (data >> 3 & 7); 1017 int bit = 1 << (data >> 3 & 7);
1018 temp |= bit; // SET 1018 temp |= bit; // SET
1019 if ( !(data & 0x40) ) 1019 if ( !(data & 0x40) )
1020 temp ^= bit; // RES 1020 temp ^= bit; // RES
1021 WRITE_MEM( r.w.hl, temp ); 1021 WRITE_MEM( r.w.hl, temp );
1022 goto loop; 1022 goto loop;
1023 } 1023 }
1024 1024
1025 CASE7( C0, C1, C2, C3, C4, C5, C7 ): // SET 0,r 1025 CASE7( C0, C1, C2, C3, C4, C5, C7 ): // SET 0,r
1026 CASE7( C8, C9, CA, CB, CC, CD, CF ): // SET 1,r 1026 CASE7( C8, C9, CA, CB, CC, CD, CF ): // SET 1,r
1027 CASE7( D0, D1, D2, D3, D4, D5, D7 ): // SET 2,r 1027 CASE7( D0, D1, D2, D3, D4, D5, D7 ): // SET 2,r
1028 CASE7( D8, D9, DA, DB, DC, DD, DF ): // SET 3,r 1028 CASE7( D8, D9, DA, DB, DC, DD, DF ): // SET 3,r
1029 CASE7( E0, E1, E2, E3, E4, E5, E7 ): // SET 4,r 1029 CASE7( E0, E1, E2, E3, E4, E5, E7 ): // SET 4,r
1030 CASE7( E8, E9, EA, EB, EC, ED, EF ): // SET 5,r 1030 CASE7( E8, E9, EA, EB, EC, ED, EF ): // SET 5,r
1031 CASE7( F0, F1, F2, F3, F4, F5, F7 ): // SET 6,r 1031 CASE7( F0, F1, F2, F3, F4, F5, F7 ): // SET 6,r
1032 CASE7( F8, F9, FA, FB, FC, FD, FF ): // SET 7,r 1032 CASE7( F8, F9, FA, FB, FC, FD, FF ): // SET 7,r
1033 R8( data & 7, 0 ) |= 1 << (data >> 3 & 7); 1033 R8( data & 7, 0 ) |= 1 << (data >> 3 & 7);
1034 goto loop; 1034 goto loop;
1035 1035
1036 CASE7( 80, 81, 82, 83, 84, 85, 87 ): // RES 0,r 1036 CASE7( 80, 81, 82, 83, 84, 85, 87 ): // RES 0,r
1037 CASE7( 88, 89, 8A, 8B, 8C, 8D, 8F ): // RES 1,r 1037 CASE7( 88, 89, 8A, 8B, 8C, 8D, 8F ): // RES 1,r
1038 CASE7( 90, 91, 92, 93, 94, 95, 97 ): // RES 2,r 1038 CASE7( 90, 91, 92, 93, 94, 95, 97 ): // RES 2,r
1039 CASE7( 98, 99, 9A, 9B, 9C, 9D, 9F ): // RES 3,r 1039 CASE7( 98, 99, 9A, 9B, 9C, 9D, 9F ): // RES 3,r
1040 CASE7( A0, A1, A2, A3, A4, A5, A7 ): // RES 4,r 1040 CASE7( A0, A1, A2, A3, A4, A5, A7 ): // RES 4,r
1041 CASE7( A8, A9, AA, AB, AC, AD, AF ): // RES 5,r 1041 CASE7( A8, A9, AA, AB, AC, AD, AF ): // RES 5,r
1042 CASE7( B0, B1, B2, B3, B4, B5, B7 ): // RES 6,r 1042 CASE7( B0, B1, B2, B3, B4, B5, B7 ): // RES 6,r
1043 CASE7( B8, B9, BA, BB, BC, BD, BF ): // RES 7,r 1043 CASE7( B8, B9, BA, BB, BC, BD, BF ): // RES 7,r
1044 R8( data & 7, 0 ) &= ~(1 << (data >> 3 & 7)); 1044 R8( data & 7, 0 ) &= ~(1 << (data >> 3 & 7));
1045 goto loop; 1045 goto loop;
1046 } 1046 }
1047 assert( false ); 1047 assert( false );
1048 } 1048 }
1049 1049
1050#undef GET_ADDR 1050#undef GET_ADDR
1051#define GET_ADDR() GET_LE16( &INSTR( 1, pc ) ) 1051#define GET_ADDR() GET_LE16( &INSTR( 1, pc ) )
1052 1052
1053//////////////////////////////////////// ED prefix 1053//////////////////////////////////////// ED prefix
1054 { 1054 {
1055 case 0xED: 1055 case 0xED:
1056 pc++; 1056 pc++;
1057 s_time += (clock_table + 256) [data] >> 4; 1057 s_time += (clock_table + 256) [data] >> 4;
1058 switch ( data ) 1058 switch ( data )
1059 { 1059 {
1060 { 1060 {
1061 int temp; 1061 int temp;
1062 case 0x72: // SBC HL,SP 1062 case 0x72: // SBC HL,SP
1063 case 0x7A: // ADC HL,SP 1063 case 0x7A: // ADC HL,SP
1064 temp = sp; 1064 temp = sp;
1065 if ( 0 ) 1065 if ( 0 )
1066 case 0x42: // SBC HL,BC 1066 case 0x42: // SBC HL,BC
1067 case 0x52: // SBC HL,DE 1067 case 0x52: // SBC HL,DE
1068 case 0x62: // SBC HL,HL 1068 case 0x62: // SBC HL,HL
1069 case 0x4A: // ADC HL,BC 1069 case 0x4A: // ADC HL,BC
1070 case 0x5A: // ADC HL,DE 1070 case 0x5A: // ADC HL,DE
1071 case 0x6A: // ADC HL,HL 1071 case 0x6A: // ADC HL,HL
1072 temp = R16( data >> 3 & 6, 1, 0 ); 1072 temp = R16( data >> 3 & 6, 1, 0 );
1073 int sum = temp + (flags & C01); 1073 int sum = temp + (flags & C01);
1074 flags = ~data >> 2 & N02; 1074 flags = ~data >> 2 & N02;
1075 if ( flags ) 1075 if ( flags )
1076 sum = -sum; 1076 sum = -sum;
1077 sum += r.w.hl; 1077 sum += r.w.hl;
1078 temp ^= r.w.hl; 1078 temp ^= r.w.hl;
1079 temp ^= sum; 1079 temp ^= sum;
1080 flags +=(sum >> 16 & C01) + 1080 flags +=(sum >> 16 & C01) +
1081 (temp >> 8 & H10) + 1081 (temp >> 8 & H10) +
1082 (sum >> 8 & (S80 | F20 | F08)) + 1082 (sum >> 8 & (S80 | F20 | F08)) +
1083 ((temp + 0x8000) >> 14 & V04); 1083 ((temp + 0x8000) >> 14 & V04);
1084 r.w.hl = sum; 1084 r.w.hl = sum;
1085 if ( WORD( sum ) ) 1085 if ( WORD( sum ) )
1086 goto loop; 1086 goto loop;
1087 flags += Z40; 1087 flags += Z40;
1088 goto loop; 1088 goto loop;
1089 } 1089 }
1090 1090
1091 CASE8( 40, 48, 50, 58, 60, 68, 70, 78 ):{// IN r,(C) 1091 CASE8( 40, 48, 50, 58, 60, 68, 70, 78 ):{// IN r,(C)
1092 int temp = IN_PORT( r.w.bc ); 1092 int temp = IN_PORT( r.w.bc );
1093 R8( data >> 3, 8 ) = temp; 1093 R8( data >> 3, 8 ) = temp;
1094 flags = (flags & C01) + SZ28P( temp ); 1094 flags = (flags & C01) + SZ28P( temp );
1095 goto loop; 1095 goto loop;
1096 } 1096 }
1097 1097
1098 case 0x71: // OUT (C),0 1098 case 0x71: // OUT (C),0
1099 r.b.flags = 0; 1099 r.b.flags = 0;
1100 CASE7( 41, 49, 51, 59, 61, 69, 79 ): // OUT (C),r 1100 CASE7( 41, 49, 51, 59, 61, 69, 79 ): // OUT (C),r
1101 OUT_PORT( r.w.bc, R8( data >> 3, 8 ) ); 1101 OUT_PORT( r.w.bc, R8( data >> 3, 8 ) );
1102 goto loop; 1102 goto loop;
1103 1103
1104 { 1104 {
1105 int temp; 1105 int temp;
1106 case 0x73: // LD (ADDR),SP 1106 case 0x73: // LD (ADDR),SP
1107 temp = sp; 1107 temp = sp;
1108 if ( 0 ) 1108 if ( 0 )
1109 case 0x43: // LD (ADDR),BC 1109 case 0x43: // LD (ADDR),BC
1110 case 0x53: // LD (ADDR),DE 1110 case 0x53: // LD (ADDR),DE
1111 temp = R16( data, 4, 0x43 ); 1111 temp = R16( data, 4, 0x43 );
1112 int addr = GET_ADDR(); 1112 int addr = GET_ADDR();
1113 pc += 2; 1113 pc += 2;
1114 WRITE_WORD( addr, temp ); 1114 WRITE_WORD( addr, temp );
1115 goto loop; 1115 goto loop;
1116 } 1116 }
1117 1117
1118 case 0x4B: // LD BC,(ADDR) 1118 case 0x4B: // LD BC,(ADDR)
1119 case 0x5B:{// LD DE,(ADDR) 1119 case 0x5B:{// LD DE,(ADDR)
1120 int addr = GET_ADDR(); 1120 int addr = GET_ADDR();
1121 pc += 2; 1121 pc += 2;
1122 R16( data, 4, 0x4B ) = READ_WORD( addr ); 1122 R16( data, 4, 0x4B ) = READ_WORD( addr );
1123 goto loop; 1123 goto loop;
1124 } 1124 }
1125 1125
1126 case 0x7B:{// LD SP,(ADDR) 1126 case 0x7B:{// LD SP,(ADDR)
1127 int addr = GET_ADDR(); 1127 int addr = GET_ADDR();
1128 pc += 2; 1128 pc += 2;
1129 sp = READ_WORD( addr ); 1129 sp = READ_WORD( addr );
1130 goto loop; 1130 goto loop;
1131 } 1131 }
1132 1132
1133 case 0x67:{// RRD 1133 case 0x67:{// RRD
1134 int temp = READ_MEM( r.w.hl ); 1134 int temp = READ_MEM( r.w.hl );
1135 WRITE_MEM( r.w.hl, ((r.b.a << 4) + (temp >> 4)) ); 1135 WRITE_MEM( r.w.hl, ((r.b.a << 4) + (temp >> 4)) );
1136 temp = (r.b.a & 0xF0) + (temp & 0x0F); 1136 temp = (r.b.a & 0xF0) + (temp & 0x0F);
1137 flags = (flags & C01) + SZ28P( temp ); 1137 flags = (flags & C01) + SZ28P( temp );
1138 r.b.a = temp; 1138 r.b.a = temp;
1139 goto loop; 1139 goto loop;
1140 } 1140 }
1141 1141
1142 case 0x6F:{// RLD 1142 case 0x6F:{// RLD
1143 int temp = READ_MEM( r.w.hl ); 1143 int temp = READ_MEM( r.w.hl );
1144 WRITE_MEM( r.w.hl, ((temp << 4) + (r.b.a & 0x0F)) ); 1144 WRITE_MEM( r.w.hl, ((temp << 4) + (r.b.a & 0x0F)) );
1145 temp = (r.b.a & 0xF0) + (temp >> 4); 1145 temp = (r.b.a & 0xF0) + (temp >> 4);
1146 flags = (flags & C01) + SZ28P( temp ); 1146 flags = (flags & C01) + SZ28P( temp );
1147 r.b.a = temp; 1147 r.b.a = temp;
1148 goto loop; 1148 goto loop;
1149 } 1149 }
1150 1150
1151 CASE8( 44, 4C, 54, 5C, 64, 6C, 74, 7C ): // NEG 1151 CASE8( 44, 4C, 54, 5C, 64, 6C, 74, 7C ): // NEG
1152 opcode = 0x10; // flag to do SBC instead of ADC 1152 opcode = 0x10; // flag to do SBC instead of ADC
1153 flags &= ~C01; 1153 flags &= ~C01;
1154 data = r.b.a; 1154 data = r.b.a;
1155 r.b.a = 0; 1155 r.b.a = 0;
1156 goto adc_data; 1156 goto adc_data;
1157 1157
1158 { 1158 {
1159 int inc; 1159 int inc;
1160 case 0xA9: // CPD 1160 case 0xA9: // CPD
1161 case 0xB9: // CPDR 1161 case 0xB9: // CPDR
1162 inc = -1; 1162 inc = -1;
1163 if ( 0 ) 1163 if ( 0 )
1164 case 0xA1: // CPI 1164 case 0xA1: // CPI
1165 case 0xB1: // CPIR 1165 case 0xB1: // CPIR
1166 inc = +1; 1166 inc = +1;
1167 int addr = r.w.hl; 1167 int addr = r.w.hl;
1168 r.w.hl = addr + inc; 1168 r.w.hl = addr + inc;
1169 int temp = READ_MEM( addr ); 1169 int temp = READ_MEM( addr );
1170 1170
1171 int result = r.b.a - temp; 1171 int result = r.b.a - temp;
1172 flags = (flags & C01) + N02 + 1172 flags = (flags & C01) + N02 +
1173 ((((temp ^ r.b.a) & H10) ^ result) & (S80 | H10)); 1173 ((((temp ^ r.b.a) & H10) ^ result) & (S80 | H10));
1174 1174
1175 if ( !BYTE( result ) ) 1175 if ( !BYTE( result ) )
1176 flags += Z40; 1176 flags += Z40;
1177 result -= (flags & H10) >> 4; 1177 result -= (flags & H10) >> 4;
1178 flags += result & F08; 1178 flags += result & F08;
1179 flags += result << 4 & F20; 1179 flags += result << 4 & F20;
1180 if ( !--r.w.bc ) 1180 if ( !--r.w.bc )
1181 goto loop; 1181 goto loop;
1182 1182
1183 flags += V04; 1183 flags += V04;
1184 if ( flags & Z40 || data < 0xB0 ) 1184 if ( flags & Z40 || data < 0xB0 )
1185 goto loop; 1185 goto loop;
1186 1186
1187 pc -= 2; 1187 pc -= 2;
1188 s_time += 5; 1188 s_time += 5;
1189 goto loop; 1189 goto loop;
1190 } 1190 }
1191 1191
1192 { 1192 {
1193 int inc; 1193 int inc;
1194 case 0xA8: // LDD 1194 case 0xA8: // LDD
1195 case 0xB8: // LDDR 1195 case 0xB8: // LDDR
1196 inc = -1; 1196 inc = -1;
1197 if ( 0 ) 1197 if ( 0 )
1198 case 0xA0: // LDI 1198 case 0xA0: // LDI
1199 case 0xB0: // LDIR 1199 case 0xB0: // LDIR
1200 inc = +1; 1200 inc = +1;
1201 int addr = r.w.hl; 1201 int addr = r.w.hl;
1202 r.w.hl = addr + inc; 1202 r.w.hl = addr + inc;
1203 int temp = READ_MEM( addr ); 1203 int temp = READ_MEM( addr );
1204 1204
1205 addr = r.w.de; 1205 addr = r.w.de;
1206 r.w.de = addr + inc; 1206 r.w.de = addr + inc;
1207 WRITE_MEM( addr, temp ); 1207 WRITE_MEM( addr, temp );
1208 1208
1209 temp += r.b.a; 1209 temp += r.b.a;
1210 flags = (flags & (S80 | Z40 | C01)) + 1210 flags = (flags & (S80 | Z40 | C01)) +
1211 (temp & F08) + (temp << 4 & F20); 1211 (temp & F08) + (temp << 4 & F20);
1212 if ( !--r.w.bc ) 1212 if ( !--r.w.bc )
1213 goto loop; 1213 goto loop;
1214 1214
1215 flags += V04; 1215 flags += V04;
1216 if ( data < 0xB0 ) 1216 if ( data < 0xB0 )
1217 goto loop; 1217 goto loop;
1218 1218
1219 pc -= 2; 1219 pc -= 2;
1220 s_time += 5; 1220 s_time += 5;
1221 goto loop; 1221 goto loop;
1222 } 1222 }
1223 1223
1224 { 1224 {
1225 int inc; 1225 int inc;
1226 case 0xAB: // OUTD 1226 case 0xAB: // OUTD
1227 case 0xBB: // OTDR 1227 case 0xBB: // OTDR
1228 inc = -1; 1228 inc = -1;
1229 if ( 0 ) 1229 if ( 0 )
1230 case 0xA3: // OUTI 1230 case 0xA3: // OUTI
1231 case 0xB3: // OTIR 1231 case 0xB3: // OTIR
1232 inc = +1; 1232 inc = +1;
1233 int addr = r.w.hl; 1233 int addr = r.w.hl;
1234 r.w.hl = addr + inc; 1234 r.w.hl = addr + inc;
1235 int temp = READ_MEM( addr ); 1235 int temp = READ_MEM( addr );
1236 1236
1237 int b = --r.b.b; 1237 int b = --r.b.b;
1238 flags = (temp >> 6 & N02) + SZ28( b ); 1238 flags = (temp >> 6 & N02) + SZ28( b );
1239 if ( b && data >= 0xB0 ) 1239 if ( b && data >= 0xB0 )
1240 { 1240 {
1241 pc -= 2; 1241 pc -= 2;
1242 s_time += 5; 1242 s_time += 5;
1243 } 1243 }
1244 1244
1245 OUT_PORT( r.w.bc, temp ); 1245 OUT_PORT( r.w.bc, temp );
1246 goto loop; 1246 goto loop;
1247 } 1247 }
1248 1248
1249 { 1249 {
1250 int inc; 1250 int inc;
1251 case 0xAA: // IND 1251 case 0xAA: // IND
1252 case 0xBA: // INDR 1252 case 0xBA: // INDR
1253 inc = -1; 1253 inc = -1;
1254 if ( 0 ) 1254 if ( 0 )
1255 case 0xA2: // INI 1255 case 0xA2: // INI
1256 case 0xB2: // INIR 1256 case 0xB2: // INIR
1257 inc = +1; 1257 inc = +1;
1258 1258
1259 int addr = r.w.hl; 1259 int addr = r.w.hl;
1260 r.w.hl = addr + inc; 1260 r.w.hl = addr + inc;
1261 1261
1262 int temp = IN_PORT( r.w.bc ); 1262 int temp = IN_PORT( r.w.bc );
1263 1263
1264 int b = --r.b.b; 1264 int b = --r.b.b;
1265 flags = (temp >> 6 & N02) + SZ28( b ); 1265 flags = (temp >> 6 & N02) + SZ28( b );
1266 if ( b && data >= 0xB0 ) 1266 if ( b && data >= 0xB0 )
1267 { 1267 {
1268 pc -= 2; 1268 pc -= 2;
1269 s_time += 5; 1269 s_time += 5;
1270 } 1270 }
1271 1271
1272 WRITE_MEM( addr, temp ); 1272 WRITE_MEM( addr, temp );
1273 goto loop; 1273 goto loop;
1274 } 1274 }
1275 1275
1276 case 0x47: // LD I,A 1276 case 0x47: // LD I,A
1277 R.i = r.b.a; 1277 R.i = r.b.a;
1278 goto loop; 1278 goto loop;
1279 1279
1280 case 0x4F: // LD R,A 1280 case 0x4F: // LD R,A
1281 SET_R( r.b.a ); 1281 SET_R( r.b.a );
1282 dprintf( "LD R,A not supported\n" ); 1282 dprintf( "LD R,A not supported\n" );
1283 warning = true; 1283 warning = true;
1284 goto loop; 1284 goto loop;
1285 1285
1286 case 0x57: // LD A,I 1286 case 0x57: // LD A,I
1287 r.b.a = R.i; 1287 r.b.a = R.i;
1288 goto ld_ai_common; 1288 goto ld_ai_common;
1289 1289
1290 case 0x5F: // LD A,R 1290 case 0x5F: // LD A,R
1291 r.b.a = GET_R(); 1291 r.b.a = GET_R();
1292 dprintf( "LD A,R not supported\n" ); 1292 dprintf( "LD A,R not supported\n" );
1293 warning = true; 1293 warning = true;
1294 ld_ai_common: 1294 ld_ai_common:
1295 flags = (flags & C01) + SZ28( r.b.a ) + (R.iff2 << 2 & V04); 1295 flags = (flags & C01) + SZ28( r.b.a ) + (R.iff2 << 2 & V04);
1296 goto loop; 1296 goto loop;
1297 1297
1298 CASE8( 45, 4D, 55, 5D, 65, 6D, 75, 7D ): // RETI/RETN 1298 CASE8( 45, 4D, 55, 5D, 65, 6D, 75, 7D ): // RETI/RETN
1299 R.iff1 = R.iff2; 1299 R.iff1 = R.iff2;
1300 goto ret_taken; 1300 goto ret_taken;
1301 1301
1302 case 0x46: case 0x4E: case 0x66: case 0x6E: // IM 0 1302 case 0x46: case 0x4E: case 0x66: case 0x6E: // IM 0
1303 R.im = 0; 1303 R.im = 0;
1304 goto loop; 1304 goto loop;
1305 1305
1306 case 0x56: case 0x76: // IM 1 1306 case 0x56: case 0x76: // IM 1
1307 R.im = 1; 1307 R.im = 1;
1308 goto loop; 1308 goto loop;
1309 1309
1310 case 0x5E: case 0x7E: // IM 2 1310 case 0x5E: case 0x7E: // IM 2
1311 R.im = 2; 1311 R.im = 2;
1312 goto loop; 1312 goto loop;
1313 1313
1314 default: 1314 default:
1315 dprintf( "Opcode $ED $%02X not supported\n", data ); 1315 dprintf( "Opcode $ED $%02X not supported\n", data );
1316 warning = true; 1316 warning = true;
1317 goto loop; 1317 goto loop;
1318 } 1318 }
1319 assert( false ); 1319 assert( false );
1320 } 1320 }
1321 1321
1322//////////////////////////////////////// DD/FD prefix 1322//////////////////////////////////////// DD/FD prefix
1323 { 1323 {
1324 int ixy; 1324 int ixy;
1325 case 0xDD: 1325 case 0xDD:
1326 ixy = ix; 1326 ixy = ix;
1327 goto ix_prefix; 1327 goto ix_prefix;
1328 case 0xFD: 1328 case 0xFD:
1329 ixy = iy; 1329 ixy = iy;
1330 ix_prefix: 1330 ix_prefix:
1331 pc++; 1331 pc++;
1332 int data2 = READ_CODE( pc ); 1332 int data2 = READ_CODE( pc );
1333 s_time += (clock_table + 256) [data] & 0x0F; 1333 s_time += (clock_table + 256) [data] & 0x0F;
1334 switch ( data ) 1334 switch ( data )
1335 { 1335 {
1336 // TODO: more efficient way of avoid negative address 1336 // TODO: more efficient way of avoid negative address
1337 // TODO: avoid using this as argument to READ_MEM() since it is evaluated twice 1337 // TODO: avoid using this as argument to READ_MEM() since it is evaluated twice
1338 #define IXY_DISP( ixy, disp ) WORD( (ixy ) + (disp)) 1338 #define IXY_DISP( ixy, disp ) WORD( (ixy ) + (disp))
1339 1339
1340 #define SET_IXY( in ) if ( opcode == 0xDD ) ix = in; else iy = in; 1340 #define SET_IXY( in ) if ( opcode == 0xDD ) ix = in; else iy = in;
1341 1341
1342 // ADD/ADC/SUB/SBC 1342 // ADD/ADC/SUB/SBC
1343 1343
1344 case 0x96: // SUB (IXY+disp) 1344 case 0x96: // SUB (IXY+disp)
1345 case 0x86: // ADD (IXY+disp) 1345 case 0x86: // ADD (IXY+disp)
1346 flags &= ~C01; 1346 flags &= ~C01;
1347 case 0x9E: // SBC (IXY+disp) 1347 case 0x9E: // SBC (IXY+disp)
1348 case 0x8E: // ADC (IXY+disp) 1348 case 0x8E: // ADC (IXY+disp)
1349 pc++; 1349 pc++;
1350 opcode = data; 1350 opcode = data;
1351 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) ); 1351 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) );
1352 goto adc_data; 1352 goto adc_data;
1353 1353
1354 case 0x94: // SUB HXY 1354 case 0x94: // SUB HXY
1355 case 0x84: // ADD HXY 1355 case 0x84: // ADD HXY
1356 flags &= ~C01; 1356 flags &= ~C01;
1357 case 0x9C: // SBC HXY 1357 case 0x9C: // SBC HXY
1358 case 0x8C: // ADC HXY 1358 case 0x8C: // ADC HXY
1359 opcode = data; 1359 opcode = data;
1360 data = ixy >> 8; 1360 data = ixy >> 8;
1361 goto adc_data; 1361 goto adc_data;
1362 1362
1363 case 0x95: // SUB LXY 1363 case 0x95: // SUB LXY
1364 case 0x85: // ADD LXY 1364 case 0x85: // ADD LXY
1365 flags &= ~C01; 1365 flags &= ~C01;
1366 case 0x9D: // SBC LXY 1366 case 0x9D: // SBC LXY
1367 case 0x8D: // ADC LXY 1367 case 0x8D: // ADC LXY
1368 opcode = data; 1368 opcode = data;
1369 data = BYTE( ixy ); 1369 data = BYTE( ixy );
1370 goto adc_data; 1370 goto adc_data;
1371 1371
1372 { 1372 {
1373 int temp; 1373 int temp;
1374 case 0x39: // ADD IXY,SP 1374 case 0x39: // ADD IXY,SP
1375 temp = sp; 1375 temp = sp;
1376 goto add_ixy_data; 1376 goto add_ixy_data;
1377 1377
1378 case 0x29: // ADD IXY,HL 1378 case 0x29: // ADD IXY,HL
1379 temp = ixy; 1379 temp = ixy;
1380 goto add_ixy_data; 1380 goto add_ixy_data;
1381 1381
1382 case 0x09: // ADD IXY,BC 1382 case 0x09: // ADD IXY,BC
1383 case 0x19: // ADD IXY,DE 1383 case 0x19: // ADD IXY,DE
1384 temp = R16( data, 4, 0x09 ); 1384 temp = R16( data, 4, 0x09 );
1385 add_ixy_data: { 1385 add_ixy_data: {
1386 int sum = ixy + temp; 1386 int sum = ixy + temp;
1387 temp ^= ixy; 1387 temp ^= ixy;
1388 ixy = WORD( sum ); 1388 ixy = WORD( sum );
1389 flags = (flags & (S80 | Z40 | V04)) + 1389 flags = (flags & (S80 | Z40 | V04)) +
1390 (sum >> 16) + 1390 (sum >> 16) +
1391 (sum >> 8 & (F20 | F08)) + 1391 (sum >> 8 & (F20 | F08)) +
1392 ((temp ^ sum) >> 8 & H10); 1392 ((temp ^ sum) >> 8 & H10);
1393 goto set_ixy; 1393 goto set_ixy;
1394 } 1394 }
1395 } 1395 }
1396 1396
1397 // AND 1397 // AND
1398 case 0xA6: // AND (IXY+disp) 1398 case 0xA6: // AND (IXY+disp)
1399 pc++; 1399 pc++;
1400 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) ); 1400 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) );
1401 goto and_data; 1401 goto and_data;
1402 1402
1403 case 0xA4: // AND HXY 1403 case 0xA4: // AND HXY
1404 data = ixy >> 8; 1404 data = ixy >> 8;
1405 goto and_data; 1405 goto and_data;
1406 1406
1407 case 0xA5: // AND LXY 1407 case 0xA5: // AND LXY
1408 data = BYTE( ixy ); 1408 data = BYTE( ixy );
1409 goto and_data; 1409 goto and_data;
1410 1410
1411 // OR 1411 // OR
1412 case 0xB6: // OR (IXY+disp) 1412 case 0xB6: // OR (IXY+disp)
1413 pc++; 1413 pc++;
1414 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) ); 1414 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) );
1415 goto or_data; 1415 goto or_data;
1416 1416
1417 case 0xB4: // OR HXY 1417 case 0xB4: // OR HXY
1418 data = ixy >> 8; 1418 data = ixy >> 8;
1419 goto or_data; 1419 goto or_data;
1420 1420
1421 case 0xB5: // OR LXY 1421 case 0xB5: // OR LXY
1422 data = BYTE( ixy ); 1422 data = BYTE( ixy );
1423 goto or_data; 1423 goto or_data;
1424 1424
1425 // XOR 1425 // XOR
1426 case 0xAE: // XOR (IXY+disp) 1426 case 0xAE: // XOR (IXY+disp)
1427 pc++; 1427 pc++;
1428 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) ); 1428 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) );
1429 goto xor_data; 1429 goto xor_data;
1430 1430
1431 case 0xAC: // XOR HXY 1431 case 0xAC: // XOR HXY
1432 data = ixy >> 8; 1432 data = ixy >> 8;
1433 goto xor_data; 1433 goto xor_data;
1434 1434
1435 case 0xAD: // XOR LXY 1435 case 0xAD: // XOR LXY
1436 data = BYTE( ixy ); 1436 data = BYTE( ixy );
1437 goto xor_data; 1437 goto xor_data;
1438 1438
1439 // CP 1439 // CP
1440 case 0xBE: // CP (IXY+disp) 1440 case 0xBE: // CP (IXY+disp)
1441 pc++; 1441 pc++;
1442 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) ); 1442 data = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) );
1443 goto cp_data; 1443 goto cp_data;
1444 1444
1445 case 0xBC: // CP HXY 1445 case 0xBC: // CP HXY
1446 data = ixy >> 8; 1446 data = ixy >> 8;
1447 goto cp_data; 1447 goto cp_data;
1448 1448
1449 case 0xBD: // CP LXY 1449 case 0xBD: // CP LXY
1450 data = BYTE( ixy ); 1450 data = BYTE( ixy );
1451 goto cp_data; 1451 goto cp_data;
1452 1452
1453 // LD 1453 // LD
1454 CASE7( 70, 71, 72, 73, 74, 75, 77 ): // LD (IXY+disp),r 1454 CASE7( 70, 71, 72, 73, 74, 75, 77 ): // LD (IXY+disp),r
1455 data = R8( data, 0x70 ); 1455 data = R8( data, 0x70 );
1456 if ( 0 ) 1456 if ( 0 )
1457 case 0x36: // LD (IXY+disp),imm 1457 case 0x36: // LD (IXY+disp),imm
1458 pc++, data = READ_CODE( pc ); 1458 pc++, data = READ_CODE( pc );
1459 pc++; 1459 pc++;
1460 WRITE_MEM( IXY_DISP( ixy, SBYTE( data2 ) ), data ); 1460 WRITE_MEM( IXY_DISP( ixy, SBYTE( data2 ) ), data );
1461 goto loop; 1461 goto loop;
1462 1462
1463 CASE5( 44, 4C, 54, 5C, 7C ): // LD r,HXY 1463 CASE5( 44, 4C, 54, 5C, 7C ): // LD r,HXY
1464 R8( data >> 3, 8 ) = ixy >> 8; 1464 R8( data >> 3, 8 ) = ixy >> 8;
1465 goto loop; 1465 goto loop;
1466 1466
1467 case 0x64: // LD HXY,HXY 1467 case 0x64: // LD HXY,HXY
1468 case 0x6D: // LD LXY,LXY 1468 case 0x6D: // LD LXY,LXY
1469 goto loop; 1469 goto loop;
1470 1470
1471 CASE5( 45, 4D, 55, 5D, 7D ): // LD r,LXY 1471 CASE5( 45, 4D, 55, 5D, 7D ): // LD r,LXY
1472 R8( data >> 3, 8 ) = ixy; 1472 R8( data >> 3, 8 ) = ixy;
1473 goto loop; 1473 goto loop;
1474 1474
1475 CASE7( 46, 4E, 56, 5E, 66, 6E, 7E ): // LD r,(IXY+disp) 1475 CASE7( 46, 4E, 56, 5E, 66, 6E, 7E ): // LD r,(IXY+disp)
1476 pc++; 1476 pc++;
1477 R8( data >> 3, 8 ) = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) ); 1477 R8( data >> 3, 8 ) = READ_MEM( IXY_DISP( ixy, SBYTE( data2 ) ) );
1478 goto loop; 1478 goto loop;
1479 1479
1480 case 0x26: // LD HXY,imm 1480 case 0x26: // LD HXY,imm
1481 pc++; 1481 pc++;
1482 goto ld_hxy_data; 1482 goto ld_hxy_data;
1483 1483
1484 case 0x65: // LD HXY,LXY 1484 case 0x65: // LD HXY,LXY
1485 data2 = BYTE( ixy ); 1485 data2 = BYTE( ixy );
1486 goto ld_hxy_data; 1486 goto ld_hxy_data;
1487 1487
1488 CASE5( 60, 61, 62, 63, 67 ): // LD HXY,r 1488 CASE5( 60, 61, 62, 63, 67 ): // LD HXY,r
1489 data2 = R8( data, 0x60 ); 1489 data2 = R8( data, 0x60 );
1490 ld_hxy_data: 1490 ld_hxy_data:
1491 ixy = BYTE( ixy ) + (data2 << 8); 1491 ixy = BYTE( ixy ) + (data2 << 8);
1492 goto set_ixy; 1492 goto set_ixy;
1493 1493
1494 case 0x2E: // LD LXY,imm 1494 case 0x2E: // LD LXY,imm
1495 pc++; 1495 pc++;
1496 goto ld_lxy_data; 1496 goto ld_lxy_data;
1497 1497
1498 case 0x6C: // LD LXY,HXY 1498 case 0x6C: // LD LXY,HXY
1499 data2 = ixy >> 8; 1499 data2 = ixy >> 8;
1500 goto ld_lxy_data; 1500 goto ld_lxy_data;
1501 1501
1502 CASE5( 68, 69, 6A, 6B, 6F ): // LD LXY,r 1502 CASE5( 68, 69, 6A, 6B, 6F ): // LD LXY,r
1503 data2 = R8( data, 0x68 ); 1503 data2 = R8( data, 0x68 );
1504 ld_lxy_data: 1504 ld_lxy_data:
1505 ixy = (ixy & 0xFF00) + data2; 1505 ixy = (ixy & 0xFF00) + data2;
1506 set_ixy: 1506 set_ixy:
1507 if ( opcode == 0xDD ) 1507 if ( opcode == 0xDD )
1508 { 1508 {
1509 ix = ixy; 1509 ix = ixy;
1510 goto loop; 1510 goto loop;
1511 } 1511 }
1512 iy = ixy; 1512 iy = ixy;
1513 goto loop; 1513 goto loop;
1514 1514
1515 case 0xF9: // LD SP,IXY 1515 case 0xF9: // LD SP,IXY
1516 sp = ixy; 1516 sp = ixy;
1517 goto loop; 1517 goto loop;
1518 1518
1519 case 0x22:{// LD (ADDR),IXY 1519 case 0x22:{// LD (ADDR),IXY
1520 int addr = GET_ADDR(); 1520 int addr = GET_ADDR();
1521 pc += 2; 1521 pc += 2;
1522 WRITE_WORD( addr, ixy ); 1522 WRITE_WORD( addr, ixy );
1523 goto loop; 1523 goto loop;
1524 } 1524 }
1525 1525
1526 case 0x21: // LD IXY,imm 1526 case 0x21: // LD IXY,imm
1527 ixy = GET_ADDR(); 1527 ixy = GET_ADDR();
1528 pc += 2; 1528 pc += 2;
1529 goto set_ixy; 1529 goto set_ixy;
1530 1530
1531 case 0x2A:{// LD IXY,(addr) 1531 case 0x2A:{// LD IXY,(addr)
1532 int addr = GET_ADDR(); 1532 int addr = GET_ADDR();
1533 ixy = READ_WORD( addr ); 1533 ixy = READ_WORD( addr );
1534 pc += 2; 1534 pc += 2;
1535 goto set_ixy; 1535 goto set_ixy;
1536 } 1536 }
1537 1537
1538 // DD/FD CB prefix 1538 // DD/FD CB prefix
1539 case 0xCB: { 1539 case 0xCB: {
1540 data = IXY_DISP( ixy, SBYTE( data2 ) ); 1540 data = IXY_DISP( ixy, SBYTE( data2 ) );
1541 pc++; 1541 pc++;
1542 data2 = READ_CODE( pc ); 1542 data2 = READ_CODE( pc );
1543 pc++; 1543 pc++;
1544 switch ( data2 ) 1544 switch ( data2 )
1545 { 1545 {
1546 case 0x06: goto rlc_data_addr; // RLC (IXY) 1546 case 0x06: goto rlc_data_addr; // RLC (IXY)
1547 case 0x16: goto rl_data_addr; // RL (IXY) 1547 case 0x16: goto rl_data_addr; // RL (IXY)
1548 case 0x26: goto sla_data_addr; // SLA (IXY) 1548 case 0x26: goto sla_data_addr; // SLA (IXY)
1549 case 0x36: goto sll_data_addr; // SLL (IXY) 1549 case 0x36: goto sll_data_addr; // SLL (IXY)
1550 case 0x0E: goto rrc_data_addr; // RRC (IXY) 1550 case 0x0E: goto rrc_data_addr; // RRC (IXY)
1551 case 0x1E: goto rr_data_addr; // RR (IXY) 1551 case 0x1E: goto rr_data_addr; // RR (IXY)
1552 case 0x2E: goto sra_data_addr; // SRA (IXY) 1552 case 0x2E: goto sra_data_addr; // SRA (IXY)
1553 case 0x3E: goto srl_data_addr; // SRL (IXY) 1553 case 0x3E: goto srl_data_addr; // SRL (IXY)
1554 1554
1555 CASE8( 46, 4E, 56, 5E, 66, 6E, 76, 7E ):{// BIT b,(IXY+disp) 1555 CASE8( 46, 4E, 56, 5E, 66, 6E, 76, 7E ):{// BIT b,(IXY+disp)
1556 int temp = READ_MEM( data ); 1556 int temp = READ_MEM( data );
1557 temp = temp & (1 << (data2 >> 3 & 7)); 1557 temp = temp & (1 << (data2 >> 3 & 7));
1558 flags = (flags & C01) + H10 + (temp & S80); 1558 flags = (flags & C01) + H10 + (temp & S80);
1559 flags += (unsigned) --temp >> 8 & (Z40 | P04); 1559 flags += (unsigned) --temp >> 8 & (Z40 | P04);
1560 goto loop; 1560 goto loop;
1561 } 1561 }
1562 1562
1563 CASE8( 86, 8E, 96, 9E, A6, AE, B6, BE ): // RES b,(IXY+disp) 1563 CASE8( 86, 8E, 96, 9E, A6, AE, B6, BE ): // RES b,(IXY+disp)
1564 CASE8( C6, CE, D6, DE, E6, EE, F6, FE ):{// SET b,(IXY+disp) 1564 CASE8( C6, CE, D6, DE, E6, EE, F6, FE ):{// SET b,(IXY+disp)
1565 int temp = READ_MEM( data ); 1565 int temp = READ_MEM( data );
1566 int bit = 1 << (data2 >> 3 & 7); 1566 int bit = 1 << (data2 >> 3 & 7);
1567 temp |= bit; // SET 1567 temp |= bit; // SET
1568 if ( !(data2 & 0x40) ) 1568 if ( !(data2 & 0x40) )
1569 temp ^= bit; // RES 1569 temp ^= bit; // RES
1570 WRITE_MEM( data, temp ); 1570 WRITE_MEM( data, temp );
1571 goto loop; 1571 goto loop;
1572 } 1572 }
1573 1573
1574 default: 1574 default:
1575 dprintf( "Opcode $%02X $CB $%02X not supported\n", opcode, data2 ); 1575 dprintf( "Opcode $%02X $CB $%02X not supported\n", opcode, data2 );
1576 warning = true; 1576 warning = true;
1577 goto loop; 1577 goto loop;
1578 } 1578 }
1579 assert( false ); 1579 assert( false );
1580 } 1580 }
1581 1581
1582 // INC/DEC 1582 // INC/DEC
1583 case 0x23: // INC IXY 1583 case 0x23: // INC IXY
1584 ixy = WORD( ixy + 1 ); 1584 ixy = WORD( ixy + 1 );
1585 goto set_ixy; 1585 goto set_ixy;
1586 1586
1587 case 0x2B: // DEC IXY 1587 case 0x2B: // DEC IXY
1588 ixy = WORD( ixy - 1 ); 1588 ixy = WORD( ixy - 1 );
1589 goto set_ixy; 1589 goto set_ixy;
1590 1590
1591 case 0x34: // INC (IXY+disp) 1591 case 0x34: // INC (IXY+disp)
1592 ixy = IXY_DISP( ixy, SBYTE( data2 ) ); 1592 ixy = IXY_DISP( ixy, SBYTE( data2 ) );
1593 pc++; 1593 pc++;
1594 data = READ_MEM( ixy ) + 1; 1594 data = READ_MEM( ixy ) + 1;
1595 WRITE_MEM( ixy, data ); 1595 WRITE_MEM( ixy, data );
1596 goto inc_set_flags; 1596 goto inc_set_flags;
1597 1597
1598 case 0x35: // DEC (IXY+disp) 1598 case 0x35: // DEC (IXY+disp)
1599 ixy = IXY_DISP( ixy, SBYTE( data2 ) ); 1599 ixy = IXY_DISP( ixy, SBYTE( data2 ) );
1600 pc++; 1600 pc++;
1601 data = READ_MEM( ixy ) - 1; 1601 data = READ_MEM( ixy ) - 1;
1602 WRITE_MEM( ixy, data ); 1602 WRITE_MEM( ixy, data );
1603 goto dec_set_flags; 1603 goto dec_set_flags;
1604 1604
1605 case 0x24: // INC HXY 1605 case 0x24: // INC HXY
1606 ixy = WORD( ixy + 0x100 ); 1606 ixy = WORD( ixy + 0x100 );
1607 data = ixy >> 8; 1607 data = ixy >> 8;
1608 goto inc_xy_common; 1608 goto inc_xy_common;
1609 1609
1610 case 0x2C: // INC LXY 1610 case 0x2C: // INC LXY
1611 data = BYTE( ixy + 1 ); 1611 data = BYTE( ixy + 1 );
1612 ixy = (ixy & 0xFF00) + data; 1612 ixy = (ixy & 0xFF00) + data;
1613 inc_xy_common: 1613 inc_xy_common:
1614 if ( opcode == 0xDD ) 1614 if ( opcode == 0xDD )
1615 { 1615 {
1616 ix = ixy; 1616 ix = ixy;
1617 goto inc_set_flags; 1617 goto inc_set_flags;
1618 } 1618 }
1619 iy = ixy; 1619 iy = ixy;
1620 goto inc_set_flags; 1620 goto inc_set_flags;
1621 1621
1622 case 0x25: // DEC HXY 1622 case 0x25: // DEC HXY
1623 ixy = WORD( ixy - 0x100 ); 1623 ixy = WORD( ixy - 0x100 );
1624 data = ixy >> 8; 1624 data = ixy >> 8;
1625 goto dec_xy_common; 1625 goto dec_xy_common;
1626 1626
1627 case 0x2D: // DEC LXY 1627 case 0x2D: // DEC LXY
1628 data = BYTE( ixy - 1 ); 1628 data = BYTE( ixy - 1 );
1629 ixy = (ixy & 0xFF00) + data; 1629 ixy = (ixy & 0xFF00) + data;
1630 dec_xy_common: 1630 dec_xy_common:
1631 if ( opcode == 0xDD ) 1631 if ( opcode == 0xDD )
1632 { 1632 {
1633 ix = ixy; 1633 ix = ixy;
1634 goto dec_set_flags; 1634 goto dec_set_flags;
1635 } 1635 }
1636 iy = ixy; 1636 iy = ixy;
1637 goto dec_set_flags; 1637 goto dec_set_flags;
1638 1638
1639 // PUSH/POP 1639 // PUSH/POP
1640 case 0xE5: // PUSH IXY 1640 case 0xE5: // PUSH IXY
1641 data = ixy; 1641 data = ixy;
1642 goto push_data; 1642 goto push_data;
1643 1643
1644 case 0xE1:{// POP IXY 1644 case 0xE1:{// POP IXY
1645 ixy = READ_WORD( sp ); 1645 ixy = READ_WORD( sp );
1646 sp = WORD( sp + 2 ); 1646 sp = WORD( sp + 2 );
1647 goto set_ixy; 1647 goto set_ixy;
1648 } 1648 }
1649 1649
1650 // Misc 1650 // Misc
1651 1651
1652 case 0xE9: // JP (IXY) 1652 case 0xE9: // JP (IXY)
1653 pc = ixy; 1653 pc = ixy;
1654 goto loop; 1654 goto loop;
1655 1655
1656 case 0xE3:{// EX (SP),IXY 1656 case 0xE3:{// EX (SP),IXY
1657 int temp = READ_WORD( sp ); 1657 int temp = READ_WORD( sp );
1658 WRITE_WORD( sp, ixy ); 1658 WRITE_WORD( sp, ixy );
1659 ixy = temp; 1659 ixy = temp;
1660 goto set_ixy; 1660 goto set_ixy;
1661 } 1661 }
1662 1662
1663 default: 1663 default:
1664 dprintf( "Unnecessary DD/FD prefix encountered\n" ); 1664 dprintf( "Unnecessary DD/FD prefix encountered\n" );
1665 warning = true; 1665 warning = true;
1666 pc--; 1666 pc--;
1667 goto loop; 1667 goto loop;
1668 } 1668 }
1669 assert( false ); 1669 assert( false );
1670 } 1670 }
1671 1671
1672 } 1672 }
1673 dprintf( "Unhandled main opcode: $%02X\n", opcode ); 1673 dprintf( "Unhandled main opcode: $%02X\n", opcode );
1674 assert( false ); 1674 assert( false );
1675 1675
1676#ifdef IDLE_ADDR 1676#ifdef IDLE_ADDR
1677hit_idle_addr: 1677hit_idle_addr:
1678 s_time -= 11; 1678 s_time -= 11;
1679 goto out_of_time; 1679 goto out_of_time;
1680#endif 1680#endif
1681halt: 1681halt:
1682 s_time &= 3; // increment by multiple of 4 1682 s_time &= 3; // increment by multiple of 4
1683out_of_time: 1683out_of_time:
1684 pc--; 1684 pc--;
1685 1685
1686 r.b.flags = flags; 1686 r.b.flags = flags;
1687 R.ix = ix; 1687 R.ix = ix;
1688 R.iy = iy; 1688 R.iy = iy;
1689 R.sp = sp; 1689 R.sp = sp;
1690 R.pc = pc; 1690 R.pc = pc;
1691 R.b = r.b; 1691 R.b = r.b;
1692 1692
1693 cpu->cpu_state_.base = s.base; 1693 cpu->cpu_state_.base = s.base;
1694 cpu->cpu_state_.time = s_time; 1694 cpu->cpu_state_.time = s_time;
1695 cpu->cpu_state = &cpu->cpu_state_; 1695 cpu->cpu_state = &cpu->cpu_state_;
1696} 1696}
diff --git a/apps/lang/arabic.lang b/apps/lang/arabic.lang
index 12e84c819b..b9450c1710 100644
--- a/apps/lang/arabic.lang
+++ b/apps/lang/arabic.lang
@@ -7010,17 +7010,17 @@
7010 radio: "قائمة اذاعة ا٠ام" 7010 radio: "قائمة اذاعة ا٠ام"
7011 </voice> 7011 </voice>
7012</phrase> 7012</phrase>
7013<phrase> 7013<phrase>
7014 id: LANG_FILESIZE 7014 id: LANG_FILESIZE
7015 desc: in record timesplit options and in track information viewer 7015 desc: in record timesplit options and in track information viewer
7016 user: core 7016 user: core
7017 <source> 7017 <source>
7018 *: "Filesize" 7018 *: "Filesize"
7019 </source> 7019 </source>
7020 <dest> 7020 <dest>
7021 *: "حجم الملÙ" 7021 *: "حجم الملÙ"
7022 </dest> 7022 </dest>
7023 <voice> 7023 <voice>
7024 *: "حجم الملÙ" 7024 *: "حجم الملÙ"
7025 </voice> 7025 </voice>
7026</phrase> 7026</phrase>
diff --git a/apps/lang/latviesu.lang b/apps/lang/latviesu.lang
index 0fb0afa417..866820d4f3 100644
--- a/apps/lang/latviesu.lang
+++ b/apps/lang/latviesu.lang
@@ -1,12750 +1,12750 @@
1# __________ __ ___. 1# __________ __ ___.
2# Open \______ \ ____ ____ | | _\_ |__ _______ ___ 2# Open \______ \ ____ ____ | | _\_ |__ _______ ___
3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 3# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 4# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 5# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
6# \/ \/ \/ \/ \/ 6# \/ \/ \/ \/ \/
7# $Id$ 7# $Id$
8# 8#
9# This program is free software; you can redistribute it and/or 9# This program is free software; you can redistribute it and/or
10# modify it under the terms of the GNU General Public License 10# modify it under the terms of the GNU General Public License
11# as published by the Free Software Foundation; either version 2 11# as published by the Free Software Foundation; either version 2
12# of the License, or (at your option) any later version. 12# of the License, or (at your option) any later version.
13# 13#
14# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 14# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
15# KIND, either express or implied. 15# KIND, either express or implied.
16# 16#
17# 17#
18# Latvian language file, translated by MÄrtiņš Å imis jeb msh 18# Latvian language file, translated by MÄrtiņš Å imis jeb msh
19 19
20<phrase> 20<phrase>
21 id: LANG_SET_BOOL_YES 21 id: LANG_SET_BOOL_YES
22 desc: bool true representation 22 desc: bool true representation
23 user: core 23 user: core
24 <source> 24 <source>
25 *: "Yes" 25 *: "Yes"
26 </source> 26 </source>
27 <dest> 27 <dest>
28 *: "JÄ" 28 *: "JÄ"
29 </dest> 29 </dest>
30 <voice> 30 <voice>
31 *: "jaa" 31 *: "jaa"
32 </voice> 32 </voice>
33</phrase> 33</phrase>
34<phrase> 34<phrase>
35 id: LANG_SET_BOOL_NO 35 id: LANG_SET_BOOL_NO
36 desc: bool false representation 36 desc: bool false representation
37 user: core 37 user: core
38 <source> 38 <source>
39 *: "No" 39 *: "No"
40 </source> 40 </source>
41 <dest> 41 <dest>
42 *: "NÄ“" 42 *: "NÄ“"
43 </dest> 43 </dest>
44 <voice> 44 <voice>
45 *: "nee" 45 *: "nee"
46 </voice> 46 </voice>
47</phrase> 47</phrase>
48<phrase> 48<phrase>
49 id: LANG_ON 49 id: LANG_ON
50 desc: Used in a lot of places 50 desc: Used in a lot of places
51 user: core 51 user: core
52 <source> 52 <source>
53 *: "On" 53 *: "On"
54 </source> 54 </source>
55 <dest> 55 <dest>
56 *: "Ieslēgts" 56 *: "Ieslēgts"
57 </dest> 57 </dest>
58 <voice> 58 <voice>
59 *: "iesleegts" 59 *: "iesleegts"
60 </voice> 60 </voice>
61</phrase> 61</phrase>
62<phrase> 62<phrase>
63 id: LANG_OFF 63 id: LANG_OFF
64 desc: Used in a lot of places 64 desc: Used in a lot of places
65 user: core 65 user: core
66 <source> 66 <source>
67 *: "Off" 67 *: "Off"
68 </source> 68 </source>
69 <dest> 69 <dest>
70 *: "Izslēgts" 70 *: "Izslēgts"
71 </dest> 71 </dest>
72 <voice> 72 <voice>
73 *: "izsleegts" 73 *: "izsleegts"
74 </voice> 74 </voice>
75</phrase> 75</phrase>
76<phrase> 76<phrase>
77 id: LANG_ASK 77 id: LANG_ASK
78 desc: in settings_menu 78 desc: in settings_menu
79 user: core 79 user: core
80 <source> 80 <source>
81 *: "Ask" 81 *: "Ask"
82 </source> 82 </source>
83 <dest> 83 <dest>
84 *: "Prasīt" 84 *: "Prasīt"
85 </dest> 85 </dest>
86 <voice> 86 <voice>
87 *: "prasiit" 87 *: "prasiit"
88 </voice> 88 </voice>
89</phrase> 89</phrase>
90<phrase> 90<phrase>
91 id: LANG_ALWAYS 91 id: LANG_ALWAYS
92 desc: used in various places 92 desc: used in various places
93 user: core 93 user: core
94 <source> 94 <source>
95 *: "Always" 95 *: "Always"
96 </source> 96 </source>
97 <dest> 97 <dest>
98 *: "Vienmēr" 98 *: "Vienmēr"
99 </dest> 99 </dest>
100 <voice> 100 <voice>
101 *: "vienmeer" 101 *: "vienmeer"
102 </voice> 102 </voice>
103</phrase> 103</phrase>
104<phrase> 104<phrase>
105 id: LANG_NORMAL 105 id: LANG_NORMAL
106 desc: in settings_menu 106 desc: in settings_menu
107 user: core 107 user: core
108 <source> 108 <source>
109 *: "Normal" 109 *: "Normal"
110 </source> 110 </source>
111 <dest> 111 <dest>
112 *: "NormÄls" 112 *: "NormÄls"
113 </dest> 113 </dest>
114 <voice> 114 <voice>
115 *: "normaals" 115 *: "normaals"
116 </voice> 116 </voice>
117</phrase> 117</phrase>
118<phrase> 118<phrase>
119 id: LANG_GAIN 119 id: LANG_GAIN
120 desc: Generic string for gain used in EQ menu and recording screen 120 desc: Generic string for gain used in EQ menu and recording screen
121 user: core 121 user: core
122 <source> 122 <source>
123 *: "Gain" 123 *: "Gain"
124 </source> 124 </source>
125 <dest> 125 <dest>
126 *: "PastiprinÄjums" 126 *: "PastiprinÄjums"
127 </dest> 127 </dest>
128 <voice> 128 <voice>
129 *: "pastiprinaajums" 129 *: "pastiprinaajums"
130 </voice> 130 </voice>
131</phrase> 131</phrase>
132<phrase> 132<phrase>
133 id: LANG_WAIT 133 id: LANG_WAIT
134 desc: general please wait splash 134 desc: general please wait splash
135 user: core 135 user: core
136 <source> 136 <source>
137 *: "Loading..." 137 *: "Loading..."
138 </source> 138 </source>
139 <dest> 139 <dest>
140 *: "IelÄdÄ“..." 140 *: "IelÄdÄ“..."
141 </dest> 141 </dest>
142 <voice> 142 <voice>
143 *: "notiek ielaade" 143 *: "notiek ielaade"
144 </voice> 144 </voice>
145</phrase> 145</phrase>
146<phrase> 146<phrase>
147 id: LANG_LOADING_PERCENT 147 id: LANG_LOADING_PERCENT
148 desc: splash number of percents loaded 148 desc: splash number of percents loaded
149 user: core 149 user: core
150 <source> 150 <source>
151 *: "Loading... %d%% done (%s)" 151 *: "Loading... %d%% done (%s)"
152 </source> 152 </source>
153 <dest> 153 <dest>
154 *: "ielaade... %d%% gatavs (%s)" 154 *: "ielaade... %d%% gatavs (%s)"
155 </dest> 155 </dest>
156 <voice> 156 <voice>
157 *: "" 157 *: ""
158 </voice> 158 </voice>
159</phrase> 159</phrase>
160<phrase> 160<phrase>
161 id: LANG_SCANNING_DISK 161 id: LANG_SCANNING_DISK
162 desc: when booting up and rebuilding the cache and calculating free space 162 desc: when booting up and rebuilding the cache and calculating free space
163 user: core 163 user: core
164 <source> 164 <source>
165 *: "Scanning disk..." 165 *: "Scanning disk..."
166 </source> 166 </source>
167 <dest> 167 <dest>
168 *: "Skanē atmiņu..." 168 *: "Skanē atmiņu..."
169 </dest> 169 </dest>
170 <voice> 170 <voice>
171 *: "skanee atminju" 171 *: "skanee atminju"
172 </voice> 172 </voice>
173</phrase> 173</phrase>
174<phrase> 174<phrase>
175 id: LANG_SHUTTINGDOWN 175 id: LANG_SHUTTINGDOWN
176 desc: in main menu 176 desc: in main menu
177 user: core 177 user: core
178 <source> 178 <source>
179 *: "Shutting down..." 179 *: "Shutting down..."
180 </source> 180 </source>
181 <dest> 181 <dest>
182 *: "Izslēdzas..." 182 *: "Izslēdzas..."
183 </dest> 183 </dest>
184 <voice> 184 <voice>
185 *: "izsleedzas" 185 *: "izsleedzas"
186 </voice> 186 </voice>
187</phrase> 187</phrase>
188<phrase> 188<phrase>
189 id: LANG_CANCEL 189 id: LANG_CANCEL
190 desc: Visual confirmation of canceling a changed setting 190 desc: Visual confirmation of canceling a changed setting
191 user: core 191 user: core
192 <source> 192 <source>
193 *: "Cancelled" 193 *: "Cancelled"
194 </source> 194 </source>
195 <dest> 195 <dest>
196 *: "Atcelts" 196 *: "Atcelts"
197 </dest> 197 </dest>
198 <voice> 198 <voice>
199 *: "atcelts" 199 *: "atcelts"
200 </voice> 200 </voice>
201</phrase> 201</phrase>
202<phrase> 202<phrase>
203 id: LANG_FAILED 203 id: LANG_FAILED
204 desc: Something failed. To be appended after actions 204 desc: Something failed. To be appended after actions
205 user: core 205 user: core
206 <source> 206 <source>
207 *: "Failed" 207 *: "Failed"
208 </source> 208 </source>
209 <dest> 209 <dest>
210 *: "NeizdevÄs" 210 *: "NeizdevÄs"
211 </dest> 211 </dest>
212 <voice> 212 <voice>
213 *: "neizdevaas" 213 *: "neizdevaas"
214 </voice> 214 </voice>
215</phrase> 215</phrase>
216<phrase> 216<phrase>
217 id: LANG_CHANNELS 217 id: LANG_CHANNELS
218 desc: in sound_settings 218 desc: in sound_settings
219 user: core 219 user: core
220 <source> 220 <source>
221 *: "Channels" 221 *: "Channels"
222 </source> 222 </source>
223 <dest> 223 <dest>
224 *: "KanÄli" 224 *: "KanÄli"
225 </dest> 225 </dest>
226 <voice> 226 <voice>
227 *: "kanaali" 227 *: "kanaali"
228 </voice> 228 </voice>
229</phrase> 229</phrase>
230<phrase> 230<phrase>
231 id: LANG_RESET_ASK 231 id: LANG_RESET_ASK
232 desc: confirm to reset settings 232 desc: confirm to reset settings
233 user: core 233 user: core
234 <source> 234 <source>
235 *: "Are You Sure?" 235 *: "Are You Sure?"
236 </source> 236 </source>
237 <dest> 237 <dest>
238 *: "Vai esi pÄrliecinÄts?" 238 *: "Vai esi pÄrliecinÄts?"
239 </dest> 239 </dest>
240 <voice> 240 <voice>
241 *: "vai esi paarliecinaats" 241 *: "vai esi paarliecinaats"
242 </voice> 242 </voice>
243</phrase> 243</phrase>
244<phrase> 244<phrase>
245 id: LANG_CONFIRM_WITH_BUTTON 245 id: LANG_CONFIRM_WITH_BUTTON
246 desc: Generic string to use to confirm 246 desc: Generic string to use to confirm
247 user: core 247 user: core
248 <source> 248 <source>
249 *: "PLAY = Yes" 249 *: "PLAY = Yes"
250 cowond2*: "MENU, or top-right = Yes" 250 cowond2*: "MENU, or top-right = Yes"
251 iriverh100,iriverh120,iriverh300: "NAVI = Yes" 251 iriverh100,iriverh120,iriverh300: "NAVI = Yes"
252 samsungyh*,ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*: "SELECT = Yes" 252 samsungyh*,ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*: "SELECT = Yes"
253 mrobe500: "PLAY, POWER, or top-right = Yes" 253 mrobe500: "PLAY, POWER, or top-right = Yes"
254 archosplayer: "(PLAY/STOP)" 254 archosplayer: "(PLAY/STOP)"
255 vibe500: "OK = Yes" 255 vibe500: "OK = Yes"
256 </source> 256 </source>
257 <dest> 257 <dest>
258 *: "PLAY = JÄ" 258 *: "PLAY = JÄ"
259 cowond2*: "MENU, vai labÄ augÅ¡Ä“jÄ = JÄ" 259 cowond2*: "MENU, vai labÄ augÅ¡Ä“jÄ = JÄ"
260 iriverh100,iriverh120,iriverh300: "NAVI = JÄ" 260 iriverh100,iriverh120,iriverh300: "NAVI = JÄ"
261 samsungyh*,ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*: "SELECT = JÄ" 261 samsungyh*,ipod*,iaudiox5,iaudiom5,gigabeat*,sansae200*,sansac200*,iriverh10,iriverh10_5gb,mrobe100,sansaclip*,sansafuze*: "SELECT = JÄ"
262 mrobe500: "PLAY, POWER, vai labÄ augÅ¡Ä“jÄ = JÄ" 262 mrobe500: "PLAY, POWER, vai labÄ augÅ¡Ä“jÄ = JÄ"
263 archosplayer: "(PLAY/STOP)" 263 archosplayer: "(PLAY/STOP)"
264 vibe500: "OK = JÄ" 264 vibe500: "OK = JÄ"
265 </dest> 265 </dest>
266 <voice> 266 <voice>
267 *: "" 267 *: ""
268 </voice> 268 </voice>
269</phrase> 269</phrase>
270<phrase> 270<phrase>
271 id: LANG_CANCEL_WITH_ANY 271 id: LANG_CANCEL_WITH_ANY
272 desc: Generic string to use to cancel 272 desc: Generic string to use to cancel
273 user: core 273 user: core
274 <source> 274 <source>
275 *: "Any Other = No" 275 *: "Any Other = No"
276 archosplayer: none 276 archosplayer: none
277 </source> 277 </source>
278 <dest> 278 <dest>
279 *: "Jebkas cits = NÄ“" 279 *: "Jebkas cits = NÄ“"
280 archosplayer: none 280 archosplayer: none
281 </dest> 281 </dest>
282 <voice> 282 <voice>
283 *: "" 283 *: ""
284 archosplayer: none 284 archosplayer: none
285 </voice> 285 </voice>
286</phrase> 286</phrase>
287<phrase> 287<phrase>
288 id: LANG_ROCKBOX_TITLE 288 id: LANG_ROCKBOX_TITLE
289 desc: main menu title 289 desc: main menu title
290 user: core 290 user: core
291 <source> 291 <source>
292 *: "Rockbox" 292 *: "Rockbox"
293 </source> 293 </source>
294 <dest> 294 <dest>
295 *: "Rockbox" 295 *: "Rockbox"
296 </dest> 296 </dest>
297 <voice> 297 <voice>
298 *: "Rockbox" 298 *: "Rockbox"
299 </voice> 299 </voice>
300</phrase> 300</phrase>
301<phrase> 301<phrase>
302 id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS 302 id: LANG_BOOKMARK_MENU_RECENT_BOOKMARKS
303 desc: in the main menu 303 desc: in the main menu
304 user: core 304 user: core
305 <source> 305 <source>
306 *: "Recent Bookmarks" 306 *: "Recent Bookmarks"
307 </source> 307 </source>
308 <dest> 308 <dest>
309 *: "NesenÄs GrÄmatzÄ«mes" 309 *: "NesenÄs GrÄmatzÄ«mes"
310 </dest> 310 </dest>
311 <voice> 311 <voice>
312 *: "nesenaas graamatziimes" 312 *: "nesenaas graamatziimes"
313 </voice> 313 </voice>
314</phrase> 314</phrase>
315<phrase> 315<phrase>
316 id: LANG_DIR_BROWSER 316 id: LANG_DIR_BROWSER
317 desc: main menu title 317 desc: main menu title
318 user: core 318 user: core
319 <source> 319 <source>
320 *: "Files" 320 *: "Files"
321 </source> 321 </source>
322 <dest> 322 <dest>
323 *: "Faili" 323 *: "Faili"
324 </dest> 324 </dest>
325 <voice> 325 <voice>
326 *: "faili" 326 *: "faili"
327 </voice> 327 </voice>
328</phrase> 328</phrase>
329<phrase> 329<phrase>
330 id: LANG_TAGCACHE 330 id: LANG_TAGCACHE
331 desc: in the main menu and the settings menu 331 desc: in the main menu and the settings menu
332 user: core 332 user: core
333 <source> 333 <source>
334 *: "Database" 334 *: "Database"
335 </source> 335 </source>
336 <dest> 336 <dest>
337 *: "DatubÄze" 337 *: "DatubÄze"
338 </dest> 338 </dest>
339 <voice> 339 <voice>
340 *: "datubaaze" 340 *: "datubaaze"
341 </voice> 341 </voice>
342</phrase> 342</phrase>
343<phrase> 343<phrase>
344 id: LANG_NOW_PLAYING 344 id: LANG_NOW_PLAYING
345 desc: in the main menu 345 desc: in the main menu
346 user: core 346 user: core
347 <source> 347 <source>
348 *: "Now Playing" 348 *: "Now Playing"
349 </source> 349 </source>
350 <dest> 350 <dest>
351 *: "Šobrīd Atskaņo" 351 *: "Šobrīd Atskaņo"
352 </dest> 352 </dest>
353 <voice> 353 <voice>
354 *: "shobriid atskanjo" 354 *: "shobriid atskanjo"
355 </voice> 355 </voice>
356</phrase> 356</phrase>
357<phrase> 357<phrase>
358 id: LANG_RESUME_PLAYBACK 358 id: LANG_RESUME_PLAYBACK
359 desc: in the main menu 359 desc: in the main menu
360 user: core 360 user: core
361 <source> 361 <source>
362 *: "Resume Playback" 362 *: "Resume Playback"
363 </source> 363 </source>
364 <dest> 364 <dest>
365 *: "TurpinÄt AtskaņoÅ¡anu" 365 *: "TurpinÄt AtskaņoÅ¡anu"
366 </dest> 366 </dest>
367 <voice> 367 <voice>
368 *: "turpinaat atskanjoshanu" 368 *: "turpinaat atskanjoshanu"
369 </voice> 369 </voice>
370</phrase> 370</phrase>
371<phrase> 371<phrase>
372 id: LANG_SETTINGS 372 id: LANG_SETTINGS
373 desc: in main menu and visual confirmation after settings reset 373 desc: in main menu and visual confirmation after settings reset
374 user: core 374 user: core
375 <source> 375 <source>
376 *: "Settings" 376 *: "Settings"
377 </source> 377 </source>
378 <dest> 378 <dest>
379 *: "UzstÄdÄ«jumi" 379 *: "UzstÄdÄ«jumi"
380 </dest> 380 </dest>
381 <voice> 381 <voice>
382 *: "uzstaadiijumi" 382 *: "uzstaadiijumi"
383 </voice> 383 </voice>
384</phrase> 384</phrase>
385<phrase> 385<phrase>
386 id: LANG_RECORDING 386 id: LANG_RECORDING
387 desc: in the main menu 387 desc: in the main menu
388 user: core 388 user: core
389 <source> 389 <source>
390 *: none 390 *: none
391 recording: "Recording" 391 recording: "Recording"
392 </source> 392 </source>
393 <dest> 393 <dest>
394 *: none 394 *: none
395 recording: "Ierakstīšana" 395 recording: "Ierakstīšana"
396 </dest> 396 </dest>
397 <voice> 397 <voice>
398 *: none 398 *: none
399 recording: "ierakstiishana" 399 recording: "ierakstiishana"
400 </voice> 400 </voice>
401</phrase> 401</phrase>
402<phrase> 402<phrase>
403 id: LANG_FM_RADIO 403 id: LANG_FM_RADIO
404 desc: in the main menu 404 desc: in the main menu
405 user: core 405 user: core
406 <source> 406 <source>
407 *: none 407 *: none
408 radio: "FM Radio" 408 radio: "FM Radio"
409 </source> 409 </source>
410 <dest> 410 <dest>
411 *: none 411 *: none
412 radio: "FM Radio" 412 radio: "FM Radio"
413 </dest> 413 </dest>
414 <voice> 414 <voice>
415 *: none 415 *: none
416 radio: "fm radio" 416 radio: "fm radio"
417 </voice> 417 </voice>
418</phrase> 418</phrase>
419<phrase> 419<phrase>
420 id: LANG_PLAYLISTS 420 id: LANG_PLAYLISTS
421 desc: in the file view setting 421 desc: in the file view setting
422 user: core 422 user: core
423 <source> 423 <source>
424 *: "Playlists" 424 *: "Playlists"
425 </source> 425 </source>
426 <dest> 426 <dest>
427 *: "Izlases" 427 *: "Izlases"
428 </dest> 428 </dest>
429 <voice> 429 <voice>
430 *: "izlases" 430 *: "izlases"
431 </voice> 431 </voice>
432</phrase> 432</phrase>
433<phrase> 433<phrase>
434 id: LANG_PLUGINS 434 id: LANG_PLUGINS
435 desc: in the main menu 435 desc: in the main menu
436 user: core 436 user: core
437 <source> 437 <source>
438 *: "Plugins" 438 *: "Plugins"
439 </source> 439 </source>
440 <dest> 440 <dest>
441 *: "Spraudņi" 441 *: "Spraudņi"
442 </dest> 442 </dest>
443 <voice> 443 <voice>
444 *: "spraudnji" 444 *: "spraudnji"
445 </voice> 445 </voice>
446</phrase> 446</phrase>
447<phrase> 447<phrase>
448 id: LANG_SYSTEM 448 id: LANG_SYSTEM
449 desc: in the main menu and settings menu 449 desc: in the main menu and settings menu
450 user: core 450 user: core
451 <source> 451 <source>
452 *: "System" 452 *: "System"
453 </source> 453 </source>
454 <dest> 454 <dest>
455 *: "Sistēma" 455 *: "Sistēma"
456 </dest> 456 </dest>
457 <voice> 457 <voice>
458 *: "sisteema" 458 *: "sisteema"
459 </voice> 459 </voice>
460</phrase> 460</phrase>
461<phrase> 461<phrase>
462 id: LANG_BOOKMARK_SELECT_BOOKMARK 462 id: LANG_BOOKMARK_SELECT_BOOKMARK
463 desc: bookmark selection list title 463 desc: bookmark selection list title
464 user: core 464 user: core
465 <source> 465 <source>
466 *: "Select Bookmark" 466 *: "Select Bookmark"
467 </source> 467 </source>
468 <dest> 468 <dest>
469 *: "IzvÄ“lÄ“ties GrÄmatzÄ«mi" 469 *: "IzvÄ“lÄ“ties GrÄmatzÄ«mi"
470 </dest> 470 </dest>
471 <voice> 471 <voice>
472 *: "izveeleeties graamatziimi" 472 *: "izveeleeties graamatziimi"
473 </voice> 473 </voice>
474</phrase> 474</phrase>
475<phrase> 475<phrase>
476 id: LANG_BOOKMARK_DONT_RESUME 476 id: LANG_BOOKMARK_DONT_RESUME
477 desc: top item in the list when asking user about bookmark auto load 477 desc: top item in the list when asking user about bookmark auto load
478 user: core 478 user: core
479 <source> 479 <source>
480 *: "<Don't Resume>" 480 *: "<Don't Resume>"
481 </source> 481 </source>
482 <dest> 482 <dest>
483 *: "<NeatsÄkt>" 483 *: "<NeatsÄkt>"
484 </dest> 484 </dest>
485 <voice> 485 <voice>
486 *: "neatsaakt" 486 *: "neatsaakt"
487 </voice> 487 </voice>
488</phrase> 488</phrase>
489<phrase> 489<phrase>
490 id: LANG_BOOKMARK_SHUFFLE 490 id: LANG_BOOKMARK_SHUFFLE
491 desc: bookmark selection list, bookmark enables shuffle 491 desc: bookmark selection list, bookmark enables shuffle
492 user: core 492 user: core
493 <source> 493 <source>
494 *: ", Shuffle" 494 *: ", Shuffle"
495 </source> 495 </source>
496 <dest> 496 <dest>
497 *: ", PÄrmaiņus" 497 *: ", PÄrmaiņus"
498 </dest> 498 </dest>
499 <voice> 499 <voice>
500 *: "" 500 *: ""
501 </voice> 501 </voice>
502</phrase> 502</phrase>
503<phrase> 503<phrase>
504 id: LANG_BOOKMARK_INVALID 504 id: LANG_BOOKMARK_INVALID
505 desc: bookmark selection list, bookmark couldn't be parsed 505 desc: bookmark selection list, bookmark couldn't be parsed
506 user: core 506 user: core
507 <source> 507 <source>
508 *: "<Invalid Bookmark>" 508 *: "<Invalid Bookmark>"
509 </source> 509 </source>
510 <dest> 510 <dest>
511 *: "<NederÄ«ga GrÄmatzÄ«me>" 511 *: "<NederÄ«ga GrÄmatzÄ«me>"
512 </dest> 512 </dest>
513 <voice> 513 <voice>
514 *: "nederiiga graamatziime" 514 *: "nederiiga graamatziime"
515 </voice> 515 </voice>
516</phrase> 516</phrase>
517<phrase> 517<phrase>
518 id: LANG_BOOKMARK_CONTEXT_MENU 518 id: LANG_BOOKMARK_CONTEXT_MENU
519 desc: bookmark selection list context menu 519 desc: bookmark selection list context menu
520 user: core 520 user: core
521 <source> 521 <source>
522 *: "Bookmark Actions" 522 *: "Bookmark Actions"
523 </source> 523 </source>
524 <dest> 524 <dest>
525 *: "GrÄmatzÄ«mju DarbÄ«bas" 525 *: "GrÄmatzÄ«mju DarbÄ«bas"
526 </dest> 526 </dest>
527 <voice> 527 <voice>
528 *: "graamatziimju darbiibas" 528 *: "graamatziimju darbiibas"
529 </voice> 529 </voice>
530</phrase> 530</phrase>
531<phrase> 531<phrase>
532 id: LANG_BOOKMARK_CONTEXT_RESUME 532 id: LANG_BOOKMARK_CONTEXT_RESUME
533 desc: bookmark context menu, resume this bookmark 533 desc: bookmark context menu, resume this bookmark
534 user: core 534 user: core
535 <source> 535 <source>
536 *: "Resume" 536 *: "Resume"
537 </source> 537 </source>
538 <dest> 538 <dest>
539 *: "AtsÄkt" 539 *: "AtsÄkt"
540 </dest> 540 </dest>
541 <voice> 541 <voice>
542 *: "atsaakt" 542 *: "atsaakt"
543 </voice> 543 </voice>
544</phrase> 544</phrase>
545<phrase> 545<phrase>
546 id: LANG_BOOKMARK_CONTEXT_DELETE 546 id: LANG_BOOKMARK_CONTEXT_DELETE
547 desc: bookmark context menu, delete this bookmark 547 desc: bookmark context menu, delete this bookmark
548 user: core 548 user: core
549 <source> 549 <source>
550 *: "Delete" 550 *: "Delete"
551 </source> 551 </source>
552 <dest> 552 <dest>
553 *: "Izdzēst" 553 *: "Izdzēst"
554 </dest> 554 </dest>
555 <voice> 555 <voice>
556 *: "izdzeest" 556 *: "izdzeest"
557 </voice> 557 </voice>
558</phrase> 558</phrase>
559<phrase> 559<phrase>
560 id: LANG_AUTO_BOOKMARK_QUERY 560 id: LANG_AUTO_BOOKMARK_QUERY
561 desc: prompt for user to decide to create an bookmark 561 desc: prompt for user to decide to create an bookmark
562 user: core 562 user: core
563 <source> 563 <source>
564 *: "Create a Bookmark?" 564 *: "Create a Bookmark?"
565 </source> 565 </source>
566 <dest> 566 <dest>
567 *: "Izveidot GrÄmatzÄ«mi?" 567 *: "Izveidot GrÄmatzÄ«mi?"
568 </dest> 568 </dest>
569 <voice> 569 <voice>
570 *: "vai izveidot graamatziimi" 570 *: "vai izveidot graamatziimi"
571 </voice> 571 </voice>
572</phrase> 572</phrase>
573<phrase> 573<phrase>
574 id: LANG_BOOKMARK_CREATE_SUCCESS 574 id: LANG_BOOKMARK_CREATE_SUCCESS
575 desc: Indicates bookmark was successfully created 575 desc: Indicates bookmark was successfully created
576 user: core 576 user: core
577 <source> 577 <source>
578 *: "Bookmark Created" 578 *: "Bookmark Created"
579 </source> 579 </source>
580 <dest> 580 <dest>
581 *: "GrÄmatzÄ«me Izveidota" 581 *: "GrÄmatzÄ«me Izveidota"
582 </dest> 582 </dest>
583 <voice> 583 <voice>
584 *: "graamatziime izveidota" 584 *: "graamatziime izveidota"
585 </voice> 585 </voice>
586</phrase> 586</phrase>
587<phrase> 587<phrase>
588 id: LANG_BOOKMARK_CREATE_FAILURE 588 id: LANG_BOOKMARK_CREATE_FAILURE
589 desc: Indicates bookmark was not created 589 desc: Indicates bookmark was not created
590 user: core 590 user: core
591 <source> 591 <source>
592 *: "Bookmark Failed!" 592 *: "Bookmark Failed!"
593 </source> 593 </source>
594 <dest> 594 <dest>
595 *: "NeizdevÄs Izveidot!" 595 *: "NeizdevÄs Izveidot!"
596 </dest> 596 </dest>
597 <voice> 597 <voice>
598 *: "neizdevaas izveidot" 598 *: "neizdevaas izveidot"
599 </voice> 599 </voice>
600</phrase> 600</phrase>
601<phrase> 601<phrase>
602 id: LANG_BOOKMARK_LOAD_EMPTY 602 id: LANG_BOOKMARK_LOAD_EMPTY
603 desc: Indicates bookmark was empty 603 desc: Indicates bookmark was empty
604 user: core 604 user: core
605 <source> 605 <source>
606 *: "Bookmark Empty" 606 *: "Bookmark Empty"
607 </source> 607 </source>
608 <dest> 608 <dest>
609 *: "TukÅ¡a GrÄmatzÄ«me" 609 *: "TukÅ¡a GrÄmatzÄ«me"
610 </dest> 610 </dest>
611 <voice> 611 <voice>
612 *: "tuksha graamatziime" 612 *: "tuksha graamatziime"
613 </voice> 613 </voice>
614</phrase> 614</phrase>
615<phrase> 615<phrase>
616 id: LANG_SOUND_SETTINGS 616 id: LANG_SOUND_SETTINGS
617 desc: in the main menu 617 desc: in the main menu
618 user: core 618 user: core
619 <source> 619 <source>
620 *: "Sound Settings" 620 *: "Sound Settings"
621 </source> 621 </source>
622 <dest> 622 <dest>
623 *: "Skaņas UzstÄdÄ«jumi" 623 *: "Skaņas UzstÄdÄ«jumi"
624 </dest> 624 </dest>
625 <voice> 625 <voice>
626 *: "skanjas uzstaadiijumi" 626 *: "skanjas uzstaadiijumi"
627 </voice> 627 </voice>
628</phrase> 628</phrase>
629<phrase> 629<phrase>
630 id: LANG_VOLUME 630 id: LANG_VOLUME
631 desc: in sound_settings 631 desc: in sound_settings
632 user: core 632 user: core
633 <source> 633 <source>
634 *: "Volume" 634 *: "Volume"
635 </source> 635 </source>
636 <dest> 636 <dest>
637 *: "Skaļums" 637 *: "Skaļums"
638 </dest> 638 </dest>
639 <voice> 639 <voice>
640 *: "skaljums" 640 *: "skaljums"
641 </voice> 641 </voice>
642</phrase> 642</phrase>
643<phrase> 643<phrase>
644 id: LANG_BASS 644 id: LANG_BASS
645 desc: in sound_settings 645 desc: in sound_settings
646 user: core 646 user: core
647 <source> 647 <source>
648 *: "Bass" 648 *: "Bass"
649 </source> 649 </source>
650 <dest> 650 <dest>
651 *: "Basi" 651 *: "Basi"
652 </dest> 652 </dest>
653 <voice> 653 <voice>
654 *: "basi" 654 *: "basi"
655 </voice> 655 </voice>
656</phrase> 656</phrase>
657<phrase> 657<phrase>
658 id: LANG_TREBLE 658 id: LANG_TREBLE
659 desc: in sound_settings 659 desc: in sound_settings
660 user: core 660 user: core
661 <source> 661 <source>
662 *: "Treble" 662 *: "Treble"
663 </source> 663 </source>
664 <dest> 664 <dest>
665 *: "Augšas" 665 *: "Augšas"
666 </dest> 666 </dest>
667 <voice> 667 <voice>
668 *: "augshas" 668 *: "augshas"
669 </voice> 669 </voice>
670</phrase> 670</phrase>
671<phrase> 671<phrase>
672 id: LANG_BALANCE 672 id: LANG_BALANCE
673 desc: in sound_settings 673 desc: in sound_settings
674 user: core 674 user: core
675 <source> 675 <source>
676 *: "Balance" 676 *: "Balance"
677 </source> 677 </source>
678 <dest> 678 <dest>
679 *: "Balanss" 679 *: "Balanss"
680 </dest> 680 </dest>
681 <voice> 681 <voice>
682 *: "balanss" 682 *: "balanss"
683 </voice> 683 </voice>
684</phrase> 684</phrase>
685<phrase> 685<phrase>
686 id: LANG_CHANNEL_CONFIGURATION 686 id: LANG_CHANNEL_CONFIGURATION
687 desc: in sound_settings 687 desc: in sound_settings
688 user: core 688 user: core
689 <source> 689 <source>
690 *: "Channel Configuration" 690 *: "Channel Configuration"
691 </source> 691 </source>
692 <dest> 692 <dest>
693 *: "KanÄlu KonfigurÄcija" 693 *: "KanÄlu KonfigurÄcija"
694 </dest> 694 </dest>
695 <voice> 695 <voice>
696 *: "kanaalu konfiguraacija" 696 *: "kanaalu konfiguraacija"
697 </voice> 697 </voice>
698</phrase> 698</phrase>
699<phrase> 699<phrase>
700 id: LANG_CHANNEL_STEREO 700 id: LANG_CHANNEL_STEREO
701 desc: in sound_settings 701 desc: in sound_settings
702 user: core 702 user: core
703 <source> 703 <source>
704 *: "Stereo" 704 *: "Stereo"
705 </source> 705 </source>
706 <dest> 706 <dest>
707 *: "Stereo" 707 *: "Stereo"
708 </dest> 708 </dest>
709 <voice> 709 <voice>
710 *: "stereo" 710 *: "stereo"
711 </voice> 711 </voice>
712</phrase> 712</phrase>
713<phrase> 713<phrase>
714 id: LANG_CHANNEL_MONO 714 id: LANG_CHANNEL_MONO
715 desc: in sound_settings 715 desc: in sound_settings
716 user: core 716 user: core
717 <source> 717 <source>
718 *: "Mono" 718 *: "Mono"
719 </source> 719 </source>
720 <dest> 720 <dest>
721 *: "Mono" 721 *: "Mono"
722 </dest> 722 </dest>
723 <voice> 723 <voice>
724 *: "mono" 724 *: "mono"
725 </voice> 725 </voice>
726</phrase> 726</phrase>
727<phrase> 727<phrase>
728 id: LANG_CHANNEL_CUSTOM 728 id: LANG_CHANNEL_CUSTOM
729 desc: in sound_settings 729 desc: in sound_settings
730 user: core 730 user: core
731 <source> 731 <source>
732 *: "Custom" 732 *: "Custom"
733 </source> 733 </source>
734 <dest> 734 <dest>
735 *: "Nestandarta" 735 *: "Nestandarta"
736 </dest> 736 </dest>
737 <voice> 737 <voice>
738 *: "nestandarta" 738 *: "nestandarta"
739 </voice> 739 </voice>
740</phrase> 740</phrase>
741<phrase> 741<phrase>
742 id: LANG_CHANNEL_LEFT 742 id: LANG_CHANNEL_LEFT
743 desc: in sound_settings 743 desc: in sound_settings
744 user: core 744 user: core
745 <source> 745 <source>
746 *: "Mono Left" 746 *: "Mono Left"
747 </source> 747 </source>
748 <dest> 748 <dest>
749 *: "Mono Kreisais" 749 *: "Mono Kreisais"
750 </dest> 750 </dest>
751 <voice> 751 <voice>
752 *: "mono kreisais" 752 *: "mono kreisais"
753 </voice> 753 </voice>
754</phrase> 754</phrase>
755<phrase> 755<phrase>
756 id: LANG_CHANNEL_RIGHT 756 id: LANG_CHANNEL_RIGHT
757 desc: in sound_settings 757 desc: in sound_settings
758 user: core 758 user: core
759 <source> 759 <source>
760 *: "Mono Right" 760 *: "Mono Right"
761 </source> 761 </source>
762 <dest> 762 <dest>
763 *: "Mono Labais" 763 *: "Mono Labais"
764 </dest> 764 </dest>
765 <voice> 765 <voice>
766 *: "mono labais" 766 *: "mono labais"
767 </voice> 767 </voice>
768</phrase> 768</phrase>
769<phrase> 769<phrase>
770 id: LANG_CHANNEL_LEFTRIGHT 770 id: LANG_CHANNEL_LEFTRIGHT
771 desc: in sound_settings 771 desc: in sound_settings
772 user: core 772 user: core
773 <source> 773 <source>
774 *: none 774 *: none
775 recording_swcodec: "Mono Left + Right" 775 recording_swcodec: "Mono Left + Right"
776 </source> 776 </source>
777 <dest> 777 <dest>
778 *: none 778 *: none
779 recording_swcodec: "Kreisais + Labais" 779 recording_swcodec: "Kreisais + Labais"
780 </dest> 780 </dest>
781 <voice> 781 <voice>
782 *: none 782 *: none
783 recording_swcodec: "mono kreisais plus labais" 783 recording_swcodec: "mono kreisais plus labais"
784 </voice> 784 </voice>
785</phrase> 785</phrase>
786<phrase> 786<phrase>
787 id: LANG_CHANNEL_KARAOKE 787 id: LANG_CHANNEL_KARAOKE
788 desc: in sound_settings 788 desc: in sound_settings
789 user: core 789 user: core
790 <source> 790 <source>
791 *: "Karaoke" 791 *: "Karaoke"
792 </source> 792 </source>
793 <dest> 793 <dest>
794 *: "Karaoke" 794 *: "Karaoke"
795 </dest> 795 </dest>
796 <voice> 796 <voice>
797 *: "karaoke" 797 *: "karaoke"
798 </voice> 798 </voice>
799</phrase> 799</phrase>
800<phrase> 800<phrase>
801 id: LANG_STEREO_WIDTH 801 id: LANG_STEREO_WIDTH
802 desc: in sound_settings 802 desc: in sound_settings
803 user: core 803 user: core
804 <source> 804 <source>
805 *: "Stereo Width" 805 *: "Stereo Width"
806 </source> 806 </source>
807 <dest> 807 <dest>
808 *: "Stereo Platums" 808 *: "Stereo Platums"
809 </dest> 809 </dest>
810 <voice> 810 <voice>
811 *: "stereo platums" 811 *: "stereo platums"
812 </voice> 812 </voice>
813</phrase> 813</phrase>
814<phrase> 814<phrase>
815 id: LANG_CROSSFEED 815 id: LANG_CROSSFEED
816 desc: in sound settings 816 desc: in sound settings
817 user: core 817 user: core
818 <source> 818 <source>
819 *: none 819 *: none
820 swcodec: "Crossfeed" 820 swcodec: "Crossfeed"
821 </source> 821 </source>
822 <dest> 822 <dest>
823 *: none 823 *: none
824 swcodec: "KanÄlu IzlÄ«dzinÄÅ¡ana" 824 swcodec: "KanÄlu IzlÄ«dzinÄÅ¡ana"
825 </dest> 825 </dest>
826 <voice> 826 <voice>
827 *: none 827 *: none
828 swcodec: "kanaalu izliidzinaashana" 828 swcodec: "kanaalu izliidzinaashana"
829 </voice> 829 </voice>
830</phrase> 830</phrase>
831<phrase> 831<phrase>
832 id: LANG_CROSSFEED_DIRECT_GAIN 832 id: LANG_CROSSFEED_DIRECT_GAIN
833 desc: in crossfeed settings 833 desc: in crossfeed settings
834 user: core 834 user: core
835 <source> 835 <source>
836 *: none 836 *: none
837 swcodec: "Direct Gain" 837 swcodec: "Direct Gain"
838 </source> 838 </source>
839 <dest> 839 <dest>
840 *: none 840 *: none
841 swcodec: "Tiešais Skaļums" 841 swcodec: "Tiešais Skaļums"
842 </dest> 842 </dest>
843 <voice> 843 <voice>
844 *: none 844 *: none
845 swcodec: "tieshais skaljums" 845 swcodec: "tieshais skaljums"
846 </voice> 846 </voice>
847</phrase> 847</phrase>
848<phrase> 848<phrase>
849 id: LANG_CROSSFEED_CROSS_GAIN 849 id: LANG_CROSSFEED_CROSS_GAIN
850 desc: in crossfeed settings 850 desc: in crossfeed settings
851 user: core 851 user: core
852 <source> 852 <source>
853 *: none 853 *: none
854 swcodec: "Cross Gain" 854 swcodec: "Cross Gain"
855 </source> 855 </source>
856 <dest> 856 <dest>
857 *: none 857 *: none
858 swcodec: "Starpskaļums" 858 swcodec: "Starpskaļums"
859 </dest> 859 </dest>
860 <voice> 860 <voice>
861 *: none 861 *: none
862 swcodec: "starpskaljums" 862 swcodec: "starpskaljums"
863 </voice> 863 </voice>
864</phrase> 864</phrase>
865<phrase> 865<phrase>
866 id: LANG_CROSSFEED_HF_ATTENUATION 866 id: LANG_CROSSFEED_HF_ATTENUATION
867 desc: in crossfeed settings 867 desc: in crossfeed settings
868 user: core 868 user: core
869 <source> 869 <source>
870 *: none 870 *: none
871 swcodec: "High-Frequency Attenuation" 871 swcodec: "High-Frequency Attenuation"
872 </source> 872 </source>
873 <dest> 873 <dest>
874 *: none 874 *: none
875 swcodec: "Augsto FrekvenÄu VÄjinÄjums" 875 swcodec: "Augsto FrekvenÄu VÄjinÄjums"
876 </dest> 876 </dest>
877 <voice> 877 <voice>
878 *: none 878 *: none
879 swcodec: "augsto frekvenchu vaajinaajums" 879 swcodec: "augsto frekvenchu vaajinaajums"
880 </voice> 880 </voice>
881</phrase> 881</phrase>
882<phrase> 882<phrase>
883 id: LANG_CROSSFEED_HF_CUTOFF 883 id: LANG_CROSSFEED_HF_CUTOFF
884 desc: in crossfeed settings 884 desc: in crossfeed settings
885 user: core 885 user: core
886 <source> 886 <source>
887 *: none 887 *: none
888 swcodec: "High-Frequency Cutoff" 888 swcodec: "High-Frequency Cutoff"
889 </source> 889 </source>
890 <dest> 890 <dest>
891 *: none 891 *: none
892 swcodec: "Augsto FrekvenÄu SÄkums" 892 swcodec: "Augsto FrekvenÄu SÄkums"
893 </dest> 893 </dest>
894 <voice> 894 <voice>
895 *: none 895 *: none
896 swcodec: "augsto frekvenchu saakums" 896 swcodec: "augsto frekvenchu saakums"
897 </voice> 897 </voice>
898</phrase> 898</phrase>
899<phrase> 899<phrase>
900 id: LANG_EQUALIZER 900 id: LANG_EQUALIZER
901 desc: in the sound settings menu 901 desc: in the sound settings menu
902 user: core 902 user: core
903 <source> 903 <source>
904 *: none 904 *: none
905 swcodec: "Equalizer" 905 swcodec: "Equalizer"
906 </source> 906 </source>
907 <dest> 907 <dest>
908 *: none 908 *: none
909 swcodec: "Ekvalaizers" 909 swcodec: "Ekvalaizers"
910 </dest> 910 </dest>
911 <voice> 911 <voice>
912 *: none 912 *: none
913 swcodec: "ekvalaizers" 913 swcodec: "ekvalaizers"
914 </voice> 914 </voice>
915</phrase> 915</phrase>
916<phrase> 916<phrase>
917 id: LANG_EQUALIZER_ENABLED 917 id: LANG_EQUALIZER_ENABLED
918 desc: in the equalizer settings menu 918 desc: in the equalizer settings menu
919 user: core 919 user: core
920 <source> 920 <source>
921 *: none 921 *: none
922 swcodec: "Enable EQ" 922 swcodec: "Enable EQ"
923 </source> 923 </source>
924 <dest> 924 <dest>
925 *: none 925 *: none
926 swcodec: "Ieslēgt Ekvalaizeru" 926 swcodec: "Ieslēgt Ekvalaizeru"
927 </dest> 927 </dest>
928 <voice> 928 <voice>
929 *: none 929 *: none
930 swcodec: "ieslēgt ekvalaizeru" 930 swcodec: "ieslēgt ekvalaizeru"
931 </voice> 931 </voice>
932</phrase> 932</phrase>
933<phrase> 933<phrase>
934 id: LANG_EQUALIZER_GRAPHICAL 934 id: LANG_EQUALIZER_GRAPHICAL
935 desc: in the equalizer settings menu 935 desc: in the equalizer settings menu
936 user: core 936 user: core
937 <source> 937 <source>
938 *: none 938 *: none
939 swcodec: "Graphical EQ" 939 swcodec: "Graphical EQ"
940 </source> 940 </source>
941 <dest> 941 <dest>
942 *: none 942 *: none
943 swcodec: "Grafiskais Ekvalaizers" 943 swcodec: "Grafiskais Ekvalaizers"
944 </dest> 944 </dest>
945 <voice> 945 <voice>
946 *: none 946 *: none
947 swcodec: "grafiskais ekvalaizers" 947 swcodec: "grafiskais ekvalaizers"
948 </voice> 948 </voice>
949</phrase> 949</phrase>
950<phrase> 950<phrase>
951 id: LANG_EQUALIZER_PRECUT 951 id: LANG_EQUALIZER_PRECUT
952 desc: in eq settings 952 desc: in eq settings
953 user: core 953 user: core
954 <source> 954 <source>
955 *: none 955 *: none
956 swcodec: "Precut" 956 swcodec: "Precut"
957 </source> 957 </source>
958 <dest> 958 <dest>
959 *: none 959 *: none
960 swcodec: "PastiprinÄjums" 960 swcodec: "PastiprinÄjums"
961 </dest> 961 </dest>
962 <voice> 962 <voice>
963 *: none 963 *: none
964 swcodec: "kopeejais frekvenchu pastiprinaajums" 964 swcodec: "kopeejais frekvenchu pastiprinaajums"
965 </voice> 965 </voice>
966</phrase> 966</phrase>
967<phrase> 967<phrase>
968 id: LANG_EQUALIZER_GAIN 968 id: LANG_EQUALIZER_GAIN
969 desc: in the equalizer settings menu 969 desc: in the equalizer settings menu
970 user: core 970 user: core
971 <source> 971 <source>
972 *: none 972 *: none
973 swcodec: "Simple EQ Settings" 973 swcodec: "Simple EQ Settings"
974 </source> 974 </source>
975 <dest> 975 <dest>
976 *: none 976 *: none
977 swcodec: "VienkÄrÅ¡otais Ekvalaizers" 977 swcodec: "VienkÄrÅ¡otais Ekvalaizers"
978 </dest> 978 </dest>
979 <voice> 979 <voice>
980 *: none 980 *: none
981 swcodec: "vienkaarshotais ekvalaizers" 981 swcodec: "vienkaarshotais ekvalaizers"
982 </voice> 982 </voice>
983</phrase> 983</phrase>
984<phrase> 984<phrase>
985 id: LANG_EQUALIZER_ADVANCED 985 id: LANG_EQUALIZER_ADVANCED
986 desc: in the equalizer settings menu 986 desc: in the equalizer settings menu
987 user: core 987 user: core
988 <source> 988 <source>
989 *: none 989 *: none
990 swcodec: "Advanced EQ Settings" 990 swcodec: "Advanced EQ Settings"
991 </source> 991 </source>
992 <dest> 992 <dest>
993 *: none 993 *: none
994 swcodec: "Papildus UzstÄdÄ«jumi" 994 swcodec: "Papildus UzstÄdÄ«jumi"
995 </dest> 995 </dest>
996 <voice> 996 <voice>
997 *: none 997 *: none
998 swcodec: "papildus uzstaadiijumi" 998 swcodec: "papildus uzstaadiijumi"
999 </voice> 999 </voice>
1000</phrase> 1000</phrase>
1001<phrase> 1001<phrase>
1002 id: LANG_EQUALIZER_SAVE 1002 id: LANG_EQUALIZER_SAVE
1003 desc: in the equalizer settings menu 1003 desc: in the equalizer settings menu
1004 user: core 1004 user: core
1005 <source> 1005 <source>
1006 *: none 1006 *: none
1007 swcodec: "Save EQ Preset" 1007 swcodec: "Save EQ Preset"
1008 </source> 1008 </source>
1009 <dest> 1009 <dest>
1010 *: none 1010 *: none
1011 swcodec: "SaglabÄt UzstÄdÄ«jumus" 1011 swcodec: "SaglabÄt UzstÄdÄ«jumus"
1012 </dest> 1012 </dest>
1013 <voice> 1013 <voice>
1014 *: none 1014 *: none
1015 swcodec: "saglabaat ekvalaizera uzstaadiijumus" 1015 swcodec: "saglabaat ekvalaizera uzstaadiijumus"
1016 </voice> 1016 </voice>
1017</phrase> 1017</phrase>
1018<phrase> 1018<phrase>
1019 id: LANG_EQUALIZER_BROWSE 1019 id: LANG_EQUALIZER_BROWSE
1020 desc: in the equalizer settings menu 1020 desc: in the equalizer settings menu
1021 user: core 1021 user: core
1022 <source> 1022 <source>
1023 *: none 1023 *: none
1024 swcodec: "Browse EQ Presets" 1024 swcodec: "Browse EQ Presets"
1025 </source> 1025 </source>
1026 <dest> 1026 <dest>
1027 *: none 1027 *: none
1028 swcodec: "AplÅ«kot UzstÄdÄ«jumus" 1028 swcodec: "AplÅ«kot UzstÄdÄ«jumus"
1029 </dest> 1029 </dest>
1030 <voice> 1030 <voice>
1031 *: none 1031 *: none
1032 swcodec: "apluukot ekvalaizera uzstaadiijumus" 1032 swcodec: "apluukot ekvalaizera uzstaadiijumus"
1033 </voice> 1033 </voice>
1034</phrase> 1034</phrase>
1035<phrase> 1035<phrase>
1036 id: LANG_EQUALIZER_EDIT_MODE 1036 id: LANG_EQUALIZER_EDIT_MODE
1037 desc: in the equalizer settings menu 1037 desc: in the equalizer settings menu
1038 user: core 1038 user: core
1039 <source> 1039 <source>
1040 *: none 1040 *: none
1041 swcodec: "Edit mode: %s" 1041 swcodec: "Edit mode: %s"
1042 </source> 1042 </source>
1043 <dest> 1043 <dest>
1044 *: none 1044 *: none
1045 swcodec: "Režīms: %s" 1045 swcodec: "Režīms: %s"
1046 </dest> 1046 </dest>
1047 <voice> 1047 <voice>
1048 *: none 1048 *: none
1049 swcodec: "" 1049 swcodec: ""
1050 </voice> 1050 </voice>
1051</phrase> 1051</phrase>
1052<phrase> 1052<phrase>
1053 id: LANG_EQUALIZER_GAIN_ITEM 1053 id: LANG_EQUALIZER_GAIN_ITEM
1054 desc: in the equalizer settings menu 1054 desc: in the equalizer settings menu
1055 user: core 1055 user: core
1056 <source> 1056 <source>
1057 *: none 1057 *: none
1058 swcodec: "%d Hz Band Gain" 1058 swcodec: "%d Hz Band Gain"
1059 </source> 1059 </source>
1060 <dest> 1060 <dest>
1061 *: none 1061 *: none
1062 swcodec: "%d Hz Joslas Stiprums" 1062 swcodec: "%d Hz Joslas Stiprums"
1063 </dest> 1063 </dest>
1064 <voice> 1064 <voice>
1065 *: none 1065 *: none
1066 swcodec: "joslas stiprums hercos" 1066 swcodec: "joslas stiprums hercos"
1067 </voice> 1067 </voice>
1068</phrase> 1068</phrase>
1069<phrase> 1069<phrase>
1070 id: LANG_EQUALIZER_BAND_LOW_SHELF 1070 id: LANG_EQUALIZER_BAND_LOW_SHELF
1071 desc: in the equalizer settings menu 1071 desc: in the equalizer settings menu
1072 user: core 1072 user: core
1073 <source> 1073 <source>
1074 *: none 1074 *: none
1075 swcodec: "Low Shelf Filter" 1075 swcodec: "Low Shelf Filter"
1076 </source> 1076 </source>
1077 <dest> 1077 <dest>
1078 *: none 1078 *: none
1079 swcodec: "Basu Filtrs" 1079 swcodec: "Basu Filtrs"
1080 </dest> 1080 </dest>
1081 <voice> 1081 <voice>
1082 *: none 1082 *: none
1083 swcodec: "basu filtrs" 1083 swcodec: "basu filtrs"
1084 </voice> 1084 </voice>
1085</phrase> 1085</phrase>
1086<phrase> 1086<phrase>
1087 id: LANG_EQUALIZER_BAND_PEAK 1087 id: LANG_EQUALIZER_BAND_PEAK
1088 desc: in the equalizer settings menu 1088 desc: in the equalizer settings menu
1089 user: core 1089 user: core
1090 <source> 1090 <source>
1091 *: none 1091 *: none
1092 swcodec: "Peak Filter %d" 1092 swcodec: "Peak Filter %d"
1093 </source> 1093 </source>
1094 <dest> 1094 <dest>
1095 *: none 1095 *: none
1096 swcodec: "PÄ«Ä·a Filtrs %d" 1096 swcodec: "PÄ«Ä·a Filtrs %d"
1097 </dest> 1097 </dest>
1098 <voice> 1098 <voice>
1099 *: none 1099 *: none
1100 swcodec: "piikja filtrs" 1100 swcodec: "piikja filtrs"
1101 </voice> 1101 </voice>
1102</phrase> 1102</phrase>
1103<phrase> 1103<phrase>
1104 id: LANG_EQUALIZER_BAND_HIGH_SHELF 1104 id: LANG_EQUALIZER_BAND_HIGH_SHELF
1105 desc: in the equalizer settings menu 1105 desc: in the equalizer settings menu
1106 user: core 1106 user: core
1107 <source> 1107 <source>
1108 *: none 1108 *: none
1109 swcodec: "High Shelf Filter" 1109 swcodec: "High Shelf Filter"
1110 </source> 1110 </source>
1111 <dest> 1111 <dest>
1112 *: none 1112 *: none
1113 swcodec: "Augsto FrekvenÄu Filtrs" 1113 swcodec: "Augsto FrekvenÄu Filtrs"
1114 </dest> 1114 </dest>
1115 <voice> 1115 <voice>
1116 *: none 1116 *: none
1117 swcodec: "augsto frekvenchu filtrs" 1117 swcodec: "augsto frekvenchu filtrs"
1118 </voice> 1118 </voice>
1119</phrase> 1119</phrase>
1120<phrase> 1120<phrase>
1121 id: LANG_EQUALIZER_BAND_CUTOFF 1121 id: LANG_EQUALIZER_BAND_CUTOFF
1122 desc: in the equalizer settings menu 1122 desc: in the equalizer settings menu
1123 user: core 1123 user: core
1124 <source> 1124 <source>
1125 *: none 1125 *: none
1126 swcodec: "Cutoff Frequency" 1126 swcodec: "Cutoff Frequency"
1127 </source> 1127 </source>
1128 <dest> 1128 <dest>
1129 *: none 1129 *: none
1130 swcodec: "Robežfrekvence" 1130 swcodec: "Robežfrekvence"
1131 </dest> 1131 </dest>
1132 <voice> 1132 <voice>
1133 *: none 1133 *: none
1134 swcodec: "robezhfrekvence" 1134 swcodec: "robezhfrekvence"
1135 </voice> 1135 </voice>
1136</phrase> 1136</phrase>
1137<phrase> 1137<phrase>
1138 id: LANG_EQUALIZER_BAND_CENTER 1138 id: LANG_EQUALIZER_BAND_CENTER
1139 desc: in the equalizer settings menu 1139 desc: in the equalizer settings menu
1140 user: core 1140 user: core
1141 <source> 1141 <source>
1142 *: none 1142 *: none
1143 swcodec: "Centre Frequency" 1143 swcodec: "Centre Frequency"
1144 </source> 1144 </source>
1145 <dest> 1145 <dest>
1146 *: none 1146 *: none
1147 swcodec: "Centra Frekvence" 1147 swcodec: "Centra Frekvence"
1148 </dest> 1148 </dest>
1149 <voice> 1149 <voice>
1150 *: none 1150 *: none
1151 swcodec: "centra frekvence" 1151 swcodec: "centra frekvence"
1152 </voice> 1152 </voice>
1153</phrase> 1153</phrase>
1154<phrase> 1154<phrase>
1155 id: LANG_EQUALIZER_BAND_Q 1155 id: LANG_EQUALIZER_BAND_Q
1156 desc: in the equalizer settings menu 1156 desc: in the equalizer settings menu
1157 user: core 1157 user: core
1158 <source> 1158 <source>
1159 *: none 1159 *: none
1160 swcodec: "Q" 1160 swcodec: "Q"
1161 </source> 1161 </source>
1162 <dest> 1162 <dest>
1163 *: none 1163 *: none
1164 swcodec: "Platums" 1164 swcodec: "Platums"
1165 </dest> 1165 </dest>
1166 <voice> 1166 <voice>
1167 *: none 1167 *: none
1168 swcodec: "platums" 1168 swcodec: "platums"
1169 </voice> 1169 </voice>
1170</phrase> 1170</phrase>
1171<phrase> 1171<phrase>
1172 id: LANG_DITHERING 1172 id: LANG_DITHERING
1173 desc: in the sound settings menu 1173 desc: in the sound settings menu
1174 user: core 1174 user: core
1175 <source> 1175 <source>
1176 *: none 1176 *: none
1177 swcodec: "Dithering" 1177 swcodec: "Dithering"
1178 </source> 1178 </source>
1179 <dest> 1179 <dest>
1180 *: none 1180 *: none
1181 swcodec: "Skaņas IzlÄ«dzinÄÅ¡ana" 1181 swcodec: "Skaņas IzlÄ«dzinÄÅ¡ana"
1182 </dest> 1182 </dest>
1183 <voice> 1183 <voice>
1184 *: none 1184 *: none
1185 swcodec: "skanjas izliidzinaashana" 1185 swcodec: "skanjas izliidzinaashana"
1186 </voice> 1186 </voice>
1187</phrase> 1187</phrase>
1188<phrase> 1188<phrase>
1189 id: LANG_LOUDNESS 1189 id: LANG_LOUDNESS
1190 desc: in sound_settings 1190 desc: in sound_settings
1191 user: core 1191 user: core
1192 <source> 1192 <source>
1193 *: none 1193 *: none
1194 masf: "Loudness" 1194 masf: "Loudness"
1195 </source> 1195 </source>
1196 <dest> 1196 <dest>
1197 *: none 1197 *: none
1198 masf: "Skaļums" 1198 masf: "Skaļums"
1199 </dest> 1199 </dest>
1200 <voice> 1200 <voice>
1201 *: none 1201 *: none
1202 masf: "skaljums" 1202 masf: "skaljums"
1203 </voice> 1203 </voice>
1204</phrase> 1204</phrase>
1205<phrase> 1205<phrase>
1206 id: LANG_AUTOVOL 1206 id: LANG_AUTOVOL
1207 desc: in sound_settings 1207 desc: in sound_settings
1208 user: core 1208 user: core
1209 <source> 1209 <source>
1210 *: none 1210 *: none
1211 masf: "Auto Volume" 1211 masf: "Auto Volume"
1212 </source> 1212 </source>
1213 <dest> 1213 <dest>
1214 *: none 1214 *: none
1215 masf: "Auto Skaļums" 1215 masf: "Auto Skaļums"
1216 </dest> 1216 </dest>
1217 <voice> 1217 <voice>
1218 *: none 1218 *: none
1219 masf: "auto skaljums" 1219 masf: "auto skaljums"
1220 </voice> 1220 </voice>
1221</phrase> 1221</phrase>
1222<phrase> 1222<phrase>
1223 id: LANG_DECAY 1223 id: LANG_DECAY
1224 desc: in sound_settings 1224 desc: in sound_settings
1225 user: core 1225 user: core
1226 <source> 1226 <source>
1227 *: none 1227 *: none
1228 masf: "AV Decay Time" 1228 masf: "AV Decay Time"
1229 </source> 1229 </source>
1230 <dest> 1230 <dest>
1231 *: none 1231 *: none
1232 masf: "AS Regulēšanas Laiks" 1232 masf: "AS Regulēšanas Laiks"
1233 </dest> 1233 </dest>
1234 <voice> 1234 <voice>
1235 *: none 1235 *: none
1236 masf: "" 1236 masf: ""
1237 </voice> 1237 </voice>
1238</phrase> 1238</phrase>
1239<phrase> 1239<phrase>
1240 id: LANG_SUPERBASS 1240 id: LANG_SUPERBASS
1241 desc: in sound settings 1241 desc: in sound settings
1242 user: core 1242 user: core
1243 <source> 1243 <source>
1244 *: none 1244 *: none
1245 masf: "Super Bass" 1245 masf: "Super Bass"
1246 </source> 1246 </source>
1247 <dest> 1247 <dest>
1248 *: none 1248 *: none
1249 masf: "Basu PastiprinÄjums" 1249 masf: "Basu PastiprinÄjums"
1250 </dest> 1250 </dest>
1251 <voice> 1251 <voice>
1252 *: none 1252 *: none
1253 masf: "basu pastiprinaajums" 1253 masf: "basu pastiprinaajums"
1254 </voice> 1254 </voice>
1255</phrase> 1255</phrase>
1256<phrase> 1256<phrase>
1257 id: LANG_MDB_ENABLE 1257 id: LANG_MDB_ENABLE
1258 desc: in sound settings 1258 desc: in sound settings
1259 user: core 1259 user: core
1260 <source> 1260 <source>
1261 *: none 1261 *: none
1262 masf: "MDB Enable" 1262 masf: "MDB Enable"
1263 </source> 1263 </source>
1264 <dest> 1264 <dest>
1265 *: none 1265 *: none
1266 masf: "IeslÄ“gt MÄkslÄ«gos Basus" 1266 masf: "IeslÄ“gt MÄkslÄ«gos Basus"
1267 </dest> 1267 </dest>
1268 <voice> 1268 <voice>
1269 *: none 1269 *: none
1270 masf: "iesleegt maaksliigos basus" 1270 masf: "iesleegt maaksliigos basus"
1271 </voice> 1271 </voice>
1272</phrase> 1272</phrase>
1273<phrase> 1273<phrase>
1274 id: LANG_MDB_STRENGTH 1274 id: LANG_MDB_STRENGTH
1275 desc: in sound settings 1275 desc: in sound settings
1276 user: core 1276 user: core
1277 <source> 1277 <source>
1278 *: none 1278 *: none
1279 masf: "MDB Strength" 1279 masf: "MDB Strength"
1280 </source> 1280 </source>
1281 <dest> 1281 <dest>
1282 *: none 1282 *: none
1283 masf: "MB Stiprums" 1283 masf: "MB Stiprums"
1284 </dest> 1284 </dest>
1285 <voice> 1285 <voice>
1286 *: none 1286 *: none
1287 masf: "maaksliigo basu stiprums" 1287 masf: "maaksliigo basu stiprums"
1288 </voice> 1288 </voice>
1289</phrase> 1289</phrase>
1290<phrase> 1290<phrase>
1291 id: LANG_MDB_HARMONICS 1291 id: LANG_MDB_HARMONICS
1292 desc: in sound settings 1292 desc: in sound settings
1293 user: core 1293 user: core
1294 <source> 1294 <source>
1295 *: none 1295 *: none
1296 masf: "MDB Harmonics" 1296 masf: "MDB Harmonics"
1297 </source> 1297 </source>
1298 <dest> 1298 <dest>
1299 *: none 1299 *: none
1300 masf: "MB Konvertēšana" 1300 masf: "MB Konvertēšana"
1301 </dest> 1301 </dest>
1302 <voice> 1302 <voice>
1303 *: none 1303 *: none
1304 masf: "maaksliigo basu konverteeshana" 1304 masf: "maaksliigo basu konverteeshana"
1305 </voice> 1305 </voice>
1306</phrase> 1306</phrase>
1307<phrase> 1307<phrase>
1308 id: LANG_MDB_CENTER 1308 id: LANG_MDB_CENTER
1309 desc: in sound settings 1309 desc: in sound settings
1310 user: core 1310 user: core
1311 <source> 1311 <source>
1312 *: none 1312 *: none
1313 masf: "MDB Centre Frequency" 1313 masf: "MDB Centre Frequency"
1314 </source> 1314 </source>
1315 <dest> 1315 <dest>
1316 *: none 1316 *: none
1317 masf: "MB Centra Frekvence" 1317 masf: "MB Centra Frekvence"
1318 </dest> 1318 </dest>
1319 <voice> 1319 <voice>
1320 *: none 1320 *: none
1321 masf: "maaksliigo basu centra frekvence" 1321 masf: "maaksliigo basu centra frekvence"
1322 </voice> 1322 </voice>
1323</phrase> 1323</phrase>
1324<phrase> 1324<phrase>
1325 id: LANG_MDB_SHAPE 1325 id: LANG_MDB_SHAPE
1326 desc: in sound settings 1326 desc: in sound settings
1327 user: core 1327 user: core
1328 <source> 1328 <source>
1329 *: none 1329 *: none
1330 masf: "MDB Shape" 1330 masf: "MDB Shape"
1331 </source> 1331 </source>
1332 <dest> 1332 <dest>
1333 *: none 1333 *: none
1334 masf: "MB Forma" 1334 masf: "MB Forma"
1335 </dest> 1335 </dest>
1336 <voice> 1336 <voice>
1337 *: none 1337 *: none
1338 masf: "maaksliigo basu forma" 1338 masf: "maaksliigo basu forma"
1339 </voice> 1339 </voice>
1340</phrase> 1340</phrase>
1341<phrase> 1341<phrase>
1342 id: LANG_GENERAL_SETTINGS 1342 id: LANG_GENERAL_SETTINGS
1343 desc: in the main menu 1343 desc: in the main menu
1344 user: core 1344 user: core
1345 <source> 1345 <source>
1346 *: "General Settings" 1346 *: "General Settings"
1347 </source> 1347 </source>
1348 <dest> 1348 <dest>
1349 *: "VispÄrÄ“ji UzstÄdÄ«jumi" 1349 *: "VispÄrÄ“ji UzstÄdÄ«jumi"
1350 </dest> 1350 </dest>
1351 <voice> 1351 <voice>
1352 *: "vispaareeji uzstaadiijumi" 1352 *: "vispaareeji uzstaadiijumi"
1353 </voice> 1353 </voice>
1354</phrase> 1354</phrase>
1355<phrase> 1355<phrase>
1356 id: LANG_PLAYBACK 1356 id: LANG_PLAYBACK
1357 desc: in settings_menu() 1357 desc: in settings_menu()
1358 user: core 1358 user: core
1359 <source> 1359 <source>
1360 *: "Playback Settings" 1360 *: "Playback Settings"
1361 </source> 1361 </source>
1362 <dest> 1362 <dest>
1363 *: "AtskaņoÅ¡anas UzstÄdÄ«jumi" 1363 *: "AtskaņoÅ¡anas UzstÄdÄ«jumi"
1364 </dest> 1364 </dest>
1365 <voice> 1365 <voice>
1366 *: "atskanjoshanas Uzstaadiijumi" 1366 *: "atskanjoshanas Uzstaadiijumi"
1367 </voice> 1367 </voice>
1368</phrase> 1368</phrase>
1369<phrase> 1369<phrase>
1370 id: LANG_SHUFFLE 1370 id: LANG_SHUFFLE
1371 desc: in settings_menu 1371 desc: in settings_menu
1372 user: core 1372 user: core
1373 <source> 1373 <source>
1374 *: "Shuffle" 1374 *: "Shuffle"
1375 </source> 1375 </source>
1376 <dest> 1376 <dest>
1377 *: "Jaukta Secība" 1377 *: "Jaukta Secība"
1378 </dest> 1378 </dest>
1379 <voice> 1379 <voice>
1380 *: "jaukta seciiba" 1380 *: "jaukta seciiba"
1381 </voice> 1381 </voice>
1382</phrase> 1382</phrase>
1383<phrase> 1383<phrase>
1384 id: LANG_REPEAT 1384 id: LANG_REPEAT
1385 desc: in settings_menu 1385 desc: in settings_menu
1386 user: core 1386 user: core
1387 <source> 1387 <source>
1388 *: "Repeat" 1388 *: "Repeat"
1389 </source> 1389 </source>
1390 <dest> 1390 <dest>
1391 *: "AtkÄrtot" 1391 *: "AtkÄrtot"
1392 </dest> 1392 </dest>
1393 <voice> 1393 <voice>
1394 *: "atkaartot" 1394 *: "atkaartot"
1395 </voice> 1395 </voice>
1396</phrase> 1396</phrase>
1397<phrase> 1397<phrase>
1398 id: LANG_ALL 1398 id: LANG_ALL
1399 desc: generic string used both in dir file filter and repeat mode selection 1399 desc: generic string used both in dir file filter and repeat mode selection
1400 user: core 1400 user: core
1401 <source> 1401 <source>
1402 *: "All" 1402 *: "All"
1403 </source> 1403 </source>
1404 <dest> 1404 <dest>
1405 *: "Visus" 1405 *: "Visus"
1406 </dest> 1406 </dest>
1407 <voice> 1407 <voice>
1408 *: "visus" 1408 *: "visus"
1409 </voice> 1409 </voice>
1410</phrase> 1410</phrase>
1411<phrase> 1411<phrase>
1412 id: LANG_REPEAT_ONE 1412 id: LANG_REPEAT_ONE
1413 desc: repeat one song 1413 desc: repeat one song
1414 user: core 1414 user: core
1415 <source> 1415 <source>
1416 *: "One" 1416 *: "One"
1417 </source> 1417 </source>
1418 <dest> 1418 <dest>
1419 *: "Vienu" 1419 *: "Vienu"
1420 </dest> 1420 </dest>
1421 <voice> 1421 <voice>
1422 *: "vienu" 1422 *: "vienu"
1423 </voice> 1423 </voice>
1424</phrase> 1424</phrase>
1425<phrase> 1425<phrase>
1426 id: LANG_REPEAT_AB 1426 id: LANG_REPEAT_AB
1427 desc: repeat range from point A to B 1427 desc: repeat range from point A to B
1428 user: core 1428 user: core
1429 <source> 1429 <source>
1430 *: "A-B" 1430 *: "A-B"
1431 </source> 1431 </source>
1432 <dest> 1432 <dest>
1433 *: "A-B" 1433 *: "A-B"
1434 </dest> 1434 </dest>
1435 <voice> 1435 <voice>
1436 *: "aa-bee" 1436 *: "aa-bee"
1437 </voice> 1437 </voice>
1438</phrase> 1438</phrase>
1439<phrase> 1439<phrase>
1440 id: LANG_PLAY_SELECTED 1440 id: LANG_PLAY_SELECTED
1441 desc: in settings_menu 1441 desc: in settings_menu
1442 user: core 1442 user: core
1443 <source> 1443 <source>
1444 *: "Play Selected First" 1444 *: "Play Selected First"
1445 </source> 1445 </source>
1446 <dest> 1446 <dest>
1447 *: "Izvēlēto Atskaņot Pirmo" 1447 *: "Izvēlēto Atskaņot Pirmo"
1448 </dest> 1448 </dest>
1449 <voice> 1449 <voice>
1450 *: "izveeleeto failu atskanjot pirmo" 1450 *: "izveeleeto failu atskanjot pirmo"
1451 </voice> 1451 </voice>
1452</phrase> 1452</phrase>
1453<phrase> 1453<phrase>
1454 id: LANG_WIND_MENU 1454 id: LANG_WIND_MENU
1455 desc: in the playback sub menu 1455 desc: in the playback sub menu
1456 user: core 1456 user: core
1457 <source> 1457 <source>
1458 *: "Fast-Forward/Rewind" 1458 *: "Fast-Forward/Rewind"
1459 </source> 1459 </source>
1460 <dest> 1460 <dest>
1461 *: "PÄrtÄ«Å¡ana/AttÄ«Å¡ana" 1461 *: "PÄrtÄ«Å¡ana/AttÄ«Å¡ana"
1462 </dest> 1462 </dest>
1463 <voice> 1463 <voice>
1464 *: "aatraa paartiishana un attiishana" 1464 *: "aatraa paartiishana un attiishana"
1465 </voice> 1465 </voice>
1466</phrase> 1466</phrase>
1467<phrase> 1467<phrase>
1468 id: LANG_FFRW_STEP 1468 id: LANG_FFRW_STEP
1469 desc: in settings_menu 1469 desc: in settings_menu
1470 user: core 1470 user: core
1471 <source> 1471 <source>
1472 *: "FF/RW Min Step" 1472 *: "FF/RW Min Step"
1473 </source> 1473 </source>
1474 <dest> 1474 <dest>
1475 *: "PT/ATT Min Solis" 1475 *: "PT/ATT Min Solis"
1476 </dest> 1476 </dest>
1477 <voice> 1477 <voice>
1478 *: "minimaalais solis" 1478 *: "minimaalais solis"
1479 </voice> 1479 </voice>
1480</phrase> 1480</phrase>
1481<phrase> 1481<phrase>
1482 id: LANG_FFRW_ACCEL 1482 id: LANG_FFRW_ACCEL
1483 desc: in settings_menu 1483 desc: in settings_menu
1484 user: core 1484 user: core
1485 <source> 1485 <source>
1486 *: "FF/RW Accel" 1486 *: "FF/RW Accel"
1487 </source> 1487 </source>
1488 <dest> 1488 <dest>
1489 *: "PT/ATT PaÄtrin" 1489 *: "PT/ATT PaÄtrin"
1490 </dest> 1490 </dest>
1491 <voice> 1491 <voice>
1492 *: "Paaatrinaajums" 1492 *: "Paaatrinaajums"
1493 </voice> 1493 </voice>
1494</phrase> 1494</phrase>
1495<phrase> 1495<phrase>
1496 id: LANG_MP3BUFFER_MARGIN 1496 id: LANG_MP3BUFFER_MARGIN
1497 desc: MP3 buffer margin time 1497 desc: MP3 buffer margin time
1498 user: core 1498 user: core
1499 <source> 1499 <source>
1500 *: "Anti-Skip Buffer" 1500 *: "Anti-Skip Buffer"
1501 flash_storage: none 1501 flash_storage: none
1502 </source> 1502 </source>
1503 <dest> 1503 <dest>
1504 *: "PretraustÄ«Å¡anÄs Buferis" 1504 *: "PretraustÄ«Å¡anÄs Buferis"
1505 flash_storage: none 1505 flash_storage: none
1506 </dest> 1506 </dest>
1507 <voice> 1507 <voice>
1508 *: "pretraustiishanaas buferis" 1508 *: "pretraustiishanaas buferis"
1509 flash_storage: none 1509 flash_storage: none
1510 </voice> 1510 </voice>
1511</phrase> 1511</phrase>
1512<phrase> 1512<phrase>
1513 id: LANG_FADE_ON_STOP 1513 id: LANG_FADE_ON_STOP
1514 desc: options menu to set fade on stop or pause 1514 desc: options menu to set fade on stop or pause
1515 user: core 1515 user: core
1516 <source> 1516 <source>
1517 *: "Fade on Stop/Pause" 1517 *: "Fade on Stop/Pause"
1518 </source> 1518 </source>
1519 <dest> 1519 <dest>
1520 *: "Izdzišana pie Stop/Pauzes" 1520 *: "Izdzišana pie Stop/Pauzes"
1521 </dest> 1521 </dest>
1522 <voice> 1522 <voice>
1523 *: "izdzishana pie stop vai pauzes" 1523 *: "izdzishana pie stop vai pauzes"
1524 </voice> 1524 </voice>
1525</phrase> 1525</phrase>
1526<phrase> 1526<phrase>
1527 id: LANG_PARTY_MODE 1527 id: LANG_PARTY_MODE
1528 desc: party mode 1528 desc: party mode
1529 user: core 1529 user: core
1530 <source> 1530 <source>
1531 *: "Party Mode" 1531 *: "Party Mode"
1532 </source> 1532 </source>
1533 <dest> 1533 <dest>
1534 *: "Ballītes Režīms" 1534 *: "Ballītes Režīms"
1535 </dest> 1535 </dest>
1536 <voice> 1536 <voice>
1537 *: "balliites rezhiims" 1537 *: "balliites rezhiims"
1538 </voice> 1538 </voice>
1539</phrase> 1539</phrase>
1540<phrase> 1540<phrase>
1541 id: LANG_CROSSFADE 1541 id: LANG_CROSSFADE
1542 desc: in playback settings 1542 desc: in playback settings
1543 user: core 1543 user: core
1544 <source> 1544 <source>
1545 *: none 1545 *: none
1546 crossfade: "Crossfade" 1546 crossfade: "Crossfade"
1547 </source> 1547 </source>
1548 <dest> 1548 <dest>
1549 *: none 1549 *: none
1550 crossfade: "PÄrklÄÅ¡anÄs" 1550 crossfade: "PÄrklÄÅ¡anÄs"
1551 </dest> 1551 </dest>
1552 <voice> 1552 <voice>
1553 *: none 1553 *: none
1554 crossfade: "paarklaashanaas" 1554 crossfade: "paarklaashanaas"
1555 </voice> 1555 </voice>
1556</phrase> 1556</phrase>
1557<phrase> 1557<phrase>
1558 id: LANG_CROSSFADE_ENABLE 1558 id: LANG_CROSSFADE_ENABLE
1559 desc: in crossfade settings menu 1559 desc: in crossfade settings menu
1560 user: core 1560 user: core
1561 <source> 1561 <source>
1562 *: none 1562 *: none
1563 crossfade: "Enable Crossfade" 1563 crossfade: "Enable Crossfade"
1564 </source> 1564 </source>
1565 <dest> 1565 <dest>
1566 *: none 1566 *: none
1567 crossfade: "Izmantot PÄrklÄÅ¡anos" 1567 crossfade: "Izmantot PÄrklÄÅ¡anos"
1568 </dest> 1568 </dest>
1569 <voice> 1569 <voice>
1570 *: none 1570 *: none
1571 crossfade: "izmantot paarklaashanos" 1571 crossfade: "izmantot paarklaashanos"
1572 </voice> 1572 </voice>
1573</phrase> 1573</phrase>
1574<phrase> 1574<phrase>
1575 id: LANG_MANTRACKSKIP 1575 id: LANG_MANTRACKSKIP
1576 desc: in crossfade settings 1576 desc: in crossfade settings
1577 user: core 1577 user: core
1578 <source> 1578 <source>
1579 *: none 1579 *: none
1580 crossfade: "Manual Track Skip Only" 1580 crossfade: "Manual Track Skip Only"
1581 </source> 1581 </source>
1582 <dest> 1582 <dest>
1583 *: none 1583 *: none
1584 crossfade: "Tikai PÄrslÄ“dzot" 1584 crossfade: "Tikai PÄrslÄ“dzot"
1585 </dest> 1585 </dest>
1586 <voice> 1586 <voice>
1587 *: none 1587 *: none
1588 crossfade: "tikai paarsleedzot dziesmas" 1588 crossfade: "tikai paarsleedzot dziesmas"
1589 </voice> 1589 </voice>
1590</phrase> 1590</phrase>
1591<phrase> 1591<phrase>
1592 id: LANG_SHUFFLE_TRACKSKIP 1592 id: LANG_SHUFFLE_TRACKSKIP
1593 desc: in settings_menu 1593 desc: in settings_menu
1594 user: core 1594 user: core
1595 <source> 1595 <source>
1596 *: none 1596 *: none
1597 crossfade: "Shuffle or Manual Track Skip" 1597 crossfade: "Shuffle or Manual Track Skip"
1598 </source> 1598 </source>
1599 <dest> 1599 <dest>
1600 *: none 1600 *: none
1601 crossfade: "Jaukta SecÄ«ba Vai PÄrslÄ“dzoties" 1601 crossfade: "Jaukta SecÄ«ba Vai PÄrslÄ“dzoties"
1602 </dest> 1602 </dest>
1603 <voice> 1603 <voice>
1604 *: none 1604 *: none
1605 crossfade: "atskanjojot jauktaa seciibaa vai paarsleedzoties" 1605 crossfade: "atskanjojot jauktaa seciibaa vai paarsleedzoties"
1606 </voice> 1606 </voice>
1607</phrase> 1607</phrase>
1608<phrase> 1608<phrase>
1609 id: LANG_CROSSFADE_FADE_IN_DELAY 1609 id: LANG_CROSSFADE_FADE_IN_DELAY
1610 desc: in crossfade settings menu 1610 desc: in crossfade settings menu
1611 user: core 1611 user: core
1612 <source> 1612 <source>
1613 *: none 1613 *: none
1614 crossfade: "Fade-In Delay" 1614 crossfade: "Fade-In Delay"
1615 </source> 1615 </source>
1616 <dest> 1616 <dest>
1617 *: none 1617 *: none
1618 crossfade: "Ievada Aizture" 1618 crossfade: "Ievada Aizture"
1619 </dest> 1619 </dest>
1620 <voice> 1620 <voice>
1621 *: none 1621 *: none
1622 crossfade: "ievada aizture" 1622 crossfade: "ievada aizture"
1623 </voice> 1623 </voice>
1624</phrase> 1624</phrase>
1625<phrase> 1625<phrase>
1626 id: LANG_CROSSFADE_FADE_IN_DURATION 1626 id: LANG_CROSSFADE_FADE_IN_DURATION
1627 desc: in crossfade settings menu 1627 desc: in crossfade settings menu
1628 user: core 1628 user: core
1629 <source> 1629 <source>
1630 *: none 1630 *: none
1631 crossfade: "Fade-In Duration" 1631 crossfade: "Fade-In Duration"
1632 </source> 1632 </source>
1633 <dest> 1633 <dest>
1634 *: none 1634 *: none
1635 crossfade: "Ievada Garums" 1635 crossfade: "Ievada Garums"
1636 </dest> 1636 </dest>
1637 <voice> 1637 <voice>
1638 *: none 1638 *: none
1639 crossfade: "ievada garums" 1639 crossfade: "ievada garums"
1640 </voice> 1640 </voice>
1641</phrase> 1641</phrase>
1642<phrase> 1642<phrase>
1643 id: LANG_CROSSFADE_FADE_OUT_DELAY 1643 id: LANG_CROSSFADE_FADE_OUT_DELAY
1644 desc: in crossfade settings menu 1644 desc: in crossfade settings menu
1645 user: core 1645 user: core
1646 <source> 1646 <source>
1647 *: none 1647 *: none
1648 crossfade: "Fade-Out Delay" 1648 crossfade: "Fade-Out Delay"
1649 </source> 1649 </source>
1650 <dest> 1650 <dest>
1651 *: none 1651 *: none
1652 crossfade: "Beigu Aizture" 1652 crossfade: "Beigu Aizture"
1653 </dest> 1653 </dest>
1654 <voice> 1654 <voice>
1655 *: none 1655 *: none
1656 crossfade: "beigu aizture" 1656 crossfade: "beigu aizture"
1657 </voice> 1657 </voice>
1658</phrase> 1658</phrase>
1659<phrase> 1659<phrase>
1660 id: LANG_CROSSFADE_FADE_OUT_DURATION 1660 id: LANG_CROSSFADE_FADE_OUT_DURATION
1661 desc: in crossfade settings menu 1661 desc: in crossfade settings menu
1662 user: core 1662 user: core
1663 <source> 1663 <source>
1664 *: none 1664 *: none
1665 crossfade: "Fade-Out Duration" 1665 crossfade: "Fade-Out Duration"
1666 </source> 1666 </source>
1667 <dest> 1667 <dest>
1668 *: none 1668 *: none
1669 crossfade: "Beigu Garums" 1669 crossfade: "Beigu Garums"
1670 </dest> 1670 </dest>
1671 <voice> 1671 <voice>
1672 *: none 1672 *: none
1673 crossfade: "beigu garums" 1673 crossfade: "beigu garums"
1674 </voice> 1674 </voice>
1675</phrase> 1675</phrase>
1676<phrase> 1676<phrase>
1677 id: LANG_CROSSFADE_FADE_OUT_MODE 1677 id: LANG_CROSSFADE_FADE_OUT_MODE
1678 desc: in crossfade settings menu 1678 desc: in crossfade settings menu
1679 user: core 1679 user: core
1680 <source> 1680 <source>
1681 *: none 1681 *: none
1682 crossfade: "Fade-Out Mode" 1682 crossfade: "Fade-Out Mode"
1683 </source> 1683 </source>
1684 <dest> 1684 <dest>
1685 *: none 1685 *: none
1686 crossfade: "Beigu Režīms" 1686 crossfade: "Beigu Režīms"
1687 </dest> 1687 </dest>
1688 <voice> 1688 <voice>
1689 *: none 1689 *: none
1690 crossfade: "beigu rezhiims" 1690 crossfade: "beigu rezhiims"
1691 </voice> 1691 </voice>
1692</phrase> 1692</phrase>
1693<phrase> 1693<phrase>
1694 id: LANG_MIX 1694 id: LANG_MIX
1695 desc: in playback settings, crossfade option 1695 desc: in playback settings, crossfade option
1696 user: core 1696 user: core
1697 <source> 1697 <source>
1698 *: none 1698 *: none
1699 crossfade: "Mix" 1699 crossfade: "Mix"
1700 </source> 1700 </source>
1701 <dest> 1701 <dest>
1702 *: none 1702 *: none
1703 crossfade: "SajaukÅ¡anÄs" 1703 crossfade: "SajaukÅ¡anÄs"
1704 </dest> 1704 </dest>
1705 <voice> 1705 <voice>
1706 *: none 1706 *: none
1707 crossfade: "sajaukshanaas" 1707 crossfade: "sajaukshanaas"
1708 </voice> 1708 </voice>
1709</phrase> 1709</phrase>
1710<phrase> 1710<phrase>
1711 id: LANG_REPLAYGAIN 1711 id: LANG_REPLAYGAIN
1712 desc: in replaygain 1712 desc: in replaygain
1713 user: core 1713 user: core
1714 <source> 1714 <source>
1715 *: "Replaygain" 1715 *: "Replaygain"
1716 </source> 1716 </source>
1717 <dest> 1717 <dest>
1718 *: "Skaļuma NormalizÄcija" 1718 *: "Skaļuma NormalizÄcija"
1719 </dest> 1719 </dest>
1720 <voice> 1720 <voice>
1721 *: "skaljuma normalizaacija" 1721 *: "skaljuma normalizaacija"
1722 </voice> 1722 </voice>
1723</phrase> 1723</phrase>
1724<phrase> 1724<phrase>
1725 id: LANG_REPLAYGAIN_NOCLIP 1725 id: LANG_REPLAYGAIN_NOCLIP
1726 desc: in replaygain 1726 desc: in replaygain
1727 user: core 1727 user: core
1728 <source> 1728 <source>
1729 *: none 1729 *: none
1730 swcodec: "Prevent Clipping" 1730 swcodec: "Prevent Clipping"
1731 </source> 1731 </source>
1732 <dest> 1732 <dest>
1733 *: none 1733 *: none
1734 swcodec: "NovÄ“rst PÄrlieku Skaļumu" 1734 swcodec: "NovÄ“rst PÄrlieku Skaļumu"
1735 </dest> 1735 </dest>
1736 <voice> 1736 <voice>
1737 *: none 1737 *: none
1738 swcodec: "noveerst paarlieku skaljumu" 1738 swcodec: "noveerst paarlieku skaljumu"
1739 </voice> 1739 </voice>
1740</phrase> 1740</phrase>
1741<phrase> 1741<phrase>
1742 id: LANG_REPLAYGAIN_MODE 1742 id: LANG_REPLAYGAIN_MODE
1743 desc: in replaygain 1743 desc: in replaygain
1744 user: core 1744 user: core
1745 <source> 1745 <source>
1746 *: "Replaygain Type" 1746 *: "Replaygain Type"
1747 </source> 1747 </source>
1748 <dest> 1748 <dest>
1749 *: "NormalizÄcijas Veids" 1749 *: "NormalizÄcijas Veids"
1750 </dest> 1750 </dest>
1751 <voice> 1751 <voice>
1752 *: "normalizaacijas veids" 1752 *: "normalizaacijas veids"
1753 </voice> 1753 </voice>
1754</phrase> 1754</phrase>
1755<phrase> 1755<phrase>
1756 id: LANG_ALBUM_GAIN 1756 id: LANG_ALBUM_GAIN
1757 desc: in replaygain 1757 desc: in replaygain
1758 user: core 1758 user: core
1759 <source> 1759 <source>
1760 *: "Album Gain" 1760 *: "Album Gain"
1761 </source> 1761 </source>
1762 <dest> 1762 <dest>
1763 *: "Albūmu Skaļums" 1763 *: "Albūmu Skaļums"
1764 </dest> 1764 </dest>
1765 <voice> 1765 <voice>
1766 *: "albuumu skaljums" 1766 *: "albuumu skaljums"
1767 </voice> 1767 </voice>
1768</phrase> 1768</phrase>
1769<phrase> 1769<phrase>
1770 id: LANG_TRACK_GAIN 1770 id: LANG_TRACK_GAIN
1771 desc: in replaygain 1771 desc: in replaygain
1772 user: core 1772 user: core
1773 <source> 1773 <source>
1774 *: "Track Gain" 1774 *: "Track Gain"
1775 </source> 1775 </source>
1776 <dest> 1776 <dest>
1777 *: "Dziesmu Skaļums" 1777 *: "Dziesmu Skaļums"
1778 </dest> 1778 </dest>
1779 <voice> 1779 <voice>
1780 *: "dziesmu skaljums" 1780 *: "dziesmu skaljums"
1781 </voice> 1781 </voice>
1782</phrase> 1782</phrase>
1783<phrase> 1783<phrase>
1784 id: LANG_SHUFFLE_GAIN 1784 id: LANG_SHUFFLE_GAIN
1785 desc: use track gain if shuffle mode is on, album gain otherwise 1785 desc: use track gain if shuffle mode is on, album gain otherwise
1786 user: core 1786 user: core
1787 <source> 1787 <source>
1788 *: "Track Gain if Shuffling" 1788 *: "Track Gain if Shuffling"
1789 </source> 1789 </source>
1790 <dest> 1790 <dest>
1791 *: "Dziesmu Ja Jaukta Secība" 1791 *: "Dziesmu Ja Jaukta Secība"
1792 </dest> 1792 </dest>
1793 <voice> 1793 <voice>
1794 *: "dziesmu ja jaukta seciiba" 1794 *: "dziesmu ja jaukta seciiba"
1795 </voice> 1795 </voice>
1796</phrase> 1796</phrase>
1797<phrase> 1797<phrase>
1798 id: LANG_REPLAYGAIN_PREAMP 1798 id: LANG_REPLAYGAIN_PREAMP
1799 desc: in replaygain settings 1799 desc: in replaygain settings
1800 user: core 1800 user: core
1801 <source> 1801 <source>
1802 *: "Pre-amp" 1802 *: "Pre-amp"
1803 </source> 1803 </source>
1804 <dest> 1804 <dest>
1805 *: "PriekÅ¡pastiprinÄjums" 1805 *: "PriekÅ¡pastiprinÄjums"
1806 </dest> 1806 </dest>
1807 <voice> 1807 <voice>
1808 *: "priekshpastiprinaajums" 1808 *: "priekshpastiprinaajums"
1809 </voice> 1809 </voice>
1810</phrase> 1810</phrase>
1811<phrase> 1811<phrase>
1812 id: LANG_BEEP 1812 id: LANG_BEEP
1813 desc: in playback settings 1813 desc: in playback settings
1814 user: core 1814 user: core
1815 <source> 1815 <source>
1816 *: none 1816 *: none
1817 swcodec: "Track Skip Beep" 1817 swcodec: "Track Skip Beep"
1818 </source> 1818 </source>
1819 <dest> 1819 <dest>
1820 *: none 1820 *: none
1821 swcodec: "Dz.PÄrslÄ“gÅ¡anas PÄ«kstiens" 1821 swcodec: "Dz.PÄrslÄ“gÅ¡anas PÄ«kstiens"
1822 </dest> 1822 </dest>
1823 <voice> 1823 <voice>
1824 *: none 1824 *: none
1825 swcodec: "dziesmu paarsleegshanas piikstiens" 1825 swcodec: "dziesmu paarsleegshanas piikstiens"
1826 </voice> 1826 </voice>
1827</phrase> 1827</phrase>
1828<phrase> 1828<phrase>
1829 id: LANG_WEAK 1829 id: LANG_WEAK
1830 desc: in beep volume in playback settings 1830 desc: in beep volume in playback settings
1831 user: core 1831 user: core
1832 <source> 1832 <source>
1833 *: none 1833 *: none
1834 swcodec: "Weak" 1834 swcodec: "Weak"
1835 </source> 1835 </source>
1836 <dest> 1836 <dest>
1837 *: none 1837 *: none
1838 swcodec: "VÄjÅ¡" 1838 swcodec: "VÄjÅ¡"
1839 </dest> 1839 </dest>
1840 <voice> 1840 <voice>
1841 *: none 1841 *: none
1842 swcodec: "vaajsh" 1842 swcodec: "vaajsh"
1843 </voice> 1843 </voice>
1844</phrase> 1844</phrase>
1845<phrase> 1845<phrase>
1846 id: LANG_MODERATE 1846 id: LANG_MODERATE
1847 desc: in beep volume in playback settings 1847 desc: in beep volume in playback settings
1848 user: core 1848 user: core
1849 <source> 1849 <source>
1850 *: none 1850 *: none
1851 swcodec: "Moderate" 1851 swcodec: "Moderate"
1852 </source> 1852 </source>
1853 <dest> 1853 <dest>
1854 *: none 1854 *: none
1855 swcodec: "Viduvējs" 1855 swcodec: "Viduvējs"
1856 </dest> 1856 </dest>
1857 <voice> 1857 <voice>
1858 *: none 1858 *: none
1859 swcodec: "viduveejs" 1859 swcodec: "viduveejs"
1860 </voice> 1860 </voice>
1861</phrase> 1861</phrase>
1862<phrase> 1862<phrase>
1863 id: LANG_STRONG 1863 id: LANG_STRONG
1864 desc: in beep volume in playback settings 1864 desc: in beep volume in playback settings
1865 user: core 1865 user: core
1866 <source> 1866 <source>
1867 *: none 1867 *: none
1868 swcodec: "Strong" 1868 swcodec: "Strong"
1869 </source> 1869 </source>
1870 <dest> 1870 <dest>
1871 *: none 1871 *: none
1872 swcodec: "Spēcīgs" 1872 swcodec: "Spēcīgs"
1873 </dest> 1873 </dest>
1874 <voice> 1874 <voice>
1875 *: none 1875 *: none
1876 swcodec: "speeciigs" 1876 swcodec: "speeciigs"
1877 </voice> 1877 </voice>
1878</phrase> 1878</phrase>
1879<phrase> 1879<phrase>
1880 id: LANG_SPDIF_ENABLE 1880 id: LANG_SPDIF_ENABLE
1881 desc: in playback settings menu. enable/disable the optical out 1881 desc: in playback settings menu. enable/disable the optical out
1882 user: core 1882 user: core
1883 <source> 1883 <source>
1884 *: none 1884 *: none
1885 spdif_power: "Optical Output" 1885 spdif_power: "Optical Output"
1886 </source> 1886 </source>
1887 <dest> 1887 <dest>
1888 *: none 1888 *: none
1889 spdif_power: "OptiskÄ Izeja" 1889 spdif_power: "OptiskÄ Izeja"
1890 </dest> 1890 </dest>
1891 <voice> 1891 <voice>
1892 *: none 1892 *: none
1893 spdif_power: "optiskaa izeja" 1893 spdif_power: "optiskaa izeja"
1894 </voice> 1894 </voice>
1895</phrase> 1895</phrase>
1896<phrase> 1896<phrase>
1897 id: LANG_NEXT_FOLDER 1897 id: LANG_NEXT_FOLDER
1898 desc: in settings_menu. Should we allow move to next/prev folder from last/first track of current one 1898 desc: in settings_menu. Should we allow move to next/prev folder from last/first track of current one
1899 user: core 1899 user: core
1900 <source> 1900 <source>
1901 *: "Auto-Change Directory" 1901 *: "Auto-Change Directory"
1902 </source> 1902 </source>
1903 <dest> 1903 <dest>
1904 *: "AutomÄtiski MainÄ«t Mapi" 1904 *: "AutomÄtiski MainÄ«t Mapi"
1905 </dest> 1905 </dest>
1906 <voice> 1906 <voice>
1907 *: "automaatiski mainiit mapi" 1907 *: "automaatiski mainiit mapi"
1908 </voice> 1908 </voice>
1909</phrase> 1909</phrase>
1910<phrase> 1910<phrase>
1911 id: LANG_RANDOM 1911 id: LANG_RANDOM
1912 desc: random folder 1912 desc: random folder
1913 user: core 1913 user: core
1914 <source> 1914 <source>
1915 *: "Random" 1915 *: "Random"
1916 </source> 1916 </source>
1917 <dest> 1917 <dest>
1918 *: "JauktÄ SecÄ«bÄ" 1918 *: "JauktÄ SecÄ«bÄ"
1919 </dest> 1919 </dest>
1920 <voice> 1920 <voice>
1921 *: "jauktaa seciibaa" 1921 *: "jauktaa seciibaa"
1922 </voice> 1922 </voice>
1923</phrase> 1923</phrase>
1924<phrase> 1924<phrase>
1925 id: LANG_AUDIOSCROBBLER 1925 id: LANG_AUDIOSCROBBLER
1926 desc: "Last.fm Log" in the playback menu 1926 desc: "Last.fm Log" in the playback menu
1927 user: core 1927 user: core
1928 <source> 1928 <source>
1929 *: "Last.fm Log" 1929 *: "Last.fm Log"
1930 </source> 1930 </source>
1931 <dest> 1931 <dest>
1932 *: "Veidot Last.fm Logu" 1932 *: "Veidot Last.fm Logu"
1933 </dest> 1933 </dest>
1934 <voice> 1934 <voice>
1935 *: "veidot Last.fm logu" 1935 *: "veidot Last.fm logu"
1936 </voice> 1936 </voice>
1937</phrase> 1937</phrase>
1938<phrase> 1938<phrase>
1939 id: LANG_CUESHEET_ENABLE 1939 id: LANG_CUESHEET_ENABLE
1940 desc: cuesheet support option 1940 desc: cuesheet support option
1941 user: core 1941 user: core
1942 <source> 1942 <source>
1943 *: "Cuesheet Support" 1943 *: "Cuesheet Support"
1944 </source> 1944 </source>
1945 <dest> 1945 <dest>
1946 *: "Cue Atbalsts" 1946 *: "Cue Atbalsts"
1947 </dest> 1947 </dest>
1948 <voice> 1948 <voice>
1949 *: "cue atbalsts" 1949 *: "cue atbalsts"
1950 </voice> 1950 </voice>
1951</phrase> 1951</phrase>
1952<phrase> 1952<phrase>
1953 id: LANG_HEADPHONE_UNPLUG 1953 id: LANG_HEADPHONE_UNPLUG
1954 desc: in settings_menu. 1954 desc: in settings_menu.
1955 user: core 1955 user: core
1956 <source> 1956 <source>
1957 *: none 1957 *: none
1958 headphone_detection: "Pause on Headphone Unplug" 1958 headphone_detection: "Pause on Headphone Unplug"
1959 </source> 1959 </source>
1960 <dest> 1960 <dest>
1961 *: none 1961 *: none
1962 headphone_detection: "Atvienojot Austiņas Nopauzēt" 1962 headphone_detection: "Atvienojot Austiņas Nopauzēt"
1963 </dest> 1963 </dest>
1964 <voice> 1964 <voice>
1965 *: none 1965 *: none
1966 headphone_detection: "atvienojot austinjas nopauzeet" 1966 headphone_detection: "atvienojot austinjas nopauzeet"
1967 </voice> 1967 </voice>
1968</phrase> 1968</phrase>
1969<phrase> 1969<phrase>
1970 id: LANG_HEADPHONE_UNPLUG_RESUME 1970 id: LANG_HEADPHONE_UNPLUG_RESUME
1971 desc: in pause_phones_menu. 1971 desc: in pause_phones_menu.
1972 user: core 1972 user: core
1973 <source> 1973 <source>
1974 *: none 1974 *: none
1975 headphone_detection: "Pause and Resume" 1975 headphone_detection: "Pause and Resume"
1976 </source> 1976 </source>
1977 <dest> 1977 <dest>
1978 *: none 1978 *: none
1979 headphone_detection: "NopauzÄ“t Un AtsÄkt" 1979 headphone_detection: "NopauzÄ“t Un AtsÄkt"
1980 </dest> 1980 </dest>
1981 <voice> 1981 <voice>
1982 *: none 1982 *: none
1983 headphone_detection: "nopauzeet un atsaakt" 1983 headphone_detection: "nopauzeet un atsaakt"
1984 </voice> 1984 </voice>
1985</phrase> 1985</phrase>
1986<phrase> 1986<phrase>
1987 id: LANG_HEADPHONE_UNPLUG_RW 1987 id: LANG_HEADPHONE_UNPLUG_RW
1988 desc: deprecated 1988 desc: deprecated
1989 user: core 1989 user: core
1990 <source> 1990 <source>
1991 *: "" 1991 *: ""
1992 </source> 1992 </source>
1993 <dest> 1993 <dest>
1994 *: none 1994 *: none
1995 headphone_detection: "Attīšanas Ilgums" 1995 headphone_detection: "Attīšanas Ilgums"
1996 </dest> 1996 </dest>
1997 <voice> 1997 <voice>
1998 *: none 1998 *: none
1999 headphone_detection: "attiishanas ilgums" 1999 headphone_detection: "attiishanas ilgums"
2000 </voice> 2000 </voice>
2001</phrase> 2001</phrase>
2002<phrase> 2002<phrase>
2003 id: LANG_HEADPHONE_UNPLUG_DISABLE_AUTORESUME 2003 id: LANG_HEADPHONE_UNPLUG_DISABLE_AUTORESUME
2004 desc: in pause_phones_menu. 2004 desc: in pause_phones_menu.
2005 user: core 2005 user: core
2006 <source> 2006 <source>
2007 *: none 2007 *: none
2008 headphone_detection: "Disable resume on startup if phones unplugged" 2008 headphone_detection: "Disable resume on startup if phones unplugged"
2009 </source> 2009 </source>
2010 <dest> 2010 <dest>
2011 *: none 2011 *: none
2012 headphone_detection: "Izsl AtsÄkt Palaižot ja Austiņas Izrautas" 2012 headphone_detection: "Izsl AtsÄkt Palaižot ja Austiņas Izrautas"
2013 </dest> 2013 </dest>
2014 <voice> 2014 <voice>
2015 *: none 2015 *: none
2016 headphone_detection: "izsleegt automaatisku atsaakshanu ja austinjas ir izrautas" 2016 headphone_detection: "izsleegt automaatisku atsaakshanu ja austinjas ir izrautas"
2017 </voice> 2017 </voice>
2018</phrase> 2018</phrase>
2019<phrase> 2019<phrase>
2020 id: LANG_FILE 2020 id: LANG_FILE
2021 desc: in settings_menu() 2021 desc: in settings_menu()
2022 user: core 2022 user: core
2023 <source> 2023 <source>
2024 *: "File View" 2024 *: "File View"
2025 </source> 2025 </source>
2026 <dest> 2026 <dest>
2027 *: "Failu PÄrlÅ«ks" 2027 *: "Failu PÄrlÅ«ks"
2028 </dest> 2028 </dest>
2029 <voice> 2029 <voice>
2030 *: "failu paarluuks" 2030 *: "failu paarluuks"
2031 </voice> 2031 </voice>
2032</phrase> 2032</phrase>
2033<phrase> 2033<phrase>
2034 id: LANG_SORT_CASE 2034 id: LANG_SORT_CASE
2035 desc: in settings_menu 2035 desc: in settings_menu
2036 user: core 2036 user: core
2037 <source> 2037 <source>
2038 *: "Sort Case Sensitive" 2038 *: "Sort Case Sensitive"
2039 </source> 2039 </source>
2040 <dest> 2040 <dest>
2041 *: "Å Ä·irot PÄ“c Liel.Burt." 2041 *: "Å Ä·irot PÄ“c Liel.Burt."
2042 </dest> 2042 </dest>
2043 <voice> 2043 <voice>
2044 *: "shkjirot peec lielajiem burtiem" 2044 *: "shkjirot peec lielajiem burtiem"
2045 </voice> 2045 </voice>
2046</phrase> 2046</phrase>
2047<phrase> 2047<phrase>
2048 id: LANG_SORT_DIR 2048 id: LANG_SORT_DIR
2049 desc: browser sorting setting 2049 desc: browser sorting setting
2050 user: core 2050 user: core
2051 <source> 2051 <source>
2052 *: "Sort Directories" 2052 *: "Sort Directories"
2053 </source> 2053 </source>
2054 <dest> 2054 <dest>
2055 *: "Å Ä·irot Mapes" 2055 *: "Å Ä·irot Mapes"
2056 </dest> 2056 </dest>
2057 <voice> 2057 <voice>
2058 *: "shkjirot mapes" 2058 *: "shkjirot mapes"
2059 </voice> 2059 </voice>
2060</phrase> 2060</phrase>
2061<phrase> 2061<phrase>
2062 id: LANG_SORT_FILE 2062 id: LANG_SORT_FILE
2063 desc: browser sorting setting 2063 desc: browser sorting setting
2064 user: core 2064 user: core
2065 <source> 2065 <source>
2066 *: "Sort Files" 2066 *: "Sort Files"
2067 </source> 2067 </source>
2068 <dest> 2068 <dest>
2069 *: "Å Ä·irot Failus" 2069 *: "Å Ä·irot Failus"
2070 </dest> 2070 </dest>
2071 <voice> 2071 <voice>
2072 *: "shkjirot failus" 2072 *: "shkjirot failus"
2073 </voice> 2073 </voice>
2074</phrase> 2074</phrase>
2075<phrase> 2075<phrase>
2076 id: LANG_SORT_ALPHA 2076 id: LANG_SORT_ALPHA
2077 desc: browser sorting setting 2077 desc: browser sorting setting
2078 user: core 2078 user: core
2079 <source> 2079 <source>
2080 *: "Alphabetical" 2080 *: "Alphabetical"
2081 </source> 2081 </source>
2082 <dest> 2082 <dest>
2083 *: "Alfabētiski" 2083 *: "Alfabētiski"
2084 </dest> 2084 </dest>
2085 <voice> 2085 <voice>
2086 *: "alfabeetiski" 2086 *: "alfabeetiski"
2087 </voice> 2087 </voice>
2088</phrase> 2088</phrase>
2089<phrase> 2089<phrase>
2090 id: LANG_SORT_DATE 2090 id: LANG_SORT_DATE
2091 desc: browser sorting setting 2091 desc: browser sorting setting
2092 user: core 2092 user: core
2093 <source> 2093 <source>
2094 *: "By Date" 2094 *: "By Date"
2095 </source> 2095 </source>
2096 <dest> 2096 <dest>
2097 *: "PÄ“c Vecuma" 2097 *: "PÄ“c Vecuma"
2098 </dest> 2098 </dest>
2099 <voice> 2099 <voice>
2100 *: "peec vecuma" 2100 *: "peec vecuma"
2101 </voice> 2101 </voice>
2102</phrase> 2102</phrase>
2103<phrase> 2103<phrase>
2104 id: LANG_SORT_DATE_REVERSE 2104 id: LANG_SORT_DATE_REVERSE
2105 desc: browser sorting setting 2105 desc: browser sorting setting
2106 user: core 2106 user: core
2107 <source> 2107 <source>
2108 *: "By Newest Date" 2108 *: "By Newest Date"
2109 </source> 2109 </source>
2110 <dest> 2110 <dest>
2111 *: "PÄ“c JaunÄkÄ" 2111 *: "PÄ“c JaunÄkÄ"
2112 </dest> 2112 </dest>
2113 <voice> 2113 <voice>
2114 *: "peec jaunaakaa" 2114 *: "peec jaunaakaa"
2115 </voice> 2115 </voice>
2116</phrase> 2116</phrase>
2117<phrase> 2117<phrase>
2118 id: LANG_SORT_TYPE 2118 id: LANG_SORT_TYPE
2119 desc: browser sorting setting 2119 desc: browser sorting setting
2120 user: core 2120 user: core
2121 <source> 2121 <source>
2122 *: "By Type" 2122 *: "By Type"
2123 </source> 2123 </source>
2124 <dest> 2124 <dest>
2125 *: "PÄ“c Veida" 2125 *: "PÄ“c Veida"
2126 </dest> 2126 </dest>
2127 <voice> 2127 <voice>
2128 *: "peec veida" 2128 *: "peec veida"
2129 </voice> 2129 </voice>
2130</phrase> 2130</phrase>
2131<phrase> 2131<phrase>
2132 id: LANG_FILTER 2132 id: LANG_FILTER
2133 desc: setting name for dir filter 2133 desc: setting name for dir filter
2134 user: core 2134 user: core
2135 <source> 2135 <source>
2136 *: "Show Files" 2136 *: "Show Files"
2137 </source> 2137 </source>
2138 <dest> 2138 <dest>
2139 *: "RÄdÄ«t Failus" 2139 *: "RÄdÄ«t Failus"
2140 </dest> 2140 </dest>
2141 <voice> 2141 <voice>
2142 *: "raadiit failus" 2142 *: "raadiit failus"
2143 </voice> 2143 </voice>
2144</phrase> 2144</phrase>
2145<phrase> 2145<phrase>
2146 id: LANG_FILTER_SUPPORTED 2146 id: LANG_FILTER_SUPPORTED
2147 desc: show all file types supported by Rockbox 2147 desc: show all file types supported by Rockbox
2148 user: core 2148 user: core
2149 <source> 2149 <source>
2150 *: "Supported" 2150 *: "Supported"
2151 </source> 2151 </source>
2152 <dest> 2152 <dest>
2153 *: "Atbalstītos" 2153 *: "Atbalstītos"
2154 </dest> 2154 </dest>
2155 <voice> 2155 <voice>
2156 *: "raadiit atbalstiitos failus" 2156 *: "raadiit atbalstiitos failus"
2157 </voice> 2157 </voice>
2158</phrase> 2158</phrase>
2159<phrase> 2159<phrase>
2160 id: LANG_FILTER_MUSIC 2160 id: LANG_FILTER_MUSIC
2161 desc: show only music-related files 2161 desc: show only music-related files
2162 user: core 2162 user: core
2163 <source> 2163 <source>
2164 *: "Music" 2164 *: "Music"
2165 </source> 2165 </source>
2166 <dest> 2166 <dest>
2167 *: "MÅ«zikas" 2167 *: "MÅ«zikas"
2168 </dest> 2168 </dest>
2169 <voice> 2169 <voice>
2170 *: "raadiit tikai muuzikas failus" 2170 *: "raadiit tikai muuzikas failus"
2171 </voice> 2171 </voice>
2172</phrase> 2172</phrase>
2173<phrase> 2173<phrase>
2174 id: LANG_FOLLOW 2174 id: LANG_FOLLOW
2175 desc: in settings_menu 2175 desc: in settings_menu
2176 user: core 2176 user: core
2177 <source> 2177 <source>
2178 *: "Follow Playlist" 2178 *: "Follow Playlist"
2179 </source> 2179 </source>
2180 <dest> 2180 <dest>
2181 *: "Sekot Sarakstam" 2181 *: "Sekot Sarakstam"
2182 </dest> 2182 </dest>
2183 <voice> 2183 <voice>
2184 *: "sekot sarakstam" 2184 *: "sekot sarakstam"
2185 </voice> 2185 </voice>
2186</phrase> 2186</phrase>
2187<phrase> 2187<phrase>
2188 id: LANG_SHOW_PATH 2188 id: LANG_SHOW_PATH
2189 desc: in settings_menu 2189 desc: in settings_menu
2190 user: core 2190 user: core
2191 <source> 2191 <source>
2192 *: "Show Path" 2192 *: "Show Path"
2193 </source> 2193 </source>
2194 <dest> 2194 <dest>
2195 *: "RÄdÄ«t Ceļu" 2195 *: "RÄdÄ«t Ceļu"
2196 </dest> 2196 </dest>
2197 <voice> 2197 <voice>
2198 *: "raadiit celju" 2198 *: "raadiit celju"
2199 </voice> 2199 </voice>
2200</phrase> 2200</phrase>
2201<phrase> 2201<phrase>
2202 id: LANG_SHOW_PATH_CURRENT 2202 id: LANG_SHOW_PATH_CURRENT
2203 desc: in show path menu 2203 desc: in show path menu
2204 user: core 2204 user: core
2205 <source> 2205 <source>
2206 *: "Current Directory Only" 2206 *: "Current Directory Only"
2207 </source> 2207 </source>
2208 <dest> 2208 <dest>
2209 *: "Tikai Patreizējo Mapi" 2209 *: "Tikai Patreizējo Mapi"
2210 </dest> 2210 </dest>
2211 <voice> 2211 <voice>
2212 *: "tikai patreizeejo mapi" 2212 *: "tikai patreizeejo mapi"
2213 </voice> 2213 </voice>
2214</phrase> 2214</phrase>
2215<phrase> 2215<phrase>
2216 id: LANG_DISPLAY_FULL_PATH 2216 id: LANG_DISPLAY_FULL_PATH
2217 desc: track display options 2217 desc: track display options
2218 user: core 2218 user: core
2219 <source> 2219 <source>
2220 *: "Full Path" 2220 *: "Full Path"
2221 </source> 2221 </source>
2222 <dest> 2222 <dest>
2223 *: "Pilnu Ceļu" 2223 *: "Pilnu Ceļu"
2224 </dest> 2224 </dest>
2225 <voice> 2225 <voice>
2226 *: "pilnu celju" 2226 *: "pilnu celju"
2227 </voice> 2227 </voice>
2228</phrase> 2228</phrase>
2229<phrase> 2229<phrase>
2230 id: LANG_BUILDING_DATABASE 2230 id: LANG_BUILDING_DATABASE
2231 desc: splash database building progress 2231 desc: splash database building progress
2232 user: core 2232 user: core
2233 <source> 2233 <source>
2234 *: "Building database... %d found (OFF to return)" 2234 *: "Building database... %d found (OFF to return)"
2235 iriverh100,iriverh120,iriverh300: "Building database... %d found (STOP to return)" 2235 iriverh100,iriverh120,iriverh300: "Building database... %d found (STOP to return)"
2236 ipod*: "Building database... %d found (PREV to return)" 2236 ipod*: "Building database... %d found (PREV to return)"
2237 iaudiox5,iaudiom5,gigabeat*,mrobe100: "Building database... %d found (LEFT to return)" 2237 iaudiox5,iaudiom5,gigabeat*,mrobe100: "Building database... %d found (LEFT to return)"
2238 iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)" 2238 iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Building database... %d found (PREV to return)"
2239 gogearsa9200: "Building database... %d found (REW to return)" 2239 gogearsa9200: "Building database... %d found (REW to return)"
2240 archosplayer: "Building DB %d found" 2240 archosplayer: "Building DB %d found"
2241 </source> 2241 </source>
2242 <dest> 2242 <dest>
2243 *: "Veidoju datubÄzi... %d atrastas (OFF lai turpinÄtu)" 2243 *: "Veidoju datubÄzi... %d atrastas (OFF lai turpinÄtu)"
2244 iriverh100,iriverh120,iriverh300: "Veidoju datubÄzi... %d atrastas (STOP lai turpinÄtu)" 2244 iriverh100,iriverh120,iriverh300: "Veidoju datubÄzi... %d atrastas (STOP lai turpinÄtu)"
2245 ipod*: "Veidoju datubÄzi... %d atrastas (PREV lai turpinÄtu)" 2245 ipod*: "Veidoju datubÄzi... %d atrastas (PREV lai turpinÄtu)"
2246 iaudiox5,iaudiom5,gigabeat*,mrobe100: "Veidoju datubÄzi... %d atrastas (LEFT lai turpinÄtu)" 2246 iaudiox5,iaudiom5,gigabeat*,mrobe100: "Veidoju datubÄzi... %d atrastas (LEFT lai turpinÄtu)"
2247 iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Veidoju datubÄzi... %d atrastas (PREV lai turpinÄtu)" 2247 iriverh10,iriverh10_5gb,sansae200*,sansac200*,sansafuze*,vibe500: "Veidoju datubÄzi... %d atrastas (PREV lai turpinÄtu)"
2248 gogearsa9200: "Veidoju datubÄzi... %d atrastas (REW lai turpinÄtu)" 2248 gogearsa9200: "Veidoju datubÄzi... %d atrastas (REW lai turpinÄtu)"
2249 archosplayer: "Veidoju DB atrasts %d" 2249 archosplayer: "Veidoju DB atrasts %d"
2250 </dest> 2250 </dest>
2251 <voice> 2251 <voice>
2252 *: "atrasti ieraksti datubaazei" 2252 *: "atrasti ieraksti datubaazei"
2253 </voice> 2253 </voice>
2254</phrase> 2254</phrase>
2255<phrase> 2255<phrase>
2256 id: LANG_TAGCACHE_RAM 2256 id: LANG_TAGCACHE_RAM
2257 desc: in tag cache settings 2257 desc: in tag cache settings
2258 user: core 2258 user: core
2259 <source> 2259 <source>
2260 *: none 2260 *: none
2261 tc_ramcache: "Load to RAM" 2261 tc_ramcache: "Load to RAM"
2262 </source> 2262 </source>
2263 <dest> 2263 <dest>
2264 *: none 2264 *: none
2265 tc_ramcache: "IelÄdÄ“t AtmiņÄ" 2265 tc_ramcache: "IelÄdÄ“t AtmiņÄ"
2266 </dest> 2266 </dest>
2267 <voice> 2267 <voice>
2268 *: none 2268 *: none
2269 tc_ramcache: "ielaadeet operatiivajaa atminjaa" 2269 tc_ramcache: "ielaadeet operatiivajaa atminjaa"
2270 </voice> 2270 </voice>
2271</phrase> 2271</phrase>
2272<phrase> 2272<phrase>
2273 id: LANG_TAGCACHE_AUTOUPDATE 2273 id: LANG_TAGCACHE_AUTOUPDATE
2274 desc: in tag cache settings 2274 desc: in tag cache settings
2275 user: core 2275 user: core
2276 <source> 2276 <source>
2277 *: "Auto Update" 2277 *: "Auto Update"
2278 </source> 2278 </source>
2279 <dest> 2279 <dest>
2280 *: "Atjaunot AutomÄtiski" 2280 *: "Atjaunot AutomÄtiski"
2281 </dest> 2281 </dest>
2282 <voice> 2282 <voice>
2283 *: "atjaunot automaatiski" 2283 *: "atjaunot automaatiski"
2284 </voice> 2284 </voice>
2285</phrase> 2285</phrase>
2286<phrase> 2286<phrase>
2287 id: LANG_TAGCACHE_FORCE_UPDATE 2287 id: LANG_TAGCACHE_FORCE_UPDATE
2288 desc: in tag cache settings 2288 desc: in tag cache settings
2289 user: core 2289 user: core
2290 <source> 2290 <source>
2291 *: "Initialize Now" 2291 *: "Initialize Now"
2292 </source> 2292 </source>
2293 <dest> 2293 <dest>
2294 *: "Inicializēt Tagad" 2294 *: "Inicializēt Tagad"
2295 </dest> 2295 </dest>
2296 <voice> 2296 <voice>
2297 *: "inicializeet tagad" 2297 *: "inicializeet tagad"
2298 </voice> 2298 </voice>
2299</phrase> 2299</phrase>
2300<phrase> 2300<phrase>
2301 id: LANG_TAGCACHE_UPDATE 2301 id: LANG_TAGCACHE_UPDATE
2302 desc: in tag cache settings 2302 desc: in tag cache settings
2303 user: core 2303 user: core
2304 <source> 2304 <source>
2305 *: "Update Now" 2305 *: "Update Now"
2306 </source> 2306 </source>
2307 <dest> 2307 <dest>
2308 *: "Atjaunot Tagad" 2308 *: "Atjaunot Tagad"
2309 </dest> 2309 </dest>
2310 <voice> 2310 <voice>
2311 *: "atjaunot tagad" 2311 *: "atjaunot tagad"
2312 </voice> 2312 </voice>
2313</phrase> 2313</phrase>
2314<phrase> 2314<phrase>
2315 id: LANG_RUNTIMEDB_ACTIVE 2315 id: LANG_RUNTIMEDB_ACTIVE
2316 desc: in settings_menu. 2316 desc: in settings_menu.
2317 user: core 2317 user: core
2318 <source> 2318 <source>
2319 *: "Gather Runtime Data" 2319 *: "Gather Runtime Data"
2320 </source> 2320 </source>
2321 <dest> 2321 <dest>
2322 *: "KrÄt Statistiku" 2322 *: "KrÄt Statistiku"
2323 </dest> 2323 </dest>
2324 <voice> 2324 <voice>
2325 *: "kraat statistiku" 2325 *: "kraat statistiku"
2326 </voice> 2326 </voice>
2327</phrase> 2327</phrase>
2328<phrase> 2328<phrase>
2329 id: LANG_TAGCACHE_EXPORT 2329 id: LANG_TAGCACHE_EXPORT
2330 desc: in tag cache settings 2330 desc: in tag cache settings
2331 user: core 2331 user: core
2332 <source> 2332 <source>
2333 *: "Export Modifications" 2333 *: "Export Modifications"
2334 </source> 2334 </source>
2335 <dest> 2335 <dest>
2336 *: "Eksportēt Izmaiņas" 2336 *: "Eksportēt Izmaiņas"
2337 </dest> 2337 </dest>
2338 <voice> 2338 <voice>
2339 *: "eksporteet izmainjas" 2339 *: "eksporteet izmainjas"
2340 </voice> 2340 </voice>
2341</phrase> 2341</phrase>
2342<phrase> 2342<phrase>
2343 id: LANG_TAGCACHE_IMPORT 2343 id: LANG_TAGCACHE_IMPORT
2344 desc: in tag cache settings 2344 desc: in tag cache settings
2345 user: core 2345 user: core
2346 <source> 2346 <source>
2347 *: "Import Modifications" 2347 *: "Import Modifications"
2348 </source> 2348 </source>
2349 <dest> 2349 <dest>
2350 *: "Importēt Izmaiņas" 2350 *: "Importēt Izmaiņas"
2351 </dest> 2351 </dest>
2352 <voice> 2352 <voice>
2353 *: "importeet izmainjas" 2353 *: "importeet izmainjas"
2354 </voice> 2354 </voice>
2355</phrase> 2355</phrase>
2356<phrase> 2356<phrase>
2357 id: LANG_TAGCACHE_FORCE_UPDATE_SPLASH 2357 id: LANG_TAGCACHE_FORCE_UPDATE_SPLASH
2358 desc: in tag cache settings 2358 desc: in tag cache settings
2359 user: core 2359 user: core
2360 <source> 2360 <source>
2361 *: "Updating in background" 2361 *: "Updating in background"
2362 </source> 2362 </source>
2363 <dest> 2363 <dest>
2364 *: "Atjaunina fonÄ" 2364 *: "Atjaunina fonÄ"
2365 </dest> 2365 </dest>
2366 <voice> 2366 <voice>
2367 *: "atjaunina fonaa" 2367 *: "atjaunina fonaa"
2368 </voice> 2368 </voice>
2369</phrase> 2369</phrase>
2370<phrase> 2370<phrase>
2371 id: LANG_TAGCACHE_INIT 2371 id: LANG_TAGCACHE_INIT
2372 desc: while initializing tagcache on boot 2372 desc: while initializing tagcache on boot
2373 user: core 2373 user: core
2374 <source> 2374 <source>
2375 *: "Committing database" 2375 *: "Committing database"
2376 </source> 2376 </source>
2377 <dest> 2377 <dest>
2378 *: "Palaiž datubÄzi" 2378 *: "Palaiž datubÄzi"
2379 </dest> 2379 </dest>
2380 <voice> 2380 <voice>
2381 *: "palaizh datubaazi" 2381 *: "palaizh datubaazi"
2382 </voice> 2382 </voice>
2383</phrase> 2383</phrase>
2384<phrase> 2384<phrase>
2385 id: LANG_TAGCACHE_BUSY 2385 id: LANG_TAGCACHE_BUSY
2386 desc: when trying to shutdown and tagcache is committing 2386 desc: when trying to shutdown and tagcache is committing
2387 user: core 2387 user: core
2388 <source> 2388 <source>
2389 *: "Database is not ready" 2389 *: "Database is not ready"
2390 </source> 2390 </source>
2391 <dest> 2391 <dest>
2392 *: "DatubÄze vÄ“l darbojas" 2392 *: "DatubÄze vÄ“l darbojas"
2393 </dest> 2393 </dest>
2394 <voice> 2394 <voice>
2395 *: "datubaaze veel darbojas" 2395 *: "datubaaze veel darbojas"
2396 </voice> 2396 </voice>
2397</phrase> 2397</phrase>
2398<phrase> 2398<phrase>
2399 id: LANG_TAGNAVI_ALL_TRACKS 2399 id: LANG_TAGNAVI_ALL_TRACKS
2400 desc: "<All tracks>" entry in tag browser 2400 desc: "<All tracks>" entry in tag browser
2401 user: core 2401 user: core
2402 <source> 2402 <source>
2403 *: "<All tracks>" 2403 *: "<All tracks>"
2404 </source> 2404 </source>
2405 <dest> 2405 <dest>
2406 *: "<Visas dziesmas>" 2406 *: "<Visas dziesmas>"
2407 </dest> 2407 </dest>
2408 <voice> 2408 <voice>
2409 *: "visas dziesmas" 2409 *: "visas dziesmas"
2410 </voice> 2410 </voice>
2411</phrase> 2411</phrase>
2412<phrase> 2412<phrase>
2413 id: LANG_DISPLAY 2413 id: LANG_DISPLAY
2414 desc: in settings_menu() 2414 desc: in settings_menu()
2415 user: core 2415 user: core
2416 <source> 2416 <source>
2417 *: "Display" 2417 *: "Display"
2418 </source> 2418 </source>
2419 <dest> 2419 <dest>
2420 *: "Attēls" 2420 *: "Attēls"
2421 </dest> 2421 </dest>
2422 <voice> 2422 <voice>
2423 *: "atteels" 2423 *: "atteels"
2424 </voice> 2424 </voice>
2425</phrase> 2425</phrase>
2426<phrase> 2426<phrase>
2427 id: LANG_CUSTOM_FONT 2427 id: LANG_CUSTOM_FONT
2428 desc: in setting_menu() 2428 desc: in setting_menu()
2429 user: core 2429 user: core
2430 <source> 2430 <source>
2431 *: none 2431 *: none
2432 lcd_bitmap: "Font" 2432 lcd_bitmap: "Font"
2433 </source> 2433 </source>
2434 <dest> 2434 <dest>
2435 *: none 2435 *: none
2436 lcd_bitmap: "Fonti" 2436 lcd_bitmap: "Fonti"
2437 </dest> 2437 </dest>
2438 <voice> 2438 <voice>
2439 *: none 2439 *: none
2440 lcd_bitmap: "fonti" 2440 lcd_bitmap: "fonti"
2441 </voice> 2441 </voice>
2442</phrase> 2442</phrase>
2443<phrase> 2443<phrase>
2444 id: LANG_WHILE_PLAYING 2444 id: LANG_WHILE_PLAYING
2445 desc: in settings_menu() 2445 desc: in settings_menu()
2446 user: core 2446 user: core
2447 <source> 2447 <source>
2448 *: "While Playing Screen" 2448 *: "While Playing Screen"
2449 </source> 2449 </source>
2450 <dest> 2450 <dest>
2451 *: "AtskaņoÅ¡anas EkrÄns" 2451 *: "AtskaņoÅ¡anas EkrÄns"
2452 </dest> 2452 </dest>
2453 <voice> 2453 <voice>
2454 *: "atskanjoshanas ekraans" 2454 *: "atskanjoshanas ekraans"
2455 </voice> 2455 </voice>
2456</phrase> 2456</phrase>
2457<phrase> 2457<phrase>
2458 id: LANG_REMOTE_WHILE_PLAYING 2458 id: LANG_REMOTE_WHILE_PLAYING
2459 desc: in settings_menu() 2459 desc: in settings_menu()
2460 user: core 2460 user: core
2461 <source> 2461 <source>
2462 *: none 2462 *: none
2463 remote: "Remote While Playing Screen" 2463 remote: "Remote While Playing Screen"
2464 </source> 2464 </source>
2465 <dest> 2465 <dest>
2466 *: none 2466 *: none
2467 remote: "Pults AtskaņoÅ¡anas EkrÄns" 2467 remote: "Pults AtskaņoÅ¡anas EkrÄns"
2468 </dest> 2468 </dest>
2469 <voice> 2469 <voice>
2470 *: none 2470 *: none
2471 remote: "pults atskanjoshanas ekraans" 2471 remote: "pults atskanjoshanas ekraans"
2472 </voice> 2472 </voice>
2473</phrase> 2473</phrase>
2474<phrase> 2474<phrase>
2475 id: LANG_LCD_MENU 2475 id: LANG_LCD_MENU
2476 desc: in the display sub menu 2476 desc: in the display sub menu
2477 user: core 2477 user: core
2478 <source> 2478 <source>
2479 *: "LCD Settings" 2479 *: "LCD Settings"
2480 </source> 2480 </source>
2481 <dest> 2481 <dest>
2482 *: "EkrÄna UzstÄdÄ«jumi" 2482 *: "EkrÄna UzstÄdÄ«jumi"
2483 </dest> 2483 </dest>
2484 <voice> 2484 <voice>
2485 *: "ekraana uzstaadiijumi" 2485 *: "ekraana uzstaadiijumi"
2486 </voice> 2486 </voice>
2487</phrase> 2487</phrase>
2488<phrase> 2488<phrase>
2489 id: LANG_BACKLIGHT 2489 id: LANG_BACKLIGHT
2490 desc: in settings_menu 2490 desc: in settings_menu
2491 user: core 2491 user: core
2492 <source> 2492 <source>
2493 *: "Backlight" 2493 *: "Backlight"
2494 </source> 2494 </source>
2495 <dest> 2495 <dest>
2496 *: "Apgaismojums" 2496 *: "Apgaismojums"
2497 </dest> 2497 </dest>
2498 <voice> 2498 <voice>
2499 *: "apgaismojums" 2499 *: "apgaismojums"
2500 </voice> 2500 </voice>
2501</phrase> 2501</phrase>
2502<phrase> 2502<phrase>
2503 id: LANG_BACKLIGHT_ON_WHEN_CHARGING 2503 id: LANG_BACKLIGHT_ON_WHEN_CHARGING
2504 desc: in display_settings_menu, backlight timeout with charger connected 2504 desc: in display_settings_menu, backlight timeout with charger connected
2505 user: core 2505 user: core
2506 <source> 2506 <source>
2507 *: none 2507 *: none
2508 charging: "Backlight (While Plugged In)" 2508 charging: "Backlight (While Plugged In)"
2509 </source> 2509 </source>
2510 <dest> 2510 <dest>
2511 *: none 2511 *: none
2512 charging: "Apgaismojums (LÄdÄ“jot)" 2512 charging: "Apgaismojums (LÄdÄ“jot)"
2513 </dest> 2513 </dest>
2514 <voice> 2514 <voice>
2515 *: none 2515 *: none
2516 charging: "apgaismojums laadeeshanas laikaa" 2516 charging: "apgaismojums laadeeshanas laikaa"
2517 </voice> 2517 </voice>
2518</phrase> 2518</phrase>
2519<phrase> 2519<phrase>
2520 id: LANG_BACKLIGHT_ON_BUTTON_HOLD 2520 id: LANG_BACKLIGHT_ON_BUTTON_HOLD
2521 desc: in lcd settings 2521 desc: in lcd settings
2522 user: core 2522 user: core
2523 <source> 2523 <source>
2524 *: none 2524 *: none
2525 hold_button: "Backlight on Hold" 2525 hold_button: "Backlight on Hold"
2526 </source> 2526 </source>
2527 <dest> 2527 <dest>
2528 *: none 2528 *: none
2529 hold_button: "Apgaismojums kad Hold" 2529 hold_button: "Apgaismojums kad Hold"
2530 </dest> 2530 </dest>
2531 <voice> 2531 <voice>
2532 *: none 2532 *: none
2533 hold_button: "apgaismojums ar noblokjeetiem taustinjiem" 2533 hold_button: "apgaismojums ar noblokjeetiem taustinjiem"
2534 </voice> 2534 </voice>
2535</phrase> 2535</phrase>
2536<phrase> 2536<phrase>
2537 id: LANG_CAPTION_BACKLIGHT 2537 id: LANG_CAPTION_BACKLIGHT
2538 desc: in settings_menu 2538 desc: in settings_menu
2539 user: core 2539 user: core
2540 <source> 2540 <source>
2541 *: "Caption Backlight" 2541 *: "Caption Backlight"
2542 </source> 2542 </source>
2543 <dest> 2543 <dest>
2544 *: "Nosaukuma Apgaismojums" 2544 *: "Nosaukuma Apgaismojums"
2545 </dest> 2545 </dest>
2546 <voice> 2546 <voice>
2547 *: "nosaukuma apgaismojums" 2547 *: "nosaukuma apgaismojums"
2548 </voice> 2548 </voice>
2549</phrase> 2549</phrase>
2550<phrase> 2550<phrase>
2551 id: LANG_BACKLIGHT_FADE_IN 2551 id: LANG_BACKLIGHT_FADE_IN
2552 desc: in settings_menu 2552 desc: in settings_menu
2553 user: core 2553 user: core
2554 <source> 2554 <source>
2555 *: none 2555 *: none
2556 backlight_fade*: "Backlight Fade In" 2556 backlight_fade*: "Backlight Fade In"
2557 </source> 2557 </source>
2558 <dest> 2558 <dest>
2559 *: none 2559 *: none
2560 backlight_fade*: "Apgaismojuma iesl.laiks" 2560 backlight_fade*: "Apgaismojuma iesl.laiks"
2561 </dest> 2561 </dest>
2562 <voice> 2562 <voice>
2563 *: none 2563 *: none
2564 backlight_fade*: "apgaismojuma iesleegshanaas laiks" 2564 backlight_fade*: "apgaismojuma iesleegshanaas laiks"
2565 </voice> 2565 </voice>
2566</phrase> 2566</phrase>
2567<phrase> 2567<phrase>
2568 id: LANG_BACKLIGHT_FADE_OUT 2568 id: LANG_BACKLIGHT_FADE_OUT
2569 desc: in settings_menu 2569 desc: in settings_menu
2570 user: core 2570 user: core
2571 <source> 2571 <source>
2572 *: none 2572 *: none
2573 backlight_fade*: "Backlight Fade Out" 2573 backlight_fade*: "Backlight Fade Out"
2574 </source> 2574 </source>
2575 <dest> 2575 <dest>
2576 *: none 2576 *: none
2577 backlight_fade*: "Apgaismojuma izsl.laiks" 2577 backlight_fade*: "Apgaismojuma izsl.laiks"
2578 </dest> 2578 </dest>
2579 <voice> 2579 <voice>
2580 *: none 2580 *: none
2581 backlight_fade*: "apgaismojuma izsleegshanaas laiks" 2581 backlight_fade*: "apgaismojuma izsleegshanaas laiks"
2582 </voice> 2582 </voice>
2583</phrase> 2583</phrase>
2584<phrase> 2584<phrase>
2585 id: LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS 2585 id: LANG_BACKLIGHT_FILTER_FIRST_KEYPRESS
2586 desc: Backlight behaviour setting 2586 desc: Backlight behaviour setting
2587 user: core 2587 user: core
2588 <source> 2588 <source>
2589 *: "First Buttonpress Enables Backlight Only" 2589 *: "First Buttonpress Enables Backlight Only"
2590 </source> 2590 </source>
2591 <dest> 2591 <dest>
2592 *: "Pirmais Spiediens Ieslēdz Tikai Apgaismojumu" 2592 *: "Pirmais Spiediens Ieslēdz Tikai Apgaismojumu"
2593 </dest> 2593 </dest>
2594 <voice> 2594 <voice>
2595 *: "pirmais spiediens Iesleedz tikai apgaismojumu" 2595 *: "pirmais spiediens Iesleedz tikai apgaismojumu"
2596 </voice> 2596 </voice>
2597</phrase> 2597</phrase>
2598<phrase> 2598<phrase>
2599 id: LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF 2599 id: LANG_LCD_SLEEP_AFTER_BACKLIGHT_OFF
2600 desc: In display settings, time to switch LCD chip into power saving state 2600 desc: In display settings, time to switch LCD chip into power saving state
2601 user: core 2601 user: core
2602 <source> 2602 <source>
2603 *: none 2603 *: none
2604 lcd_sleep: "Sleep (After Backlight Off)" 2604 lcd_sleep: "Sleep (After Backlight Off)"
2605 </source> 2605 </source>
2606 <dest> 2606 <dest>
2607 *: none 2607 *: none
2608 lcd_sleep: "EkrÄna IzslÄ“gÅ¡anas Laiks" 2608 lcd_sleep: "EkrÄna IzslÄ“gÅ¡anas Laiks"
2609 </dest> 2609 </dest>
2610 <voice> 2610 <voice>
2611 *: none 2611 *: none
2612 lcd_sleep: "ekraana izsleegshanas laiks" 2612 lcd_sleep: "ekraana izsleegshanas laiks"
2613 </voice> 2613 </voice>
2614</phrase> 2614</phrase>
2615<phrase> 2615<phrase>
2616 id: LANG_NEVER 2616 id: LANG_NEVER
2617 desc: in lcd settings 2617 desc: in lcd settings
2618 user: core 2618 user: core
2619 <source> 2619 <source>
2620 *: none 2620 *: none
2621 lcd_sleep: "Never" 2621 lcd_sleep: "Never"
2622 </source> 2622 </source>
2623 <dest> 2623 <dest>
2624 *: none 2624 *: none
2625 lcd_sleep: "Nekad" 2625 lcd_sleep: "Nekad"
2626 </dest> 2626 </dest>
2627 <voice> 2627 <voice>
2628 *: none 2628 *: none
2629 lcd_sleep: "nekad" 2629 lcd_sleep: "nekad"
2630 </voice> 2630 </voice>
2631</phrase> 2631</phrase>
2632<phrase> 2632<phrase>
2633 id: LANG_BRIGHTNESS 2633 id: LANG_BRIGHTNESS
2634 desc: in settings_menu 2634 desc: in settings_menu
2635 user: core 2635 user: core
2636 <source> 2636 <source>
2637 *: none 2637 *: none
2638 backlight_brightness: "Brightness" 2638 backlight_brightness: "Brightness"
2639 </source> 2639 </source>
2640 <dest> 2640 <dest>
2641 *: none 2641 *: none
2642 backlight_brightness: "Spilgtums" 2642 backlight_brightness: "Spilgtums"
2643 </dest> 2643 </dest>
2644 <voice> 2644 <voice>
2645 *: none 2645 *: none
2646 backlight_brightness: "spilgtums" 2646 backlight_brightness: "spilgtums"
2647 </voice> 2647 </voice>
2648</phrase> 2648</phrase>
2649<phrase> 2649<phrase>
2650 id: LANG_CONTRAST 2650 id: LANG_CONTRAST
2651 desc: in settings_menu 2651 desc: in settings_menu
2652 user: core 2652 user: core
2653 <source> 2653 <source>
2654 *: "Contrast" 2654 *: "Contrast"
2655 </source> 2655 </source>
2656 <dest> 2656 <dest>
2657 *: "Kontrasts" 2657 *: "Kontrasts"
2658 </dest> 2658 </dest>
2659 <voice> 2659 <voice>
2660 *: "kontrasts" 2660 *: "kontrasts"
2661 </voice> 2661 </voice>
2662</phrase> 2662</phrase>
2663<phrase> 2663<phrase>
2664 id: LANG_INVERT 2664 id: LANG_INVERT
2665 desc: in settings_menu 2665 desc: in settings_menu
2666 user: core 2666 user: core
2667 <source> 2667 <source>
2668 *: none 2668 *: none
2669 lcd_invert,remote_lcd_invert: "LCD Mode" 2669 lcd_invert,remote_lcd_invert: "LCD Mode"
2670 </source> 2670 </source>
2671 <dest> 2671 <dest>
2672 *: none 2672 *: none
2673 lcd_invert,remote_lcd_invert: "EkrÄna Režīms" 2673 lcd_invert,remote_lcd_invert: "EkrÄna Režīms"
2674 </dest> 2674 </dest>
2675 <voice> 2675 <voice>
2676 *: none 2676 *: none
2677 lcd_invert,remote_lcd_invert: "ekraana rezhiims" 2677 lcd_invert,remote_lcd_invert: "ekraana rezhiims"
2678 </voice> 2678 </voice>
2679</phrase> 2679</phrase>
2680<phrase> 2680<phrase>
2681 id: LANG_INVERT_LCD_INVERSE 2681 id: LANG_INVERT_LCD_INVERSE
2682 desc: in settings_menu 2682 desc: in settings_menu
2683 user: core 2683 user: core
2684 <source> 2684 <source>
2685 *: none 2685 *: none
2686 lcd_invert,remote_lcd_invert: "Inverse" 2686 lcd_invert,remote_lcd_invert: "Inverse"
2687 </source> 2687 </source>
2688 <dest> 2688 <dest>
2689 *: none 2689 *: none
2690 lcd_invert,remote_lcd_invert: "Negatīvs" 2690 lcd_invert,remote_lcd_invert: "Negatīvs"
2691 </dest> 2691 </dest>
2692 <voice> 2692 <voice>
2693 *: none 2693 *: none
2694 lcd_invert,remote_lcd_invert: "negatiivs" 2694 lcd_invert,remote_lcd_invert: "negatiivs"
2695 </voice> 2695 </voice>
2696</phrase> 2696</phrase>
2697<phrase> 2697<phrase>
2698 id: LANG_FLIP_DISPLAY 2698 id: LANG_FLIP_DISPLAY
2699 desc: in settings_menu, option to turn display+buttos by 180 degrees 2699 desc: in settings_menu, option to turn display+buttos by 180 degrees
2700 user: core 2700 user: core
2701 <source> 2701 <source>
2702 *: none 2702 *: none
2703 lcd_bitmap: "Upside Down" 2703 lcd_bitmap: "Upside Down"
2704 </source> 2704 </source>
2705 <dest> 2705 <dest>
2706 *: none 2706 *: none
2707 lcd_bitmap: "KÄjÄm GaisÄ" 2707 lcd_bitmap: "KÄjÄm GaisÄ"
2708 </dest> 2708 </dest>
2709 <voice> 2709 <voice>
2710 *: none 2710 *: none
2711 lcd_bitmap: "kaajaam gaisaa" 2711 lcd_bitmap: "kaajaam gaisaa"
2712 </voice> 2712 </voice>
2713</phrase> 2713</phrase>
2714<phrase> 2714<phrase>
2715 id: LANG_INVERT_CURSOR 2715 id: LANG_INVERT_CURSOR
2716 desc: in settings_menu 2716 desc: in settings_menu
2717 user: core 2717 user: core
2718 <source> 2718 <source>
2719 *: none 2719 *: none
2720 lcd_bitmap: "Line Selector Type" 2720 lcd_bitmap: "Line Selector Type"
2721 </source> 2721 </source>
2722 <dest> 2722 <dest>
2723 *: none 2723 *: none
2724 lcd_bitmap: "LÄ«nija" 2724 lcd_bitmap: "LÄ«nija"
2725 </dest> 2725 </dest>
2726 <voice> 2726 <voice>
2727 *: none 2727 *: none
2728 lcd_bitmap: "liinija" 2728 lcd_bitmap: "liinija"
2729 </voice> 2729 </voice>
2730</phrase> 2730</phrase>
2731<phrase> 2731<phrase>
2732 id: LANG_INVERT_CURSOR_POINTER 2732 id: LANG_INVERT_CURSOR_POINTER
2733 desc: in settings_menu 2733 desc: in settings_menu
2734 user: core 2734 user: core
2735 <source> 2735 <source>
2736 *: none 2736 *: none
2737 lcd_bitmap: "Pointer" 2737 lcd_bitmap: "Pointer"
2738 </source> 2738 </source>
2739 <dest> 2739 <dest>
2740 *: none 2740 *: none
2741 lcd_bitmap: "Kursors" 2741 lcd_bitmap: "Kursors"
2742 </dest> 2742 </dest>
2743 <voice> 2743 <voice>
2744 *: none 2744 *: none
2745 lcd_bitmap: "kursors" 2745 lcd_bitmap: "kursors"
2746 </voice> 2746 </voice>
2747</phrase> 2747</phrase>
2748<phrase> 2748<phrase>
2749 id: LANG_INVERT_CURSOR_BAR 2749 id: LANG_INVERT_CURSOR_BAR
2750 desc: in settings_menu 2750 desc: in settings_menu
2751 user: core 2751 user: core
2752 <source> 2752 <source>
2753 *: none 2753 *: none
2754 lcd_bitmap: "Bar (Inverse)" 2754 lcd_bitmap: "Bar (Inverse)"
2755 </source> 2755 </source>
2756 <dest> 2756 <dest>
2757 *: none 2757 *: none
2758 lcd_bitmap: "Rinda (Apvērsta)" 2758 lcd_bitmap: "Rinda (Apvērsta)"
2759 </dest> 2759 </dest>
2760 <voice> 2760 <voice>
2761 *: none 2761 *: none
2762 lcd_bitmap: "apveersta rinda" 2762 lcd_bitmap: "apveersta rinda"
2763 </voice> 2763 </voice>
2764</phrase> 2764</phrase>
2765<phrase> 2765<phrase>
2766 id: LANG_CLEAR_BACKDROP 2766 id: LANG_CLEAR_BACKDROP
2767 desc: text for LCD settings menu 2767 desc: text for LCD settings menu
2768 user: core 2768 user: core
2769 <source> 2769 <source>
2770 *: none 2770 *: none
2771 lcd_non-mono: "Clear Backdrop" 2771 lcd_non-mono: "Clear Backdrop"
2772 </source> 2772 </source>
2773 <dest> 2773 <dest>
2774 *: none 2774 *: none
2775 lcd_non-mono: "NovÄkt Fonu" 2775 lcd_non-mono: "NovÄkt Fonu"
2776 </dest> 2776 </dest>
2777 <voice> 2777 <voice>
2778 *: none 2778 *: none
2779 lcd_non-mono: "novaakt fonu" 2779 lcd_non-mono: "novaakt fonu"
2780 </voice> 2780 </voice>
2781</phrase> 2781</phrase>
2782<phrase> 2782<phrase>
2783 id: LANG_BACKGROUND_COLOR 2783 id: LANG_BACKGROUND_COLOR
2784 desc: menu entry to set the background color 2784 desc: menu entry to set the background color
2785 user: core 2785 user: core
2786 <source> 2786 <source>
2787 *: none 2787 *: none
2788 lcd_color: "Background Colour" 2788 lcd_color: "Background Colour"
2789 </source> 2789 </source>
2790 <dest> 2790 <dest>
2791 *: none 2791 *: none
2792 lcd_color: "Fona KrÄsa" 2792 lcd_color: "Fona KrÄsa"
2793 </dest> 2793 </dest>
2794 <voice> 2794 <voice>
2795 *: none 2795 *: none
2796 lcd_color: "fona kraasa" 2796 lcd_color: "fona kraasa"
2797 </voice> 2797 </voice>
2798</phrase> 2798</phrase>
2799<phrase> 2799<phrase>
2800 id: LANG_FOREGROUND_COLOR 2800 id: LANG_FOREGROUND_COLOR
2801 desc: menu entry to set the foreground color 2801 desc: menu entry to set the foreground color
2802 user: core 2802 user: core
2803 <source> 2803 <source>
2804 *: none 2804 *: none
2805 lcd_color: "Foreground Colour" 2805 lcd_color: "Foreground Colour"
2806 </source> 2806 </source>
2807 <dest> 2807 <dest>
2808 *: none 2808 *: none
2809 lcd_color: "PriekÅ¡plÄna KrÄsa" 2809 lcd_color: "PriekÅ¡plÄna KrÄsa"
2810 </dest> 2810 </dest>
2811 <voice> 2811 <voice>
2812 *: none 2812 *: none
2813 lcd_color: "priekshplaana kraasa" 2813 lcd_color: "priekshplaana kraasa"
2814 </voice> 2814 </voice>
2815</phrase> 2815</phrase>
2816<phrase> 2816<phrase>
2817 id: LANG_RESET_COLORS 2817 id: LANG_RESET_COLORS
2818 desc: menu 2818 desc: menu
2819 user: core 2819 user: core
2820 <source> 2820 <source>
2821 *: none 2821 *: none
2822 lcd_color: "Reset Colours" 2822 lcd_color: "Reset Colours"
2823 </source> 2823 </source>
2824 <dest> 2824 <dest>
2825 *: none 2825 *: none
2826 lcd_color: "NoklusÄ“tÄs KrÄsas" 2826 lcd_color: "NoklusÄ“tÄs KrÄsas"
2827 </dest> 2827 </dest>
2828 <voice> 2828 <voice>
2829 *: none 2829 *: none
2830 lcd_color: "nokluseetaas kraasas" 2830 lcd_color: "nokluseetaas kraasas"
2831 </voice> 2831 </voice>
2832</phrase> 2832</phrase>
2833<phrase> 2833<phrase>
2834 id: LANG_COLOR_RGB_LABELS 2834 id: LANG_COLOR_RGB_LABELS
2835 desc: what to show for the 'R' 'G' 'B' ONE LETTER EACH 2835 desc: what to show for the 'R' 'G' 'B' ONE LETTER EACH
2836 user: core 2836 user: core
2837 <source> 2837 <source>
2838 *: none 2838 *: none
2839 lcd_color: "RGB" 2839 lcd_color: "RGB"
2840 </source> 2840 </source>
2841 <dest> 2841 <dest>
2842 *: none 2842 *: none
2843 lcd_color: "SaZaZi" 2843 lcd_color: "SaZaZi"
2844 </dest> 2844 </dest>
2845 <voice> 2845 <voice>
2846 *: none 2846 *: none
2847 lcd_color: "" 2847 lcd_color: ""
2848 </voice> 2848 </voice>
2849</phrase> 2849</phrase>
2850<phrase> 2850<phrase>
2851 id: LANG_COLOR_RGB_VALUE 2851 id: LANG_COLOR_RGB_VALUE
2852 desc: in color screen 2852 desc: in color screen
2853 user: core 2853 user: core
2854 <source> 2854 <source>
2855 *: none 2855 *: none
2856 lcd_color: "RGB: %02X%02X%02X" 2856 lcd_color: "RGB: %02X%02X%02X"
2857 </source> 2857 </source>
2858 <dest> 2858 <dest>
2859 *: none 2859 *: none
2860 lcd_color: "SaZaZi: %02X%02X%02X" 2860 lcd_color: "SaZaZi: %02X%02X%02X"
2861 </dest> 2861 </dest>
2862 <voice> 2862 <voice>
2863 *: none 2863 *: none
2864 lcd_color: "" 2864 lcd_color: ""
2865 </voice> 2865 </voice>
2866</phrase> 2866</phrase>
2867<phrase> 2867<phrase>
2868 id: LANG_COLOR_UNACCEPTABLE 2868 id: LANG_COLOR_UNACCEPTABLE
2869 desc: splash when user selects an invalid colour 2869 desc: splash when user selects an invalid colour
2870 user: core 2870 user: core
2871 <source> 2871 <source>
2872 *: none 2872 *: none
2873 lcd_color: "Invalid colour" 2873 lcd_color: "Invalid colour"
2874 </source> 2874 </source>
2875 <dest> 2875 <dest>
2876 *: none 2876 *: none
2877 lcd_color: "NederÄ«ga KrÄsa" 2877 lcd_color: "NederÄ«ga KrÄsa"
2878 </dest> 2878 </dest>
2879 <voice> 2879 <voice>
2880 *: none 2880 *: none
2881 lcd_color: "" 2881 lcd_color: ""
2882 </voice> 2882 </voice>
2883</phrase> 2883</phrase>
2884<phrase> 2884<phrase>
2885 id: LANG_LCD_REMOTE_MENU 2885 id: LANG_LCD_REMOTE_MENU
2886 desc: in the display sub menu 2886 desc: in the display sub menu
2887 user: core 2887 user: core
2888 <source> 2888 <source>
2889 *: none 2889 *: none
2890 remote: "Remote-LCD Settings" 2890 remote: "Remote-LCD Settings"
2891 </source> 2891 </source>
2892 <dest> 2892 <dest>
2893 *: none 2893 *: none
2894 remote: "Pults EkrÄna UzstÄdÄ«jumi" 2894 remote: "Pults EkrÄna UzstÄdÄ«jumi"
2895 </dest> 2895 </dest>
2896 <voice> 2896 <voice>
2897 *: none 2897 *: none
2898 remote: "pults ekraana uzstaadiijumi" 2898 remote: "pults ekraana uzstaadiijumi"
2899 </voice> 2899 </voice>
2900</phrase> 2900</phrase>
2901<phrase> 2901<phrase>
2902 id: LANG_REDUCE_TICKING 2902 id: LANG_REDUCE_TICKING
2903 desc: in remote lcd settings menu 2903 desc: in remote lcd settings menu
2904 user: core 2904 user: core
2905 <source> 2905 <source>
2906 *: none 2906 *: none
2907 remote_ticking: "Reduce Ticking" 2907 remote_ticking: "Reduce Ticking"
2908 </source> 2908 </source>
2909 <dest> 2909 <dest>
2910 *: none 2910 *: none
2911 remote_ticking: "SamazinÄt TikÅ¡Ä·i" 2911 remote_ticking: "SamazinÄt TikÅ¡Ä·i"
2912 </dest> 2912 </dest>
2913 <voice> 2913 <voice>
2914 *: none 2914 *: none
2915 remote_ticking: "samazinaat tikshkji" 2915 remote_ticking: "samazinaat tikshkji"
2916 </voice> 2916 </voice>
2917</phrase> 2917</phrase>
2918<phrase> 2918<phrase>
2919 id: LANG_SHOW_ICONS 2919 id: LANG_SHOW_ICONS
2920 desc: in settings_menu 2920 desc: in settings_menu
2921 user: core 2921 user: core
2922 <source> 2922 <source>
2923 *: "Show Icons" 2923 *: "Show Icons"
2924 </source> 2924 </source>
2925 <dest> 2925 <dest>
2926 *: "RÄdÄ«t Ikonas" 2926 *: "RÄdÄ«t Ikonas"
2927 </dest> 2927 </dest>
2928 <voice> 2928 <voice>
2929 *: "raadiit ikonas" 2929 *: "raadiit ikonas"
2930 </voice> 2930 </voice>
2931</phrase> 2931</phrase>
2932<phrase> 2932<phrase>
2933 id: LANG_SCROLL_MENU 2933 id: LANG_SCROLL_MENU
2934 desc: in display_settings_menu() 2934 desc: in display_settings_menu()
2935 user: core 2935 user: core
2936 <source> 2936 <source>
2937 *: "Scrolling" 2937 *: "Scrolling"
2938 </source> 2938 </source>
2939 <dest> 2939 <dest>
2940 *: "Rullēšana" 2940 *: "Rullēšana"
2941 </dest> 2941 </dest>
2942 <voice> 2942 <voice>
2943 *: "rulleeshana" 2943 *: "rulleeshana"
2944 </voice> 2944 </voice>
2945</phrase> 2945</phrase>
2946<phrase> 2946<phrase>
2947 id: LANG_SCROLL 2947 id: LANG_SCROLL
2948 desc: in settings_menu 2948 desc: in settings_menu
2949 user: core 2949 user: core
2950 <source> 2950 <source>
2951 *: "Scroll Speed Setting Example" 2951 *: "Scroll Speed Setting Example"
2952 </source> 2952 </source>
2953 <dest> 2953 <dest>
2954 *: "Rullēšanas Ātruma Piemērs" 2954 *: "Rullēšanas Ātruma Piemērs"
2955 </dest> 2955 </dest>
2956 <voice> 2956 <voice>
2957 *: "" 2957 *: ""
2958 </voice> 2958 </voice>
2959</phrase> 2959</phrase>
2960<phrase> 2960<phrase>
2961 id: LANG_SCROLL_SPEED 2961 id: LANG_SCROLL_SPEED
2962 desc: in display_settings_menu() 2962 desc: in display_settings_menu()
2963 user: core 2963 user: core
2964 <source> 2964 <source>
2965 *: "Scroll Speed" 2965 *: "Scroll Speed"
2966 </source> 2966 </source>
2967 <dest> 2967 <dest>
2968 *: "Rullēšanas Ātrums" 2968 *: "Rullēšanas Ātrums"
2969 </dest> 2969 </dest>
2970 <voice> 2970 <voice>
2971 *: "rulleeshanas aatrums" 2971 *: "rulleeshanas aatrums"
2972 </voice> 2972 </voice>
2973</phrase> 2973</phrase>
2974<phrase> 2974<phrase>
2975 id: LANG_SCROLL_DELAY 2975 id: LANG_SCROLL_DELAY
2976 desc: Delay before scrolling 2976 desc: Delay before scrolling
2977 user: core 2977 user: core
2978 <source> 2978 <source>
2979 *: "Scroll Start Delay" 2979 *: "Scroll Start Delay"
2980 </source> 2980 </source>
2981 <dest> 2981 <dest>
2982 *: "Rullēšanas Aizture" 2982 *: "Rullēšanas Aizture"
2983 </dest> 2983 </dest>
2984 <voice> 2984 <voice>
2985 *: "rulleeshanas aizture" 2985 *: "rulleeshanas aizture"
2986 </voice> 2986 </voice>
2987</phrase> 2987</phrase>
2988<phrase> 2988<phrase>
2989 id: LANG_SCROLL_STEP 2989 id: LANG_SCROLL_STEP
2990 desc: Pixels to advance per scroll 2990 desc: Pixels to advance per scroll
2991 user: core 2991 user: core
2992 <source> 2992 <source>
2993 *: "Scroll Step Size" 2993 *: "Scroll Step Size"
2994 </source> 2994 </source>
2995 <dest> 2995 <dest>
2996 *: "Rullēšanas Solis" 2996 *: "Rullēšanas Solis"
2997 </dest> 2997 </dest>
2998 <voice> 2998 <voice>
2999 *: "rulleeshanas solis" 2999 *: "rulleeshanas solis"
3000 </voice> 3000 </voice>
3001</phrase> 3001</phrase>
3002<phrase> 3002<phrase>
3003 id: LANG_SCROLL_STEP_EXAMPLE 3003 id: LANG_SCROLL_STEP_EXAMPLE
3004 desc: Pixels to advance per scroll 3004 desc: Pixels to advance per scroll
3005 user: core 3005 user: core
3006 <source> 3006 <source>
3007 *: "Scroll Step Size Setting Example Text" 3007 *: "Scroll Step Size Setting Example Text"
3008 </source> 3008 </source>
3009 <dest> 3009 <dest>
3010 *: "Rullēšanas Soļa Piemērs" 3010 *: "Rullēšanas Soļa Piemērs"
3011 </dest> 3011 </dest>
3012 <voice> 3012 <voice>
3013 *: "" 3013 *: ""
3014 </voice> 3014 </voice>
3015</phrase> 3015</phrase>
3016<phrase> 3016<phrase>
3017 id: LANG_BIDIR_SCROLL 3017 id: LANG_BIDIR_SCROLL
3018 desc: Bidirectional scroll limit 3018 desc: Bidirectional scroll limit
3019 user: core 3019 user: core
3020 <source> 3020 <source>
3021 *: "Bidirectional Scroll Limit" 3021 *: "Bidirectional Scroll Limit"
3022 </source> 3022 </source>
3023 <dest> 3023 <dest>
3024 *: "Abpusējas Rullēšanas Limits" 3024 *: "Abpusējas Rullēšanas Limits"
3025 </dest> 3025 </dest>
3026 <voice> 3026 <voice>
3027 *: "abpuseejas rulleeshanas limits" 3027 *: "abpuseejas rulleeshanas limits"
3028 </voice> 3028 </voice>
3029</phrase> 3029</phrase>
3030<phrase> 3030<phrase>
3031 id: LANG_REMOTE_SCROLL_SETS 3031 id: LANG_REMOTE_SCROLL_SETS
3032 desc: "Remote Scrolling Options" Submenu in "Scrolling Options" menu 3032 desc: "Remote Scrolling Options" Submenu in "Scrolling Options" menu
3033 user: core 3033 user: core
3034 <source> 3034 <source>
3035 *: none 3035 *: none
3036 remote: "Remote Scrolling Options" 3036 remote: "Remote Scrolling Options"
3037 </source> 3037 </source>
3038 <dest> 3038 <dest>
3039 *: none 3039 *: none
3040 remote: "Pults Rullēšanas Opcijas" 3040 remote: "Pults Rullēšanas Opcijas"
3041 </dest> 3041 </dest>
3042 <voice> 3042 <voice>
3043 *: none 3043 *: none
3044 remote: "pults rulleeshanas opcijas" 3044 remote: "pults rulleeshanas opcijas"
3045 </voice> 3045 </voice>
3046</phrase> 3046</phrase>
3047<phrase> 3047<phrase>
3048 id: LANG_SCREEN_SCROLL_VIEW 3048 id: LANG_SCREEN_SCROLL_VIEW
3049 desc: should lines scroll out of the screen 3049 desc: should lines scroll out of the screen
3050 user: core 3050 user: core
3051 <source> 3051 <source>
3052 *: none 3052 *: none
3053 lcd_bitmap: "Screen Scrolls Out Of View" 3053 lcd_bitmap: "Screen Scrolls Out Of View"
3054 </source> 3054 </source>
3055 <dest> 3055 <dest>
3056 *: none 3056 *: none
3057 lcd_bitmap: "Teksts IzrullÄ“jas Ä€rpus EkrÄna" 3057 lcd_bitmap: "Teksts IzrullÄ“jas Ä€rpus EkrÄna"
3058 </dest> 3058 </dest>
3059 <voice> 3059 <voice>
3060 *: none 3060 *: none
3061 lcd_bitmap: "teksts izrulleejas aarpus ekraana" 3061 lcd_bitmap: "teksts izrulleejas aarpus ekraana"
3062 </voice> 3062 </voice>
3063</phrase> 3063</phrase>
3064<phrase> 3064<phrase>
3065 id: LANG_SCREEN_SCROLL_STEP 3065 id: LANG_SCREEN_SCROLL_STEP
3066 desc: Pixels to advance per Screen scroll 3066 desc: Pixels to advance per Screen scroll
3067 user: core 3067 user: core
3068 <source> 3068 <source>
3069 *: none 3069 *: none
3070 lcd_bitmap: "Screen Scroll Step Size" 3070 lcd_bitmap: "Screen Scroll Step Size"
3071 </source> 3071 </source>
3072 <dest> 3072 <dest>
3073 *: none 3073 *: none
3074 lcd_bitmap: "EkrÄna RullÄ“Å¡anas Solis" 3074 lcd_bitmap: "EkrÄna RullÄ“Å¡anas Solis"
3075 </dest> 3075 </dest>
3076 <voice> 3076 <voice>
3077 *: none 3077 *: none
3078 lcd_bitmap: "ekraana rulleeshanas solis" 3078 lcd_bitmap: "ekraana rulleeshanas solis"
3079 </voice> 3079 </voice>
3080</phrase> 3080</phrase>
3081<phrase> 3081<phrase>
3082 id: LANG_SCROLL_PAGINATED 3082 id: LANG_SCROLL_PAGINATED
3083 desc: jump to new page when scrolling 3083 desc: jump to new page when scrolling
3084 user: core 3084 user: core
3085 <source> 3085 <source>
3086 *: "Paged Scrolling" 3086 *: "Paged Scrolling"
3087 </source> 3087 </source>
3088 <dest> 3088 <dest>
3089 *: "Rullēt Lapas" 3089 *: "Rullēt Lapas"
3090 </dest> 3090 </dest>
3091 <voice> 3091 <voice>
3092 *: "rulleet lapas" 3092 *: "rulleet lapas"
3093 </voice> 3093 </voice>
3094</phrase> 3094</phrase>
3095<phrase> 3095<phrase>
3096 id: LANG_LISTACCEL_START_DELAY 3096 id: LANG_LISTACCEL_START_DELAY
3097 desc: Delay before list starts accelerating 3097 desc: Delay before list starts accelerating
3098 user: core 3098 user: core
3099 <source> 3099 <source>
3100 *: "List Acceleration Start Delay" 3100 *: "List Acceleration Start Delay"
3101 wheel_acceleration: none 3101 wheel_acceleration: none
3102 </source> 3102 </source>
3103 <dest> 3103 <dest>
3104 *: "Saraksta Rullēšanas Aizture" 3104 *: "Saraksta Rullēšanas Aizture"
3105 wheel_acceleration: none 3105 wheel_acceleration: none
3106 </dest> 3106 </dest>
3107 <voice> 3107 <voice>
3108 *: "saraksta rulleeshanas aizture" 3108 *: "saraksta rulleeshanas aizture"
3109 wheel_acceleration: none 3109 wheel_acceleration: none
3110 </voice> 3110 </voice>
3111</phrase> 3111</phrase>
3112<phrase> 3112<phrase>
3113 id: LANG_LISTACCEL_ACCEL_SPEED 3113 id: LANG_LISTACCEL_ACCEL_SPEED
3114 desc: list acceleration speed 3114 desc: list acceleration speed
3115 user: core 3115 user: core
3116 <source> 3116 <source>
3117 *: "List Acceleration Speed" 3117 *: "List Acceleration Speed"
3118 wheel_acceleration: none 3118 wheel_acceleration: none
3119 </source> 3119 </source>
3120 <dest> 3120 <dest>
3121 *: "Saraksta PaÄtrinÄjums" 3121 *: "Saraksta PaÄtrinÄjums"
3122 wheel_acceleration: none 3122 wheel_acceleration: none
3123 </dest> 3123 </dest>
3124 <voice> 3124 <voice>
3125 *: "saraksta paaatrinaajums" 3125 *: "saraksta paaatrinaajums"
3126 wheel_acceleration: none 3126 wheel_acceleration: none
3127 </voice> 3127 </voice>
3128</phrase> 3128</phrase>
3129<phrase> 3129<phrase>
3130 id: LANG_BARS_MENU 3130 id: LANG_BARS_MENU
3131 desc: in the display sub menu 3131 desc: in the display sub menu
3132 user: core 3132 user: core
3133 <source> 3133 <source>
3134 *: none 3134 *: none
3135 lcd_bitmap: "Status-/Scrollbar" 3135 lcd_bitmap: "Status-/Scrollbar"
3136 </source> 3136 </source>
3137 <dest> 3137 <dest>
3138 *: none 3138 *: none
3139 lcd_bitmap: "Statusa-/Rulljosla" 3139 lcd_bitmap: "Statusa-/Rulljosla"
3140 </dest> 3140 </dest>
3141 <voice> 3141 <voice>
3142 *: none 3142 *: none
3143 lcd_bitmap: "statusa rulljosla" 3143 lcd_bitmap: "statusa rulljosla"
3144 </voice> 3144 </voice>
3145</phrase> 3145</phrase>
3146<phrase> 3146<phrase>
3147 id: LANG_SCROLL_BAR 3147 id: LANG_SCROLL_BAR
3148 desc: display menu, F3 substitute 3148 desc: display menu, F3 substitute
3149 user: core 3149 user: core
3150 <source> 3150 <source>
3151 *: none 3151 *: none
3152 lcd_bitmap: "Scroll Bar" 3152 lcd_bitmap: "Scroll Bar"
3153 </source> 3153 </source>
3154 <dest> 3154 <dest>
3155 *: none 3155 *: none
3156 lcd_bitmap: "Rulljosla" 3156 lcd_bitmap: "Rulljosla"
3157 </dest> 3157 </dest>
3158 <voice> 3158 <voice>
3159 *: none 3159 *: none
3160 lcd_bitmap: "rulljosla" 3160 lcd_bitmap: "rulljosla"
3161 </voice> 3161 </voice>
3162</phrase> 3162</phrase>
3163<phrase> 3163<phrase>
3164 id: LANG_STATUS_BAR 3164 id: LANG_STATUS_BAR
3165 desc: display menu, F3 substitute 3165 desc: display menu, F3 substitute
3166 user: core 3166 user: core
3167 <source> 3167 <source>
3168 *: none 3168 *: none
3169 lcd_bitmap: "Status Bar" 3169 lcd_bitmap: "Status Bar"
3170 </source> 3170 </source>
3171 <dest> 3171 <dest>
3172 *: none 3172 *: none
3173 lcd_bitmap: "Statusa Josla" 3173 lcd_bitmap: "Statusa Josla"
3174 </dest> 3174 </dest>
3175 <voice> 3175 <voice>
3176 *: none 3176 *: none
3177 lcd_bitmap: "statusa josla" 3177 lcd_bitmap: "statusa josla"
3178 </voice> 3178 </voice>
3179</phrase> 3179</phrase>
3180<phrase> 3180<phrase>
3181 id: LANG_BUTTON_BAR 3181 id: LANG_BUTTON_BAR
3182 desc: in settings menu 3182 desc: in settings menu
3183 user: core 3183 user: core
3184 <source> 3184 <source>
3185 *: none 3185 *: none
3186 recorder_pad: "Button Bar" 3186 recorder_pad: "Button Bar"
3187 </source> 3187 </source>
3188 <dest> 3188 <dest>
3189 *: none 3189 *: none
3190 recorder_pad: "Pogu Josla" 3190 recorder_pad: "Pogu Josla"
3191 </dest> 3191 </dest>
3192 <voice> 3192 <voice>
3193 *: none 3193 *: none
3194 recorder_pad: "pogu josla" 3194 recorder_pad: "pogu josla"
3195 </voice> 3195 </voice>
3196</phrase> 3196</phrase>
3197<phrase> 3197<phrase>
3198 id: LANG_VOLUME_DISPLAY 3198 id: LANG_VOLUME_DISPLAY
3199 desc: Volume type title 3199 desc: Volume type title
3200 user: core 3200 user: core
3201 <source> 3201 <source>
3202 *: none 3202 *: none
3203 lcd_bitmap: "Volume Display" 3203 lcd_bitmap: "Volume Display"
3204 </source> 3204 </source>
3205 <dest> 3205 <dest>
3206 *: none 3206 *: none
3207 lcd_bitmap: "Skaļuma Attēlošana" 3207 lcd_bitmap: "Skaļuma Attēlošana"
3208 </dest> 3208 </dest>
3209 <voice> 3209 <voice>
3210 *: none 3210 *: none
3211 lcd_bitmap: "skaljuma atteeloshana" 3211 lcd_bitmap: "skaljuma atteeloshana"
3212 </voice> 3212 </voice>
3213</phrase> 3213</phrase>
3214<phrase> 3214<phrase>
3215 id: LANG_BATTERY_DISPLAY 3215 id: LANG_BATTERY_DISPLAY
3216 desc: Battery type title 3216 desc: Battery type title
3217 user: core 3217 user: core
3218 <source> 3218 <source>
3219 *: none 3219 *: none
3220 lcd_bitmap: "Battery Display" 3220 lcd_bitmap: "Battery Display"
3221 </source> 3221 </source>
3222 <dest> 3222 <dest>
3223 *: none 3223 *: none
3224 lcd_bitmap: "Batterijas Attēlošana" 3224 lcd_bitmap: "Batterijas Attēlošana"
3225 </dest> 3225 </dest>
3226 <voice> 3226 <voice>
3227 *: none 3227 *: none
3228 lcd_bitmap: "baterijas atteeloshana" 3228 lcd_bitmap: "baterijas atteeloshana"
3229 </voice> 3229 </voice>
3230</phrase> 3230</phrase>
3231<phrase> 3231<phrase>
3232 id: LANG_DISPLAY_GRAPHIC 3232 id: LANG_DISPLAY_GRAPHIC
3233 desc: Label for type of icon display 3233 desc: Label for type of icon display
3234 user: core 3234 user: core
3235 <source> 3235 <source>
3236 *: none 3236 *: none
3237 lcd_bitmap: "Graphic" 3237 lcd_bitmap: "Graphic"
3238 </source> 3238 </source>
3239 <dest> 3239 <dest>
3240 *: none 3240 *: none
3241 lcd_bitmap: "Grafiski" 3241 lcd_bitmap: "Grafiski"
3242 </dest> 3242 </dest>
3243 <voice> 3243 <voice>
3244 *: none 3244 *: none
3245 lcd_bitmap: "grafiski" 3245 lcd_bitmap: "grafiski"
3246 </voice> 3246 </voice>
3247</phrase> 3247</phrase>
3248<phrase> 3248<phrase>
3249 id: LANG_DISPLAY_NUMERIC 3249 id: LANG_DISPLAY_NUMERIC
3250 desc: Label for type of icon display 3250 desc: Label for type of icon display
3251 user: core 3251 user: core
3252 <source> 3252 <source>
3253 *: none 3253 *: none
3254 lcd_bitmap: "Numeric" 3254 lcd_bitmap: "Numeric"
3255 </source> 3255 </source>
3256 <dest> 3256 <dest>
3257 *: none 3257 *: none
3258 lcd_bitmap: "Numeriski" 3258 lcd_bitmap: "Numeriski"
3259 </dest> 3259 </dest>
3260 <voice> 3260 <voice>
3261 *: none 3261 *: none
3262 lcd_bitmap: "numeriski" 3262 lcd_bitmap: "numeriski"
3263 </voice> 3263 </voice>
3264</phrase> 3264</phrase>
3265<phrase> 3265<phrase>
3266 id: LANG_PM_MENU 3266 id: LANG_PM_MENU
3267 desc: in the display menu 3267 desc: in the display menu
3268 user: core 3268 user: core
3269 <source> 3269 <source>
3270 *: "Peak Meter" 3270 *: "Peak Meter"
3271 masd: none 3271 masd: none
3272 </source> 3272 </source>
3273 <dest> 3273 <dest>
3274 *: "Līmeņa Indikators" 3274 *: "Līmeņa Indikators"
3275 masd: none 3275 masd: none
3276 </dest> 3276 </dest>
3277 <voice> 3277 <voice>
3278 *: "liimenja indikators" 3278 *: "liimenja indikators"
3279 masd: none 3279 masd: none
3280 </voice> 3280 </voice>
3281</phrase> 3281</phrase>
3282<phrase> 3282<phrase>
3283 id: LANG_PM_CLIP_HOLD 3283 id: LANG_PM_CLIP_HOLD
3284 desc: in the peak meter menu 3284 desc: in the peak meter menu
3285 user: core 3285 user: core
3286 <source> 3286 <source>
3287 *: "Clip Hold Time" 3287 *: "Clip Hold Time"
3288 masd: none 3288 masd: none
3289 </source> 3289 </source>
3290 <dest> 3290 <dest>
3291 *: "Kropļojuma Aizture" 3291 *: "Kropļojuma Aizture"
3292 masd: none 3292 masd: none
3293 </dest> 3293 </dest>
3294 <voice> 3294 <voice>
3295 *: "kropljojuma indikaacijas aizture" 3295 *: "kropljojuma indikaacijas aizture"
3296 masd: none 3296 masd: none
3297 </voice> 3297 </voice>
3298</phrase> 3298</phrase>
3299<phrase> 3299<phrase>
3300 id: LANG_PM_PEAK_HOLD 3300 id: LANG_PM_PEAK_HOLD
3301 desc: in the peak meter menu 3301 desc: in the peak meter menu
3302 user: core 3302 user: core
3303 <source> 3303 <source>
3304 *: "Peak Hold Time" 3304 *: "Peak Hold Time"
3305 masd: none 3305 masd: none
3306 </source> 3306 </source>
3307 <dest> 3307 <dest>
3308 *: "PÄ«Ä·a Aiztures" 3308 *: "PÄ«Ä·a Aiztures"
3309 masd: none 3309 masd: none
3310 </dest> 3310 </dest>
3311 <voice> 3311 <voice>
3312 *: "piikja indikaacijas aizture" 3312 *: "piikja indikaacijas aizture"
3313 masd: none 3313 masd: none
3314 </voice> 3314 </voice>
3315</phrase> 3315</phrase>
3316<phrase> 3316<phrase>
3317 id: LANG_PM_ETERNAL 3317 id: LANG_PM_ETERNAL
3318 desc: in the peak meter menu 3318 desc: in the peak meter menu
3319 user: core 3319 user: core
3320 <source> 3320 <source>
3321 *: "Eternal" 3321 *: "Eternal"
3322 masd: none 3322 masd: none
3323 </source> 3323 </source>
3324 <dest> 3324 <dest>
3325 *: "Ārējs" 3325 *: "Ārējs"
3326 masd: none 3326 masd: none
3327 </dest> 3327 </dest>
3328 <voice> 3328 <voice>
3329 *: "aareejs" 3329 *: "aareejs"
3330 masd: none 3330 masd: none
3331 </voice> 3331 </voice>
3332</phrase> 3332</phrase>
3333<phrase> 3333<phrase>
3334 id: LANG_PM_RELEASE 3334 id: LANG_PM_RELEASE
3335 desc: in the peak meter menu 3335 desc: in the peak meter menu
3336 user: core 3336 user: core
3337 <source> 3337 <source>
3338 *: "Peak Release" 3338 *: "Peak Release"
3339 masd: none 3339 masd: none
3340 </source> 3340 </source>
3341 <dest> 3341 <dest>
3342 *: "Pīķa Atlaišana" 3342 *: "Pīķa Atlaišana"
3343 masd: none 3343 masd: none
3344 </dest> 3344 </dest>
3345 <voice> 3345 <voice>
3346 *: "piikja indikaacijas atlaishana" 3346 *: "piikja indikaacijas atlaishana"
3347 masd: none 3347 masd: none
3348 </voice> 3348 </voice>
3349</phrase> 3349</phrase>
3350<phrase> 3350<phrase>
3351 id: LANG_PM_SCALE 3351 id: LANG_PM_SCALE
3352 desc: in the peak meter menu 3352 desc: in the peak meter menu
3353 user: core 3353 user: core
3354 <source> 3354 <source>
3355 *: "Scale" 3355 *: "Scale"
3356 masd: none 3356 masd: none
3357 </source> 3357 </source>
3358 <dest> 3358 <dest>
3359 *: "Skala" 3359 *: "Skala"
3360 masd: none 3360 masd: none
3361 </dest> 3361 </dest>
3362 <voice> 3362 <voice>
3363 *: "skala" 3363 *: "skala"
3364 masd: none 3364 masd: none
3365 </voice> 3365 </voice>
3366</phrase> 3366</phrase>
3367<phrase> 3367<phrase>
3368 id: LANG_PM_DBFS 3368 id: LANG_PM_DBFS
3369 desc: in the peak meter menu 3369 desc: in the peak meter menu
3370 user: core 3370 user: core
3371 <source> 3371 <source>
3372 *: "Logarithmic (dB)" 3372 *: "Logarithmic (dB)"
3373 masd: none 3373 masd: none
3374 </source> 3374 </source>
3375 <dest> 3375 <dest>
3376 *: "LogaritmiskÄ (dB)" 3376 *: "LogaritmiskÄ (dB)"
3377 masd: none 3377 masd: none
3378 </dest> 3378 </dest>
3379 <voice> 3379 <voice>
3380 *: "logaritmiskaa decibelu" 3380 *: "logaritmiskaa decibelu"
3381 masd: none 3381 masd: none
3382 </voice> 3382 </voice>
3383</phrase> 3383</phrase>
3384<phrase> 3384<phrase>
3385 id: LANG_PM_LINEAR 3385 id: LANG_PM_LINEAR
3386 desc: in the peak meter menu 3386 desc: in the peak meter menu
3387 user: core 3387 user: core
3388 <source> 3388 <source>
3389 *: "Linear (%)" 3389 *: "Linear (%)"
3390 masd: none 3390 masd: none
3391 </source> 3391 </source>
3392 <dest> 3392 <dest>
3393 *: "LineÄrÄ (%)" 3393 *: "LineÄrÄ (%)"
3394 masd: none 3394 masd: none
3395 </dest> 3395 </dest>
3396 <voice> 3396 <voice>
3397 *: "lineaaraa procentu" 3397 *: "lineaaraa procentu"
3398 masd: none 3398 masd: none
3399 </voice> 3399 </voice>
3400</phrase> 3400</phrase>
3401<phrase> 3401<phrase>
3402 id: LANG_PM_MIN 3402 id: LANG_PM_MIN
3403 desc: in the peak meter menu 3403 desc: in the peak meter menu
3404 user: core 3404 user: core
3405 <source> 3405 <source>
3406 *: "Minimum Of Range" 3406 *: "Minimum Of Range"
3407 masd: none 3407 masd: none
3408 </source> 3408 </source>
3409 <dest> 3409 <dest>
3410 *: "Skalas SÄkums" 3410 *: "Skalas SÄkums"
3411 masd: none 3411 masd: none
3412 </dest> 3412 </dest>
3413 <voice> 3413 <voice>
3414 *: "skalas saakums" 3414 *: "skalas saakums"
3415 masd: none 3415 masd: none
3416 </voice> 3416 </voice>
3417</phrase> 3417</phrase>
3418<phrase> 3418<phrase>
3419 id: LANG_PM_MAX 3419 id: LANG_PM_MAX
3420 desc: in the peak meter menu 3420 desc: in the peak meter menu
3421 user: core 3421 user: core
3422 <source> 3422 <source>
3423 *: "Maximum Of Range" 3423 *: "Maximum Of Range"
3424 masd: none 3424 masd: none
3425 </source> 3425 </source>
3426 <dest> 3426 <dest>
3427 *: "Skalas Beigas" 3427 *: "Skalas Beigas"
3428 masd: none 3428 masd: none
3429 </dest> 3429 </dest>
3430 <voice> 3430 <voice>
3431 *: "skalas beigas" 3431 *: "skalas beigas"
3432 masd: none 3432 masd: none
3433 </voice> 3433 </voice>
3434</phrase> 3434</phrase>
3435<phrase> 3435<phrase>
3436 id: LANG_DEFAULT_CODEPAGE 3436 id: LANG_DEFAULT_CODEPAGE
3437 desc: default encoding used with id3 tags 3437 desc: default encoding used with id3 tags
3438 user: core 3438 user: core
3439 <source> 3439 <source>
3440 *: "Default Codepage" 3440 *: "Default Codepage"
3441 </source> 3441 </source>
3442 <dest> 3442 <dest>
3443 *: "Noklusētais Kodējums" 3443 *: "Noklusētais Kodējums"
3444 </dest> 3444 </dest>
3445 <voice> 3445 <voice>
3446 *: "nokluseetais kodeejums" 3446 *: "nokluseetais kodeejums"
3447 </voice> 3447 </voice>
3448</phrase> 3448</phrase>
3449<phrase> 3449<phrase>
3450 id: LANG_CODEPAGE_LATIN1 3450 id: LANG_CODEPAGE_LATIN1
3451 desc: in codepage setting menu 3451 desc: in codepage setting menu
3452 user: core 3452 user: core
3453 <source> 3453 <source>
3454 *: "Latin1 (ISO-8859-1)" 3454 *: "Latin1 (ISO-8859-1)"
3455 </source> 3455 </source>
3456 <dest> 3456 <dest>
3457 *: "Latīņu1 (ISO-8859-1)" 3457 *: "Latīņu1 (ISO-8859-1)"
3458 </dest> 3458 </dest>
3459 <voice> 3459 <voice>
3460 *: "latiinju viens" 3460 *: "latiinju viens"
3461 </voice> 3461 </voice>
3462</phrase> 3462</phrase>
3463<phrase> 3463<phrase>
3464 id: LANG_CODEPAGE_GREEK 3464 id: LANG_CODEPAGE_GREEK
3465 desc: in codepage setting menu 3465 desc: in codepage setting menu
3466 user: core 3466 user: core
3467 <source> 3467 <source>
3468 *: "Greek (ISO-8859-7)" 3468 *: "Greek (ISO-8859-7)"
3469 </source> 3469 </source>
3470 <dest> 3470 <dest>
3471 *: "GrieÄ·u (ISO-8859-7)" 3471 *: "GrieÄ·u (ISO-8859-7)"
3472 </dest> 3472 </dest>
3473 <voice> 3473 <voice>
3474 *: "griekju" 3474 *: "griekju"
3475 </voice> 3475 </voice>
3476</phrase> 3476</phrase>
3477<phrase> 3477<phrase>
3478 id: LANG_CODEPAGE_HEBREW 3478 id: LANG_CODEPAGE_HEBREW
3479 desc: in codepage setting menu 3479 desc: in codepage setting menu
3480 user: core 3480 user: core
3481 <source> 3481 <source>
3482 *: none 3482 *: none
3483 lcd_bitmap: "Hebrew (ISO-8859-8)" 3483 lcd_bitmap: "Hebrew (ISO-8859-8)"
3484 </source> 3484 </source>
3485 <dest> 3485 <dest>
3486 *: none 3486 *: none
3487 lcd_bitmap: "Ebreju (ISO-8859-8)" 3487 lcd_bitmap: "Ebreju (ISO-8859-8)"
3488 </dest> 3488 </dest>
3489 <voice> 3489 <voice>
3490 *: none 3490 *: none
3491 lcd_bitmap: "ebreju" 3491 lcd_bitmap: "ebreju"
3492 </voice> 3492 </voice>
3493</phrase> 3493</phrase>
3494<phrase> 3494<phrase>
3495 id: LANG_CODEPAGE_CYRILLIC 3495 id: LANG_CODEPAGE_CYRILLIC
3496 desc: in codepage setting menu 3496 desc: in codepage setting menu
3497 user: core 3497 user: core
3498 <source> 3498 <source>
3499 *: "Cyrillic (CP1251)" 3499 *: "Cyrillic (CP1251)"
3500 </source> 3500 </source>
3501 <dest> 3501 <dest>
3502 *: "Kirilica (CP1251)" 3502 *: "Kirilica (CP1251)"
3503 </dest> 3503 </dest>
3504 <voice> 3504 <voice>
3505 *: "kirilica" 3505 *: "kirilica"
3506 </voice> 3506 </voice>
3507</phrase> 3507</phrase>
3508<phrase> 3508<phrase>
3509 id: LANG_CODEPAGE_THAI 3509 id: LANG_CODEPAGE_THAI
3510 desc: in codepage setting menu 3510 desc: in codepage setting menu
3511 user: core 3511 user: core
3512 <source> 3512 <source>
3513 *: none 3513 *: none
3514 lcd_bitmap: "Thai (ISO-8859-11)" 3514 lcd_bitmap: "Thai (ISO-8859-11)"
3515 </source> 3515 </source>
3516 <dest> 3516 <dest>
3517 *: none 3517 *: none
3518 lcd_bitmap: "Tai (ISO-8859-11)" 3518 lcd_bitmap: "Tai (ISO-8859-11)"
3519 </dest> 3519 </dest>
3520 <voice> 3520 <voice>
3521 *: none 3521 *: none
3522 lcd_bitmap: "tai" 3522 lcd_bitmap: "tai"
3523 </voice> 3523 </voice>
3524</phrase> 3524</phrase>
3525<phrase> 3525<phrase>
3526 id: LANG_CODEPAGE_ARABIC 3526 id: LANG_CODEPAGE_ARABIC
3527 desc: in codepage setting menu 3527 desc: in codepage setting menu
3528 user: core 3528 user: core
3529 <source> 3529 <source>
3530 *: none 3530 *: none
3531 lcd_bitmap: "Arabic (CP1256)" 3531 lcd_bitmap: "Arabic (CP1256)"
3532 </source> 3532 </source>
3533 <dest> 3533 <dest>
3534 *: none 3534 *: none
3535 lcd_bitmap: "ArÄbu (CP1256)" 3535 lcd_bitmap: "ArÄbu (CP1256)"
3536 </dest> 3536 </dest>
3537 <voice> 3537 <voice>
3538 *: none 3538 *: none
3539 lcd_bitmap: "araabu" 3539 lcd_bitmap: "araabu"
3540 </voice> 3540 </voice>
3541</phrase> 3541</phrase>
3542<phrase> 3542<phrase>
3543 id: LANG_CODEPAGE_TURKISH 3543 id: LANG_CODEPAGE_TURKISH
3544 desc: in codepage setting menu 3544 desc: in codepage setting menu
3545 user: core 3545 user: core
3546 <source> 3546 <source>
3547 *: "Turkish (ISO-8859-9)" 3547 *: "Turkish (ISO-8859-9)"
3548 </source> 3548 </source>
3549 <dest> 3549 <dest>
3550 *: "Turku (ISO-8859-9)" 3550 *: "Turku (ISO-8859-9)"
3551 </dest> 3551 </dest>
3552 <voice> 3552 <voice>
3553 *: "turku" 3553 *: "turku"
3554 </voice> 3554 </voice>
3555</phrase> 3555</phrase>
3556<phrase> 3556<phrase>
3557 id: LANG_CODEPAGE_LATIN_EXTENDED 3557 id: LANG_CODEPAGE_LATIN_EXTENDED
3558 desc: in codepage setting menu 3558 desc: in codepage setting menu
3559 user: core 3559 user: core
3560 <source> 3560 <source>
3561 *: "Latin Extended (ISO-8859-2)" 3561 *: "Latin Extended (ISO-8859-2)"
3562 </source> 3562 </source>
3563 <dest> 3563 <dest>
3564 *: "Latīņu Paplašin. (ISO-8859-2)" 3564 *: "Latīņu Paplašin. (ISO-8859-2)"
3565 </dest> 3565 </dest>
3566 <voice> 3566 <voice>
3567 *: "latiinju paplashinaatais" 3567 *: "latiinju paplashinaatais"
3568 </voice> 3568 </voice>
3569</phrase> 3569</phrase>
3570<phrase> 3570<phrase>
3571 id: LANG_CODEPAGE_JAPANESE 3571 id: LANG_CODEPAGE_JAPANESE
3572 desc: in codepage setting menu 3572 desc: in codepage setting menu
3573 user: core 3573 user: core
3574 <source> 3574 <source>
3575 *: none 3575 *: none
3576 lcd_bitmap: "Japanese (SJIS)" 3576 lcd_bitmap: "Japanese (SJIS)"
3577 </source> 3577 </source>
3578 <dest> 3578 <dest>
3579 *: none 3579 *: none
3580 lcd_bitmap: "JapÄņu (SJIS)" 3580 lcd_bitmap: "JapÄņu (SJIS)"
3581 </dest> 3581 </dest>
3582 <voice> 3582 <voice>
3583 *: none 3583 *: none
3584 lcd_bitmap: "Japaanju" 3584 lcd_bitmap: "Japaanju"
3585 </voice> 3585 </voice>
3586</phrase> 3586</phrase>
3587<phrase> 3587<phrase>
3588 id: LANG_CODEPAGE_SIMPLIFIED 3588 id: LANG_CODEPAGE_SIMPLIFIED
3589 desc: in codepage setting menu 3589 desc: in codepage setting menu
3590 user: core 3590 user: core
3591 <source> 3591 <source>
3592 *: none 3592 *: none
3593 lcd_bitmap: "Simp. Chinese (GB2312)" 3593 lcd_bitmap: "Simp. Chinese (GB2312)"
3594 </source> 3594 </source>
3595 <dest> 3595 <dest>
3596 *: none 3596 *: none
3597 lcd_bitmap: "Vienk. Ķīniešu (GB2312)" 3597 lcd_bitmap: "Vienk. Ķīniešu (GB2312)"
3598 </dest> 3598 </dest>
3599 <voice> 3599 <voice>
3600 *: none 3600 *: none
3601 lcd_bitmap: "vienkaarshotais kjiinieshu" 3601 lcd_bitmap: "vienkaarshotais kjiinieshu"
3602 </voice> 3602 </voice>
3603</phrase> 3603</phrase>
3604<phrase> 3604<phrase>
3605 id: LANG_CODEPAGE_KOREAN 3605 id: LANG_CODEPAGE_KOREAN
3606 desc: in codepage setting menu 3606 desc: in codepage setting menu
3607 user: core 3607 user: core
3608 <source> 3608 <source>
3609 *: none 3609 *: none
3610 lcd_bitmap: "Korean (KSX1001)" 3610 lcd_bitmap: "Korean (KSX1001)"
3611 </source> 3611 </source>
3612 <dest> 3612 <dest>
3613 *: none 3613 *: none
3614 lcd_bitmap: "Korejiešu (KSX1001)" 3614 lcd_bitmap: "Korejiešu (KSX1001)"
3615 </dest> 3615 </dest>
3616 <voice> 3616 <voice>
3617 *: none 3617 *: none
3618 lcd_bitmap: "korejieshu" 3618 lcd_bitmap: "korejieshu"
3619 </voice> 3619 </voice>
3620</phrase> 3620</phrase>
3621<phrase> 3621<phrase>
3622 id: LANG_CODEPAGE_TRADITIONAL 3622 id: LANG_CODEPAGE_TRADITIONAL
3623 desc: in codepage setting menu 3623 desc: in codepage setting menu
3624 user: core 3624 user: core
3625 <source> 3625 <source>
3626 *: none 3626 *: none
3627 lcd_bitmap: "Trad. Chinese (BIG5)" 3627 lcd_bitmap: "Trad. Chinese (BIG5)"
3628 </source> 3628 </source>
3629 <dest> 3629 <dest>
3630 *: none 3630 *: none
3631 lcd_bitmap: "Trad. Ķīniešu (BIG5)" 3631 lcd_bitmap: "Trad. Ķīniešu (BIG5)"
3632 </dest> 3632 </dest>
3633 <voice> 3633 <voice>
3634 *: none 3634 *: none
3635 lcd_bitmap: "tradicionaalais kjiinieshu" 3635 lcd_bitmap: "tradicionaalais kjiinieshu"
3636 </voice> 3636 </voice>
3637</phrase> 3637</phrase>
3638<phrase> 3638<phrase>
3639 id: LANG_CODEPAGE_UTF8 3639 id: LANG_CODEPAGE_UTF8
3640 desc: in codepage setting menu 3640 desc: in codepage setting menu
3641 user: core 3641 user: core
3642 <source> 3642 <source>
3643 *: "Unicode (UTF-8)" 3643 *: "Unicode (UTF-8)"
3644 </source> 3644 </source>
3645 <dest> 3645 <dest>
3646 *: "Unikods (UTF-8)" 3646 *: "Unikods (UTF-8)"
3647 </dest> 3647 </dest>
3648 <voice> 3648 <voice>
3649 *: "unikods" 3649 *: "unikods"
3650 </voice> 3650 </voice>
3651</phrase> 3651</phrase>
3652<phrase> 3652<phrase>
3653 id: LANG_BUTTONLIGHT_TIMEOUT 3653 id: LANG_BUTTONLIGHT_TIMEOUT
3654 desc: in settings_menu 3654 desc: in settings_menu
3655 user: core 3655 user: core
3656 <source> 3656 <source>
3657 *: none 3657 *: none
3658 button_light: "Button Light Timeout" 3658 button_light: "Button Light Timeout"
3659 sansafuze*,sansae200*: "Wheel Light Timeout" 3659 sansafuze*,sansae200*: "Wheel Light Timeout"
3660 </source> 3660 </source>
3661 <dest> 3661 <dest>
3662 *: none 3662 *: none
3663 button_light: "Pogu Apgaismojums" 3663 button_light: "Pogu Apgaismojums"
3664 sansafuze*,sansae200*: "Ripuļa Apgaismojums" 3664 sansafuze*,sansae200*: "Ripuļa Apgaismojums"
3665 </dest> 3665 </dest>
3666 <voice> 3666 <voice>
3667 *: none 3667 *: none
3668 button_light: "pogu apgaismojums" 3668 button_light: "pogu apgaismojums"
3669 sansafuze*,sansae200*: "ripulja apgaismojums" 3669 sansafuze*,sansae200*: "ripulja apgaismojums"
3670 </voice> 3670 </voice>
3671</phrase> 3671</phrase>
3672<phrase> 3672<phrase>
3673 id: LANG_BUTTONLIGHT_BRIGHTNESS 3673 id: LANG_BUTTONLIGHT_BRIGHTNESS
3674 desc: in settings_menu 3674 desc: in settings_menu
3675 user: core 3675 user: core
3676 <source> 3676 <source>
3677 *: none 3677 *: none
3678 buttonlight_brightness: "Button Light Brightness" 3678 buttonlight_brightness: "Button Light Brightness"
3679 </source> 3679 </source>
3680 <dest> 3680 <dest>
3681 *: none 3681 *: none
3682 buttonlight_brightness: "Pogu Spilgtums" 3682 buttonlight_brightness: "Pogu Spilgtums"
3683 </dest> 3683 </dest>
3684 <voice> 3684 <voice>
3685 *: none 3685 *: none
3686 buttonlight_brightness: "pogu spilgtums" 3686 buttonlight_brightness: "pogu spilgtums"
3687 </voice> 3687 </voice>
3688</phrase> 3688</phrase>
3689<phrase> 3689<phrase>
3690 id: LANG_START_SCREEN 3690 id: LANG_START_SCREEN
3691 desc: in the system sub menu 3691 desc: in the system sub menu
3692 user: core 3692 user: core
3693 <source> 3693 <source>
3694 *: "Start Screen" 3694 *: "Start Screen"
3695 </source> 3695 </source>
3696 <dest> 3696 <dest>
3697 *: "SÄkuma Logs" 3697 *: "SÄkuma Logs"
3698 </dest> 3698 </dest>
3699 <voice> 3699 <voice>
3700 *: "saakuma logs" 3700 *: "saakuma logs"
3701 </voice> 3701 </voice>
3702</phrase> 3702</phrase>
3703<phrase> 3703<phrase>
3704 id: LANG_MAIN_MENU 3704 id: LANG_MAIN_MENU
3705 desc: in start screen setting 3705 desc: in start screen setting
3706 user: core 3706 user: core
3707 <source> 3707 <source>
3708 *: "Main Menu" 3708 *: "Main Menu"
3709 </source> 3709 </source>
3710 <dest> 3710 <dest>
3711 *: "GalvenÄ IzvÄ“lne" 3711 *: "GalvenÄ IzvÄ“lne"
3712 </dest> 3712 </dest>
3713 <voice> 3713 <voice>
3714 *: "galvenaa izveelne" 3714 *: "galvenaa izveelne"
3715 </voice> 3715 </voice>
3716</phrase> 3716</phrase>
3717<phrase> 3717<phrase>
3718 id: LANG_PREVIOUS_SCREEN 3718 id: LANG_PREVIOUS_SCREEN
3719 desc: in start screen setting 3719 desc: in start screen setting
3720 user: core 3720 user: core
3721 <source> 3721 <source>
3722 *: "Previous Screen" 3722 *: "Previous Screen"
3723 </source> 3723 </source>
3724 <dest> 3724 <dest>
3725 *: "IepriekÅ¡Ä“jÄ IzvÄ“lne" 3725 *: "IepriekÅ¡Ä“jÄ IzvÄ“lne"
3726 </dest> 3726 </dest>
3727 <voice> 3727 <voice>
3728 *: "ieprieksheejaa izveelne" 3728 *: "ieprieksheejaa izveelne"
3729 </voice> 3729 </voice>
3730</phrase> 3730</phrase>
3731<phrase> 3731<phrase>
3732 id: LANG_BATTERY_MENU 3732 id: LANG_BATTERY_MENU
3733 desc: in the system sub menu 3733 desc: in the system sub menu
3734 user: core 3734 user: core
3735 <source> 3735 <source>
3736 *: "Battery" 3736 *: "Battery"
3737 </source> 3737 </source>
3738 <dest> 3738 <dest>
3739 *: "Baterija" 3739 *: "Baterija"
3740 </dest> 3740 </dest>
3741 <voice> 3741 <voice>
3742 *: "baterija" 3742 *: "baterija"
3743 </voice> 3743 </voice>
3744</phrase> 3744</phrase>
3745<phrase> 3745<phrase>
3746 id: LANG_BATTERY_CAPACITY 3746 id: LANG_BATTERY_CAPACITY
3747 desc: in settings_menu 3747 desc: in settings_menu
3748 user: core 3748 user: core
3749 <source> 3749 <source>
3750 *: "Battery Capacity" 3750 *: "Battery Capacity"
3751 </source> 3751 </source>
3752 <dest> 3752 <dest>
3753 *: "Ietilpība" 3753 *: "Ietilpība"
3754 </dest> 3754 </dest>
3755 <voice> 3755 <voice>
3756 *: "baterijas ietilpiiba" 3756 *: "baterijas ietilpiiba"
3757 </voice> 3757 </voice>
3758</phrase> 3758</phrase>
3759<phrase> 3759<phrase>
3760 id: LANG_BATTERY_TYPE 3760 id: LANG_BATTERY_TYPE
3761 desc: in battery settings 3761 desc: in battery settings
3762 user: core 3762 user: core
3763 <source> 3763 <source>
3764 *: none 3764 *: none
3765 battery_types: "Battery Type" 3765 battery_types: "Battery Type"
3766 </source> 3766 </source>
3767 <dest> 3767 <dest>
3768 *: none 3768 *: none
3769 battery_types: "Veids" 3769 battery_types: "Veids"
3770 </dest> 3770 </dest>
3771 <voice> 3771 <voice>
3772 *: none 3772 *: none
3773 battery_types: "veids" 3773 battery_types: "veids"
3774 </voice> 3774 </voice>
3775</phrase> 3775</phrase>
3776<phrase> 3776<phrase>
3777 id: LANG_BATTERY_TYPE_ALKALINE 3777 id: LANG_BATTERY_TYPE_ALKALINE
3778 desc: in battery settings 3778 desc: in battery settings
3779 user: core 3779 user: core
3780 <source> 3780 <source>
3781 *: none 3781 *: none
3782 battery_types: "Alkaline" 3782 battery_types: "Alkaline"
3783 </source> 3783 </source>
3784 <dest> 3784 <dest>
3785 *: none 3785 *: none
3786 battery_types: "SÄrma" 3786 battery_types: "SÄrma"
3787 </dest> 3787 </dest>
3788 <voice> 3788 <voice>
3789 *: none 3789 *: none
3790 battery_types: "saarma" 3790 battery_types: "saarma"
3791 </voice> 3791 </voice>
3792</phrase> 3792</phrase>
3793<phrase> 3793<phrase>
3794 id: LANG_BATTERY_TYPE_NIMH 3794 id: LANG_BATTERY_TYPE_NIMH
3795 desc: in battery settings 3795 desc: in battery settings
3796 user: core 3796 user: core
3797 <source> 3797 <source>
3798 *: none 3798 *: none
3799 battery_types: "NiMH" 3799 battery_types: "NiMH"
3800 </source> 3800 </source>
3801 <dest> 3801 <dest>
3802 *: none 3802 *: none
3803 battery_types: "NiMH" 3803 battery_types: "NiMH"
3804 </dest> 3804 </dest>
3805 <voice> 3805 <voice>
3806 *: none 3806 *: none
3807 battery_types: "nikjelja metaalhidraata" 3807 battery_types: "nikjelja metaalhidraata"
3808 </voice> 3808 </voice>
3809</phrase> 3809</phrase>
3810<phrase> 3810<phrase>
3811 id: LANG_DISK_MENU 3811 id: LANG_DISK_MENU
3812 desc: in the system sub menu 3812 desc: in the system sub menu
3813 user: core 3813 user: core
3814 <source> 3814 <source>
3815 *: "Disk" 3815 *: "Disk"
3816 </source> 3816 </source>
3817 <dest> 3817 <dest>
3818 *: "Disks" 3818 *: "Disks"
3819 </dest> 3819 </dest>
3820 <voice> 3820 <voice>
3821 *: "disks" 3821 *: "disks"
3822 </voice> 3822 </voice>
3823</phrase> 3823</phrase>
3824<phrase> 3824<phrase>
3825 id: LANG_SPINDOWN 3825 id: LANG_SPINDOWN
3826 desc: in settings_menu 3826 desc: in settings_menu
3827 user: core 3827 user: core
3828 <source> 3828 <source>
3829 *: "Disk Spindown" 3829 *: "Disk Spindown"
3830 flash_storage: none 3830 flash_storage: none
3831 </source> 3831 </source>
3832 <dest> 3832 <dest>
3833 *: "Diska ApstÄdinÄÅ¡ana" 3833 *: "Diska ApstÄdinÄÅ¡ana"
3834 flash_storage: none 3834 flash_storage: none
3835 </dest> 3835 </dest>
3836 <voice> 3836 <voice>
3837 *: "diska apstaadinaashana" 3837 *: "diska apstaadinaashana"
3838 flash_storage: none 3838 flash_storage: none
3839 </voice> 3839 </voice>
3840</phrase> 3840</phrase>
3841<phrase> 3841<phrase>
3842 id: LANG_DIRCACHE_ENABLE 3842 id: LANG_DIRCACHE_ENABLE
3843 desc: in directory cache settings 3843 desc: in directory cache settings
3844 user: core 3844 user: core
3845 <source> 3845 <source>
3846 *: none 3846 *: none
3847 dircache: "Directory Cache" 3847 dircache: "Directory Cache"
3848 </source> 3848 </source>
3849 <dest> 3849 <dest>
3850 *: none 3850 *: none
3851 dircache: "Mapju Buferis" 3851 dircache: "Mapju Buferis"
3852 </dest> 3852 </dest>
3853 <voice> 3853 <voice>
3854 *: none 3854 *: none
3855 dircache: "mapju buferis" 3855 dircache: "mapju buferis"
3856 </voice> 3856 </voice>
3857</phrase> 3857</phrase>
3858<phrase> 3858<phrase>
3859 id: LANG_TIME_MENU 3859 id: LANG_TIME_MENU
3860 desc: in the system sub menu 3860 desc: in the system sub menu
3861 user: core 3861 user: core
3862 <source> 3862 <source>
3863 *: none 3863 *: none
3864 rtc: "Time & Date" 3864 rtc: "Time & Date"
3865 </source> 3865 </source>
3866 <dest> 3866 <dest>
3867 *: none 3867 *: none
3868 rtc: "Laiks & Datums" 3868 rtc: "Laiks & Datums"
3869 </dest> 3869 </dest>
3870 <voice> 3870 <voice>
3871 *: none 3871 *: none
3872 rtc: "laiks un datums" 3872 rtc: "laiks un datums"
3873 </voice> 3873 </voice>
3874</phrase> 3874</phrase>
3875<phrase> 3875<phrase>
3876 id: LANG_SET_TIME 3876 id: LANG_SET_TIME
3877 desc: in settings_menu 3877 desc: in settings_menu
3878 user: core 3878 user: core
3879 <source> 3879 <source>
3880 *: none 3880 *: none
3881 rtc: "Set Time/Date" 3881 rtc: "Set Time/Date"
3882 </source> 3882 </source>
3883 <dest> 3883 <dest>
3884 *: none 3884 *: none
3885 rtc: "UzstÄdÄ«t Laiku/Datumu" 3885 rtc: "UzstÄdÄ«t Laiku/Datumu"
3886 </dest> 3886 </dest>
3887 <voice> 3887 <voice>
3888 *: none 3888 *: none
3889 rtc: "uzstaadiit laiku un datumu" 3889 rtc: "uzstaadiit laiku un datumu"
3890 </voice> 3890 </voice>
3891</phrase> 3891</phrase>
3892<phrase> 3892<phrase>
3893 id: LANG_TIMEFORMAT 3893 id: LANG_TIMEFORMAT
3894 desc: select the time format of time in status bar 3894 desc: select the time format of time in status bar
3895 user: core 3895 user: core
3896 <source> 3896 <source>
3897 *: none 3897 *: none
3898 rtc: "Time Format" 3898 rtc: "Time Format"
3899 </source> 3899 </source>
3900 <dest> 3900 <dest>
3901 *: none 3901 *: none
3902 rtc: "Laika FormÄts" 3902 rtc: "Laika FormÄts"
3903 </dest> 3903 </dest>
3904 <voice> 3904 <voice>
3905 *: none 3905 *: none
3906 rtc: "laika formaats" 3906 rtc: "laika formaats"
3907 </voice> 3907 </voice>
3908</phrase> 3908</phrase>
3909<phrase> 3909<phrase>
3910 id: LANG_12_HOUR_CLOCK 3910 id: LANG_12_HOUR_CLOCK
3911 desc: option for 12 hour clock 3911 desc: option for 12 hour clock
3912 user: core 3912 user: core
3913 <source> 3913 <source>
3914 *: none 3914 *: none
3915 rtc: "12 Hour Clock" 3915 rtc: "12 Hour Clock"
3916 </source> 3916 </source>
3917 <dest> 3917 <dest>
3918 *: none 3918 *: none
3919 rtc: "12 Stundu Pulkstenis" 3919 rtc: "12 Stundu Pulkstenis"
3920 </dest> 3920 </dest>
3921 <voice> 3921 <voice>
3922 *: none 3922 *: none
3923 rtc: "divpadsmit stundu pulkstenis" 3923 rtc: "divpadsmit stundu pulkstenis"
3924 </voice> 3924 </voice>
3925</phrase> 3925</phrase>
3926<phrase> 3926<phrase>
3927 id: LANG_24_HOUR_CLOCK 3927 id: LANG_24_HOUR_CLOCK
3928 desc: option for 24 hour clock 3928 desc: option for 24 hour clock
3929 user: core 3929 user: core
3930 <source> 3930 <source>
3931 *: none 3931 *: none
3932 rtc: "24 Hour Clock" 3932 rtc: "24 Hour Clock"
3933 </source> 3933 </source>
3934 <dest> 3934 <dest>
3935 *: none 3935 *: none
3936 rtc: "24 Stundu Pulkstenis" 3936 rtc: "24 Stundu Pulkstenis"
3937 </dest> 3937 </dest>
3938 <voice> 3938 <voice>
3939 *: none 3939 *: none
3940 rtc: "divdesmit chetru stundu pulkstenis" 3940 rtc: "divdesmit chetru stundu pulkstenis"
3941 </voice> 3941 </voice>
3942</phrase> 3942</phrase>
3943<phrase> 3943<phrase>
3944 id: LANG_TIME_SET_BUTTON 3944 id: LANG_TIME_SET_BUTTON
3945 desc: used in set_time() 3945 desc: used in set_time()
3946 user: core 3946 user: core
3947 <source> 3947 <source>
3948 *: none 3948 *: none
3949 rtc: "ON = Set" 3949 rtc: "ON = Set"
3950 mrobe500: "HEART = Set" 3950 mrobe500: "HEART = Set"
3951 iriverh100,iriverh120,iriverh300: "NAVI = Set" 3951 iriverh100,iriverh120,iriverh300: "NAVI = Set"
3952 ipod*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,sansae200*,sansac200*,gigabeat*,mrobe100,sansaclip*,sansafuze*: "SELECT = Set" 3952 ipod*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,sansae200*,sansac200*,gigabeat*,mrobe100,sansaclip*,sansafuze*: "SELECT = Set"
3953 gogearsa9200: "PLAY = Set" 3953 gogearsa9200: "PLAY = Set"
3954 vibe500: "OK = Set" 3954 vibe500: "OK = Set"
3955 mpiohd300: "ENTER = Set" 3955 mpiohd300: "ENTER = Set"
3956 </source> 3956 </source>
3957 <dest> 3957 <dest>
3958 *: none 3958 *: none
3959 rtc: "ON = UzstÄdÄ«t" 3959 rtc: "ON = UzstÄdÄ«t"
3960 mrobe500: "HEART = UzstÄdÄ«t" 3960 mrobe500: "HEART = UzstÄdÄ«t"
3961 iriverh100,iriverh120,iriverh300: "NAVI = UzstÄdÄ«t" 3961 iriverh100,iriverh120,iriverh300: "NAVI = UzstÄdÄ«t"
3962 ipod*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,sansae200*,sansac200*,gigabeat*,mrobe100,sansaclip*,sansafuze*: "SELECT = UzstÄdÄ«t" 3962 ipod*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,sansae200*,sansac200*,gigabeat*,mrobe100,sansaclip*,sansafuze*: "SELECT = UzstÄdÄ«t"
3963 gogearsa9200: "PLAY = UzstÄdÄ«t" 3963 gogearsa9200: "PLAY = UzstÄdÄ«t"
3964 vibe500: "OK = UzstÄdÄ«t" 3964 vibe500: "OK = UzstÄdÄ«t"
3965 mpiohd300: "ENTER = UzstÄdÄ«t" 3965 mpiohd300: "ENTER = UzstÄdÄ«t"
3966 </dest> 3966 </dest>
3967 <voice> 3967 <voice>
3968 *: none 3968 *: none
3969 rtc,iriverh100,iriverh120,iriverh300,iriverh10,iriverh10_5gb,iaudiox5,iaudiom5,ipod*,sansae200*,sansac200*,gigabeat*,mrobe100,gogearsa9200: "" 3969 rtc,iriverh100,iriverh120,iriverh300,iriverh10,iriverh10_5gb,iaudiox5,iaudiom5,ipod*,sansae200*,sansac200*,gigabeat*,mrobe100,gogearsa9200: ""
3970 </voice> 3970 </voice>
3971</phrase> 3971</phrase>
3972<phrase> 3972<phrase>
3973 id: LANG_TIME_REVERT 3973 id: LANG_TIME_REVERT
3974 desc: used in set_time() 3974 desc: used in set_time()
3975 user: core 3975 user: core
3976 <source> 3976 <source>
3977 *: none 3977 *: none
3978 rtc: "OFF = Revert" 3978 rtc: "OFF = Revert"
3979 mrobe500: "POWER = Revert" 3979 mrobe500: "POWER = Revert"
3980 iriverh100,iriverh120,iriverh300: "STOP = Revert" 3980 iriverh100,iriverh120,iriverh300: "STOP = Revert"
3981 ipod*,sansac200*,mpiohd300: "MENU = Revert" 3981 ipod*,sansac200*,mpiohd300: "MENU = Revert"
3982 iaudiox5,iaudiom5: "RECORD = Revert" 3982 iaudiox5,iaudiom5: "RECORD = Revert"
3983 iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert" 3983 iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Revert"
3984 gigabeatfx: "POWER = Revert" 3984 gigabeatfx: "POWER = Revert"
3985 mrobe100: "DISPLAY = Revert" 3985 mrobe100: "DISPLAY = Revert"
3986 gigabeats: "BACK = Revert" 3986 gigabeats: "BACK = Revert"
3987 gogearsa9200: "LEFT = Revert" 3987 gogearsa9200: "LEFT = Revert"
3988 vibe500: "CANCEL = Revert" 3988 vibe500: "CANCEL = Revert"
3989 </source> 3989 </source>
3990 <dest> 3990 <dest>
3991 *: none 3991 *: none
3992 rtc: "OFF = Atcelt" 3992 rtc: "OFF = Atcelt"
3993 mrobe500: "POWER = Atcelt" 3993 mrobe500: "POWER = Atcelt"
3994 iriverh100,iriverh120,iriverh300: "STOP = Atcelt" 3994 iriverh100,iriverh120,iriverh300: "STOP = Atcelt"
3995 ipod*,sansac200*,mpiohd300: "MENU = Atcelt" 3995 ipod*,sansac200*,mpiohd300: "MENU = Atcelt"
3996 iaudiox5,iaudiom5: "RECORD = Atcelt" 3996 iaudiox5,iaudiom5: "RECORD = Atcelt"
3997 iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Atcelt" 3997 iriverh10,iriverh10_5gb,sansae200*,sansafuze*: "PREV = Atcelt"
3998 gigabeatfx: "POWER = Atcelt" 3998 gigabeatfx: "POWER = Atcelt"
3999 mrobe100: "DISPLAY = Atcelt" 3999 mrobe100: "DISPLAY = Atcelt"
4000 gigabeats: "BACK = Atcelt" 4000 gigabeats: "BACK = Atcelt"
4001 gogearsa9200: "LEFT = Atcelt" 4001 gogearsa9200: "LEFT = Atcelt"
4002 vibe500: "CANCEL = Atcelt" 4002 vibe500: "CANCEL = Atcelt"
4003 </dest> 4003 </dest>
4004 <voice> 4004 <voice>
4005 *: none 4005 *: none
4006 rtc,iriverh100,iriverh120,iriverh300,ipod*,sansae200*,sansac200*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,gigabeat*,mrobe100,gogearsa9200: "" 4006 rtc,iriverh100,iriverh120,iriverh300,ipod*,sansae200*,sansac200*,iaudiox5,iaudiom5,iriverh10,iriverh10_5gb,gigabeat*,mrobe100,gogearsa9200: ""
4007 </voice> 4007 </voice>
4008</phrase> 4008</phrase>
4009<phrase> 4009<phrase>
4010 id: LANG_WEEKDAY_SUNDAY 4010 id: LANG_WEEKDAY_SUNDAY
4011 desc: Maximum 3-letter abbreviation for weekday 4011 desc: Maximum 3-letter abbreviation for weekday
4012 user: core 4012 user: core
4013 <source> 4013 <source>
4014 *: none 4014 *: none
4015 rtc: "Sun" 4015 rtc: "Sun"
4016 </source> 4016 </source>
4017 <dest> 4017 <dest>
4018 *: none 4018 *: none
4019 rtc: "Sv" 4019 rtc: "Sv"
4020 </dest> 4020 </dest>
4021 <voice> 4021 <voice>
4022 *: none 4022 *: none
4023 rtc: "" 4023 rtc: ""
4024 </voice> 4024 </voice>
4025</phrase> 4025</phrase>
4026<phrase> 4026<phrase>
4027 id: LANG_WEEKDAY_MONDAY 4027 id: LANG_WEEKDAY_MONDAY
4028 desc: Maximum 3-letter abbreviation for weekday 4028 desc: Maximum 3-letter abbreviation for weekday
4029 user: core 4029 user: core
4030 <source> 4030 <source>
4031 *: none 4031 *: none
4032 rtc: "Mon" 4032 rtc: "Mon"
4033 </source> 4033 </source>
4034 <dest> 4034 <dest>
4035 *: none 4035 *: none
4036 rtc: "Prm" 4036 rtc: "Prm"
4037 </dest> 4037 </dest>
4038 <voice> 4038 <voice>
4039 *: none 4039 *: none
4040 rtc: "" 4040 rtc: ""
4041 </voice> 4041 </voice>
4042</phrase> 4042</phrase>
4043<phrase> 4043<phrase>
4044 id: LANG_WEEKDAY_TUESDAY 4044 id: LANG_WEEKDAY_TUESDAY
4045 desc: Maximum 3-letter abbreviation for weekday 4045 desc: Maximum 3-letter abbreviation for weekday
4046 user: core 4046 user: core
4047 <source> 4047 <source>
4048 *: none 4048 *: none
4049 rtc: "Tue" 4049 rtc: "Tue"
4050 </source> 4050 </source>
4051 <dest> 4051 <dest>
4052 *: none 4052 *: none
4053 rtc: "Otr" 4053 rtc: "Otr"
4054 </dest> 4054 </dest>
4055 <voice> 4055 <voice>
4056 *: none 4056 *: none
4057 rtc: "" 4057 rtc: ""
4058 </voice> 4058 </voice>
4059</phrase> 4059</phrase>
4060<phrase> 4060<phrase>
4061 id: LANG_WEEKDAY_WEDNESDAY 4061 id: LANG_WEEKDAY_WEDNESDAY
4062 desc: Maximum 3-letter abbreviation for weekday 4062 desc: Maximum 3-letter abbreviation for weekday
4063 user: core 4063 user: core
4064 <source> 4064 <source>
4065 *: none 4065 *: none
4066 rtc: "Wed" 4066 rtc: "Wed"
4067 </source> 4067 </source>
4068 <dest> 4068 <dest>
4069 *: none 4069 *: none
4070 rtc: "Tre" 4070 rtc: "Tre"
4071 </dest> 4071 </dest>
4072 <voice> 4072 <voice>
4073 *: none 4073 *: none
4074 rtc: "" 4074 rtc: ""
4075 </voice> 4075 </voice>
4076</phrase> 4076</phrase>
4077<phrase> 4077<phrase>
4078 id: LANG_WEEKDAY_THURSDAY 4078 id: LANG_WEEKDAY_THURSDAY
4079 desc: Maximum 3-letter abbreviation for weekday 4079 desc: Maximum 3-letter abbreviation for weekday
4080 user: core 4080 user: core
4081 <source> 4081 <source>
4082 *: none 4082 *: none
4083 rtc: "Thu" 4083 rtc: "Thu"
4084 </source> 4084 </source>
4085 <dest> 4085 <dest>
4086 *: none 4086 *: none
4087 rtc: "Cet" 4087 rtc: "Cet"
4088 </dest> 4088 </dest>
4089 <voice> 4089 <voice>
4090 *: none 4090 *: none
4091 rtc: "" 4091 rtc: ""
4092 </voice> 4092 </voice>
4093</phrase> 4093</phrase>
4094<phrase> 4094<phrase>
4095 id: LANG_WEEKDAY_FRIDAY 4095 id: LANG_WEEKDAY_FRIDAY
4096 desc: Maximum 3-letter abbreviation for weekday 4096 desc: Maximum 3-letter abbreviation for weekday
4097 user: core 4097 user: core
4098 <source> 4098 <source>
4099 *: none 4099 *: none
4100 rtc: "Fri" 4100 rtc: "Fri"
4101 </source> 4101 </source>
4102 <dest> 4102 <dest>
4103 *: none 4103 *: none
4104 rtc: "Pkt" 4104 rtc: "Pkt"
4105 </dest> 4105 </dest>
4106 <voice> 4106 <voice>
4107 *: none 4107 *: none
4108 rtc: "" 4108 rtc: ""
4109 </voice> 4109 </voice>
4110</phrase> 4110</phrase>
4111<phrase> 4111<phrase>
4112 id: LANG_WEEKDAY_SATURDAY 4112 id: LANG_WEEKDAY_SATURDAY
4113 desc: Maximum 3-letter abbreviation for weekday 4113 desc: Maximum 3-letter abbreviation for weekday
4114 user: core 4114 user: core
4115 <source> 4115 <source>
4116 *: none 4116 *: none
4117 rtc: "Sat" 4117 rtc: "Sat"
4118 </source> 4118 </source>
4119 <dest> 4119 <dest>
4120 *: none 4120 *: none
4121 rtc: "Sst" 4121 rtc: "Sst"
4122 </dest> 4122 </dest>
4123 <voice> 4123 <voice>
4124 *: none 4124 *: none
4125 rtc: "" 4125 rtc: ""
4126 </voice> 4126 </voice>
4127</phrase> 4127</phrase>
4128<phrase> 4128<phrase>
4129 id: LANG_MONTH_JANUARY 4129 id: LANG_MONTH_JANUARY
4130 desc: Maximum 3-letter abbreviation for monthname 4130 desc: Maximum 3-letter abbreviation for monthname
4131 user: core 4131 user: core
4132 <source> 4132 <source>
4133 *: none 4133 *: none
4134 rtc: "Jan" 4134 rtc: "Jan"
4135 </source> 4135 </source>
4136 <dest> 4136 <dest>
4137 *: none 4137 *: none
4138 rtc: "Jan" 4138 rtc: "Jan"
4139 </dest> 4139 </dest>
4140 <voice> 4140 <voice>
4141 *: none 4141 *: none
4142 rtc: "janvaaris" 4142 rtc: "janvaaris"
4143 </voice> 4143 </voice>
4144</phrase> 4144</phrase>
4145<phrase> 4145<phrase>
4146 id: LANG_MONTH_FEBRUARY 4146 id: LANG_MONTH_FEBRUARY
4147 desc: Maximum 3-letter abbreviation for monthname 4147 desc: Maximum 3-letter abbreviation for monthname
4148 user: core 4148 user: core
4149 <source> 4149 <source>
4150 *: none 4150 *: none
4151 rtc: "Feb" 4151 rtc: "Feb"
4152 </source> 4152 </source>
4153 <dest> 4153 <dest>
4154 *: none 4154 *: none
4155 rtc: "Feb" 4155 rtc: "Feb"
4156 </dest> 4156 </dest>
4157 <voice> 4157 <voice>
4158 *: none 4158 *: none
4159 rtc: "februaaris" 4159 rtc: "februaaris"
4160 </voice> 4160 </voice>
4161</phrase> 4161</phrase>
4162<phrase> 4162<phrase>
4163 id: LANG_MONTH_MARCH 4163 id: LANG_MONTH_MARCH
4164 desc: Maximum 3-letter abbreviation for monthname 4164 desc: Maximum 3-letter abbreviation for monthname
4165 user: core 4165 user: core
4166 <source> 4166 <source>
4167 *: none 4167 *: none
4168 rtc: "Mar" 4168 rtc: "Mar"
4169 </source> 4169 </source>
4170 <dest> 4170 <dest>
4171 *: none 4171 *: none
4172 rtc: "Mar" 4172 rtc: "Mar"
4173 </dest> 4173 </dest>
4174 <voice> 4174 <voice>
4175 *: none 4175 *: none
4176 rtc: "marts" 4176 rtc: "marts"
4177 </voice> 4177 </voice>
4178</phrase> 4178</phrase>
4179<phrase> 4179<phrase>
4180 id: LANG_MONTH_APRIL 4180 id: LANG_MONTH_APRIL
4181 desc: Maximum 3-letter abbreviation for monthname 4181 desc: Maximum 3-letter abbreviation for monthname
4182 user: core 4182 user: core
4183 <source> 4183 <source>
4184 *: none 4184 *: none
4185 rtc: "Apr" 4185 rtc: "Apr"
4186 </source> 4186 </source>
4187 <dest> 4187 <dest>
4188 *: none 4188 *: none
4189 rtc: "Apr" 4189 rtc: "Apr"
4190 </dest> 4190 </dest>
4191 <voice> 4191 <voice>
4192 *: none 4192 *: none
4193 rtc: "apriilis" 4193 rtc: "apriilis"
4194 </voice> 4194 </voice>
4195</phrase> 4195</phrase>
4196<phrase> 4196<phrase>
4197 id: LANG_MONTH_MAY 4197 id: LANG_MONTH_MAY
4198 desc: Maximum 3-letter abbreviation for monthname 4198 desc: Maximum 3-letter abbreviation for monthname
4199 user: core 4199 user: core
4200 <source> 4200 <source>
4201 *: none 4201 *: none
4202 rtc: "May" 4202 rtc: "May"
4203 </source> 4203 </source>
4204 <dest> 4204 <dest>
4205 *: none 4205 *: none
4206 rtc: "Mai" 4206 rtc: "Mai"
4207 </dest> 4207 </dest>
4208 <voice> 4208 <voice>
4209 *: none 4209 *: none
4210 rtc: "maijs" 4210 rtc: "maijs"
4211 </voice> 4211 </voice>
4212</phrase> 4212</phrase>
4213<phrase> 4213<phrase>
4214 id: LANG_MONTH_JUNE 4214 id: LANG_MONTH_JUNE
4215 desc: Maximum 3-letter abbreviation for monthname 4215 desc: Maximum 3-letter abbreviation for monthname
4216 user: core 4216 user: core
4217 <source> 4217 <source>
4218 *: none 4218 *: none
4219 rtc: "Jun" 4219 rtc: "Jun"
4220 </source> 4220 </source>
4221 <dest> 4221 <dest>
4222 *: none 4222 *: none
4223 rtc: "JÅ«n" 4223 rtc: "JÅ«n"
4224 </dest> 4224 </dest>
4225 <voice> 4225 <voice>
4226 *: none 4226 *: none
4227 rtc: "juunijs" 4227 rtc: "juunijs"
4228 </voice> 4228 </voice>
4229</phrase> 4229</phrase>
4230<phrase> 4230<phrase>
4231 id: LANG_MONTH_JULY 4231 id: LANG_MONTH_JULY
4232 desc: Maximum 3-letter abbreviation for monthname 4232 desc: Maximum 3-letter abbreviation for monthname
4233 user: core 4233 user: core
4234 <source> 4234 <source>
4235 *: none 4235 *: none
4236 rtc: "Jul" 4236 rtc: "Jul"
4237 </source> 4237 </source>
4238 <dest> 4238 <dest>
4239 *: none 4239 *: none
4240 rtc: "JÅ«l" 4240 rtc: "JÅ«l"
4241 </dest> 4241 </dest>
4242 <voice> 4242 <voice>
4243 *: none 4243 *: none
4244 rtc: "juulijs" 4244 rtc: "juulijs"
4245 </voice> 4245 </voice>
4246</phrase> 4246</phrase>
4247<phrase> 4247<phrase>
4248 id: LANG_MONTH_AUGUST 4248 id: LANG_MONTH_AUGUST
4249 desc: Maximum 3-letter abbreviation for monthname 4249 desc: Maximum 3-letter abbreviation for monthname
4250 user: core 4250 user: core
4251 <source> 4251 <source>
4252 *: none 4252 *: none
4253 rtc: "Aug" 4253 rtc: "Aug"
4254 </source> 4254 </source>
4255 <dest> 4255 <dest>
4256 *: none 4256 *: none
4257 rtc: "Aug" 4257 rtc: "Aug"
4258 </dest> 4258 </dest>
4259 <voice> 4259 <voice>
4260 *: none 4260 *: none
4261 rtc: "augusts" 4261 rtc: "augusts"
4262 </voice> 4262 </voice>
4263</phrase> 4263</phrase>
4264<phrase> 4264<phrase>
4265 id: LANG_MONTH_SEPTEMBER 4265 id: LANG_MONTH_SEPTEMBER
4266 desc: Maximum 3-letter abbreviation for monthname 4266 desc: Maximum 3-letter abbreviation for monthname
4267 user: core 4267 user: core
4268 <source> 4268 <source>
4269 *: none 4269 *: none
4270 rtc: "Sep" 4270 rtc: "Sep"
4271 </source> 4271 </source>
4272 <dest> 4272 <dest>
4273 *: none 4273 *: none
4274 rtc: "Sep" 4274 rtc: "Sep"
4275 </dest> 4275 </dest>
4276 <voice> 4276 <voice>
4277 *: none 4277 *: none
4278 rtc: "septembris" 4278 rtc: "septembris"
4279 </voice> 4279 </voice>
4280</phrase> 4280</phrase>
4281<phrase> 4281<phrase>
4282 id: LANG_MONTH_OCTOBER 4282 id: LANG_MONTH_OCTOBER
4283 desc: Maximum 3-letter abbreviation for monthname 4283 desc: Maximum 3-letter abbreviation for monthname
4284 user: core 4284 user: core
4285 <source> 4285 <source>
4286 *: none 4286 *: none
4287 rtc: "Oct" 4287 rtc: "Oct"
4288 </source> 4288 </source>
4289 <dest> 4289 <dest>
4290 *: none 4290 *: none
4291 rtc: "Okt" 4291 rtc: "Okt"
4292 </dest> 4292 </dest>
4293 <voice> 4293 <voice>
4294 *: none 4294 *: none
4295 rtc: "oktobris" 4295 rtc: "oktobris"
4296 </voice> 4296 </voice>
4297</phrase> 4297</phrase>
4298<phrase> 4298<phrase>
4299 id: LANG_MONTH_NOVEMBER 4299 id: LANG_MONTH_NOVEMBER
4300 desc: Maximum 3-letter abbreviation for monthname 4300 desc: Maximum 3-letter abbreviation for monthname
4301 user: core 4301 user: core
4302 <source> 4302 <source>
4303 *: none 4303 *: none
4304 rtc: "Nov" 4304 rtc: "Nov"
4305 </source> 4305 </source>
4306 <dest> 4306 <dest>
4307 *: none 4307 *: none
4308 rtc: "Nov" 4308 rtc: "Nov"
4309 </dest> 4309 </dest>
4310 <voice> 4310 <voice>
4311 *: none 4311 *: none
4312 rtc: "novembris" 4312 rtc: "novembris"
4313 </voice> 4313 </voice>
4314</phrase> 4314</phrase>
4315<phrase> 4315<phrase>
4316 id: LANG_MONTH_DECEMBER 4316 id: LANG_MONTH_DECEMBER
4317 desc: Maximum 3-letter abbreviation for monthname 4317 desc: Maximum 3-letter abbreviation for monthname
4318 user: core 4318 user: core
4319 <source> 4319 <source>
4320 *: none 4320 *: none
4321 rtc: "Dec" 4321 rtc: "Dec"
4322 </source> 4322 </source>
4323 <dest> 4323 <dest>
4324 *: none 4324 *: none
4325 rtc: "Dec" 4325 rtc: "Dec"
4326 </dest> 4326 </dest>
4327 <voice> 4327 <voice>
4328 *: none 4328 *: none
4329 rtc: "decembris" 4329 rtc: "decembris"
4330 </voice> 4330 </voice>
4331</phrase> 4331</phrase>
4332<phrase> 4332<phrase>
4333 id: LANG_POWEROFF_IDLE 4333 id: LANG_POWEROFF_IDLE
4334 desc: in settings_menu 4334 desc: in settings_menu
4335 user: core 4335 user: core
4336 <source> 4336 <source>
4337 *: "Idle Poweroff" 4337 *: "Idle Poweroff"
4338 </source> 4338 </source>
4339 <dest> 4339 <dest>
4340 *: "AutomÄtiskÄ IzslÄ“gÅ¡anÄs" 4340 *: "AutomÄtiskÄ IzslÄ“gÅ¡anÄs"
4341 </dest> 4341 </dest>
4342 <voice> 4342 <voice>
4343 *: "automaatiskaa izsleegshanaas" 4343 *: "automaatiskaa izsleegshanaas"
4344 </voice> 4344 </voice>
4345</phrase> 4345</phrase>
4346<phrase> 4346<phrase>
4347 id: LANG_SLEEP_TIMER 4347 id: LANG_SLEEP_TIMER
4348 desc: sleep timer setting 4348 desc: sleep timer setting
4349 user: core 4349 user: core
4350 <source> 4350 <source>
4351 *: "Sleep Timer" 4351 *: "Sleep Timer"
4352 </source> 4352 </source>
4353 <dest> 4353 <dest>
4354 *: "Miega Taimeris" 4354 *: "Miega Taimeris"
4355 </dest> 4355 </dest>
4356 <voice> 4356 <voice>
4357 *: "miega taimeris" 4357 *: "miega taimeris"
4358 </voice> 4358 </voice>
4359</phrase> 4359</phrase>
4360<phrase> 4360<phrase>
4361 id: LANG_LIMITS_MENU 4361 id: LANG_LIMITS_MENU
4362 desc: in the system sub menu 4362 desc: in the system sub menu
4363 user: core 4363 user: core
4364 <source> 4364 <source>
4365 *: "Limits" 4365 *: "Limits"
4366 </source> 4366 </source>
4367 <dest> 4367 <dest>
4368 *: "Ierobežojumi" 4368 *: "Ierobežojumi"
4369 </dest> 4369 </dest>
4370 <voice> 4370 <voice>
4371 *: "ierobezhojumi" 4371 *: "ierobezhojumi"
4372 </voice> 4372 </voice>
4373</phrase> 4373</phrase>
4374<phrase> 4374<phrase>
4375 id: LANG_MAX_FILES_IN_DIR 4375 id: LANG_MAX_FILES_IN_DIR
4376 desc: in settings_menu 4376 desc: in settings_menu
4377 user: core 4377 user: core
4378 <source> 4378 <source>
4379 *: "Max Entries in File Browser" 4379 *: "Max Entries in File Browser"
4380 </source> 4380 </source>
4381 <dest> 4381 <dest>
4382 *: "Maks. Faili PÄrlÅ«kÄ" 4382 *: "Maks. Faili PÄrlÅ«kÄ"
4383 </dest> 4383 </dest>
4384 <voice> 4384 <voice>
4385 *: "maksimaalais failu skaits paarluukaa" 4385 *: "maksimaalais failu skaits paarluukaa"
4386 </voice> 4386 </voice>
4387</phrase> 4387</phrase>
4388<phrase> 4388<phrase>
4389 id: LANG_MAX_FILES_IN_PLAYLIST 4389 id: LANG_MAX_FILES_IN_PLAYLIST
4390 desc: in settings_menu 4390 desc: in settings_menu
4391 user: core 4391 user: core
4392 <source> 4392 <source>
4393 *: "Max Playlist Size" 4393 *: "Max Playlist Size"
4394 </source> 4394 </source>
4395 <dest> 4395 <dest>
4396 *: "Maks Saraksta Izmērs" 4396 *: "Maks Saraksta Izmērs"
4397 </dest> 4397 </dest>
4398 <voice> 4398 <voice>
4399 *: "maksimaalais dziesmu saraksta izmeers" 4399 *: "maksimaalais dziesmu saraksta izmeers"
4400 </voice> 4400 </voice>
4401</phrase> 4401</phrase>
4402<phrase> 4402<phrase>
4403 id: LANG_CAR_ADAPTER_MODE 4403 id: LANG_CAR_ADAPTER_MODE
4404 desc: Displayed for setting car adapter mode to on/off 4404 desc: Displayed for setting car adapter mode to on/off
4405 user: core 4405 user: core
4406 <source> 4406 <source>
4407 *: none 4407 *: none
4408 charging: "Car Adapter Mode" 4408 charging: "Car Adapter Mode"
4409 </source> 4409 </source>
4410 <dest> 4410 <dest>
4411 *: none 4411 *: none
4412 charging: "Automašīnas Režīms" 4412 charging: "Automašīnas Režīms"
4413 </dest> 4413 </dest>
4414 <voice> 4414 <voice>
4415 *: none 4415 *: none
4416 charging: "automashiinas rezhiims" 4416 charging: "automashiinas rezhiims"
4417 </voice> 4417 </voice>
4418</phrase> 4418</phrase>
4419<phrase> 4419<phrase>
4420 id: LANG_ALARM_MOD_ALARM_MENU 4420 id: LANG_ALARM_MOD_ALARM_MENU
4421 desc: The name of the additional entry in the main menu for the RTC alarm mod. 4421 desc: The name of the additional entry in the main menu for the RTC alarm mod.
4422 user: core 4422 user: core
4423 <source> 4423 <source>
4424 *: none 4424 *: none
4425 alarm: "Wake-Up Alarm" 4425 alarm: "Wake-Up Alarm"
4426 </source> 4426 </source>
4427 <dest> 4427 <dest>
4428 *: none 4428 *: none
4429 alarm: "ModinÄtÄjs" 4429 alarm: "ModinÄtÄjs"
4430 </dest> 4430 </dest>
4431 <voice> 4431 <voice>
4432 *: none 4432 *: none
4433 alarm: "modinaataajs" 4433 alarm: "modinaataajs"
4434 </voice> 4434 </voice>
4435</phrase> 4435</phrase>
4436<phrase> 4436<phrase>
4437 id: LANG_ALARM_WAKEUP_SCREEN 4437 id: LANG_ALARM_WAKEUP_SCREEN
4438 desc: in alarm menu setting 4438 desc: in alarm menu setting
4439 user: core 4439 user: core
4440 <source> 4440 <source>
4441 *: none 4441 *: none
4442 alarm: "Alarm Wake up Screen" 4442 alarm: "Alarm Wake up Screen"
4443 </source> 4443 </source>
4444 <dest> 4444 <dest>
4445 *: none 4445 *: none
4446 alarm: "ModinÄtÄja DarbÄ«ba" 4446 alarm: "ModinÄtÄja DarbÄ«ba"
4447 </dest> 4447 </dest>
4448 <voice> 4448 <voice>
4449 *: none 4449 *: none
4450 alarm: "modinaataaja darbiiba" 4450 alarm: "modinaataaja darbiiba"
4451 </voice> 4451 </voice>
4452</phrase> 4452</phrase>
4453<phrase> 4453<phrase>
4454 id: LANG_ALARM_MOD_TIME 4454 id: LANG_ALARM_MOD_TIME
4455 desc: The current alarm time shown in the alarm menu for the RTC alarm mod. 4455 desc: The current alarm time shown in the alarm menu for the RTC alarm mod.
4456 user: core 4456 user: core
4457 <source> 4457 <source>
4458 *: none 4458 *: none
4459 alarm: "Alarm Time:" 4459 alarm: "Alarm Time:"
4460 </source> 4460 </source>
4461 <dest> 4461 <dest>
4462 *: none 4462 *: none
4463 alarm: "ModinÄtÄja laiks:" 4463 alarm: "ModinÄtÄja laiks:"
4464 </dest> 4464 </dest>
4465 <voice> 4465 <voice>
4466 *: none 4466 *: none
4467 alarm: "" 4467 alarm: ""
4468 </voice> 4468 </voice>
4469</phrase> 4469</phrase>
4470<phrase> 4470<phrase>
4471 id: LANG_ALARM_MOD_TIME_TO_GO 4471 id: LANG_ALARM_MOD_TIME_TO_GO
4472 desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod. 4472 desc: The time until the alarm will go off shown in the alarm menu for the RTC alarm mod.
4473 user: core 4473 user: core
4474 <source> 4474 <source>
4475 *: none 4475 *: none
4476 alarm: "Waking Up In %d:%02d" 4476 alarm: "Waking Up In %d:%02d"
4477 </source> 4477 </source>
4478 <dest> 4478 <dest>
4479 *: none 4479 *: none
4480 alarm: "PamoÅ¡anÄs %d:%02d" 4480 alarm: "PamoÅ¡anÄs %d:%02d"
4481 </dest> 4481 </dest>
4482 <voice> 4482 <voice>
4483 *: none 4483 *: none
4484 alarm: "pamoshanaas" 4484 alarm: "pamoshanaas"
4485 </voice> 4485 </voice>
4486</phrase> 4486</phrase>
4487<phrase> 4487<phrase>
4488 id: LANG_ALARM_MOD_SHUTDOWN 4488 id: LANG_ALARM_MOD_SHUTDOWN
4489 desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod). 4489 desc: The text that tells the user that the alarm time is ok and the device shuts off (for the RTC alarm mod).
4490 user: core 4490 user: core
4491 <source> 4491 <source>
4492 *: none 4492 *: none
4493 alarm: "Alarm Set" 4493 alarm: "Alarm Set"
4494 </source> 4494 </source>
4495 <dest> 4495 <dest>
4496 *: none 4496 *: none
4497 alarm: "ModinÄtÄjs IeslÄ“gts" 4497 alarm: "ModinÄtÄjs IeslÄ“gts"
4498 </dest> 4498 </dest>
4499 <voice> 4499 <voice>
4500 *: none 4500 *: none
4501 alarm: "modinaataajs ir iesleegts" 4501 alarm: "modinaataajs ir iesleegts"
4502 </voice> 4502 </voice>
4503</phrase> 4503</phrase>
4504<phrase> 4504<phrase>
4505 id: LANG_ALARM_MOD_ERROR 4505 id: LANG_ALARM_MOD_ERROR
4506 desc: The text that tells that the time is incorrect (for the RTC alarm mod). 4506 desc: The text that tells that the time is incorrect (for the RTC alarm mod).
4507 user: core 4507 user: core
4508 <source> 4508 <source>
4509 *: none 4509 *: none
4510 alarm: "Alarm Time Is Too Soon!" 4510 alarm: "Alarm Time Is Too Soon!"
4511 </source> 4511 </source>
4512 <dest> 4512 <dest>
4513 *: none 4513 *: none
4514 alarm: "Laiks ir pÄrÄk drÄ«z!" 4514 alarm: "Laiks ir pÄrÄk drÄ«z!"
4515 </dest> 4515 </dest>
4516 <voice> 4516 <voice>
4517 *: none 4517 *: none
4518 alarm: "modinaashanas laiks ir paaraak driiz!" 4518 alarm: "modinaashanas laiks ir paaraak driiz!"
4519 </voice> 4519 </voice>
4520</phrase> 4520</phrase>
4521<phrase> 4521<phrase>
4522 id: LANG_ALARM_MOD_KEYS 4522 id: LANG_ALARM_MOD_KEYS
4523 desc: Shown key functions in alarm menu (for the RTC alarm mod). 4523 desc: Shown key functions in alarm menu (for the RTC alarm mod).
4524 user: core 4524 user: core
4525 <source> 4525 <source>
4526 *: none 4526 *: none
4527 alarm: "PLAY=Set OFF=Cancel" 4527 alarm: "PLAY=Set OFF=Cancel"
4528 ipod*: "SELECT=Set MENU=Cancel" 4528 ipod*: "SELECT=Set MENU=Cancel"
4529 iriverh10,iriverh10_5gb: "SELECT=Set PREV=Cancel" 4529 iriverh10,iriverh10_5gb: "SELECT=Set PREV=Cancel"
4530 gigabeats: "SELECT=Set POWER=Cancel" 4530 gigabeats: "SELECT=Set POWER=Cancel"
4531 vibe500: "OK=Set C=Cancel" 4531 vibe500: "OK=Set C=Cancel"
4532 mpiohd300: "ENTER=Set MENU=Cancel" 4532 mpiohd300: "ENTER=Set MENU=Cancel"
4533 </source> 4533 </source>
4534 <dest> 4534 <dest>
4535 *: none 4535 *: none
4536 alarm: "PLAY=Uzst OFF=Atteikties" 4536 alarm: "PLAY=Uzst OFF=Atteikties"
4537 ipod*: "SELECT=Uzst MENU=Atteikties" 4537 ipod*: "SELECT=Uzst MENU=Atteikties"
4538 iriverh10,iriverh10_5gb: "SELECT=Uzst PREV=Atteikties" 4538 iriverh10,iriverh10_5gb: "SELECT=Uzst PREV=Atteikties"
4539 gigabeats: "SELECT=Uzst POWER=Atteikties" 4539 gigabeats: "SELECT=Uzst POWER=Atteikties"
4540 vibe500: "OK=Uzst C=Atteikties" 4540 vibe500: "OK=Uzst C=Atteikties"
4541 mpiohd300: "ENTER=Uzst MENU=Atteikties" 4541 mpiohd300: "ENTER=Uzst MENU=Atteikties"
4542 </dest> 4542 </dest>
4543 <voice> 4543 <voice>
4544 *: none 4544 *: none
4545 alarm,ipod*: "" 4545 alarm,ipod*: ""
4546 </voice> 4546 </voice>
4547</phrase> 4547</phrase>
4548<phrase> 4548<phrase>
4549 id: LANG_ALARM_MOD_DISABLE 4549 id: LANG_ALARM_MOD_DISABLE
4550 desc: Announce that the RTC alarm has been turned off 4550 desc: Announce that the RTC alarm has been turned off
4551 user: core 4551 user: core
4552 <source> 4552 <source>
4553 *: none 4553 *: none
4554 alarm: "Alarm Disabled" 4554 alarm: "Alarm Disabled"
4555 </source> 4555 </source>
4556 <dest> 4556 <dest>
4557 *: none 4557 *: none
4558 alarm: "ModinÄtÄjs IzslÄ“gts" 4558 alarm: "ModinÄtÄjs IzslÄ“gts"
4559 </dest> 4559 </dest>
4560 <voice> 4560 <voice>
4561 *: none 4561 *: none
4562 alarm: "modinaataajs izsleegts" 4562 alarm: "modinaataajs izsleegts"
4563 </voice> 4563 </voice>
4564</phrase> 4564</phrase>
4565<phrase> 4565<phrase>
4566 id: LANG_BOOKMARK_SETTINGS 4566 id: LANG_BOOKMARK_SETTINGS
4567 desc: in general settings 4567 desc: in general settings
4568 user: core 4568 user: core
4569 <source> 4569 <source>
4570 *: "Bookmarking" 4570 *: "Bookmarking"
4571 </source> 4571 </source>
4572 <dest> 4572 <dest>
4573 *: "GrÄmatzÄ«mes" 4573 *: "GrÄmatzÄ«mes"
4574 </dest> 4574 </dest>
4575 <voice> 4575 <voice>
4576 *: "graamatziimes" 4576 *: "graamatziimes"
4577 </voice> 4577 </voice>
4578</phrase> 4578</phrase>
4579<phrase> 4579<phrase>
4580 id: LANG_BOOKMARK_SETTINGS_AUTOCREATE 4580 id: LANG_BOOKMARK_SETTINGS_AUTOCREATE
4581 desc: prompt for user to decide to create an bookmark 4581 desc: prompt for user to decide to create an bookmark
4582 user: core 4582 user: core
4583 <source> 4583 <source>
4584 *: "Bookmark on Stop" 4584 *: "Bookmark on Stop"
4585 </source> 4585 </source>
4586 <dest> 4586 <dest>
4587 *: "GrÄmatzÄ«me ApstÄjoties" 4587 *: "GrÄmatzÄ«me ApstÄjoties"
4588 </dest> 4588 </dest>
4589 <voice> 4589 <voice>
4590 *: "izveidot graamatziimi apstaajoties" 4590 *: "izveidot graamatziimi apstaajoties"
4591 </voice> 4591 </voice>
4592</phrase> 4592</phrase>
4593<phrase> 4593<phrase>
4594 id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES 4594 id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_YES
4595 desc: Save in recent bookmarks only 4595 desc: Save in recent bookmarks only
4596 user: core 4596 user: core
4597 <source> 4597 <source>
4598 *: "Yes - Recent only" 4598 *: "Yes - Recent only"
4599 </source> 4599 </source>
4600 <dest> 4600 <dest>
4601 *: "JÄ - Tikai pÄ“dÄ“jo" 4601 *: "JÄ - Tikai pÄ“dÄ“jo"
4602 </dest> 4602 </dest>
4603 <voice> 4603 <voice>
4604 *: "jaa tikai peedeejo" 4604 *: "jaa tikai peedeejo"
4605 </voice> 4605 </voice>
4606</phrase> 4606</phrase>
4607<phrase> 4607<phrase>
4608 id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK 4608 id: LANG_BOOKMARK_SETTINGS_RECENT_ONLY_ASK
4609 desc: Save in recent bookmarks only 4609 desc: Save in recent bookmarks only
4610 user: core 4610 user: core
4611 <source> 4611 <source>
4612 *: "Ask - Recent only" 4612 *: "Ask - Recent only"
4613 </source> 4613 </source>
4614 <dest> 4614 <dest>
4615 *: "JautÄt - Tikai pÄ“dÄ“jo" 4615 *: "JautÄt - Tikai pÄ“dÄ“jo"
4616 </dest> 4616 </dest>
4617 <voice> 4617 <voice>
4618 *: "jautaat tikai peedeejo" 4618 *: "jautaat tikai peedeejo"
4619 </voice> 4619 </voice>
4620</phrase> 4620</phrase>
4621<phrase> 4621<phrase>
4622 id: LANG_BOOKMARK_SETTINGS_AUTOLOAD 4622 id: LANG_BOOKMARK_SETTINGS_AUTOLOAD
4623 desc: prompt for user to decide to create a bookmark 4623 desc: prompt for user to decide to create a bookmark
4624 user: core 4624 user: core
4625 <source> 4625 <source>
4626 *: "Load Last Bookmark" 4626 *: "Load Last Bookmark"
4627 </source> 4627 </source>
4628 <dest> 4628 <dest>
4629 *: "IelÄdÄ“t PÄ“dÄ“jo GrÄmatzÄ«mi" 4629 *: "IelÄdÄ“t PÄ“dÄ“jo GrÄmatzÄ«mi"
4630 </dest> 4630 </dest>
4631 <voice> 4631 <voice>
4632 *: "ielaadeet peedeejo graamatziimi" 4632 *: "ielaadeet peedeejo graamatziimi"
4633 </voice> 4633 </voice>
4634</phrase> 4634</phrase>
4635<phrase> 4635<phrase>
4636 id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS 4636 id: LANG_BOOKMARK_SETTINGS_MAINTAIN_RECENT_BOOKMARKS
4637 desc: Configuration option to maintain a list of recent bookmarks 4637 desc: Configuration option to maintain a list of recent bookmarks
4638 user: core 4638 user: core
4639 <source> 4639 <source>
4640 *: "Maintain a List of Recent Bookmarks?" 4640 *: "Maintain a List of Recent Bookmarks?"
4641 </source> 4641 </source>
4642 <dest> 4642 <dest>
4643 *: "UzturÄ“t GrÄmatzÄ«mju Sarakstu?" 4643 *: "UzturÄ“t GrÄmatzÄ«mju Sarakstu?"
4644 </dest> 4644 </dest>
4645 <voice> 4645 <voice>
4646 *: "vai uztureet peedeejo graamatziimju sarakstu" 4646 *: "vai uztureet peedeejo graamatziimju sarakstu"
4647 </voice> 4647 </voice>
4648</phrase> 4648</phrase>
4649<phrase> 4649<phrase>
4650 id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY 4650 id: LANG_BOOKMARK_SETTINGS_UNIQUE_ONLY
4651 desc: Save only on bookmark for each playlist in recent bookmarks 4651 desc: Save only on bookmark for each playlist in recent bookmarks
4652 user: core 4652 user: core
4653 <source> 4653 <source>
4654 *: "Unique only" 4654 *: "Unique only"
4655 </source> 4655 </source>
4656 <dest> 4656 <dest>
4657 *: "Tikai unikÄlu" 4657 *: "Tikai unikÄlu"
4658 </dest> 4658 </dest>
4659 <voice> 4659 <voice>
4660 *: "tikai unikaalu" 4660 *: "tikai unikaalu"
4661 </voice> 4661 </voice>
4662</phrase> 4662</phrase>
4663<phrase> 4663<phrase>
4664 id: LANG_LANGUAGE 4664 id: LANG_LANGUAGE
4665 desc: in settings_menu 4665 desc: in settings_menu
4666 user: core 4666 user: core
4667 <source> 4667 <source>
4668 *: "Language" 4668 *: "Language"
4669 </source> 4669 </source>
4670 <dest> 4670 <dest>
4671 *: "Valoda" 4671 *: "Valoda"
4672 </dest> 4672 </dest>
4673 <voice> 4673 <voice>
4674 *: "valoda" 4674 *: "valoda"
4675 </voice> 4675 </voice>
4676</phrase> 4676</phrase>
4677<phrase> 4677<phrase>
4678 id: LANG_LANGUAGE_LOADED 4678 id: LANG_LANGUAGE_LOADED
4679 desc: shown when a language has been loaded from the dir browser 4679 desc: shown when a language has been loaded from the dir browser
4680 user: core 4680 user: core
4681 <source> 4681 <source>
4682 *: "New Language" 4682 *: "New Language"
4683 </source> 4683 </source>
4684 <dest> 4684 <dest>
4685 *: "Valoda Nomainīta" 4685 *: "Valoda Nomainīta"
4686 </dest> 4686 </dest>
4687 <voice> 4687 <voice>
4688 *: "valoda nomainiita" 4688 *: "valoda nomainiita"
4689 </voice> 4689 </voice>
4690</phrase> 4690</phrase>
4691<phrase> 4691<phrase>
4692 id: LANG_VOICE 4692 id: LANG_VOICE
4693 desc: root of voice menu 4693 desc: root of voice menu
4694 user: core 4694 user: core
4695 <source> 4695 <source>
4696 *: "Voice" 4696 *: "Voice"
4697 </source> 4697 </source>
4698 <dest> 4698 <dest>
4699 *: "Balss" 4699 *: "Balss"
4700 </dest> 4700 </dest>
4701 <voice> 4701 <voice>
4702 *: "balss" 4702 *: "balss"
4703 </voice> 4703 </voice>
4704</phrase> 4704</phrase>
4705<phrase> 4705<phrase>
4706 id: LANG_VOICE_MENU 4706 id: LANG_VOICE_MENU
4707 desc: item of voice menu, enable/disable the voice UI 4707 desc: item of voice menu, enable/disable the voice UI
4708 user: core 4708 user: core
4709 <source> 4709 <source>
4710 *: "Voice Menus" 4710 *: "Voice Menus"
4711 </source> 4711 </source>
4712 <dest> 4712 <dest>
4713 *: "IzrunÄt IzvÄ“lnes" 4713 *: "IzrunÄt IzvÄ“lnes"
4714 </dest> 4714 </dest>
4715 <voice> 4715 <voice>
4716 *: "izrunaat izveelnes" 4716 *: "izrunaat izveelnes"
4717 </voice> 4717 </voice>
4718</phrase> 4718</phrase>
4719<phrase> 4719<phrase>
4720 id: LANG_VOICE_DIR 4720 id: LANG_VOICE_DIR
4721 desc: item of voice menu, set the voice mode for directories 4721 desc: item of voice menu, set the voice mode for directories
4722 user: core 4722 user: core
4723 <source> 4723 <source>
4724 *: "Voice Directories" 4724 *: "Voice Directories"
4725 </source> 4725 </source>
4726 <dest> 4726 <dest>
4727 *: "IzrunÄt Mapes" 4727 *: "IzrunÄt Mapes"
4728 </dest> 4728 </dest>
4729 <voice> 4729 <voice>
4730 *: "izrunaat mapes" 4730 *: "izrunaat mapes"
4731 </voice> 4731 </voice>
4732</phrase> 4732</phrase>
4733<phrase> 4733<phrase>
4734 id: LANG_VOICE_DIR_TALK 4734 id: LANG_VOICE_DIR_TALK
4735 desc: Item of voice menu, whether to use directory .talk clips 4735 desc: Item of voice menu, whether to use directory .talk clips
4736 user: core 4736 user: core
4737 <source> 4737 <source>
4738 *: "Use Directory .talk Clips" 4738 *: "Use Directory .talk Clips"
4739 </source> 4739 </source>
4740 <dest> 4740 <dest>
4741 *: "Izmantot Mapes .talk Klipus" 4741 *: "Izmantot Mapes .talk Klipus"
4742 </dest> 4742 </dest>
4743 <voice> 4743 <voice>
4744 *: "izmantot mapes .talk klipus" 4744 *: "izmantot mapes .talk klipus"
4745 </voice> 4745 </voice>
4746</phrase> 4746</phrase>
4747<phrase> 4747<phrase>
4748 id: LANG_VOICE_FILE 4748 id: LANG_VOICE_FILE
4749 desc: item of voice menu, set the voice mode for files 4749 desc: item of voice menu, set the voice mode for files
4750 user: core 4750 user: core
4751 <source> 4751 <source>
4752 *: "Voice Filenames" 4752 *: "Voice Filenames"
4753 </source> 4753 </source>
4754 <dest> 4754 <dest>
4755 *: "IzrunÄt Failu Nosaukumus" 4755 *: "IzrunÄt Failu Nosaukumus"
4756 </dest> 4756 </dest>
4757 <voice> 4757 <voice>
4758 *: "izrunaat failu nosaukumus" 4758 *: "izrunaat failu nosaukumus"
4759 </voice> 4759 </voice>
4760</phrase> 4760</phrase>
4761<phrase> 4761<phrase>
4762 id: LANG_VOICE_FILE_TALK 4762 id: LANG_VOICE_FILE_TALK
4763 desc: Item of voice menu, whether to use file .talk clips 4763 desc: Item of voice menu, whether to use file .talk clips
4764 user: core 4764 user: core
4765 <source> 4765 <source>
4766 *: "Use File .talk Clips" 4766 *: "Use File .talk Clips"
4767 </source> 4767 </source>
4768 <dest> 4768 <dest>
4769 *: "Izmantot Failu .talk Klipus" 4769 *: "Izmantot Failu .talk Klipus"
4770 </dest> 4770 </dest>
4771 <voice> 4771 <voice>
4772 *: "izmantot failu .talk klipus" 4772 *: "izmantot failu .talk klipus"
4773 </voice> 4773 </voice>
4774</phrase> 4774</phrase>
4775<phrase> 4775<phrase>
4776 id: LANG_VOICE_NUMBER 4776 id: LANG_VOICE_NUMBER
4777 desc: "talkbox" mode for files+directories 4777 desc: "talkbox" mode for files+directories
4778 user: core 4778 user: core
4779 <source> 4779 <source>
4780 *: "Numbers" 4780 *: "Numbers"
4781 </source> 4781 </source>
4782 <dest> 4782 <dest>
4783 *: "Numuri" 4783 *: "Numuri"
4784 </dest> 4784 </dest>
4785 <voice> 4785 <voice>
4786 *: "numuri" 4786 *: "numuri"
4787 </voice> 4787 </voice>
4788</phrase> 4788</phrase>
4789<phrase> 4789<phrase>
4790 id: LANG_VOICE_SPELL 4790 id: LANG_VOICE_SPELL
4791 desc: "talkbox" mode for files+directories 4791 desc: "talkbox" mode for files+directories
4792 user: core 4792 user: core
4793 <source> 4793 <source>
4794 *: "Spell" 4794 *: "Spell"
4795 </source> 4795 </source>
4796 <dest> 4796 <dest>
4797 *: "IzrunÄt" 4797 *: "IzrunÄt"
4798 </dest> 4798 </dest>
4799 <voice> 4799 <voice>
4800 *: "izrunaat" 4800 *: "izrunaat"
4801 </voice> 4801 </voice>
4802</phrase> 4802</phrase>
4803<phrase> 4803<phrase>
4804 id: LANG_VOICE_DIR_HOVER 4804 id: LANG_VOICE_DIR_HOVER
4805 desc: "talkbox" mode for directories + files 4805 desc: "talkbox" mode for directories + files
4806 user: core 4806 user: core
4807 <source> 4807 <source>
4808 *: ".talk Clip" 4808 *: ".talk Clip"
4809 </source> 4809 </source>
4810 <dest> 4810 <dest>
4811 *: ".talk Klips" 4811 *: ".talk Klips"
4812 </dest> 4812 </dest>
4813 <voice> 4813 <voice>
4814 *: "talk klips" 4814 *: "talk klips"
4815 </voice> 4815 </voice>
4816</phrase> 4816</phrase>
4817<phrase> 4817<phrase>
4818 id: LANG_MANAGE_MENU 4818 id: LANG_MANAGE_MENU
4819 desc: in the main menu 4819 desc: in the main menu
4820 user: core 4820 user: core
4821 <source> 4821 <source>
4822 *: "Manage Settings" 4822 *: "Manage Settings"
4823 </source> 4823 </source>
4824 <dest> 4824 <dest>
4825 *: "Rediģēt UzstÄdÄ«jumus" 4825 *: "Rediģēt UzstÄdÄ«jumus"
4826 </dest> 4826 </dest>
4827 <voice> 4827 <voice>
4828 *: "redigjeet uzstaadiijumus" 4828 *: "redigjeet uzstaadiijumus"
4829 </voice> 4829 </voice>
4830</phrase> 4830</phrase>
4831<phrase> 4831<phrase>
4832 id: LANG_CUSTOM_CFG 4832 id: LANG_CUSTOM_CFG
4833 desc: in setting_menu() 4833 desc: in setting_menu()
4834 user: core 4834 user: core
4835 <source> 4835 <source>
4836 *: "Browse .cfg Files" 4836 *: "Browse .cfg Files"
4837 </source> 4837 </source>
4838 <dest> 4838 <dest>
4839 *: "Aplūkot .cfg Failus" 4839 *: "Aplūkot .cfg Failus"
4840 </dest> 4840 </dest>
4841 <voice> 4841 <voice>
4842 *: "apluukot konfiguraacijas failus" 4842 *: "apluukot konfiguraacijas failus"
4843 </voice> 4843 </voice>
4844</phrase> 4844</phrase>
4845<phrase> 4845<phrase>
4846 id: LANG_SETTINGS_LOADED 4846 id: LANG_SETTINGS_LOADED
4847 desc: Feedback shown when a .cfg file is loaded 4847 desc: Feedback shown when a .cfg file is loaded
4848 user: core 4848 user: core
4849 <source> 4849 <source>
4850 *: "Settings Loaded" 4850 *: "Settings Loaded"
4851 </source> 4851 </source>
4852 <dest> 4852 <dest>
4853 *: "UzstÄdÄ«jumi IelÄdÄ“ti" 4853 *: "UzstÄdÄ«jumi IelÄdÄ“ti"
4854 </dest> 4854 </dest>
4855 <voice> 4855 <voice>
4856 *: "uzstaadiijumi ielaadeeti" 4856 *: "uzstaadiijumi ielaadeeti"
4857 </voice> 4857 </voice>
4858</phrase> 4858</phrase>
4859<phrase> 4859<phrase>
4860 id: LANG_RESET 4860 id: LANG_RESET
4861 desc: in system_settings_menu() 4861 desc: in system_settings_menu()
4862 user: core 4862 user: core
4863 <source> 4863 <source>
4864 *: "Reset Settings" 4864 *: "Reset Settings"
4865 </source> 4865 </source>
4866 <dest> 4866 <dest>
4867 *: "Atgriezt Noklusējumu" 4867 *: "Atgriezt Noklusējumu"
4868 </dest> 4868 </dest>
4869 <voice> 4869 <voice>
4870 *: "atgriezt nokluseetos uzstaadiijumus" 4870 *: "atgriezt nokluseetos uzstaadiijumus"
4871 </voice> 4871 </voice>
4872</phrase> 4872</phrase>
4873<phrase> 4873<phrase>
4874 id: LANG_RESET_DONE_CLEAR 4874 id: LANG_RESET_DONE_CLEAR
4875 desc: visual confirmation after settings reset 4875 desc: visual confirmation after settings reset
4876 user: core 4876 user: core
4877 <source> 4877 <source>
4878 *: "Cleared" 4878 *: "Cleared"
4879 </source> 4879 </source>
4880 <dest> 4880 <dest>
4881 *: "Atgriezts Noklusējums" 4881 *: "Atgriezts Noklusējums"
4882 </dest> 4882 </dest>
4883 <voice> 4883 <voice>
4884 *: "atgriezti nokluseetie uzstaadiijumi" 4884 *: "atgriezti nokluseetie uzstaadiijumi"
4885 </voice> 4885 </voice>
4886</phrase> 4886</phrase>
4887<phrase> 4887<phrase>
4888 id: LANG_SAVE_SETTINGS 4888 id: LANG_SAVE_SETTINGS
4889 desc: in system_settings_menu() 4889 desc: in system_settings_menu()
4890 user: core 4890 user: core
4891 <source> 4891 <source>
4892 *: "Save .cfg File" 4892 *: "Save .cfg File"
4893 </source> 4893 </source>
4894 <dest> 4894 <dest>
4895 *: "SaglabÄt .cfg Failu" 4895 *: "SaglabÄt .cfg Failu"
4896 </dest> 4896 </dest>
4897 <voice> 4897 <voice>
4898 *: "saglabaat konfiguraacijas failu" 4898 *: "saglabaat konfiguraacijas failu"
4899 </voice> 4899 </voice>
4900</phrase> 4900</phrase>
4901<phrase> 4901<phrase>
4902 id: LANG_SETTINGS_SAVED 4902 id: LANG_SETTINGS_SAVED
4903 desc: Feedback shown when a .cfg file is saved 4903 desc: Feedback shown when a .cfg file is saved
4904 user: core 4904 user: core
4905 <source> 4905 <source>
4906 *: "Settings Saved" 4906 *: "Settings Saved"
4907 </source> 4907 </source>
4908 <dest> 4908 <dest>
4909 *: "UzstÄdÄ«jumi SaglabÄti" 4909 *: "UzstÄdÄ«jumi SaglabÄti"
4910 </dest> 4910 </dest>
4911 <voice> 4911 <voice>
4912 *: "uzstaadiijumi saglabaati" 4912 *: "uzstaadiijumi saglabaati"
4913 </voice> 4913 </voice>
4914</phrase> 4914</phrase>
4915<phrase> 4915<phrase>
4916 id: LANG_SAVE_THEME 4916 id: LANG_SAVE_THEME
4917 desc: save a theme file 4917 desc: save a theme file
4918 user: core 4918 user: core
4919 <source> 4919 <source>
4920 *: "Save Theme Settings" 4920 *: "Save Theme Settings"
4921 </source> 4921 </source>
4922 <dest> 4922 <dest>
4923 *: "SaglabÄt TÄ“mas UzstÄdÄ«jumus" 4923 *: "SaglabÄt TÄ“mas UzstÄdÄ«jumus"
4924 </dest> 4924 </dest>
4925 <voice> 4925 <voice>
4926 *: "saglabaat teemas uzstaadiijumus" 4926 *: "saglabaat teemas uzstaadiijumus"
4927 </voice> 4927 </voice>
4928</phrase> 4928</phrase>
4929<phrase> 4929<phrase>
4930 id: LANG_CUSTOM_THEME 4930 id: LANG_CUSTOM_THEME
4931 desc: in the main menu 4931 desc: in the main menu
4932 user: core 4932 user: core
4933 <source> 4933 <source>
4934 *: "Browse Theme Files" 4934 *: "Browse Theme Files"
4935 </source> 4935 </source>
4936 <dest> 4936 <dest>
4937 *: "Aplūkot Tēmu Failus" 4937 *: "Aplūkot Tēmu Failus"
4938 </dest> 4938 </dest>
4939 <voice> 4939 <voice>
4940 *: "apluukot teemu failus" 4940 *: "apluukot teemu failus"
4941 </voice> 4941 </voice>
4942</phrase> 4942</phrase>
4943<phrase> 4943<phrase>
4944 id: LANG_RECORDING_SETTINGS 4944 id: LANG_RECORDING_SETTINGS
4945 desc: in the main menu 4945 desc: in the main menu
4946 user: core 4946 user: core
4947 <source> 4947 <source>
4948 *: none 4948 *: none
4949 recording: "Recording Settings" 4949 recording: "Recording Settings"
4950 </source> 4950 </source>
4951 <dest> 4951 <dest>
4952 *: none 4952 *: none
4953 recording: "Ieraksta UzstÄdÄ«jumi" 4953 recording: "Ieraksta UzstÄdÄ«jumi"
4954 </dest> 4954 </dest>
4955 <voice> 4955 <voice>
4956 *: none 4956 *: none
4957 recording: "ieraksta uzstaadiijumi" 4957 recording: "ieraksta uzstaadiijumi"
4958 </voice> 4958 </voice>
4959</phrase> 4959</phrase>
4960<phrase> 4960<phrase>
4961 id: LANG_FM_MENU 4961 id: LANG_FM_MENU
4962 desc: fm menu title 4962 desc: fm menu title
4963 user: core 4963 user: core
4964 <source> 4964 <source>
4965 *: none 4965 *: none
4966 radio: "FM Radio Menu" 4966 radio: "FM Radio Menu"
4967 </source> 4967 </source>
4968 <dest> 4968 <dest>
4969 *: none 4969 *: none
4970 radio: "FM Radio Izvēlne" 4970 radio: "FM Radio Izvēlne"
4971 </dest> 4971 </dest>
4972 <voice> 4972 <voice>
4973 *: none 4973 *: none
4974 radio: "ef em radio izveelne" 4974 radio: "ef em radio izveelne"
4975 </voice> 4975 </voice>
4976</phrase> 4976</phrase>
4977<phrase> 4977<phrase>
4978 id: LANG_FM_NO_PRESETS 4978 id: LANG_FM_NO_PRESETS
4979 desc: error when preset list is empty 4979 desc: error when preset list is empty
4980 user: core 4980 user: core
4981 <source> 4981 <source>
4982 *: none 4982 *: none
4983 radio: "No presets" 4983 radio: "No presets"
4984 </source> 4984 </source>
4985 <dest> 4985 <dest>
4986 *: none 4986 *: none
4987 radio: "Nav Staciju" 4987 radio: "Nav Staciju"
4988 </dest> 4988 </dest>
4989 <voice> 4989 <voice>
4990 *: none 4990 *: none
4991 radio: "nav saglabaatu radiostaciju" 4991 radio: "nav saglabaatu radiostaciju"
4992 </voice> 4992 </voice>
4993</phrase> 4993</phrase>
4994<phrase> 4994<phrase>
4995 id: LANG_FM_ADD_PRESET 4995 id: LANG_FM_ADD_PRESET
4996 desc: in radio menu 4996 desc: in radio menu
4997 user: core 4997 user: core
4998 <source> 4998 <source>
4999 *: none 4999 *: none
5000 radio: "Add Preset" 5000 radio: "Add Preset"
5001 </source> 5001 </source>
5002 <dest> 5002 <dest>
5003 *: none 5003 *: none
5004 radio: "Pievienot Staciju" 5004 radio: "Pievienot Staciju"
5005 </dest> 5005 </dest>
5006 <voice> 5006 <voice>
5007 *: none 5007 *: none
5008 radio: "pievienot radiostaciju" 5008 radio: "pievienot radiostaciju"
5009 </voice> 5009 </voice>
5010</phrase> 5010</phrase>
5011<phrase> 5011<phrase>
5012 id: LANG_FM_EDIT_PRESET 5012 id: LANG_FM_EDIT_PRESET
5013 desc: in radio screen 5013 desc: in radio screen
5014 user: core 5014 user: core
5015 <source> 5015 <source>
5016 *: none 5016 *: none
5017 radio: "Edit Preset" 5017 radio: "Edit Preset"
5018 </source> 5018 </source>
5019 <dest> 5019 <dest>
5020 *: none 5020 *: none
5021 radio: "Labot Staciju" 5021 radio: "Labot Staciju"
5022 </dest> 5022 </dest>
5023 <voice> 5023 <voice>
5024 *: none 5024 *: none
5025 radio: "labot radiostaciju" 5025 radio: "labot radiostaciju"
5026 </voice> 5026 </voice>
5027</phrase> 5027</phrase>
5028<phrase> 5028<phrase>
5029 id: LANG_FM_DELETE_PRESET 5029 id: LANG_FM_DELETE_PRESET
5030 desc: in radio screen 5030 desc: in radio screen
5031 user: core 5031 user: core
5032 <source> 5032 <source>
5033 *: none 5033 *: none
5034 radio: "Remove Preset" 5034 radio: "Remove Preset"
5035 </source> 5035 </source>
5036 <dest> 5036 <dest>
5037 *: none 5037 *: none
5038 radio: "Izdzēst Staciju" 5038 radio: "Izdzēst Staciju"
5039 </dest> 5039 </dest>
5040 <voice> 5040 <voice>
5041 *: none 5041 *: none
5042 radio: "izdzeest radiostaciju" 5042 radio: "izdzeest radiostaciju"
5043 </voice> 5043 </voice>
5044</phrase> 5044</phrase>
5045<phrase> 5045<phrase>
5046 id: LANG_FM_PRESET_SAVE_FAILED 5046 id: LANG_FM_PRESET_SAVE_FAILED
5047 desc: in radio screen 5047 desc: in radio screen
5048 user: core 5048 user: core
5049 <source> 5049 <source>
5050 *: none 5050 *: none
5051 radio: "Preset Save Failed" 5051 radio: "Preset Save Failed"
5052 </source> 5052 </source>
5053 <dest> 5053 <dest>
5054 *: none 5054 *: none
5055 radio: "Staciju NeizdevÄs SaglabÄt" 5055 radio: "Staciju NeizdevÄs SaglabÄt"
5056 </dest> 5056 </dest>
5057 <voice> 5057 <voice>
5058 *: none 5058 *: none
5059 radio: "radiostaciju neizdevaas saglabaat" 5059 radio: "radiostaciju neizdevaas saglabaat"
5060 </voice> 5060 </voice>
5061</phrase> 5061</phrase>
5062<phrase> 5062<phrase>
5063 id: LANG_FM_NO_FREE_PRESETS 5063 id: LANG_FM_NO_FREE_PRESETS
5064 desc: in radio screen 5064 desc: in radio screen
5065 user: core 5065 user: core
5066 <source> 5066 <source>
5067 *: none 5067 *: none
5068 radio: "The Preset List is Full" 5068 radio: "The Preset List is Full"
5069 </source> 5069 </source>
5070 <dest> 5070 <dest>
5071 *: none 5071 *: none
5072 radio: "Saraksts Ir Pilns" 5072 radio: "Saraksts Ir Pilns"
5073 </dest> 5073 </dest>
5074 <voice> 5074 <voice>
5075 *: none 5075 *: none
5076 radio: "saraksts ir pilns" 5076 radio: "saraksts ir pilns"
5077 </voice> 5077 </voice>
5078</phrase> 5078</phrase>
5079<phrase> 5079<phrase>
5080 id: LANG_BUTTONBAR_MENU 5080 id: LANG_BUTTONBAR_MENU
5081 desc: in button bar 5081 desc: in button bar
5082 user: core 5082 user: core
5083 <source> 5083 <source>
5084 *: none 5084 *: none
5085 radio_screen_button_bar: "Menu" 5085 radio_screen_button_bar: "Menu"
5086 </source> 5086 </source>
5087 <dest> 5087 <dest>
5088 *: none 5088 *: none
5089 radio_screen_button_bar: "Izvēlne" 5089 radio_screen_button_bar: "Izvēlne"
5090 </dest> 5090 </dest>
5091 <voice> 5091 <voice>
5092 *: none 5092 *: none
5093 radio_screen_button_bar: "" 5093 radio_screen_button_bar: ""
5094 </voice> 5094 </voice>
5095</phrase> 5095</phrase>
5096<phrase> 5096<phrase>
5097 id: LANG_FM_BUTTONBAR_EXIT 5097 id: LANG_FM_BUTTONBAR_EXIT
5098 desc: in radio screen 5098 desc: in radio screen
5099 user: core 5099 user: core
5100 <source> 5100 <source>
5101 *: none 5101 *: none
5102 radio_screen_button_bar: "Exit" 5102 radio_screen_button_bar: "Exit"
5103 </source> 5103 </source>
5104 <dest> 5104 <dest>
5105 *: none 5105 *: none
5106 radio_screen_button_bar: "Iziet" 5106 radio_screen_button_bar: "Iziet"
5107 </dest> 5107 </dest>
5108 <voice> 5108 <voice>
5109 *: none 5109 *: none
5110 radio_screen_button_bar: "" 5110 radio_screen_button_bar: ""
5111 </voice> 5111 </voice>
5112</phrase> 5112</phrase>
5113<phrase> 5113<phrase>
5114 id: LANG_FM_BUTTONBAR_ACTION 5114 id: LANG_FM_BUTTONBAR_ACTION
5115 desc: in radio screen 5115 desc: in radio screen
5116 user: core 5116 user: core
5117 <source> 5117 <source>
5118 *: none 5118 *: none
5119 radio_screen_button_bar: "Action" 5119 radio_screen_button_bar: "Action"
5120 </source> 5120 </source>
5121 <dest> 5121 <dest>
5122 *: none 5122 *: none
5123 radio_screen_button_bar: "Darbība" 5123 radio_screen_button_bar: "Darbība"
5124 </dest> 5124 </dest>
5125 <voice> 5125 <voice>
5126 *: none 5126 *: none
5127 radio_screen_button_bar: "" 5127 radio_screen_button_bar: ""
5128 </voice> 5128 </voice>
5129</phrase> 5129</phrase>
5130<phrase> 5130<phrase>
5131 id: LANG_PRESET 5131 id: LANG_PRESET
5132 desc: in button bar and radio screen / menu 5132 desc: in button bar and radio screen / menu
5133 user: core 5133 user: core
5134 <source> 5134 <source>
5135 *: none 5135 *: none
5136 radio: "Preset" 5136 radio: "Preset"
5137 </source> 5137 </source>
5138 <dest> 5138 <dest>
5139 *: none 5139 *: none
5140 radio: "Stacija" 5140 radio: "Stacija"
5141 </dest> 5141 </dest>
5142 <voice> 5142 <voice>
5143 *: none 5143 *: none
5144 radio: "radiostacija" 5144 radio: "radiostacija"
5145 </voice> 5145 </voice>
5146</phrase> 5146</phrase>
5147<phrase> 5147<phrase>
5148 id: LANG_FM_BUTTONBAR_ADD 5148 id: LANG_FM_BUTTONBAR_ADD
5149 desc: in radio screen 5149 desc: in radio screen
5150 user: core 5150 user: core
5151 <source> 5151 <source>
5152 *: none 5152 *: none
5153 radio_screen_button_bar: "Add" 5153 radio_screen_button_bar: "Add"
5154 </source> 5154 </source>
5155 <dest> 5155 <dest>
5156 *: none 5156 *: none
5157 radio_screen_button_bar: "Pievienot" 5157 radio_screen_button_bar: "Pievienot"
5158 </dest> 5158 </dest>
5159 <voice> 5159 <voice>
5160 *: none 5160 *: none
5161 radio_screen_button_bar: "" 5161 radio_screen_button_bar: ""
5162 </voice> 5162 </voice>
5163</phrase> 5163</phrase>
5164<phrase> 5164<phrase>
5165 id: LANG_FM_BUTTONBAR_RECORD 5165 id: LANG_FM_BUTTONBAR_RECORD
5166 desc: in radio screen 5166 desc: in radio screen
5167 user: core 5167 user: core
5168 <source> 5168 <source>
5169 *: none 5169 *: none
5170 radio_screen_button_bar: "Record" 5170 radio_screen_button_bar: "Record"
5171 </source> 5171 </source>
5172 <dest> 5172 <dest>
5173 *: none 5173 *: none
5174 radio_screen_button_bar: "Ierakstīt" 5174 radio_screen_button_bar: "Ierakstīt"
5175 </dest> 5175 </dest>
5176 <voice> 5176 <voice>
5177 *: none 5177 *: none
5178 radio_screen_button_bar: "" 5178 radio_screen_button_bar: ""
5179 </voice> 5179 </voice>
5180</phrase> 5180</phrase>
5181<phrase> 5181<phrase>
5182 id: LANG_FM_MONO_MODE 5182 id: LANG_FM_MONO_MODE
5183 desc: in radio screen 5183 desc: in radio screen
5184 user: core 5184 user: core
5185 <source> 5185 <source>
5186 *: none 5186 *: none
5187 radio: "Force Mono" 5187 radio: "Force Mono"
5188 </source> 5188 </source>
5189 <dest> 5189 <dest>
5190 *: none 5190 *: none
5191 radio: "Ieslēgt Mono" 5191 radio: "Ieslēgt Mono"
5192 </dest> 5192 </dest>
5193 <voice> 5193 <voice>
5194 *: none 5194 *: none
5195 radio: "iesleegt mono" 5195 radio: "iesleegt mono"
5196 </voice> 5196 </voice>
5197</phrase> 5197</phrase>
5198<phrase> 5198<phrase>
5199 id: LANG_FM_FREEZE 5199 id: LANG_FM_FREEZE
5200 desc: splash screen during freeze in radio mode 5200 desc: splash screen during freeze in radio mode
5201 user: core 5201 user: core
5202 <source> 5202 <source>
5203 *: none 5203 *: none
5204 radio: "Screen frozen!" 5204 radio: "Screen frozen!"
5205 </source> 5205 </source>
5206 <dest> 5206 <dest>
5207 *: none 5207 *: none
5208 radio: "EkrÄns Sastindzis!" 5208 radio: "EkrÄns Sastindzis!"
5209 </dest> 5209 </dest>
5210 <voice> 5210 <voice>
5211 *: none 5211 *: none
5212 radio: "" 5212 radio: ""
5213 </voice> 5213 </voice>
5214</phrase> 5214</phrase>
5215<phrase> 5215<phrase>
5216 id: LANG_FM_SCAN_PRESETS 5216 id: LANG_FM_SCAN_PRESETS
5217 desc: in radio menu 5217 desc: in radio menu
5218 user: core 5218 user: core
5219 <source> 5219 <source>
5220 *: none 5220 *: none
5221 radio: "Auto-Scan Presets" 5221 radio: "Auto-Scan Presets"
5222 </source> 5222 </source>
5223 <dest> 5223 <dest>
5224 *: none 5224 *: none
5225 radio: "Noskanēt Stacijas" 5225 radio: "Noskanēt Stacijas"
5226 </dest> 5226 </dest>
5227 <voice> 5227 <voice>
5228 *: none 5228 *: none
5229 radio: "noskaneet radiostacijas" 5229 radio: "noskaneet radiostacijas"
5230 </voice> 5230 </voice>
5231</phrase> 5231</phrase>
5232<phrase> 5232<phrase>
5233 id: LANG_FM_CLEAR_PRESETS 5233 id: LANG_FM_CLEAR_PRESETS
5234 desc: confirmation if presets can be cleared 5234 desc: confirmation if presets can be cleared
5235 user: core 5235 user: core
5236 <source> 5236 <source>
5237 *: none 5237 *: none
5238 radio: "Clear Current Presets?" 5238 radio: "Clear Current Presets?"
5239 </source> 5239 </source>
5240 <dest> 5240 <dest>
5241 *: none 5241 *: none
5242 radio: "IzdzÄ“st EsoÅ¡Äs Stacijas?" 5242 radio: "IzdzÄ“st EsoÅ¡Äs Stacijas?"
5243 </dest> 5243 </dest>
5244 <voice> 5244 <voice>
5245 *: none 5245 *: none
5246 radio: "vai izdzeest esoshaas radiostacijas" 5246 radio: "vai izdzeest esoshaas radiostacijas"
5247 </voice> 5247 </voice>
5248</phrase> 5248</phrase>
5249<phrase> 5249<phrase>
5250 id: LANG_FM_SCANNING 5250 id: LANG_FM_SCANNING
5251 desc: during auto scan 5251 desc: during auto scan
5252 user: core 5252 user: core
5253 <source> 5253 <source>
5254 *: none 5254 *: none
5255 radio: "Scanning %d.%02d MHz" 5255 radio: "Scanning %d.%02d MHz"
5256 </source> 5256 </source>
5257 <dest> 5257 <dest>
5258 *: none 5258 *: none
5259 radio: "Skanē %d.%02d MHz" 5259 radio: "Skanē %d.%02d MHz"
5260 </dest> 5260 </dest>
5261 <voice> 5261 <voice>
5262 *: none 5262 *: none
5263 radio: "" 5263 radio: ""
5264 </voice> 5264 </voice>
5265</phrase> 5265</phrase>
5266<phrase> 5266<phrase>
5267 id: LANG_FM_DEFAULT_PRESET_NAME 5267 id: LANG_FM_DEFAULT_PRESET_NAME
5268 desc: default preset name for auto scan mode 5268 desc: default preset name for auto scan mode
5269 user: core 5269 user: core
5270 <source> 5270 <source>
5271 *: none 5271 *: none
5272 radio: "%d.%02d MHz" 5272 radio: "%d.%02d MHz"
5273 </source> 5273 </source>
5274 <dest> 5274 <dest>
5275 *: none 5275 *: none
5276 radio: "%d.%02d MHz" 5276 radio: "%d.%02d MHz"
5277 </dest> 5277 </dest>
5278 <voice> 5278 <voice>
5279 *: none 5279 *: none
5280 radio: "" 5280 radio: ""
5281 </voice> 5281 </voice>
5282</phrase> 5282</phrase>
5283<phrase> 5283<phrase>
5284 id: LANG_RADIO_SCAN_MODE 5284 id: LANG_RADIO_SCAN_MODE
5285 desc: in radio screen / menu 5285 desc: in radio screen / menu
5286 user: core 5286 user: core
5287 <source> 5287 <source>
5288 *: none 5288 *: none
5289 radio: "Scan" 5289 radio: "Scan"
5290 </source> 5290 </source>
5291 <dest> 5291 <dest>
5292 *: none 5292 *: none
5293 radio: "Skanēt" 5293 radio: "Skanēt"
5294 </dest> 5294 </dest>
5295 <voice> 5295 <voice>
5296 *: none 5296 *: none
5297 radio: "skaneet" 5297 radio: "skaneet"
5298 </voice> 5298 </voice>
5299</phrase> 5299</phrase>
5300<phrase> 5300<phrase>
5301 id: LANG_FM_PRESET_LOAD 5301 id: LANG_FM_PRESET_LOAD
5302 desc: load preset list in fm radio 5302 desc: load preset list in fm radio
5303 user: core 5303 user: core
5304 <source> 5304 <source>
5305 *: none 5305 *: none
5306 radio: "Load Preset List" 5306 radio: "Load Preset List"
5307 </source> 5307 </source>
5308 <dest> 5308 <dest>
5309 *: none 5309 *: none
5310 radio: "IelÄdÄ“t Stacijas" 5310 radio: "IelÄdÄ“t Stacijas"
5311 </dest> 5311 </dest>
5312 <voice> 5312 <voice>
5313 *: none 5313 *: none
5314 radio: "ielaadeet radiostacijas" 5314 radio: "ielaadeet radiostacijas"
5315 </voice> 5315 </voice>
5316</phrase> 5316</phrase>
5317<phrase> 5317<phrase>
5318 id: LANG_FM_PRESET_SAVE 5318 id: LANG_FM_PRESET_SAVE
5319 desc: Save preset list in fm radio 5319 desc: Save preset list in fm radio
5320 user: core 5320 user: core
5321 <source> 5321 <source>
5322 *: none 5322 *: none
5323 radio: "Save Preset List" 5323 radio: "Save Preset List"
5324 </source> 5324 </source>
5325 <dest> 5325 <dest>
5326 *: none 5326 *: none
5327 radio: "SaglabÄt Stacijas" 5327 radio: "SaglabÄt Stacijas"
5328 </dest> 5328 </dest>
5329 <voice> 5329 <voice>
5330 *: none 5330 *: none
5331 radio: "saglabaat radiostacijas" 5331 radio: "saglabaat radiostacijas"
5332 </voice> 5332 </voice>
5333</phrase> 5333</phrase>
5334<phrase> 5334<phrase>
5335 id: LANG_FM_PRESET_CLEAR 5335 id: LANG_FM_PRESET_CLEAR
5336 desc: clear preset list in fm radio 5336 desc: clear preset list in fm radio
5337 user: core 5337 user: core
5338 <source> 5338 <source>
5339 *: none 5339 *: none
5340 radio: "Clear Preset List" 5340 radio: "Clear Preset List"
5341 </source> 5341 </source>
5342 <dest> 5342 <dest>
5343 *: none 5343 *: none
5344 radio: "Izdzēst Stacijas" 5344 radio: "Izdzēst Stacijas"
5345 </dest> 5345 </dest>
5346 <voice> 5346 <voice>
5347 *: none 5347 *: none
5348 radio: "izdzeest radiostacijas" 5348 radio: "izdzeest radiostacijas"
5349 </voice> 5349 </voice>
5350</phrase> 5350</phrase>
5351<phrase> 5351<phrase>
5352 id: LANG_FMR 5352 id: LANG_FMR
5353 desc: Used when you need to say Preset List, also voiced 5353 desc: Used when you need to say Preset List, also voiced
5354 user: core 5354 user: core
5355 <source> 5355 <source>
5356 *: none 5356 *: none
5357 radio: "Preset List" 5357 radio: "Preset List"
5358 </source> 5358 </source>
5359 <dest> 5359 <dest>
5360 *: none 5360 *: none
5361 radio: "Staciju Saraksts" 5361 radio: "Staciju Saraksts"
5362 </dest> 5362 </dest>
5363 <voice> 5363 <voice>
5364 *: none 5364 *: none
5365 radio: "radiostaciju saraksts" 5365 radio: "radiostaciju saraksts"
5366 </voice> 5366 </voice>
5367</phrase> 5367</phrase>
5368<phrase> 5368<phrase>
5369 id: LANG_FM_FIRST_AUTOSCAN 5369 id: LANG_FM_FIRST_AUTOSCAN
5370 desc: When you run the radio without an fmr file in settings 5370 desc: When you run the radio without an fmr file in settings
5371 user: core 5371 user: core
5372 <source> 5372 <source>
5373 *: none 5373 *: none
5374 radio: "No settings found. Autoscan?" 5374 radio: "No settings found. Autoscan?"
5375 </source> 5375 </source>
5376 <dest> 5376 <dest>
5377 *: none 5377 *: none
5378 radio: "Nav UzstÄdÄ«jumu. SkanÄ“t?" 5378 radio: "Nav UzstÄdÄ«jumu. SkanÄ“t?"
5379 </dest> 5379 </dest>
5380 <voice> 5380 <voice>
5381 *: none 5381 *: none
5382 radio: "nav uzstaadiijumu. vai skaneet" 5382 radio: "nav uzstaadiijumu. vai skaneet"
5383 </voice> 5383 </voice>
5384</phrase> 5384</phrase>
5385<phrase> 5385<phrase>
5386 id: LANG_FM_SAVE_CHANGES 5386 id: LANG_FM_SAVE_CHANGES
5387 desc: deprecated 5387 desc: deprecated
5388 user: core 5388 user: core
5389 <source> 5389 <source>
5390 *: none 5390 *: none
5391 radio: "" 5391 radio: ""
5392 </source> 5392 </source>
5393 <dest> 5393 <dest>
5394 *: none 5394 *: none
5395 radio: "" 5395 radio: ""
5396 </dest> 5396 </dest>
5397 <voice> 5397 <voice>
5398 *: none 5398 *: none
5399 radio: "" 5399 radio: ""
5400 </voice> 5400 </voice>
5401</phrase> 5401</phrase>
5402<phrase> 5402<phrase>
5403 id: LANG_FM_REGION 5403 id: LANG_FM_REGION
5404 desc: fm tuner region setting 5404 desc: fm tuner region setting
5405 user: core 5405 user: core
5406 <source> 5406 <source>
5407 *: none 5407 *: none
5408 radio: "Region" 5408 radio: "Region"
5409 </source> 5409 </source>
5410 <dest> 5410 <dest>
5411 *: none 5411 *: none
5412 radio: "Reģions" 5412 radio: "Reģions"
5413 </dest> 5413 </dest>
5414 <voice> 5414 <voice>
5415 *: none 5415 *: none
5416 radio: "regjions" 5416 radio: "regjions"
5417 </voice> 5417 </voice>
5418</phrase> 5418</phrase>
5419<phrase> 5419<phrase>
5420 id: LANG_FM_EUROPE 5420 id: LANG_FM_EUROPE
5421 desc: fm tuner region europe 5421 desc: fm tuner region europe
5422 user: core 5422 user: core
5423 <source> 5423 <source>
5424 *: none 5424 *: none
5425 radio: "Europe" 5425 radio: "Europe"
5426 </source> 5426 </source>
5427 <dest> 5427 <dest>
5428 *: none 5428 *: none
5429 radio: "Eiropa" 5429 radio: "Eiropa"
5430 </dest> 5430 </dest>
5431 <voice> 5431 <voice>
5432 *: none 5432 *: none
5433 radio: "eiropa" 5433 radio: "eiropa"
5434 </voice> 5434 </voice>
5435</phrase> 5435</phrase>
5436<phrase> 5436<phrase>
5437 id: LANG_FM_US 5437 id: LANG_FM_US
5438 desc: fm region us / canada 5438 desc: fm region us / canada
5439 user: core 5439 user: core
5440 <source> 5440 <source>
5441 *: none 5441 *: none
5442 radio: "US / Canada" 5442 radio: "US / Canada"
5443 </source> 5443 </source>
5444 <dest> 5444 <dest>
5445 *: none 5445 *: none
5446 radio: "ASV / KanÄda" 5446 radio: "ASV / KanÄda"
5447 </dest> 5447 </dest>
5448 <voice> 5448 <voice>
5449 *: none 5449 *: none
5450 radio: "asv un kanaada" 5450 radio: "asv un kanaada"
5451 </voice> 5451 </voice>
5452</phrase> 5452</phrase>
5453<phrase> 5453<phrase>
5454 id: LANG_FM_JAPAN 5454 id: LANG_FM_JAPAN
5455 desc: fm region japan 5455 desc: fm region japan
5456 user: core 5456 user: core
5457 <source> 5457 <source>
5458 *: none 5458 *: none
5459 radio: "Japan" 5459 radio: "Japan"
5460 </source> 5460 </source>
5461 <dest> 5461 <dest>
5462 *: none 5462 *: none
5463 radio: "JapÄna" 5463 radio: "JapÄna"
5464 </dest> 5464 </dest>
5465 <voice> 5465 <voice>
5466 *: none 5466 *: none
5467 radio: "japaana" 5467 radio: "japaana"
5468 </voice> 5468 </voice>
5469</phrase> 5469</phrase>
5470<phrase> 5470<phrase>
5471 id: LANG_FM_KOREA 5471 id: LANG_FM_KOREA
5472 desc: fm region korea 5472 desc: fm region korea
5473 user: core 5473 user: core
5474 <source> 5474 <source>
5475 *: none 5475 *: none
5476 radio: "Korea" 5476 radio: "Korea"
5477 </source> 5477 </source>
5478 <dest> 5478 <dest>
5479 *: none 5479 *: none
5480 radio: "Koreja" 5480 radio: "Koreja"
5481 </dest> 5481 </dest>
5482 <voice> 5482 <voice>
5483 *: none 5483 *: none
5484 radio: "koreja" 5484 radio: "koreja"
5485 </voice> 5485 </voice>
5486</phrase> 5486</phrase>
5487<phrase> 5487<phrase>
5488 id: LANG_RECORDING_FORMAT 5488 id: LANG_RECORDING_FORMAT
5489 desc: audio format item in recording menu 5489 desc: audio format item in recording menu
5490 user: core 5490 user: core
5491 <source> 5491 <source>
5492 *: none 5492 *: none
5493 recording: "Format" 5493 recording: "Format"
5494 </source> 5494 </source>
5495 <dest> 5495 <dest>
5496 *: none 5496 *: none
5497 recording: "FormÄts" 5497 recording: "FormÄts"
5498 </dest> 5498 </dest>
5499 <voice> 5499 <voice>
5500 *: none 5500 *: none
5501 recording: "formaats" 5501 recording: "formaats"
5502 </voice> 5502 </voice>
5503</phrase> 5503</phrase>
5504<phrase> 5504<phrase>
5505 id: LANG_AFMT_MPA_L3 5505 id: LANG_AFMT_MPA_L3
5506 desc: audio format description 5506 desc: audio format description
5507 user: core 5507 user: core
5508 <source> 5508 <source>
5509 *: none 5509 *: none
5510 recording: "MPEG Layer 3" 5510 recording: "MPEG Layer 3"
5511 </source> 5511 </source>
5512 <dest> 5512 <dest>
5513 *: none 5513 *: none
5514 recording: "MPEG Layer 3" 5514 recording: "MPEG Layer 3"
5515 </dest> 5515 </dest>
5516 <voice> 5516 <voice>
5517 *: none 5517 *: none
5518 recording: "MPEG Layer 3" 5518 recording: "MPEG Layer 3"
5519 </voice> 5519 </voice>
5520</phrase> 5520</phrase>
5521<phrase> 5521<phrase>
5522 id: LANG_AFMT_PCM_WAV 5522 id: LANG_AFMT_PCM_WAV
5523 desc: audio format description 5523 desc: audio format description
5524 user: core 5524 user: core
5525 <source> 5525 <source>
5526 *: none 5526 *: none
5527 recording: "PCM Wave" 5527 recording: "PCM Wave"
5528 </source> 5528 </source>
5529 <dest> 5529 <dest>
5530 *: none 5530 *: none
5531 recording: "PCM Wave" 5531 recording: "PCM Wave"
5532 </dest> 5532 </dest>
5533 <voice> 5533 <voice>
5534 *: none 5534 *: none
5535 recording: "PCM Wave" 5535 recording: "PCM Wave"
5536 </voice> 5536 </voice>
5537</phrase> 5537</phrase>
5538<phrase> 5538<phrase>
5539 id: LANG_AFMT_WAVPACK 5539 id: LANG_AFMT_WAVPACK
5540 desc: audio format description 5540 desc: audio format description
5541 user: core 5541 user: core
5542 <source> 5542 <source>
5543 *: none 5543 *: none
5544 recording_swcodec: "WavPack" 5544 recording_swcodec: "WavPack"
5545 </source> 5545 </source>
5546 <dest> 5546 <dest>
5547 *: none 5547 *: none
5548 recording_swcodec: "WavPack" 5548 recording_swcodec: "WavPack"
5549 </dest> 5549 </dest>
5550 <voice> 5550 <voice>
5551 *: none 5551 *: none
5552 recording_swcodec: "WavPack" 5552 recording_swcodec: "WavPack"
5553 </voice> 5553 </voice>
5554</phrase> 5554</phrase>
5555<phrase> 5555<phrase>
5556 id: LANG_AFMT_AIFF 5556 id: LANG_AFMT_AIFF
5557 desc: audio format description 5557 desc: audio format description
5558 user: core 5558 user: core
5559 <source> 5559 <source>
5560 *: none 5560 *: none
5561 recording: "AIFF" 5561 recording: "AIFF"
5562 </source> 5562 </source>
5563 <dest> 5563 <dest>
5564 *: none 5564 *: none
5565 recording: "AIFF" 5565 recording: "AIFF"
5566 </dest> 5566 </dest>
5567 <voice> 5567 <voice>
5568 *: none 5568 *: none
5569 recording: "AIFF" 5569 recording: "AIFF"
5570 </voice> 5570 </voice>
5571</phrase> 5571</phrase>
5572<phrase> 5572<phrase>
5573 id: LANG_ENCODER_SETTINGS 5573 id: LANG_ENCODER_SETTINGS
5574 desc: encoder settings 5574 desc: encoder settings
5575 user: core 5575 user: core
5576 <source> 5576 <source>
5577 *: none 5577 *: none
5578 recording: "Encoder Settings" 5578 recording: "Encoder Settings"
5579 </source> 5579 </source>
5580 <dest> 5580 <dest>
5581 *: none 5581 *: none
5582 recording: "KodÄ“juma UzstÄdÄ«jumi" 5582 recording: "KodÄ“juma UzstÄdÄ«jumi"
5583 </dest> 5583 </dest>
5584 <voice> 5584 <voice>
5585 *: none 5585 *: none
5586 recording: "kodeejuma uzstaadiijumi" 5586 recording: "kodeejuma uzstaadiijumi"
5587 </voice> 5587 </voice>
5588</phrase> 5588</phrase>
5589<phrase> 5589<phrase>
5590 id: LANG_BITRATE 5590 id: LANG_BITRATE
5591 desc: bits-kilobits per unit time 5591 desc: bits-kilobits per unit time
5592 user: core 5592 user: core
5593 <source> 5593 <source>
5594 *: none 5594 *: none
5595 recording_swcodec: "Bitrate" 5595 recording_swcodec: "Bitrate"
5596 </source> 5596 </source>
5597 <dest> 5597 <dest>
5598 *: none 5598 *: none
5599 recording_swcodec: "Bitreits" 5599 recording_swcodec: "Bitreits"
5600 </dest> 5600 </dest>
5601 <voice> 5601 <voice>
5602 *: none 5602 *: none
5603 recording_swcodec: "bitreits" 5603 recording_swcodec: "bitreits"
5604 </voice> 5604 </voice>
5605</phrase> 5605</phrase>
5606<phrase> 5606<phrase>
5607 id: LANG_NO_SETTINGS 5607 id: LANG_NO_SETTINGS
5608 desc: when something has settings in a certain context 5608 desc: when something has settings in a certain context
5609 user: core 5609 user: core
5610 <source> 5610 <source>
5611 *: none 5611 *: none
5612 recording: "(No Settings)" 5612 recording: "(No Settings)"
5613 </source> 5613 </source>
5614 <dest> 5614 <dest>
5615 *: none 5615 *: none
5616 recording: "(Nav UzstÄdÄ«jumu)" 5616 recording: "(Nav UzstÄdÄ«jumu)"
5617 </dest> 5617 </dest>
5618 <voice> 5618 <voice>
5619 *: none 5619 *: none
5620 recording: "nav ko uzstaadiit" 5620 recording: "nav ko uzstaadiit"
5621 </voice> 5621 </voice>
5622</phrase> 5622</phrase>
5623<phrase> 5623<phrase>
5624 id: LANG_RECORDING_QUALITY 5624 id: LANG_RECORDING_QUALITY
5625 desc: in the recording settings 5625 desc: in the recording settings
5626 user: core 5626 user: core
5627 <source> 5627 <source>
5628 *: none 5628 *: none
5629 recording_hwcodec: "Quality" 5629 recording_hwcodec: "Quality"
5630 </source> 5630 </source>
5631 <dest> 5631 <dest>
5632 *: none 5632 *: none
5633 recording_hwcodec: "KvalitÄte" 5633 recording_hwcodec: "KvalitÄte"
5634 </dest> 5634 </dest>
5635 <voice> 5635 <voice>
5636 *: none 5636 *: none
5637 recording_hwcodec: "kvalitaate" 5637 recording_hwcodec: "kvalitaate"
5638 </voice> 5638 </voice>
5639</phrase> 5639</phrase>
5640<phrase> 5640<phrase>
5641 id: LANG_RECORDING_FREQUENCY 5641 id: LANG_RECORDING_FREQUENCY
5642 desc: in the recording settings 5642 desc: in the recording settings
5643 user: core 5643 user: core
5644 <source> 5644 <source>
5645 *: none 5645 *: none
5646 recording: "Frequency" 5646 recording: "Frequency"
5647 </source> 5647 </source>
5648 <dest> 5648 <dest>
5649 *: none 5649 *: none
5650 recording: "Frekvence" 5650 recording: "Frekvence"
5651 </dest> 5651 </dest>
5652 <voice> 5652 <voice>
5653 *: none 5653 *: none
5654 recording: "frekvence" 5654 recording: "frekvence"
5655 </voice> 5655 </voice>
5656</phrase> 5656</phrase>
5657<phrase> 5657<phrase>
5658 id: LANG_SOURCE_FREQUENCY 5658 id: LANG_SOURCE_FREQUENCY
5659 desc: when recording source frequency setting must follow source 5659 desc: when recording source frequency setting must follow source
5660 user: core 5660 user: core
5661 <source> 5661 <source>
5662 *: none 5662 *: none
5663 recording: "(Same As Source)" 5663 recording: "(Same As Source)"
5664 </source> 5664 </source>
5665 <dest> 5665 <dest>
5666 *: none 5666 *: none
5667 recording: "(KÄ Avots)" 5667 recording: "(KÄ Avots)"
5668 </dest> 5668 </dest>
5669 <voice> 5669 <voice>
5670 *: none 5670 *: none
5671 recording: "taads pats kaa avots" 5671 recording: "taads pats kaa avots"
5672 </voice> 5672 </voice>
5673</phrase> 5673</phrase>
5674<phrase> 5674<phrase>
5675 id: LANG_RECORDING_SOURCE 5675 id: LANG_RECORDING_SOURCE
5676 desc: in the recording settings 5676 desc: in the recording settings
5677 user: core 5677 user: core
5678 <source> 5678 <source>
5679 *: none 5679 *: none
5680 recording: "Source" 5680 recording: "Source"
5681 </source> 5681 </source>
5682 <dest> 5682 <dest>
5683 *: none 5683 *: none
5684 recording: "Avots" 5684 recording: "Avots"
5685 </dest> 5685 </dest>
5686 <voice> 5686 <voice>
5687 *: none 5687 *: none
5688 recording: "avots" 5688 recording: "avots"
5689 </voice> 5689 </voice>
5690</phrase> 5690</phrase>
5691<phrase> 5691<phrase>
5692 id: LANG_RECORDING_SRC_MIC 5692 id: LANG_RECORDING_SRC_MIC
5693 desc: in the recording settings 5693 desc: in the recording settings
5694 user: core 5694 user: core
5695 <source> 5695 <source>
5696 *: none 5696 *: none
5697 recording: "Microphone" 5697 recording: "Microphone"
5698 iriverh100,iriverh120,iriverh300: "Internal Microphone" 5698 iriverh100,iriverh120,iriverh300: "Internal Microphone"
5699 </source> 5699 </source>
5700 <dest> 5700 <dest>
5701 *: none 5701 *: none
5702 recording: "Mikrofons" 5702 recording: "Mikrofons"
5703 iriverh100,iriverh120,iriverh300: "Ievūvētais Mikrofons" 5703 iriverh100,iriverh120,iriverh300: "Ievūvētais Mikrofons"
5704 </dest> 5704 </dest>
5705 <voice> 5705 <voice>
5706 *: none 5706 *: none
5707 recording: "mikrofons" 5707 recording: "mikrofons"
5708 iriverh100,iriverh120,iriverh300: "iebuuveetais mikrofons" 5708 iriverh100,iriverh120,iriverh300: "iebuuveetais mikrofons"
5709 </voice> 5709 </voice>
5710</phrase> 5710</phrase>
5711<phrase> 5711<phrase>
5712 id: LANG_RECORDING_SRC_DIGITAL 5712 id: LANG_RECORDING_SRC_DIGITAL
5713 desc: in the recording settings 5713 desc: in the recording settings
5714 user: core 5714 user: core
5715 <source> 5715 <source>
5716 *: none 5716 *: none
5717 recording: "Digital" 5717 recording: "Digital"
5718 </source> 5718 </source>
5719 <dest> 5719 <dest>
5720 *: none 5720 *: none
5721 recording: "DigitÄls" 5721 recording: "DigitÄls"
5722 </dest> 5722 </dest>
5723 <voice> 5723 <voice>
5724 *: none 5724 *: none
5725 recording: "digitaals" 5725 recording: "digitaals"
5726 </voice> 5726 </voice>
5727</phrase> 5727</phrase>
5728<phrase> 5728<phrase>
5729 id: LANG_LINE_IN 5729 id: LANG_LINE_IN
5730 desc: in the recording settings 5730 desc: in the recording settings
5731 user: core 5731 user: core
5732 <source> 5732 <source>
5733 *: none 5733 *: none
5734 recording,archosplayer: "Line In" 5734 recording,archosplayer: "Line In"
5735 </source> 5735 </source>
5736 <dest> 5736 <dest>
5737 *: none 5737 *: none
5738 recording,archosplayer: "LineÄrÄ Ieeja" 5738 recording,archosplayer: "LineÄrÄ Ieeja"
5739 </dest> 5739 </dest>
5740 <voice> 5740 <voice>
5741 *: none 5741 *: none
5742 recording,archosplayer: "lineaaraa ieeja" 5742 recording,archosplayer: "lineaaraa ieeja"
5743 </voice> 5743 </voice>
5744</phrase> 5744</phrase>
5745<phrase> 5745<phrase>
5746 id: LANG_RECORDING_EDITABLE 5746 id: LANG_RECORDING_EDITABLE
5747 desc: Editable recordings setting 5747 desc: Editable recordings setting
5748 user: core 5748 user: core
5749 <source> 5749 <source>
5750 *: none 5750 *: none
5751 recording_hwcodec: "Independent Frames" 5751 recording_hwcodec: "Independent Frames"
5752 </source> 5752 </source>
5753 <dest> 5753 <dest>
5754 *: none 5754 *: none
5755 recording_hwcodec: "Neatkarīgi Kadri" 5755 recording_hwcodec: "Neatkarīgi Kadri"
5756 </dest> 5756 </dest>
5757 <voice> 5757 <voice>
5758 *: none 5758 *: none
5759 recording_hwcodec: "neatkariigi kadri" 5759 recording_hwcodec: "neatkariigi kadri"
5760 </voice> 5760 </voice>
5761</phrase> 5761</phrase>
5762<phrase> 5762<phrase>
5763 id: LANG_RECORD_TIMESPLIT 5763 id: LANG_RECORD_TIMESPLIT
5764 desc: Record split menu 5764 desc: Record split menu
5765 user: core 5765 user: core
5766 <source> 5766 <source>
5767 *: none 5767 *: none
5768 recording: "File Split Options" 5768 recording: "File Split Options"
5769 </source> 5769 </source>
5770 <dest> 5770 <dest>
5771 *: none 5771 *: none
5772 recording: "Failu Sadalīšanas Opcijas" 5772 recording: "Failu Sadalīšanas Opcijas"
5773 </dest> 5773 </dest>
5774 <voice> 5774 <voice>
5775 *: none 5775 *: none
5776 recording: "failu sadaliishanas opcijas" 5776 recording: "failu sadaliishanas opcijas"
5777 </voice> 5777 </voice>
5778</phrase> 5778</phrase>
5779<phrase> 5779<phrase>
5780 id: LANG_SPLIT_MEASURE 5780 id: LANG_SPLIT_MEASURE
5781 desc: in record timesplit options 5781 desc: in record timesplit options
5782 user: core 5782 user: core
5783 <source> 5783 <source>
5784 *: none 5784 *: none
5785 recording: "Split Measure" 5785 recording: "Split Measure"
5786 </source> 5786 </source>
5787 <dest> 5787 <dest>
5788 *: none 5788 *: none
5789 recording: "Sadalīšanas Kritērijs" 5789 recording: "Sadalīšanas Kritērijs"
5790 </dest> 5790 </dest>
5791 <voice> 5791 <voice>
5792 *: none 5792 *: none
5793 recording: "sadaliishanas kriteerijs" 5793 recording: "sadaliishanas kriteerijs"
5794 </voice> 5794 </voice>
5795</phrase> 5795</phrase>
5796<phrase> 5796<phrase>
5797 id: LANG_SPLIT_TYPE 5797 id: LANG_SPLIT_TYPE
5798 desc: in record timesplit options 5798 desc: in record timesplit options
5799 user: core 5799 user: core
5800 <source> 5800 <source>
5801 *: none 5801 *: none
5802 recording: "What to do when Splitting" 5802 recording: "What to do when Splitting"
5803 </source> 5803 </source>
5804 <dest> 5804 <dest>
5805 *: none 5805 *: none
5806 recording: "Ko Darīt Pēc Sadalīšanas" 5806 recording: "Ko Darīt Pēc Sadalīšanas"
5807 </dest> 5807 </dest>
5808 <voice> 5808 <voice>
5809 *: none 5809 *: none
5810 recording: "ko dariit peec sadaliishanas" 5810 recording: "ko dariit peec sadaliishanas"
5811 </voice> 5811 </voice>
5812</phrase> 5812</phrase>
5813<phrase> 5813<phrase>
5814 id: LANG_START_NEW_FILE 5814 id: LANG_START_NEW_FILE
5815 desc: in record timesplit options 5815 desc: in record timesplit options
5816 user: core 5816 user: core
5817 <source> 5817 <source>
5818 *: none 5818 *: none
5819 recording: "Start new file" 5819 recording: "Start new file"
5820 </source> 5820 </source>
5821 <dest> 5821 <dest>
5822 *: none 5822 *: none
5823 recording: "SÄkt Jaunu Failu" 5823 recording: "SÄkt Jaunu Failu"
5824 </dest> 5824 </dest>
5825 <voice> 5825 <voice>
5826 *: none 5826 *: none
5827 recording: "saakt jaunu failu" 5827 recording: "saakt jaunu failu"
5828 </voice> 5828 </voice>
5829</phrase> 5829</phrase>
5830<phrase> 5830<phrase>
5831 id: LANG_STOP_RECORDING 5831 id: LANG_STOP_RECORDING
5832 desc: in record timesplit options 5832 desc: in record timesplit options
5833 user: core 5833 user: core
5834 <source> 5834 <source>
5835 *: none 5835 *: none
5836 recording: "Stop recording" 5836 recording: "Stop recording"
5837 </source> 5837 </source>
5838 <dest> 5838 <dest>
5839 *: none 5839 *: none
5840 recording: "Beigt Ierakstu" 5840 recording: "Beigt Ierakstu"
5841 </dest> 5841 </dest>
5842 <voice> 5842 <voice>
5843 *: none 5843 *: none
5844 recording: "beigt ierakstu" 5844 recording: "beigt ierakstu"
5845 </voice> 5845 </voice>
5846</phrase> 5846</phrase>
5847<phrase> 5847<phrase>
5848 id: LANG_SPLIT_TIME 5848 id: LANG_SPLIT_TIME
5849 desc: in record timesplit options 5849 desc: in record timesplit options
5850 user: core 5850 user: core
5851 <source> 5851 <source>
5852 *: none 5852 *: none
5853 recording: "Split Time" 5853 recording: "Split Time"
5854 </source> 5854 </source>
5855 <dest> 5855 <dest>
5856 *: none 5856 *: none
5857 recording: "Sadalīšanas Laiks" 5857 recording: "Sadalīšanas Laiks"
5858 </dest> 5858 </dest>
5859 <voice> 5859 <voice>
5860 *: none 5860 *: none
5861 recording: "sadaliishanas laiks" 5861 recording: "sadaliishanas laiks"
5862 </voice> 5862 </voice>
5863</phrase> 5863</phrase>
5864<phrase> 5864<phrase>
5865 id: LANG_SPLIT_SIZE 5865 id: LANG_SPLIT_SIZE
5866 desc: in record timesplit options 5866 desc: in record timesplit options
5867 user: core 5867 user: core
5868 <source> 5868 <source>
5869 *: none 5869 *: none
5870 recording: "Split Filesize" 5870 recording: "Split Filesize"
5871 </source> 5871 </source>
5872 <dest> 5872 <dest>
5873 *: none 5873 *: none
5874 recording: "Sadalīšanas Izmērs" 5874 recording: "Sadalīšanas Izmērs"
5875 </dest> 5875 </dest>
5876 <voice> 5876 <voice>
5877 *: none 5877 *: none
5878 recording: "sadaliishanas izmeers" 5878 recording: "sadaliishanas izmeers"
5879 </voice> 5879 </voice>
5880</phrase> 5880</phrase>
5881<phrase> 5881<phrase>
5882 id: LANG_RECORD_PRERECORD_TIME 5882 id: LANG_RECORD_PRERECORD_TIME
5883 desc: in recording settings_menu 5883 desc: in recording settings_menu
5884 user: core 5884 user: core
5885 <source> 5885 <source>
5886 *: none 5886 *: none
5887 recording: "Prerecord Time" 5887 recording: "Prerecord Time"
5888 </source> 5888 </source>
5889 <dest> 5889 <dest>
5890 *: none 5890 *: none
5891 recording: "Pirmsieraksta Laiks" 5891 recording: "Pirmsieraksta Laiks"
5892 </dest> 5892 </dest>
5893 <voice> 5893 <voice>
5894 *: none 5894 *: none
5895 recording: "pirmsieraksta laiks" 5895 recording: "pirmsieraksta laiks"
5896 </voice> 5896 </voice>
5897</phrase> 5897</phrase>
5898<phrase> 5898<phrase>
5899 id: LANG_RECORD_DIRECTORY 5899 id: LANG_RECORD_DIRECTORY
5900 desc: in recording settings_menu 5900 desc: in recording settings_menu
5901 user: core 5901 user: core
5902 <source> 5902 <source>
5903 *: none 5903 *: none
5904 recording: "Directory" 5904 recording: "Directory"
5905 </source> 5905 </source>
5906 <dest> 5906 <dest>
5907 *: none 5907 *: none
5908 recording: "Mape" 5908 recording: "Mape"
5909 </dest> 5909 </dest>
5910 <voice> 5910 <voice>
5911 *: none 5911 *: none
5912 recording: "mape" 5912 recording: "mape"
5913 </voice> 5913 </voice>
5914</phrase> 5914</phrase>
5915<phrase> 5915<phrase>
5916 id: LANG_SET_AS_REC_DIR 5916 id: LANG_SET_AS_REC_DIR
5917 desc: used in the onplay menu to set a recording dir 5917 desc: used in the onplay menu to set a recording dir
5918 user: core 5918 user: core
5919 <source> 5919 <source>
5920 *: none 5920 *: none
5921 recording: "Set As Recording Directory" 5921 recording: "Set As Recording Directory"
5922 </source> 5922 </source>
5923 <dest> 5923 <dest>
5924 *: none 5924 *: none
5925 recording: "Uzlikt Par Ieraksta Mapi" 5925 recording: "Uzlikt Par Ieraksta Mapi"
5926 </dest> 5926 </dest>
5927 <voice> 5927 <voice>
5928 *: none 5928 *: none
5929 recording: "uzlikt par ieraksta mapi" 5929 recording: "uzlikt par ieraksta mapi"
5930 </voice> 5930 </voice>
5931</phrase> 5931</phrase>
5932<phrase> 5932<phrase>
5933 id: LANG_CLEAR_REC_DIR 5933 id: LANG_CLEAR_REC_DIR
5934 desc: 5934 desc:
5935 user: core 5935 user: core
5936 <source> 5936 <source>
5937 *: none 5937 *: none
5938 recording: "Clear Recording Directory" 5938 recording: "Clear Recording Directory"
5939 </source> 5939 </source>
5940 <dest> 5940 <dest>
5941 *: none 5941 *: none
5942 recording: "PÄrstatÄ«t Ieraksta Mapi" 5942 recording: "PÄrstatÄ«t Ieraksta Mapi"
5943 </dest> 5943 </dest>
5944 <voice> 5944 <voice>
5945 *: none 5945 *: none
5946 recording: "paarstatiit ieraksta mapi" 5946 recording: "paarstatiit ieraksta mapi"
5947 </voice> 5947 </voice>
5948</phrase> 5948</phrase>
5949<phrase> 5949<phrase>
5950 id: LANG_REC_DIR_NOT_WRITABLE 5950 id: LANG_REC_DIR_NOT_WRITABLE
5951 desc: 5951 desc:
5952 user: core 5952 user: core
5953 <source> 5953 <source>
5954 *: none 5954 *: none
5955 recording: "Can't write to recording directory" 5955 recording: "Can't write to recording directory"
5956 </source> 5956 </source>
5957 <dest> 5957 <dest>
5958 *: none 5958 *: none
5959 recording: "Nevar saglabÄt ieraksta mapÄ“" 5959 recording: "Nevar saglabÄt ieraksta mapÄ“"
5960 </dest> 5960 </dest>
5961 <voice> 5961 <voice>
5962 *: none 5962 *: none
5963 recording: "nevar saglabaat ieraksta mapee" 5963 recording: "nevar saglabaat ieraksta mapee"
5964 </voice> 5964 </voice>
5965</phrase> 5965</phrase>
5966<phrase> 5966<phrase>
5967 id: LANG_CLIP_LIGHT 5967 id: LANG_CLIP_LIGHT
5968 desc: in record settings menu. 5968 desc: in record settings menu.
5969 user: core 5969 user: core
5970 <source> 5970 <source>
5971 *: none 5971 *: none
5972 recording: "Clipping Light" 5972 recording: "Clipping Light"
5973 </source> 5973 </source>
5974 <dest> 5974 <dest>
5975 *: none 5975 *: none
5976 recording: "PÄrlÄ«meņa Gaisma" 5976 recording: "PÄrlÄ«meņa Gaisma"
5977 </dest> 5977 </dest>
5978 <voice> 5978 <voice>
5979 *: none 5979 *: none
5980 recording: "paarliimenja gaisma" 5980 recording: "paarliimenja gaisma"
5981 </voice> 5981 </voice>
5982</phrase> 5982</phrase>
5983<phrase> 5983<phrase>
5984 id: LANG_MAIN_UNIT 5984 id: LANG_MAIN_UNIT
5985 desc: in record settings menu. 5985 desc: in record settings menu.
5986 user: core 5986 user: core
5987 <source> 5987 <source>
5988 *: none 5988 *: none
5989 remote: "Main Unit Only" 5989 remote: "Main Unit Only"
5990 </source> 5990 </source>
5991 <dest> 5991 <dest>
5992 *: none 5992 *: none
5993 remote: "Tikai Uz EkrÄna" 5993 remote: "Tikai Uz EkrÄna"
5994 </dest> 5994 </dest>
5995 <voice> 5995 <voice>
5996 *: none 5996 *: none
5997 remote: "tikai uz ekraana" 5997 remote: "tikai uz ekraana"
5998 </voice> 5998 </voice>
5999</phrase> 5999</phrase>
6000<phrase> 6000<phrase>
6001 id: LANG_REMOTE_UNIT 6001 id: LANG_REMOTE_UNIT
6002 desc: in record settings menu. 6002 desc: in record settings menu.
6003 user: core 6003 user: core
6004 <source> 6004 <source>
6005 *: none 6005 *: none
6006 remote: "Remote Unit Only" 6006 remote: "Remote Unit Only"
6007 </source> 6007 </source>
6008 <dest> 6008 <dest>
6009 *: none 6009 *: none
6010 remote: "Tikai Uz Pults" 6010 remote: "Tikai Uz Pults"
6011 </dest> 6011 </dest>
6012 <voice> 6012 <voice>
6013 *: none 6013 *: none
6014 remote: "tikai uz pults" 6014 remote: "tikai uz pults"
6015 </voice> 6015 </voice>
6016</phrase> 6016</phrase>
6017<phrase> 6017<phrase>
6018 id: LANG_REMOTE_MAIN 6018 id: LANG_REMOTE_MAIN
6019 desc: in record settings menu. 6019 desc: in record settings menu.
6020 user: core 6020 user: core
6021 <source> 6021 <source>
6022 *: none 6022 *: none
6023 remote: "Main and Remote Unit" 6023 remote: "Main and Remote Unit"
6024 </source> 6024 </source>
6025 <dest> 6025 <dest>
6026 *: none 6026 *: none
6027 remote: "Uz EkrÄna Un Pults" 6027 remote: "Uz EkrÄna Un Pults"
6028 </dest> 6028 </dest>
6029 <voice> 6029 <voice>
6030 *: none 6030 *: none
6031 remote: "uz ekraana un pults" 6031 remote: "uz ekraana un pults"
6032 </voice> 6032 </voice>
6033</phrase> 6033</phrase>
6034<phrase> 6034<phrase>
6035 id: LANG_RECORD_TRIGGER 6035 id: LANG_RECORD_TRIGGER
6036 desc: in recording settings_menu 6036 desc: in recording settings_menu
6037 user: core 6037 user: core
6038 <source> 6038 <source>
6039 *: none 6039 *: none
6040 recording: "Trigger" 6040 recording: "Trigger"
6041 </source> 6041 </source>
6042 <dest> 6042 <dest>
6043 *: none 6043 *: none
6044 recording: "Palaidējs" 6044 recording: "Palaidējs"
6045 </dest> 6045 </dest>
6046 <voice> 6046 <voice>
6047 *: none 6047 *: none
6048 recording: "ieraksta palaideejs" 6048 recording: "ieraksta palaideejs"
6049 </voice> 6049 </voice>
6050</phrase> 6050</phrase>
6051<phrase> 6051<phrase>
6052 id: LANG_RECORD_TRIG_NOREARM 6052 id: LANG_RECORD_TRIG_NOREARM
6053 desc: in recording settings_menu 6053 desc: in recording settings_menu
6054 user: core 6054 user: core
6055 <source> 6055 <source>
6056 *: none 6056 *: none
6057 recording: "Once" 6057 recording: "Once"
6058 </source> 6058 </source>
6059 <dest> 6059 <dest>
6060 *: none 6060 *: none
6061 recording: "Vienreiz" 6061 recording: "Vienreiz"
6062 </dest> 6062 </dest>
6063 <voice> 6063 <voice>
6064 *: none 6064 *: none
6065 recording: "vienreiz" 6065 recording: "vienreiz"
6066 </voice> 6066 </voice>
6067</phrase> 6067</phrase>
6068<phrase> 6068<phrase>
6069 id: LANG_RECORD_TRIGGER_TYPE 6069 id: LANG_RECORD_TRIGGER_TYPE
6070 desc: in recording trigger menu 6070 desc: in recording trigger menu
6071 user: core 6071 user: core
6072 <source> 6072 <source>
6073 *: none 6073 *: none
6074 recording: "Trigtype" 6074 recording: "Trigtype"
6075 </source> 6075 </source>
6076 <dest> 6076 <dest>
6077 *: none 6077 *: none
6078 recording: "Veids" 6078 recording: "Veids"
6079 </dest> 6079 </dest>
6080 <voice> 6080 <voice>
6081 *: none 6081 *: none
6082 recording: "veids" 6082 recording: "veids"
6083 </voice> 6083 </voice>
6084</phrase> 6084</phrase>
6085<phrase> 6085<phrase>
6086 id: LANG_RECORD_TRIGGER_NEWFILESTP 6086 id: LANG_RECORD_TRIGGER_NEWFILESTP
6087 desc: trigger types 6087 desc: trigger types
6088 user: core 6088 user: core
6089 <source> 6089 <source>
6090 *: none 6090 *: none
6091 recording: "New file" 6091 recording: "New file"
6092 </source> 6092 </source>
6093 <dest> 6093 <dest>
6094 *: none 6094 *: none
6095 recording: "Jauns Fails" 6095 recording: "Jauns Fails"
6096 </dest> 6096 </dest>
6097 <voice> 6097 <voice>
6098 *: none 6098 *: none
6099 recording: "jauns fails" 6099 recording: "jauns fails"
6100 </voice> 6100 </voice>
6101</phrase> 6101</phrase>
6102<phrase> 6102<phrase>
6103 id: LANG_RECORD_TRIGGER_STOP 6103 id: LANG_RECORD_TRIGGER_STOP
6104 desc: trigger types 6104 desc: trigger types
6105 user: core 6105 user: core
6106 <source> 6106 <source>
6107 *: none 6107 *: none
6108 recording: "Stop" 6108 recording: "Stop"
6109 </source> 6109 </source>
6110 <dest> 6110 <dest>
6111 *: none 6111 *: none
6112 recording: "ApstÄties" 6112 recording: "ApstÄties"
6113 </dest> 6113 </dest>
6114 <voice> 6114 <voice>
6115 *: none 6115 *: none
6116 recording: "apstaaties" 6116 recording: "apstaaties"
6117 </voice> 6117 </voice>
6118</phrase> 6118</phrase>
6119<phrase> 6119<phrase>
6120 id: LANG_RECORD_START_THRESHOLD 6120 id: LANG_RECORD_START_THRESHOLD
6121 desc: in recording settings_menu 6121 desc: in recording settings_menu
6122 user: core 6122 user: core
6123 <source> 6123 <source>
6124 *: none 6124 *: none
6125 recording: "Start Above" 6125 recording: "Start Above"
6126 </source> 6126 </source>
6127 <dest> 6127 <dest>
6128 *: none 6128 *: none
6129 recording: "SÄkt Virs" 6129 recording: "SÄkt Virs"
6130 </dest> 6130 </dest>
6131 <voice> 6131 <voice>
6132 *: none 6132 *: none
6133 recording: "saakt virs" 6133 recording: "saakt virs"
6134 </voice> 6134 </voice>
6135</phrase> 6135</phrase>
6136<phrase> 6136<phrase>
6137 id: LANG_MIN_DURATION 6137 id: LANG_MIN_DURATION
6138 desc: in recording settings_menu 6138 desc: in recording settings_menu
6139 user: core 6139 user: core
6140 <source> 6140 <source>
6141 *: none 6141 *: none
6142 recording: "for at least" 6142 recording: "for at least"
6143 </source> 6143 </source>
6144 <dest> 6144 <dest>
6145 *: none 6145 *: none
6146 recording: "PÄ“c Vismaz" 6146 recording: "PÄ“c Vismaz"
6147 </dest> 6147 </dest>
6148 <voice> 6148 <voice>
6149 *: none 6149 *: none
6150 recording: "peec vismaz" 6150 recording: "peec vismaz"
6151 </voice> 6151 </voice>
6152</phrase> 6152</phrase>
6153<phrase> 6153<phrase>
6154 id: LANG_RECORD_STOP_THRESHOLD 6154 id: LANG_RECORD_STOP_THRESHOLD
6155 desc: in recording settings_menu 6155 desc: in recording settings_menu
6156 user: core 6156 user: core
6157 <source> 6157 <source>
6158 *: none 6158 *: none
6159 recording: "Stop Below" 6159 recording: "Stop Below"
6160 </source> 6160 </source>
6161 <dest> 6161 <dest>
6162 *: none 6162 *: none
6163 recording: "ApstÄties Zem" 6163 recording: "ApstÄties Zem"
6164 </dest> 6164 </dest>
6165 <voice> 6165 <voice>
6166 *: none 6166 *: none
6167 recording: "apstaaties zem" 6167 recording: "apstaaties zem"
6168 </voice> 6168 </voice>
6169</phrase> 6169</phrase>
6170<phrase> 6170<phrase>
6171 id: LANG_RECORD_STOP_GAP 6171 id: LANG_RECORD_STOP_GAP
6172 desc: in recording settings_menu 6172 desc: in recording settings_menu
6173 user: core 6173 user: core
6174 <source> 6174 <source>
6175 *: none 6175 *: none
6176 recording: "Presplit Gap" 6176 recording: "Presplit Gap"
6177 </source> 6177 </source>
6178 <dest> 6178 <dest>
6179 *: none 6179 *: none
6180 recording: "Pirmssadales Sprauga" 6180 recording: "Pirmssadales Sprauga"
6181 </dest> 6181 </dest>
6182 <voice> 6182 <voice>
6183 *: none 6183 *: none
6184 recording: "pirmssadales sprauga" 6184 recording: "pirmssadales sprauga"
6185 </voice> 6185 </voice>
6186</phrase> 6186</phrase>
6187<phrase> 6187<phrase>
6188 id: LANG_RECORD_PRERECORD 6188 id: LANG_RECORD_PRERECORD
6189 desc: in recording and radio screen 6189 desc: in recording and radio screen
6190 user: core 6190 user: core
6191 <source> 6191 <source>
6192 *: none 6192 *: none
6193 recording: "Pre-Recording" 6193 recording: "Pre-Recording"
6194 </source> 6194 </source>
6195 <dest> 6195 <dest>
6196 *: none 6196 *: none
6197 recording: "Pirmsieraksts" 6197 recording: "Pirmsieraksts"
6198 </dest> 6198 </dest>
6199 <voice> 6199 <voice>
6200 *: none 6200 *: none
6201 recording: "" 6201 recording: ""
6202 </voice> 6202 </voice>
6203</phrase> 6203</phrase>
6204<phrase> 6204<phrase>
6205 id: LANG_AGC_SAFETY 6205 id: LANG_AGC_SAFETY
6206 desc: AGC preset 6206 desc: AGC preset
6207 user: core 6207 user: core
6208 <source> 6208 <source>
6209 *: none 6209 *: none
6210 agc: "Safety (clip)" 6210 agc: "Safety (clip)"
6211 </source> 6211 </source>
6212 <dest> 6212 <dest>
6213 *: none 6213 *: none
6214 agc: "Drošība (Skaļums)" 6214 agc: "Drošība (Skaļums)"
6215 </dest> 6215 </dest>
6216 <voice> 6216 <voice>
6217 *: none 6217 *: none
6218 agc: "Droshiiba (skaljums)" 6218 agc: "Droshiiba (skaljums)"
6219 </voice> 6219 </voice>
6220</phrase> 6220</phrase>
6221<phrase> 6221<phrase>
6222 id: LANG_AGC_LIVE 6222 id: LANG_AGC_LIVE
6223 desc: AGC preset 6223 desc: AGC preset
6224 user: core 6224 user: core
6225 <source> 6225 <source>
6226 *: none 6226 *: none
6227 agc: "Live (slow)" 6227 agc: "Live (slow)"
6228 </source> 6228 </source>
6229 <dest> 6229 <dest>
6230 *: none 6230 *: none
6231 agc: "Koncerts (lēni)" 6231 agc: "Koncerts (lēni)"
6232 </dest> 6232 </dest>
6233 <voice> 6233 <voice>
6234 *: none 6234 *: none
6235 agc: "koncerts (leeni)" 6235 agc: "koncerts (leeni)"
6236 </voice> 6236 </voice>
6237</phrase> 6237</phrase>
6238<phrase> 6238<phrase>
6239 id: LANG_AGC_DJSET 6239 id: LANG_AGC_DJSET
6240 desc: AGC preset 6240 desc: AGC preset
6241 user: core 6241 user: core
6242 <source> 6242 <source>
6243 *: none 6243 *: none
6244 agc: "DJ-Set (slow)" 6244 agc: "DJ-Set (slow)"
6245 </source> 6245 </source>
6246 <dest> 6246 <dest>
6247 *: none 6247 *: none
6248 agc: "Reps (lēni)" 6248 agc: "Reps (lēni)"
6249 </dest> 6249 </dest>
6250 <voice> 6250 <voice>
6251 *: none 6251 *: none
6252 agc: "reps (leeni)" 6252 agc: "reps (leeni)"
6253 </voice> 6253 </voice>
6254</phrase> 6254</phrase>
6255<phrase> 6255<phrase>
6256 id: LANG_AGC_MEDIUM 6256 id: LANG_AGC_MEDIUM
6257 desc: AGC preset 6257 desc: AGC preset
6258 user: core 6258 user: core
6259 <source> 6259 <source>
6260 *: none 6260 *: none
6261 agc: "Medium" 6261 agc: "Medium"
6262 </source> 6262 </source>
6263 <dest> 6263 <dest>
6264 *: none 6264 *: none
6265 agc: "Vidēji" 6265 agc: "Vidēji"
6266 </dest> 6266 </dest>
6267 <voice> 6267 <voice>
6268 *: none 6268 *: none
6269 agc: "videeji" 6269 agc: "videeji"
6270 </voice> 6270 </voice>
6271</phrase> 6271</phrase>
6272<phrase> 6272<phrase>
6273 id: LANG_AGC_VOICE 6273 id: LANG_AGC_VOICE
6274 desc: AGC preset 6274 desc: AGC preset
6275 user: core 6275 user: core
6276 <source> 6276 <source>
6277 *: none 6277 *: none
6278 agc: "Voice (fast)" 6278 agc: "Voice (fast)"
6279 </source> 6279 </source>
6280 <dest> 6280 <dest>
6281 *: none 6281 *: none
6282 agc: "Balss (Ätri)" 6282 agc: "Balss (Ätri)"
6283 </dest> 6283 </dest>
6284 <voice> 6284 <voice>
6285 *: none 6285 *: none
6286 agc: "balss (aatri)" 6286 agc: "balss (aatri)"
6287 </voice> 6287 </voice>
6288</phrase> 6288</phrase>
6289<phrase> 6289<phrase>
6290 id: LANG_REMOTE_LCD_OFF 6290 id: LANG_REMOTE_LCD_OFF
6291 desc: Remote lcd off splash in recording screen 6291 desc: Remote lcd off splash in recording screen
6292 user: core 6292 user: core
6293 <source> 6293 <source>
6294 *: none 6294 *: none
6295 remote: "Remote Display OFF" 6295 remote: "Remote Display OFF"
6296 </source> 6296 </source>
6297 <dest> 6297 <dest>
6298 *: none 6298 *: none
6299 remote: "Pults EkrÄns IzslÄ“gts" 6299 remote: "Pults EkrÄns IzslÄ“gts"
6300 </dest> 6300 </dest>
6301 <voice> 6301 <voice>
6302 *: none 6302 *: none
6303 remote: "pults ekraans izsleegts" 6303 remote: "pults ekraans izsleegts"
6304 </voice> 6304 </voice>
6305</phrase> 6305</phrase>
6306<phrase> 6306<phrase>
6307 id: LANG_REMOTE_LCD_ON 6307 id: LANG_REMOTE_LCD_ON
6308 desc: Remote lcd off splash in recording screen 6308 desc: Remote lcd off splash in recording screen
6309 user: core 6309 user: core
6310 <source> 6310 <source>
6311 *: none 6311 *: none
6312 remote: "(Vol- : Re-enable)" 6312 remote: "(Vol- : Re-enable)"
6313 </source> 6313 </source>
6314 <dest> 6314 <dest>
6315 *: none 6315 *: none
6316 remote: "(Skaļums- : Ieslēgt)" 6316 remote: "(Skaļums- : Ieslēgt)"
6317 </dest> 6317 </dest>
6318 <voice> 6318 <voice>
6319 *: none 6319 *: none
6320 remote: "spiest skaljumu lai iesleegtu" 6320 remote: "spiest skaljumu lai iesleegtu"
6321 </voice> 6321 </voice>
6322</phrase> 6322</phrase>
6323<phrase> 6323<phrase>
6324 id: LANG_CREATE_PLAYLIST 6324 id: LANG_CREATE_PLAYLIST
6325 desc: Menu option for creating a playlist 6325 desc: Menu option for creating a playlist
6326 user: core 6326 user: core
6327 <source> 6327 <source>
6328 *: "Create Playlist" 6328 *: "Create Playlist"
6329 </source> 6329 </source>
6330 <dest> 6330 <dest>
6331 *: "Izveidot Sarakstu" 6331 *: "Izveidot Sarakstu"
6332 </dest> 6332 </dest>
6333 <voice> 6333 <voice>
6334 *: "izveidot sarakstu" 6334 *: "izveidot sarakstu"
6335 </voice> 6335 </voice>
6336</phrase> 6336</phrase>
6337<phrase> 6337<phrase>
6338 id: LANG_PLAYLISTVIEWER_SETTINGS 6338 id: LANG_PLAYLISTVIEWER_SETTINGS
6339 desc: title for the playlist viewer settings menus 6339 desc: title for the playlist viewer settings menus
6340 user: core 6340 user: core
6341 <source> 6341 <source>
6342 *: "Playlist Viewer Settings" 6342 *: "Playlist Viewer Settings"
6343 </source> 6343 </source>
6344 <dest> 6344 <dest>
6345 *: "Sarakstu SkatÄ«tÄja UzstÄdÄ«jumi" 6345 *: "Sarakstu SkatÄ«tÄja UzstÄdÄ«jumi"
6346 </dest> 6346 </dest>
6347 <voice> 6347 <voice>
6348 *: "sarakstu skatiitaaja uzstaadiijumi" 6348 *: "sarakstu skatiitaaja uzstaadiijumi"
6349 </voice> 6349 </voice>
6350</phrase> 6350</phrase>
6351<phrase> 6351<phrase>
6352 id: LANG_VIEW_DYNAMIC_PLAYLIST 6352 id: LANG_VIEW_DYNAMIC_PLAYLIST
6353 desc: in playlist menu. 6353 desc: in playlist menu.
6354 user: core 6354 user: core
6355 <source> 6355 <source>
6356 *: "View Current Playlist" 6356 *: "View Current Playlist"
6357 </source> 6357 </source>
6358 <dest> 6358 <dest>
6359 *: "Aplūkot Patreizējo Sarakstu" 6359 *: "Aplūkot Patreizējo Sarakstu"
6360 </dest> 6360 </dest>
6361 <voice> 6361 <voice>
6362 *: "apluukot patreizeejo sarakstu" 6362 *: "apluukot patreizeejo sarakstu"
6363 </voice> 6363 </voice>
6364</phrase> 6364</phrase>
6365<phrase> 6365<phrase>
6366 id: LANG_MOVE 6366 id: LANG_MOVE
6367 desc: The verb/action Move 6367 desc: The verb/action Move
6368 user: core 6368 user: core
6369 <source> 6369 <source>
6370 *: "Move" 6370 *: "Move"
6371 </source> 6371 </source>
6372 <dest> 6372 <dest>
6373 *: "PÄrvietot" 6373 *: "PÄrvietot"
6374 </dest> 6374 </dest>
6375 <voice> 6375 <voice>
6376 *: "paarvietot" 6376 *: "paarvietot"
6377 </voice> 6377 </voice>
6378</phrase> 6378</phrase>
6379<phrase> 6379<phrase>
6380 id: LANG_SHOW_INDICES 6380 id: LANG_SHOW_INDICES
6381 desc: in playlist viewer menu 6381 desc: in playlist viewer menu
6382 user: core 6382 user: core
6383 <source> 6383 <source>
6384 *: "Show Indices" 6384 *: "Show Indices"
6385 </source> 6385 </source>
6386 <dest> 6386 <dest>
6387 *: "RÄdÄ«t Indeksus" 6387 *: "RÄdÄ«t Indeksus"
6388 </dest> 6388 </dest>
6389 <voice> 6389 <voice>
6390 *: "raadiit indeksus" 6390 *: "raadiit indeksus"
6391 </voice> 6391 </voice>
6392</phrase> 6392</phrase>
6393<phrase> 6393<phrase>
6394 id: LANG_TRACK_DISPLAY 6394 id: LANG_TRACK_DISPLAY
6395 desc: in playlist viewer on+play menu 6395 desc: in playlist viewer on+play menu
6396 user: core 6396 user: core
6397 <source> 6397 <source>
6398 *: "Track Display" 6398 *: "Track Display"
6399 </source> 6399 </source>
6400 <dest> 6400 <dest>
6401 *: "ParÄdÄ«t Dziesmu" 6401 *: "ParÄdÄ«t Dziesmu"
6402 </dest> 6402 </dest>
6403 <voice> 6403 <voice>
6404 *: "paraadiit dziesmu" 6404 *: "paraadiit dziesmu"
6405 </voice> 6405 </voice>
6406</phrase> 6406</phrase>
6407<phrase> 6407<phrase>
6408 id: LANG_DISPLAY_TRACK_NAME_ONLY 6408 id: LANG_DISPLAY_TRACK_NAME_ONLY
6409 desc: track display options 6409 desc: track display options
6410 user: core 6410 user: core
6411 <source> 6411 <source>
6412 *: "Track Name Only" 6412 *: "Track Name Only"
6413 </source> 6413 </source>
6414 <dest> 6414 <dest>
6415 *: "Tikai Nosaukumu" 6415 *: "Tikai Nosaukumu"
6416 </dest> 6416 </dest>
6417 <voice> 6417 <voice>
6418 *: "tikai nosaukumu" 6418 *: "tikai nosaukumu"
6419 </voice> 6419 </voice>
6420</phrase> 6420</phrase>
6421<phrase> 6421<phrase>
6422 id: LANG_REMOVE 6422 id: LANG_REMOVE
6423 desc: in playlist viewer on+play menu 6423 desc: in playlist viewer on+play menu
6424 user: core 6424 user: core
6425 <source> 6425 <source>
6426 *: "Remove" 6426 *: "Remove"
6427 </source> 6427 </source>
6428 <dest> 6428 <dest>
6429 *: "AizvÄkt" 6429 *: "AizvÄkt"
6430 </dest> 6430 </dest>
6431 <voice> 6431 <voice>
6432 *: "aizvaakt" 6432 *: "aizvaakt"
6433 </voice> 6433 </voice>
6434</phrase> 6434</phrase>
6435<phrase> 6435<phrase>
6436 id: LANG_SAVE_DYNAMIC_PLAYLIST 6436 id: LANG_SAVE_DYNAMIC_PLAYLIST
6437 desc: in playlist menu. 6437 desc: in playlist menu.
6438 user: core 6438 user: core
6439 <source> 6439 <source>
6440 *: "Save Current Playlist" 6440 *: "Save Current Playlist"
6441 </source> 6441 </source>
6442 <dest> 6442 <dest>
6443 *: "SaglabÄt PatreizÄ“jo Sarakstu" 6443 *: "SaglabÄt PatreizÄ“jo Sarakstu"
6444 </dest> 6444 </dest>
6445 <voice> 6445 <voice>
6446 *: "saglabaat patreizeejo sarakstu" 6446 *: "saglabaat patreizeejo sarakstu"
6447 </voice> 6447 </voice>
6448</phrase> 6448</phrase>
6449<phrase> 6449<phrase>
6450 id: LANG_PLAYLIST_SAVE_COUNT 6450 id: LANG_PLAYLIST_SAVE_COUNT
6451 desc: splash number of tracks saved 6451 desc: splash number of tracks saved
6452 user: core 6452 user: core
6453 <source> 6453 <source>
6454 *: "Saved %d tracks (%s)" 6454 *: "Saved %d tracks (%s)"
6455 </source> 6455 </source>
6456 <dest> 6456 <dest>
6457 *: "SaglabÄtas %d dziesmas (%s)" 6457 *: "SaglabÄtas %d dziesmas (%s)"
6458 </dest> 6458 </dest>
6459 <voice> 6459 <voice>
6460 *: "saglabaatas dziesmas" 6460 *: "saglabaatas dziesmas"
6461 </voice> 6461 </voice>
6462</phrase> 6462</phrase>
6463<phrase> 6463<phrase>
6464 id: LANG_CATALOG 6464 id: LANG_CATALOG
6465 desc: in main menu and onplay menu 6465 desc: in main menu and onplay menu
6466 user: core 6466 user: core
6467 <source> 6467 <source>
6468 *: "Playlist Catalogue" 6468 *: "Playlist Catalogue"
6469 </source> 6469 </source>
6470 <dest> 6470 <dest>
6471 *: "Sarakstu Katalogs" 6471 *: "Sarakstu Katalogs"
6472 </dest> 6472 </dest>
6473 <voice> 6473 <voice>
6474 *: "sarakstu katalogs" 6474 *: "sarakstu katalogs"
6475 </voice> 6475 </voice>
6476</phrase> 6476</phrase>
6477<phrase> 6477<phrase>
6478 id: LANG_RECURSE_DIRECTORY 6478 id: LANG_RECURSE_DIRECTORY
6479 desc: In playlist menu 6479 desc: In playlist menu
6480 user: core 6480 user: core
6481 <source> 6481 <source>
6482 *: "Recursively Insert Directories" 6482 *: "Recursively Insert Directories"
6483 </source> 6483 </source>
6484 <dest> 6484 <dest>
6485 *: "Ievietot Mapes Ar Apakšmapēm" 6485 *: "Ievietot Mapes Ar Apakšmapēm"
6486 </dest> 6486 </dest>
6487 <voice> 6487 <voice>
6488 *: "ievietot mapes ar apakshmapeem" 6488 *: "ievietot mapes ar apakshmapeem"
6489 </voice> 6489 </voice>
6490</phrase> 6490</phrase>
6491<phrase> 6491<phrase>
6492 id: LANG_RECURSE_DIRECTORY_QUESTION 6492 id: LANG_RECURSE_DIRECTORY_QUESTION
6493 desc: Asked from onplay screen 6493 desc: Asked from onplay screen
6494 user: core 6494 user: core
6495 <source> 6495 <source>
6496 *: "Recursively?" 6496 *: "Recursively?"
6497 </source> 6497 </source>
6498 <dest> 6498 <dest>
6499 *: "Ar Apakšmapēm?" 6499 *: "Ar Apakšmapēm?"
6500 </dest> 6500 </dest>
6501 <voice> 6501 <voice>
6502 *: "vai ar apakshmapeem" 6502 *: "vai ar apakshmapeem"
6503 </voice> 6503 </voice>
6504</phrase> 6504</phrase>
6505<phrase> 6505<phrase>
6506 id: LANG_WARN_ERASEDYNPLAYLIST_MENU 6506 id: LANG_WARN_ERASEDYNPLAYLIST_MENU
6507 desc: in playlist options menu, option to warn when erasing dynamic playlist 6507 desc: in playlist options menu, option to warn when erasing dynamic playlist
6508 user: core 6508 user: core
6509 <source> 6509 <source>
6510 *: "Warn When Erasing Dynamic Playlist" 6510 *: "Warn When Erasing Dynamic Playlist"
6511 </source> 6511 </source>
6512 <dest> 6512 <dest>
6513 *: "BrÄ«dinÄt DzÄ“Å¡ot Dinamisku sarakstu" 6513 *: "BrÄ«dinÄt DzÄ“Å¡ot Dinamisku sarakstu"
6514 </dest> 6514 </dest>
6515 <voice> 6515 <voice>
6516 *: "briidinaat dzeeshot dinamisku sarakstu" 6516 *: "briidinaat dzeeshot dinamisku sarakstu"
6517 </voice> 6517 </voice>
6518</phrase> 6518</phrase>
6519<phrase> 6519<phrase>
6520 id: LANG_WARN_ERASEDYNPLAYLIST_PROMPT 6520 id: LANG_WARN_ERASEDYNPLAYLIST_PROMPT
6521 desc: prompt shown when about to erase a modified dynamic playlist 6521 desc: prompt shown when about to erase a modified dynamic playlist
6522 user: core 6522 user: core
6523 <source> 6523 <source>
6524 *: "Erase dynamic playlist?" 6524 *: "Erase dynamic playlist?"
6525 </source> 6525 </source>
6526 <dest> 6526 <dest>
6527 *: "Izdzēst Dinamisku Sarakstu?" 6527 *: "Izdzēst Dinamisku Sarakstu?"
6528 </dest> 6528 </dest>
6529 <voice> 6529 <voice>
6530 *: "vai izdzeest dinamisku sarakstu" 6530 *: "vai izdzeest dinamisku sarakstu"
6531 </voice> 6531 </voice>
6532</phrase> 6532</phrase>
6533<phrase> 6533<phrase>
6534 id: LANG_SHUTDOWN 6534 id: LANG_SHUTDOWN
6535 desc: in main menu 6535 desc: in main menu
6536 user: core 6536 user: core
6537 <source> 6537 <source>
6538 *: none 6538 *: none
6539 soft_shutdown: "Shut down" 6539 soft_shutdown: "Shut down"
6540 </source> 6540 </source>
6541 <dest> 6541 <dest>
6542 *: none 6542 *: none
6543 soft_shutdown: "Izslēgt" 6543 soft_shutdown: "Izslēgt"
6544 </dest> 6544 </dest>
6545 <voice> 6545 <voice>
6546 *: none 6546 *: none
6547 soft_shutdown: "izsleegt" 6547 soft_shutdown: "izsleegt"
6548 </voice> 6548 </voice>
6549</phrase> 6549</phrase>
6550<phrase> 6550<phrase>
6551 id: LANG_ROCKBOX_INFO 6551 id: LANG_ROCKBOX_INFO
6552 desc: displayed topmost on the info screen and in the info menu 6552 desc: displayed topmost on the info screen and in the info menu
6553 user: core 6553 user: core
6554 <source> 6554 <source>
6555 *: "Rockbox Info" 6555 *: "Rockbox Info"
6556 </source> 6556 </source>
6557 <dest> 6557 <dest>
6558 *: "Par Rockbox" 6558 *: "Par Rockbox"
6559 </dest> 6559 </dest>
6560 <voice> 6560 <voice>
6561 *: "par rockbox" 6561 *: "par rockbox"
6562 </voice> 6562 </voice>
6563</phrase> 6563</phrase>
6564<phrase> 6564<phrase>
6565 id: LANG_BUFFER_STAT 6565 id: LANG_BUFFER_STAT
6566 desc: the buffer size, %d MB %d fraction of MB 6566 desc: the buffer size, %d MB %d fraction of MB
6567 user: core 6567 user: core
6568 <source> 6568 <source>
6569 *: "Buffer:" 6569 *: "Buffer:"
6570 archosplayer: "Buf:" 6570 archosplayer: "Buf:"
6571 </source> 6571 </source>
6572 <dest> 6572 <dest>
6573 *: "Buferis:" 6573 *: "Buferis:"
6574 archosplayer: "Buf:" 6574 archosplayer: "Buf:"
6575 </dest> 6575 </dest>
6576 <voice> 6576 <voice>
6577 *: "bufera izmeers" 6577 *: "bufera izmeers"
6578 </voice> 6578 </voice>
6579</phrase> 6579</phrase>
6580<phrase> 6580<phrase>
6581 id: LANG_BATTERY_TIME 6581 id: LANG_BATTERY_TIME
6582 desc: battery level in % and estimated time remaining 6582 desc: battery level in % and estimated time remaining
6583 user: core 6583 user: core
6584 <source> 6584 <source>
6585 *: "Battery: %d%% %dh %dm" 6585 *: "Battery: %d%% %dh %dm"
6586 archosplayer,archosrecorder,archosfmrecorder,archosrecorderv2,archosondio*,iriverifp7xx: "%d%% %dh %dm" 6586 archosplayer,archosrecorder,archosfmrecorder,archosrecorderv2,archosondio*,iriverifp7xx: "%d%% %dh %dm"
6587 iriverh10,ipodmini1g,ipodmini2g: "Batt: %d%% %dh %dm" 6587 iriverh10,ipodmini1g,ipodmini2g: "Batt: %d%% %dh %dm"
6588 </source> 6588 </source>
6589 <dest> 6589 <dest>
6590 *: "Baterija: %d%% %ds %dm" 6590 *: "Baterija: %d%% %ds %dm"
6591 archosplayer,archosrecorder,archosfmrecorder,archosrecorderv2,archosondio*,iriverifp7xx: "%d%% %ds %dm" 6591 archosplayer,archosrecorder,archosfmrecorder,archosrecorderv2,archosondio*,iriverifp7xx: "%d%% %ds %dm"
6592 iriverh10,ipodmini1g,ipodmini2g: "Bat: %d%% %ds %dm" 6592 iriverh10,ipodmini1g,ipodmini2g: "Bat: %d%% %ds %dm"
6593 </dest> 6593 </dest>
6594 <voice> 6594 <voice>
6595 *: "baterijas liimenis" 6595 *: "baterijas liimenis"
6596 </voice> 6596 </voice>
6597</phrase> 6597</phrase>
6598<phrase> 6598<phrase>
6599 id: LANG_DISK_SIZE_INFO 6599 id: LANG_DISK_SIZE_INFO
6600 desc: disk size info 6600 desc: disk size info
6601 user: core 6601 user: core
6602 <source> 6602 <source>
6603 *: "Disk:" 6603 *: "Disk:"
6604 </source> 6604 </source>
6605 <dest> 6605 <dest>
6606 *: "Atmiņa:" 6606 *: "Atmiņa:"
6607 </dest> 6607 </dest>
6608 <voice> 6608 <voice>
6609 *: "atminjas izmeers" 6609 *: "atminjas izmeers"
6610 </voice> 6610 </voice>
6611</phrase> 6611</phrase>
6612<phrase> 6612<phrase>
6613 id: LANG_DISK_FREE_INFO 6613 id: LANG_DISK_FREE_INFO
6614 desc: disk size info 6614 desc: disk size info
6615 user: core 6615 user: core
6616 <source> 6616 <source>
6617 *: "Free:" 6617 *: "Free:"
6618 </source> 6618 </source>
6619 <dest> 6619 <dest>
6620 *: "Brīvs:" 6620 *: "Brīvs:"
6621 </dest> 6621 </dest>
6622 <voice> 6622 <voice>
6623 *: "briivaa vieta:" 6623 *: "briivaa vieta:"
6624 </voice> 6624 </voice>
6625</phrase> 6625</phrase>
6626<phrase> 6626<phrase>
6627 id: LANG_DISK_NAME_INTERNAL 6627 id: LANG_DISK_NAME_INTERNAL
6628 desc: in info menu; name for internal disk with multivolume (keep short!) 6628 desc: in info menu; name for internal disk with multivolume (keep short!)
6629 user: core 6629 user: core
6630 <source> 6630 <source>
6631 *: none 6631 *: none
6632 multivolume: "Int:" 6632 multivolume: "Int:"
6633 </source> 6633 </source>
6634 <dest> 6634 <dest>
6635 *: none 6635 *: none
6636 multivolume: "IeÄ·Å¡:" 6636 multivolume: "IeÄ·Å¡:"
6637 </dest> 6637 </dest>
6638 <voice> 6638 <voice>
6639 *: none 6639 *: none
6640 multivolume: "ieksheejais" 6640 multivolume: "ieksheejais"
6641 </voice> 6641 </voice>
6642</phrase> 6642</phrase>
6643<phrase> 6643<phrase>
6644 id: LANG_DISK_NAME_MMC 6644 id: LANG_DISK_NAME_MMC
6645 desc: in info menu; name for external disk with multivolume (Ondio; keep short!) 6645 desc: in info menu; name for external disk with multivolume (Ondio; keep short!)
6646 user: core 6646 user: core
6647 <source> 6647 <source>
6648 *: none 6648 *: none
6649 multivolume: "HD1" 6649 multivolume: "HD1"
6650 sansae200*,sansac200*,sansafuze*,sansaclipplus: "mSD:" 6650 sansae200*,sansac200*,sansafuze*,sansaclipplus: "mSD:"
6651 archosondio*: "MMC:" 6651 archosondio*: "MMC:"
6652 </source> 6652 </source>
6653 <dest> 6653 <dest>
6654 *: none 6654 *: none
6655 multivolume: "HD1" 6655 multivolume: "HD1"
6656 sansae200*,sansac200*,sansafuze*,sansaclipplus: "MSD:" 6656 sansae200*,sansac200*,sansafuze*,sansaclipplus: "MSD:"
6657 archosondio*: "MMC:" 6657 archosondio*: "MMC:"
6658 </dest> 6658 </dest>
6659 <voice> 6659 <voice>
6660 *: none 6660 *: none
6661 multivolume: "haa dee viens" 6661 multivolume: "haa dee viens"
6662 sansae200*,sansac200*,sansafuze*: "mikro es dee" 6662 sansae200*,sansac200*,sansafuze*: "mikro es dee"
6663 archosondio*: "em em cee" 6663 archosondio*: "em em cee"
6664 </voice> 6664 </voice>
6665</phrase> 6665</phrase>
6666<phrase> 6666<phrase>
6667 id: LANG_VERSION 6667 id: LANG_VERSION
6668 desc: in the Rockbox Info screen 6668 desc: in the Rockbox Info screen
6669 user: core 6669 user: core
6670 <source> 6670 <source>
6671 *: "Version" 6671 *: "Version"
6672 </source> 6672 </source>
6673 <dest> 6673 <dest>
6674 *: "Versija" 6674 *: "Versija"
6675 </dest> 6675 </dest>
6676 <voice> 6676 <voice>
6677 *: "versija" 6677 *: "versija"
6678 </voice> 6678 </voice>
6679</phrase> 6679</phrase>
6680<phrase> 6680<phrase>
6681 id: LANG_RUNNING_TIME 6681 id: LANG_RUNNING_TIME
6682 desc: in run time screen 6682 desc: in run time screen
6683 user: core 6683 user: core
6684 <source> 6684 <source>
6685 *: "Running Time" 6685 *: "Running Time"
6686 </source> 6686 </source>
6687 <dest> 6687 <dest>
6688 *: "Ieslēgts" 6688 *: "Ieslēgts"
6689 </dest> 6689 </dest>
6690 <voice> 6690 <voice>
6691 *: "iesleegts" 6691 *: "iesleegts"
6692 </voice> 6692 </voice>
6693</phrase> 6693</phrase>
6694<phrase> 6694<phrase>
6695 id: LANG_TOP_TIME 6695 id: LANG_TOP_TIME
6696 desc: in run time screen 6696 desc: in run time screen
6697 user: core 6697 user: core
6698 <source> 6698 <source>
6699 *: "Top Time" 6699 *: "Top Time"
6700 </source> 6700 </source>
6701 <dest> 6701 <dest>
6702 *: "IlgÄkais" 6702 *: "IlgÄkais"
6703 </dest> 6703 </dest>
6704 <voice> 6704 <voice>
6705 *: "ilgaakais" 6705 *: "ilgaakais"
6706 </voice> 6706 </voice>
6707</phrase> 6707</phrase>
6708<phrase> 6708<phrase>
6709 id: LANG_CLEAR_TIME 6709 id: LANG_CLEAR_TIME
6710 desc: in run time screen 6710 desc: in run time screen
6711 user: core 6711 user: core
6712 <source> 6712 <source>
6713 *: "Clear Time?" 6713 *: "Clear Time?"
6714 </source> 6714 </source>
6715 <dest> 6715 <dest>
6716 *: "Izdzēst Laiku?" 6716 *: "Izdzēst Laiku?"
6717 </dest> 6717 </dest>
6718 <voice> 6718 <voice>
6719 *: "vai izdzeest laiku" 6719 *: "vai izdzeest laiku"
6720 </voice> 6720 </voice>
6721</phrase> 6721</phrase>
6722<phrase> 6722<phrase>
6723 id: LANG_DEBUG 6723 id: LANG_DEBUG
6724 desc: in the info menu 6724 desc: in the info menu
6725 user: core 6725 user: core
6726 <source> 6726 <source>
6727 *: "Debug (Keep Out!)" 6727 *: "Debug (Keep Out!)"
6728 </source> 6728 </source>
6729 <dest> 6729 <dest>
6730 *: "Kļūdas (Neaiztiec!)" 6730 *: "Kļūdas (Neaiztiec!)"
6731 </dest> 6731 </dest>
6732 <voice> 6732 <voice>
6733 *: "kljuudas neaiztiec" 6733 *: "kljuudas neaiztiec"
6734 </voice> 6734 </voice>
6735</phrase> 6735</phrase>
6736<phrase> 6736<phrase>
6737 id: LANG_PLAYLIST 6737 id: LANG_PLAYLIST
6738 desc: Used when you need to say playlist, also voiced 6738 desc: Used when you need to say playlist, also voiced
6739 user: core 6739 user: core
6740 <source> 6740 <source>
6741 *: "Playlist" 6741 *: "Playlist"
6742 </source> 6742 </source>
6743 <dest> 6743 <dest>
6744 *: "Saraksts" 6744 *: "Saraksts"
6745 </dest> 6745 </dest>
6746 <voice> 6746 <voice>
6747 *: "saraksts" 6747 *: "saraksts"
6748 </voice> 6748 </voice>
6749</phrase> 6749</phrase>
6750<phrase> 6750<phrase>
6751 id: LANG_INSERT 6751 id: LANG_INSERT
6752 desc: in onplay menu. insert a track/playlist into dynamic playlist. 6752 desc: in onplay menu. insert a track/playlist into dynamic playlist.
6753 user: core 6753 user: core
6754 <source> 6754 <source>
6755 *: "Insert" 6755 *: "Insert"
6756 </source> 6756 </source>
6757 <dest> 6757 <dest>
6758 *: "Ievietot" 6758 *: "Ievietot"
6759 </dest> 6759 </dest>
6760 <voice> 6760 <voice>
6761 *: "ievietot" 6761 *: "ievietot"
6762 </voice> 6762 </voice>
6763</phrase> 6763</phrase>
6764<phrase> 6764<phrase>
6765 id: LANG_INSERT_FIRST 6765 id: LANG_INSERT_FIRST
6766 desc: in onplay menu. insert a track/playlist into dynamic playlist. 6766 desc: in onplay menu. insert a track/playlist into dynamic playlist.
6767 user: core 6767 user: core
6768 <source> 6768 <source>
6769 *: "Insert Next" 6769 *: "Insert Next"
6770 </source> 6770 </source>
6771 <dest> 6771 <dest>
6772 *: "Ievietot NÄkamo" 6772 *: "Ievietot NÄkamo"
6773 </dest> 6773 </dest>
6774 <voice> 6774 <voice>
6775 *: "ievietot Naakamo" 6775 *: "ievietot Naakamo"
6776 </voice> 6776 </voice>
6777</phrase> 6777</phrase>
6778<phrase> 6778<phrase>
6779 id: LANG_INSERT_LAST 6779 id: LANG_INSERT_LAST
6780 desc: in onplay menu. append a track/playlist into dynamic playlist. 6780 desc: in onplay menu. append a track/playlist into dynamic playlist.
6781 user: core 6781 user: core
6782 <source> 6782 <source>
6783 *: "Insert Last" 6783 *: "Insert Last"
6784 </source> 6784 </source>
6785 <dest> 6785 <dest>
6786 *: "Ievietot Pēdējo" 6786 *: "Ievietot Pēdējo"
6787 </dest> 6787 </dest>
6788 <voice> 6788 <voice>
6789 *: "ievietot peedeejo" 6789 *: "ievietot peedeejo"
6790 </voice> 6790 </voice>
6791</phrase> 6791</phrase>
6792<phrase> 6792<phrase>
6793 id: LANG_INSERT_SHUFFLED 6793 id: LANG_INSERT_SHUFFLED
6794 desc: in onplay menu. insert a track/playlist randomly into dynamic playlist 6794 desc: in onplay menu. insert a track/playlist randomly into dynamic playlist
6795 user: core 6795 user: core
6796 <source> 6796 <source>
6797 *: "Insert Shuffled" 6797 *: "Insert Shuffled"
6798 </source> 6798 </source>
6799 <dest> 6799 <dest>
6800 *: "Ievietot Sajaukti" 6800 *: "Ievietot Sajaukti"
6801 </dest> 6801 </dest>
6802 <voice> 6802 <voice>
6803 *: "ievietot sajaukti" 6803 *: "ievietot sajaukti"
6804 </voice> 6804 </voice>
6805</phrase> 6805</phrase>
6806<phrase> 6806<phrase>
6807 id: LANG_QUEUE 6807 id: LANG_QUEUE
6808 desc: The verb/action Queue 6808 desc: The verb/action Queue
6809 user: core 6809 user: core
6810 <source> 6810 <source>
6811 *: "Queue" 6811 *: "Queue"
6812 </source> 6812 </source>
6813 <dest> 6813 <dest>
6814 *: "Rinda" 6814 *: "Rinda"
6815 </dest> 6815 </dest>
6816 <voice> 6816 <voice>
6817 *: "rinda" 6817 *: "rinda"
6818 </voice> 6818 </voice>
6819</phrase> 6819</phrase>
6820<phrase> 6820<phrase>
6821 id: LANG_QUEUE_FIRST 6821 id: LANG_QUEUE_FIRST
6822 desc: in onplay menu. queue a track/playlist into dynamic playlist. 6822 desc: in onplay menu. queue a track/playlist into dynamic playlist.
6823 user: core 6823 user: core
6824 <source> 6824 <source>
6825 *: "Queue Next" 6825 *: "Queue Next"
6826 </source> 6826 </source>
6827 <dest> 6827 <dest>
6828 *: "RindÄ NÄkamo" 6828 *: "RindÄ NÄkamo"
6829 </dest> 6829 </dest>
6830 <voice> 6830 <voice>
6831 *: "rindaa naakamo" 6831 *: "rindaa naakamo"
6832 </voice> 6832 </voice>
6833</phrase> 6833</phrase>
6834<phrase> 6834<phrase>
6835 id: LANG_QUEUE_LAST 6835 id: LANG_QUEUE_LAST
6836 desc: in onplay menu. queue a track/playlist at end of playlist. 6836 desc: in onplay menu. queue a track/playlist at end of playlist.
6837 user: core 6837 user: core
6838 <source> 6838 <source>
6839 *: "Queue Last" 6839 *: "Queue Last"
6840 </source> 6840 </source>
6841 <dest> 6841 <dest>
6842 *: "RindÄ PÄ“dÄ“jo" 6842 *: "RindÄ PÄ“dÄ“jo"
6843 </dest> 6843 </dest>
6844 <voice> 6844 <voice>
6845 *: "rindÄ peedeejo" 6845 *: "rindÄ peedeejo"
6846 </voice> 6846 </voice>
6847</phrase> 6847</phrase>
6848<phrase> 6848<phrase>
6849 id: LANG_QUEUE_SHUFFLED 6849 id: LANG_QUEUE_SHUFFLED
6850 desc: in onplay menu. queue a track/playlist randomly into dynamic playlist 6850 desc: in onplay menu. queue a track/playlist randomly into dynamic playlist
6851 user: core 6851 user: core
6852 <source> 6852 <source>
6853 *: "Queue Shuffled" 6853 *: "Queue Shuffled"
6854 </source> 6854 </source>
6855 <dest> 6855 <dest>
6856 *: "RindÄ Sajaukti" 6856 *: "RindÄ Sajaukti"
6857 </dest> 6857 </dest>
6858 <voice> 6858 <voice>
6859 *: "rindaa sajaukti" 6859 *: "rindaa sajaukti"
6860 </voice> 6860 </voice>
6861</phrase> 6861</phrase>
6862<phrase> 6862<phrase>
6863 id: LANG_REPLACE 6863 id: LANG_REPLACE
6864 desc: in onplay menu. Replace the current playlist with a new one. 6864 desc: in onplay menu. Replace the current playlist with a new one.
6865 user: core 6865 user: core
6866 <source> 6866 <source>
6867 *: "Play Next" 6867 *: "Play Next"
6868 </source> 6868 </source>
6869 <dest> 6869 <dest>
6870 *: "Atskaņot NÄkamo" 6870 *: "Atskaņot NÄkamo"
6871 </dest> 6871 </dest>
6872 <voice> 6872 <voice>
6873 *: "atskanjot naakamo" 6873 *: "atskanjot naakamo"
6874 </voice> 6874 </voice>
6875</phrase> 6875</phrase>
6876<phrase> 6876<phrase>
6877 id: LANG_PLAYLIST_INSERT_COUNT 6877 id: LANG_PLAYLIST_INSERT_COUNT
6878 desc: splash number of tracks inserted 6878 desc: splash number of tracks inserted
6879 user: core 6879 user: core
6880 <source> 6880 <source>
6881 *: "Inserted %d tracks (%s)" 6881 *: "Inserted %d tracks (%s)"
6882 </source> 6882 </source>
6883 <dest> 6883 <dest>
6884 *: "Ievietotas %d dziesmas (%s)" 6884 *: "Ievietotas %d dziesmas (%s)"
6885 </dest> 6885 </dest>
6886 <voice> 6886 <voice>
6887 *: "ievietotas dziesmas" 6887 *: "ievietotas dziesmas"
6888 </voice> 6888 </voice>
6889</phrase> 6889</phrase>
6890<phrase> 6890<phrase>
6891 id: LANG_PLAYLIST_QUEUE_COUNT 6891 id: LANG_PLAYLIST_QUEUE_COUNT
6892 desc: splash number of tracks queued 6892 desc: splash number of tracks queued
6893 user: core 6893 user: core
6894 <source> 6894 <source>
6895 *: "Queued %d tracks (%s)" 6895 *: "Queued %d tracks (%s)"
6896 </source> 6896 </source>
6897 <dest> 6897 <dest>
6898 *: "RindÄ %d dziesmas (%s)" 6898 *: "RindÄ %d dziesmas (%s)"
6899 </dest> 6899 </dest>
6900 <voice> 6900 <voice>
6901 *: "ievietotas rindaa dziesmas" 6901 *: "ievietotas rindaa dziesmas"
6902 </voice> 6902 </voice>
6903</phrase> 6903</phrase>
6904<phrase> 6904<phrase>
6905 id: LANG_VIEW 6905 id: LANG_VIEW
6906 desc: in on+play menu 6906 desc: in on+play menu
6907 user: core 6907 user: core
6908 <source> 6908 <source>
6909 *: "View" 6909 *: "View"
6910 </source> 6910 </source>
6911 <dest> 6911 <dest>
6912 *: "Aplūkot" 6912 *: "Aplūkot"
6913 </dest> 6913 </dest>
6914 <voice> 6914 <voice>
6915 *: "apluukot" 6915 *: "apluukot"
6916 </voice> 6916 </voice>
6917</phrase> 6917</phrase>
6918<phrase> 6918<phrase>
6919 id: LANG_SEARCH_IN_PLAYLIST 6919 id: LANG_SEARCH_IN_PLAYLIST
6920 desc: in playlist menu. 6920 desc: in playlist menu.
6921 user: core 6921 user: core
6922 <source> 6922 <source>
6923 *: "Search In Playlist" 6923 *: "Search In Playlist"
6924 </source> 6924 </source>
6925 <dest> 6925 <dest>
6926 *: "MeklÄ“t SarakstÄ" 6926 *: "MeklÄ“t SarakstÄ"
6927 </dest> 6927 </dest>
6928 <voice> 6928 <voice>
6929 *: "mekleet sarakstaa" 6929 *: "mekleet sarakstaa"
6930 </voice> 6930 </voice>
6931</phrase> 6931</phrase>
6932<phrase> 6932<phrase>
6933 id: LANG_PLAYLIST_SEARCH_MSG 6933 id: LANG_PLAYLIST_SEARCH_MSG
6934 desc: splash number of tracks inserted 6934 desc: splash number of tracks inserted
6935 user: core 6935 user: core
6936 <source> 6936 <source>
6937 *: "Searching... %d found (%s)" 6937 *: "Searching... %d found (%s)"
6938 </source> 6938 </source>
6939 <dest> 6939 <dest>
6940 *: "Meklē... %d atrastas (%s)" 6940 *: "Meklē... %d atrastas (%s)"
6941 </dest> 6941 </dest>
6942 <voice> 6942 <voice>
6943 *: "" 6943 *: ""
6944 </voice> 6944 </voice>
6945</phrase> 6945</phrase>
6946<phrase> 6946<phrase>
6947 id: LANG_SHUFFLE_PLAYLIST 6947 id: LANG_SHUFFLE_PLAYLIST
6948 desc: in playlist menu, reshuffles the order in which songs are played 6948 desc: in playlist menu, reshuffles the order in which songs are played
6949 user: core 6949 user: core
6950 <source> 6950 <source>
6951 *: "Reshuffle" 6951 *: "Reshuffle"
6952 </source> 6952 </source>
6953 <dest> 6953 <dest>
6954 *: "PÄrkÄrtot" 6954 *: "PÄrkÄrtot"
6955 </dest> 6955 </dest>
6956 <voice> 6956 <voice>
6957 *: "paarkaartot" 6957 *: "paarkaartot"
6958 </voice> 6958 </voice>
6959</phrase> 6959</phrase>
6960<phrase> 6960<phrase>
6961 id: LANG_CATALOG_VIEW 6961 id: LANG_CATALOG_VIEW
6962 desc: in onplay playlist catalogue submenu 6962 desc: in onplay playlist catalogue submenu
6963 user: core 6963 user: core
6964 <source> 6964 <source>
6965 *: "View Catalogue" 6965 *: "View Catalogue"
6966 </source> 6966 </source>
6967 <dest> 6967 <dest>
6968 *: "Aplūkot Katalogu" 6968 *: "Aplūkot Katalogu"
6969 </dest> 6969 </dest>
6970 <voice> 6970 <voice>
6971 *: "apluukot katalogu" 6971 *: "apluukot katalogu"
6972 </voice> 6972 </voice>
6973</phrase> 6973</phrase>
6974<phrase> 6974<phrase>
6975 id: LANG_CATALOG_ADD_TO 6975 id: LANG_CATALOG_ADD_TO
6976 desc: in onplay playlist catalogue submenu 6976 desc: in onplay playlist catalogue submenu
6977 user: core 6977 user: core
6978 <source> 6978 <source>
6979 *: "Add to Playlist" 6979 *: "Add to Playlist"
6980 </source> 6980 </source>
6981 <dest> 6981 <dest>
6982 *: "Pievienot Sarakstam" 6982 *: "Pievienot Sarakstam"
6983 </dest> 6983 </dest>
6984 <voice> 6984 <voice>
6985 *: "pievienot sarakstam" 6985 *: "pievienot sarakstam"
6986 </voice> 6986 </voice>
6987</phrase> 6987</phrase>
6988<phrase> 6988<phrase>
6989 id: LANG_CATALOG_ADD_TO_NEW 6989 id: LANG_CATALOG_ADD_TO_NEW
6990 desc: in onplay playlist catalogue submenu 6990 desc: in onplay playlist catalogue submenu
6991 user: core 6991 user: core
6992 <source> 6992 <source>
6993 *: "Add to New Playlist" 6993 *: "Add to New Playlist"
6994 </source> 6994 </source>
6995 <dest> 6995 <dest>
6996 *: "Pievienot Jaunam Sarakstam" 6996 *: "Pievienot Jaunam Sarakstam"
6997 </dest> 6997 </dest>
6998 <voice> 6998 <voice>
6999 *: "pievienot jaunam sarakstam" 6999 *: "pievienot jaunam sarakstam"
7000 </voice> 7000 </voice>
7001</phrase> 7001</phrase>
7002<phrase> 7002<phrase>
7003 id: LANG_CATALOG_NO_DIRECTORY 7003 id: LANG_CATALOG_NO_DIRECTORY
7004 desc: error message when playlist catalogue directory doesn't exist 7004 desc: error message when playlist catalogue directory doesn't exist
7005 user: core 7005 user: core
7006 <source> 7006 <source>
7007 *: "%s doesn't exist" 7007 *: "%s doesn't exist"
7008 </source> 7008 </source>
7009 <dest> 7009 <dest>
7010 *: "%s nepastÄv" 7010 *: "%s nepastÄv"
7011 </dest> 7011 </dest>
7012 <voice> 7012 <voice>
7013 *: "saraksta mape nepastaav" 7013 *: "saraksta mape nepastaav"
7014 </voice> 7014 </voice>
7015</phrase> 7015</phrase>
7016<phrase> 7016<phrase>
7017 id: LANG_CATALOG_NO_PLAYLISTS 7017 id: LANG_CATALOG_NO_PLAYLISTS
7018 desc: error message when no playlists for playlist catalogue 7018 desc: error message when no playlists for playlist catalogue
7019 user: core 7019 user: core
7020 <source> 7020 <source>
7021 *: "No Playlists" 7021 *: "No Playlists"
7022 </source> 7022 </source>
7023 <dest> 7023 <dest>
7024 *: "Nav Sarakstu" 7024 *: "Nav Sarakstu"
7025 </dest> 7025 </dest>
7026 <voice> 7026 <voice>
7027 *: "nav sarakstu" 7027 *: "nav sarakstu"
7028 </voice> 7028 </voice>
7029</phrase> 7029</phrase>
7030<phrase> 7030<phrase>
7031 id: LANG_BOOKMARK_MENU 7031 id: LANG_BOOKMARK_MENU
7032 desc: Text on main menu to get to bookmark commands 7032 desc: Text on main menu to get to bookmark commands
7033 user: core 7033 user: core
7034 <source> 7034 <source>
7035 *: "Bookmarks" 7035 *: "Bookmarks"
7036 </source> 7036 </source>
7037 <dest> 7037 <dest>
7038 *: "GrÄmatzÄ«mes" 7038 *: "GrÄmatzÄ«mes"
7039 </dest> 7039 </dest>
7040 <voice> 7040 <voice>
7041 *: "graamatziimes" 7041 *: "graamatziimes"
7042 </voice> 7042 </voice>
7043</phrase> 7043</phrase>
7044<phrase> 7044<phrase>
7045 id: LANG_BOOKMARK_MENU_CREATE 7045 id: LANG_BOOKMARK_MENU_CREATE
7046 desc: Used off of the bookmark menu to create a bookmark 7046 desc: Used off of the bookmark menu to create a bookmark
7047 user: core 7047 user: core
7048 <source> 7048 <source>
7049 *: "Create Bookmark" 7049 *: "Create Bookmark"
7050 </source> 7050 </source>
7051 <dest> 7051 <dest>
7052 *: "Izveidot GrÄmatzÄ«mi" 7052 *: "Izveidot GrÄmatzÄ«mi"
7053 </dest> 7053 </dest>
7054 <voice> 7054 <voice>
7055 *: "izveidot graamatziimi" 7055 *: "izveidot graamatziimi"
7056 </voice> 7056 </voice>
7057</phrase> 7057</phrase>
7058<phrase> 7058<phrase>
7059 id: LANG_BOOKMARK_MENU_LIST 7059 id: LANG_BOOKMARK_MENU_LIST
7060 desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U 7060 desc: Used off of the bookmark menu to list available bookmarks for the currently playing directory or M3U
7061 user: core 7061 user: core
7062 <source> 7062 <source>
7063 *: "List Bookmarks" 7063 *: "List Bookmarks"
7064 </source> 7064 </source>
7065 <dest> 7065 <dest>
7066 *: "SakÄrtot GrÄmatzÄ«mes" 7066 *: "SakÄrtot GrÄmatzÄ«mes"
7067 </dest> 7067 </dest>
7068 <voice> 7068 <voice>
7069 *: "sakaartot graamatziimes" 7069 *: "sakaartot graamatziimes"
7070 </voice> 7070 </voice>
7071</phrase> 7071</phrase>
7072<phrase> 7072<phrase>
7073 id: LANG_ONPLAY_MENU_TITLE 7073 id: LANG_ONPLAY_MENU_TITLE
7074 desc: title for the onplay menus 7074 desc: title for the onplay menus
7075 user: core 7075 user: core
7076 <source> 7076 <source>
7077 *: "Context Menu" 7077 *: "Context Menu"
7078 </source> 7078 </source>
7079 <dest> 7079 <dest>
7080 *: "Izvēlne" 7080 *: "Izvēlne"
7081 </dest> 7081 </dest>
7082 <voice> 7082 <voice>
7083 *: "izveelne" 7083 *: "izveelne"
7084 </voice> 7084 </voice>
7085</phrase> 7085</phrase>
7086<phrase> 7086<phrase>
7087 id: LANG_MENU_SET_RATING 7087 id: LANG_MENU_SET_RATING
7088 desc: Set the rating of a file in the wps context menu 7088 desc: Set the rating of a file in the wps context menu
7089 user: core 7089 user: core
7090 <source> 7090 <source>
7091 *: "Set Song Rating" 7091 *: "Set Song Rating"
7092 </source> 7092 </source>
7093 <dest> 7093 <dest>
7094 *: "Uzlikt Vērtējumu" 7094 *: "Uzlikt Vērtējumu"
7095 </dest> 7095 </dest>
7096 <voice> 7096 <voice>
7097 *: "uzlikt veerteejumu" 7097 *: "uzlikt veerteejumu"
7098 </voice> 7098 </voice>
7099</phrase> 7099</phrase>
7100<phrase> 7100<phrase>
7101 id: LANG_BROWSE_CUESHEET 7101 id: LANG_BROWSE_CUESHEET
7102 desc: 7102 desc:
7103 user: core 7103 user: core
7104 <source> 7104 <source>
7105 *: "Browse Cuesheet" 7105 *: "Browse Cuesheet"
7106 </source> 7106 </source>
7107 <dest> 7107 <dest>
7108 *: "Aplūkot cue" 7108 *: "Aplūkot cue"
7109 </dest> 7109 </dest>
7110 <voice> 7110 <voice>
7111 *: "apluukot cue" 7111 *: "apluukot cue"
7112 </voice> 7112 </voice>
7113</phrase> 7113</phrase>
7114<phrase> 7114<phrase>
7115 id: LANG_MENU_SHOW_ID3_INFO 7115 id: LANG_MENU_SHOW_ID3_INFO
7116 desc: Menu option to start tag viewer 7116 desc: Menu option to start tag viewer
7117 user: core 7117 user: core
7118 <source> 7118 <source>
7119 *: "Show Track Info" 7119 *: "Show Track Info"
7120 </source> 7120 </source>
7121 <dest> 7121 <dest>
7122 *: "Dziesmas Info" 7122 *: "Dziesmas Info"
7123 </dest> 7123 </dest>
7124 <voice> 7124 <voice>
7125 *: "paraadiit dziesmas info" 7125 *: "paraadiit dziesmas info"
7126 </voice> 7126 </voice>
7127</phrase> 7127</phrase>
7128<phrase> 7128<phrase>
7129 id: LANG_ID3_TITLE 7129 id: LANG_ID3_TITLE
7130 desc: in tag viewer 7130 desc: in tag viewer
7131 user: core 7131 user: core
7132 <source> 7132 <source>
7133 *: "Title" 7133 *: "Title"
7134 </source> 7134 </source>
7135 <dest> 7135 <dest>
7136 *: "Nosaukums" 7136 *: "Nosaukums"
7137 </dest> 7137 </dest>
7138 <voice> 7138 <voice>
7139 *: "" 7139 *: ""
7140 </voice> 7140 </voice>
7141</phrase> 7141</phrase>
7142<phrase> 7142<phrase>
7143 id: LANG_ID3_ARTIST 7143 id: LANG_ID3_ARTIST
7144 desc: in tag viewer 7144 desc: in tag viewer
7145 user: core 7145 user: core
7146 <source> 7146 <source>
7147 *: "Artist" 7147 *: "Artist"
7148 </source> 7148 </source>
7149 <dest> 7149 <dest>
7150 *: "IzpildÄ«tÄjs" 7150 *: "IzpildÄ«tÄjs"
7151 </dest> 7151 </dest>
7152 <voice> 7152 <voice>
7153 *: "" 7153 *: ""
7154 </voice> 7154 </voice>
7155</phrase> 7155</phrase>
7156<phrase> 7156<phrase>
7157 id: LANG_ID3_ALBUM 7157 id: LANG_ID3_ALBUM
7158 desc: in tag viewer 7158 desc: in tag viewer
7159 user: core 7159 user: core
7160 <source> 7160 <source>
7161 *: "Album" 7161 *: "Album"
7162 </source> 7162 </source>
7163 <dest> 7163 <dest>
7164 *: "Albūms" 7164 *: "Albūms"
7165 </dest> 7165 </dest>
7166 <voice> 7166 <voice>
7167 *: "" 7167 *: ""
7168 </voice> 7168 </voice>
7169</phrase> 7169</phrase>
7170<phrase> 7170<phrase>
7171 id: LANG_ID3_TRACKNUM 7171 id: LANG_ID3_TRACKNUM
7172 desc: in tag viewer 7172 desc: in tag viewer
7173 user: core 7173 user: core
7174 <source> 7174 <source>
7175 *: "Tracknum" 7175 *: "Tracknum"
7176 </source> 7176 </source>
7177 <dest> 7177 <dest>
7178 *: "Numurs" 7178 *: "Numurs"
7179 </dest> 7179 </dest>
7180 <voice> 7180 <voice>
7181 *: "" 7181 *: ""
7182 </voice> 7182 </voice>
7183</phrase> 7183</phrase>
7184<phrase> 7184<phrase>
7185 id: LANG_ID3_GENRE 7185 id: LANG_ID3_GENRE
7186 desc: in tag viewer 7186 desc: in tag viewer
7187 user: core 7187 user: core
7188 <source> 7188 <source>
7189 *: "Genre" 7189 *: "Genre"
7190 </source> 7190 </source>
7191 <dest> 7191 <dest>
7192 *: "Žanrs" 7192 *: "Žanrs"
7193 </dest> 7193 </dest>
7194 <voice> 7194 <voice>
7195 *: "" 7195 *: ""
7196 </voice> 7196 </voice>
7197</phrase> 7197</phrase>
7198<phrase> 7198<phrase>
7199 id: LANG_ID3_YEAR 7199 id: LANG_ID3_YEAR
7200 desc: in tag viewer 7200 desc: in tag viewer
7201 user: core 7201 user: core
7202 <source> 7202 <source>
7203 *: "Year" 7203 *: "Year"
7204 </source> 7204 </source>
7205 <dest> 7205 <dest>
7206 *: "Gads" 7206 *: "Gads"
7207 </dest> 7207 </dest>
7208 <voice> 7208 <voice>
7209 *: "" 7209 *: ""
7210 </voice> 7210 </voice>
7211</phrase> 7211</phrase>
7212<phrase> 7212<phrase>
7213 id: LANG_ID3_LENGTH 7213 id: LANG_ID3_LENGTH
7214 desc: in tag viewer 7214 desc: in tag viewer
7215 user: core 7215 user: core
7216 <source> 7216 <source>
7217 *: "Length" 7217 *: "Length"
7218 </source> 7218 </source>
7219 <dest> 7219 <dest>
7220 *: "Garums" 7220 *: "Garums"
7221 </dest> 7221 </dest>
7222 <voice> 7222 <voice>
7223 *: "" 7223 *: ""
7224 </voice> 7224 </voice>
7225</phrase> 7225</phrase>
7226<phrase> 7226<phrase>
7227 id: LANG_ID3_PLAYLIST 7227 id: LANG_ID3_PLAYLIST
7228 desc: in tag viewer 7228 desc: in tag viewer
7229 user: core 7229 user: core
7230 <source> 7230 <source>
7231 *: "Playlist" 7231 *: "Playlist"
7232 </source> 7232 </source>
7233 <dest> 7233 <dest>
7234 *: "Saraksts" 7234 *: "Saraksts"
7235 </dest> 7235 </dest>
7236 <voice> 7236 <voice>
7237 *: "" 7237 *: ""
7238 </voice> 7238 </voice>
7239</phrase> 7239</phrase>
7240<phrase> 7240<phrase>
7241 id: LANG_ID3_BITRATE 7241 id: LANG_ID3_BITRATE
7242 desc: in tag viewer 7242 desc: in tag viewer
7243 user: core 7243 user: core
7244 <source> 7244 <source>
7245 *: "Bitrate" 7245 *: "Bitrate"
7246 </source> 7246 </source>
7247 <dest> 7247 <dest>
7248 *: "Bitreits" 7248 *: "Bitreits"
7249 </dest> 7249 </dest>
7250 <voice> 7250 <voice>
7251 *: "" 7251 *: ""
7252 </voice> 7252 </voice>
7253</phrase> 7253</phrase>
7254<phrase> 7254<phrase>
7255 id: LANG_ID3_ALBUMARTIST 7255 id: LANG_ID3_ALBUMARTIST
7256 desc: in tag viewer 7256 desc: in tag viewer
7257 user: core 7257 user: core
7258 <source> 7258 <source>
7259 *: "Album Artist" 7259 *: "Album Artist"
7260 </source> 7260 </source>
7261 <dest> 7261 <dest>
7262 *: "AlbÅ«ma IzpildÄ«tÄjs" 7262 *: "AlbÅ«ma IzpildÄ«tÄjs"
7263 </dest> 7263 </dest>
7264 <voice> 7264 <voice>
7265 *: "" 7265 *: ""
7266 </voice> 7266 </voice>
7267</phrase> 7267</phrase>
7268<phrase> 7268<phrase>
7269 id: LANG_ID3_DISCNUM 7269 id: LANG_ID3_DISCNUM
7270 desc: in tag viewer 7270 desc: in tag viewer
7271 user: core 7271 user: core
7272 <source> 7272 <source>
7273 *: "Discnum" 7273 *: "Discnum"
7274 </source> 7274 </source>
7275 <dest> 7275 <dest>
7276 *: "Diska Numurs" 7276 *: "Diska Numurs"
7277 </dest> 7277 </dest>
7278 <voice> 7278 <voice>
7279 *: "" 7279 *: ""
7280 </voice> 7280 </voice>
7281</phrase> 7281</phrase>
7282<phrase> 7282<phrase>
7283 id: LANG_ID3_COMMENT 7283 id: LANG_ID3_COMMENT
7284 desc: in tag viewer 7284 desc: in tag viewer
7285 user: core 7285 user: core
7286 <source> 7286 <source>
7287 *: "Comment" 7287 *: "Comment"
7288 </source> 7288 </source>
7289 <dest> 7289 <dest>
7290 *: "KomentÄrs" 7290 *: "KomentÄrs"
7291 </dest> 7291 </dest>
7292 <voice> 7292 <voice>
7293 *: "" 7293 *: ""
7294 </voice> 7294 </voice>
7295</phrase> 7295</phrase>
7296<phrase> 7296<phrase>
7297 id: LANG_ID3_VBR 7297 id: LANG_ID3_VBR
7298 desc: in browse_id3 7298 desc: in browse_id3
7299 user: core 7299 user: core
7300 <source> 7300 <source>
7301 *: " (VBR)" 7301 *: " (VBR)"
7302 </source> 7302 </source>
7303 <dest> 7303 <dest>
7304 *: " (MBR)" 7304 *: " (MBR)"
7305 </dest> 7305 </dest>
7306 <voice> 7306 <voice>
7307 *: "" 7307 *: ""
7308 </voice> 7308 </voice>
7309</phrase> 7309</phrase>
7310<phrase> 7310<phrase>
7311 id: LANG_ID3_FREQUENCY 7311 id: LANG_ID3_FREQUENCY
7312 desc: in tag viewer 7312 desc: in tag viewer
7313 user: core 7313 user: core
7314 <source> 7314 <source>
7315 *: "Frequency" 7315 *: "Frequency"
7316 </source> 7316 </source>
7317 <dest> 7317 <dest>
7318 *: "Frekvence" 7318 *: "Frekvence"
7319 </dest> 7319 </dest>
7320 <voice> 7320 <voice>
7321 *: "" 7321 *: ""
7322 </voice> 7322 </voice>
7323</phrase> 7323</phrase>
7324<phrase> 7324<phrase>
7325 id: LANG_ID3_TRACK_GAIN 7325 id: LANG_ID3_TRACK_GAIN
7326 desc: in tag viewer 7326 desc: in tag viewer
7327 user: core 7327 user: core
7328 <source> 7328 <source>
7329 *: "Track Gain" 7329 *: "Track Gain"
7330 </source> 7330 </source>
7331 <dest> 7331 <dest>
7332 *: "Dziesmas Skaļums" 7332 *: "Dziesmas Skaļums"
7333 </dest> 7333 </dest>
7334 <voice> 7334 <voice>
7335 *: "" 7335 *: ""
7336 </voice> 7336 </voice>
7337</phrase> 7337</phrase>
7338<phrase> 7338<phrase>
7339 id: LANG_ID3_ALBUM_GAIN 7339 id: LANG_ID3_ALBUM_GAIN
7340 desc: in tag viewer 7340 desc: in tag viewer
7341 user: core 7341 user: core
7342 <source> 7342 <source>
7343 *: "Album Gain" 7343 *: "Album Gain"
7344 </source> 7344 </source>
7345 <dest> 7345 <dest>
7346 *: "Albūma Skaļums" 7346 *: "Albūma Skaļums"
7347 </dest> 7347 </dest>
7348 <voice> 7348 <voice>
7349 *: "" 7349 *: ""
7350 </voice> 7350 </voice>
7351</phrase> 7351</phrase>
7352<phrase> 7352<phrase>
7353 id: LANG_ID3_PATH 7353 id: LANG_ID3_PATH
7354 desc: in tag viewer 7354 desc: in tag viewer
7355 user: core 7355 user: core
7356 <source> 7356 <source>
7357 *: "Path" 7357 *: "Path"
7358 </source> 7358 </source>
7359 <dest> 7359 <dest>
7360 *: "Ceļš" 7360 *: "Ceļš"
7361 </dest> 7361 </dest>
7362 <voice> 7362 <voice>
7363 *: "" 7363 *: ""
7364 </voice> 7364 </voice>
7365</phrase> 7365</phrase>
7366<phrase> 7366<phrase>
7367 id: LANG_ID3_NO_INFO 7367 id: LANG_ID3_NO_INFO
7368 desc: in tag viewer 7368 desc: in tag viewer
7369 user: core 7369 user: core
7370 <source> 7370 <source>
7371 *: "<No Info>" 7371 *: "<No Info>"
7372 </source> 7372 </source>
7373 <dest> 7373 <dest>
7374 *: "<Nav InformÄcijas>" 7374 *: "<Nav InformÄcijas>"
7375 </dest> 7375 </dest>
7376 <voice> 7376 <voice>
7377 *: "" 7377 *: ""
7378 </voice> 7378 </voice>
7379</phrase> 7379</phrase>
7380<phrase> 7380<phrase>
7381 id: LANG_RENAME 7381 id: LANG_RENAME
7382 desc: The verb/action Rename 7382 desc: The verb/action Rename
7383 user: core 7383 user: core
7384 <source> 7384 <source>
7385 *: "Rename" 7385 *: "Rename"
7386 </source> 7386 </source>
7387 <dest> 7387 <dest>
7388 *: "PÄrsaukt" 7388 *: "PÄrsaukt"
7389 </dest> 7389 </dest>
7390 <voice> 7390 <voice>
7391 *: "paarsaukt" 7391 *: "paarsaukt"
7392 </voice> 7392 </voice>
7393</phrase> 7393</phrase>
7394<phrase> 7394<phrase>
7395 id: LANG_CUT 7395 id: LANG_CUT
7396 desc: The verb/action Cut 7396 desc: The verb/action Cut
7397 user: core 7397 user: core
7398 <source> 7398 <source>
7399 *: "Cut" 7399 *: "Cut"
7400 </source> 7400 </source>
7401 <dest> 7401 <dest>
7402 *: "Izgriezt" 7402 *: "Izgriezt"
7403 </dest> 7403 </dest>
7404 <voice> 7404 <voice>
7405 *: "izgriezt" 7405 *: "izgriezt"
7406 </voice> 7406 </voice>
7407</phrase> 7407</phrase>
7408<phrase> 7408<phrase>
7409 id: LANG_COPY 7409 id: LANG_COPY
7410 desc: The verb/action Copy 7410 desc: The verb/action Copy
7411 user: core 7411 user: core
7412 <source> 7412 <source>
7413 *: "Copy" 7413 *: "Copy"
7414 </source> 7414 </source>
7415 <dest> 7415 <dest>
7416 *: "Kopēt" 7416 *: "Kopēt"
7417 </dest> 7417 </dest>
7418 <voice> 7418 <voice>
7419 *: "kopeet" 7419 *: "kopeet"
7420 </voice> 7420 </voice>
7421</phrase> 7421</phrase>
7422<phrase> 7422<phrase>
7423 id: LANG_PASTE 7423 id: LANG_PASTE
7424 desc: The verb/action Paste 7424 desc: The verb/action Paste
7425 user: core 7425 user: core
7426 <source> 7426 <source>
7427 *: "Paste" 7427 *: "Paste"
7428 </source> 7428 </source>
7429 <dest> 7429 <dest>
7430 *: "Ielīmēt" 7430 *: "Ielīmēt"
7431 </dest> 7431 </dest>
7432 <voice> 7432 <voice>
7433 *: "ieliimeet" 7433 *: "ieliimeet"
7434 </voice> 7434 </voice>
7435</phrase> 7435</phrase>
7436<phrase> 7436<phrase>
7437 id: LANG_REALLY_OVERWRITE 7437 id: LANG_REALLY_OVERWRITE
7438 desc: The verb/action Paste 7438 desc: The verb/action Paste
7439 user: core 7439 user: core
7440 <source> 7440 <source>
7441 *: "File/directory exists. Overwrite?" 7441 *: "File/directory exists. Overwrite?"
7442 </source> 7442 </source>
7443 <dest> 7443 <dest>
7444 *: "Fails/mape jau ir. PÄrrakstÄ«t?" 7444 *: "Fails/mape jau ir. PÄrrakstÄ«t?"
7445 </dest> 7445 </dest>
7446 <voice> 7446 <voice>
7447 *: "fails vai mape jau ir. vai paarrakstiit" 7447 *: "fails vai mape jau ir. vai paarrakstiit"
7448 </voice> 7448 </voice>
7449</phrase> 7449</phrase>
7450<phrase> 7450<phrase>
7451 id: LANG_DELETE 7451 id: LANG_DELETE
7452 desc: The verb/action Delete 7452 desc: The verb/action Delete
7453 user: core 7453 user: core
7454 <source> 7454 <source>
7455 *: "Delete" 7455 *: "Delete"
7456 </source> 7456 </source>
7457 <dest> 7457 <dest>
7458 *: "Izdzēst" 7458 *: "Izdzēst"
7459 </dest> 7459 </dest>
7460 <voice> 7460 <voice>
7461 *: "izdzeest" 7461 *: "izdzeest"
7462 </voice> 7462 </voice>
7463</phrase> 7463</phrase>
7464<phrase> 7464<phrase>
7465 id: LANG_DELETE_DIR 7465 id: LANG_DELETE_DIR
7466 desc: in on+play menu 7466 desc: in on+play menu
7467 user: core 7467 user: core
7468 <source> 7468 <source>
7469 *: "Delete Directory" 7469 *: "Delete Directory"
7470 </source> 7470 </source>
7471 <dest> 7471 <dest>
7472 *: "Izdzēst Mapi" 7472 *: "Izdzēst Mapi"
7473 </dest> 7473 </dest>
7474 <voice> 7474 <voice>
7475 *: "izdzeest mapi" 7475 *: "izdzeest mapi"
7476 </voice> 7476 </voice>
7477</phrase> 7477</phrase>
7478<phrase> 7478<phrase>
7479 id: LANG_REALLY_DELETE 7479 id: LANG_REALLY_DELETE
7480 desc: Really Delete? 7480 desc: Really Delete?
7481 user: core 7481 user: core
7482 <source> 7482 <source>
7483 *: "Delete?" 7483 *: "Delete?"
7484 </source> 7484 </source>
7485 <dest> 7485 <dest>
7486 *: "Izdzēst?" 7486 *: "Izdzēst?"
7487 </dest> 7487 </dest>
7488 <voice> 7488 <voice>
7489 *: "vai tieshaam izdzeest" 7489 *: "vai tieshaam izdzeest"
7490 </voice> 7490 </voice>
7491</phrase> 7491</phrase>
7492<phrase> 7492<phrase>
7493 id: LANG_COPYING 7493 id: LANG_COPYING
7494 desc: 7494 desc:
7495 user: core 7495 user: core
7496 <source> 7496 <source>
7497 *: "Copying..." 7497 *: "Copying..."
7498 </source> 7498 </source>
7499 <dest> 7499 <dest>
7500 *: "Kopē..." 7500 *: "Kopē..."
7501 </dest> 7501 </dest>
7502 <voice> 7502 <voice>
7503 *: "kopee" 7503 *: "kopee"
7504 </voice> 7504 </voice>
7505</phrase> 7505</phrase>
7506<phrase> 7506<phrase>
7507 id: LANG_DELETING 7507 id: LANG_DELETING
7508 desc: 7508 desc:
7509 user: core 7509 user: core
7510 <source> 7510 <source>
7511 *: "Deleting..." 7511 *: "Deleting..."
7512 </source> 7512 </source>
7513 <dest> 7513 <dest>
7514 *: "Izdzēš..." 7514 *: "Izdzēš..."
7515 </dest> 7515 </dest>
7516 <voice> 7516 <voice>
7517 *: "izdzeesh" 7517 *: "izdzeesh"
7518 </voice> 7518 </voice>
7519</phrase> 7519</phrase>
7520<phrase> 7520<phrase>
7521 id: LANG_MOVING 7521 id: LANG_MOVING
7522 desc: 7522 desc:
7523 user: core 7523 user: core
7524 <source> 7524 <source>
7525 *: "Moving..." 7525 *: "Moving..."
7526 </source> 7526 </source>
7527 <dest> 7527 <dest>
7528 *: "PÄrvieto..." 7528 *: "PÄrvieto..."
7529 </dest> 7529 </dest>
7530 <voice> 7530 <voice>
7531 *: "paarvieto" 7531 *: "paarvieto"
7532 </voice> 7532 </voice>
7533</phrase> 7533</phrase>
7534<phrase> 7534<phrase>
7535 id: LANG_DELETED 7535 id: LANG_DELETED
7536 desc: A file has beed deleted 7536 desc: A file has beed deleted
7537 user: core 7537 user: core
7538 <source> 7538 <source>
7539 *: "Deleted" 7539 *: "Deleted"
7540 </source> 7540 </source>
7541 <dest> 7541 <dest>
7542 *: "Izdzēsts" 7542 *: "Izdzēsts"
7543 </dest> 7543 </dest>
7544 <voice> 7544 <voice>
7545 *: "izdzeests" 7545 *: "izdzeests"
7546 </voice> 7546 </voice>
7547</phrase> 7547</phrase>
7548<phrase> 7548<phrase>
7549 id: LANG_SET_AS_BACKDROP 7549 id: LANG_SET_AS_BACKDROP
7550 desc: text for onplay menu entry 7550 desc: text for onplay menu entry
7551 user: core 7551 user: core
7552 <source> 7552 <source>
7553 *: none 7553 *: none
7554 lcd_non-mono: "Set As Backdrop" 7554 lcd_non-mono: "Set As Backdrop"
7555 </source> 7555 </source>
7556 <dest> 7556 <dest>
7557 *: none 7557 *: none
7558 lcd_non-mono: "Uzlikt KÄ Fonu" 7558 lcd_non-mono: "Uzlikt KÄ Fonu"
7559 </dest> 7559 </dest>
7560 <voice> 7560 <voice>
7561 *: none 7561 *: none
7562 lcd_non-mono: "uzlikt kaa fonu" 7562 lcd_non-mono: "uzlikt kaa fonu"
7563 </voice> 7563 </voice>
7564</phrase> 7564</phrase>
7565<phrase> 7565<phrase>
7566 id: LANG_BACKDROP_LOADED 7566 id: LANG_BACKDROP_LOADED
7567 desc: deprecated 7567 desc: deprecated
7568 user: core 7568 user: core
7569 <source> 7569 <source>
7570 *: none 7570 *: none
7571 lcd_non-mono: "" 7571 lcd_non-mono: ""
7572 </source> 7572 </source>
7573 <dest> 7573 <dest>
7574 *: none 7574 *: none
7575 lcd_non-mono: "" 7575 lcd_non-mono: ""
7576 </dest> 7576 </dest>
7577 <voice> 7577 <voice>
7578 *: none 7578 *: none
7579 lcd_non-mono: "" 7579 lcd_non-mono: ""
7580 </voice> 7580 </voice>
7581</phrase> 7581</phrase>
7582<phrase> 7582<phrase>
7583 id: LANG_BACKDROP_FAILED 7583 id: LANG_BACKDROP_FAILED
7584 desc: deprecated 7584 desc: deprecated
7585 user: core 7585 user: core
7586 <source> 7586 <source>
7587 *: none 7587 *: none
7588 lcd_non-mono: "" 7588 lcd_non-mono: ""
7589 </source> 7589 </source>
7590 <dest> 7590 <dest>
7591 *: none 7591 *: none
7592 lcd_non-mono: "" 7592 lcd_non-mono: ""
7593 </dest> 7593 </dest>
7594 <voice> 7594 <voice>
7595 *: none 7595 *: none
7596 lcd_non-mono: "" 7596 lcd_non-mono: ""
7597 </voice> 7597 </voice>
7598</phrase> 7598</phrase>
7599<phrase> 7599<phrase>
7600 id: LANG_ONPLAY_OPEN_WITH 7600 id: LANG_ONPLAY_OPEN_WITH
7601 desc: Onplay open with 7601 desc: Onplay open with
7602 user: core 7602 user: core
7603 <source> 7603 <source>
7604 *: "Open With..." 7604 *: "Open With..."
7605 </source> 7605 </source>
7606 <dest> 7606 <dest>
7607 *: "Atvērt Ar..." 7607 *: "Atvērt Ar..."
7608 </dest> 7608 </dest>
7609 <voice> 7609 <voice>
7610 *: "atveert ar" 7610 *: "atveert ar"
7611 </voice> 7611 </voice>
7612</phrase> 7612</phrase>
7613<phrase> 7613<phrase>
7614 id: LANG_CREATE_DIR 7614 id: LANG_CREATE_DIR
7615 desc: in main menu 7615 desc: in main menu
7616 user: core 7616 user: core
7617 <source> 7617 <source>
7618 *: "Create Directory" 7618 *: "Create Directory"
7619 </source> 7619 </source>
7620 <dest> 7620 <dest>
7621 *: "Izveidot Mapi" 7621 *: "Izveidot Mapi"
7622 </dest> 7622 </dest>
7623 <voice> 7623 <voice>
7624 *: "izveidot mapi" 7624 *: "izveidot mapi"
7625 </voice> 7625 </voice>
7626</phrase> 7626</phrase>
7627<phrase> 7627<phrase>
7628 id: LANG_PROPERTIES 7628 id: LANG_PROPERTIES
7629 desc: browser file/dir properties 7629 desc: browser file/dir properties
7630 user: core 7630 user: core
7631 <source> 7631 <source>
7632 *: "Properties" 7632 *: "Properties"
7633 </source> 7633 </source>
7634 <dest> 7634 <dest>
7635 *: "Parametri" 7635 *: "Parametri"
7636 </dest> 7636 </dest>
7637 <voice> 7637 <voice>
7638 *: "parametri" 7638 *: "parametri"
7639 </voice> 7639 </voice>
7640</phrase> 7640</phrase>
7641<phrase> 7641<phrase>
7642 id: LANG_ADD_TO_FAVES 7642 id: LANG_ADD_TO_FAVES
7643 desc: 7643 desc:
7644 user: core 7644 user: core
7645 <source> 7645 <source>
7646 *: "Add to Shortcuts" 7646 *: "Add to Shortcuts"
7647 </source> 7647 </source>
7648 <dest> 7648 <dest>
7649 *: "Pievienot Saīsnēm" 7649 *: "Pievienot Saīsnēm"
7650 </dest> 7650 </dest>
7651 <voice> 7651 <voice>
7652 *: "pievienot saiisneem" 7652 *: "pievienot saiisneem"
7653 </voice> 7653 </voice>
7654</phrase> 7654</phrase>
7655<phrase> 7655<phrase>
7656 id: LANG_PITCH 7656 id: LANG_PITCH
7657 desc: "pitch" in the pitch screen 7657 desc: "pitch" in the pitch screen
7658 user: core 7658 user: core
7659 <source> 7659 <source>
7660 *: none 7660 *: none
7661 pitchscreen: "Pitch" 7661 pitchscreen: "Pitch"
7662 </source> 7662 </source>
7663 <dest> 7663 <dest>
7664 *: none 7664 *: none
7665 pitchscreen: "Ä€trums" 7665 pitchscreen: "Ä€trums"
7666 </dest> 7666 </dest>
7667 <voice> 7667 <voice>
7668 *: none 7668 *: none
7669 pitchscreen: "aatrums" 7669 pitchscreen: "aatrums"
7670 </voice> 7670 </voice>
7671</phrase> 7671</phrase>
7672<phrase> 7672<phrase>
7673 id: LANG_PITCH_UP 7673 id: LANG_PITCH_UP
7674 desc: in wps 7674 desc: in wps
7675 user: core 7675 user: core
7676 <source> 7676 <source>
7677 *: none 7677 *: none
7678 pitchscreen: "Pitch Up" 7678 pitchscreen: "Pitch Up"
7679 </source> 7679 </source>
7680 <dest> 7680 <dest>
7681 *: none 7681 *: none
7682 pitchscreen: "PaaugstinÄt" 7682 pitchscreen: "PaaugstinÄt"
7683 </dest> 7683 </dest>
7684 <voice> 7684 <voice>
7685 *: none 7685 *: none
7686 pitchscreen: "" 7686 pitchscreen: ""
7687 </voice> 7687 </voice>
7688</phrase> 7688</phrase>
7689<phrase> 7689<phrase>
7690 id: LANG_PITCH_DOWN 7690 id: LANG_PITCH_DOWN
7691 desc: in wps 7691 desc: in wps
7692 user: core 7692 user: core
7693 <source> 7693 <source>
7694 *: none 7694 *: none
7695 pitchscreen: "Pitch Down" 7695 pitchscreen: "Pitch Down"
7696 </source> 7696 </source>
7697 <dest> 7697 <dest>
7698 *: none 7698 *: none
7699 pitchscreen: "PazeminÄt" 7699 pitchscreen: "PazeminÄt"
7700 </dest> 7700 </dest>
7701 <voice> 7701 <voice>
7702 *: none 7702 *: none
7703 pitchscreen: "" 7703 pitchscreen: ""
7704 </voice> 7704 </voice>
7705</phrase> 7705</phrase>
7706<phrase> 7706<phrase>
7707 id: LANG_PITCH_UP_SEMITONE 7707 id: LANG_PITCH_UP_SEMITONE
7708 desc: in wps 7708 desc: in wps
7709 user: core 7709 user: core
7710 <source> 7710 <source>
7711 *: none 7711 *: none
7712 pitchscreen: "Semitone Up" 7712 pitchscreen: "Semitone Up"
7713 </source> 7713 </source>
7714 <dest> 7714 <dest>
7715 *: none 7715 *: none
7716 pitchscreen: "Pustoni Uz Augšu" 7716 pitchscreen: "Pustoni Uz Augšu"
7717 </dest> 7717 </dest>
7718 <voice> 7718 <voice>
7719 *: none 7719 *: none
7720 pitchscreen: "" 7720 pitchscreen: ""
7721 </voice> 7721 </voice>
7722</phrase> 7722</phrase>
7723<phrase> 7723<phrase>
7724 id: LANG_PITCH_DOWN_SEMITONE 7724 id: LANG_PITCH_DOWN_SEMITONE
7725 desc: in wps 7725 desc: in wps
7726 user: core 7726 user: core
7727 <source> 7727 <source>
7728 *: none 7728 *: none
7729 pitchscreen: "Semitone Down" 7729 pitchscreen: "Semitone Down"
7730 </source> 7730 </source>
7731 <dest> 7731 <dest>
7732 *: none 7732 *: none
7733 pitchscreen: "Pustoni Uz Leju" 7733 pitchscreen: "Pustoni Uz Leju"
7734 </dest> 7734 </dest>
7735 <voice> 7735 <voice>
7736 *: none 7736 *: none
7737 pitchscreen: "" 7737 pitchscreen: ""
7738 </voice> 7738 </voice>
7739</phrase> 7739</phrase>
7740<phrase> 7740<phrase>
7741 id: LANG_PLAYLIST_BUFFER_FULL 7741 id: LANG_PLAYLIST_BUFFER_FULL
7742 desc: in playlist.indices() when playlist is full 7742 desc: in playlist.indices() when playlist is full
7743 user: core 7743 user: core
7744 <source> 7744 <source>
7745 *: "Playlist Buffer Full" 7745 *: "Playlist Buffer Full"
7746 </source> 7746 </source>
7747 <dest> 7747 <dest>
7748 *: "Sarakstu Buferis Pilns" 7748 *: "Sarakstu Buferis Pilns"
7749 </dest> 7749 </dest>
7750 <voice> 7750 <voice>
7751 *: "sarakstu buferis pilns" 7751 *: "sarakstu buferis pilns"
7752 </voice> 7752 </voice>
7753</phrase> 7753</phrase>
7754<phrase> 7754<phrase>
7755 id: LANG_END_PLAYLIST 7755 id: LANG_END_PLAYLIST
7756 desc: when playlist has finished 7756 desc: when playlist has finished
7757 user: core 7757 user: core
7758 <source> 7758 <source>
7759 *: "End of Song List" 7759 *: "End of Song List"
7760 archosplayer: "End of List" 7760 archosplayer: "End of List"
7761 </source> 7761 </source>
7762 <dest> 7762 <dest>
7763 *: "Dziesmu Saraksta Beigas" 7763 *: "Dziesmu Saraksta Beigas"
7764 archosplayer: "Saraksta Beigas" 7764 archosplayer: "Saraksta Beigas"
7765 </dest> 7765 </dest>
7766 <voice> 7766 <voice>
7767 *: "saraksta beigas" 7767 *: "saraksta beigas"
7768 </voice> 7768 </voice>
7769</phrase> 7769</phrase>
7770<phrase> 7770<phrase>
7771 id: LANG_CREATING 7771 id: LANG_CREATING
7772 desc: Screen feedback during playlist creation 7772 desc: Screen feedback during playlist creation
7773 user: core 7773 user: core
7774 <source> 7774 <source>
7775 *: "Creating" 7775 *: "Creating"
7776 </source> 7776 </source>
7777 <dest> 7777 <dest>
7778 *: "Veido" 7778 *: "Veido"
7779 </dest> 7779 </dest>
7780 <voice> 7780 <voice>
7781 *: "" 7781 *: ""
7782 </voice> 7782 </voice>
7783</phrase> 7783</phrase>
7784<phrase> 7784<phrase>
7785 id: LANG_NOTHING_TO_RESUME 7785 id: LANG_NOTHING_TO_RESUME
7786 desc: Error message displayed when resume button pressed but no playlist 7786 desc: Error message displayed when resume button pressed but no playlist
7787 user: core 7787 user: core
7788 <source> 7788 <source>
7789 *: "Nothing to resume" 7789 *: "Nothing to resume"
7790 </source> 7790 </source>
7791 <dest> 7791 <dest>
7792 *: "Nav Ko AtsÄkt" 7792 *: "Nav Ko AtsÄkt"
7793 </dest> 7793 </dest>
7794 <voice> 7794 <voice>
7795 *: "nav ko atsaakt" 7795 *: "nav ko atsaakt"
7796 </voice> 7796 </voice>
7797</phrase> 7797</phrase>
7798<phrase> 7798<phrase>
7799 id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR 7799 id: LANG_PLAYLIST_CONTROL_UPDATE_ERROR
7800 desc: Playlist error 7800 desc: Playlist error
7801 user: core 7801 user: core
7802 <source> 7802 <source>
7803 *: "Error updating playlist control file" 7803 *: "Error updating playlist control file"
7804 </source> 7804 </source>
7805 <dest> 7805 <dest>
7806 *: "Kļūda Atjaunojot Saraksta Kontroles Failu" 7806 *: "Kļūda Atjaunojot Saraksta Kontroles Failu"
7807 </dest> 7807 </dest>
7808 <voice> 7808 <voice>
7809 *: "kljuuda izveidojot saraksta kontroles failu" 7809 *: "kljuuda izveidojot saraksta kontroles failu"
7810 </voice> 7810 </voice>
7811</phrase> 7811</phrase>
7812<phrase> 7812<phrase>
7813 id: LANG_PLAYLIST_ACCESS_ERROR 7813 id: LANG_PLAYLIST_ACCESS_ERROR
7814 desc: Playlist error 7814 desc: Playlist error
7815 user: core 7815 user: core
7816 <source> 7816 <source>
7817 *: "Error accessing playlist file" 7817 *: "Error accessing playlist file"
7818 </source> 7818 </source>
7819 <dest> 7819 <dest>
7820 *: "Kļūda Atverot Saraksta Failu" 7820 *: "Kļūda Atverot Saraksta Failu"
7821 </dest> 7821 </dest>
7822 <voice> 7822 <voice>
7823 *: "kljuuda atverot saraksta failu" 7823 *: "kljuuda atverot saraksta failu"
7824 </voice> 7824 </voice>
7825</phrase> 7825</phrase>
7826<phrase> 7826<phrase>
7827 id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR 7827 id: LANG_PLAYLIST_CONTROL_ACCESS_ERROR
7828 desc: Playlist error 7828 desc: Playlist error
7829 user: core 7829 user: core
7830 <source> 7830 <source>
7831 *: "Error accessing playlist control file" 7831 *: "Error accessing playlist control file"
7832 </source> 7832 </source>
7833 <dest> 7833 <dest>
7834 *: "Kļūda Atverot Saraksta Kontroles Failu" 7834 *: "Kļūda Atverot Saraksta Kontroles Failu"
7835 </dest> 7835 </dest>
7836 <voice> 7836 <voice>
7837 *: "kljuuda atverot saraksta kontroles failu" 7837 *: "kljuuda atverot saraksta kontroles failu"
7838 </voice> 7838 </voice>
7839</phrase> 7839</phrase>
7840<phrase> 7840<phrase>
7841 id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR 7841 id: LANG_PLAYLIST_DIRECTORY_ACCESS_ERROR
7842 desc: Playlist error 7842 desc: Playlist error
7843 user: core 7843 user: core
7844 <source> 7844 <source>
7845 *: "Error accessing directory" 7845 *: "Error accessing directory"
7846 </source> 7846 </source>
7847 <dest> 7847 <dest>
7848 *: "Kļūda Atverot Mapi" 7848 *: "Kļūda Atverot Mapi"
7849 </dest> 7849 </dest>
7850 <voice> 7850 <voice>
7851 *: "kljuuda atverot mapi" 7851 *: "kljuuda atverot mapi"
7852 </voice> 7852 </voice>
7853</phrase> 7853</phrase>
7854<phrase> 7854<phrase>
7855 id: LANG_PLAYLIST_CONTROL_INVALID 7855 id: LANG_PLAYLIST_CONTROL_INVALID
7856 desc: Playlist resume error 7856 desc: Playlist resume error
7857 user: core 7857 user: core
7858 <source> 7858 <source>
7859 *: "Playlist control file is invalid" 7859 *: "Playlist control file is invalid"
7860 </source> 7860 </source>
7861 <dest> 7861 <dest>
7862 *: "Saraksta Kontroles Fails Nederīgs" 7862 *: "Saraksta Kontroles Fails Nederīgs"
7863 </dest> 7863 </dest>
7864 <voice> 7864 <voice>
7865 *: "saraksta kontroles fails ir nederiigs" 7865 *: "saraksta kontroles fails ir nederiigs"
7866 </voice> 7866 </voice>
7867</phrase> 7867</phrase>
7868<phrase> 7868<phrase>
7869 id: LANG_PAUSE 7869 id: LANG_PAUSE
7870 desc: in wps and recording trigger menu 7870 desc: in wps and recording trigger menu
7871 user: core 7871 user: core
7872 <source> 7872 <source>
7873 *: "Pause" 7873 *: "Pause"
7874 </source> 7874 </source>
7875 <dest> 7875 <dest>
7876 *: "Pauze" 7876 *: "Pauze"
7877 </dest> 7877 </dest>
7878 <voice> 7878 <voice>
7879 *: "pauze" 7879 *: "pauze"
7880 </voice> 7880 </voice>
7881</phrase> 7881</phrase>
7882<phrase> 7882<phrase>
7883 id: LANG_MODE 7883 id: LANG_MODE
7884 desc: in wps F2 pressed and radio screen 7884 desc: in wps F2 pressed and radio screen
7885 user: core 7885 user: core
7886 <source> 7886 <source>
7887 *: "Mode:" 7887 *: "Mode:"
7888 </source> 7888 </source>
7889 <dest> 7889 <dest>
7890 *: "Režīms:" 7890 *: "Režīms:"
7891 </dest> 7891 </dest>
7892 <voice> 7892 <voice>
7893 *: "" 7893 *: ""
7894 </voice> 7894 </voice>
7895</phrase> 7895</phrase>
7896<phrase> 7896<phrase>
7897 id: LANG_TIME 7897 id: LANG_TIME
7898 desc: Used on the bookmark select window to label elapsed time 7898 desc: Used on the bookmark select window to label elapsed time
7899 user: core 7899 user: core
7900 <source> 7900 <source>
7901 *: "Time" 7901 *: "Time"
7902 </source> 7902 </source>
7903 <dest> 7903 <dest>
7904 *: "Laiks" 7904 *: "Laiks"
7905 </dest> 7905 </dest>
7906 <voice> 7906 <voice>
7907 *: "laiks" 7907 *: "laiks"
7908 </voice> 7908 </voice>
7909</phrase> 7909</phrase>
7910/* TODO: cleanup LANG_USB_CHARGING unless HAVE_USB_CHARGING_ENABLE defined, 7910/* TODO: cleanup LANG_USB_CHARGING unless HAVE_USB_CHARGING_ENABLE defined,
7911 * the selector should probably be usb_charging_enable_enable as well. */ 7911 * the selector should probably be usb_charging_enable_enable as well. */
7912<phrase> 7912<phrase>
7913 id: LANG_USB_CHARGING 7913 id: LANG_USB_CHARGING
7914 desc: in Battery menu 7914 desc: in Battery menu
7915 user: core 7915 user: core
7916 <source> 7916 <source>
7917 *: none 7917 *: none
7918 usb_charging_enable: "Charge During USB Connection" 7918 usb_charging_enable: "Charge During USB Connection"
7919 </source> 7919 </source>
7920 <dest> 7920 <dest>
7921 *: none 7921 *: none
7922 usb_charging_enable: "LÄdÄ“t ar USB" 7922 usb_charging_enable: "LÄdÄ“t ar USB"
7923 </dest> 7923 </dest>
7924 <voice> 7924 <voice>
7925 *: none 7925 *: none
7926 usb_charging_enable: "laadeet ar uuesbee" 7926 usb_charging_enable: "laadeet ar uuesbee"
7927 </voice> 7927 </voice>
7928</phrase> 7928</phrase>
7929<phrase> 7929<phrase>
7930 id: LANG_KEYLOCK_ON 7930 id: LANG_KEYLOCK_ON
7931 desc: displayed when key lock is on 7931 desc: displayed when key lock is on
7932 user: core 7932 user: core
7933 <source> 7933 <source>
7934 *: "Buttons Locked" 7934 *: "Buttons Locked"
7935 </source> 7935 </source>
7936 <dest> 7936 <dest>
7937 *: "Pogas NobloÄ·Ä“tas" 7937 *: "Pogas NobloÄ·Ä“tas"
7938 </dest> 7938 </dest>
7939 <voice> 7939 <voice>
7940 *: "" 7940 *: ""
7941 </voice> 7941 </voice>
7942</phrase> 7942</phrase>
7943<phrase> 7943<phrase>
7944 id: LANG_KEYLOCK_OFF 7944 id: LANG_KEYLOCK_OFF
7945 desc: displayed when key lock is turned off 7945 desc: displayed when key lock is turned off
7946 user: core 7946 user: core
7947 <source> 7947 <source>
7948 *: "Buttons Unlocked" 7948 *: "Buttons Unlocked"
7949 </source> 7949 </source>
7950 <dest> 7950 <dest>
7951 *: "Pogas AtbloÄ·Ä“tas" 7951 *: "Pogas AtbloÄ·Ä“tas"
7952 </dest> 7952 </dest>
7953 <voice> 7953 <voice>
7954 *: "" 7954 *: ""
7955 </voice> 7955 </voice>
7956</phrase> 7956</phrase>
7957<phrase> 7957<phrase>
7958 id: LANG_RECORDING_TIME 7958 id: LANG_RECORDING_TIME
7959 desc: Display of recorded time 7959 desc: Display of recorded time
7960 user: core 7960 user: core
7961 <source> 7961 <source>
7962 *: none 7962 *: none
7963 recording: "Time:" 7963 recording: "Time:"
7964 </source> 7964 </source>
7965 <dest> 7965 <dest>
7966 *: none 7966 *: none
7967 recording: "Laiks:" 7967 recording: "Laiks:"
7968 </dest> 7968 </dest>
7969 <voice> 7969 <voice>
7970 *: none 7970 *: none
7971 recording: "" 7971 recording: ""
7972 </voice> 7972 </voice>
7973</phrase> 7973</phrase>
7974<phrase> 7974<phrase>
7975 id: LANG_DISK_FULL 7975 id: LANG_DISK_FULL
7976 desc: in recording screen 7976 desc: in recording screen
7977 user: core 7977 user: core
7978 <source> 7978 <source>
7979 *: none 7979 *: none
7980 recording: "The disk is full. Press OFF to continue." 7980 recording: "The disk is full. Press OFF to continue."
7981 iriverh100,iriverh120,iriverh300: "The disk is full. Press STOP to continue." 7981 iriverh100,iriverh120,iriverh300: "The disk is full. Press STOP to continue."
7982 iaudiom5,iaudiox5: "The disk is full. Press POWER to continue." 7982 iaudiom5,iaudiox5: "The disk is full. Press POWER to continue."
7983 sansae200*,sansac200*,vibe500: "The disk is full. Press PREV to continue." 7983 sansae200*,sansac200*,vibe500: "The disk is full. Press PREV to continue."
7984 </source> 7984 </source>
7985 <dest> 7985 <dest>
7986 *: none 7986 *: none
7987 recording: "Atmiņa pilna. Spied OFF lai turpinÄtu." 7987 recording: "Atmiņa pilna. Spied OFF lai turpinÄtu."
7988 iriverh100,iriverh120,iriverh300: "Atmiņa pilna. Spied STOP lai turpinÄtu." 7988 iriverh100,iriverh120,iriverh300: "Atmiņa pilna. Spied STOP lai turpinÄtu."
7989 iaudiom5,iaudiox5: "Atmiņa pilna. Spied POWER lai turpinÄtu." 7989 iaudiom5,iaudiox5: "Atmiņa pilna. Spied POWER lai turpinÄtu."
7990 sansae200*,sansac200*,vibe500: "Atmiņa pilna. Spied PREV lai turpinÄtu." 7990 sansae200*,sansac200*,vibe500: "Atmiņa pilna. Spied PREV lai turpinÄtu."
7991 </dest> 7991 </dest>
7992 <voice> 7992 <voice>
7993 *: none 7993 *: none
7994 recording,iriverh100,iriverh120,iriverh300,iaudiom5,iaudiox5,sansae200*,sansac200*: "" 7994 recording,iriverh100,iriverh120,iriverh300,iaudiom5,iaudiox5,sansae200*,sansac200*: ""
7995 </voice> 7995 </voice>
7996</phrase> 7996</phrase>
7997<phrase> 7997<phrase>
7998 id: LANG_DB_INF 7998 id: LANG_DB_INF
7999 desc: -inf db for values below measurement 7999 desc: -inf db for values below measurement
8000 user: core 8000 user: core
8001 <source> 8001 <source>
8002 *: none 8002 *: none
8003 recording: "-inf" 8003 recording: "-inf"
8004 </source> 8004 </source>
8005 <dest> 8005 <dest>
8006 *: none 8006 *: none
8007 recording: "-neg" 8007 recording: "-neg"
8008 </dest> 8008 </dest>
8009 <voice> 8009 <voice>
8010 *: none 8010 *: none
8011 recording: "miinus bezgaliiba" 8011 recording: "miinus bezgaliiba"
8012 </voice> 8012 </voice>
8013</phrase> 8013</phrase>
8014<phrase> 8014<phrase>
8015 id: LANG_CONFIRM_SHUTDOWN 8015 id: LANG_CONFIRM_SHUTDOWN
8016 desc: in shutdown screen 8016 desc: in shutdown screen
8017 user: core 8017 user: core
8018 <source> 8018 <source>
8019 *: none 8019 *: none
8020 soft_shutdown: "Press OFF to shut down" 8020 soft_shutdown: "Press OFF to shut down"
8021 </source> 8021 </source>
8022 <dest> 8022 <dest>
8023 *: none 8023 *: none
8024 soft_shutdown: "Spied OFF lai izslēgtu" 8024 soft_shutdown: "Spied OFF lai izslēgtu"
8025 </dest> 8025 </dest>
8026 <voice> 8026 <voice>
8027 *: none 8027 *: none
8028 soft_shutdown: "" 8028 soft_shutdown: ""
8029 </voice> 8029 </voice>
8030</phrase> 8030</phrase>
8031<phrase> 8031<phrase>
8032 id: LANG_REMOVE_MMC 8032 id: LANG_REMOVE_MMC
8033 desc: before acknowledging usb in case an MMC is inserted (Ondio) 8033 desc: before acknowledging usb in case an MMC is inserted (Ondio)
8034 user: core 8034 user: core
8035 <source> 8035 <source>
8036 *: none 8036 *: none
8037 archosondio*: "Please remove inserted MMC" 8037 archosondio*: "Please remove inserted MMC"
8038 </source> 8038 </source>
8039 <dest> 8039 <dest>
8040 *: none 8040 *: none
8041 archosondio*: "Lūdzu izņemiet ievietoto MMC" 8041 archosondio*: "Lūdzu izņemiet ievietoto MMC"
8042 </dest> 8042 </dest>
8043 <voice> 8043 <voice>
8044 *: none 8044 *: none
8045 archosondio*: "luudzu iznjemiet atminjas karti" 8045 archosondio*: "luudzu iznjemiet atminjas karti"
8046 </voice> 8046 </voice>
8047</phrase> 8047</phrase>
8048<phrase> 8048<phrase>
8049 id: LANG_BOOT_CHANGED 8049 id: LANG_BOOT_CHANGED
8050 desc: File browser discovered the boot file was changed 8050 desc: File browser discovered the boot file was changed
8051 user: core 8051 user: core
8052 <source> 8052 <source>
8053 *: "Boot changed" 8053 *: "Boot changed"
8054 </source> 8054 </source>
8055 <dest> 8055 <dest>
8056 *: "Fails Izmainīts" 8056 *: "Fails Izmainīts"
8057 </dest> 8057 </dest>
8058 <voice> 8058 <voice>
8059 *: "fails izmainiits" 8059 *: "fails izmainiits"
8060 </voice> 8060 </voice>
8061</phrase> 8061</phrase>
8062<phrase> 8062<phrase>
8063 id: LANG_REBOOT_NOW 8063 id: LANG_REBOOT_NOW
8064 desc: Do you want to reboot? 8064 desc: Do you want to reboot?
8065 user: core 8065 user: core
8066 <source> 8066 <source>
8067 *: "Reboot now?" 8067 *: "Reboot now?"
8068 </source> 8068 </source>
8069 <dest> 8069 <dest>
8070 *: "PÄrstartÄ“t tagad?" 8070 *: "PÄrstartÄ“t tagad?"
8071 </dest> 8071 </dest>
8072 <voice> 8072 <voice>
8073 *: "vai paarstarteet tagad" 8073 *: "vai paarstarteet tagad"
8074 </voice> 8074 </voice>
8075</phrase> 8075</phrase>
8076<phrase> 8076<phrase>
8077 id: LANG_OFF_ABORT 8077 id: LANG_OFF_ABORT
8078 desc: Used on archosrecorder models 8078 desc: Used on archosrecorder models
8079 user: core 8079 user: core
8080 <source> 8080 <source>
8081 *: "OFF to abort" 8081 *: "OFF to abort"
8082 archosplayer,iriverh100,iriverh120,iriverh300: "STOP to abort" 8082 archosplayer,iriverh100,iriverh120,iriverh300: "STOP to abort"
8083 ipod*: "PLAY/PAUSE to abort" 8083 ipod*: "PLAY/PAUSE to abort"
8084 iaudiox5,iaudiom5: "Long PLAY to abort" 8084 iaudiox5,iaudiom5: "Long PLAY to abort"
8085 iriverh10,iriverh10_5gb,sansae200*,sansac200*,vibe500: "PREV to abort" 8085 iriverh10,iriverh10_5gb,sansae200*,sansac200*,vibe500: "PREV to abort"
8086 gigabeats: "BACK to abort" 8086 gigabeats: "BACK to abort"
8087 gigabeatfx: "POWER to abort" 8087 gigabeatfx: "POWER to abort"
8088 </source> 8088 </source>
8089 <dest> 8089 <dest>
8090 *: "OFF lai pÄrtrauktu" 8090 *: "OFF lai pÄrtrauktu"
8091 archosplayer,iriverh100,iriverh120,iriverh300: "STOP lai pÄrtrauktu" 8091 archosplayer,iriverh100,iriverh120,iriverh300: "STOP lai pÄrtrauktu"
8092 ipod*: "PLAY/PAUSE lai pÄrtrauktu" 8092 ipod*: "PLAY/PAUSE lai pÄrtrauktu"
8093 iaudiox5,iaudiom5: "Long PLAY lai pÄrtrauktu" 8093 iaudiox5,iaudiom5: "Long PLAY lai pÄrtrauktu"
8094 iriverh10,iriverh10_5gb,sansae200*,sansac200*,vibe500: "PREV lai pÄrtrauktu" 8094 iriverh10,iriverh10_5gb,sansae200*,sansac200*,vibe500: "PREV lai pÄrtrauktu"
8095 gigabeats: "BACK lai pÄrtrauktu" 8095 gigabeats: "BACK lai pÄrtrauktu"
8096 gigabeatfx: "POWER lai pÄrtrauktu" 8096 gigabeatfx: "POWER lai pÄrtrauktu"
8097 </dest> 8097 </dest>
8098 <voice> 8098 <voice>
8099 *: "" 8099 *: ""
8100 </voice> 8100 </voice>
8101</phrase> 8101</phrase>
8102<phrase> 8102<phrase>
8103 id: LANG_NO_FILES 8103 id: LANG_NO_FILES
8104 desc: in settings_menu 8104 desc: in settings_menu
8105 user: core 8105 user: core
8106 <source> 8106 <source>
8107 *: "No files" 8107 *: "No files"
8108 </source> 8108 </source>
8109 <dest> 8109 <dest>
8110 *: "Nav Failu" 8110 *: "Nav Failu"
8111 </dest> 8111 </dest>
8112 <voice> 8112 <voice>
8113 *: "nav failu" 8113 *: "nav failu"
8114 </voice> 8114 </voice>
8115</phrase> 8115</phrase>
8116<phrase> 8116<phrase>
8117 id: LANG_KEYBOARD_LOADED 8117 id: LANG_KEYBOARD_LOADED
8118 desc: shown when a keyboard has been loaded from the dir browser 8118 desc: shown when a keyboard has been loaded from the dir browser
8119 user: core 8119 user: core
8120 <source> 8120 <source>
8121 *: "New Keyboard" 8121 *: "New Keyboard"
8122 </source> 8122 </source>
8123 <dest> 8123 <dest>
8124 *: "Jauna Klaviatūra" 8124 *: "Jauna Klaviatūra"
8125 </dest> 8125 </dest>
8126 <voice> 8126 <voice>
8127 *: "jauna klaviatuura" 8127 *: "jauna klaviatuura"
8128 </voice> 8128 </voice>
8129</phrase> 8129</phrase>
8130<phrase> 8130<phrase>
8131 id: LANG_PLUGIN_CANT_OPEN 8131 id: LANG_PLUGIN_CANT_OPEN
8132 desc: Plugin open error message 8132 desc: Plugin open error message
8133 user: core 8133 user: core
8134 <source> 8134 <source>
8135 *: "Can't open %s" 8135 *: "Can't open %s"
8136 </source> 8136 </source>
8137 <dest> 8137 <dest>
8138 *: "Nevar atvērt %s" 8138 *: "Nevar atvērt %s"
8139 </dest> 8139 </dest>
8140 <voice> 8140 <voice>
8141 *: "" 8141 *: ""
8142 </voice> 8142 </voice>
8143</phrase> 8143</phrase>
8144<phrase> 8144<phrase>
8145 id: LANG_READ_FAILED 8145 id: LANG_READ_FAILED
8146 desc: There was an error reading a file 8146 desc: There was an error reading a file
8147 user: core 8147 user: core
8148 <source> 8148 <source>
8149 *: "Failed reading %s" 8149 *: "Failed reading %s"
8150 </source> 8150 </source>
8151 <dest> 8151 <dest>
8152 *: "NeizdevÄs nolasÄ«t %s" 8152 *: "NeizdevÄs nolasÄ«t %s"
8153 </dest> 8153 </dest>
8154 <voice> 8154 <voice>
8155 *: "" 8155 *: ""
8156 </voice> 8156 </voice>
8157</phrase> 8157</phrase>
8158<phrase> 8158<phrase>
8159 id: LANG_PLUGIN_WRONG_MODEL 8159 id: LANG_PLUGIN_WRONG_MODEL
8160 desc: The plugin is not compatible with the archos model trying to run it 8160 desc: The plugin is not compatible with the archos model trying to run it
8161 user: core 8161 user: core
8162 <source> 8162 <source>
8163 *: "Incompatible model" 8163 *: "Incompatible model"
8164 </source> 8164 </source>
8165 <dest> 8165 <dest>
8166 *: "Nesaderīgs modelis" 8166 *: "Nesaderīgs modelis"
8167 </dest> 8167 </dest>
8168 <voice> 8168 <voice>
8169 *: "" 8169 *: ""
8170 </voice> 8170 </voice>
8171</phrase> 8171</phrase>
8172<phrase> 8172<phrase>
8173 id: LANG_PLUGIN_WRONG_VERSION 8173 id: LANG_PLUGIN_WRONG_VERSION
8174 desc: The plugin is not compatible with the rockbox version trying to run it 8174 desc: The plugin is not compatible with the rockbox version trying to run it
8175 user: core 8175 user: core
8176 <source> 8176 <source>
8177 *: "Incompatible version" 8177 *: "Incompatible version"
8178 </source> 8178 </source>
8179 <dest> 8179 <dest>
8180 *: "Nesaderīga versija" 8180 *: "Nesaderīga versija"
8181 </dest> 8181 </dest>
8182 <voice> 8182 <voice>
8183 *: "" 8183 *: ""
8184 </voice> 8184 </voice>
8185</phrase> 8185</phrase>
8186<phrase> 8186<phrase>
8187 id: LANG_PLUGIN_ERROR 8187 id: LANG_PLUGIN_ERROR
8188 desc: The plugin return an error code 8188 desc: The plugin return an error code
8189 user: core 8189 user: core
8190 <source> 8190 <source>
8191 *: "Plugin returned error" 8191 *: "Plugin returned error"
8192 </source> 8192 </source>
8193 <dest> 8193 <dest>
8194 *: "Spraudnis izmeta kļūdu" 8194 *: "Spraudnis izmeta kļūdu"
8195 </dest> 8195 </dest>
8196 <voice> 8196 <voice>
8197 *: "" 8197 *: ""
8198 </voice> 8198 </voice>
8199</phrase> 8199</phrase>
8200<phrase> 8200<phrase>
8201 id: LANG_FILETYPES_FULL 8201 id: LANG_FILETYPES_FULL
8202 desc: Filetype array full 8202 desc: Filetype array full
8203 user: core 8203 user: core
8204 <source> 8204 <source>
8205 *: "Filetype array full" 8205 *: "Filetype array full"
8206 </source> 8206 </source>
8207 <dest> 8207 <dest>
8208 *: "Failu Veidu Saraksts Pilns" 8208 *: "Failu Veidu Saraksts Pilns"
8209 </dest> 8209 </dest>
8210 <voice> 8210 <voice>
8211 *: "failu veidu saraksts pilns" 8211 *: "failu veidu saraksts pilns"
8212 </voice> 8212 </voice>
8213</phrase> 8213</phrase>
8214<phrase> 8214<phrase>
8215 id: LANG_SHOWDIR_BUFFER_FULL 8215 id: LANG_SHOWDIR_BUFFER_FULL
8216 desc: in showdir(), displayed on screen when you reach buffer limit 8216 desc: in showdir(), displayed on screen when you reach buffer limit
8217 user: core 8217 user: core
8218 <source> 8218 <source>
8219 *: "Dir Buffer is Full!" 8219 *: "Dir Buffer is Full!"
8220 </source> 8220 </source>
8221 <dest> 8221 <dest>
8222 *: "Mapes Buferis Ir Pilns!" 8222 *: "Mapes Buferis Ir Pilns!"
8223 </dest> 8223 </dest>
8224 <voice> 8224 <voice>
8225 *: "mapes buferis ir pilns" 8225 *: "mapes buferis ir pilns"
8226 </voice> 8226 </voice>
8227</phrase> 8227</phrase>
8228<phrase> 8228<phrase>
8229 id: LANG_INVALID_FILENAME 8229 id: LANG_INVALID_FILENAME
8230 desc: "invalid filename entered" error message 8230 desc: "invalid filename entered" error message
8231 user: core 8231 user: core
8232 <source> 8232 <source>
8233 *: "Invalid Filename!" 8233 *: "Invalid Filename!"
8234 </source> 8234 </source>
8235 <dest> 8235 <dest>
8236 *: "Nederīgs Faila Nosaukums!" 8236 *: "Nederīgs Faila Nosaukums!"
8237 </dest> 8237 </dest>
8238 <voice> 8238 <voice>
8239 *: "nederiigs faila nosaukums" 8239 *: "nederiigs faila nosaukums"
8240 </voice> 8240 </voice>
8241</phrase> 8241</phrase>
8242<phrase> 8242<phrase>
8243 id: LANG_PLEASE_REBOOT 8243 id: LANG_PLEASE_REBOOT
8244 desc: when activating an option that requires a reboot 8244 desc: when activating an option that requires a reboot
8245 user: core 8245 user: core
8246 <source> 8246 <source>
8247 *: "Please reboot to enable" 8247 *: "Please reboot to enable"
8248 </source> 8248 </source>
8249 <dest> 8249 <dest>
8250 *: "PÄrstartÄ“jiet Lai IeslÄ“gtu" 8250 *: "PÄrstartÄ“jiet Lai IeslÄ“gtu"
8251 </dest> 8251 </dest>
8252 <voice> 8252 <voice>
8253 *: "paarstarteejiet lai iesleegtu" 8253 *: "paarstarteejiet lai iesleegtu"
8254 </voice> 8254 </voice>
8255</phrase> 8255</phrase>
8256<phrase> 8256<phrase>
8257 id: LANG_BATTERY_CHARGE 8257 id: LANG_BATTERY_CHARGE
8258 desc: tells that the battery is charging, instead of battery level 8258 desc: tells that the battery is charging, instead of battery level
8259 user: core 8259 user: core
8260 <source> 8260 <source>
8261 *: none 8261 *: none
8262 charging: "Battery: Charging" 8262 charging: "Battery: Charging"
8263 </source> 8263 </source>
8264 <dest> 8264 <dest>
8265 *: none 8265 *: none
8266 charging: "Baterija: LÄdÄ“jas" 8266 charging: "Baterija: LÄdÄ“jas"
8267 </dest> 8267 </dest>
8268 <voice> 8268 <voice>
8269 *: none 8269 *: none
8270 charging: "baterija laadeejas" 8270 charging: "baterija laadeejas"
8271 </voice> 8271 </voice>
8272</phrase> 8272</phrase>
8273<phrase> 8273<phrase>
8274 id: LANG_BATTERY_TOPOFF_CHARGE 8274 id: LANG_BATTERY_TOPOFF_CHARGE
8275 desc: in info display, shows that top off charge is running Only for V1 archosrecorder 8275 desc: in info display, shows that top off charge is running Only for V1 archosrecorder
8276 user: core 8276 user: core
8277 <source> 8277 <source>
8278 *: none 8278 *: none
8279 archosrecorder: "Battery: Top-Off Chg" 8279 archosrecorder: "Battery: Top-Off Chg"
8280 </source> 8280 </source>
8281 <dest> 8281 <dest>
8282 *: none 8282 *: none
8283 archosrecorder: "Baterija: Beidz LÄdÄ“t" 8283 archosrecorder: "Baterija: Beidz LÄdÄ“t"
8284 </dest> 8284 </dest>
8285 <voice> 8285 <voice>
8286 *: none 8286 *: none
8287 archosrecorder: "pabeigshanas laadinjsh" 8287 archosrecorder: "pabeigshanas laadinjsh"
8288 </voice> 8288 </voice>
8289</phrase> 8289</phrase>
8290<phrase> 8290<phrase>
8291 id: LANG_BATTERY_TRICKLE_CHARGE 8291 id: LANG_BATTERY_TRICKLE_CHARGE
8292 desc: in info display, shows that trickle charge is running 8292 desc: in info display, shows that trickle charge is running
8293 user: core 8293 user: core
8294 <source> 8294 <source>
8295 *: none 8295 *: none
8296 charging: "Battery: Trickle Chg" 8296 charging: "Battery: Trickle Chg"
8297 </source> 8297 </source>
8298 <dest> 8298 <dest>
8299 *: none 8299 *: none
8300 charging: "Baterija: UzlÄdÄ“ts" 8300 charging: "Baterija: UzlÄdÄ“ts"
8301 </dest> 8301 </dest>
8302 <voice> 8302 <voice>
8303 *: none 8303 *: none
8304 charging: "laadeeshana pabeigta" 8304 charging: "laadeeshana pabeigta"
8305 </voice> 8305 </voice>
8306</phrase> 8306</phrase>
8307<phrase> 8307<phrase>
8308 id: LANG_WARNING_BATTERY_LOW 8308 id: LANG_WARNING_BATTERY_LOW
8309 desc: general warning 8309 desc: general warning
8310 user: core 8310 user: core
8311 <source> 8311 <source>
8312 *: "WARNING! Low Battery!" 8312 *: "WARNING! Low Battery!"
8313 </source> 8313 </source>
8314 <dest> 8314 <dest>
8315 *: "Baterija Gandrīz Tukša!" 8315 *: "Baterija Gandrīz Tukša!"
8316 </dest> 8316 </dest>
8317 <voice> 8317 <voice>
8318 *: "baterija gandriiz tuksha" 8318 *: "baterija gandriiz tuksha"
8319 </voice> 8319 </voice>
8320</phrase> 8320</phrase>
8321<phrase> 8321<phrase>
8322 id: LANG_WARNING_BATTERY_EMPTY 8322 id: LANG_WARNING_BATTERY_EMPTY
8323 desc: general warning 8323 desc: general warning
8324 user: core 8324 user: core
8325 <source> 8325 <source>
8326 *: "Battery empty! RECHARGE!" 8326 *: "Battery empty! RECHARGE!"
8327 </source> 8327 </source>
8328 <dest> 8328 <dest>
8329 *: "Baterija Tukša! JĀLĀDĒ!" 8329 *: "Baterija Tukša! JĀLĀDĒ!"
8330 </dest> 8330 </dest>
8331 <voice> 8331 <voice>
8332 *: "baterija tuksha jaalaadee" 8332 *: "baterija tuksha jaalaadee"
8333 </voice> 8333 </voice>
8334</phrase> 8334</phrase>
8335<phrase> 8335<phrase>
8336 id: LANG_BYTE 8336 id: LANG_BYTE
8337 desc: a unit postfix 8337 desc: a unit postfix
8338 user: core 8338 user: core
8339 <source> 8339 <source>
8340 *: "B" 8340 *: "B"
8341 </source> 8341 </source>
8342 <dest> 8342 <dest>
8343 *: "B" 8343 *: "B"
8344 </dest> 8344 </dest>
8345 <voice> 8345 <voice>
8346 *: "" 8346 *: ""
8347 </voice> 8347 </voice>
8348</phrase> 8348</phrase>
8349<phrase> 8349<phrase>
8350 id: LANG_KILOBYTE 8350 id: LANG_KILOBYTE
8351 desc: a unit postfix, also voiced 8351 desc: a unit postfix, also voiced
8352 user: core 8352 user: core
8353 <source> 8353 <source>
8354 *: "KB" 8354 *: "KB"
8355 </source> 8355 </source>
8356 <dest> 8356 <dest>
8357 *: "KB" 8357 *: "KB"
8358 </dest> 8358 </dest>
8359 <voice> 8359 <voice>
8360 *: "kilobaits" 8360 *: "kilobaits"
8361 </voice> 8361 </voice>
8362</phrase> 8362</phrase>
8363<phrase> 8363<phrase>
8364 id: LANG_MEGABYTE 8364 id: LANG_MEGABYTE
8365 desc: a unit postfix, also voiced 8365 desc: a unit postfix, also voiced
8366 user: core 8366 user: core
8367 <source> 8367 <source>
8368 *: "MB" 8368 *: "MB"
8369 </source> 8369 </source>
8370 <dest> 8370 <dest>
8371 *: "MB" 8371 *: "MB"
8372 </dest> 8372 </dest>
8373 <voice> 8373 <voice>
8374 *: "megabaits" 8374 *: "megabaits"
8375 </voice> 8375 </voice>
8376</phrase> 8376</phrase>
8377<phrase> 8377<phrase>
8378 id: LANG_GIGABYTE 8378 id: LANG_GIGABYTE
8379 desc: a unit postfix, also voiced 8379 desc: a unit postfix, also voiced
8380 user: core 8380 user: core
8381 <source> 8381 <source>
8382 *: "GB" 8382 *: "GB"
8383 </source> 8383 </source>
8384 <dest> 8384 <dest>
8385 *: "GB" 8385 *: "GB"
8386 </dest> 8386 </dest>
8387 <voice> 8387 <voice>
8388 *: "gigabaits" 8388 *: "gigabaits"
8389 </voice> 8389 </voice>
8390</phrase> 8390</phrase>
8391<phrase> 8391<phrase>
8392 id: LANG_POINT 8392 id: LANG_POINT
8393 desc: decimal separator for composing numbers 8393 desc: decimal separator for composing numbers
8394 user: core 8394 user: core
8395 <source> 8395 <source>
8396 *: "." 8396 *: "."
8397 </source> 8397 </source>
8398 <dest> 8398 <dest>
8399 *: "." 8399 *: "."
8400 </dest> 8400 </dest>
8401 <voice> 8401 <voice>
8402 *: "punkts" 8402 *: "punkts"
8403 </voice> 8403 </voice>
8404</phrase> 8404</phrase>
8405<phrase> 8405<phrase>
8406 id: VOICE_ZERO 8406 id: VOICE_ZERO
8407 desc: spoken only, for composing numbers 8407 desc: spoken only, for composing numbers
8408 user: core 8408 user: core
8409 <source> 8409 <source>
8410 *: "" 8410 *: ""
8411 </source> 8411 </source>
8412 <dest> 8412 <dest>
8413 *: "" 8413 *: ""
8414 </dest> 8414 </dest>
8415 <voice> 8415 <voice>
8416 *: "nulle" 8416 *: "nulle"
8417 </voice> 8417 </voice>
8418</phrase> 8418</phrase>
8419<phrase> 8419<phrase>
8420 id: VOICE_ONE 8420 id: VOICE_ONE
8421 desc: spoken only, for composing numbers 8421 desc: spoken only, for composing numbers
8422 user: core 8422 user: core
8423 <source> 8423 <source>
8424 *: "" 8424 *: ""
8425 </source> 8425 </source>
8426 <dest> 8426 <dest>
8427 *: "" 8427 *: ""
8428 </dest> 8428 </dest>
8429 <voice> 8429 <voice>
8430 *: "viens" 8430 *: "viens"
8431 </voice> 8431 </voice>
8432</phrase> 8432</phrase>
8433<phrase> 8433<phrase>
8434 id: VOICE_TWO 8434 id: VOICE_TWO
8435 desc: spoken only, for composing numbers 8435 desc: spoken only, for composing numbers
8436 user: core 8436 user: core
8437 <source> 8437 <source>
8438 *: "" 8438 *: ""
8439 </source> 8439 </source>
8440 <dest> 8440 <dest>
8441 *: "" 8441 *: ""
8442 </dest> 8442 </dest>
8443 <voice> 8443 <voice>
8444 *: "divi" 8444 *: "divi"
8445 </voice> 8445 </voice>
8446</phrase> 8446</phrase>
8447<phrase> 8447<phrase>
8448 id: VOICE_THREE 8448 id: VOICE_THREE
8449 desc: spoken only, for composing numbers 8449 desc: spoken only, for composing numbers
8450 user: core 8450 user: core
8451 <source> 8451 <source>
8452 *: "" 8452 *: ""
8453 </source> 8453 </source>
8454 <dest> 8454 <dest>
8455 *: "" 8455 *: ""
8456 </dest> 8456 </dest>
8457 <voice> 8457 <voice>
8458 *: "triis" 8458 *: "triis"
8459 </voice> 8459 </voice>
8460</phrase> 8460</phrase>
8461<phrase> 8461<phrase>
8462 id: VOICE_FOUR 8462 id: VOICE_FOUR
8463 desc: spoken only, for composing numbers 8463 desc: spoken only, for composing numbers
8464 user: core 8464 user: core
8465 <source> 8465 <source>
8466 *: "" 8466 *: ""
8467 </source> 8467 </source>
8468 <dest> 8468 <dest>
8469 *: "" 8469 *: ""
8470 </dest> 8470 </dest>
8471 <voice> 8471 <voice>
8472 *: "chetri" 8472 *: "chetri"
8473 </voice> 8473 </voice>
8474</phrase> 8474</phrase>
8475<phrase> 8475<phrase>
8476 id: VOICE_FIVE 8476 id: VOICE_FIVE
8477 desc: spoken only, for composing numbers 8477 desc: spoken only, for composing numbers
8478 user: core 8478 user: core
8479 <source> 8479 <source>
8480 *: "" 8480 *: ""
8481 </source> 8481 </source>
8482 <dest> 8482 <dest>
8483 *: "" 8483 *: ""
8484 </dest> 8484 </dest>
8485 <voice> 8485 <voice>
8486 *: "pieci" 8486 *: "pieci"
8487 </voice> 8487 </voice>
8488</phrase> 8488</phrase>
8489<phrase> 8489<phrase>
8490 id: VOICE_SIX 8490 id: VOICE_SIX
8491 desc: spoken only, for composing numbers 8491 desc: spoken only, for composing numbers
8492 user: core 8492 user: core
8493 <source> 8493 <source>
8494 *: "" 8494 *: ""
8495 </source> 8495 </source>
8496 <dest> 8496 <dest>
8497 *: "" 8497 *: ""
8498 </dest> 8498 </dest>
8499 <voice> 8499 <voice>
8500 *: "seshi" 8500 *: "seshi"
8501 </voice> 8501 </voice>
8502</phrase> 8502</phrase>
8503<phrase> 8503<phrase>
8504 id: VOICE_SEVEN 8504 id: VOICE_SEVEN
8505 desc: spoken only, for composing numbers 8505 desc: spoken only, for composing numbers
8506 user: core 8506 user: core
8507 <source> 8507 <source>
8508 *: "" 8508 *: ""
8509 </source> 8509 </source>
8510 <dest> 8510 <dest>
8511 *: "" 8511 *: ""
8512 </dest> 8512 </dest>
8513 <voice> 8513 <voice>
8514 *: "septinji" 8514 *: "septinji"
8515 </voice> 8515 </voice>
8516</phrase> 8516</phrase>
8517<phrase> 8517<phrase>
8518 id: VOICE_EIGHT 8518 id: VOICE_EIGHT
8519 desc: spoken only, for composing numbers 8519 desc: spoken only, for composing numbers
8520 user: core 8520 user: core
8521 <source> 8521 <source>
8522 *: "" 8522 *: ""
8523 </source> 8523 </source>
8524 <dest> 8524 <dest>
8525 *: "" 8525 *: ""
8526 </dest> 8526 </dest>
8527 <voice> 8527 <voice>
8528 *: "astonji" 8528 *: "astonji"
8529 </voice> 8529 </voice>
8530</phrase> 8530</phrase>
8531<phrase> 8531<phrase>
8532 id: VOICE_NINE 8532 id: VOICE_NINE
8533 desc: spoken only, for composing numbers 8533 desc: spoken only, for composing numbers
8534 user: core 8534 user: core
8535 <source> 8535 <source>
8536 *: "" 8536 *: ""
8537 </source> 8537 </source>
8538 <dest> 8538 <dest>
8539 *: "" 8539 *: ""
8540 </dest> 8540 </dest>
8541 <voice> 8541 <voice>
8542 *: "devinji" 8542 *: "devinji"
8543 </voice> 8543 </voice>
8544</phrase> 8544</phrase>
8545<phrase> 8545<phrase>
8546 id: VOICE_TEN 8546 id: VOICE_TEN
8547 desc: spoken only, for composing numbers 8547 desc: spoken only, for composing numbers
8548 user: core 8548 user: core
8549 <source> 8549 <source>
8550 *: "" 8550 *: ""
8551 </source> 8551 </source>
8552 <dest> 8552 <dest>
8553 *: "" 8553 *: ""
8554 </dest> 8554 </dest>
8555 <voice> 8555 <voice>
8556 *: "desmit" 8556 *: "desmit"
8557 </voice> 8557 </voice>
8558</phrase> 8558</phrase>
8559<phrase> 8559<phrase>
8560 id: VOICE_ELEVEN 8560 id: VOICE_ELEVEN
8561 desc: spoken only, for composing numbers 8561 desc: spoken only, for composing numbers
8562 user: core 8562 user: core
8563 <source> 8563 <source>
8564 *: "" 8564 *: ""
8565 </source> 8565 </source>
8566 <dest> 8566 <dest>
8567 *: "" 8567 *: ""
8568 </dest> 8568 </dest>
8569 <voice> 8569 <voice>
8570 *: "vienpadsmit" 8570 *: "vienpadsmit"
8571 </voice> 8571 </voice>
8572</phrase> 8572</phrase>
8573<phrase> 8573<phrase>
8574 id: VOICE_TWELVE 8574 id: VOICE_TWELVE
8575 desc: spoken only, for composing numbers 8575 desc: spoken only, for composing numbers
8576 user: core 8576 user: core
8577 <source> 8577 <source>
8578 *: "" 8578 *: ""
8579 </source> 8579 </source>
8580 <dest> 8580 <dest>
8581 *: "" 8581 *: ""
8582 </dest> 8582 </dest>
8583 <voice> 8583 <voice>
8584 *: "divpadsmit" 8584 *: "divpadsmit"
8585 </voice> 8585 </voice>
8586</phrase> 8586</phrase>
8587<phrase> 8587<phrase>
8588 id: VOICE_THIRTEEN 8588 id: VOICE_THIRTEEN
8589 desc: spoken only, for composing numbers 8589 desc: spoken only, for composing numbers
8590 user: core 8590 user: core
8591 <source> 8591 <source>
8592 *: "" 8592 *: ""
8593 </source> 8593 </source>
8594 <dest> 8594 <dest>
8595 *: "" 8595 *: ""
8596 </dest> 8596 </dest>
8597 <voice> 8597 <voice>
8598 *: "triispadsmit" 8598 *: "triispadsmit"
8599 </voice> 8599 </voice>
8600</phrase> 8600</phrase>
8601<phrase> 8601<phrase>
8602 id: VOICE_FOURTEEN 8602 id: VOICE_FOURTEEN
8603 desc: spoken only, for composing numbers 8603 desc: spoken only, for composing numbers
8604 user: core 8604 user: core
8605 <source> 8605 <source>
8606 *: "" 8606 *: ""
8607 </source> 8607 </source>
8608 <dest> 8608 <dest>
8609 *: "" 8609 *: ""
8610 </dest> 8610 </dest>
8611 <voice> 8611 <voice>
8612 *: "chetrpadsmit" 8612 *: "chetrpadsmit"
8613 </voice> 8613 </voice>
8614</phrase> 8614</phrase>
8615<phrase> 8615<phrase>
8616 id: VOICE_FIFTEEN 8616 id: VOICE_FIFTEEN
8617 desc: spoken only, for composing numbers 8617 desc: spoken only, for composing numbers
8618 user: core 8618 user: core
8619 <source> 8619 <source>
8620 *: "" 8620 *: ""
8621 </source> 8621 </source>
8622 <dest> 8622 <dest>
8623 *: "" 8623 *: ""
8624 </dest> 8624 </dest>
8625 <voice> 8625 <voice>
8626 *: "piecpadsmit" 8626 *: "piecpadsmit"
8627 </voice> 8627 </voice>
8628</phrase> 8628</phrase>
8629<phrase> 8629<phrase>
8630 id: VOICE_SIXTEEN 8630 id: VOICE_SIXTEEN
8631 desc: spoken only, for composing numbers 8631 desc: spoken only, for composing numbers
8632 user: core 8632 user: core
8633 <source> 8633 <source>
8634 *: "" 8634 *: ""
8635 </source> 8635 </source>
8636 <dest> 8636 <dest>
8637 *: "" 8637 *: ""
8638 </dest> 8638 </dest>
8639 <voice> 8639 <voice>
8640 *: "seshpadsmit" 8640 *: "seshpadsmit"
8641 </voice> 8641 </voice>
8642</phrase> 8642</phrase>
8643<phrase> 8643<phrase>
8644 id: VOICE_SEVENTEEN 8644 id: VOICE_SEVENTEEN
8645 desc: spoken only, for composing numbers 8645 desc: spoken only, for composing numbers
8646 user: core 8646 user: core
8647 <source> 8647 <source>
8648 *: "" 8648 *: ""
8649 </source> 8649 </source>
8650 <dest> 8650 <dest>
8651 *: "" 8651 *: ""
8652 </dest> 8652 </dest>
8653 <voice> 8653 <voice>
8654 *: "septinjpadsmit" 8654 *: "septinjpadsmit"
8655 </voice> 8655 </voice>
8656</phrase> 8656</phrase>
8657<phrase> 8657<phrase>
8658 id: VOICE_EIGHTEEN 8658 id: VOICE_EIGHTEEN
8659 desc: spoken only, for composing numbers 8659 desc: spoken only, for composing numbers
8660 user: core 8660 user: core
8661 <source> 8661 <source>
8662 *: "" 8662 *: ""
8663 </source> 8663 </source>
8664 <dest> 8664 <dest>
8665 *: "" 8665 *: ""
8666 </dest> 8666 </dest>
8667 <voice> 8667 <voice>
8668 *: "astonjpadsmit" 8668 *: "astonjpadsmit"
8669 </voice> 8669 </voice>
8670</phrase> 8670</phrase>
8671<phrase> 8671<phrase>
8672 id: VOICE_NINETEEN 8672 id: VOICE_NINETEEN
8673 desc: spoken only, for composing numbers 8673 desc: spoken only, for composing numbers
8674 user: core 8674 user: core
8675 <source> 8675 <source>
8676 *: "" 8676 *: ""
8677 </source> 8677 </source>
8678 <dest> 8678 <dest>
8679 *: "" 8679 *: ""
8680 </dest> 8680 </dest>
8681 <voice> 8681 <voice>
8682 *: "devinjpadsmit" 8682 *: "devinjpadsmit"
8683 </voice> 8683 </voice>
8684</phrase> 8684</phrase>
8685<phrase> 8685<phrase>
8686 id: VOICE_TWENTY 8686 id: VOICE_TWENTY
8687 desc: spoken only, for composing numbers 8687 desc: spoken only, for composing numbers
8688 user: core 8688 user: core
8689 <source> 8689 <source>
8690 *: "" 8690 *: ""
8691 </source> 8691 </source>
8692 <dest> 8692 <dest>
8693 *: "" 8693 *: ""
8694 </dest> 8694 </dest>
8695 <voice> 8695 <voice>
8696 *: "divdesmit" 8696 *: "divdesmit"
8697 </voice> 8697 </voice>
8698</phrase> 8698</phrase>
8699<phrase> 8699<phrase>
8700 id: VOICE_THIRTY 8700 id: VOICE_THIRTY
8701 desc: spoken only, for composing numbers 8701 desc: spoken only, for composing numbers
8702 user: core 8702 user: core
8703 <source> 8703 <source>
8704 *: "" 8704 *: ""
8705 </source> 8705 </source>
8706 <dest> 8706 <dest>
8707 *: "" 8707 *: ""
8708 </dest> 8708 </dest>
8709 <voice> 8709 <voice>
8710 *: "triisdesmit" 8710 *: "triisdesmit"
8711 </voice> 8711 </voice>
8712</phrase> 8712</phrase>
8713<phrase> 8713<phrase>
8714 id: VOICE_FORTY 8714 id: VOICE_FORTY
8715 desc: spoken only, for composing numbers 8715 desc: spoken only, for composing numbers
8716 user: core 8716 user: core
8717 <source> 8717 <source>
8718 *: "" 8718 *: ""
8719 </source> 8719 </source>
8720 <dest> 8720 <dest>
8721 *: "" 8721 *: ""
8722 </dest> 8722 </dest>
8723 <voice> 8723 <voice>
8724 *: "chetrdesmit" 8724 *: "chetrdesmit"
8725 </voice> 8725 </voice>
8726</phrase> 8726</phrase>
8727<phrase> 8727<phrase>
8728 id: VOICE_FIFTY 8728 id: VOICE_FIFTY
8729 desc: spoken only, for composing numbers 8729 desc: spoken only, for composing numbers
8730 user: core 8730 user: core
8731 <source> 8731 <source>
8732 *: "" 8732 *: ""
8733 </source> 8733 </source>
8734 <dest> 8734 <dest>
8735 *: "" 8735 *: ""
8736 </dest> 8736 </dest>
8737 <voice> 8737 <voice>
8738 *: "piecdesmit" 8738 *: "piecdesmit"
8739 </voice> 8739 </voice>
8740</phrase> 8740</phrase>
8741<phrase> 8741<phrase>
8742 id: VOICE_SIXTY 8742 id: VOICE_SIXTY
8743 desc: spoken only, for composing numbers 8743 desc: spoken only, for composing numbers
8744 user: core 8744 user: core
8745 <source> 8745 <source>
8746 *: "" 8746 *: ""
8747 </source> 8747 </source>
8748 <dest> 8748 <dest>
8749 *: "" 8749 *: ""
8750 </dest> 8750 </dest>
8751 <voice> 8751 <voice>
8752 *: "seshdesmit" 8752 *: "seshdesmit"
8753 </voice> 8753 </voice>
8754</phrase> 8754</phrase>
8755<phrase> 8755<phrase>
8756 id: VOICE_SEVENTY 8756 id: VOICE_SEVENTY
8757 desc: spoken only, for composing numbers 8757 desc: spoken only, for composing numbers
8758 user: core 8758 user: core
8759 <source> 8759 <source>
8760 *: "" 8760 *: ""
8761 </source> 8761 </source>
8762 <dest> 8762 <dest>
8763 *: "" 8763 *: ""
8764 </dest> 8764 </dest>
8765 <voice> 8765 <voice>
8766 *: "septinjdesmit" 8766 *: "septinjdesmit"
8767 </voice> 8767 </voice>
8768</phrase> 8768</phrase>
8769<phrase> 8769<phrase>
8770 id: VOICE_EIGHTY 8770 id: VOICE_EIGHTY
8771 desc: spoken only, for composing numbers 8771 desc: spoken only, for composing numbers
8772 user: core 8772 user: core
8773 <source> 8773 <source>
8774 *: "" 8774 *: ""
8775 </source> 8775 </source>
8776 <dest> 8776 <dest>
8777 *: "" 8777 *: ""
8778 </dest> 8778 </dest>
8779 <voice> 8779 <voice>
8780 *: "astonjdesmit" 8780 *: "astonjdesmit"
8781 </voice> 8781 </voice>
8782</phrase> 8782</phrase>
8783<phrase> 8783<phrase>
8784 id: VOICE_NINETY 8784 id: VOICE_NINETY
8785 desc: spoken only, for composing numbers 8785 desc: spoken only, for composing numbers
8786 user: core 8786 user: core
8787 <source> 8787 <source>
8788 *: "" 8788 *: ""
8789 </source> 8789 </source>
8790 <dest> 8790 <dest>
8791 *: "" 8791 *: ""
8792 </dest> 8792 </dest>
8793 <voice> 8793 <voice>
8794 *: "devinjdesmit" 8794 *: "devinjdesmit"
8795 </voice> 8795 </voice>
8796</phrase> 8796</phrase>
8797<phrase> 8797<phrase>
8798 id: VOICE_HUNDRED 8798 id: VOICE_HUNDRED
8799 desc: spoken only, for composing numbers 8799 desc: spoken only, for composing numbers
8800 user: core 8800 user: core
8801 <source> 8801 <source>
8802 *: "" 8802 *: ""
8803 </source> 8803 </source>
8804 <dest> 8804 <dest>
8805 *: "" 8805 *: ""
8806 </dest> 8806 </dest>
8807 <voice> 8807 <voice>
8808 *: "simts" 8808 *: "simts"
8809 </voice> 8809 </voice>
8810</phrase> 8810</phrase>
8811<phrase> 8811<phrase>
8812 id: VOICE_THOUSAND 8812 id: VOICE_THOUSAND
8813 desc: spoken only, for composing numbers 8813 desc: spoken only, for composing numbers
8814 user: core 8814 user: core
8815 <source> 8815 <source>
8816 *: "" 8816 *: ""
8817 </source> 8817 </source>
8818 <dest> 8818 <dest>
8819 *: "" 8819 *: ""
8820 </dest> 8820 </dest>
8821 <voice> 8821 <voice>
8822 *: "tuukstotis" 8822 *: "tuukstotis"
8823 </voice> 8823 </voice>
8824</phrase> 8824</phrase>
8825<phrase> 8825<phrase>
8826 id: VOICE_MILLION 8826 id: VOICE_MILLION
8827 desc: spoken only, for composing numbers 8827 desc: spoken only, for composing numbers
8828 user: core 8828 user: core
8829 <source> 8829 <source>
8830 *: "" 8830 *: ""
8831 </source> 8831 </source>
8832 <dest> 8832 <dest>
8833 *: "" 8833 *: ""
8834 </dest> 8834 </dest>
8835 <voice> 8835 <voice>
8836 *: "miljons" 8836 *: "miljons"
8837 </voice> 8837 </voice>
8838</phrase> 8838</phrase>
8839<phrase> 8839<phrase>
8840 id: VOICE_BILLION 8840 id: VOICE_BILLION
8841 desc: spoken only, for composing numbers 8841 desc: spoken only, for composing numbers
8842 user: core 8842 user: core
8843 <source> 8843 <source>
8844 *: "" 8844 *: ""
8845 </source> 8845 </source>
8846 <dest> 8846 <dest>
8847 *: "" 8847 *: ""
8848 </dest> 8848 </dest>
8849 <voice> 8849 <voice>
8850 *: "miljards" 8850 *: "miljards"
8851 </voice> 8851 </voice>
8852</phrase> 8852</phrase>
8853<phrase> 8853<phrase>
8854 id: VOICE_MINUS 8854 id: VOICE_MINUS
8855 desc: spoken only, for composing numbers 8855 desc: spoken only, for composing numbers
8856 user: core 8856 user: core
8857 <source> 8857 <source>
8858 *: "" 8858 *: ""
8859 </source> 8859 </source>
8860 <dest> 8860 <dest>
8861 *: "" 8861 *: ""
8862 </dest> 8862 </dest>
8863 <voice> 8863 <voice>
8864 *: "miinus" 8864 *: "miinus"
8865 </voice> 8865 </voice>
8866</phrase> 8866</phrase>
8867<phrase> 8867<phrase>
8868 id: VOICE_PLUS 8868 id: VOICE_PLUS
8869 desc: spoken only, for composing numbers 8869 desc: spoken only, for composing numbers
8870 user: core 8870 user: core
8871 <source> 8871 <source>
8872 *: "" 8872 *: ""
8873 </source> 8873 </source>
8874 <dest> 8874 <dest>
8875 *: "" 8875 *: ""
8876 </dest> 8876 </dest>
8877 <voice> 8877 <voice>
8878 *: "plus" 8878 *: "plus"
8879 </voice> 8879 </voice>
8880</phrase> 8880</phrase>
8881<phrase> 8881<phrase>
8882 id: VOICE_MILLISECONDS 8882 id: VOICE_MILLISECONDS
8883 desc: spoken only, a unit postfix 8883 desc: spoken only, a unit postfix
8884 user: core 8884 user: core
8885 <source> 8885 <source>
8886 *: "" 8886 *: ""
8887 </source> 8887 </source>
8888 <dest> 8888 <dest>
8889 *: "" 8889 *: ""
8890 </dest> 8890 </dest>
8891 <voice> 8891 <voice>
8892 *: "milisekundes" 8892 *: "milisekundes"
8893 </voice> 8893 </voice>
8894</phrase> 8894</phrase>
8895<phrase> 8895<phrase>
8896 id: VOICE_SECOND 8896 id: VOICE_SECOND
8897 desc: spoken only, a unit postfix 8897 desc: spoken only, a unit postfix
8898 user: core 8898 user: core
8899 <source> 8899 <source>
8900 *: "" 8900 *: ""
8901 </source> 8901 </source>
8902 <dest> 8902 <dest>
8903 *: "" 8903 *: ""
8904 </dest> 8904 </dest>
8905 <voice> 8905 <voice>
8906 *: "sekunde" 8906 *: "sekunde"
8907 </voice> 8907 </voice>
8908</phrase> 8908</phrase>
8909<phrase> 8909<phrase>
8910 id: VOICE_SECONDS 8910 id: VOICE_SECONDS
8911 desc: spoken only, a unit postfix 8911 desc: spoken only, a unit postfix
8912 user: core 8912 user: core
8913 <source> 8913 <source>
8914 *: "" 8914 *: ""
8915 </source> 8915 </source>
8916 <dest> 8916 <dest>
8917 *: "" 8917 *: ""
8918 </dest> 8918 </dest>
8919 <voice> 8919 <voice>
8920 *: "sekundes" 8920 *: "sekundes"
8921 </voice> 8921 </voice>
8922</phrase> 8922</phrase>
8923<phrase> 8923<phrase>
8924 id: VOICE_MINUTE 8924 id: VOICE_MINUTE
8925 desc: spoken only, a unit postfix 8925 desc: spoken only, a unit postfix
8926 user: core 8926 user: core
8927 <source> 8927 <source>
8928 *: "" 8928 *: ""
8929 </source> 8929 </source>
8930 <dest> 8930 <dest>
8931 *: "" 8931 *: ""
8932 </dest> 8932 </dest>
8933 <voice> 8933 <voice>
8934 *: "minuute" 8934 *: "minuute"
8935 </voice> 8935 </voice>
8936</phrase> 8936</phrase>
8937<phrase> 8937<phrase>
8938 id: VOICE_MINUTES 8938 id: VOICE_MINUTES
8939 desc: spoken only, a unit postfix 8939 desc: spoken only, a unit postfix
8940 user: core 8940 user: core
8941 <source> 8941 <source>
8942 *: "" 8942 *: ""
8943 </source> 8943 </source>
8944 <dest> 8944 <dest>
8945 *: "" 8945 *: ""
8946 </dest> 8946 </dest>
8947 <voice> 8947 <voice>
8948 *: "minuutes" 8948 *: "minuutes"
8949 </voice> 8949 </voice>
8950</phrase> 8950</phrase>
8951<phrase> 8951<phrase>
8952 id: VOICE_HOUR 8952 id: VOICE_HOUR
8953 desc: spoken only, a unit postfix 8953 desc: spoken only, a unit postfix
8954 user: core 8954 user: core
8955 <source> 8955 <source>
8956 *: "" 8956 *: ""
8957 </source> 8957 </source>
8958 <dest> 8958 <dest>
8959 *: "" 8959 *: ""
8960 </dest> 8960 </dest>
8961 <voice> 8961 <voice>
8962 *: "stunda" 8962 *: "stunda"
8963 </voice> 8963 </voice>
8964</phrase> 8964</phrase>
8965<phrase> 8965<phrase>
8966 id: VOICE_HOURS 8966 id: VOICE_HOURS
8967 desc: spoken only, a unit postfix 8967 desc: spoken only, a unit postfix
8968 user: core 8968 user: core
8969 <source> 8969 <source>
8970 *: "" 8970 *: ""
8971 </source> 8971 </source>
8972 <dest> 8972 <dest>
8973 *: "" 8973 *: ""
8974 </dest> 8974 </dest>
8975 <voice> 8975 <voice>
8976 *: "stundas" 8976 *: "stundas"
8977 </voice> 8977 </voice>
8978</phrase> 8978</phrase>
8979<phrase> 8979<phrase>
8980 id: VOICE_KHZ 8980 id: VOICE_KHZ
8981 desc: spoken only, a unit postfix 8981 desc: spoken only, a unit postfix
8982 user: core 8982 user: core
8983 <source> 8983 <source>
8984 *: "" 8984 *: ""
8985 </source> 8985 </source>
8986 <dest> 8986 <dest>
8987 *: "" 8987 *: ""
8988 </dest> 8988 </dest>
8989 <voice> 8989 <voice>
8990 *: "kilohercs" 8990 *: "kilohercs"
8991 </voice> 8991 </voice>
8992</phrase> 8992</phrase>
8993<phrase> 8993<phrase>
8994 id: VOICE_DB 8994 id: VOICE_DB
8995 desc: spoken only, a unit postfix 8995 desc: spoken only, a unit postfix
8996 user: core 8996 user: core
8997 <source> 8997 <source>
8998 *: "" 8998 *: ""
8999 </source> 8999 </source>
9000 <dest> 9000 <dest>
9001 *: "" 9001 *: ""
9002 </dest> 9002 </dest>
9003 <voice> 9003 <voice>
9004 *: "decibels" 9004 *: "decibels"
9005 </voice> 9005 </voice>
9006</phrase> 9006</phrase>
9007<phrase> 9007<phrase>
9008 id: VOICE_PERCENT 9008 id: VOICE_PERCENT
9009 desc: spoken only, a unit postfix 9009 desc: spoken only, a unit postfix
9010 user: core 9010 user: core
9011 <source> 9011 <source>
9012 *: "" 9012 *: ""
9013 </source> 9013 </source>
9014 <dest> 9014 <dest>
9015 *: "" 9015 *: ""
9016 </dest> 9016 </dest>
9017 <voice> 9017 <voice>
9018 *: "procents" 9018 *: "procents"
9019 </voice> 9019 </voice>
9020</phrase> 9020</phrase>
9021<phrase> 9021<phrase>
9022 id: VOICE_MILLIAMPHOURS 9022 id: VOICE_MILLIAMPHOURS
9023 desc: spoken only, a unit postfix 9023 desc: spoken only, a unit postfix
9024 user: core 9024 user: core
9025 <source> 9025 <source>
9026 *: "" 9026 *: ""
9027 </source> 9027 </source>
9028 <dest> 9028 <dest>
9029 *: "" 9029 *: ""
9030 </dest> 9030 </dest>
9031 <voice> 9031 <voice>
9032 *: "mili-ampeer stundas" 9032 *: "mili-ampeer stundas"
9033 </voice> 9033 </voice>
9034</phrase> 9034</phrase>
9035<phrase> 9035<phrase>
9036 id: VOICE_PIXEL 9036 id: VOICE_PIXEL
9037 desc: spoken only, a unit postfix 9037 desc: spoken only, a unit postfix
9038 user: core 9038 user: core
9039 <source> 9039 <source>
9040 *: "" 9040 *: ""
9041 </source> 9041 </source>
9042 <dest> 9042 <dest>
9043 *: "" 9043 *: ""
9044 </dest> 9044 </dest>
9045 <voice> 9045 <voice>
9046 *: "pikselis" 9046 *: "pikselis"
9047 </voice> 9047 </voice>
9048</phrase> 9048</phrase>
9049<phrase> 9049<phrase>
9050 id: VOICE_PER_SEC 9050 id: VOICE_PER_SEC
9051 desc: spoken only, a unit postfix 9051 desc: spoken only, a unit postfix
9052 user: core 9052 user: core
9053 <source> 9053 <source>
9054 *: "" 9054 *: ""
9055 </source> 9055 </source>
9056 <dest> 9056 <dest>
9057 *: "" 9057 *: ""
9058 </dest> 9058 </dest>
9059 <voice> 9059 <voice>
9060 *: "sekundee" 9060 *: "sekundee"
9061 </voice> 9061 </voice>
9062</phrase> 9062</phrase>
9063<phrase> 9063<phrase>
9064 id: VOICE_HERTZ 9064 id: VOICE_HERTZ
9065 desc: spoken only, a unit postfix 9065 desc: spoken only, a unit postfix
9066 user: core 9066 user: core
9067 <source> 9067 <source>
9068 *: "" 9068 *: ""
9069 </source> 9069 </source>
9070 <dest> 9070 <dest>
9071 *: "" 9071 *: ""
9072 </dest> 9072 </dest>
9073 <voice> 9073 <voice>
9074 *: "hercs" 9074 *: "hercs"
9075 </voice> 9075 </voice>
9076</phrase> 9076</phrase>
9077<phrase> 9077<phrase>
9078 id: VOICE_KBIT_PER_SEC 9078 id: VOICE_KBIT_PER_SEC
9079 desc: spoken only, a unit postfix 9079 desc: spoken only, a unit postfix
9080 user: core 9080 user: core
9081 <source> 9081 <source>
9082 *: "" 9082 *: ""
9083 </source> 9083 </source>
9084 <dest> 9084 <dest>
9085 *: "" 9085 *: ""
9086 </dest> 9086 </dest>
9087 <voice> 9087 <voice>
9088 *: "kilobiti sekundee" 9088 *: "kilobiti sekundee"
9089 </voice> 9089 </voice>
9090</phrase> 9090</phrase>
9091<phrase> 9091<phrase>
9092 id: VOICE_CHAR_A 9092 id: VOICE_CHAR_A
9093 desc: spoken only, for spelling 9093 desc: spoken only, for spelling
9094 user: core 9094 user: core
9095 <source> 9095 <source>
9096 *: "" 9096 *: ""
9097 </source> 9097 </source>
9098 <dest> 9098 <dest>
9099 *: "" 9099 *: ""
9100 </dest> 9100 </dest>
9101 <voice> 9101 <voice>
9102 *: "aa" 9102 *: "aa"
9103 </voice> 9103 </voice>
9104</phrase> 9104</phrase>
9105<phrase> 9105<phrase>
9106 id: VOICE_CHAR_B 9106 id: VOICE_CHAR_B
9107 desc: spoken only, for spelling 9107 desc: spoken only, for spelling
9108 user: core 9108 user: core
9109 <source> 9109 <source>
9110 *: "" 9110 *: ""
9111 </source> 9111 </source>
9112 <dest> 9112 <dest>
9113 *: "" 9113 *: ""
9114 </dest> 9114 </dest>
9115 <voice> 9115 <voice>
9116 *: "bee" 9116 *: "bee"
9117 </voice> 9117 </voice>
9118</phrase> 9118</phrase>
9119<phrase> 9119<phrase>
9120 id: VOICE_CHAR_C 9120 id: VOICE_CHAR_C
9121 desc: spoken only, for spelling 9121 desc: spoken only, for spelling
9122 user: core 9122 user: core
9123 <source> 9123 <source>
9124 *: "" 9124 *: ""
9125 </source> 9125 </source>
9126 <dest> 9126 <dest>
9127 *: "" 9127 *: ""
9128 </dest> 9128 </dest>
9129 <voice> 9129 <voice>
9130 *: "cee" 9130 *: "cee"
9131 </voice> 9131 </voice>
9132</phrase> 9132</phrase>
9133<phrase> 9133<phrase>
9134 id: VOICE_CHAR_D 9134 id: VOICE_CHAR_D
9135 desc: spoken only, for spelling 9135 desc: spoken only, for spelling
9136 user: core 9136 user: core
9137 <source> 9137 <source>
9138 *: "" 9138 *: ""
9139 </source> 9139 </source>
9140 <dest> 9140 <dest>
9141 *: "" 9141 *: ""
9142 </dest> 9142 </dest>
9143 <voice> 9143 <voice>
9144 *: "dee" 9144 *: "dee"
9145 </voice> 9145 </voice>
9146</phrase> 9146</phrase>
9147<phrase> 9147<phrase>
9148 id: VOICE_CHAR_E 9148 id: VOICE_CHAR_E
9149 desc: spoken only, for spelling 9149 desc: spoken only, for spelling
9150 user: core 9150 user: core
9151 <source> 9151 <source>
9152 *: "" 9152 *: ""
9153 </source> 9153 </source>
9154 <dest> 9154 <dest>
9155 *: "" 9155 *: ""
9156 </dest> 9156 </dest>
9157 <voice> 9157 <voice>
9158 *: "ee" 9158 *: "ee"
9159 </voice> 9159 </voice>
9160</phrase> 9160</phrase>
9161<phrase> 9161<phrase>
9162 id: VOICE_CHAR_F 9162 id: VOICE_CHAR_F
9163 desc: spoken only, for spelling 9163 desc: spoken only, for spelling
9164 user: core 9164 user: core
9165 <source> 9165 <source>
9166 *: "" 9166 *: ""
9167 </source> 9167 </source>
9168 <dest> 9168 <dest>
9169 *: "" 9169 *: ""
9170 </dest> 9170 </dest>
9171 <voice> 9171 <voice>
9172 *: "ef" 9172 *: "ef"
9173 </voice> 9173 </voice>
9174</phrase> 9174</phrase>
9175<phrase> 9175<phrase>
9176 id: VOICE_CHAR_G 9176 id: VOICE_CHAR_G
9177 desc: spoken only, for spelling 9177 desc: spoken only, for spelling
9178 user: core 9178 user: core
9179 <source> 9179 <source>
9180 *: "" 9180 *: ""
9181 </source> 9181 </source>
9182 <dest> 9182 <dest>
9183 *: "" 9183 *: ""
9184 </dest> 9184 </dest>
9185 <voice> 9185 <voice>
9186 *: "gaa" 9186 *: "gaa"
9187 </voice> 9187 </voice>
9188</phrase> 9188</phrase>
9189<phrase> 9189<phrase>
9190 id: VOICE_CHAR_H 9190 id: VOICE_CHAR_H
9191 desc: spoken only, for spelling 9191 desc: spoken only, for spelling
9192 user: core 9192 user: core
9193 <source> 9193 <source>
9194 *: "" 9194 *: ""
9195 </source> 9195 </source>
9196 <dest> 9196 <dest>
9197 *: "" 9197 *: ""
9198 </dest> 9198 </dest>
9199 <voice> 9199 <voice>
9200 *: "haa" 9200 *: "haa"
9201 </voice> 9201 </voice>
9202</phrase> 9202</phrase>
9203<phrase> 9203<phrase>
9204 id: VOICE_CHAR_I 9204 id: VOICE_CHAR_I
9205 desc: spoken only, for spelling 9205 desc: spoken only, for spelling
9206 user: core 9206 user: core
9207 <source> 9207 <source>
9208 *: "" 9208 *: ""
9209 </source> 9209 </source>
9210 <dest> 9210 <dest>
9211 *: "" 9211 *: ""
9212 </dest> 9212 </dest>
9213 <voice> 9213 <voice>
9214 *: "ii" 9214 *: "ii"
9215 </voice> 9215 </voice>
9216</phrase> 9216</phrase>
9217<phrase> 9217<phrase>
9218 id: VOICE_CHAR_J 9218 id: VOICE_CHAR_J
9219 desc: spoken only, for spelling 9219 desc: spoken only, for spelling
9220 user: core 9220 user: core
9221 <source> 9221 <source>
9222 *: "" 9222 *: ""
9223 </source> 9223 </source>
9224 <dest> 9224 <dest>
9225 *: "" 9225 *: ""
9226 </dest> 9226 </dest>
9227 <voice> 9227 <voice>
9228 *: "jee" 9228 *: "jee"
9229 </voice> 9229 </voice>
9230</phrase> 9230</phrase>
9231<phrase> 9231<phrase>
9232 id: VOICE_CHAR_K 9232 id: VOICE_CHAR_K
9233 desc: spoken only, for spelling 9233 desc: spoken only, for spelling
9234 user: core 9234 user: core
9235 <source> 9235 <source>
9236 *: "" 9236 *: ""
9237 </source> 9237 </source>
9238 <dest> 9238 <dest>
9239 *: "" 9239 *: ""
9240 </dest> 9240 </dest>
9241 <voice> 9241 <voice>
9242 *: "kaa" 9242 *: "kaa"
9243 </voice> 9243 </voice>
9244</phrase> 9244</phrase>
9245<phrase> 9245<phrase>
9246 id: VOICE_CHAR_L 9246 id: VOICE_CHAR_L
9247 desc: spoken only, for spelling 9247 desc: spoken only, for spelling
9248 user: core 9248 user: core
9249 <source> 9249 <source>
9250 *: "" 9250 *: ""
9251 </source> 9251 </source>
9252 <dest> 9252 <dest>
9253 *: "" 9253 *: ""
9254 </dest> 9254 </dest>
9255 <voice> 9255 <voice>
9256 *: "el" 9256 *: "el"
9257 </voice> 9257 </voice>
9258</phrase> 9258</phrase>
9259<phrase> 9259<phrase>
9260 id: VOICE_CHAR_M 9260 id: VOICE_CHAR_M
9261 desc: spoken only, for spelling 9261 desc: spoken only, for spelling
9262 user: core 9262 user: core
9263 <source> 9263 <source>
9264 *: "" 9264 *: ""
9265 </source> 9265 </source>
9266 <dest> 9266 <dest>
9267 *: "" 9267 *: ""
9268 </dest> 9268 </dest>
9269 <voice> 9269 <voice>
9270 *: "em" 9270 *: "em"
9271 </voice> 9271 </voice>
9272</phrase> 9272</phrase>
9273<phrase> 9273<phrase>
9274 id: VOICE_CHAR_N 9274 id: VOICE_CHAR_N
9275 desc: spoken only, for spelling 9275 desc: spoken only, for spelling
9276 user: core 9276 user: core
9277 <source> 9277 <source>
9278 *: "" 9278 *: ""
9279 </source> 9279 </source>
9280 <dest> 9280 <dest>
9281 *: "" 9281 *: ""
9282 </dest> 9282 </dest>
9283 <voice> 9283 <voice>
9284 *: "en" 9284 *: "en"
9285 </voice> 9285 </voice>
9286</phrase> 9286</phrase>
9287<phrase> 9287<phrase>
9288 id: VOICE_CHAR_O 9288 id: VOICE_CHAR_O
9289 desc: spoken only, for spelling 9289 desc: spoken only, for spelling
9290 user: core 9290 user: core
9291 <source> 9291 <source>
9292 *: "" 9292 *: ""
9293 </source> 9293 </source>
9294 <dest> 9294 <dest>
9295 *: "" 9295 *: ""
9296 </dest> 9296 </dest>
9297 <voice> 9297 <voice>
9298 *: "o" 9298 *: "o"
9299 </voice> 9299 </voice>
9300</phrase> 9300</phrase>
9301<phrase> 9301<phrase>
9302 id: VOICE_CHAR_P 9302 id: VOICE_CHAR_P
9303 desc: spoken only, for spelling 9303 desc: spoken only, for spelling
9304 user: core 9304 user: core
9305 <source> 9305 <source>
9306 *: "" 9306 *: ""
9307 </source> 9307 </source>
9308 <dest> 9308 <dest>
9309 *: "" 9309 *: ""
9310 </dest> 9310 </dest>
9311 <voice> 9311 <voice>
9312 *: "pee" 9312 *: "pee"
9313 </voice> 9313 </voice>
9314</phrase> 9314</phrase>
9315<phrase> 9315<phrase>
9316 id: VOICE_CHAR_Q 9316 id: VOICE_CHAR_Q
9317 desc: spoken only, for spelling 9317 desc: spoken only, for spelling
9318 user: core 9318 user: core
9319 <source> 9319 <source>
9320 *: "" 9320 *: ""
9321 </source> 9321 </source>
9322 <dest> 9322 <dest>
9323 *: "" 9323 *: ""
9324 </dest> 9324 </dest>
9325 <voice> 9325 <voice>
9326 *: "kjuu" 9326 *: "kjuu"
9327 </voice> 9327 </voice>
9328</phrase> 9328</phrase>
9329<phrase> 9329<phrase>
9330 id: VOICE_CHAR_R 9330 id: VOICE_CHAR_R
9331 desc: spoken only, for spelling 9331 desc: spoken only, for spelling
9332 user: core 9332 user: core
9333 <source> 9333 <source>
9334 *: "" 9334 *: ""
9335 </source> 9335 </source>
9336 <dest> 9336 <dest>
9337 *: "" 9337 *: ""
9338 </dest> 9338 </dest>
9339 <voice> 9339 <voice>
9340 *: "er" 9340 *: "er"
9341 </voice> 9341 </voice>
9342</phrase> 9342</phrase>
9343<phrase> 9343<phrase>
9344 id: VOICE_CHAR_S 9344 id: VOICE_CHAR_S
9345 desc: spoken only, for spelling 9345 desc: spoken only, for spelling
9346 user: core 9346 user: core
9347 <source> 9347 <source>
9348 *: "" 9348 *: ""
9349 </source> 9349 </source>
9350 <dest> 9350 <dest>
9351 *: "" 9351 *: ""
9352 </dest> 9352 </dest>
9353 <voice> 9353 <voice>
9354 *: "es" 9354 *: "es"
9355 </voice> 9355 </voice>
9356</phrase> 9356</phrase>
9357<phrase> 9357<phrase>
9358 id: VOICE_CHAR_T 9358 id: VOICE_CHAR_T
9359 desc: spoken only, for spelling 9359 desc: spoken only, for spelling
9360 user: core 9360 user: core
9361 <source> 9361 <source>
9362 *: "" 9362 *: ""
9363 </source> 9363 </source>
9364 <dest> 9364 <dest>
9365 *: "" 9365 *: ""
9366 </dest> 9366 </dest>
9367 <voice> 9367 <voice>
9368 *: "tee" 9368 *: "tee"
9369 </voice> 9369 </voice>
9370</phrase> 9370</phrase>
9371<phrase> 9371<phrase>
9372 id: VOICE_CHAR_U 9372 id: VOICE_CHAR_U
9373 desc: spoken only, for spelling 9373 desc: spoken only, for spelling
9374 user: core 9374 user: core
9375 <source> 9375 <source>
9376 *: "" 9376 *: ""
9377 </source> 9377 </source>
9378 <dest> 9378 <dest>
9379 *: "" 9379 *: ""
9380 </dest> 9380 </dest>
9381 <voice> 9381 <voice>
9382 *: "uu" 9382 *: "uu"
9383 </voice> 9383 </voice>
9384</phrase> 9384</phrase>
9385<phrase> 9385<phrase>
9386 id: VOICE_CHAR_V 9386 id: VOICE_CHAR_V
9387 desc: spoken only, for spelling 9387 desc: spoken only, for spelling
9388 user: core 9388 user: core
9389 <source> 9389 <source>
9390 *: "" 9390 *: ""
9391 </source> 9391 </source>
9392 <dest> 9392 <dest>
9393 *: "" 9393 *: ""
9394 </dest> 9394 </dest>
9395 <voice> 9395 <voice>
9396 *: "vee" 9396 *: "vee"
9397 </voice> 9397 </voice>
9398</phrase> 9398</phrase>
9399<phrase> 9399<phrase>
9400 id: VOICE_CHAR_W 9400 id: VOICE_CHAR_W
9401 desc: spoken only, for spelling 9401 desc: spoken only, for spelling
9402 user: core 9402 user: core
9403 <source> 9403 <source>
9404 *: "" 9404 *: ""
9405 </source> 9405 </source>
9406 <dest> 9406 <dest>
9407 *: "" 9407 *: ""
9408 </dest> 9408 </dest>
9409 <voice> 9409 <voice>
9410 *: "dabljuu" 9410 *: "dabljuu"
9411 </voice> 9411 </voice>
9412</phrase> 9412</phrase>
9413<phrase> 9413<phrase>
9414 id: VOICE_CHAR_X 9414 id: VOICE_CHAR_X
9415 desc: spoken only, for spelling 9415 desc: spoken only, for spelling
9416 user: core 9416 user: core
9417 <source> 9417 <source>
9418 *: "" 9418 *: ""
9419 </source> 9419 </source>
9420 <dest> 9420 <dest>
9421 *: "" 9421 *: ""
9422 </dest> 9422 </dest>
9423 <voice> 9423 <voice>
9424 *: "iks" 9424 *: "iks"
9425 </voice> 9425 </voice>
9426</phrase> 9426</phrase>
9427<phrase> 9427<phrase>
9428 id: VOICE_CHAR_Y 9428 id: VOICE_CHAR_Y
9429 desc: spoken only, for spelling 9429 desc: spoken only, for spelling
9430 user: core 9430 user: core
9431 <source> 9431 <source>
9432 *: "" 9432 *: ""
9433 </source> 9433 </source>
9434 <dest> 9434 <dest>
9435 *: "" 9435 *: ""
9436 </dest> 9436 </dest>
9437 <voice> 9437 <voice>
9438 *: "igrek" 9438 *: "igrek"
9439 </voice> 9439 </voice>
9440</phrase> 9440</phrase>
9441<phrase> 9441<phrase>
9442 id: VOICE_CHAR_Z 9442 id: VOICE_CHAR_Z
9443 desc: spoken only, for spelling 9443 desc: spoken only, for spelling
9444 user: core 9444 user: core
9445 <source> 9445 <source>
9446 *: "" 9446 *: ""
9447 </source> 9447 </source>
9448 <dest> 9448 <dest>
9449 *: "" 9449 *: ""
9450 </dest> 9450 </dest>
9451 <voice> 9451 <voice>
9452 *: "zed" 9452 *: "zed"
9453 </voice> 9453 </voice>
9454</phrase> 9454</phrase>
9455<phrase> 9455<phrase>
9456 id: VOICE_DOT 9456 id: VOICE_DOT
9457 desc: spoken only, for spelling 9457 desc: spoken only, for spelling
9458 user: core 9458 user: core
9459 <source> 9459 <source>
9460 *: "" 9460 *: ""
9461 </source> 9461 </source>
9462 <dest> 9462 <dest>
9463 *: "" 9463 *: ""
9464 </dest> 9464 </dest>
9465 <voice> 9465 <voice>
9466 *: "punkts" 9466 *: "punkts"
9467 </voice> 9467 </voice>
9468</phrase> 9468</phrase>
9469<phrase> 9469<phrase>
9470 id: VOICE_PAUSE 9470 id: VOICE_PAUSE
9471 desc: spoken only, for spelling, a split second of silence (difficult to author) 9471 desc: spoken only, for spelling, a split second of silence (difficult to author)
9472 user: core 9472 user: core
9473 <source> 9473 <source>
9474 *: "" 9474 *: ""
9475 </source> 9475 </source>
9476 <dest> 9476 <dest>
9477 *: "" 9477 *: ""
9478 </dest> 9478 </dest>
9479 <voice> 9479 <voice>
9480 *: " " 9480 *: " "
9481 </voice> 9481 </voice>
9482</phrase> 9482</phrase>
9483<phrase> 9483<phrase>
9484 id: VOICE_FILE 9484 id: VOICE_FILE
9485 desc: spoken only, prefix for file number 9485 desc: spoken only, prefix for file number
9486 user: core 9486 user: core
9487 <source> 9487 <source>
9488 *: "" 9488 *: ""
9489 </source> 9489 </source>
9490 <dest> 9490 <dest>
9491 *: "" 9491 *: ""
9492 </dest> 9492 </dest>
9493 <voice> 9493 <voice>
9494 *: "fails" 9494 *: "fails"
9495 </voice> 9495 </voice>
9496</phrase> 9496</phrase>
9497<phrase> 9497<phrase>
9498 id: VOICE_DIR 9498 id: VOICE_DIR
9499 desc: spoken only, prefix for directory number 9499 desc: spoken only, prefix for directory number
9500 user: core 9500 user: core
9501 <source> 9501 <source>
9502 *: "" 9502 *: ""
9503 </source> 9503 </source>
9504 <dest> 9504 <dest>
9505 *: "" 9505 *: ""
9506 </dest> 9506 </dest>
9507 <voice> 9507 <voice>
9508 *: "mape" 9508 *: "mape"
9509 </voice> 9509 </voice>
9510</phrase> 9510</phrase>
9511<phrase> 9511<phrase>
9512 id: VOICE_EXT_MPA 9512 id: VOICE_EXT_MPA
9513 desc: spoken only, for file extension 9513 desc: spoken only, for file extension
9514 user: core 9514 user: core
9515 <source> 9515 <source>
9516 *: "" 9516 *: ""
9517 </source> 9517 </source>
9518 <dest> 9518 <dest>
9519 *: "" 9519 *: ""
9520 </dest> 9520 </dest>
9521 <voice> 9521 <voice>
9522 *: "audio" 9522 *: "audio"
9523 </voice> 9523 </voice>
9524</phrase> 9524</phrase>
9525<phrase> 9525<phrase>
9526 id: VOICE_EXT_CFG 9526 id: VOICE_EXT_CFG
9527 desc: spoken only, for file extension 9527 desc: spoken only, for file extension
9528 user: core 9528 user: core
9529 <source> 9529 <source>
9530 *: "" 9530 *: ""
9531 </source> 9531 </source>
9532 <dest> 9532 <dest>
9533 *: "" 9533 *: ""
9534 </dest> 9534 </dest>
9535 <voice> 9535 <voice>
9536 *: "konfiguraacija" 9536 *: "konfiguraacija"
9537 </voice> 9537 </voice>
9538</phrase> 9538</phrase>
9539<phrase> 9539<phrase>
9540 id: VOICE_EXT_WPS 9540 id: VOICE_EXT_WPS
9541 desc: spoken only, for file extension 9541 desc: spoken only, for file extension
9542 user: core 9542 user: core
9543 <source> 9543 <source>
9544 *: "" 9544 *: ""
9545 </source> 9545 </source>
9546 <dest> 9546 <dest>
9547 *: "" 9547 *: ""
9548 </dest> 9548 </dest>
9549 <voice> 9549 <voice>
9550 *: "atskanjoshanas ekraans" 9550 *: "atskanjoshanas ekraans"
9551 </voice> 9551 </voice>
9552</phrase> 9552</phrase>
9553<phrase> 9553<phrase>
9554 id: VOICE_EXT_ROCK 9554 id: VOICE_EXT_ROCK
9555 desc: spoken only, for file extension 9555 desc: spoken only, for file extension
9556 user: core 9556 user: core
9557 <source> 9557 <source>
9558 *: "" 9558 *: ""
9559 </source> 9559 </source>
9560 <dest> 9560 <dest>
9561 *: "" 9561 *: ""
9562 </dest> 9562 </dest>
9563 <voice> 9563 <voice>
9564 *: "spraudnis" 9564 *: "spraudnis"
9565 </voice> 9565 </voice>
9566</phrase> 9566</phrase>
9567<phrase> 9567<phrase>
9568 id: VOICE_EXT_FONT 9568 id: VOICE_EXT_FONT
9569 desc: spoken only, for file extension 9569 desc: spoken only, for file extension
9570 user: core 9570 user: core
9571 <source> 9571 <source>
9572 *: "" 9572 *: ""
9573 </source> 9573 </source>
9574 <dest> 9574 <dest>
9575 *: "" 9575 *: ""
9576 </dest> 9576 </dest>
9577 <voice> 9577 <voice>
9578 *: "fonts" 9578 *: "fonts"
9579 </voice> 9579 </voice>
9580</phrase> 9580</phrase>
9581<phrase> 9581<phrase>
9582 id: VOICE_EXT_BMARK 9582 id: VOICE_EXT_BMARK
9583 desc: spoken only, for file extension and the word in general 9583 desc: spoken only, for file extension and the word in general
9584 user: core 9584 user: core
9585 <source> 9585 <source>
9586 *: "" 9586 *: ""
9587 </source> 9587 </source>
9588 <dest> 9588 <dest>
9589 *: "" 9589 *: ""
9590 </dest> 9590 </dest>
9591 <voice> 9591 <voice>
9592 *: "graamatziime" 9592 *: "graamatziime"
9593 </voice> 9593 </voice>
9594</phrase> 9594</phrase>
9595<phrase> 9595<phrase>
9596 id: VOICE_EXT_AJZ 9596 id: VOICE_EXT_AJZ
9597 desc: spoken only, for file extension 9597 desc: spoken only, for file extension
9598 user: core 9598 user: core
9599 <source> 9599 <source>
9600 *: "" 9600 *: ""
9601 </source> 9601 </source>
9602 <dest> 9602 <dest>
9603 *: "" 9603 *: ""
9604 </dest> 9604 </dest>
9605 <voice> 9605 <voice>
9606 *: "programmatuura" 9606 *: "programmatuura"
9607 </voice> 9607 </voice>
9608</phrase> 9608</phrase>
9609<phrase> 9609<phrase>
9610 id: VOICE_EXT_RWPS 9610 id: VOICE_EXT_RWPS
9611 desc: spoken only, for file extension 9611 desc: spoken only, for file extension
9612 user: core 9612 user: core
9613 <source> 9613 <source>
9614 *: none 9614 *: none
9615 remote: "" 9615 remote: ""
9616 </source> 9616 </source>
9617 <dest> 9617 <dest>
9618 *: none 9618 *: none
9619 remote: "" 9619 remote: ""
9620 </dest> 9620 </dest>
9621 <voice> 9621 <voice>
9622 *: none 9622 *: none
9623 remote: "pults atskanjoshanas ekraans" 9623 remote: "pults atskanjoshanas ekraans"
9624 </voice> 9624 </voice>
9625</phrase> 9625</phrase>
9626<phrase> 9626<phrase>
9627 id: VOICE_EXT_KBD 9627 id: VOICE_EXT_KBD
9628 desc: spoken only, for file extension 9628 desc: spoken only, for file extension
9629 user: core 9629 user: core
9630 <source> 9630 <source>
9631 *: "" 9631 *: ""
9632 </source> 9632 </source>
9633 <dest> 9633 <dest>
9634 *: "" 9634 *: ""
9635 </dest> 9635 </dest>
9636 <voice> 9636 <voice>
9637 *: "klaviatuura" 9637 *: "klaviatuura"
9638 </voice> 9638 </voice>
9639</phrase> 9639</phrase>
9640<phrase> 9640<phrase>
9641 id: VOICE_EXT_CUESHEET 9641 id: VOICE_EXT_CUESHEET
9642 desc: 9642 desc:
9643 user: core 9643 user: core
9644 <source> 9644 <source>
9645 *: "" 9645 *: ""
9646 </source> 9646 </source>
9647 <dest> 9647 <dest>
9648 *: "" 9648 *: ""
9649 </dest> 9649 </dest>
9650 <voice> 9650 <voice>
9651 *: "cue fails" 9651 *: "cue fails"
9652 </voice> 9652 </voice>
9653</phrase> 9653</phrase>
9654<phrase> 9654<phrase>
9655 id: VOICE_BOOKMARK_SELECT_INDEX_TEXT 9655 id: VOICE_BOOKMARK_SELECT_INDEX_TEXT
9656 desc: voice only, used in the bookmark list to label index number 9656 desc: voice only, used in the bookmark list to label index number
9657 user: core 9657 user: core
9658 <source> 9658 <source>
9659 *: "" 9659 *: ""
9660 </source> 9660 </source>
9661 <dest> 9661 <dest>
9662 *: "" 9662 *: ""
9663 </dest> 9663 </dest>
9664 <voice> 9664 <voice>
9665 *: "indekss" 9665 *: "indekss"
9666 </voice> 9666 </voice>
9667</phrase> 9667</phrase>
9668<phrase> 9668<phrase>
9669 id: VOICE_CURRENT_TIME 9669 id: VOICE_CURRENT_TIME
9670 desc: spoken only, for wall clock announce 9670 desc: spoken only, for wall clock announce
9671 user: core 9671 user: core
9672 <source> 9672 <source>
9673 *: none 9673 *: none
9674 rtc: "" 9674 rtc: ""
9675 </source> 9675 </source>
9676 <dest> 9676 <dest>
9677 *: none 9677 *: none
9678 rtc: "" 9678 rtc: ""
9679 </dest> 9679 </dest>
9680 <voice> 9680 <voice>
9681 *: none 9681 *: none
9682 rtc: "Patreizeejais laiks:" 9682 rtc: "Patreizeejais laiks:"
9683 </voice> 9683 </voice>
9684</phrase> 9684</phrase>
9685<phrase> 9685<phrase>
9686 id: LANG_SYSFONT_EQUALIZER_EDIT_MODE 9686 id: LANG_SYSFONT_EQUALIZER_EDIT_MODE
9687 desc: in the equalizer settings menu 9687 desc: in the equalizer settings menu
9688 user: core 9688 user: core
9689 <source> 9689 <source>
9690 *: none 9690 *: none
9691 swcodec: "Edit mode: %s %s" 9691 swcodec: "Edit mode: %s %s"
9692 </source> 9692 </source>
9693 <dest> 9693 <dest>
9694 *: none 9694 *: none
9695 swcodec: "Izmainit: %s %s" 9695 swcodec: "Izmainit: %s %s"
9696 </dest> 9696 </dest>
9697 <voice> 9697 <voice>
9698 *: none 9698 *: none
9699 swcodec: "" 9699 swcodec: ""
9700 </voice> 9700 </voice>
9701</phrase> 9701</phrase>
9702<phrase> 9702<phrase>
9703 id: LANG_SYSFONT_EQUALIZER_BAND_CUTOFF 9703 id: LANG_SYSFONT_EQUALIZER_BAND_CUTOFF
9704 desc: in the equalizer settings menu 9704 desc: in the equalizer settings menu
9705 user: core 9705 user: core
9706 <source> 9706 <source>
9707 *: none 9707 *: none
9708 swcodec: "Cutoff" 9708 swcodec: "Cutoff"
9709 </source> 9709 </source>
9710 <dest> 9710 <dest>
9711 *: none 9711 *: none
9712 swcodec: "Robeza" 9712 swcodec: "Robeza"
9713 </dest> 9713 </dest>
9714 <voice> 9714 <voice>
9715 *: none 9715 *: none
9716 swcodec: "robezhfrekvence" 9716 swcodec: "robezhfrekvence"
9717 </voice> 9717 </voice>
9718</phrase> 9718</phrase>
9719<phrase> 9719<phrase>
9720 id: LANG_SYSFONT_GAIN 9720 id: LANG_SYSFONT_GAIN
9721 desc: in the equalizer settings menu 9721 desc: in the equalizer settings menu
9722 user: core 9722 user: core
9723 <source> 9723 <source>
9724 *: none 9724 *: none
9725 swcodec: "Gain" 9725 swcodec: "Gain"
9726 </source> 9726 </source>
9727 <dest> 9727 <dest>
9728 *: none 9728 *: none
9729 swcodec: "Pastiprinajums" 9729 swcodec: "Pastiprinajums"
9730 </dest> 9730 </dest>
9731 <voice> 9731 <voice>
9732 *: none 9732 *: none
9733 swcodec: "pastiprinaajums" 9733 swcodec: "pastiprinaajums"
9734 </voice> 9734 </voice>
9735</phrase> 9735</phrase>
9736<phrase> 9736<phrase>
9737 id: LANG_SYSFONT_MODE 9737 id: LANG_SYSFONT_MODE
9738 desc: in wps F2 pressed 9738 desc: in wps F2 pressed
9739 user: core 9739 user: core
9740 <source> 9740 <source>
9741 *: none 9741 *: none
9742 lcd_bitmap: "Mode:" 9742 lcd_bitmap: "Mode:"
9743 </source> 9743 </source>
9744 <dest> 9744 <dest>
9745 *: none 9745 *: none
9746 lcd_bitmap: "Režīms:" 9746 lcd_bitmap: "Režīms:"
9747 </dest> 9747 </dest>
9748 <voice> 9748 <voice>
9749 *: none 9749 *: none
9750 lcd_bitmap: "" 9750 lcd_bitmap: ""
9751 </voice> 9751 </voice>
9752</phrase> 9752</phrase>
9753<phrase> 9753<phrase>
9754 id: LANG_SYSFONT_DIRBROWSE_F1 9754 id: LANG_SYSFONT_DIRBROWSE_F1
9755 desc: in dir browser, F1 button bar text 9755 desc: in dir browser, F1 button bar text
9756 user: core 9756 user: core
9757 <source> 9757 <source>
9758 *: none 9758 *: none
9759 recorder_pad: "Menu" 9759 recorder_pad: "Menu"
9760 </source> 9760 </source>
9761 <dest> 9761 <dest>
9762 *: none 9762 *: none
9763 recorder_pad: "Izvēlne" 9763 recorder_pad: "Izvēlne"
9764 </dest> 9764 </dest>
9765 <voice> 9765 <voice>
9766 *: none 9766 *: none
9767 recorder_pad: "" 9767 recorder_pad: ""
9768 </voice> 9768 </voice>
9769</phrase> 9769</phrase>
9770<phrase> 9770<phrase>
9771 id: LANG_SYSFONT_DIRBROWSE_F2 9771 id: LANG_SYSFONT_DIRBROWSE_F2
9772 desc: in dir browser, F2 button bar text 9772 desc: in dir browser, F2 button bar text
9773 user: core 9773 user: core
9774 <source> 9774 <source>
9775 *: none 9775 *: none
9776 recorder_pad: "Option" 9776 recorder_pad: "Option"
9777 </source> 9777 </source>
9778 <dest> 9778 <dest>
9779 *: none 9779 *: none
9780 recorder_pad: "Opcija" 9780 recorder_pad: "Opcija"
9781 </dest> 9781 </dest>
9782 <voice> 9782 <voice>
9783 *: none 9783 *: none
9784 recorder_pad: "" 9784 recorder_pad: ""
9785 </voice> 9785 </voice>
9786</phrase> 9786</phrase>
9787<phrase> 9787<phrase>
9788 id: LANG_SYSFONT_DIRBROWSE_F3 9788 id: LANG_SYSFONT_DIRBROWSE_F3
9789 desc: in dir browser, F3 button bar text 9789 desc: in dir browser, F3 button bar text
9790 user: core 9790 user: core
9791 <source> 9791 <source>
9792 *: none 9792 *: none
9793 recorder_pad: "LCD" 9793 recorder_pad: "LCD"
9794 </source> 9794 </source>
9795 <dest> 9795 <dest>
9796 *: none 9796 *: none
9797 recorder_pad: "EkrÄns" 9797 recorder_pad: "EkrÄns"
9798 </dest> 9798 </dest>
9799 <voice> 9799 <voice>
9800 *: none 9800 *: none
9801 recorder_pad: "" 9801 recorder_pad: ""
9802 </voice> 9802 </voice>
9803</phrase> 9803</phrase>
9804<phrase> 9804<phrase>
9805 id: LANG_SYSFONT_CHANNEL_STEREO 9805 id: LANG_SYSFONT_CHANNEL_STEREO
9806 desc: in sound_settings 9806 desc: in sound_settings
9807 user: core 9807 user: core
9808 <source> 9808 <source>
9809 *: none 9809 *: none
9810 recording: "Stereo" 9810 recording: "Stereo"
9811 </source> 9811 </source>
9812 <dest> 9812 <dest>
9813 *: none 9813 *: none
9814 recording: "Stereo" 9814 recording: "Stereo"
9815 </dest> 9815 </dest>
9816 <voice> 9816 <voice>
9817 *: none 9817 *: none
9818 recording: "stereo" 9818 recording: "stereo"
9819 </voice> 9819 </voice>
9820</phrase> 9820</phrase>
9821<phrase> 9821<phrase>
9822 id: LANG_SYSFONT_CHANNEL_MONO 9822 id: LANG_SYSFONT_CHANNEL_MONO
9823 desc: in sound_settings 9823 desc: in sound_settings
9824 user: core 9824 user: core
9825 <source> 9825 <source>
9826 *: none 9826 *: none
9827 recording: "Mono" 9827 recording: "Mono"
9828 </source> 9828 </source>
9829 <dest> 9829 <dest>
9830 *: none 9830 *: none
9831 recording: "Mono" 9831 recording: "Mono"
9832 </dest> 9832 </dest>
9833 <voice> 9833 <voice>
9834 *: none 9834 *: none
9835 recording: "mono" 9835 recording: "mono"
9836 </voice> 9836 </voice>
9837</phrase> 9837</phrase>
9838<phrase> 9838<phrase>
9839 id: LANG_SYSFONT_RECORDING_QUALITY 9839 id: LANG_SYSFONT_RECORDING_QUALITY
9840 desc: in the recording settings 9840 desc: in the recording settings
9841 user: core 9841 user: core
9842 <source> 9842 <source>
9843 *: none 9843 *: none
9844 recording_hwcodec: "Quality" 9844 recording_hwcodec: "Quality"
9845 </source> 9845 </source>
9846 <dest> 9846 <dest>
9847 *: none 9847 *: none
9848 recording_hwcodec: "KvalitÄte" 9848 recording_hwcodec: "KvalitÄte"
9849 </dest> 9849 </dest>
9850 <voice> 9850 <voice>
9851 *: none 9851 *: none
9852 recording_hwcodec: "kvalitaate" 9852 recording_hwcodec: "kvalitaate"
9853 </voice> 9853 </voice>
9854</phrase> 9854</phrase>
9855<phrase> 9855<phrase>
9856 id: LANG_SYSFONT_RECORDING_FREQUENCY 9856 id: LANG_SYSFONT_RECORDING_FREQUENCY
9857 desc: in the recording settings 9857 desc: in the recording settings
9858 user: core 9858 user: core
9859 <source> 9859 <source>
9860 *: none 9860 *: none
9861 recording: "Frequency" 9861 recording: "Frequency"
9862 </source> 9862 </source>
9863 <dest> 9863 <dest>
9864 *: none 9864 *: none
9865 recording: "Frekvence" 9865 recording: "Frekvence"
9866 </dest> 9866 </dest>
9867 <voice> 9867 <voice>
9868 *: none 9868 *: none
9869 recording: "frekvence" 9869 recording: "frekvence"
9870 </voice> 9870 </voice>
9871</phrase> 9871</phrase>
9872<phrase> 9872<phrase>
9873 id: LANG_SYSFONT_RECORDING_SOURCE 9873 id: LANG_SYSFONT_RECORDING_SOURCE
9874 desc: in the recording settings 9874 desc: in the recording settings
9875 user: core 9875 user: core
9876 <source> 9876 <source>
9877 *: none 9877 *: none
9878 recording: "Source" 9878 recording: "Source"
9879 </source> 9879 </source>
9880 <dest> 9880 <dest>
9881 *: none 9881 *: none
9882 recording: "Avots" 9882 recording: "Avots"
9883 </dest> 9883 </dest>
9884 <voice> 9884 <voice>
9885 *: none 9885 *: none
9886 recording: "avots" 9886 recording: "avots"
9887 </voice> 9887 </voice>
9888</phrase> 9888</phrase>
9889<phrase> 9889<phrase>
9890 id: LANG_SYSFONT_RECORDING_SRC_MIC 9890 id: LANG_SYSFONT_RECORDING_SRC_MIC
9891 desc: in the recording settings 9891 desc: in the recording settings
9892 user: core 9892 user: core
9893 <source> 9893 <source>
9894 *: none 9894 *: none
9895 recording: "Int. Mic" 9895 recording: "Int. Mic"
9896 </source> 9896 </source>
9897 <dest> 9897 <dest>
9898 *: none 9898 *: none
9899 recording: "Ieb. Mikr" 9899 recording: "Ieb. Mikr"
9900 </dest> 9900 </dest>
9901 <voice> 9901 <voice>
9902 *: none 9902 *: none
9903 recording: "iebuuveetais mikrofons" 9903 recording: "iebuuveetais mikrofons"
9904 </voice> 9904 </voice>
9905</phrase> 9905</phrase>
9906<phrase> 9906<phrase>
9907 id: LANG_SYSFONT_LINE_IN 9907 id: LANG_SYSFONT_LINE_IN
9908 desc: in the recording settings 9908 desc: in the recording settings
9909 user: core 9909 user: core
9910 <source> 9910 <source>
9911 *: none 9911 *: none
9912 recording: "Line In" 9912 recording: "Line In"
9913 </source> 9913 </source>
9914 <dest> 9914 <dest>
9915 *: none 9915 *: none
9916 recording: "LineÄrÄ Ieeja" 9916 recording: "LineÄrÄ Ieeja"
9917 </dest> 9917 </dest>
9918 <voice> 9918 <voice>
9919 *: none 9919 *: none
9920 recording: "lineaaraa ieeja" 9920 recording: "lineaaraa ieeja"
9921 </voice> 9921 </voice>
9922</phrase> 9922</phrase>
9923<phrase> 9923<phrase>
9924 id: LANG_SYSFONT_RECORDING_SRC_DIGITAL 9924 id: LANG_SYSFONT_RECORDING_SRC_DIGITAL
9925 desc: in the recording settings 9925 desc: in the recording settings
9926 user: core 9926 user: core
9927 <source> 9927 <source>
9928 *: none 9928 *: none
9929 recording: "Digital" 9929 recording: "Digital"
9930 </source> 9930 </source>
9931 <dest> 9931 <dest>
9932 *: none 9932 *: none
9933 recording: "DigitÄlÄ" 9933 recording: "DigitÄlÄ"
9934 </dest> 9934 </dest>
9935 <voice> 9935 <voice>
9936 *: none 9936 *: none
9937 recording: "digitaalaa ieeja" 9937 recording: "digitaalaa ieeja"
9938 </voice> 9938 </voice>
9939</phrase> 9939</phrase>
9940<phrase> 9940<phrase>
9941 id: LANG_SYSFONT_CHANNELS 9941 id: LANG_SYSFONT_CHANNELS
9942 desc: in the recording settings 9942 desc: in the recording settings
9943 user: core 9943 user: core
9944 <source> 9944 <source>
9945 *: none 9945 *: none
9946 recording: "Channels" 9946 recording: "Channels"
9947 </source> 9947 </source>
9948 <dest> 9948 <dest>
9949 *: none 9949 *: none
9950 recording: "KanÄli" 9950 recording: "KanÄli"
9951 </dest> 9951 </dest>
9952 <voice> 9952 <voice>
9953 *: none 9953 *: none
9954 recording: "kanaali" 9954 recording: "kanaali"
9955 </voice> 9955 </voice>
9956</phrase> 9956</phrase>
9957<phrase> 9957<phrase>
9958 id: LANG_SYSFONT_RECORD_TRIGGER 9958 id: LANG_SYSFONT_RECORD_TRIGGER
9959 desc: in recording settings_menu 9959 desc: in recording settings_menu
9960 user: core 9960 user: core
9961 <source> 9961 <source>
9962 *: none 9962 *: none
9963 recording: "Trigger" 9963 recording: "Trigger"
9964 </source> 9964 </source>
9965 <dest> 9965 <dest>
9966 *: none 9966 *: none
9967 recording: "Palaidējs" 9967 recording: "Palaidējs"
9968 </dest> 9968 </dest>
9969 <voice> 9969 <voice>
9970 *: none 9970 *: none
9971 recording: "palaideejs" 9971 recording: "palaideejs"
9972 </voice> 9972 </voice>
9973</phrase> 9973</phrase>
9974<phrase> 9974<phrase>
9975 id: VOICE_OF 9975 id: VOICE_OF
9976 desc: spoken only, as in 3/8 => 3 of 8 9976 desc: spoken only, as in 3/8 => 3 of 8
9977 user: core 9977 user: core
9978 <source> 9978 <source>
9979 *: "" 9979 *: ""
9980 </source> 9980 </source>
9981 <dest> 9981 <dest>
9982 *: "" 9982 *: ""
9983 </dest> 9983 </dest>
9984 <voice> 9984 <voice>
9985 *: "no" 9985 *: "no"
9986 </voice> 9986 </voice>
9987</phrase> 9987</phrase>
9988<phrase> 9988<phrase>
9989 id: LANG_PLUGIN_GAMES 9989 id: LANG_PLUGIN_GAMES
9990 desc: in the main menu 9990 desc: in the main menu
9991 user: core 9991 user: core
9992 <source> 9992 <source>
9993 *: "Games" 9993 *: "Games"
9994 </source> 9994 </source>
9995 <dest> 9995 <dest>
9996 *: "Spēles" 9996 *: "Spēles"
9997 </dest> 9997 </dest>
9998 <voice> 9998 <voice>
9999 *: "speeles" 9999 *: "speeles"
10000 </voice> 10000 </voice>
10001</phrase> 10001</phrase>
10002<phrase> 10002<phrase>
10003 id: LANG_PLUGIN_APPS 10003 id: LANG_PLUGIN_APPS
10004 desc: in the main menu 10004 desc: in the main menu
10005 user: core 10005 user: core
10006 <source> 10006 <source>
10007 *: "Applications" 10007 *: "Applications"
10008 </source> 10008 </source>
10009 <dest> 10009 <dest>
10010 *: "Programmas" 10010 *: "Programmas"
10011 </dest> 10011 </dest>
10012 <voice> 10012 <voice>
10013 *: "programmas" 10013 *: "programmas"
10014 </voice> 10014 </voice>
10015</phrase> 10015</phrase>
10016<phrase> 10016<phrase>
10017 id: LANG_PLUGIN_DEMOS 10017 id: LANG_PLUGIN_DEMOS
10018 desc: in the main menu 10018 desc: in the main menu
10019 user: core 10019 user: core
10020 <source> 10020 <source>
10021 *: "Demos" 10021 *: "Demos"
10022 </source> 10022 </source>
10023 <dest> 10023 <dest>
10024 *: "DemonstrÄcijas" 10024 *: "DemonstrÄcijas"
10025 </dest> 10025 </dest>
10026 <voice> 10026 <voice>
10027 *: "demonstraacijas" 10027 *: "demonstraacijas"
10028 </voice> 10028 </voice>
10029</phrase> 10029</phrase>
10030<phrase> 10030<phrase>
10031 id: LANG_ID3_GROUPING 10031 id: LANG_ID3_GROUPING
10032 desc: in tag viewer 10032 desc: in tag viewer
10033 user: core 10033 user: core
10034 <source> 10034 <source>
10035 *: "Work" 10035 *: "Work"
10036 </source> 10036 </source>
10037 <dest> 10037 <dest>
10038 *: "Darbs" 10038 *: "Darbs"
10039 </dest> 10039 </dest>
10040 <voice> 10040 <voice>
10041 *: "" 10041 *: ""
10042 </voice> 10042 </voice>
10043</phrase> 10043</phrase>
10044<phrase> 10044<phrase>
10045 id: LANG_SHOW_FILENAME_EXT 10045 id: LANG_SHOW_FILENAME_EXT
10046 desc: in settings_menu 10046 desc: in settings_menu
10047 user: core 10047 user: core
10048 <source> 10048 <source>
10049 *: "Show Filename Extensions" 10049 *: "Show Filename Extensions"
10050 </source> 10050 </source>
10051 <dest> 10051 <dest>
10052 *: "RÄdÄ«t PaplaÅ¡inÄjumus" 10052 *: "RÄdÄ«t PaplaÅ¡inÄjumus"
10053 </dest> 10053 </dest>
10054 <voice> 10054 <voice>
10055 *: "raadiit paplashinaajumus" 10055 *: "raadiit paplashinaajumus"
10056 </voice> 10056 </voice>
10057</phrase> 10057</phrase>
10058<phrase> 10058<phrase>
10059 id: LANG_UNKNOWN_TYPES 10059 id: LANG_UNKNOWN_TYPES
10060 desc: in settings_menu 10060 desc: in settings_menu
10061 user: core 10061 user: core
10062 <source> 10062 <source>
10063 *: "Only Unknown Types" 10063 *: "Only Unknown Types"
10064 </source> 10064 </source>
10065 <dest> 10065 <dest>
10066 *: "Tikai NezinÄmiem" 10066 *: "Tikai NezinÄmiem"
10067 </dest> 10067 </dest>
10068 <voice> 10068 <voice>
10069 *: "tikai nezinaamiem" 10069 *: "tikai nezinaamiem"
10070 </voice> 10070 </voice>
10071</phrase> 10071</phrase>
10072<phrase> 10072<phrase>
10073 id: LANG_EXT_ONLY_VIEW_ALL 10073 id: LANG_EXT_ONLY_VIEW_ALL
10074 desc: in settings_menu 10074 desc: in settings_menu
10075 user: core 10075 user: core
10076 <source> 10076 <source>
10077 *: "Only When Viewing All Types" 10077 *: "Only When Viewing All Types"
10078 </source> 10078 </source>
10079 <dest> 10079 <dest>
10080 *: "Tikai Skatoties Visus Veidus" 10080 *: "Tikai Skatoties Visus Veidus"
10081 </dest> 10081 </dest>
10082 <voice> 10082 <voice>
10083 *: "tikai skatoties visus veidus" 10083 *: "tikai skatoties visus veidus"
10084 </voice> 10084 </voice>
10085</phrase> 10085</phrase>
10086<phrase> 10086<phrase>
10087 id: VOICE_PM_UNITS_PER_TICK 10087 id: VOICE_PM_UNITS_PER_TICK
10088 desc: spoken only, peak meter release unit 10088 desc: spoken only, peak meter release unit
10089 user: core 10089 user: core
10090 <source> 10090 <source>
10091 *: "" 10091 *: ""
10092 </source> 10092 </source>
10093 <dest> 10093 <dest>
10094 *: "" 10094 *: ""
10095 </dest> 10095 </dest>
10096 <voice> 10096 <voice>
10097 *: "vieniibas uz klikshkji" 10097 *: "vieniibas uz klikshkji"
10098 </voice> 10098 </voice>
10099</phrase> 10099</phrase>
10100<phrase> 10100<phrase>
10101 id: VOICE_OCLOCK 10101 id: VOICE_OCLOCK
10102 desc: spoken only, for wall clock announce 10102 desc: spoken only, for wall clock announce
10103 user: core 10103 user: core
10104 <source> 10104 <source>
10105 *: none 10105 *: none
10106 rtc: "" 10106 rtc: ""
10107 </source> 10107 </source>
10108 <dest> 10108 <dest>
10109 *: none 10109 *: none
10110 rtc: "" 10110 rtc: ""
10111 </dest> 10111 </dest>
10112 <voice> 10112 <voice>
10113 *: none 10113 *: none
10114 rtc: "pulkstenis" 10114 rtc: "pulkstenis"
10115 </voice> 10115 </voice>
10116</phrase> 10116</phrase>
10117<phrase> 10117<phrase>
10118 id: VOICE_PM 10118 id: VOICE_PM
10119 desc: spoken only, for wall clock announce 10119 desc: spoken only, for wall clock announce
10120 user: core 10120 user: core
10121 <source> 10121 <source>
10122 *: none 10122 *: none
10123 rtc: "" 10123 rtc: ""
10124 </source> 10124 </source>
10125 <dest> 10125 <dest>
10126 *: none 10126 *: none
10127 rtc: "" 10127 rtc: ""
10128 </dest> 10128 </dest>
10129 <voice> 10129 <voice>
10130 *: none 10130 *: none
10131 rtc: "pee em" 10131 rtc: "pee em"
10132 </voice> 10132 </voice>
10133</phrase> 10133</phrase>
10134<phrase> 10134<phrase>
10135 id: VOICE_AM 10135 id: VOICE_AM
10136 desc: spoken only, for wall clock announce 10136 desc: spoken only, for wall clock announce
10137 user: core 10137 user: core
10138 <source> 10138 <source>
10139 *: none 10139 *: none
10140 rtc: "" 10140 rtc: ""
10141 </source> 10141 </source>
10142 <dest> 10142 <dest>
10143 *: none 10143 *: none
10144 rtc: "" 10144 rtc: ""
10145 </dest> 10145 </dest>
10146 <voice> 10146 <voice>
10147 *: none 10147 *: none
10148 rtc: "aa em" 10148 rtc: "aa em"
10149 </voice> 10149 </voice>
10150</phrase> 10150</phrase>
10151<phrase> 10151<phrase>
10152 id: VOICE_OH 10152 id: VOICE_OH
10153 desc: spoken only, for wall clock announce 10153 desc: spoken only, for wall clock announce
10154 user: core 10154 user: core
10155 <source> 10155 <source>
10156 *: none 10156 *: none
10157 rtc: "" 10157 rtc: ""
10158 </source> 10158 </source>
10159 <dest> 10159 <dest>
10160 *: none 10160 *: none
10161 rtc: "" 10161 rtc: ""
10162 </dest> 10162 </dest>
10163 <voice> 10163 <voice>
10164 *: none 10164 *: none
10165 rtc: " " 10165 rtc: " "
10166 </voice> 10166 </voice>
10167</phrase> 10167</phrase>
10168<phrase> 10168<phrase>
10169 id: LANG_PM_CLIPCOUNTER 10169 id: LANG_PM_CLIPCOUNTER
10170 desc: in settings, for recording peak meter 10170 desc: in settings, for recording peak meter
10171 user: core 10171 user: core
10172 <source> 10172 <source>
10173 *: none 10173 *: none
10174 recording: "Clip Counter" 10174 recording: "Clip Counter"
10175 </source> 10175 </source>
10176 <dest> 10176 <dest>
10177 *: none 10177 *: none
10178 recording: "PÄrlÄ«meņa SkaitÄ«tÄjs" 10178 recording: "PÄrlÄ«meņa SkaitÄ«tÄjs"
10179 </dest> 10179 </dest>
10180 <voice> 10180 <voice>
10181 *: none 10181 *: none
10182 recording: "paarliimenja skaitiitaajs" 10182 recording: "paarliimenja skaitiitaajs"
10183 </voice> 10183 </voice>
10184</phrase> 10184</phrase>
10185<phrase> 10185<phrase>
10186 id: LANG_SELECTOR_START_COLOR 10186 id: LANG_SELECTOR_START_COLOR
10187 desc: line selector color option 10187 desc: line selector color option
10188 user: core 10188 user: core
10189 <source> 10189 <source>
10190 *: none 10190 *: none
10191 lcd_color: "Primary Colour" 10191 lcd_color: "Primary Colour"
10192 </source> 10192 </source>
10193 <dest> 10193 <dest>
10194 *: none 10194 *: none
10195 lcd_color: "PrimÄrÄ KrÄsa" 10195 lcd_color: "PrimÄrÄ KrÄsa"
10196 </dest> 10196 </dest>
10197 <voice> 10197 <voice>
10198 *: none 10198 *: none
10199 lcd_color: "primaaraa kraasa" 10199 lcd_color: "primaaraa kraasa"
10200 </voice> 10200 </voice>
10201</phrase> 10201</phrase>
10202<phrase> 10202<phrase>
10203 id: LANG_SELECTOR_END_COLOR 10203 id: LANG_SELECTOR_END_COLOR
10204 desc: line selector color option 10204 desc: line selector color option
10205 user: core 10205 user: core
10206 <source> 10206 <source>
10207 *: none 10207 *: none
10208 lcd_color: "Secondary Colour" 10208 lcd_color: "Secondary Colour"
10209 </source> 10209 </source>
10210 <dest> 10210 <dest>
10211 *: none 10211 *: none
10212 lcd_color: "SekundÄrÄ KrÄsa" 10212 lcd_color: "SekundÄrÄ KrÄsa"
10213 </dest> 10213 </dest>
10214 <voice> 10214 <voice>
10215 *: none 10215 *: none
10216 lcd_color: "sekundaaraa kraasa" 10216 lcd_color: "sekundaaraa kraasa"
10217 </voice> 10217 </voice>
10218</phrase> 10218</phrase>
10219<phrase> 10219<phrase>
10220 id: LANG_SELECTOR_TEXT_COLOR 10220 id: LANG_SELECTOR_TEXT_COLOR
10221 desc: line selector text color option 10221 desc: line selector text color option
10222 user: core 10222 user: core
10223 <source> 10223 <source>
10224 *: none 10224 *: none
10225 lcd_color: "Text Colour" 10225 lcd_color: "Text Colour"
10226 </source> 10226 </source>
10227 <dest> 10227 <dest>
10228 *: none 10228 *: none
10229 lcd_color: "Teksta KrÄsa" 10229 lcd_color: "Teksta KrÄsa"
10230 </dest> 10230 </dest>
10231 <voice> 10231 <voice>
10232 *: none 10232 *: none
10233 lcd_color: "teksta kraasa" 10233 lcd_color: "teksta kraasa"
10234 </voice> 10234 </voice>
10235</phrase> 10235</phrase>
10236<phrase> 10236<phrase>
10237 id: LANG_INVERT_CURSOR_COLOR 10237 id: LANG_INVERT_CURSOR_COLOR
10238 desc: in settings_menu 10238 desc: in settings_menu
10239 user: core 10239 user: core
10240 <source> 10240 <source>
10241 *: none 10241 *: none
10242 lcd_color: "Bar (Solid Colour)" 10242 lcd_color: "Bar (Solid Colour)"
10243 </source> 10243 </source>
10244 <dest> 10244 <dest>
10245 *: none 10245 *: none
10246 lcd_color: "Josla (VienkrÄsaina)" 10246 lcd_color: "Josla (VienkrÄsaina)"
10247 </dest> 10247 </dest>
10248 <voice> 10248 <voice>
10249 *: none 10249 *: none
10250 lcd_color: "vienkraasaina josla" 10250 lcd_color: "vienkraasaina josla"
10251 </voice> 10251 </voice>
10252</phrase> 10252</phrase>
10253<phrase> 10253<phrase>
10254 id: LANG_INVERT_CURSOR_GRADIENT 10254 id: LANG_INVERT_CURSOR_GRADIENT
10255 desc: in settings_menu 10255 desc: in settings_menu
10256 user: core 10256 user: core
10257 <source> 10257 <source>
10258 *: none 10258 *: none
10259 lcd_color: "Bar (Gradient Colour)" 10259 lcd_color: "Bar (Gradient Colour)"
10260 </source> 10260 </source>
10261 <dest> 10261 <dest>
10262 *: none 10262 *: none
10263 lcd_color: "Josla (Mainīgas Krasas)" 10263 lcd_color: "Josla (Mainīgas Krasas)"
10264 </dest> 10264 </dest>
10265 <voice> 10265 <voice>
10266 *: none 10266 *: none
10267 lcd_color: "mainiigu kraasu josla" 10267 lcd_color: "mainiigu kraasu josla"
10268 </voice> 10268 </voice>
10269</phrase> 10269</phrase>
10270<phrase> 10270<phrase>
10271 id: LANG_CODEPAGE_CENTRAL_EUROPEAN 10271 id: LANG_CODEPAGE_CENTRAL_EUROPEAN
10272 desc: in codepage setting menu 10272 desc: in codepage setting menu
10273 user: core 10273 user: core
10274 <source> 10274 <source>
10275 *: "Central European (CP1250)" 10275 *: "Central European (CP1250)"
10276 </source> 10276 </source>
10277 <dest> 10277 <dest>
10278 *: "CentrÄlÄs Eiropas (CP1250)" 10278 *: "CentrÄlÄs Eiropas (CP1250)"
10279 </dest> 10279 </dest>
10280 <voice> 10280 <voice>
10281 *: "centraalaas eiropas" 10281 *: "centraalaas eiropas"
10282 </voice> 10282 </voice>
10283</phrase> 10283</phrase>
10284<phrase> 10284<phrase>
10285 id: LANG_THEME_MENU 10285 id: LANG_THEME_MENU
10286 desc: in the settings menu 10286 desc: in the settings menu
10287 user: core 10287 user: core
10288 <source> 10288 <source>
10289 *: "Theme Settings" 10289 *: "Theme Settings"
10290 </source> 10290 </source>
10291 <dest> 10291 <dest>
10292 *: "TÄ“mas UzstÄdÄ«jumi" 10292 *: "TÄ“mas UzstÄdÄ«jumi"
10293 </dest> 10293 </dest>
10294 <voice> 10294 <voice>
10295 *: "teemas uzstaadiijumi" 10295 *: "teemas uzstaadiijumi"
10296 </voice> 10296 </voice>
10297</phrase> 10297</phrase>
10298<phrase> 10298<phrase>
10299 id: LANG_COLORS_MENU 10299 id: LANG_COLORS_MENU
10300 desc: colours menu under theme settings 10300 desc: colours menu under theme settings
10301 user: core 10301 user: core
10302 <source> 10302 <source>
10303 *: none 10303 *: none
10304 lcd_color: "Colours" 10304 lcd_color: "Colours"
10305 </source> 10305 </source>
10306 <dest> 10306 <dest>
10307 *: none 10307 *: none
10308 lcd_color: "KrÄsas" 10308 lcd_color: "KrÄsas"
10309 </dest> 10309 </dest>
10310 <voice> 10310 <voice>
10311 *: none 10311 *: none
10312 lcd_color: "kraasas" 10312 lcd_color: "kraasas"
10313 </voice> 10313 </voice>
10314</phrase> 10314</phrase>
10315<phrase> 10315<phrase>
10316 id: LANG_SELECTOR_COLOR_MENU 10316 id: LANG_SELECTOR_COLOR_MENU
10317 desc: line selector color menu title 10317 desc: line selector color menu title
10318 user: core 10318 user: core
10319 <source> 10319 <source>
10320 *: none 10320 *: none
10321 lcd_color: "Line Selector Colours" 10321 lcd_color: "Line Selector Colours"
10322 </source> 10322 </source>
10323 <dest> 10323 <dest>
10324 *: none 10324 *: none
10325 lcd_color: "IzvÄ“les Joslas KrÄsas" 10325 lcd_color: "IzvÄ“les Joslas KrÄsas"
10326 </dest> 10326 </dest>
10327 <voice> 10327 <voice>
10328 *: none 10328 *: none
10329 lcd_color: "izveeles joslas kraasas" 10329 lcd_color: "izveeles joslas kraasas"
10330 </voice> 10330 </voice>
10331</phrase> 10331</phrase>
10332<phrase> 10332<phrase>
10333 id: VOICE_EDIT 10333 id: VOICE_EDIT
10334 desc: keyboard 10334 desc: keyboard
10335 user: core 10335 user: core
10336 <source> 10336 <source>
10337 *: "" 10337 *: ""
10338 </source> 10338 </source>
10339 <dest> 10339 <dest>
10340 *: "" 10340 *: ""
10341 </dest> 10341 </dest>
10342 <voice> 10342 <voice>
10343 *: "redigjeet" 10343 *: "redigjeet"
10344 </voice> 10344 </voice>
10345</phrase> 10345</phrase>
10346<phrase> 10346<phrase>
10347 id: VOICE_BLANK 10347 id: VOICE_BLANK
10348 desc: keyboard 10348 desc: keyboard
10349 user: core 10349 user: core
10350 <source> 10350 <source>
10351 *: "" 10351 *: ""
10352 </source> 10352 </source>
10353 <dest> 10353 <dest>
10354 *: "" 10354 *: ""
10355 </dest> 10355 </dest>
10356 <voice> 10356 <voice>
10357 *: "tukshs" 10357 *: "tukshs"
10358 </voice> 10358 </voice>
10359</phrase> 10359</phrase>
10360<phrase> 10360<phrase>
10361 id: VOICE_EMPTY_LIST 10361 id: VOICE_EMPTY_LIST
10362 desc: spoken only, when a list dialog contains no elements 10362 desc: spoken only, when a list dialog contains no elements
10363 user: core 10363 user: core
10364 <source> 10364 <source>
10365 *: "" 10365 *: ""
10366 </source> 10366 </source>
10367 <dest> 10367 <dest>
10368 *: "" 10368 *: ""
10369 </dest> 10369 </dest>
10370 <voice> 10370 <voice>
10371 *: "tukshs saraksts" 10371 *: "tukshs saraksts"
10372 </voice> 10372 </voice>
10373</phrase> 10373</phrase>
10374<phrase> 10374<phrase>
10375 id: LANG_NOT_PRESENT 10375 id: LANG_NOT_PRESENT
10376 desc: when external memory is not present 10376 desc: when external memory is not present
10377 user: core 10377 user: core
10378 <source> 10378 <source>
10379 *: none 10379 *: none
10380 multivolume: "Not present" 10380 multivolume: "Not present"
10381 </source> 10381 </source>
10382 <dest> 10382 <dest>
10383 *: none 10383 *: none
10384 multivolume: "Nav" 10384 multivolume: "Nav"
10385 </dest> 10385 </dest>
10386 <voice> 10386 <voice>
10387 *: none 10387 *: none
10388 multivolume: "nav" 10388 multivolume: "nav"
10389 </voice> 10389 </voice>
10390</phrase> 10390</phrase>
10391<phrase> 10391<phrase>
10392 id: LANG_TALK_BATTERY_LEVEL 10392 id: LANG_TALK_BATTERY_LEVEL
10393 desc: Setting for spontaneous battery level announcement 10393 desc: Setting for spontaneous battery level announcement
10394 user: core 10394 user: core
10395 <source> 10395 <source>
10396 *: "Announce Battery Level" 10396 *: "Announce Battery Level"
10397 </source> 10397 </source>
10398 <dest> 10398 <dest>
10399 *: "IzrunÄt Baterijas LÄ«meni" 10399 *: "IzrunÄt Baterijas LÄ«meni"
10400 </dest> 10400 </dest>
10401 <voice> 10401 <voice>
10402 *: "izrunaat baterijas liimeni" 10402 *: "izrunaat baterijas liimeni"
10403 </voice> 10403 </voice>
10404</phrase> 10404</phrase>
10405<phrase> 10405<phrase>
10406 id: LANG_VOICE_FILETYPE 10406 id: LANG_VOICE_FILETYPE
10407 desc: voice settings menu 10407 desc: voice settings menu
10408 user: core 10408 user: core
10409 <source> 10409 <source>
10410 *: "Say File Type" 10410 *: "Say File Type"
10411 </source> 10411 </source>
10412 <dest> 10412 <dest>
10413 *: "IzrunÄt Faila Veidu" 10413 *: "IzrunÄt Faila Veidu"
10414 </dest> 10414 </dest>
10415 <voice> 10415 <voice>
10416 *: "izrunaat faila veidu" 10416 *: "izrunaat faila veidu"
10417 </voice> 10417 </voice>
10418</phrase> 10418</phrase>
10419<phrase> 10419<phrase>
10420 id: LANG_BASS_CUTOFF 10420 id: LANG_BASS_CUTOFF
10421 desc: Bass setting cut-off frequency 10421 desc: Bass setting cut-off frequency
10422 user: core 10422 user: core
10423 <source> 10423 <source>
10424 *: none 10424 *: none
10425 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Bass Cutoff" 10425 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Bass Cutoff"
10426 </source> 10426 </source>
10427 <dest> 10427 <dest>
10428 *: none 10428 *: none
10429 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Basu Robežfrekvence" 10429 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Basu Robežfrekvence"
10430 </dest> 10430 </dest>
10431 <voice> 10431 <voice>
10432 *: none 10432 *: none
10433 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "basu robezhfrekvence" 10433 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "basu robezhfrekvence"
10434 </voice> 10434 </voice>
10435</phrase> 10435</phrase>
10436<phrase> 10436<phrase>
10437 id: LANG_TREBLE_CUTOFF 10437 id: LANG_TREBLE_CUTOFF
10438 desc: Treble setting cut-off frequency 10438 desc: Treble setting cut-off frequency
10439 user: core 10439 user: core
10440 <source> 10440 <source>
10441 *: none 10441 *: none
10442 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Treble Cutoff" 10442 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "Treble Cutoff"
10443 </source> 10443 </source>
10444 <dest> 10444 <dest>
10445 *: none 10445 *: none
10446 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "AF Robežfrekvence" 10446 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "AF Robežfrekvence"
10447 </dest> 10447 </dest>
10448 <voice> 10448 <voice>
10449 *: none 10449 *: none
10450 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "augsto frekvenchu robezhfrekvence" 10450 ipodvideo,ipod6g,mpiohd200,mpiohd300,gigabeatfx,mrobe100: "augsto frekvenchu robezhfrekvence"
10451 </voice> 10451 </voice>
10452</phrase> 10452</phrase>
10453<phrase> 10453<phrase>
10454 id: LANG_TAGNAVI_RANDOM 10454 id: LANG_TAGNAVI_RANDOM
10455 desc: "<Random>" entry in tag browser 10455 desc: "<Random>" entry in tag browser
10456 user: core 10456 user: core
10457 <source> 10457 <source>
10458 *: "<Random>" 10458 *: "<Random>"
10459 </source> 10459 </source>
10460 <dest> 10460 <dest>
10461 *: "<DažÄdi>" 10461 *: "<DažÄdi>"
10462 </dest> 10462 </dest>
10463 <voice> 10463 <voice>
10464 *: "dazhaadi" 10464 *: "dazhaadi"
10465 </voice> 10465 </voice>
10466</phrase> 10466</phrase>
10467<phrase> 10467<phrase>
10468 id: LANG_SAVE_SOUND 10468 id: LANG_SAVE_SOUND
10469 desc: save a sound config file 10469 desc: save a sound config file
10470 user: core 10470 user: core
10471 <source> 10471 <source>
10472 *: "Save Sound Settings" 10472 *: "Save Sound Settings"
10473 </source> 10473 </source>
10474 <dest> 10474 <dest>
10475 *: "SaglabÄt Skaņas UzstÄdÄ«jumus" 10475 *: "SaglabÄt Skaņas UzstÄdÄ«jumus"
10476 </dest> 10476 </dest>
10477 <voice> 10477 <voice>
10478 *: "saglabaat skanjas uzstaadiijumus" 10478 *: "saglabaat skanjas uzstaadiijumus"
10479 </voice> 10479 </voice>
10480</phrase> 10480</phrase>
10481<phrase> 10481<phrase>
10482 id: LANG_KEYCLICK 10482 id: LANG_KEYCLICK
10483 desc: in keyclick settings menu 10483 desc: in keyclick settings menu
10484 user: core 10484 user: core
10485 <source> 10485 <source>
10486 *: none 10486 *: none
10487 swcodec: "Keyclick" 10487 swcodec: "Keyclick"
10488 </source> 10488 </source>
10489 <dest> 10489 <dest>
10490 *: none 10490 *: none
10491 swcodec: "Klikšķis" 10491 swcodec: "Klikšķis"
10492 </dest> 10492 </dest>
10493 <voice> 10493 <voice>
10494 *: none 10494 *: none
10495 swcodec: "klikshkjis" 10495 swcodec: "klikshkjis"
10496 </voice> 10496 </voice>
10497</phrase> 10497</phrase>
10498<phrase> 10498<phrase>
10499 id: LANG_KEYCLICK_REPEATS 10499 id: LANG_KEYCLICK_REPEATS
10500 desc: in keyclick settings menu 10500 desc: in keyclick settings menu
10501 user: core 10501 user: core
10502 <source> 10502 <source>
10503 *: none 10503 *: none
10504 swcodec: "Keyclick Repeats" 10504 swcodec: "Keyclick Repeats"
10505 </source> 10505 </source>
10506 <dest> 10506 <dest>
10507 *: none 10507 *: none
10508 swcodec: "KlikÅ¡Ä·u AtkÄrtoÅ¡ana" 10508 swcodec: "KlikÅ¡Ä·u AtkÄrtoÅ¡ana"
10509 </dest> 10509 </dest>
10510 <voice> 10510 <voice>
10511 *: none 10511 *: none
10512 swcodec: "klikshkju atkaartoshana" 10512 swcodec: "klikshkju atkaartoshana"
10513 </voice> 10513 </voice>
10514</phrase> 10514</phrase>
10515<phrase> 10515<phrase>
10516 id: LANG_ACCESSORY_SUPPLY 10516 id: LANG_ACCESSORY_SUPPLY
10517 desc: in system settings menu 10517 desc: in system settings menu
10518 user: core 10518 user: core
10519 <source> 10519 <source>
10520 *: none 10520 *: none
10521 accessory_supply: "Accessory Power Supply" 10521 accessory_supply: "Accessory Power Supply"
10522 </source> 10522 </source>
10523 <dest> 10523 <dest>
10524 *: none 10524 *: none
10525 accessory_supply: "AksesuÄru BaroÅ¡ana" 10525 accessory_supply: "AksesuÄru BaroÅ¡ana"
10526 </dest> 10526 </dest>
10527 <voice> 10527 <voice>
10528 *: none 10528 *: none
10529 accessory_supply: "aksesuaaru baroshana" 10529 accessory_supply: "aksesuaaru baroshana"
10530 </voice> 10530 </voice>
10531</phrase> 10531</phrase>
10532<phrase> 10532<phrase>
10533 id: LANG_UNKNOWN 10533 id: LANG_UNKNOWN
10534 desc: generic string for unknown states, such as an unset clock 10534 desc: generic string for unknown states, such as an unset clock
10535 user: core 10535 user: core
10536 <source> 10536 <source>
10537 *: "Unknown" 10537 *: "Unknown"
10538 </source> 10538 </source>
10539 <dest> 10539 <dest>
10540 *: "NezinÄms" 10540 *: "NezinÄms"
10541 </dest> 10541 </dest>
10542 <voice> 10542 <voice>
10543 *: "nezinaams" 10543 *: "nezinaams"
10544 </voice> 10544 </voice>
10545</phrase> 10545</phrase>
10546<phrase> 10546<phrase>
10547 id: VOICE_QUICKSCREEN 10547 id: VOICE_QUICKSCREEN
10548 desc: spoken only, Announces entering the "quick screen" 10548 desc: spoken only, Announces entering the "quick screen"
10549 user: core 10549 user: core
10550 <source> 10550 <source>
10551 *: "" 10551 *: ""
10552 </source> 10552 </source>
10553 <dest> 10553 <dest>
10554 *: "" 10554 *: ""
10555 </dest> 10555 </dest>
10556 <voice> 10556 <voice>
10557 *: "aatrais ekraans" 10557 *: "aatrais ekraans"
10558 </voice> 10558 </voice>
10559</phrase> 10559</phrase>
10560<phrase> 10560<phrase>
10561 id: VOICE_OK 10561 id: VOICE_OK
10562 desc: spoken only, On exiting a context, specifically the quick screen 10562 desc: spoken only, On exiting a context, specifically the quick screen
10563 user: core 10563 user: core
10564 <source> 10564 <source>
10565 *: "" 10565 *: ""
10566 </source> 10566 </source>
10567 <dest> 10567 <dest>
10568 *: "" 10568 *: ""
10569 </dest> 10569 </dest>
10570 <voice> 10570 <voice>
10571 *: "labi" 10571 *: "labi"
10572 </voice> 10572 </voice>
10573</phrase> 10573</phrase>
10574<phrase> 10574<phrase>
10575 id: LANG_STOP_RECORDING_AND_SHUTDOWN 10575 id: LANG_STOP_RECORDING_AND_SHUTDOWN
10576 desc: in record timesplit options 10576 desc: in record timesplit options
10577 user: core 10577 user: core
10578 <source> 10578 <source>
10579 *: none 10579 *: none
10580 recording: "Stop Recording And Shutdown" 10580 recording: "Stop Recording And Shutdown"
10581 </source> 10581 </source>
10582 <dest> 10582 <dest>
10583 *: none 10583 *: none
10584 recording: "Beigt Ierakstu Un Izslēgties" 10584 recording: "Beigt Ierakstu Un Izslēgties"
10585 </dest> 10585 </dest>
10586 <voice> 10586 <voice>
10587 *: none 10587 *: none
10588 recording: "beigt ierakstu un izsleegties" 10588 recording: "beigt ierakstu un izsleegties"
10589 </voice> 10589 </voice>
10590</phrase> 10590</phrase>
10591<phrase> 10591<phrase>
10592 id: LANG_TOUCHPAD_SENSITIVITY 10592 id: LANG_TOUCHPAD_SENSITIVITY
10593 desc: touchpad sensitivity setting 10593 desc: touchpad sensitivity setting
10594 user: core 10594 user: core
10595 <source> 10595 <source>
10596 *: none 10596 *: none
10597 gigabeatfx: "Touchpad Sensitivity" 10597 gigabeatfx: "Touchpad Sensitivity"
10598 </source> 10598 </source>
10599 <dest> 10599 <dest>
10600 *: none 10600 *: none
10601 gigabeatfx: "SkÄrienvirsmas JÅ«tÄ«ba" 10601 gigabeatfx: "SkÄrienvirsmas JÅ«tÄ«ba"
10602 </dest> 10602 </dest>
10603 <voice> 10603 <voice>
10604 *: none 10604 *: none
10605 gigabeatfx: "skaarienvirsmas juutiiba" 10605 gigabeatfx: "skaarienvirsmas juutiiba"
10606 </voice> 10606 </voice>
10607</phrase> 10607</phrase>
10608<phrase> 10608<phrase>
10609 id: LANG_HIGH 10609 id: LANG_HIGH
10610 desc: in settings_menu 10610 desc: in settings_menu
10611 user: core 10611 user: core
10612 <source> 10612 <source>
10613 *: none 10613 *: none
10614 gigabeatfx: "High" 10614 gigabeatfx: "High"
10615 </source> 10615 </source>
10616 <dest> 10616 <dest>
10617 *: none 10617 *: none
10618 gigabeatfx: "Augsts" 10618 gigabeatfx: "Augsts"
10619 </dest> 10619 </dest>
10620 <voice> 10620 <voice>
10621 *: none 10621 *: none
10622 gigabeatfx: "augsts" 10622 gigabeatfx: "augsts"
10623 </voice> 10623 </voice>
10624</phrase> 10624</phrase>
10625<phrase> 10625<phrase>
10626 id: LANG_SERIAL_BITRATE 10626 id: LANG_SERIAL_BITRATE
10627 desc: in system settings menu 10627 desc: in system settings menu
10628 user: core 10628 user: core
10629 <source> 10629 <source>
10630 *: none 10630 *: none
10631 serial_port: "Serial Bitrate" 10631 serial_port: "Serial Bitrate"
10632 </source> 10632 </source>
10633 <dest> 10633 <dest>
10634 *: none 10634 *: none
10635 serial_port: "SeriÄlais Bitreits" 10635 serial_port: "SeriÄlais Bitreits"
10636 </dest> 10636 </dest>
10637 <voice> 10637 <voice>
10638 *: none 10638 *: none
10639 serial_port: "seriaalais bitreits" 10639 serial_port: "seriaalais bitreits"
10640 </voice> 10640 </voice>
10641</phrase> 10641</phrase>
10642<phrase> 10642<phrase>
10643 id: LANG_SERIAL_BITRATE_AUTO 10643 id: LANG_SERIAL_BITRATE_AUTO
10644 desc: in system settings menu 10644 desc: in system settings menu
10645 user: core 10645 user: core
10646 <source> 10646 <source>
10647 *: none 10647 *: none
10648 serial_port: "Auto" 10648 serial_port: "Auto"
10649 </source> 10649 </source>
10650 <dest> 10650 <dest>
10651 *: none 10651 *: none
10652 serial_port: "AutomÄtiski" 10652 serial_port: "AutomÄtiski"
10653 </dest> 10653 </dest>
10654 <voice> 10654 <voice>
10655 *: none 10655 *: none
10656 serial_port: "automaatiski" 10656 serial_port: "automaatiski"
10657 </voice> 10657 </voice>
10658</phrase> 10658</phrase>
10659<phrase> 10659<phrase>
10660 id: LANG_SERIAL_BITRATE_9600 10660 id: LANG_SERIAL_BITRATE_9600
10661 desc: in system settings menu 10661 desc: in system settings menu
10662 user: core 10662 user: core
10663 <source> 10663 <source>
10664 *: none 10664 *: none
10665 serial_port: "9600" 10665 serial_port: "9600"
10666 </source> 10666 </source>
10667 <dest> 10667 <dest>
10668 *: none 10668 *: none
10669 serial_port: "9600" 10669 serial_port: "9600"
10670 </dest> 10670 </dest>
10671 <voice> 10671 <voice>
10672 *: none 10672 *: none
10673 serial_port: "9600" 10673 serial_port: "9600"
10674 </voice> 10674 </voice>
10675</phrase> 10675</phrase>
10676<phrase> 10676<phrase>
10677 id: LANG_SERIAL_BITRATE_19200 10677 id: LANG_SERIAL_BITRATE_19200
10678 desc: in system settings menu 10678 desc: in system settings menu
10679 user: core 10679 user: core
10680 <source> 10680 <source>
10681 *: none 10681 *: none
10682 serial_port: "19200" 10682 serial_port: "19200"
10683 </source> 10683 </source>
10684 <dest> 10684 <dest>
10685 *: none 10685 *: none
10686 serial_port: "19200" 10686 serial_port: "19200"
10687 </dest> 10687 </dest>
10688 <voice> 10688 <voice>
10689 *: none 10689 *: none
10690 serial_port: "19200" 10690 serial_port: "19200"
10691 </voice> 10691 </voice>
10692</phrase> 10692</phrase>
10693<phrase> 10693<phrase>
10694 id: LANG_SERIAL_BITRATE_38400 10694 id: LANG_SERIAL_BITRATE_38400
10695 desc: in system settings menu 10695 desc: in system settings menu
10696 user: core 10696 user: core
10697 <source> 10697 <source>
10698 *: none 10698 *: none
10699 serial_port: "38400" 10699 serial_port: "38400"
10700 </source> 10700 </source>
10701 <dest> 10701 <dest>
10702 *: none 10702 *: none
10703 serial_port: "38400" 10703 serial_port: "38400"
10704 </dest> 10704 </dest>
10705 <voice> 10705 <voice>
10706 *: none 10706 *: none
10707 serial_port: "38400" 10707 serial_port: "38400"
10708 </voice> 10708 </voice>
10709</phrase> 10709</phrase>
10710<phrase> 10710<phrase>
10711 id: LANG_SERIAL_BITRATE_57600 10711 id: LANG_SERIAL_BITRATE_57600
10712 desc: in system settings menu 10712 desc: in system settings menu
10713 user: core 10713 user: core
10714 <source> 10714 <source>
10715 *: none 10715 *: none
10716 serial_port: "57600" 10716 serial_port: "57600"
10717 </source> 10717 </source>
10718 <dest> 10718 <dest>
10719 *: none 10719 *: none
10720 serial_port: "57600" 10720 serial_port: "57600"
10721 </dest> 10721 </dest>
10722 <voice> 10722 <voice>
10723 *: none 10723 *: none
10724 serial_port: "57600" 10724 serial_port: "57600"
10725 </voice> 10725 </voice>
10726</phrase> 10726</phrase>
10727<phrase> 10727<phrase>
10728 id: LANG_VERY_SLOW 10728 id: LANG_VERY_SLOW
10729 desc: in settings_menu 10729 desc: in settings_menu
10730 user: core 10730 user: core
10731 <source> 10731 <source>
10732 *: "Very slow" 10732 *: "Very slow"
10733 </source> 10733 </source>
10734 <dest> 10734 <dest>
10735 *: "Ļoti Lēns" 10735 *: "Ļoti Lēns"
10736 </dest> 10736 </dest>
10737 <voice> 10737 <voice>
10738 *: "ljoti leens" 10738 *: "ljoti leens"
10739 </voice> 10739 </voice>
10740</phrase> 10740</phrase>
10741<phrase> 10741<phrase>
10742 id: LANG_SLOW 10742 id: LANG_SLOW
10743 desc: in settings_menu 10743 desc: in settings_menu
10744 user: core 10744 user: core
10745 <source> 10745 <source>
10746 *: "Slow" 10746 *: "Slow"
10747 </source> 10747 </source>
10748 <dest> 10748 <dest>
10749 *: "LÄ“ns" 10749 *: "LÄ“ns"
10750 </dest> 10750 </dest>
10751 <voice> 10751 <voice>
10752 *: "leens" 10752 *: "leens"
10753 </voice> 10753 </voice>
10754</phrase> 10754</phrase>
10755<phrase> 10755<phrase>
10756 id: LANG_VERY_FAST 10756 id: LANG_VERY_FAST
10757 desc: in settings_menu 10757 desc: in settings_menu
10758 user: core 10758 user: core
10759 <source> 10759 <source>
10760 *: "Very fast" 10760 *: "Very fast"
10761 </source> 10761 </source>
10762 <dest> 10762 <dest>
10763 *: "Ļoti Ātrs" 10763 *: "Ļoti Ātrs"
10764 </dest> 10764 </dest>
10765 <voice> 10765 <voice>
10766 *: "ljoti aatrs" 10766 *: "ljoti aatrs"
10767 </voice> 10767 </voice>
10768</phrase> 10768</phrase>
10769<phrase> 10769<phrase>
10770 id: LANG_FAST 10770 id: LANG_FAST
10771 desc: in settings_menu 10771 desc: in settings_menu
10772 user: core 10772 user: core
10773 <source> 10773 <source>
10774 *: "Fast" 10774 *: "Fast"
10775 </source> 10775 </source>
10776 <dest> 10776 <dest>
10777 *: "Ä€trs" 10777 *: "Ä€trs"
10778 </dest> 10778 </dest>
10779 <voice> 10779 <voice>
10780 *: "aatrs" 10780 *: "aatrs"
10781 </voice> 10781 </voice>
10782</phrase> 10782</phrase>
10783<phrase> 10783<phrase>
10784 id: LANG_SKIP_LENGTH 10784 id: LANG_SKIP_LENGTH
10785 desc: playback settings menu 10785 desc: playback settings menu
10786 user: core 10786 user: core
10787 <source> 10787 <source>
10788 *: "Skip Length" 10788 *: "Skip Length"
10789 </source> 10789 </source>
10790 <dest> 10790 <dest>
10791 *: "Izlaišanas Garums" 10791 *: "Izlaišanas Garums"
10792 </dest> 10792 </dest>
10793 <voice> 10793 <voice>
10794 *: "izlaishanas garums" 10794 *: "izlaishanas garums"
10795 </voice> 10795 </voice>
10796</phrase> 10796</phrase>
10797<phrase> 10797<phrase>
10798 id: LANG_SKIP_TRACK 10798 id: LANG_SKIP_TRACK
10799 desc: skip length setting entry 0 10799 desc: skip length setting entry 0
10800 user: core 10800 user: core
10801 <source> 10801 <source>
10802 *: "Skip Track" 10802 *: "Skip Track"
10803 </source> 10803 </source>
10804 <dest> 10804 <dest>
10805 *: "Izlaist Dziesmu" 10805 *: "Izlaist Dziesmu"
10806 </dest> 10806 </dest>
10807 <voice> 10807 <voice>
10808 *: "izlaist dziesmu" 10808 *: "izlaist dziesmu"
10809 </voice> 10809 </voice>
10810</phrase> 10810</phrase>
10811<phrase> 10811<phrase>
10812 id: VOICE_CHAR_SLASH 10812 id: VOICE_CHAR_SLASH
10813 desc: spoken only, for spelling 10813 desc: spoken only, for spelling
10814 user: core 10814 user: core
10815 <source> 10815 <source>
10816 *: "" 10816 *: ""
10817 </source> 10817 </source>
10818 <dest> 10818 <dest>
10819 *: "" 10819 *: ""
10820 </dest> 10820 </dest>
10821 <voice> 10821 <voice>
10822 *: "sliipsviitra" 10822 *: "sliipsviitra"
10823 </voice> 10823 </voice>
10824</phrase> 10824</phrase>
10825<phrase> 10825<phrase>
10826 id: LANG_GAIN_LEFT 10826 id: LANG_GAIN_LEFT
10827 desc: in the recording screen 10827 desc: in the recording screen
10828 user: core 10828 user: core
10829 <source> 10829 <source>
10830 *: none 10830 *: none
10831 recording: "Gain L" 10831 recording: "Gain L"
10832 </source> 10832 </source>
10833 <dest> 10833 <dest>
10834 *: none 10834 *: none
10835 recording: "Kreisais KanÄls" 10835 recording: "Kreisais KanÄls"
10836 </dest> 10836 </dest>
10837 <voice> 10837 <voice>
10838 *: none 10838 *: none
10839 recording: "kreisaa kanaala pastiprinaajums" 10839 recording: "kreisaa kanaala pastiprinaajums"
10840 </voice> 10840 </voice>
10841</phrase> 10841</phrase>
10842<phrase> 10842<phrase>
10843 id: LANG_GAIN_RIGHT 10843 id: LANG_GAIN_RIGHT
10844 desc: in the recording screen 10844 desc: in the recording screen
10845 user: core 10845 user: core
10846 <source> 10846 <source>
10847 *: none 10847 *: none
10848 recording: "Gain R" 10848 recording: "Gain R"
10849 </source> 10849 </source>
10850 <dest> 10850 <dest>
10851 *: none 10851 *: none
10852 recording: "Labais KanÄls" 10852 recording: "Labais KanÄls"
10853 </dest> 10853 </dest>
10854 <voice> 10854 <voice>
10855 *: none 10855 *: none
10856 recording: "labaa kanaala pastiprinaajums" 10856 recording: "labaa kanaala pastiprinaajums"
10857 </voice> 10857 </voice>
10858</phrase> 10858</phrase>
10859<phrase> 10859<phrase>
10860 id: LANG_RECORDING_AGC_PRESET 10860 id: LANG_RECORDING_AGC_PRESET
10861 desc: automatic gain control in record settings and screen 10861 desc: automatic gain control in record settings and screen
10862 user: core 10862 user: core
10863 <source> 10863 <source>
10864 *: none 10864 *: none
10865 agc: "AGC" 10865 agc: "AGC"
10866 </source> 10866 </source>
10867 <dest> 10867 <dest>
10868 *: none 10868 *: none
10869 agc: "APR" 10869 agc: "APR"
10870 </dest> 10870 </dest>
10871 <voice> 10871 <voice>
10872 *: none 10872 *: none
10873 agc: "automaatiska pastiprinaajuma regulaacija" 10873 agc: "automaatiska pastiprinaajuma regulaacija"
10874 </voice> 10874 </voice>
10875</phrase> 10875</phrase>
10876<phrase> 10876<phrase>
10877 id: LANG_RECORDING_AGC_CLIPTIME 10877 id: LANG_RECORDING_AGC_CLIPTIME
10878 desc: in record settings 10878 desc: in record settings
10879 user: core 10879 user: core
10880 <source> 10880 <source>
10881 *: none 10881 *: none
10882 agc: "AGC clip time" 10882 agc: "AGC clip time"
10883 </source> 10883 </source>
10884 <dest> 10884 <dest>
10885 *: none 10885 *: none
10886 agc: "APR Ätrums" 10886 agc: "APR Ätrums"
10887 </dest> 10887 </dest>
10888 <voice> 10888 <voice>
10889 *: none 10889 *: none
10890 agc: "automaatiskaas pastiprinaajuma regulaacijas aatrums" 10890 agc: "automaatiskaas pastiprinaajuma regulaacijas aatrums"
10891 </voice> 10891 </voice>
10892</phrase> 10892</phrase>
10893<phrase> 10893<phrase>
10894 id: LANG_RECORDING_AGC_MAXGAIN 10894 id: LANG_RECORDING_AGC_MAXGAIN
10895 desc: AGC maximum gain in recording screen 10895 desc: AGC maximum gain in recording screen
10896 user: core 10896 user: core
10897 <source> 10897 <source>
10898 *: none 10898 *: none
10899 agc: "AGC max. gain" 10899 agc: "AGC max. gain"
10900 </source> 10900 </source>
10901 <dest> 10901 <dest>
10902 *: none 10902 *: none
10903 agc: "APR maks.skaļums" 10903 agc: "APR maks.skaļums"
10904 </dest> 10904 </dest>
10905 <voice> 10905 <voice>
10906 *: none 10906 *: none
10907 agc: "automaatiskaas pastiprinaajuma regulaacijas maksimaalais skaljums" 10907 agc: "automaatiskaas pastiprinaajuma regulaacijas maksimaalais skaljums"
10908 </voice> 10908 </voice>
10909</phrase> 10909</phrase>
10910<phrase> 10910<phrase>
10911 id: LANG_RECORDING_FILENAME 10911 id: LANG_RECORDING_FILENAME
10912 desc: Filename header in recording screen 10912 desc: Filename header in recording screen
10913 user: core 10913 user: core
10914 <source> 10914 <source>
10915 *: none 10915 *: none
10916 recording: "Filename:" 10916 recording: "Filename:"
10917 </source> 10917 </source>
10918 <dest> 10918 <dest>
10919 *: none 10919 *: none
10920 recording: "Faila nosaukums:" 10920 recording: "Faila nosaukums:"
10921 </dest> 10921 </dest>
10922 <voice> 10922 <voice>
10923 *: none 10923 *: none
10924 recording: "" 10924 recording: ""
10925 </voice> 10925 </voice>
10926</phrase> 10926</phrase>
10927<phrase> 10927<phrase>
10928 id: LANG_PM_CLIPCOUNT 10928 id: LANG_PM_CLIPCOUNT
10929 desc: in recording GUI, for recording peak meter. MAX 5 characters! 10929 desc: in recording GUI, for recording peak meter. MAX 5 characters!
10930 user: core 10930 user: core
10931 <source> 10931 <source>
10932 *: none 10932 *: none
10933 recording: "CLIP:" 10933 recording: "CLIP:"
10934 </source> 10934 </source>
10935 <dest> 10935 <dest>
10936 *: none 10936 *: none
10937 recording: "PÄ€RSN:" 10937 recording: "PÄ€RSN:"
10938 </dest> 10938 </dest>
10939 <voice> 10939 <voice>
10940 *: none 10940 *: none
10941 recording: "" 10941 recording: ""
10942 </voice> 10942 </voice>
10943</phrase> 10943</phrase>
10944<phrase> 10944<phrase>
10945 id: LANG_RECORDING_TIMESPLIT_REC 10945 id: LANG_RECORDING_TIMESPLIT_REC
10946 desc: Display of record timer interval setting, on the record screen 10946 desc: Display of record timer interval setting, on the record screen
10947 user: core 10947 user: core
10948 <source> 10948 <source>
10949 *: none 10949 *: none
10950 recording: "Split Time:" 10950 recording: "Split Time:"
10951 </source> 10951 </source>
10952 <dest> 10952 <dest>
10953 *: none 10953 *: none
10954 recording: "PÄrtraukuma Laiks:" 10954 recording: "PÄrtraukuma Laiks:"
10955 </dest> 10955 </dest>
10956 <voice> 10956 <voice>
10957 *: none 10957 *: none
10958 recording: "" 10958 recording: ""
10959 </voice> 10959 </voice>
10960</phrase> 10960</phrase>
10961<phrase> 10961<phrase>
10962 id: LANG_RECORDING_SIZE 10962 id: LANG_RECORDING_SIZE
10963 desc: Display of recorded file size 10963 desc: Display of recorded file size
10964 user: core 10964 user: core
10965 <source> 10965 <source>
10966 *: none 10966 *: none
10967 recording: "Size:" 10967 recording: "Size:"
10968 </source> 10968 </source>
10969 <dest> 10969 <dest>
10970 *: none 10970 *: none
10971 recording: "Izmērs:" 10971 recording: "Izmērs:"
10972 </dest> 10972 </dest>
10973 <voice> 10973 <voice>
10974 *: none 10974 *: none
10975 recording: "" 10975 recording: ""
10976 </voice> 10976 </voice>
10977</phrase> 10977</phrase>
10978<phrase> 10978<phrase>
10979 id: LANG_RECORDING_MONO_MODE 10979 id: LANG_RECORDING_MONO_MODE
10980 desc: in the recording settings 10980 desc: in the recording settings
10981 user: core 10981 user: core
10982 <source> 10982 <source>
10983 *: none 10983 *: none
10984 recording_swcodec: "Mono mode" 10984 recording_swcodec: "Mono mode"
10985 </source> 10985 </source>
10986 <dest> 10986 <dest>
10987 *: none 10987 *: none
10988 recording_swcodec: "Mono režīms" 10988 recording_swcodec: "Mono režīms"
10989 </dest> 10989 </dest>
10990 <voice> 10990 <voice>
10991 *: none 10991 *: none
10992 recording_swcodec: "mono rezhiims" 10992 recording_swcodec: "mono rezhiims"
10993 </voice> 10993 </voice>
10994</phrase> 10994</phrase>
10995<phrase> 10995<phrase>
10996 id: LANG_SEARCH_RESULTS 10996 id: LANG_SEARCH_RESULTS
10997 desc: title for the list of results displayed after searching in a playlist 10997 desc: title for the list of results displayed after searching in a playlist
10998 user: core 10998 user: core
10999 <source> 10999 <source>
11000 *: "Search Results" 11000 *: "Search Results"
11001 </source> 11001 </source>
11002 <dest> 11002 <dest>
11003 *: "MeklÄ“Å¡anas RezultÄti" 11003 *: "MeklÄ“Å¡anas RezultÄti"
11004 </dest> 11004 </dest>
11005 <voice> 11005 <voice>
11006 *: "mekleeshanas rezultaati" 11006 *: "mekleeshanas rezultaati"
11007 </voice> 11007 </voice>
11008</phrase> 11008</phrase>
11009<phrase> 11009<phrase>
11010 id: LANG_LEFT 11010 id: LANG_LEFT
11011 desc: Generic use of 'left' 11011 desc: Generic use of 'left'
11012 user: core 11012 user: core
11013 <source> 11013 <source>
11014 *: "Left" 11014 *: "Left"
11015 </source> 11015 </source>
11016 <dest> 11016 <dest>
11017 *: "Pa Kreisi" 11017 *: "Pa Kreisi"
11018 </dest> 11018 </dest>
11019 <voice> 11019 <voice>
11020 *: "pa kreisi" 11020 *: "pa kreisi"
11021 </voice> 11021 </voice>
11022</phrase> 11022</phrase>
11023<phrase> 11023<phrase>
11024 id: LANG_RIGHT 11024 id: LANG_RIGHT
11025 desc: Generic use of 'right' 11025 desc: Generic use of 'right'
11026 user: core 11026 user: core
11027 <source> 11027 <source>
11028 *: "Right" 11028 *: "Right"
11029 </source> 11029 </source>
11030 <dest> 11030 <dest>
11031 *: "Pa Labi" 11031 *: "Pa Labi"
11032 </dest> 11032 </dest>
11033 <voice> 11033 <voice>
11034 *: "pa labi" 11034 *: "pa labi"
11035 </voice> 11035 </voice>
11036</phrase> 11036</phrase>
11037<phrase> 11037<phrase>
11038 id: LANG_RESET_SETTING 11038 id: LANG_RESET_SETTING
11039 desc: used in the settings context menu 11039 desc: used in the settings context menu
11040 user: core 11040 user: core
11041 <source> 11041 <source>
11042 *: "Reset Setting" 11042 *: "Reset Setting"
11043 </source> 11043 </source>
11044 <dest> 11044 <dest>
11045 *: "Atjaunot UzstÄdÄ«jumu" 11045 *: "Atjaunot UzstÄdÄ«jumu"
11046 </dest> 11046 </dest>
11047 <voice> 11047 <voice>
11048 *: "atjaunot uzstaadiijumu" 11048 *: "atjaunot uzstaadiijumu"
11049 </voice> 11049 </voice>
11050</phrase> 11050</phrase>
11051<phrase> 11051<phrase>
11052 id: LANG_LEFT_QS_ITEM 11052 id: LANG_LEFT_QS_ITEM
11053 desc: used for the submenu name for the quickscreen items 11053 desc: used for the submenu name for the quickscreen items
11054 user: core 11054 user: core
11055 <source> 11055 <source>
11056 *: none 11056 *: none
11057 quickscreen: "Set as Left Quickscreen Item" 11057 quickscreen: "Set as Left Quickscreen Item"
11058 </source> 11058 </source>
11059 <dest> 11059 <dest>
11060 *: none 11060 *: none
11061 quickscreen: "Uzlikt KÄ Kr.Ä€tro UzstÄdÄ«jumu" 11061 quickscreen: "Uzlikt KÄ Kr.Ä€tro UzstÄdÄ«jumu"
11062 </dest> 11062 </dest>
11063 <voice> 11063 <voice>
11064 *: none 11064 *: none
11065 quickscreen: "uzlikt kaa kreiso aatro uzstaadiijumu" 11065 quickscreen: "uzlikt kaa kreiso aatro uzstaadiijumu"
11066 </voice> 11066 </voice>
11067</phrase> 11067</phrase>
11068<phrase> 11068<phrase>
11069 id: LANG_RIGHT_QS_ITEM 11069 id: LANG_RIGHT_QS_ITEM
11070 desc: used for the submenu name for the quickscreen items 11070 desc: used for the submenu name for the quickscreen items
11071 user: core 11071 user: core
11072 <source> 11072 <source>
11073 *: none 11073 *: none
11074 quickscreen: "Set as Right Quickscreen Item" 11074 quickscreen: "Set as Right Quickscreen Item"
11075 </source> 11075 </source>
11076 <dest> 11076 <dest>
11077 *: none 11077 *: none
11078 quickscreen: "Uzlikt KÄ L.Ä€tro UzstÄdÄ«jumu" 11078 quickscreen: "Uzlikt KÄ L.Ä€tro UzstÄdÄ«jumu"
11079 </dest> 11079 </dest>
11080 <voice> 11080 <voice>
11081 *: none 11081 *: none
11082 quickscreen: "uzliklt kaa labo aatro uzstaadiijumu" 11082 quickscreen: "uzliklt kaa labo aatro uzstaadiijumu"
11083 </voice> 11083 </voice>
11084</phrase> 11084</phrase>
11085<phrase> 11085<phrase>
11086 id: LANG_BOTTOM_QS_ITEM 11086 id: LANG_BOTTOM_QS_ITEM
11087 desc: used for the submenu name for the quickscreen items 11087 desc: used for the submenu name for the quickscreen items
11088 user: core 11088 user: core
11089 <source> 11089 <source>
11090 *: none 11090 *: none
11091 quickscreen: "Set as Bottom Quickscreen Item" 11091 quickscreen: "Set as Bottom Quickscreen Item"
11092 </source> 11092 </source>
11093 <dest> 11093 <dest>
11094 *: none 11094 *: none
11095 quickscreen: "Uzlikt KÄ Ap.Ä€tro UzstÄdÄ«jumu" 11095 quickscreen: "Uzlikt KÄ Ap.Ä€tro UzstÄdÄ«jumu"
11096 </dest> 11096 </dest>
11097 <voice> 11097 <voice>
11098 *: none 11098 *: none
11099 quickscreen: "uzlikt kaa apaksheejo aatro uzstaadiijumu" 11099 quickscreen: "uzlikt kaa apaksheejo aatro uzstaadiijumu"
11100 </voice> 11100 </voice>
11101</phrase> 11101</phrase>
11102<phrase> 11102<phrase>
11103 id: LANG_CREDITS 11103 id: LANG_CREDITS
11104 desc: in the Main Menu -> System screen 11104 desc: in the Main Menu -> System screen
11105 user: core 11105 user: core
11106 <source> 11106 <source>
11107 *: "Credits" 11107 *: "Credits"
11108 </source> 11108 </source>
11109 <dest> 11109 <dest>
11110 *: "Pateicības" 11110 *: "Pateicības"
11111 </dest> 11111 </dest>
11112 <voice> 11112 <voice>
11113 *: "pateiciibas" 11113 *: "pateiciibas"
11114 </voice> 11114 </voice>
11115</phrase> 11115</phrase>
11116<phrase> 11116<phrase>
11117 id: LANG_SORT_INTERPRET_NUMBERS 11117 id: LANG_SORT_INTERPRET_NUMBERS
11118 desc: in Settings -> File view 11118 desc: in Settings -> File view
11119 user: core 11119 user: core
11120 <source> 11120 <source>
11121 *: "Interpret numbers when sorting" 11121 *: "Interpret numbers when sorting"
11122 </source> 11122 </source>
11123 <dest> 11123 <dest>
11124 *: "Numuru InterpretÄcija KÄrtojot" 11124 *: "Numuru InterpretÄcija KÄrtojot"
11125 </dest> 11125 </dest>
11126 <voice> 11126 <voice>
11127 *: "numuru interpretaacija kaartojot" 11127 *: "numuru interpretaacija kaartojot"
11128 </voice> 11128 </voice>
11129</phrase> 11129</phrase>
11130<phrase> 11130<phrase>
11131 id: LANG_SORT_INTERPRET_AS_DIGIT 11131 id: LANG_SORT_INTERPRET_AS_DIGIT
11132 desc: in Settings -> File view 11132 desc: in Settings -> File view
11133 user: core 11133 user: core
11134 <source> 11134 <source>
11135 *: "As digits" 11135 *: "As digits"
11136 </source> 11136 </source>
11137 <dest> 11137 <dest>
11138 *: "KÄ ciparus" 11138 *: "KÄ ciparus"
11139 </dest> 11139 </dest>
11140 <voice> 11140 <voice>
11141 *: "kaa ciparus" 11141 *: "kaa ciparus"
11142 </voice> 11142 </voice>
11143</phrase> 11143</phrase>
11144<phrase> 11144<phrase>
11145 id: LANG_SORT_INTERPRET_AS_NUMBERS 11145 id: LANG_SORT_INTERPRET_AS_NUMBERS
11146 desc: in Settings -> File view 11146 desc: in Settings -> File view
11147 user: core 11147 user: core
11148 <source> 11148 <source>
11149 *: "As whole numbers" 11149 *: "As whole numbers"
11150 </source> 11150 </source>
11151 <dest> 11151 <dest>
11152 *: "KÄ numurus" 11152 *: "KÄ numurus"
11153 </dest> 11153 </dest>
11154 <voice> 11154 <voice>
11155 *: "kaa numurus" 11155 *: "kaa numurus"
11156 </voice> 11156 </voice>
11157</phrase> 11157</phrase>
11158<phrase> 11158<phrase>
11159 id: LANG_ENABLE_SPEAKER 11159 id: LANG_ENABLE_SPEAKER
11160 desc: in Settings -> Sound Settings 11160 desc: in Settings -> Sound Settings
11161 user: core 11161 user: core
11162 <source> 11162 <source>
11163 *: none 11163 *: none
11164 speaker: "Enable Speaker" 11164 speaker: "Enable Speaker"
11165 </source> 11165 </source>
11166 <dest> 11166 <dest>
11167 *: none 11167 *: none
11168 speaker: "Ieslēgt Skaļruni" 11168 speaker: "Ieslēgt Skaļruni"
11169 </dest> 11169 </dest>
11170 <voice> 11170 <voice>
11171 *: none 11171 *: none
11172 speaker: "iesleegt skaljruni" 11172 speaker: "iesleegt skaljruni"
11173 </voice> 11173 </voice>
11174</phrase> 11174</phrase>
11175<phrase> 11175<phrase>
11176 id: LANG_TOUCHSCREEN_MODE 11176 id: LANG_TOUCHSCREEN_MODE
11177 desc: in Settings -> General -> Display -> Touchscreen Settings 11177 desc: in Settings -> General -> Display -> Touchscreen Settings
11178 user: core 11178 user: core
11179 <source> 11179 <source>
11180 *: none 11180 *: none
11181 touchscreen: "Touchscreen Mode" 11181 touchscreen: "Touchscreen Mode"
11182 </source> 11182 </source>
11183 <dest> 11183 <dest>
11184 *: none 11184 *: none
11185 touchscreen: "SkÄrienjÅ«tÄ«gais EkrÄns" 11185 touchscreen: "SkÄrienjÅ«tÄ«gais EkrÄns"
11186 </dest> 11186 </dest>
11187 <voice> 11187 <voice>
11188 *: none 11188 *: none
11189 touchscreen: "skaarienjuutiigais ekraans" 11189 touchscreen: "skaarienjuutiigais ekraans"
11190 </voice> 11190 </voice>
11191</phrase> 11191</phrase>
11192<phrase> 11192<phrase>
11193 id: LANG_TOUCHSCREEN_GRID 11193 id: LANG_TOUCHSCREEN_GRID
11194 desc: in Settings -> General -> Display -> Touchscreen Settings 11194 desc: in Settings -> General -> Display -> Touchscreen Settings
11195 user: core 11195 user: core
11196 <source> 11196 <source>
11197 *: none 11197 *: none
11198 touchscreen: "3x3 Grid" 11198 touchscreen: "3x3 Grid"
11199 </source> 11199 </source>
11200 <dest> 11200 <dest>
11201 *: none 11201 *: none
11202 touchscreen: "3x3 TÄ«kls" 11202 touchscreen: "3x3 TÄ«kls"
11203 </dest> 11203 </dest>
11204 <voice> 11204 <voice>
11205 *: none 11205 *: none
11206 touchscreen: "triis reiz triis tiikls" 11206 touchscreen: "triis reiz triis tiikls"
11207 </voice> 11207 </voice>
11208</phrase> 11208</phrase>
11209<phrase> 11209<phrase>
11210 id: LANG_TOUCHSCREEN_POINT 11210 id: LANG_TOUCHSCREEN_POINT
11211 desc: in Settings -> General -> Display -> Touchscreen Settings 11211 desc: in Settings -> General -> Display -> Touchscreen Settings
11212 user: core 11212 user: core
11213 <source> 11213 <source>
11214 *: none 11214 *: none
11215 touchscreen: "Absolute Point" 11215 touchscreen: "Absolute Point"
11216 </source> 11216 </source>
11217 <dest> 11217 <dest>
11218 *: none 11218 *: none
11219 touchscreen: "Absolūtais Punkts" 11219 touchscreen: "Absolūtais Punkts"
11220 </dest> 11220 </dest>
11221 <voice> 11221 <voice>
11222 *: none 11222 *: none
11223 touchscreen: "absoluutais punkts" 11223 touchscreen: "absoluutais punkts"
11224 </voice> 11224 </voice>
11225</phrase> 11225</phrase>
11226<phrase> 11226<phrase>
11227 id: LANG_PREVENT_SKIPPING 11227 id: LANG_PREVENT_SKIPPING
11228 desc: in Settings -> Playback Settings 11228 desc: in Settings -> Playback Settings
11229 user: core 11229 user: core
11230 <source> 11230 <source>
11231 *: "Prevent Track Skipping" 11231 *: "Prevent Track Skipping"
11232 </source> 11232 </source>
11233 <dest> 11233 <dest>
11234 *: "Novērst Dziesmu Izlaišanu" 11234 *: "Novērst Dziesmu Izlaišanu"
11235 </dest> 11235 </dest>
11236 <voice> 11236 <voice>
11237 *: "noveerst dziesmu izlaishanu" 11237 *: "noveerst dziesmu izlaishanu"
11238 </voice> 11238 </voice>
11239</phrase> 11239</phrase>
11240<phrase> 11240<phrase>
11241 id: LANG_TIMESTRETCH 11241 id: LANG_TIMESTRETCH
11242 desc: timestretch enable 11242 desc: timestretch enable
11243 user: core 11243 user: core
11244 <source> 11244 <source>
11245 *: none 11245 *: none
11246 swcodec: "Timestretch" 11246 swcodec: "Timestretch"
11247 </source> 11247 </source>
11248 <dest> 11248 <dest>
11249 *: none 11249 *: none
11250 swcodec: "Ātruma Maiņa" 11250 swcodec: "Ātruma Maiņa"
11251 </dest> 11251 </dest>
11252 <voice> 11252 <voice>
11253 *: none 11253 *: none
11254 swcodec: "aatruma mainja" 11254 swcodec: "aatruma mainja"
11255 </voice> 11255 </voice>
11256</phrase> 11256</phrase>
11257<phrase> 11257<phrase>
11258 id: LANG_SPEED 11258 id: LANG_SPEED
11259 desc: timestretch speed 11259 desc: timestretch speed
11260 user: core 11260 user: core
11261 <source> 11261 <source>
11262 *: none 11262 *: none
11263 swcodec: "Speed" 11263 swcodec: "Speed"
11264 </source> 11264 </source>
11265 <dest> 11265 <dest>
11266 *: none 11266 *: none
11267 swcodec: "Ä€trums" 11267 swcodec: "Ä€trums"
11268 </dest> 11268 </dest>
11269 <voice> 11269 <voice>
11270 *: none 11270 *: none
11271 swcodec: "aatrums" 11271 swcodec: "aatrums"
11272 </voice> 11272 </voice>
11273</phrase> 11273</phrase>
11274<phrase> 11274<phrase>
11275 id: LANG_TOUCHSCREEN_SETTINGS 11275 id: LANG_TOUCHSCREEN_SETTINGS
11276 desc: in Settings -> General -> Display menu 11276 desc: in Settings -> General -> Display menu
11277 user: core 11277 user: core
11278 <source> 11278 <source>
11279 *: none 11279 *: none
11280 touchscreen: "Touchscreen Settings" 11280 touchscreen: "Touchscreen Settings"
11281 </source> 11281 </source>
11282 <dest> 11282 <dest>
11283 *: none 11283 *: none
11284 touchscreen: "Sk.EkrÄna UzstÄdÄ«jumi" 11284 touchscreen: "Sk.EkrÄna UzstÄdÄ«jumi"
11285 </dest> 11285 </dest>
11286 <voice> 11286 <voice>
11287 *: none 11287 *: none
11288 touchscreen: "skaarienjuutiigaa ekraana uzstaadiijumi" 11288 touchscreen: "skaarienjuutiigaa ekraana uzstaadiijumi"
11289 </voice> 11289 </voice>
11290</phrase> 11290</phrase>
11291<phrase> 11291<phrase>
11292 id: LANG_TOUCHSCREEN_CALIBRATE 11292 id: LANG_TOUCHSCREEN_CALIBRATE
11293 desc: in Settings -> General -> Display -> Touchscreen Settings 11293 desc: in Settings -> General -> Display -> Touchscreen Settings
11294 user: core 11294 user: core
11295 <source> 11295 <source>
11296 *: none 11296 *: none
11297 touchscreen: "Calibrate" 11297 touchscreen: "Calibrate"
11298 </source> 11298 </source>
11299 <dest> 11299 <dest>
11300 *: none 11300 *: none
11301 touchscreen: "Kalibrēt" 11301 touchscreen: "Kalibrēt"
11302 </dest> 11302 </dest>
11303 <voice> 11303 <voice>
11304 *: none 11304 *: none
11305 touchscreen: "kalibreet" 11305 touchscreen: "kalibreet"
11306 </voice> 11306 </voice>
11307</phrase> 11307</phrase>
11308<phrase> 11308<phrase>
11309 id: LANG_TOUCHSCREEN_RESET_CALIBRATION 11309 id: LANG_TOUCHSCREEN_RESET_CALIBRATION
11310 desc: in Settings -> General -> Display -> Touchscreen Settings 11310 desc: in Settings -> General -> Display -> Touchscreen Settings
11311 user: core 11311 user: core
11312 <source> 11312 <source>
11313 *: none 11313 *: none
11314 touchscreen: "Reset Calibration" 11314 touchscreen: "Reset Calibration"
11315 </source> 11315 </source>
11316 <dest> 11316 <dest>
11317 *: none 11317 *: none
11318 touchscreen: "IzdzÄ“st KalibrÄciju" 11318 touchscreen: "IzdzÄ“st KalibrÄciju"
11319 </dest> 11319 </dest>
11320 <voice> 11320 <voice>
11321 *: none 11321 *: none
11322 touchscreen: "izdzeest kalibraaciju" 11322 touchscreen: "izdzeest kalibraaciju"
11323 </voice> 11323 </voice>
11324</phrase> 11324</phrase>
11325<phrase> 11325<phrase>
11326 id: LANG_STATUSBAR_TOP 11326 id: LANG_STATUSBAR_TOP
11327 desc: in Settings -> General -> Display -> statusbar 11327 desc: in Settings -> General -> Display -> statusbar
11328 user: core 11328 user: core
11329 <source> 11329 <source>
11330 *: "Top" 11330 *: "Top"
11331 </source> 11331 </source>
11332 <dest> 11332 <dest>
11333 *: "AugÅ¡Ä" 11333 *: "AugÅ¡Ä"
11334 </dest> 11334 </dest>
11335 <voice> 11335 <voice>
11336 *: "augshaa" 11336 *: "augshaa"
11337 </voice> 11337 </voice>
11338</phrase> 11338</phrase>
11339<phrase> 11339<phrase>
11340 id: LANG_STATUSBAR_BOTTOM 11340 id: LANG_STATUSBAR_BOTTOM
11341 desc: in Settings -> General -> Display -> statusbar 11341 desc: in Settings -> General -> Display -> statusbar
11342 user: core 11342 user: core
11343 <source> 11343 <source>
11344 *: "Bottom" 11344 *: "Bottom"
11345 </source> 11345 </source>
11346 <dest> 11346 <dest>
11347 *: "ApakÅ¡Ä" 11347 *: "ApakÅ¡Ä"
11348 </dest> 11348 </dest>
11349 <voice> 11349 <voice>
11350 *: "apakshaa" 11350 *: "apakshaa"
11351 </voice> 11351 </voice>
11352</phrase> 11352</phrase>
11353<phrase> 11353<phrase>
11354 id: LANG_REMOTE_STATUSBAR 11354 id: LANG_REMOTE_STATUSBAR
11355 desc: in Settings -> General -> Display -> statusbar 11355 desc: in Settings -> General -> Display -> statusbar
11356 user: core 11356 user: core
11357 <source> 11357 <source>
11358 *: none 11358 *: none
11359 remote: "Remote Statusbar" 11359 remote: "Remote Statusbar"
11360 </source> 11360 </source>
11361 <dest> 11361 <dest>
11362 *: none 11362 *: none
11363 remote: "Pults Statusajosla" 11363 remote: "Pults Statusajosla"
11364 </dest> 11364 </dest>
11365 <voice> 11365 <voice>
11366 *: none 11366 *: none
11367 remote: "pults statusa josla" 11367 remote: "pults statusa josla"
11368 </voice> 11368 </voice>
11369</phrase> 11369</phrase>
11370<phrase> 11370<phrase>
11371 id: LANG_SEMITONE 11371 id: LANG_SEMITONE
11372 desc: 11372 desc:
11373 user: core 11373 user: core
11374 <source> 11374 <source>
11375 *: none 11375 *: none
11376 pitchscreen: "Semitone" 11376 pitchscreen: "Semitone"
11377 </source> 11377 </source>
11378 <dest> 11378 <dest>
11379 *: none 11379 *: none
11380 pitchscreen: "Pustonis" 11380 pitchscreen: "Pustonis"
11381 </dest> 11381 </dest>
11382 <voice> 11382 <voice>
11383 *: none 11383 *: none
11384 pitchscreen: "pustonis" 11384 pitchscreen: "pustonis"
11385 </voice> 11385 </voice>
11386</phrase> 11386</phrase>
11387<phrase> 11387<phrase>
11388 id: LANG_STRETCH_LIMIT 11388 id: LANG_STRETCH_LIMIT
11389 desc: "limit" in pitch screen 11389 desc: "limit" in pitch screen
11390 user: core 11390 user: core
11391 <source> 11391 <source>
11392 *: none 11392 *: none
11393 pitchscreen: "Limit" 11393 pitchscreen: "Limit"
11394 </source> 11394 </source>
11395 <dest> 11395 <dest>
11396 *: none 11396 *: none
11397 pitchscreen: "Ierobežojums" 11397 pitchscreen: "Ierobežojums"
11398 </dest> 11398 </dest>
11399 <voice> 11399 <voice>
11400 *: none 11400 *: none
11401 pitchscreen: "ierobezhojums" 11401 pitchscreen: "ierobezhojums"
11402 </voice> 11402 </voice>
11403</phrase> 11403</phrase>
11404<phrase> 11404<phrase>
11405 id: LANG_PLAYBACK_RATE 11405 id: LANG_PLAYBACK_RATE
11406 desc: "rate" in pitch screen 11406 desc: "rate" in pitch screen
11407 user: core 11407 user: core
11408 <source> 11408 <source>
11409 *: none 11409 *: none
11410 pitchscreen: "Rate" 11410 pitchscreen: "Rate"
11411 </source> 11411 </source>
11412 <dest> 11412 <dest>
11413 *: none 11413 *: none
11414 pitchscreen: "Ä€trums" 11414 pitchscreen: "Ä€trums"
11415 </dest> 11415 </dest>
11416 <voice> 11416 <voice>
11417 *: none 11417 *: none
11418 pitchscreen: "aatrums" 11418 pitchscreen: "aatrums"
11419 </voice> 11419 </voice>
11420</phrase> 11420</phrase>
11421<phrase> 11421<phrase>
11422 id: LANG_USB_KEYPAD_MODE 11422 id: LANG_USB_KEYPAD_MODE
11423 desc: in settings_menu 11423 desc: in settings_menu
11424 user: core 11424 user: core
11425 <source> 11425 <source>
11426 *: none 11426 *: none
11427 usb_hid: "USB Keypad Mode" 11427 usb_hid: "USB Keypad Mode"
11428 </source> 11428 </source>
11429 <dest> 11429 <dest>
11430 *: none 11430 *: none
11431 usb_hid: "USB Klaviatūras Režīms" 11431 usb_hid: "USB Klaviatūras Režīms"
11432 </dest> 11432 </dest>
11433 <voice> 11433 <voice>
11434 *: none 11434 *: none
11435 usb_hid: "uuesbee klaviatuuras rezhiims" 11435 usb_hid: "uuesbee klaviatuuras rezhiims"
11436 </voice> 11436 </voice>
11437</phrase> 11437</phrase>
11438<phrase> 11438<phrase>
11439 id: LANG_MULTIMEDIA_MODE 11439 id: LANG_MULTIMEDIA_MODE
11440 desc: in settings_menu 11440 desc: in settings_menu
11441 user: core 11441 user: core
11442 <source> 11442 <source>
11443 *: none 11443 *: none
11444 usb_hid: "Multimedia" 11444 usb_hid: "Multimedia"
11445 </source> 11445 </source>
11446 <dest> 11446 <dest>
11447 *: none 11447 *: none
11448 usb_hid: "Multimēdiju" 11448 usb_hid: "Multimēdiju"
11449 </dest> 11449 </dest>
11450 <voice> 11450 <voice>
11451 *: none 11451 *: none
11452 usb_hid: "multimeediju" 11452 usb_hid: "multimeediju"
11453 </voice> 11453 </voice>
11454</phrase> 11454</phrase>
11455<phrase> 11455<phrase>
11456 id: LANG_PRESENTATION_MODE 11456 id: LANG_PRESENTATION_MODE
11457 desc: in settings_menu 11457 desc: in settings_menu
11458 user: core 11458 user: core
11459 <source> 11459 <source>
11460 *: none 11460 *: none
11461 usb_hid: "Presentation" 11461 usb_hid: "Presentation"
11462 </source> 11462 </source>
11463 <dest> 11463 <dest>
11464 *: none 11464 *: none
11465 usb_hid: "PrezentÄciju" 11465 usb_hid: "PrezentÄciju"
11466 </dest> 11466 </dest>
11467 <voice> 11467 <voice>
11468 *: none 11468 *: none
11469 usb_hid: "prezentaaciju" 11469 usb_hid: "prezentaaciju"
11470 </voice> 11470 </voice>
11471</phrase> 11471</phrase>
11472<phrase> 11472<phrase>
11473 id: LANG_BROWSER_MODE 11473 id: LANG_BROWSER_MODE
11474 desc: in settings_menu 11474 desc: in settings_menu
11475 user: core 11475 user: core
11476 <source> 11476 <source>
11477 *: none 11477 *: none
11478 usb_hid: "Browser" 11478 usb_hid: "Browser"
11479 </source> 11479 </source>
11480 <dest> 11480 <dest>
11481 *: none 11481 *: none
11482 usb_hid: "PÄrlÅ«ks" 11482 usb_hid: "PÄrlÅ«ks"
11483 </dest> 11483 </dest>
11484 <voice> 11484 <voice>
11485 *: none 11485 *: none
11486 usb_hid: "paarluuka" 11486 usb_hid: "paarluuka"
11487 </voice> 11487 </voice>
11488</phrase> 11488</phrase>
11489<phrase> 11489<phrase>
11490 id: LANG_MOUSE_MODE 11490 id: LANG_MOUSE_MODE
11491 desc: in settings_menu 11491 desc: in settings_menu
11492 user: core 11492 user: core
11493 <source> 11493 <source>
11494 *: none 11494 *: none
11495 usb_hid: "Mouse" 11495 usb_hid: "Mouse"
11496 </source> 11496 </source>
11497 <dest> 11497 <dest>
11498 *: none 11498 *: none
11499 usb_hid: "Pele" 11499 usb_hid: "Pele"
11500 </dest> 11500 </dest>
11501 <voice> 11501 <voice>
11502 *: none 11502 *: none
11503 usb_hid: "pele" 11503 usb_hid: "pele"
11504 </voice> 11504 </voice>
11505</phrase> 11505</phrase>
11506<phrase> 11506<phrase>
11507 id: LANG_SKIN_RAM_USAGE 11507 id: LANG_SKIN_RAM_USAGE
11508 desc: how much RAM the skins are using 11508 desc: how much RAM the skins are using
11509 user: core 11509 user: core
11510 <source> 11510 <source>
11511 *: "Skin RAM usage:" 11511 *: "Skin RAM usage:"
11512 </source> 11512 </source>
11513 <dest> 11513 <dest>
11514 *: "Ä€das RAM izl.:" 11514 *: "Ä€das RAM izl.:"
11515 </dest> 11515 </dest>
11516 <voice> 11516 <voice>
11517 *: "aadas ram izlietojums" 11517 *: "aadas ram izlietojums"
11518 </voice> 11518 </voice>
11519</phrase> 11519</phrase>
11520<phrase> 11520<phrase>
11521 id: LANG_SCROLLBAR_WIDTH 11521 id: LANG_SCROLLBAR_WIDTH
11522 desc: in Settings -> General -> Display -> Status-/Scrollbar 11522 desc: in Settings -> General -> Display -> Status-/Scrollbar
11523 user: core 11523 user: core
11524 <source> 11524 <source>
11525 *: none 11525 *: none
11526 lcd_bitmap: "Scroll Bar Width" 11526 lcd_bitmap: "Scroll Bar Width"
11527 </source> 11527 </source>
11528 <dest> 11528 <dest>
11529 *: none 11529 *: none
11530 lcd_bitmap: "Rulljoslas Platums" 11530 lcd_bitmap: "Rulljoslas Platums"
11531 </dest> 11531 </dest>
11532 <voice> 11532 <voice>
11533 *: none 11533 *: none
11534 lcd_bitmap: "rulljoslas platums" 11534 lcd_bitmap: "rulljoslas platums"
11535 </voice> 11535 </voice>
11536</phrase> 11536</phrase>
11537<phrase> 11537<phrase>
11538 id: LANG_SCROLLBAR_POSITION 11538 id: LANG_SCROLLBAR_POSITION
11539 desc: in Settings -> General -> Display -> Status-/Scrollbar 11539 desc: in Settings -> General -> Display -> Status-/Scrollbar
11540 user: core 11540 user: core
11541 <source> 11541 <source>
11542 *: none 11542 *: none
11543 lcd_bitmap: "Scroll Bar Position" 11543 lcd_bitmap: "Scroll Bar Position"
11544 </source> 11544 </source>
11545 <dest> 11545 <dest>
11546 *: none 11546 *: none
11547 lcd_bitmap: "Rulljoslas Pozīcija" 11547 lcd_bitmap: "Rulljoslas Pozīcija"
11548 </dest> 11548 </dest>
11549 <voice> 11549 <voice>
11550 *: none 11550 *: none
11551 lcd_bitmap: "rulljoslas poziicija" 11551 lcd_bitmap: "rulljoslas poziicija"
11552 </voice> 11552 </voice>
11553</phrase> 11553</phrase>
11554<phrase> 11554<phrase>
11555 id: LANG_COMPRESSOR 11555 id: LANG_COMPRESSOR
11556 desc: in sound settings 11556 desc: in sound settings
11557 user: core 11557 user: core
11558 <source> 11558 <source>
11559 *: none 11559 *: none
11560 swcodec: "Compressor" 11560 swcodec: "Compressor"
11561 </source> 11561 </source>
11562 <dest> 11562 <dest>
11563 *: none 11563 *: none
11564 swcodec: "Kompresors" 11564 swcodec: "Kompresors"
11565 </dest> 11565 </dest>
11566 <voice> 11566 <voice>
11567 *: none 11567 *: none
11568 swcodec: "kompresors" 11568 swcodec: "kompresors"
11569 </voice> 11569 </voice>
11570</phrase> 11570</phrase>
11571<phrase> 11571<phrase>
11572 id: LANG_TOP_QS_ITEM 11572 id: LANG_TOP_QS_ITEM
11573 desc: used for the submenu name for the quickscreen items 11573 desc: used for the submenu name for the quickscreen items
11574 user: core 11574 user: core
11575 <source> 11575 <source>
11576 *: none 11576 *: none
11577 quickscreen: "Set as Top Quickscreen Item" 11577 quickscreen: "Set as Top Quickscreen Item"
11578 </source> 11578 </source>
11579 <dest> 11579 <dest>
11580 *: none 11580 *: none
11581 quickscreen: "Uzlikt KÄ Aug.Ä€tro UzstÄdÄ«jumu" 11581 quickscreen: "Uzlikt KÄ Aug.Ä€tro UzstÄdÄ«jumu"
11582 </dest> 11582 </dest>
11583 <voice> 11583 <voice>
11584 *: none 11584 *: none
11585 quickscreen: "uzlikt kaa augsheejo aatro uzstaadiijumu" 11585 quickscreen: "uzlikt kaa augsheejo aatro uzstaadiijumu"
11586 </voice> 11586 </voice>
11587</phrase> 11587</phrase>
11588<phrase> 11588<phrase>
11589 id: LANG_FM_ITALY 11589 id: LANG_FM_ITALY
11590 desc: fm region Italy 11590 desc: fm region Italy
11591 user: core 11591 user: core
11592 <source> 11592 <source>
11593 *: none 11593 *: none
11594 radio: "Italy" 11594 radio: "Italy"
11595 </source> 11595 </source>
11596 <dest> 11596 <dest>
11597 *: none 11597 *: none
11598 radio: "ItÄlija" 11598 radio: "ItÄlija"
11599 </dest> 11599 </dest>
11600 <voice> 11600 <voice>
11601 *: none 11601 *: none
11602 radio: "itaalija" 11602 radio: "itaalija"
11603 </voice> 11603 </voice>
11604</phrase> 11604</phrase>
11605<phrase> 11605<phrase>
11606 id: LANG_FM_OTHER 11606 id: LANG_FM_OTHER
11607 desc: Catch-all FM region. Select if none of the others work 11607 desc: Catch-all FM region. Select if none of the others work
11608 user: core 11608 user: core
11609 <source> 11609 <source>
11610 *: none 11610 *: none
11611 radio: "Other" 11611 radio: "Other"
11612 </source> 11612 </source>
11613 <dest> 11613 <dest>
11614 *: none 11614 *: none
11615 radio: "Cits" 11615 radio: "Cits"
11616 </dest> 11616 </dest>
11617 <voice> 11617 <voice>
11618 *: none 11618 *: none
11619 radio: "cits" 11619 radio: "cits"
11620 </voice> 11620 </voice>
11621</phrase> 11621</phrase>
11622<phrase> 11622<phrase>
11623 id: LANG_COMPRESSOR_THRESHOLD 11623 id: LANG_COMPRESSOR_THRESHOLD
11624 desc: in sound settings 11624 desc: in sound settings
11625 user: core 11625 user: core
11626 <source> 11626 <source>
11627 *: none 11627 *: none
11628 swcodec: "Threshold" 11628 swcodec: "Threshold"
11629 </source> 11629 </source>
11630 <dest> 11630 <dest>
11631 *: none 11631 *: none
11632 swcodec: "Slieksnis" 11632 swcodec: "Slieksnis"
11633 </dest> 11633 </dest>
11634 <voice> 11634 <voice>
11635 *: none 11635 *: none
11636 swcodec: "slieksnis" 11636 swcodec: "slieksnis"
11637 </voice> 11637 </voice>
11638</phrase> 11638</phrase>
11639<phrase> 11639<phrase>
11640 id: LANG_COMPRESSOR_RATIO 11640 id: LANG_COMPRESSOR_RATIO
11641 desc: in sound settings 11641 desc: in sound settings
11642 user: core 11642 user: core
11643 <source> 11643 <source>
11644 *: none 11644 *: none
11645 swcodec: "Ratio" 11645 swcodec: "Ratio"
11646 </source> 11646 </source>
11647 <dest> 11647 <dest>
11648 *: none 11648 *: none
11649 swcodec: "Attiecība" 11649 swcodec: "Attiecība"
11650 </dest> 11650 </dest>
11651 <voice> 11651 <voice>
11652 *: none 11652 *: none
11653 swcodec: "attieciiba" 11653 swcodec: "attieciiba"
11654 </voice> 11654 </voice>
11655</phrase> 11655</phrase>
11656<phrase> 11656<phrase>
11657 id: LANG_COMPRESSOR_RATIO_2 11657 id: LANG_COMPRESSOR_RATIO_2
11658 desc: in sound settings 11658 desc: in sound settings
11659 user: core 11659 user: core
11660 <source> 11660 <source>
11661 *: none 11661 *: none
11662 swcodec: "2:1" 11662 swcodec: "2:1"
11663 </source> 11663 </source>
11664 <dest> 11664 <dest>
11665 *: none 11665 *: none
11666 swcodec: "2:1" 11666 swcodec: "2:1"
11667 </dest> 11667 </dest>
11668 <voice> 11668 <voice>
11669 *: none 11669 *: none
11670 swcodec: "divi pret vienu" 11670 swcodec: "divi pret vienu"
11671 </voice> 11671 </voice>
11672</phrase> 11672</phrase>
11673<phrase> 11673<phrase>
11674 id: LANG_COMPRESSOR_RATIO_4 11674 id: LANG_COMPRESSOR_RATIO_4
11675 desc: in sound settings 11675 desc: in sound settings
11676 user: core 11676 user: core
11677 <source> 11677 <source>
11678 *: none 11678 *: none
11679 swcodec: "4:1" 11679 swcodec: "4:1"
11680 </source> 11680 </source>
11681 <dest> 11681 <dest>
11682 *: none 11682 *: none
11683 swcodec: "4:1" 11683 swcodec: "4:1"
11684 </dest> 11684 </dest>
11685 <voice> 11685 <voice>
11686 *: none 11686 *: none
11687 swcodec: "chetri pret vienu" 11687 swcodec: "chetri pret vienu"
11688 </voice> 11688 </voice>
11689</phrase> 11689</phrase>
11690<phrase> 11690<phrase>
11691 id: LANG_COMPRESSOR_RATIO_6 11691 id: LANG_COMPRESSOR_RATIO_6
11692 desc: in sound settings 11692 desc: in sound settings
11693 user: core 11693 user: core
11694 <source> 11694 <source>
11695 *: none 11695 *: none
11696 swcodec: "6:1" 11696 swcodec: "6:1"
11697 </source> 11697 </source>
11698 <dest> 11698 <dest>
11699 *: none 11699 *: none
11700 swcodec: "6:1" 11700 swcodec: "6:1"
11701 </dest> 11701 </dest>
11702 <voice> 11702 <voice>
11703 *: none 11703 *: none
11704 swcodec: "seshi pret vienu" 11704 swcodec: "seshi pret vienu"
11705 </voice> 11705 </voice>
11706</phrase> 11706</phrase>
11707<phrase> 11707<phrase>
11708 id: LANG_COMPRESSOR_RATIO_10 11708 id: LANG_COMPRESSOR_RATIO_10
11709 desc: in sound settings 11709 desc: in sound settings
11710 user: core 11710 user: core
11711 <source> 11711 <source>
11712 *: none 11712 *: none
11713 swcodec: "10:1" 11713 swcodec: "10:1"
11714 </source> 11714 </source>
11715 <dest> 11715 <dest>
11716 *: none 11716 *: none
11717 swcodec: "10:1" 11717 swcodec: "10:1"
11718 </dest> 11718 </dest>
11719 <voice> 11719 <voice>
11720 *: none 11720 *: none
11721 swcodec: "desmit pret vienu" 11721 swcodec: "desmit pret vienu"
11722 </voice> 11722 </voice>
11723</phrase> 11723</phrase>
11724<phrase> 11724<phrase>
11725 id: LANG_COMPRESSOR_RATIO_LIMIT 11725 id: LANG_COMPRESSOR_RATIO_LIMIT
11726 desc: in sound settings 11726 desc: in sound settings
11727 user: core 11727 user: core
11728 <source> 11728 <source>
11729 *: none 11729 *: none
11730 swcodec: "Limit" 11730 swcodec: "Limit"
11731 </source> 11731 </source>
11732 <dest> 11732 <dest>
11733 *: none 11733 *: none
11734 swcodec: "Ierobežojums" 11734 swcodec: "Ierobežojums"
11735 </dest> 11735 </dest>
11736 <voice> 11736 <voice>
11737 *: none 11737 *: none
11738 swcodec: "ierobezhojums" 11738 swcodec: "ierobezhojums"
11739 </voice> 11739 </voice>
11740</phrase> 11740</phrase>
11741<phrase> 11741<phrase>
11742 id: LANG_COMPRESSOR_GAIN 11742 id: LANG_COMPRESSOR_GAIN
11743 desc: in sound settings 11743 desc: in sound settings
11744 user: core 11744 user: core
11745 <source> 11745 <source>
11746 *: none 11746 *: none
11747 swcodec: "Makeup Gain" 11747 swcodec: "Makeup Gain"
11748 </source> 11748 </source>
11749 <dest> 11749 <dest>
11750 *: none 11750 *: none
11751 swcodec: "Beigu PastiprinÄjums" 11751 swcodec: "Beigu PastiprinÄjums"
11752 </dest> 11752 </dest>
11753 <voice> 11753 <voice>
11754 *: none 11754 *: none
11755 swcodec: "beigu pastiprinaajums" 11755 swcodec: "beigu pastiprinaajums"
11756 </voice> 11756 </voice>
11757</phrase> 11757</phrase>
11758<phrase> 11758<phrase>
11759 id: LANG_AUTO 11759 id: LANG_AUTO
11760 desc: in sound settings 11760 desc: in sound settings
11761 user: core 11761 user: core
11762 <source> 11762 <source>
11763 *: none 11763 *: none
11764 swcodec: "Auto" 11764 swcodec: "Auto"
11765 </source> 11765 </source>
11766 <dest> 11766 <dest>
11767 *: none 11767 *: none
11768 swcodec: "AutomÄtisks" 11768 swcodec: "AutomÄtisks"
11769 </dest> 11769 </dest>
11770 <voice> 11770 <voice>
11771 *: none 11771 *: none
11772 swcodec: "automaatisks" 11772 swcodec: "automaatisks"
11773 </voice> 11773 </voice>
11774</phrase> 11774</phrase>
11775<phrase> 11775<phrase>
11776 id: LANG_COMPRESSOR_KNEE 11776 id: LANG_COMPRESSOR_KNEE
11777 desc: in sound settings 11777 desc: in sound settings
11778 user: core 11778 user: core
11779 <source> 11779 <source>
11780 *: none 11780 *: none
11781 swcodec: "Knee" 11781 swcodec: "Knee"
11782 </source> 11782 </source>
11783 <dest> 11783 <dest>
11784 *: none 11784 *: none
11785 swcodec: "PÄreja" 11785 swcodec: "PÄreja"
11786 </dest> 11786 </dest>
11787 <voice> 11787 <voice>
11788 *: none 11788 *: none
11789 swcodec: "paareja" 11789 swcodec: "paareja"
11790 </voice> 11790 </voice>
11791</phrase> 11791</phrase>
11792<phrase> 11792<phrase>
11793 id: LANG_COMPRESSOR_HARD_KNEE 11793 id: LANG_COMPRESSOR_HARD_KNEE
11794 desc: in sound settings 11794 desc: in sound settings
11795 user: core 11795 user: core
11796 <source> 11796 <source>
11797 *: none 11797 *: none
11798 swcodec: "Hard Knee" 11798 swcodec: "Hard Knee"
11799 </source> 11799 </source>
11800 <dest> 11800 <dest>
11801 *: none 11801 *: none
11802 swcodec: "Asa PÄreja" 11802 swcodec: "Asa PÄreja"
11803 </dest> 11803 </dest>
11804 <voice> 11804 <voice>
11805 *: none 11805 *: none
11806 swcodec: "asa paareja" 11806 swcodec: "asa paareja"
11807 </voice> 11807 </voice>
11808</phrase> 11808</phrase>
11809<phrase> 11809<phrase>
11810 id: LANG_COMPRESSOR_SOFT_KNEE 11810 id: LANG_COMPRESSOR_SOFT_KNEE
11811 desc: in sound settings 11811 desc: in sound settings
11812 user: core 11812 user: core
11813 <source> 11813 <source>
11814 *: none 11814 *: none
11815 swcodec: "Soft Knee" 11815 swcodec: "Soft Knee"
11816 </source> 11816 </source>
11817 <dest> 11817 <dest>
11818 *: none 11818 *: none
11819 swcodec: "IzlÄ«dzinÄta PÄreja" 11819 swcodec: "IzlÄ«dzinÄta PÄreja"
11820 </dest> 11820 </dest>
11821 <voice> 11821 <voice>
11822 *: none 11822 *: none
11823 swcodec: "izliidzinaata paareja" 11823 swcodec: "izliidzinaata paareja"
11824 </voice> 11824 </voice>
11825</phrase> 11825</phrase>
11826<phrase> 11826<phrase>
11827 id: LANG_COMPRESSOR_RELEASE 11827 id: LANG_COMPRESSOR_RELEASE
11828 desc: in sound settings 11828 desc: in sound settings
11829 user: core 11829 user: core
11830 <source> 11830 <source>
11831 *: none 11831 *: none
11832 swcodec: "Release Time" 11832 swcodec: "Release Time"
11833 </source> 11833 </source>
11834 <dest> 11834 <dest>
11835 *: none 11835 *: none
11836 swcodec: "SamazinÄÅ¡anas Laiks" 11836 swcodec: "SamazinÄÅ¡anas Laiks"
11837 </dest> 11837 </dest>
11838 <voice> 11838 <voice>
11839 *: none 11839 *: none
11840 swcodec: "samazinaashanas laiks" 11840 swcodec: "samazinaashanas laiks"
11841 </voice> 11841 </voice>
11842</phrase> 11842</phrase>
11843<phrase> 11843<phrase>
11844 id: LANG_SKIP_OUTRO 11844 id: LANG_SKIP_OUTRO
11845 desc: skipping to the 5 seconds before the end of a track 11845 desc: skipping to the 5 seconds before the end of a track
11846 user: core 11846 user: core
11847 <source> 11847 <source>
11848 *: "Skip to Outro" 11848 *: "Skip to Outro"
11849 </source> 11849 </source>
11850 <dest> 11850 <dest>
11851 *: "PÄrslÄ“gt Uz BeigÄm" 11851 *: "PÄrslÄ“gt Uz BeigÄm"
11852 </dest> 11852 </dest>
11853 <voice> 11853 <voice>
11854 *: "paarsleegt uz beigaam" 11854 *: "paarsleegt uz beigaam"
11855 </voice> 11855 </voice>
11856</phrase> 11856</phrase>
11857<phrase> 11857<phrase>
11858 id: LANG_STATUSBAR_CUSTOM 11858 id: LANG_STATUSBAR_CUSTOM
11859 desc: if this translation is compatible with LANG_CHANNEL_CUSTOM, then please use the same translation. it can be combined later then 11859 desc: if this translation is compatible with LANG_CHANNEL_CUSTOM, then please use the same translation. it can be combined later then
11860 user: core 11860 user: core
11861 <source> 11861 <source>
11862 *: "Custom" 11862 *: "Custom"
11863 </source> 11863 </source>
11864 <dest> 11864 <dest>
11865 *: "Nestandarta" 11865 *: "Nestandarta"
11866 </dest> 11866 </dest>
11867 <voice> 11867 <voice>
11868 *: "nestandarta" 11868 *: "nestandarta"
11869 </voice> 11869 </voice>
11870</phrase> 11870</phrase>
11871<phrase> 11871<phrase>
11872 id: VOICE_EXT_SBS 11872 id: VOICE_EXT_SBS
11873 desc: spoken only, for file extension 11873 desc: spoken only, for file extension
11874 user: core 11874 user: core
11875 <source> 11875 <source>
11876 *: "" 11876 *: ""
11877 </source> 11877 </source>
11878 <dest> 11878 <dest>
11879 *: "" 11879 *: ""
11880 </dest> 11880 </dest>
11881 <voice> 11881 <voice>
11882 *: "statusa joslas aada" 11882 *: "statusa joslas aada"
11883 </voice> 11883 </voice>
11884</phrase> 11884</phrase>
11885<phrase> 11885<phrase>
11886 id: VOICE_EXT_RSBS 11886 id: VOICE_EXT_RSBS
11887 desc: spoken only, for file extension 11887 desc: spoken only, for file extension
11888 user: core 11888 user: core
11889 <source> 11889 <source>
11890 *: none 11890 *: none
11891 remote: "" 11891 remote: ""
11892 </source> 11892 </source>
11893 <dest> 11893 <dest>
11894 *: none 11894 *: none
11895 remote: "" 11895 remote: ""
11896 </dest> 11896 </dest>
11897 <voice> 11897 <voice>
11898 *: none 11898 *: none
11899 remote: "pults statusa joslas aada" 11899 remote: "pults statusa joslas aada"
11900 </voice> 11900 </voice>
11901</phrase> 11901</phrase>
11902<phrase> 11902<phrase>
11903 id: LANG_USB_HID 11903 id: LANG_USB_HID
11904 desc: in settings_menu 11904 desc: in settings_menu
11905 user: core 11905 user: core
11906 <source> 11906 <source>
11907 *: none 11907 *: none
11908 usb_hid: "USB HID" 11908 usb_hid: "USB HID"
11909 </source> 11909 </source>
11910 <dest> 11910 <dest>
11911 *: none 11911 *: none
11912 usb_hid: "USB Ievades Ierīce" 11912 usb_hid: "USB Ievades Ierīce"
11913 </dest> 11913 </dest>
11914 <voice> 11914 <voice>
11915 *: none 11915 *: none
11916 usb_hid: "uuesbee ievades ieriice" 11916 usb_hid: "uuesbee ievades ieriice"
11917 </voice> 11917 </voice>
11918</phrase> 11918</phrase>
11919<phrase> 11919<phrase>
11920 id: LANG_INSERT_LAST_SHUFFLED 11920 id: LANG_INSERT_LAST_SHUFFLED
11921 desc: in onplay menu. insert a playlist randomly at end of dynamic playlist 11921 desc: in onplay menu. insert a playlist randomly at end of dynamic playlist
11922 user: core 11922 user: core
11923 <source> 11923 <source>
11924 *: "Insert Last Shuffled" 11924 *: "Insert Last Shuffled"
11925 </source> 11925 </source>
11926 <dest> 11926 <dest>
11927 *: "Ievietot Sajaukti BeigÄs" 11927 *: "Ievietot Sajaukti BeigÄs"
11928 </dest> 11928 </dest>
11929 <voice> 11929 <voice>
11930 *: "ievietot sajaukti beigaas" 11930 *: "ievietot sajaukti beigaas"
11931 </voice> 11931 </voice>
11932</phrase> 11932</phrase>
11933<phrase> 11933<phrase>
11934 id: LANG_QUEUE_LAST_SHUFFLED 11934 id: LANG_QUEUE_LAST_SHUFFLED
11935 desc: in onplay menu. queue a playlist randomly at end of dynamic playlist 11935 desc: in onplay menu. queue a playlist randomly at end of dynamic playlist
11936 user: core 11936 user: core
11937 <source> 11937 <source>
11938 *: "Queue Last Shuffled" 11938 *: "Queue Last Shuffled"
11939 </source> 11939 </source>
11940 <dest> 11940 <dest>
11941 *: "Ielikt Sajaukti RindÄ" 11941 *: "Ielikt Sajaukti RindÄ"
11942 </dest> 11942 </dest>
11943 <voice> 11943 <voice>
11944 *: "ielikt sajaukti rindaa" 11944 *: "ielikt sajaukti rindaa"
11945 </voice> 11945 </voice>
11946</phrase> 11946</phrase>
11947<phrase> 11947<phrase>
11948 id: LANG_MORSE_INPUT 11948 id: LANG_MORSE_INPUT
11949 desc: in Settings -> System 11949 desc: in Settings -> System
11950 user: core 11950 user: core
11951 <source> 11951 <source>
11952 *: none 11952 *: none
11953 morse_input: "Use Morse Code Input" 11953 morse_input: "Use Morse Code Input"
11954 </source> 11954 </source>
11955 <dest> 11955 <dest>
11956 *: none 11956 *: none
11957 morse_input: "Izmantot Morzes Ievadi" 11957 morse_input: "Izmantot Morzes Ievadi"
11958 </dest> 11958 </dest>
11959 <voice> 11959 <voice>
11960 *: none 11960 *: none
11961 morse_input: "izmantot morzes ievadi" 11961 morse_input: "izmantot morzes ievadi"
11962 </voice> 11962 </voice>
11963</phrase> 11963</phrase>
11964<phrase> 11964<phrase>
11965 id: LANG_AUTOTRACKSKIP 11965 id: LANG_AUTOTRACKSKIP
11966 desc: in crossfade settings 11966 desc: in crossfade settings
11967 user: core 11967 user: core
11968 <source> 11968 <source>
11969 *: none 11969 *: none
11970 crossfade: "Automatic Track Change Only" 11970 crossfade: "Automatic Track Change Only"
11971 </source> 11971 </source>
11972 <dest> 11972 <dest>
11973 *: none 11973 *: none
11974 crossfade: "Tikai AutomÄtiski PÄrslÄ“dzoties" 11974 crossfade: "Tikai AutomÄtiski PÄrslÄ“dzoties"
11975 </dest> 11975 </dest>
11976 <voice> 11976 <voice>
11977 *: none 11977 *: none
11978 crossfade: "tikai automaatiski paarsleedzoties" 11978 crossfade: "tikai automaatiski paarsleedzoties"
11979 </voice> 11979 </voice>
11980</phrase> 11980</phrase>
11981<phrase> 11981<phrase>
11982 id: LANG_NEXT_TRACK 11982 id: LANG_NEXT_TRACK
11983 desc: Shown in WPS 11983 desc: Shown in WPS
11984 user: core 11984 user: core
11985 <source> 11985 <source>
11986 *: "Next Track:" 11986 *: "Next Track:"
11987 </source> 11987 </source>
11988 <dest> 11988 <dest>
11989 *: "NÄkamÄ Dziesma:" 11989 *: "NÄkamÄ Dziesma:"
11990 </dest> 11990 </dest>
11991 <voice> 11991 <voice>
11992 *: "naakamaa dziesma" 11992 *: "naakamaa dziesma"
11993 </voice> 11993 </voice>
11994</phrase> 11994</phrase>
11995<phrase> 11995<phrase>
11996 id: LANG_NEXT 11996 id: LANG_NEXT
11997 desc: Shown in WPS (short form of Next Track) 11997 desc: Shown in WPS (short form of Next Track)
11998 user: core 11998 user: core
11999 <source> 11999 <source>
12000 *: "Next:" 12000 *: "Next:"
12001 </source> 12001 </source>
12002 <dest> 12002 <dest>
12003 *: "NÄkamÄ:" 12003 *: "NÄkamÄ:"
12004 </dest> 12004 </dest>
12005 <voice> 12005 <voice>
12006 *: "naakamaa" 12006 *: "naakamaa"
12007 </voice> 12007 </voice>
12008</phrase> 12008</phrase>
12009<phrase> 12009<phrase>
12010 id: LANG_OF 12010 id: LANG_OF
12011 desc: Shown in WPS: X of Y (tracks) 12011 desc: Shown in WPS: X of Y (tracks)
12012 user: core 12012 user: core
12013 <source> 12013 <source>
12014 *: "of" 12014 *: "of"
12015 </source> 12015 </source>
12016 <dest> 12016 <dest>
12017 *: "no" 12017 *: "no"
12018 </dest> 12018 </dest>
12019 <voice> 12019 <voice>
12020 *: "no" 12020 *: "no"
12021 </voice> 12021 </voice>
12022</phrase> 12022</phrase>
12023<phrase> 12023<phrase>
12024 id: LANG_BASE_SKIN 12024 id: LANG_BASE_SKIN
12025 desc: browse for the base skin in theme settings 12025 desc: browse for the base skin in theme settings
12026 user: core 12026 user: core
12027 <source> 12027 <source>
12028 *: none 12028 *: none
12029 lcd_bitmap: "Base Skin" 12029 lcd_bitmap: "Base Skin"
12030 </source> 12030 </source>
12031 <dest> 12031 <dest>
12032 *: none 12032 *: none
12033 lcd_bitmap: "PamatÄda" 12033 lcd_bitmap: "PamatÄda"
12034 </dest> 12034 </dest>
12035 <voice> 12035 <voice>
12036 *: none 12036 *: none
12037 lcd_bitmap: "pamataada" 12037 lcd_bitmap: "pamataada"
12038 </voice> 12038 </voice>
12039</phrase> 12039</phrase>
12040<phrase> 12040<phrase>
12041 id: LANG_REMOTE_BASE_SKIN 12041 id: LANG_REMOTE_BASE_SKIN
12042 desc: browse for the base skin in theme settings 12042 desc: browse for the base skin in theme settings
12043 user: core 12043 user: core
12044 <source> 12044 <source>
12045 *: none 12045 *: none
12046 lcd_bitmap: "Remote Base Skin" 12046 lcd_bitmap: "Remote Base Skin"
12047 </source> 12047 </source>
12048 <dest> 12048 <dest>
12049 *: none 12049 *: none
12050 lcd_bitmap: "Pults PamatÄda" 12050 lcd_bitmap: "Pults PamatÄda"
12051 </dest> 12051 </dest>
12052 <voice> 12052 <voice>
12053 *: none 12053 *: none
12054 lcd_bitmap: "pults pamataada" 12054 lcd_bitmap: "pults pamataada"
12055 </voice> 12055 </voice>
12056</phrase> 12056</phrase>
12057<phrase> 12057<phrase>
12058 id: LANG_MAIN_SCREEN 12058 id: LANG_MAIN_SCREEN
12059 desc: in the main menu 12059 desc: in the main menu
12060 user: core 12060 user: core
12061 <source> 12061 <source>
12062 *: none 12062 *: none
12063 remote: "Main Screen" 12063 remote: "Main Screen"
12064 </source> 12064 </source>
12065 <dest> 12065 <dest>
12066 *: none 12066 *: none
12067 remote: "IerÄ«ces EkrÄns" 12067 remote: "IerÄ«ces EkrÄns"
12068 </dest> 12068 </dest>
12069 <voice> 12069 <voice>
12070 *: none 12070 *: none
12071 remote: "ieriices ekraans" 12071 remote: "ieriices ekraans"
12072 </voice> 12072 </voice>
12073</phrase> 12073</phrase>
12074<phrase> 12074<phrase>
12075 id: LANG_REMOTE_SCREEN 12075 id: LANG_REMOTE_SCREEN
12076 desc: in the main menu 12076 desc: in the main menu
12077 user: core 12077 user: core
12078 <source> 12078 <source>
12079 *: none 12079 *: none
12080 remote: "Remote Screen" 12080 remote: "Remote Screen"
12081 </source> 12081 </source>
12082 <dest> 12082 <dest>
12083 *: none 12083 *: none
12084 remote: "Pults EkrÄns" 12084 remote: "Pults EkrÄns"
12085 </dest> 12085 </dest>
12086 <voice> 12086 <voice>
12087 *: none 12087 *: none
12088 remote: "pults ekraans" 12088 remote: "pults ekraans"
12089 </voice> 12089 </voice>
12090</phrase> 12090</phrase>
12091<phrase> 12091<phrase>
12092 id: LANG_LINEOUT_ONOFF 12092 id: LANG_LINEOUT_ONOFF
12093 desc: in system settings menu 12093 desc: in system settings menu
12094 user: core 12094 user: core
12095 <source> 12095 <source>
12096 *: none 12096 *: none
12097 lineout_poweroff: "Line Out" 12097 lineout_poweroff: "Line Out"
12098 </source> 12098 </source>
12099 <dest> 12099 <dest>
12100 *: none 12100 *: none
12101 lineout_poweroff: "LineÄrÄ Izeja" 12101 lineout_poweroff: "LineÄrÄ Izeja"
12102 </dest> 12102 </dest>
12103 <voice> 12103 <voice>
12104 *: none 12104 *: none
12105 lineout_poweroff: "lineaaraa izeja" 12105 lineout_poweroff: "lineaaraa izeja"
12106 </voice> 12106 </voice>
12107</phrase> 12107</phrase>
12108<phrase> 12108<phrase>
12109 id: LANG_HOTKEY 12109 id: LANG_HOTKEY
12110 desc: hotkey menu 12110 desc: hotkey menu
12111 user: core 12111 user: core
12112 <source> 12112 <source>
12113 *: none 12113 *: none
12114 hotkey: "Hotkey" 12114 hotkey: "Hotkey"
12115 </source> 12115 </source>
12116 <dest> 12116 <dest>
12117 *: none 12117 *: none
12118 hotkey: "Karstie Taustiņi" 12118 hotkey: "Karstie Taustiņi"
12119 </dest> 12119 </dest>
12120 <voice> 12120 <voice>
12121 *: none 12121 *: none
12122 hotkey: "karstie taustinji" 12122 hotkey: "karstie taustinji"
12123 </voice> 12123 </voice>
12124</phrase> 12124</phrase>
12125<phrase> 12125<phrase>
12126 id: LANG_HOTKEY_WPS 12126 id: LANG_HOTKEY_WPS
12127 desc: hotkey menu 12127 desc: hotkey menu
12128 user: core 12128 user: core
12129 <source> 12129 <source>
12130 *: none 12130 *: none
12131 hotkey: "WPS Hotkey" 12131 hotkey: "WPS Hotkey"
12132 </source> 12132 </source>
12133 <dest> 12133 <dest>
12134 *: none 12134 *: none
12135 hotkey: "Atskaņ. Loga Taustiņš" 12135 hotkey: "Atskaņ. Loga Taustiņš"
12136 </dest> 12136 </dest>
12137 <voice> 12137 <voice>
12138 *: none 12138 *: none
12139 hotkey: "atskanjoshanas loga taustinjsh" 12139 hotkey: "atskanjoshanas loga taustinjsh"
12140 </voice> 12140 </voice>
12141</phrase> 12141</phrase>
12142<phrase> 12142<phrase>
12143 id: LANG_HOTKEY_FILE_BROWSER 12143 id: LANG_HOTKEY_FILE_BROWSER
12144 desc: hotkey menu 12144 desc: hotkey menu
12145 user: core 12145 user: core
12146 <source> 12146 <source>
12147 *: none 12147 *: none
12148 hotkey: "File Browser Hotkey" 12148 hotkey: "File Browser Hotkey"
12149 </source> 12149 </source>
12150 <dest> 12150 <dest>
12151 *: none 12151 *: none
12152 hotkey: "Falu PÄrlÅ«ka Taustiņš" 12152 hotkey: "Falu PÄrlÅ«ka Taustiņš"
12153 </dest> 12153 </dest>
12154 <voice> 12154 <voice>
12155 *: none 12155 *: none
12156 hotkey: "failu paarluuka taustinjsh" 12156 hotkey: "failu paarluuka taustinjsh"
12157 </voice> 12157 </voice>
12158</phrase> 12158</phrase>
12159<phrase> 12159<phrase>
12160 id: LANG_RESUME_REWIND 12160 id: LANG_RESUME_REWIND
12161 desc: in playback settings menu 12161 desc: in playback settings menu
12162 user: core 12162 user: core
12163 <source> 12163 <source>
12164 *: none 12164 *: none
12165 swcodec: "Rewind Before Resume" 12165 swcodec: "Rewind Before Resume"
12166 </source> 12166 </source>
12167 <dest> 12167 <dest>
12168 *: none 12168 *: none
12169 swcodec: "AttÄ«t Pirms AtsÄkt" 12169 swcodec: "AttÄ«t Pirms AtsÄkt"
12170 </dest> 12170 </dest>
12171 <voice> 12171 <voice>
12172 *: none 12172 *: none
12173 swcodec: "attiit pirms atsaakt" 12173 swcodec: "attiit pirms atsaakt"
12174 </voice> 12174 </voice>
12175</phrase> 12175</phrase>
12176<phrase> 12176<phrase>
12177 id: LANG_REMOTE_RADIOSCREEN 12177 id: LANG_REMOTE_RADIOSCREEN
12178 desc: in the theme menu 12178 desc: in the theme menu
12179 user: core 12179 user: core
12180 <source> 12180 <source>
12181 *: none 12181 *: none
12182 radio_remote: "Remote Radio Screen" 12182 radio_remote: "Remote Radio Screen"
12183 </source> 12183 </source>
12184 <dest> 12184 <dest>
12185 *: none 12185 *: none
12186 radio_remote: "Pults Radio EkrÄns" 12186 radio_remote: "Pults Radio EkrÄns"
12187 </dest> 12187 </dest>
12188 <voice> 12188 <voice>
12189 *: none 12189 *: none
12190 radio_remote: "pults radio ekraans" 12190 radio_remote: "pults radio ekraans"
12191 </voice> 12191 </voice>
12192</phrase> 12192</phrase>
12193<phrase> 12193<phrase>
12194 id: VOICE_EXT_FMS 12194 id: VOICE_EXT_FMS
12195 desc: spoken only, for file extension 12195 desc: spoken only, for file extension
12196 user: core 12196 user: core
12197 <source> 12197 <source>
12198 *: none 12198 *: none
12199 radio: "" 12199 radio: ""
12200 </source> 12200 </source>
12201 <dest> 12201 <dest>
12202 *: none 12202 *: none
12203 radio: "" 12203 radio: ""
12204 </dest> 12204 </dest>
12205 <voice> 12205 <voice>
12206 *: none 12206 *: none
12207 radio: "radio ekraana aada" 12207 radio: "radio ekraana aada"
12208 </voice> 12208 </voice>
12209</phrase> 12209</phrase>
12210<phrase> 12210<phrase>
12211 id: VOICE_EXT_RFMS 12211 id: VOICE_EXT_RFMS
12212 desc: spoken only, for file extension 12212 desc: spoken only, for file extension
12213 user: core 12213 user: core
12214 <source> 12214 <source>
12215 *: none 12215 *: none
12216 radio_remote: "" 12216 radio_remote: ""
12217 </source> 12217 </source>
12218 <dest> 12218 <dest>
12219 *: none 12219 *: none
12220 radio_remote: "" 12220 radio_remote: ""
12221 </dest> 12221 </dest>
12222 <voice> 12222 <voice>
12223 *: none 12223 *: none
12224 radio_remote: "pults radio ekraana aada" 12224 radio_remote: "pults radio ekraana aada"
12225 </voice> 12225 </voice>
12226</phrase> 12226</phrase>
12227<phrase> 12227<phrase>
12228 id: LANG_FM_STATION_HEADER 12228 id: LANG_FM_STATION_HEADER
12229 desc: in radio screen 12229 desc: in radio screen
12230 user: core 12230 user: core
12231 <source> 12231 <source>
12232 *: none 12232 *: none
12233 radio: "Station:" 12233 radio: "Station:"
12234 </source> 12234 </source>
12235 <dest> 12235 <dest>
12236 *: none 12236 *: none
12237 radio: "Stacija:" 12237 radio: "Stacija:"
12238 </dest> 12238 </dest>
12239 <voice> 12239 <voice>
12240 *: none 12240 *: none
12241 radio: "" 12241 radio: ""
12242 </voice> 12242 </voice>
12243</phrase> 12243</phrase>
12244<phrase> 12244<phrase>
12245 id: LANG_HW_EQ_TONE_CONTROLS 12245 id: LANG_HW_EQ_TONE_CONTROLS
12246 desc: in sound_menu, hardware equalizer tone controls 12246 desc: in sound_menu, hardware equalizer tone controls
12247 user: core 12247 user: core
12248 <source> 12248 <source>
12249 *: none 12249 *: none
12250 gigabeats: "Tone Controls" 12250 gigabeats: "Tone Controls"
12251 </source> 12251 </source>
12252 <dest> 12252 <dest>
12253 *: none 12253 *: none
12254 gigabeats: "Toņa Kontroles" 12254 gigabeats: "Toņa Kontroles"
12255 </dest> 12255 </dest>
12256 <voice> 12256 <voice>
12257 *: none 12257 *: none
12258 gigabeats: "tonja kontroles" 12258 gigabeats: "tonja kontroles"
12259 </voice> 12259 </voice>
12260</phrase> 12260</phrase>
12261<phrase> 12261<phrase>
12262 id: LANG_HW_EQ_TONE_CONTROLS_ADVANCED 12262 id: LANG_HW_EQ_TONE_CONTROLS_ADVANCED
12263 desc: in sound_menu, advanced settings for hardware equalizer tone controls 12263 desc: in sound_menu, advanced settings for hardware equalizer tone controls
12264 user: core 12264 user: core
12265 <source> 12265 <source>
12266 *: none 12266 *: none
12267 gigabeats: "Advanced Tone Control Settings" 12267 gigabeats: "Advanced Tone Control Settings"
12268 </source> 12268 </source>
12269 <dest> 12269 <dest>
12270 *: none 12270 *: none
12271 gigabeats: "Papildus Toņa Kontroles UzstÄdÄ«jumi" 12271 gigabeats: "Papildus Toņa Kontroles UzstÄdÄ«jumi"
12272 </dest> 12272 </dest>
12273 <voice> 12273 <voice>
12274 *: none 12274 *: none
12275 gigabeats: "papildus tonja kontroles uzstaadiijumi" 12275 gigabeats: "papildus tonja kontroles uzstaadiijumi"
12276 </voice> 12276 </voice>
12277</phrase> 12277</phrase>
12278<phrase> 12278<phrase>
12279 id: LANG_HW_EQ_GAIN 12279 id: LANG_HW_EQ_GAIN
12280 desc: in sound_menu, hardware equalizer tone controls filter gain 12280 desc: in sound_menu, hardware equalizer tone controls filter gain
12281 user: core 12281 user: core
12282 <source> 12282 <source>
12283 *: none 12283 *: none
12284 gigabeats: "Band %d Gain" 12284 gigabeats: "Band %d Gain"
12285 </source> 12285 </source>
12286 <dest> 12286 <dest>
12287 *: none 12287 *: none
12288 gigabeats: "Joslas %d PastiprinÄjums" 12288 gigabeats: "Joslas %d PastiprinÄjums"
12289 </dest> 12289 </dest>
12290 <voice> 12290 <voice>
12291 *: none 12291 *: none
12292 gigabeats: "joslas %d pastiprinaajums" 12292 gigabeats: "joslas %d pastiprinaajums"
12293 </voice> 12293 </voice>
12294</phrase> 12294</phrase>
12295<phrase> 12295<phrase>
12296 id: LANG_HW_EQ_FREQUENCY 12296 id: LANG_HW_EQ_FREQUENCY
12297 desc: in sound_menu, hardware equalizer tone controls shelf filter cutoff frequency 12297 desc: in sound_menu, hardware equalizer tone controls shelf filter cutoff frequency
12298 user: core 12298 user: core
12299 <source> 12299 <source>
12300 *: none 12300 *: none
12301 gigabeats: "Band %d Frequency" 12301 gigabeats: "Band %d Frequency"
12302 </source> 12302 </source>
12303 <dest> 12303 <dest>
12304 *: none 12304 *: none
12305 gigabeats: "Joslas %d Frekvence" 12305 gigabeats: "Joslas %d Frekvence"
12306 </dest> 12306 </dest>
12307 <voice> 12307 <voice>
12308 *: none 12308 *: none
12309 gigabeats: "joslas %d frekvence" 12309 gigabeats: "joslas %d frekvence"
12310 </voice> 12310 </voice>
12311</phrase> 12311</phrase>
12312<phrase> 12312<phrase>
12313 id: LANG_HW_EQ_WIDTH 12313 id: LANG_HW_EQ_WIDTH
12314 desc: in sound_menu, hardware equalizer tone controls peak bandwith setting 12314 desc: in sound_menu, hardware equalizer tone controls peak bandwith setting
12315 user: core 12315 user: core
12316 <source> 12316 <source>
12317 *: none 12317 *: none
12318 gigabeats: "Band %d Width" 12318 gigabeats: "Band %d Width"
12319 </source> 12319 </source>
12320 <dest> 12320 <dest>
12321 *: none 12321 *: none
12322 gigabeats: "Joslas %d Platums" 12322 gigabeats: "Joslas %d Platums"
12323 </dest> 12323 </dest>
12324 <voice> 12324 <voice>
12325 *: none 12325 *: none
12326 gigabeats: "joslas %d platums" 12326 gigabeats: "joslas %d platums"
12327 </voice> 12327 </voice>
12328</phrase> 12328</phrase>
12329<phrase> 12329<phrase>
12330 id: LANG_HW_EQ_WIDTH_NARROW 12330 id: LANG_HW_EQ_WIDTH_NARROW
12331 desc: in sound_menu, hardware equalizer tone controls narrow bandwith setting 12331 desc: in sound_menu, hardware equalizer tone controls narrow bandwith setting
12332 user: core 12332 user: core
12333 <source> 12333 <source>
12334 *: none 12334 *: none
12335 gigabeats: "Narrow" 12335 gigabeats: "Narrow"
12336 </source> 12336 </source>
12337 <dest> 12337 <dest>
12338 *: none 12338 *: none
12339 gigabeats: "Å aurs" 12339 gigabeats: "Å aurs"
12340 </dest> 12340 </dest>
12341 <voice> 12341 <voice>
12342 *: none 12342 *: none
12343 gigabeats: "shaurs" 12343 gigabeats: "shaurs"
12344 </voice> 12344 </voice>
12345</phrase> 12345</phrase>
12346<phrase> 12346<phrase>
12347 id: LANG_HW_EQ_WIDTH_WIDE 12347 id: LANG_HW_EQ_WIDTH_WIDE
12348 desc: in sound_menu, hardware equalizer tone controls wide bandwidth setting 12348 desc: in sound_menu, hardware equalizer tone controls wide bandwidth setting
12349 user: core 12349 user: core
12350 <source> 12350 <source>
12351 *: none 12351 *: none
12352 gigabeats: "Wide" 12352 gigabeats: "Wide"
12353 </source> 12353 </source>
12354 <dest> 12354 <dest>
12355 *: none 12355 *: none
12356 gigabeats: "Plats" 12356 gigabeats: "Plats"
12357 </dest> 12357 </dest>
12358 <voice> 12358 <voice>
12359 *: none 12359 *: none
12360 gigabeats: "plats" 12360 gigabeats: "plats"
12361 </voice> 12361 </voice>
12362</phrase> 12362</phrase>
12363<phrase> 12363<phrase>
12364 id: LANG_DEPTH_3D 12364 id: LANG_DEPTH_3D
12365 desc: in sound_menu, amount of 3D enhancement effect 12365 desc: in sound_menu, amount of 3D enhancement effect
12366 user: core 12366 user: core
12367 <source> 12367 <source>
12368 *: none 12368 *: none
12369 gigabeats,mpiohd200,mpiohd300: "3-D Enhancement" 12369 gigabeats,mpiohd200,mpiohd300: "3-D Enhancement"
12370 </source> 12370 </source>
12371 <dest> 12371 <dest>
12372 *: none 12372 *: none
12373 gigabeats,mpiohd200,mpiohd300: "3-D PaplaÅ¡inÄjums" 12373 gigabeats,mpiohd200,mpiohd300: "3-D PaplaÅ¡inÄjums"
12374 </dest> 12374 </dest>
12375 <voice> 12375 <voice>
12376 *: none 12376 *: none
12377 gigabeats,mpiohd200,mpiohd300: "triis dimensiju paplashinaajums" 12377 gigabeats,mpiohd200,mpiohd300: "triis dimensiju paplashinaajums"
12378 </voice> 12378 </voice>
12379</phrase> 12379</phrase>
12380<phrase> 12380<phrase>
12381 id: LANG_TAGNAVI_UNTAGGED 12381 id: LANG_TAGNAVI_UNTAGGED
12382 desc: "<untagged>" entry in tag browser 12382 desc: "<untagged>" entry in tag browser
12383 user: core 12383 user: core
12384 <source> 12384 <source>
12385 *: "<Untagged>" 12385 *: "<Untagged>"
12386 </source> 12386 </source>
12387 <dest> 12387 <dest>
12388 *: "<Neatzīmēts>" 12388 *: "<Neatzīmēts>"
12389 </dest> 12389 </dest>
12390 <voice> 12390 <voice>
12391 *: "neatziimeets" 12391 *: "neatziimeets"
12392 </voice> 12392 </voice>
12393</phrase> 12393</phrase>
12394<phrase> 12394<phrase>
12395 id: LANG_RADIOSCREEN 12395 id: LANG_RADIOSCREEN
12396 desc: in the theme menu 12396 desc: in the theme menu
12397 user: core 12397 user: core
12398 <source> 12398 <source>
12399 *: none 12399 *: none
12400 radio: "Radio Screen" 12400 radio: "Radio Screen"
12401 </source> 12401 </source>
12402 <dest> 12402 <dest>
12403 *: none 12403 *: none
12404 radio: "Radio EkrÄns" 12404 radio: "Radio EkrÄns"
12405 </dest> 12405 </dest>
12406 <voice> 12406 <voice>
12407 *: none 12407 *: none
12408 radio: "eadio ekraans" 12408 radio: "eadio ekraans"
12409 </voice> 12409 </voice>
12410</phrase> 12410</phrase>
12411<phrase> 12411<phrase>
12412 id: LANG_ID3_COMPOSER 12412 id: LANG_ID3_COMPOSER
12413 desc: in tag viewer 12413 desc: in tag viewer
12414 user: core 12414 user: core
12415 <source> 12415 <source>
12416 *: "Composer" 12416 *: "Composer"
12417 </source> 12417 </source>
12418 <dest> 12418 <dest>
12419 *: "Komponists" 12419 *: "Komponists"
12420 </dest> 12420 </dest>
12421 <voice> 12421 <voice>
12422 *: "" 12422 *: ""
12423 </voice> 12423 </voice>
12424</phrase> 12424</phrase>
12425<phrase> 12425<phrase>
12426 id: LANG_FORCE 12426 id: LANG_FORCE
12427 desc: alternative to yes/no for tristate settings 12427 desc: alternative to yes/no for tristate settings
12428 user: core 12428 user: core
12429 <source> 12429 <source>
12430 *: "Force" 12430 *: "Force"
12431 </source> 12431 </source>
12432 <dest> 12432 <dest>
12433 *: "Piespiest" 12433 *: "Piespiest"
12434 </dest> 12434 </dest>
12435 <voice> 12435 <voice>
12436 *: "piespiest" 12436 *: "piespiest"
12437 </voice> 12437 </voice>
12438</phrase> 12438</phrase>
12439<phrase> 12439<phrase>
12440 id: LANG_ONPLAY_PICTUREFLOW 12440 id: LANG_ONPLAY_PICTUREFLOW
12441 desc: Onplay pictureflow 12441 desc: Onplay pictureflow
12442 user: core 12442 user: core
12443 <source> 12443 <source>
12444 *: "PictureFlow" 12444 *: "PictureFlow"
12445 </source> 12445 </source>
12446 <dest> 12446 <dest>
12447 *: "Attēlu Plūsma" 12447 *: "Attēlu Plūsma"
12448 </dest> 12448 </dest>
12449 <voice> 12449 <voice>
12450 *: "atveert atteelu pluusmu" 12450 *: "atveert atteelu pluusmu"
12451 </voice> 12451 </voice>
12452</phrase> 12452</phrase>
12453<phrase> 12453<phrase>
12454 id: LANG_KBD_OK 12454 id: LANG_KBD_OK
12455 desc: in keyboard 12455 desc: in keyboard
12456 user: core 12456 user: core
12457 <source> 12457 <source>
12458 *: none 12458 *: none
12459 touchscreen: "OK" 12459 touchscreen: "OK"
12460 </source> 12460 </source>
12461 <dest> 12461 <dest>
12462 *: none 12462 *: none
12463 touchscreen: "Labi" 12463 touchscreen: "Labi"
12464 </dest> 12464 </dest>
12465 <voice> 12465 <voice>
12466 *: none 12466 *: none
12467 touchscreen: "labi" 12467 touchscreen: "labi"
12468 </voice> 12468 </voice>
12469</phrase> 12469</phrase>
12470<phrase> 12470<phrase>
12471 id: LANG_KBD_DELETE 12471 id: LANG_KBD_DELETE
12472 desc: in keyboard 12472 desc: in keyboard
12473 user: core 12473 user: core
12474 <source> 12474 <source>
12475 *: none 12475 *: none
12476 touchscreen: "Del" 12476 touchscreen: "Del"
12477 </source> 12477 </source>
12478 <dest> 12478 <dest>
12479 *: none 12479 *: none
12480 touchscreen: "Izdz" 12480 touchscreen: "Izdz"
12481 </dest> 12481 </dest>
12482 <voice> 12482 <voice>
12483 *: none 12483 *: none
12484 touchscreen: "izdzeest" 12484 touchscreen: "izdzeest"
12485 </voice> 12485 </voice>
12486</phrase> 12486</phrase>
12487<phrase> 12487<phrase>
12488 id: LANG_KBD_CANCEL 12488 id: LANG_KBD_CANCEL
12489 desc: in keyboard 12489 desc: in keyboard
12490 user: core 12490 user: core
12491 <source> 12491 <source>
12492 *: none 12492 *: none
12493 touchscreen: "Cancel" 12493 touchscreen: "Cancel"
12494 </source> 12494 </source>
12495 <dest> 12495 <dest>
12496 *: none 12496 *: none
12497 touchscreen: "Atteikties" 12497 touchscreen: "Atteikties"
12498 </dest> 12498 </dest>
12499 <voice> 12499 <voice>
12500 *: none 12500 *: none
12501 touchscreen: "atteikties" 12501 touchscreen: "atteikties"
12502 </voice> 12502 </voice>
12503</phrase> 12503</phrase>
12504<phrase> 12504<phrase>
12505 id: LANG_BOOKMARK_SETTINGS_AUTOUPDATE 12505 id: LANG_BOOKMARK_SETTINGS_AUTOUPDATE
12506 desc: prompt for user to decide whether to update bookmarks 12506 desc: prompt for user to decide whether to update bookmarks
12507 user: core 12507 user: core
12508 <source> 12508 <source>
12509 *: "Update on Stop" 12509 *: "Update on Stop"
12510 </source> 12510 </source>
12511 <dest> 12511 <dest>
12512 *: "Atjaunot ApstÄjoties" 12512 *: "Atjaunot ApstÄjoties"
12513 </dest> 12513 </dest>
12514 <voice> 12514 <voice>
12515 *: "atjaunot apstaajoties" 12515 *: "atjaunot apstaajoties"
12516 </voice> 12516 </voice>
12517</phrase> 12517</phrase>
12518<phrase> 12518<phrase>
12519 id: LANG_SET_AS_START_DIR 12519 id: LANG_SET_AS_START_DIR
12520 desc: used in the onplay menu to set a starting browser dir 12520 desc: used in the onplay menu to set a starting browser dir
12521 user: core 12521 user: core
12522 <source> 12522 <source>
12523 *: "Start File Browser Here" 12523 *: "Start File Browser Here"
12524 </source> 12524 </source>
12525 <dest> 12525 <dest>
12526 *: "Palaist Å eit Failu PÄrlÅ«ku" 12526 *: "Palaist Å eit Failu PÄrlÅ«ku"
12527 </dest> 12527 </dest>
12528 <voice> 12528 <voice>
12529 *: "palaist sheit failu paarluuku" 12529 *: "palaist sheit failu paarluuku"
12530 </voice> 12530 </voice>
12531</phrase> 12531</phrase>
12532<phrase> 12532<phrase>
12533 id: LANG_RESET_START_DIR 12533 id: LANG_RESET_START_DIR
12534 desc: reset the browser start directory 12534 desc: reset the browser start directory
12535 user: core 12535 user: core
12536 <source> 12536 <source>
12537 *: "Start File Browser at /" 12537 *: "Start File Browser at /"
12538 </source> 12538 </source>
12539 <dest> 12539 <dest>
12540 *: "PÄrstatÄ«t Failu PÄrlÅ«ku uz /" 12540 *: "PÄrstatÄ«t Failu PÄrlÅ«ku uz /"
12541 </dest> 12541 </dest>
12542 <voice> 12542 <voice>
12543 *: "paarstatiit failu paarluuku uz pamatmapi" 12543 *: "paarstatiit failu paarluuku uz pamatmapi"
12544 </voice> 12544 </voice>
12545</phrase> 12545</phrase>
12546<phrase> 12546<phrase>
12547 id: LANG_FM_RSSI 12547 id: LANG_FM_RSSI
12548 desc: Signal strength of a received FM station 12548 desc: Signal strength of a received FM station
12549 user: core 12549 user: core
12550 <source> 12550 <source>
12551 *: none 12551 *: none
12552 radio: "Signal strength:" 12552 radio: "Signal strength:"
12553 </source> 12553 </source>
12554 <dest> 12554 <dest>
12555 *: none 12555 *: none
12556 radio: "SignÄla Stiprums:" 12556 radio: "SignÄla Stiprums:"
12557 </dest> 12557 </dest>
12558 <voice> 12558 <voice>
12559 *: none 12559 *: none
12560 radio: "signaala stiprums" 12560 radio: "signaala stiprums"
12561 </voice> 12561 </voice>
12562</phrase> 12562</phrase>
12563<phrase> 12563<phrase>
12564 id: LANG_FILESIZE 12564 id: LANG_FILESIZE
12565 desc: in record timesplit options and in track information viewer 12565 desc: in record timesplit options and in track information viewer
12566 user: core 12566 user: core
12567 <source> 12567 <source>
12568 *: "Filesize" 12568 *: "Filesize"
12569 </source> 12569 </source>
12570 <dest> 12570 <dest>
12571 *: "Izmērs" 12571 *: "Izmērs"
12572 </dest> 12572 </dest>
12573 <voice> 12573 <voice>
12574 *: "izmeers" 12574 *: "izmeers"
12575 </voice> 12575 </voice>
12576</phrase> 12576</phrase>
12577<phrase> 12577<phrase>
12578 id: LANG_AUTORESUME_ENABLE 12578 id: LANG_AUTORESUME_ENABLE
12579 desc: deprecated 12579 desc: deprecated
12580 user: core 12580 user: core
12581 <source> 12581 <source>
12582 *: "" 12582 *: ""
12583 </source> 12583 </source>
12584 <dest> 12584 <dest>
12585 *: "" 12585 *: ""
12586 </dest> 12586 </dest>
12587 <voice> 12587 <voice>
12588 *: "" 12588 *: ""
12589 </voice> 12589 </voice>
12590</phrase> 12590</phrase>
12591<phrase> 12591<phrase>
12592 id: LANG_AUTORESUME_ENABLE_YES 12592 id: LANG_AUTORESUME_ENABLE_YES
12593 desc: deprecated 12593 desc: deprecated
12594 user: core 12594 user: core
12595 <source> 12595 <source>
12596 *: "" 12596 *: ""
12597 </source> 12597 </source>
12598 <dest> 12598 <dest>
12599 *: "" 12599 *: ""
12600 </dest> 12600 </dest>
12601 <voice> 12601 <voice>
12602 *: "" 12602 *: ""
12603 </voice> 12603 </voice>
12604</phrase> 12604</phrase>
12605<phrase> 12605<phrase>
12606 id: LANG_AUTORESUME 12606 id: LANG_AUTORESUME
12607 desc: resume settings menu 12607 desc: resume settings menu
12608 user: core 12608 user: core
12609 <source> 12609 <source>
12610 *: "Automatic resume" 12610 *: "Automatic resume"
12611 </source> 12611 </source>
12612 <dest> 12612 <dest>
12613 *: "AtsÄkt AutomÄtiski" 12613 *: "AtsÄkt AutomÄtiski"
12614 </dest> 12614 </dest>
12615 <voice> 12615 <voice>
12616 *: "atsaakt automaatiski" 12616 *: "atsaakt automaatiski"
12617 </voice> 12617 </voice>
12618</phrase> 12618</phrase>
12619<phrase> 12619<phrase>
12620 id: LANG_AUTORESUME_AUTOMATIC 12620 id: LANG_AUTORESUME_AUTOMATIC
12621 desc: resume on automatic track change 12621 desc: resume on automatic track change
12622 user: core 12622 user: core
12623 <source> 12623 <source>
12624 *: "Resume on automatic track change" 12624 *: "Resume on automatic track change"
12625 </source> 12625 </source>
12626 <dest> 12626 <dest>
12627 *: "AtsÄkt AutomÄtiski PÄrslÄ“dzoties" 12627 *: "AtsÄkt AutomÄtiski PÄrslÄ“dzoties"
12628 </dest> 12628 </dest>
12629 <voice> 12629 <voice>
12630 *: "atsaakt automaatiski paarsleedzoties" 12630 *: "atsaakt automaatiski paarsleedzoties"
12631 </voice> 12631 </voice>
12632</phrase> 12632</phrase>
12633<phrase> 12633<phrase>
12634 id: LANG_AUTORESUME_CUSTOM 12634 id: LANG_AUTORESUME_CUSTOM
12635 desc: enable customization of resume on automatic track change 12635 desc: enable customization of resume on automatic track change
12636 user: core 12636 user: core
12637 <source> 12637 <source>
12638 *: "In custom directories only" 12638 *: "In custom directories only"
12639 </source> 12639 </source>
12640 <dest> 12640 <dest>
12641 *: "Tikai NorÄdÄ«tÄs MapÄ“s" 12641 *: "Tikai NorÄdÄ«tÄs MapÄ“s"
12642 </dest> 12642 </dest>
12643 <voice> 12643 <voice>
12644 *: "tikai noraadiitaas mapees" 12644 *: "tikai noraadiitaas mapees"
12645 </voice> 12645 </voice>
12646</phrase> 12646</phrase>
12647<phrase> 12647<phrase>
12648 id: LANG_PAUSE_REWIND 12648 id: LANG_PAUSE_REWIND
12649 desc: Seconds to rewind when rewind on pause is enabled. 12649 desc: Seconds to rewind when rewind on pause is enabled.
12650 user: core 12650 user: core
12651 <source> 12651 <source>
12652 *: "Rewind on Pause" 12652 *: "Rewind on Pause"
12653 </source> 12653 </source>
12654 <dest> 12654 <dest>
12655 *: "Attīt Nopauzējot" 12655 *: "Attīt Nopauzējot"
12656 </dest> 12656 </dest>
12657 <voice> 12657 <voice>
12658 *: "attiit nopauzeejot" 12658 *: "attiit nopauzeejot"
12659 </voice> 12659 </voice>
12660</phrase> 12660</phrase>
12661<phrase> 12661<phrase>
12662 id: LANG_CURRENT_PLAYLIST 12662 id: LANG_CURRENT_PLAYLIST
12663 desc: Used when you need to say playlist, also voiced 12663 desc: Used when you need to say playlist, also voiced
12664 user: core 12664 user: core
12665 <source> 12665 <source>
12666 *: "Current Playlist" 12666 *: "Current Playlist"
12667 </source> 12667 </source>
12668 <dest> 12668 <dest>
12669 *: "°Patreizējais Saraksts" 12669 *: "°Patreizējais Saraksts"
12670 </dest> 12670 </dest>
12671 <voice> 12671 <voice>
12672 *: "patreizeejais saraksts" 12672 *: "patreizeejais saraksts"
12673 </voice> 12673 </voice>
12674</phrase> 12674</phrase>
12675<phrase> 12675<phrase>
12676 id: LANG_USB_SKIP_FIRST_DRIVE 12676 id: LANG_USB_SKIP_FIRST_DRIVE
12677 desc: in settings_menu 12677 desc: in settings_menu
12678 user: core 12678 user: core
12679 <source> 12679 <source>
12680 *: none 12680 *: none
12681 multidrive_usb: "USB Hide Internal Drive" 12681 multidrive_usb: "USB Hide Internal Drive"
12682 </source> 12682 </source>
12683 <dest> 12683 <dest>
12684 *: none 12684 *: none
12685 multidrive_usb: "Savienojoties Paslēpt Iekšējo Disku" 12685 multidrive_usb: "Savienojoties Paslēpt Iekšējo Disku"
12686 </dest> 12686 </dest>
12687 <voice> 12687 <voice>
12688 *: none 12688 *: none
12689 multidrive_usb: "savienojoties pasleept ieksheejo disku" 12689 multidrive_usb: "savienojoties pasleept ieksheejo disku"
12690 </voice> 12690 </voice>
12691</phrase> 12691</phrase>
12692<phrase> 12692<phrase>
12693 id: LANG_SET_AS_PLAYLISTCAT_DIR 12693 id: LANG_SET_AS_PLAYLISTCAT_DIR
12694 desc: used in the onplay menu to set a playlist catalogue dir 12694 desc: used in the onplay menu to set a playlist catalogue dir
12695 user: core 12695 user: core
12696 <source> 12696 <source>
12697 *: "Set As Playlist Catalogue Directory" 12697 *: "Set As Playlist Catalogue Directory"
12698 </source> 12698 </source>
12699 <dest> 12699 <dest>
12700 *: "Uzlikt KÄ Sarakstu Kataloga Mapi" 12700 *: "Uzlikt KÄ Sarakstu Kataloga Mapi"
12701 </dest> 12701 </dest>
12702 <voice> 12702 <voice>
12703 *: "uzlikt kaa sarakstu kataloga mapi" 12703 *: "uzlikt kaa sarakstu kataloga mapi"
12704 </voice> 12704 </voice>
12705</phrase> 12705</phrase>
12706<phrase> 12706<phrase>
12707 id: LANG_SAVE_CHANGES 12707 id: LANG_SAVE_CHANGES
12708 desc: When you try to exit screens to confirm save 12708 desc: When you try to exit screens to confirm save
12709 user: core 12709 user: core
12710 <source> 12710 <source>
12711 *: "Save Changes?" 12711 *: "Save Changes?"
12712 </source> 12712 </source>
12713 <dest> 12713 <dest>
12714 *: "SaglabÄt Izmaiņas?" 12714 *: "SaglabÄt Izmaiņas?"
12715 </dest> 12715 </dest>
12716 <voice> 12716 <voice>
12717 *: "vai saglabaat izmainjas" 12717 *: "vai saglabaat izmainjas"
12718 </voice> 12718 </voice>
12719</phrase> 12719</phrase>
12720<phrase> 12720<phrase>
12721 id: LANG_RESET_PLAYLISTCAT_DIR 12721 id: LANG_RESET_PLAYLISTCAT_DIR
12722 desc: 12722 desc:
12723 user: core 12723 user: core
12724 <source> 12724 <source>
12725 *: "Reset Playlist Catalogue Directory" 12725 *: "Reset Playlist Catalogue Directory"
12726 </source> 12726 </source>
12727 <dest> 12727 <dest>
12728 *: "PÄrstatÄ«t Sarakstu Kataloga Mapi" 12728 *: "PÄrstatÄ«t Sarakstu Kataloga Mapi"
12729 </dest> 12729 </dest>
12730 <voice> 12730 <voice>
12731 *: "paarstatiit sarakstu kataloga mapi" 12731 *: "paarstatiit sarakstu kataloga mapi"
12732 </voice> 12732 </voice>
12733</phrase> 12733</phrase>
12734<phrase> 12734<phrase>
12735 id: LANG_HISTOGRAM_INTERVAL 12735 id: LANG_HISTOGRAM_INTERVAL
12736 desc: in record settings menu 12736 desc: in record settings menu
12737 user: core 12737 user: core
12738 <source> 12738 <source>
12739 *: none 12739 *: none
12740 histogram: "Histogram interval" 12740 histogram: "Histogram interval"
12741 </source> 12741 </source>
12742 <dest> 12742 <dest>
12743 *: none 12743 *: none
12744 histogram: "VizualizÄcijas IntervÄls" 12744 histogram: "VizualizÄcijas IntervÄls"
12745 </dest> 12745 </dest>
12746 <voice> 12746 <voice>
12747 *: none 12747 *: none
12748 histogram: "vizualizaacijas intervaals" 12748 histogram: "vizualizaacijas intervaals"
12749 </voice> 12749 </voice>
12750</phrase> 12750</phrase>
diff --git a/firmware/drivers/audio/cs42l55.c b/firmware/drivers/audio/cs42l55.c
index c81a3fc012..38380d5a54 100644
--- a/firmware/drivers/audio/cs42l55.c
+++ b/firmware/drivers/audio/cs42l55.c
@@ -1,245 +1,245 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: wm8975.c 28572 2010-11-13 11:38:38Z theseven $ 8 * $Id: wm8975.c 28572 2010-11-13 11:38:38Z theseven $
9 * 9 *
10 * Driver for Cirrus Logic CS42L55 audio codec 10 * Driver for Cirrus Logic CS42L55 audio codec
11 * 11 *
12 * Copyright (c) 2010 Michael Sparmann 12 * Copyright (c) 2010 Michael Sparmann
13 * 13 *
14 * This program is free software; you can redistribute it and/or 14 * This program is free software; you can redistribute it and/or
15 * modify it under the terms of the GNU General Public License 15 * modify it under the terms of the GNU General Public License
16 * as published by the Free Software Foundation; either version 2 16 * as published by the Free Software Foundation; either version 2
17 * of the License, or (at your option) any later version. 17 * of the License, or (at your option) any later version.
18 * 18 *
19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 19 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
20 * KIND, either express or implied. 20 * KIND, either express or implied.
21 * 21 *
22 ****************************************************************************/ 22 ****************************************************************************/
23#include "logf.h" 23#include "logf.h"
24#include "system.h" 24#include "system.h"
25#include "string.h" 25#include "string.h"
26#include "audio.h" 26#include "audio.h"
27#include "sound.h" 27#include "sound.h"
28#include "audiohw.h" 28#include "audiohw.h"
29#include "cscodec.h" 29#include "cscodec.h"
30#include "cs42l55.h" 30#include "cs42l55.h"
31 31
32const struct sound_settings_info audiohw_settings[] = { 32const struct sound_settings_info audiohw_settings[] = {
33 [SOUND_VOLUME] = {"dB", 0, 1, -60, 12, -25}, 33 [SOUND_VOLUME] = {"dB", 0, 1, -60, 12, -25},
34 [SOUND_BASS] = {"dB", 1, 15,-105, 120, 0}, 34 [SOUND_BASS] = {"dB", 1, 15,-105, 120, 0},
35 [SOUND_TREBLE] = {"dB", 1, 15,-105, 120, 0}, 35 [SOUND_TREBLE] = {"dB", 1, 15,-105, 120, 0},
36 [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0}, 36 [SOUND_BALANCE] = {"%", 0, 1,-100, 100, 0},
37 [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0}, 37 [SOUND_CHANNELS] = {"", 0, 1, 0, 5, 0},
38 [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100}, 38 [SOUND_STEREO_WIDTH] = {"%", 0, 5, 0, 250, 100},
39 [SOUND_BASS_CUTOFF] = {"", 0, 1, 1, 4, 2}, 39 [SOUND_BASS_CUTOFF] = {"", 0, 1, 1, 4, 2},
40 [SOUND_TREBLE_CUTOFF] = {"", 0, 1, 1, 4, 1}, 40 [SOUND_TREBLE_CUTOFF] = {"", 0, 1, 1, 4, 1},
41}; 41};
42 42
43static int bass, treble; 43static int bass, treble;
44 44
45/* convert tenth of dB volume (-600..120) to master volume register value */ 45/* convert tenth of dB volume (-600..120) to master volume register value */
46int tenthdb2master(int db) 46int tenthdb2master(int db)
47{ 47{
48 /* -60dB to +12dB in 1dB steps */ 48 /* -60dB to +12dB in 1dB steps */
49 /* 0001100 == +12dB (0xc) */ 49 /* 0001100 == +12dB (0xc) */
50 /* 0000000 == 0dB (0x0) */ 50 /* 0000000 == 0dB (0x0) */
51 /* 1000100 == -60dB (0x44, this is actually -58dB) */ 51 /* 1000100 == -60dB (0x44, this is actually -58dB) */
52 52
53 if (db < VOLUME_MIN) return HPACTL_HPAMUTE; 53 if (db < VOLUME_MIN) return HPACTL_HPAMUTE;
54 return (db / 10) & HPACTL_HPAVOL_MASK; 54 return (db / 10) & HPACTL_HPAVOL_MASK;
55} 55}
56 56
57static void cscodec_setbits(int reg, unsigned char off, unsigned char on) 57static void cscodec_setbits(int reg, unsigned char off, unsigned char on)
58{ 58{
59 unsigned char data = (cscodec_read(reg) & ~off) | on; 59 unsigned char data = (cscodec_read(reg) & ~off) | on;
60 cscodec_write(reg, data); 60 cscodec_write(reg, data);
61} 61}
62 62
63static void audiohw_mute(bool mute) 63static void audiohw_mute(bool mute)
64{ 64{
65 if (mute) cscodec_setbits(PLAYCTL, 0, PLAYCTL_MSTAMUTE | PLAYCTL_MSTBMUTE); 65 if (mute) cscodec_setbits(PLAYCTL, 0, PLAYCTL_MSTAMUTE | PLAYCTL_MSTBMUTE);
66 else cscodec_setbits(PLAYCTL, PLAYCTL_MSTAMUTE | PLAYCTL_MSTBMUTE, 0); 66 else cscodec_setbits(PLAYCTL, PLAYCTL_MSTAMUTE | PLAYCTL_MSTBMUTE, 0);
67} 67}
68 68
69void audiohw_preinit(void) 69void audiohw_preinit(void)
70{ 70{
71 cscodec_power(true); 71 cscodec_power(true);
72 cscodec_clock(true); 72 cscodec_clock(true);
73 cscodec_reset(true); 73 cscodec_reset(true);
74 sleep(HZ / 100); 74 sleep(HZ / 100);
75 cscodec_reset(false); 75 cscodec_reset(false);
76 76
77 bass = 0; 77 bass = 0;
78 treble = 0; 78 treble = 0;
79 79
80 /* Ask Cirrus or maybe Apple what the hell this means */ 80 /* Ask Cirrus or maybe Apple what the hell this means */
81 cscodec_write(HIDDENCTL, HIDDENCTL_UNLOCK); 81 cscodec_write(HIDDENCTL, HIDDENCTL_UNLOCK);
82 cscodec_write(HIDDEN2E, HIDDEN2E_DEFAULT); 82 cscodec_write(HIDDEN2E, HIDDEN2E_DEFAULT);
83 cscodec_write(HIDDEN32, HIDDEN32_DEFAULT); 83 cscodec_write(HIDDEN32, HIDDEN32_DEFAULT);
84 cscodec_write(HIDDEN33, HIDDEN33_DEFAULT); 84 cscodec_write(HIDDEN33, HIDDEN33_DEFAULT);
85 cscodec_write(HIDDEN34, HIDDEN34_DEFAULT); 85 cscodec_write(HIDDEN34, HIDDEN34_DEFAULT);
86 cscodec_write(HIDDEN35, HIDDEN35_DEFAULT); 86 cscodec_write(HIDDEN35, HIDDEN35_DEFAULT);
87 cscodec_write(HIDDEN36, HIDDEN36_DEFAULT); 87 cscodec_write(HIDDEN36, HIDDEN36_DEFAULT);
88 cscodec_write(HIDDEN37, HIDDEN37_DEFAULT); 88 cscodec_write(HIDDEN37, HIDDEN37_DEFAULT);
89 cscodec_write(HIDDEN3A, HIDDEN3A_DEFAULT); 89 cscodec_write(HIDDEN3A, HIDDEN3A_DEFAULT);
90 cscodec_write(HIDDEN3C, HIDDEN3C_DEFAULT); 90 cscodec_write(HIDDEN3C, HIDDEN3C_DEFAULT);
91 cscodec_write(HIDDEN3D, HIDDEN3D_DEFAULT); 91 cscodec_write(HIDDEN3D, HIDDEN3D_DEFAULT);
92 cscodec_write(HIDDEN3E, HIDDEN3E_DEFAULT); 92 cscodec_write(HIDDEN3E, HIDDEN3E_DEFAULT);
93 cscodec_write(HIDDEN3F, HIDDEN3F_DEFAULT); 93 cscodec_write(HIDDEN3F, HIDDEN3F_DEFAULT);
94 cscodec_write(HIDDENCTL, HIDDENCTL_LOCK); 94 cscodec_write(HIDDENCTL, HIDDENCTL_LOCK);
95 95
96 cscodec_write(PWRCTL2, PWRCTL2_PDN_LINA_ALWAYS | PWRCTL2_PDN_LINB_ALWAYS 96 cscodec_write(PWRCTL2, PWRCTL2_PDN_LINA_ALWAYS | PWRCTL2_PDN_LINB_ALWAYS
97 | PWRCTL2_PDN_HPA_NEVER | PWRCTL2_PDN_HPB_NEVER); 97 | PWRCTL2_PDN_HPA_NEVER | PWRCTL2_PDN_HPB_NEVER);
98 cscodec_write(CLKCTL1, CLKCTL1_MASTER | CLKCTL1_SCLKMCLK_BEFORE 98 cscodec_write(CLKCTL1, CLKCTL1_MASTER | CLKCTL1_SCLKMCLK_BEFORE
99 | CLKCTL1_MCLKDIV2); 99 | CLKCTL1_MCLKDIV2);
100 cscodec_write(CLKCTL2, CLKCTL2_44100HZ); 100 cscodec_write(CLKCTL2, CLKCTL2_44100HZ);
101 cscodec_write(MISCCTL, MISCCTL_UNDOC4 | MISCCTL_ANLGZC | MISCCTL_DIGSFT); 101 cscodec_write(MISCCTL, MISCCTL_UNDOC4 | MISCCTL_ANLGZC | MISCCTL_DIGSFT);
102 cscodec_write(PWRCTL1, PWRCTL1_PDN_CHRG | PWRCTL1_PDN_ADCA 102 cscodec_write(PWRCTL1, PWRCTL1_PDN_CHRG | PWRCTL1_PDN_ADCA
103 | PWRCTL1_PDN_ADCB | PWRCTL1_PDN_CODEC); 103 | PWRCTL1_PDN_ADCB | PWRCTL1_PDN_CODEC);
104 cscodec_write(PLAYCTL, PLAYCTL_PDN_DSP 104 cscodec_write(PLAYCTL, PLAYCTL_PDN_DSP
105 | PLAYCTL_MSTAMUTE | PLAYCTL_MSTBMUTE); 105 | PLAYCTL_MSTAMUTE | PLAYCTL_MSTBMUTE);
106 cscodec_write(PGAACTL, 0); 106 cscodec_write(PGAACTL, 0);
107 cscodec_write(PGABCTL, 0); 107 cscodec_write(PGABCTL, 0);
108 cscodec_write(HPACTL, HPACTL_HPAMUTE); 108 cscodec_write(HPACTL, HPACTL_HPAMUTE);
109 cscodec_write(HPBCTL, HPBCTL_HPBMUTE); 109 cscodec_write(HPBCTL, HPBCTL_HPBMUTE);
110 cscodec_write(LINEACTL, LINEACTL_LINEAMUTE); 110 cscodec_write(LINEACTL, LINEACTL_LINEAMUTE);
111 cscodec_write(LINEBCTL, LINEBCTL_LINEBMUTE); 111 cscodec_write(LINEBCTL, LINEBCTL_LINEBMUTE);
112 cscodec_write(PWRCTL1, PWRCTL1_PDN_CHRG | PWRCTL1_PDN_ADCA 112 cscodec_write(PWRCTL1, PWRCTL1_PDN_CHRG | PWRCTL1_PDN_ADCA
113 | PWRCTL1_PDN_ADCB); 113 | PWRCTL1_PDN_ADCB);
114} 114}
115 115
116void audiohw_postinit(void) 116void audiohw_postinit(void)
117{ 117{
118 cscodec_write(HPACTL, 0); 118 cscodec_write(HPACTL, 0);
119 cscodec_write(HPBCTL, 0); 119 cscodec_write(HPBCTL, 0);
120 cscodec_write(LINEACTL, 0); 120 cscodec_write(LINEACTL, 0);
121 cscodec_write(LINEBCTL, 0); 121 cscodec_write(LINEBCTL, 0);
122 cscodec_write(CLSHCTL, CLSHCTL_ADPTPWR_SIGNAL); 122 cscodec_write(CLSHCTL, CLSHCTL_ADPTPWR_SIGNAL);
123 audiohw_mute(false); 123 audiohw_mute(false);
124} 124}
125 125
126void audiohw_set_master_vol(int vol_l, int vol_r) 126void audiohw_set_master_vol(int vol_l, int vol_r)
127{ 127{
128 /* -60dB to +12dB in 1dB steps */ 128 /* -60dB to +12dB in 1dB steps */
129 /* 0001100 == +12dB (0xc) */ 129 /* 0001100 == +12dB (0xc) */
130 /* 0000000 == 0dB (0x0) */ 130 /* 0000000 == 0dB (0x0) */
131 /* 1000100 == -60dB (0x44, this is actually -58dB) */ 131 /* 1000100 == -60dB (0x44, this is actually -58dB) */
132 132
133 cscodec_setbits(HPACTL, HPACTL_HPAVOL_MASK | HPACTL_HPAMUTE, 133 cscodec_setbits(HPACTL, HPACTL_HPAVOL_MASK | HPACTL_HPAMUTE,
134 vol_l << HPACTL_HPAVOL_SHIFT); 134 vol_l << HPACTL_HPAVOL_SHIFT);
135 cscodec_setbits(HPBCTL, HPBCTL_HPBVOL_MASK | HPBCTL_HPBMUTE, 135 cscodec_setbits(HPBCTL, HPBCTL_HPBVOL_MASK | HPBCTL_HPBMUTE,
136 vol_r << HPBCTL_HPBVOL_SHIFT); 136 vol_r << HPBCTL_HPBVOL_SHIFT);
137} 137}
138 138
139void audiohw_set_lineout_vol(int vol_l, int vol_r) 139void audiohw_set_lineout_vol(int vol_l, int vol_r)
140{ 140{
141 /* -60dB to +12dB in 1dB steps */ 141 /* -60dB to +12dB in 1dB steps */
142 /* 0001100 == +12dB (0xc) */ 142 /* 0001100 == +12dB (0xc) */
143 /* 0000000 == 0dB (0x0) */ 143 /* 0000000 == 0dB (0x0) */
144 /* 1000100 == -60dB (0x44, this is actually -58dB) */ 144 /* 1000100 == -60dB (0x44, this is actually -58dB) */
145 145
146 cscodec_setbits(LINEACTL, LINEACTL_LINEAVOL_MASK | LINEACTL_LINEAMUTE, 146 cscodec_setbits(LINEACTL, LINEACTL_LINEAVOL_MASK | LINEACTL_LINEAMUTE,
147 vol_l << LINEACTL_LINEAVOL_SHIFT); 147 vol_l << LINEACTL_LINEAVOL_SHIFT);
148 cscodec_setbits(LINEBCTL, LINEBCTL_LINEBVOL_MASK | LINEBCTL_LINEBMUTE, 148 cscodec_setbits(LINEBCTL, LINEBCTL_LINEBVOL_MASK | LINEBCTL_LINEBMUTE,
149 vol_r << LINEBCTL_LINEBVOL_SHIFT); 149 vol_r << LINEBCTL_LINEBVOL_SHIFT);
150} 150}
151 151
152void audiohw_enable_lineout(bool enable) 152void audiohw_enable_lineout(bool enable)
153{ 153{
154 if (enable) 154 if (enable)
155 cscodec_setbits(PWRCTL2, PWRCTL2_PDN_LINA_MASK | PWRCTL2_PDN_LINB_MASK, 155 cscodec_setbits(PWRCTL2, PWRCTL2_PDN_LINA_MASK | PWRCTL2_PDN_LINB_MASK,
156 PWRCTL2_PDN_LINA_NEVER | PWRCTL2_PDN_LINB_NEVER); 156 PWRCTL2_PDN_LINA_NEVER | PWRCTL2_PDN_LINB_NEVER);
157 else 157 else
158 cscodec_setbits(PWRCTL2, PWRCTL2_PDN_LINA_MASK | PWRCTL2_PDN_LINB_MASK, 158 cscodec_setbits(PWRCTL2, PWRCTL2_PDN_LINA_MASK | PWRCTL2_PDN_LINB_MASK,
159 PWRCTL2_PDN_LINA_ALWAYS | PWRCTL2_PDN_LINB_ALWAYS); 159 PWRCTL2_PDN_LINA_ALWAYS | PWRCTL2_PDN_LINB_ALWAYS);
160} 160}
161 161
162static void handle_dsp_power(void) 162static void handle_dsp_power(void)
163{ 163{
164 if (bass || treble) 164 if (bass || treble)
165 { 165 {
166 cscodec_setbits(PLAYCTL, PLAYCTL_PDN_DSP, 0); 166 cscodec_setbits(PLAYCTL, PLAYCTL_PDN_DSP, 0);
167 cscodec_setbits(BTCTL, 0, BTCTL_TCEN); 167 cscodec_setbits(BTCTL, 0, BTCTL_TCEN);
168 } 168 }
169 else 169 else
170 { 170 {
171 cscodec_setbits(BTCTL, BTCTL_TCEN, 0); 171 cscodec_setbits(BTCTL, BTCTL_TCEN, 0);
172 cscodec_setbits(PLAYCTL, 0, PLAYCTL_PDN_DSP); 172 cscodec_setbits(PLAYCTL, 0, PLAYCTL_PDN_DSP);
173 } 173 }
174} 174}
175 175
176void audiohw_set_bass(int value) 176void audiohw_set_bass(int value)
177{ 177{
178 bass = value; 178 bass = value;
179 handle_dsp_power(); 179 handle_dsp_power();
180 if (value >= -105 && value <= 120) 180 if (value >= -105 && value <= 120)
181 cscodec_setbits(TONECTL, TONECTL_BASS_MASK, 181 cscodec_setbits(TONECTL, TONECTL_BASS_MASK,
182 (8 - value / 15) << TONECTL_BASS_SHIFT); 182 (8 - value / 15) << TONECTL_BASS_SHIFT);
183} 183}
184 184
185void audiohw_set_treble(int value) 185void audiohw_set_treble(int value)
186{ 186{
187 treble = value; 187 treble = value;
188 handle_dsp_power(); 188 handle_dsp_power();
189 if (value >= -105 && value <= 120) 189 if (value >= -105 && value <= 120)
190 cscodec_setbits(TONECTL, TONECTL_TREB_MASK, 190 cscodec_setbits(TONECTL, TONECTL_TREB_MASK,
191 (8 - value / 15) << TONECTL_TREB_SHIFT); 191 (8 - value / 15) << TONECTL_TREB_SHIFT);
192} 192}
193 193
194void audiohw_set_bass_cutoff(int value) 194void audiohw_set_bass_cutoff(int value)
195{ 195{
196 cscodec_setbits(BTCTL, BTCTL_BASSCF_MASK, 196 cscodec_setbits(BTCTL, BTCTL_BASSCF_MASK,
197 (value - 1) << BTCTL_BASSCF_SHIFT); 197 (value - 1) << BTCTL_BASSCF_SHIFT);
198} 198}
199 199
200void audiohw_set_treble_cutoff(int value) 200void audiohw_set_treble_cutoff(int value)
201{ 201{
202 cscodec_setbits(BTCTL, BTCTL_TREBCF_MASK, 202 cscodec_setbits(BTCTL, BTCTL_TREBCF_MASK,
203 (value - 1) << BTCTL_TREBCF_SHIFT); 203 (value - 1) << BTCTL_TREBCF_SHIFT);
204} 204}
205 205
206void audiohw_set_prescaler(int value) 206void audiohw_set_prescaler(int value)
207{ 207{
208 cscodec_setbits(MSTAVOL, MSTAVOL_VOLUME_MASK, 208 cscodec_setbits(MSTAVOL, MSTAVOL_VOLUME_MASK,
209 (-value / 5) << MSTAVOL_VOLUME_SHIFT); 209 (-value / 5) << MSTAVOL_VOLUME_SHIFT);
210 cscodec_setbits(MSTBVOL, MSTBVOL_VOLUME_MASK, 210 cscodec_setbits(MSTBVOL, MSTBVOL_VOLUME_MASK,
211 (-value / 5) << MSTBVOL_VOLUME_SHIFT); 211 (-value / 5) << MSTBVOL_VOLUME_SHIFT);
212} 212}
213 213
214/* Nice shutdown of CS42L55 codec */ 214/* Nice shutdown of CS42L55 codec */
215void audiohw_close(void) 215void audiohw_close(void)
216{ 216{
217 audiohw_mute(true); 217 audiohw_mute(true);
218 cscodec_write(HPACTL, HPACTL_HPAMUTE); 218 cscodec_write(HPACTL, HPACTL_HPAMUTE);
219 cscodec_write(HPBCTL, HPBCTL_HPBMUTE); 219 cscodec_write(HPBCTL, HPBCTL_HPBMUTE);
220 cscodec_write(LINEACTL, LINEACTL_LINEAMUTE); 220 cscodec_write(LINEACTL, LINEACTL_LINEAMUTE);
221 cscodec_write(LINEBCTL, LINEBCTL_LINEBMUTE); 221 cscodec_write(LINEBCTL, LINEBCTL_LINEBMUTE);
222 cscodec_write(PWRCTL1, PWRCTL1_PDN_CHRG | PWRCTL1_PDN_ADCA 222 cscodec_write(PWRCTL1, PWRCTL1_PDN_CHRG | PWRCTL1_PDN_ADCA
223 | PWRCTL1_PDN_ADCB | PWRCTL1_PDN_CODEC); 223 | PWRCTL1_PDN_ADCB | PWRCTL1_PDN_CODEC);
224 cscodec_reset(true); 224 cscodec_reset(true);
225 cscodec_clock(false); 225 cscodec_clock(false);
226 cscodec_power(false); 226 cscodec_power(false);
227} 227}
228 228
229/* Note: Disable output before calling this function */ 229/* Note: Disable output before calling this function */
230void audiohw_set_frequency(int fsel) 230void audiohw_set_frequency(int fsel)
231{ 231{
232 if (fsel == HW_FREQ_8) cscodec_write(CLKCTL2, CLKCTL2_8000HZ); 232 if (fsel == HW_FREQ_8) cscodec_write(CLKCTL2, CLKCTL2_8000HZ);
233 else if (fsel == HW_FREQ_11) cscodec_write(CLKCTL2, CLKCTL2_11025HZ); 233 else if (fsel == HW_FREQ_11) cscodec_write(CLKCTL2, CLKCTL2_11025HZ);
234 else if (fsel == HW_FREQ_12) cscodec_write(CLKCTL2, CLKCTL2_12000HZ); 234 else if (fsel == HW_FREQ_12) cscodec_write(CLKCTL2, CLKCTL2_12000HZ);
235 else if (fsel == HW_FREQ_16) cscodec_write(CLKCTL2, CLKCTL2_16000HZ); 235 else if (fsel == HW_FREQ_16) cscodec_write(CLKCTL2, CLKCTL2_16000HZ);
236 else if (fsel == HW_FREQ_22) cscodec_write(CLKCTL2, CLKCTL2_22050HZ); 236 else if (fsel == HW_FREQ_22) cscodec_write(CLKCTL2, CLKCTL2_22050HZ);
237 else if (fsel == HW_FREQ_24) cscodec_write(CLKCTL2, CLKCTL2_24000HZ); 237 else if (fsel == HW_FREQ_24) cscodec_write(CLKCTL2, CLKCTL2_24000HZ);
238 else if (fsel == HW_FREQ_32) cscodec_write(CLKCTL2, CLKCTL2_32000HZ); 238 else if (fsel == HW_FREQ_32) cscodec_write(CLKCTL2, CLKCTL2_32000HZ);
239 else if (fsel == HW_FREQ_44) cscodec_write(CLKCTL2, CLKCTL2_44100HZ); 239 else if (fsel == HW_FREQ_44) cscodec_write(CLKCTL2, CLKCTL2_44100HZ);
240 else if (fsel == HW_FREQ_48) cscodec_write(CLKCTL2, CLKCTL2_48000HZ); 240 else if (fsel == HW_FREQ_48) cscodec_write(CLKCTL2, CLKCTL2_48000HZ);
241} 241}
242 242
243#ifdef HAVE_RECORDING 243#ifdef HAVE_RECORDING
244//TODO: Implement 244//TODO: Implement
245#endif /* HAVE_RECORDING */ 245#endif /* HAVE_RECORDING */
diff --git a/firmware/drivers/audio/dac3550a.c b/firmware/drivers/audio/dac3550a.c
index e13602e481..9c6dfbb292 100644
--- a/firmware/drivers/audio/dac3550a.c
+++ b/firmware/drivers/audio/dac3550a.c
@@ -5,7 +5,7 @@
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: dac.c 17847 2008-06-28 18:10:04Z bagder $ 8 * $Id$
9 * 9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing 10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 * 11 *
diff --git a/firmware/export/ata-defines.h b/firmware/export/ata-defines.h
index 1650c9fa47..70249ed0a0 100644
--- a/firmware/export/ata-defines.h
+++ b/firmware/export/ata-defines.h
@@ -1,58 +1,58 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: ata.h 28951 2011-01-02 23:02:55Z theseven $ 8 * $Id: ata.h 28951 2011-01-02 23:02:55Z theseven $
9 * 9 *
10 * Copyright (C) 2011 by Michael Sparmann 10 * Copyright (C) 2011 by Michael Sparmann
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#ifndef __ATA_DEFINES_H__ 21#ifndef __ATA_DEFINES_H__
22#define __ATA_DEFINES_H__ 22#define __ATA_DEFINES_H__
23 23
24#ifndef ATA_OUT8 24#ifndef ATA_OUT8
25#define ATA_OUT8(reg, data) (reg) = (data) 25#define ATA_OUT8(reg, data) (reg) = (data)
26#endif 26#endif
27#ifndef ATA_OUT16 27#ifndef ATA_OUT16
28#define ATA_OUT16(reg, data) (reg) = (data) 28#define ATA_OUT16(reg, data) (reg) = (data)
29#endif 29#endif
30#ifndef ATA_IN8 30#ifndef ATA_IN8
31#define ATA_IN8(reg) (reg) 31#define ATA_IN8(reg) (reg)
32#endif 32#endif
33#ifndef ATA_IN16 33#ifndef ATA_IN16
34#define ATA_IN16(reg) (reg) 34#define ATA_IN16(reg) (reg)
35#endif 35#endif
36#ifndef ATA_SWAP_IDENTIFY 36#ifndef ATA_SWAP_IDENTIFY
37#define ATA_SWAP_IDENTIFY(word) (word) 37#define ATA_SWAP_IDENTIFY(word) (word)
38#endif 38#endif
39 39
40#define STATUS_BSY 0x80 40#define STATUS_BSY 0x80
41#define STATUS_RDY 0x40 41#define STATUS_RDY 0x40
42#define STATUS_DRQ 0x08 42#define STATUS_DRQ 0x08
43#define STATUS_ERR 0x01 43#define STATUS_ERR 0x01
44#define STATUS_DF 0x20 44#define STATUS_DF 0x20
45#define ERROR_IDNF 0x10 45#define ERROR_IDNF 0x10
46#define ERROR_ABRT 0x04 46#define ERROR_ABRT 0x04
47 47
48#define TEST_PATTERN1 0xa5 48#define TEST_PATTERN1 0xa5
49#define TEST_PATTERN2 0x5a 49#define TEST_PATTERN2 0x5a
50#define TEST_PATTERN3 0xaa 50#define TEST_PATTERN3 0xaa
51#define TEST_PATTERN4 0x55 51#define TEST_PATTERN4 0x55
52 52
53#define ATA_FEATURE ATA_ERROR 53#define ATA_FEATURE ATA_ERROR
54 54
55#define ATA_STATUS ATA_COMMAND 55#define ATA_STATUS ATA_COMMAND
56#define ATA_ALT_STATUS ATA_CONTROL 56#define ATA_ALT_STATUS ATA_CONTROL
57 57
58#endif 58#endif
diff --git a/firmware/export/config/rk27generic.h b/firmware/export/config/rk27generic.h
index b2c74bd937..d7b63f0ac2 100644
--- a/firmware/export/config/rk27generic.h
+++ b/firmware/export/config/rk27generic.h
@@ -1,189 +1,189 @@
1/* 1/*
2 * This config file is for Rockchip rk27xx reference design 2 * This config file is for Rockchip rk27xx reference design
3 */ 3 */
4#define TARGET_TREE /* this target is using the target tree system */ 4#define TARGET_TREE /* this target is using the target tree system */
5 5
6/* For Rolo and boot loader */ 6/* For Rolo and boot loader */
7#define MODEL_NUMBER 78 7#define MODEL_NUMBER 78
8 8
9#define MODEL_NAME "Rockchip 27xx generic" 9#define MODEL_NAME "Rockchip 27xx generic"
10 10
11/* define this if you have recording possibility */ 11/* define this if you have recording possibility */
12/* #define HAVE_RECORDING */ 12/* #define HAVE_RECORDING */
13 13
14/* Define bitmask of input sources - recordable bitmask can be defined 14/* Define bitmask of input sources - recordable bitmask can be defined
15 explicitly if different */ 15 explicitly if different */
16/* #define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_FM) */ 16/* #define INPUT_SRC_CAPS (SRC_CAP_MIC | SRC_CAP_FM) */
17 17
18/* define the bitmask of hardware sample rates */ 18/* define the bitmask of hardware sample rates */
19#define HW_SAMPR_CAPS (SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11 \ 19#define HW_SAMPR_CAPS (SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11 \
20 | SAMPR_CAP_48 | SAMPR_CAP_24 | SAMPR_CAP_12 \ 20 | SAMPR_CAP_48 | SAMPR_CAP_24 | SAMPR_CAP_12 \
21 | SAMPR_CAP_32 | SAMPR_CAP_16 | SAMPR_CAP_8) 21 | SAMPR_CAP_32 | SAMPR_CAP_16 | SAMPR_CAP_8)
22 22
23/* define the bitmask of recording sample rates */ 23/* define the bitmask of recording sample rates */
24#define REC_SAMPR_CAPS (SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11 \ 24#define REC_SAMPR_CAPS (SAMPR_CAP_44 | SAMPR_CAP_22 | SAMPR_CAP_11 \
25 | SAMPR_CAP_48 | SAMPR_CAP_24 | SAMPR_CAP_12 \ 25 | SAMPR_CAP_48 | SAMPR_CAP_24 | SAMPR_CAP_12 \
26 | SAMPR_CAP_32 | SAMPR_CAP_16 | SAMPR_CAP_8) 26 | SAMPR_CAP_32 | SAMPR_CAP_16 | SAMPR_CAP_8)
27 27
28/* define this if you have a bitmap LCD display */ 28/* define this if you have a bitmap LCD display */
29#define HAVE_LCD_BITMAP 29#define HAVE_LCD_BITMAP
30 30
31/* define this if you can flip your LCD */ 31/* define this if you can flip your LCD */
32/* #define HAVE_LCD_FLIP */ 32/* #define HAVE_LCD_FLIP */
33 33
34/* define this if you have a colour LCD */ 34/* define this if you have a colour LCD */
35#define HAVE_LCD_COLOR 35#define HAVE_LCD_COLOR
36 36
37/* define this if you want album art for this target */ 37/* define this if you want album art for this target */
38#define HAVE_ALBUMART 38#define HAVE_ALBUMART
39 39
40/* define this to enable bitmap scaling */ 40/* define this to enable bitmap scaling */
41#define HAVE_BMP_SCALING 41#define HAVE_BMP_SCALING
42 42
43/* define this to enable JPEG decoding */ 43/* define this to enable JPEG decoding */
44#define HAVE_JPEG 44#define HAVE_JPEG
45 45
46/* define this if you can invert the colours on your LCD */ 46/* define this if you can invert the colours on your LCD */
47/* #define HAVE_LCD_INVERT */ 47/* #define HAVE_LCD_INVERT */
48 48
49/* define this if you have access to the quickscreen */ 49/* define this if you have access to the quickscreen */
50#define HAVE_QUICKSCREEN 50#define HAVE_QUICKSCREEN
51 51
52/* define this if you have access to the pitchscreen */ 52/* define this if you have access to the pitchscreen */
53#define HAVE_PITCHSCREEN 53#define HAVE_PITCHSCREEN
54 54
55/* define this if you would like tagcache to build on this target */ 55/* define this if you would like tagcache to build on this target */
56#define HAVE_TAGCACHE 56#define HAVE_TAGCACHE
57 57
58/* define this if you have a flash memory storage */ 58/* define this if you have a flash memory storage */
59#define HAVE_FLASH_STORAGE 59#define HAVE_FLASH_STORAGE
60 60
61#define CONFIG_STORAGE (STORAGE_SD | STORAGE_NAND) 61#define CONFIG_STORAGE (STORAGE_SD | STORAGE_NAND)
62 62
63#define CONFIG_NAND NAND_RK27XX 63#define CONFIG_NAND NAND_RK27XX
64#define HAVE_SW_TONE_CONTROLS 64#define HAVE_SW_TONE_CONTROLS
65 65
66/* commented for now */ 66/* commented for now */
67/* #define HAVE_HOTSWAP */ 67/* #define HAVE_HOTSWAP */
68 68
69#define NUM_DRIVES 2 69#define NUM_DRIVES 2
70#define SECTOR_SIZE 512 70#define SECTOR_SIZE 512
71 71
72/* for small(ish) SD cards */ 72/* for small(ish) SD cards */
73#define HAVE_FAT16SUPPORT 73#define HAVE_FAT16SUPPORT
74 74
75/* LCD dimensions */ 75/* LCD dimensions */
76#define LCD_WIDTH 400 76#define LCD_WIDTH 400
77#define LCD_HEIGHT 240 77#define LCD_HEIGHT 240
78#define LCD_DEPTH 16 /* pseudo 262.144 colors */ 78#define LCD_DEPTH 16 /* pseudo 262.144 colors */
79#define LCD_PIXELFORMAT RGB565 /* rgb565 */ 79#define LCD_PIXELFORMAT RGB565 /* rgb565 */
80 80
81/* Define this if the LCD can shut down */ 81/* Define this if the LCD can shut down */
82/* #define HAVE_LCD_SHUTDOWN */ 82/* #define HAVE_LCD_SHUTDOWN */
83 83
84/* Define this if your LCD can be enabled/disabled */ 84/* Define this if your LCD can be enabled/disabled */
85/* #define HAVE_LCD_ENABLE */ 85/* #define HAVE_LCD_ENABLE */
86 86
87/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE 87/* Define this if your LCD can be put to sleep. HAVE_LCD_ENABLE
88 should be defined as well. */ 88 should be defined as well. */
89#ifndef BOOTLOADER 89#ifndef BOOTLOADER
90/* TODO: #define HAVE_LCD_SLEEP */ 90/* TODO: #define HAVE_LCD_SLEEP */
91/* TODO: #define HAVE_LCD_SLEEP_SETTING */ 91/* TODO: #define HAVE_LCD_SLEEP_SETTING */
92#endif 92#endif
93 93
94#define CONFIG_KEYPAD RK27XX_GENERIC_PAD 94#define CONFIG_KEYPAD RK27XX_GENERIC_PAD
95 95
96/* Define this to enable morse code input */ 96/* Define this to enable morse code input */
97#define HAVE_MORSE_INPUT 97#define HAVE_MORSE_INPUT
98 98
99/* Define this if you do software codec */ 99/* Define this if you do software codec */
100#define CONFIG_CODEC SWCODEC 100#define CONFIG_CODEC SWCODEC
101 101
102/* define this if you have a real-time clock */ 102/* define this if you have a real-time clock */
103/* #define CONFIG_RTC RTC_NANO2G */ 103/* #define CONFIG_RTC RTC_NANO2G */
104 104
105/* Define if the device can wake from an RTC alarm */ 105/* Define if the device can wake from an RTC alarm */
106/* #define HAVE_RTC_ALARM */ 106/* #define HAVE_RTC_ALARM */
107 107
108#define CONFIG_LCD LCD_SPFD5420A 108#define CONFIG_LCD LCD_SPFD5420A
109 109
110/* Define the type of audio codec */ 110/* Define the type of audio codec */
111#define HAVE_RK27XX_CODEC 111#define HAVE_RK27XX_CODEC
112 112
113/* #define HAVE_PCM_DMA_ADDRESS */ 113/* #define HAVE_PCM_DMA_ADDRESS */
114 114
115/* Define this for LCD backlight available */ 115/* Define this for LCD backlight available */
116#define HAVE_BACKLIGHT 116#define HAVE_BACKLIGHT
117#define HAVE_BACKLIGHT_BRIGHTNESS 117#define HAVE_BACKLIGHT_BRIGHTNESS
118#define MIN_BRIGHTNESS_SETTING 0 118#define MIN_BRIGHTNESS_SETTING 0
119#define MAX_BRIGHTNESS_SETTING 31 119#define MAX_BRIGHTNESS_SETTING 31
120#define DEFAULT_BRIGHTNESS_SETTING 20 120#define DEFAULT_BRIGHTNESS_SETTING 20
121#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_HW_REG 121#define CONFIG_BACKLIGHT_FADING BACKLIGHT_FADING_SW_HW_REG
122 122
123/* Define this if you have a software controlled poweroff */ 123/* Define this if you have a software controlled poweroff */
124#define HAVE_SW_POWEROFF 124#define HAVE_SW_POWEROFF
125 125
126/* The number of bytes reserved for loadable codecs */ 126/* The number of bytes reserved for loadable codecs */
127#define CODEC_SIZE 0x100000 127#define CODEC_SIZE 0x100000
128 128
129/* The number of bytes reserved for loadable plugins */ 129/* The number of bytes reserved for loadable plugins */
130#define PLUGIN_BUFFER_SIZE 0x80000 130#define PLUGIN_BUFFER_SIZE 0x80000
131 131
132/* TODO: Figure out real values */ 132/* TODO: Figure out real values */
133#define BATTERY_CAPACITY_DEFAULT 400 /* default battery capacity */ 133#define BATTERY_CAPACITY_DEFAULT 400 /* default battery capacity */
134#define BATTERY_CAPACITY_MIN 300 /* min. capacity selectable */ 134#define BATTERY_CAPACITY_MIN 300 /* min. capacity selectable */
135#define BATTERY_CAPACITY_MAX 500 /* max. capacity selectable */ 135#define BATTERY_CAPACITY_MAX 500 /* max. capacity selectable */
136#define BATTERY_CAPACITY_INC 10 /* capacity increment */ 136#define BATTERY_CAPACITY_INC 10 /* capacity increment */
137#define BATTERY_TYPES_COUNT 1 /* only one type */ 137#define BATTERY_TYPES_COUNT 1 /* only one type */
138 138
139/* Hardware controlled charging with monitoring */ 139/* Hardware controlled charging with monitoring */
140#define CONFIG_CHARGING CHARGING_MONITOR 140#define CONFIG_CHARGING CHARGING_MONITOR
141 141
142/* define current usage levels */ 142/* define current usage levels */
143/* TODO: #define CURRENT_NORMAL 143/* TODO: #define CURRENT_NORMAL
144 * TODO: #define CURRENT_BACKLIGHT 23 144 * TODO: #define CURRENT_BACKLIGHT 23
145 */ 145 */
146 146
147/* define this if the unit can be powered or charged via USB */ 147/* define this if the unit can be powered or charged via USB */
148#define HAVE_USB_POWER 148#define HAVE_USB_POWER
149 149
150/* USB On-the-go */ 150/* USB On-the-go */
151#define CONFIG_USBOTG USBOTG_RK27XX 151#define CONFIG_USBOTG USBOTG_RK27XX
152 152
153/* enable these for the experimental usb stack */ 153/* enable these for the experimental usb stack */
154#define HAVE_USBSTACK 154#define HAVE_USBSTACK
155 155
156#define USE_ROCKBOX_USB 156#define USE_ROCKBOX_USB
157#define USB_VENDOR_ID 0x071b 157#define USB_VENDOR_ID 0x071b
158#define USB_PRODUCT_ID 0x3202 158#define USB_PRODUCT_ID 0x3202
159#define HAVE_BOOTLOADER_USB_MODE 159#define HAVE_BOOTLOADER_USB_MODE
160 160
161/* Define this if your LCD can set contrast */ 161/* Define this if your LCD can set contrast */
162/* #define HAVE_LCD_CONTRAST */ 162/* #define HAVE_LCD_CONTRAST */
163 163
164/* The exact type of CPU */ 164/* The exact type of CPU */
165#define CONFIG_CPU RK27XX 165#define CONFIG_CPU RK27XX
166 166
167/* I2C interface */ 167/* I2C interface */
168#define CONFIG_I2C I2C_RK27XX 168#define CONFIG_I2C I2C_RK27XX
169 169
170/* Define this to the CPU frequency */ 170/* Define this to the CPU frequency */
171#define CPU_FREQ 200000000 171#define CPU_FREQ 200000000
172 172
173/* define this if the hardware can be powered off while charging */ 173/* define this if the hardware can be powered off while charging */
174/* #define HAVE_POWEROFF_WHILE_CHARGING */ 174/* #define HAVE_POWEROFF_WHILE_CHARGING */
175 175
176/* Offset ( in the firmware file's header ) to the file CRC */ 176/* Offset ( in the firmware file's header ) to the file CRC */
177#define FIRMWARE_OFFSET_FILE_CRC 0 177#define FIRMWARE_OFFSET_FILE_CRC 0
178 178
179/* Offset ( in the firmware file's header ) to the real data */ 179/* Offset ( in the firmware file's header ) to the real data */
180#define FIRMWARE_OFFSET_FILE_DATA 8 180#define FIRMWARE_OFFSET_FILE_DATA 8
181 181
182#define STORAGE_NEEDS_ALIGN 182#define STORAGE_NEEDS_ALIGN
183 183
184/* Define this if you have adjustable CPU frequency */ 184/* Define this if you have adjustable CPU frequency */
185/* #define HAVE_ADJUSTABLE_CPU_FREQ */ 185/* #define HAVE_ADJUSTABLE_CPU_FREQ */
186 186
187#define BOOTFILE_EXT "rk27" 187#define BOOTFILE_EXT "rk27"
188#define BOOTFILE "rockbox." BOOTFILE_EXT 188#define BOOTFILE "rockbox." BOOTFILE_EXT
189#define BOOTDIR "/.rockbox" 189#define BOOTDIR "/.rockbox"
diff --git a/firmware/export/dac3550a.h b/firmware/export/dac3550a.h
index 3744b221ed..23c4db9cbc 100644
--- a/firmware/export/dac3550a.h
+++ b/firmware/export/dac3550a.h
@@ -5,7 +5,7 @@
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: dac.h 24158 2010-01-03 11:31:14Z Buschel $ 8 * $Id$
9 * 9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing 10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 * 11 *
diff --git a/firmware/export/mascodec.h b/firmware/export/mascodec.h
index 82a71e30c8..f10dc3f1ca 100644
--- a/firmware/export/mascodec.h
+++ b/firmware/export/mascodec.h
@@ -5,7 +5,7 @@
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: mas.h 24154 2010-01-03 10:27:43Z Buschel $ 8 * $Id$
9 * 9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing 10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 * 11 *
diff --git a/firmware/export/s5l8702.h b/firmware/export/s5l8702.h
index 338d7a5e16..31e6a63dbc 100644
--- a/firmware/export/s5l8702.h
+++ b/firmware/export/s5l8702.h
@@ -1,830 +1,830 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: s5l8700.h 28791 2010-12-11 09:39:33Z Buschel $ 8 * $Id: s5l8700.h 28791 2010-12-11 09:39:33Z Buschel $
9 * 9 *
10 * Copyright (C) 2008 by Marcoen Hirschberg, Bart van Adrichem 10 * Copyright (C) 2008 by Marcoen Hirschberg, Bart van Adrichem
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21 21
22#ifndef __S5L8702_H__ 22#ifndef __S5L8702_H__
23#define __S5L8702_H__ 23#define __S5L8702_H__
24 24
25#include <inttypes.h> 25#include <inttypes.h>
26 26
27#define REG8_PTR_T volatile uint8_t * 27#define REG8_PTR_T volatile uint8_t *
28#define REG16_PTR_T volatile uint16_t * 28#define REG16_PTR_T volatile uint16_t *
29#define REG32_PTR_T volatile uint32_t * 29#define REG32_PTR_T volatile uint32_t *
30 30
31#define TIMER_FREQ 54000000 31#define TIMER_FREQ 54000000
32 32
33#define CACHEALIGN_BITS (4) /* 2^4 = 16 bytes */ 33#define CACHEALIGN_BITS (4) /* 2^4 = 16 bytes */
34 34
35#define DRAM_ORIG 0x08000000 35#define DRAM_ORIG 0x08000000
36#define IRAM_ORIG 0 36#define IRAM_ORIG 0
37 37
38#define DRAM_SIZE (MEMORYSIZE * 0x100000) 38#define DRAM_SIZE (MEMORYSIZE * 0x100000)
39#define IRAM_SIZE 0x40000 39#define IRAM_SIZE 0x40000
40 40
41#define TTB_SIZE 0x4000 41#define TTB_SIZE 0x4000
42#define TTB_BASE_ADDR (DRAM_ORIG + DRAM_SIZE - TTB_SIZE) 42#define TTB_BASE_ADDR (DRAM_ORIG + DRAM_SIZE - TTB_SIZE)
43 43
44/////SYSTEM CONTROLLER///// 44/////SYSTEM CONTROLLER/////
45#define CLKCON0 (*((volatile uint32_t*)(0x3C500000))) 45#define CLKCON0 (*((volatile uint32_t*)(0x3C500000)))
46#define CLKCON1 (*((volatile uint32_t*)(0x3C500004))) 46#define CLKCON1 (*((volatile uint32_t*)(0x3C500004)))
47#define CLKCON2 (*((volatile uint32_t*)(0x3C500008))) 47#define CLKCON2 (*((volatile uint32_t*)(0x3C500008)))
48#define CLKCON3 (*((volatile uint32_t*)(0x3C50000C))) 48#define CLKCON3 (*((volatile uint32_t*)(0x3C50000C)))
49#define CLKCON4 (*((volatile uint32_t*)(0x3C500010))) 49#define CLKCON4 (*((volatile uint32_t*)(0x3C500010)))
50#define CLKCON5 (*((volatile uint32_t*)(0x3C500014))) 50#define CLKCON5 (*((volatile uint32_t*)(0x3C500014)))
51#define PLL0PMS (*((volatile uint32_t*)(0x3C500020))) 51#define PLL0PMS (*((volatile uint32_t*)(0x3C500020)))
52#define PLL1PMS (*((volatile uint32_t*)(0x3C500024))) 52#define PLL1PMS (*((volatile uint32_t*)(0x3C500024)))
53#define PLL2PMS (*((volatile uint32_t*)(0x3C500028))) 53#define PLL2PMS (*((volatile uint32_t*)(0x3C500028)))
54#define PLL0LCNT (*((volatile uint32_t*)(0x3C500030))) 54#define PLL0LCNT (*((volatile uint32_t*)(0x3C500030)))
55#define PLL1LCNT (*((volatile uint32_t*)(0x3C500034))) 55#define PLL1LCNT (*((volatile uint32_t*)(0x3C500034)))
56#define PLL2LCNT (*((volatile uint32_t*)(0x3C500038))) 56#define PLL2LCNT (*((volatile uint32_t*)(0x3C500038)))
57#define PLLLOCK (*((volatile uint32_t*)(0x3C500040))) 57#define PLLLOCK (*((volatile uint32_t*)(0x3C500040)))
58#define PLLMODE (*((volatile uint32_t*)(0x3C500044))) 58#define PLLMODE (*((volatile uint32_t*)(0x3C500044)))
59#define PWRCON(i) (*((uint32_t volatile*)(0x3C500000 \ 59#define PWRCON(i) (*((uint32_t volatile*)(0x3C500000 \
60 + ((i) == 4 ? 0x6C : \ 60 + ((i) == 4 ? 0x6C : \
61 ((i) == 3 ? 0x68 : \ 61 ((i) == 3 ? 0x68 : \
62 ((i) == 2 ? 0x58 : \ 62 ((i) == 2 ? 0x58 : \
63 ((i) == 1 ? 0x4C : \ 63 ((i) == 1 ? 0x4C : \
64 0x48))))))) 64 0x48)))))))
65 65
66 66
67/////TIMER///// 67/////TIMER/////
68#define TACON (*((uint32_t volatile*)(0x3C700000))) 68#define TACON (*((uint32_t volatile*)(0x3C700000)))
69#define TACMD (*((uint32_t volatile*)(0x3C700004))) 69#define TACMD (*((uint32_t volatile*)(0x3C700004)))
70#define TADATA0 (*((uint32_t volatile*)(0x3C700008))) 70#define TADATA0 (*((uint32_t volatile*)(0x3C700008)))
71#define TADATA1 (*((uint32_t volatile*)(0x3C70000C))) 71#define TADATA1 (*((uint32_t volatile*)(0x3C70000C)))
72#define TAPRE (*((uint32_t volatile*)(0x3C700010))) 72#define TAPRE (*((uint32_t volatile*)(0x3C700010)))
73#define TACNT (*((uint32_t volatile*)(0x3C700014))) 73#define TACNT (*((uint32_t volatile*)(0x3C700014)))
74#define TBCON (*((uint32_t volatile*)(0x3C700020))) 74#define TBCON (*((uint32_t volatile*)(0x3C700020)))
75#define TBCMD (*((uint32_t volatile*)(0x3C700024))) 75#define TBCMD (*((uint32_t volatile*)(0x3C700024)))
76#define TBDATA0 (*((uint32_t volatile*)(0x3C700028))) 76#define TBDATA0 (*((uint32_t volatile*)(0x3C700028)))
77#define TBDATA1 (*((uint32_t volatile*)(0x3C70002C))) 77#define TBDATA1 (*((uint32_t volatile*)(0x3C70002C)))
78#define TBPRE (*((uint32_t volatile*)(0x3C700030))) 78#define TBPRE (*((uint32_t volatile*)(0x3C700030)))
79#define TBCNT (*((uint32_t volatile*)(0x3C700034))) 79#define TBCNT (*((uint32_t volatile*)(0x3C700034)))
80#define TCCON (*((uint32_t volatile*)(0x3C700040))) 80#define TCCON (*((uint32_t volatile*)(0x3C700040)))
81#define TCCMD (*((uint32_t volatile*)(0x3C700044))) 81#define TCCMD (*((uint32_t volatile*)(0x3C700044)))
82#define TCDATA0 (*((uint32_t volatile*)(0x3C700048))) 82#define TCDATA0 (*((uint32_t volatile*)(0x3C700048)))
83#define TCDATA1 (*((uint32_t volatile*)(0x3C70004C))) 83#define TCDATA1 (*((uint32_t volatile*)(0x3C70004C)))
84#define TCPRE (*((uint32_t volatile*)(0x3C700050))) 84#define TCPRE (*((uint32_t volatile*)(0x3C700050)))
85#define TCCNT (*((uint32_t volatile*)(0x3C700054))) 85#define TCCNT (*((uint32_t volatile*)(0x3C700054)))
86#define TDCON (*((uint32_t volatile*)(0x3C700060))) 86#define TDCON (*((uint32_t volatile*)(0x3C700060)))
87#define TDCMD (*((uint32_t volatile*)(0x3C700064))) 87#define TDCMD (*((uint32_t volatile*)(0x3C700064)))
88#define TDDATA0 (*((uint32_t volatile*)(0x3C700068))) 88#define TDDATA0 (*((uint32_t volatile*)(0x3C700068)))
89#define TDDATA1 (*((uint32_t volatile*)(0x3C70006C))) 89#define TDDATA1 (*((uint32_t volatile*)(0x3C70006C)))
90#define TDPRE (*((uint32_t volatile*)(0x3C700070))) 90#define TDPRE (*((uint32_t volatile*)(0x3C700070)))
91#define TDCNT (*((uint32_t volatile*)(0x3C700074))) 91#define TDCNT (*((uint32_t volatile*)(0x3C700074)))
92#define TECON (*((uint32_t volatile*)(0x3C7000A0))) 92#define TECON (*((uint32_t volatile*)(0x3C7000A0)))
93#define TECMD (*((uint32_t volatile*)(0x3C7000A4))) 93#define TECMD (*((uint32_t volatile*)(0x3C7000A4)))
94#define TEDATA0 (*((uint32_t volatile*)(0x3C7000A8))) 94#define TEDATA0 (*((uint32_t volatile*)(0x3C7000A8)))
95#define TEDATA1 (*((uint32_t volatile*)(0x3C7000AC))) 95#define TEDATA1 (*((uint32_t volatile*)(0x3C7000AC)))
96#define TEPRE (*((uint32_t volatile*)(0x3C7000B0))) 96#define TEPRE (*((uint32_t volatile*)(0x3C7000B0)))
97#define TECNT (*((uint32_t volatile*)(0x3C7000B4))) 97#define TECNT (*((uint32_t volatile*)(0x3C7000B4)))
98#define TFCON (*((uint32_t volatile*)(0x3C7000C0))) 98#define TFCON (*((uint32_t volatile*)(0x3C7000C0)))
99#define TFCMD (*((uint32_t volatile*)(0x3C7000C4))) 99#define TFCMD (*((uint32_t volatile*)(0x3C7000C4)))
100#define TFDATA0 (*((uint32_t volatile*)(0x3C7000C8))) 100#define TFDATA0 (*((uint32_t volatile*)(0x3C7000C8)))
101#define TFDATA1 (*((uint32_t volatile*)(0x3C7000CC))) 101#define TFDATA1 (*((uint32_t volatile*)(0x3C7000CC)))
102#define TFPRE (*((uint32_t volatile*)(0x3C7000D0))) 102#define TFPRE (*((uint32_t volatile*)(0x3C7000D0)))
103#define TFCNT (*((uint32_t volatile*)(0x3C7000D4))) 103#define TFCNT (*((uint32_t volatile*)(0x3C7000D4)))
104#define TGCON (*((uint32_t volatile*)(0x3C7000E0))) 104#define TGCON (*((uint32_t volatile*)(0x3C7000E0)))
105#define TGCMD (*((uint32_t volatile*)(0x3C7000E4))) 105#define TGCMD (*((uint32_t volatile*)(0x3C7000E4)))
106#define TGDATA0 (*((uint32_t volatile*)(0x3C7000E8))) 106#define TGDATA0 (*((uint32_t volatile*)(0x3C7000E8)))
107#define TGDATA1 (*((uint32_t volatile*)(0x3C7000EC))) 107#define TGDATA1 (*((uint32_t volatile*)(0x3C7000EC)))
108#define TGPRE (*((uint32_t volatile*)(0x3C7000F0))) 108#define TGPRE (*((uint32_t volatile*)(0x3C7000F0)))
109#define TGCNT (*((uint32_t volatile*)(0x3C7000F4))) 109#define TGCNT (*((uint32_t volatile*)(0x3C7000F4)))
110#define THCON (*((uint32_t volatile*)(0x3C700100))) 110#define THCON (*((uint32_t volatile*)(0x3C700100)))
111#define THCMD (*((uint32_t volatile*)(0x3C700104))) 111#define THCMD (*((uint32_t volatile*)(0x3C700104)))
112#define THDATA0 (*((uint32_t volatile*)(0x3C700108))) 112#define THDATA0 (*((uint32_t volatile*)(0x3C700108)))
113#define THDATA1 (*((uint32_t volatile*)(0x3C70010C))) 113#define THDATA1 (*((uint32_t volatile*)(0x3C70010C)))
114#define THPRE (*((uint32_t volatile*)(0x3C700110))) 114#define THPRE (*((uint32_t volatile*)(0x3C700110)))
115#define THCNT (*((uint32_t volatile*)(0x3C700114))) 115#define THCNT (*((uint32_t volatile*)(0x3C700114)))
116#define USEC_TIMER TECNT 116#define USEC_TIMER TECNT
117 117
118 118
119/////USB///// 119/////USB/////
120#define OTGBASE 0x38400000 120#define OTGBASE 0x38400000
121#define PHYBASE 0x3C400000 121#define PHYBASE 0x3C400000
122#define SYNOPSYSOTG_CLOCK 0 122#define SYNOPSYSOTG_CLOCK 0
123#define SYNOPSYSOTG_AHBCFG 0x2B 123#define SYNOPSYSOTG_AHBCFG 0x2B
124 124
125 125
126/////I2C///// 126/////I2C/////
127#define IICCON(bus) (*((uint32_t volatile*)(0x3C600000 + 0x300000 * (bus)))) 127#define IICCON(bus) (*((uint32_t volatile*)(0x3C600000 + 0x300000 * (bus))))
128#define IICSTAT(bus) (*((uint32_t volatile*)(0x3C600004 + 0x300000 * (bus)))) 128#define IICSTAT(bus) (*((uint32_t volatile*)(0x3C600004 + 0x300000 * (bus))))
129#define IICADD(bus) (*((uint32_t volatile*)(0x3C600008 + 0x300000 * (bus)))) 129#define IICADD(bus) (*((uint32_t volatile*)(0x3C600008 + 0x300000 * (bus))))
130#define IICDS(bus) (*((uint32_t volatile*)(0x3C60000C + 0x300000 * (bus)))) 130#define IICDS(bus) (*((uint32_t volatile*)(0x3C60000C + 0x300000 * (bus))))
131 131
132 132
133/////INTERRUPT CONTROLLERS///// 133/////INTERRUPT CONTROLLERS/////
134#define VICIRQSTATUS(v) (*((uint32_t volatile*)(0x38E00000 + 0x1000 * (v)))) 134#define VICIRQSTATUS(v) (*((uint32_t volatile*)(0x38E00000 + 0x1000 * (v))))
135#define VICFIQSTATUS(v) (*((uint32_t volatile*)(0x38E00004 + 0x1000 * (v)))) 135#define VICFIQSTATUS(v) (*((uint32_t volatile*)(0x38E00004 + 0x1000 * (v))))
136#define VICRAWINTR(v) (*((uint32_t volatile*)(0x38E00008 + 0x1000 * (v)))) 136#define VICRAWINTR(v) (*((uint32_t volatile*)(0x38E00008 + 0x1000 * (v))))
137#define VICINTSELECT(v) (*((uint32_t volatile*)(0x38E0000C + 0x1000 * (v)))) 137#define VICINTSELECT(v) (*((uint32_t volatile*)(0x38E0000C + 0x1000 * (v))))
138#define VICINTENABLE(v) (*((uint32_t volatile*)(0x38E00010 + 0x1000 * (v)))) 138#define VICINTENABLE(v) (*((uint32_t volatile*)(0x38E00010 + 0x1000 * (v))))
139#define VICINTENCLEAR(v) (*((uint32_t volatile*)(0x38E00014 + 0x1000 * (v)))) 139#define VICINTENCLEAR(v) (*((uint32_t volatile*)(0x38E00014 + 0x1000 * (v))))
140#define VICSOFTINT(v) (*((uint32_t volatile*)(0x38E00018 + 0x1000 * (v)))) 140#define VICSOFTINT(v) (*((uint32_t volatile*)(0x38E00018 + 0x1000 * (v))))
141#define VICSOFTINTCLEAR(v) (*((uint32_t volatile*)(0x38E0001C + 0x1000 * (v)))) 141#define VICSOFTINTCLEAR(v) (*((uint32_t volatile*)(0x38E0001C + 0x1000 * (v))))
142#define VICPROTECTION(v) (*((uint32_t volatile*)(0x38E00020 + 0x1000 * (v)))) 142#define VICPROTECTION(v) (*((uint32_t volatile*)(0x38E00020 + 0x1000 * (v))))
143#define VICSWPRIORITYMASK(v) (*((uint32_t volatile*)(0x38E00024 + 0x1000 * (v)))) 143#define VICSWPRIORITYMASK(v) (*((uint32_t volatile*)(0x38E00024 + 0x1000 * (v))))
144#define VICPRIORITYDAISY(v) (*((uint32_t volatile*)(0x38E00028 + 0x1000 * (v)))) 144#define VICPRIORITYDAISY(v) (*((uint32_t volatile*)(0x38E00028 + 0x1000 * (v))))
145#define VICVECTADDR(v, i) (*((uint32_t volatile*)(0x38E00100 + 0x1000 * (v) + 4 * (i)))) 145#define VICVECTADDR(v, i) (*((uint32_t volatile*)(0x38E00100 + 0x1000 * (v) + 4 * (i))))
146#define VICVECTPRIORITY(v, i) (*((uint32_t volatile*)(0x38E00200 + 0x1000 * (v) + 4 * (i)))) 146#define VICVECTPRIORITY(v, i) (*((uint32_t volatile*)(0x38E00200 + 0x1000 * (v) + 4 * (i))))
147#define VICADDRESS(v) (*((const void* volatile*)(0x38E00F00 + 0x1000 * (v)))) 147#define VICADDRESS(v) (*((const void* volatile*)(0x38E00F00 + 0x1000 * (v))))
148#define VIC0IRQSTATUS (*((uint32_t volatile*)(0x38E00000))) 148#define VIC0IRQSTATUS (*((uint32_t volatile*)(0x38E00000)))
149#define VIC0FIQSTATUS (*((uint32_t volatile*)(0x38E00004))) 149#define VIC0FIQSTATUS (*((uint32_t volatile*)(0x38E00004)))
150#define VIC0RAWINTR (*((uint32_t volatile*)(0x38E00008))) 150#define VIC0RAWINTR (*((uint32_t volatile*)(0x38E00008)))
151#define VIC0INTSELECT (*((uint32_t volatile*)(0x38E0000C))) 151#define VIC0INTSELECT (*((uint32_t volatile*)(0x38E0000C)))
152#define VIC0INTENABLE (*((uint32_t volatile*)(0x38E00010))) 152#define VIC0INTENABLE (*((uint32_t volatile*)(0x38E00010)))
153#define VIC0INTENCLEAR (*((uint32_t volatile*)(0x38E00014))) 153#define VIC0INTENCLEAR (*((uint32_t volatile*)(0x38E00014)))
154#define VIC0SOFTINT (*((uint32_t volatile*)(0x38E00018))) 154#define VIC0SOFTINT (*((uint32_t volatile*)(0x38E00018)))
155#define VIC0SOFTINTCLEAR (*((uint32_t volatile*)(0x38E0001C))) 155#define VIC0SOFTINTCLEAR (*((uint32_t volatile*)(0x38E0001C)))
156#define VIC0PROTECTION (*((uint32_t volatile*)(0x38E00020))) 156#define VIC0PROTECTION (*((uint32_t volatile*)(0x38E00020)))
157#define VIC0SWPRIORITYMASK (*((uint32_t volatile*)(0x38E00024))) 157#define VIC0SWPRIORITYMASK (*((uint32_t volatile*)(0x38E00024)))
158#define VIC0PRIORITYDAISY (*((uint32_t volatile*)(0x38E00028))) 158#define VIC0PRIORITYDAISY (*((uint32_t volatile*)(0x38E00028)))
159#define VIC0VECTADDR(i) (*((const void* volatile*)(0x38E00100 + 4 * (i)))) 159#define VIC0VECTADDR(i) (*((const void* volatile*)(0x38E00100 + 4 * (i))))
160#define VIC0VECTADDR0 (*((const void* volatile*)(0x38E00100))) 160#define VIC0VECTADDR0 (*((const void* volatile*)(0x38E00100)))
161#define VIC0VECTADDR1 (*((const void* volatile*)(0x38E00104))) 161#define VIC0VECTADDR1 (*((const void* volatile*)(0x38E00104)))
162#define VIC0VECTADDR2 (*((const void* volatile*)(0x38E00108))) 162#define VIC0VECTADDR2 (*((const void* volatile*)(0x38E00108)))
163#define VIC0VECTADDR3 (*((const void* volatile*)(0x38E0010C))) 163#define VIC0VECTADDR3 (*((const void* volatile*)(0x38E0010C)))
164#define VIC0VECTADDR4 (*((const void* volatile*)(0x38E00110))) 164#define VIC0VECTADDR4 (*((const void* volatile*)(0x38E00110)))
165#define VIC0VECTADDR5 (*((const void* volatile*)(0x38E00114))) 165#define VIC0VECTADDR5 (*((const void* volatile*)(0x38E00114)))
166#define VIC0VECTADDR6 (*((const void* volatile*)(0x38E00118))) 166#define VIC0VECTADDR6 (*((const void* volatile*)(0x38E00118)))
167#define VIC0VECTADDR7 (*((const void* volatile*)(0x38E0011C))) 167#define VIC0VECTADDR7 (*((const void* volatile*)(0x38E0011C)))
168#define VIC0VECTADDR8 (*((const void* volatile*)(0x38E00120))) 168#define VIC0VECTADDR8 (*((const void* volatile*)(0x38E00120)))
169#define VIC0VECTADDR9 (*((const void* volatile*)(0x38E00124))) 169#define VIC0VECTADDR9 (*((const void* volatile*)(0x38E00124)))
170#define VIC0VECTADDR10 (*((const void* volatile*)(0x38E00128))) 170#define VIC0VECTADDR10 (*((const void* volatile*)(0x38E00128)))
171#define VIC0VECTADDR11 (*((const void* volatile*)(0x38E0012C))) 171#define VIC0VECTADDR11 (*((const void* volatile*)(0x38E0012C)))
172#define VIC0VECTADDR12 (*((const void* volatile*)(0x38E00130))) 172#define VIC0VECTADDR12 (*((const void* volatile*)(0x38E00130)))
173#define VIC0VECTADDR13 (*((const void* volatile*)(0x38E00134))) 173#define VIC0VECTADDR13 (*((const void* volatile*)(0x38E00134)))
174#define VIC0VECTADDR14 (*((const void* volatile*)(0x38E00138))) 174#define VIC0VECTADDR14 (*((const void* volatile*)(0x38E00138)))
175#define VIC0VECTADDR15 (*((const void* volatile*)(0x38E0013C))) 175#define VIC0VECTADDR15 (*((const void* volatile*)(0x38E0013C)))
176#define VIC0VECTADDR16 (*((const void* volatile*)(0x38E00140))) 176#define VIC0VECTADDR16 (*((const void* volatile*)(0x38E00140)))
177#define VIC0VECTADDR17 (*((const void* volatile*)(0x38E00144))) 177#define VIC0VECTADDR17 (*((const void* volatile*)(0x38E00144)))
178#define VIC0VECTADDR18 (*((const void* volatile*)(0x38E00148))) 178#define VIC0VECTADDR18 (*((const void* volatile*)(0x38E00148)))
179#define VIC0VECTADDR19 (*((const void* volatile*)(0x38E0014C))) 179#define VIC0VECTADDR19 (*((const void* volatile*)(0x38E0014C)))
180#define VIC0VECTADDR20 (*((const void* volatile*)(0x38E00150))) 180#define VIC0VECTADDR20 (*((const void* volatile*)(0x38E00150)))
181#define VIC0VECTADDR21 (*((const void* volatile*)(0x38E00154))) 181#define VIC0VECTADDR21 (*((const void* volatile*)(0x38E00154)))
182#define VIC0VECTADDR22 (*((const void* volatile*)(0x38E00158))) 182#define VIC0VECTADDR22 (*((const void* volatile*)(0x38E00158)))
183#define VIC0VECTADDR23 (*((const void* volatile*)(0x38E0015C))) 183#define VIC0VECTADDR23 (*((const void* volatile*)(0x38E0015C)))
184#define VIC0VECTADDR24 (*((const void* volatile*)(0x38E00160))) 184#define VIC0VECTADDR24 (*((const void* volatile*)(0x38E00160)))
185#define VIC0VECTADDR25 (*((const void* volatile*)(0x38E00164))) 185#define VIC0VECTADDR25 (*((const void* volatile*)(0x38E00164)))
186#define VIC0VECTADDR26 (*((const void* volatile*)(0x38E00168))) 186#define VIC0VECTADDR26 (*((const void* volatile*)(0x38E00168)))
187#define VIC0VECTADDR27 (*((const void* volatile*)(0x38E0016C))) 187#define VIC0VECTADDR27 (*((const void* volatile*)(0x38E0016C)))
188#define VIC0VECTADDR28 (*((const void* volatile*)(0x38E00170))) 188#define VIC0VECTADDR28 (*((const void* volatile*)(0x38E00170)))
189#define VIC0VECTADDR29 (*((const void* volatile*)(0x38E00174))) 189#define VIC0VECTADDR29 (*((const void* volatile*)(0x38E00174)))
190#define VIC0VECTADDR30 (*((const void* volatile*)(0x38E00178))) 190#define VIC0VECTADDR30 (*((const void* volatile*)(0x38E00178)))
191#define VIC0VECTADDR31 (*((const void* volatile*)(0x38E0017C))) 191#define VIC0VECTADDR31 (*((const void* volatile*)(0x38E0017C)))
192#define VIC0VECTPRIORITY(i) (*((uint32_t volatile*)(0x38E00200 + 4 * (i)))) 192#define VIC0VECTPRIORITY(i) (*((uint32_t volatile*)(0x38E00200 + 4 * (i))))
193#define VIC0VECTPRIORITY0 (*((uint32_t volatile*)(0x38E00200))) 193#define VIC0VECTPRIORITY0 (*((uint32_t volatile*)(0x38E00200)))
194#define VIC0VECTPRIORITY1 (*((uint32_t volatile*)(0x38E00204))) 194#define VIC0VECTPRIORITY1 (*((uint32_t volatile*)(0x38E00204)))
195#define VIC0VECTPRIORITY2 (*((uint32_t volatile*)(0x38E00208))) 195#define VIC0VECTPRIORITY2 (*((uint32_t volatile*)(0x38E00208)))
196#define VIC0VECTPRIORITY3 (*((uint32_t volatile*)(0x38E0020C))) 196#define VIC0VECTPRIORITY3 (*((uint32_t volatile*)(0x38E0020C)))
197#define VIC0VECTPRIORITY4 (*((uint32_t volatile*)(0x38E00210))) 197#define VIC0VECTPRIORITY4 (*((uint32_t volatile*)(0x38E00210)))
198#define VIC0VECTPRIORITY5 (*((uint32_t volatile*)(0x38E00214))) 198#define VIC0VECTPRIORITY5 (*((uint32_t volatile*)(0x38E00214)))
199#define VIC0VECTPRIORITY6 (*((uint32_t volatile*)(0x38E00218))) 199#define VIC0VECTPRIORITY6 (*((uint32_t volatile*)(0x38E00218)))
200#define VIC0VECTPRIORITY7 (*((uint32_t volatile*)(0x38E0021C))) 200#define VIC0VECTPRIORITY7 (*((uint32_t volatile*)(0x38E0021C)))
201#define VIC0VECTPRIORITY8 (*((uint32_t volatile*)(0x38E00220))) 201#define VIC0VECTPRIORITY8 (*((uint32_t volatile*)(0x38E00220)))
202#define VIC0VECTPRIORITY9 (*((uint32_t volatile*)(0x38E00224))) 202#define VIC0VECTPRIORITY9 (*((uint32_t volatile*)(0x38E00224)))
203#define VIC0VECTPRIORITY10 (*((uint32_t volatile*)(0x38E00228))) 203#define VIC0VECTPRIORITY10 (*((uint32_t volatile*)(0x38E00228)))
204#define VIC0VECTPRIORITY11 (*((uint32_t volatile*)(0x38E0022C))) 204#define VIC0VECTPRIORITY11 (*((uint32_t volatile*)(0x38E0022C)))
205#define VIC0VECTPRIORITY12 (*((uint32_t volatile*)(0x38E00230))) 205#define VIC0VECTPRIORITY12 (*((uint32_t volatile*)(0x38E00230)))
206#define VIC0VECTPRIORITY13 (*((uint32_t volatile*)(0x38E00234))) 206#define VIC0VECTPRIORITY13 (*((uint32_t volatile*)(0x38E00234)))
207#define VIC0VECTPRIORITY14 (*((uint32_t volatile*)(0x38E00238))) 207#define VIC0VECTPRIORITY14 (*((uint32_t volatile*)(0x38E00238)))
208#define VIC0VECTPRIORITY15 (*((uint32_t volatile*)(0x38E0023C))) 208#define VIC0VECTPRIORITY15 (*((uint32_t volatile*)(0x38E0023C)))
209#define VIC0VECTPRIORITY16 (*((uint32_t volatile*)(0x38E00240))) 209#define VIC0VECTPRIORITY16 (*((uint32_t volatile*)(0x38E00240)))
210#define VIC0VECTPRIORITY17 (*((uint32_t volatile*)(0x38E00244))) 210#define VIC0VECTPRIORITY17 (*((uint32_t volatile*)(0x38E00244)))
211#define VIC0VECTPRIORITY18 (*((uint32_t volatile*)(0x38E00248))) 211#define VIC0VECTPRIORITY18 (*((uint32_t volatile*)(0x38E00248)))
212#define VIC0VECTPRIORITY19 (*((uint32_t volatile*)(0x38E0024C))) 212#define VIC0VECTPRIORITY19 (*((uint32_t volatile*)(0x38E0024C)))
213#define VIC0VECTPRIORITY20 (*((uint32_t volatile*)(0x38E00250))) 213#define VIC0VECTPRIORITY20 (*((uint32_t volatile*)(0x38E00250)))
214#define VIC0VECTPRIORITY21 (*((uint32_t volatile*)(0x38E00254))) 214#define VIC0VECTPRIORITY21 (*((uint32_t volatile*)(0x38E00254)))
215#define VIC0VECTPRIORITY22 (*((uint32_t volatile*)(0x38E00258))) 215#define VIC0VECTPRIORITY22 (*((uint32_t volatile*)(0x38E00258)))
216#define VIC0VECTPRIORITY23 (*((uint32_t volatile*)(0x38E0025C))) 216#define VIC0VECTPRIORITY23 (*((uint32_t volatile*)(0x38E0025C)))
217#define VIC0VECTPRIORITY24 (*((uint32_t volatile*)(0x38E00260))) 217#define VIC0VECTPRIORITY24 (*((uint32_t volatile*)(0x38E00260)))
218#define VIC0VECTPRIORITY25 (*((uint32_t volatile*)(0x38E00264))) 218#define VIC0VECTPRIORITY25 (*((uint32_t volatile*)(0x38E00264)))
219#define VIC0VECTPRIORITY26 (*((uint32_t volatile*)(0x38E00268))) 219#define VIC0VECTPRIORITY26 (*((uint32_t volatile*)(0x38E00268)))
220#define VIC0VECTPRIORITY27 (*((uint32_t volatile*)(0x38E0026C))) 220#define VIC0VECTPRIORITY27 (*((uint32_t volatile*)(0x38E0026C)))
221#define VIC0VECTPRIORITY28 (*((uint32_t volatile*)(0x38E00270))) 221#define VIC0VECTPRIORITY28 (*((uint32_t volatile*)(0x38E00270)))
222#define VIC0VECTPRIORITY29 (*((uint32_t volatile*)(0x38E00274))) 222#define VIC0VECTPRIORITY29 (*((uint32_t volatile*)(0x38E00274)))
223#define VIC0VECTPRIORITY30 (*((uint32_t volatile*)(0x38E00278))) 223#define VIC0VECTPRIORITY30 (*((uint32_t volatile*)(0x38E00278)))
224#define VIC0VECTPRIORITY31 (*((uint32_t volatile*)(0x38E0027C))) 224#define VIC0VECTPRIORITY31 (*((uint32_t volatile*)(0x38E0027C)))
225#define VIC0ADDRESS (*((void* volatile*)(0x38E00F00))) 225#define VIC0ADDRESS (*((void* volatile*)(0x38E00F00)))
226#define VIC1IRQSTATUS (*((uint32_t volatile*)(0x38E01000))) 226#define VIC1IRQSTATUS (*((uint32_t volatile*)(0x38E01000)))
227#define VIC1FIQSTATUS (*((uint32_t volatile*)(0x38E01004))) 227#define VIC1FIQSTATUS (*((uint32_t volatile*)(0x38E01004)))
228#define VIC1RAWINTR (*((uint32_t volatile*)(0x38E01008))) 228#define VIC1RAWINTR (*((uint32_t volatile*)(0x38E01008)))
229#define VIC1INTSELECT (*((uint32_t volatile*)(0x38E0100C))) 229#define VIC1INTSELECT (*((uint32_t volatile*)(0x38E0100C)))
230#define VIC1INTENABLE (*((uint32_t volatile*)(0x38E01010))) 230#define VIC1INTENABLE (*((uint32_t volatile*)(0x38E01010)))
231#define VIC1INTENCLEAR (*((uint32_t volatile*)(0x38E01014))) 231#define VIC1INTENCLEAR (*((uint32_t volatile*)(0x38E01014)))
232#define VIC1SOFTINT (*((uint32_t volatile*)(0x38E01018))) 232#define VIC1SOFTINT (*((uint32_t volatile*)(0x38E01018)))
233#define VIC1SOFTINTCLEAR (*((uint32_t volatile*)(0x38E0101C))) 233#define VIC1SOFTINTCLEAR (*((uint32_t volatile*)(0x38E0101C)))
234#define VIC1PROTECTION (*((uint32_t volatile*)(0x38E01020))) 234#define VIC1PROTECTION (*((uint32_t volatile*)(0x38E01020)))
235#define VIC1SWPRIORITYMASK (*((uint32_t volatile*)(0x38E01024))) 235#define VIC1SWPRIORITYMASK (*((uint32_t volatile*)(0x38E01024)))
236#define VIC1PRIORITYDAISY (*((uint32_t volatile*)(0x38E01028))) 236#define VIC1PRIORITYDAISY (*((uint32_t volatile*)(0x38E01028)))
237#define VIC1VECTADDR(i) (*((const void* volatile*)(0x38E01100 + 4 * (i)))) 237#define VIC1VECTADDR(i) (*((const void* volatile*)(0x38E01100 + 4 * (i))))
238#define VIC1VECTADDR0 (*((const void* volatile*)(0x38E01100))) 238#define VIC1VECTADDR0 (*((const void* volatile*)(0x38E01100)))
239#define VIC1VECTADDR1 (*((const void* volatile*)(0x38E01104))) 239#define VIC1VECTADDR1 (*((const void* volatile*)(0x38E01104)))
240#define VIC1VECTADDR2 (*((const void* volatile*)(0x38E01108))) 240#define VIC1VECTADDR2 (*((const void* volatile*)(0x38E01108)))
241#define VIC1VECTADDR3 (*((const void* volatile*)(0x38E0110C))) 241#define VIC1VECTADDR3 (*((const void* volatile*)(0x38E0110C)))
242#define VIC1VECTADDR4 (*((const void* volatile*)(0x38E01110))) 242#define VIC1VECTADDR4 (*((const void* volatile*)(0x38E01110)))
243#define VIC1VECTADDR5 (*((const void* volatile*)(0x38E01114))) 243#define VIC1VECTADDR5 (*((const void* volatile*)(0x38E01114)))
244#define VIC1VECTADDR6 (*((const void* volatile*)(0x38E01118))) 244#define VIC1VECTADDR6 (*((const void* volatile*)(0x38E01118)))
245#define VIC1VECTADDR7 (*((const void* volatile*)(0x38E0111C))) 245#define VIC1VECTADDR7 (*((const void* volatile*)(0x38E0111C)))
246#define VIC1VECTADDR8 (*((const void* volatile*)(0x38E01120))) 246#define VIC1VECTADDR8 (*((const void* volatile*)(0x38E01120)))
247#define VIC1VECTADDR9 (*((const void* volatile*)(0x38E01124))) 247#define VIC1VECTADDR9 (*((const void* volatile*)(0x38E01124)))
248#define VIC1VECTADDR10 (*((const void* volatile*)(0x38E01128))) 248#define VIC1VECTADDR10 (*((const void* volatile*)(0x38E01128)))
249#define VIC1VECTADDR11 (*((const void* volatile*)(0x38E0112C))) 249#define VIC1VECTADDR11 (*((const void* volatile*)(0x38E0112C)))
250#define VIC1VECTADDR12 (*((const void* volatile*)(0x38E01130))) 250#define VIC1VECTADDR12 (*((const void* volatile*)(0x38E01130)))
251#define VIC1VECTADDR13 (*((const void* volatile*)(0x38E01134))) 251#define VIC1VECTADDR13 (*((const void* volatile*)(0x38E01134)))
252#define VIC1VECTADDR14 (*((const void* volatile*)(0x38E01138))) 252#define VIC1VECTADDR14 (*((const void* volatile*)(0x38E01138)))
253#define VIC1VECTADDR15 (*((const void* volatile*)(0x38E0113C))) 253#define VIC1VECTADDR15 (*((const void* volatile*)(0x38E0113C)))
254#define VIC1VECTADDR16 (*((const void* volatile*)(0x38E01140))) 254#define VIC1VECTADDR16 (*((const void* volatile*)(0x38E01140)))
255#define VIC1VECTADDR17 (*((const void* volatile*)(0x38E01144))) 255#define VIC1VECTADDR17 (*((const void* volatile*)(0x38E01144)))
256#define VIC1VECTADDR18 (*((const void* volatile*)(0x38E01148))) 256#define VIC1VECTADDR18 (*((const void* volatile*)(0x38E01148)))
257#define VIC1VECTADDR19 (*((const void* volatile*)(0x38E0114C))) 257#define VIC1VECTADDR19 (*((const void* volatile*)(0x38E0114C)))
258#define VIC1VECTADDR20 (*((const void* volatile*)(0x38E01150))) 258#define VIC1VECTADDR20 (*((const void* volatile*)(0x38E01150)))
259#define VIC1VECTADDR21 (*((const void* volatile*)(0x38E01154))) 259#define VIC1VECTADDR21 (*((const void* volatile*)(0x38E01154)))
260#define VIC1VECTADDR22 (*((const void* volatile*)(0x38E01158))) 260#define VIC1VECTADDR22 (*((const void* volatile*)(0x38E01158)))
261#define VIC1VECTADDR23 (*((const void* volatile*)(0x38E0115C))) 261#define VIC1VECTADDR23 (*((const void* volatile*)(0x38E0115C)))
262#define VIC1VECTADDR24 (*((const void* volatile*)(0x38E01160))) 262#define VIC1VECTADDR24 (*((const void* volatile*)(0x38E01160)))
263#define VIC1VECTADDR25 (*((const void* volatile*)(0x38E01164))) 263#define VIC1VECTADDR25 (*((const void* volatile*)(0x38E01164)))
264#define VIC1VECTADDR26 (*((const void* volatile*)(0x38E01168))) 264#define VIC1VECTADDR26 (*((const void* volatile*)(0x38E01168)))
265#define VIC1VECTADDR27 (*((const void* volatile*)(0x38E0116C))) 265#define VIC1VECTADDR27 (*((const void* volatile*)(0x38E0116C)))
266#define VIC1VECTADDR28 (*((const void* volatile*)(0x38E01170))) 266#define VIC1VECTADDR28 (*((const void* volatile*)(0x38E01170)))
267#define VIC1VECTADDR29 (*((const void* volatile*)(0x38E01174))) 267#define VIC1VECTADDR29 (*((const void* volatile*)(0x38E01174)))
268#define VIC1VECTADDR30 (*((const void* volatile*)(0x38E01178))) 268#define VIC1VECTADDR30 (*((const void* volatile*)(0x38E01178)))
269#define VIC1VECTADDR31 (*((const void* volatile*)(0x38E0117C))) 269#define VIC1VECTADDR31 (*((const void* volatile*)(0x38E0117C)))
270#define VIC1VECTPRIORITY(i) (*((uint32_t volatile*)(0x38E01200 + 4 * (i)))) 270#define VIC1VECTPRIORITY(i) (*((uint32_t volatile*)(0x38E01200 + 4 * (i))))
271#define VIC1VECTPRIORITY0 (*((uint32_t volatile*)(0x38E01200))) 271#define VIC1VECTPRIORITY0 (*((uint32_t volatile*)(0x38E01200)))
272#define VIC1VECTPRIORITY1 (*((uint32_t volatile*)(0x38E01204))) 272#define VIC1VECTPRIORITY1 (*((uint32_t volatile*)(0x38E01204)))
273#define VIC1VECTPRIORITY2 (*((uint32_t volatile*)(0x38E01208))) 273#define VIC1VECTPRIORITY2 (*((uint32_t volatile*)(0x38E01208)))
274#define VIC1VECTPRIORITY3 (*((uint32_t volatile*)(0x38E0120C))) 274#define VIC1VECTPRIORITY3 (*((uint32_t volatile*)(0x38E0120C)))
275#define VIC1VECTPRIORITY4 (*((uint32_t volatile*)(0x38E01210))) 275#define VIC1VECTPRIORITY4 (*((uint32_t volatile*)(0x38E01210)))
276#define VIC1VECTPRIORITY5 (*((uint32_t volatile*)(0x38E01214))) 276#define VIC1VECTPRIORITY5 (*((uint32_t volatile*)(0x38E01214)))
277#define VIC1VECTPRIORITY6 (*((uint32_t volatile*)(0x38E01218))) 277#define VIC1VECTPRIORITY6 (*((uint32_t volatile*)(0x38E01218)))
278#define VIC1VECTPRIORITY7 (*((uint32_t volatile*)(0x38E0121C))) 278#define VIC1VECTPRIORITY7 (*((uint32_t volatile*)(0x38E0121C)))
279#define VIC1VECTPRIORITY8 (*((uint32_t volatile*)(0x38E01220))) 279#define VIC1VECTPRIORITY8 (*((uint32_t volatile*)(0x38E01220)))
280#define VIC1VECTPRIORITY9 (*((uint32_t volatile*)(0x38E01224))) 280#define VIC1VECTPRIORITY9 (*((uint32_t volatile*)(0x38E01224)))
281#define VIC1VECTPRIORITY10 (*((uint32_t volatile*)(0x38E01228))) 281#define VIC1VECTPRIORITY10 (*((uint32_t volatile*)(0x38E01228)))
282#define VIC1VECTPRIORITY11 (*((uint32_t volatile*)(0x38E0122C))) 282#define VIC1VECTPRIORITY11 (*((uint32_t volatile*)(0x38E0122C)))
283#define VIC1VECTPRIORITY12 (*((uint32_t volatile*)(0x38E01230))) 283#define VIC1VECTPRIORITY12 (*((uint32_t volatile*)(0x38E01230)))
284#define VIC1VECTPRIORITY13 (*((uint32_t volatile*)(0x38E01234))) 284#define VIC1VECTPRIORITY13 (*((uint32_t volatile*)(0x38E01234)))
285#define VIC1VECTPRIORITY14 (*((uint32_t volatile*)(0x38E01238))) 285#define VIC1VECTPRIORITY14 (*((uint32_t volatile*)(0x38E01238)))
286#define VIC1VECTPRIORITY15 (*((uint32_t volatile*)(0x38E0123C))) 286#define VIC1VECTPRIORITY15 (*((uint32_t volatile*)(0x38E0123C)))
287#define VIC1VECTPRIORITY16 (*((uint32_t volatile*)(0x38E01240))) 287#define VIC1VECTPRIORITY16 (*((uint32_t volatile*)(0x38E01240)))
288#define VIC1VECTPRIORITY17 (*((uint32_t volatile*)(0x38E01244))) 288#define VIC1VECTPRIORITY17 (*((uint32_t volatile*)(0x38E01244)))
289#define VIC1VECTPRIORITY18 (*((uint32_t volatile*)(0x38E01248))) 289#define VIC1VECTPRIORITY18 (*((uint32_t volatile*)(0x38E01248)))
290#define VIC1VECTPRIORITY19 (*((uint32_t volatile*)(0x38E0124C))) 290#define VIC1VECTPRIORITY19 (*((uint32_t volatile*)(0x38E0124C)))
291#define VIC1VECTPRIORITY20 (*((uint32_t volatile*)(0x38E01250))) 291#define VIC1VECTPRIORITY20 (*((uint32_t volatile*)(0x38E01250)))
292#define VIC1VECTPRIORITY21 (*((uint32_t volatile*)(0x38E01254))) 292#define VIC1VECTPRIORITY21 (*((uint32_t volatile*)(0x38E01254)))
293#define VIC1VECTPRIORITY22 (*((uint32_t volatile*)(0x38E01258))) 293#define VIC1VECTPRIORITY22 (*((uint32_t volatile*)(0x38E01258)))
294#define VIC1VECTPRIORITY23 (*((uint32_t volatile*)(0x38E0125C))) 294#define VIC1VECTPRIORITY23 (*((uint32_t volatile*)(0x38E0125C)))
295#define VIC1VECTPRIORITY24 (*((uint32_t volatile*)(0x38E01260))) 295#define VIC1VECTPRIORITY24 (*((uint32_t volatile*)(0x38E01260)))
296#define VIC1VECTPRIORITY25 (*((uint32_t volatile*)(0x38E01264))) 296#define VIC1VECTPRIORITY25 (*((uint32_t volatile*)(0x38E01264)))
297#define VIC1VECTPRIORITY26 (*((uint32_t volatile*)(0x38E01268))) 297#define VIC1VECTPRIORITY26 (*((uint32_t volatile*)(0x38E01268)))
298#define VIC1VECTPRIORITY27 (*((uint32_t volatile*)(0x38E0126C))) 298#define VIC1VECTPRIORITY27 (*((uint32_t volatile*)(0x38E0126C)))
299#define VIC1VECTPRIORITY28 (*((uint32_t volatile*)(0x38E01270))) 299#define VIC1VECTPRIORITY28 (*((uint32_t volatile*)(0x38E01270)))
300#define VIC1VECTPRIORITY29 (*((uint32_t volatile*)(0x38E01274))) 300#define VIC1VECTPRIORITY29 (*((uint32_t volatile*)(0x38E01274)))
301#define VIC1VECTPRIORITY30 (*((uint32_t volatile*)(0x38E01278))) 301#define VIC1VECTPRIORITY30 (*((uint32_t volatile*)(0x38E01278)))
302#define VIC1VECTPRIORITY31 (*((uint32_t volatile*)(0x38E0127C))) 302#define VIC1VECTPRIORITY31 (*((uint32_t volatile*)(0x38E0127C)))
303#define VIC1ADDRESS (*((void* volatile*)(0x38E01F00))) 303#define VIC1ADDRESS (*((void* volatile*)(0x38E01F00)))
304 304
305 305
306/////GPIO///// 306/////GPIO/////
307#define PCON(i) (*((uint32_t volatile*)(0x3cf00000 + ((i) << 5)))) 307#define PCON(i) (*((uint32_t volatile*)(0x3cf00000 + ((i) << 5))))
308#define PDAT(i) (*((uint32_t volatile*)(0x3cf00004 + ((i) << 5)))) 308#define PDAT(i) (*((uint32_t volatile*)(0x3cf00004 + ((i) << 5))))
309#define PUNA(i) (*((uint32_t volatile*)(0x3cf00008 + ((i) << 5)))) 309#define PUNA(i) (*((uint32_t volatile*)(0x3cf00008 + ((i) << 5))))
310#define PUNB(i) (*((uint32_t volatile*)(0x3cf0000c + ((i) << 5)))) 310#define PUNB(i) (*((uint32_t volatile*)(0x3cf0000c + ((i) << 5))))
311#define PCON0 (*((uint32_t volatile*)(0x3cf00000))) 311#define PCON0 (*((uint32_t volatile*)(0x3cf00000)))
312#define PDAT0 (*((uint32_t volatile*)(0x3cf00004))) 312#define PDAT0 (*((uint32_t volatile*)(0x3cf00004)))
313#define PCON1 (*((uint32_t volatile*)(0x3cf00020))) 313#define PCON1 (*((uint32_t volatile*)(0x3cf00020)))
314#define PDAT1 (*((uint32_t volatile*)(0x3cf00024))) 314#define PDAT1 (*((uint32_t volatile*)(0x3cf00024)))
315#define PCON2 (*((uint32_t volatile*)(0x3cf00040))) 315#define PCON2 (*((uint32_t volatile*)(0x3cf00040)))
316#define PDAT2 (*((uint32_t volatile*)(0x3cf00044))) 316#define PDAT2 (*((uint32_t volatile*)(0x3cf00044)))
317#define PCON3 (*((uint32_t volatile*)(0x3cf00060))) 317#define PCON3 (*((uint32_t volatile*)(0x3cf00060)))
318#define PDAT3 (*((uint32_t volatile*)(0x3cf00064))) 318#define PDAT3 (*((uint32_t volatile*)(0x3cf00064)))
319#define PCON4 (*((uint32_t volatile*)(0x3cf00080))) 319#define PCON4 (*((uint32_t volatile*)(0x3cf00080)))
320#define PDAT4 (*((uint32_t volatile*)(0x3cf00084))) 320#define PDAT4 (*((uint32_t volatile*)(0x3cf00084)))
321#define PCON5 (*((uint32_t volatile*)(0x3cf000a0))) 321#define PCON5 (*((uint32_t volatile*)(0x3cf000a0)))
322#define PDAT5 (*((uint32_t volatile*)(0x3cf000a4))) 322#define PDAT5 (*((uint32_t volatile*)(0x3cf000a4)))
323#define PCON6 (*((uint32_t volatile*)(0x3cf000c0))) 323#define PCON6 (*((uint32_t volatile*)(0x3cf000c0)))
324#define PDAT6 (*((uint32_t volatile*)(0x3cf000c4))) 324#define PDAT6 (*((uint32_t volatile*)(0x3cf000c4)))
325#define PCON7 (*((uint32_t volatile*)(0x3cf000e0))) 325#define PCON7 (*((uint32_t volatile*)(0x3cf000e0)))
326#define PDAT7 (*((uint32_t volatile*)(0x3cf000e4))) 326#define PDAT7 (*((uint32_t volatile*)(0x3cf000e4)))
327#define PCON8 (*((uint32_t volatile*)(0x3cf00100))) 327#define PCON8 (*((uint32_t volatile*)(0x3cf00100)))
328#define PDAT8 (*((uint32_t volatile*)(0x3cf00104))) 328#define PDAT8 (*((uint32_t volatile*)(0x3cf00104)))
329#define PCON9 (*((uint32_t volatile*)(0x3cf00120))) 329#define PCON9 (*((uint32_t volatile*)(0x3cf00120)))
330#define PDAT9 (*((uint32_t volatile*)(0x3cf00124))) 330#define PDAT9 (*((uint32_t volatile*)(0x3cf00124)))
331#define PCONA (*((uint32_t volatile*)(0x3cf00140))) 331#define PCONA (*((uint32_t volatile*)(0x3cf00140)))
332#define PDATA (*((uint32_t volatile*)(0x3cf00144))) 332#define PDATA (*((uint32_t volatile*)(0x3cf00144)))
333#define PCONB (*((uint32_t volatile*)(0x3cf00160))) 333#define PCONB (*((uint32_t volatile*)(0x3cf00160)))
334#define PDATB (*((uint32_t volatile*)(0x3cf00164))) 334#define PDATB (*((uint32_t volatile*)(0x3cf00164)))
335#define PCONC (*((uint32_t volatile*)(0x3cf00180))) 335#define PCONC (*((uint32_t volatile*)(0x3cf00180)))
336#define PDATC (*((uint32_t volatile*)(0x3cf00184))) 336#define PDATC (*((uint32_t volatile*)(0x3cf00184)))
337#define PCOND (*((uint32_t volatile*)(0x3cf001a0))) 337#define PCOND (*((uint32_t volatile*)(0x3cf001a0)))
338#define PDATD (*((uint32_t volatile*)(0x3cf001a4))) 338#define PDATD (*((uint32_t volatile*)(0x3cf001a4)))
339#define PCONE (*((uint32_t volatile*)(0x3cf001c0))) 339#define PCONE (*((uint32_t volatile*)(0x3cf001c0)))
340#define PDATE (*((uint32_t volatile*)(0x3cf001c4))) 340#define PDATE (*((uint32_t volatile*)(0x3cf001c4)))
341#define PCONF (*((uint32_t volatile*)(0x3cf001e0))) 341#define PCONF (*((uint32_t volatile*)(0x3cf001e0)))
342#define PDATF (*((uint32_t volatile*)(0x3cf001e4))) 342#define PDATF (*((uint32_t volatile*)(0x3cf001e4)))
343#define GPIOCMD (*((uint32_t volatile*)(0x3cf00200))) 343#define GPIOCMD (*((uint32_t volatile*)(0x3cf00200)))
344 344
345 345
346/////SPI///// 346/////SPI/////
347#define SPIBASE(i) ((i) == 2 ? 0x3d200000 : \ 347#define SPIBASE(i) ((i) == 2 ? 0x3d200000 : \
348 (i) == 1 ? 0x3ce00000 : \ 348 (i) == 1 ? 0x3ce00000 : \
349 0x3c300000) 349 0x3c300000)
350#define SPICLKGATE(i) ((i) == 2 ? 0x2f : \ 350#define SPICLKGATE(i) ((i) == 2 ? 0x2f : \
351 (i) == 1 ? 0x2b : \ 351 (i) == 1 ? 0x2b : \
352 0x22) 352 0x22)
353#define SPIDMA(i) ((i) == 2 ? 0xd : \ 353#define SPIDMA(i) ((i) == 2 ? 0xd : \
354 (i) == 1 ? 0xf : \ 354 (i) == 1 ? 0xf : \
355 0x5) 355 0x5)
356#define SPICTRL(i) (*((uint32_t volatile*)(SPIBASE(i)))) 356#define SPICTRL(i) (*((uint32_t volatile*)(SPIBASE(i))))
357#define SPISETUP(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x4))) 357#define SPISETUP(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x4)))
358#define SPISTATUS(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x8))) 358#define SPISTATUS(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x8)))
359#define SPIUNKREG1(i) (*((uint32_t volatile*)(SPIBASE(i) + 0xc))) 359#define SPIUNKREG1(i) (*((uint32_t volatile*)(SPIBASE(i) + 0xc)))
360#define SPITXDATA(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x10))) 360#define SPITXDATA(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x10)))
361#define SPIRXDATA(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x20))) 361#define SPIRXDATA(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x20)))
362#define SPICLKDIV(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x30))) 362#define SPICLKDIV(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x30)))
363#define SPIRXLIMIT(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x34))) 363#define SPIRXLIMIT(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x34)))
364#define SPIUNKREG3(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x38))) 364#define SPIUNKREG3(i) (*((uint32_t volatile*)(SPIBASE(i) + 0x38)))
365 365
366 366
367/////AES///// 367/////AES/////
368#define AESCONTROL (*((uint32_t volatile*)(0x38c00000))) 368#define AESCONTROL (*((uint32_t volatile*)(0x38c00000)))
369#define AESGO (*((uint32_t volatile*)(0x38c00004))) 369#define AESGO (*((uint32_t volatile*)(0x38c00004)))
370#define AESUNKREG0 (*((uint32_t volatile*)(0x38c00008))) 370#define AESUNKREG0 (*((uint32_t volatile*)(0x38c00008)))
371#define AESSTATUS (*((uint32_t volatile*)(0x38c0000c))) 371#define AESSTATUS (*((uint32_t volatile*)(0x38c0000c)))
372#define AESUNKREG1 (*((uint32_t volatile*)(0x38c00010))) 372#define AESUNKREG1 (*((uint32_t volatile*)(0x38c00010)))
373#define AESKEYLEN (*((uint32_t volatile*)(0x38c00014))) 373#define AESKEYLEN (*((uint32_t volatile*)(0x38c00014)))
374#define AESOUTSIZE (*((uint32_t volatile*)(0x38c00018))) 374#define AESOUTSIZE (*((uint32_t volatile*)(0x38c00018)))
375#define AESOUTADDR (*((void* volatile*)(0x38c00020))) 375#define AESOUTADDR (*((void* volatile*)(0x38c00020)))
376#define AESINSIZE (*((uint32_t volatile*)(0x38c00024))) 376#define AESINSIZE (*((uint32_t volatile*)(0x38c00024)))
377#define AESINADDR (*((const void* volatile*)(0x38c00028))) 377#define AESINADDR (*((const void* volatile*)(0x38c00028)))
378#define AESAUXSIZE (*((uint32_t volatile*)(0x38c0002c))) 378#define AESAUXSIZE (*((uint32_t volatile*)(0x38c0002c)))
379#define AESAUXADDR (*((void* volatile*)(0x38c00030))) 379#define AESAUXADDR (*((void* volatile*)(0x38c00030)))
380#define AESSIZE3 (*((uint32_t volatile*)(0x38c00034))) 380#define AESSIZE3 (*((uint32_t volatile*)(0x38c00034)))
381#define AESKEY ((uint32_t volatile*)(0x38c0004c)) 381#define AESKEY ((uint32_t volatile*)(0x38c0004c))
382#define AESTYPE (*((uint32_t volatile*)(0x38c0006c))) 382#define AESTYPE (*((uint32_t volatile*)(0x38c0006c)))
383#define AESIV ((uint32_t volatile*)(0x38c00074)) 383#define AESIV ((uint32_t volatile*)(0x38c00074))
384#define AESTYPE2 (*((uint32_t volatile*)(0x38c00088))) 384#define AESTYPE2 (*((uint32_t volatile*)(0x38c00088)))
385#define AESUNKREG2 (*((uint32_t volatile*)(0x38c0008c))) 385#define AESUNKREG2 (*((uint32_t volatile*)(0x38c0008c)))
386 386
387 387
388/////SHA1///// 388/////SHA1/////
389#define SHA1CONFIG (*((uint32_t volatile*)(0x38000000))) 389#define SHA1CONFIG (*((uint32_t volatile*)(0x38000000)))
390#define SHA1RESET (*((uint32_t volatile*)(0x38000004))) 390#define SHA1RESET (*((uint32_t volatile*)(0x38000004)))
391#define SHA1RESULT ((uint32_t volatile*)(0x38000020)) 391#define SHA1RESULT ((uint32_t volatile*)(0x38000020))
392#define SHA1DATAIN ((uint32_t volatile*)(0x38000040)) 392#define SHA1DATAIN ((uint32_t volatile*)(0x38000040))
393 393
394 394
395/////DMA///// 395/////DMA/////
396#ifndef ASM 396#ifndef ASM
397struct dma_lli 397struct dma_lli
398{ 398{
399 const void* srcaddr; 399 const void* srcaddr;
400 void* dstaddr; 400 void* dstaddr;
401 const struct dma_lli* nextlli; 401 const struct dma_lli* nextlli;
402 uint32_t control; 402 uint32_t control;
403}; 403};
404#endif 404#endif
405#define DMACINTSTS(d) (*((uint32_t volatile*)(0x38200000 + 0x1700000 * (d)))) 405#define DMACINTSTS(d) (*((uint32_t volatile*)(0x38200000 + 0x1700000 * (d))))
406#define DMACINTTCSTS(d) (*((uint32_t volatile*)(0x38200004 + 0x1700000 * (d)))) 406#define DMACINTTCSTS(d) (*((uint32_t volatile*)(0x38200004 + 0x1700000 * (d))))
407#define DMACINTTCCLR(d) (*((uint32_t volatile*)(0x38200008 + 0x1700000 * (d)))) 407#define DMACINTTCCLR(d) (*((uint32_t volatile*)(0x38200008 + 0x1700000 * (d))))
408#define DMACINTERRSTS(d) (*((uint32_t volatile*)(0x3820000c + 0x1700000 * (d)))) 408#define DMACINTERRSTS(d) (*((uint32_t volatile*)(0x3820000c + 0x1700000 * (d))))
409#define DMACINTERRCLR(d) (*((uint32_t volatile*)(0x38200010 + 0x1700000 * (d)))) 409#define DMACINTERRCLR(d) (*((uint32_t volatile*)(0x38200010 + 0x1700000 * (d))))
410#define DMACRAWINTTCSTS(d) (*((uint32_t volatile*)(0x38200014 + 0x1700000 * (d)))) 410#define DMACRAWINTTCSTS(d) (*((uint32_t volatile*)(0x38200014 + 0x1700000 * (d))))
411#define DMACRAWINTERRSTS(d) (*((uint32_t volatile*)(0x38200018 + 0x1700000 * (d)))) 411#define DMACRAWINTERRSTS(d) (*((uint32_t volatile*)(0x38200018 + 0x1700000 * (d))))
412#define DMACENABLEDCHANS(d) (*((uint32_t volatile*)(0x3820001c + 0x1700000 * (d)))) 412#define DMACENABLEDCHANS(d) (*((uint32_t volatile*)(0x3820001c + 0x1700000 * (d))))
413#define DMACSOFTBREQ(d) (*((uint32_t volatile*)(0x38200020 + 0x1700000 * (d)))) 413#define DMACSOFTBREQ(d) (*((uint32_t volatile*)(0x38200020 + 0x1700000 * (d))))
414#define DMACSOFTSREQ(d) (*((uint32_t volatile*)(0x38200024 + 0x1700000 * (d)))) 414#define DMACSOFTSREQ(d) (*((uint32_t volatile*)(0x38200024 + 0x1700000 * (d))))
415#define DMACSOFTLBREQ(d) (*((uint32_t volatile*)(0x38200028 + 0x1700000 * (d)))) 415#define DMACSOFTLBREQ(d) (*((uint32_t volatile*)(0x38200028 + 0x1700000 * (d))))
416#define DMACSOFTLSREQ(d) (*((uint32_t volatile*)(0x3820002c + 0x1700000 * (d)))) 416#define DMACSOFTLSREQ(d) (*((uint32_t volatile*)(0x3820002c + 0x1700000 * (d))))
417#define DMACCONFIG(d) (*((uint32_t volatile*)(0x38200030 + 0x1700000 * (d)))) 417#define DMACCONFIG(d) (*((uint32_t volatile*)(0x38200030 + 0x1700000 * (d))))
418#define DMACSYNC(d) (*((uint32_t volatile*)(0x38200034 + 0x1700000 * (d)))) 418#define DMACSYNC(d) (*((uint32_t volatile*)(0x38200034 + 0x1700000 * (d))))
419#define DMACCLLI(d, c) (*((struct dma_lli volatile*)(0x38200100 + 0x1700000 * (d) + 0x20 * (c)))) 419#define DMACCLLI(d, c) (*((struct dma_lli volatile*)(0x38200100 + 0x1700000 * (d) + 0x20 * (c))))
420#define DMACCSRCADDR(d, c) (*((const void* volatile*)(0x38200100 + 0x1700000 * (d) + 0x20 * (c)))) 420#define DMACCSRCADDR(d, c) (*((const void* volatile*)(0x38200100 + 0x1700000 * (d) + 0x20 * (c))))
421#define DMACCDESTADDR(d, c) (*((void* volatile*)(0x38200104 + 0x1700000 * (d) + 0x20 * (c)))) 421#define DMACCDESTADDR(d, c) (*((void* volatile*)(0x38200104 + 0x1700000 * (d) + 0x20 * (c))))
422#define DMACCNEXTLLI(d, c) (*((const void* volatile*)(0x38200108 + 0x1700000 * (d) + 0x20 * (c)))) 422#define DMACCNEXTLLI(d, c) (*((const void* volatile*)(0x38200108 + 0x1700000 * (d) + 0x20 * (c))))
423#define DMACCCONTROL(d, c) (*((uint32_t volatile*)(0x3820010c + 0x1700000 * (d) + 0x20 * (c)))) 423#define DMACCCONTROL(d, c) (*((uint32_t volatile*)(0x3820010c + 0x1700000 * (d) + 0x20 * (c))))
424#define DMACCCONFIG(d, c) (*((uint32_t volatile*)(0x38200110 + 0x1700000 * (d) + 0x20 * (c)))) 424#define DMACCCONFIG(d, c) (*((uint32_t volatile*)(0x38200110 + 0x1700000 * (d) + 0x20 * (c))))
425#define DMAC0INTSTS (*((uint32_t volatile*)(0x38200000))) 425#define DMAC0INTSTS (*((uint32_t volatile*)(0x38200000)))
426#define DMAC0INTTCSTS (*((uint32_t volatile*)(0x38200004))) 426#define DMAC0INTTCSTS (*((uint32_t volatile*)(0x38200004)))
427#define DMAC0INTTCCLR (*((uint32_t volatile*)(0x38200008))) 427#define DMAC0INTTCCLR (*((uint32_t volatile*)(0x38200008)))
428#define DMAC0INTERRSTS (*((uint32_t volatile*)(0x3820000c))) 428#define DMAC0INTERRSTS (*((uint32_t volatile*)(0x3820000c)))
429#define DMAC0INTERRCLR (*((uint32_t volatile*)(0x38200010))) 429#define DMAC0INTERRCLR (*((uint32_t volatile*)(0x38200010)))
430#define DMAC0RAWINTTCSTS (*((uint32_t volatile*)(0x38200014))) 430#define DMAC0RAWINTTCSTS (*((uint32_t volatile*)(0x38200014)))
431#define DMAC0RAWINTERRSTS (*((uint32_t volatile*)(0x38200018))) 431#define DMAC0RAWINTERRSTS (*((uint32_t volatile*)(0x38200018)))
432#define DMAC0ENABLEDCHANS (*((uint32_t volatile*)(0x3820001c))) 432#define DMAC0ENABLEDCHANS (*((uint32_t volatile*)(0x3820001c)))
433#define DMAC0SOFTBREQ (*((uint32_t volatile*)(0x38200020))) 433#define DMAC0SOFTBREQ (*((uint32_t volatile*)(0x38200020)))
434#define DMAC0SOFTSREQ (*((uint32_t volatile*)(0x38200024))) 434#define DMAC0SOFTSREQ (*((uint32_t volatile*)(0x38200024)))
435#define DMAC0SOFTLBREQ (*((uint32_t volatile*)(0x38200028))) 435#define DMAC0SOFTLBREQ (*((uint32_t volatile*)(0x38200028)))
436#define DMAC0SOFTLSREQ (*((uint32_t volatile*)(0x3820002c))) 436#define DMAC0SOFTLSREQ (*((uint32_t volatile*)(0x3820002c)))
437#define DMAC0CONFIG (*((uint32_t volatile*)(0x38200030))) 437#define DMAC0CONFIG (*((uint32_t volatile*)(0x38200030)))
438#define DMAC0SYNC (*((uint32_t volatile*)(0x38200034))) 438#define DMAC0SYNC (*((uint32_t volatile*)(0x38200034)))
439#define DMAC0CLLI(c) (*((struct dma_lli volatile*)(0x38200100 + 0x20 * (c)))) 439#define DMAC0CLLI(c) (*((struct dma_lli volatile*)(0x38200100 + 0x20 * (c))))
440#define DMAC0CSRCADDR(c) (*((const void* volatile*)(0x38200100 + 0x20 * (c)))) 440#define DMAC0CSRCADDR(c) (*((const void* volatile*)(0x38200100 + 0x20 * (c))))
441#define DMAC0CDESTADDR(c) (*((void* volatile*)(0x38200104 + 0x20 * (c)))) 441#define DMAC0CDESTADDR(c) (*((void* volatile*)(0x38200104 + 0x20 * (c))))
442#define DMAC0CNEXTLLI(c) (*((const void* volatile*)(0x38200108 + 0x20 * (c)))) 442#define DMAC0CNEXTLLI(c) (*((const void* volatile*)(0x38200108 + 0x20 * (c))))
443#define DMAC0CCONTROL(c) (*((uint32_t volatile*)(0x3820010c + 0x20 * (c)))) 443#define DMAC0CCONTROL(c) (*((uint32_t volatile*)(0x3820010c + 0x20 * (c))))
444#define DMAC0CCONFIG(c) (*((uint32_t volatile*)(0x38200110 + 0x20 * (c)))) 444#define DMAC0CCONFIG(c) (*((uint32_t volatile*)(0x38200110 + 0x20 * (c))))
445#define DMAC0C0LLI (*((struct dma_lli volatile*)(0x38200100))) 445#define DMAC0C0LLI (*((struct dma_lli volatile*)(0x38200100)))
446#define DMAC0C0SRCADDR (*((const void* volatile*)(0x38200100))) 446#define DMAC0C0SRCADDR (*((const void* volatile*)(0x38200100)))
447#define DMAC0C0DESTADDR (*((void* volatile*)(0x38200104))) 447#define DMAC0C0DESTADDR (*((void* volatile*)(0x38200104)))
448#define DMAC0C0NEXTLLI (*((const struct dma_lli* volatile*)(0x38200108))) 448#define DMAC0C0NEXTLLI (*((const struct dma_lli* volatile*)(0x38200108)))
449#define DMAC0C0CONTROL (*((uint32_t volatile*)(0x3820010c))) 449#define DMAC0C0CONTROL (*((uint32_t volatile*)(0x3820010c)))
450#define DMAC0C0CONFIG (*((uint32_t volatile*)(0x38200110))) 450#define DMAC0C0CONFIG (*((uint32_t volatile*)(0x38200110)))
451#define DMAC0C1LLI (*((struct dma_lli volatile*)(0x38200120))) 451#define DMAC0C1LLI (*((struct dma_lli volatile*)(0x38200120)))
452#define DMAC0C1SRCADDR (*((const void* volatile*)(0x38200120))) 452#define DMAC0C1SRCADDR (*((const void* volatile*)(0x38200120)))
453#define DMAC0C1DESTADDR (*((void* volatile*)(0x38200124))) 453#define DMAC0C1DESTADDR (*((void* volatile*)(0x38200124)))
454#define DMAC0C1NEXTLLI (*((const struct dma_lli* volatile*)(0x38200128))) 454#define DMAC0C1NEXTLLI (*((const struct dma_lli* volatile*)(0x38200128)))
455#define DMAC0C1CONTROL (*((uint32_t volatile*)(0x3820012c))) 455#define DMAC0C1CONTROL (*((uint32_t volatile*)(0x3820012c)))
456#define DMAC0C1CONFIG (*((uint32_t volatile*)(0x38200130))) 456#define DMAC0C1CONFIG (*((uint32_t volatile*)(0x38200130)))
457#define DMAC0C2LLI (*((struct dma_lli volatile*)(0x38200140))) 457#define DMAC0C2LLI (*((struct dma_lli volatile*)(0x38200140)))
458#define DMAC0C2SRCADDR (*((const void* volatile*)(0x38200140))) 458#define DMAC0C2SRCADDR (*((const void* volatile*)(0x38200140)))
459#define DMAC0C2DESTADDR (*((void* volatile*)(0x38200144))) 459#define DMAC0C2DESTADDR (*((void* volatile*)(0x38200144)))
460#define DMAC0C2NEXTLLI (*((const struct dma_lli* volatile*)(0x38200148))) 460#define DMAC0C2NEXTLLI (*((const struct dma_lli* volatile*)(0x38200148)))
461#define DMAC0C2CONTROL (*((uint32_t volatile*)(0x3820014c))) 461#define DMAC0C2CONTROL (*((uint32_t volatile*)(0x3820014c)))
462#define DMAC0C2CONFIG (*((uint32_t volatile*)(0x38200150))) 462#define DMAC0C2CONFIG (*((uint32_t volatile*)(0x38200150)))
463#define DMAC0C3LLI (*((struct dma_lli volatile*)(0x38200160))) 463#define DMAC0C3LLI (*((struct dma_lli volatile*)(0x38200160)))
464#define DMAC0C3SRCADDR (*((const void* volatile*)(0x38200160))) 464#define DMAC0C3SRCADDR (*((const void* volatile*)(0x38200160)))
465#define DMAC0C3DESTADDR (*((void* volatile*)(0x38200164))) 465#define DMAC0C3DESTADDR (*((void* volatile*)(0x38200164)))
466#define DMAC0C3NEXTLLI (*((const struct dma_lli* volatile*)(0x38200168))) 466#define DMAC0C3NEXTLLI (*((const struct dma_lli* volatile*)(0x38200168)))
467#define DMAC0C3CONTROL (*((uint32_t volatile*)(0x3820016c))) 467#define DMAC0C3CONTROL (*((uint32_t volatile*)(0x3820016c)))
468#define DMAC0C3CONFIG (*((uint32_t volatile*)(0x38200170))) 468#define DMAC0C3CONFIG (*((uint32_t volatile*)(0x38200170)))
469#define DMAC0C4LLI (*((struct dma_lli volatile*)(0x38200180))) 469#define DMAC0C4LLI (*((struct dma_lli volatile*)(0x38200180)))
470#define DMAC0C4SRCADDR (*((const void* volatile*)(0x38200180))) 470#define DMAC0C4SRCADDR (*((const void* volatile*)(0x38200180)))
471#define DMAC0C4DESTADDR (*((void* volatile*)(0x38200184))) 471#define DMAC0C4DESTADDR (*((void* volatile*)(0x38200184)))
472#define DMAC0C4NEXTLLI (*((const struct dma_lli* volatile*)(0x38200188))) 472#define DMAC0C4NEXTLLI (*((const struct dma_lli* volatile*)(0x38200188)))
473#define DMAC0C4CONTROL (*((uint32_t volatile*)(0x3820018c))) 473#define DMAC0C4CONTROL (*((uint32_t volatile*)(0x3820018c)))
474#define DMAC0C4CONFIG (*((uint32_t volatile*)(0x38200190))) 474#define DMAC0C4CONFIG (*((uint32_t volatile*)(0x38200190)))
475#define DMAC0C5LLI (*((struct dma_lli volatile*)(0x382001a0))) 475#define DMAC0C5LLI (*((struct dma_lli volatile*)(0x382001a0)))
476#define DMAC0C5SRCADDR (*((const void* volatile*)(0x382001a0))) 476#define DMAC0C5SRCADDR (*((const void* volatile*)(0x382001a0)))
477#define DMAC0C5DESTADDR (*((void* volatile*)(0x382001a4))) 477#define DMAC0C5DESTADDR (*((void* volatile*)(0x382001a4)))
478#define DMAC0C5NEXTLLI (*((const struct dma_lli* volatile*)(0x382001a8))) 478#define DMAC0C5NEXTLLI (*((const struct dma_lli* volatile*)(0x382001a8)))
479#define DMAC0C5CONTROL (*((uint32_t volatile*)(0x382001ac))) 479#define DMAC0C5CONTROL (*((uint32_t volatile*)(0x382001ac)))
480#define DMAC0C5CONFIG (*((uint32_t volatile*)(0x382001b0))) 480#define DMAC0C5CONFIG (*((uint32_t volatile*)(0x382001b0)))
481#define DMAC0C6LLI (*((struct dma_lli volatile*)(0x382001c0))) 481#define DMAC0C6LLI (*((struct dma_lli volatile*)(0x382001c0)))
482#define DMAC0C6SRCADDR (*((const void* volatile*)(0x382001c0))) 482#define DMAC0C6SRCADDR (*((const void* volatile*)(0x382001c0)))
483#define DMAC0C6DESTADDR (*((void* volatile*)(0x382001c4))) 483#define DMAC0C6DESTADDR (*((void* volatile*)(0x382001c4)))
484#define DMAC0C6NEXTLLI (*((const struct dma_lli* volatile*)(0x382001c8))) 484#define DMAC0C6NEXTLLI (*((const struct dma_lli* volatile*)(0x382001c8)))
485#define DMAC0C6CONTROL (*((uint32_t volatile*)(0x382001cc))) 485#define DMAC0C6CONTROL (*((uint32_t volatile*)(0x382001cc)))
486#define DMAC0C6CONFIG (*((uint32_t volatile*)(0x382001d0))) 486#define DMAC0C6CONFIG (*((uint32_t volatile*)(0x382001d0)))
487#define DMAC0C7LLI (*((struct dma_lli volatile*)(0x382001e0))) 487#define DMAC0C7LLI (*((struct dma_lli volatile*)(0x382001e0)))
488#define DMAC0C7SRCADDR (*((const void* volatile*)(0x382001e0))) 488#define DMAC0C7SRCADDR (*((const void* volatile*)(0x382001e0)))
489#define DMAC0C7DESTADDR (*((void* volatile*)(0x382001e4))) 489#define DMAC0C7DESTADDR (*((void* volatile*)(0x382001e4)))
490#define DMAC0C7NEXTLLI (*((const struct dma_lli* volatile*)(0x382001e8))) 490#define DMAC0C7NEXTLLI (*((const struct dma_lli* volatile*)(0x382001e8)))
491#define DMAC0C7CONTROL (*((uint32_t volatile*)(0x382001ec))) 491#define DMAC0C7CONTROL (*((uint32_t volatile*)(0x382001ec)))
492#define DMAC0C7CONFIG (*((uint32_t volatile*)(0x382001f0))) 492#define DMAC0C7CONFIG (*((uint32_t volatile*)(0x382001f0)))
493#define DMAC1INTSTS (*((uint32_t volatile*)(0x39900000))) 493#define DMAC1INTSTS (*((uint32_t volatile*)(0x39900000)))
494#define DMAC1INTTCSTS (*((uint32_t volatile*)(0x39900004))) 494#define DMAC1INTTCSTS (*((uint32_t volatile*)(0x39900004)))
495#define DMAC1INTTCCLR (*((uint32_t volatile*)(0x39900008))) 495#define DMAC1INTTCCLR (*((uint32_t volatile*)(0x39900008)))
496#define DMAC1INTERRSTS (*((uint32_t volatile*)(0x3990000c))) 496#define DMAC1INTERRSTS (*((uint32_t volatile*)(0x3990000c)))
497#define DMAC1INTERRCLR (*((uint32_t volatile*)(0x39900010))) 497#define DMAC1INTERRCLR (*((uint32_t volatile*)(0x39900010)))
498#define DMAC1RAWINTTCSTS (*((uint32_t volatile*)(0x39900014))) 498#define DMAC1RAWINTTCSTS (*((uint32_t volatile*)(0x39900014)))
499#define DMAC1RAWINTERRSTS (*((uint32_t volatile*)(0x39900018))) 499#define DMAC1RAWINTERRSTS (*((uint32_t volatile*)(0x39900018)))
500#define DMAC1ENABLEDCHANS (*((uint32_t volatile*)(0x3990001c))) 500#define DMAC1ENABLEDCHANS (*((uint32_t volatile*)(0x3990001c)))
501#define DMAC1SOFTBREQ (*((uint32_t volatile*)(0x39900020))) 501#define DMAC1SOFTBREQ (*((uint32_t volatile*)(0x39900020)))
502#define DMAC1SOFTSREQ (*((uint32_t volatile*)(0x39900024))) 502#define DMAC1SOFTSREQ (*((uint32_t volatile*)(0x39900024)))
503#define DMAC1SOFTLBREQ (*((uint32_t volatile*)(0x39900028))) 503#define DMAC1SOFTLBREQ (*((uint32_t volatile*)(0x39900028)))
504#define DMAC1SOFTLSREQ (*((uint32_t volatile*)(0x3990002c))) 504#define DMAC1SOFTLSREQ (*((uint32_t volatile*)(0x3990002c)))
505#define DMAC1CONFIG (*((uint32_t volatile*)(0x39900030))) 505#define DMAC1CONFIG (*((uint32_t volatile*)(0x39900030)))
506#define DMAC1SYNC (*((uint32_t volatile*)(0x39900034))) 506#define DMAC1SYNC (*((uint32_t volatile*)(0x39900034)))
507#define DMAC1CLLI(c) (*((struct dma_lli volatile*)(0x39900100 + 0x20 * (c)))) 507#define DMAC1CLLI(c) (*((struct dma_lli volatile*)(0x39900100 + 0x20 * (c))))
508#define DMAC1CSRCADDR(c) (*((const void* volatile*)(0x39900100 + 0x20 * (c)))) 508#define DMAC1CSRCADDR(c) (*((const void* volatile*)(0x39900100 + 0x20 * (c))))
509#define DMAC1CDESTADDR(c) (*((void* volatile*)(0x39900104 + 0x20 * (c)))) 509#define DMAC1CDESTADDR(c) (*((void* volatile*)(0x39900104 + 0x20 * (c))))
510#define DMAC1CNEXTLLI(c) (*((const void* volatile*)(0x39900108 + 0x20 * (c)))) 510#define DMAC1CNEXTLLI(c) (*((const void* volatile*)(0x39900108 + 0x20 * (c))))
511#define DMAC1CCONTROL(c) (*((uint32_t volatile*)(0x3990010c + 0x20 * (c)))) 511#define DMAC1CCONTROL(c) (*((uint32_t volatile*)(0x3990010c + 0x20 * (c))))
512#define DMAC1CCONFIG(c) (*((uint32_t volatile*)(0x39900110 + 0x20 * (c)))) 512#define DMAC1CCONFIG(c) (*((uint32_t volatile*)(0x39900110 + 0x20 * (c))))
513#define DMAC1C0LLI (*((struct dma_lli volatile*)(0x39900100))) 513#define DMAC1C0LLI (*((struct dma_lli volatile*)(0x39900100)))
514#define DMAC1C0SRCADDR (*((const void* volatile*)(0x39900100))) 514#define DMAC1C0SRCADDR (*((const void* volatile*)(0x39900100)))
515#define DMAC1C0DESTADDR (*((void* volatile*)(0x39900104))) 515#define DMAC1C0DESTADDR (*((void* volatile*)(0x39900104)))
516#define DMAC1C0NEXTLLI (*((const struct dma_lli* volatile*)(0x39900108))) 516#define DMAC1C0NEXTLLI (*((const struct dma_lli* volatile*)(0x39900108)))
517#define DMAC1C0CONTROL (*((uint32_t volatile*)(0x3990010c))) 517#define DMAC1C0CONTROL (*((uint32_t volatile*)(0x3990010c)))
518#define DMAC1C0CONFIG (*((uint32_t volatile*)(0x39900110))) 518#define DMAC1C0CONFIG (*((uint32_t volatile*)(0x39900110)))
519#define DMAC1C1LLI (*((struct dma_lli volatile*)(0x39900120))) 519#define DMAC1C1LLI (*((struct dma_lli volatile*)(0x39900120)))
520#define DMAC1C1SRCADDR (*((const void* volatile*)(0x39900120))) 520#define DMAC1C1SRCADDR (*((const void* volatile*)(0x39900120)))
521#define DMAC1C1DESTADDR (*((void* volatile*)(0x39900124))) 521#define DMAC1C1DESTADDR (*((void* volatile*)(0x39900124)))
522#define DMAC1C1NEXTLLI (*((const struct dma_lli* volatile*)(0x39900128))) 522#define DMAC1C1NEXTLLI (*((const struct dma_lli* volatile*)(0x39900128)))
523#define DMAC1C1CONTROL (*((uint32_t volatile*)(0x3990012c))) 523#define DMAC1C1CONTROL (*((uint32_t volatile*)(0x3990012c)))
524#define DMAC1C1CONFIG (*((uint32_t volatile*)(0x39900130))) 524#define DMAC1C1CONFIG (*((uint32_t volatile*)(0x39900130)))
525#define DMAC1C2LLI (*((struct dma_lli volatile*)(0x39900140))) 525#define DMAC1C2LLI (*((struct dma_lli volatile*)(0x39900140)))
526#define DMAC1C2SRCADDR (*((const void* volatile*)(0x39900140))) 526#define DMAC1C2SRCADDR (*((const void* volatile*)(0x39900140)))
527#define DMAC1C2DESTADDR (*((void* volatile*)(0x39900144))) 527#define DMAC1C2DESTADDR (*((void* volatile*)(0x39900144)))
528#define DMAC1C2NEXTLLI (*((const struct dma_lli* volatile*)(0x39900148))) 528#define DMAC1C2NEXTLLI (*((const struct dma_lli* volatile*)(0x39900148)))
529#define DMAC1C2CONTROL (*((uint32_t volatile*)(0x3990014c))) 529#define DMAC1C2CONTROL (*((uint32_t volatile*)(0x3990014c)))
530#define DMAC1C2CONFIG (*((uint32_t volatile*)(0x39900150))) 530#define DMAC1C2CONFIG (*((uint32_t volatile*)(0x39900150)))
531#define DMAC1C3LLI (*((struct dma_lli volatile*)(0x39900160))) 531#define DMAC1C3LLI (*((struct dma_lli volatile*)(0x39900160)))
532#define DMAC1C3SRCADDR (*((const void* volatile*)(0x39900160))) 532#define DMAC1C3SRCADDR (*((const void* volatile*)(0x39900160)))
533#define DMAC1C3DESTADDR (*((void* volatile*)(0x39900164))) 533#define DMAC1C3DESTADDR (*((void* volatile*)(0x39900164)))
534#define DMAC1C3NEXTLLI (*((volatile void**)(0x39900168))) 534#define DMAC1C3NEXTLLI (*((volatile void**)(0x39900168)))
535#define DMAC1C3CONTROL (*((uint32_t volatile*)(0x3990016c))) 535#define DMAC1C3CONTROL (*((uint32_t volatile*)(0x3990016c)))
536#define DMAC1C3CONFIG (*((uint32_t volatile*)(0x39900170))) 536#define DMAC1C3CONFIG (*((uint32_t volatile*)(0x39900170)))
537#define DMAC1C4LLI (*((struct dma_lli volatile*)(0x39900180))) 537#define DMAC1C4LLI (*((struct dma_lli volatile*)(0x39900180)))
538#define DMAC1C4SRCADDR (*((const void* volatile*)(0x39900180))) 538#define DMAC1C4SRCADDR (*((const void* volatile*)(0x39900180)))
539#define DMAC1C4DESTADDR (*((void* volatile*)(0x39900184))) 539#define DMAC1C4DESTADDR (*((void* volatile*)(0x39900184)))
540#define DMAC1C4NEXTLLI (*((const struct dma_lli* volatile*)(0x39900188))) 540#define DMAC1C4NEXTLLI (*((const struct dma_lli* volatile*)(0x39900188)))
541#define DMAC1C4CONTROL (*((uint32_t volatile*)(0x3990018c))) 541#define DMAC1C4CONTROL (*((uint32_t volatile*)(0x3990018c)))
542#define DMAC1C4CONFIG (*((uint32_t volatile*)(0x39900190))) 542#define DMAC1C4CONFIG (*((uint32_t volatile*)(0x39900190)))
543#define DMAC1C5LLI (*((struct dma_lli volatile*)(0x399001a0))) 543#define DMAC1C5LLI (*((struct dma_lli volatile*)(0x399001a0)))
544#define DMAC1C5SRCADDR (*((const void* volatile*)(0x399001a0))) 544#define DMAC1C5SRCADDR (*((const void* volatile*)(0x399001a0)))
545#define DMAC1C5DESTADDR (*((void* volatile*)(0x399001a4))) 545#define DMAC1C5DESTADDR (*((void* volatile*)(0x399001a4)))
546#define DMAC1C5NEXTLLI (*((const struct dma_lli* volatile*)(0x399001a8))) 546#define DMAC1C5NEXTLLI (*((const struct dma_lli* volatile*)(0x399001a8)))
547#define DMAC1C5CONTROL (*((uint32_t volatile*)(0x399001ac))) 547#define DMAC1C5CONTROL (*((uint32_t volatile*)(0x399001ac)))
548#define DMAC1C5CONFIG (*((uint32_t volatile*)(0x399001b0))) 548#define DMAC1C5CONFIG (*((uint32_t volatile*)(0x399001b0)))
549#define DMAC1C6LLI (*((struct dma_lli volatile*)(0x399001c0))) 549#define DMAC1C6LLI (*((struct dma_lli volatile*)(0x399001c0)))
550#define DMAC1C6SRCADDR (*((const void* volatile*)(0x399001c0))) 550#define DMAC1C6SRCADDR (*((const void* volatile*)(0x399001c0)))
551#define DMAC1C6DESTADDR (*((void* volatile*)(0x399001c4))) 551#define DMAC1C6DESTADDR (*((void* volatile*)(0x399001c4)))
552#define DMAC1C6NEXTLLI (*((const struct dma_lli* volatile*)(0x399001c8))) 552#define DMAC1C6NEXTLLI (*((const struct dma_lli* volatile*)(0x399001c8)))
553#define DMAC1C6CONTROL (*((uint32_t volatile*)(0x399001cc))) 553#define DMAC1C6CONTROL (*((uint32_t volatile*)(0x399001cc)))
554#define DMAC1C6CONFIG (*((uint32_t volatile*)(0x399001d0))) 554#define DMAC1C6CONFIG (*((uint32_t volatile*)(0x399001d0)))
555#define DMAC1C7LLI (*((struct dma_lli volatile*)(0x399001e0))) 555#define DMAC1C7LLI (*((struct dma_lli volatile*)(0x399001e0)))
556#define DMAC1C7SRCADDR (*((const void* volatile*)(0x399001e0))) 556#define DMAC1C7SRCADDR (*((const void* volatile*)(0x399001e0)))
557#define DMAC1C7DESTADDR (*((void* volatile*)(0x399001e4))) 557#define DMAC1C7DESTADDR (*((void* volatile*)(0x399001e4)))
558#define DMAC1C7NEXTLLI (*((const struct dma_lli* volatile*)(0x399001e8))) 558#define DMAC1C7NEXTLLI (*((const struct dma_lli* volatile*)(0x399001e8)))
559#define DMAC1C7CONTROL (*((uint32_t volatile*)(0x399001ec))) 559#define DMAC1C7CONTROL (*((uint32_t volatile*)(0x399001ec)))
560#define DMAC1C7CONFIG (*((uint32_t volatile*)(0x399001f0))) 560#define DMAC1C7CONFIG (*((uint32_t volatile*)(0x399001f0)))
561 561
562 562
563/////LCD///// 563/////LCD/////
564#define LCD_BASE (0x38300000) 564#define LCD_BASE (0x38300000)
565#define LCD_CONFIG (*((uint32_t volatile*)(0x38300000))) 565#define LCD_CONFIG (*((uint32_t volatile*)(0x38300000)))
566#define LCD_WCMD (*((uint32_t volatile*)(0x38300004))) 566#define LCD_WCMD (*((uint32_t volatile*)(0x38300004)))
567#define LCD_STATUS (*((uint32_t volatile*)(0x3830001c))) 567#define LCD_STATUS (*((uint32_t volatile*)(0x3830001c)))
568#define LCD_WDATA (*((uint32_t volatile*)(0x38300040))) 568#define LCD_WDATA (*((uint32_t volatile*)(0x38300040)))
569 569
570 570
571/////ATA///// 571/////ATA/////
572#define ATA_CONTROL (*((uint32_t volatile*)(0x38700000))) 572#define ATA_CONTROL (*((uint32_t volatile*)(0x38700000)))
573#define ATA_STATUS (*((uint32_t volatile*)(0x38700004))) 573#define ATA_STATUS (*((uint32_t volatile*)(0x38700004)))
574#define ATA_COMMAND (*((uint32_t volatile*)(0x38700008))) 574#define ATA_COMMAND (*((uint32_t volatile*)(0x38700008)))
575#define ATA_SWRST (*((uint32_t volatile*)(0x3870000c))) 575#define ATA_SWRST (*((uint32_t volatile*)(0x3870000c)))
576#define ATA_IRQ (*((uint32_t volatile*)(0x38700010))) 576#define ATA_IRQ (*((uint32_t volatile*)(0x38700010)))
577#define ATA_IRQ_MASK (*((uint32_t volatile*)(0x38700014))) 577#define ATA_IRQ_MASK (*((uint32_t volatile*)(0x38700014)))
578#define ATA_CFG (*((uint32_t volatile*)(0x38700018))) 578#define ATA_CFG (*((uint32_t volatile*)(0x38700018)))
579#define ATA_MDMA_TIME (*((uint32_t volatile*)(0x38700028))) 579#define ATA_MDMA_TIME (*((uint32_t volatile*)(0x38700028)))
580#define ATA_PIO_TIME (*((uint32_t volatile*)(0x3870002c))) 580#define ATA_PIO_TIME (*((uint32_t volatile*)(0x3870002c)))
581#define ATA_UDMA_TIME (*((uint32_t volatile*)(0x38700030))) 581#define ATA_UDMA_TIME (*((uint32_t volatile*)(0x38700030)))
582#define ATA_XFR_NUM (*((uint32_t volatile*)(0x38700034))) 582#define ATA_XFR_NUM (*((uint32_t volatile*)(0x38700034)))
583#define ATA_XFR_CNT (*((uint32_t volatile*)(0x38700038))) 583#define ATA_XFR_CNT (*((uint32_t volatile*)(0x38700038)))
584#define ATA_TBUF_START (*((void* volatile*)(0x3870003c))) 584#define ATA_TBUF_START (*((void* volatile*)(0x3870003c)))
585#define ATA_TBUF_SIZE (*((uint32_t volatile*)(0x38700040))) 585#define ATA_TBUF_SIZE (*((uint32_t volatile*)(0x38700040)))
586#define ATA_SBUF_START (*((void* volatile*)(0x38700044))) 586#define ATA_SBUF_START (*((void* volatile*)(0x38700044)))
587#define ATA_SBUF_SIZE (*((uint32_t volatile*)(0x38700048))) 587#define ATA_SBUF_SIZE (*((uint32_t volatile*)(0x38700048)))
588#define ATA_CADR_TBUF (*((void* volatile*)(0x3870004c))) 588#define ATA_CADR_TBUF (*((void* volatile*)(0x3870004c)))
589#define ATA_CADR_SBUF (*((void* volatile*)(0x38700050))) 589#define ATA_CADR_SBUF (*((void* volatile*)(0x38700050)))
590#define ATA_PIO_DTR (*((uint32_t volatile*)(0x38700054))) 590#define ATA_PIO_DTR (*((uint32_t volatile*)(0x38700054)))
591#define ATA_PIO_FED (*((uint32_t volatile*)(0x38700058))) 591#define ATA_PIO_FED (*((uint32_t volatile*)(0x38700058)))
592#define ATA_PIO_SCR (*((uint32_t volatile*)(0x3870005c))) 592#define ATA_PIO_SCR (*((uint32_t volatile*)(0x3870005c)))
593#define ATA_PIO_LLR (*((uint32_t volatile*)(0x38700060))) 593#define ATA_PIO_LLR (*((uint32_t volatile*)(0x38700060)))
594#define ATA_PIO_LMR (*((uint32_t volatile*)(0x38700064))) 594#define ATA_PIO_LMR (*((uint32_t volatile*)(0x38700064)))
595#define ATA_PIO_LHR (*((uint32_t volatile*)(0x38700068))) 595#define ATA_PIO_LHR (*((uint32_t volatile*)(0x38700068)))
596#define ATA_PIO_DVR (*((uint32_t volatile*)(0x3870006c))) 596#define ATA_PIO_DVR (*((uint32_t volatile*)(0x3870006c)))
597#define ATA_PIO_CSD (*((uint32_t volatile*)(0x38700070))) 597#define ATA_PIO_CSD (*((uint32_t volatile*)(0x38700070)))
598#define ATA_PIO_DAD (*((uint32_t volatile*)(0x38700074))) 598#define ATA_PIO_DAD (*((uint32_t volatile*)(0x38700074)))
599#define ATA_PIO_READY (*((uint32_t volatile*)(0x38700078))) 599#define ATA_PIO_READY (*((uint32_t volatile*)(0x38700078)))
600#define ATA_PIO_RDATA (*((uint32_t volatile*)(0x3870007c))) 600#define ATA_PIO_RDATA (*((uint32_t volatile*)(0x3870007c)))
601#define ATA_BUS_FIFO_STATUS (*((uint32_t volatile*)(0x38700080))) 601#define ATA_BUS_FIFO_STATUS (*((uint32_t volatile*)(0x38700080)))
602#define ATA_FIFO_STATUS (*((uint32_t volatile*)(0x38700084))) 602#define ATA_FIFO_STATUS (*((uint32_t volatile*)(0x38700084)))
603#define ATA_DMA_ADDR (*((void* volatile*)(0x38700088))) 603#define ATA_DMA_ADDR (*((void* volatile*)(0x38700088)))
604 604
605 605
606/////SDCI///// 606/////SDCI/////
607#define SDCI_CTRL (*((uint32_t volatile*)(0x38b00000))) 607#define SDCI_CTRL (*((uint32_t volatile*)(0x38b00000)))
608#define SDCI_DCTRL (*((uint32_t volatile*)(0x38b00004))) 608#define SDCI_DCTRL (*((uint32_t volatile*)(0x38b00004)))
609#define SDCI_CMD (*((uint32_t volatile*)(0x38b00008))) 609#define SDCI_CMD (*((uint32_t volatile*)(0x38b00008)))
610#define SDCI_ARGU (*((uint32_t volatile*)(0x38b0000c))) 610#define SDCI_ARGU (*((uint32_t volatile*)(0x38b0000c)))
611#define SDCI_STATE (*((uint32_t volatile*)(0x38b00010))) 611#define SDCI_STATE (*((uint32_t volatile*)(0x38b00010)))
612#define SDCI_STAC (*((uint32_t volatile*)(0x38b00014))) 612#define SDCI_STAC (*((uint32_t volatile*)(0x38b00014)))
613#define SDCI_DSTA (*((uint32_t volatile*)(0x38b00018))) 613#define SDCI_DSTA (*((uint32_t volatile*)(0x38b00018)))
614#define SDCI_FSTA (*((uint32_t volatile*)(0x38b0001c))) 614#define SDCI_FSTA (*((uint32_t volatile*)(0x38b0001c)))
615#define SDCI_RESP0 (*((uint32_t volatile*)(0x38b00020))) 615#define SDCI_RESP0 (*((uint32_t volatile*)(0x38b00020)))
616#define SDCI_RESP1 (*((uint32_t volatile*)(0x38b00024))) 616#define SDCI_RESP1 (*((uint32_t volatile*)(0x38b00024)))
617#define SDCI_RESP2 (*((uint32_t volatile*)(0x38b00028))) 617#define SDCI_RESP2 (*((uint32_t volatile*)(0x38b00028)))
618#define SDCI_RESP3 (*((uint32_t volatile*)(0x38b0002c))) 618#define SDCI_RESP3 (*((uint32_t volatile*)(0x38b0002c)))
619#define SDCI_CDIV (*((uint32_t volatile*)(0x38b00030))) 619#define SDCI_CDIV (*((uint32_t volatile*)(0x38b00030)))
620#define SDCI_SDIO_CSR (*((uint32_t volatile*)(0x38b00034))) 620#define SDCI_SDIO_CSR (*((uint32_t volatile*)(0x38b00034)))
621#define SDCI_IRQ (*((uint32_t volatile*)(0x38b00038))) 621#define SDCI_IRQ (*((uint32_t volatile*)(0x38b00038)))
622#define SDCI_IRQ_MASK (*((uint32_t volatile*)(0x38b0003c))) 622#define SDCI_IRQ_MASK (*((uint32_t volatile*)(0x38b0003c)))
623#define SDCI_DATA (*((uint32_t volatile*)(0x38b00040))) 623#define SDCI_DATA (*((uint32_t volatile*)(0x38b00040)))
624#define SDCI_DMAADDR (*((void* volatile*)(0x38b00044))) 624#define SDCI_DMAADDR (*((void* volatile*)(0x38b00044)))
625#define SDCI_DMASIZE (*((uint32_t volatile*)(0x38b00048))) 625#define SDCI_DMASIZE (*((uint32_t volatile*)(0x38b00048)))
626#define SDCI_DMACOUNT (*((uint32_t volatile*)(0x38b0004c))) 626#define SDCI_DMACOUNT (*((uint32_t volatile*)(0x38b0004c)))
627#define SDCI_RESET (*((uint32_t volatile*)(0x38b0006c))) 627#define SDCI_RESET (*((uint32_t volatile*)(0x38b0006c)))
628 628
629#define SDCI_CTRL_SDCIEN BIT(0) 629#define SDCI_CTRL_SDCIEN BIT(0)
630#define SDCI_CTRL_CARD_TYPE_MASK BIT(1) 630#define SDCI_CTRL_CARD_TYPE_MASK BIT(1)
631#define SDCI_CTRL_CARD_TYPE_SD 0 631#define SDCI_CTRL_CARD_TYPE_SD 0
632#define SDCI_CTRL_CARD_TYPE_MMC BIT(1) 632#define SDCI_CTRL_CARD_TYPE_MMC BIT(1)
633#define SDCI_CTRL_BUS_WIDTH_MASK BITRANGE(2, 3) 633#define SDCI_CTRL_BUS_WIDTH_MASK BITRANGE(2, 3)
634#define SDCI_CTRL_BUS_WIDTH_1BIT 0 634#define SDCI_CTRL_BUS_WIDTH_1BIT 0
635#define SDCI_CTRL_BUS_WIDTH_4BIT BIT(2) 635#define SDCI_CTRL_BUS_WIDTH_4BIT BIT(2)
636#define SDCI_CTRL_BUS_WIDTH_8BIT BIT(3) 636#define SDCI_CTRL_BUS_WIDTH_8BIT BIT(3)
637#define SDCI_CTRL_DMA_EN BIT(4) 637#define SDCI_CTRL_DMA_EN BIT(4)
638#define SDCI_CTRL_L_ENDIAN BIT(5) 638#define SDCI_CTRL_L_ENDIAN BIT(5)
639#define SDCI_CTRL_DMA_REQ_CON_MASK BIT(6) 639#define SDCI_CTRL_DMA_REQ_CON_MASK BIT(6)
640#define SDCI_CTRL_DMA_REQ_CON_NEMPTY 0 640#define SDCI_CTRL_DMA_REQ_CON_NEMPTY 0
641#define SDCI_CTRL_DMA_REQ_CON_FULL BIT(6) 641#define SDCI_CTRL_DMA_REQ_CON_FULL BIT(6)
642#define SDCI_CTRL_CLK_SEL_MASK BIT(7) 642#define SDCI_CTRL_CLK_SEL_MASK BIT(7)
643#define SDCI_CTRL_CLK_SEL_PCLK 0 643#define SDCI_CTRL_CLK_SEL_PCLK 0
644#define SDCI_CTRL_CLK_SEL_SDCLK BIT(7) 644#define SDCI_CTRL_CLK_SEL_SDCLK BIT(7)
645#define SDCI_CTRL_BIT_8 BIT(8) 645#define SDCI_CTRL_BIT_8 BIT(8)
646#define SDCI_CTRL_BIT_14 BIT(14) 646#define SDCI_CTRL_BIT_14 BIT(14)
647 647
648#define SDCI_DCTRL_TXFIFORST BIT(0) 648#define SDCI_DCTRL_TXFIFORST BIT(0)
649#define SDCI_DCTRL_RXFIFORST BIT(1) 649#define SDCI_DCTRL_RXFIFORST BIT(1)
650#define SDCI_DCTRL_TRCONT_MASK BITRANGE(4, 5) 650#define SDCI_DCTRL_TRCONT_MASK BITRANGE(4, 5)
651#define SDCI_DCTRL_TRCONT_TX BIT(4) 651#define SDCI_DCTRL_TRCONT_TX BIT(4)
652#define SDCI_DCTRL_BUS_TEST_MASK BITRANGE(6, 7) 652#define SDCI_DCTRL_BUS_TEST_MASK BITRANGE(6, 7)
653#define SDCI_DCTRL_BUS_TEST_TX BIT(6) 653#define SDCI_DCTRL_BUS_TEST_TX BIT(6)
654#define SDCI_DCTRL_BUS_TEST_RX BIT(7) 654#define SDCI_DCTRL_BUS_TEST_RX BIT(7)
655 655
656#define SDCI_CDIV_CLKDIV_MASK BITRANGE(0, 7) 656#define SDCI_CDIV_CLKDIV_MASK BITRANGE(0, 7)
657#define SDCI_CDIV_CLKDIV(x) ((x) >> 1) 657#define SDCI_CDIV_CLKDIV(x) ((x) >> 1)
658#define SDCI_CDIV_CLKDIV_2 BIT(0) 658#define SDCI_CDIV_CLKDIV_2 BIT(0)
659#define SDCI_CDIV_CLKDIV_4 BIT(1) 659#define SDCI_CDIV_CLKDIV_4 BIT(1)
660#define SDCI_CDIV_CLKDIV_8 BIT(2) 660#define SDCI_CDIV_CLKDIV_8 BIT(2)
661#define SDCI_CDIV_CLKDIV_16 BIT(3) 661#define SDCI_CDIV_CLKDIV_16 BIT(3)
662#define SDCI_CDIV_CLKDIV_32 BIT(4) 662#define SDCI_CDIV_CLKDIV_32 BIT(4)
663#define SDCI_CDIV_CLKDIV_64 BIT(5) 663#define SDCI_CDIV_CLKDIV_64 BIT(5)
664#define SDCI_CDIV_CLKDIV_128 BIT(6) 664#define SDCI_CDIV_CLKDIV_128 BIT(6)
665#define SDCI_CDIV_CLKDIV_256 BIT(7) 665#define SDCI_CDIV_CLKDIV_256 BIT(7)
666 666
667#define SDCI_CMD_CMD_NUM_MASK BITRANGE(0, 5) 667#define SDCI_CMD_CMD_NUM_MASK BITRANGE(0, 5)
668#define SDCI_CMD_CMD_NUM_SHIFT 0 668#define SDCI_CMD_CMD_NUM_SHIFT 0
669#define SDCI_CMD_CMD_NUM(x) (x) 669#define SDCI_CMD_CMD_NUM(x) (x)
670#define SDCI_CMD_CMD_TYPE_MASK BITRANGE(6, 7) 670#define SDCI_CMD_CMD_TYPE_MASK BITRANGE(6, 7)
671#define SDCI_CMD_CMD_TYPE_BC 0 671#define SDCI_CMD_CMD_TYPE_BC 0
672#define SDCI_CMD_CMD_TYPE_BCR BIT(6) 672#define SDCI_CMD_CMD_TYPE_BCR BIT(6)
673#define SDCI_CMD_CMD_TYPE_AC BIT(7) 673#define SDCI_CMD_CMD_TYPE_AC BIT(7)
674#define SDCI_CMD_CMD_TYPE_ADTC (BIT(6) | BIT(7)) 674#define SDCI_CMD_CMD_TYPE_ADTC (BIT(6) | BIT(7))
675#define SDCI_CMD_CMD_RD_WR BIT(8) 675#define SDCI_CMD_CMD_RD_WR BIT(8)
676#define SDCI_CMD_RES_TYPE_MASK BITRANGE(16, 18) 676#define SDCI_CMD_RES_TYPE_MASK BITRANGE(16, 18)
677#define SDCI_CMD_RES_TYPE_NONE 0 677#define SDCI_CMD_RES_TYPE_NONE 0
678#define SDCI_CMD_RES_TYPE_R1 BIT(16) 678#define SDCI_CMD_RES_TYPE_R1 BIT(16)
679#define SDCI_CMD_RES_TYPE_R2 BIT(17) 679#define SDCI_CMD_RES_TYPE_R2 BIT(17)
680#define SDCI_CMD_RES_TYPE_R3 (BIT(16) | BIT(17)) 680#define SDCI_CMD_RES_TYPE_R3 (BIT(16) | BIT(17))
681#define SDCI_CMD_RES_TYPE_R4 BIT(18) 681#define SDCI_CMD_RES_TYPE_R4 BIT(18)
682#define SDCI_CMD_RES_TYPE_R5 (BIT(16) | BIT(18)) 682#define SDCI_CMD_RES_TYPE_R5 (BIT(16) | BIT(18))
683#define SDCI_CMD_RES_TYPE_R6 (BIT(17) | BIT(18)) 683#define SDCI_CMD_RES_TYPE_R6 (BIT(17) | BIT(18))
684#define SDCI_CMD_RES_BUSY BIT(19) 684#define SDCI_CMD_RES_BUSY BIT(19)
685#define SDCI_CMD_RES_SIZE_MASK BIT(20) 685#define SDCI_CMD_RES_SIZE_MASK BIT(20)
686#define SDCI_CMD_RES_SIZE_48 0 686#define SDCI_CMD_RES_SIZE_48 0
687#define SDCI_CMD_RES_SIZE_136 BIT(20) 687#define SDCI_CMD_RES_SIZE_136 BIT(20)
688#define SDCI_CMD_NCR_NID_MASK BIT(21) 688#define SDCI_CMD_NCR_NID_MASK BIT(21)
689#define SDCI_CMD_NCR_NID_NCR 0 689#define SDCI_CMD_NCR_NID_NCR 0
690#define SDCI_CMD_NCR_NID_NID BIT(21) 690#define SDCI_CMD_NCR_NID_NID BIT(21)
691#define SDCI_CMD_CMDSTR BIT(31) 691#define SDCI_CMD_CMDSTR BIT(31)
692 692
693#define SDCI_STATE_DAT_STATE_MASK BITRANGE(0, 3) 693#define SDCI_STATE_DAT_STATE_MASK BITRANGE(0, 3)
694#define SDCI_STATE_DAT_STATE_IDLE 0 694#define SDCI_STATE_DAT_STATE_IDLE 0
695#define SDCI_STATE_DAT_STATE_DAT_RCV BIT(0) 695#define SDCI_STATE_DAT_STATE_DAT_RCV BIT(0)
696#define SDCI_STATE_DAT_STATE_CRC_RCV BIT(1) 696#define SDCI_STATE_DAT_STATE_CRC_RCV BIT(1)
697#define SDCI_STATE_DAT_STATE_DAT_END (BIT(0) | BIT(1)) 697#define SDCI_STATE_DAT_STATE_DAT_END (BIT(0) | BIT(1))
698#define SDCI_STATE_DAT_STATE_DAT_SET BIT(2) 698#define SDCI_STATE_DAT_STATE_DAT_SET BIT(2)
699#define SDCI_STATE_DAT_STATE_DAT_OUT (BIT(0) | BIT(2)) 699#define SDCI_STATE_DAT_STATE_DAT_OUT (BIT(0) | BIT(2))
700#define SDCI_STATE_DAT_STATE_CRC_TIME (BIT(1) | BIT(2)) 700#define SDCI_STATE_DAT_STATE_CRC_TIME (BIT(1) | BIT(2))
701#define SDCI_STATE_DAT_STATE_CRC_OUT (BIT(0) | BIT(1) | BIT(2)) 701#define SDCI_STATE_DAT_STATE_CRC_OUT (BIT(0) | BIT(1) | BIT(2))
702#define SDCI_STATE_DAT_STATE_ENDB_OUT BIT(3) 702#define SDCI_STATE_DAT_STATE_ENDB_OUT BIT(3)
703#define SDCI_STATE_DAT_STATE_ENDB_STOD (BIT(0) | BIT(3)) 703#define SDCI_STATE_DAT_STATE_ENDB_STOD (BIT(0) | BIT(3))
704#define SDCI_STATE_DAT_STATE_DAT_CRCR (BIT(1) | BIT(3)) 704#define SDCI_STATE_DAT_STATE_DAT_CRCR (BIT(1) | BIT(3))
705#define SDCI_STATE_DAT_STATE_CARD_PRG (BIT(0) | BIT(1) | BIT(3)) 705#define SDCI_STATE_DAT_STATE_CARD_PRG (BIT(0) | BIT(1) | BIT(3))
706#define SDCI_STATE_DAT_STATE_DAT_BUSY (BIT(2) | BIT(3)) 706#define SDCI_STATE_DAT_STATE_DAT_BUSY (BIT(2) | BIT(3))
707#define SDCI_STATE_CMD_STATE_MASK (BIT(4) | BIT(5) | BIT(6)) 707#define SDCI_STATE_CMD_STATE_MASK (BIT(4) | BIT(5) | BIT(6))
708#define SDCI_STATE_CMD_STATE_CMD_IDLE 0 708#define SDCI_STATE_CMD_STATE_CMD_IDLE 0
709#define SDCI_STATE_CMD_STATE_CMD_CMDO BIT(4) 709#define SDCI_STATE_CMD_STATE_CMD_CMDO BIT(4)
710#define SDCI_STATE_CMD_STATE_CMD_CRCO BIT(5) 710#define SDCI_STATE_CMD_STATE_CMD_CRCO BIT(5)
711#define SDCI_STATE_CMD_STATE_CMD_TOUT (BIT(4) | BIT(5)) 711#define SDCI_STATE_CMD_STATE_CMD_TOUT (BIT(4) | BIT(5))
712#define SDCI_STATE_CMD_STATE_CMD_RESR BIT(6) 712#define SDCI_STATE_CMD_STATE_CMD_RESR BIT(6)
713#define SDCI_STATE_CMD_STATE_CMD_INTV (BIT(4) | BIT(6)) 713#define SDCI_STATE_CMD_STATE_CMD_INTV (BIT(4) | BIT(6))
714 714
715#define SDCI_STAC_CLR_CMDEND BIT(2) 715#define SDCI_STAC_CLR_CMDEND BIT(2)
716#define SDCI_STAC_CLR_BIT_3 BIT(3) 716#define SDCI_STAC_CLR_BIT_3 BIT(3)
717#define SDCI_STAC_CLR_RESEND BIT(4) 717#define SDCI_STAC_CLR_RESEND BIT(4)
718#define SDCI_STAC_CLR_DATEND BIT(6) 718#define SDCI_STAC_CLR_DATEND BIT(6)
719#define SDCI_STAC_CLR_DAT_CRCEND BIT(7) 719#define SDCI_STAC_CLR_DAT_CRCEND BIT(7)
720#define SDCI_STAC_CLR_CRC_STAEND BIT(8) 720#define SDCI_STAC_CLR_CRC_STAEND BIT(8)
721#define SDCI_STAC_CLR_RESTOUTE BIT(15) 721#define SDCI_STAC_CLR_RESTOUTE BIT(15)
722#define SDCI_STAC_CLR_RESENDE BIT(16) 722#define SDCI_STAC_CLR_RESENDE BIT(16)
723#define SDCI_STAC_CLR_RESINDE BIT(17) 723#define SDCI_STAC_CLR_RESINDE BIT(17)
724#define SDCI_STAC_CLR_RESCRCE BIT(18) 724#define SDCI_STAC_CLR_RESCRCE BIT(18)
725#define SDCI_STAC_CLR_WR_DATCRCE BIT(22) 725#define SDCI_STAC_CLR_WR_DATCRCE BIT(22)
726#define SDCI_STAC_CLR_RD_DATCRCE BIT(23) 726#define SDCI_STAC_CLR_RD_DATCRCE BIT(23)
727#define SDCI_STAC_CLR_RD_DATENDE0 BIT(24) 727#define SDCI_STAC_CLR_RD_DATENDE0 BIT(24)
728#define SDCI_STAC_CLR_RD_DATENDE1 BIT(25) 728#define SDCI_STAC_CLR_RD_DATENDE1 BIT(25)
729#define SDCI_STAC_CLR_RD_DATENDE2 BIT(26) 729#define SDCI_STAC_CLR_RD_DATENDE2 BIT(26)
730#define SDCI_STAC_CLR_RD_DATENDE3 BIT(27) 730#define SDCI_STAC_CLR_RD_DATENDE3 BIT(27)
731#define SDCI_STAC_CLR_RD_DATENDE4 BIT(28) 731#define SDCI_STAC_CLR_RD_DATENDE4 BIT(28)
732#define SDCI_STAC_CLR_RD_DATENDE5 BIT(29) 732#define SDCI_STAC_CLR_RD_DATENDE5 BIT(29)
733#define SDCI_STAC_CLR_RD_DATENDE6 BIT(30) 733#define SDCI_STAC_CLR_RD_DATENDE6 BIT(30)
734#define SDCI_STAC_CLR_RD_DATENDE7 BIT(31) 734#define SDCI_STAC_CLR_RD_DATENDE7 BIT(31)
735 735
736#define SDCI_DSTA_CMDRDY BIT(0) 736#define SDCI_DSTA_CMDRDY BIT(0)
737#define SDCI_DSTA_CMDPRO BIT(1) 737#define SDCI_DSTA_CMDPRO BIT(1)
738#define SDCI_DSTA_CMDEND BIT(2) 738#define SDCI_DSTA_CMDEND BIT(2)
739#define SDCI_DSTA_RESPRO BIT(3) 739#define SDCI_DSTA_RESPRO BIT(3)
740#define SDCI_DSTA_RESEND BIT(4) 740#define SDCI_DSTA_RESEND BIT(4)
741#define SDCI_DSTA_DATPRO BIT(5) 741#define SDCI_DSTA_DATPRO BIT(5)
742#define SDCI_DSTA_DATEND BIT(6) 742#define SDCI_DSTA_DATEND BIT(6)
743#define SDCI_DSTA_DAT_CRCEND BIT(7) 743#define SDCI_DSTA_DAT_CRCEND BIT(7)
744#define SDCI_DSTA_CRC_STAEND BIT(8) 744#define SDCI_DSTA_CRC_STAEND BIT(8)
745#define SDCI_DSTA_DAT_BUSY BIT(9) 745#define SDCI_DSTA_DAT_BUSY BIT(9)
746#define SDCI_DSTA_SDCLK_HOLD BIT(12) 746#define SDCI_DSTA_SDCLK_HOLD BIT(12)
747#define SDCI_DSTA_DAT0_STATUS BIT(13) 747#define SDCI_DSTA_DAT0_STATUS BIT(13)
748#define SDCI_DSTA_WP_DECT_INPUT BIT(14) 748#define SDCI_DSTA_WP_DECT_INPUT BIT(14)
749#define SDCI_DSTA_RESTOUTE BIT(15) 749#define SDCI_DSTA_RESTOUTE BIT(15)
750#define SDCI_DSTA_RESENDE BIT(16) 750#define SDCI_DSTA_RESENDE BIT(16)
751#define SDCI_DSTA_RESINDE BIT(17) 751#define SDCI_DSTA_RESINDE BIT(17)
752#define SDCI_DSTA_RESCRCE BIT(18) 752#define SDCI_DSTA_RESCRCE BIT(18)
753#define SDCI_DSTA_WR_CRC_STATUS_MASK BITRANGE(19, 21) 753#define SDCI_DSTA_WR_CRC_STATUS_MASK BITRANGE(19, 21)
754#define SDCI_DSTA_WR_CRC_STATUS_OK BIT(20) 754#define SDCI_DSTA_WR_CRC_STATUS_OK BIT(20)
755#define SDCI_DSTA_WR_CRC_STATUS_TXERR (BIT(19) | BIT(21)) 755#define SDCI_DSTA_WR_CRC_STATUS_TXERR (BIT(19) | BIT(21))
756#define SDCI_DSTA_WR_CRC_STATUS_CARDERR (BIT(19) | BIT(20) | BIT(21)) 756#define SDCI_DSTA_WR_CRC_STATUS_CARDERR (BIT(19) | BIT(20) | BIT(21))
757#define SDCI_DSTA_WR_DATCRCE BIT(22) 757#define SDCI_DSTA_WR_DATCRCE BIT(22)
758#define SDCI_DSTA_RD_DATCRCE BIT(23) 758#define SDCI_DSTA_RD_DATCRCE BIT(23)
759#define SDCI_DSTA_RD_DATENDE0 BIT(24) 759#define SDCI_DSTA_RD_DATENDE0 BIT(24)
760#define SDCI_DSTA_RD_DATENDE1 BIT(25) 760#define SDCI_DSTA_RD_DATENDE1 BIT(25)
761#define SDCI_DSTA_RD_DATENDE2 BIT(26) 761#define SDCI_DSTA_RD_DATENDE2 BIT(26)
762#define SDCI_DSTA_RD_DATENDE3 BIT(27) 762#define SDCI_DSTA_RD_DATENDE3 BIT(27)
763#define SDCI_DSTA_RD_DATENDE4 BIT(28) 763#define SDCI_DSTA_RD_DATENDE4 BIT(28)
764#define SDCI_DSTA_RD_DATENDE5 BIT(29) 764#define SDCI_DSTA_RD_DATENDE5 BIT(29)
765#define SDCI_DSTA_RD_DATENDE6 BIT(30) 765#define SDCI_DSTA_RD_DATENDE6 BIT(30)
766#define SDCI_DSTA_RD_DATENDE7 BIT(31) 766#define SDCI_DSTA_RD_DATENDE7 BIT(31)
767 767
768#define SDCI_FSTA_RX_FIFO_EMPTY BIT(0) 768#define SDCI_FSTA_RX_FIFO_EMPTY BIT(0)
769#define SDCI_FSTA_RX_FIFO_FULL BIT(1) 769#define SDCI_FSTA_RX_FIFO_FULL BIT(1)
770#define SDCI_FSTA_TX_FIFO_EMPTY BIT(2) 770#define SDCI_FSTA_TX_FIFO_EMPTY BIT(2)
771#define SDCI_FSTA_TX_FIFO_FULL BIT(3) 771#define SDCI_FSTA_TX_FIFO_FULL BIT(3)
772 772
773#define SDCI_SDIO_CSR_SDIO_RW_EN BIT(0) 773#define SDCI_SDIO_CSR_SDIO_RW_EN BIT(0)
774#define SDCI_SDIO_CSR_SDIO_INT_EN BIT(1) 774#define SDCI_SDIO_CSR_SDIO_INT_EN BIT(1)
775#define SDCI_SDIO_CSR_SDIO_RW_REQ BIT(2) 775#define SDCI_SDIO_CSR_SDIO_RW_REQ BIT(2)
776#define SDCI_SDIO_CSR_SDIO_RW_STOP BIT(3) 776#define SDCI_SDIO_CSR_SDIO_RW_STOP BIT(3)
777#define SDCI_SDIO_CSR_SDIO_INT_PERIOD_MASK BIT(4) 777#define SDCI_SDIO_CSR_SDIO_INT_PERIOD_MASK BIT(4)
778#define SDCI_SDIO_CSR_SDIO_INT_PERIOD_MORE 0 778#define SDCI_SDIO_CSR_SDIO_INT_PERIOD_MORE 0
779#define SDCI_SDIO_CSR_SDIO_INT_PERIOD_XACT BIT(4) 779#define SDCI_SDIO_CSR_SDIO_INT_PERIOD_XACT BIT(4)
780 780
781#define SDCI_IRQ_DAT_DONE_INT BIT(0) 781#define SDCI_IRQ_DAT_DONE_INT BIT(0)
782#define SDCI_IRQ_IOCARD_IRQ_INT BIT(1) 782#define SDCI_IRQ_IOCARD_IRQ_INT BIT(1)
783#define SDCI_IRQ_READ_WAIT_INT BIT(2) 783#define SDCI_IRQ_READ_WAIT_INT BIT(2)
784 784
785#define SDCI_IRQ_MASK_MASK_DAT_DONE_INT BIT(0) 785#define SDCI_IRQ_MASK_MASK_DAT_DONE_INT BIT(0)
786#define SDCI_IRQ_MASK_MASK_IOCARD_IRQ_INT BIT(1) 786#define SDCI_IRQ_MASK_MASK_IOCARD_IRQ_INT BIT(1)
787#define SDCI_IRQ_MASK_MASK_READ_WAIT_INT BIT(2) 787#define SDCI_IRQ_MASK_MASK_READ_WAIT_INT BIT(2)
788 788
789 789
790/////CLICKWHEEL///// 790/////CLICKWHEEL/////
791#define WHEEL00 (*((uint32_t volatile*)(0x3C200000))) 791#define WHEEL00 (*((uint32_t volatile*)(0x3C200000)))
792#define WHEEL04 (*((uint32_t volatile*)(0x3C200004))) 792#define WHEEL04 (*((uint32_t volatile*)(0x3C200004)))
793#define WHEEL08 (*((uint32_t volatile*)(0x3C200008))) 793#define WHEEL08 (*((uint32_t volatile*)(0x3C200008)))
794#define WHEEL0C (*((uint32_t volatile*)(0x3C20000C))) 794#define WHEEL0C (*((uint32_t volatile*)(0x3C20000C)))
795#define WHEEL10 (*((uint32_t volatile*)(0x3C200010))) 795#define WHEEL10 (*((uint32_t volatile*)(0x3C200010)))
796#define WHEELINT (*((uint32_t volatile*)(0x3C200014))) 796#define WHEELINT (*((uint32_t volatile*)(0x3C200014)))
797#define WHEELRX (*((uint32_t volatile*)(0x3C200018))) 797#define WHEELRX (*((uint32_t volatile*)(0x3C200018)))
798#define WHEELTX (*((uint32_t volatile*)(0x3C20001C))) 798#define WHEELTX (*((uint32_t volatile*)(0x3C20001C)))
799 799
800 800
801/////I2S///// 801/////I2S/////
802#define I2SCLKCON (*((volatile uint32_t*)(0x3CA00000))) 802#define I2SCLKCON (*((volatile uint32_t*)(0x3CA00000)))
803#define I2STXCON (*((volatile uint32_t*)(0x3CA00004))) 803#define I2STXCON (*((volatile uint32_t*)(0x3CA00004)))
804#define I2STXCOM (*((volatile uint32_t*)(0x3CA00008))) 804#define I2STXCOM (*((volatile uint32_t*)(0x3CA00008)))
805#define I2STXDB0 (*((volatile uint32_t*)(0x3CA00010))) 805#define I2STXDB0 (*((volatile uint32_t*)(0x3CA00010)))
806#define I2SRXCON (*((volatile uint32_t*)(0x3CA00030))) 806#define I2SRXCON (*((volatile uint32_t*)(0x3CA00030)))
807#define I2SRXCOM (*((volatile uint32_t*)(0x3CA00034))) 807#define I2SRXCOM (*((volatile uint32_t*)(0x3CA00034)))
808#define I2SRXDB (*((volatile uint32_t*)(0x3CA00038))) 808#define I2SRXDB (*((volatile uint32_t*)(0x3CA00038)))
809#define I2SSTATUS (*((volatile uint32_t*)(0x3CA0003C))) 809#define I2SSTATUS (*((volatile uint32_t*)(0x3CA0003C)))
810#define I2S40 (*((volatile uint32_t*)(0x3CA00040))) 810#define I2S40 (*((volatile uint32_t*)(0x3CA00040)))
811 811
812 812
813/////CLOCK GATES///// 813/////CLOCK GATES/////
814#define CLOCKGATE_USB_1 2 814#define CLOCKGATE_USB_1 2
815#define CLOCKGATE_USB_2 35 815#define CLOCKGATE_USB_2 35
816 816
817 817
818/////INTERRUPTS///// 818/////INTERRUPTS/////
819#define IRQ_TIMER 8 819#define IRQ_TIMER 8
820#define IRQ_USB_FUNC 19 820#define IRQ_USB_FUNC 19
821#define IRQ_DMAC(d) 16 + d 821#define IRQ_DMAC(d) 16 + d
822#define IRQ_DMAC0 16 822#define IRQ_DMAC0 16
823#define IRQ_DMAC1 17 823#define IRQ_DMAC1 17
824#define IRQ_WHEEL 23 824#define IRQ_WHEEL 23
825#define IRQ_ATA 29 825#define IRQ_ATA 29
826#define IRQ_MMC 44 826#define IRQ_MMC 44
827 827
828 828
829#endif 829#endif
830 830
diff --git a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
index 4650913ce3..2d8d25cf31 100644
--- a/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
+++ b/firmware/target/arm/as3525/sansa-clipzip/lcd-clipzip.c
@@ -5,7 +5,7 @@
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: lcd-clipzip.c 30465 2011-09-06 16:55:52Z bertrik $ 8 * $Id$
9 * 9 *
10 * Copyright (C) 2011 Bertrik Sikken 10 * Copyright (C) 2011 Bertrik Sikken
11 * 11 *
diff --git a/firmware/target/arm/s5l8700/postmortemstub.S b/firmware/target/arm/s5l8700/postmortemstub.S
index 73f192a553..d0874c418b 100644
--- a/firmware/target/arm/s5l8700/postmortemstub.S
+++ b/firmware/target/arm/s5l8700/postmortemstub.S
@@ -1,308 +1,308 @@
1.section .text.post_mortem_stub, "ax", %progbits 1.section .text.post_mortem_stub, "ax", %progbits
2.align 4 2.align 4
3.global post_mortem_stub 3.global post_mortem_stub
4.type post_mortem_stub, %function 4.type post_mortem_stub, %function
5post_mortem_stub: 5post_mortem_stub:
6MSR CPSR_c, #0xD3 @ Supervisor mode, no IRQs, no FIQs 6MSR CPSR_c, #0xD3 @ Supervisor mode, no IRQs, no FIQs
7MRC p15, 0, R0,c1,c0 7MRC p15, 0, R0,c1,c0
8BIC R0, R0, #5 8BIC R0, R0, #5
9MCR p15, 0, R0,c1,c0 @ Disable the Protection Unit and DCache 9MCR p15, 0, R0,c1,c0 @ Disable the Protection Unit and DCache
10MOV R13, #0 10MOV R13, #0
11pms_flushcache_loop: 11pms_flushcache_loop:
12 MCR p15, 0, R13,c7,c14,2 12 MCR p15, 0, R13,c7,c14,2
13 ADD R0, R13, #0x10 13 ADD R0, R13, #0x10
14 MCR p15, 0, R0,c7,c14,2 14 MCR p15, 0, R0,c7,c14,2
15 ADD R0, R0, #0x10 15 ADD R0, R0, #0x10
16 MCR p15, 0, R0,c7,c14,2 16 MCR p15, 0, R0,c7,c14,2
17 ADD R0, R0, #0x10 17 ADD R0, R0, #0x10
18 MCR p15, 0, R0,c7,c14,2 18 MCR p15, 0, R0,c7,c14,2
19 ADDS R13, R13, #0x04000000 19 ADDS R13, R13, #0x04000000
20BNE pms_flushcache_loop 20BNE pms_flushcache_loop
21MCR p15, 0, R13,c7,c10,4 21MCR p15, 0, R13,c7,c10,4
22 22
23LDR R7, pms_00080200 23LDR R7, pms_00080200
24ORR R8, R7, #0x8000 24ORR R8, R7, #0x8000
25ADR R9, pms_recvbuf 25ADR R9, pms_recvbuf
26LDR R10, pms_20080040 26LDR R10, pms_20080040
27MOV R11, #0x38800000 27MOV R11, #0x38800000
28MOV R12, #1 28MOV R12, #1
29 29
30MOV R2, #0x3C400000 30MOV R2, #0x3C400000
31ADD R1, R2, #0x00100000 @ Enable USB clocks 31ADD R1, R2, #0x00100000 @ Enable USB clocks
32LDR R0, [R1,#0x28] 32LDR R0, [R1,#0x28]
33BIC R0, R0, #0x4000 33BIC R0, R0, #0x4000
34STR R0, [R1,#0x28] 34STR R0, [R1,#0x28]
35LDR R0, [R1,#0x40] 35LDR R0, [R1,#0x40]
36BIC R0, R0, #0x800 36BIC R0, R0, #0x800
37STR R0, [R1,#0x40] 37STR R0, [R1,#0x40]
38LDR R0, pms_20803180 @ Clocking config 38LDR R0, pms_20803180 @ Clocking config
39STR R0, [R1] 39STR R0, [R1]
40MOV R0, #0x280 40MOV R0, #0x280
41STR R0, [R1,#0x3C] 41STR R0, [R1,#0x3C]
42MRC p15, 0, R0,c1,c0 42MRC p15, 0, R0,c1,c0
43ORR R0, R0, #0xc0000000 43ORR R0, R0, #0xc0000000
44MCR p15, 0, R0,c1,c0 @ Asynchronous mode 44MCR p15, 0, R0,c1,c0 @ Asynchronous mode
45 45
46STR R13, [R11,#0xE00] @ PHY clock enable 46STR R13, [R11,#0xE00] @ PHY clock enable
47 47
48MOV R1, #0x800 48MOV R1, #0x800
49ORR R0, R2, #2 49ORR R0, R2, #2
50STR R0, [R11,#0x804] @ USB2 Gadget: Soft disconnect 50STR R0, [R11,#0x804] @ USB2 Gadget: Soft disconnect
51 51
52STR R13, [R2] @ USB2 PHY: Power on 52STR R13, [R2] @ USB2 PHY: Power on
53STR R12, [R2,#0x08] @ USB2 PHY: Assert Software Reset 53STR R12, [R2,#0x08] @ USB2 PHY: Assert Software Reset
54MOV R0, #0x10000 54MOV R0, #0x10000
55pms_wait: 55pms_wait:
56SUBS R0, R0, #1 56SUBS R0, R0, #1
57BNE pms_wait 57BNE pms_wait
58STR R13, [R2,#0x08] @ USB2 PHY: Deassert Software Reset 58STR R13, [R2,#0x08] @ USB2 PHY: Deassert Software Reset
59STR R13, [R2,#0x04] @ USB2 PHY: Clock is 48MHz 59STR R13, [R2,#0x04] @ USB2 PHY: Clock is 48MHz
60 60
61STR R12, [R11,#0x10] @ USB2 Gadget: Assert Core Software Reset 61STR R12, [R11,#0x10] @ USB2 Gadget: Assert Core Software Reset
62pms_waitcorereset: 62pms_waitcorereset:
63LDR R0, [R11,#0x10] @ USB2 Gadget: Wait for Core to reset 63LDR R0, [R11,#0x10] @ USB2 Gadget: Wait for Core to reset
64TST R0, #1 64TST R0, #1
65BNE pms_waitcorereset 65BNE pms_waitcorereset
66TST R0, #0x80000000 @ USB2 Gadget: Wait for AHB IDLE 66TST R0, #0x80000000 @ USB2 Gadget: Wait for AHB IDLE
67BEQ pms_waitcorereset 67BEQ pms_waitcorereset
68 68
69MOV R0, #0x200 69MOV R0, #0x200
70STR R0, [R11,#0x24] @ USB2 Gadget: RX FIFO size: 512 bytes 70STR R0, [R11,#0x24] @ USB2 Gadget: RX FIFO size: 512 bytes
71ORR R0, R0, #0x2000000 71ORR R0, R0, #0x2000000
72STR R0, [R11,#0x28] @ USB2 Gadget: Non-periodic TX FIFO size: 512 bytes 72STR R0, [R11,#0x28] @ USB2 Gadget: Non-periodic TX FIFO size: 512 bytes
73MOV R0, #0x26 73MOV R0, #0x26
74STR R0, [R11,#0x08] @ USB2 Gadget: DMA Enable, Burst Length: 4, Mask Interrupts 74STR R0, [R11,#0x08] @ USB2 Gadget: DMA Enable, Burst Length: 4, Mask Interrupts
75MOV R0, #0x1400 75MOV R0, #0x1400
76ADD R0, R0, #8 76ADD R0, R0, #8
77STR R0, [R11,#0x0C] @ USB2 Gadget: PHY IF is 16bit, Turnaround 5 77STR R0, [R11,#0x0C] @ USB2 Gadget: PHY IF is 16bit, Turnaround 5
78STR R1, [R11,#0x804] @ USB2 Gadget: Soft reconnect 78STR R1, [R11,#0x804] @ USB2 Gadget: Soft reconnect
79 79
80ADR R14, pms_ctrlbuf 80ADR R14, pms_ctrlbuf
81ORR R5, R8, #0x84000000 81ORR R5, R8, #0x84000000
82@ fallthrough 82@ fallthrough
83 83
84pms_mainloop: 84pms_mainloop:
85 LDR R3, [R11,#0x14] @ Global USB interrupts 85 LDR R3, [R11,#0x14] @ Global USB interrupts
86 TST R3, #0x00001000 @ BUS reset 86 TST R3, #0x00001000 @ BUS reset
87 BEQ pms_noreset 87 BEQ pms_noreset
88 MOV R0, #0x500 88 MOV R0, #0x500
89 STR R0, [R11,#0x804] 89 STR R0, [R11,#0x804]
90 MOV R0, #4 90 MOV R0, #4
91 STR R0, [R11,#0x800] @ USB2 Gadget: Device Address 0, STALL on non-zero length status stage 91 STR R0, [R11,#0x800] @ USB2 Gadget: Device Address 0, STALL on non-zero length status stage
92 MOV R0, #0x8000 92 MOV R0, #0x8000
93 STR R0, [R11,#0x900] @ USB2 Gadget: Endpoint 0 IN Control: ACTIVE 93 STR R0, [R11,#0x900] @ USB2 Gadget: Endpoint 0 IN Control: ACTIVE
94 STR R10, [R11,#0xB10] @ USB2 Gadget: Endpoint 0 OUT Transfer Size: 64 Bytes, 1 Packet, 1 Setup Packet 94 STR R10, [R11,#0xB10] @ USB2 Gadget: Endpoint 0 OUT Transfer Size: 64 Bytes, 1 Packet, 1 Setup Packet
95 STR R14, [R11,#0xB14] @ USB2 Gadget: Endpoint 0 OUT DMA Address: pms_ctrlbuf 95 STR R14, [R11,#0xB14] @ USB2 Gadget: Endpoint 0 OUT DMA Address: pms_ctrlbuf
96 ORR R6, R0, #0x84000000 96 ORR R6, R0, #0x84000000
97 STR R6, [R11,#0xB00] @ USB2 Gadget: Endpoint 0 OUT Control: ENABLE CLEARNAK 97 STR R6, [R11,#0xB00] @ USB2 Gadget: Endpoint 0 OUT Control: ENABLE CLEARNAK
98 STR R8, [R11,#0x960] @ USB2 Gadget: Endpoint 3 IN Control: ACTIVE BULK, 512 byte packets 98 STR R8, [R11,#0x960] @ USB2 Gadget: Endpoint 3 IN Control: ACTIVE BULK, 512 byte packets
99 STR R8, [R11,#0xB80] @ USB2 Gadget: Endpoint 4 OUT Control: ACTIVE BULK, 512 byte packets 99 STR R8, [R11,#0xB80] @ USB2 Gadget: Endpoint 4 OUT Control: ACTIVE BULK, 512 byte packets
100 STR R7, [R11,#0xB90] @ USB2 Gadget: Endpoint 4 OUT Transfer Size: 512 Bytes, 1 Packet 100 STR R7, [R11,#0xB90] @ USB2 Gadget: Endpoint 4 OUT Transfer Size: 512 Bytes, 1 Packet
101 STR R9, [R11,#0xB94] @ USB2 Gadget: Endpoint 4 OUT DMA Address: pms_recvbuf 101 STR R9, [R11,#0xB94] @ USB2 Gadget: Endpoint 4 OUT DMA Address: pms_recvbuf
102 ORR R4, R5, #0x10000000 102 ORR R4, R5, #0x10000000
103 STR R4, [R11,#0xB80] @ USB2 Gadget: Endpoint 4 OUT Control: ENABLE CLEARNAK DATA0 103 STR R4, [R11,#0xB80] @ USB2 Gadget: Endpoint 4 OUT Control: ENABLE CLEARNAK DATA0
104 pms_noreset: 104 pms_noreset:
105 LDR R0, [R11,#0x908] @ Just ACK all IN events... 105 LDR R0, [R11,#0x908] @ Just ACK all IN events...
106 STR R0, [R11,#0x908] 106 STR R0, [R11,#0x908]
107 LDR R0, [R11,#0x968] 107 LDR R0, [R11,#0x968]
108 STR R0, [R11,#0x968] 108 STR R0, [R11,#0x968]
109 LDR R2, [R11,#0xB08] 109 LDR R2, [R11,#0xB08]
110 MOVS R2, R2 @ Event on OUT EP0 110 MOVS R2, R2 @ Event on OUT EP0
111 BEQ pms_noep0out 111 BEQ pms_noep0out
112 TST R2, #8 @ SETUP phase done 112 TST R2, #8 @ SETUP phase done
113 BEQ pms_controldone 113 BEQ pms_controldone
114 LDRB R0, [R14,#1] @ Get request type 114 LDRB R0, [R14,#1] @ Get request type
115 CMP R0, #0 115 CMP R0, #0
116 BEQ pms_GET_STATUS 116 BEQ pms_GET_STATUS
117 CMP R0, #1 117 CMP R0, #1
118 BEQ pms_CLEAR_FEATURE 118 BEQ pms_CLEAR_FEATURE
119 CMP R0, #3 119 CMP R0, #3
120 BEQ pms_SET_FEATURE 120 BEQ pms_SET_FEATURE
121 CMP R0, #5 121 CMP R0, #5
122 BEQ pms_SET_ADDRESS 122 BEQ pms_SET_ADDRESS
123 CMP R0, #6 123 CMP R0, #6
124 BEQ pms_GET_DESCRIPTOR 124 BEQ pms_GET_DESCRIPTOR
125 CMP R0, #8 125 CMP R0, #8
126 BEQ pms_GET_CONFIGURATION 126 BEQ pms_GET_CONFIGURATION
127 CMP R0, #9 127 CMP R0, #9
128 BEQ pms_SET_CONFIGURATION 128 BEQ pms_SET_CONFIGURATION
129 pms_ctrlstall: 129 pms_ctrlstall:
130 LDR R0, [R11,#0x900] 130 LDR R0, [R11,#0x900]
131 ORR R0, R0, #0x00200000 131 ORR R0, R0, #0x00200000
132 STR R0, [R11,#0x900] @ Stall IN EP0 132 STR R0, [R11,#0x900] @ Stall IN EP0
133 LDR R0, [R11,#0xB00] 133 LDR R0, [R11,#0xB00]
134 ORR R0, R0, #0x00200000 134 ORR R0, R0, #0x00200000
135 STR R0, [R11,#0xB00] @ Stall OUT EP0 135 STR R0, [R11,#0xB00] @ Stall OUT EP0
136 pms_controldone: 136 pms_controldone:
137 STR R10, [R11,#0xB10] @ OUT EP0: 64 Bytes, 1 Packet, 1 Setup Packet 137 STR R10, [R11,#0xB10] @ OUT EP0: 64 Bytes, 1 Packet, 1 Setup Packet
138 STR R14, [R11,#0xB14] @ OUT EP0: DMA address 138 STR R14, [R11,#0xB14] @ OUT EP0: DMA address
139 STR R6, [R11,#0xB00] @ OUT EP0: Enable ClearNAK 139 STR R6, [R11,#0xB00] @ OUT EP0: Enable ClearNAK
140 pms_noep0out: 140 pms_noep0out:
141 STR R2, [R11,#0xB08] @ ACK it, whatever it was... 141 STR R2, [R11,#0xB08] @ ACK it, whatever it was...
142 LDR R2, [R11,#0xB88] 142 LDR R2, [R11,#0xB88]
143 MOVS R2, R2 @ Event on OUT EP4 143 MOVS R2, R2 @ Event on OUT EP4
144 BEQ pms_noep1out 144 BEQ pms_noep1out
145 TST R2, #1 @ XFER complete 145 TST R2, #1 @ XFER complete
146 BEQ pms_datadone 146 BEQ pms_datadone
147 LDR R0, pms_000001FF 147 LDR R0, pms_000001FF
148 LDR R1, pms_recvbuf+4 148 LDR R1, pms_recvbuf+4
149 ADD R0, R0, R1 149 ADD R0, R0, R1
150 MOV R0, R0,LSR#9 150 MOV R0, R0,LSR#9
151 ORR R1, R1, R0,LSL#19 @ Number of packets 151 ORR R1, R1, R0,LSL#19 @ Number of packets
152 LDR R0, pms_recvbuf 152 LDR R0, pms_recvbuf
153 STR R1, [R11,#0x970] @ EP3 IN: Number of packets, size 153 STR R1, [R11,#0x970] @ EP3 IN: Number of packets, size
154 STR R0, [R11,#0x974] @ EP3 IN: DMA address 154 STR R0, [R11,#0x974] @ EP3 IN: DMA address
155 STR R5, [R11,#0x960] @ EP3 IN: Enable ClearNAK 155 STR R5, [R11,#0x960] @ EP3 IN: Enable ClearNAK
156 pms_datadone: 156 pms_datadone:
157 STR R7, [R11,#0xB90] @ OUT EP4: 512 Bytes, 1 Packet 157 STR R7, [R11,#0xB90] @ OUT EP4: 512 Bytes, 1 Packet
158 STR R9, [R11,#0xB94] @ Out EP4: DMA address 158 STR R9, [R11,#0xB94] @ Out EP4: DMA address
159 STR R5, [R11,#0xB80] @ Out EP4: Enable ClearNAK 159 STR R5, [R11,#0xB80] @ Out EP4: Enable ClearNAK
160 pms_noep1out: 160 pms_noep1out:
161 STR R2, [R11,#0xB88] @ ACK it, whatever it was... 161 STR R2, [R11,#0xB88] @ ACK it, whatever it was...
162 STR R3, [R11,#0x14] @ ACK global ints 162 STR R3, [R11,#0x14] @ ACK global ints
163B pms_mainloop 163B pms_mainloop
164 164
165pms_CLEAR_FEATURE: 165pms_CLEAR_FEATURE:
166 LDRB R0, [R14] 166 LDRB R0, [R14]
167 CMP R0, #2 167 CMP R0, #2
168 LDREQ R0, [R14,#2] 168 LDREQ R0, [R14,#2]
169 BICEQ R0, R0, #0x00800000 169 BICEQ R0, R0, #0x00800000
170 CMPEQ R0, #0x00010000 170 CMPEQ R0, #0x00010000
171@ fallthrough 171@ fallthrough
172 172
173pms_SET_CONFIGURATION: 173pms_SET_CONFIGURATION:
174 ORREQ R0, R8, #0x10000000 174 ORREQ R0, R8, #0x10000000
175 STREQ R0, [R11,#0x960] @ EP3 IN: Set DATA0 PID 175 STREQ R0, [R11,#0x960] @ EP3 IN: Set DATA0 PID
176 STREQ R4, [R11,#0xB80] @ EP4 OUT: Set DATA0 PID 176 STREQ R4, [R11,#0xB80] @ EP4 OUT: Set DATA0 PID
177B pms_SET_FEATURE @ zero-length ACK 177B pms_SET_FEATURE @ zero-length ACK
178 178
179pms_GET_CONFIGURATION: 179pms_GET_CONFIGURATION:
180 MOV R1, #1 180 MOV R1, #1
181 STR R1, [R14] 181 STR R1, [R14]
182@ fallthrough 182@ fallthrough
183 183
184pms_ctrlsend: 184pms_ctrlsend:
185 ORR R0, R1, #0x00080000 @ 1 Packet 185 ORR R0, R1, #0x00080000 @ 1 Packet
186 STR R0, [R11,#0x910] @ EP0 IN: 1 Packet, Size as in R1 186 STR R0, [R11,#0x910] @ EP0 IN: 1 Packet, Size as in R1
187 STR R14, [R11,#0x914] @ EP0 IN: DMA address 187 STR R14, [R11,#0x914] @ EP0 IN: DMA address
188 ORR R0, R6, #0x1800 188 ORR R0, R6, #0x1800
189 STR R0, [R11,#0x900] @ EP0 IN: Enable ClearNAK 189 STR R0, [R11,#0x900] @ EP0 IN: Enable ClearNAK
190 ADR R14, pms_ctrlbuf 190 ADR R14, pms_ctrlbuf
191B pms_controldone 191B pms_controldone
192 192
193pms_GET_DESCRIPTOR: 193pms_GET_DESCRIPTOR:
194 LDRB R0, [R14,#3] @ Descriptor type 194 LDRB R0, [R14,#3] @ Descriptor type
195 CMP R0, #1 195 CMP R0, #1
196 ADREQ R14, pms_devicedescriptor 196 ADREQ R14, pms_devicedescriptor
197 BEQ pms_senddescriptor 197 BEQ pms_senddescriptor
198 CMP R0, #2 198 CMP R0, #2
199 ADREQ R14, pms_configurationdescriptor 199 ADREQ R14, pms_configurationdescriptor
200 MOVEQ R1, #0x20 200 MOVEQ R1, #0x20
201 BEQ pms_senddescriptorcustomsize 201 BEQ pms_senddescriptorcustomsize
202 CMP R0, #3 202 CMP R0, #3
203 BNE pms_ctrlstall 203 BNE pms_ctrlstall
204 LDRB R0, [R14,#2] @ String descriptor index 204 LDRB R0, [R14,#2] @ String descriptor index
205 CMP R0, #0 205 CMP R0, #0
206 LDREQ R0, pms_langstringdescriptor 206 LDREQ R0, pms_langstringdescriptor
207 STREQ R0, [R14] 207 STREQ R0, [R14]
208 BEQ pms_senddescriptor 208 BEQ pms_senddescriptor
209 CMP R0, #1 209 CMP R0, #1
210 CMPNE R0, #2 210 CMPNE R0, #2
211 ADREQ R14, pms_devnamestringdescriptor 211 ADREQ R14, pms_devnamestringdescriptor
212 BNE pms_ctrlstall 212 BNE pms_ctrlstall
213@ fallthrough 213@ fallthrough
214 214
215pms_senddescriptor: 215pms_senddescriptor:
216 LDRB R1, [R14] @ Descriptor length 216 LDRB R1, [R14] @ Descriptor length
217@ fallthrough 217@ fallthrough
218 218
219pms_senddescriptorcustomsize: 219pms_senddescriptorcustomsize:
220 LDRH R0, pms_ctrlbuf+6 @ Requested length 220 LDRH R0, pms_ctrlbuf+6 @ Requested length
221 CMP R0, R1 221 CMP R0, R1
222 MOVLO R1, R0 222 MOVLO R1, R0
223B pms_ctrlsend 223B pms_ctrlsend
224 224
225pms_SET_ADDRESS: 225pms_SET_ADDRESS:
226 LDRH R1, [R14,#2] @ new address 226 LDRH R1, [R14,#2] @ new address
227 LDR R0, [R11,#0x800] 227 LDR R0, [R11,#0x800]
228 BIC R0, R0, #0x000007F0 228 BIC R0, R0, #0x000007F0
229 ORR R0, R0, R1,LSL#4 229 ORR R0, R0, R1,LSL#4
230 STR R0, [R11,#0x800] @ set new address 230 STR R0, [R11,#0x800] @ set new address
231@ fallthrough 231@ fallthrough
232 232
233pms_SET_FEATURE: 233pms_SET_FEATURE:
234 MOV R1, #0 @ zero-length ACK 234 MOV R1, #0 @ zero-length ACK
235B pms_ctrlsend 235B pms_ctrlsend
236 236
237pms_20803180: 237pms_20803180:
238.word 0x20803180 238.word 0x20803180
239 239
240.ltorg 240.ltorg
241 241
242.align 4 242.align 4
243 243
244pms_configurationdescriptor: 244pms_configurationdescriptor:
245.word 0x00200209 245.word 0x00200209
246.word 0xC0000101 246.word 0xC0000101
247.word 0x00040932 247.word 0x00040932
248.word 0xFFFF0200 248.word 0xFFFF0200
249.word 0x050700FF 249.word 0x050700FF
250.word 0x02000204 250.word 0x02000204
251.word 0x83050701 251.word 0x83050701
252.word 0x01020002 252.word 0x01020002
253 253
254pms_devicedescriptor: 254pms_devicedescriptor:
255.word 0x02000112 255.word 0x02000112
256.word 0x40FFFFFF 256.word 0x40FFFFFF
257.word 0xA112FFFF 257.word 0xA112FFFF
258.word 0x02010001 258.word 0x02010001
259.word 0x00010100 259.word 0x00010100
260 260
261pms_00080200: 261pms_00080200:
262.word 0x00080200 262.word 0x00080200
263 263
264pms_20080040: 264pms_20080040:
265.word 0x20080040 265.word 0x20080040
266 266
267pms_000001FF: 267pms_000001FF:
268.word 0x000001FF 268.word 0x000001FF
269 269
270pms_devnamestringdescriptor: 270pms_devnamestringdescriptor:
271.word 0x0052030C 271.word 0x0052030C
272.word 0x00500042 272.word 0x00500042
273.word 0x0053004D 273.word 0x0053004D
274 274
275pms_langstringdescriptor: 275pms_langstringdescriptor:
276.word 0x04090304 276.word 0x04090304
277 277
278pms_ctrlbuf: 278pms_ctrlbuf:
279.word 0 279.word 0
280.word 0 280.word 0
281.word 0 281.word 0
282.word 0 282.word 0
283.word 0 283.word 0
284.word 0 284.word 0
285.word 0 285.word 0
286.word 0 286.word 0
287.word 0 287.word 0
288.word 0 288.word 0
289.word 0 289.word 0
290.word 0 290.word 0
291.word 0 291.word 0
292.word 0 292.word 0
293.word 0 293.word 0
294.word 0 294.word 0
295 295
296pms_recvbuf: 296pms_recvbuf:
297.word 0 297.word 0
298.word 0 298.word 0
299 299
300pms_GET_STATUS: 300pms_GET_STATUS:
301 LDRB R0, [R14] 301 LDRB R0, [R14]
302 CMP R0, #0x80 302 CMP R0, #0x80
303 STREQ R12, [R14] 303 STREQ R12, [R14]
304 STRNE R13, [R14] 304 STRNE R13, [R14]
305 MOV R1, #2 305 MOV R1, #2
306B pms_ctrlsend 306B pms_ctrlsend
307 307
308.size post_mortem_stub, .-post_mortem_stub 308.size post_mortem_stub, .-post_mortem_stub
diff --git a/firmware/target/arm/s5l8702/debug-s5l8702.c b/firmware/target/arm/s5l8702/debug-s5l8702.c
index 5001d61f70..f49595aa00 100644
--- a/firmware/target/arm/s5l8702/debug-s5l8702.c
+++ b/firmware/target/arm/s5l8702/debug-s5l8702.c
@@ -1,166 +1,166 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: debug-s5l8700.c 28719 2010-12-01 18:35:01Z Buschel $ 8 * $Id: debug-s5l8700.c 28719 2010-12-01 18:35:01Z Buschel $
9 * 9 *
10 * Copyright © 2008 Rafaël Carré 10 * Copyright © 2008 Rafaël Carré
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21 21
22#include <stdbool.h> 22#include <stdbool.h>
23#include "config.h" 23#include "config.h"
24#include "kernel.h" 24#include "kernel.h"
25#include "debug-target.h" 25#include "debug-target.h"
26#include "button.h" 26#include "button.h"
27#include "lcd.h" 27#include "lcd.h"
28#include "font.h" 28#include "font.h"
29#include "storage.h" 29#include "storage.h"
30#include "power.h" 30#include "power.h"
31#include "pmu-target.h" 31#include "pmu-target.h"
32#include "pcm-target.h" 32#include "pcm-target.h"
33 33
34/* Skeleton for adding target specific debug info to the debug menu 34/* Skeleton for adding target specific debug info to the debug menu
35 */ 35 */
36 36
37#define _DEBUG_PRINTF(a, varargs...) lcd_putsf(0, line++, (a), ##varargs); 37#define _DEBUG_PRINTF(a, varargs...) lcd_putsf(0, line++, (a), ##varargs);
38 38
39extern int lcd_type; 39extern int lcd_type;
40bool dbg_hw_info(void) 40bool dbg_hw_info(void)
41{ 41{
42 int line; 42 int line;
43 int i; 43 int i;
44 unsigned int state = 0; 44 unsigned int state = 0;
45 const unsigned int max_states=3; 45 const unsigned int max_states=3;
46 46
47 lcd_clear_display(); 47 lcd_clear_display();
48 lcd_setfont(FONT_SYSFIXED); 48 lcd_setfont(FONT_SYSFIXED);
49 49
50 state=0; 50 state=0;
51 while(1) 51 while(1)
52 { 52 {
53 lcd_clear_display(); 53 lcd_clear_display();
54 line = 0; 54 line = 0;
55 55
56 if(state == 0) 56 if(state == 0)
57 { 57 {
58 _DEBUG_PRINTF("CPU:"); 58 _DEBUG_PRINTF("CPU:");
59 _DEBUG_PRINTF("current_tick: %d", (unsigned int)current_tick); 59 _DEBUG_PRINTF("current_tick: %d", (unsigned int)current_tick);
60 line++; 60 line++;
61 61
62 _DEBUG_PRINTF("LCD type: %d", lcd_type); 62 _DEBUG_PRINTF("LCD type: %d", lcd_type);
63 line++; 63 line++;
64 } 64 }
65 else if(state==1) 65 else if(state==1)
66 { 66 {
67 _DEBUG_PRINTF("PMU:"); 67 _DEBUG_PRINTF("PMU:");
68 for(i=0;i<7;i++) 68 for(i=0;i<7;i++)
69 { 69 {
70 char *device[] = {"(unknown)", 70 char *device[] = {"(unknown)",
71 "(unknown)", 71 "(unknown)",
72 "(unknown)", 72 "(unknown)",
73 "(unknown)", 73 "(unknown)",
74 "(unknown)", 74 "(unknown)",
75 "(unknown)", 75 "(unknown)",
76 "(unknown)"}; 76 "(unknown)"};
77 _DEBUG_PRINTF("ldo%d %s: %dmV %s",i, 77 _DEBUG_PRINTF("ldo%d %s: %dmV %s",i,
78 pmu_read(0x2e + (i << 1))?" on":"off", 78 pmu_read(0x2e + (i << 1))?" on":"off",
79 900 + pmu_read(0x2d + (i << 1))*100, 79 900 + pmu_read(0x2d + (i << 1))*100,
80 device[i]); 80 device[i]);
81 } 81 }
82 _DEBUG_PRINTF("cpu voltage: %dmV",625 + pmu_read(0x1e)*25); 82 _DEBUG_PRINTF("cpu voltage: %dmV",625 + pmu_read(0x1e)*25);
83 _DEBUG_PRINTF("memory voltage: %dmV",625 + pmu_read(0x22)*25); 83 _DEBUG_PRINTF("memory voltage: %dmV",625 + pmu_read(0x22)*25);
84 line++; 84 line++;
85 _DEBUG_PRINTF("charging: %s", charging_state() ? "true" : "false"); 85 _DEBUG_PRINTF("charging: %s", charging_state() ? "true" : "false");
86 _DEBUG_PRINTF("backlight: %s", pmu_read(0x29) ? "on" : "off"); 86 _DEBUG_PRINTF("backlight: %s", pmu_read(0x29) ? "on" : "off");
87 _DEBUG_PRINTF("brightness value: %d", pmu_read(0x28)); 87 _DEBUG_PRINTF("brightness value: %d", pmu_read(0x28));
88 } 88 }
89 else if(state==2) 89 else if(state==2)
90 { 90 {
91 _DEBUG_PRINTF("Audio DMA:"); 91 _DEBUG_PRINTF("Audio DMA:");
92 _DEBUG_PRINTF(">%08X %08X %08X %08X %08X", DMAC0C0CONFIG, DMAC0C0SRCADDR, 92 _DEBUG_PRINTF(">%08X %08X %08X %08X %08X", DMAC0C0CONFIG, DMAC0C0SRCADDR,
93 DMAC0C0DESTADDR, DMAC0C0NEXTLLI, DMAC0C0CONTROL); 93 DMAC0C0DESTADDR, DMAC0C0NEXTLLI, DMAC0C0CONTROL);
94 for(i = 0; i < PCM_LLICOUNT; i++) 94 for(i = 0; i < PCM_LLICOUNT; i++)
95 _DEBUG_PRINTF("%08X: %08X %08X %08X %08X", &pcm_lli[i], pcm_lli[i].srcaddr, 95 _DEBUG_PRINTF("%08X: %08X %08X %08X %08X", &pcm_lli[i], pcm_lli[i].srcaddr,
96 pcm_lli[i].dstaddr, pcm_lli[i].nextlli, pcm_lli[i].control); 96 pcm_lli[i].dstaddr, pcm_lli[i].nextlli, pcm_lli[i].control);
97 _DEBUG_PRINTF("chunk: %08X %08X", pcm_chunksize, pcm_remaining); 97 _DEBUG_PRINTF("chunk: %08X %08X", pcm_chunksize, pcm_remaining);
98 } 98 }
99 else 99 else
100 { 100 {
101 state=0; 101 state=0;
102 } 102 }
103 103
104 104
105 lcd_update(); 105 lcd_update();
106 switch(button_get_w_tmo(HZ/20)) 106 switch(button_get_w_tmo(HZ/20))
107 { 107 {
108 case BUTTON_SCROLL_BACK: 108 case BUTTON_SCROLL_BACK:
109 if(state!=0) state--; 109 if(state!=0) state--;
110 break; 110 break;
111 111
112 case BUTTON_SCROLL_FWD: 112 case BUTTON_SCROLL_FWD:
113 if(state!=max_states-1) 113 if(state!=max_states-1)
114 { 114 {
115 state++; 115 state++;
116 } 116 }
117 break; 117 break;
118 118
119 case DEBUG_CANCEL: 119 case DEBUG_CANCEL:
120 case BUTTON_REL: 120 case BUTTON_REL:
121 lcd_setfont(FONT_UI); 121 lcd_setfont(FONT_UI);
122 return false; 122 return false;
123 } 123 }
124 } 124 }
125 125
126 lcd_setfont(FONT_UI); 126 lcd_setfont(FONT_UI);
127 return false; 127 return false;
128} 128}
129 129
130bool dbg_ports(void) 130bool dbg_ports(void)
131{ 131{
132 int line; 132 int line;
133 133
134 lcd_setfont(FONT_SYSFIXED); 134 lcd_setfont(FONT_SYSFIXED);
135 135
136 while(1) 136 while(1)
137 { 137 {
138 lcd_clear_display(); 138 lcd_clear_display();
139 line = 0; 139 line = 0;
140 140
141 _DEBUG_PRINTF("GPIO 0: %08x",(unsigned int)PDAT(0)); 141 _DEBUG_PRINTF("GPIO 0: %08x",(unsigned int)PDAT(0));
142 _DEBUG_PRINTF("GPIO 1: %08x",(unsigned int)PDAT(1)); 142 _DEBUG_PRINTF("GPIO 1: %08x",(unsigned int)PDAT(1));
143 _DEBUG_PRINTF("GPIO 2: %08x",(unsigned int)PDAT(2)); 143 _DEBUG_PRINTF("GPIO 2: %08x",(unsigned int)PDAT(2));
144 _DEBUG_PRINTF("GPIO 3: %08x",(unsigned int)PDAT(3)); 144 _DEBUG_PRINTF("GPIO 3: %08x",(unsigned int)PDAT(3));
145 _DEBUG_PRINTF("GPIO 4: %08x",(unsigned int)PDAT(4)); 145 _DEBUG_PRINTF("GPIO 4: %08x",(unsigned int)PDAT(4));
146 _DEBUG_PRINTF("GPIO 5: %08x",(unsigned int)PDAT(5)); 146 _DEBUG_PRINTF("GPIO 5: %08x",(unsigned int)PDAT(5));
147 _DEBUG_PRINTF("GPIO 6: %08x",(unsigned int)PDAT(6)); 147 _DEBUG_PRINTF("GPIO 6: %08x",(unsigned int)PDAT(6));
148 _DEBUG_PRINTF("GPIO 7: %08x",(unsigned int)PDAT(7)); 148 _DEBUG_PRINTF("GPIO 7: %08x",(unsigned int)PDAT(7));
149 _DEBUG_PRINTF("GPIO 8: %08x",(unsigned int)PDAT(8)); 149 _DEBUG_PRINTF("GPIO 8: %08x",(unsigned int)PDAT(8));
150 _DEBUG_PRINTF("GPIO 9: %08x",(unsigned int)PDAT(9)); 150 _DEBUG_PRINTF("GPIO 9: %08x",(unsigned int)PDAT(9));
151 _DEBUG_PRINTF("GPIO 10: %08x",(unsigned int)PDAT(10)); 151 _DEBUG_PRINTF("GPIO 10: %08x",(unsigned int)PDAT(10));
152 _DEBUG_PRINTF("GPIO 11: %08x",(unsigned int)PDAT(11)); 152 _DEBUG_PRINTF("GPIO 11: %08x",(unsigned int)PDAT(11));
153 _DEBUG_PRINTF("GPIO 12: %08x",(unsigned int)PDAT(12)); 153 _DEBUG_PRINTF("GPIO 12: %08x",(unsigned int)PDAT(12));
154 _DEBUG_PRINTF("GPIO 13: %08x",(unsigned int)PDAT(13)); 154 _DEBUG_PRINTF("GPIO 13: %08x",(unsigned int)PDAT(13));
155 _DEBUG_PRINTF("GPIO 14: %08x",(unsigned int)PDAT(14)); 155 _DEBUG_PRINTF("GPIO 14: %08x",(unsigned int)PDAT(14));
156 _DEBUG_PRINTF("GPIO 15: %08x",(unsigned int)PDAT(15)); 156 _DEBUG_PRINTF("GPIO 15: %08x",(unsigned int)PDAT(15));
157 _DEBUG_PRINTF("USEC : %08x",(unsigned int)USEC_TIMER); 157 _DEBUG_PRINTF("USEC : %08x",(unsigned int)USEC_TIMER);
158 158
159 lcd_update(); 159 lcd_update();
160 if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL)) 160 if (button_get_w_tmo(HZ/10) == (DEBUG_CANCEL|BUTTON_REL))
161 break; 161 break;
162 } 162 }
163 lcd_setfont(FONT_UI); 163 lcd_setfont(FONT_UI);
164 return false; 164 return false;
165} 165}
166 166
diff --git a/firmware/target/arm/s5l8702/debug-target.h b/firmware/target/arm/s5l8702/debug-target.h
index 55ea497f00..a493c0e3dd 100644
--- a/firmware/target/arm/s5l8702/debug-target.h
+++ b/firmware/target/arm/s5l8702/debug-target.h
@@ -1,33 +1,33 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: debug-target.h 28522 2010-11-06 14:24:25Z wodz $ 8 * $Id: debug-target.h 28522 2010-11-06 14:24:25Z wodz $
9 * 9 *
10 * Copyright (C) 2007 by Karl Kurbjun 10 * Copyright (C) 2007 by Karl Kurbjun
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21 21
22#ifndef _DEBUG_TARGET_H_ 22#ifndef _DEBUG_TARGET_H_
23#define _DEBUG_TARGET_H_ 23#define _DEBUG_TARGET_H_
24 24
25#include <stdbool.h> 25#include <stdbool.h>
26 26
27#define DEBUG_CANCEL BUTTON_MENU 27#define DEBUG_CANCEL BUTTON_MENU
28 28
29bool dbg_hw_info(void); 29bool dbg_hw_info(void);
30bool dbg_ports(void); 30bool dbg_ports(void);
31 31
32#endif /* _DEBUG_TARGET_H_ */ 32#endif /* _DEBUG_TARGET_H_ */
33 33
diff --git a/firmware/target/arm/s5l8702/i2c-s5l8702.c b/firmware/target/arm/s5l8702/i2c-s5l8702.c
index 294e5b58ce..4d0e4188ab 100644
--- a/firmware/target/arm/s5l8702/i2c-s5l8702.c
+++ b/firmware/target/arm/s5l8702/i2c-s5l8702.c
@@ -1,196 +1,196 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: i2c-s5l8700.c 28589 2010-11-14 15:19:30Z theseven $ 8 * $Id: i2c-s5l8700.c 28589 2010-11-14 15:19:30Z theseven $
9 * 9 *
10 * Copyright (C) 2009 by Bertrik Sikken 10 * Copyright (C) 2009 by Bertrik Sikken
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21 21
22#include "config.h" 22#include "config.h"
23#include "system.h" 23#include "system.h"
24#include "kernel.h" 24#include "kernel.h"
25#include "i2c-s5l8702.h" 25#include "i2c-s5l8702.h"
26 26
27/* Driver for the s5l8700 built-in I2C controller in master mode 27/* Driver for the s5l8700 built-in I2C controller in master mode
28 28
29 Both the i2c_read and i2c_write function take the following arguments: 29 Both the i2c_read and i2c_write function take the following arguments:
30 * slave, the address of the i2c slave device to read from / write to 30 * slave, the address of the i2c slave device to read from / write to
31 * address, optional sub-address in the i2c slave (unused if -1) 31 * address, optional sub-address in the i2c slave (unused if -1)
32 * len, number of bytes to be transfered 32 * len, number of bytes to be transfered
33 * data, pointer to data to be transfered 33 * data, pointer to data to be transfered
34 A return value < 0 indicates an error. 34 A return value < 0 indicates an error.
35 35
36 Note: 36 Note:
37 * blocks the calling thread for the entire duraton of the i2c transfer but 37 * blocks the calling thread for the entire duraton of the i2c transfer but
38 uses wakeup_wait/wakeup_signal to allow other threads to run. 38 uses wakeup_wait/wakeup_signal to allow other threads to run.
39 * ACK from slave is not checked, so functions never return an error 39 * ACK from slave is not checked, so functions never return an error
40*/ 40*/
41 41
42static struct mutex i2c_mtx[2]; 42static struct mutex i2c_mtx[2];
43 43
44static void i2c_on(int bus) 44static void i2c_on(int bus)
45{ 45{
46 /* enable I2C clock */ 46 /* enable I2C clock */
47 PWRCON(1) &= ~(1 << 4); 47 PWRCON(1) &= ~(1 << 4);
48 48
49 IICCON(bus) = (1 << 7) | /* ACK_GEN */ 49 IICCON(bus) = (1 << 7) | /* ACK_GEN */
50 (0 << 6) | /* CLKSEL = PCLK/16 */ 50 (0 << 6) | /* CLKSEL = PCLK/16 */
51 (1 << 5) | /* INT_EN */ 51 (1 << 5) | /* INT_EN */
52 (1 << 4) | /* IRQ clear */ 52 (1 << 4) | /* IRQ clear */
53 (7 << 0); /* CK_REG */ 53 (7 << 0); /* CK_REG */
54 54
55 /* serial output on */ 55 /* serial output on */
56 IICSTAT(bus) = (1 << 4); 56 IICSTAT(bus) = (1 << 4);
57} 57}
58 58
59static void i2c_off(int bus) 59static void i2c_off(int bus)
60{ 60{
61 /* serial output off */ 61 /* serial output off */
62 IICSTAT(bus) = 0; 62 IICSTAT(bus) = 0;
63 63
64 /* disable I2C clock */ 64 /* disable I2C clock */
65 PWRCON(1) |= (1 << 4); 65 PWRCON(1) |= (1 << 4);
66} 66}
67 67
68void i2c_init() 68void i2c_init()
69{ 69{
70 mutex_init(&i2c_mtx[0]); 70 mutex_init(&i2c_mtx[0]);
71 mutex_init(&i2c_mtx[1]); 71 mutex_init(&i2c_mtx[1]);
72} 72}
73 73
74int i2c_write(int bus, unsigned char slave, int address, int len, const unsigned char *data) 74int i2c_write(int bus, unsigned char slave, int address, int len, const unsigned char *data)
75{ 75{
76 mutex_lock(&i2c_mtx[bus]); 76 mutex_lock(&i2c_mtx[bus]);
77 i2c_on(bus); 77 i2c_on(bus);
78 long timeout = current_tick + HZ / 50; 78 long timeout = current_tick + HZ / 50;
79 79
80 /* START */ 80 /* START */
81 IICDS(bus) = slave & ~1; 81 IICDS(bus) = slave & ~1;
82 IICSTAT(bus) = 0xF0; 82 IICSTAT(bus) = 0xF0;
83 IICCON(bus) = 0xB3; 83 IICCON(bus) = 0xB3;
84 while ((IICCON(bus) & 0x10) == 0) 84 while ((IICCON(bus) & 0x10) == 0)
85 if (TIME_AFTER(current_tick, timeout)) 85 if (TIME_AFTER(current_tick, timeout))
86 { 86 {
87 mutex_unlock(&i2c_mtx[bus]); 87 mutex_unlock(&i2c_mtx[bus]);
88 return 1; 88 return 1;
89 } 89 }
90 90
91 91
92 if (address >= 0) { 92 if (address >= 0) {
93 /* write address */ 93 /* write address */
94 IICDS(bus) = address; 94 IICDS(bus) = address;
95 IICCON(bus) = 0xB3; 95 IICCON(bus) = 0xB3;
96 while ((IICCON(bus) & 0x10) == 0) 96 while ((IICCON(bus) & 0x10) == 0)
97 if (TIME_AFTER(current_tick, timeout)) 97 if (TIME_AFTER(current_tick, timeout))
98 { 98 {
99 mutex_unlock(&i2c_mtx[bus]); 99 mutex_unlock(&i2c_mtx[bus]);
100 return 2; 100 return 2;
101 } 101 }
102 } 102 }
103 103
104 /* write data */ 104 /* write data */
105 while (len--) { 105 while (len--) {
106 IICDS(bus) = *data++; 106 IICDS(bus) = *data++;
107 IICCON(bus) = 0xB3; 107 IICCON(bus) = 0xB3;
108 while ((IICCON(bus) & 0x10) == 0) 108 while ((IICCON(bus) & 0x10) == 0)
109 if (TIME_AFTER(current_tick, timeout)) 109 if (TIME_AFTER(current_tick, timeout))
110 { 110 {
111 mutex_unlock(&i2c_mtx[bus]); 111 mutex_unlock(&i2c_mtx[bus]);
112 return 4; 112 return 4;
113 } 113 }
114 } 114 }
115 115
116 /* STOP */ 116 /* STOP */
117 IICSTAT(bus) = 0xD0; 117 IICSTAT(bus) = 0xD0;
118 IICCON(bus) = 0xB3; 118 IICCON(bus) = 0xB3;
119 while ((IICSTAT(bus) & (1 << 5)) != 0) 119 while ((IICSTAT(bus) & (1 << 5)) != 0)
120 if (TIME_AFTER(current_tick, timeout)) 120 if (TIME_AFTER(current_tick, timeout))
121 { 121 {
122 mutex_unlock(&i2c_mtx[bus]); 122 mutex_unlock(&i2c_mtx[bus]);
123 return 5; 123 return 5;
124 } 124 }
125 125
126 i2c_off(bus); 126 i2c_off(bus);
127 mutex_unlock(&i2c_mtx[bus]); 127 mutex_unlock(&i2c_mtx[bus]);
128 return 0; 128 return 0;
129} 129}
130 130
131int i2c_read(int bus, unsigned char slave, int address, int len, unsigned char *data) 131int i2c_read(int bus, unsigned char slave, int address, int len, unsigned char *data)
132{ 132{
133 mutex_lock(&i2c_mtx[bus]); 133 mutex_lock(&i2c_mtx[bus]);
134 i2c_on(bus); 134 i2c_on(bus);
135 long timeout = current_tick + HZ / 50; 135 long timeout = current_tick + HZ / 50;
136 136
137 if (address >= 0) { 137 if (address >= 0) {
138 /* START */ 138 /* START */
139 IICDS(bus) = slave & ~1; 139 IICDS(bus) = slave & ~1;
140 IICSTAT(bus) = 0xF0; 140 IICSTAT(bus) = 0xF0;
141 IICCON(bus) = 0xB3; 141 IICCON(bus) = 0xB3;
142 while ((IICCON(bus) & 0x10) == 0) 142 while ((IICCON(bus) & 0x10) == 0)
143 if (TIME_AFTER(current_tick, timeout)) 143 if (TIME_AFTER(current_tick, timeout))
144 { 144 {
145 mutex_unlock(&i2c_mtx[bus]); 145 mutex_unlock(&i2c_mtx[bus]);
146 return 1; 146 return 1;
147 } 147 }
148 148
149 /* write address */ 149 /* write address */
150 IICDS(bus) = address; 150 IICDS(bus) = address;
151 IICCON(bus) = 0xB3; 151 IICCON(bus) = 0xB3;
152 while ((IICCON(bus) & 0x10) == 0) 152 while ((IICCON(bus) & 0x10) == 0)
153 if (TIME_AFTER(current_tick, timeout)) 153 if (TIME_AFTER(current_tick, timeout))
154 { 154 {
155 mutex_unlock(&i2c_mtx[bus]); 155 mutex_unlock(&i2c_mtx[bus]);
156 return 2; 156 return 2;
157 } 157 }
158 } 158 }
159 159
160 /* (repeated) START */ 160 /* (repeated) START */
161 IICDS(bus) = slave | 1; 161 IICDS(bus) = slave | 1;
162 IICSTAT(bus) = 0xB0; 162 IICSTAT(bus) = 0xB0;
163 IICCON(bus) = 0xB3; 163 IICCON(bus) = 0xB3;
164 while ((IICCON(bus) & 0x10) == 0) 164 while ((IICCON(bus) & 0x10) == 0)
165 if (TIME_AFTER(current_tick, timeout)) 165 if (TIME_AFTER(current_tick, timeout))
166 { 166 {
167 mutex_unlock(&i2c_mtx[bus]); 167 mutex_unlock(&i2c_mtx[bus]);
168 return 3; 168 return 3;
169 } 169 }
170 170
171 while (len--) { 171 while (len--) {
172 IICCON(bus) = (len == 0) ? 0x33 : 0xB3; /* NAK or ACK */ 172 IICCON(bus) = (len == 0) ? 0x33 : 0xB3; /* NAK or ACK */
173 while ((IICCON(bus) & 0x10) == 0) 173 while ((IICCON(bus) & 0x10) == 0)
174 if (TIME_AFTER(current_tick, timeout)) 174 if (TIME_AFTER(current_tick, timeout))
175 { 175 {
176 mutex_unlock(&i2c_mtx[bus]); 176 mutex_unlock(&i2c_mtx[bus]);
177 return 4; 177 return 4;
178 } 178 }
179 *data++ = IICDS(bus); 179 *data++ = IICDS(bus);
180 } 180 }
181 181
182 /* STOP */ 182 /* STOP */
183 IICSTAT(bus) = 0x90; 183 IICSTAT(bus) = 0x90;
184 IICCON(bus) = 0xB3; 184 IICCON(bus) = 0xB3;
185 while ((IICSTAT(bus) & (1 << 5)) != 0) 185 while ((IICSTAT(bus) & (1 << 5)) != 0)
186 if (TIME_AFTER(current_tick, timeout)) 186 if (TIME_AFTER(current_tick, timeout))
187 { 187 {
188 mutex_unlock(&i2c_mtx[bus]); 188 mutex_unlock(&i2c_mtx[bus]);
189 return 5; 189 return 5;
190 } 190 }
191 191
192 i2c_off(bus); 192 i2c_off(bus);
193 mutex_unlock(&i2c_mtx[bus]); 193 mutex_unlock(&i2c_mtx[bus]);
194 return 0; 194 return 0;
195} 195}
196 196
diff --git a/firmware/target/arm/s5l8702/kernel-s5l8702.c b/firmware/target/arm/s5l8702/kernel-s5l8702.c
index 7c5a697043..af54e4dca4 100644
--- a/firmware/target/arm/s5l8702/kernel-s5l8702.c
+++ b/firmware/target/arm/s5l8702/kernel-s5l8702.c
@@ -1,56 +1,56 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: kernel-s5l8700.c 28795 2010-12-11 17:52:52Z Buschel $ 8 * $Id: kernel-s5l8700.c 28795 2010-12-11 17:52:52Z Buschel $
9 * 9 *
10 * Copyright © 2009 Bertrik Sikken 10 * Copyright © 2009 Bertrik Sikken
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#include "config.h" 21#include "config.h"
22#include "system.h" 22#include "system.h"
23#include "kernel.h" 23#include "kernel.h"
24 24
25/* S5L8702 driver for the kernel timer 25/* S5L8702 driver for the kernel timer
26 26
27 Timer B is configured as a 10 kHz timer 27 Timer B is configured as a 10 kHz timer
28 */ 28 */
29 29
30void INT_TIMERB(void) 30void INT_TIMERB(void)
31{ 31{
32 /* clear interrupt */ 32 /* clear interrupt */
33 TBCON = TBCON; 33 TBCON = TBCON;
34 34
35 call_tick_tasks(); /* Run through the list of tick tasks */ 35 call_tick_tasks(); /* Run through the list of tick tasks */
36} 36}
37 37
38void tick_start(unsigned int interval_in_ms) 38void tick_start(unsigned int interval_in_ms)
39{ 39{
40 int cycles = 10 * interval_in_ms; 40 int cycles = 10 * interval_in_ms;
41 41
42 /* configure timer for 10 kHz */ 42 /* configure timer for 10 kHz */
43 TBCMD = (1 << 1); /* TB_CLR */ 43 TBCMD = (1 << 1); /* TB_CLR */
44 TBPRE = 337 - 1; /* prescaler */ 44 TBPRE = 337 - 1; /* prescaler */
45 TBCON = (0 << 13) | /* TB_INT1_EN */ 45 TBCON = (0 << 13) | /* TB_INT1_EN */
46 (1 << 12) | /* TB_INT0_EN */ 46 (1 << 12) | /* TB_INT0_EN */
47 (0 << 11) | /* TB_START */ 47 (0 << 11) | /* TB_START */
48 (2 << 8) | /* TB_CS = PCLK / 16 */ 48 (2 << 8) | /* TB_CS = PCLK / 16 */
49 (0 << 4); /* TB_MODE_SEL = interval mode */ 49 (0 << 4); /* TB_MODE_SEL = interval mode */
50 TBDATA0 = cycles; /* set interval period */ 50 TBDATA0 = cycles; /* set interval period */
51 TBCMD = (1 << 0); /* TB_EN */ 51 TBCMD = (1 << 0); /* TB_EN */
52 52
53 /* enable timer interrupt */ 53 /* enable timer interrupt */
54 VIC0INTENABLE = 1 << IRQ_TIMER; 54 VIC0INTENABLE = 1 << IRQ_TIMER;
55} 55}
56 56
diff --git a/firmware/target/arm/s5l8702/pcm-s5l8702.c b/firmware/target/arm/s5l8702/pcm-s5l8702.c
index c3df77f14f..6461418744 100644
--- a/firmware/target/arm/s5l8702/pcm-s5l8702.c
+++ b/firmware/target/arm/s5l8702/pcm-s5l8702.c
@@ -1,228 +1,228 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: pcm-s5l8700.c 28600 2010-11-14 19:49:20Z Buschel $ 8 * $Id: pcm-s5l8700.c 28600 2010-11-14 19:49:20Z Buschel $
9 * 9 *
10 * Copyright © 2011 Michael Sparmann 10 * Copyright © 2011 Michael Sparmann
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#include <string.h> 21#include <string.h>
22 22
23#include "config.h" 23#include "config.h"
24#include "system.h" 24#include "system.h"
25#include "audio.h" 25#include "audio.h"
26#include "s5l8702.h" 26#include "s5l8702.h"
27#include "panic.h" 27#include "panic.h"
28#include "audiohw.h" 28#include "audiohw.h"
29#include "pcm.h" 29#include "pcm.h"
30#include "pcm-internal.h" 30#include "pcm-internal.h"
31#include "pcm_sampr.h" 31#include "pcm_sampr.h"
32#include "mmu-arm.h" 32#include "mmu-arm.h"
33#include "pcm-target.h" 33#include "pcm-target.h"
34 34
35static volatile int locked = 0; 35static volatile int locked = 0;
36static const int zerosample = 0; 36static const int zerosample = 0;
37static unsigned char dblbuf[2][PCM_WATERMARK * 4]; 37static unsigned char dblbuf[2][PCM_WATERMARK * 4];
38static int active_dblbuf; 38static int active_dblbuf;
39struct dma_lli pcm_lli[PCM_LLICOUNT] __attribute__((aligned(16))); 39struct dma_lli pcm_lli[PCM_LLICOUNT] __attribute__((aligned(16)));
40static struct dma_lli* lastlli; 40static struct dma_lli* lastlli;
41static const unsigned char* dataptr; 41static const unsigned char* dataptr;
42size_t pcm_remaining; 42size_t pcm_remaining;
43size_t pcm_chunksize; 43size_t pcm_chunksize;
44 44
45/* Mask the DMA interrupt */ 45/* Mask the DMA interrupt */
46void pcm_play_lock(void) 46void pcm_play_lock(void)
47{ 47{
48 if (locked++ == 0) { 48 if (locked++ == 0) {
49 //TODO: Urgh, I don't like that at all... 49 //TODO: Urgh, I don't like that at all...
50 VIC0INTENCLEAR = 1 << IRQ_DMAC0; 50 VIC0INTENCLEAR = 1 << IRQ_DMAC0;
51 } 51 }
52} 52}
53 53
54/* Unmask the DMA interrupt if enabled */ 54/* Unmask the DMA interrupt if enabled */
55void pcm_play_unlock(void) 55void pcm_play_unlock(void)
56{ 56{
57 if (--locked == 0) { 57 if (--locked == 0) {
58 VIC0INTENABLE = 1 << IRQ_DMAC0; 58 VIC0INTENABLE = 1 << IRQ_DMAC0;
59 } 59 }
60} 60}
61 61
62void INT_DMAC0C0(void) ICODE_ATTR; 62void INT_DMAC0C0(void) ICODE_ATTR;
63void INT_DMAC0C0(void) 63void INT_DMAC0C0(void)
64{ 64{
65 DMAC0INTTCCLR = 1; 65 DMAC0INTTCCLR = 1;
66 if (!pcm_remaining) 66 if (!pcm_remaining)
67 { 67 {
68 pcm_play_get_more_callback((void**)&dataptr, &pcm_remaining); 68 pcm_play_get_more_callback((void**)&dataptr, &pcm_remaining);
69 pcm_chunksize = pcm_remaining; 69 pcm_chunksize = pcm_remaining;
70 } 70 }
71 if (!pcm_remaining) 71 if (!pcm_remaining)
72 { 72 {
73 pcm_lli->nextlli = NULL; 73 pcm_lli->nextlli = NULL;
74 pcm_lli->control = 0x75249000; 74 pcm_lli->control = 0x75249000;
75 clean_dcache(); 75 clean_dcache();
76 return; 76 return;
77 } 77 }
78 uint32_t lastsize = MIN(PCM_WATERMARK * 4, pcm_remaining / 2 + 1) & ~1; 78 uint32_t lastsize = MIN(PCM_WATERMARK * 4, pcm_remaining / 2 + 1) & ~1;
79 pcm_remaining -= lastsize; 79 pcm_remaining -= lastsize;
80 if (pcm_remaining) lastlli = &pcm_lli[ARRAYLEN(pcm_lli) - 1]; 80 if (pcm_remaining) lastlli = &pcm_lli[ARRAYLEN(pcm_lli) - 1];
81 else lastlli = pcm_lli; 81 else lastlli = pcm_lli;
82 uint32_t chunksize = MIN(PCM_CHUNKSIZE * 4 - lastsize, pcm_remaining); 82 uint32_t chunksize = MIN(PCM_CHUNKSIZE * 4 - lastsize, pcm_remaining);
83 if (pcm_remaining > chunksize && chunksize > pcm_remaining - PCM_WATERMARK * 8) 83 if (pcm_remaining > chunksize && chunksize > pcm_remaining - PCM_WATERMARK * 8)
84 chunksize = pcm_remaining - PCM_WATERMARK * 8; 84 chunksize = pcm_remaining - PCM_WATERMARK * 8;
85 pcm_remaining -= chunksize; 85 pcm_remaining -= chunksize;
86 bool last = !chunksize; 86 bool last = !chunksize;
87 int i = 0; 87 int i = 0;
88 while (chunksize) 88 while (chunksize)
89 { 89 {
90 uint32_t thislli = MIN(PCM_LLIMAX * 4, chunksize); 90 uint32_t thislli = MIN(PCM_LLIMAX * 4, chunksize);
91 chunksize -= thislli; 91 chunksize -= thislli;
92 pcm_lli[i].srcaddr = (void*)dataptr; 92 pcm_lli[i].srcaddr = (void*)dataptr;
93 pcm_lli[i].dstaddr = (void*)((int)&I2STXDB0); 93 pcm_lli[i].dstaddr = (void*)((int)&I2STXDB0);
94 pcm_lli[i].nextlli = chunksize ? &pcm_lli[i + 1] : lastlli; 94 pcm_lli[i].nextlli = chunksize ? &pcm_lli[i + 1] : lastlli;
95 pcm_lli[i].control = (chunksize ? 0x75249000 : 0xf5249000) | (thislli / 2); 95 pcm_lli[i].control = (chunksize ? 0x75249000 : 0xf5249000) | (thislli / 2);
96 dataptr += thislli; 96 dataptr += thislli;
97 i++; 97 i++;
98 } 98 }
99 if (!pcm_remaining) 99 if (!pcm_remaining)
100 { 100 {
101 memcpy(dblbuf[active_dblbuf], dataptr, lastsize); 101 memcpy(dblbuf[active_dblbuf], dataptr, lastsize);
102 lastlli->srcaddr = dblbuf[active_dblbuf]; 102 lastlli->srcaddr = dblbuf[active_dblbuf];
103 active_dblbuf ^= 1; 103 active_dblbuf ^= 1;
104 } 104 }
105 else lastlli->srcaddr = dataptr; 105 else lastlli->srcaddr = dataptr;
106 lastlli->dstaddr = (void*)((int)&I2STXDB0); 106 lastlli->dstaddr = (void*)((int)&I2STXDB0);
107 lastlli->nextlli = last ? NULL : pcm_lli; 107 lastlli->nextlli = last ? NULL : pcm_lli;
108 lastlli->control = (last ? 0xf5249000 : 0x75249000) | (lastsize / 2); 108 lastlli->control = (last ? 0xf5249000 : 0x75249000) | (lastsize / 2);
109 dataptr += lastsize; 109 dataptr += lastsize;
110 clean_dcache(); 110 clean_dcache();
111 if (!(DMAC0C0CONFIG & 1) && (pcm_lli[0].control & 0xfff)) 111 if (!(DMAC0C0CONFIG & 1) && (pcm_lli[0].control & 0xfff))
112 { 112 {
113 DMAC0C0LLI = pcm_lli[0]; 113 DMAC0C0LLI = pcm_lli[0];
114 DMAC0C0CONFIG = 0x8a81; 114 DMAC0C0CONFIG = 0x8a81;
115 } 115 }
116 else DMAC0C0NEXTLLI = pcm_lli; 116 else DMAC0C0NEXTLLI = pcm_lli;
117 117
118 pcm_play_dma_started_callback(); 118 pcm_play_dma_started_callback();
119} 119}
120 120
121void pcm_play_dma_start(const void* addr, size_t size) 121void pcm_play_dma_start(const void* addr, size_t size)
122{ 122{
123 dataptr = (const unsigned char*)addr; 123 dataptr = (const unsigned char*)addr;
124 pcm_remaining = size; 124 pcm_remaining = size;
125 I2STXCOM = 0xe; 125 I2STXCOM = 0xe;
126 DMAC0CONFIG |= 4; 126 DMAC0CONFIG |= 4;
127 INT_DMAC0C0(); 127 INT_DMAC0C0();
128} 128}
129 129
130void pcm_play_dma_stop(void) 130void pcm_play_dma_stop(void)
131{ 131{
132 DMAC0C0CONFIG = 0x8a80; 132 DMAC0C0CONFIG = 0x8a80;
133 I2STXCOM = 0xa; 133 I2STXCOM = 0xa;
134} 134}
135 135
136/* pause playback by disabling LRCK */ 136/* pause playback by disabling LRCK */
137void pcm_play_dma_pause(bool pause) 137void pcm_play_dma_pause(bool pause)
138{ 138{
139 if (pause) I2STXCOM |= 1; 139 if (pause) I2STXCOM |= 1;
140 else I2STXCOM &= ~1; 140 else I2STXCOM &= ~1;
141} 141}
142 142
143void pcm_play_dma_init(void) 143void pcm_play_dma_init(void)
144{ 144{
145 PWRCON(0) &= ~(1 << 4); 145 PWRCON(0) &= ~(1 << 4);
146 PWRCON(1) &= ~(1 << 7); 146 PWRCON(1) &= ~(1 << 7);
147 I2S40 = 0x110; 147 I2S40 = 0x110;
148 I2STXCON = 0xb100059; 148 I2STXCON = 0xb100059;
149 I2SCLKCON = 1; 149 I2SCLKCON = 1;
150 VIC0INTENABLE = 1 << IRQ_DMAC0; 150 VIC0INTENABLE = 1 << IRQ_DMAC0;
151 151
152 audiohw_preinit(); 152 audiohw_preinit();
153} 153}
154 154
155void pcm_play_dma_postinit(void) 155void pcm_play_dma_postinit(void)
156{ 156{
157 audiohw_postinit(); 157 audiohw_postinit();
158} 158}
159 159
160void pcm_dma_apply_settings(void) 160void pcm_dma_apply_settings(void)
161{ 161{
162} 162}
163 163
164size_t pcm_get_bytes_waiting(void) 164size_t pcm_get_bytes_waiting(void)
165{ 165{
166 int bytes = pcm_remaining; 166 int bytes = pcm_remaining;
167 const struct dma_lli* lli = (const struct dma_lli*)((int)&DMAC0C0LLI); 167 const struct dma_lli* lli = (const struct dma_lli*)((int)&DMAC0C0LLI);
168 while (lli) 168 while (lli)
169 { 169 {
170 bytes += (lli->control & 0xfff) * 2; 170 bytes += (lli->control & 0xfff) * 2;
171 if (lli == lastlli) break; 171 if (lli == lastlli) break;
172 lli = lli->nextlli; 172 lli = lli->nextlli;
173 } 173 }
174 return bytes; 174 return bytes;
175} 175}
176 176
177const void* pcm_play_dma_get_peak_buffer(int *count) 177const void* pcm_play_dma_get_peak_buffer(int *count)
178{ 178{
179 *count = (DMAC0C0LLI.control & 0xfff) * 2; 179 *count = (DMAC0C0LLI.control & 0xfff) * 2;
180 return (void*)(((uint32_t)DMAC0C0LLI.srcaddr) & ~3); 180 return (void*)(((uint32_t)DMAC0C0LLI.srcaddr) & ~3);
181} 181}
182 182
183#ifdef HAVE_PCM_DMA_ADDRESS 183#ifdef HAVE_PCM_DMA_ADDRESS
184void * pcm_dma_addr(void *addr) 184void * pcm_dma_addr(void *addr)
185{ 185{
186 return addr; 186 return addr;
187} 187}
188#endif 188#endif
189 189
190 190
191/**************************************************************************** 191/****************************************************************************
192 ** Recording DMA transfer 192 ** Recording DMA transfer
193 **/ 193 **/
194#ifdef HAVE_RECORDING 194#ifdef HAVE_RECORDING
195void pcm_rec_lock(void) 195void pcm_rec_lock(void)
196{ 196{
197} 197}
198 198
199void pcm_rec_unlock(void) 199void pcm_rec_unlock(void)
200{ 200{
201} 201}
202 202
203void pcm_rec_dma_stop(void) 203void pcm_rec_dma_stop(void)
204{ 204{
205} 205}
206 206
207void pcm_rec_dma_start(void *addr, size_t size) 207void pcm_rec_dma_start(void *addr, size_t size)
208{ 208{
209 (void)addr; 209 (void)addr;
210 (void)size; 210 (void)size;
211} 211}
212 212
213void pcm_rec_dma_close(void) 213void pcm_rec_dma_close(void)
214{ 214{
215} 215}
216 216
217 217
218void pcm_rec_dma_init(void) 218void pcm_rec_dma_init(void)
219{ 219{
220} 220}
221 221
222 222
223const void * pcm_rec_dma_get_peak_buffer(void) 223const void * pcm_rec_dma_get_peak_buffer(void)
224{ 224{
225 return NULL; 225 return NULL;
226} 226}
227 227
228#endif /* HAVE_RECORDING */ 228#endif /* HAVE_RECORDING */
diff --git a/firmware/target/arm/s5l8702/pcm-target.h b/firmware/target/arm/s5l8702/pcm-target.h
index 1b149a6e0b..aefb64e328 100644
--- a/firmware/target/arm/s5l8702/pcm-target.h
+++ b/firmware/target/arm/s5l8702/pcm-target.h
@@ -1,40 +1,40 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: system-target.h 28791 2010-12-11 09:39:33Z Buschel $ 8 * $Id: system-target.h 28791 2010-12-11 09:39:33Z Buschel $
9 * 9 *
10 * Copyright (C) 2010 by Michael Sparmann 10 * Copyright (C) 2010 by Michael Sparmann
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#ifndef __PCM_TARGET_H__ 21#ifndef __PCM_TARGET_H__
22#define __PCM_TARGET_H__ 22#define __PCM_TARGET_H__
23 23
24 24
25/* S5L8702 PCM driver tunables: */ 25/* S5L8702 PCM driver tunables: */
26#define PCM_LLIMAX (2047) /* Maximum number of samples per LLI */ 26#define PCM_LLIMAX (2047) /* Maximum number of samples per LLI */
27#define PCM_CHUNKSIZE (10747) /* Maximum number of samples to handle with one IRQ */ 27#define PCM_CHUNKSIZE (10747) /* Maximum number of samples to handle with one IRQ */
28 /* (bigger chunks will be segmented internally) */ 28 /* (bigger chunks will be segmented internally) */
29#define PCM_WATERMARK (512) /* Number of remaining samples to schedule IRQ at */ 29#define PCM_WATERMARK (512) /* Number of remaining samples to schedule IRQ at */
30 30
31 31
32#define PCM_LLICOUNT ((PCM_CHUNKSIZE - PCM_WATERMARK + PCM_LLIMAX - 1) / PCM_LLIMAX + 1) 32#define PCM_LLICOUNT ((PCM_CHUNKSIZE - PCM_WATERMARK + PCM_LLIMAX - 1) / PCM_LLIMAX + 1)
33 33
34 34
35extern struct dma_lli pcm_lli[PCM_LLICOUNT]; 35extern struct dma_lli pcm_lli[PCM_LLICOUNT];
36extern size_t pcm_remaining; 36extern size_t pcm_remaining;
37extern size_t pcm_chunksize; 37extern size_t pcm_chunksize;
38 38
39 39
40#endif /* __PCM_TARGET_H__ */ 40#endif /* __PCM_TARGET_H__ */
diff --git a/firmware/target/arm/s5l8702/system-target.h b/firmware/target/arm/s5l8702/system-target.h
index 30e53ad6ea..799efb7006 100644
--- a/firmware/target/arm/s5l8702/system-target.h
+++ b/firmware/target/arm/s5l8702/system-target.h
@@ -1,47 +1,47 @@
1/*************************************************************************** 1/***************************************************************************
2 * __________ __ ___. 2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: system-target.h 28791 2010-12-11 09:39:33Z Buschel $ 8 * $Id: system-target.h 28791 2010-12-11 09:39:33Z Buschel $
9 * 9 *
10 * Copyright (C) 2007 by Dave Chapman 10 * Copyright (C) 2007 by Dave Chapman
11 * 11 *
12 * This program is free software; you can redistribute it and/or 12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License 13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2 14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version. 15 * of the License, or (at your option) any later version.
16 * 16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied. 18 * KIND, either express or implied.
19 * 19 *
20 ****************************************************************************/ 20 ****************************************************************************/
21#ifndef SYSTEM_TARGET_H 21#ifndef SYSTEM_TARGET_H
22#define SYSTEM_TARGET_H 22#define SYSTEM_TARGET_H
23 23
24#include "system-arm.h" 24#include "system-arm.h"
25#include "mmu-arm.h" 25#include "mmu-arm.h"
26 26
27#define CPUFREQ_SLEEP 32768 27#define CPUFREQ_SLEEP 32768
28#define CPUFREQ_MAX 216000000 28#define CPUFREQ_MAX 216000000
29#define CPUFREQ_DEFAULT 108000000 29#define CPUFREQ_DEFAULT 108000000
30#define CPUFREQ_NORMAL 108000000 30#define CPUFREQ_NORMAL 108000000
31 31
32#define STORAGE_WANTS_ALIGN 32#define STORAGE_WANTS_ALIGN
33 33
34#define inl(a) (*(volatile unsigned long *) (a)) 34#define inl(a) (*(volatile unsigned long *) (a))
35#define outl(a,b) (*(volatile unsigned long *) (b) = (a)) 35#define outl(a,b) (*(volatile unsigned long *) (b) = (a))
36#define inb(a) (*(volatile unsigned char *) (a)) 36#define inb(a) (*(volatile unsigned char *) (a))
37#define outb(a,b) (*(volatile unsigned char *) (b) = (a)) 37#define outb(a,b) (*(volatile unsigned char *) (b) = (a))
38#define inw(a) (*(volatile unsigned short*) (a)) 38#define inw(a) (*(volatile unsigned short*) (a))
39#define outw(a,b) (*(volatile unsigned short*) (b) = (a)) 39#define outw(a,b) (*(volatile unsigned short*) (b) = (a))
40 40
41static inline void udelay(unsigned usecs) 41static inline void udelay(unsigned usecs)
42{ 42{
43 unsigned stop = USEC_TIMER + usecs; 43 unsigned stop = USEC_TIMER + usecs;
44 while (TIME_BEFORE(USEC_TIMER, stop)); 44 while (TIME_BEFORE(USEC_TIMER, stop));
45} 45}
46 46
47#endif /* SYSTEM_TARGET_H */ 47#endif /* SYSTEM_TARGET_H */
diff --git a/firmware/target/arm/s5l8702/timer-s5l8702.c b/firmware/target/arm/s5l8702/timer-s5l8702.c
index fb56a9ffcf..61d4d590e4 100644
--- a/firmware/target/arm/s5l8702/timer-s5l8702.c
+++ b/firmware/target/arm/s5l8702/timer-s5l8702.c
@@ -1,94 +1,94 @@
1/*************************************************************************** 1/***************************************************************************
2* __________ __ ___. 2* __________ __ ___.
3* Open \______ \ ____ ____ | | _\_ |__ _______ ___ 3* Open \______ \ ____ ____ | | _\_ |__ _______ ___
4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 4* Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7* \/ \/ \/ \/ \/ 7* \/ \/ \/ \/ \/
8* $Id: timer-s5l8700.c 23103 2009-10-11 11:35:14Z theseven $ 8* $Id: timer-s5l8700.c 23103 2009-10-11 11:35:14Z theseven $
9* 9*
10* Copyright (C) 2009 Bertrik Sikken 10* Copyright (C) 2009 Bertrik Sikken
11* 11*
12* This program is free software; you can redistribute it and/or 12* This program is free software; you can redistribute it and/or
13* modify it under the terms of the GNU General Public License 13* modify it under the terms of the GNU General Public License
14* as published by the Free Software Foundation; either version 2 14* as published by the Free Software Foundation; either version 2
15* of the License, or (at your option) any later version. 15* of the License, or (at your option) any later version.
16* 16*
17* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 17* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18* KIND, either express or implied. 18* KIND, either express or implied.
19* 19*
20****************************************************************************/ 20****************************************************************************/
21 21
22#include "config.h" 22#include "config.h"
23 23
24#include "inttypes.h" 24#include "inttypes.h"
25#include "s5l8702.h" 25#include "s5l8702.h"
26#include "system.h" 26#include "system.h"
27#include "timer.h" 27#include "timer.h"
28 28
29//TODO: This needs calibration once we figure out the clocking 29//TODO: This needs calibration once we figure out the clocking
30 30
31void INT_TIMERC(void) 31void INT_TIMERC(void)
32{ 32{
33 /* clear interrupt */ 33 /* clear interrupt */
34 TCCON = TCCON; 34 TCCON = TCCON;
35 35
36 if (pfn_timer != NULL) { 36 if (pfn_timer != NULL) {
37 pfn_timer(); 37 pfn_timer();
38 } 38 }
39} 39}
40 40
41bool timer_set(long cycles, bool start) 41bool timer_set(long cycles, bool start)
42{ 42{
43 static const int cs_table[] = {1, 2, 4, 6}; 43 static const int cs_table[] = {1, 2, 4, 6};
44 int prescale, cs; 44 int prescale, cs;
45 long count; 45 long count;
46 46
47 /* stop and clear timer */ 47 /* stop and clear timer */
48 TCCMD = (1 << 1); /* TD_CLR */ 48 TCCMD = (1 << 1); /* TD_CLR */
49 49
50 /* optionally unregister any previously registered timer user */ 50 /* optionally unregister any previously registered timer user */
51 if (start) { 51 if (start) {
52 if (pfn_unregister != NULL) { 52 if (pfn_unregister != NULL) {
53 pfn_unregister(); 53 pfn_unregister();
54 pfn_unregister = NULL; 54 pfn_unregister = NULL;
55 } 55 }
56 } 56 }
57 57
58 /* scale the count down with the clock select */ 58 /* scale the count down with the clock select */
59 for (cs = 0; cs < 4; cs++) { 59 for (cs = 0; cs < 4; cs++) {
60 count = cycles >> cs_table[cs]; 60 count = cycles >> cs_table[cs];
61 if ((count < 65536) || (cs == 3)) { 61 if ((count < 65536) || (cs == 3)) {
62 break; 62 break;
63 } 63 }
64 } 64 }
65 65
66 /* scale the count down with the prescaler */ 66 /* scale the count down with the prescaler */
67 prescale = 1; 67 prescale = 1;
68 while (count >= 65536) { 68 while (count >= 65536) {
69 count >>= 1; 69 count >>= 1;
70 prescale <<= 1; 70 prescale <<= 1;
71 } 71 }
72 72
73 /* configure timer */ 73 /* configure timer */
74 TCCON = (1 << 12) | /* TD_INT0_EN */ 74 TCCON = (1 << 12) | /* TD_INT0_EN */
75 (cs << 8) | /* TS_CS */ 75 (cs << 8) | /* TS_CS */
76 (0 << 4); /* TD_MODE_SEL, 0 = interval mode */ 76 (0 << 4); /* TD_MODE_SEL, 0 = interval mode */
77 TCPRE = prescale - 1; 77 TCPRE = prescale - 1;
78 TCDATA0 = count; 78 TCDATA0 = count;
79 TCCMD = (1 << 0); /* TD_ENABLE */ 79 TCCMD = (1 << 0); /* TD_ENABLE */
80 80
81 return true; 81 return true;
82} 82}
83 83
84bool timer_start(void) 84bool timer_start(void)
85{ 85{
86 TCCMD = (1 << 0); /* TD_ENABLE */ 86 TCCMD = (1 << 0); /* TD_ENABLE */
87 return true; 87 return true;
88} 88}
89 89
90void timer_stop(void) 90void timer_stop(void)
91{ 91{
92 TCCMD = (0 << 0); /* TD_ENABLE */ 92 TCCMD = (0 << 0); /* TD_ENABLE */
93} 93}
94 94
diff --git a/firmware/target/sh/archos/mascodec-archos.c b/firmware/target/sh/archos/mascodec-archos.c
index 3f932166eb..1eb6e1044d 100644
--- a/firmware/target/sh/archos/mascodec-archos.c
+++ b/firmware/target/sh/archos/mascodec-archos.c
@@ -5,7 +5,7 @@
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/ 7 * \/ \/ \/ \/ \/
8 * $Id: mas.c 18807 2008-10-14 11:12:20Z zagor $ 8 * $Id$
9 * 9 *
10 * Copyright (C) 2002 by Linus Nielsen Feltzing 10 * Copyright (C) 2002 by Linus Nielsen Feltzing
11 * 11 *
diff --git a/rbutil/e200rpatcher/e200rpatcher.rc b/rbutil/e200rpatcher/e200rpatcher.rc
index dae43bc26c..4d80442d44 100644
--- a/rbutil/e200rpatcher/e200rpatcher.rc
+++ b/rbutil/e200rpatcher/e200rpatcher.rc
@@ -1 +1 @@
1 24 MOVEABLE PURE "e200rpatcher.manifest" 1 24 MOVEABLE PURE "e200rpatcher.manifest"
diff --git a/rbutil/ipodpatcher/ipodpatcher.rc b/rbutil/ipodpatcher/ipodpatcher.rc
index 368826e263..e440b51271 100644
--- a/rbutil/ipodpatcher/ipodpatcher.rc
+++ b/rbutil/ipodpatcher/ipodpatcher.rc
@@ -1 +1 @@
1 24 MOVEABLE PURE "ipodpatcher.manifest" 1 24 MOVEABLE PURE "ipodpatcher.manifest"
diff --git a/rbutil/sansapatcher/sansapatcher.rc b/rbutil/sansapatcher/sansapatcher.rc
index 7040637a0d..26bb8fe730 100644
--- a/rbutil/sansapatcher/sansapatcher.rc
+++ b/rbutil/sansapatcher/sansapatcher.rc
@@ -1 +1 @@
1 24 MOVEABLE PURE "sansapatcher.manifest" 1 24 MOVEABLE PURE "sansapatcher.manifest"
diff --git a/utils/MTP/sendfirm.manifest b/utils/MTP/sendfirm.manifest
index 324c707e1c..307b6c2a01 100644
--- a/utils/MTP/sendfirm.manifest
+++ b/utils/MTP/sendfirm.manifest
@@ -1,8 +1,8 @@
1<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 1<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
2<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'> 2<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
3 <dependency> 3 <dependency>
4 <dependentAssembly> 4 <dependentAssembly>
5 <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' /> 5 <assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
6 </dependentAssembly> 6 </dependentAssembly>
7 </dependency> 7 </dependency>
8</assembly> 8</assembly>
diff --git a/utils/tcctool/tcctool-windows.txt b/utils/tcctool/tcctool-windows.txt
index d116bfeefe..f19e2b0e58 100644
--- a/utils/tcctool/tcctool-windows.txt
+++ b/utils/tcctool/tcctool-windows.txt
@@ -1,31 +1,31 @@
1tcctool for Windows 1tcctool for Windows
2------------------- 2-------------------
3 3
4Installation 4Installation
5------------ 5------------
6 6
7When you first attach your device in USB boot mode to your computer, 7When you first attach your device in USB boot mode to your computer,
8Windows should display the Found New Hardware Wizard. 8Windows should display the Found New Hardware Wizard.
9 9
10If this doesn't appear, and if you have previously used a firmware 10If this doesn't appear, and if you have previously used a firmware
11recovery tool with your device, you will need to uninstall the USB 11recovery tool with your device, you will need to uninstall the USB
12driver used by that application. 12driver used by that application.
13 13
14Go into Control Panel -> System -> Hardware -> Device Manager, then 14Go into Control Panel -> System -> Hardware -> Device Manager, then
15click on Universal Serial Bus Controllers, look for something like 15click on Universal Serial Bus Controllers, look for something like
16"Telechips TCC77x VTC USB Driver", right-click on it and select 16"Telechips TCC77x VTC USB Driver", right-click on it and select
17Uninstall. 17Uninstall.
18 18
19After doing this, disconnect and reconnect your device and the Found 19After doing this, disconnect and reconnect your device and the Found
20New Hardware Wizard should appear. 20New Hardware Wizard should appear.
21 21
22Select "No, not this time" to the question about connecting to Windows 22Select "No, not this time" to the question about connecting to Windows
23Update, and select "Install from a list or specific location 23Update, and select "Install from a list or specific location
24(Advanced)" on the next screen. 24(Advanced)" on the next screen.
25 25
26On the next screen, select "Search for the best driver in these 26On the next screen, select "Search for the best driver in these
27locations", unselect "Search removable media", select "Include this 27locations", unselect "Search removable media", select "Include this
28location in the search:" and browse to the tcctool-driver-win32 28location in the search:" and browse to the tcctool-driver-win32
29folder. 29folder.
30 30
31You should now be able to run tcctool.exe 31You should now be able to run tcctool.exe
diff --git a/utils/themeeditor/qtfindreplacedialog/findreplace_global.h b/utils/themeeditor/qtfindreplacedialog/findreplace_global.h
index be71bff752..8b4b2a8e0a 100644
--- a/utils/themeeditor/qtfindreplacedialog/findreplace_global.h
+++ b/utils/themeeditor/qtfindreplacedialog/findreplace_global.h
@@ -1,21 +1,21 @@
1/* 1/*
2 * Copyright (C) 2009 Lorenzo Bettini <http://www.lorenzobettini.it> 2 * Copyright (C) 2009 Lorenzo Bettini <http://www.lorenzobettini.it>
3 * See COPYING file that comes with this distribution 3 * See COPYING file that comes with this distribution
4 */ 4 */
5 5
6#ifndef FINDREPLACE_GLOBAL_H 6#ifndef FINDREPLACE_GLOBAL_H
7#define FINDREPLACE_GLOBAL_H 7#define FINDREPLACE_GLOBAL_H
8 8
9#include <QtCore/qglobal.h> 9#include <QtCore/qglobal.h>
10 10
11#ifndef FINDREPLACE_NOLIB 11#ifndef FINDREPLACE_NOLIB
12#if defined(FINDREPLACE_LIBRARY) 12#if defined(FINDREPLACE_LIBRARY)
13# define FINDREPLACESHARED_EXPORT Q_DECL_EXPORT 13# define FINDREPLACESHARED_EXPORT Q_DECL_EXPORT
14#else 14#else
15# define FINDREPLACESHARED_EXPORT Q_DECL_IMPORT 15# define FINDREPLACESHARED_EXPORT Q_DECL_IMPORT
16#endif 16#endif
17#else 17#else
18#define FINDREPLACESHARED_EXPORT 18#define FINDREPLACESHARED_EXPORT
19#endif 19#endif
20 20
21#endif // FINDREPLACE_GLOBAL_H 21#endif // FINDREPLACE_GLOBAL_H
diff --git a/utils/themeeditor/qtfindreplacedialog/findreplacedialog.ui b/utils/themeeditor/qtfindreplacedialog/findreplacedialog.ui
index 74984b3070..3bc837e099 100644
--- a/utils/themeeditor/qtfindreplacedialog/findreplacedialog.ui
+++ b/utils/themeeditor/qtfindreplacedialog/findreplacedialog.ui
@@ -1,32 +1,32 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<ui version="4.0"> 2<ui version="4.0">
3 <class>FindReplaceDialog</class> 3 <class>FindReplaceDialog</class>
4 <widget class="QDialog" name="FindReplaceDialog"> 4 <widget class="QDialog" name="FindReplaceDialog">
5 <property name="geometry"> 5 <property name="geometry">
6 <rect> 6 <rect>
7 <x>0</x> 7 <x>0</x>
8 <y>0</y> 8 <y>0</y>
9 <width>342</width> 9 <width>342</width>
10 <height>140</height> 10 <height>140</height>
11 </rect> 11 </rect>
12 </property> 12 </property>
13 <property name="windowTitle"> 13 <property name="windowTitle">
14 <string>Find/Replace</string> 14 <string>Find/Replace</string>
15 </property> 15 </property>
16 <layout class="QGridLayout" name="gridLayout"> 16 <layout class="QGridLayout" name="gridLayout">
17 <item row="0" column="0"> 17 <item row="0" column="0">
18 <widget class="FindReplaceForm" name="findReplaceForm" native="true"/> 18 <widget class="FindReplaceForm" name="findReplaceForm" native="true"/>
19 </item> 19 </item>
20 </layout> 20 </layout>
21 </widget> 21 </widget>
22 <customwidgets> 22 <customwidgets>
23 <customwidget> 23 <customwidget>
24 <class>FindReplaceForm</class> 24 <class>FindReplaceForm</class>
25 <extends>QWidget</extends> 25 <extends>QWidget</extends>
26 <header location="global">findreplaceform.h</header> 26 <header location="global">findreplaceform.h</header>
27 <container>1</container> 27 <container>1</container>
28 </customwidget> 28 </customwidget>
29 </customwidgets> 29 </customwidgets>
30 <resources/> 30 <resources/>
31 <connections/> 31 <connections/>
32</ui> 32</ui>
diff --git a/utils/themeeditor/qtfindreplacedialog/findreplaceform.ui b/utils/themeeditor/qtfindreplacedialog/findreplaceform.ui
index acc055ca88..a68e120772 100644
--- a/utils/themeeditor/qtfindreplacedialog/findreplaceform.ui
+++ b/utils/themeeditor/qtfindreplacedialog/findreplaceform.ui
@@ -1,204 +1,204 @@
1<?xml version="1.0" encoding="UTF-8"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<ui version="4.0"> 2<ui version="4.0">
3 <class>FindReplaceForm</class> 3 <class>FindReplaceForm</class>
4 <widget class="QWidget" name="FindReplaceForm"> 4 <widget class="QWidget" name="FindReplaceForm">
5 <property name="geometry"> 5 <property name="geometry">
6 <rect> 6 <rect>
7 <x>0</x> 7 <x>0</x>
8 <y>0</y> 8 <y>0</y>
9 <width>483</width> 9 <width>483</width>
10 <height>288</height> 10 <height>288</height>
11 </rect> 11 </rect>
12 </property> 12 </property>
13 <property name="windowTitle"> 13 <property name="windowTitle">
14 <string>Form</string> 14 <string>Form</string>
15 </property> 15 </property>
16 <layout class="QGridLayout" name="gridLayout"> 16 <layout class="QGridLayout" name="gridLayout">
17 <item row="0" column="0"> 17 <item row="0" column="0">
18 <layout class="QVBoxLayout" name="verticalLayout_5"> 18 <layout class="QVBoxLayout" name="verticalLayout_5">
19 <item> 19 <item>
20 <layout class="QVBoxLayout" name="verticalLayout_2"> 20 <layout class="QVBoxLayout" name="verticalLayout_2">
21 <item> 21 <item>
22 <layout class="QGridLayout" name="gridLayout_3"> 22 <layout class="QGridLayout" name="gridLayout_3">
23 <item row="0" column="0"> 23 <item row="0" column="0">
24 <widget class="QLabel" name="label"> 24 <widget class="QLabel" name="label">
25 <property name="text"> 25 <property name="text">
26 <string>&amp;Find:</string> 26 <string>&amp;Find:</string>
27 </property> 27 </property>
28 <property name="buddy"> 28 <property name="buddy">
29 <cstring>textToFind</cstring> 29 <cstring>textToFind</cstring>
30 </property> 30 </property>
31 </widget> 31 </widget>
32 </item> 32 </item>
33 <item row="0" column="1"> 33 <item row="0" column="1">
34 <widget class="QLineEdit" name="textToFind"/> 34 <widget class="QLineEdit" name="textToFind"/>
35 </item> 35 </item>
36 <item row="1" column="0"> 36 <item row="1" column="0">
37 <widget class="QLabel" name="replaceLabel"> 37 <widget class="QLabel" name="replaceLabel">
38 <property name="text"> 38 <property name="text">
39 <string>R&amp;eplace with:</string> 39 <string>R&amp;eplace with:</string>
40 </property> 40 </property>
41 <property name="buddy"> 41 <property name="buddy">
42 <cstring>textToReplace</cstring> 42 <cstring>textToReplace</cstring>
43 </property> 43 </property>
44 </widget> 44 </widget>
45 </item> 45 </item>
46 <item row="1" column="1"> 46 <item row="1" column="1">
47 <widget class="QLineEdit" name="textToReplace"/> 47 <widget class="QLineEdit" name="textToReplace"/>
48 </item> 48 </item>
49 </layout> 49 </layout>
50 </item> 50 </item>
51 </layout> 51 </layout>
52 </item> 52 </item>
53 <item> 53 <item>
54 <widget class="QLabel" name="errorLabel"> 54 <widget class="QLabel" name="errorLabel">
55 <property name="text"> 55 <property name="text">
56 <string>errorLabel</string> 56 <string>errorLabel</string>
57 </property> 57 </property>
58 </widget> 58 </widget>
59 </item> 59 </item>
60 <item> 60 <item>
61 <layout class="QHBoxLayout" name="horizontalLayout"> 61 <layout class="QHBoxLayout" name="horizontalLayout">
62 <item> 62 <item>
63 <widget class="QGroupBox" name="groupBox"> 63 <widget class="QGroupBox" name="groupBox">
64 <property name="title"> 64 <property name="title">
65 <string>D&amp;irection</string> 65 <string>D&amp;irection</string>
66 </property> 66 </property>
67 <layout class="QVBoxLayout" name="verticalLayout_3"> 67 <layout class="QVBoxLayout" name="verticalLayout_3">
68 <item> 68 <item>
69 <widget class="QRadioButton" name="downRadioButton"> 69 <widget class="QRadioButton" name="downRadioButton">
70 <property name="text"> 70 <property name="text">
71 <string>&amp;Down</string> 71 <string>&amp;Down</string>
72 </property> 72 </property>
73 <property name="checked"> 73 <property name="checked">
74 <bool>true</bool> 74 <bool>true</bool>
75 </property> 75 </property>
76 </widget> 76 </widget>
77 </item> 77 </item>
78 <item> 78 <item>
79 <widget class="QRadioButton" name="upRadioButton"> 79 <widget class="QRadioButton" name="upRadioButton">
80 <property name="text"> 80 <property name="text">
81 <string>&amp;Up</string> 81 <string>&amp;Up</string>
82 </property> 82 </property>
83 </widget> 83 </widget>
84 </item> 84 </item>
85 </layout> 85 </layout>
86 </widget> 86 </widget>
87 </item> 87 </item>
88 <item> 88 <item>
89 <widget class="QGroupBox" name="groupBox_2"> 89 <widget class="QGroupBox" name="groupBox_2">
90 <property name="title"> 90 <property name="title">
91 <string>&amp;Options</string> 91 <string>&amp;Options</string>
92 </property> 92 </property>
93 <layout class="QVBoxLayout" name="verticalLayout_4"> 93 <layout class="QVBoxLayout" name="verticalLayout_4">
94 <item> 94 <item>
95 <widget class="QCheckBox" name="caseCheckBox"> 95 <widget class="QCheckBox" name="caseCheckBox">
96 <property name="text"> 96 <property name="text">
97 <string>&amp;Case sensitive</string> 97 <string>&amp;Case sensitive</string>
98 </property> 98 </property>
99 </widget> 99 </widget>
100 </item> 100 </item>
101 <item> 101 <item>
102 <widget class="QCheckBox" name="wholeCheckBox"> 102 <widget class="QCheckBox" name="wholeCheckBox">
103 <property name="text"> 103 <property name="text">
104 <string>&amp;Whole words only</string> 104 <string>&amp;Whole words only</string>
105 </property> 105 </property>
106 </widget> 106 </widget>
107 </item> 107 </item>
108 <item> 108 <item>
109 <widget class="QCheckBox" name="regexCheckBox"> 109 <widget class="QCheckBox" name="regexCheckBox">
110 <property name="toolTip"> 110 <property name="toolTip">
111 <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; 111 <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
112&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; 112&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
113p, li { white-space: pre-wrap; } 113p, li { white-space: pre-wrap; }
114&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt; 114&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;&quot;&gt;
115&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;whether the text to search should be interpreted as a regular expression.&lt;/p&gt; 115&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;whether the text to search should be interpreted as a regular expression.&lt;/p&gt;
116&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt; 116&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;
117&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may want to take a look at the syntax of regular expressions:&lt;/p&gt; 117&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;You may want to take a look at the syntax of regular expressions:&lt;/p&gt;
118&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://doc.trolltech.com/qregexp.html&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://doc.trolltech.com/qregexp.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 118&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://doc.trolltech.com/qregexp.html&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://doc.trolltech.com/qregexp.html&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
119 </property> 119 </property>
120 <property name="text"> 120 <property name="text">
121 <string>R&amp;egular Expression</string> 121 <string>R&amp;egular Expression</string>
122 </property> 122 </property>
123 </widget> 123 </widget>
124 </item> 124 </item>
125 </layout> 125 </layout>
126 </widget> 126 </widget>
127 </item> 127 </item>
128 </layout> 128 </layout>
129 </item> 129 </item>
130 </layout> 130 </layout>
131 </item> 131 </item>
132 <item row="0" column="1"> 132 <item row="0" column="1">
133 <layout class="QVBoxLayout" name="verticalLayout"> 133 <layout class="QVBoxLayout" name="verticalLayout">
134 <property name="leftMargin"> 134 <property name="leftMargin">
135 <number>10</number> 135 <number>10</number>
136 </property> 136 </property>
137 <item> 137 <item>
138 <widget class="QPushButton" name="findButton"> 138 <widget class="QPushButton" name="findButton">
139 <property name="enabled"> 139 <property name="enabled">
140 <bool>false</bool> 140 <bool>false</bool>
141 </property> 141 </property>
142 <property name="text"> 142 <property name="text">
143 <string>&amp;Find</string> 143 <string>&amp;Find</string>
144 </property> 144 </property>
145 </widget> 145 </widget>
146 </item> 146 </item>
147 <item> 147 <item>
148 <widget class="QPushButton" name="closeButton"> 148 <widget class="QPushButton" name="closeButton">
149 <property name="text"> 149 <property name="text">
150 <string>&amp;Close</string> 150 <string>&amp;Close</string>
151 </property> 151 </property>
152 </widget> 152 </widget>
153 </item> 153 </item>
154 <item> 154 <item>
155 <widget class="QPushButton" name="replaceButton"> 155 <widget class="QPushButton" name="replaceButton">
156 <property name="enabled"> 156 <property name="enabled">
157 <bool>false</bool> 157 <bool>false</bool>
158 </property> 158 </property>
159 <property name="text"> 159 <property name="text">
160 <string>&amp;Replace</string> 160 <string>&amp;Replace</string>
161 </property> 161 </property>
162 </widget> 162 </widget>
163 </item> 163 </item>
164 <item> 164 <item>
165 <widget class="QPushButton" name="replaceAllButton"> 165 <widget class="QPushButton" name="replaceAllButton">
166 <property name="enabled"> 166 <property name="enabled">
167 <bool>false</bool> 167 <bool>false</bool>
168 </property> 168 </property>
169 <property name="text"> 169 <property name="text">
170 <string>Replace &amp;All</string> 170 <string>Replace &amp;All</string>
171 </property> 171 </property>
172 </widget> 172 </widget>
173 </item> 173 </item>
174 <item> 174 <item>
175 <spacer name="verticalSpacer"> 175 <spacer name="verticalSpacer">
176 <property name="orientation"> 176 <property name="orientation">
177 <enum>Qt::Vertical</enum> 177 <enum>Qt::Vertical</enum>
178 </property> 178 </property>
179 <property name="sizeHint" stdset="0"> 179 <property name="sizeHint" stdset="0">
180 <size> 180 <size>
181 <width>20</width> 181 <width>20</width>
182 <height>40</height> 182 <height>40</height>
183 </size> 183 </size>
184 </property> 184 </property>
185 </spacer> 185 </spacer>
186 </item> 186 </item>
187 </layout> 187 </layout>
188 </item> 188 </item>
189 </layout> 189 </layout>
190 </widget> 190 </widget>
191 <tabstops> 191 <tabstops>
192 <tabstop>textToFind</tabstop> 192 <tabstop>textToFind</tabstop>
193 <tabstop>textToReplace</tabstop> 193 <tabstop>textToReplace</tabstop>
194 <tabstop>downRadioButton</tabstop> 194 <tabstop>downRadioButton</tabstop>
195 <tabstop>upRadioButton</tabstop> 195 <tabstop>upRadioButton</tabstop>
196 <tabstop>caseCheckBox</tabstop> 196 <tabstop>caseCheckBox</tabstop>
197 <tabstop>wholeCheckBox</tabstop> 197 <tabstop>wholeCheckBox</tabstop>
198 <tabstop>regexCheckBox</tabstop> 198 <tabstop>regexCheckBox</tabstop>
199 <tabstop>findButton</tabstop> 199 <tabstop>findButton</tabstop>
200 <tabstop>closeButton</tabstop> 200 <tabstop>closeButton</tabstop>
201 </tabstops> 201 </tabstops>
202 <resources/> 202 <resources/>
203 <connections/> 203 <connections/>
204</ui> 204</ui>
diff --git a/utils/themeeditor/themeeditor.rc b/utils/themeeditor/themeeditor.rc
index 7d588cbcf2..6272b356ef 100644
--- a/utils/themeeditor/themeeditor.rc
+++ b/utils/themeeditor/themeeditor.rc
@@ -1 +1 @@
EDITOR_ICON ICON DISCARDABLE "resources/windowicon.ico" EDITOR_ICON ICON DISCARDABLE "resources/windowicon.ico"