From 03ce166cca2b9d71b13b9af40cf6875698d36136 Mon Sep 17 00:00:00 2001 From: petrie911 <69443847+petrie911@users.noreply.github.com> Date: Thu, 23 May 2024 18:40:42 -0500 Subject: [PATCH] Implement common data in EU and JP and clean up US data (#258) * data fixes * format * alignment * include --- include/sf64audio_provisional.h | 61 +- include/sf64mesg.h | 977 ++++++++++++++++-- linker_scripts/eu/rev0/symbol_addrs.txt | 69 +- linker_scripts/jp/rev0/symbol_addrs.txt | 65 +- .../us/rev1/symbol_addrs_assets.txt | 2 +- src/audio/audio_general.c | 106 +- src/audio/audio_heap.c | 13 +- src/audio/audio_playback.c | 435 ++++---- src/audio/audio_synthesis.c | 39 +- src/audio/note_data.c | 2 +- src/overlays/ovl_i4/fox_bo.c | 7 + src/overlays/ovl_i4/fox_fo.c | 7 - srceu/audio/note_data.c | 1 + srceu/audio/wave_samples.c | 1 + srceu/engine/fox_msg_palette.c | 1 + srceu/engine/fox_rcp_init.c | 1 + srceu/engine/fox_shapes.c | 1 + srceu/engine/fox_wheels.c | 1 + srcjp/audio/note_data.c | 1 + srcjp/audio/wave_samples.c | 1 + srcjp/engine/fox_load_inits.c | 790 +------------- srcjp/engine/fox_msg_palette.c | 1 + srcjp/engine/fox_rcp_init.c | 1 + srcjp/engine/fox_shapes.c | 1 + srcjp/engine/fox_wheels.c | 1 + yamls/eu/rev0/main.yaml | 14 +- yamls/eu/rev0/overlays.yaml | 2 +- yamls/jp/rev0/main.yaml | 12 +- yamls/us/rev1/main.yaml | 6 +- yamls/us/rev1/overlays.yaml | 2 +- 30 files changed, 1306 insertions(+), 1315 deletions(-) create mode 100644 srceu/audio/note_data.c create mode 100644 srceu/audio/wave_samples.c create mode 100644 srceu/engine/fox_msg_palette.c create mode 100644 srceu/engine/fox_rcp_init.c create mode 100644 srceu/engine/fox_shapes.c create mode 100644 srceu/engine/fox_wheels.c create mode 100644 srcjp/audio/note_data.c create mode 100644 srcjp/audio/wave_samples.c create mode 100644 srcjp/engine/fox_msg_palette.c create mode 100644 srcjp/engine/fox_rcp_init.c create mode 100644 srcjp/engine/fox_shapes.c create mode 100644 srcjp/engine/fox_wheels.c diff --git a/include/sf64audio_provisional.h b/include/sf64audio_provisional.h index 512c07c0..6e463203 100644 --- a/include/sf64audio_provisional.h +++ b/include/sf64audio_provisional.h @@ -179,15 +179,18 @@ typedef struct { /* 0x00 */ u32 start; /* 0x04 */ u32 end; /* 0x08 */ u32 count; - /* 0x0C */ char unk_0C[0x4]; - /* 0x10 */ s16 predictorState[16]; // only exists if count != 0. 8-byte aligned -} AdpcmLoop; // size = 0x30 (or 0x10) + /* 0x10 */ u64 predictorState[4]; // only exists if count != 0. 8-byte aligned +} AdpcmLoop; // size = 0x30 or 0x10, 0x8 aligned typedef struct { /* 0x00 */ s32 order; /* 0x04 */ s32 numPredictors; - /* 0x08 */ s16 book[1]; // size 8 * order * numPredictors. 8-byte aligned -} AdpcmBook; // size >= 0x8 + #ifdef AVOID_UB + /* 0x08 */ u64 book[]; // size 8 * order * numPredictors. + #else + /* 0x08 */ u64 book[1]; // size 8 * order * numPredictors. + #endif +} AdpcmBook; // size >= 8, 0x8 aligned typedef struct { /* 0x00 */ u32 codec : 4; // The state of compression or decompression @@ -261,10 +264,10 @@ typedef struct { /* 0x004 */ u8 downsampleRate; /* 0x005 */ s8 unk_05; /* 0x006 */ u16 windowSize; - /* 0x008 */ u16 unk_08; + /* 0x008 */ u16 decayRatio; // determines how much reverb persists /* 0x00A */ u16 unk_0A; - /* 0x00C */ u16 decayRatio; // determines how much reverb persists - /* 0x00E */ u16 unk_0E; + /* 0x00C */ u16 leakRtL; + /* 0x00E */ u16 leakLtR; /* 0x010 */ s32 nextRingBufPos; /* 0x014 */ s32 unk_20; /* 0x018 */ s32 bufSizePerChan; @@ -512,9 +515,7 @@ typedef struct { /* 0x0C */ NoteSynthesisBuffers* synthesisBuffers; /* 0x10 */ s16 curVolLeft; /* 0x12 */ s16 curVolRight; - /* 0x14 */ char unk_14[0x6]; - /* 0x1A */ u8 combFilterNeedsInit; - /* 0x1C */ char unk_1C[0x4]; + /* 0x14 */ char unk_14[0xC]; } NoteSynthesisState; // size = 0x20 typedef struct { @@ -563,17 +564,16 @@ typedef struct { struct { /* 0x01 */ u8 reverbIndex : 3; /* 0x01 */ u8 bookOffset : 3; - // /* 0x01 */ u8 isSyntheticWave : 1; /* 0x01 */ u8 isSyntheticWave : 1; /* 0x01 */ u8 hasTwoParts : 1; } bitField1; - /* 0x02 */ u8 unk_02; - /* 0x03 */ u8 unk_03; - /* 0x04 */ u8 unk_04; - /* 0x05 */ u8 unk_05; - /* 0x06 */ u16 unk_06; - /* 0x08 */ u16 unk_08; - /* 0x0A */ u16 unk_0A; + /* 0x02 */ u8 gain; + /* 0x03 */ u8 leftDelaySize; + /* 0x04 */ u8 rightDelaySize; + /* 0x05 */ u8 reverb; + /* 0x06 */ u16 panVolLeft; + /* 0x08 */ u16 panVolRight; + /* 0x0A */ u16 resampleRate; /* 0x0C */ s16* waveSampleAddr; } NoteSubEu; // size = 0x10 @@ -588,9 +588,9 @@ typedef struct Note { typedef struct { /* 0x00 */ u8 downsampleRate; /* 0x02 */ u8 windowSize; - /* 0x02 */ u16 unk_2; - /* 0x04 */ u16 decayRatio; // determines how much reverb persists - /* 0x06 */ u16 unk_6; + /* 0x02 */ u16 decayRatio; // determines how much reverb persists + /* 0x04 */ u16 leakRtL; + /* 0x06 */ u16 leakLtR; } ReverbSettings; // size = 0x8 /** @@ -816,13 +816,6 @@ typedef struct SampleDma { /* 0x0E */ u8 ttl; // duration after which the DMA can be discarded } SampleDma; // size = 0x10 -typedef struct { - /* 0x00 */ OSTask task; - /* 0x40 */ OSMesgQueue* mesgQueue; - /* 0x44 */ void* unk_44; // probably a message that gets unused. - /* 0x48 */ char unk_48[0x8]; -} AudioTask; // size = 0x50 - typedef struct { /* 0x00 */ u8 reverbVol; /* 0x01 */ u8 gain; // Increases volume by a multiplicative scaling factor. Represented as a UQ4.4 number @@ -873,7 +866,7 @@ typedef struct { typedef struct { /* 0x0 */ u16 seqId; - /* 0x2 */ u16 unk_2; + /* 0x2 */ u16 audioSpec; /* 0x4 */ u8 bgmParam; } SoundTestTrack; // size: 0x6 @@ -897,7 +890,7 @@ typedef struct { typedef struct { /* 0x00 */ u32 sfxId; - /* 0x04 */ f32* pos; + /* 0x04 */ f32* source; /* 0x08 */ u8 token; /* 0x0C */ f32* freqMod; /* 0x10 */ f32* volMod; @@ -1195,8 +1188,8 @@ extern EnvelopePoint gDefaultEnvelope[]; extern NoteSubEu gZeroNoteSub; extern NoteSubEu gDefaultNoteSub; extern s16 D_800DD200[]; -extern f32 gHeadsetPanVolume[]; -extern f32 gStereoPanVolume[]; -extern f32 gDefaultPanVolume[]; +extern f32 gHeadsetPanVolume[128]; +extern f32 gStereoPanVolume[128]; +extern f32 gDefaultPanVolume[128]; #endif diff --git a/include/sf64mesg.h b/include/sf64mesg.h index 3f7ded2c..c1bee19e 100644 --- a/include/sf64mesg.h +++ b/include/sf64mesg.h @@ -68,104 +68,889 @@ void Radio_Draw(void); typedef enum MsgCharCode { // Non-printing and whitespace - /* 0 */ MSGCHAR_END, // End message - /* 1 */ MSGCHAR_NWL, // New line - /* 2 */ MSGCHAR_NP2, // No effect - /* 3 */ MSGCHAR_NP3, // No effect - /* 4 */ MSGCHAR_NP4, // No effect - /* 5 */ MSGCHAR_NP5, // No effect - /* 6 */ MSGCHAR_NP6, // No effect - /* 7 */ MSGCHAR_NP7, // No effect - /* 8 */ MSGCHAR_PRI0, // Set message priority - /* 9 */ MSGCHAR_PRI1, // Set message priority - /* 10 */ MSGCHAR_PRI2, // Set message priority - /* 11 */ MSGCHAR_PRI3, // Set message priority - /* 12 */ MSGCHAR_SPC, // Space - /* 13 */ MSGCHAR_QSP, // Quarter space - /* 14 */ MSGCHAR_HSP, // Half Space - /* 15 */ MSGCHAR_NXT, // Next text box + /* 0 */ MSGCHAR_END, // End message + /* 1 */ MSGCHAR_NWL, // New line + /* 2 */ MSGCHAR_NP2, // No effect + /* 3 */ MSGCHAR_NP3, // No effect + /* 4 */ MSGCHAR_NP4, // No effect + /* 5 */ MSGCHAR_NP5, // No effect + /* 6 */ MSGCHAR_NP6, // No effect + /* 7 */ MSGCHAR_NP7, // No effect + /* 8 */ MSGCHAR_PRI0, // Set message priority + /* 9 */ MSGCHAR_PRI1, // Set message priority + /* 10 */ MSGCHAR_PRI2, // Set message priority + /* 11 */ MSGCHAR_PRI3, // Set message priority + /* 12 */ MSGCHAR_SPC, // Space + /* 13 */ MSGCHAR_QSP, // Quarter space + /* 14 */ MSGCHAR_HSP, // Half Space + /* 15 */ MSGCHAR_NXT, // Next text box // printing characters - /* 16 */ MSGCHAR_CLF, // C-Left - /* 17 */ MSGCHAR_CUP, // C-Up - /* 18 */ MSGCHAR_CRT, // C-Right - /* 19 */ MSGCHAR_CDN, // C-Down - /* 20 */ MSGCHAR_AUP, // Up arrow - /* 21 */ MSGCHAR_ALF, // Left arrow - /* 22 */ MSGCHAR_ADN, // Down arrow - /* 23 */ MSGCHAR_ART, // Right arrow - /* 24 */ MSGCHAR_A, // A - /* 25 */ MSGCHAR_B, // B - /* 26 */ MSGCHAR_C, // C - /* 27 */ MSGCHAR_D, // D - /* 28 */ MSGCHAR_E, // E - /* 29 */ MSGCHAR_F, // F - /* 30 */ MSGCHAR_G, // G - /* 31 */ MSGCHAR_H, // H - /* 32 */ MSGCHAR_I, // I - /* 33 */ MSGCHAR_J, // J - /* 34 */ MSGCHAR_K, // K - /* 35 */ MSGCHAR_L, // L - /* 36 */ MSGCHAR_M, // M - /* 37 */ MSGCHAR_N, // N - /* 38 */ MSGCHAR_O, // O - /* 39 */ MSGCHAR_P, // P - /* 40 */ MSGCHAR_Q, // Q - /* 41 */ MSGCHAR_R, // R - /* 42 */ MSGCHAR_S, // S - /* 43 */ MSGCHAR_T, // T - /* 44 */ MSGCHAR_U, // U - /* 45 */ MSGCHAR_V, // V - /* 46 */ MSGCHAR_W, // W - /* 47 */ MSGCHAR_X, // X - /* 48 */ MSGCHAR_Y, // Y - /* 49 */ MSGCHAR_Z, // Z - /* 50 */ MSGCHAR_a, // a - /* 51 */ MSGCHAR_b, // b - /* 52 */ MSGCHAR_c, // c - /* 53 */ MSGCHAR_d, // d - /* 54 */ MSGCHAR_e, // e - /* 55 */ MSGCHAR_f, // f - /* 56 */ MSGCHAR_g, // g - /* 57 */ MSGCHAR_h, // h - /* 58 */ MSGCHAR_i, // i - /* 59 */ MSGCHAR_j, // j - /* 60 */ MSGCHAR_k, // k - /* 61 */ MSGCHAR_l, // l - /* 62 */ MSGCHAR_m, // m - /* 63 */ MSGCHAR_n, // n - /* 64 */ MSGCHAR_o, // o - /* 65 */ MSGCHAR_p, // p - /* 66 */ MSGCHAR_q, // q - /* 67 */ MSGCHAR_r, // r - /* 68 */ MSGCHAR_s, // s - /* 69 */ MSGCHAR_t, // t - /* 70 */ MSGCHAR_u, // u - /* 71 */ MSGCHAR_v, // v - /* 72 */ MSGCHAR_w, // w - /* 73 */ MSGCHAR_x, // x - /* 74 */ MSGCHAR_y, // y - /* 75 */ MSGCHAR_z, // z - /* 76 */ MSGCHAR_EXM, // ! - /* 77 */ MSGCHAR_QST, // ? - /* 78 */ MSGCHAR_DSH, // - - /* 79 */ MSGCHAR_CMA, // , - /* 80 */ MSGCHAR_PRD, // . - /* 81 */ MSGCHAR_0, // 0 - /* 82 */ MSGCHAR_1, // 1 - /* 83 */ MSGCHAR_2, // 2 - /* 84 */ MSGCHAR_3, // 3 - /* 85 */ MSGCHAR_4, // 4 - /* 86 */ MSGCHAR_5, // 5 - /* 87 */ MSGCHAR_6, // 6 - /* 88 */ MSGCHAR_7, // 7 - /* 89 */ MSGCHAR_8, // 8 - /* 90 */ MSGCHAR_9, // 9 - /* 91 */ MSGCHAR_APS, // ' - /* 92 */ MSGCHAR_LPR, // ( - /* 93 */ MSGCHAR_RPR, // ) - /* 94 */ MSGCHAR_CLN, // : - /* 95 */ MSGCHAR_PIP, // | + /* 16 */ MSGCHAR_CLF, // C-Left + /* 17 */ MSGCHAR_CUP, // C-Up + /* 18 */ MSGCHAR_CRT, // C-Right + /* 19 */ MSGCHAR_CDN, // C-Down + /* 20 */ MSGCHAR_AUP, // Up arrow + /* 21 */ MSGCHAR_ALF, // Left arrow + /* 22 */ MSGCHAR_ADN, // Down arrow + /* 23 */ MSGCHAR_ART, // Right arrow + /* 24 */ MSGCHAR_A, // A + /* 25 */ MSGCHAR_B, // B + /* 26 */ MSGCHAR_C, // C + /* 27 */ MSGCHAR_D, // D + /* 28 */ MSGCHAR_E, // E + /* 29 */ MSGCHAR_F, // F + /* 30 */ MSGCHAR_G, // G + /* 31 */ MSGCHAR_H, // H + /* 32 */ MSGCHAR_I, // I + /* 33 */ MSGCHAR_J, // J + /* 34 */ MSGCHAR_K, // K + /* 35 */ MSGCHAR_L, // L + /* 36 */ MSGCHAR_M, // M + /* 37 */ MSGCHAR_N, // N + /* 38 */ MSGCHAR_O, // O + /* 39 */ MSGCHAR_P, // P + /* 40 */ MSGCHAR_Q, // Q + /* 41 */ MSGCHAR_R, // R + /* 42 */ MSGCHAR_S, // S + /* 43 */ MSGCHAR_T, // T + /* 44 */ MSGCHAR_U, // U + /* 45 */ MSGCHAR_V, // V + /* 46 */ MSGCHAR_W, // W + /* 47 */ MSGCHAR_X, // X + /* 48 */ MSGCHAR_Y, // Y + /* 49 */ MSGCHAR_Z, // Z + /* 50 */ MSGCHAR_a, // a + /* 51 */ MSGCHAR_b, // b + /* 52 */ MSGCHAR_c, // c + /* 53 */ MSGCHAR_d, // d + /* 54 */ MSGCHAR_e, // e + /* 55 */ MSGCHAR_f, // f + /* 56 */ MSGCHAR_g, // g + /* 57 */ MSGCHAR_h, // h + /* 58 */ MSGCHAR_i, // i + /* 59 */ MSGCHAR_j, // j + /* 60 */ MSGCHAR_k, // k + /* 61 */ MSGCHAR_l, // l + /* 62 */ MSGCHAR_m, // m + /* 63 */ MSGCHAR_n, // n + /* 64 */ MSGCHAR_o, // o + /* 65 */ MSGCHAR_p, // p + /* 66 */ MSGCHAR_q, // q + /* 67 */ MSGCHAR_r, // r + /* 68 */ MSGCHAR_s, // s + /* 69 */ MSGCHAR_t, // t + /* 70 */ MSGCHAR_u, // u + /* 71 */ MSGCHAR_v, // v + /* 72 */ MSGCHAR_w, // w + /* 73 */ MSGCHAR_x, // x + /* 74 */ MSGCHAR_y, // y + /* 75 */ MSGCHAR_z, // z + /* 76 */ MSGCHAR_EXM, // ! + /* 77 */ MSGCHAR_QST, // ? + /* 78 */ MSGCHAR_DSH, // - + /* 79 */ MSGCHAR_CMA, // , + /* 80 */ MSGCHAR_PRD, // . + /* 81 */ MSGCHAR_0, // 0 + /* 82 */ MSGCHAR_1, // 1 + /* 83 */ MSGCHAR_2, // 2 + /* 84 */ MSGCHAR_3, // 3 + /* 85 */ MSGCHAR_4, // 4 + /* 86 */ MSGCHAR_5, // 5 + /* 87 */ MSGCHAR_6, // 6 + /* 88 */ MSGCHAR_7, // 7 + /* 89 */ MSGCHAR_8, // 8 + /* 90 */ MSGCHAR_9, // 9 + /* 91 */ MSGCHAR_APS, // ' + /* 92 */ MSGCHAR_LPR, // ( + /* 93 */ MSGCHAR_RPR, // ) + /* 94 */ MSGCHAR_CLN, // : + + // PAL exclusive characters + /* 95 */ MSGCHAR_e_grave, // è, placeholder in US + /* 96 */ MSGCHAR_e_acute, // é + /* 97 */ MSGCHAR_a_grave, // à + /* 98 */ MSGCHAR_e_hat, // ê + /* 99 */ MSGCHAR_i_hat, // î + /*100 */ MSGCHAR_o_hat, // ô + /*101 */ MSGCHAR_i_umlaut, // ï + /*102 */ MSGCHAR_u_hat, // û + /*103 */ MSGCHAR_c_cedilla, // ç + /*104 */ MSGCHAR_a_hat, // â + /*105 */ MSGCHAR_u_grave, // ú + /*106 */ MSGCHAR_u_umlaut, // ü + /*107 */ MSGCHAR_o_umlaut, // ö + /*108 */ MSGCHAR_a_umlaut, // ä + /*109 */ MSGCHAR_eszett, // ß + /*110 */ MSGCHAR_U_UMLAUT, // Ü + + // PAL placeholder textures + /*111 */ MSGCHAR_111, + /*112 */ MSGCHAR_112, + /*113 */ MSGCHAR_113, + /*114 */ MSGCHAR_114, + /*115 */ MSGCHAR_115, + /*116 */ MSGCHAR_116, + /*117 */ MSGCHAR_117, + /*118 */ MSGCHAR_118, + /*119 */ MSGCHAR_119, + /*120 */ MSGCHAR_120, + /*121 */ MSGCHAR_121, + /*122 */ MSGCHAR_122, + /*123 */ MSGCHAR_123, + /*124 */ MSGCHAR_124, + /*125 */ MSGCHAR_125, + /*126 */ MSGCHAR_126, + /*127 */ MSGCHAR_127, } MsgCharCode; +typedef enum MsgMojiCode { + // Non-printing and whitespace + /* 0 */ MSGMOJI_0, + /* 1 */ MSGMOJI_1, + /* 2 */ MSGMOJI_2, + /* 3 */ MSGMOJI_3, + /* 4 */ MSGMOJI_4, + /* 5 */ MSGMOJI_5, + /* 6 */ MSGMOJI_6, + /* 7 */ MSGMOJI_7, + /* 8 */ MSGMOJI_8, + /* 9 */ MSGMOJI_9, + /* 10 */ MSGMOJI_10, + /* 11 */ MSGMOJI_11, + /* 12 */ MSGMOJI_12, + /* 13 */ MSGMOJI_13, + /* 14 */ MSGMOJI_14, + /* 15 */ MSGMOJI_15, + + // Hiragana + /* 16 */ MSGMOJI_16, // a + /* 17 */ MSGMOJI_17, // A + /* 18 */ MSGMOJI_18, // i + /* 19 */ MSGMOJI_19, // I + /* 20 */ MSGMOJI_20, // u + /* 21 */ MSGMOJI_21, // U + /* 22 */ MSGMOJI_22, // e + /* 23 */ MSGMOJI_23, // E + /* 24 */ MSGMOJI_24, // o + /* 25 */ MSGMOJI_25, // O + /* 26 */ MSGMOJI_26, // ga + /* 27 */ MSGMOJI_27, // ka + /* 28 */ MSGMOJI_28, // gi + /* 29 */ MSGMOJI_29, // ki + /* 30 */ MSGMOJI_30, // gu + /* 31 */ MSGMOJI_31, // ku + /* 32 */ MSGMOJI_32, // ge + /* 33 */ MSGMOJI_33, // ke + /* 34 */ MSGMOJI_34, // go + /* 35 */ MSGMOJI_35, // ko + /* 36 */ MSGMOJI_36, // za + /* 37 */ MSGMOJI_37, // sa + /* 38 */ MSGMOJI_38, // ji + /* 39 */ MSGMOJI_39, // shi + /* 40 */ MSGMOJI_40, // zu + /* 41 */ MSGMOJI_41, // su + /* 42 */ MSGMOJI_42, // ze + /* 43 */ MSGMOJI_43, // se + /* 44 */ MSGMOJI_44, // zo + /* 45 */ MSGMOJI_45, // so + /* 46 */ MSGMOJI_46, // da + /* 47 */ MSGMOJI_47, // ta + /* 48 */ MSGMOJI_48, // ji + /* 49 */ MSGMOJI_49, // chi + /* 50 */ MSGMOJI_50, // sokuon + /* 51 */ MSGMOJI_51, // zu + /* 52 */ MSGMOJI_52, // tsu + /* 53 */ MSGMOJI_53, // de + /* 54 */ MSGMOJI_54, // te + /* 55 */ MSGMOJI_55, // do + /* 56 */ MSGMOJI_56, // to + /* 57 */ MSGMOJI_57, // na + /* 58 */ MSGMOJI_58, // ni + /* 59 */ MSGMOJI_59, // nu + /* 60 */ MSGMOJI_60, // ne + /* 61 */ MSGMOJI_61, // no + /* 62 */ MSGMOJI_62, // ba + /* 63 */ MSGMOJI_63, // pa + /* 64 */ MSGMOJI_64, // ha + /* 65 */ MSGMOJI_65, // bi + /* 66 */ MSGMOJI_66, // pi + /* 67 */ MSGMOJI_67, // hi + /* 68 */ MSGMOJI_68, // bu + /* 69 */ MSGMOJI_69, // pu + /* 70 */ MSGMOJI_70, // fu + /* 71 */ MSGMOJI_71, // be + /* 72 */ MSGMOJI_72, // pe + /* 73 */ MSGMOJI_73, // he + /* 74 */ MSGMOJI_74, // bo + /* 75 */ MSGMOJI_75, // po + /* 76 */ MSGMOJI_76, // ho + /* 77 */ MSGMOJI_77, // ma + /* 78 */ MSGMOJI_78, // mi + /* 79 */ MSGMOJI_79, // mu + /* 80 */ MSGMOJI_80, // me + /* 81 */ MSGMOJI_81, // mo + /* 82 */ MSGMOJI_82, // ya + /* 83 */ MSGMOJI_83, // Ya + /* 84 */ MSGMOJI_84, // yu + /* 85 */ MSGMOJI_85, // Yu + /* 86 */ MSGMOJI_86, // yo + /* 87 */ MSGMOJI_87, // Yo + /* 88 */ MSGMOJI_88, // ra + /* 89 */ MSGMOJI_89, // ri + /* 90 */ MSGMOJI_90, // ru + /* 91 */ MSGMOJI_91, // re + /* 92 */ MSGMOJI_92, // ro + /* 93 */ MSGMOJI_93, // wa + /* 94 */ MSGMOJI_94, // wo + /* 95 */ MSGMOJI_95, // n + + // Katakana + /* 96 */ MSGMOJI_96, // a + /* 97 */ MSGMOJI_97, // A + /* 98 */ MSGMOJI_98, // i + /* 99 */ MSGMOJI_99, // I + /* 100 */ MSGMOJI_100, // u + /* 101 */ MSGMOJI_101, // U + /* 102 */ MSGMOJI_102, // e + /* 103 */ MSGMOJI_103, // E + /* 104 */ MSGMOJI_104, // o + /* 105 */ MSGMOJI_105, // O + /* 106 */ MSGMOJI_106, // ga + /* 107 */ MSGMOJI_107, // ka + /* 108 */ MSGMOJI_108, // gi + /* 109 */ MSGMOJI_109, // ki + /* 110 */ MSGMOJI_110, // gu + /* 111 */ MSGMOJI_111, // ku + /* 112 */ MSGMOJI_112, // ge + /* 113 */ MSGMOJI_113, // ke + /* 114 */ MSGMOJI_114, // go + /* 115 */ MSGMOJI_115, // ko + /* 116 */ MSGMOJI_116, // za + /* 117 */ MSGMOJI_117, // sa + /* 118 */ MSGMOJI_118, // ji + /* 119 */ MSGMOJI_119, // shi + /* 120 */ MSGMOJI_120, // zu + /* 121 */ MSGMOJI_121, // su + /* 122 */ MSGMOJI_122, // ze + /* 123 */ MSGMOJI_123, // se + /* 124 */ MSGMOJI_124, // zo + /* 125 */ MSGMOJI_125, // so + /* 126 */ MSGMOJI_126, // da + /* 127 */ MSGMOJI_127, // ta + /* 128 */ MSGMOJI_128, // dji + /* 129 */ MSGMOJI_129, // chi + /* 130 */ MSGMOJI_130, // sokuon + /* 131 */ MSGMOJI_131, // dzu + /* 132 */ MSGMOJI_132, // tsu + /* 133 */ MSGMOJI_133, // de + /* 134 */ MSGMOJI_134, // te + /* 135 */ MSGMOJI_135, // do + /* 136 */ MSGMOJI_136, // to + /* 137 */ MSGMOJI_137, // na + /* 138 */ MSGMOJI_138, // ni + /* 139 */ MSGMOJI_139, // nu + /* 140 */ MSGMOJI_140, // ne + /* 141 */ MSGMOJI_141, // no + /* 142 */ MSGMOJI_142, // ba + /* 143 */ MSGMOJI_143, // pa + /* 144 */ MSGMOJI_144, // ha + /* 145 */ MSGMOJI_145, // bi + /* 146 */ MSGMOJI_146, // pi + /* 147 */ MSGMOJI_147, // hi + /* 148 */ MSGMOJI_148, // bu + /* 149 */ MSGMOJI_149, // pu + /* 150 */ MSGMOJI_150, // fu + /* 151 */ MSGMOJI_151, // be + /* 152 */ MSGMOJI_152, // pe + /* 153 */ MSGMOJI_153, // he + /* 154 */ MSGMOJI_154, // bo + /* 155 */ MSGMOJI_155, // po + /* 156 */ MSGMOJI_156, // ho + /* 157 */ MSGMOJI_157, // ma + /* 158 */ MSGMOJI_158, // mi + /* 159 */ MSGMOJI_159, // mu + /* 160 */ MSGMOJI_160, // me + /* 161 */ MSGMOJI_161, // mo + /* 162 */ MSGMOJI_162, // ya + /* 163 */ MSGMOJI_163, // Ya + /* 164 */ MSGMOJI_164, // yu + /* 165 */ MSGMOJI_165, // Yu + /* 166 */ MSGMOJI_166, // yo + /* 167 */ MSGMOJI_167, // Yo + /* 168 */ MSGMOJI_168, // ra + /* 169 */ MSGMOJI_169, // ri + /* 170 */ MSGMOJI_170, // ru + /* 171 */ MSGMOJI_171, // re + /* 172 */ MSGMOJI_172, // ro + /* 173 */ MSGMOJI_173, // wa + /* 174 */ MSGMOJI_174, // wo + /* 175 */ MSGMOJI_175, // n + /* 176 */ MSGMOJI_176, // choonpu + + // Kanji and other symbols + + /* 177 */ MSGMOJI_177, // C-Left + /* 178 */ MSGMOJI_178, // C-Right + /* 179 */ MSGMOJI_179, // C-Down + /* 180 */ MSGMOJI_180, // C-Up + /* 181 */ MSGMOJI_181, + /* 182 */ MSGMOJI_182, + /* 183 */ MSGMOJI_183, // Numeral 4 + /* 184 */ MSGMOJI_184, + /* 185 */ MSGMOJI_185, + /* 186 */ MSGMOJI_186, // Center dot + /* 187 */ MSGMOJI_187, + /* 188 */ MSGMOJI_188, + /* 189 */ MSGMOJI_189, + /* 190 */ MSGMOJI_190, + /* 191 */ MSGMOJI_191, + /* 192 */ MSGMOJI_192, + /* 193 */ MSGMOJI_193, + /* 194 */ MSGMOJI_194, + /* 195 */ MSGMOJI_195, // Latin D + /* 196 */ MSGMOJI_196, // Latin r + /* 197 */ MSGMOJI_197, // Period + /* 198 */ MSGMOJI_198, + /* 199 */ MSGMOJI_199, + /* 200 */ MSGMOJI_200, + /* 201 */ MSGMOJI_201, + /* 202 */ MSGMOJI_202, + /* 203 */ MSGMOJI_203, + /* 204 */ MSGMOJI_204, + /* 205 */ MSGMOJI_205, + /* 206 */ MSGMOJI_206, + /* 207 */ MSGMOJI_207, + /* 208 */ MSGMOJI_208, + /* 209 */ MSGMOJI_209, + /* 210 */ MSGMOJI_210, + /* 211 */ MSGMOJI_211, + /* 212 */ MSGMOJI_212, + /* 213 */ MSGMOJI_213, + /* 214 */ MSGMOJI_214, + /* 215 */ MSGMOJI_215, + /* 216 */ MSGMOJI_216, + /* 217 */ MSGMOJI_217, // Numeral 5 + /* 218 */ MSGMOJI_218, + /* 219 */ MSGMOJI_219, + /* 220 */ MSGMOJI_220, + /* 221 */ MSGMOJI_221, + /* 222 */ MSGMOJI_222, + /* 223 */ MSGMOJI_223, + /* 224 */ MSGMOJI_224, + /* 225 */ MSGMOJI_225, + /* 226 */ MSGMOJI_226, // Numeral 3 + /* 227 */ MSGMOJI_227, + /* 228 */ MSGMOJI_228, + /* 229 */ MSGMOJI_229, + /* 230 */ MSGMOJI_230, + /* 231 */ MSGMOJI_231, + /* 232 */ MSGMOJI_232, + /* 233 */ MSGMOJI_233, + /* 234 */ MSGMOJI_234, + /* 235 */ MSGMOJI_235, + /* 236 */ MSGMOJI_236, + /* 237 */ MSGMOJI_237, + /* 238 */ MSGMOJI_238, + /* 239 */ MSGMOJI_239, + /* 240 */ MSGMOJI_240, + /* 241 */ MSGMOJI_241, + /* 242 */ MSGMOJI_242, + /* 243 */ MSGMOJI_243, + /* 244 */ MSGMOJI_244, + /* 245 */ MSGMOJI_245, + /* 246 */ MSGMOJI_246, + /* 247 */ MSGMOJI_247, + /* 248 */ MSGMOJI_248, + /* 249 */ MSGMOJI_249, + /* 250 */ MSGMOJI_250, + /* 251 */ MSGMOJI_251, + /* 252 */ MSGMOJI_252, + /* 253 */ MSGMOJI_253, + /* 254 */ MSGMOJI_254, + /* 255 */ MSGMOJI_255, + /* 256 */ MSGMOJI_256, + /* 257 */ MSGMOJI_257, + /* 258 */ MSGMOJI_258, + /* 259 */ MSGMOJI_259, + /* 260 */ MSGMOJI_260, + /* 261 */ MSGMOJI_261, + /* 262 */ MSGMOJI_262, + /* 263 */ MSGMOJI_263, + /* 264 */ MSGMOJI_264, + /* 265 */ MSGMOJI_265, + /* 266 */ MSGMOJI_266, + /* 267 */ MSGMOJI_267, // ! + /* 268 */ MSGMOJI_268, + /* 269 */ MSGMOJI_269, + /* 270 */ MSGMOJI_270, + /* 271 */ MSGMOJI_271, + /* 272 */ MSGMOJI_272, + /* 273 */ MSGMOJI_273, + /* 274 */ MSGMOJI_274, + /* 275 */ MSGMOJI_275, + /* 276 */ MSGMOJI_276, + /* 277 */ MSGMOJI_277, + /* 278 */ MSGMOJI_278, + /* 279 */ MSGMOJI_279, + /* 280 */ MSGMOJI_280, + /* 281 */ MSGMOJI_281, + /* 282 */ MSGMOJI_282, + /* 283 */ MSGMOJI_283, + /* 284 */ MSGMOJI_284, + /* 285 */ MSGMOJI_285, + /* 286 */ MSGMOJI_286, + /* 287 */ MSGMOJI_287, + /* 288 */ MSGMOJI_288, + /* 289 */ MSGMOJI_289, + /* 290 */ MSGMOJI_290, + /* 291 */ MSGMOJI_291, + /* 292 */ MSGMOJI_292, // ? + /* 293 */ MSGMOJI_293, + /* 294 */ MSGMOJI_294, + /* 295 */ MSGMOJI_295, + /* 296 */ MSGMOJI_296, + /* 297 */ MSGMOJI_297, + /* 298 */ MSGMOJI_298, + /* 299 */ MSGMOJI_299, + /* 300 */ MSGMOJI_300, + /* 301 */ MSGMOJI_301, + /* 302 */ MSGMOJI_302, + /* 303 */ MSGMOJI_303, + /* 304 */ MSGMOJI_304, + /* 305 */ MSGMOJI_305, + /* 306 */ MSGMOJI_306, + /* 307 */ MSGMOJI_307, + /* 308 */ MSGMOJI_308, + /* 309 */ MSGMOJI_309, + /* 310 */ MSGMOJI_310, + /* 311 */ MSGMOJI_311, + /* 312 */ MSGMOJI_312, + /* 313 */ MSGMOJI_313, + /* 314 */ MSGMOJI_314, + /* 315 */ MSGMOJI_315, + /* 316 */ MSGMOJI_316, + /* 317 */ MSGMOJI_317, + /* 318 */ MSGMOJI_318, + /* 319 */ MSGMOJI_319, + /* 320 */ MSGMOJI_320, + /* 321 */ MSGMOJI_321, + /* 322 */ MSGMOJI_322, + /* 323 */ MSGMOJI_323, + /* 324 */ MSGMOJI_324, + /* 325 */ MSGMOJI_325, + /* 326 */ MSGMOJI_326, + /* 327 */ MSGMOJI_327, + /* 328 */ MSGMOJI_328, + /* 329 */ MSGMOJI_329, + /* 330 */ MSGMOJI_330, + /* 331 */ MSGMOJI_331, + /* 332 */ MSGMOJI_332, + /* 333 */ MSGMOJI_333, + /* 334 */ MSGMOJI_334, + /* 335 */ MSGMOJI_335, + /* 336 */ MSGMOJI_336, + /* 337 */ MSGMOJI_337, + /* 338 */ MSGMOJI_338, + /* 339 */ MSGMOJI_339, + /* 340 */ MSGMOJI_340, + /* 341 */ MSGMOJI_341, + /* 342 */ MSGMOJI_342, + /* 343 */ MSGMOJI_343, // Latin Y + /* 344 */ MSGMOJI_344, + /* 345 */ MSGMOJI_345, + /* 346 */ MSGMOJI_346, + /* 347 */ MSGMOJI_347, + /* 348 */ MSGMOJI_348, + /* 349 */ MSGMOJI_349, + /* 350 */ MSGMOJI_350, + /* 351 */ MSGMOJI_351, + /* 352 */ MSGMOJI_352, + /* 353 */ MSGMOJI_353, + /* 354 */ MSGMOJI_354, + /* 355 */ MSGMOJI_355, + /* 356 */ MSGMOJI_356, + /* 357 */ MSGMOJI_357, + /* 358 */ MSGMOJI_358, + /* 359 */ MSGMOJI_359, + /* 360 */ MSGMOJI_360, // Latin G + /* 361 */ MSGMOJI_361, + /* 362 */ MSGMOJI_362, + /* 363 */ MSGMOJI_363, + /* 364 */ MSGMOJI_364, + /* 365 */ MSGMOJI_365, // Latin O + /* 366 */ MSGMOJI_366, // Latin K + /* 367 */ MSGMOJI_367, + /* 368 */ MSGMOJI_368, + /* 369 */ MSGMOJI_369, + /* 370 */ MSGMOJI_370, + /* 371 */ MSGMOJI_371, // ~ + /* 372 */ MSGMOJI_372, + /* 373 */ MSGMOJI_373, + /* 374 */ MSGMOJI_374, + /* 375 */ MSGMOJI_375, // Latin Z + /* 376 */ MSGMOJI_376, // Latin R + /* 377 */ MSGMOJI_377, // Numeral 2 + /* 378 */ MSGMOJI_378, + /* 379 */ MSGMOJI_379, + /* 380 */ MSGMOJI_380, + /* 381 */ MSGMOJI_381, // Latin C + /* 382 */ MSGMOJI_382, + /* 383 */ MSGMOJI_383, + /* 384 */ MSGMOJI_384, + /* 385 */ MSGMOJI_385, + /* 386 */ MSGMOJI_386, + /* 387 */ MSGMOJI_387, + /* 388 */ MSGMOJI_388, + /* 389 */ MSGMOJI_389, + /* 390 */ MSGMOJI_390, + /* 391 */ MSGMOJI_391, + /* 392 */ MSGMOJI_392, + /* 393 */ MSGMOJI_393, + /* 394 */ MSGMOJI_394, + /* 395 */ MSGMOJI_395, + /* 396 */ MSGMOJI_396, + /* 397 */ MSGMOJI_397, + /* 398 */ MSGMOJI_398, + /* 399 */ MSGMOJI_399, + /* 400 */ MSGMOJI_400, + /* 401 */ MSGMOJI_401, + /* 402 */ MSGMOJI_402, + /* 403 */ MSGMOJI_403, + /* 404 */ MSGMOJI_404, + /* 405 */ MSGMOJI_405, + /* 406 */ MSGMOJI_406, + /* 407 */ MSGMOJI_407, + /* 408 */ MSGMOJI_408, + /* 409 */ MSGMOJI_409, + /* 410 */ MSGMOJI_410, + /* 411 */ MSGMOJI_411, + /* 412 */ MSGMOJI_412, + /* 413 */ MSGMOJI_413, + /* 414 */ MSGMOJI_414, + /* 415 */ MSGMOJI_415, + /* 416 */ MSGMOJI_416, + /* 417 */ MSGMOJI_417, + /* 418 */ MSGMOJI_418, + /* 419 */ MSGMOJI_419, + /* 420 */ MSGMOJI_420, + /* 421 */ MSGMOJI_421, + /* 422 */ MSGMOJI_422, + /* 423 */ MSGMOJI_423, + /* 424 */ MSGMOJI_424, + /* 425 */ MSGMOJI_425, + /* 426 */ MSGMOJI_426, + /* 427 */ MSGMOJI_427, + /* 428 */ MSGMOJI_428, + /* 429 */ MSGMOJI_429, + /* 430 */ MSGMOJI_430, + /* 431 */ MSGMOJI_431, + /* 432 */ MSGMOJI_432, + /* 433 */ MSGMOJI_433, + /* 434 */ MSGMOJI_434, + /* 435 */ MSGMOJI_435, + /* 436 */ MSGMOJI_436, // Numeral 1 + /* 437 */ MSGMOJI_437, + /* 438 */ MSGMOJI_438, + /* 439 */ MSGMOJI_439, + /* 440 */ MSGMOJI_440, + /* 441 */ MSGMOJI_441, + /* 442 */ MSGMOJI_442, + /* 443 */ MSGMOJI_443, + /* 444 */ MSGMOJI_444, + /* 445 */ MSGMOJI_445, + /* 446 */ MSGMOJI_446, + /* 447 */ MSGMOJI_447, + /* 448 */ MSGMOJI_448, + /* 449 */ MSGMOJI_449, + /* 450 */ MSGMOJI_450, + /* 451 */ MSGMOJI_451, + /* 452 */ MSGMOJI_452, + /* 453 */ MSGMOJI_453, + /* 454 */ MSGMOJI_454, + /* 455 */ MSGMOJI_455, + /* 456 */ MSGMOJI_456, + /* 457 */ MSGMOJI_457, + /* 458 */ MSGMOJI_458, + /* 459 */ MSGMOJI_459, + /* 460 */ MSGMOJI_460, + /* 461 */ MSGMOJI_461, + /* 462 */ MSGMOJI_462, + /* 463 */ MSGMOJI_463, + /* 464 */ MSGMOJI_464, + /* 465 */ MSGMOJI_465, + /* 466 */ MSGMOJI_466, + /* 467 */ MSGMOJI_467, + /* 468 */ MSGMOJI_468, + /* 469 */ MSGMOJI_469, + /* 470 */ MSGMOJI_470, + /* 471 */ MSGMOJI_471, + /* 472 */ MSGMOJI_472, + /* 473 */ MSGMOJI_473, + /* 474 */ MSGMOJI_474, + /* 475 */ MSGMOJI_475, + /* 476 */ MSGMOJI_476, + /* 477 */ MSGMOJI_477, + /* 478 */ MSGMOJI_478, + /* 479 */ MSGMOJI_479, + /* 480 */ MSGMOJI_480, + /* 481 */ MSGMOJI_481, + /* 482 */ MSGMOJI_482, + /* 483 */ MSGMOJI_483, + /* 484 */ MSGMOJI_484, + /* 485 */ MSGMOJI_485, + /* 486 */ MSGMOJI_486, + /* 487 */ MSGMOJI_487, + /* 488 */ MSGMOJI_488, + /* 489 */ MSGMOJI_489, + /* 490 */ MSGMOJI_490, + /* 491 */ MSGMOJI_491, + /* 492 */ MSGMOJI_492, + /* 493 */ MSGMOJI_493, + /* 494 */ MSGMOJI_494, + /* 495 */ MSGMOJI_495, + /* 496 */ MSGMOJI_496, + /* 497 */ MSGMOJI_497, + /* 498 */ MSGMOJI_498, + /* 499 */ MSGMOJI_499, + /* 500 */ MSGMOJI_500, + /* 501 */ MSGMOJI_501, + /* 502 */ MSGMOJI_502, + /* 503 */ MSGMOJI_503, + /* 504 */ MSGMOJI_504, + /* 505 */ MSGMOJI_505, + /* 506 */ MSGMOJI_506, + /* 507 */ MSGMOJI_507, + /* 508 */ MSGMOJI_508, + /* 509 */ MSGMOJI_509, + /* 510 */ MSGMOJI_510, + /* 511 */ MSGMOJI_511, + /* 512 */ MSGMOJI_512, + /* 513 */ MSGMOJI_513, + /* 514 */ MSGMOJI_514, + /* 515 */ MSGMOJI_515, + /* 516 */ MSGMOJI_516, + /* 517 */ MSGMOJI_517, + /* 518 */ MSGMOJI_518, + /* 519 */ MSGMOJI_519, + /* 520 */ MSGMOJI_520, + /* 521 */ MSGMOJI_521, + /* 522 */ MSGMOJI_522, + /* 523 */ MSGMOJI_523, + /* 524 */ MSGMOJI_524, // Numeral 0 + /* 525 */ MSGMOJI_525, + /* 526 */ MSGMOJI_526, + /* 527 */ MSGMOJI_527, + /* 528 */ MSGMOJI_528, + /* 529 */ MSGMOJI_529, + /* 530 */ MSGMOJI_530, + /* 531 */ MSGMOJI_531, + /* 532 */ MSGMOJI_532, + /* 533 */ MSGMOJI_533, + /* 534 */ MSGMOJI_534, + /* 535 */ MSGMOJI_535, + /* 536 */ MSGMOJI_536, + /* 537 */ MSGMOJI_537, + /* 538 */ MSGMOJI_538, + /* 539 */ MSGMOJI_539, + /* 540 */ MSGMOJI_540, + /* 541 */ MSGMOJI_541, + /* 542 */ MSGMOJI_542, + /* 543 */ MSGMOJI_543, + /* 544 */ MSGMOJI_544, + /* 545 */ MSGMOJI_545, + /* 546 */ MSGMOJI_546, + /* 547 */ MSGMOJI_547, + /* 548 */ MSGMOJI_548, + /* 549 */ MSGMOJI_549, + /* 550 */ MSGMOJI_550, + /* 551 */ MSGMOJI_551, + /* 552 */ MSGMOJI_552, + /* 553 */ MSGMOJI_553, + /* 554 */ MSGMOJI_554, + /* 555 */ MSGMOJI_555, + /* 556 */ MSGMOJI_556, + /* 557 */ MSGMOJI_557, + /* 558 */ MSGMOJI_558, + /* 559 */ MSGMOJI_559, + /* 560 */ MSGMOJI_560, + /* 561 */ MSGMOJI_561, + /* 562 */ MSGMOJI_562, + /* 563 */ MSGMOJI_563, + /* 564 */ MSGMOJI_564, + /* 565 */ MSGMOJI_565, + /* 566 */ MSGMOJI_566, + /* 567 */ MSGMOJI_567, + /* 568 */ MSGMOJI_568, + /* 569 */ MSGMOJI_569, + /* 570 */ MSGMOJI_570, + /* 571 */ MSGMOJI_571, + /* 572 */ MSGMOJI_572, + /* 573 */ MSGMOJI_573, + /* 574 */ MSGMOJI_574, + /* 575 */ MSGMOJI_575, + /* 576 */ MSGMOJI_576, + /* 577 */ MSGMOJI_577, + /* 578 */ MSGMOJI_578, + /* 579 */ MSGMOJI_579, + /* 580 */ MSGMOJI_580, + /* 581 */ MSGMOJI_581, + /* 582 */ MSGMOJI_582, + /* 583 */ MSGMOJI_583, + /* 584 */ MSGMOJI_584, + /* 585 */ MSGMOJI_585, + /* 586 */ MSGMOJI_586, + /* 587 */ MSGMOJI_587, + /* 588 */ MSGMOJI_588, + /* 589 */ MSGMOJI_589, + /* 590 */ MSGMOJI_590, + /* 591 */ MSGMOJI_591, + /* 592 */ MSGMOJI_592, + /* 593 */ MSGMOJI_593, + /* 594 */ MSGMOJI_594, + /* 595 */ MSGMOJI_595, + /* 596 */ MSGMOJI_596, + /* 597 */ MSGMOJI_597, + /* 598 */ MSGMOJI_598, + /* 599 */ MSGMOJI_599, + /* 600 */ MSGMOJI_600, + /* 601 */ MSGMOJI_601, + /* 602 */ MSGMOJI_602, + /* 603 */ MSGMOJI_603, // Numeral 9 + /* 604 */ MSGMOJI_604, + /* 605 */ MSGMOJI_605, + /* 606 */ MSGMOJI_606, + /* 607 */ MSGMOJI_607, // Numeral 6 + /* 608 */ MSGMOJI_608, + /* 609 */ MSGMOJI_609, // Numeral 8 + /* 610 */ MSGMOJI_610, + /* 611 */ MSGMOJI_611, + /* 612 */ MSGMOJI_612, + /* 613 */ MSGMOJI_613, + /* 614 */ MSGMOJI_614, + /* 615 */ MSGMOJI_615, + /* 616 */ MSGMOJI_616, + /* 617 */ MSGMOJI_617, + /* 618 */ MSGMOJI_618, + /* 619 */ MSGMOJI_619, + /* 620 */ MSGMOJI_620, + /* 621 */ MSGMOJI_621, + /* 622 */ MSGMOJI_622, + /* 623 */ MSGMOJI_623, + /* 624 */ MSGMOJI_624, + /* 625 */ MSGMOJI_625, + /* 626 */ MSGMOJI_626, + /* 627 */ MSGMOJI_627, + /* 628 */ MSGMOJI_628, + /* 629 */ MSGMOJI_629, + /* 630 */ MSGMOJI_630, + /* 631 */ MSGMOJI_631, + /* 632 */ MSGMOJI_632, + /* 633 */ MSGMOJI_633, + /* 634 */ MSGMOJI_634, + /* 635 */ MSGMOJI_635, + /* 636 */ MSGMOJI_636, + /* 637 */ MSGMOJI_637, + /* 638 */ MSGMOJI_638, + /* 639 */ MSGMOJI_639, + /* 640 */ MSGMOJI_640, + /* 641 */ MSGMOJI_641, + /* 642 */ MSGMOJI_642, + /* 643 */ MSGMOJI_643, + /* 644 */ MSGMOJI_644, + /* 645 */ MSGMOJI_645, + /* 646 */ MSGMOJI_646, + /* 647 */ MSGMOJI_647, + /* 648 */ MSGMOJI_648, + /* 649 */ MSGMOJI_649, + /* 650 */ MSGMOJI_650, + /* 651 */ MSGMOJI_651, + /* 652 */ MSGMOJI_652, + /* 653 */ MSGMOJI_653, + /* 654 */ MSGMOJI_654, + /* 655 */ MSGMOJI_655, + /* 656 */ MSGMOJI_656, + /* 657 */ MSGMOJI_657, + /* 658 */ MSGMOJI_658, + /* 659 */ MSGMOJI_659, + /* 660 */ MSGMOJI_660, + /* 661 */ MSGMOJI_661, + /* 662 */ MSGMOJI_662, + /* 663 */ MSGMOJI_663, + /* 664 */ MSGMOJI_664, + /* 665 */ MSGMOJI_665, + /* 666 */ MSGMOJI_666, + /* 667 */ MSGMOJI_667, + /* 668 */ MSGMOJI_668, + /* 669 */ MSGMOJI_669, + /* 670 */ MSGMOJI_670, + /* 671 */ MSGMOJI_671, + /* 672 */ MSGMOJI_672, + /* 673 */ MSGMOJI_673, + /* 674 */ MSGMOJI_674, + /* 675 */ MSGMOJI_675, + /* 676 */ MSGMOJI_676, + /* 677 */ MSGMOJI_677, + /* 678 */ MSGMOJI_678, + /* 679 */ MSGMOJI_679, + /* 680 */ MSGMOJI_680, + /* 681 */ MSGMOJI_681, + /* 682 */ MSGMOJI_682, + /* 683 */ MSGMOJI_683, + /* 684 */ MSGMOJI_684, + /* 685 */ MSGMOJI_685, + /* 686 */ MSGMOJI_686, + /* 687 */ MSGMOJI_687, + /* 688 */ MSGMOJI_688, + /* 689 */ MSGMOJI_689, + /* 690 */ MSGMOJI_690, + /* 691 */ MSGMOJI_691, // Latin B + /* 692 */ MSGMOJI_692, + /* 693 */ MSGMOJI_693, + /* 694 */ MSGMOJI_694, + /* 695 */ MSGMOJI_695, + /* 696 */ MSGMOJI_696, + /* 697 */ MSGMOJI_697, + /* 698 */ MSGMOJI_698, + /* 699 */ MSGMOJI_699, + /* 700 */ MSGMOJI_700, // Latin A + /* 701 */ MSGMOJI_701, + /* 702 */ MSGMOJI_702, + /* 703 */ MSGMOJI_703, + /* 704 */ MSGMOJI_704, + /* 705 */ MSGMOJI_705, + /* 706 */ MSGMOJI_706, + /* 707 */ MSGMOJI_707, + /* 708 */ MSGMOJI_708, + /* 709 */ MSGMOJI_709, + /* 710 */ MSGMOJI_710, + /* 711 */ MSGMOJI_711, + /* 712 */ MSGMOJI_712, + /* 713 */ MSGMOJI_713, + /* 714 */ MSGMOJI_714, + /* 715 */ MSGMOJI_715, // Latin U + /* 716 */ MSGMOJI_716, + /* 717 */ MSGMOJI_717, + /* 718 */ MSGMOJI_718, + /* 719 */ MSGMOJI_719, + /* 720 */ MSGMOJI_720, + /* 721 */ MSGMOJI_721, + /* 722 */ MSGMOJI_722, + /* 723 */ MSGMOJI_723, + /* 724 */ MSGMOJI_724, // Latin P + /* 725 */ MSGMOJI_725, + /* 726 */ MSGMOJI_726, + + // Blank textures + /* 727 */ MSGMOJI_727, + /* 728 */ MSGMOJI_728, + /* 729 */ MSGMOJI_729, + /* 730 */ MSGMOJI_730, + /* 731 */ MSGMOJI_731, + /* 732 */ MSGMOJI_732, + /* 733 */ MSGMOJI_733, + /* 734 */ MSGMOJI_734, + /* 735 */ MSGMOJI_735, +} MsgMojiCode; + #endif diff --git a/linker_scripts/eu/rev0/symbol_addrs.txt b/linker_scripts/eu/rev0/symbol_addrs.txt index c1c99525..0a546268 100644 --- a/linker_scripts/eu/rev0/symbol_addrs.txt +++ b/linker_scripts/eu/rev0/symbol_addrs.txt @@ -2399,53 +2399,48 @@ D_800D60AC = 0x800D60AC; D_800D60BC = 0x800D60BC; D_800D60D0 = 0x800D60D0; D_800DA910 = 0x800DA910; -D_800DA940 = 0x800DA940; +D_Gfx_800D94D0 = 0x800DA940; D_800DA958 = 0x800DA958; D_800DAAC8 = 0x800DAAC8; -D_800DAAF8 = 0x800DAAF8; +D_Gfx_800D9688 = 0x800DAAF8; D_800DAB10 = 0x800DAB10; D_800DABD0 = 0x800DABD0; D_800DAD80 = 0x800DAD80; D_800DADC0 = 0x800DADC0; -D_800DAE68 = 0x800DAE68; +D_Tex_800D99F8 = 0x800DAE68; D_800DB668 = 0x800DB668; D_800DBEC8 = 0x800DBEC8; D_800DBF68 = 0x800DBF68; D_800DBFB0 = 0x800DBFB0; D_800DC050 = 0x800DC050; -D_800DC090 = 0x800DC090; +D_Gfx_800DAC20 = 0x800DC090; D_800DC0F0 = 0x800DC0F0; -D_800DC128 = 0x800DC128; -D_800DC928 = 0x800DC928; -D_800DCE90 = 0x800DCE90; +D_Tex_800DACB8 = 0x800DC128; +D_Tex_800DB4B8 = 0x800DC928; +gTextCharPalettes = 0x800DCE90; D_800DCF10 = 0x800DCF10; -D_800DDC10 = 0x800DDC10; -D_800DDC80 = 0x800DDC80; -D_800DDE80 = 0x800DDE80; -D_800DE080 = 0x800DE080; -D_800DE280 = 0x800DE280; -D_800DE480 = 0x800DE480; -D_800DE680 = 0x800DE680; -D_800DE888 = 0x800DE888; -D_800DE8A0 = 0x800DE8A0; -D_800DEAA0 = 0x800DEAA0; -D_800DECA0 = 0x800DECA0; -D_800DF0A0 = 0x800DF0A0; -D_800DF2A0 = 0x800DF2A0; -D_800DF2B0 = 0x800DF2B0; -D_800DF2C0 = 0x800DF2C0; -D_800DF2D0 = 0x800DF2D0; -D_800DF2E0 = 0x800DF2E0; -D_800DF2F0 = 0x800DF2F0; -D_800DF36E = 0x800DF36E; -D_800DF372 = 0x800DF372; -D_800DF374 = 0x800DF374; -D_800DF3F0 = 0x800DF3F0; -D_800DF5EC = 0x800DF5EC; -D_800DF5F0 = 0x800DF5F0; -D_800DF7EC = 0x800DF7EC; -D_800DF7F0 = 0x800DF7F0; -D_800DF9EC = 0x800DF9EC; +gRcpInitDL = 0x800DDC10; +gSawtoothWaveSample = 0x800DDC80; +gTriangleWaveSample = 0x800DDE80; +gSineWaveSample = 0x800DE080; +gSquareWaveSample = 0x800DE280; +gWhiteNoiseSample = 0x800DE480; +gUnkSample = 0x800DE680; +gWaveSamples = 0x800DE880; //size:0x18 +gBendPitchOneOctaveFrequencies = 0x800DE8A0; //size:0x400 +gBendPitchTwoSemitonesFrequencies = 0x800DECA0; //size:0x400 +gPitchFrequencies = 0x800DF0A0; +gDefaultShortNoteVelocityTable = 0x800DF2A0; +gDefaultShortNoteGateTimeTable = 0x800DF2B0; +gDefaultEnvelope = 0x800DF2C0; +gZeroNoteSub = 0x800DF2D0; +gDefaultNoteSub = 0x800DF2E0; +gHaasEffectDelaySizes = 0x800DF2F0; //size:0x80 +gD_800DD200 = 0x800DF370; //size:0x80 +gHeadsetPanVolume = 0x800DF3F0; //size:0x200 +gStereoPanVolume = 0x800DF5F0; //size:0x200 +gDefaultPanVolume = 0x800DF7F0; //size:0x200 + D_800DF9F0 = 0x800DF9F0; D_800DFA02 = 0x800DFA02; D_800DFA08 = 0x800DFA08; @@ -7596,7 +7591,7 @@ D_fr_80187D64 = 0x80187D64; //segment:ast_radio_fr type:u16 D_fr_80187D9C = 0x80187D9C; //segment:ast_radio_fr type:u16 D_fr_80187E0C = 0x80187E0C; //segment:ast_radio_fr type:u16 D_fr_80187E74 = 0x80187E74; //segment:ast_radio_fr type:u16 -D_fr_80187ED8 = 0x80187ED8; //segment:ast_radio_fr +gMsgLookupFr = 0x80187ED8; //segment:ast_radio_fr D_en_8017B230 = 0x8017B230; //segment:ast_radio_en type:u16 D_en_8017B954 = 0x8017B954; //segment:ast_radio_en type:u16 @@ -8377,7 +8372,7 @@ D_en_801873A8 = 0x801873A8; //segment:ast_radio_en type:u16 D_en_80187400 = 0x80187400; //segment:ast_radio_en type:u16 D_en_80187460 = 0x80187460; //segment:ast_radio_en type:u16 D_en_801874C8 = 0x801874C8; //segment:ast_radio_en type:u16 -D_en_8018751C = 0x8018751C; //segment:ast_radio_en +gMsgLookupEn = 0x8018751C; //segment:ast_radio_en D_de_8017B230 = 0x8017B230; //segment:ast_radio_de type:u16 D_de_8017BA38 = 0x8017BA38; //segment:ast_radio_de type:u16 @@ -9158,4 +9153,4 @@ D_de_80189610 = 0x80189610; //segment:ast_radio_de type:u16 D_de_80189678 = 0x80189678; //segment:ast_radio_de type:u16 D_de_801896E8 = 0x801896E8; //segment:ast_radio_de type:u16 D_de_8018974C = 0x8018974C; //segment:ast_radio_de type:u16 -D_de_801897B4 = 0x801897B4; //segment:ast_radio_de +gMsgLookupDe = 0x801897B4; //segment:ast_radio_de diff --git a/linker_scripts/jp/rev0/symbol_addrs.txt b/linker_scripts/jp/rev0/symbol_addrs.txt index 1cfe2ab6..0812be15 100644 --- a/linker_scripts/jp/rev0/symbol_addrs.txt +++ b/linker_scripts/jp/rev0/symbol_addrs.txt @@ -3037,56 +3037,51 @@ D_800D9400 = 0x800D9400; D_800D9428 = 0x800D9428; D_800D9458 = 0x800D9458; D_800D9488 = 0x800D9488; -D_800D94B4 = 0x800D94B4; +gMsgLookup = 0x800D94B4; D_800DAD00 = 0x800DAD00; D_800DF360 = 0x800DF360; D_800E43E0 = 0x800E43E0; -D_800E4410 = 0x800E4410; +D_Gfx_800D94D0 = 0x800E4410; D_800E4428 = 0x800E4428; D_800E4598 = 0x800E4598; -D_800E45C8 = 0x800E45C8; +D_Gfx_800D9688 = 0x800E45C8; D_800E45E0 = 0x800E45E0; D_800E46A0 = 0x800E46A0; D_800E4850 = 0x800E4850; D_800E4890 = 0x800E4890; -D_800E4938 = 0x800E4938; +D_Tex_800D99F8 = 0x800E4938; D_800E5138 = 0x800E5138; D_800E5998 = 0x800E5998; D_800E5A38 = 0x800E5A38; D_800E5A80 = 0x800E5A80; D_800E5B20 = 0x800E5B20; -D_800E5B60 = 0x800E5B60; +D_Gfx_800DAC20 = 0x800E5B60; D_800E5BC0 = 0x800E5BC0; -D_800E5BF8 = 0x800E5BF8; -D_800E63F8 = 0x800E63F8; -D_800E6960 = 0x800E6960; -D_800E69E0 = 0x800E69E0; -D_800E6A50 = 0x800E6A50; -D_800E6C50 = 0x800E6C50; -D_800E6E50 = 0x800E6E50; -D_800E7050 = 0x800E7050; -D_800E7250 = 0x800E7250; -D_800E7450 = 0x800E7450; -D_800E7658 = 0x800E7658; -D_800E7670 = 0x800E7670; -D_800E7870 = 0x800E7870; -D_800E7A70 = 0x800E7A70; -D_800E7E70 = 0x800E7E70; -D_800E8070 = 0x800E8070; -D_800E8080 = 0x800E8080; -D_800E8090 = 0x800E8090; -D_800E80A0 = 0x800E80A0; -D_800E80B0 = 0x800E80B0; -D_800E80C0 = 0x800E80C0; -D_800E813E = 0x800E813E; -D_800E8142 = 0x800E8142; -D_800E8144 = 0x800E8144; -D_800E81C0 = 0x800E81C0; -D_800E83BC = 0x800E83BC; -D_800E83C0 = 0x800E83C0; -D_800E85BC = 0x800E85BC; -D_800E85C0 = 0x800E85C0; -D_800E87BC = 0x800E87BC; +D_Tex_800DACB8 = 0x800E5BF8; +D_Tex_800DB4B8 = 0x800E63F8; +gTextCharPalettes = 0x800E6960; +gRcpInitDL = 0x800E69E0; +gSawtoothWaveSample =0x800E6A50; +gTriangleWaveSample =0x800E6C50; +gSineWaveSample =0x800E6E50; +gSquareWaveSample =0x800E7050; +gWhiteNoiseSample =0x800E7250; +gUnkSample =0x800E7450; +gWaveSamples =0x800E7650; //size:0x18 +gBendPitchOneOctaveFrequencies = 0x800E7670; //size:0x400 +gBendPitchTwoSemitonesFrequencies = 0x800E7A70; //size:0x400 +gPitchFrequencies = 0x800E7E70; +gDefaultShortNoteVelocityTable = 0x800E8070; +gDefaultShortNoteGateTimeTable = 0x800E8080; +gDefaultEnvelope = 0x800E8090; +gZeroNoteSub = 0x800E80A0; +gDefaultNoteSub = 0x800E80B0; +gHaasEffectDelaySizes = 0x800E80C0; //size:0x80 +gD_800DD200 = 0x800E8140; //size:0x80 +gHeadsetPanVolume = 0x800E81C0; //size:0x200 +gStereoPanVolume = 0x800E83C0; //size:0x200 +gDefaultPanVolume = 0x800E85C0; //size:0x200 + D_800E87C0 = 0x800E87C0; D_800E87D2 = 0x800E87D2; D_800E87D8 = 0x800E87D8; diff --git a/linker_scripts/us/rev1/symbol_addrs_assets.txt b/linker_scripts/us/rev1/symbol_addrs_assets.txt index 9ae8fb9b..f396714e 100644 --- a/linker_scripts/us/rev1/symbol_addrs_assets.txt +++ b/linker_scripts/us/rev1/symbol_addrs_assets.txt @@ -50,7 +50,7 @@ gDefaultEnvelope = 0x800DD150; gZeroNoteSub = 0x800DD160; gDefaultNoteSub = 0x800DD170; gHaasEffectDelaySizes = 0x800DD180; // size:0x80 type:u16 -D_800DD200 = 0x800DD200; // size:0x80 type:s16 +gD_800DD200 = 0x800DD200; // size:0x80 type:s16 gHeadsetPanVolume = 0x800DD280; // size:0x200 type:f32 gStereoPanVolume = 0x800DD480; // size:0x200 type:f32 gDefaultPanVolume = 0x800DD680; // size:0x200 type:f32 diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c index c3e9360a..8701a594 100644 --- a/src/audio/audio_general.c +++ b/src/audio/audio_general.c @@ -126,51 +126,51 @@ u32 sEventSfx[] = { NA_SE_OB_PLATE_ROLL, }; SoundTestTrack sSoundTestTracks[] = { - /* 0 */ { NA_BGM_OPENING, 22, -1 }, - /* 1 */ { NA_BGM_TITLE, 23, -1 }, - /* 2 */ { NA_BGM_SELECT, 23, -1 }, - /* 3 */ { NA_BGM_MAP, 280, -1 }, - /* 4 */ { NA_BGM_START_DEMO, 0, -1 }, - /* 5 */ { NA_BGM_START_DEMO_S, 1, -1 }, - /* 6 */ { NA_BGM_START_DEMO_M, 1, -1 }, - /* 7 */ { NA_BGM_ME_START_DEMO, 1, -1 }, - /* 8 */ { NA_BGM_FO_START_DEMO, 8, -1 }, - /* 9 */ { NA_BGM_STAGE_CO, 0, -1 }, - /* 10 */ { NA_BGM_STAGE_ME, 1, -1 }, - /* 11 */ { NA_BGM_STAGE_TI, 2, -1 }, - /* 12 */ { NA_BGM_STAGE_SX, 3, -1 }, - /* 13 */ { NA_BGM_STAGE_ZO, 4, -1 }, - /* 14 */ { NA_BGM_STAGE_A6, 5, -1 }, - /* 15 */ { NA_BGM_STAGE_VE1, 6, -1 }, - /* 16 */ { NA_BGM_STAGE_SY, 7, -1 }, - /* 17 */ { NA_BGM_STAGE_FO, 8, -1 }, - /* 18 */ { NA_BGM_STAGE_BO, 10, -1 }, - /* 19 */ { NA_BGM_STAGE_KA, 11, -1 }, - /* 20 */ { NA_BGM_STAGE_AQ, 12, -1 }, - /* 21 */ { NA_BGM_STAGE_WZ, 1, -1 }, - /* 22 */ { NA_BGM_KATT, 13, -1 }, - /* 23 */ { NA_BGM_BILL, 11, -1 }, - /* 24 */ { NA_BGM_BOSS_CO, 0, -1 }, - /* 25 */ { NA_BGM_BOSS_ME, 1, 0 }, - /* 26 */ { NA_BGM_BOSS_ME, 1, -1 }, - /* 27 */ { NA_BGM_REAL_BOSS, 7, -1 }, - /* 28 */ { NA_BGM_BOSS_BO, 10, -1 }, - /* 29 */ { NA_BGM_STARWOLF, 6, -1 }, - /* 30 */ { NA_BGM_COURSE_CLEAR, 0, -1 }, - /* 31 */ { NA_BGM_COURSE_FAILURE, 0, -1 }, - /* 32 */ { NA_BGM_PLAYER_DOWN, 0, -1 }, - /* 33 */ { NA_BGM_GAME_OVER, 25, -1 }, - /* 34 */ { NA_BGM_TRAINING, 28, -1 }, - /* 35 */ { NA_BGM_BATTLE, 784, -1 }, - /* 36 */ { NA_BGM_BATTLE_LAST, 785, -1 }, - /* 37 */ { NA_BGM_VS_SELECT, 23, -1 }, - /* 38 */ { NA_BGM_DASH_INTO_BASE, 6, 0 }, - /* 39 */ { NA_BGM_STAGE_ANDROSS, 23, -1 }, - /* 40 */ { NA_BGM_BOSS_ANDROSS, 6, 0 }, - /* 41 */ { NA_BGM_BOSS_ANDROSS, 6, -1 }, - /* 42 */ { NA_BGM_ANDROSS_BRAIN, 6, -1 }, - /* 43 */ { NA_BGM_ALL_CLEAR, 6, -1 }, - /* 44 */ { NA_BGM_STAFF_ROLL, 27, -1 }, + /* 0 */ { NA_BGM_OPENING, AUDIOSPEC_22 | (SFXCHAN_0 << 8), -1 }, + /* 1 */ { NA_BGM_TITLE, AUDIOSPEC_23 | (SFXCHAN_0 << 8), -1 }, + /* 2 */ { NA_BGM_SELECT, AUDIOSPEC_23 | (SFXCHAN_0 << 8), -1 }, + /* 3 */ { NA_BGM_MAP, AUDIOSPEC_24 | (SFXCHAN_1 << 8), -1 }, + /* 4 */ { NA_BGM_START_DEMO, AUDIOSPEC_0 | (SFXCHAN_0 << 8), -1 }, + /* 5 */ { NA_BGM_START_DEMO_S, AUDIOSPEC_1 | (SFXCHAN_0 << 8), -1 }, + /* 6 */ { NA_BGM_START_DEMO_M, AUDIOSPEC_1 | (SFXCHAN_0 << 8), -1 }, + /* 7 */ { NA_BGM_ME_START_DEMO, AUDIOSPEC_1 | (SFXCHAN_0 << 8), -1 }, + /* 8 */ { NA_BGM_FO_START_DEMO, AUDIOSPEC_8 | (SFXCHAN_0 << 8), -1 }, + /* 9 */ { NA_BGM_STAGE_CO, AUDIOSPEC_0 | (SFXCHAN_0 << 8), -1 }, + /* 10 */ { NA_BGM_STAGE_ME, AUDIOSPEC_1 | (SFXCHAN_0 << 8), -1 }, + /* 11 */ { NA_BGM_STAGE_TI, AUDIOSPEC_2 | (SFXCHAN_0 << 8), -1 }, + /* 12 */ { NA_BGM_STAGE_SX, AUDIOSPEC_3 | (SFXCHAN_0 << 8), -1 }, + /* 13 */ { NA_BGM_STAGE_ZO, AUDIOSPEC_4 | (SFXCHAN_0 << 8), -1 }, + /* 14 */ { NA_BGM_STAGE_A6, AUDIOSPEC_5 | (SFXCHAN_0 << 8), -1 }, + /* 15 */ { NA_BGM_STAGE_VE1, AUDIOSPEC_6 | (SFXCHAN_0 << 8), -1 }, + /* 16 */ { NA_BGM_STAGE_SY, AUDIOSPEC_7 | (SFXCHAN_0 << 8), -1 }, + /* 17 */ { NA_BGM_STAGE_FO, AUDIOSPEC_8 | (SFXCHAN_0 << 8), -1 }, + /* 18 */ { NA_BGM_STAGE_BO, AUDIOSPEC_10 | (SFXCHAN_0 << 8), -1 }, + /* 19 */ { NA_BGM_STAGE_KA, AUDIOSPEC_11 | (SFXCHAN_0 << 8), -1 }, + /* 20 */ { NA_BGM_STAGE_AQ, AUDIOSPEC_12 | (SFXCHAN_0 << 8), -1 }, + /* 21 */ { NA_BGM_STAGE_WZ, AUDIOSPEC_1 | (SFXCHAN_0 << 8), -1 }, + /* 22 */ { NA_BGM_KATT, AUDIOSPEC_13 | (SFXCHAN_0 << 8), -1 }, + /* 23 */ { NA_BGM_BILL, AUDIOSPEC_11 | (SFXCHAN_0 << 8), -1 }, + /* 24 */ { NA_BGM_BOSS_CO, AUDIOSPEC_0 | (SFXCHAN_0 << 8), -1 }, + /* 25 */ { NA_BGM_BOSS_ME, AUDIOSPEC_1 | (SFXCHAN_0 << 8), 0 }, + /* 26 */ { NA_BGM_BOSS_ME, AUDIOSPEC_1 | (SFXCHAN_0 << 8), -1 }, + /* 27 */ { NA_BGM_REAL_BOSS, AUDIOSPEC_7 | (SFXCHAN_0 << 8), -1 }, + /* 28 */ { NA_BGM_BOSS_BO, AUDIOSPEC_10 | (SFXCHAN_0 << 8), -1 }, + /* 29 */ { NA_BGM_STARWOLF, AUDIOSPEC_6 | (SFXCHAN_0 << 8), -1 }, + /* 30 */ { NA_BGM_COURSE_CLEAR, AUDIOSPEC_0 | (SFXCHAN_0 << 8), -1 }, + /* 31 */ { NA_BGM_COURSE_FAILURE, AUDIOSPEC_0 | (SFXCHAN_0 << 8), -1 }, + /* 32 */ { NA_BGM_PLAYER_DOWN, AUDIOSPEC_0 | (SFXCHAN_0 << 8), -1 }, + /* 33 */ { NA_BGM_GAME_OVER, AUDIOSPEC_25 | (SFXCHAN_0 << 8), -1 }, + /* 34 */ { NA_BGM_TRAINING, AUDIOSPEC_28 | (SFXCHAN_0 << 8), -1 }, + /* 35 */ { NA_BGM_BATTLE, AUDIOSPEC_16 | (SFXCHAN_3 << 8), -1 }, + /* 36 */ { NA_BGM_BATTLE_LAST, AUDIOSPEC_17 | (SFXCHAN_3 << 8), -1 }, + /* 37 */ { NA_BGM_VS_SELECT, AUDIOSPEC_23 | (SFXCHAN_0 << 8), -1 }, + /* 38 */ { NA_BGM_DASH_INTO_BASE, AUDIOSPEC_6 | (SFXCHAN_0 << 8), 0 }, + /* 39 */ { NA_BGM_STAGE_ANDROSS, AUDIOSPEC_23 | (SFXCHAN_0 << 8), -1 }, + /* 40 */ { NA_BGM_BOSS_ANDROSS, AUDIOSPEC_6 | (SFXCHAN_0 << 8), 0 }, + /* 41 */ { NA_BGM_BOSS_ANDROSS, AUDIOSPEC_6 | (SFXCHAN_0 << 8), -1 }, + /* 42 */ { NA_BGM_ANDROSS_BRAIN, AUDIOSPEC_6 | (SFXCHAN_0 << 8), -1 }, + /* 43 */ { NA_BGM_ALL_CLEAR, AUDIOSPEC_6 | (SFXCHAN_0 << 8), -1 }, + /* 44 */ { NA_BGM_STAFF_ROLL, AUDIOSPEC_27 | (SFXCHAN_0 << 8), -1 }, }; PlaylistCmd sPlaylists[][100] = { @@ -1332,7 +1332,7 @@ void Audio_PlaySfx(u32 sfxId, f32* sfxSource, u8 token, f32* freqMod, f32* volMo SfxRequest* request = &sSfxRequests[sSfxRequestWriteIndex]; request->sfxId = sfxId; - request->pos = sfxSource; + request->source = sfxSource; request->token = token; request->freqMod = freqMod; request->volMod = volMod; @@ -1356,17 +1356,17 @@ void Audio_RemoveMatchingSfxRequests(u8 aspect, SfxBankEntry* data) { break; case 1: if (((request->sfxId & SFX_BANK_MASK) == (data->sfxId & SFX_BANK_MASK)) && - (&request->pos[0] == data->xPos)) { + (&request->source[0] == data->xPos)) { found = true; } break; case 2: - if (&request->pos[0] == data->xPos) { + if (&request->source[0] == data->xPos) { found = true; } break; case 3: - if ((&request->pos[0] == data->xPos) && (request->sfxId == data->sfxId)) { + if ((&request->source[0] == data->xPos) && (request->sfxId == data->sfxId)) { found = true; } break; @@ -1403,7 +1403,7 @@ void Audio_ProcessSfxRequest(void) { next = sSfxBanks[bankId][0].next; count = 0; while ((next != 0xFF) && (next != 0)) { - if (request->pos == sSfxBanks[bankId][next].xPos) { + if (&request->source[0] == sSfxBanks[bankId][next].xPos) { if (request->sfxId == sSfxBanks[bankId][next].sfxId) { count = sUsedChannelsPerBank[sSfxChannelLayout][bankId]; } else { @@ -1446,9 +1446,9 @@ void Audio_ProcessSfxRequest(void) { if ((sSfxBanks[bankId][sSfxBankFreeListStart[bankId]].next != 0xFF) && (next != 0)) { next = sSfxBankFreeListStart[bankId]; entry = &sSfxBanks[bankId][next]; - entry->xPos = &request->pos[0]; - entry->yPos = &request->pos[1]; - entry->zPos = &request->pos[2]; + entry->xPos = &request->source[0]; + entry->yPos = &request->source[1]; + entry->zPos = &request->source[2]; entry->token = request->token; entry->freqMod = request->freqMod; entry->volMod = request->volMod; diff --git a/src/audio/audio_heap.c b/src/audio/audio_heap.c index 91c1b56c..5ea0674d 100644 --- a/src/audio/audio_heap.c +++ b/src/audio/audio_heap.c @@ -95,7 +95,7 @@ void AudioHeap_DiscardFont(s32 fontId) { for (i = 0; i < gNumNotes; i++) { note = &gNotes[i]; if (fontId == note->playbackState.fontId) { - if (note->playbackState.unk_04 == 0 && note->playbackState.priority != 0) { + if ((note->playbackState.unk_04 == 0) && (note->playbackState.priority != 0)) { note->playbackState.parentLayer->enabled = false; note->playbackState.parentLayer->finished = true; } @@ -542,7 +542,7 @@ void AudioHeap_UpdateReverbs(void) { } for (reverbIndex = 0; reverbIndex < gNumSynthReverbs; reverbIndex++) { for (i = 0; i < count; i++) { - gSynthReverbs[reverbIndex].unk_08 -= gSynthReverbs[reverbIndex].unk_08 / 3; + gSynthReverbs[reverbIndex].decayRatio -= gSynthReverbs[reverbIndex].decayRatio / 3; } } } @@ -648,8 +648,7 @@ void AudioHeap_Init(void) { gSampleDmaCount = 0; gAudioBufferParams.samplingFrequency = spec->samplingFrequency; gAudioBufferParams.aiSamplingFrequency = osAiSetFrequency(gAudioBufferParams.samplingFrequency); - gAudioBufferParams.samplesPerFrameTarget = - ((gAudioBufferParams.samplingFrequency / gRefreshRate) + 0xF) & (u16) ~0xF; + gAudioBufferParams.samplesPerFrameTarget = ALIGN16(gAudioBufferParams.samplingFrequency / gRefreshRate); gAudioBufferParams.minAiBufferLength = gAudioBufferParams.samplesPerFrameTarget - 0x10; gAudioBufferParams.maxAiBufferLength = gAudioBufferParams.samplesPerFrameTarget + 0x10; @@ -673,7 +672,7 @@ void AudioHeap_Init(void) { if (gAudioBufferParams.count >= 2) { gAudioBufferParams.maxAiBufferLength -= 0x10; } - gMaxAudioCmds = (gNumNotes * 0x14 * gAudioBufferParams.ticksPerUpdate) + (spec->numReverbs * 0x20) + 0x1E0; + gMaxAudioCmds = (gNumNotes * 20 * gAudioBufferParams.ticksPerUpdate) + (spec->numReverbs * 32) + 480; persistentSize = spec->persistentSeqCacheSize + spec->persistentFontCacheSize + spec->persistentSampleBankCacheSize + spec->persistentSampleCacheSize + 0x10; temporarySize = spec->temporarySeqCacheSize + spec->temporaryFontCacheSize + spec->temporarySampleBankCacheSize + @@ -712,9 +711,9 @@ void AudioHeap_Init(void) { reverb = &gSynthReverbs[i]; reverb->downsampleRate = settings->downsampleRate; reverb->windowSize = settings->windowSize * 64; - reverb->unk_08 = settings->unk_2; reverb->decayRatio = settings->decayRatio; - reverb->unk_0E = settings->unk_6; + reverb->leakRtL = settings->leakRtL; + reverb->leakLtR = settings->leakLtR; reverb->useReverb = 8; reverb->leftRingBuf = AudioHeap_AllocZeroed(&gMiscPool, reverb->windowSize * 2); diff --git a/src/audio/audio_playback.c b/src/audio/audio_playback.c index a3d49541..fc858ae4 100644 --- a/src/audio/audio_playback.c +++ b/src/audio/audio_playback.c @@ -40,93 +40,93 @@ void func_80012C40(Note* note); void func_80012CEC(Note* note, SequenceLayer* layer); void func_80011890(Note* note, NoteAttributes* noteAttr) { - NoteSubEu* temp_v0; - f32 var_fa0; - f32 var_fa1; - f32 var_fv1; + NoteSubEu* noteSub; + f32 panVolumeLeft; + f32 pamVolumeRight; + f32 velocity; s32 temp_t0; s32 var_a0; - s32 var_a0_2; - s32 var_a1; - u8 sp27; - u8 sp26; - Stereo sp24; + s32 strongRight; + s32 strongLeft; + u8 pan; + u8 reverb; + Stereo stereo; func_80011C58(note, noteAttr->freqMod); - temp_v0 = ¬e->noteSubEu; - var_fv1 = noteAttr->velocity; - sp27 = noteAttr->pan; - sp26 = noteAttr->reverb; - sp24 = noteAttr->stereo; - sp27 &= 0x7F; - if ((temp_v0->bitField0.stereoHeadsetEffects) && (gAudioSoundMode == SOUNDMODE_HEADSET)) { - var_a0 = sp27 >> 1; - if (var_a0 >= 0x40) { - var_a0 = 0x3F; + noteSub = ¬e->noteSubEu; + velocity = noteAttr->velocity; + pan = noteAttr->pan; + reverb = noteAttr->reverb; + stereo = noteAttr->stereo; + pan %= ARRAY_COUNTU(gHeadsetPanVolume); + if ((noteSub->bitField0.stereoHeadsetEffects) && (gAudioSoundMode == SOUNDMODE_HEADSET)) { + var_a0 = pan >> 1; + if (var_a0 >= ARRAY_COUNT(gHaasEffectDelaySizes)) { + var_a0 = ARRAY_COUNT(gHaasEffectDelaySizes) - 1; } - temp_v0->unk_04 = gHaasEffectDelaySizes[var_a0]; - temp_v0->unk_03 = gHaasEffectDelaySizes[63 - var_a0]; - temp_v0->bitField0.stereoStrongRight = 0; - temp_v0->bitField0.stereoStrongLeft = 0; - temp_v0->bitField0.usesHeadsetPanEffects = 1; + noteSub->rightDelaySize = gHaasEffectDelaySizes[var_a0]; + noteSub->leftDelaySize = gHaasEffectDelaySizes[ARRAY_COUNT(gHaasEffectDelaySizes) - 1 - var_a0]; + noteSub->bitField0.stereoStrongRight = false; + noteSub->bitField0.stereoStrongLeft = false; + noteSub->bitField0.usesHeadsetPanEffects = true; - var_fa0 = gHeadsetPanVolume[sp27]; - var_fa1 = gHeadsetPanVolume[127 - sp27]; - } else if (temp_v0->bitField0.stereoHeadsetEffects && (gAudioSoundMode == SOUNDMODE_STEREO)) { - temp_v0->unk_03 = 0; - temp_v0->unk_04 = 0; - temp_v0->bitField0.usesHeadsetPanEffects = 0; + panVolumeLeft = gHeadsetPanVolume[pan]; + pamVolumeRight = gHeadsetPanVolume[ARRAY_COUNT(gHeadsetPanVolume) - 1 - pan]; + } else if (noteSub->bitField0.stereoHeadsetEffects && (gAudioSoundMode == SOUNDMODE_STEREO)) { + noteSub->leftDelaySize = 0; + noteSub->rightDelaySize = 0; + noteSub->bitField0.usesHeadsetPanEffects = false; - var_fa0 = gStereoPanVolume[sp27]; - var_fa1 = gStereoPanVolume[127 - sp27]; - var_a0_2 = 0; - var_a1 = 0; - if (sp27 < 0x20) { - var_a1 = 1; - } else if (sp27 > 0x60) { - var_a0_2 = 1; + panVolumeLeft = gStereoPanVolume[pan]; + pamVolumeRight = gStereoPanVolume[ARRAY_COUNT(gStereoPanVolume) - 1 - pan]; + strongRight = false; + strongLeft = false; + if (pan < 32) { + strongLeft = true; + } else if (pan > 96) { + strongRight = true; } - temp_v0->bitField0.stereoStrongRight = var_a0_2; - temp_v0->bitField0.stereoStrongLeft = var_a1; - switch (sp24.s.bit2) { + noteSub->bitField0.stereoStrongRight = strongRight; + noteSub->bitField0.stereoStrongLeft = strongLeft; + switch (stereo.s.bit2) { case 0: - temp_v0->bitField0.stereoStrongRight = sp24.s.strongRight; - temp_v0->bitField0.stereoStrongLeft = sp24.s.strongLeft; + noteSub->bitField0.stereoStrongRight = stereo.s.strongRight; + noteSub->bitField0.stereoStrongLeft = stereo.s.strongLeft; break; case 1: break; case 2: - temp_v0->bitField0.stereoStrongRight = sp24.s.strongRight | var_a0_2; - temp_v0->bitField0.stereoStrongLeft = sp24.s.strongLeft | var_a1; + noteSub->bitField0.stereoStrongRight = stereo.s.strongRight | strongRight; + noteSub->bitField0.stereoStrongLeft = stereo.s.strongLeft | strongLeft; break; case 3: - temp_v0->bitField0.stereoStrongRight = sp24.s.strongRight ^ var_a0_2; - temp_v0->bitField0.stereoStrongLeft = sp24.s.strongLeft ^ var_a1; + noteSub->bitField0.stereoStrongRight = stereo.s.strongRight ^ strongRight; + noteSub->bitField0.stereoStrongLeft = stereo.s.strongLeft ^ strongLeft; break; } } else if (gAudioSoundMode == SOUNDMODE_MONO) { - var_fa0 = 0.707f; - var_fa1 = 0.707f; + panVolumeLeft = 0.707f; + pamVolumeRight = 0.707f; } else { - var_fa0 = gDefaultPanVolume[sp27]; - var_fa1 = gDefaultPanVolume[127 - sp27]; + panVolumeLeft = gDefaultPanVolume[pan]; + pamVolumeRight = gDefaultPanVolume[ARRAY_COUNT(gDefaultPanVolume) - 1 - pan]; } - if (var_fv1 < 0.0f) { - var_fv1 = 0.0f; + if (velocity < 0.0f) { + velocity = 0.0f; } - if (var_fv1 > 1.0f) { - var_fv1 = 1.0f; + if (velocity > 1.0f) { + velocity = 1.0f; } - temp_v0->unk_06 = (s32) (var_fv1 * var_fa0 * 4095.999f); - temp_v0->unk_08 = (s32) (var_fv1 * var_fa1 * 4095.999f); - temp_v0->unk_02 = noteAttr->gain; - if (temp_v0->unk_05 != sp26) { - temp_v0->unk_05 = sp26; - temp_v0->bitField0.unused = 1; - } else if (temp_v0->bitField0.needsInit) { - temp_v0->bitField0.unused = 1; + noteSub->panVolLeft = (s32) (velocity * panVolumeLeft * 4095.999f); + noteSub->panVolRight = (s32) (velocity * pamVolumeRight * 4095.999f); + noteSub->gain = noteAttr->gain; + if (noteSub->reverb != reverb) { + noteSub->reverb = reverb; + noteSub->bitField0.unused = true; + } else if (noteSub->bitField0.needsInit) { + noteSub->bitField0.unused = true; } else { - temp_v0->bitField0.unused = 0; + noteSub->bitField0.unused = false; } } @@ -149,7 +149,7 @@ void func_80011C58(Note* note, f32 arg1) { var_fv0 = arg1 * 0.5f; } } - note->noteSubEu.unk_0A = (s32) (var_fv0 * 32768.0f); + note->noteSubEu.resampleRate = (s32) (var_fv0 * 32768.0f); } TunedSample* func_80011D10(Instrument* instrument, s32 arg1) { @@ -234,128 +234,128 @@ void func_80011F4C(Note* note) { void func_80011FA8(void) { s32 pad2; s32 pad; - Note* temp_s1; - NotePlaybackState* var_s0; + Note* note; + NotePlaybackState* playbackState; NoteSubEu* noteSub; NoteAttributes* attr; s32 i; NoteAttributes sp70; - u8 sp6F; + u8 bookOffset; f32 temp_fs0; for (i = 0; i < gNumNotes; i++) { - temp_s1 = &gNotes[i]; + note = &gNotes[i]; - var_s0 = &temp_s1->playbackState; - if ((var_s0->parentLayer != NO_LAYER)) { - if ((u32) var_s0->parentLayer < 0x7FFFFFFF) { + playbackState = ¬e->playbackState; + if ((playbackState->parentLayer != NO_LAYER)) { + if ((u32) playbackState->parentLayer < 0x7FFFFFFF) { continue; } - if ((temp_s1 != var_s0->parentLayer->note) && (var_s0->unk_04 == 0)) { - var_s0->adsr.action.asByte |= 0x10; - var_s0->adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv; - var_s0->priority = 1; - var_s0->unk_04 = 2; + if ((note != playbackState->parentLayer->note) && (playbackState->unk_04 == 0)) { + playbackState->adsr.action.asByte |= 0x10; + playbackState->adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv; + playbackState->priority = 1; + playbackState->unk_04 = 2; goto block_21; } else { - if ((var_s0->parentLayer->enabled) || (var_s0->unk_04 != 0) || (var_s0->priority <= 0)) { - if (var_s0->parentLayer->channel->seqPlayer == NULL) { - func_8001415C(var_s0->parentLayer->channel); - var_s0->priority = 1; - var_s0->unk_04 = 1; + if ((playbackState->parentLayer->enabled) || (playbackState->unk_04 != 0) || + (playbackState->priority <= 0)) { + if (playbackState->parentLayer->channel->seqPlayer == NULL) { + func_8001415C(playbackState->parentLayer->channel); + playbackState->priority = 1; + playbackState->unk_04 = 1; continue; } - if (!(var_s0->parentLayer->channel->seqPlayer->muted && - (var_s0->parentLayer->channel->muteBehavior & 0x40))) { + if (!(playbackState->parentLayer->channel->seqPlayer->muted && + (playbackState->parentLayer->channel->muteBehavior & 0x40))) { goto block_21; } } - func_8001268C(var_s0->parentLayer); - func_80012C40(temp_s1); - func_80012C00(&temp_s1->listItem.pool->decaying, &temp_s1->listItem); - var_s0->priority = 1; - var_s0->unk_04 = 2; + func_8001268C(playbackState->parentLayer); + func_80012C40(note); + func_80012C00(¬e->listItem.pool->decaying, ¬e->listItem); + playbackState->priority = 1; + playbackState->unk_04 = 2; } - } else if ((var_s0->unk_04 == 0) && (var_s0->priority > 0)) { + } else if ((playbackState->unk_04 == 0) && (playbackState->priority > 0)) { continue; } block_21: - if (var_s0->priority != 0) { + if (playbackState->priority != 0) { if (1) {} - noteSub = &temp_s1->noteSubEu; - if ((var_s0->unk_04 > 0) || noteSub->bitField0.finished) { - if ((var_s0->adsr.state == 0) || noteSub->bitField0.finished) { - if (var_s0->wantedParentLayer != NO_LAYER) { - func_80011F4C(temp_s1); - if (var_s0->wantedParentLayer->channel != NULL) { - func_80012CEC(temp_s1, var_s0->wantedParentLayer); - func_80013A84(temp_s1); - func_80012C40(temp_s1); - func_800145BC(&temp_s1->listItem.pool->active, &temp_s1->listItem); - var_s0->wantedParentLayer = NO_LAYER; + noteSub = ¬e->noteSubEu; + if ((playbackState->unk_04 > 0) || noteSub->bitField0.finished) { + if ((playbackState->adsr.state == 0) || noteSub->bitField0.finished) { + if (playbackState->wantedParentLayer != NO_LAYER) { + func_80011F4C(note); + if (playbackState->wantedParentLayer->channel != NULL) { + func_80012CEC(note, playbackState->wantedParentLayer); + func_80013A84(note); + func_80012C40(note); + func_800145BC(¬e->listItem.pool->active, ¬e->listItem); + playbackState->wantedParentLayer = NO_LAYER; } else { - func_80011F4C(temp_s1); - func_80012C40(temp_s1); - func_800145BC(&temp_s1->listItem.pool->disabled, &temp_s1->listItem); - var_s0->wantedParentLayer = NO_LAYER; + func_80011F4C(note); + func_80012C40(note); + func_800145BC(¬e->listItem.pool->disabled, ¬e->listItem); + playbackState->wantedParentLayer = NO_LAYER; goto next; } } else { - func_80011F4C(temp_s1); - func_80012C40(temp_s1); - func_800145BC(&temp_s1->listItem.pool->disabled, &temp_s1->listItem); + func_80011F4C(note); + func_80012C40(note); + func_800145BC(¬e->listItem.pool->disabled, ¬e->listItem); goto next; } } - } else if (var_s0->adsr.state == 0) { - func_80011F4C(temp_s1); - func_80012C40(temp_s1); - func_800145BC(&temp_s1->listItem.pool->disabled, &temp_s1->listItem); + } else if (playbackState->adsr.state == 0) { + func_80011F4C(note); + func_80012C40(note); + func_800145BC(¬e->listItem.pool->disabled, ¬e->listItem); goto next; } - temp_fs0 = func_80013B90(&var_s0->adsr); - func_80013A18(temp_s1); - attr = &var_s0->attributes; - if ((var_s0->unk_04 == 1) || (var_s0->unk_04 == 2)) { - + temp_fs0 = func_80013B90(&playbackState->adsr); + func_80013A18(note); + attr = &playbackState->attributes; + if ((playbackState->unk_04 == 1) || (playbackState->unk_04 == 2)) { sp70.freqMod = attr->freqMod; sp70.velocity = attr->velocity; sp70.pan = attr->pan; sp70.reverb = attr->reverb; sp70.stereo = attr->stereo; sp70.gain = attr->gain; - sp6F = noteSub->bitField1.bookOffset; + bookOffset = noteSub->bitField1.bookOffset; } else { - sp70.freqMod = var_s0->parentLayer->noteFreqMod; - sp70.velocity = var_s0->parentLayer->noteVelocity; - sp70.pan = var_s0->parentLayer->notePan; - sp70.stereo = var_s0->parentLayer->stereo; - sp70.reverb = var_s0->parentLayer->channel->targetReverbVol; - sp70.gain = var_s0->parentLayer->channel->reverbIndex; + sp70.freqMod = playbackState->parentLayer->noteFreqMod; + sp70.velocity = playbackState->parentLayer->noteVelocity; + sp70.pan = playbackState->parentLayer->notePan; + sp70.stereo = playbackState->parentLayer->stereo; + sp70.reverb = playbackState->parentLayer->channel->targetReverbVol; + sp70.gain = playbackState->parentLayer->channel->reverbIndex; - sp6F = var_s0->parentLayer->channel->bookOffset & 7; - if ((var_s0->parentLayer->channel->seqPlayer->muted) && - (var_s0->parentLayer->channel->muteBehavior & 8)) { + bookOffset = playbackState->parentLayer->channel->bookOffset % 8U; + if ((playbackState->parentLayer->channel->seqPlayer->muted) && + (playbackState->parentLayer->channel->muteBehavior & 8)) { sp70.freqMod = 0.0f; sp70.velocity = 0.0f; } } - sp70.freqMod *= (var_s0->vibratoFreqMod * var_s0->portamentoFreqMod); + sp70.freqMod *= playbackState->vibratoFreqMod * playbackState->portamentoFreqMod; sp70.freqMod *= gAudioBufferParams.resampleRate; sp70.velocity *= temp_fs0; - func_80011890(temp_s1, &sp70); - noteSub->bitField1.bookOffset = sp6F; + func_80011890(note, &sp70); + noteSub->bitField1.bookOffset = bookOffset; next:; } } } void func_80012438(SequenceLayer* layer, s32 arg1) { - Note* temp_v0; - NoteAttributes* temp_v0_3; + Note* note; + NoteAttributes* noteAttr; if (layer == NO_LAYER) { return; @@ -364,59 +364,58 @@ void func_80012438(SequenceLayer* layer, s32 arg1) { if (layer->note == NULL) { return; } - temp_v0 = layer->note; - if (layer == temp_v0->playbackState.wantedParentLayer) { - temp_v0->playbackState.wantedParentLayer = NO_LAYER; + note = layer->note; + if (layer == note->playbackState.wantedParentLayer) { + note->playbackState.wantedParentLayer = NO_LAYER; } - if (layer != temp_v0->playbackState.parentLayer) { - if ((temp_v0->playbackState.parentLayer == NO_LAYER) && - (temp_v0->playbackState.wantedParentLayer == NO_LAYER) && - (layer == temp_v0->playbackState.prevParentLayer) && (arg1 != 6)) { - temp_v0->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv; - temp_v0->playbackState.adsr.action.asByte |= 0x10; + if (layer != note->playbackState.parentLayer) { + if ((note->playbackState.parentLayer == NO_LAYER) && (note->playbackState.wantedParentLayer == NO_LAYER) && + (layer == note->playbackState.prevParentLayer) && (arg1 != 6)) { + note->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv; + note->playbackState.adsr.action.asByte |= 0x10; } return; } - temp_v0_3 = &temp_v0->playbackState.attributes; - if (temp_v0->playbackState.adsr.state != 6) { - temp_v0_3->freqMod = layer->noteFreqMod; - temp_v0_3->velocity = layer->noteVelocity; - temp_v0_3->pan = layer->notePan; - temp_v0_3->stereo = layer->stereo; + noteAttr = ¬e->playbackState.attributes; + if (note->playbackState.adsr.state != 6) { + noteAttr->freqMod = layer->noteFreqMod; + noteAttr->velocity = layer->noteVelocity; + noteAttr->pan = layer->notePan; + noteAttr->stereo = layer->stereo; if (layer->channel != NULL) { - temp_v0_3->reverb = layer->channel->targetReverbVol; - temp_v0_3->gain = layer->channel->reverbIndex; + noteAttr->reverb = layer->channel->targetReverbVol; + noteAttr->gain = layer->channel->reverbIndex; if (layer->channel->seqPlayer->muted && (layer->channel->muteBehavior & 8)) { - temp_v0->noteSubEu.bitField0.finished = 1; + note->noteSubEu.bitField0.finished = 1; } } - temp_v0->playbackState.priority = 1; - temp_v0->playbackState.prevParentLayer = temp_v0->playbackState.parentLayer; - temp_v0->playbackState.parentLayer = NO_LAYER; + note->playbackState.priority = 1; + note->playbackState.prevParentLayer = note->playbackState.parentLayer; + note->playbackState.parentLayer = NO_LAYER; if (arg1 == 7) { - temp_v0->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv; - temp_v0->playbackState.adsr.action.asByte |= 0x10; - temp_v0->playbackState.unk_04 = 2; + note->playbackState.adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv; + note->playbackState.adsr.action.asByte |= 0x10; + note->playbackState.unk_04 = 2; } else { - temp_v0->playbackState.unk_04 = 1; - temp_v0->playbackState.adsr.action.asByte |= 0x20; + note->playbackState.unk_04 = 1; + note->playbackState.adsr.action.asByte |= 0x20; if (layer->adsr.decayIndex == 0) { - temp_v0->playbackState.adsr.fadeOutVel = + note->playbackState.adsr.fadeOutVel = layer->channel->adsr.decayIndex * gAudioBufferParams.ticksPerUpdateInvScaled; } else { - temp_v0->playbackState.adsr.fadeOutVel = + note->playbackState.adsr.fadeOutVel = layer->adsr.decayIndex * gAudioBufferParams.ticksPerUpdateInvScaled; } - temp_v0->playbackState.adsr.sustain = - (s32) layer->channel->adsr.sustain * temp_v0->playbackState.adsr.current / 256.0f; + note->playbackState.adsr.sustain = + (s32) layer->channel->adsr.sustain * note->playbackState.adsr.current / 256.0f; } } if (arg1 == 6) { - func_80012C40(temp_v0); - func_80012C00(&temp_v0->listItem.pool->decaying, &temp_v0->listItem); + func_80012C40(note); + func_80012C00(¬e->listItem.pool->decaying, ¬e->listItem); } } @@ -460,17 +459,17 @@ s32 func_800126AC(Note* note, SequenceLayer* layer, s32 waveId) { } void func_800127B0(Note* note, SequenceLayer* layer) { - s32 sp1C; - s32 var_a2; + s32 harmonicIndex; + s32 waveId; - var_a2 = layer->instOrWave; - if (var_a2 == 0xFF) { - var_a2 = layer->channel->instOrWave; + waveId = layer->instOrWave; + if (waveId == 0xFF) { + waveId = layer->channel->instOrWave; } - sp1C = note->playbackState.harmonicIndex; + harmonicIndex = note->playbackState.harmonicIndex; note->synthesisState.samplePosInt = - (note->synthesisState.samplePosInt * sSamplesPerWavePeriod[func_800126AC(note, layer, var_a2)]) / - sSamplesPerWavePeriod[sp1C]; + (note->synthesisState.samplePosInt * sSamplesPerWavePeriod[func_800126AC(note, layer, waveId)]) / + sSamplesPerWavePeriod[harmonicIndex]; } void func_80012854(AudioListItem* item) { @@ -491,24 +490,24 @@ void func_80012864(NotePool* pool) { } void func_800128B4(void) { - s32 var_s1; + s32 i; func_80012864(&gNoteFreeLists); - for (var_s1 = 0; var_s1 < gNumNotes; var_s1++) { - gNotes[var_s1].listItem.u.value = &gNotes[var_s1]; - gNotes[var_s1].listItem.prev = NULL; - func_800145BC(&gNoteFreeLists.disabled, &gNotes[var_s1].listItem); + for (i = 0; i < gNumNotes; i++) { + gNotes[i].listItem.u.value = &gNotes[i]; + gNotes[i].listItem.prev = NULL; + func_800145BC(&gNoteFreeLists.disabled, &gNotes[i].listItem); } } void func_80012964(NotePool* pool) { - s32 var_s3; + s32 poolType; AudioListItem* sp48; AudioListItem* var_s0; AudioListItem* sp40; - for (var_s3 = 0; var_s3 < 4; var_s3++) { - switch (var_s3) { /* irregular */ + for (poolType = 0; poolType < 4; poolType++) { + switch (poolType) { case 0: sp48 = &pool->disabled; sp40 = &gNoteFreeLists.disabled; @@ -540,19 +539,19 @@ void func_80012964(NotePool* pool) { void func_80012AC4(NotePool* pool, s32 arg1) { s32 var_s0; - s32 var_s4; + s32 poolType; AudioListItem* temp_v0; AudioListItem* sp48; AudioListItem* sp44; func_80012964(pool); - var_s4 = 0; + poolType = 0; var_s0 = 0; while (var_s0 < arg1) { - if (var_s4 == 4) { + if (poolType == 4) { return; } - switch (var_s4) { + switch (poolType) { case 0: sp48 = &gNoteFreeLists.disabled; sp44 = &pool->disabled; @@ -578,7 +577,7 @@ void func_80012AC4(NotePool* pool, s32 arg1) { func_800145BC(sp44, temp_v0); var_s0++; } - var_s4++; + poolType++; } } @@ -588,7 +587,7 @@ void func_80012C00(AudioListItem* item1, AudioListItem* item2) { item2->next = item1->next; item1->next->prev = item2; item1->next = item2; - item1->u.count += 1; + item1->u.count++; item2->pool = item1->pool; } } @@ -602,34 +601,34 @@ void func_80012C40(Note* note) { } Note* func_80012C6C(AudioListItem* item, s32 priority) { - AudioListItem* var_v0; - AudioListItem* var_v1; - void* temp_a0; + AudioListItem* priorityItem; + AudioListItem* nextItem = item->next; - var_v0 = item->next; - if (var_v0 == item) { + if (nextItem == item) { return NULL; } - for (var_v1 = var_v0; var_v0 != item; var_v0 = var_v0->next) { - if (((Note*) var_v1->u.value)->playbackState.priority >= ((Note*) var_v0->u.value)->playbackState.priority) { - var_v1 = var_v0; + priorityItem = nextItem; + for (nextItem; nextItem != item; nextItem = nextItem->next) { + if (((Note*) nextItem->u.value)->playbackState.priority <= + ((Note*) priorityItem->u.value)->playbackState.priority) { + priorityItem = nextItem; } - // var_v0 = var_v0->next; } - if (var_v1 == NULL) { + + if (priorityItem == NULL) { return NULL; } - if (((Note*) var_v1->u.value)->playbackState.priority >= priority) { + if (((Note*) priorityItem->u.value)->playbackState.priority >= priority) { return NULL; } - return (Note*) var_v1->u.value; + return (Note*) priorityItem->u.value; } void func_80012CEC(Note* note, SequenceLayer* layer) { s32 pad[4]; s32 var_a2; - NoteSubEu* temp_v0; + NoteSubEu* noteSub; note->playbackState.prevParentLayer = NO_LAYER; note->playbackState.parentLayer = layer; @@ -642,22 +641,22 @@ void func_80012CEC(Note* note, SequenceLayer* layer) { layer->noteVelocity = 0.0f; func_80011EB8(note); var_a2 = layer->instOrWave; - temp_v0 = ¬e->noteSubEu; + noteSub = ¬e->noteSubEu; if (var_a2 == 0xFF) { var_a2 = layer->channel->instOrWave; } - temp_v0->waveSampleAddr = (s16*) layer->tunedSample; - if (var_a2 >= 0x80) { - temp_v0->bitField1.isSyntheticWave = 1; + noteSub->waveSampleAddr = (s16*) layer->tunedSample; + if (var_a2 >= 128) { + noteSub->bitField1.isSyntheticWave = true; } else { - temp_v0->bitField1.isSyntheticWave = 0; + noteSub->bitField1.isSyntheticWave = false; } - if (temp_v0->bitField1.isSyntheticWave) { + if (noteSub->bitField1.isSyntheticWave) { func_800126AC(note, layer, var_a2); } note->playbackState.fontId = layer->channel->fontId; - temp_v0->bitField0.stereoHeadsetEffects = layer->channel->stereoHeadsetEffects; - temp_v0->bitField1.reverbIndex = layer->channel->someOtherPriority & 3; + noteSub->bitField0.stereoHeadsetEffects = layer->channel->stereoHeadsetEffects; + noteSub->bitField1.reverbIndex = layer->channel->someOtherPriority & 3; } void func_80012E28(Note* note, SequenceLayer* layer) { @@ -673,23 +672,23 @@ void func_80012E5C(Note* note, SequenceLayer* layer) { } Note* func_80012E88(NotePool* pool, SequenceLayer* layer) { - Note* temp_v0 = func_800145FC(&pool->disabled); + Note* note = func_800145FC(&pool->disabled); - if (temp_v0 != NULL) { - func_80012CEC(temp_v0, layer); - func_80012C00(&pool->active, &temp_v0->listItem); + if (note != NULL) { + func_80012CEC(note, layer); + func_80012C00(&pool->active, ¬e->listItem); } - return temp_v0; + return note; } Note* func_80012ED4(NotePool* pool, SequenceLayer* layer) { - Note* sp1C = func_800145FC(&pool->decaying); + Note* note = func_800145FC(&pool->decaying); - if (sp1C != NULL) { - func_80012E5C(sp1C, layer); - func_800145BC(&pool->releasing, &sp1C->listItem); + if (note != NULL) { + func_80012E5C(note, layer); + func_800145BC(&pool->releasing, ¬e->listItem); } - return sp1C; + return note; } Note* func_80012F24(NotePool* pool, SequenceLayer* layer) { diff --git a/src/audio/audio_synthesis.c b/src/audio/audio_synthesis.c index 4411bc76..93b9ad60 100644 --- a/src/audio/audio_synthesis.c +++ b/src/audio/audio_synthesis.c @@ -680,7 +680,7 @@ Acmd* func_80009D78(Acmd* aList, s32 aiBufLen, s16 reverbIndex, s16 updateIndex) aList = func_800098DC(aList, sp64->lengthA + 0xC90, 0, sp64->lengthB, reverbIndex); } aAddMixer(aList++, 0x300, 0xC90, 0x990, 0x7FFF); - aMix(aList++, 0x30, gSynthReverbs[reverbIndex].unk_08 + 0x8000, 0xC90, 0xC90); + aMix(aList++, 0x30, gSynthReverbs[reverbIndex].decayRatio + 0x8000, 0xC90, 0xC90); } else { sp62 = (sp64->startPos & 7) * 2; sp60 = ALIGN16(sp62 + sp64->lengthA); @@ -695,13 +695,13 @@ Acmd* func_80009D78(Acmd* aList, s32 aiBufLen, s16 reverbIndex, s16 updateIndex) aResample(aList++, gSynthReverbs[reverbIndex].resampleFlags, gSynthReverbs[reverbIndex].unk_0A, OS_K0_TO_PHYSICAL(gSynthReverbs[reverbIndex].unk_34)); aAddMixer(aList++, 0x300, 0xC90, 0x990, 0x7FFF); - aMix(aList++, 0x30, gSynthReverbs[reverbIndex].unk_08 + 0x8000, 0xC90, 0xC90); + aMix(aList++, 0x30, gSynthReverbs[reverbIndex].decayRatio + 0x8000, 0xC90, 0xC90); } - if ((gSynthReverbs[reverbIndex].decayRatio != 0) || (gSynthReverbs[reverbIndex].unk_0E != 0)) { + if ((gSynthReverbs[reverbIndex].leakRtL != 0) || (gSynthReverbs[reverbIndex].leakLtR != 0)) { aDMEMMove(aList++, 0xC90, 0x470, 0x180); - aMix(aList++, 0x18, gSynthReverbs[reverbIndex].decayRatio, 0xE10, 0xC90); - aMix(aList++, 0x18, gSynthReverbs[reverbIndex].unk_0E, 0x470, 0xE10); + aMix(aList++, 0x18, gSynthReverbs[reverbIndex].leakRtL, 0xE10, 0xC90); + aMix(aList++, 0x18, gSynthReverbs[reverbIndex].leakLtR, 0x470, 0xE10); } return aList; } @@ -775,7 +775,7 @@ Acmd* func_8000A25C(s16* aiBuf, s32 aiBufLen, Acmd* aList, s32 updateIndex) { &gNotes[sp84[var_s1]].synthesisState, aiBuf, aiBufLen, aList, updateIndex); var_s1++; } - if (gSynthReverbs[var_s3].useReverb != 0) { + if (gSynthReverbs[var_s3].useReverb) { aList = func_8000A128(aList, var_s3, updateIndex); } } @@ -800,7 +800,7 @@ Acmd* func_8000A700(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisState* synth s32 pad114; Sample* bookSample; // sp110 AdpcmLoop* loopInfo; // sp10C - s16* currentBook; // sp108 + void* currentBook; // sp108 s32 pad104; s32 pad100; s32 noteFinished; // spFC @@ -877,7 +877,7 @@ Acmd* func_8000A700(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisState* synth synthState->numParts = 0; note->noteSubEu.bitField0.finished = 0; } - resampleRateFixedPoint = noteSub->unk_0A; + resampleRateFixedPoint = noteSub->resampleRate; nParts = noteSub->bitField1.hasTwoParts + 1; sampleslenFixedPoint = (resampleRateFixedPoint * aiBufLen * 2) + synthState->samplePosFrac; nSamplesToLoad = (sampleslenFixedPoint) >> 0x10; @@ -1116,16 +1116,16 @@ Acmd* func_8000A700(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisState* synth aUnkCmd19(aList++, 0, aiBufLen * 2, 0x450, 0x450); } - temp2 = noteSub->unk_02; + temp2 = noteSub->gain; if (temp2 != 0) { if (temp2 < 0x10) { temp2 = 0x10; } aHiLoGain(aList++, temp2, (aiBufLen + 0x10) * 2, 0x450, 0); } - if ((noteSub->unk_03 != 0) || (synthState->prevHaasEffectLeftDelaySize != 0)) { + if ((noteSub->leftDelaySize != 0) || (synthState->prevHaasEffectLeftDelaySize != 0)) { delaySide = 1; - } else if ((noteSub->unk_04 != 0) || (synthState->prevHaasEffectRightDelaySize != 0)) { + } else if ((noteSub->rightDelaySize != 0) || (synthState->prevHaasEffectRightDelaySize != 0)) { delaySide = 2; } else { delaySide = 0; @@ -1184,9 +1184,10 @@ Acmd* func_8000B51C(Acmd* aList, NoteSubEu* noteSub, NoteSynthesisState* synthSt temp_t1 = synthState->curVolLeft; temp_t2 = synthState->curVolRight; - temp_t7 = noteSub->unk_06; - temp_t9 = noteSub->unk_08; + temp_t7 = noteSub->panVolLeft; + temp_t9 = noteSub->panVolRight; + temp_t7 <<= 4; temp_t9 <<= 4; @@ -1203,10 +1204,10 @@ Acmd* func_8000B51C(Acmd* aList, NoteSubEu* noteSub, NoteSynthesisState* synthSt temp_a1 = synthState->reverbVol; - if (noteSub->unk_05 != temp_a1) { - temp = (((noteSub->unk_05 & 0x7F) - (temp_a1 & 0x7F)) << 8); + if (noteSub->reverb != temp_a1) { + temp = (((noteSub->reverb & 0x7F) - (temp_a1 & 0x7F)) << 8); var_a2 = temp / (aiBufLen >> 3); - synthState->reverbVol = noteSub->unk_05; + synthState->reverbVol = noteSub->reverb; } else { var_a2 = 0; } @@ -1248,17 +1249,17 @@ Acmd* func_8000B98C(Acmd* aList, NoteSubEu* noteSub, NoteSynthesisState* synthSt u8 var_v1; u16 temp; - switch (delaySide) { /* irregular */ + switch (delaySide) { case 1: var_t0 = 0x990; - var_a1 = noteSub->unk_03; + var_a1 = noteSub->leftDelaySize; synthState->prevHaasEffectRightDelaySize = 0; var_v1 = synthState->prevHaasEffectLeftDelaySize; synthState->prevHaasEffectLeftDelaySize = var_a1; break; case 2: var_t0 = 0xB10; - var_a1 = noteSub->unk_04; + var_a1 = noteSub->rightDelaySize; synthState->prevHaasEffectLeftDelaySize = 0; var_v1 = synthState->prevHaasEffectRightDelaySize; synthState->prevHaasEffectRightDelaySize = var_a1; diff --git a/src/audio/note_data.c b/src/audio/note_data.c index 20fd3353..c7e2574b 100644 --- a/src/audio/note_data.c +++ b/src/audio/note_data.c @@ -280,7 +280,7 @@ u16 gHaasEffectDelaySizes[64] = { }; // clang-format off -ALIGNED(16) s16 D_800DD200[] = { +ALIGNED(8) s16 gD_800DD200[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, diff --git a/src/overlays/ovl_i4/fox_bo.c b/src/overlays/ovl_i4/fox_bo.c index 34d86853..761c2328 100644 --- a/src/overlays/ovl_i4/fox_bo.c +++ b/src/overlays/ovl_i4/fox_bo.c @@ -86,6 +86,13 @@ UnkStruct_D_i4_801A03E0 D_i4_801A03E0[6]; UnkStruct_D_i4_801A03E0 D_i4_801A0488[6]; s32 D_i4_801A0530; +Matrix D_BO_8019EE80 = { { + { 0.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f, 0.0f }, +} }; + f32 D_i4_8019EEC0 = 0.0f; void Bolse_8018BD60(Actor* this) { diff --git a/src/overlays/ovl_i4/fox_fo.c b/src/overlays/ovl_i4/fox_fo.c index 924f95d5..c42d3313 100644 --- a/src/overlays/ovl_i4/fox_fo.c +++ b/src/overlays/ovl_i4/fox_fo.c @@ -598,13 +598,6 @@ void Fortuna_8018906C(void) { f32 D_i4_8019EE4C[] = { -200.0f, 200.0f, -50.0f, -2000.0f }; f32 D_i4_8019EE5C[] = { 0.0f, 30.0f, -90.0f, 0.0f }; f32 D_i4_8019EE6C[] = { -100.0f, -200.0f, -300.0f, 0.0f }; -s32 D_i4_8019EE7C = 0; // padding for dword aligned matrix? -Matrix D_BO_8019EE80 = { { - { 0.0f, 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f, 0.0f }, - { 0.0f, 0.0f, 0.0f, 0.0f }, -} }; void Fortuna_801890EC(Actor* actor, s32 arg1) { Actor_Initialize(actor); diff --git a/srceu/audio/note_data.c b/srceu/audio/note_data.c new file mode 100644 index 00000000..6dc0e0c8 --- /dev/null +++ b/srceu/audio/note_data.c @@ -0,0 +1 @@ +#include "src/audio/note_data.c" diff --git a/srceu/audio/wave_samples.c b/srceu/audio/wave_samples.c new file mode 100644 index 00000000..61b15c1e --- /dev/null +++ b/srceu/audio/wave_samples.c @@ -0,0 +1 @@ +#include "src/audio/wave_samples.c" diff --git a/srceu/engine/fox_msg_palette.c b/srceu/engine/fox_msg_palette.c new file mode 100644 index 00000000..4693236f --- /dev/null +++ b/srceu/engine/fox_msg_palette.c @@ -0,0 +1 @@ +#include "src/engine/fox_msg_palette.c" diff --git a/srceu/engine/fox_rcp_init.c b/srceu/engine/fox_rcp_init.c new file mode 100644 index 00000000..0d224f92 --- /dev/null +++ b/srceu/engine/fox_rcp_init.c @@ -0,0 +1 @@ +#include "src/engine/fox_rcp_init.c" diff --git a/srceu/engine/fox_shapes.c b/srceu/engine/fox_shapes.c new file mode 100644 index 00000000..21f34f0f --- /dev/null +++ b/srceu/engine/fox_shapes.c @@ -0,0 +1 @@ +#include "src/engine/fox_shapes.c" diff --git a/srceu/engine/fox_wheels.c b/srceu/engine/fox_wheels.c new file mode 100644 index 00000000..fc67698b --- /dev/null +++ b/srceu/engine/fox_wheels.c @@ -0,0 +1 @@ +#include "src/engine/fox_wheels.c" diff --git a/srcjp/audio/note_data.c b/srcjp/audio/note_data.c new file mode 100644 index 00000000..6dc0e0c8 --- /dev/null +++ b/srcjp/audio/note_data.c @@ -0,0 +1 @@ +#include "src/audio/note_data.c" diff --git a/srcjp/audio/wave_samples.c b/srcjp/audio/wave_samples.c new file mode 100644 index 00000000..61b15c1e --- /dev/null +++ b/srcjp/audio/wave_samples.c @@ -0,0 +1 @@ +#include "src/audio/wave_samples.c" diff --git a/srcjp/engine/fox_load_inits.c b/srcjp/engine/fox_load_inits.c index db6f9e8c..a85dec43 100644 --- a/srcjp/engine/fox_load_inits.c +++ b/srcjp/engine/fox_load_inits.c @@ -1,789 +1 @@ -#include "sf64dma.h" - -Scene sNoOvl_Logo[1] = { - { NO_OVERLAY, - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ NO_SEGMENT, - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ ROM_SEGMENT(ast_logo) } }, -}; - -Scene sOvlending_Ending[6] = { - { OVERLAY_OFFSETS(ovl_ending), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ ROM_SEGMENT(ast_ending), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_ending), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_title), - /* 0x7 */ ROM_SEGMENT(ast_ending), - /* 0x8 */ ROM_SEGMENT(ast_ending_award_front), - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_ending), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_title), - /* 0x7 */ ROM_SEGMENT(ast_ending), - /* 0x8 */ ROM_SEGMENT(ast_ending_award_back), - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_ending), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_title), - /* 0x7 */ ROM_SEGMENT(ast_ending), - /* 0x8 */ ROM_SEGMENT(ast_ending_expert), - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_ending), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_title), - /* 0x7 */ ROM_SEGMENT(ast_ending), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_ending), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ ROM_SEGMENT(ast_ending), - /* 0x8 */ ROM_SEGMENT(ast_ending_expert), - /* 0x9 */ ROM_SEGMENT(ast_font_3d), - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvlmenu_Title[1] = { - { OVERLAY_OFFSETS(ovl_menu), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_title), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvlmenu_Option[1] = { - { OVERLAY_OFFSETS(ovl_menu), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_map), - /* 0x7 */ ROM_SEGMENT(ast_vs_menu), - /* 0x8 */ ROM_SEGMENT(ast_option), - /* 0x9 */ ROM_SEGMENT(ast_font_3d), - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvlmenu_Map[1] = { - { OVERLAY_OFFSETS(ovl_menu), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_map), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ ROM_SEGMENT(ast_font_3d), - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvlmenu_GameOver[1] = { - { OVERLAY_OFFSETS(ovl_menu), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ ROM_SEGMENT(ast_andross), - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli1_Corneria[1] = { - { OVERLAY_OFFSETS(ovl_i1), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_corneria), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli2_Meteo[2] = { - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_meteo), - /* 0x7 */ ROM_SEGMENT(ast_warp_zone), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_meteo), - /* 0x7 */ ROM_SEGMENT(ast_warp_zone), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli5_Titania[6] = { - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_titania), - /* 0x7 */ ROM_SEGMENT(ast_7_ti_1), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_titania), - /* 0x7 */ ROM_SEGMENT(ast_7_ti_2), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_titania), - /* 0x7 */ ROM_SEGMENT(ast_7_ti_2), - /* 0x8 */ ROM_SEGMENT(ast_8_ti), - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_titania), - /* 0x7 */ ROM_SEGMENT(ast_7_ti_2), - /* 0x8 */ ROM_SEGMENT(ast_8_ti), - /* 0x9 */ ROM_SEGMENT(ast_9_ti), - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_titania), - /* 0x7 */ ROM_SEGMENT(ast_7_ti_2), - /* 0x8 */ ROM_SEGMENT(ast_8_ti), - /* 0x9 */ ROM_SEGMENT(ast_9_ti), - /* 0xA */ ROM_SEGMENT(ast_A_ti), - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_titania), - /* 0x7 */ ROM_SEGMENT(ast_7_ti_2), - /* 0x8 */ ROM_SEGMENT(ast_8_ti), - /* 0x9 */ ROM_SEGMENT(ast_9_ti), - /* 0xA */ ROM_SEGMENT(ast_A_ti), - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli2_SectorX[2] = { - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_sector_x), - /* 0x7 */ ROM_SEGMENT(ast_warp_zone), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_sector_x), - /* 0x7 */ ROM_SEGMENT(ast_warp_zone), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli4_SectorZ[1] = { - { OVERLAY_OFFSETS(ovl_i4), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_sector_z), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli3_Aquas[1] = { - { OVERLAY_OFFSETS(ovl_i3), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_blue_marine), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_aquas), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli3_Area6[1] = { - { OVERLAY_OFFSETS(ovl_i3), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_area_6), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli4_Fortuna[2] = { - { OVERLAY_OFFSETS(ovl_i4), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_fortuna), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ ROM_SEGMENT(ast_star_wolf) } }, - { OVERLAY_OFFSETS(ovl_i4), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_fortuna), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli3_Unk4[1] = { - { OVERLAY_OFFSETS(ovl_i3), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_area_6), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli6_SectorY[1] = { - { OVERLAY_OFFSETS(ovl_i6), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_sector_y), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli3_Solar[1] = { - { OVERLAY_OFFSETS(ovl_i3), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_solar), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli3_Zoness[1] = { - { OVERLAY_OFFSETS(ovl_i3), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_zoness), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli1_Venom1[1] = { - { OVERLAY_OFFSETS(ovl_i1), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_venom_1), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ ROM_SEGMENT(ast_ve1_boss), - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli6_Andross[1] = { - { OVERLAY_OFFSETS(ovl_i6), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_venom_2), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ ROM_SEGMENT(ast_andross), - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli6_Venom2[2] = { - { OVERLAY_OFFSETS(ovl_i6), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_venom_2), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ ROM_SEGMENT(ast_star_wolf) } }, - { OVERLAY_OFFSETS(ovl_i6), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_venom_2), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli2_Setup20[1] = { - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_ve1_boss), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli4_Bolse[1] = { - { OVERLAY_OFFSETS(ovl_i4), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_bolse), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ ROM_SEGMENT(ast_star_wolf) } }, -}; - -Scene sOvli4_Katina[1] = { - { OVERLAY_OFFSETS(ovl_i4), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_katina), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ ROM_SEGMENT(ast_star_wolf) } }, -}; - -Scene sOvli5_Macbeth[2] = { - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_macbeth), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ ROM_SEGMENT(ast_allies), - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i5), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_landmaster), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_macbeth), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ ROM_SEGMENT(ast_great_fox), - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvli1_Training[1] = { - { OVERLAY_OFFSETS(ovl_i1), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_arwing), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ ROM_SEGMENT(ast_training), - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ ROM_SEGMENT(ast_star_wolf) } }, -}; - -Scene sOvli2_Versus[2] = { - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_planet), - /* 0x3 */ ROM_SEGMENT(ast_versus), - /* 0x4 */ ROM_SEGMENT(ast_enmy_planet), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ ROM_SEGMENT(ast_vs_menu), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, - { OVERLAY_OFFSETS(ovl_i2), - { /* 0x1 */ ROM_SEGMENT(ast_common), - /* 0x2 */ ROM_SEGMENT(ast_bg_space), - /* 0x3 */ ROM_SEGMENT(ast_versus), - /* 0x4 */ ROM_SEGMENT(ast_enmy_space), - /* 0x5 */ ROM_SEGMENT(ast_text), - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ ROM_SEGMENT(ast_vs_menu), - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; - -Scene sOvlUnused_Unk[1] = { - { OVERLAY_OFFSETS(ovl_unused), - { /* 0x1 */ NO_SEGMENT, - /* 0x2 */ NO_SEGMENT, - /* 0x3 */ NO_SEGMENT, - /* 0x4 */ NO_SEGMENT, - /* 0x5 */ NO_SEGMENT, - /* 0x6 */ NO_SEGMENT, - /* 0x7 */ NO_SEGMENT, - /* 0x8 */ NO_SEGMENT, - /* 0x9 */ NO_SEGMENT, - /* 0xA */ NO_SEGMENT, - /* 0xB */ NO_SEGMENT, - /* 0xC */ NO_SEGMENT, - /* 0xD */ NO_SEGMENT, - /* 0xE */ NO_SEGMENT, - /* 0xF */ NO_SEGMENT } }, -}; +#include "src/engine/fox_load_inits.c" diff --git a/srcjp/engine/fox_msg_palette.c b/srcjp/engine/fox_msg_palette.c new file mode 100644 index 00000000..4693236f --- /dev/null +++ b/srcjp/engine/fox_msg_palette.c @@ -0,0 +1 @@ +#include "src/engine/fox_msg_palette.c" diff --git a/srcjp/engine/fox_rcp_init.c b/srcjp/engine/fox_rcp_init.c new file mode 100644 index 00000000..0d224f92 --- /dev/null +++ b/srcjp/engine/fox_rcp_init.c @@ -0,0 +1 @@ +#include "src/engine/fox_rcp_init.c" diff --git a/srcjp/engine/fox_shapes.c b/srcjp/engine/fox_shapes.c new file mode 100644 index 00000000..21f34f0f --- /dev/null +++ b/srcjp/engine/fox_shapes.c @@ -0,0 +1 @@ +#include "src/engine/fox_shapes.c" diff --git a/srcjp/engine/fox_wheels.c b/srcjp/engine/fox_wheels.c new file mode 100644 index 00000000..fc67698b --- /dev/null +++ b/srcjp/engine/fox_wheels.c @@ -0,0 +1 @@ +#include "src/engine/fox_wheels.c" diff --git a/yamls/eu/rev0/main.yaml b/yamls/eu/rev0/main.yaml index 710243ae..a43b6511 100644 --- a/yamls/eu/rev0/main.yaml +++ b/yamls/eu/rev0/main.yaml @@ -179,7 +179,6 @@ - [0xC5D60, data, sys/sys_math] - [0xC5DA0, data, sys/sys_matrix] - [0xC5E70, data, sys/sys_fault] - - [0xC6050, data, audio] - [0xC6050, data, audio/audio_synthesis] - [0xC6130, data, audio/audio_heap] - [0xC66D0, data, audio/audio_load] @@ -274,12 +273,13 @@ - [0xDB420, .rodata, engine/fox_save] # Common assets - - [0xDB490, data, fox_shapes] - - [0xDCC70, data, fox_wheels] - - [0xDDA10, data, fox_msg_textures] - - [0xDE790, data, fox_rcp_init] - - [0xDE800, data, wave_samples] - - [0xDF420, data, note_data] + - [0xDB490, .data, engine/fox_shapes] + - [0xDCC70, .data, engine/fox_wheels] + - [0xDDA10, .data, engine/fox_msg_palette] + - [0xDDA90, data, engine/fox_msg_textures] + - [0xDE790, .data, engine/fox_rcp_init] + - [0xDE800, .data, audio/wave_samples] + - [0xDF420, .data, audio/note_data] # Nintendo Library bss - { type: bss, vram: 0x800DF9F0, name: sys/sys_joybus } diff --git a/yamls/eu/rev0/overlays.yaml b/yamls/eu/rev0/overlays.yaml index 4008c04c..089f73a3 100644 --- a/yamls/eu/rev0/overlays.yaml +++ b/yamls/eu/rev0/overlays.yaml @@ -104,7 +104,7 @@ - [0xE608A0, c, fox_sz] - [0xE65D00, data, fox_i4] - [0xE65D10, data, fox_fo] - - [0xE65DF0, data, fox_bo] + - [0xE65DB0, data, fox_bo] - [0xE66020, data, fox_ka] - [0xE663E0, data, fox_sz] - [0xE66600, .rodata, fox_i4] diff --git a/yamls/jp/rev0/main.yaml b/yamls/jp/rev0/main.yaml index 62427694..fcda490c 100644 --- a/yamls/jp/rev0/main.yaml +++ b/yamls/jp/rev0/main.yaml @@ -255,12 +255,12 @@ # Common assets - [0xDFF60, data, fox_msg_textures] - - [0xE4FE0, data, fox_shapes] - - [0xE67C0, data, fox_wheels] - - [0xE7560, data, fox_msg_palettes] - - [0xE75E0, data, fox_rcp_init] - - [0xE7650, data, wave_samples] - - [0xE8270, data, note_data] + - [0xE4FE0, .data, engine/fox_shapes] + - [0xE67C0, .data, engine/fox_wheels] + - [0xE7560, .data, engine/fox_msg_palette] + - [0xE75E0, .data, engine/fox_rcp_init] + - [0xE7650, .data, audio/wave_samples] + - [0xE8270, .data, audio/note_data] # Nintendo Library bss - { type: bss, vram: 0x800E87C0, name: sys_joybus } diff --git a/yamls/us/rev1/main.yaml b/yamls/us/rev1/main.yaml index 17b83f8c..b7895c70 100644 --- a/yamls/us/rev1/main.yaml +++ b/yamls/us/rev1/main.yaml @@ -333,9 +333,9 @@ # Common assets - [0xDA0A0, .data, engine/fox_shapes] - - [0xDA830, .data, engine/fox_wheels] - - [0xDB5D0, .data, engine/fox_msg_palette] - - [0xDB650, .data, engine/fox_rcp_init] + - [0xDB880, .data, engine/fox_wheels] + - [0xDC620, .data, engine/fox_msg_palette] + - [0xDC6A0, .data, engine/fox_rcp_init] - [0xDC710, .data, audio/wave_samples] - [0xDD330, .data, audio/note_data] diff --git a/yamls/us/rev1/overlays.yaml b/yamls/us/rev1/overlays.yaml index 08c83365..4347396d 100644 --- a/yamls/us/rev1/overlays.yaml +++ b/yamls/us/rev1/overlays.yaml @@ -93,7 +93,7 @@ - [0xE63D50, c, fox_sz] - [0xE69220, .data, fox_i4] - [0xE69230, .data, fox_fo] - - [0xE69310, .data, fox_bo] + - [0xE692D0, .data, fox_bo] - [0xE69540, .data, fox_ka] - [0xE69910, .data, fox_sz] - [0xE69B30, .rodata, fox_i4]