diff --git a/.gitignore b/.gitignore index a90336aa..b26df723 100644 --- a/.gitignore +++ b/.gitignore @@ -53,4 +53,6 @@ Starship.log dumps/ _packages/* *.DS_Store -srcjp/ \ No newline at end of file +src/jp/ +src/eu/ +src/cn/ \ No newline at end of file diff --git a/config.yml b/config.yml index b2289bb6..33cec5b7 100644 --- a/config.yml +++ b/config.yml @@ -65,7 +65,7 @@ d8b1088520f7c5f81433292a9258c1184afa1457: name: Star Fox 64 (JP) (V1.0) (Compressed) preprocess: decompress_mio0: - method: mioh0-comptool + method: mio0-comptool type: decompress target: d064229a32cc05ab85e2381ce07744eb3ffaf530 restart: true @@ -79,9 +79,9 @@ d064229a32cc05ab85e2381ce07744eb3ffaf530: logging: INFO output: binary: ./mods/sf64jp.o2r - code: srcjp/assets + code: src/jp/assets headers: include/assets - modding: srcjp/assets + modding: src/jp/assets # enums: # - include/sf64object.h # - include/sf64level.h @@ -95,7 +95,7 @@ d064229a32cc05ab85e2381ce07744eb3ffaf530: name: Star Fox 64 (EU) (V1.0) (Compressed) preprocess: decompress_mio0: - method: mioh0-comptool + method: mio0-comptool type: decompress target: 09f5d5c14219fc77a36c5a6ad5e63f7abd8b3385 restart: true @@ -109,9 +109,9 @@ d064229a32cc05ab85e2381ce07744eb3ffaf530: logging: INFO output: binary: ./mods/sf64eu.o2r - code: srceu/assets + code: src/eu/assets headers: include/assets - modding: srceu/assets + modding: src/eu/assets # enums: # - include/sf64object.h # - include/sf64level.h diff --git a/include/sf64audio_provisional.h b/include/sf64audio_provisional.h index b4d18620..952af4dc 100644 --- a/include/sf64audio_provisional.h +++ b/include/sf64audio_provisional.h @@ -6,8 +6,6 @@ #ifndef SF64_AUDIO_H #define SF64_AUDIO_H -#define AUDIO_EU 0 - #include #include "sf64audio_external.h" @@ -1236,7 +1234,6 @@ extern s16 gD_800DD200[]; extern f32 gHeadsetPanVolume[128]; extern f32 gStereoPanVolume[128]; extern f32 gDefaultPanVolume[128]; -extern u8 gVoiceLanguage; #ifdef __cplusplus } diff --git a/include/sfx.h b/include/sfx.h index 37394ccc..b7ed67c8 100644 --- a/include/sfx.h +++ b/include/sfx.h @@ -33,6 +33,7 @@ void Audio_SetEnvSfxReverb(s8 reverb); void Audio_PlayPauseSfx(u8 active); void Audio_PlayMapMenuSfx(u8 active); void Audio_KillAllSfx(void); +void Audio_SetVoiceLanguage(u8 language); #define AUDIO_PLAY_SFX(sfxId, srcPos, token) (Audio_PlaySfx((sfxId),(srcPos),(token),&gDefaultMod,&gDefaultMod,&gDefaultReverb)) diff --git a/src/audio/audio_context.c b/src/audio/audio_context.c index c40327c7..35084675 100644 --- a/src/audio/audio_context.c +++ b/src/audio/audio_context.c @@ -101,7 +101,6 @@ s16 gAiBuffLengths[3]; u32 gAudioRandom; u32 D_80155D88; volatile u32 gAudioResetTimer; -u8 gVoiceLanguage = 0; u64 gAudioContextEnd[2]; ReverbSettings D_800C74D0[2] = { { 1, 0x30, 0x3000, 0, 0 }, { 1, 0x40, 0x4000, 0xD000, 0x3000 } }; diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c index 25284aa4..315fbe97 100644 --- a/src/audio/audio_general.c +++ b/src/audio/audio_general.c @@ -3,6 +3,7 @@ #include "sf64context.h" #include "audiothread_cmd.h" #include "audioseq_cmd.h" +#include "port/Engine.h" void Audio_SetModulationAndPlaySfx(f32* sfxSource, u32 sfxId, f32 freqMod); s32 Audio_GetCurrentVoice(void); @@ -530,9 +531,9 @@ void Audio_SetSfxProperties(u8 bankId, u8 entryIndex, u8 channelId) { } break; case SFX_BANK_SYSTEM: - if (AUDIO_EU) { + if (GameEngine_HasVersion(SF64_VER_EU)) { if (entry->state == 2) { - AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelId, 1, gVoiceLanguage); + AUDIOCMD_CHANNEL_SET_IO(SEQ_PLAYER_SFX, channelId, 1, CVarGetInteger("gVoiceLanguage", 0)); } } if (sSfxChannelLayout == SFXCHAN_3) { @@ -2398,7 +2399,7 @@ void Audio_StopPlayerNoise(u8 playerId) { break; case FORM_LANDMASTER: sfxId = NA_SE_TANK_ENGIN; - if (AUDIO_EU) { + if (GameEngine_HasVersion(SF64_VER_EU)) { Audio_KillSfxBySourceAndId(gPlayer[playerId].sfx.srcPos, NA_SE_TANK_GO_UP); } break; @@ -2728,13 +2729,14 @@ void Audio_KillAllSfx(void) { } void Audio_SetVoiceLanguage(u8 language) { - gVoiceLanguage = language; - - if (gVoiceLanguage == 0) { - Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1); - } else { - // 0x42 sets voice language to Lylat ? - Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO_LYLAT, -1, 1); + switch (language) { + case 0: + default: + Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1); + break; + case 1: + Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO_LYLAT, -1, 1); + break; } } @@ -2755,7 +2757,7 @@ void Audio_InitSounds(void) { Audio_ResetSfxChannelState(); Audio_ResetActiveSequencesAndVolume(); Audio_ResetSfx(); - if (AUDIO_EU) { + if (GameEngine_HasVersion(SF64_VER_EU)) { AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(NA_BGM_VO_LYLAT, 0); } Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1); @@ -2767,8 +2769,8 @@ void Audio_RestartSeqPlayers(void) { s32 pad2; u16 fadeIn = 1; - if (AUDIO_EU) { - if (gVoiceLanguage == 0) { + if (GameEngine_HasVersion(SF64_VER_EU)) { + if (CVarGetInteger("gVoiceLanguage", 0) == 0) { Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO, -1, 1); } else { Audio_StartSequence(SEQ_PLAYER_VOICE, NA_BGM_VO_LYLAT, -1, 1); diff --git a/src/audio/audio_load.c b/src/audio/audio_load.c index 395348d5..8b950e2b 100644 --- a/src/audio/audio_load.c +++ b/src/audio/audio_load.c @@ -5,7 +5,6 @@ #include "assets/ast_audio.h" #include "port/Engine.h" #include "endianness.h" -#include "port/Engine.h" #include "port/resource/loaders/AudioLoader.h" s32 D_80146D80; diff --git a/src/port/Engine.cpp b/src/port/Engine.cpp index 27c7fb1e..7cac8971 100644 --- a/src/port/Engine.cpp +++ b/src/port/Engine.cpp @@ -542,6 +542,15 @@ int GameEngine::ShowYesNoBox(const char* title, const char* box) { return ret; } +bool GameEngine::HasVersion(SF64Version ver){ + auto versions = Ship::Context::GetInstance()->GetResourceManager()->GetArchiveManager()->GetGameVersions(); + return std::find(versions.begin(), versions.end(), ver) != versions.end(); +} + +extern "C" bool GameEngine_HasVersion(SF64Version ver) { + return GameEngine::HasVersion(ver); +} + extern "C" uint32_t GameEngine_GetSampleRate() { auto player = Ship::Context::GetInstance()->GetAudio()->GetAudioPlayer(); if (player == nullptr) { diff --git a/src/port/Engine.h b/src/port/Engine.h index e6cff565..999b7462 100644 --- a/src/port/Engine.h +++ b/src/port/Engine.h @@ -10,6 +10,12 @@ struct GamePool { void* memory; }; +typedef enum { + SF64_VER_US = 0x94F1D5A7, + SF64_VER_EU = 0x6EE9ADE7, + SF64_VER_JP = 0x3728D3E1 +} SF64Version; + #ifdef __cplusplus #include #include @@ -45,6 +51,7 @@ class GameEngine { static int ShowYesNoBox(const char* title, const char* box); static void ShowMessage(const char* title, const char* message, SDL_MessageBoxFlags type = SDL_MESSAGEBOX_ERROR); + static bool HasVersion(SF64Version ver); }; extern "C" void* GameEngine_Malloc(size_t size); @@ -56,6 +63,7 @@ extern "C" void* GameEngine_Malloc(size_t size); #else #include +bool GameEngine_HasVersion(SF64Version ver); void GameEngine_ProcessGfxCommands(Gfx* commands); float GameEngine_GetAspectRatio(); uint8_t GameEngine_OTRSigCheck(char* imgData); diff --git a/src/port/extractor/GameExtractor.cpp b/src/port/extractor/GameExtractor.cpp index 359d70e9..e4c2864d 100644 --- a/src/port/extractor/GameExtractor.cpp +++ b/src/port/extractor/GameExtractor.cpp @@ -14,6 +14,8 @@ std::unordered_map mGameList = { { "f7475fb11e7e6830f82883412638e8390791ab87", "Star Fox 64 (U) (V1.1) (Uncompressed)" }, { "9bd71afbecf4d0a43146e4e7a893395e19bf3220", "Star Fox 64 (J) (V1.0)" }, { "d064229a32cc05ab85e2381ce07744eb3ffaf530", "Star Fox 64 (J) (V1.0) (Uncompressed)" }, + { "05b307b8804f992af1a1e2fbafbd588501fdf799", "Star Fox 64 (E) (V1.0)" }, + { "09f5d5c14219fc77a36c5a6ad5e63f7abd8b3385", "Star Fox 64 (E) (V1.0) (Uncompressed)" }, }; bool GameExtractor::SelectGameFromUI() { diff --git a/src/port/ui/ImguiUI.cpp b/src/port/ui/ImguiUI.cpp index f20e7ca2..0b1aaf57 100644 --- a/src/port/ui/ImguiUI.cpp +++ b/src/port/ui/ImguiUI.cpp @@ -107,6 +107,10 @@ static const char* filters[3] = { "Linear", "None" }; +static const char* voiceLangs[] = { + "Original", /*"Japanese",*/ "Lylat" +}; + void DrawSettingsMenu(){ if(UIWidgets::BeginMenu("Settings")){ if (UIWidgets::BeginMenu("Audio")) { @@ -166,6 +170,21 @@ void DrawSettingsMenu(){ ImGui::EndMenu(); } + if(GameEngine::HasVersion(SF64_VER_EU)){ + UIWidgets::Spacer(0); + if (UIWidgets::BeginMenu("Language")) { + if (UIWidgets::CVarCombobox("Voices", "gVoiceLanguage", voiceLangs, + { + .tooltip = "Changes the language of the voice acting in the game", + .defaultIndex = 0, + })) { + Audio_SetVoiceLanguage(CVarGetInteger("gVoiceLanguage", 0)); + }; + ImGui::Dummy(ImVec2(ImGui::CalcTextSize(voiceLangs[0]).x + 55, 0.0f)); + ImGui::EndMenu(); + } + } + UIWidgets::Spacer(0); if (UIWidgets::BeginMenu("Controller")) { diff --git a/srcjp/audio/audio_tables.c b/srcjp/audio/audio_tables.c deleted file mode 100644 index 67aa78c0..00000000 --- a/srcjp/audio/audio_tables.c +++ /dev/null @@ -1,337 +0,0 @@ -#include "sys.h" -#include "sf64audio_provisional.h" - -// AudioTable gSampleBankTableInit = { -AudioTable D_800C0760 = { - { 4, 0, 0 }, - { - { 0x000000, 0x0DF120, MEDIUM_CART, CACHEPOLICY_4 }, - { 0x0DF120, 0x0D1D80, MEDIUM_CART, CACHEPOLICY_4 }, - { 0x1B0EA0, 0x48C480, MEDIUM_CART, CACHEPOLICY_4 }, - { 0x63D320, 0x0C3900, MEDIUM_CART, CACHEPOLICY_4 }, - }, -}; - -// AudioTable gSeqTableInit = { -AudioTable D_800C07B0 = { - { SEQ_ID_MAX, 0, 0 }, - { - { 0x00000, 0x3AF0, MEDIUM_CART, CACHEPOLICY_0 }, { 0x03AF0, 0x5990, MEDIUM_CART, CACHEPOLICY_0 }, - { 0x09480, 0x2D80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0C200, 0x1410, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x0D610, 0x1600, MEDIUM_CART, CACHEPOLICY_3 }, { 0x0EC10, 0xF20, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x0FB30, 0x13A0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x10ED0, 0x1100, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x11FD0, 0x19E0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x139B0, 0x13E0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x14D90, 0x12F0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_SECTOR_Y, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x16080, 0xB70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x16BF0, 0x2460, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x19050, 0xD40, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_FORTUNA, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_TITANIA, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x19D90, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x1A580, 0x1440, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1B9C0, 0x1B20, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x1D4E0, 0x1B30, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_CO_1, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x1F010, 0x10B0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_BOSS_BO, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x200C0, 0x1410, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x214D0, 0xF30, MEDIUM_CART, CACHEPOLICY_3 }, { 0x22400, 0x2B30, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x24F30, 0x7F0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x25720, 0x13B0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x26AD0, 0xC70, MEDIUM_CART, CACHEPOLICY_3 }, { 0x27740, 0x180, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x278C0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_TITLE, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x27E80, 0x4E40, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2CCC0, 0x14E0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x2E1A0, 0x400, MEDIUM_CART, CACHEPOLICY_3 }, { 0x2E5A0, 0x800, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x2EDA0, 0x1AB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x30850, 0x1AA0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_BOSS_ME, 0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x322F0, 0x1370, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x33660, 0xB80, MEDIUM_CART, CACHEPOLICY_3 }, { 0x341E0, 0x5C0, MEDIUM_CART, CACHEPOLICY_3 }, - { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_CO_INTRO, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x347A0, 0x550, MEDIUM_CART, CACHEPOLICY_3 }, { 0x34CF0, 0x360, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x35050, 0x620, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_VS_MENU, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x35670, 0xA70, MEDIUM_CART, CACHEPOLICY_3 }, { SEQ_ID_STAR_WOLF, 0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x360E0, 0xAB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x36B90, 0x13D0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x37F60, 0x250, MEDIUM_CART, CACHEPOLICY_3 }, { 0x381B0, 0x6F0, MEDIUM_CART, CACHEPOLICY_3 }, - { 0x388A0, 0xFB0, MEDIUM_CART, CACHEPOLICY_3 }, { 0x39850, 0x1780, MEDIUM_CART, CACHEPOLICY_3 }, - }, -}; -#define SOUNDFONT_ENTRY(offset, size, medium, cachePolicy, bank1, bank2, numInst, numDrums) \ - { \ - offset, size, medium, cachePolicy, (((bank1) &0xFF) << 8) | ((bank2) &0xFF), \ - (((numInst) &0xFF) << 8) | ((numDrums) &0xFF) \ - } - -AudioTable gSoundFontTableInit = { - { 33, 0, 0 }, - { - SOUNDFONT_ENTRY(0x0, 0x2f00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_SFX, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x2f00, 0x820, MEDIUM_CART, CACHEPOLICY_1, SAMPLES_MAP, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x3720, 0x6e0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x3e00, 0x15e0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x53e0, 0xc20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x6000, 0xfe0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x6fe0, 0x1360, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x8340, 0x1120, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x9460, 0xea0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xa300, 0xce0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xafe0, 0x1ba0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xcb80, 0xac0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xd640, 0xac0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xe100, 0xee0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xefe0, 0xc00, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0xfbe0, 0x10a0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x10c80, 0xf80, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x11c00, 0x10c0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x12cc0, 0x1380, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x14040, 0x2b20, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x16b60, 0x9a0, MEDIUM_CART, CACHEPOLICY_0, SAMPLES_VOICE, SAMPLES_NONE, 127, 0), - SOUNDFONT_ENTRY(0x17500, 0x1220, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64), - SOUNDFONT_ENTRY(0x18720, 0x180, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 3, 0), - SOUNDFONT_ENTRY(0x188a0, 0x11c0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 16, 64), - SOUNDFONT_ENTRY(0x19a60, 0x940, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1a3a0, 0x9e0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1ad80, 0x920, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1b6a0, 0x9e0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1c080, 0x9e0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1ca60, 0xa10, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1d470, 0x9e0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1de50, 0xa00, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - SOUNDFONT_ENTRY(0x1e850, 0x8d0, MEDIUM_CART, CACHEPOLICY_3, SAMPLES_INST, SAMPLES_NONE, 10, 64), - } -}; - -#define AS_BYTES(x) (((x) >> 8) & 0xFF), ((x) &0xFF) - -u8 gSeqFontTableInit[288] = { - AS_BYTES(132), - AS_BYTES(134), - AS_BYTES(155), - AS_BYTES(157), - AS_BYTES(159), - AS_BYTES(161), - AS_BYTES(163), - AS_BYTES(165), - AS_BYTES(167), - AS_BYTES(169), - AS_BYTES(171), - AS_BYTES(173), - AS_BYTES(175), - AS_BYTES(177), - AS_BYTES(179), - AS_BYTES(181), - AS_BYTES(183), - AS_BYTES(185), - AS_BYTES(187), - AS_BYTES(189), - AS_BYTES(191), - AS_BYTES(193), - AS_BYTES(195), - AS_BYTES(197), - AS_BYTES(199), - AS_BYTES(201), - AS_BYTES(203), - AS_BYTES(205), - AS_BYTES(207), - AS_BYTES(209), - AS_BYTES(211), - AS_BYTES(213), - AS_BYTES(215), - AS_BYTES(217), - AS_BYTES(219), - AS_BYTES(221), - AS_BYTES(223), - AS_BYTES(225), - AS_BYTES(227), - AS_BYTES(229), - AS_BYTES(231), - AS_BYTES(233), - AS_BYTES(235), - AS_BYTES(237), - AS_BYTES(239), - AS_BYTES(241), - AS_BYTES(243), - AS_BYTES(245), - AS_BYTES(247), - AS_BYTES(249), - AS_BYTES(251), - AS_BYTES(253), - AS_BYTES(255), - 1, - 1, - 1, - 3, - 1, - 5, - 1, - 7, - 1, - 9, - 1, - 11, - 1, - 13, - 1, - 15, - 1, - 17, - 1, - 19, - 1, - 21, - 1, - 23, - 1, - 25, - 1, - 0, - 20, - 20, - 19, - 18, - 17, - 16, - 15, - 14, - 13, - 12, - 11, - 10, - 9, - 8, - 7, - 6, - 5, - 4, - 3, - 1, - 2, - 1, - 24, - 1, - 29, - 1, - 25, - 1, - 26, - 1, - 28, - 1, - 25, - 1, - 25, - 1, - 29, - 1, - 24, - 1, - 29, - 1, - 28, - 1, - 25, - 1, - 30, - 1, - 24, - 1, - 25, - 1, - 28, - 1, - 28, - 1, - 31, - 1, - 31, - 1, - 28, - 1, - 28, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 28, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 31, - 1, - 32, - 1, - 21, - 1, - 21, - 1, - 22, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 23, - 1, - 25, - 1, - 21, - 1, - 21, - 1, - 29, - 1, - 25, - 1, - 31, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 21, - 1, - 27, - 1, - 25, - 1, - 21, - 1, - 25, - 1, - 25, - 1, - 25, - 1, - 21, - 1, - 31, - 0, - 0, - 0, - 0, - 0, -};