diff options
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 */ |
2 | 0x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 2 | 0x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
3 | 0x61,0x61,0x1e,0x17,0xf0,0x7f,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 3 | 0x61,0x61,0x1e,0x17,0xf0,0x7f,0x00,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
4 | 0x13,0x41,0x16,0x0e,0xfd,0xf4,0x23,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 4 | 0x13,0x41,0x16,0x0e,0xfd,0xf4,0x23,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
5 | 0x03,0x01,0x9a,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 5 | 0x03,0x01,0x9a,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
6 | 0x11,0x61,0x0e,0x07,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 6 | 0x11,0x61,0x0e,0x07,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
7 | 0x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 7 | 0x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
8 | 0x21,0x22,0x16,0x05,0xf0,0x71,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 8 | 0x21,0x22,0x16,0x05,0xf0,0x71,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
9 | 0x21,0x61,0x1d,0x07,0x82,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 9 | 0x21,0x61,0x1d,0x07,0x82,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
10 | 0x23,0x21,0x2d,0x16,0x90,0x90,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 10 | 0x23,0x21,0x2d,0x16,0x90,0x90,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
11 | 0x21,0x21,0x1b,0x06,0x64,0x65,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 11 | 0x21,0x21,0x1b,0x06,0x64,0x65,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
12 | 0x21,0x21,0x0b,0x1a,0x85,0xa0,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 12 | 0x21,0x21,0x0b,0x1a,0x85,0xa0,0x70,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
13 | 0x23,0x01,0x83,0x10,0xff,0xb4,0x10,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 13 | 0x23,0x01,0x83,0x10,0xff,0xb4,0x10,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
14 | 0x97,0xc1,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 14 | 0x97,0xc1,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
15 | 0x61,0x00,0x0c,0x05,0xc2,0xf6,0x40,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 15 | 0x61,0x00,0x0c,0x05,0xc2,0xf6,0x40,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
16 | 0x01,0x01,0x56,0x03,0x94,0xc2,0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 16 | 0x01,0x01,0x56,0x03,0x94,0xc2,0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
17 | 0x21,0x01,0x89,0x03,0xf1,0xe4,0xf0,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 17 | 0x21,0x01,0x89,0x03,0xf1,0xe4,0xf0,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
18 | 0x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 18 | 0x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
19 | 0x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 19 | 0x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
20 | 0x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 | 20 | 0x25,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 */ |
2 | 0x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 2 | 0x49,0x4c,0x4c,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
3 | 0x62,0x21,0x1a,0x07,0xf0,0x6f,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 3 | 0x62,0x21,0x1a,0x07,0xf0,0x6f,0x00,0x16,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
4 | 0x00,0x10,0x44,0x02,0xf6,0xf4,0x54,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 4 | 0x00,0x10,0x44,0x02,0xf6,0xf4,0x54,0x23,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
5 | 0x03,0x01,0x97,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 5 | 0x03,0x01,0x97,0x04,0xf3,0xf3,0x13,0xf3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
6 | 0x01,0x61,0x0a,0x0f,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 6 | 0x01,0x61,0x0a,0x0f,0xfa,0x64,0x70,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
7 | 0x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 7 | 0x22,0x21,0x1e,0x06,0xf0,0x76,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
8 | 0x00,0x61,0x8a,0x0e,0xc0,0x61,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 8 | 0x00,0x61,0x8a,0x0e,0xc0,0x61,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
9 | 0x21,0x61,0x1b,0x07,0x84,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 9 | 0x21,0x61,0x1b,0x07,0x84,0x80,0x17,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
10 | 0x37,0x32,0xc9,0x01,0x66,0x64,0x40,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 10 | 0x37,0x32,0xc9,0x01,0x66,0x64,0x40,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
11 | 0x01,0x21,0x06,0x03,0xa5,0x71,0x51,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 11 | 0x01,0x21,0x06,0x03,0xa5,0x71,0x51,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
12 | 0x06,0x11,0x5e,0x07,0xf3,0xf2,0xf6,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 12 | 0x06,0x11,0x5e,0x07,0xf3,0xf2,0xf6,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
13 | 0x00,0x20,0x18,0x06,0xf5,0xf3,0x20,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 13 | 0x00,0x20,0x18,0x06,0xf5,0xf3,0x20,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
14 | 0x97,0x41,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 14 | 0x97,0x41,0x20,0x07,0xff,0xf4,0x22,0x22,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
15 | 0x65,0x61,0x15,0x00,0xf7,0xf3,0x16,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 15 | 0x65,0x61,0x15,0x00,0xf7,0xf3,0x16,0xf4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
16 | 0x01,0x31,0x0e,0x07,0xfa,0xf3,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 16 | 0x01,0x31,0x0e,0x07,0xfa,0xf3,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
17 | 0x48,0x61,0x09,0x07,0xf1,0x94,0xf0,0xf5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 17 | 0x48,0x61,0x09,0x07,0xf1,0x94,0xf0,0xf5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
18 | 0x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 18 | 0x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
19 | 0x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 19 | 0x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
20 | 0x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 | 20 | 0x25,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 |
8 | can redistribute it and/or modify it under the terms of the GNU Lesser | 8 | can redistribute it and/or modify it under the terms of the GNU Lesser |
9 | General Public License as published by the Free Software Foundation; either | 9 | General Public License as published by the Free Software Foundation; either |
10 | version 2.1 of the License, or (at your option) any later version. This | 10 | version 2.1 of the License, or (at your option) any later version. This |
11 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 11 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 12 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
13 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 13 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
14 | details. You should have received a copy of the GNU Lesser General Public | 14 | details. You should have received a copy of the GNU Lesser General Public |
15 | License along with this module; if not, write to the Free Software Foundation, | 15 | License along with this module; if not, write to the Free Software Foundation, |
16 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 16 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ |
17 | 17 | ||
18 | #include "blargg_source.h" | 18 | #include "blargg_source.h" |
19 | 19 | ||
20 | const char* const gme_wrong_file_type = "Wrong file type for this emulator"; | 20 | const 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 | ||
24 | int const spectrum_clock = 3546900; // 128K Spectrum | 24 | int const spectrum_clock = 3546900; // 128K Spectrum |
25 | int const spectrum_period = 70908; | 25 | int 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 | ||
30 | int const cpc_clock = 2000000; | 30 | int const cpc_clock = 2000000; |
31 | 31 | ||
32 | static void clear_track_vars( struct Ay_Emu *this ) | 32 | static 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 | ||
38 | void Ay_init( struct Ay_Emu *this ) | 38 | void 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. |
68 | static byte const* get_data( struct file_t const* file, byte const ptr [], int min_size ) | 68 | static 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 | ||
80 | static blargg_err_t parse_header( byte const in [], int size, struct file_t* out ) | 80 | static 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 | ||
100 | static void change_clock_rate( struct Ay_Emu *this, int rate ) | 100 | static 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 | ||
106 | blargg_err_t Ay_load_mem( struct Ay_Emu *this, byte const in [], long size ) | 106 | blargg_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 | ||
141 | static void set_beeper_output( struct Ay_Emu *this, struct Blip_Buffer* b ) | 141 | static 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 | ||
150 | static void set_voice( struct Ay_Emu *this, int i, struct Blip_Buffer* center ) | 150 | static 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 | ||
158 | static blargg_err_t run_clocks( struct Ay_Emu *this, blip_time_t* duration, int msec ) | 158 | static 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 | ||
222 | void cpu_out_( struct Ay_Emu *this, cpu_time_t time, addr_t addr, int data ) | 222 | void 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 | ||
268 | enable_cpc: | 268 | enable_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 | ||
279 | blargg_err_t Ay_set_sample_rate( struct Ay_Emu *this, int rate ) | 279 | blargg_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 | ||
294 | void Sound_mute_voice( struct Ay_Emu *this, int index, bool mute ) | 294 | void 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 | ||
304 | void Sound_mute_voices( struct Ay_Emu *this, int mask ) | 304 | void 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 | ||
326 | void Sound_set_tempo( struct Ay_Emu *this, int t ) | 326 | void 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 | ||
342 | blargg_err_t Ay_start_track( struct Ay_Emu *this, int track ) | 342 | blargg_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 | ||
491 | static int msec_to_samples( int msec, int sample_rate ) | 491 | static 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 | ||
498 | int Track_tell( struct Ay_Emu *this ) | 498 | int 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 | ||
505 | blargg_err_t Track_seek( struct Ay_Emu *this, int msec ) | 505 | blargg_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 | ||
513 | blargg_err_t skip_( void *emu, int count ) | 513 | blargg_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 | ||
535 | blargg_err_t Track_skip( struct Ay_Emu *this, int count ) | 535 | blargg_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 | ||
541 | int Track_get_length( struct Ay_Emu* this, int n ) | 541 | int 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 | ||
560 | void Track_set_fade( struct Ay_Emu *this, int start_msec, int length_msec ) | 560 | void 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 | ||
566 | blargg_err_t Ay_play( struct Ay_Emu *this, int out_count, sample_t* out ) | 566 | blargg_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 | ||
573 | blargg_err_t play_( void *emu, int count, sample_t* out ) | 573 | blargg_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 |
66 | static unsigned char default_inst[OPLL_TONE_NUM][(16 + 3) * 16] = { | 66 | static 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 |
73 | static unsigned char default_inst[OPLL_TONE_NUM][(16 + 3) * 16] = { | 73 | static 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 */ |
174 | static e_uint32 clk = 844451141; | 174 | static e_uint32 clk = 844451141; |
175 | /* Sampling rate */ | 175 | /* Sampling rate */ |
176 | static e_uint32 rate = 3354932; | 176 | static e_uint32 rate = 3354932; |
177 | 177 | ||
178 | /* WaveTable for each envelope amp */ | 178 | /* WaveTable for each envelope amp */ |
179 | static e_uint16 fullsintable[PG_WIDTH]; | 179 | static e_uint16 fullsintable[PG_WIDTH]; |
180 | static e_uint16 halfsintable[PG_WIDTH]; | 180 | static e_uint16 halfsintable[PG_WIDTH]; |
181 | 181 | ||
182 | static e_uint16 *waveform[2] = { fullsintable, halfsintable }; | 182 | static 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 */ |
202 | static e_uint32 pm_dphase; | 202 | static e_uint32 pm_dphase; |
203 | static e_uint32 am_dphase; | 203 | static e_uint32 am_dphase; |
204 | 204 | ||
205 | /* dB to Liner table */ | 205 | /* dB to Liner table */ |
206 | static e_int16 DB2LIN_TABLE[(DB_MUTE + DB_MUTE) * 2]; | 206 | static 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 */ |
220 | static OPLL_PATCH null_patch = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; | 220 | static 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 */ |
223 | static OPLL_PATCH default_patch[OPLL_TONE_NUM][(16 + 3) * 2]; | 223 | static OPLL_PATCH default_patch[OPLL_TONE_NUM][(16 + 3) * 2]; |
224 | 224 | ||
225 | /* Definition of envelope mode */ | 225 | /* Definition of envelope mode */ |
226 | enum OPLL_EG_STATE | 226 | enum 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 */ |
230 | static e_uint32 dphaseARTable[16][16]; | 230 | static e_uint32 dphaseARTable[16][16]; |
231 | /* Phase incr table for Decay and Release */ | 231 | /* Phase incr table for Decay and Release */ |
232 | static e_uint32 dphaseDRTable[16][16]; | 232 | static e_uint32 dphaseDRTable[16][16]; |
233 | 233 | ||
234 | /* KSL + TL Table */ | 234 | /* KSL + TL Table */ |
235 | e_uint8 tllTable[16][8][1 << TL_BITS][4]; | 235 | e_uint8 tllTable[16][8][1 << TL_BITS][4]; |
236 | static e_int32 rksTable[2][8][2]; | 236 | static 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 */ |
241 | static e_uint32 dphaseTable[512][8][16]; | 241 | static 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 |
250 | INLINE static e_int32 | 250 | INLINE static e_int32 |
251 | Min (e_int32 i, e_int32 j) | 251 | Min (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. */ |
260 | static void | 260 | static void |
261 | makeAdjustTable (void) | 261 | makeAdjustTable (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) */ |
272 | static void | 272 | static void |
273 | makeDB2LinTable (void) | 273 | makeDB2LinTable (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) */ |
290 | static e_int32 | 290 | static e_int32 |
291 | lin2db (double d) | 291 | lin2db (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 */ |
301 | static void | 301 | static void |
302 | makeSinTable (void) | 302 | makeSinTable (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 |
330 | static double saw(double phase) | 330 | static 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 */ |
341 | static void | 341 | static void |
342 | makePmTable (void) | 342 | makePmTable (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 */ |
352 | static void | 352 | static void |
353 | makeAmTable (void) | 353 | makeAmTable (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 */ |
365 | static void | 365 | static void |
366 | makeDphaseTable (void) | 366 | makeDphaseTable (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 | ||
379 | static void | 379 | static void |
380 | makeTllTable (void) | 380 | makeTllTable (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 |
415 | static double attacktime[16][4] = { | 415 | static 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 | ||
434 | static double decaytime[16][4] = { | 434 | static 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 */ |
455 | static void | 455 | static void |
456 | makeDphaseARTable (void) | 456 | makeDphaseARTable (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 */ |
503 | static void | 503 | static void |
504 | makeDphaseDRTable (void) | 504 | makeDphaseDRTable (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 | ||
542 | static void | 542 | static void |
543 | makeRksTable (void) | 543 | makeRksTable (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 | ||
559 | void | 559 | void |
560 | OPLL_dump2patch (const e_uint8 * dump, OPLL_PATCH * patch) | 560 | OPLL_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 | ||
588 | void | 588 | void |
589 | OPLL_getDefaultPatch (e_int32 type, e_int32 num, OPLL_PATCH * patch) | 589 | OPLL_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 | ||
594 | static void | 594 | static void |
595 | makeDefaultPatch ( void ) | 595 | makeDefaultPatch ( 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 | ||
605 | void | 605 | void |
606 | OPLL_setPatch (OPLL * opll, const e_uint8 * dump) | 606 | OPLL_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 | ||
619 | void | 619 | void |
620 | OPLL_patch2dump (const OPLL_PATCH * patch, e_uint8 * dump) | 620 | OPLL_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 | ||
646 | INLINE static e_uint32 | 646 | INLINE static e_uint32 |
647 | calc_eg_dphase (OPLL_SLOT * slot) | 647 | calc_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) |
697 | INLINE static void | 697 | INLINE static void |
698 | UPDATE_PG(OPLL_SLOT * slot) | 698 | UPDATE_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 */ |
725 | INLINE static void | 725 | INLINE static void |
726 | slotOn (OPLL_SLOT * slot) | 726 | slotOn (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 */ |
735 | INLINE static void | 735 | INLINE static void |
736 | slotOn2 (OPLL_SLOT * slot) | 736 | slotOn2 (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 */ |
744 | INLINE static void | 744 | INLINE static void |
745 | slotOff (OPLL_SLOT * slot) | 745 | slotOff (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 */ |
754 | INLINE static void | 754 | INLINE static void |
755 | keyOn (OPLL * opll, e_int32 i) | 755 | keyOn (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 */ |
765 | INLINE static void | 765 | INLINE static void |
766 | keyOff (OPLL * opll, e_int32 i) | 766 | keyOff (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 | ||
773 | INLINE static void | 773 | INLINE static void |
774 | keyOn_BD (OPLL * opll) | 774 | keyOn_BD (OPLL * opll) |
775 | { | 775 | { |
776 | keyOn (opll, 6); | 776 | keyOn (opll, 6); |
777 | } | 777 | } |
778 | INLINE static void | 778 | INLINE static void |
779 | keyOn_SD (OPLL * opll) | 779 | keyOn_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 | } |
784 | INLINE static void | 784 | INLINE static void |
785 | keyOn_TOM (OPLL * opll) | 785 | keyOn_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 | } |
790 | INLINE static void | 790 | INLINE static void |
791 | keyOn_HH (OPLL * opll) | 791 | keyOn_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 | } |
796 | INLINE static void | 796 | INLINE static void |
797 | keyOn_CYM (OPLL * opll) | 797 | keyOn_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 */ |
804 | INLINE static void | 804 | INLINE static void |
805 | keyOff_BD (OPLL * opll) | 805 | keyOff_BD (OPLL * opll) |
806 | { | 806 | { |
807 | keyOff (opll, 6); | 807 | keyOff (opll, 6); |
808 | } | 808 | } |
809 | INLINE static void | 809 | INLINE static void |
810 | keyOff_SD (OPLL * opll) | 810 | keyOff_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 | } |
815 | INLINE static void | 815 | INLINE static void |
816 | keyOff_TOM (OPLL * opll) | 816 | keyOff_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 | } |
821 | INLINE static void | 821 | INLINE static void |
822 | keyOff_HH (OPLL * opll) | 822 | keyOff_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 | } |
827 | INLINE static void | 827 | INLINE static void |
828 | keyOff_CYM (OPLL * opll) | 828 | keyOff_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 */ |
835 | INLINE static void | 835 | INLINE static void |
836 | setPatch (OPLL * opll, e_int32 i, e_int32 num) | 836 | setPatch (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 */ |
844 | INLINE static void | 844 | INLINE static void |
845 | setSlotPatch (OPLL_SLOT * slot, OPLL_PATCH * patch) | 845 | setSlotPatch (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 */ |
851 | INLINE static void | 851 | INLINE static void |
852 | setSustine (OPLL * opll, e_int32 c, e_int32 sustine) | 852 | setSustine (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 ) */ |
860 | INLINE static void | 860 | INLINE static void |
861 | setVolume (OPLL * opll, e_int32 c, e_int32 volume) | 861 | setVolume (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 | ||
866 | INLINE static void | 866 | INLINE static void |
867 | setSlotVolume (OPLL_SLOT * slot, e_int32 volume) | 867 | setSlotVolume (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 ) */ |
873 | INLINE static void | 873 | INLINE static void |
874 | setFnumber (OPLL * opll, e_int32 c, e_int32 fnum) | 874 | setFnumber (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 ) */ |
881 | INLINE static void | 881 | INLINE static void |
882 | setBlock (OPLL * opll, e_int32 c, e_int32 block) | 882 | setBlock (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 */ |
889 | INLINE static void | 889 | INLINE static void |
890 | update_rhythm_mode (OPLL * opll) | 890 | update_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 | ||
951 | INLINE static void | 951 | INLINE static void |
952 | update_key_status (OPLL * opll) | 952 | update_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 | ||
970 | void | 970 | void |
971 | OPLL_copyPatch (OPLL * opll, e_int32 num, OPLL_PATCH * patch) | 971 | OPLL_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 | ||
982 | static void | 982 | static void |
983 | OPLL_SLOT_reset (OPLL_SLOT * slot, int type) | 983 | OPLL_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 | ||
1006 | static void | 1006 | static void |
1007 | internal_refresh (void) | 1007 | internal_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 | ||
1018 | static void | 1018 | static void |
1019 | maketables (e_uint32 c, e_uint32 r) | 1019 | maketables (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 | ||
1043 | void | 1043 | void |
1044 | OPLL_new (OPLL *opll, e_uint32 clk, e_uint32 rate) | 1044 | OPLL_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 | ||
1061 | void | 1061 | void |
1062 | OPLL_delete (OPLL * opll) | 1062 | OPLL_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. */ |
1069 | void | 1069 | void |
1070 | OPLL_reset_patch (OPLL * opll, e_int32 type) | 1070 | OPLL_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. */ |
1079 | void | 1079 | void |
1080 | OPLL_reset (OPLL * opll) | 1080 | OPLL_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). */ |
1120 | void | 1120 | void |
1121 | OPLL_forceRefresh (OPLL * opll) | 1121 | OPLL_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 | ||
1141 | void | 1141 | void |
1142 | OPLL_set_rate (OPLL * opll, e_uint32 r) | 1142 | OPLL_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 | ||
1153 | void | 1153 | void |
1154 | OPLL_set_quality (OPLL * opll, e_uint32 q) | 1154 | OPLL_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 */ |
1191 | INLINE static void | 1191 | INLINE static void |
1192 | update_ampm (OPLL * opll) | 1192 | update_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 */ |
1201 | INLINE static void | 1201 | INLINE static void |
1202 | calc_phase (OPLL_SLOT * slot, e_int32 lfo) | 1202 | calc_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 */ |
1215 | INLINE static void | 1215 | INLINE static void |
1216 | update_noise (OPLL * opll) | 1216 | update_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 */ |
1223 | INLINE static void | 1223 | INLINE static void |
1224 | calc_envelope (OPLL_SLOT * slot, e_int32 lfo) | 1224 | calc_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 */ |
1321 | INLINE static e_int32 | 1321 | INLINE static e_int32 |
1322 | calc_slot_car (OPLL_SLOT * slot, e_int32 fm) | 1322 | calc_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 */ |
1338 | INLINE static e_int32 | 1338 | INLINE static e_int32 |
1339 | calc_slot_mod (OPLL_SLOT * slot) | 1339 | calc_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 */ |
1366 | INLINE static e_int32 | 1366 | INLINE static e_int32 |
1367 | calc_slot_tom (OPLL_SLOT * slot) | 1367 | calc_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 */ |
1377 | INLINE static e_int32 | 1377 | INLINE static e_int32 |
1378 | calc_slot_snare (OPLL_SLOT * slot, e_uint32 noise) | 1378 | calc_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 | */ |
1392 | INLINE static e_int32 | 1392 | INLINE static e_int32 |
1393 | calc_slot_cym (OPLL_SLOT * slot, e_uint32 pgout_hh) | 1393 | calc_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 | */ |
1415 | INLINE static e_int32 | 1415 | INLINE static e_int32 |
1416 | calc_slot_hat (OPLL_SLOT *slot, e_int32 pgout_cym, e_uint32 noise) | 1416 | calc_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 | ||
1445 | static e_int16 | 1445 | static e_int16 |
1446 | calc (OPLL * opll) EMU2413_CALC_ICODE; | 1446 | calc (OPLL * opll) EMU2413_CALC_ICODE; |
1447 | static e_int16 | 1447 | static e_int16 |
1448 | calc (OPLL * opll) | 1448 | calc (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 | ||
1509 | void | 1509 | void |
1510 | OPLL_set_internal_mute(OPLL * opll, e_uint32 mute) | 1510 | OPLL_set_internal_mute(OPLL * opll, e_uint32 mute) |
1511 | { | 1511 | { |
1512 | opll->internal_mute = mute; | 1512 | opll->internal_mute = mute; |
1513 | } | 1513 | } |
1514 | 1514 | ||
1515 | e_uint32 | 1515 | e_uint32 |
1516 | OPLL_is_internal_muted(OPLL * opll) | 1516 | OPLL_is_internal_muted(OPLL * opll) |
1517 | { | 1517 | { |
1518 | return opll->internal_mute; | 1518 | return opll->internal_mute; |
1519 | } | 1519 | } |
1520 | 1520 | ||
1521 | static e_uint32 | 1521 | static e_uint32 |
1522 | check_mute_helper(OPLL * opll) | 1522 | check_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 | ||
1550 | static void | 1550 | static void |
1551 | check_mute(OPLL * opll) | 1551 | check_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 | ||
1556 | EMU2413_API e_int16 *OPLL_update_buffer(OPLL * opll, e_uint32 length) | 1556 | EMU2413_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 |
1568 | e_int16 | 1568 | e_int16 |
1569 | OPLL_calc (OPLL * opll) | 1569 | OPLL_calc (OPLL * opll) |
1570 | { | 1570 | { |
1571 | return calc (opll); | 1571 | return calc (opll); |
1572 | } | 1572 | } |
1573 | #else | 1573 | #else |
1574 | e_int16 | 1574 | e_int16 |
1575 | OPLL_calc (OPLL * opll) | 1575 | OPLL_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 | ||
1595 | e_uint32 | 1595 | e_uint32 |
1596 | OPLL_setMask (OPLL * opll, e_uint32 mask) | 1596 | OPLL_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 | ||
1610 | e_uint32 | 1610 | e_uint32 |
1611 | OPLL_toggleMask (OPLL * opll, e_uint32 mask) | 1611 | OPLL_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 | ||
1631 | void | 1631 | void |
1632 | OPLL_writeReg (OPLL * opll, e_uint32 reg, e_uint32 data) | 1632 | OPLL_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 | ||
1868 | void | 1868 | void |
1869 | OPLL_writeIO (OPLL * opll, e_uint32 adr, e_uint32 val) | 1869 | OPLL_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 | ||
1877 | e_uint32 | 1877 | e_uint32 |
1878 | OPLL_read(OPLL * opll, e_uint32 a) | 1878 | OPLL_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) */ |
1890 | void | 1890 | void |
1891 | OPLL_set_pan (OPLL * opll, e_uint32 ch, e_uint32 pan) | 1891 | OPLL_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 | ||
1896 | static void | 1896 | static void |
1897 | calc_stereo (OPLL * opll, e_int32 out[2]) | 1897 | calc_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 | ||
1958 | void | 1958 | void |
1959 | OPLL_calc_stereo (OPLL * opll, e_int32 out[2]) | 1959 | OPLL_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 |
16 | extern "C" { | 16 | extern "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 | ||
23 | enum OPLL_TONE_ENUM {OPLL_2413_TONE=0, OPLL_VRC7_TONE=1, OPLL_281B_TONE=2} ; | 23 | enum OPLL_TONE_ENUM {OPLL_2413_TONE=0, OPLL_VRC7_TONE=1, OPLL_281B_TONE=2} ; |
24 | 24 | ||
25 | /* voice data */ | 25 | /* voice data */ |
26 | typedef struct __OPLL_PATCH { | 26 | typedef 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 */ |
31 | typedef struct __OPLL_SLOT { | 31 | typedef 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 */ |
71 | typedef struct __OPLL { | 71 | typedef 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 */ |
122 | EMU2413_API void OPLL_new(OPLL *, e_uint32 clk, e_uint32 rate) ; | 122 | EMU2413_API void OPLL_new(OPLL *, e_uint32 clk, e_uint32 rate) ; |
123 | EMU2413_API void OPLL_delete(OPLL *) ; | 123 | EMU2413_API void OPLL_delete(OPLL *) ; |
124 | 124 | ||
125 | /* Setup */ | 125 | /* Setup */ |
126 | EMU2413_API void OPLL_reset(OPLL *) ; | 126 | EMU2413_API void OPLL_reset(OPLL *) ; |
127 | EMU2413_API void OPLL_reset_patch(OPLL *, e_int32) ; | 127 | EMU2413_API void OPLL_reset_patch(OPLL *, e_int32) ; |
128 | EMU2413_API void OPLL_set_rate(OPLL *opll, e_uint32 r) ; | 128 | EMU2413_API void OPLL_set_rate(OPLL *opll, e_uint32 r) ; |
129 | EMU2413_API void OPLL_set_quality(OPLL *opll, e_uint32 q) ; | 129 | EMU2413_API void OPLL_set_quality(OPLL *opll, e_uint32 q) ; |
130 | EMU2413_API void OPLL_set_pan(OPLL *, e_uint32 ch, e_uint32 pan); | 130 | EMU2413_API void OPLL_set_pan(OPLL *, e_uint32 ch, e_uint32 pan); |
131 | EMU2413_API void OPLL_set_internal_mute(OPLL *, e_uint32 mute); | 131 | EMU2413_API void OPLL_set_internal_mute(OPLL *, e_uint32 mute); |
132 | EMU2413_API e_uint32 OPLL_is_internal_muted(OPLL *); | 132 | EMU2413_API e_uint32 OPLL_is_internal_muted(OPLL *); |
133 | 133 | ||
134 | /* Port/Register access */ | 134 | /* Port/Register access */ |
135 | EMU2413_API void OPLL_writeIO(OPLL *, e_uint32 reg, e_uint32 val); | 135 | EMU2413_API void OPLL_writeIO(OPLL *, e_uint32 reg, e_uint32 val); |
136 | EMU2413_API void OPLL_writeReg(OPLL *, e_uint32 reg, e_uint32 val); | 136 | EMU2413_API void OPLL_writeReg(OPLL *, e_uint32 reg, e_uint32 val); |
137 | EMU2413_API e_uint32 OPLL_read(OPLL *, e_uint32 port); | 137 | EMU2413_API e_uint32 OPLL_read(OPLL *, e_uint32 port); |
138 | 138 | ||
139 | /* Synthsize */ | 139 | /* Synthsize */ |
140 | EMU2413_API e_int16 OPLL_calc(OPLL *) EMU2413_CALC_ICODE; | 140 | EMU2413_API e_int16 OPLL_calc(OPLL *) EMU2413_CALC_ICODE; |
141 | EMU2413_API void OPLL_calc_stereo(OPLL *, e_int32 out[2]) ; | 141 | EMU2413_API void OPLL_calc_stereo(OPLL *, e_int32 out[2]) ; |
142 | EMU2413_API e_int16 *OPLL_update_buffer(OPLL *, e_uint32 length) ; | 142 | EMU2413_API e_int16 *OPLL_update_buffer(OPLL *, e_uint32 length) ; |
143 | 143 | ||
144 | /* Misc */ | 144 | /* Misc */ |
145 | EMU2413_API void OPLL_setPatch(OPLL *, const e_uint8 *dump) ; | 145 | EMU2413_API void OPLL_setPatch(OPLL *, const e_uint8 *dump) ; |
146 | EMU2413_API void OPLL_copyPatch(OPLL *, e_int32, OPLL_PATCH *) ; | 146 | EMU2413_API void OPLL_copyPatch(OPLL *, e_int32, OPLL_PATCH *) ; |
147 | EMU2413_API void OPLL_forceRefresh(OPLL *) ; | 147 | EMU2413_API void OPLL_forceRefresh(OPLL *) ; |
148 | /* Utility */ | 148 | /* Utility */ |
149 | EMU2413_API void OPLL_dump2patch(const e_uint8 *dump, OPLL_PATCH *patch) ; | 149 | EMU2413_API void OPLL_dump2patch(const e_uint8 *dump, OPLL_PATCH *patch) ; |
150 | EMU2413_API void OPLL_patch2dump(const OPLL_PATCH *patch, e_uint8 *dump) ; | 150 | EMU2413_API void OPLL_patch2dump(const OPLL_PATCH *patch, e_uint8 *dump) ; |
151 | EMU2413_API void OPLL_getDefaultPatch(e_int32 type, e_int32 num, OPLL_PATCH *) ; | 151 | EMU2413_API void OPLL_getDefaultPatch(e_int32 type, e_int32 num, OPLL_PATCH *) ; |
152 | 152 | ||
153 | /* Channel Mask */ | 153 | /* Channel Mask */ |
154 | EMU2413_API e_uint32 OPLL_setMask(OPLL *, e_uint32 mask) ; | 154 | EMU2413_API e_uint32 OPLL_setMask(OPLL *, e_uint32 mask) ; |
155 | EMU2413_API e_uint32 OPLL_toggleMask(OPLL *, e_uint32 mask) ; | 155 | EMU2413_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 | ||
9 | static const e_uint16 sin_coeff[] = { | 9 | static 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 | ||
31 | static const e_int16 pm_coeff[] = { | 31 | static 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 | ||
71 | static const e_int8 am_coeff[] = { | 71 | static 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 | ||
111 | static const e_int16 db2lin_coeff[] = { | 111 | static 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 | ||
188 | static const e_uint16 ar_adjust_coeff[] = { | 188 | static 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 |
23 | extern "C" { | 23 | extern "C" { |
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | typedef unsigned int e_uint; | 26 | typedef unsigned int e_uint; |
27 | typedef signed int e_int; | 27 | typedef signed int e_int; |
28 | 28 | ||
29 | typedef unsigned char e_uint8 ; | 29 | typedef unsigned char e_uint8 ; |
30 | typedef signed char e_int8 ; | 30 | typedef signed char e_int8 ; |
31 | 31 | ||
32 | typedef unsigned short e_uint16 ; | 32 | typedef unsigned short e_uint16 ; |
33 | typedef signed short e_int16 ; | 33 | typedef signed short e_int16 ; |
34 | 34 | ||
35 | typedef unsigned int e_uint32 ; | 35 | typedef unsigned int e_uint32 ; |
36 | typedef signed int e_int32 ; | 36 | typedef 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 |
6 | can redistribute it and/or modify it under the terms of the GNU Lesser | 6 | can redistribute it and/or modify it under the terms of the GNU Lesser |
7 | General Public License as published by the Free Software Foundation; either | 7 | General Public License as published by the Free Software Foundation; either |
8 | version 2.1 of the License, or (at your option) any later version. This | 8 | version 2.1 of the License, or (at your option) any later version. This |
9 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
11 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 11 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
12 | details. You should have received a copy of the GNU Lesser General Public | 12 | details. You should have received a copy of the GNU Lesser General Public |
13 | License along with this module; if not, write to the Free Software Foundation, | 13 | License along with this module; if not, write to the Free Software Foundation, |
14 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 14 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ |
15 | 15 | ||
16 | 16 | ||
17 | void Adpcm_init( struct Hes_Apu_Adpcm* this ) | 17 | void 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 | ||
24 | void Adpcm_reset( struct Hes_Apu_Adpcm* this ) | 24 | void 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 | ||
48 | static short stepsize[49] = { | 48 | static 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 | ||
58 | static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code ); | 58 | static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code ); |
59 | static int Adpcm_decode( struct Hes_Apu_Adpcm* this,int code ) | 59 | static 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 | ||
102 | static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time ); | 102 | static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time ); |
103 | static void Adpcm_run_until( struct Hes_Apu_Adpcm* this, blip_time_t end_time ) | 103 | static 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 | ||
175 | void Adpcm_write_data( struct Hes_Apu_Adpcm* this, blip_time_t time, int addr, int data ) | 175 | void 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 | ||
259 | int Adpcm_read_data( struct Hes_Apu_Adpcm* this, blip_time_t time, int addr ) | 259 | int 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 | ||
289 | void Adpcm_end_frame( struct Hes_Apu_Adpcm* this, blip_time_t end_time ) | 289 | void 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 | ||
8 | int mbread(struct mbreader_t *md, void *buf, size_t n) | 8 | int 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 | ||
7 | struct mbreader_t { | 7 | struct 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 | ||
13 | int mbread(struct mbreader_t *md, void *buf, size_t n); | 13 | int 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 |
9 | can redistribute it and/or modify it under the terms of the GNU Lesser | 9 | can redistribute it and/or modify it under the terms of the GNU Lesser |
10 | General Public License as published by the Free Software Foundation; either | 10 | General Public License as published by the Free Software Foundation; either |
11 | version 2.1 of the License, or (at your option) any later version. This | 11 | version 2.1 of the License, or (at your option) any later version. This |
12 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 12 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
14 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 14 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
15 | details. You should have received a copy of the GNU Lesser General Public | 15 | details. You should have received a copy of the GNU Lesser General Public |
16 | License along with this module; if not, write to the Free Software Foundation, | 16 | License along with this module; if not, write to the Free Software Foundation, |
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 17 | Inc., 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 \ |
27 | bool run_cpu( struct Kss_Emu* this, kss_time_t end_time )\ | 27 | bool 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, |
6 | though they NEVER have side-effects, so multiple evaluation is OK. | 6 | though 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", |
8 | so they must NOT be parenthesized. | 8 | so 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 |
10 | correctly inside a macro. TIME() is always correct, and FLUSH_TIME() and | 10 | correctly inside a macro. TIME() is always correct, and FLUSH_TIME() and |
11 | CACHE_TIME() allow the time changing functions to work. | 11 | CACHE_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 |
62 | can redistribute it and/or modify it under the terms of the GNU Lesser | 62 | can redistribute it and/or modify it under the terms of the GNU Lesser |
63 | General Public License as published by the Free Software Foundation; either | 63 | General Public License as published by the Free Software Foundation; either |
64 | version 2.1 of the License, or (at your option) any later version. This | 64 | version 2.1 of the License, or (at your option) any later version. This |
65 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 65 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
66 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 66 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
67 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 67 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
68 | details. You should have received a copy of the GNU Lesser General Public | 68 | details. You should have received a copy of the GNU Lesser General Public |
69 | License along with this module; if not, write to the Free Software Foundation, | 69 | License along with this module; if not, write to the Free Software Foundation, |
70 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 70 | Inc., 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. |
142 | int const n80 = 0x80; // nz | 142 | int const n80 = 0x80; // nz |
143 | int const v40 = 0x40; // flags | 143 | int const v40 = 0x40; // flags |
144 | int const r20 = 0x20; | 144 | int const r20 = 0x20; |
145 | int const b10 = 0x10; | 145 | int const b10 = 0x10; |
146 | int const d08 = 0x08; // flags | 146 | int const d08 = 0x08; // flags |
147 | int const i04 = 0x04; // flags | 147 | int const i04 = 0x04; // flags |
148 | int const z02 = 0x02; // nz | 148 | int const z02 = 0x02; // nz |
149 | int const c01 = 0x01; // c | 149 | int 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 | ||
199 | loop: | 199 | loop: |
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 )\ |
284 | case op - 0x04: /* (ind,x) */\ | 284 | case op - 0x04: /* (ind,x) */\ |
285 | IND_X( data )\ | 285 | IND_X( data )\ |
286 | goto ptr##op;\ | 286 | goto ptr##op;\ |
287 | case op + 0x0C: /* (ind),y */\ | 287 | case op + 0x0C: /* (ind),y */\ |
288 | IND_Y( PAGE_PENALTY, data )\ | 288 | IND_Y( PAGE_PENALTY, data )\ |
289 | goto ptr##op;\ | 289 | goto ptr##op;\ |
290 | case op + 0x10: /* zp,X */\ | 290 | case op + 0x10: /* zp,X */\ |
291 | data = BYTE( data + x );\ | 291 | data = BYTE( data + x );\ |
292 | case op + 0x00: /* zp */\ | 292 | case op + 0x00: /* zp */\ |
293 | data = READ_LOW( data );\ | 293 | data = READ_LOW( data );\ |
294 | goto imm##op;\ | 294 | goto imm##op;\ |
295 | case op + 0x14: /* abs,Y */\ | 295 | case op + 0x14: /* abs,Y */\ |
296 | data += y;\ | 296 | data += y;\ |
297 | goto ind##op;\ | 297 | goto ind##op;\ |
298 | case op + 0x18: /* abs,X */\ | 298 | case op + 0x18: /* abs,X */\ |
299 | data += x;\ | 299 | data += x;\ |
300 | ind##op:\ | 300 | ind##op:\ |
301 | PAGE_PENALTY( data );\ | 301 | PAGE_PENALTY( data );\ |
302 | case op + 0x08: /* abs */\ | 302 | case op + 0x08: /* abs */\ |
303 | ADD_PAGE( data );\ | 303 | ADD_PAGE( data );\ |
304 | ptr##op:\ | 304 | ptr##op:\ |
305 | FLUSH_TIME();\ | 305 | FLUSH_TIME();\ |
306 | data = READ_MEM( data );\ | 306 | data = READ_MEM( data );\ |
307 | CACHE_TIME();\ | 307 | CACHE_TIME();\ |
308 | case op + 0x04: /* imm */\ | 308 | case op + 0x04: /* imm */\ |
309 | imm##op: | 309 | imm##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_; |
1059 | handle_brk: | 1059 | handle_brk: |
1060 | pc++; | 1060 | pc++; |
1061 | result_ = b10 | 4; | 1061 | result_ = b10 | 4; |
1062 | 1062 | ||
1063 | #ifdef CPU_DONE | 1063 | #ifdef CPU_DONE |
1064 | interrupt: | 1064 | interrupt: |
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 | ||
1093 | out_of_time: | 1093 | out_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 |
1106 | stop: | 1106 | stop: |
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 | ||
5 | int const period = 36; // NES CPU clocks per FM clock | 5 | int const period = 36; // NES CPU clocks per FM clock |
6 | 6 | ||
7 | void Vrc7_init( struct Nes_Vrc7_Apu* this ) | 7 | void 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 | ||
22 | void Vrc7_reset( struct Nes_Vrc7_Apu* this ) | 22 | void 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 | ||
32 | void Vrc7_set_rate( struct Nes_Vrc7_Apu* this, int r ) | 32 | void 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 | ||
37 | void Vrc7_write_reg( struct Nes_Vrc7_Apu* this, int data ) | 37 | void Vrc7_write_reg( struct Nes_Vrc7_Apu* this, int data ) |
38 | { | 38 | { |
39 | this->addr = data; | 39 | this->addr = data; |
40 | } | 40 | } |
41 | 41 | ||
42 | void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time ); | 42 | void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time ); |
43 | void Vrc7_write_data( struct Nes_Vrc7_Apu* this, blip_time_t time, int data ) | 43 | void 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 | ||
52 | void Vrc7_end_frame( struct Nes_Vrc7_Apu* this, blip_time_t time ) | 52 | void 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 | ||
64 | void Vrc7_run_until( struct Nes_Vrc7_Apu* this, blip_time_t end_time ) | 64 | void 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 | ||
7 | blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type ) | 7 | blargg_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 | ||
41 | void Opl_shutdown( struct Opl_Apu* this ) | 41 | void 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 | ||
55 | void Opl_reset( struct Opl_Apu* this ) | 55 | void 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 | ||
76 | static void run_until( struct Opl_Apu* this, blip_time_t end_time ); | 76 | static void run_until( struct Opl_Apu* this, blip_time_t end_time ); |
77 | void Opl_write_data( struct Opl_Apu* this, blip_time_t time, int data ) | 77 | void 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 | ||
95 | int Opl_read( struct Opl_Apu* this, blip_time_t time, int port ) | 95 | int 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 | ||
112 | void Opl_end_frame( struct Opl_Apu* this, blip_time_t time ) | 112 | void 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 | ||
121 | static void run_until( struct Opl_Apu* this, blip_time_t end_time ) | 121 | static 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 | ||
11 | enum opl_type_t { type_opll = 0x10, type_msxmusic = 0x11, type_smsfmunit = 0x12, | 11 | enum 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 | ||
14 | enum { opl_osc_count = 1 }; | 14 | enum { opl_osc_count = 1 }; |
15 | 15 | ||
16 | struct Opl_Apu { | 16 | struct 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 | ||
38 | blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type ); | 38 | blargg_err_t Opl_init( struct Opl_Apu* this, long clock, long rate, blip_time_t period, enum opl_type_t type ); |
39 | void Opl_shutdown( struct Opl_Apu* this ); | 39 | void Opl_shutdown( struct Opl_Apu* this ); |
40 | 40 | ||
41 | void Opl_reset( struct Opl_Apu* this ); | 41 | void Opl_reset( struct Opl_Apu* this ); |
42 | static inline void Opl_volume( struct Opl_Apu* this, int v ) { Synth_volume( &this->synth, v / (4096 * 6) ); } | 42 | static inline void Opl_volume( struct Opl_Apu* this, int v ) { Synth_volume( &this->synth, v / (4096 * 6) ); } |
43 | 43 | ||
44 | static inline void Opl_osc_output( struct Opl_Apu* this, int i, struct Blip_Buffer* buf ) | 44 | static 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 | ||
53 | static inline void Opl_set_output( struct Opl_Apu* this, struct Blip_Buffer* buf ) { Opl_osc_output( this, 0, buf ); } | 53 | static inline void Opl_set_output( struct Opl_Apu* this, struct Blip_Buffer* buf ) { Opl_osc_output( this, 0, buf ); } |
54 | void Opl_end_frame( struct Opl_Apu* this, blip_time_t ); | 54 | void Opl_end_frame( struct Opl_Apu* this, blip_time_t ); |
55 | 55 | ||
56 | static inline void Opl_write_addr( struct Opl_Apu* this, int data ) { this->addr = data; } | 56 | static inline void Opl_write_addr( struct Opl_Apu* this, int data ) { this->addr = data; } |
57 | void Opl_write_data( struct Opl_Apu* this, blip_time_t, int data ); | 57 | void Opl_write_data( struct Opl_Apu* this, blip_time_t, int data ); |
58 | 58 | ||
59 | int Opl_read( struct Opl_Apu* this, blip_time_t, int port ); | 59 | int Opl_read( struct Opl_Apu* this, blip_time_t, int port ); |
60 | 60 | ||
61 | static inline bool Opl_supported( void ) { return true; } | 61 | static 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 | ||
7 | static const short ar_adjust_coeff[] = { | 7 | static 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 | ||
57 | static const short db2lin_coeff[] = { | 57 | static 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 | ||
107 | static const short sin_coeff[] = { | 107 | static 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 | ||
134 | static const short pm0_coeff[] = { | 134 | static 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 | ||
161 | static const short pm1_coeff[] = { | 161 | static 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 | ||
188 | static const short am0_coeff[] = { | 188 | static 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 | ||
215 | static const short am1_coeff[] = { | 215 | static 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 |
9 | can redistribute it and/or modify it under the terms of the GNU Lesser | 9 | can redistribute it and/or modify it under the terms of the GNU Lesser |
10 | General Public License as published by the Free Software Foundation; either | 10 | General Public License as published by the Free Software Foundation; either |
11 | version 2.1 of the License, or (at your option) any later version. This | 11 | version 2.1 of the License, or (at your option) any later version. This |
12 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 12 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 13 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
14 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 14 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
15 | details. You should have received a copy of the GNU Lesser General Public | 15 | details. You should have received a copy of the GNU Lesser General Public |
16 | License along with this module; if not, write to the Free Software Foundation, | 16 | License along with this module; if not, write to the Free Software Foundation, |
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 17 | Inc., 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 \ |
28 | bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time )\ | 28 | bool 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 |
6 | can redistribute it and/or modify it under the terms of the GNU Lesser | 6 | can redistribute it and/or modify it under the terms of the GNU Lesser |
7 | General Public License as published by the Free Software Foundation; either | 7 | General Public License as published by the Free Software Foundation; either |
8 | version 2.1 of the License, or (at your option) any later version. This | 8 | version 2.1 of the License, or (at your option) any later version. This |
9 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
11 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 11 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
12 | details. You should have received a copy of the GNU Lesser General Public | 12 | details. You should have received a copy of the GNU Lesser General Public |
13 | License aint with this module; if not, write to the Free Software Foundation, | 13 | License aint with this module; if not, write to the Free Software Foundation, |
14 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 14 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ |
15 | 15 | ||
16 | #include "blargg_source.h" | 16 | #include "blargg_source.h" |
17 | 17 | ||
18 | int const osc_count = sms_osc_count + fm_apu_osc_count; | 18 | int const osc_count = sms_osc_count + fm_apu_osc_count; |
19 | 19 | ||
20 | const char gme_wrong_file_type [] = "Wrong file type for this emulator"; | 20 | const char gme_wrong_file_type [] = "Wrong file type for this emulator"; |
21 | 21 | ||
22 | static void clear_track_vars( struct Sgc_Emu* this ) | 22 | static 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 | ||
28 | void Sgc_init( struct Sgc_Emu* this ) | 28 | void 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 | ||
59 | blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size ) | 59 | blargg_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 | ||
104 | static void Sound_set_voice( struct Sgc_Emu* this, int i, struct Blip_Buffer* c, struct Blip_Buffer* l, struct Blip_Buffer* r ) | 104 | static 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 | ||
112 | static blargg_err_t run_clocks( struct Sgc_Emu* this, blip_time_t* duration, int msec ) | 112 | static 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 | ||
157 | void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data ) | 157 | void 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 | ||
194 | void jsr( struct Sgc_Emu* this, byte addr [2] ) | 194 | void 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 | ||
201 | static void set_bank( struct Sgc_Emu* this, int bank, void const* data ) | 201 | static 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 | ||
207 | void cpu_write( struct Sgc_Emu* this, addr_t addr, int data ) | 207 | void 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 | ||
243 | blargg_err_t Sgc_set_sample_rate( struct Sgc_Emu* this, int rate ) | 243 | blargg_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 | ||
258 | void Sound_mute_voice( struct Sgc_Emu* this, int index, bool mute ) | 258 | void 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 | ||
268 | void Sound_mute_voices( struct Sgc_Emu* this, int mask ) | 268 | void 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 | ||
290 | void Sound_set_tempo( struct Sgc_Emu* this, int t ) | 290 | void 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 | ||
302 | blargg_err_t Sgc_start_track( struct Sgc_Emu* this, int track ) | 302 | blargg_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 | ||
391 | static int msec_to_samples( int msec, int sample_rate ) | 391 | static 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 | ||
398 | int Track_tell( struct Sgc_Emu* this ) | 398 | int 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 | ||
405 | blargg_err_t Track_seek( struct Sgc_Emu* this, int msec ) | 405 | blargg_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 | ||
413 | blargg_err_t Track_skip( struct Sgc_Emu* this, int count ) | 413 | blargg_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 | ||
419 | blargg_err_t skip_( void* emu, int count ) | 419 | blargg_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 | ||
441 | void Track_set_fade( struct Sgc_Emu* this, int start_msec, int length_msec ) | 441 | void 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 | ||
447 | blargg_err_t Sgc_play( struct Sgc_Emu* this, int out_count, sample_t* out ) | 447 | blargg_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 | ||
454 | blargg_err_t play_( void* emu, int count, sample_t out [] ) | 454 | blargg_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 | ||
17 | typedef struct Z80_Cpu Sgc_Cpu; | 17 | typedef struct Z80_Cpu Sgc_Cpu; |
18 | 18 | ||
19 | // SGC file header | 19 | // SGC file header |
20 | enum { header_size = 0xA0 }; | 20 | enum { header_size = 0xA0 }; |
21 | struct header_t | 21 | struct 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 |
46 | static inline bool valid_tag( struct header_t* h ) | 46 | static 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 | ||
51 | static inline int effect_count( struct header_t* h ) { return h->last_effect ? h->last_effect - h->first_effect + 1 : 0; } | 51 | static inline int effect_count( struct header_t* h ) { return h->last_effect ? h->last_effect - h->first_effect + 1 : 0; } |
52 | 52 | ||
53 | struct Sgc_Emu { | 53 | struct 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 | ||
103 | void Sgc_init( struct Sgc_Emu* this ); | 103 | void Sgc_init( struct Sgc_Emu* this ); |
104 | 104 | ||
105 | blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size ); | 105 | blargg_err_t Sgc_load_mem( struct Sgc_Emu* this, const void* data, long size ); |
106 | 106 | ||
107 | static inline int clock_rate( struct Sgc_Emu* this ) { return this->header.rate ? 3546893 : 3579545; } | 107 | static inline int clock_rate( struct Sgc_Emu* this ) { return this->header.rate ? 3546893 : 3579545; } |
108 | 108 | ||
109 | // 0x2000 bytes | 109 | // 0x2000 bytes |
110 | static inline void set_coleco_bios( struct Sgc_Emu* this, void* p ) { this->coleco_bios = p; } | 110 | static 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. |
113 | blargg_err_t Sgc_set_sample_rate( struct Sgc_Emu* this, int sample_rate ); | 113 | blargg_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. |
116 | blargg_err_t Sgc_start_track( struct Sgc_Emu* this, int track ); | 116 | blargg_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. |
120 | blargg_err_t Sgc_play( struct Sgc_Emu* this, int count, sample_t* buf ); | 120 | blargg_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 |
125 | int Track_tell( struct Sgc_Emu* this ); | 125 | int 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. |
128 | blargg_err_t Track_seek( struct Sgc_Emu* this, int msec ); | 128 | blargg_err_t Track_seek( struct Sgc_Emu* this, int msec ); |
129 | 129 | ||
130 | // Skip n samples | 130 | // Skip n samples |
131 | blargg_err_t Track_skip( struct Sgc_Emu* this, int n ); | 131 | blargg_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. |
135 | void Track_set_fade( struct Sgc_Emu* this, int start_msec, int length_msec ); | 135 | void 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 |
138 | static inline bool Track_ended( struct Sgc_Emu* this ) | 138 | static 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 |
144 | static inline void Track_ignore_silence( struct Sgc_Emu* this, bool disable ) | 144 | static 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 |
150 | static inline int Track_get_length( struct Sgc_Emu* this, int n ) | 150 | static 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. |
165 | void Sound_set_tempo( struct Sgc_Emu* this, int t ); | 165 | void 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 |
168 | void Sound_mute_voice( struct Sgc_Emu* this, int index, bool mute ); | 168 | void 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. |
172 | void Sound_mute_voices( struct Sgc_Emu* this, int mask ); | 172 | void 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(). |
176 | static inline void Sound_set_gain( struct Sgc_Emu* this, int g ) | 176 | static 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 |
183 | static inline bool sega_mapping( struct Sgc_Emu* this ) | 183 | static 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 | ||
190 | bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time ); | 190 | bool run_cpu( struct Sgc_Emu* this, cpu_time_t end_time ); |
191 | void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data ); | 191 | void cpu_out( struct Sgc_Emu* this, cpu_time_t time, addr_t addr, int data ); |
192 | void cpu_write( struct Sgc_Emu* this, addr_t addr, int data ); | 192 | void cpu_write( struct Sgc_Emu* this, addr_t addr, int data ); |
193 | void jsr( struct Sgc_Emu* this, byte addr [2] ); | 193 | void 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 | ||
5 | void Fm_apu_create( struct Sms_Fm_Apu* this ) | 5 | void 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 | ||
11 | blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate ) | 11 | blargg_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 | ||
22 | void Fm_apu_reset( struct Sms_Fm_Apu* this ) | 22 | void 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 | ||
31 | void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time ); | 31 | void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time ); |
32 | void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t time, int data ) | 32 | void 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 | ||
40 | void fm_run_until( struct Sms_Fm_Apu* this, blip_time_t end_time ) | 40 | void 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 | ||
72 | void Fm_apu_end_frame( struct Sms_Fm_Apu* this, blip_time_t time ) | 72 | void 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 | ||
8 | enum { fm_apu_osc_count = 1 }; | 8 | enum { fm_apu_osc_count = 1 }; |
9 | 9 | ||
10 | struct Sms_Fm_Apu { | 10 | struct 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 | ||
24 | void Fm_apu_create( struct Sms_Fm_Apu* this ); | 24 | void Fm_apu_create( struct Sms_Fm_Apu* this ); |
25 | 25 | ||
26 | static inline bool Fm_apu_supported( void ) { return Ym2413_supported(); } | 26 | static inline bool Fm_apu_supported( void ) { return Ym2413_supported(); } |
27 | blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate ); | 27 | blargg_err_t Fm_apu_init( struct Sms_Fm_Apu* this, int clock_rate, int sample_rate ); |
28 | 28 | ||
29 | static inline void Fm_apu_set_output( struct Sms_Fm_Apu* this, struct Blip_Buffer* b ) | 29 | static 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 | ||
34 | static inline void Fm_apu_volume( struct Sms_Fm_Apu* this, int v ) { Synth_volume( &this->synth, (v*2) / 5 / 4096 ); } | 34 | static inline void Fm_apu_volume( struct Sms_Fm_Apu* this, int v ) { Synth_volume( &this->synth, (v*2) / 5 / 4096 ); } |
35 | 35 | ||
36 | void Fm_apu_reset( struct Sms_Fm_Apu* this ); | 36 | void Fm_apu_reset( struct Sms_Fm_Apu* this ); |
37 | 37 | ||
38 | static inline void Fm_apu_write_addr( struct Sms_Fm_Apu* this, int data ) { this->addr = data; } | 38 | static inline void Fm_apu_write_addr( struct Sms_Fm_Apu* this, int data ) { this->addr = data; } |
39 | void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t, int data ); | 39 | void Fm_apu_write_data( struct Sms_Fm_Apu* this, blip_time_t, int data ); |
40 | 40 | ||
41 | void Fm_apu_end_frame( struct Sms_Fm_Apu* this, blip_time_t t ); | 41 | void 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 |
6 | can redistribute it and/or modify it under the terms of the GNU Lesser | 6 | can redistribute it and/or modify it under the terms of the GNU Lesser |
7 | General Public License as published by the Free Software Foundation; either | 7 | General Public License as published by the Free Software Foundation; either |
8 | version 2.1 of the License, or (at your option) any later version. This | 8 | version 2.1 of the License, or (at your option) any later version. This |
9 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 9 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 10 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
11 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 11 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
12 | details. You should have received a copy of the GNU Lesser General Public | 12 | details. You should have received a copy of the GNU Lesser General Public |
13 | License along with this module; if not, write to the Free Software Foundation, | 13 | License along with this module; if not, write to the Free Software Foundation, |
14 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 14 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ |
15 | 15 | ||
16 | #include "blargg_source.h" | 16 | #include "blargg_source.h" |
17 | 17 | ||
18 | int const fade_block_size = 512; | 18 | int const fade_block_size = 512; |
19 | int const fade_shift = 8; // fade ends with gain at 1.0 / (1 << fade_shift) | 19 | int const fade_shift = 8; // fade ends with gain at 1.0 / (1 << fade_shift) |
20 | int const silence_threshold = 8; | 20 | int const silence_threshold = 8; |
21 | 21 | ||
22 | void track_create( struct Track_Filter* this ) | 22 | void 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 | ||
32 | blargg_err_t track_init( struct Track_Filter* this, void* emu ) | 32 | blargg_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 | ||
38 | static void clear_time_vars( struct Track_Filter* this ) | 38 | static 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 | ||
46 | void track_stop( struct Track_Filter* this ) | 46 | void 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 | ||
57 | blargg_err_t track_start( struct Track_Filter* this ) | 57 | blargg_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 | ||
80 | static void end_track_if_error( struct Track_Filter* this, blargg_err_t err ) | 80 | static 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 | ||
89 | blargg_err_t track_skip( struct Track_Filter* this, int count ) | 89 | blargg_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 | ||
118 | blargg_err_t skippy_( struct Track_Filter* this, int count ) | 118 | blargg_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 | ||
133 | void track_set_fade( struct Track_Filter* this, int start, int length ) | 133 | void 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 | ||
141 | static bool is_fading( struct Track_Filter* this ) | 141 | static 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 ) |
147 | static int int_log( int x, int step, int unit ) | 147 | static 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 | ||
154 | static void handle_fade( struct Track_Filter* this, sample_t out [], int out_count ) | 154 | static 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 | ||
177 | static void emu_play( struct Track_Filter* this, sample_t out [], int count ) | 177 | static 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 |
187 | static int count_silence( sample_t begin [], int size ) | 187 | static 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 |
198 | void fill_buf( struct Track_Filter* this ) | 198 | void 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 | ||
215 | blargg_err_t track_play( struct Track_Filter* this, int out_count, sample_t out [] ) | 215 | blargg_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 | ||
10 | typedef short sample_t; | 10 | typedef short sample_t; |
11 | typedef int sample_count_t; | 11 | typedef int sample_count_t; |
12 | 12 | ||
13 | enum { indefinite_count = INT_MAX/2 + 1 }; | 13 | enum { indefinite_count = INT_MAX/2 + 1 }; |
14 | enum { buf_size = 2048 }; | 14 | enum { buf_size = 2048 }; |
15 | 15 | ||
16 | struct setup_t { | 16 | struct 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 | ||
22 | struct Track_Filter { | 22 | struct 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. |
46 | blargg_err_t track_init( struct Track_Filter* this, void* ); | 46 | blargg_err_t track_init( struct Track_Filter* this, void* ); |
47 | void track_create( struct Track_Filter* this ); | 47 | void track_create( struct Track_Filter* this ); |
48 | 48 | ||
49 | // Gets/sets setup | 49 | // Gets/sets setup |
50 | static inline struct setup_t const* track_get_setup( struct Track_Filter* this ) { return &this->setup_; } | 50 | static inline struct setup_t const* track_get_setup( struct Track_Filter* this ) { return &this->setup_; } |
51 | static inline void track_setup( struct Track_Filter* this, struct setup_t const* s ) { this->setup_ = *s; } | 51 | static 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 |
54 | static inline void track_ignore_silence( struct Track_Filter* this, bool disable ) { this->silence_ignored_ = disable; } | 54 | static 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 |
57 | blargg_err_t track_start( struct Track_Filter* this ); | 57 | blargg_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. |
60 | void track_set_fade( struct Track_Filter* this, sample_count_t start, sample_count_t length ); | 60 | void 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 |
63 | blargg_err_t track_play( struct Track_Filter* this, int n, sample_t buf [] ); | 63 | blargg_err_t track_play( struct Track_Filter* this, int n, sample_t buf [] ); |
64 | 64 | ||
65 | // Skips n samples | 65 | // Skips n samples |
66 | blargg_err_t track_skip( struct Track_Filter* this, int n ); | 66 | blargg_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() |
69 | static inline int track_sample_count( struct Track_Filter* this ) { return this->out_time; } | 69 | static 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. |
73 | static inline bool track_ended( struct Track_Filter* this ) { return this->track_ended_; } | 73 | static inline bool track_ended( struct Track_Filter* this ) { return this->track_ended_; } |
74 | 74 | ||
75 | // Clears state | 75 | // Clears state |
76 | void track_stop( struct Track_Filter* this ); | 76 | void 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 |
81 | static inline void track_set_end( struct Track_Filter* this ) { this->emu_track_ended_ = true; } | 81 | static 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 |
84 | blargg_err_t skippy_( struct Track_Filter* this, int count ); | 84 | blargg_err_t skippy_( struct Track_Filter* this, int count ); |
85 | void fill_buf( struct Track_Filter* this ); | 85 | void fill_buf( struct Track_Filter* this ); |
86 | 86 | ||
87 | // Skip and play callbacks | 87 | // Skip and play callbacks |
88 | blargg_err_t skip_( void* emu, int count ); | 88 | blargg_err_t skip_( void* emu, int count ); |
89 | blargg_err_t play_( void* emu, int count, sample_t out [] ); | 89 | blargg_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 */ |
2 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 2 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
3 | 0x33,0x01,0x09,0x0e,0x94,0x90,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 3 | 0x33,0x01,0x09,0x0e,0x94,0x90,0x40,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
4 | 0x13,0x41,0x0f,0x0d,0xce,0xd3,0x43,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 4 | 0x13,0x41,0x0f,0x0d,0xce,0xd3,0x43,0x13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
5 | 0x01,0x12,0x1b,0x06,0xff,0xd2,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 5 | 0x01,0x12,0x1b,0x06,0xff,0xd2,0x00,0x32,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
6 | 0x61,0x61,0x1b,0x07,0xaf,0x63,0x20,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 6 | 0x61,0x61,0x1b,0x07,0xaf,0x63,0x20,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
7 | 0x22,0x21,0x1e,0x06,0xf0,0x76,0x08,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 7 | 0x22,0x21,0x1e,0x06,0xf0,0x76,0x08,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
8 | 0x66,0x21,0x15,0x00,0x93,0x94,0x20,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 8 | 0x66,0x21,0x15,0x00,0x93,0x94,0x20,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
9 | 0x21,0x61,0x1c,0x07,0x82,0x81,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 9 | 0x21,0x61,0x1c,0x07,0x82,0x81,0x10,0x17,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
10 | 0x23,0x21,0x20,0x1f,0xc0,0x71,0x07,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 10 | 0x23,0x21,0x20,0x1f,0xc0,0x71,0x07,0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
11 | 0x25,0x31,0x26,0x05,0x64,0x41,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 11 | 0x25,0x31,0x26,0x05,0x64,0x41,0x18,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
12 | 0x17,0x21,0x28,0x07,0xff,0x83,0x02,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 12 | 0x17,0x21,0x28,0x07,0xff,0x83,0x02,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
13 | 0x97,0x81,0x25,0x07,0xcf,0xc8,0x02,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 13 | 0x97,0x81,0x25,0x07,0xcf,0xc8,0x02,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
14 | 0x21,0x21,0x54,0x0f,0x80,0x7f,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 14 | 0x21,0x21,0x54,0x0f,0x80,0x7f,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
15 | 0x01,0x01,0x56,0x03,0xd3,0xb2,0x43,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 15 | 0x01,0x01,0x56,0x03,0xd3,0xb2,0x43,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
16 | 0x31,0x21,0x0c,0x03,0x82,0xc0,0x40,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 16 | 0x31,0x21,0x0c,0x03,0x82,0xc0,0x40,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
17 | 0x21,0x01,0x0c,0x03,0xd4,0xd3,0x40,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 17 | 0x21,0x01,0x0c,0x03,0xd4,0xd3,0x40,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
18 | 0x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 18 | 0x07,0x21,0x14,0x00,0xee,0xf8,0xff,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
19 | 0x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, | 19 | 0x01,0x31,0x00,0x00,0xf8,0xf7,0xf8,0xf7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, |
20 | 0x25,0x11,0x00,0x00,0xf8,0xfa,0xf8,0x55,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 | 20 | 0x25,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 | ||
5 | void Ym2413_init( struct Ym2413_Emu* this ) | 5 | void 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 | ||
10 | int Ym2413_set_rate( struct Ym2413_Emu* this, int sample_rate, int clock_rate ) | 10 | int 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 | ||
19 | void Ym2413_reset( struct Ym2413_Emu* this ) | 19 | void 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 | ||
25 | void Ym2413_write( struct Ym2413_Emu* this, int addr, int data ) | 25 | void 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 | ||
31 | void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask ) | 31 | void 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 | ||
36 | void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out ) | 36 | void 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 | ||
10 | enum { out_chan_count = 2 }; // stereo | 10 | enum { out_chan_count = 2 }; // stereo |
11 | enum { channel_count = 14 }; | 11 | enum { channel_count = 14 }; |
12 | enum { disabled_time = -1 }; | 12 | enum { disabled_time = -1 }; |
13 | 13 | ||
14 | struct Ym2413_Emu { | 14 | struct 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 | ||
22 | void Ym2413_init( struct Ym2413_Emu* this ); | 22 | void Ym2413_init( struct Ym2413_Emu* this ); |
23 | 23 | ||
24 | static inline bool Ym2413_supported( void ) { return true; } | 24 | static 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. |
28 | int Ym2413_set_rate( struct Ym2413_Emu* this, int sample_rate, int clock_rate ); | 28 | int 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 |
31 | void Ym2413_reset( struct Ym2413_Emu* this ); | 31 | void 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 |
34 | void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask ); | 34 | void Ym2413_mute_voices( struct Ym2413_Emu* this, int mask ); |
35 | 35 | ||
36 | // Writes data to addr | 36 | // Writes data to addr |
37 | void Ym2413_write( struct Ym2413_Emu* this, int addr, int data ); | 37 | void 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 |
40 | void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out ); | 40 | void Ym2413_run( struct Ym2413_Emu* this, int pair_count, short* out ); |
41 | 41 | ||
42 | static inline void Ym2413_enable( struct Ym2413_Emu* this, bool b ) { this->last_time = b ? 0 : disabled_time; } | 42 | static inline void Ym2413_enable( struct Ym2413_Emu* this, bool b ) { this->last_time = b ? 0 : disabled_time; } |
43 | static inline bool Ym2413_enabled( struct Ym2413_Emu* this ) { return this->last_time != disabled_time; } | 43 | static inline bool Ym2413_enabled( struct Ym2413_Emu* this ) { return this->last_time != disabled_time; } |
44 | static inline void Ym2413_begin_frame( struct Ym2413_Emu* this, short* buf ) { this->out = buf; this->last_time = 0; } | 44 | static inline void Ym2413_begin_frame( struct Ym2413_Emu* this, short* buf ) { this->out = buf; this->last_time = 0; } |
45 | 45 | ||
46 | static inline int Ym2413_run_until( struct Ym2413_Emu* this, int time ) | 46 | static 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 | ||
6 | static const int tl_coeff[] = { | 6 | static 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 | ||
312 | static const short sindb_coeff[] = { | 312 | static 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 | ||
395 | static const short lfo_freq_coeff[] = { | 395 | static 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 | ||
477 | static const short lfo_env_coeff[] = { | 477 | static 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 | ||
10 | typedef int cpu_time_t; | 10 | typedef int cpu_time_t; |
11 | typedef int addr_t; | 11 | typedef int addr_t; |
12 | 12 | ||
13 | enum { page_bits = 10 }; | 13 | enum { page_bits = 10 }; |
14 | enum { page_size = 1 << page_bits }; | 14 | enum { page_size = 1 << page_bits }; |
15 | enum { page_count = 0x10000 / page_size }; | 15 | enum { 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 |
18 | enum { cpu_padding = 0x100 }; | 18 | enum { 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 |
21 | enum { page_padding = 4 }; | 21 | enum { 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 | ||
30 | struct pairs_t { uint16_t bc, de, hl, fa; }; | 30 | struct 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 |
33 | struct registers_t { | 33 | struct 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 | ||
53 | struct cpu_state_t { | 53 | struct 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 | ||
60 | struct Z80_Cpu { | 60 | struct 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 | ||
70 | void Z80_init( struct Z80_Cpu* this ); | 70 | void 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 |
73 | void Z80_reset( struct Z80_Cpu* this, void* unmapped_write, void const* unmapped_read ); | 73 | void 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. |
78 | void Z80_map_mem( struct Z80_Cpu* this, addr_t addr, int size, void* write, void const* read ); | 78 | void 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 |
81 | static inline cpu_time_t Z80_time( struct Z80_Cpu* this ) { return this->cpu_state->time + this->cpu_state->base; } | 81 | static 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 |
84 | static inline void Z80_set_time( struct Z80_Cpu* this, cpu_time_t t ) { this->cpu_state->time = t - this->cpu_state->base; } | 84 | static inline void Z80_set_time( struct Z80_Cpu* this, cpu_time_t t ) { this->cpu_state->time = t - this->cpu_state->base; } |
85 | static inline void Z80_adjust_time( struct Z80_Cpu* this, int delta ) { this->cpu_state->time += delta; } | 85 | static 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 |
94 | static inline byte* Z80_write( struct Z80_Cpu* this, addr_t addr ) | 94 | static 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 | ||
99 | static inline byte const* Z80_read( struct Z80_Cpu* this, addr_t addr ) | 99 | static 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 | ||
104 | static inline void Z80_map_mem_rw( struct Z80_Cpu* this, addr_t addr, int size, void* p ) | 104 | static 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 | ||
109 | static inline void Z80_set_end_time( struct Z80_Cpu* this, cpu_time_t t ) | 109 | static 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, |
11 | though they NEVER have side-effects, so multiple evaluation is OK. | 11 | though 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", |
13 | so they must NOT be parenthesized. | 13 | so 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 |
15 | correctly inside a macro. TIME() is always correct, and between FLUSH_TIME() and | 15 | correctly inside a macro. TIME() is always correct, and between FLUSH_TIME() and |
16 | CACHE_TIME() the normal time changing functions can be used. | 16 | CACHE_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 |
56 | can redistribute it and/or modify it under the terms of the GNU Lesser | 56 | can redistribute it and/or modify it under the terms of the GNU Lesser |
57 | General Public License as published by the Free Software Foundation; either | 57 | General Public License as published by the Free Software Foundation; either |
58 | version 2.1 of the License, or (at your option) any later version. This | 58 | version 2.1 of the License, or (at your option) any later version. This |
59 | module is distributed in the hope that it will be useful, but WITHOUT ANY | 59 | module is distributed in the hope that it will be useful, but WITHOUT ANY |
60 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 60 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
61 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more | 61 | FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more |
62 | details. You should have received a copy of the GNU Lesser General Public | 62 | details. You should have received a copy of the GNU Lesser General Public |
63 | License along with this module; if not, write to the Free Software Foundation, | 63 | License along with this module; if not, write to the Free Software Foundation, |
64 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ | 64 | Inc., 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 |
73 | int const S80 = 0x80; | 73 | int const S80 = 0x80; |
74 | int const Z40 = 0x40; | 74 | int const Z40 = 0x40; |
75 | int const F20 = 0x20; | 75 | int const F20 = 0x20; |
76 | int const H10 = 0x10; | 76 | int const H10 = 0x10; |
77 | int const F08 = 0x08; | 77 | int const F08 = 0x08; |
78 | int const V04 = 0x04; | 78 | int const V04 = 0x04; |
79 | int const P04 = 0x04; | 79 | int const P04 = 0x04; |
80 | int const N02 = 0x02; | 80 | int const N02 = 0x02; |
81 | int const C01 = 0x01; | 81 | int 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 | ||
152 | bool warning = false; | 152 | bool 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 | ||
182 | call_not_taken: | 182 | call_not_taken: |
183 | s_time -= 7; | 183 | s_time -= 7; |
184 | jp_not_taken: | 184 | jp_not_taken: |
185 | pc += 2; | 185 | pc += 2; |
186 | loop: | 186 | loop: |
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 |
1677 | hit_idle_addr: | 1677 | hit_idle_addr: |
1678 | s_time -= 11; | 1678 | s_time -= 11; |
1679 | goto out_of_time; | 1679 | goto out_of_time; |
1680 | #endif | 1680 | #endif |
1681 | halt: | 1681 | halt: |
1682 | s_time &= 3; // increment by multiple of 4 | 1682 | s_time &= 3; // increment by multiple of 4 |
1683 | out_of_time: | 1683 | out_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 | ||
32 | const struct sound_settings_info audiohw_settings[] = { | 32 | const 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 | ||
43 | static int bass, treble; | 43 | static 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 */ |
46 | int tenthdb2master(int db) | 46 | int 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 | ||
57 | static void cscodec_setbits(int reg, unsigned char off, unsigned char on) | 57 | static 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 | ||
63 | static void audiohw_mute(bool mute) | 63 | static 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 | ||
69 | void audiohw_preinit(void) | 69 | void 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 | ||
116 | void audiohw_postinit(void) | 116 | void 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 | ||
126 | void audiohw_set_master_vol(int vol_l, int vol_r) | 126 | void 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 | ||
139 | void audiohw_set_lineout_vol(int vol_l, int vol_r) | 139 | void 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 | ||
152 | void audiohw_enable_lineout(bool enable) | 152 | void 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 | ||
162 | static void handle_dsp_power(void) | 162 | static 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 | ||
176 | void audiohw_set_bass(int value) | 176 | void 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 | ||
185 | void audiohw_set_treble(int value) | 185 | void 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 | ||
194 | void audiohw_set_bass_cutoff(int value) | 194 | void 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 | ||
200 | void audiohw_set_treble_cutoff(int value) | 200 | void 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 | ||
206 | void audiohw_set_prescaler(int value) | 206 | void 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 */ |
215 | void audiohw_close(void) | 215 | void 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 */ |
230 | void audiohw_set_frequency(int fsel) | 230 | void 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 |
397 | struct dma_lli | 397 | struct 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 |
5 | post_mortem_stub: | 5 | post_mortem_stub: |
6 | MSR CPSR_c, #0xD3 @ Supervisor mode, no IRQs, no FIQs | 6 | MSR CPSR_c, #0xD3 @ Supervisor mode, no IRQs, no FIQs |
7 | MRC p15, 0, R0,c1,c0 | 7 | MRC p15, 0, R0,c1,c0 |
8 | BIC R0, R0, #5 | 8 | BIC R0, R0, #5 |
9 | MCR p15, 0, R0,c1,c0 @ Disable the Protection Unit and DCache | 9 | MCR p15, 0, R0,c1,c0 @ Disable the Protection Unit and DCache |
10 | MOV R13, #0 | 10 | MOV R13, #0 |
11 | pms_flushcache_loop: | 11 | pms_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 |
20 | BNE pms_flushcache_loop | 20 | BNE pms_flushcache_loop |
21 | MCR p15, 0, R13,c7,c10,4 | 21 | MCR p15, 0, R13,c7,c10,4 |
22 | 22 | ||
23 | LDR R7, pms_00080200 | 23 | LDR R7, pms_00080200 |
24 | ORR R8, R7, #0x8000 | 24 | ORR R8, R7, #0x8000 |
25 | ADR R9, pms_recvbuf | 25 | ADR R9, pms_recvbuf |
26 | LDR R10, pms_20080040 | 26 | LDR R10, pms_20080040 |
27 | MOV R11, #0x38800000 | 27 | MOV R11, #0x38800000 |
28 | MOV R12, #1 | 28 | MOV R12, #1 |
29 | 29 | ||
30 | MOV R2, #0x3C400000 | 30 | MOV R2, #0x3C400000 |
31 | ADD R1, R2, #0x00100000 @ Enable USB clocks | 31 | ADD R1, R2, #0x00100000 @ Enable USB clocks |
32 | LDR R0, [R1,#0x28] | 32 | LDR R0, [R1,#0x28] |
33 | BIC R0, R0, #0x4000 | 33 | BIC R0, R0, #0x4000 |
34 | STR R0, [R1,#0x28] | 34 | STR R0, [R1,#0x28] |
35 | LDR R0, [R1,#0x40] | 35 | LDR R0, [R1,#0x40] |
36 | BIC R0, R0, #0x800 | 36 | BIC R0, R0, #0x800 |
37 | STR R0, [R1,#0x40] | 37 | STR R0, [R1,#0x40] |
38 | LDR R0, pms_20803180 @ Clocking config | 38 | LDR R0, pms_20803180 @ Clocking config |
39 | STR R0, [R1] | 39 | STR R0, [R1] |
40 | MOV R0, #0x280 | 40 | MOV R0, #0x280 |
41 | STR R0, [R1,#0x3C] | 41 | STR R0, [R1,#0x3C] |
42 | MRC p15, 0, R0,c1,c0 | 42 | MRC p15, 0, R0,c1,c0 |
43 | ORR R0, R0, #0xc0000000 | 43 | ORR R0, R0, #0xc0000000 |
44 | MCR p15, 0, R0,c1,c0 @ Asynchronous mode | 44 | MCR p15, 0, R0,c1,c0 @ Asynchronous mode |
45 | 45 | ||
46 | STR R13, [R11,#0xE00] @ PHY clock enable | 46 | STR R13, [R11,#0xE00] @ PHY clock enable |
47 | 47 | ||
48 | MOV R1, #0x800 | 48 | MOV R1, #0x800 |
49 | ORR R0, R2, #2 | 49 | ORR R0, R2, #2 |
50 | STR R0, [R11,#0x804] @ USB2 Gadget: Soft disconnect | 50 | STR R0, [R11,#0x804] @ USB2 Gadget: Soft disconnect |
51 | 51 | ||
52 | STR R13, [R2] @ USB2 PHY: Power on | 52 | STR R13, [R2] @ USB2 PHY: Power on |
53 | STR R12, [R2,#0x08] @ USB2 PHY: Assert Software Reset | 53 | STR R12, [R2,#0x08] @ USB2 PHY: Assert Software Reset |
54 | MOV R0, #0x10000 | 54 | MOV R0, #0x10000 |
55 | pms_wait: | 55 | pms_wait: |
56 | SUBS R0, R0, #1 | 56 | SUBS R0, R0, #1 |
57 | BNE pms_wait | 57 | BNE pms_wait |
58 | STR R13, [R2,#0x08] @ USB2 PHY: Deassert Software Reset | 58 | STR R13, [R2,#0x08] @ USB2 PHY: Deassert Software Reset |
59 | STR R13, [R2,#0x04] @ USB2 PHY: Clock is 48MHz | 59 | STR R13, [R2,#0x04] @ USB2 PHY: Clock is 48MHz |
60 | 60 | ||
61 | STR R12, [R11,#0x10] @ USB2 Gadget: Assert Core Software Reset | 61 | STR R12, [R11,#0x10] @ USB2 Gadget: Assert Core Software Reset |
62 | pms_waitcorereset: | 62 | pms_waitcorereset: |
63 | LDR R0, [R11,#0x10] @ USB2 Gadget: Wait for Core to reset | 63 | LDR R0, [R11,#0x10] @ USB2 Gadget: Wait for Core to reset |
64 | TST R0, #1 | 64 | TST R0, #1 |
65 | BNE pms_waitcorereset | 65 | BNE pms_waitcorereset |
66 | TST R0, #0x80000000 @ USB2 Gadget: Wait for AHB IDLE | 66 | TST R0, #0x80000000 @ USB2 Gadget: Wait for AHB IDLE |
67 | BEQ pms_waitcorereset | 67 | BEQ pms_waitcorereset |
68 | 68 | ||
69 | MOV R0, #0x200 | 69 | MOV R0, #0x200 |
70 | STR R0, [R11,#0x24] @ USB2 Gadget: RX FIFO size: 512 bytes | 70 | STR R0, [R11,#0x24] @ USB2 Gadget: RX FIFO size: 512 bytes |
71 | ORR R0, R0, #0x2000000 | 71 | ORR R0, R0, #0x2000000 |
72 | STR R0, [R11,#0x28] @ USB2 Gadget: Non-periodic TX FIFO size: 512 bytes | 72 | STR R0, [R11,#0x28] @ USB2 Gadget: Non-periodic TX FIFO size: 512 bytes |
73 | MOV R0, #0x26 | 73 | MOV R0, #0x26 |
74 | STR R0, [R11,#0x08] @ USB2 Gadget: DMA Enable, Burst Length: 4, Mask Interrupts | 74 | STR R0, [R11,#0x08] @ USB2 Gadget: DMA Enable, Burst Length: 4, Mask Interrupts |
75 | MOV R0, #0x1400 | 75 | MOV R0, #0x1400 |
76 | ADD R0, R0, #8 | 76 | ADD R0, R0, #8 |
77 | STR R0, [R11,#0x0C] @ USB2 Gadget: PHY IF is 16bit, Turnaround 5 | 77 | STR R0, [R11,#0x0C] @ USB2 Gadget: PHY IF is 16bit, Turnaround 5 |
78 | STR R1, [R11,#0x804] @ USB2 Gadget: Soft reconnect | 78 | STR R1, [R11,#0x804] @ USB2 Gadget: Soft reconnect |
79 | 79 | ||
80 | ADR R14, pms_ctrlbuf | 80 | ADR R14, pms_ctrlbuf |
81 | ORR R5, R8, #0x84000000 | 81 | ORR R5, R8, #0x84000000 |
82 | @ fallthrough | 82 | @ fallthrough |
83 | 83 | ||
84 | pms_mainloop: | 84 | pms_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 |
163 | B pms_mainloop | 163 | B pms_mainloop |
164 | 164 | ||
165 | pms_CLEAR_FEATURE: | 165 | pms_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 | ||
173 | pms_SET_CONFIGURATION: | 173 | pms_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 |
177 | B pms_SET_FEATURE @ zero-length ACK | 177 | B pms_SET_FEATURE @ zero-length ACK |
178 | 178 | ||
179 | pms_GET_CONFIGURATION: | 179 | pms_GET_CONFIGURATION: |
180 | MOV R1, #1 | 180 | MOV R1, #1 |
181 | STR R1, [R14] | 181 | STR R1, [R14] |
182 | @ fallthrough | 182 | @ fallthrough |
183 | 183 | ||
184 | pms_ctrlsend: | 184 | pms_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 |
191 | B pms_controldone | 191 | B pms_controldone |
192 | 192 | ||
193 | pms_GET_DESCRIPTOR: | 193 | pms_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 | ||
215 | pms_senddescriptor: | 215 | pms_senddescriptor: |
216 | LDRB R1, [R14] @ Descriptor length | 216 | LDRB R1, [R14] @ Descriptor length |
217 | @ fallthrough | 217 | @ fallthrough |
218 | 218 | ||
219 | pms_senddescriptorcustomsize: | 219 | pms_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 |
223 | B pms_ctrlsend | 223 | B pms_ctrlsend |
224 | 224 | ||
225 | pms_SET_ADDRESS: | 225 | pms_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 | ||
233 | pms_SET_FEATURE: | 233 | pms_SET_FEATURE: |
234 | MOV R1, #0 @ zero-length ACK | 234 | MOV R1, #0 @ zero-length ACK |
235 | B pms_ctrlsend | 235 | B pms_ctrlsend |
236 | 236 | ||
237 | pms_20803180: | 237 | pms_20803180: |
238 | .word 0x20803180 | 238 | .word 0x20803180 |
239 | 239 | ||
240 | .ltorg | 240 | .ltorg |
241 | 241 | ||
242 | .align 4 | 242 | .align 4 |
243 | 243 | ||
244 | pms_configurationdescriptor: | 244 | pms_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 | ||
254 | pms_devicedescriptor: | 254 | pms_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 | ||
261 | pms_00080200: | 261 | pms_00080200: |
262 | .word 0x00080200 | 262 | .word 0x00080200 |
263 | 263 | ||
264 | pms_20080040: | 264 | pms_20080040: |
265 | .word 0x20080040 | 265 | .word 0x20080040 |
266 | 266 | ||
267 | pms_000001FF: | 267 | pms_000001FF: |
268 | .word 0x000001FF | 268 | .word 0x000001FF |
269 | 269 | ||
270 | pms_devnamestringdescriptor: | 270 | pms_devnamestringdescriptor: |
271 | .word 0x0052030C | 271 | .word 0x0052030C |
272 | .word 0x00500042 | 272 | .word 0x00500042 |
273 | .word 0x0053004D | 273 | .word 0x0053004D |
274 | 274 | ||
275 | pms_langstringdescriptor: | 275 | pms_langstringdescriptor: |
276 | .word 0x04090304 | 276 | .word 0x04090304 |
277 | 277 | ||
278 | pms_ctrlbuf: | 278 | pms_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 | ||
296 | pms_recvbuf: | 296 | pms_recvbuf: |
297 | .word 0 | 297 | .word 0 |
298 | .word 0 | 298 | .word 0 |
299 | 299 | ||
300 | pms_GET_STATUS: | 300 | pms_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 |
306 | B pms_ctrlsend | 306 | B 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 | ||
39 | extern int lcd_type; | 39 | extern int lcd_type; |
40 | bool dbg_hw_info(void) | 40 | bool 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 | ||
130 | bool dbg_ports(void) | 130 | bool 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 | ||
29 | bool dbg_hw_info(void); | 29 | bool dbg_hw_info(void); |
30 | bool dbg_ports(void); | 30 | bool 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 | ||
42 | static struct mutex i2c_mtx[2]; | 42 | static struct mutex i2c_mtx[2]; |
43 | 43 | ||
44 | static void i2c_on(int bus) | 44 | static 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 | ||
59 | static void i2c_off(int bus) | 59 | static 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 | ||
68 | void i2c_init() | 68 | void 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 | ||
74 | int i2c_write(int bus, unsigned char slave, int address, int len, const unsigned char *data) | 74 | int 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 | ||
131 | int i2c_read(int bus, unsigned char slave, int address, int len, unsigned char *data) | 131 | int 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 | ||
30 | void INT_TIMERB(void) | 30 | void 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 | ||
38 | void tick_start(unsigned int interval_in_ms) | 38 | void 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 | ||
35 | static volatile int locked = 0; | 35 | static volatile int locked = 0; |
36 | static const int zerosample = 0; | 36 | static const int zerosample = 0; |
37 | static unsigned char dblbuf[2][PCM_WATERMARK * 4]; | 37 | static unsigned char dblbuf[2][PCM_WATERMARK * 4]; |
38 | static int active_dblbuf; | 38 | static int active_dblbuf; |
39 | struct dma_lli pcm_lli[PCM_LLICOUNT] __attribute__((aligned(16))); | 39 | struct dma_lli pcm_lli[PCM_LLICOUNT] __attribute__((aligned(16))); |
40 | static struct dma_lli* lastlli; | 40 | static struct dma_lli* lastlli; |
41 | static const unsigned char* dataptr; | 41 | static const unsigned char* dataptr; |
42 | size_t pcm_remaining; | 42 | size_t pcm_remaining; |
43 | size_t pcm_chunksize; | 43 | size_t pcm_chunksize; |
44 | 44 | ||
45 | /* Mask the DMA interrupt */ | 45 | /* Mask the DMA interrupt */ |
46 | void pcm_play_lock(void) | 46 | void 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 */ |
55 | void pcm_play_unlock(void) | 55 | void 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 | ||
62 | void INT_DMAC0C0(void) ICODE_ATTR; | 62 | void INT_DMAC0C0(void) ICODE_ATTR; |
63 | void INT_DMAC0C0(void) | 63 | void 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 | ||
121 | void pcm_play_dma_start(const void* addr, size_t size) | 121 | void 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 | ||
130 | void pcm_play_dma_stop(void) | 130 | void 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 */ |
137 | void pcm_play_dma_pause(bool pause) | 137 | void 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 | ||
143 | void pcm_play_dma_init(void) | 143 | void 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 | ||
155 | void pcm_play_dma_postinit(void) | 155 | void pcm_play_dma_postinit(void) |
156 | { | 156 | { |
157 | audiohw_postinit(); | 157 | audiohw_postinit(); |
158 | } | 158 | } |
159 | 159 | ||
160 | void pcm_dma_apply_settings(void) | 160 | void pcm_dma_apply_settings(void) |
161 | { | 161 | { |
162 | } | 162 | } |
163 | 163 | ||
164 | size_t pcm_get_bytes_waiting(void) | 164 | size_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 | ||
177 | const void* pcm_play_dma_get_peak_buffer(int *count) | 177 | const 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 |
184 | void * pcm_dma_addr(void *addr) | 184 | void * 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 |
195 | void pcm_rec_lock(void) | 195 | void pcm_rec_lock(void) |
196 | { | 196 | { |
197 | } | 197 | } |
198 | 198 | ||
199 | void pcm_rec_unlock(void) | 199 | void pcm_rec_unlock(void) |
200 | { | 200 | { |
201 | } | 201 | } |
202 | 202 | ||
203 | void pcm_rec_dma_stop(void) | 203 | void pcm_rec_dma_stop(void) |
204 | { | 204 | { |
205 | } | 205 | } |
206 | 206 | ||
207 | void pcm_rec_dma_start(void *addr, size_t size) | 207 | void 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 | ||
213 | void pcm_rec_dma_close(void) | 213 | void pcm_rec_dma_close(void) |
214 | { | 214 | { |
215 | } | 215 | } |
216 | 216 | ||
217 | 217 | ||
218 | void pcm_rec_dma_init(void) | 218 | void pcm_rec_dma_init(void) |
219 | { | 219 | { |
220 | } | 220 | } |
221 | 221 | ||
222 | 222 | ||
223 | const void * pcm_rec_dma_get_peak_buffer(void) | 223 | const 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 | ||
35 | extern struct dma_lli pcm_lli[PCM_LLICOUNT]; | 35 | extern struct dma_lli pcm_lli[PCM_LLICOUNT]; |
36 | extern size_t pcm_remaining; | 36 | extern size_t pcm_remaining; |
37 | extern size_t pcm_chunksize; | 37 | extern 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 | ||
41 | static inline void udelay(unsigned usecs) | 41 | static 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 | ||
31 | void INT_TIMERC(void) | 31 | void 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 | ||
41 | bool timer_set(long cycles, bool start) | 41 | bool 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 | ||
84 | bool timer_start(void) | 84 | bool 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 | ||
90 | void timer_stop(void) | 90 | void 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 @@ | |||
1 | tcctool for Windows | 1 | tcctool for Windows |
2 | ------------------- | 2 | ------------------- |
3 | 3 | ||
4 | Installation | 4 | Installation |
5 | ------------ | 5 | ------------ |
6 | 6 | ||
7 | When you first attach your device in USB boot mode to your computer, | 7 | When you first attach your device in USB boot mode to your computer, |
8 | Windows should display the Found New Hardware Wizard. | 8 | Windows should display the Found New Hardware Wizard. |
9 | 9 | ||
10 | If this doesn't appear, and if you have previously used a firmware | 10 | If this doesn't appear, and if you have previously used a firmware |
11 | recovery tool with your device, you will need to uninstall the USB | 11 | recovery tool with your device, you will need to uninstall the USB |
12 | driver used by that application. | 12 | driver used by that application. |
13 | 13 | ||
14 | Go into Control Panel -> System -> Hardware -> Device Manager, then | 14 | Go into Control Panel -> System -> Hardware -> Device Manager, then |
15 | click on Universal Serial Bus Controllers, look for something like | 15 | click 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 |
17 | Uninstall. | 17 | Uninstall. |
18 | 18 | ||
19 | After doing this, disconnect and reconnect your device and the Found | 19 | After doing this, disconnect and reconnect your device and the Found |
20 | New Hardware Wizard should appear. | 20 | New Hardware Wizard should appear. |
21 | 21 | ||
22 | Select "No, not this time" to the question about connecting to Windows | 22 | Select "No, not this time" to the question about connecting to Windows |
23 | Update, and select "Install from a list or specific location | 23 | Update, and select "Install from a list or specific location |
24 | (Advanced)" on the next screen. | 24 | (Advanced)" on the next screen. |
25 | 25 | ||
26 | On the next screen, select "Search for the best driver in these | 26 | On the next screen, select "Search for the best driver in these |
27 | locations", unselect "Search removable media", select "Include this | 27 | locations", unselect "Search removable media", select "Include this |
28 | location in the search:" and browse to the tcctool-driver-win32 | 28 | location in the search:" and browse to the tcctool-driver-win32 |
29 | folder. | 29 | folder. |
30 | 30 | ||
31 | You should now be able to run tcctool.exe | 31 | You 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>&Find:</string> | 26 | <string>&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&eplace with:</string> | 39 | <string>R&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&irection</string> | 65 | <string>D&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>&Down</string> | 71 | <string>&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>&Up</string> | 81 | <string>&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>&Options</string> | 91 | <string>&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>&Case sensitive</string> | 97 | <string>&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>&Whole words only</string> | 104 | <string>&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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> | 111 | <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> |
112 | <html><head><meta name="qrichtext" content="1" /><style type="text/css"> | 112 | <html><head><meta name="qrichtext" content="1" /><style type="text/css"> |
113 | p, li { white-space: pre-wrap; } | 113 | p, li { white-space: pre-wrap; } |
114 | </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> | 114 | </style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;"> |
115 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">whether the text to search should be interpreted as a regular expression.</p> | 115 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">whether the text to search should be interpreted as a regular expression.</p> |
116 | <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> | 116 | <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> |
117 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You may want to take a look at the syntax of regular expressions:</p> | 117 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You may want to take a look at the syntax of regular expressions:</p> |
118 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://doc.trolltech.com/qregexp.html"><span style=" text-decoration: underline; color:#0000ff;">http://doc.trolltech.com/qregexp.html</span></a></p></body></html></string> | 118 | <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a href="http://doc.trolltech.com/qregexp.html"><span style=" text-decoration: underline; color:#0000ff;">http://doc.trolltech.com/qregexp.html</span></a></p></body></html></string> |
119 | </property> | 119 | </property> |
120 | <property name="text"> | 120 | <property name="text"> |
121 | <string>R&egular Expression</string> | 121 | <string>R&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>&Find</string> | 143 | <string>&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>&Close</string> | 150 | <string>&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>&Replace</string> | 160 | <string>&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 &All</string> | 170 | <string>Replace &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" | ||