diff --git a/assets/xml/interface/parameter_static.xml b/assets/xml/interface/parameter_static.xml index dd35b081e..33ab40de4 100644 --- a/assets/xml/interface/parameter_static.xml +++ b/assets/xml/interface/parameter_static.xml @@ -22,14 +22,14 @@ - + - + @@ -44,7 +44,7 @@ - + @@ -62,7 +62,7 @@ - + @@ -74,7 +74,7 @@ - + diff --git a/include/functions.h b/include/functions.h index ecbb95387..e1d4bb45b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1632,7 +1632,7 @@ void func_800FE658(f32 arg0); // void func_800FE788(void); // void func_800FE798(void); // void func_800FE7A8(void); -// void func_800FE9B4(void); +s32 func_800FE9B4(GlobalContext* globalCtx); // void func_800FEA50(void); void func_800FEAB0(void); // void func_800FEAC0(void); @@ -1970,7 +1970,7 @@ void Inventory_DeleteItem(s16 arg0, s16 arg1); // void func_80114CA0(void); s32 Inventory_HasEmptyBottle(void); s32 Inventory_HasItemInBottle(u8 itemId); -// void Inventory_UpdateBottleItem(void); +// void func_80114FD0(void); // void func_80115130(void); // void Inventory_UpdateItem(void); // void func_801153C8(void); @@ -2055,7 +2055,7 @@ s32 func_80123810(GlobalContext* globalCtx); void func_80123AA4(Player* player, s32 arg1); // void func_80123BD4(void); // void func_80123C58(void); -void func_80123C90(GlobalContext* globalCtx, Player* player); +void Player_SetEquipmentData(GlobalContext* globalCtx, Player* this); void func_80123D50(GlobalContext* globalCtx, Player* player, UNK_TYPE arg2, UNK_TYPE arg3); void func_80123DA4(Player* player); // void func_80123DC0(void); @@ -2253,16 +2253,16 @@ s32 Room_StartRoomTransition(GlobalContext* globalCtx, RoomContext* roomCtx, s32 s32 Room_HandleLoadCallbacks(GlobalContext* globalCtx, RoomContext* roomCtx); void Room_Draw(GlobalContext* globalCtx, Room* room, u32 flags); void func_8012EBF8(GlobalContext* globalCtx, RoomContext* roomCtx); -s32 func_8012EC80(GlobalContext* globalCtx); -void func_8012ED34(s16 equipment); -u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment); -void Inventory_ChangeUpgrade(s16 arg0, u32 arg1); -s32 func_8012EE34(s16 arg0); -void func_8012EF0C(s16 arg0); -void func_8012F0EC(s16 arg0); -void func_8012F1BC(s16 sceneIndex); -s16 func_8012F22C(s16 sceneIndex); -void func_8012F278(GlobalContext* globalCtx); +s32 Inventory_GetBtnBItem(GlobalContext* globalCtx); +void Inventory_ChangeEquipment(s16 value); +u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment); +void Inventory_ChangeUpgrade(s16 upgrade, u32 value); +s32 Inventory_IsMapVisible(s16 sceneNum); +void Inventory_SetMapVisibility(s16 tingleIndex); +void Inventory_SaveDekuPlaygroundHighScore(s16 timerId); +void Inventory_IncrementSkullTokenCount(s16 sceneIndex); +s16 Inventory_GetSkullTokenCount(s16 sceneIndex); +void Inventory_SaveLotteryCodeGuess(GlobalContext* globalCtx); s32 Object_Spawn(ObjectContext* objectCtx, s16 id); void Object_InitBank(GameState* gameState, ObjectContext* objectCtx); void Object_UpdateBank(ObjectContext* objectCtx); diff --git a/include/variables.h b/include/variables.h index 77a97c131..55ab6f711 100644 --- a/include/variables.h +++ b/include/variables.h @@ -1629,29 +1629,29 @@ extern MtxF gIdentityMtxF; // extern u64* initialgspUcodeText; // extern u64* initialgspUcodeData; // extern UNK_TYPE1 D_801D1E70; -// extern UNK_TYPE1 D_801D2E80; -// extern UNK_TYPE1 D_801D2F80; -// extern UNK_TYPE1 D_801D3070; -// extern UNK_TYPE1 D_801D3700; -// extern UNK_TYPE1 D_801D3D90; -// extern UNK_TYPE1 D_801D3F90; -// extern UNK_TYPE1 D_801D4190; -// extern UNK_TYPE1 D_801D4390; -// extern UNK_TYPE1 D_801D4590; +// extern UNK_TYPE1 gLowPassFilterData; +// extern UNK_TYPE1 gHighPassFilterData; +// extern UNK_TYPE1 gBandStopFilterData; +// extern UNK_TYPE1 gBandPassFilterData; +// extern UNK_TYPE1 gSawtoothWaveSample; +// extern UNK_TYPE1 gTriangleWaveSample; +// extern UNK_TYPE1 gSineWaveSample; +// extern UNK_TYPE1 gSquareWaveSample; +// extern UNK_TYPE1 gWhiteNoiseSample; // extern UNK_TYPE1 D_801D4790; -// extern UNK_TYPE1 D_801D4990; -// extern UNK_TYPE1 D_801D4B90; +// extern UNK_TYPE1 gEighthPulseWaveSample; +// extern UNK_TYPE1 gQuarterPulseWaveSample; extern s16* gWaveSamples[9]; extern UNK_PTR D_801D4D98; extern UNK_PTR D_801D4DB0; extern f32 gBendPitchOneOctaveFrequencies[256]; // extern UNK_TYPE1 D_801D4FB4; -// extern UNK_TYPE4 D_801D51B4; +// extern UNK_TYPE4 gBendPitchTwoSemitonesFrequencies; // extern UNK_TYPE4 D_801D53B4; -// extern UNK_TYPE1 D_801D55B4; -// extern UNK_TYPE1 D_801D57B4; -// extern UNK_TYPE1 D_801D57C4; -// extern UNK_TYPE1 D_801D57D4; +// extern UNK_TYPE1 gPitchFrequencies; +// extern UNK_TYPE1 gDefaultShortNoteVelocityTable; +// extern UNK_TYPE1 gDefaultShortNoteGateTimeTable; +// extern UNK_TYPE1 gDefaultEnvelope; extern NoteSubEu gZeroNoteSub; extern NoteSubEu gDefaultNoteSub; extern u16 gHeadsetPanQuantization[]; diff --git a/include/z64.h b/include/z64.h index 48b19347f..1a9770b1c 100644 --- a/include/z64.h +++ b/include/z64.h @@ -901,7 +901,7 @@ typedef struct { /* 0x11F0B */ UNK_TYPE1 pad11F0B[0x5]; /* 0x11F10 */ s32 unk11F10; /* 0x11F14 */ UNK_TYPE1 pad11F14[0xE]; - /* 0x11F22 */ u8 unk11F22; + /* 0x11F22 */ u8 msgMode; /* 0x11F23 */ UNK_TYPE1 pad11F23[0xE3]; /* 0x12006 */ s16 unk12006; /* 0x12007 */ UNK_TYPE1 pad12007[0x18]; @@ -919,7 +919,11 @@ typedef struct { /* 0x12044 */ s16 unk12044; /* 0x12046 */ UNK_TYPE1 pad12046[0x2]; /* 0x12048 */ u8 unk12048; // EnKakasi - /* 0x12049 */ UNK_TYPE1 pad12049[0x21]; + /* 0x12049 */ UNK_TYPE1 pad12049[0xB]; + /* 0x12054 */ s16 unk12054; // First digit in lottery code guess + /* 0x12056 */ s16 unk12056; // Second digit lottery code guess + /* 0x12058 */ s16 unk12058; // Third digit lottery code guess + /* 0x1205A */ UNK_TYPE1 pad1205A[0x10]; /* 0x1206A */ s16 unk1206A; /* 0x1206C */ s32 unk1206C; /* 0x12070 */ UNK_TYPE1 pad12070[0x8]; diff --git a/include/z64audio.h b/include/z64audio.h index 9baa9911e..89fff01c7 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -109,23 +109,23 @@ typedef enum { } OcarinaButtonIdx; typedef enum { - /* 0x0 */ NOTE_C4, - /* 0x1 */ NOTE_DFLAT4, - /* 0x2 */ NOTE_D4, - /* 0x3 */ NOTE_EFLAT4, - /* 0x4 */ NOTE_E4, - /* 0x5 */ NOTE_F4, - /* 0x6 */ NOTE_GFLAT4, - /* 0x7 */ NOTE_G4, - /* 0x8 */ NOTE_AFLAT4, - /* 0x9 */ NOTE_A4, - /* 0xA */ NOTE_BFLAT4, - /* 0xB */ NOTE_B4, - /* 0xC */ NOTE_C5, - /* 0xD */ NOTE_DFLAT5, - /* 0xE */ NOTE_D5, - /* 0xF */ NOTE_EFLAT5, - /* -1 */ NOTE_NONE = 0xFF + /* 0x0 */ OCARINA_PITCH_C4, + /* 0x1 */ OCARINA_PITCH_DFLAT4, + /* 0x2 */ OCARINA_PITCH_D4, + /* 0x3 */ OCARINA_PITCH_EFLAT4, + /* 0x4 */ OCARINA_PITCH_E4, + /* 0x5 */ OCARINA_PITCH_F4, + /* 0x6 */ OCARINA_PITCH_GFLAT4, + /* 0x7 */ OCARINA_PITCH_G4, + /* 0x8 */ OCARINA_PITCH_AFLAT4, + /* 0x9 */ OCARINA_PITCH_A4, + /* 0xA */ OCARINA_PITCH_BFLAT4, + /* 0xB */ OCARINA_PITCH_B4, + /* 0xC */ OCARINA_PITCH_C5, + /* 0xD */ OCARINA_PITCH_DFLAT5, + /* 0xE */ OCARINA_PITCH_D5, + /* 0xF */ OCARINA_PITCH_EFLAT5, + /* -1 */ OCARINA_PITCH_NONE = 0xFF } OcarinaNoteIdx; typedef s32 (*DmaHandler)(OSPiHandle* handle, OSIoMesg* mb, s32 direction); diff --git a/include/z64item.h b/include/z64item.h index 46ba8c045..c8d7b0d1e 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -383,7 +383,8 @@ typedef enum { /* -1 */ EXCH_ITEM_MINUS1 = -1, // Unknown usage or function /* 0x00 */ EXCH_ITEM_NONE, /* 0x1E */ EXCH_ITEM_1E = 0x1E, // BOTTLE_MUSHROOM - /* 0x2A */ EXCH_ITEM_2A = 0x2A // MOON_TEAR? + /* 0x2A */ EXCH_ITEM_2A = 0x2A, // MOON_TEAR? + /* 0x2E */ EXCH_ITEM_2E = 0x2E } ExchangeItemID; #endif diff --git a/include/z64save.h b/include/z64save.h index 5b0c33ab8..61d217544 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -22,7 +22,7 @@ typedef struct { /* 0x50 */ u8 dungeonItems[10]; /* 0x5A */ s8 dungeonKeys[10]; /* 0x64 */ s8 strayFairies[10]; // "orange_fairy" - /* 0x6E */ u8 unk_6E[8][3]; // "degnuts_memory_name" + /* 0x6E */ char dekuPlaygroundPlayerName[3][8]; // Stores playerName (8 char) over (3 days) when getting a new high score. original name: degnuts_memory_name } Inventory; // size = 0x88 typedef struct { @@ -49,7 +49,9 @@ typedef struct { /* 0x08 */ u32 swch1; /* 0x0C */ u32 clearedRoom; /* 0x10 */ u32 collectible; -} CycleSceneFlags; // size = 0x14 + /* 0x14 */ u32 unk_14; + /* 0x18 */ u32 unk_18; +} PermanentSceneFlags; // size = 0x1C typedef struct { /* 0x00 */ u16 optionId; // original name: option_id @@ -80,6 +82,14 @@ typedef struct { /* 0x0026 */ s16 savedSceneNum; // "scene_data_ID" } SavePlayerData; // size = 0x28 +typedef struct { + /* 0x00 */ u32 chest; + /* 0x04 */ u32 swch0; + /* 0x08 */ u32 swch1; + /* 0x0C */ u32 clearedRoom; + /* 0x10 */ u32 collectible; +} CycleSceneFlags; // size = 0x14 + typedef struct { /* 0x0000 */ u32 entranceIndex; // "scene_no" /* 0x0004 */ u8 equippedMask; // "player_mask" @@ -100,7 +110,28 @@ typedef struct { /* 0x0024 */ SavePlayerData playerData; /* 0x004C */ ItemEquips equips; /* 0x0070 */ Inventory inventory; - /* 0x00F8 */ u32 roomInf[128][7]; + /* 0x00F8 */ PermanentSceneFlags permanentSceneFlags[120]; + /* 0x0E18 */ u8 unk_E18[0x54]; + /* 0x0E6C */ u32 dekuPlaygroundHighScores[3]; + /* 0x0E78 */ u32 pictoFlags0; + /* 0x0E7C */ u32 pictoFlags1; + /* 0x0E80 */ u32 unk_E80; + /* 0x0E84 */ u32 unk_E84; + /* 0x0E88 */ u32 unk_E88[7]; // Invadepoh flags + /* 0x0EA4 */ u32 scenesVisible[7]; // tingle maps and clouded regions on pause map. Stores scenes bitwise for up to 224 scenes even though there are not that many scenes + /* 0x0EC0 */ u32 skullTokenCount; // upper 16 bits store Swamp skulls, lower 16 bits store Ocean skulls + /* 0x0EC4 */ u32 unk_EC4; // Gossic stone heart piece flags + /* 0x0EC8 */ u32 unk_EC8; + /* 0x0ECC */ u32 unk_ECC[2]; // Related to blue warps + /* 0x0ED4 */ u32 stolenItems; // Items stolen by Takkuri and given to Curiosity Shop Man + /* 0x0ED8 */ u32 unk_DD8; + /* 0x0EDC */ u32 bankRupees; + /* 0x0EE0 */ u32 unk_EE0; + /* 0x0EE4 */ u32 unk_EE4; // Fishing flags + /* 0x0EE8 */ u32 unk_EE8; + /* 0x0EEC */ u32 horseBackBalloonHighScore; + /* 0x0EF0 */ u32 lotteryCodeGuess; // Lottery code chosen by player (only uses lower three hex digits) + /* 0x0EF4 */ u32 unk_EF4; // Shooting Gallery Man Flags /* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg" /* 0x0F5C */ u32 mapsVisited; // "area_arrival" /* 0x0F60 */ u32 mapsVisible; // "cloud_clear" @@ -109,7 +140,7 @@ typedef struct { /* 0x0F66 */ u8 scarecrowsSong[128]; // "oca_rec_buff8" /* 0x0FE6 */ s8 bombersCaughtNum; // "aikotoba_index" /* 0x0FE7 */ s8 bombersCaughtOrder[5]; // "aikotoba_table" - /* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table" + /* 0x0FEC */ s8 lotteryCodes[3][3]; // Pre-set lottery codes "numbers_table" /* 0x0FF5 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table" /* 0x0FFB */ s8 bomberCode[5]; // "bombers_aikotoba_table" /* 0x1000 */ HorseData horseData; @@ -196,7 +227,7 @@ typedef struct { /* 0x3F5C */ s32 unk_3F5C; // "bet_rupees" /* 0x3F60 */ u8 screenScaleFlag; // "framescale_flag" /* 0x3F64 */ f32 screenScale; // "framescale_scale" - /* 0x3F68 */ CycleSceneFlags cycleSceneFlags[120]; + /* 0x3F68 */ CycleSceneFlags cycleSceneFlags[120]; // Scene flags that are temporarily stored over the duration of a single 3-day cycle /* 0x48C8 */ u16 unk_48C8; // "scene_id_mix" /* 0x48CA */ u8 maskMaskBit[3]; // masks given away on the Moon /* 0x48CD */ u8 unk_48CD[24]; diff --git a/spec b/spec index 7dcc4bcbf..352e4fbd6 100644 --- a/spec +++ b/spec @@ -619,7 +619,7 @@ beginseg pad_text pad_text pad_text - include "build/data/code/audio_data.data.o" + include "build/src/code/audio/audio_data.o" include "build/src/code/audio/audio_synthesis.o" include "build/data/code/audio_synthesis.data.o" include "build/src/code/audio/audio_heap.o" @@ -1471,8 +1471,7 @@ beginseg name "ovl_Obj_Ice_Poly" compress include "build/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.o" - include "build/data/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly.data.o" - include "build/data/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly.reloc.o" + include "build/src/overlays/actors/ovl_Obj_Ice_Poly/ovl_Obj_Ice_Poly_reloc.o" endseg beginseg @@ -1495,8 +1494,7 @@ beginseg name "ovl_Obj_Bean" compress include "build/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.o" - include "build/data/ovl_Obj_Bean/ovl_Obj_Bean.data.o" - include "build/data/ovl_Obj_Bean/ovl_Obj_Bean.reloc.o" + include "build/src/overlays/actors/ovl_Obj_Bean/ovl_Obj_Bean_reloc.o" endseg beginseg diff --git a/src/code/audio/audio_data.c b/src/code/audio/audio_data.c new file mode 100644 index 000000000..c43018922 --- /dev/null +++ b/src/code/audio/audio_data.c @@ -0,0 +1,949 @@ +#include "global.h" + +s16 gLowPassFilterData[16 * 8] = { + /* 0x0 */ 0, 0, 0, 32767, 0, 0, 0, 0, // Identity filter (delta function) + /* 0x1 */ 3854, 4188, 4398, 4469, 4398, 4188, 3854, 3416, // low-freq cutoff (more filtering) + /* 0x2 */ 3415, 4314, 4915, 5126, 4915, 4314, 3415, 2351, + /* 0x3 */ 2636, 4433, 5762, 6252, 5762, 4433, 2636, 849, + /* 0x4 */ 1334, 4196, 6646, 7609, 6646, 4196, 1334, -802, + /* 0x5 */ -265, 3421, 7292, 8944, 7292, 3421, -265, -1863, + /* 0x6 */ -1558, 2065, 7146, 9546, 7146, 2065, -1558, -1682, + /* 0x7 */ -2353, 726, 7441, 11028, 7441, 726, -2353, -697, + /* 0x8 */ -2252, -693, 7121, 11962, 7121, -693, -2252, 668, + /* 0x9 */ -1373, -1819, 6299, 12298, 6299, -1819, -1373, 1484, + /* 0xA */ -213, -2740, 5843, 13680, 5843, -2740, -213, 1494, + /* 0xB */ 980, -3081, 4883, 14286, 4883, -3081, 980, 590, + /* 0xC */ 1769, -2973, 3866, 14981, 3866, -2973, 1769, -568, + /* 0xD */ 2023, -2554, 2911, 16397, 2911, -2554, 2023, -1391, + /* 0xE */ 1766, -1918, 2016, 19800, 2016, -1918, 1766, -1564, + /* 0xF */ 841, -853, 863, 26829, 863, -853, 841, -820, // high-freq cutoff (less filtering) +}; + +s16 gHighPassFilterData[15 * 8] = { + /* 0x0 */ -289, -291, -289, 30736, -289, -291, -289, -290, // low-freq cutoff (less filtering) + /* 0x1 */ -464, -467, -467, 29506, -467, -467, -464, -463, + /* 0x2 */ -662, -670, -672, 28101, -672, -670, -662, -656, + /* 0x3 */ -839, -855, -861, 26830, -861, -855, -839, -822, + /* 0x4 */ -996, -1024, -1038, 25685, -1038, -1024, -996, -963, + /* 0x5 */ -1184, -1236, -1266, 24272, -1266, -1236, -1184, -1118, + /* 0x6 */ -1357, -1450, -1506, 22900, -1506, -1450, -1357, -1238, + /* 0x7 */ -1514, -1680, -1784, 21498, -1784, -1680, -1514, -1307, + /* 0x8 */ -1613, -1877, -2048, 20390, -2048, -1877, -1613, -1298, + /* 0x9 */ -1657, -2185, -2559, 18869, -2559, -2185, -1657, -1093, + /* 0xA */ -1524, -2395, -3078, 18030, -3078, -2395, -1524, -739, + /* 0xB */ -1253, -2504, -3621, 17642, -3621, -2504, -1253, -367, + /* 0xC */ -525, -2367, -4732, 17517, -4732, -2367, -525, 0, + /* 0xD */ -34, -1762, -5706, 17503, -5706, -1762, -34, -258, + /* 0xE */ -772, -3, -6985, 17240, -6985, -3, -772, -3, // high-freq cutoff (more filtering) +}; + +// clang-format off +s16 gBandStopFilterData[105 * 8] = { + // Block 0 + /* 0x00 */ -43, -716, -1205, 28210, -1205, -716, -43, 629, + /* 0x01 */ 249, -919, -1819, 25489, -1819, -919, 249, 1301, + /* 0x02 */ 1267, -802, -2650, 20722, -2650, -802, 1267, 2603, + /* 0x03 */ 2497, -210, -3196, 17617, -3196, -210, 2497, 3339, + /* 0x04 */ 3413, 690, -3385, 14754, -3385, 690, 3413, 3035, + /* 0x05 */ 3859, 1734, -3416, 12704, -3416, 1734, 3859, 2042, + /* 0x06 */ 3858, 2907, -3414, 11516, -3414, 2907, 3858, 890, + /* 0x07 */ 3374, 4194, -3345, 10859, -3345, 4194, 3374, 80, + /* 0x08 */ 2446, 5521, -3130, 10483, -3130, 5521, 2446, 86, + /* 0x09 */ 1275, 6760, -2665, 10225, -2665, 6760, 1275, 1140, + /* 0x0A */ 252, 7778, -1836, 10022, -1836, 7778, 252, 3010, + /* 0x0B */ -98, 8427, -461, 9805, -461, 8427, -98, 4988, + /* 0x0C */ 719, 7392, 1528, 8201, 1528, 7392, 719, 5286, + /* 0x0D */ 2499, 5359, 3651, 5985, 3651, 5359, 2499, 3761, + + // Block 1 + /* 0x0E */ 711, -205, -1026, 27608, -1026, -205, 711, 1271, + /* 0x0F */ 1335, -108, -1520, 24836, -1520, -108, 1335, 2003, + /* 0x10 */ 2540, 455, -2104, 19853, -2104, 455, 2540, 2712, + /* 0x11 */ 3406, 1298, -2347, 16266, -2347, 1298, 3406, 2397, + /* 0x12 */ 3860, 2321, -2440, 14094, -2440, 2321, 3860, 1428, + /* 0x13 */ 3858, 3511, -2439, 12888, -2439, 3511, 3858, 259, + /* 0x14 */ 3248, 4679, -2238, 11859, -2238, 4679, 3248, -575, + /* 0x15 */ 2329, 6021, -1929, 11579, -1929, 6021, 2329, -626, + /* 0x16 */ 1225, 7613, -1395, 11967, -1395, 7613, 1225, 332, + /* 0x17 */ 172, 8785, -352, 12028, -352, 8785, 172, 2119, + /* 0x18 */ -172, 8198, 1139, 10360, 1139, 8198, -172, 3385, + /* 0x19 */ 511, 7006, 2830, 8649, 2830, 7006, 511, 3421, + /* 0x1A */ 1995, 5313, 4595, 6801, 4595, 5313, 1995, 2158, + + // Block 2 + /* 0x1B */ 1196, 313, -815, 26961, -815, 313, 1196, 1154, + /* 0x1C */ 1896, 666, -1159, 23821, -1159, 666, 1896, 1500, + /* 0x1D */ 2934, 1569, -1548, 19353, -1548, 1569, 2934, 1308, + /* 0x1E */ 3463, 2673, -1703, 16770, -1703, 2673, 3463, 316, + /* 0x1F */ 3269, 3757, -1608, 14587, -1608, 3757, 3269, -910, + /* 0x20 */ 2585, 4889, -1364, 13325, -1364, 4889, 2585, -1763, + /* 0x21 */ 1588, 6277, -970, 13171, -970, 6277, 1588, -1922, + /* 0x22 */ 337, 8121, -265, 14134, -265, 8121, 337, -1186, + /* 0x23 */ -795, 8193, 882, 12631, 882, 8193, -795, 391, + /* 0x24 */ -1058, 7224, 2132, 10492, 2132, 7224, -1058, 1444, + /* 0x25 */ -503, 6540, 3803, 9532, 3803, 6540, -503, 1541, + /* 0x26 */ 906, 5326, 5759, 8358, 5759, 5326, 906, 423, + + // Block 3 + /* 0x27 */ 1298, 781, -597, 27018, -597, 781, 1298, 392, + /* 0x28 */ 1914, 1364, -834, 24334, -834, 1364, 1914, 205, + /* 0x29 */ 2474, 2527, -1015, 19916, -1015, 2527, 2474, -817, + /* 0x2A */ 2277, 3649, -934, 16994, -934, 3649, 2277, -2050, + /* 0x2B */ 1545, 4865, -673, 15635, -673, 4865, 1545, -2964, + /* 0x2C */ 366, 6363, -181, 15693, -181, 6363, 366, -3252, + /* 0x2D */ -1017, 6734, 611, 13854, 611, 6734, -1017, -2187, + /* 0x2E */ -1937, 6500, 1558, 12000, 1558, 6500, -1937, -774, + /* 0x2F */ -2216, 6018, 2714, 10698, 2714, 6018, -2216, 171, + /* 0x30 */ -1795, 5344, 4221, 9864, 4221, 5344, -1795, 182, + /* 0x31 */ -659, 4411, 6228, 9260, 6228, 4411, -659, -908, + + // Block 4 + /* 0x32 */ 968, 1138, -358, 27228, -358, 1138, 968, -607, + /* 0x33 */ 1251, 1846, -453, 24418, -453, 1846, 1251, -1246, + /* 0x34 */ 1138, 3176, -412, 20709, -412, 3176, 1138, -2601, + /* 0x35 */ 313, 4550, -119, 19167, -119, 4550, 313, -3633, + /* 0x36 */ -972, 5170, 419, 16290, 419, 5170, -972, -3351, + /* 0x37 */ -2123, 5230, 1090, 13680, 1090, 5230, -2123, -2199, + /* 0x38 */ -2916, 5066, 1926, 12019, 1926, 5066, -2916, -929, + /* 0x39 */ -3202, 4669, 2995, 10953, 2995, 4669, -3202, -80, + /* 0x3A */ -2874, 3990, 4369, 10214, 4369, 3990, -2874, -84, + /* 0x3B */ -1937, 3001, 6108, 9601, 6108, 3001, -1937, -1071, + + // Block 5 + /* 0x3C */ 310, 1351, -102, 27950, -102, 1351, 310, -1287, + /* 0x3D */ 169, 2166, -55, 25895, -55, 2166, 169, -2088, + /* 0x3E */ -697, 3332, 252, 21292, 252, 3332, -697, -2909, + /* 0x3F */ -1846, 3873, 739, 17298, 739, 3873, -1846, -2549, + /* 0x40 */ -2904, 4036, 1371, 14658, 1371, 4036, -2904, -1485, + /* 0x41 */ -3657, 3912, 2183, 12999, 2183, 3912, -3657, -261, + /* 0x42 */ -3814, 3385, 3124, 11558, 3124, 3385, -3814, 561, + /* 0x43 */ -3535, 2679, 4428, 10890, 4428, 2679, -3535, 589, + /* 0x44 */ -2812, 1718, 6312, 10782, 6312, 1718, -2812, -299, + + // Block 6 + /* 0x45 */ -472, 1315, 164, 27677, 164, 1315, -472, -1185, + /* 0x46 */ -993, 1945, 353, 24630, 353, 1945, -993, -1551, + /* 0x47 */ -2181, 2706, 860, 19924, 860, 2706, -2181, -1347, + /* 0x48 */ -3275, 2979, 1521, 16895, 1521, 2979, -3275, -319, + /* 0x49 */ -3842, 2725, 2248, 14245, 2248, 2725, -3842, 889, + /* 0x4A */ -3933, 2186, 3141, 12579, 3141, 2186, -3933, 1665, + /* 0x4B */ -3664, 1431, 4428, 11971, 4428, 1431, -3664, 1747, + /* 0x4C */ -3021, 346, 6399, 12209, 6399, 346, -3021, 1024, + + // Block 7 + /* 0x4D */ -1075, 1074, 417, 27236, 417, 1074, -1075, -395, + /* 0x4E */ -1798, 1521, 741, 24438, 741, 1521, -1798, -206, + /* 0x4F */ -2921, 1848, 1426, 19572, 1426, 1848, -2921, 803, + /* 0x50 */ -3491, 1649, 2169, 16192, 2169, 1649, -3491, 1954, + /* 0x51 */ -3600, 1124, 3106, 14379, 3106, 1124, -3600, 2726, + /* 0x52 */ -3300, 278, 4453, 13834, 4453, 278, -3300, 2867, + /* 0x53 */ -2282, -916, 5804, 12748, 5804, -916, -2282, 2012, + + // Block 8 + /* 0x54 */ -1306, 682, 649, 26892, 649, 682, -1306, 599, + /* 0x55 */ -1951, 858, 1073, 23787, 1073, 858, -1951, 1214, + /* 0x56 */ -2705, 755, 1945, 19505, 1945, 755, -2705, 2450, + /* 0x57 */ -2857, 207, 2996, 17354, 2996, 207, -2857, 3289, + /* 0x58 */ -2261, -722, 4101, 15425, 4101, -722, -2261, 3173, + /* 0x59 */ -1164, -1891, 5287, 13853, 5287, -1891, -1164, 2227, + + // Block 9 + /* 0x5A */ -1119, 202, 869, 27136, 869, 202, -1119, 1249, + /* 0x5B */ -1545, 108, 1432, 24611, 1432, 108, -1545, 1984, + /* 0x5C */ -1675, -472, 2529, 20597, 2529, -472, -1675, 2814, + /* 0x5D */ -1040, -1426, 3661, 17877, 3661, -1426, -1040, 2634, + /* 0x5E */ 105, -2626, 4871, 15944, 4871, -2626, 105, 1615, + + // Block 10 + /* 0x5F */ -554, -321, 1071, 27687, 1071, -321, -554, 1185, + /* 0x60 */ -562, -704, 1738, 25171, 1738, -704, -562, 1585, + /* 0x61 */ 73, -1749, 3045, 21572, 3045, -1749, 73, 1458, + /* 0x62 */ 1152, -2704, 3884, 16963, 3884, -2704, 1152, 320, + + // Block 11 + /* 0x63 */ 222, -806, 1221, 27862, 1221, -806, 222, 404, + /* 0x64 */ 632, -1385, 1908, 24706, 1908, -1385, 632, 208, + /* 0x65 */ 1605, -2339, 2840, 18439, 2840, -2339, 1605, -756, + + // Block 12 + /* 0x66 */ 861, -1081, 1224, 25856, 1224, -1081, 861, -576, + /* 0x67 */ 1422, -1655, 1804, 21885, 1804, -1655, 1422, -1117, + + // Block 13 + /* 0x68 */ 434, -453, 467, 29652, 467, -453, 434, -405, +}; + +s16 gBandPassFilterData[105 * 8] = { + // Block 0 + /* 0x00 */ 687, 4058, 6599, 7544, 6599, 4058, 687, -2532, + /* 0x01 */ -1303, 2777, 6337, 7745, 6337, 2777, -1303, -4185, + /* 0x02 */ -2873, 1376, 5931, 7886, 5931, 1376, -2873, -4520, + /* 0x03 */ -4108, 0, 5913, 8723, 5913, 0, -4108, -3999, + /* 0x04 */ -4233, -1334, 5242, 8775, 5242, -1334, -4233, -2371, + /* 0x05 */ -3882, -2547, 4808, 9389, 4808, -2547, -3882, -900, + /* 0x06 */ -3072, -3668, 4423, 10438, 4423, -3668, -3072, 0, + /* 0x07 */ -1914, -4609, 3950, 11819, 3950, -4609, -1914, 0, + /* 0x08 */ -678, -5227, 3301, 13449, 3301, -5227, -678, -903, + /* 0x09 */ 246, -5250, 2363, 14858, 2363, -5250, 246, -2189, + /* 0x0A */ 509, -4812, 1262, 16454, 1262, -4812, 509, -3143, + /* 0x0B */ 0, -4404, 0, 20367, 0, -4404, 0, -3591, + /* 0x0C */ -1151, -2707, -1393, 19954, -1393, -2707, -1151, -2310, + /* 0x0D */ -1765, -1920, -2014, 19800, -2014, -1920, -1765, -1566, + + // Block 1 + /* 0x0E */ -3122, 1346, 5464, 7125, 5464, 1346, -3122, -5776, + /* 0x0F */ -4566, 0, 5211, 7489, 5211, 0, -4566, -5723, + /* 0x10 */ -4941, -1265, 4474, 7249, 4474, -1265, -4941, -4155, + /* 0x11 */ -4932, -2431, 4021, 7549, 4021, -2431, -4932, -2447, + /* 0x12 */ -4511, -3587, 3678, 8286, 3678, -3587, -4511, -927, + /* 0x13 */ -3660, -4711, 3314, 9396, 3314, -4711, -3660, 0, + /* 0x14 */ -2471, -5685, 2820, 10810, 2820, -5685, -2471, 0, + /* 0x15 */ -1213, -6349, 2123, 12463, 2123, -6349, -1213, -929, + /* 0x16 */ -272, -6581, 1189, 14354, 1189, -6581, -272, -2327, + /* 0x17 */ 0, -6351, 0, 16604, 0, -6351, 0, -3460, + /* 0x18 */ -509, -4812, -1262, 16454, -1262, -4812, -509, -3143, + /* 0x19 */ -1488, -3277, -2395, 16401, -2395, -3277, -1488, -2045, + /* 0x1A */ -2021, -2555, -2910, 16397, -2910, -2555, -2021, -1392, + + // Block 2 + /* 0x1B */ -5281, -1216, 4054, 6441, 4054, -1216, -5281, -5221, + /* 0x1C */ -5495, -2330, 3552, 6498, 3552, -2330, -5495, -3511, + /* 0x1D */ -5377, -3474, 3206, 6991, 3206, -3474, -5377, -1659, + /* 0x1E */ -4853, -4693, 2893, 7887, 2893, -4693, -4853, 0, + /* 0x1F */ -3646, -5586, 2357, 8623, 2357, -5586, -3646, 965, + /* 0x20 */ -2373, -6636, 1821, 10132, 1821, -6636, -2373, 971, + /* 0x21 */ -1086, -7852, 1115, 12658, 1115, -7852, -1086, 0, + /* 0x22 */ 0, -8182, 0, 14837, 0, -8182, 0, -1565, + /* 0x23 */ 272, -6581, -1189, 14354, -1189, -6581, 272, -2326, + /* 0x24 */ -246, -5250, -2363, 14858, -2363, -5250, -246, -2189, + /* 0x25 */ -1231, -3701, -3393, 14931, -3393, -3701, -1231, -1181, + /* 0x26 */ -1768, -2974, -3865, 14981, -3865, -2974, -1768, -569, + + // Block 3 + /* 0x27 */ -5832, -3391, 2948, 6305, 2948, -3391, -5832, -2116, + /* 0x28 */ -5587, -4647, 2641, 7014, 2641, -4647, -5587, 0, + /* 0x29 */ -4365, -5434, 2063, 7306, 2063, -5434, -4365, 1734, + /* 0x2A */ -3036, -6379, 1534, 8205, 1534, -6379, -3036, 2660, + /* 0x2B */ -1576, -7586, 916, 9927, 916, -7586, -1576, 2682, + /* 0x2C */ 0, -9097, 0, 12831, 0, -9097, 0, 1740, + /* 0x2D */ 1086, -7852, -1115, 12658, -1115, -7852, 1086, 0, + /* 0x2E */ 1213, -6349, -2123, 12463, -2123, -6349, 1213, -929, + /* 0x2F */ 678, -5227, -3301, 13449, -3301, -5227, 678, -903, + /* 0x30 */ -406, -3992, -4605, 14759, -4605, -3992, -406, 0, + /* 0x31 */ -979, -3083, -4882, 14287, -4882, -3083, -979, 589, + + // Block 4 + /* 0x32 */ -4748, -5319, 1902, 6607, 1902, -5319, -4748, 2218, + /* 0x33 */ -3402, -6148, 1363, 7101, 1363, -6148, -3402, 3837, + /* 0x34 */ -1853, -7246, 787, 8259, 787, -7246, -1853, 4733, + /* 0x35 */ 0, -8777, 0, 10430, 0, -8777, 0, 4782, + /* 0x36 */ 1576, -7586, -916, 9927, -916, -7586, 1576, 2682, + /* 0x37 */ 2373, -6636, -1821, 10132, -1821, -6636, 2373, 971, + /* 0x38 */ 2471, -5685, -2820, 10810, -2820, -5685, 2471, 0, + /* 0x39 */ 1914, -4609, -3950, 11819, -3950, -4609, 1914, 0, + /* 0x3A */ 846, -3385, -5195, 13035, -5195, -3385, 846, 875, + /* 0x3B */ 214, -2741, -5841, 13679, -5841, -2741, 214, 1492, + + // Block 5 + /* 0x3C */ -1989, -7002, 716, 7373, 716, -7002, -1989, 5976, + /* 0x3D */ 0, -8439, 0, 9006, 0, -8439, 0, 6882, + /* 0x3E */ 1853, -7246, -787, 8259, -787, -7246, 1853, 4733, + /* 0x3F */ 3036, -6379, -1534, 8205, -1534, -6379, 3036, 2660, + /* 0x40 */ 3646, -5586, -2357, 8623, -2357, -5586, 3646, 965, + /* 0x41 */ 3660, -4711, -3314, 9396, -3314, -4711, 3660, 0, + /* 0x42 */ 3072, -3668, -4423, 10438, -4423, -3668, 3072, 0, + /* 0x43 */ 2003, -2459, -5656, 11656, -5656, -2459, 2003, 869, + /* 0x44 */ 1374, -1820, -6298, 12297, -6298, -1820, 1374, 1483, + + // Block 6 + /* 0x45 */ 1989, -7002, -716, 7373, -716, -7002, 1989, 5976, + /* 0x46 */ 3402, -6148, -1363, 7101, -1363, -6148, 3402, 3837, + /* 0x47 */ 4365, -5434, -2063, 7306, -2063, -5434, 4365, 1734, + /* 0x48 */ 4853, -4693, -2893, 7887, -2893, -4693, 4853, 0, + /* 0x49 */ 4511, -3587, -3678, 8286, -3678, -3587, 4511, -927, + /* 0x4A */ 3882, -2547, -4808, 9389, -4808, -2547, 3882, -900, + /* 0x4B */ 2938, -1390, -6423, 11264, -6423, -1390, 2938, 0, + /* 0x4C */ 2253, -695, -7120, 11961, -7120, -695, 2253, 667, + + // Block 7 + /* 0x4D */ 4748, -5319, -1902, 6607, -1902, -5319, 4748, 2218, + /* 0x4E */ 5587, -4647, -2641, 7014, -2641, -4647, 5587, 0, + /* 0x4F */ 5377, -3474, -3206, 6991, -3206, -3474, 5377, -1659, + /* 0x50 */ 4932, -2431, -4021, 7549, -4021, -2431, 4932, -2447, + /* 0x51 */ 4233, -1334, -5242, 8775, -5242, -1334, 4233, -2371, + /* 0x52 */ 3218, 0, -7035, 10795, -7035, 0, 3218, -1464, + /* 0x53 */ 2355, 725, -7440, 11027, -7440, 725, 2355, -698, + + // Block 8 + /* 0x54 */ 5832, -3391, -2948, 6305, -2948, -3391, 5832, -2116, + /* 0x55 */ 5495, -2330, -3552, 6498, -3552, -2330, 5495, -3511, + /* 0x56 */ 4941, -1265, -4474, 7249, -4474, -1265, 4941, -4155, + /* 0x57 */ 4108, 0, -5913, 8723, -5913, 0, 4108, -3999, + /* 0x58 */ 2383, 1404, -6726, 9241, -6726, 1404, 2383, -2496, + /* 0x59 */ 1559, 2063, -7145, 9545, -7145, 2063, 1559, -1684, + + // Block 9 + /* 0x5A */ 5281, -1216, -4054, 6441, -4054, -1216, 5281, -5221, + /* 0x5B */ 4566, 0, -5211, 7489, -5211, 0, 4566, -5723, + /* 0x5C */ 2873, 1376, -5931, 7886, -5931, 1376, 2873, -4520, + /* 0x5D */ 1113, 2760, -6833, 8572, -6833, 2760, 1113, -2779, + /* 0x5E */ 267, 3420, -7291, 8943, -7291, 3420, 267, -1864, + + // Block 10 + /* 0x5F */ 3122, 1346, -5464, 7125, -5464, 1346, 3122, -5776, + /* 0x60 */ 1303, 2777, -6337, 7745, -6337, 2777, 1303, -4185, + /* 0x61 */ -605, 3972, -6859, 7994, -6859, 3972, -605, -1897, + /* 0x62 */ -1333, 4196, -6647, 7610, -6647, 4196, -1333, -803, + + // Block 11 + /* 0x63 */ -687, 4058, -6599, 7544, -6599, 4058, -687, -2532, + /* 0x64 */ -2251, 4520, -6201, 6821, -6201, 4520, -2251, 0, + /* 0x65 */ -2636, 4433, -5763, 6253, -5763, 4433, -2636, 847, + + // Block 12 + /* 0x66 */ -3207, 4379, -5163, 5439, -5163, 4379, -3207, 1826, + /* 0x67 */ -3414, 4314, -4915, 5127, -4915, 4314, -3414, 2350, + + // Block 13 + /* 0x68 */ -3854, 4188, -4398, 4469, -4398, 4188, -3854, 3415, +}; + +s16 gSawtoothWaveSample[] = { + // 1st Harmonic + 0, 1023, 2047, 3071, 4095, 5119, 6143, 7167, + 8191, 9215, 10239, 11263, 12287, 13311, 14335, 15359, + 16383, 17407, 18431, 19455, 20479, 21503, 22527, 23551, + 24575, 25599, 26623, 27647, 28671, 29695, 30719, 31743, + -32767, -31743, -30719, -29695, -28671, -27647, -26623, -25599, + -24575, -23551, -22527, -21503, -20479, -19455, -18431, -17407, + -16383, -15359, -14335, -13311, -12287, -11263, -10239, -9215, + -8191, -7167, -6143, -5119, -4095, -3071, -2047, -1023, + + // 2nd Harmonic + 0, 2047, 4095, 6143, 8191, 10239, 12287, 14335, + 16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719, + -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431, + -16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047, + 0, 2047, 4095, 6143, 8191, 10239, 12287, 14335, + 16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719, + -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431, + -16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047, + + // 4th Harmonic + 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, + -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, + 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, + -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, + 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, + -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, + 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, + -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, + + // 8th Harmonic + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, +}; + +s16 gTriangleWaveSample[] = { + // 1st Harmonic + 0, 2047, 4095, 6143, 8191, 10239, 12287, 14335, + 16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719, + 32767, 30719, 28671, 26623, 24575, 22527, 20479, 18431, + 16383, 14335, 12287, 10239, 8191, 6143, 4095, 2047, + 0, -2047, -4095, -6143, -8191, -10239, -12287, -14335, + -16383, -18431, -20479, -22527, -24575, -26623, -28671, -30719, + -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431, + -16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047, + + // 2nd Harmonic + 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, + 32767, 28671, 24575, 20479, 16383, 12287, 8191, 4095, + 0, -4095, -8191, -12287, -16383, -20479, -24575, -28671, + -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, + 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, + 32767, 28671, 24575, 20479, 16383, 12287, 8191, 4095, + 0, -4095, -8191, -12287, -16383, -20479, -24575, -28671, + -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, + + // 4th Harmonic + 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191, + 0, -8191, -16383, -24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191, + 0, -8191, -16383, -24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191, + 0, -8191, -16383, -24575, -32767, -24575, -16383, -8191, + 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191, + 0, -8191, -16383, -24575, -32767, -24575, -16383, -8191, + + // 8th Harmonic + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, + 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, +}; + +s16 gSineWaveSample[] = { + // 1st Harmonic + 0, 3211, 6392, 9511, 12539, 15446, 18204, 20787, + 23169, 25329, 27244, 28897, 30272, 31356, 32137, 32609, + 32767, 32609, 32137, 31356, 30272, 28897, 27244, 25329, + 23169, 20787, 18204, 15446, 12539, 9511, 6392, 3211, + 0, -3211, -6392, -9511, -12539, -15446, -18204, -20787, + -23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609, + -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329, + -23169, -20787, -18204, -15446, -12539, -9511, -6392, -3211, + + // 2nd Harmonic + 0, 6392, 12539, 18204, 23169, 27244, 30272, 32137, + 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, + 0, -6392, -12539, -18204, -23169, -27244, -30272, -32137, + -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392, + 0, 6392, 12539, 18204, 23169, 27244, 30272, 32137, + 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, + 0, -6392, -12539, -18204, -23169, -27244, -30272, -32137, + -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392, + + // 4th Harmonic + 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, + 0, -12539, -23169, -30272, -32767, -30272, -23169, -12539, + 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, + 0, -12539, -23169, -30272, -32767, -30272, -23169, -12539, + 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, + 0, -12539, -23169, -30272, -32767, -30272, -23169, -12539, + 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, + 0, -12539, -23169, -30272, -32767, -30272, -23169, -12539, + + // 8th Harmonic + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, + 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, +}; + +s16 gSquareWaveSample[] = { + // 1st Harmonic + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, + 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, + -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, + + // 2nd Harmonic + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, 0, 0, 0, 0, + + // 4th Harmonic + -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, + 0, 0, 0, 0, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, -32767, -32767, -32767, -32767, + 0, 0, 0, 0, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, -32767, -32767, -32767, -32767, + 0, 0, 0, 0, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, -32767, -32767, -32767, -32767, + 0, 0, 0, 0, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, -32767, -32767, -32767, -32767, + + // 8th Harmonic + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, + 0, 0, 32767, 32767, 0, 0, -32767, -32767, +}; + +s16 gWhiteNoiseSample[] = { + // 1st Harmonic + 0, -25689, -25791, 27803, -27568, -21030, 22174, 6298, + 27071, -18531, 28649, 2284, 3380, 6890, -12682, -21114, + 10000, -24520, 32296, 12248, 15096, 15354, -12021, -31545, + -12929, 6388, -11064, 30456, -30316, -21999, 29691, 27649, + 0, -27649, -29691, 21999, 30316, -30457, 11064, -6387, + 12929, 31544, 12021, -15353, -15096, -12249, -32296, 24521, + -10000, 21113, 12682, -6889, -3380, -2285, -28649, 18532, + -27071, -6299, -22174, 21031, 27568, -27804, 25791, 25690, + + // 2nd Harmonic + 0, -25791, -27568, 22174, 27071, 28649, 3380, -12682, + 10000, 32296, 15096, -12021, -12929, -11064, -30316, 29691, + 0, -29691, 30316, 11064, 12929, 12021, -15096, -32296, + -10000, 12682, -3380, -28649, -27071, -22174, 27568, 25791, + 0, -25791, -27568, 22174, 27071, 28649, 3380, -12682, + 10000, 32296, 15096, -12021, -12929, -11064, -30316, 29691, + 0, -29691, 30316, 11064, 12929, 12021, -15096, -32296, + -10000, 12682, -3380, -28649, -27071, -22174, 27568, 25791, + + // 4th Harmonic + 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316, + 0, 30316, 12929, -15096, -10000, -3380, -27071, 27568, + 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316, + 0, 30316, 12929, -15096, -10000, -3380, -27071, 27568, + 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316, + 0, 30316, 12929, -15096, -10000, -3380, -27071, 27568, + 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316, + 0, 30316, 12929, -15096, -10000, -3380, -27071, 27568, + + // 8th Harmonic + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, + 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, +}; + +// Sine White Noise? +s16 D_801D4790[] = { + // 1st Harmonic + 0, 16316, 20148, 20257, 27209, -32657, 29264, 27259, + -29394, -21494, -26410, 30770, 30033, 29130, 20206, 14129, + 20000, 25677, 19024, 9146, 6921, 4506, -5868, -13122, + -7858, -1885, -7042, -14025, -11903, -8647, -12346, -12396, + 0, 12396, 12346, 8647, 11903, 14024, 7042, 1886, + 7858, 13121, 5868, -4505, -6921, -9147, -19024, -25676, + -20000, -14130, -20206, -29129, -30033, -30771, 26410, 21495, + 29394, -27260, -29264, 32658, -27209, -20258, -20148, -16315, + + // 2nd Harmonic + 0, 20148, 27209, 29264, -29394, -26410, 30033, 20206, + 20000, 19024, 6921, -5868, -7858, -7042, -11903, -12346, + 0, 12346, 11903, 7042, 7858, 5868, -6921, -19024, + -20000, -20206, -30033, 26410, 29394, -29264, -27209, -20148, + 0, 20148, 27209, 29264, -29394, -26410, 30033, 20206, + 20000, 19024, 6921, -5868, -7858, -7042, -11903, -12346, + 0, 12346, 11903, 7042, 7858, 5868, -6921, -19024, + -20000, -20206, -30033, 26410, 29394, -29264, -27209, -20148, + + // 4th Harmonic + 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903, + 0, 11903, 7858, -6921, -20000, -30033, 29394, -27209, + 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903, + 0, 11903, 7858, -6921, -20000, -30033, 29394, -27209, + 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903, + 0, 11903, 7858, -6921, -20000, -30033, 29394, -27209, + 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903, + 0, 11903, 7858, -6921, -20000, -30033, 29394, -27209, + + // 8th Harmonic + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, + 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, +}; + +// Pulse Wave (duty cycle = 12.5%) +s16 gEighthPulseWaveSample[] = { + // 1st Harmonic + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, -32767, -32767, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + + // 2nd Harmonic + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, 0, 0, 0, 0, 0, 0, + + // 4th Harmonic + 0, 0, 0, 0, 32767, 0, 0, 0, + 0, 0, 0, 0, -32767, 0, 0, 0, + 0, 0, 0, 0, 32767, 0, 0, 0, + 0, 0, 0, 0, -32767, 0, 0, 0, + 0, 0, 0, 0, 32767, 0, 0, 0, + 0, 0, 0, 0, -32767, 0, 0, 0, + 0, 0, 0, 0, 32767, 0, 0, 0, + 0, 0, 0, 0, -32767, 0, 0, 0, + + // 8th Harmonic + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, +}; + +// Pulse Wave (duty cycle = 25%) +s16 gQuarterPulseWaveSample[] = { + // 1st Harmonic + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, + 0, 0, 0, 0, 0, 0, 0, 0, + + // 2nd Harmonic + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, -32767, -32767, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 32767, 32767, 32767, 32767, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + -32767, -32767, -32767, -32767, 0, 0, 0, 0, + + // 4th Harmonic + 0, 0, 0, 0, 32767, 32767, 0, 0, + 0, 0, 0, 0, -32767, -32767, 0, 0, + 0, 0, 0, 0, 32767, 32767, 0, 0, + 0, 0, 0, 0, -32767, -32767, 0, 0, + 0, 0, 0, 0, 32767, 32767, 0, 0, + 0, 0, 0, 0, -32767, -32767, 0, 0, + 0, 0, 0, 0, 32767, 32767, 0, 0, + 0, 0, 0, 0, -32767, -32767, 0, 0, + + // 8th Harmonic + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, + 0, 0, 32767, 0, 0, 0, -32767, 0, +}; +// clang-format on + +s16* gWaveSamples[] = { + gSawtoothWaveSample, gTriangleWaveSample, gSineWaveSample, gSquareWaveSample, gWhiteNoiseSample, + D_801D4790, gEighthPulseWaveSample, gQuarterPulseWaveSample, gQuarterPulseWaveSample, +}; + +f32 gBendPitchOneOctaveFrequencies[] = { + 0.5f, 0.5f, 0.502736f, 0.505488f, 0.508254f, 0.511036f, 0.513833f, 0.516645f, 0.519472f, 0.522315f, + 0.525174f, 0.528048f, 0.530938f, 0.533843f, 0.536765f, 0.539702f, 0.542656f, 0.545626f, 0.548612f, 0.551614f, + 0.554633f, 0.557669f, 0.560721f, 0.563789f, 0.566875f, 0.569977f, 0.573097f, 0.576233f, 0.579387f, 0.582558f, + 0.585746f, 0.588951f, 0.592175f, 0.595415f, 0.598674f, 0.60195f, 0.605245f, 0.608557f, 0.611888f, 0.615236f, + 0.618603f, 0.621989f, 0.625393f, 0.628815f, 0.632257f, 0.635717f, 0.639196f, 0.642694f, 0.646212f, 0.649748f, + 0.653304f, 0.65688f, 0.660475f, 0.664089f, 0.667724f, 0.671378f, 0.675052f, 0.678747f, 0.682461f, 0.686196f, + 0.689952f, 0.693727f, 0.697524f, 0.701341f, 0.70518f, 0.709039f, 0.712919f, 0.716821f, 0.720744f, 0.724689f, + 0.728655f, 0.732642f, 0.736652f, 0.740684f, 0.744737f, 0.748813f, 0.752911f, 0.757031f, 0.761175f, 0.76534f, + 0.769529f, 0.77374f, 0.777975f, 0.782232f, 0.786513f, 0.790818f, 0.795146f, 0.799497f, 0.803873f, 0.808272f, + 0.812696f, 0.817144f, 0.821616f, 0.826112f, 0.830633f, 0.835179f, 0.83975f, 0.844346f, 0.848966f, 0.853613f, + 0.858284f, 0.862982f, 0.867704f, 0.872453f, 0.877228f, 0.882029f, 0.886856f, 0.891709f, 0.89659f, 0.901496f, + 0.90643f, 0.911391f, 0.916379f, 0.921394f, 0.926436f, 0.931507f, 0.936604f, 0.94173f, 0.946884f, 0.952066f, + 0.957277f, 0.962516f, 0.967783f, 0.97308f, 0.978405f, 0.98376f, 0.989144f, 0.994557f, 1.0f, 1.005473f, + 1.010975f, 1.016508f, 1.022071f, 1.027665f, 1.033289f, 1.038944f, 1.04463f, 1.050347f, 1.056095f, 1.061875f, + 1.067687f, 1.07353f, 1.079405f, 1.085312f, 1.091252f, 1.097224f, 1.103229f, 1.109267f, 1.115337f, 1.121441f, + 1.127579f, 1.13375f, 1.139955f, 1.146193f, 1.152466f, 1.158773f, 1.165115f, 1.171491f, 1.177903f, 1.184349f, + 1.190831f, 1.197348f, 1.203901f, 1.210489f, 1.217114f, 1.223775f, 1.230473f, 1.237207f, 1.243978f, 1.250786f, + 1.257631f, 1.264514f, 1.271434f, 1.278392f, 1.285389f, 1.292423f, 1.299497f, 1.306608f, 1.313759f, 1.320949f, + 1.328178f, 1.335447f, 1.342756f, 1.350104f, 1.357493f, 1.364922f, 1.372392f, 1.379903f, 1.387455f, 1.395048f, + 1.402683f, 1.41036f, 1.418078f, 1.425839f, 1.433642f, 1.441488f, 1.449377f, 1.457309f, 1.465285f, 1.473304f, + 1.481367f, 1.489474f, 1.497626f, 1.505822f, 1.514063f, 1.522349f, 1.530681f, 1.539058f, 1.547481f, 1.55595f, + 1.564465f, 1.573027f, 1.581636f, 1.590292f, 1.598995f, 1.607746f, 1.616545f, 1.625392f, 1.634287f, 1.643231f, + 1.652224f, 1.661266f, 1.670358f, 1.6795f, 1.688691f, 1.697933f, 1.707225f, 1.716569f, 1.725963f, 1.735409f, + 1.744906f, 1.754456f, 1.764058f, 1.773712f, 1.783419f, 1.793179f, 1.802993f, 1.81286f, 1.822782f, 1.832757f, + 1.842788f, 1.852873f, 1.863013f, 1.873209f, 1.883461f, 1.893768f, 1.904132f, 1.914553f, 1.925031f, 1.935567f, + 1.946159f, 1.95681f, 1.96752f, 1.978287f, 1.989114f, 2.0f, +}; + +f32 gBendPitchTwoSemitonesFrequencies[] = { + 0.890899f, 0.890899f, 0.89171f, 0.892521f, 0.893333f, 0.894146f, 0.89496f, 0.895774f, 0.89659f, 0.897406f, + 0.898222f, 0.89904f, 0.899858f, 0.900677f, 0.901496f, 0.902317f, 0.903138f, 0.90396f, 0.904783f, 0.905606f, + 0.90643f, 0.907255f, 0.908081f, 0.908907f, 0.909734f, 0.910562f, 0.911391f, 0.91222f, 0.91305f, 0.913881f, + 0.914713f, 0.915545f, 0.916379f, 0.917213f, 0.918047f, 0.918883f, 0.919719f, 0.920556f, 0.921394f, 0.922232f, + 0.923072f, 0.923912f, 0.924752f, 0.925594f, 0.926436f, 0.927279f, 0.928123f, 0.928968f, 0.929813f, 0.93066f, + 0.931507f, 0.932354f, 0.933203f, 0.934052f, 0.934902f, 0.935753f, 0.936604f, 0.937457f, 0.93831f, 0.939164f, + 0.940019f, 0.940874f, 0.94173f, 0.942587f, 0.943445f, 0.944304f, 0.945163f, 0.946023f, 0.946884f, 0.947746f, + 0.948608f, 0.949472f, 0.950336f, 0.951201f, 0.952066f, 0.952933f, 0.9538f, 0.954668f, 0.955537f, 0.956406f, + 0.957277f, 0.958148f, 0.95902f, 0.959893f, 0.960766f, 0.961641f, 0.962516f, 0.963392f, 0.964268f, 0.965146f, + 0.966024f, 0.966903f, 0.967783f, 0.968664f, 0.969546f, 0.970428f, 0.971311f, 0.972195f, 0.97308f, 0.973965f, + 0.974852f, 0.975739f, 0.976627f, 0.977516f, 0.978405f, 0.979296f, 0.980187f, 0.981079f, 0.981972f, 0.982865f, + 0.98376f, 0.984655f, 0.985551f, 0.986448f, 0.987346f, 0.988244f, 0.989144f, 0.990044f, 0.990945f, 0.991847f, + 0.992749f, 0.993653f, 0.994557f, 0.995462f, 0.996368f, 0.997275f, 0.998182f, 0.999091f, 1.0f, 1.00091f, + 1.001821f, 1.002733f, 1.003645f, 1.004559f, 1.005473f, 1.006388f, 1.007304f, 1.00822f, 1.009138f, 1.010056f, + 1.010975f, 1.011896f, 1.012816f, 1.013738f, 1.014661f, 1.015584f, 1.016508f, 1.017433f, 1.018359f, 1.019286f, + 1.020214f, 1.021142f, 1.022071f, 1.023002f, 1.023933f, 1.024864f, 1.025797f, 1.026731f, 1.027665f, 1.0286f, + 1.029536f, 1.030473f, 1.031411f, 1.03235f, 1.033289f, 1.03423f, 1.035171f, 1.036113f, 1.037056f, 1.038f, + 1.038944f, 1.03989f, 1.040836f, 1.041783f, 1.042731f, 1.04368f, 1.04463f, 1.045581f, 1.046532f, 1.047485f, + 1.048438f, 1.049392f, 1.050347f, 1.051303f, 1.05226f, 1.053217f, 1.054176f, 1.055135f, 1.056095f, 1.057056f, + 1.058018f, 1.058981f, 1.059945f, 1.06091f, 1.061875f, 1.062842f, 1.063809f, 1.064777f, 1.065746f, 1.066716f, + 1.067687f, 1.068658f, 1.069631f, 1.070604f, 1.071578f, 1.072554f, 1.07353f, 1.074507f, 1.075485f, 1.076463f, + 1.077443f, 1.078424f, 1.079405f, 1.080387f, 1.08137f, 1.082355f, 1.08334f, 1.084325f, 1.085312f, 1.0863f, + 1.087289f, 1.088278f, 1.089268f, 1.09026f, 1.091252f, 1.092245f, 1.093239f, 1.094234f, 1.09523f, 1.096226f, + 1.097224f, 1.098223f, 1.099222f, 1.100222f, 1.101224f, 1.102226f, 1.103229f, 1.104233f, 1.105238f, 1.106244f, + 1.10725f, 1.108258f, 1.109267f, 1.110276f, 1.111287f, 1.112298f, 1.11331f, 1.114323f, 1.115337f, 1.116352f, + 1.117368f, 1.118385f, 1.119403f, 1.120422f, 1.121441f, 1.122462f, +}; + +f32 gPitchFrequencies[] = { + /* 0x00 */ 0.105112f, // PITCH_A0 + /* 0x01 */ 0.111362f, // PITCH_BFLAT0 + /* 0x02 */ 0.117984f, // PITCH_B0 + /* 0x03 */ 0.125f, // PITCH_C1 + /* 0x04 */ 0.132433f, // PITCH_DFLAT1 + /* 0x05 */ 0.140308f, // PITCH_D1 + /* 0x06 */ 0.148651f, // PITCH_EFLAT1 + /* 0x07 */ 0.15749f, // PITCH_E1 + /* 0x08 */ 0.166855f, // PITCH_F1 + /* 0x09 */ 0.176777f, // PITCH_GFLAT1 + /* 0x0A */ 0.187288f, // PITCH_G1 + /* 0x0B */ 0.198425f, // PITCH_AFLAT1 + /* 0x0C */ 0.210224f, // PITCH_A1 + /* 0x0D */ 0.222725f, // PITCH_BFLAT1 + /* 0x0E */ 0.235969f, // PITCH_B1 + /* 0x0F */ 0.25f, // PITCH_C2 + /* 0x10 */ 0.264866f, // PITCH_DFLAT2 + /* 0x11 */ 0.280616f, // PITCH_D2 + /* 0x12 */ 0.297302f, // PITCH_EFLAT2 + /* 0x13 */ 0.31498f, // PITCH_E2 + /* 0x14 */ 0.33371f, // PITCH_F2 + /* 0x15 */ 0.353553f, // PITCH_GFLAT2 + /* 0x16 */ 0.374577f, // PITCH_G2 + /* 0x17 */ 0.39685f, // PITCH_AFLAT2 + /* 0x18 */ 0.420448f, // PITCH_A2 + /* 0x19 */ 0.445449f, // PITCH_BFLAT2 + /* 0x1A */ 0.471937f, // PITCH_B2 + /* 0x1B */ 0.5f, // PITCH_C3 + /* 0x1C */ 0.529732f, // PITCH_DFLAT3 + /* 0x1D */ 0.561231f, // PITCH_D3 + /* 0x1E */ 0.594604f, // PITCH_EFLAT3 + /* 0x1F */ 0.629961f, // PITCH_E3 + /* 0x20 */ 0.66742f, // PITCH_F3 + /* 0x21 */ 0.707107f, // PITCH_GFLAT3 + /* 0x22 */ 0.749154f, // PITCH_G3 + /* 0x23 */ 0.793701f, // PITCH_AFLAT3 + /* 0x24 */ 0.840897f, // PITCH_A3 + /* 0x25 */ 0.890899f, // PITCH_BFLAT3 + /* 0x26 */ 0.943875f, // PITCH_B3 + /* 0x27 */ 1.0f, // PITCH_C4 (Middle C) + /* 0x28 */ 1.059463f, // PITCH_DFLAT4 + /* 0x29 */ 1.122462f, // PITCH_D4 + /* 0x2A */ 1.189207f, // PITCH_EFLAT4 + /* 0x2B */ 1.259921f, // PITCH_E4 + /* 0x2C */ 1.33484f, // PITCH_F4 + /* 0x2D */ 1.414214f, // PITCH_GFLAT4 + /* 0x2E */ 1.498307f, // PITCH_G4 + /* 0x2F */ 1.587401f, // PITCH_AFLAT4 + /* 0x30 */ 1.681793f, // PITCH_A4 + /* 0x31 */ 1.781798f, // PITCH_BFLAT4 + /* 0x32 */ 1.887749f, // PITCH_B4 + /* 0x33 */ 2.0f, // PITCH_C5 + /* 0x34 */ 2.118926f, // PITCH_DFLAT5 + /* 0x35 */ 2.244924f, // PITCH_D5 + /* 0x36 */ 2.378414f, // PITCH_EFLAT5 + /* 0x37 */ 2.519842f, // PITCH_E5 + /* 0x38 */ 2.66968f, // PITCH_F5 + /* 0x39 */ 2.828428f, // PITCH_GFLAT5 + /* 0x3A */ 2.996615f, // PITCH_G5 + /* 0x3B */ 3.174803f, // PITCH_AFLAT5 + /* 0x3C */ 3.363586f, // PITCH_A5 + /* 0x3D */ 3.563596f, // PITCH_BFLAT5 + /* 0x3E */ 3.775498f, // PITCH_B5 + /* 0x3F */ 4.0f, // PITCH_C6 + /* 0x40 */ 4.237853f, // PITCH_DFLAT6 + /* 0x41 */ 4.489849f, // PITCH_D6 + /* 0x42 */ 4.756829f, // PITCH_EFLAT6 + /* 0x43 */ 5.039685f, // PITCH_E6 + /* 0x44 */ 5.33936f, // PITCH_F6 + /* 0x45 */ 5.656855f, // PITCH_GFLAT6 + /* 0x46 */ 5.993229f, // PITCH_G6 + /* 0x47 */ 6.349606f, // PITCH_AFLAT6 + /* 0x48 */ 6.727173f, // PITCH_A6 + /* 0x49 */ 7.127192f, // PITCH_BFLAT6 + /* 0x4A */ 7.550996f, // PITCH_B6 + /* 0x4B */ 8.0f, // PITCH_C7 + /* 0x4C */ 8.475705f, // PITCH_DFLAT7 + /* 0x4D */ 8.979697f, // PITCH_D7 + /* 0x4E */ 9.513658f, // PITCH_EFLAT7 + /* 0x4F */ 10.07937f, // PITCH_E7 + /* 0x50 */ 10.6787205f, // PITCH_F7 + /* 0x51 */ 11.31371f, // PITCH_GFLAT7 + /* 0x52 */ 11.986459f, // PITCH_G7 + /* 0x53 */ 12.699211f, // PITCH_AFLAT7 + /* 0x54 */ 13.454346f, // PITCH_A7 + /* 0x55 */ 14.254383f, // PITCH_BFLAT7 + /* 0x56 */ 15.101993f, // PITCH_B7 + /* 0x57 */ 16.0f, // PITCH_C8 + /* 0x58 */ 16.95141f, // PITCH_DFLAT8 + /* 0x59 */ 17.959395f, // PITCH_D8 + /* 0x5A */ 19.027315f, // PITCH_EFLAT8 + /* 0x5B */ 20.15874f, // PITCH_E8 + /* 0x5C */ 21.35744f, // PITCH_F8 + /* 0x5D */ 22.62742f, // PITCH_GFLAT8 + /* 0x5E */ 23.972918f, // PITCH_G8 + /* 0x5F */ 25.398422f, // PITCH_AFLAT8 + /* 0x60 */ 26.908691f, // PITCH_A8 + /* 0x61 */ 28.508766f, // PITCH_BFLAT8 + /* 0x62 */ 30.203985f, // PITCH_B8 + /* 0x63 */ 32.0f, // PITCH_C9 + /* 0x64 */ 33.90282f, // PITCH_DFLAT9 + /* 0x65 */ 35.91879f, // PITCH_D9 + /* 0x66 */ 38.05463f, // PITCH_EFLAT9 + /* 0x67 */ 40.31748f, // PITCH_E9 + /* 0x68 */ 42.71488f, // PITCH_F9 + /* 0x69 */ 45.25484f, // PITCH_GFLAT9 + /* 0x6A */ 47.945835f, // PITCH_G9 + /* 0x6B */ 50.796845f, // PITCH_AFLAT9 + /* 0x6C */ 53.817383f, // PITCH_A9 + /* 0x6D */ 57.017532f, // PITCH_BFLAT9 + /* 0x6E */ 60.40797f, // PITCH_B9 + /* 0x6F */ 64.0f, // PITCH_C10 + /* 0x70 */ 67.80564f, // PITCH_DFLAT10 + /* 0x71 */ 71.83758f, // PITCH_D10 + /* 0x72 */ 76.10926f, // PITCH_EFLAT10 + /* 0x73 */ 80.63496f, // PITCH_E10 + /* 0x74 */ 85.42976f, // PITCH_F10 + /* 0x75 */ 0.055681f, // PITCH_BFLATNEG1 + /* 0x76 */ 0.058992f, // PITCH_BNEG1 + /* 0x77 */ 0.0625f, // PITCH_C0 + /* 0x78 */ 0.066216f, // PITCH_DFLAT0 + /* 0x79 */ 0.070154f, // PITCH_D0 + /* 0x7A */ 0.074325f, // PITCH_EFLAT0 + /* 0x7B */ 0.078745f, // PITCH_E0 + /* 0x7C */ 0.083427f, // PITCH_F0 + /* 0x7D */ 0.088388f, // PITCH_GFLAT0 + /* 0x7E */ 0.093644f, // PITCH_G0 + /* 0x7F */ 0.099213f, // PITCH_AFLAT0 +}; + +u8 gDefaultShortNoteVelocityTable[] = { + 12, 25, 38, 51, 57, 64, 71, 76, 83, 89, 96, 102, 109, 115, 121, 127, +}; + +u8 gDefaultShortNoteGateTimeTable[] = { + 229, 203, 177, 151, 139, 126, 113, 100, 87, 74, 61, 48, 36, 23, 10, 0, +}; + +AdsrEnvelope gDefaultEnvelope[] = { + { 1, 32000 }, + { 1000, 32000 }, + { -1, 0 }, + { 0, 0 }, +}; + +NoteSubEu gZeroNoteSub = { 0 }; + +NoteSubEu gDefaultNoteSub = { + { 1, 1, 0, 0, 0, 0, 0, 0 }, { 0 }, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +u16 gHeadsetPanQuantization[64] = { + 60, 58, 56, 54, 52, 50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, + 16, 14, 12, 10, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +}; + +s32 D_801D58A4 = 0; + +// clang-format off +s16 D_801D58A8[] = { + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, + 0, 0, 0, 500, 0, 0, 0, 0, +}; +// clang-format on + +f32 gHeadsetPanVolume[] = { + 1.0f, 0.995386f, 0.990772f, 0.986157f, 0.981543f, 0.976929f, 0.972315f, 0.967701f, 0.963087f, 0.958472f, + 0.953858f, 0.949244f, 0.94463f, 0.940016f, 0.935402f, 0.930787f, 0.926173f, 0.921559f, 0.916945f, 0.912331f, + 0.907717f, 0.903102f, 0.898488f, 0.893874f, 0.88926f, 0.884646f, 0.880031f, 0.875417f, 0.870803f, 0.866189f, + 0.861575f, 0.856961f, 0.852346f, 0.847732f, 0.843118f, 0.838504f, 0.83389f, 0.829276f, 0.824661f, 0.820047f, + 0.815433f, 0.810819f, 0.806205f, 0.801591f, 0.796976f, 0.792362f, 0.787748f, 0.783134f, 0.77852f, 0.773906f, + 0.769291f, 0.764677f, 0.760063f, 0.755449f, 0.750835f, 0.74622f, 0.741606f, 0.736992f, 0.732378f, 0.727764f, + 0.72315f, 0.718535f, 0.713921f, 0.709307f, 0.70537f, 0.70211f, 0.69885f, 0.695591f, 0.692331f, 0.689071f, + 0.685811f, 0.682551f, 0.679291f, 0.676031f, 0.672772f, 0.669512f, 0.666252f, 0.662992f, 0.659732f, 0.656472f, + 0.653213f, 0.649953f, 0.646693f, 0.643433f, 0.640173f, 0.636913f, 0.633654f, 0.630394f, 0.627134f, 0.623874f, + 0.620614f, 0.617354f, 0.614094f, 0.610835f, 0.607575f, 0.604315f, 0.601055f, 0.597795f, 0.594535f, 0.591276f, + 0.588016f, 0.584756f, 0.581496f, 0.578236f, 0.574976f, 0.571717f, 0.568457f, 0.565197f, 0.561937f, 0.558677f, + 0.555417f, 0.552157f, 0.548898f, 0.545638f, 0.542378f, 0.539118f, 0.535858f, 0.532598f, 0.529339f, 0.526079f, + 0.522819f, 0.519559f, 0.516299f, 0.513039f, 0.50978f, 0.50652f, 0.50326f, 0.5f, +}; + +f32 gStereoPanVolume[] = { + 0.707f, 0.716228f, 0.725457f, 0.734685f, 0.743913f, 0.753142f, 0.76237f, 0.771598f, 0.780827f, 0.790055f, + 0.799283f, 0.808512f, 0.81774f, 0.826968f, 0.836197f, 0.845425f, 0.854654f, 0.863882f, 0.87311f, 0.882339f, + 0.891567f, 0.900795f, 0.910024f, 0.919252f, 0.92848f, 0.937709f, 0.946937f, 0.956165f, 0.965394f, 0.974622f, + 0.98385f, 0.993079f, 0.997693f, 0.988465f, 0.979236f, 0.970008f, 0.960779f, 0.951551f, 0.942323f, 0.933095f, + 0.923866f, 0.914638f, 0.905409f, 0.896181f, 0.886953f, 0.877724f, 0.868496f, 0.859268f, 0.850039f, 0.840811f, + 0.831583f, 0.822354f, 0.813126f, 0.803898f, 0.794669f, 0.785441f, 0.776213f, 0.766984f, 0.757756f, 0.748528f, + 0.739299f, 0.730071f, 0.720843f, 0.711614f, 0.695866f, 0.673598f, 0.651331f, 0.629063f, 0.606795f, 0.584528f, + 0.56226f, 0.539992f, 0.517724f, 0.495457f, 0.473189f, 0.450921f, 0.428654f, 0.406386f, 0.384118f, 0.36185f, + 0.339583f, 0.317315f, 0.295047f, 0.27278f, 0.250512f, 0.228244f, 0.205976f, 0.183709f, 0.161441f, 0.139173f, + 0.116905f, 0.094638f, 0.07237f, 0.050102f, 0.027835f, 0.005567f, 0.00835f, 0.019484f, 0.030618f, 0.041752f, + 0.052886f, 0.06402f, 0.075154f, 0.086287f, 0.097421f, 0.108555f, 0.119689f, 0.130823f, 0.141957f, 0.153091f, + 0.164224f, 0.175358f, 0.186492f, 0.197626f, 0.20876f, 0.219894f, 0.231028f, 0.242161f, 0.253295f, 0.264429f, + 0.275563f, 0.286697f, 0.297831f, 0.308965f, 0.320098f, 0.331232f, 0.342366f, 0.3535f, +}; + +f32 gDefaultPanVolume[] = { + 1.0f, 0.999924f, 0.999694f, 0.999312f, 0.998776f, 0.998088f, 0.997248f, 0.996254f, 0.995109f, 0.993811f, + 0.992361f, 0.990759f, 0.989006f, 0.987101f, 0.985045f, 0.982839f, 0.980482f, 0.977976f, 0.97532f, 0.972514f, + 0.96956f, 0.966457f, 0.963207f, 0.959809f, 0.956265f, 0.952574f, 0.948737f, 0.944755f, 0.940629f, 0.936359f, + 0.931946f, 0.92739f, 0.922692f, 0.917853f, 0.912873f, 0.907754f, 0.902497f, 0.897101f, 0.891567f, 0.885898f, + 0.880093f, 0.874153f, 0.868079f, 0.861873f, 0.855535f, 0.849066f, 0.842467f, 0.835739f, 0.828884f, 0.821901f, + 0.814793f, 0.807561f, 0.800204f, 0.792725f, 0.785125f, 0.777405f, 0.769566f, 0.76161f, 0.753536f, 0.745348f, + 0.737045f, 0.72863f, 0.720103f, 0.711466f, 0.70272f, 0.693867f, 0.684908f, 0.675843f, 0.666676f, 0.657406f, + 0.648036f, 0.638567f, 0.629f, 0.619337f, 0.609579f, 0.599728f, 0.589785f, 0.579752f, 0.56963f, 0.559421f, + 0.549126f, 0.538748f, 0.528287f, 0.517745f, 0.507124f, 0.496425f, 0.485651f, 0.474802f, 0.46388f, 0.452888f, + 0.441826f, 0.430697f, 0.419502f, 0.408243f, 0.396921f, 0.385538f, 0.374097f, 0.362598f, 0.351044f, 0.339436f, + 0.327776f, 0.316066f, 0.304308f, 0.292503f, 0.280653f, 0.268761f, 0.256827f, 0.244854f, 0.232844f, 0.220798f, + 0.208718f, 0.196606f, 0.184465f, 0.172295f, 0.160098f, 0.147877f, 0.135634f, 0.12337f, 0.111087f, 0.098786f, + 0.086471f, 0.074143f, 0.061803f, 0.049454f, 0.037097f, 0.024734f, 0.012368f, 0.0f, +}; + +// clang-format off +s16 D_801D5F24[8 * (2 + 3 + 3)] = { + // floor(sin(i * M_PI / 16) * (2^15 - 1)) + 0, 6392, 12539, 18204, 23169, 27244, 30272, 32137, + 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, + // -floor(sin(i * M_PI / 32) * (2^15 - 1)) + 0, -3211, -6392, -9511, -12539, -15446, -18204, -20787, + -23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609, + -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329, + // -floor(sin(i * M_PI / 32) * (2^15 - 1)) + -23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609, + -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329, + -23169, -20787, -18204, -15446, -12539, -9511, -6392, -3211, +}; +// clang-format on diff --git a/src/code/code_8012EC80.c b/src/code/code_8012EC80.c index bfb33e2e1..648f05556 100644 --- a/src/code/code_8012EC80.c +++ b/src/code/code_8012EC80.c @@ -1,6 +1,7 @@ #include "global.h" +#include "interface/parameter_static/parameter_static.h" -// Bit Flag array in which gBitFlags[n] is literally (1 << n) +// Bit Flag array in which gBitFlags[n] is (1 << n) u32 gBitFlags[] = { (1 << 0), (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7), (1 << 8), (1 << 9), (1 << 10), (1 << 11), (1 << 12), (1 << 13), (1 << 14), (1 << 15), @@ -8,164 +9,225 @@ u32 gBitFlags[] = { (1 << 24), (1 << 25), (1 << 26), (1 << 27), (1 << 28), (1 << 29), (1 << 30), (1 << 31), }; -u16 gEquipMasks[] = { 0x000F, 0x00F0, 0x0F00, 0xF000 }; -u16 gEquipNegMasks[] = { 0xFFF0, 0xFF0F, 0xF0FF, 0x0FFF }; +// four-bit masks +u16 gEquipMasks[] = { + 0xF << 0, // Sword + 0xF << 4, // Shield + 0xF << 8, // Unused (Tunic) + 0xF << 12, // Unused (Boots) +}; + +// four-bit masks +u16 gEquipNegMasks[] = { + ~(0xF << 0), // Sword + ~(0xF << 4), // Shield + ~(0xF << 8), // Unused (Tunic) + (u16) ~(0xF << 12), // Unused (Boots) +}; + +// 3 = two bit masks +// 7 = three bit masks u32 gUpgradeMasks[] = { - 0x00000007, 0x00000038, 0x000001C0, 0x00000E00, 0x00003000, 0x0001C000, 0x000E0000, 0x00700000, + 7 << 0, // Quivers + 7 << 3, // Bomb Bags + 7 << 6, // Unused (Strength) + 7 << 9, // Unused (Scale) + 3 << 12, // Wallets + 7 << 14, // Unused (Deku Seed Bullet Bags) + 7 << 17, // Unused (Deku Stick) + 7 << 20, // Unused (Deku Nut) }; + +// 3 = two-bit masks +// 7 = three-bit masks u32 gUpgradeNegMasks[] = { - 0xFFFFFFF8, 0xFFFFFFC7, 0xFFFFFE3F, 0xFFFFF1FF, 0xFFFFCFFF, 0xFFFE3FFF, 0xFFF1FFFF, 0xFF8FFFFF, + ~(7 << 0), // Quivers + ~(7 << 3), // Bomb Bags + ~(7 << 6), // Unused (Strength) + ~(7 << 9), // Unused (Scale) + ~(3 << 12), // Wallets + ~(7 << 14), // Unused (Deku Seed Bullet Bags) + ~(7 << 17), // Unused (Deku Stick) + ~(7 << 20), // Unused (Deku Nut) +}; + +u8 gEquipShifts[] = { + 0, // Sword + 4, // Shield + 8, // Unused (Tunic) + 12, // Unused (Boots) +}; + +u8 gUpgradeShifts[] = { + 0, // Quivers + 3, // Bomb Bags + 6, // Unused (Strength) + 9, // Unused (Scale) + 12, // Wallets + 14, // Unused (Deku Seed Bullet Bags) + 17, // Unused (Deku Stick) + 20, // Unused (Deku Nut) }; -u8 gEquipShifts[] = { 0, 4, 8, 12 }; -u8 gUpgradeShifts[] = { 0, 3, 6, 9, 12, 14, 17, 20 }; u16 gUpgradeCapacities[][4] = { { 0, 30, 40, 50 }, // Quivers { 0, 20, 30, 40 }, // Bomb Bags - { 0, 0, 0, 0 }, // Unused (Scale) { 0, 0, 0, 0 }, // Unused (Strength) + { 0, 0, 0, 0 }, // Unused (Scale) { 99, 200, 500, 500 }, // Wallets { 0, 30, 40, 50 }, // Unused (Deku Seed Bullet Bags) { 0, 10, 20, 30 }, // Unused (Deku Stick) { 0, 20, 30, 40 }, // Unused (Deku Nut) }; -u32 gGsFlagsMask[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 }; -u32 gGsFlagsShift[] = { 0, 8, 16, 24 }; +// eight-bit masks +u32 gGsFlagsMask[] = { + 0xFF << 0, + 0xFF << 8, + 0xFF << 16, + 0xFF << 24, +}; + +u32 gGsFlagsShift[] = { + 0, + 8, + 16, + 24, +}; // TODO: use symbols for these icon textures once textures are properly in C void* gItemIcons[] = { - 0x08000000, // ITEM_OCARINA - 0x08001000, // ITEM_BOW - 0x08002000, // ITEM_ARROW_FIRE - 0x08003000, // ITEM_ARROW_ICE - 0x08004000, // ITEM_ARROW_LIGHT - 0x08005000, // ITEM_OCARINA_FAIRY - 0x08006000, // ITEM_BOMB - 0x08007000, // ITEM_BOMBCHU - 0x08008000, // ITEM_STICK - 0x08009000, // ITEM_NUT - 0x0800A000, // ITEM_BEAN - 0x0800B000, // ITEM_SLINGSHOT - 0x0800C000, // ITEM_POWDER_KEG - 0x0800D000, // ITEM_PICTO_BOX - 0x0800E000, // ITEM_LENS - 0x0800F000, // ITEM_HOOKSHOT - 0x08010000, // ITEM_SWORD_GREAT_FAIRY - 0x08011000, // ITEM_LONGSHOT - 0x08012000, // ITEM_BOTTLE - 0x08013000, // ITEM_POTION_RED - 0x08014000, // ITEM_POTION_GREEN - 0x08015000, // ITEM_POTION_BLUE - 0x08016000, // ITEM_FAIRY - 0x08017000, // ITEM_DEKU_PRINCESS - 0x08018000, // ITEM_MILK_BOTTLE - 0x08019000, // ITEM_MILK_HALF - 0x0801A000, // ITEM_FISH - 0x0801B000, // ITEM_BUG - 0x0801C000, // ITEM_BLUE_FIRE - 0x0801D000, // ITEM_POE - 0x0801E000, // ITEM_BIG_POE - 0x0801F000, // ITEM_SPRING_WATER - 0x08020000, // ITEM_HOT_SPRING_WATER - 0x08021000, // ITEM_ZORA_EGG - 0x08022000, // ITEM_GOLD_DUST - 0x08023000, // ITEM_MUSHROOM - 0x08024000, // ITEM_SEA_HORSE - 0x08025000, // ITEM_CHATEAU - 0x08026000, // ITEM_HYLIAN_LOACH - 0x08027000, // ITEM_OBABA_DRINK - 0x08028000, // ITEM_MOON_TEAR - 0x08029000, // ITEM_DEED_LAND - 0x0802A000, // ITEM_DEED_SWAMP - 0x0802B000, // ITEM_DEED_MOUNTAIN - 0x0802C000, // ITEM_DEED_OCEAN - 0x0802D000, // ITEM_ROOM_KEY - 0x0802E000, // ITEM_LETTER_MAMA - 0x0802F000, // ITEM_LETTER_TO_KAFEI - 0x08030000, // ITEM_PENDANT_MEMORIES - 0x08031000, // ITEM_TINGLE_MAP - 0x08032000, // ITEM_MASK_DEKU - 0x08033000, // ITEM_MASK_GORON - 0x08034000, // ITEM_MASK_ZORA - 0x08035000, // ITEM_MASK_FIERCE_DEITY - 0x08036000, // ITEM_MASK_TRUTH - 0x08037000, // ITEM_MASK_KAFEIS_MASK - 0x08038000, // ITEM_MASK_ALL_NIGHT - 0x08039000, // ITEM_MASK_BUNNY - 0x0803A000, // ITEM_MASK_KEATON - 0x0803B000, // ITEM_MASK_GARO - 0x0803C000, // ITEM_MASK_ROMANI - 0x0803D000, // ITEM_MASK_CIRCUS_LEADER - 0x0803E000, // ITEM_MASK_POSTMAN - 0x0803F000, // ITEM_MASK_COUPLE - 0x08040000, // ITEM_MASK_GREAT_FAIRY - 0x08041000, // ITEM_MASK_GIBDO - 0x08042000, // ITEM_MASK_DON_GERO - 0x08043000, // ITEM_MASK_KAMARO - 0x08044000, // ITEM_MASK_CAPTAIN - 0x08045000, // ITEM_MASK_STONE - 0x08046000, // ITEM_MASK_BREMEN - 0x08047000, // ITEM_MASK_BLAST - 0x08048000, // ITEM_MASK_SCENTS - 0x08049000, // ITEM_MASK_GIANT - 0x0804A000, // ITEM_BOW_ARROW_FIRE - 0x0804B000, // ITEM_BOW_ARROW_ICE - 0x0804C000, // ITEM_BOW_ARROW_LIGHT - 0x0804D000, // ITEM_SWORD_KOKIRI - 0x0804E000, // ITEM_SWORD_RAZOR - 0x0804F000, // ITEM_SWORD_GILDED - 0x08050000, // ITEM_SWORD_DEITY - 0x08051000, // ITEM_SHIELD_HERO - 0x08052000, // ITEM_SHIELD_MIRROR - 0x08053000, // ITEM_QUIVER_30 - 0x08054000, // ITEM_QUIVER_40 - 0x08055000, // ITEM_QUIVER_50 - 0x08056000, // ITEM_BOMB_BAG_20 - 0x08057000, // ITEM_BOMB_BAG_30 - 0x08058000, // ITEM_BOMB_BAG_40 - 0x08059000, // ITEM_WALLET_DEFAULT - 0x0805A000, // ITEM_WALLET_ADULT - 0x0805B000, // ITEM_WALLET_GIANT - 0x0805C000, // ITEM_FISHING_POLE - 0x0805D000, // ITEM_REMAINS_ODOLWA - 0x0805E000, // ITEM_REMAINS_GOHT - 0x0805F000, // ITEM_REMAINS_GYORG - 0x08060000, // ITEM_REMAINS_TWINMOLD - 0x08062000, // ITEM_SONG_SONATA - 0x08062000, // ITEM_SONG_LULLABY - 0x08062000, // ITEM_SONG_NOVA - 0x08062000, // ITEM_SONG_ELEGY - 0x08062000, // ITEM_SONG_OATH - 0x08062000, // ITEM_SONG_SARIA - 0x08062000, // ITEM_SONG_TIME - 0x08062000, // ITEM_SONG_HEALING - 0x08062000, // ITEM_SONG_EPONA - 0x08062000, // ITEM_SONG_SOARING - 0x08062000, // ITEM_SONG_STORMS - 0x08062000, // ITEM_SONG_SUN - 0x08061000, // ITEM_BOMBERS_NOTEBOOK - 0x09000000, // ITEM_SKULL_TOKEN - 0x09000900, // ITEM_HEART_CONTAINER - 0x09001200, // ITEM_HEART_PIECE - 0x08062000, // - 0x08062000, // - 0x08062000, // ITEM_SONG_LULLABY_INTRO - 0x09003600, // ITEM_KEY_BOSS - 0x09004800, // ITEM_COMPASS - 0x09003F00, // ITEM_DUNGEON_MAP - 0x09005100, // ITEM_STRAY_FAIRIES - 0x09005A00, // ITEM_KEY_SMALL - 0x09006300, // ITEM_MAGIC_SMALL - 0x09006C00, // ITEM_MAGIC_LARGE - 0x08062180, // ITEM_HEART_PIECE_2 - 0x08062A80, // ITEM_INVALID_1 - 0x08063380, // ITEM_INVALID_2 - 0x020028A0, // ITEM_INVALID_3 - 0x020025A0, // ITEM_INVALID_4 - 0x020027A0, // ITEM_INVALID_5 - 0x020026A0, // ITEM_INVALID_6 - 0x020024A0, // ITEM_INVALID_7 + 0x08000000, // ITEM_OCARINA + 0x08001000, // ITEM_BOW + 0x08002000, // ITEM_ARROW_FIRE + 0x08003000, // ITEM_ARROW_ICE + 0x08004000, // ITEM_ARROW_LIGHT + 0x08005000, // ITEM_OCARINA_FAIRY + 0x08006000, // ITEM_BOMB + 0x08007000, // ITEM_BOMBCHU + 0x08008000, // ITEM_STICK + 0x08009000, // ITEM_NUT + 0x0800A000, // ITEM_MAGIC_BEANS + 0x0800B000, // ITEM_SLINGSHOT + 0x0800C000, // ITEM_POWDER_KEG + 0x0800D000, // ITEM_PICTO_BOX + 0x0800E000, // ITEM_LENS + 0x0800F000, // ITEM_HOOKSHOT + 0x08010000, // ITEM_SWORD_GREAT_FAIRY + 0x08011000, // ITEM_LONGSHOT + 0x08012000, // ITEM_BOTTLE + 0x08013000, // ITEM_POTION_RED + 0x08014000, // ITEM_POTION_GREEN + 0x08015000, // ITEM_POTION_BLUE + 0x08016000, // ITEM_FAIRY + 0x08017000, // ITEM_DEKU_PRINCESS + 0x08018000, // ITEM_MILK_BOTTLE + 0x08019000, // ITEM_MILK_HALF + 0x0801A000, // ITEM_FISH + 0x0801B000, // ITEM_BUG + 0x0801C000, // ITEM_BLUE_FIRE + 0x0801D000, // ITEM_POE + 0x0801E000, // ITEM_BIG_POE + 0x0801F000, // ITEM_SPRING_WATER + 0x08020000, // ITEM_HOT_SPRING_WATER + 0x08021000, // ITEM_ZORA_EGG + 0x08022000, // ITEM_GOLD_DUST + 0x08023000, // ITEM_MUSHROOM + 0x08024000, // ITEM_SEA_HORSE + 0x08025000, // ITEM_CHATEAU + 0x08026000, // ITEM_HYLIAN_LOACH + 0x08027000, // ITEM_OBABA_DRINK + 0x08028000, // ITEM_MOON_TEAR + 0x08029000, // ITEM_DEED_LAND + 0x0802A000, // ITEM_DEED_SWAMP + 0x0802B000, // ITEM_DEED_MOUNTAIN + 0x0802C000, // ITEM_DEED_OCEAN + 0x0802D000, // ITEM_ROOM_KEY + 0x0802E000, // ITEM_LETTER_MAMA + 0x0802F000, // ITEM_LETTER_TO_KAFEI + 0x08030000, // ITEM_PENDANT_MEMORIES + 0x08031000, // ITEM_TINGLE_MAP + 0x08032000, // ITEM_MASK_DEKU + 0x08033000, // ITEM_MASK_GORON + 0x08034000, // ITEM_MASK_ZORA + 0x08035000, // ITEM_MASK_FIERCE_DEITY + 0x08036000, // ITEM_MASK_TRUTH + 0x08037000, // ITEM_MASK_KAFEIS_MASK + 0x08038000, // ITEM_MASK_ALL_NIGHT + 0x08039000, // ITEM_MASK_BUNNY + 0x0803A000, // ITEM_MASK_KEATON + 0x0803B000, // ITEM_MASK_GARO + 0x0803C000, // ITEM_MASK_ROMANI + 0x0803D000, // ITEM_MASK_CIRCUS_LEADER + 0x0803E000, // ITEM_MASK_POSTMAN + 0x0803F000, // ITEM_MASK_COUPLE + 0x08040000, // ITEM_MASK_GREAT_FAIRY + 0x08041000, // ITEM_MASK_GIBDO + 0x08042000, // ITEM_MASK_DON_GERO + 0x08043000, // ITEM_MASK_KAMARO + 0x08044000, // ITEM_MASK_CAPTAIN + 0x08045000, // ITEM_MASK_STONE + 0x08046000, // ITEM_MASK_BREMEN + 0x08047000, // ITEM_MASK_BLAST + 0x08048000, // ITEM_MASK_SCENTS + 0x08049000, // ITEM_MASK_GIANT + 0x0804A000, // ITEM_BOW_ARROW_FIRE + 0x0804B000, // ITEM_BOW_ARROW_ICE + 0x0804C000, // ITEM_BOW_ARROW_LIGHT + 0x0804D000, // ITEM_SWORD_KOKIRI + 0x0804E000, // ITEM_SWORD_RAZOR + 0x0804F000, // ITEM_SWORD_GILDED + 0x08050000, // ITEM_SWORD_DEITY + 0x08051000, // ITEM_SHIELD_HERO + 0x08052000, // ITEM_SHIELD_MIRROR + 0x08053000, // ITEM_QUIVER_30 + 0x08054000, // ITEM_QUIVER_40 + 0x08055000, // ITEM_QUIVER_50 + 0x08056000, // ITEM_BOMB_BAG_20 + 0x08057000, // ITEM_BOMB_BAG_30 + 0x08058000, // ITEM_BOMB_BAG_40 + 0x08059000, // ITEM_WALLET_DEFAULT + 0x0805A000, // ITEM_WALLET_ADULT + 0x0805B000, // ITEM_WALLET_GIANT + 0x0805C000, // ITEM_FISHING_POLE + 0x0805D000, // ITEM_REMAINS_ODOLWA + 0x0805E000, // ITEM_REMAINS_GOHT + 0x0805F000, // ITEM_REMAINS_GYORG + 0x08060000, // ITEM_REMAINS_TWINMOLD + 0x08062000, // ITEM_SONG_SONATA + 0x08062000, // ITEM_SONG_LULLABY + 0x08062000, // ITEM_SONG_NOVA + 0x08062000, // ITEM_SONG_ELEGY + 0x08062000, // ITEM_SONG_OATH + 0x08062000, // ITEM_SONG_SARIA + 0x08062000, // ITEM_SONG_TIME + 0x08062000, // ITEM_SONG_HEALING + 0x08062000, // ITEM_SONG_EPONA + 0x08062000, // ITEM_SONG_SOARING + 0x08062000, // ITEM_SONG_STORMS + 0x08062000, // ITEM_SONG_SUN + 0x08061000, // ITEM_BOMBERS_NOTEBOOK + 0x09000000, // ITEM_SKULL_TOKEN + 0x09000900, // ITEM_HEART_CONTAINER + 0x09001200, // ITEM_HEART_PIECE + 0x08062000, // + 0x08062000, // + 0x08062000, // ITEM_SONG_LULLABY_INTRO + 0x09003600, // ITEM_KEY_BOSS + 0x09004800, // ITEM_COMPASS + 0x09003F00, // ITEM_DUNGEON_MAP + 0x09005100, // ITEM_STRAY_FAIRIES + 0x09005A00, // ITEM_KEY_SMALL + 0x09006300, // ITEM_MAGIC_SMALL + 0x09006C00, // ITEM_MAGIC_LARGE + 0x08062180, // ITEM_HEART_PIECE_2 + 0x08062A80, // ITEM_INVALID_1 + 0x08063380, // ITEM_INVALID_2 + gOcarinaCUpTex, // ITEM_INVALID_3 + gOcarinaCDownTex, // ITEM_INVALID_4 + gOcarinaCLeftTex, // ITEM_INVALID_5 + gOcarinaCRightTex, // ITEM_INVALID_6 + gOcarinaATex, // ITEM_INVALID_7 }; // Used to map item IDs to inventory slots @@ -412,7 +474,7 @@ u16 gScenesPerRegion[11][27] = { }, }; -s32 func_8012EC80(GlobalContext* globalCtx) { +s32 Inventory_GetBtnBItem(GlobalContext* globalCtx) { if (gSaveContext.buttonStatus[0] == BTN_DISABLED) { return ITEM_NONE; } else if (gSaveContext.unk_1015 == ITEM_NONE) { @@ -429,96 +491,190 @@ s32 func_8012EC80(GlobalContext* globalCtx) { } } -void func_8012ED34(s16 equipment); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012ED34.s") +/** + * Only changes shield + */ +void Inventory_ChangeEquipment(s16 value) { + SET_EQUIP_VALUE(EQUIP_SHIELD, value); +} -u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012ED78.s") +/** + * Only deletes shield, equipment argument unused and is a remnant of OoT + */ +u8 Inventory_DeleteEquipment(GlobalContext* globalCtx, s16 equipment) { + Player* player = GET_PLAYER(globalCtx); -void Inventory_ChangeUpgrade(s16 arg0, u32 arg1); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/Inventory_ChangeUpgrade.s") + if (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) != 0) { + SET_EQUIP_VALUE(EQUIP_SHIELD, 0); + Player_SetEquipmentData(globalCtx, player); + return true; + } -s32 func_8012EE34(s16 arg0) { - s16 num = 0; + return false; +} - if (arg0 >= 0x20) { - if (arg0 < 0x40) { - num = 1; - } else if (arg0 < 0x60) { - num = 2; - } else if (arg0 < 0x80) { - num = 3; - } else if (arg0 < 0xA0) { - num = 4; - } else if (arg0 < 0xC0) { - num = 5; - } else if (arg0 < 0xE0) { - num = 6; +void Inventory_ChangeUpgrade(s16 upgrade, u32 value) { + u32 upgrades = gSaveContext.save.inventory.upgrades; + + upgrades &= gUpgradeNegMasks[upgrade]; + upgrades |= value << gUpgradeShifts[upgrade]; + + gSaveContext.save.inventory.upgrades = upgrades; +} + +s32 Inventory_IsMapVisible(s16 sceneNum) { + s16 index = 0; + + /** + * a single index of scenesVisible can only hold 32 bits. So for every 32 scenes in the scene enum, + * increment to the next index of scenesVisible so that every scene gets a unique flag in scenesVisible, + * 224 bits were allocated to this although there are only 112 scenes + */ + if (sceneNum >= 0x20) { + if (sceneNum < 0x40) { + index = 1; + } else if (sceneNum < 0x60) { + index = 2; + } else if (sceneNum < 0x80) { + index = 3; + } else if (sceneNum < 0xA0) { + index = 4; + } else if (sceneNum < 0xC0) { + index = 5; + } else if (sceneNum < 0xE0) { + index = 6; } } - if (gSaveContext.save.roomInf[125][num] & gBitFlags[arg0 - (num << 5)]) { - return 1; + if (gSaveContext.save.scenesVisible[index] & gBitFlags[sceneNum - (index << 5)]) { + return true; } - return 0; + return false; } -static u16 D_801C2380[6][12] = { - { SCENE_00KEIKOKU, SCENE_BOTI, SCENE_13HUBUKINOMITI, SCENE_24KEMONOMITI, SCENE_IKANAMAE, SCENE_TOWN, SCENE_ICHIBA, - SCENE_BACKTOWN, SCENE_CLOCKTOWER, SCENE_ALLEY, -1 }, - { SCENE_20SICHITAI, SCENE_20SICHITAI2, SCENE_21MITURINMAE, SCENE_22DEKUCITY, SCENE_DEKU_KING, SCENE_KINSTA1, -1 }, - { SCENE_10YUKIYAMANOMURA, SCENE_10YUKIYAMANOMURA2, SCENE_11GORONNOSATO, SCENE_11GORONNOSATO2, SCENE_16GORON_HOUSE, - SCENE_12HAKUGINMAE, SCENE_14YUKIDAMANOMITI, SCENE_GORONRACE, SCENE_17SETUGEN, SCENE_17SETUGEN2, -1 }, - { SCENE_F01, SCENE_ROMANYMAE, SCENE_OMOYA, SCENE_F01C, SCENE_F01_B, SCENE_KOEPONARACE, -1 }, - { SCENE_30GYOSON, SCENE_SINKAI, SCENE_31MISAKI, SCENE_TORIDE, SCENE_KAIZOKU, SCENE_33ZORACITY, SCENE_35TAKI, -1 }, - { SCENE_F40, SCENE_F41, SCENE_CASTLE, SCENE_IKANA, SCENE_REDEAD, -1 }, +static u16 sScenesPerTingleMap[6][12] = { + { + // Clock Town Tingle Map + SCENE_00KEIKOKU, + SCENE_BOTI, + SCENE_13HUBUKINOMITI, + SCENE_24KEMONOMITI, + SCENE_IKANAMAE, + SCENE_TOWN, + SCENE_ICHIBA, + SCENE_BACKTOWN, + SCENE_CLOCKTOWER, + SCENE_ALLEY, + -1, + }, + { + // Woodfall Tingle Map + SCENE_20SICHITAI, + SCENE_20SICHITAI2, + SCENE_21MITURINMAE, + SCENE_22DEKUCITY, + SCENE_DEKU_KING, + SCENE_KINSTA1, + -1, + }, + { + // Snowhead Tingle Map + SCENE_10YUKIYAMANOMURA, + SCENE_10YUKIYAMANOMURA2, + SCENE_11GORONNOSATO, + SCENE_11GORONNOSATO2, + SCENE_16GORON_HOUSE, + SCENE_12HAKUGINMAE, + SCENE_14YUKIDAMANOMITI, + SCENE_GORONRACE, + SCENE_17SETUGEN, + SCENE_17SETUGEN2, + -1, + }, + { + // Romani Ranch Tingle Map + SCENE_F01, + SCENE_ROMANYMAE, + SCENE_OMOYA, + SCENE_F01C, + SCENE_F01_B, + SCENE_KOEPONARACE, + -1, + }, + { + // Great Bay Tingle Map + SCENE_30GYOSON, + SCENE_SINKAI, + SCENE_31MISAKI, + SCENE_TORIDE, + SCENE_KAIZOKU, + SCENE_33ZORACITY, + SCENE_35TAKI, + -1, + }, + { + // Stone Tower Tingle Map + SCENE_F40, + SCENE_F41, + SCENE_CASTLE, + SCENE_IKANA, + SCENE_REDEAD, + -1, + }, }; -void func_8012EF0C(s16 arg0) { - s16 phi_v0 = 0; - s16 phi_v1 = 0; - u16(*new_var)[] = &D_801C2380[arg0]; +/** + * Map visibility is achieved by purchasing a tingle map + */ +void Inventory_SetMapVisibility(s16 tingleIndex) { + s16 i = 0; + s16 index = 0; + u16(*tingleMapSceneIndices)[] = &sScenesPerTingleMap[tingleIndex]; - if ((arg0 >= 0) && (arg0 < 6)) { + if ((tingleIndex >= 0) && (tingleIndex < 6)) { while (true) { - if ((*new_var)[phi_v0] == 0xFFFF) { + if ((*tingleMapSceneIndices)[i] == 0xFFFF) { break; } - if (((s16)(*new_var)[phi_v0]) < 0x20) { - phi_v1 = 0; - } else if (((s16)(*new_var)[phi_v0]) < 0x40) { - phi_v1 = 1; - } else if (((s16)(*new_var)[phi_v0]) < 0x60) { - phi_v1 = 2; - } else if (((s16)(*new_var)[phi_v0]) < 0x80) { - phi_v1 = 3; - } else if (((s16)(*new_var)[phi_v0]) < 0xA0) { - phi_v1 = 4; - } else if (((s16)(*new_var)[phi_v0]) < 0xC0) { - phi_v1 = 5; - } else if (((s16)(*new_var)[phi_v0]) < 0xE0) { - phi_v1 = 6; + /** + * a single index of scenesVisible can only hold 32 bits. So for every 32 scenes in the scene enum, + * increment to the next index of scenesVisible so that every scene gets a unique flag in scenesVisible, + * 224 bits were allocated to this although there are only 112 scenes + */ + if (((s16)(*tingleMapSceneIndices)[i]) < 0x20) { + index = 0; + } else if (((s16)(*tingleMapSceneIndices)[i]) < 0x40) { + index = 1; + } else if (((s16)(*tingleMapSceneIndices)[i]) < 0x60) { + index = 2; + } else if (((s16)(*tingleMapSceneIndices)[i]) < 0x80) { + index = 3; + } else if (((s16)(*tingleMapSceneIndices)[i]) < 0xA0) { + index = 4; + } else if (((s16)(*tingleMapSceneIndices)[i]) < 0xC0) { + index = 5; + } else if (((s16)(*tingleMapSceneIndices)[i]) < 0xE0) { + index = 6; } - // Required to match - gSaveContext.save.roomInf[125][phi_v1] = - gSaveContext.save.roomInf[125][phi_v1] | gBitFlags[(s16)(*new_var)[phi_v0] - (phi_v1 << 5)]; - phi_v0++; + gSaveContext.save.scenesVisible[index] = + gSaveContext.save.scenesVisible[index] | gBitFlags[(s16)(*tingleMapSceneIndices)[i] - (index << 5)]; + i++; } - if ((*new_var) == D_801C2380[0]) { + if ((*tingleMapSceneIndices) == sScenesPerTingleMap[0]) { gSaveContext.save.mapsVisible |= 3; - } else if ((*new_var) == D_801C2380[1]) { + } else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[1]) { gSaveContext.save.mapsVisible |= 0x1C; - } else if ((*new_var) == D_801C2380[2]) { + } else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[2]) { gSaveContext.save.mapsVisible |= 0xE0; - } else if ((*new_var) == D_801C2380[3]) { + } else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[3]) { gSaveContext.save.mapsVisible |= 0x100; - } else if ((*new_var) == D_801C2380[4]) { + } else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[4]) { gSaveContext.save.mapsVisible |= 0x1E00; - } else if ((*new_var) == D_801C2380[5]) { + } else if ((*tingleMapSceneIndices) == sScenesPerTingleMap[5]) { gSaveContext.save.mapsVisible |= 0x6000; } } @@ -526,32 +682,46 @@ void func_8012EF0C(s16 arg0) { XREG(95) = 0; } -void func_8012F0EC(s16 arg0); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012F0EC.s") +/** + * Also stores the players filename into dekuPlaygroundPlayerName + */ +void Inventory_SaveDekuPlaygroundHighScore(s16 timerId) { + s16 i; -#ifdef NON_MATCHING -// regalloc -void func_8012F1BC(s16 sceneIndex) { - if (sceneIndex == SCENE_KINSTA1) { - gSaveContext.save.roomInf[126][0] = ((((gSaveContext.save.roomInf[126][0] & 0xFFFF0000) >> 0x10) + 1) << 0x10) | - (gSaveContext.save.roomInf[126][0] & 0xFFFF); - } else { - gSaveContext.save.roomInf[126][0] = - ((gSaveContext.save.roomInf[126][0] + 1) & 0xFFFF) | (gSaveContext.save.roomInf[126][0] & 0xFFFF0000); - } -} -#else -void func_8012F1BC(s16 arg0); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012F1BC.s") -#endif + gSaveContext.save.dekuPlaygroundHighScores[CURRENT_DAY - 1] = gSaveContext.unk_3DE0[timerId]; -s16 func_8012F22C(s16 sceneIndex) { - if (sceneIndex == SCENE_KINSTA1) { - return (gSaveContext.save.roomInf[126][0] & 0xFFFF0000) >> 0x10; - } else { - return gSaveContext.save.roomInf[126][0] & 0xFFFF; + for (i = 0; i < 8; i++) { + gSaveContext.save.inventory.dekuPlaygroundPlayerName[CURRENT_DAY - 1][i] = gSaveContext.save.playerData.playerName[i]; } } -void func_8012F278(GlobalContext* globalCtx); -#pragma GLOBAL_ASM("asm/non_matchings/code/code_8012EC80/func_8012F278.s") +void Inventory_IncrementSkullTokenCount(s16 sceneIndex) { + if (sceneIndex == SCENE_KINSTA1) { + // Swamp Spider House (increment high bits of skullTokenCount) + gSaveContext.save.skullTokenCount = ((u16)(((gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10) + 1) << 0x10) | + (gSaveContext.save.skullTokenCount & 0xFFFF); + } else { + // Ocean Spider House (increment low bits of skullTokenCount) + gSaveContext.save.skullTokenCount = + (((u16)gSaveContext.save.skullTokenCount + 1) & 0xFFFF) | (gSaveContext.save.skullTokenCount & 0xFFFF0000); + } +} + +s16 Inventory_GetSkullTokenCount(s16 sceneIndex) { + if (sceneIndex == SCENE_KINSTA1) { + // Swamp Spider House + return (gSaveContext.save.skullTokenCount & 0xFFFF0000) >> 0x10; + } else { + // Ocean Spider House + return gSaveContext.save.skullTokenCount & 0xFFFF; + } +} + +void Inventory_SaveLotteryCodeGuess(GlobalContext* globalCtx) { + u16 lotteryCodeGuess; + + lotteryCodeGuess = ((globalCtx->msgCtx.unk12054 & 0xF) << 8); // First Digit + lotteryCodeGuess |= ((globalCtx->msgCtx.unk12056 & 0xF) << 4); // Second Digit + lotteryCodeGuess |= (globalCtx->msgCtx.unk12058 & 0xF); // Third Digit + gSaveContext.save.lotteryCodeGuess = (gSaveContext.save.lotteryCodeGuess & 0xFFFF0000) | (lotteryCodeGuess & 0xFFFF); +} diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index c27a9b2c2..d9bb32bd3 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -1,4 +1,5 @@ #include "global.h" +#include "interface/parameter_static/parameter_static.h" static s16 sHeartsPrimColors[3][3] = { { 255, 70, 50 }, { 255, 190, 0 }, { 100, 100, 255 } }; static s16 sHeartsEnvColors[3][3] = { { 50, 40, 60 }, { 255, 0, 0 }, { 0, 0, 255 } }; @@ -14,24 +15,21 @@ s16 sBeatingHeartsDDEnv[3]; s16 sHeartsDDPrim[2][3]; s16 sHeartsDDEnv[2][3]; -extern TexturePtr D_02000000; // Empty heart texture -extern TexturePtr D_02000100; // Quarter Heart Texture -extern TexturePtr D_02000200; // Half Heart Texture -extern TexturePtr D_02000300; // Three Quarter Heart Texture -extern TexturePtr D_02000400; // Full heart texture -extern TexturePtr D_02000500; // Empty Double Defense Heart texture -extern TexturePtr D_02000600; // Quarter Double Defense Heart Texture -extern TexturePtr D_02000700; // Half Double Defense Heart Texture -extern TexturePtr D_02000800; // Three Quarter Double Defense Heart Texture -extern TexturePtr D_02000900; // Full Double Defense Heart texture +TexturePtr HeartTextures[] = { + gHeartFullTex, gHeartQuarterTex, gHeartQuarterTex, gHeartQuarterTex, + gHeartQuarterTex, gHeartQuarterTex, gHeartHalfTex, gHeartHalfTex, + gHeartHalfTex, gHeartHalfTex, gHeartHalfTex, gHeartThreeQuarterTex, + gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, +}; -TexturePtr HeartTextures[] = { &D_02000400, &D_02000100, &D_02000100, &D_02000100, &D_02000100, &D_02000100, - &D_02000200, &D_02000200, &D_02000200, &D_02000200, &D_02000200, &D_02000300, - &D_02000300, &D_02000300, &D_02000300, &D_02000300 }; - -TexturePtr HeartDDTextures[] = { &D_02000900, &D_02000600, &D_02000600, &D_02000600, &D_02000600, &D_02000600, - &D_02000700, &D_02000700, &D_02000700, &D_02000700, &D_02000700, &D_02000800, - &D_02000800, &D_02000800, &D_02000800, &D_02000800 }; +TexturePtr HeartDDTextures[] = { + gDefenseHeartFullTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, + gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, + gDefenseHeartHalfTex, gDefenseHeartHalfTex, gDefenseHeartHalfTex, + gDefenseHeartHalfTex, gDefenseHeartHalfTex, gDefenseHeartThreeQuarterTex, + gDefenseHeartThreeQuarterTex, gDefenseHeartThreeQuarterTex, gDefenseHeartThreeQuarterTex, + gDefenseHeartThreeQuarterTex, +}; void LifeMeter_Init(GlobalContext* globalCtx) { InterfaceContext* interfaceCtx = &globalCtx->interfaceCtx; @@ -276,11 +274,11 @@ void LifeMeter_Draw(GlobalContext* globalCtx) { } if (i < fullHeartCount) { - heartTex = &D_02000400; + heartTex = gHeartFullTex; } else if (i == fullHeartCount) { heartTex = HeartTextures[fractionHeartCount]; } else { - heartTex = &D_02000000; + heartTex = gHeartEmptyTex; } } else { if (i < fullHeartCount) { @@ -316,11 +314,11 @@ void LifeMeter_Draw(GlobalContext* globalCtx) { gDPSetEnvColor(OVERLAY_DISP++, sHeartsDDEnv[1][0], sHeartsDDEnv[1][1], sHeartsDDEnv[1][2], 255); } if (i < fullHeartCount) { - heartTex = &D_02000900; + heartTex = gDefenseHeartFullTex; } else if (i == fullHeartCount) { heartTex = HeartDDTextures[fractionHeartCount]; } else { - heartTex = &D_02000500; + heartTex = gDefenseHeartEmptyTex; } } diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index dd6db1a54..c959c4b9a 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -603,11 +603,11 @@ void Interface_NewDay(GlobalContext* globalCtx, s32 day) { // i is used to store sceneId for (i = 0; i < 120; i++) { - gSaveContext.save.roomInf[i][0] = gSaveContext.cycleSceneFlags[i].chest; - gSaveContext.save.roomInf[i][1] = gSaveContext.cycleSceneFlags[i].swch0; - gSaveContext.save.roomInf[i][2] = gSaveContext.cycleSceneFlags[i].swch1; - gSaveContext.save.roomInf[i][3] = gSaveContext.cycleSceneFlags[i].clearedRoom; - gSaveContext.save.roomInf[i][4] = gSaveContext.cycleSceneFlags[i].collectible; + gSaveContext.cycleSceneFlags[i].chest = gSaveContext.cycleSceneFlags[i].chest; + gSaveContext.cycleSceneFlags[i].swch0 = gSaveContext.cycleSceneFlags[i].swch0; + gSaveContext.cycleSceneFlags[i].swch1 = gSaveContext.cycleSceneFlags[i].swch1; + gSaveContext.cycleSceneFlags[i].clearedRoom = gSaveContext.cycleSceneFlags[i].clearedRoom; + gSaveContext.cycleSceneFlags[i].collectible = gSaveContext.cycleSceneFlags[i].collectible; } } @@ -2493,8 +2493,8 @@ void Interface_DrawClock(GlobalContext* globalCtx) { OPEN_DISPS(globalCtx->state.gfxCtx); if (REG(15) != 0) { - if ((msgCtx->unk11F22 == 0) || ((globalCtx->actorCtx.unk5 & 2) && !func_801690CC(globalCtx)) || - (msgCtx->unk11F22 == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 <= 0x200)) || + if ((msgCtx->msgMode == 0) || ((globalCtx->actorCtx.unk5 & 2) && !func_801690CC(globalCtx)) || + (msgCtx->msgMode == 0) || ((msgCtx->unk11F04 >= 0x100) && (msgCtx->unk11F04 <= 0x200)) || (gSaveContext.gameMode == 3)) { if (FrameAdvance_IsEnabled(globalCtx) == 0) { if (func_800FE4A8() == 0) { @@ -3919,7 +3919,7 @@ void Interface_Update(GlobalContext* globalCtx) { interfaceCtx->unk_218 = -15700.0f; interfaceCtx->unk_210 = 2; - if ((msgCtx->unk11F22 != 0) && (msgCtx->unk12006 == 0x26)) { + if ((msgCtx->msgMode != 0) && (msgCtx->unk12006 == 0x26)) { gGameInfo->data[0x55F] = -14; } else { gGameInfo->data[0x55F] = 0; diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 2c04addf8..7ee7c130e 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -113,7 +113,7 @@ void func_801229FC(Player* player) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123C58.s") -#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123C90.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/Player_SetEquipmentData.s") #pragma GLOBAL_ASM("asm/non_matchings/code/z_player_lib/func_80123D50.s") diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 46c627982..5675fc074 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -411,14 +411,17 @@ void Scene_HeaderCmdTimeSettings(GlobalContext* globalCtx, SceneCmd* cmd) { if (globalCtx->envCtx.timeIncrement == 0 && gSaveContext.save.cutscene < 0xFFF0) { gSaveContext.environmentTime = gSaveContext.save.time; - if (gSaveContext.environmentTime >= 0x2AAA && gSaveContext.environmentTime < 0x4555) { - gSaveContext.environmentTime = 0x3555; - } else if (gSaveContext.environmentTime >= 0x4555 && gSaveContext.environmentTime < 0x5555) { - gSaveContext.environmentTime = 0x5555; - } else if (gSaveContext.environmentTime >= 0xAAAA && gSaveContext.environmentTime < 0xB555) { - gSaveContext.environmentTime = 0xB555; - } else if (gSaveContext.environmentTime >= 0xC000 && gSaveContext.environmentTime < 0xCAAA) { - gSaveContext.environmentTime = 0xCAAA; + if (gSaveContext.environmentTime >= CLOCK_TIME(4, 0) && gSaveContext.environmentTime < CLOCK_TIME(6, 30)) { + gSaveContext.environmentTime = CLOCK_TIME(5, 0); + } else if (gSaveContext.environmentTime >= CLOCK_TIME(6, 30) && + gSaveContext.environmentTime < CLOCK_TIME(8, 0)) { + gSaveContext.environmentTime = CLOCK_TIME(8, 0); + } else if (gSaveContext.environmentTime >= CLOCK_TIME(16, 0) && + gSaveContext.environmentTime < CLOCK_TIME(17, 0)) { + gSaveContext.environmentTime = CLOCK_TIME(17, 0); + } else if (gSaveContext.environmentTime >= CLOCK_TIME(18, 0) && + gSaveContext.environmentTime < CLOCK_TIME(19, 0)) { + gSaveContext.environmentTime = CLOCK_TIME(19, 0); } } } diff --git a/src/code/z_snap.c b/src/code/z_snap.c index ee5f852f5..4eb327921 100644 --- a/src/code/z_snap.c +++ b/src/code/z_snap.c @@ -12,8 +12,8 @@ s32 func_8013A240(GlobalContext* globalCtx) { s32 seen; s32 count = 0; - gSaveContext.save.roomInf[123][3] = 0; - gSaveContext.save.roomInf[123][4] = 0; + gSaveContext.save.pictoFlags0 = 0; + gSaveContext.save.pictoFlags1 = 0; if (globalCtx->sceneNum == SCENE_20SICHITAI) { func_8013A41C(1); @@ -76,19 +76,19 @@ s32 func_8013A240(GlobalContext* globalCtx) { void func_8013A41C(s32 flag) { if (flag < 0x20) { - gSaveContext.save.roomInf[123][3] |= (1 << flag); + gSaveContext.save.pictoFlags0 |= (1 << flag); } else { flag &= 0x1F; - gSaveContext.save.roomInf[123][4] |= (1 << flag); + gSaveContext.save.pictoFlags1 |= (1 << flag); } } void func_8013A46C(s32 flag) { if (flag < 0x20) { - gSaveContext.save.roomInf[123][3] &= ~(1 << flag); + gSaveContext.save.pictoFlags0 &= ~(1 << flag); } else { flag &= 0x1F; - gSaveContext.save.roomInf[123][4] &= ~(1 << flag); + gSaveContext.save.pictoFlags1 &= ~(1 << flag); } } @@ -96,10 +96,10 @@ u32 func_8013A4C4(s32 flag) { SaveContext* saveCtx = &gSaveContext; if (flag < 0x20) { - return saveCtx->save.roomInf[123][3] & (1 << flag); + return saveCtx->save.pictoFlags0 & (1 << flag); } else { flag &= 0x1F; - return saveCtx->save.roomInf[123][4] & (1 << flag); + return saveCtx->save.pictoFlags1 & (1 << flag); } } @@ -123,36 +123,36 @@ s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos, distance = OLib_Vec3fDist(pos, &camera->eye); if ((distance < distanceMin) || (distanceMax < distance)) { - func_8013A41C(0x3f); - ret = 0x3f; + func_8013A41C(0x3F); + ret = 0x3F; } x = func_8013A504(func_800DFCB4(camera) + rot->x); y = func_8013A504(func_800DFCDC(camera) - (s16)(rot->y - 0x7FFF)); if ((0 < angleError) && ((angleError < x) || (angleError < y))) { - func_8013A41C(0x3e); - ret |= 0x3e; + func_8013A41C(0x3E); + ret |= 0x3E; } Actor_GetProjectedPos(globalCtx, pos, &screenSpace, &distance); x = (s16)(screenSpace.x * distance * 160.0f + 160.0f) - 85; y = (s16)(screenSpace.y * distance * -120.0f + 120.0f) - 67; if ((x < 0) || (0x96 < x) || (y < 0) || (0x69 < y)) { - func_8013A41C(0x3d); - ret |= 0x3d; + func_8013A41C(0x3D); + ret |= 0x3D; } if (BgCheck_ProjectileLineTest(&globalCtx->colCtx, pos, &camera->eye, &screenSpace, &poly, true, true, true, true, &bgId)) { - func_8013A41C(0x3c); - ret |= 0x3c; + func_8013A41C(0x3C); + ret |= 0x3C; } actors[0] = actor; actors[1] = &GET_PLAYER(globalCtx)->actor; - if (CollisionCheck_LineOCCheck(globalCtx, &globalCtx->colChkCtx, pos, &camera->eye, actors, 2) != 0) { - func_8013A41C(0x3b); - ret |= 0x3b; + if (CollisionCheck_LineOCCheck(globalCtx, &globalCtx->colChkCtx, pos, &camera->eye, actors, 2)) { + func_8013A41C(0x3B); + ret |= 0x3B; } if (ret == 0) { diff --git a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c index 2bea2f0ff..75002f17e 100644 --- a/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c +++ b/src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice.c @@ -178,7 +178,7 @@ void ArrowIce_Fly(ArrowIce* this, GlobalContext* globalCtx) { void ArrowIce_Update(Actor* thisx, GlobalContext* globalCtx) { ArrowIce* this = THIS; - if ((globalCtx->msgCtx.unk11F22 == 0xE) || (globalCtx->msgCtx.unk11F22 == 0x12)) { + if ((globalCtx->msgCtx.msgMode == 0xE) || (globalCtx->msgCtx.msgMode == 0x12)) { Actor_MarkForDeath(&this->actor); return; } else { diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c index a3d109c91..4b94b31e2 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1530,7 +1530,7 @@ void DmStk_Update(Actor* thisx, GlobalContext* globalCtx) { break; } - if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.unk11F22 != 0) && + if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) && (globalCtx->msgCtx.unk11F04 == 0x5E6) && !FrameAdvance_IsEnabled(globalCtx) && (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c index e128fc945..0698b8a64 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.c @@ -552,28 +552,27 @@ void func_808B9CE8(DoorWarp1* this, GlobalContext* globalCtx) { switch (globalCtx->sceneNum) { case SCENE_MITURIN_BS: - gSaveContext.save.roomInf[126][3] = (((void)0, gSaveContext.save.roomInf[126][3]) & 0xFFFFFF00) | - (((u8)gSaveContext.save.roomInf[126][4]) & 0xFF); + gSaveContext.save.unk_ECC[0] = + (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFFFFFF00) | (((u8)gSaveContext.save.unk_ECC[1]) & 0xFF); break; case SCENE_HAKUGIN_BS: - gSaveContext.save.roomInf[126][3] = (((void)0, gSaveContext.save.roomInf[126][3]) & 0xFFFF00FF) | - ((((u8)gSaveContext.save.roomInf[126][4]) & 0xFF) << 8); + gSaveContext.save.unk_ECC[0] = + (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFFFF00FF) | ((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 8); break; case SCENE_INISIE_BS: - gSaveContext.save.roomInf[126][3] = (((void)0, gSaveContext.save.roomInf[126][3]) & 0xFF00FFFF) | - ((((u8)gSaveContext.save.roomInf[126][4]) & 0xFF) << 0x10); + gSaveContext.save.unk_ECC[0] = + (((void)0, gSaveContext.save.unk_ECC[0]) & 0xFF00FFFF) | ((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 0x10); break; case SCENE_SEA_BS: - gSaveContext.save.roomInf[126][3] = (((void)0, gSaveContext.save.roomInf[126][3]) & 0x00FFFFFF) | - ((((u8)gSaveContext.save.roomInf[126][4]) & 0xFF) << 0x18); + gSaveContext.save.unk_ECC[0] = + (((void)0, gSaveContext.save.unk_ECC[0]) & 0x00FFFFFF) | ((((u8)gSaveContext.save.unk_ECC[1]) & 0xFF) << 0x18); break; } - gSaveContext.save.roomInf[126][4] = - (gSaveContext.save.roomInf[126][4] & 0xFFFFFF00) | ((((u8)gSaveContext.save.roomInf[126][4]) + 1) & 0xFF); + gSaveContext.save.unk_ECC[1] = (gSaveContext.save.unk_ECC[1] & 0xFFFFFF00) | ((((u8)gSaveContext.save.unk_ECC[1]) + 1) & 0xFF); Item_Give(globalCtx, func_808B849C(this, globalCtx) + (ITEM_REMAINS_ODOLWA - 1)); DoorWarp1_SetupAction(this, func_808B9E94); } @@ -656,19 +655,19 @@ void func_808BA10C(DoorWarp1* this, GlobalContext* globalCtx) { switch (phi_v0_2) { case 0: - phi_a0 = gSaveContext.save.roomInf[126][3] & 0xFF; + phi_a0 = gSaveContext.save.unk_ECC[0] & 0xFF; break; case 1: - phi_a0 = (gSaveContext.save.roomInf[126][3] & 0xFF00) >> 8; + phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF00) >> 8; break; case 2: - phi_a0 = (gSaveContext.save.roomInf[126][3] & 0xFF0000) >> 0x10; + phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF0000) >> 0x10; break; case 3: - phi_a0 = (gSaveContext.save.roomInf[126][3] & 0xFF000000) >> 0x18; + phi_a0 = (gSaveContext.save.unk_ECC[0] & 0xFF000000) >> 0x18; break; default: diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c index 36791db1a..07353d3bd 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -414,7 +414,7 @@ void func_80BED3BC(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C &= ~0x1; this->unk_32C |= 0x40; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x15EF; this->actionFunc = func_80BEF360; @@ -497,7 +497,7 @@ void func_80BED680(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x15EF; this->actionFunc = func_80BEF360; @@ -592,7 +592,7 @@ void func_80BED8A4(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x15EF; this->actionFunc = func_80BEF360; @@ -675,7 +675,7 @@ void func_80BEDB88(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x15EF; this->actionFunc = func_80BEF360; @@ -765,7 +765,7 @@ void func_80BEDDAC(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x15EF; this->actionFunc = func_80BEF360; @@ -843,7 +843,7 @@ void func_80BEE070(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x161A; this->actionFunc = func_80BEF360; @@ -926,7 +926,7 @@ void func_80BEE274(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x1629; this->actionFunc = func_80BEF360; @@ -1004,7 +1004,7 @@ void func_80BEE530(EnAkindonuts* this, GlobalContext* globalCtx) { func_8019F208(); this->unk_32C |= 0x40; this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0x15EF; this->actionFunc = func_80BEF360; @@ -1235,7 +1235,7 @@ void func_80BEEFA8(EnAkindonuts* this, GlobalContext* globalCtx) { if (func_80147624(globalCtx)) { if (this->unk_32C & 1) { this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0; this->actionFunc = func_80BEEE10; @@ -1243,7 +1243,7 @@ void func_80BEEFA8(EnAkindonuts* this, GlobalContext* globalCtx) { this->unk_32C &= ~0x20; this->actor.flags &= ~1; this->unk_32C &= ~0x4; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_338 = 8; this->unk_33C = 0; @@ -1275,7 +1275,7 @@ void func_80BEEFA8(EnAkindonuts* this, GlobalContext* globalCtx) { void func_80BEF18C(EnAkindonuts* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_33C = 0; this->actionFunc = func_80BEEE10; @@ -1302,7 +1302,7 @@ void func_80BEF20C(EnAkindonuts* this, GlobalContext* globalCtx) { if ((sp27 == 5) && func_80147624(globalCtx)) { if (this->unk_32C & 1) { this->unk_32C &= ~0x1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_80BEF360; } else { diff --git a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c index e973b7016..f906c073f 100644 --- a/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c +++ b/src/overlays/actors/ovl_En_Aob_01/z_en_aob_01.c @@ -394,7 +394,7 @@ void func_809C16DC(EnAob01* this, GlobalContext* globalCtx) { this->unk_2D2 &= ~2; Rupees_ChangeBy(-this->unk_434); func_800B7298(globalCtx, NULL, 7); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_809C1C9C; return; @@ -455,7 +455,7 @@ void func_809C1D64(EnAob01* this, GlobalContext* globalCtx) { } } } else if ((temp_v0 == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_210 = 0; this->actionFunc = func_809C2060; @@ -578,7 +578,7 @@ void func_809C21E0(EnAob01* this, GlobalContext* globalCtx) { this->unk_2D2 &= ~0x40; if (this->unk_2D2 & 0x10) { this->unk_2D2 &= ~0x10; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_809C2060; } else { @@ -748,7 +748,7 @@ void func_809C2A64(EnAob01* this, GlobalContext* globalCtx) { if (func_809C15BC(this)) { if ((sp2F == 5) && func_80147624(globalCtx)) { this->unk_434 = 0; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; } diff --git a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c index 47d803e81..8cb9634a1 100644 --- a/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c +++ b/src/overlays/actors/ovl_En_Bji_01/z_en_bji_01.c @@ -99,7 +99,7 @@ void func_809CCEE8(EnBji01* this, GlobalContext* globalCtx) { } } if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { - globalCtx->msgCtx.unk11F22 = 0; + globalCtx->msgCtx.msgMode = 0; globalCtx->msgCtx.unk11F10 = 0; func_809CD028(this, globalCtx); } else { diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.c b/src/overlays/actors/ovl_En_Dno/z_en_dno.c index e04a3c98e..c15eac2a4 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -323,7 +323,7 @@ void func_80A71C3C(EnDno* this, GlobalContext* globalCtx) { } if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { - globalCtx->msgCtx.unk11F22 = 0; + globalCtx->msgCtx.msgMode = 0; globalCtx->msgCtx.unk11F10 = 0; func_80A71E54(this, globalCtx); } else if (this->actor.xzDistToPlayer < 60.0f) { @@ -419,7 +419,7 @@ void func_80A71F18(EnDno* this, GlobalContext* globalCtx) { case 9: if (func_80147624(globalCtx)) { func_8013E1C8(&this->skelAnime, sAnimations, 10, &this->unk_32C); - globalCtx->msgCtx.unk11F22 = 0x44; + globalCtx->msgCtx.msgMode = 0x44; } break; @@ -602,7 +602,7 @@ void func_80A725F8(EnDno* this, GlobalContext* globalCtx) { case 0x800: case 0x801: if (func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x44; + globalCtx->msgCtx.msgMode = 0x44; this->unk_452 = 1; this->unk_454 = 0.0f; func_8013E1C8(&this->skelAnime, sAnimations, 8, &this->unk_32C); diff --git a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c index 77365fefa..e6a928f00 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -833,7 +833,7 @@ void EnFishing_Init(Actor* thisx, GlobalContext* globalCtx2) { if (sLinkAge != 1) { // HIGH_SCORE(HS_FISHING) from OoT - if (gSaveContext.save.roomInf[127][2] & 0x1000) { + if (gSaveContext.save.unk_EE4 & 0x1000) { D_8090CD08 = 0; } else { D_8090CD08 = 1; @@ -851,18 +851,18 @@ void EnFishing_Init(Actor* thisx, GlobalContext* globalCtx2) { Audio_QueueSeqCmd(0x100100FF); if (sLinkAge == 1) { - if (gSaveContext.save.roomInf[127][2] & 0x7F) { - D_809171CC = gSaveContext.save.roomInf[127][2] & 0x7F; + if (gSaveContext.save.unk_EE4 & 0x7F) { + D_809171CC = gSaveContext.save.unk_EE4 & 0x7F; } else { D_809171CC = 40.0f; } - } else if (gSaveContext.save.roomInf[127][2] & 0x7F000000) { - D_809171CC = (gSaveContext.save.roomInf[127][2] & 0x7F000000) >> 0x18; + } else if (gSaveContext.save.unk_EE4 & 0x7F000000) { + D_809171CC = (gSaveContext.save.unk_EE4 & 0x7F000000) >> 0x18; } else { D_809171CC = 45.0f; } - D_809171D1 = (gSaveContext.save.roomInf[127][2] & 0xFF0000) >> 0x10; + D_809171D1 = (gSaveContext.save.unk_EE4 & 0xFF0000) >> 0x10; if ((D_809171D1 & 7) == 7) { globalCtx->roomCtx.unk7A[0] = 90; D_809171CA = 1; @@ -2812,8 +2812,8 @@ void func_80903C60(EnFishing* this, u8 arg1) { void EnFishing_HandleAquariumDialog(EnFishing* this, GlobalContext* globalCtx) { if (sLinkAge == 1) { - if (gSaveContext.save.roomInf[127][2] & 0x7F) { - if (gSaveContext.save.roomInf[127][2] & 0x80) { + if (gSaveContext.save.unk_EE4 & 0x7F) { + if (gSaveContext.save.unk_EE4 & 0x80) { this->actor.textId = 0x40B1; } else { this->actor.textId = 0x4089; @@ -2821,8 +2821,8 @@ void EnFishing_HandleAquariumDialog(EnFishing* this, GlobalContext* globalCtx) { } else { this->actor.textId = 0x40AE; } - } else if (gSaveContext.save.roomInf[127][2] & 0x7F000000) { - if (gSaveContext.save.roomInf[127][2] & 0x80000000) { + } else if (gSaveContext.save.unk_EE4 & 0x7F000000) { + if (gSaveContext.save.unk_EE4 & 0x80000000) { this->actor.textId = 0x40B1; } else { this->actor.textId = 0x4089; @@ -3762,8 +3762,8 @@ void EnFishing_UpdateFish(Actor* thisx, GlobalContext* globalCtx2) { if ((D_80917272 == 0) && (D_80917274 == 0)) { // Assignment of OoT's D_80B7E086 here removed in MM - if (((sLinkAge == 1) && (gSaveContext.save.roomInf[127][2] & 0x400)) || - ((sLinkAge != 1) && (gSaveContext.save.roomInf[127][2] & 0x800))) { + if (((sLinkAge == 1) && (gSaveContext.save.unk_EE4 & 0x400)) || + ((sLinkAge != 1) && (gSaveContext.save.unk_EE4 & 0x800))) { // Assignment of OoT's D_80B7A67C here removed in MM, this is now an empty branch } } else { @@ -4705,7 +4705,7 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) { case 0: if (D_809171FC == 0) { if (sLinkAge != 1) { - if ((gSaveContext.save.roomInf[127][2] & 0x100) && !(gSaveContext.save.roomInf[127][2] & 0x200)) { + if ((gSaveContext.save.unk_EE4 & 0x100) && !(gSaveContext.save.unk_EE4 & 0x200)) { this->actor.textId = 0x4093; } else { this->actor.textId = 0x407B; @@ -4723,9 +4723,9 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) { if (D_809171FC == 0) { this->unk_154 = 1; if (sLinkAge != 1) { - gSaveContext.save.roomInf[127][2] |= 0x200; + gSaveContext.save.unk_EE4 |= 0x200; } else { - gSaveContext.save.roomInf[127][2] |= 0x100; + gSaveContext.save.unk_EE4 |= 0x100; } } else { this->unk_154 = 10; @@ -4808,8 +4808,8 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) { D_8090CD04 = 20; this->unk_154 = 0; - if ((gSaveContext.save.roomInf[127][2] & 0xFF0000) < 0xFF0000) { - gSaveContext.save.roomInf[127][2] += 0x10000; + if ((gSaveContext.save.unk_EE4 & 0xFF0000) < 0xFF0000) { + gSaveContext.save.unk_EE4 += 0x10000; } } break; @@ -4917,30 +4917,30 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) { if (sLinkAge == 1) { f32 temp; - gSaveContext.save.roomInf[127][2] &= 0xFFFFFF00; - gSaveContext.save.roomInf[127][2] |= ((s16)D_809171CC & 0x7F); + gSaveContext.save.unk_EE4 &= 0xFFFFFF00; + gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F); - temp = (gSaveContext.save.roomInf[127][2] & 0x7F000000) >> 0x18; + temp = (gSaveContext.save.unk_EE4 & 0x7F000000) >> 0x18; if (temp < D_809171CC) { - gSaveContext.save.roomInf[127][2] &= 0xFFFFFF; - gSaveContext.save.roomInf[127][2] |= ((s16)D_809171CC & 0x7F) << 0x18; + gSaveContext.save.unk_EE4 &= 0xFFFFFF; + gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18; if (D_809171D2 == 2) { - gSaveContext.save.roomInf[127][2] |= 0x80000000; + gSaveContext.save.unk_EE4 |= 0x80000000; } } if (D_809171D2 == 2) { - gSaveContext.save.roomInf[127][2] |= 0x80; + gSaveContext.save.unk_EE4 |= 0x80; this->unk_154 = 0; break; } } else { - gSaveContext.save.roomInf[127][2] &= 0xFFFFFF; - gSaveContext.save.roomInf[127][2] |= ((s16)D_809171CC & 0x7F) << 0x18; + gSaveContext.save.unk_EE4 &= 0xFFFFFF; + gSaveContext.save.unk_EE4 |= ((s16)D_809171CC & 0x7F) << 0x18; if (D_809171D2 == 2) { - gSaveContext.save.roomInf[127][2] |= 0x80000000; + gSaveContext.save.unk_EE4 |= 0x80000000; this->unk_154 = 0; break; } @@ -4957,14 +4957,14 @@ void EnFishing_HandleOwnerDialog(EnFishing* this, GlobalContext* globalCtx) { } if (sLinkAge == 1) { - if ((D_809171CC >= 50.0f) && !(gSaveContext.save.roomInf[127][2] & 0x400)) { - gSaveContext.save.roomInf[127][2] |= 0x400; + if ((D_809171CC >= 50.0f) && !(gSaveContext.save.unk_EE4 & 0x400)) { + gSaveContext.save.unk_EE4 |= 0x400; getItemId = GI_HEART_PIECE; sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f; } } else { - if ((D_809171CC >= 60.0f) && !(gSaveContext.save.roomInf[127][2] & 0x800)) { - gSaveContext.save.roomInf[127][2] |= 0x800; + if ((D_809171CC >= 60.0f) && !(gSaveContext.save.unk_EE4 & 0x800)) { + gSaveContext.save.unk_EE4 |= 0x800; getItemId = GI_SCALE_GOLD; sSinkingLureLocation = Rand_ZeroFloat(3.999f) + 1.0f; } @@ -5130,9 +5130,9 @@ void EnFishing_UpdateOwner(Actor* thisx, GlobalContext* globalCtx2) { } if (D_8090CD08 == 0) { - gSaveContext.save.roomInf[127][2] |= 0x1000; + gSaveContext.save.unk_EE4 |= 0x1000; } else if (D_8090CD08 == 1) { - gSaveContext.save.roomInf[127][2] &= ~0x1000; + gSaveContext.save.unk_EE4 &= ~0x1000; } if (D_8090CCFC != 0) { diff --git a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c index c3a66b36c..b75c65c94 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -299,14 +299,13 @@ s16 EnFsn_GetStolenItemId(u32 stolenItem) { s32 EnFsn_HasItemsToSell(void) { if (CURRENT_DAY != 3) { - if (((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) || - ((gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10)) { + if (((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18) || ((gSaveContext.save.stolenItems & 0xFF0000) >> 0x10)) { return true; } return false; } else { - if (((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) || - ((gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10) || !(gSaveContext.save.weekEventReg[0x21] & 4)) { + if (((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18) || ((gSaveContext.save.stolenItems & 0xFF0000) >> 0x10) || + !(gSaveContext.save.weekEventReg[0x21] & 4)) { return true; } return false; @@ -314,8 +313,8 @@ s32 EnFsn_HasItemsToSell(void) { } void EnFsn_GetShopItemIds(EnFsn* this) { - u32 stolenItem1 = (gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18; - u32 stolenItem2 = (gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10; + u32 stolenItem1 = (gSaveContext.save.stolenItems & 0xFF000000) >> 0x18; + u32 stolenItem2 = (gSaveContext.save.stolenItems & 0xFF0000) >> 0x10; s16 itemId; this->stolenItem1 = this->stolenItem2 = 0; @@ -362,7 +361,7 @@ void EnFsn_EndInteraction(EnFsn* this, GlobalContext* globalCtx) { this->cutsceneState = 0; } Actor_ProcessTalkRequest(&this->actor, &globalCtx->state); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; Interface_ChangeAlpha(50); this->drawCursor = 0; @@ -935,7 +934,7 @@ void EnFsn_MakeOffer(EnFsn* this, GlobalContext* globalCtx) { switch (globalCtx->msgCtx.choiceIndex) { case 0: func_8019F208(); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; if (this->cutsceneState == 2) { ActorCutscene_Stop(this->cutscene); @@ -1135,7 +1134,7 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, GlobalContext* globalCtx) { item = this->items[this->cursorIdx]; item->buyFanfareFunc(globalCtx, item); Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; Interface_ChangeAlpha(50); this->drawCursor = 0; @@ -1143,9 +1142,9 @@ void EnFsn_HandleCanPlayerBuyItem(EnFsn* this, GlobalContext* globalCtx) { item = this->items[this->cursorIdx]; item->boughtFunc(globalCtx, item); if (this->stolenItem1 == this->cursorIdx) { - gSaveContext.save.roomInf[126][5] &= ~0xFF000000; + gSaveContext.save.stolenItems &= ~0xFF000000; } else if (this->stolenItem2 == this->cursorIdx) { - gSaveContext.save.roomInf[126][5] &= ~0xFF0000; + gSaveContext.save.stolenItems &= ~0xFF0000; } this->numSellingItems--; this->itemIds[this->cursorIdx] = -1; @@ -1172,7 +1171,7 @@ void EnFsn_SetupEndInteraction(EnFsn* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.unk120B1 == 0) { EnFsn_EndInteraction(this, globalCtx); } else { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; } } else { @@ -1244,7 +1243,7 @@ void EnFsn_AskCanBuyMore(EnFsn* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.unk120B1 == 0) { EnFsn_EndInteraction(this, globalCtx); } else { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; } } else { @@ -1291,7 +1290,7 @@ void EnFsn_AskCanBuyAterRunningOutOfItems(EnFsn* this, GlobalContext* globalCtx) if (globalCtx->msgCtx.unk120B1 == 0) { EnFsn_EndInteraction(this, globalCtx); } else { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; } } else { @@ -1345,12 +1344,12 @@ void EnFsn_ConverseBackroom(EnFsn* this, GlobalContext* globalCtx) { if (Message_GetState(&globalCtx->msgCtx) == 5 && func_80147624(globalCtx)) { if (this->flags & ENFSN_END_CONVERSATION) { this->flags &= ~ENFSN_END_CONVERSATION; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = EnFsn_IdleBackroom; } else if (this->flags & ENFSN_GIVE_ITEM) { this->flags &= ~ENFSN_GIVE_ITEM; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = EnFsn_GiveItem; } else { diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c index 5e6a2f133..83fed5e23 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.c @@ -391,7 +391,7 @@ void func_80B0FFA8(EnGb2* this, GlobalContext* globalCtx) { if (temp_v0 == 5) { if (func_80147624(globalCtx)) { if (this->unk_26C & 2) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_26E = 0x14D1; this->unk_288 = 30; @@ -431,7 +431,7 @@ void func_80B0FFA8(EnGb2* this, GlobalContext* globalCtx) { case 0: func_8019F208(); Rupees_ChangeBy(-this->unk_288); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_800B7298(globalCtx, NULL, 7); this->actionFunc = func_80B11344; @@ -553,7 +553,7 @@ void func_80B10634(EnGb2* this, GlobalContext* globalCtx) { if (temp_v0 == 5) { if (func_80147624(globalCtx)) { if (this->unk_26C & 2) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_26C &= ~2; if (this->unk_26E == 0x14DD) { @@ -583,7 +583,7 @@ void func_80B10634(EnGb2* this, GlobalContext* globalCtx) { } else { func_8019F208(); Rupees_ChangeBy(-this->unk_288); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_800B7298(globalCtx, NULL, 7); this->actionFunc = func_80B11344; @@ -749,7 +749,7 @@ void func_80B10E98(EnGb2* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { if (this->unk_26C & 2) { this->unk_26C &= ~2; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; if ((this->unk_26E != 0x14E8) && (this->unk_26E != 0x14EA)) { ActorCutscene_Stop(this->unk_282[this->unk_290]); @@ -792,7 +792,7 @@ void func_80B11048(EnGb2* this, GlobalContext* globalCtx) { void func_80B110F8(EnGb2* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { if (this->unk_26C & 2) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_26C &= ~2; this->actionFunc = func_80B10A48; diff --git a/src/overlays/actors/ovl_En_Geg/z_en_geg.c b/src/overlays/actors/ovl_En_Geg/z_en_geg.c index 2a68ceed9..f90b0f2c4 100644 --- a/src/overlays/actors/ovl_En_Geg/z_en_geg.c +++ b/src/overlays/actors/ovl_En_Geg/z_en_geg.c @@ -541,7 +541,7 @@ void func_80BB26EC(EnGeg* this, GlobalContext* globalCtx) { case 0xD61: ActorCutscene_Stop(this->unk_498); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_230 &= ~0x10; this->actionFunc = func_80BB221C; @@ -557,14 +557,14 @@ void func_80BB27D4(EnGeg* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { switch (this->unk_496) { case 0xD63: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_80BB221C; break; case 0xD69: this->unk_49A = this->unk_49C[6]; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_80BB2520; break; @@ -572,7 +572,7 @@ void func_80BB27D4(EnGeg* this, GlobalContext* globalCtx) { case 0xD6D: case 0xD6F: case 0xD8A: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_80BB31B8; break; @@ -580,7 +580,7 @@ void func_80BB27D4(EnGeg* this, GlobalContext* globalCtx) { case 0xD72: case 0xD75: case 0xD8B: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_230 &= ~0x10; this->unk_49A = this->unk_49C[7]; @@ -607,7 +607,7 @@ void func_80BB2944(EnGeg* this, GlobalContext* globalCtx) { } } else if ((sp27 == 5) && func_80147624(globalCtx)) { if (this->unk_496 == 0xD67) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_49A = this->unk_49C[4]; this->actionFunc = func_80BB2520; @@ -624,7 +624,7 @@ void func_80BB2A54(EnGeg* this, GlobalContext* globalCtx) { ActorCutscene_Stop(this->unk_498); this->unk_230 &= ~0x10; this->unk_244 = 65; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_80BB347C; } else { diff --git a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c index 47af78169..442336904 100644 --- a/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c +++ b/src/overlays/actors/ovl_En_Ginko_Man/z_en_ginko_man.c @@ -80,8 +80,8 @@ void EnGinkoMan_Idle(EnGinkoMan* this, GlobalContext* globalCtx) { s32 yaw = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; EnGinkoMan_SwitchAnimation(this, globalCtx); - if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { // Listen for dialogue start? - if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { + if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { + if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING); func_801518B0(globalCtx, 0x44C, &this->actor); this->curTextId = 0x44C; // would you like to make an account @@ -145,7 +145,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING); } - globalCtx->msgCtx.bankRupees = gSaveContext.save.roomInf[127][0] & 0xFFFF; + globalCtx->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF; func_801518B0(globalCtx, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" } @@ -156,22 +156,22 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { this->curTextId = 0x44E; //" ...So, what'll it be? Deposit Rupees Don't deposit Rupees" break; case 0x45A: // "All right, little guy, now I've got a total of [rupees] from you!" - if (((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 200) && (this->previousBankValue < 200) && + if (((gSaveContext.save.bankRupees & 0xFFFF) >= 200) && (this->previousBankValue < 200) && !(gSaveContext.save.weekEventReg[59] & 0x40)) { gSaveContext.save.weekEventReg[59] |= 0x40; func_801518B0(globalCtx, 0x45B, &this->actor); this->curTextId = 0x45B; // "What's this? You've already saved up 200 Rupees!?! - } else if (((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) && + } else if (((gSaveContext.save.bankRupees & 0xFFFF) >= 1000) && ((this->previousBankValue) < 1000) && !(gSaveContext.save.weekEventReg[59] & 0x80)) { gSaveContext.save.weekEventReg[59] |= 0x80; func_801518B0(globalCtx, 0x45C, &this->actor); this->curTextId = 0x45C; // "What's this? You've already saved up 1000 Rupees!?! - } else if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 5000) { + } else if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { if ((this->previousBankValue < 5000) && !(gSaveContext.save.weekEventReg[60] & 1)) { gSaveContext.save.weekEventReg[60] |= 1; func_801518B0(globalCtx, 0x45D, &this->actor); this->curTextId = 0x45D; // "What's this? You've already saved up 5000 Rupees?! - } else if (this->previousBankValue < (s16)(gSaveContext.save.roomInf[127][0] & 0xFFFF)) { + } else if (this->previousBankValue < (s16)(gSaveContext.save.bankRupees & 0xFFFF)) { Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_SITTING); func_801518B0(globalCtx, 0x45E, &this->actor); this->curTextId = @@ -208,12 +208,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { this->curTextId = 0x464; // Hey, relax! It doesn't leave any marks break; case 0x464: // Hey, relax! It doesn't leave any marks - globalCtx->msgCtx.unk11F22 = 0x44; + globalCtx->msgCtx.msgMode = 0x44; EnGinkoMan_SetupStamp(this); // stamp player break; case 0x465: // "There! Now I'll know you when I see you!" Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING); - globalCtx->msgCtx.bankRupees = gSaveContext.save.roomInf[127][0] & 0xFFFF; + globalCtx->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF; func_801518B0(globalCtx, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" break; @@ -229,7 +229,7 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { case 0x46C: // "Ah, yes...[Link], right? If I remember, you're the little guy who deposited [rupees]." case 0x47E: // "Your deposits total [rupees]." if (this->choiceDepositWithdrawl == GINKOMAN_CHOICE_DEPOSIT) { - if ((u32)(gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 5000) { + if ((u32)(gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { func_801518B0(globalCtx, 0x45F, &this->actor); this->curTextId = 0x45F; // "Excuuuse me! But I can't take anymore deposits! } else if (gSaveContext.save.playerData.rupees == 0) { @@ -280,12 +280,12 @@ void EnGinkoMan_DepositDialogue(EnGinkoMan* this, GlobalContext* globalCtx) { case 0x473: // Use it wisely... case 0x474: // "Aw, you're taking out all that? If you spend it like that, it'll all be gone before you know // it!" - if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { func_801518B0(globalCtx, 0x478, &this->actor); // "Look, little guy, all the Rupees you deposited are gone, so you can't use that stamp anymore." this->curTextId = 0x478; } else { - globalCtx->msgCtx.bankRupees = gSaveContext.save.roomInf[127][0] & 0xFFFF; + globalCtx->msgCtx.bankRupees = gSaveContext.save.bankRupees & 0xFFFF; func_801518B0(globalCtx, 0x45A, &this->actor); this->curTextId = 0x45A; // "All right, little guy, now I've got a total of [rupees] from you!" } @@ -311,7 +311,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) switch (this->curTextId) { case 0x44E: // "...So, what'll it be? if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) >= 5000) { + if ((gSaveContext.save.bankRupees & 0xFFFF) >= 5000) { play_sound(NA_SE_SY_ERROR); func_801518B0(globalCtx, 0x45F, &this->actor); this->curTextId = 0x45F; // bank full, cannot accept more @@ -353,21 +353,20 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->curTextId = 0x453; // That's it? That aint nothing at all } - if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { this->isNewAccount = true; } Rupees_ChangeBy((s16)-globalCtx->msgCtx.bankRupeesSelected); - this->previousBankValue = gSaveContext.save.roomInf[127][0] & 0xFFFF; - if (1) {} // Needed to match - gSaveContext.save.roomInf[127][0] = - (gSaveContext.save.roomInf[127][0] & 0xFFFF0000) | - ((gSaveContext.save.roomInf[127][0] & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected); + this->previousBankValue = gSaveContext.save.bankRupees & 0xFFFF; + gSaveContext.save.bankRupees = + ((gSaveContext.save.bankRupees & 0xFFFF) + globalCtx->msgCtx.bankRupeesSelected) | + (gSaveContext.save.bankRupees & 0xFFFF0000); } } else { // GINKOMAN_CHOICE_NO func_8019F230(); Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_SITTING); - if ((gSaveContext.save.roomInf[127][0] & 0xFFFF) == 0) { + if ((gSaveContext.save.bankRupees & 0xFFFF) == 0) { func_801518B0(globalCtx, 0x456, &this->actor); this->curTextId = 0x456; // Is that so? think about it } else { @@ -396,7 +395,7 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) break; case 0x471: // Are you really withdrawling [selected rupees]? if (globalCtx->msgCtx.choiceIndex == GINKOMAN_CHOICE_YES) { - if ((s32)((gSaveContext.save.roomInf[127][0] & 0xFFFF)) < + if ((s32)((gSaveContext.save.bankRupees & 0xFFFF)) < ((s32)(globalCtx->msgCtx.bankRupeesSelected + this->serviceFee))) { play_sound(NA_SE_SY_ERROR); Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_FLOORSMACKING); @@ -421,11 +420,11 @@ void EnGinkoMan_WaitForDialogueInput(EnGinkoMan* this, GlobalContext* globalCtx) this->curTextId = 0x472; // It's a waste to take out such a tiny bit } - this->previousBankValue = (s16)(gSaveContext.save.roomInf[127][0] & 0xFFFF); - gSaveContext.save.roomInf[127][0] = - (gSaveContext.save.roomInf[127][0] & 0xFFFF0000) | - (((gSaveContext.save.roomInf[127][0] & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) - - this->serviceFee); + this->previousBankValue = (s16)(gSaveContext.save.bankRupees & 0xFFFF); + gSaveContext.save.bankRupees = + (((gSaveContext.save.bankRupees & 0xFFFF) - globalCtx->msgCtx.bankRupeesSelected) - + this->serviceFee) | + (gSaveContext.save.bankRupees & 0xFFFF0000); Rupees_ChangeBy(globalCtx->msgCtx.bankRupeesSelected); } } else { @@ -579,7 +578,7 @@ void EnGinkoMan_Stamp(EnGinkoMan* this, GlobalContext* globalCtx) { break; case 0x469: // "Excuse me, but let me take a look at you..." Actor_ChangeAnimation(&this->skelAnime, animations, GINKO_SITTING); - globalCtx->msgCtx.bankRupees = (gSaveContext.save.roomInf[127][0] & 0xFFFF); + globalCtx->msgCtx.bankRupees = (gSaveContext.save.bankRupees & 0xFFFF); if ((CURRENT_DAY == 3) && (gSaveContext.save.isNight == 1)) { func_801518B0(globalCtx, 0x46C, &this->actor); this->curTextId = 0x46C; // "Ah, yes...[Link], right? diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.c b/src/overlays/actors/ovl_En_Gs/z_en_gs.c index dd28ab8e2..dbaa59828 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -112,7 +112,7 @@ s8 func_80997A90(s16 arg0, s16 arg1) { if ((arg0 == 0) || ((arg0 != 1) && (arg0 != 2) && (arg0 == 3))) { phi_v1 = 0; } else { - phi_v1 = (gSaveContext.save.roomInf[126][1] >> (arg1 * 3)) & 7; + phi_v1 = (gSaveContext.save.unk_EC4 >> (arg1 * 3)) & 7; } return phi_v1; } @@ -388,8 +388,8 @@ void func_809985B8(EnGs* this, GlobalContext* globalCtx) { Math_Vec3f_Sum(&player->actor.world.pos, &sp38, &player->actor.world.pos); Math_Vec3f_Copy(&player->actor.prevPos, &player->actor.world.pos); this->unk_200 = 0.0f; - gSaveContext.save.roomInf[126][1] = (gSaveContext.save.roomInf[126][1] & ~(7 << (this->unk_198 * 3))) | - ((this->unk_194 & 7) << (this->unk_198 * 3)); + gSaveContext.save.unk_EC4 = + ((u32)gSaveContext.save.unk_EC4 & ~(7 << (this->unk_198 * 3))) | ((this->unk_194 & 7) << (this->unk_198 * 3)); gossipStone = NULL; do { @@ -450,7 +450,7 @@ void func_8099874C(EnGs* this, GlobalContext* globalCtx) { phi_v0 = 1; for (i = 0; i < 4; i++) { - if (((gSaveContext.save.roomInf[126][1] >> (i * 3)) & 7) != (u32)this->unk_194) { + if (((gSaveContext.save.unk_EC4 >> (i * 3)) & 7) != (u32)this->unk_194) { phi_v0 = 0; } } @@ -1005,7 +1005,7 @@ void EnGs_Update(Actor* thisx, GlobalContext* globalCtx) { EnGs* this = THIS; if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { - globalCtx->msgCtx.unk11F22 = 0; + globalCtx->msgCtx.msgMode = 0; globalCtx->msgCtx.unk11F10 = 0; this->collider.base.acFlags &= ~AC_HIT; func_80997DEC(this, globalCtx); diff --git a/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c b/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c index b6d30391d..28225d2f6 100644 --- a/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c +++ b/src/overlays/actors/ovl_En_Hint_Skb/z_en_hint_skb.c @@ -392,7 +392,7 @@ void func_80C2077C(EnHintSkb* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x1147, &this->actor); this->unk_3E6 = 0x1147; if (this->skelAnime.animation == &object_skb_Anim_00697C) { - globalCtx->msgCtx.unk11F22 = 0x44; + globalCtx->msgCtx.msgMode = 0x44; this->actor.speedXZ = 2.4f; this->actor.gravity = -1.0f; this->actor.velocity.y = 3.0f; diff --git a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c index e5b52fe49..728297ea9 100644 --- a/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c +++ b/src/overlays/actors/ovl_En_Invadepoh/z_en_invadepoh.c @@ -628,11 +628,9 @@ void func_80B439B0(s32 arg0, s32 arg1) { } if (!(arg0 & 1)) { - gSaveContext.save.roomInf[124][arg0 >> 1] = - (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF); + gSaveContext.save.unk_E88[arg0 >> 1] = (gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF0000) | (arg1 & 0xFFFF); } else { - gSaveContext.save.roomInf[124][arg0 >> 1] = - (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10); + gSaveContext.save.unk_E88[arg0 >> 1] = (gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF) | ((arg1 & 0xFFFF) << 0x10); } } @@ -640,19 +638,19 @@ s32 func_80B43A24(s32 arg0) { u32 phi_v1; if ((arg0 & 1) == 0) { - phi_v1 = gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF; + phi_v1 = gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF; } else { - phi_v1 = (gSaveContext.save.roomInf[124][arg0 >> 1] & 0xFFFF0000) >> 0x10; + phi_v1 = (gSaveContext.save.unk_E88[arg0 >> 1] & 0xFFFF0000) >> 0x10; } return phi_v1 + 0x1AAA; } void func_80B43A74(s32 arg0) { - gSaveContext.save.roomInf[124][4] = (gSaveContext.save.roomInf[124][4] & ~0xFF) | (arg0 & 0xFF); + gSaveContext.save.unk_E88[4] = (gSaveContext.save.unk_E88[4] & ~0xFF) | (arg0 & 0xFF); } s32 func_80B43A9C(void) { - return (gSaveContext.save.roomInf[124][4] >> 0) & 0xFF; + return (gSaveContext.save.unk_E88[4] >> 0) & 0xFF; } s32 func_80B43AB0(void) { @@ -3466,7 +3464,7 @@ void func_80B4B024(EnInvadepoh* this) { void func_80B4B048(EnInvadepoh* this, GlobalContext* globalCtx) { if (globalCtx->msgCtx.unk120B1 == 0) { - if (globalCtx->msgCtx.unk11F22 == 0) { + if (globalCtx->msgCtx.msgMode == 0) { D_80B4E998 = 1; } else if ((Message_GetState(&globalCtx->msgCtx) == 6) || (Message_GetState(&globalCtx->msgCtx) == 5)) { D_80B4E998 = 1; diff --git a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c index 1895bea75..0998937e0 100644 --- a/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c +++ b/src/overlays/actors/ovl_En_Kgy/z_en_kgy.c @@ -153,32 +153,33 @@ ObjIcePoly* EnKgy_FindIceBlock(GlobalContext* globalCtx) { } void func_80B40C74(GlobalContext* globalCtx) { - gSaveContext.save.roomInf[globalCtx->sceneNum][5] |= 1; + gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 |= 1; if (CURRENT_DAY == 1) { - gSaveContext.save.roomInf[globalCtx->sceneNum][5] |= 2; + gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 |= 2; } else { - gSaveContext.save.roomInf[globalCtx->sceneNum][5] &= ~2; + gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 &= ~2; } } void func_80B40D00(GlobalContext* globalCtx) { - gSaveContext.save.roomInf[globalCtx->sceneNum][5] |= 4; + gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 |= 4; } void func_80B40D30(GlobalContext* globalCtx) { - gSaveContext.save.roomInf[globalCtx->sceneNum][5] &= ~7; + gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 &= ~7; } s32 func_80B40D64(GlobalContext* globalCtx) { - return gSaveContext.save.roomInf[globalCtx->sceneNum][5] & 1; + return gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 & 1; } s32 func_80B40D8C(GlobalContext* globalCtx) { - return gSaveContext.save.roomInf[globalCtx->sceneNum][5] & 4; + return gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 & 4; } s32 func_80B40DB4(GlobalContext* globalCtx) { - if ((CURRENT_DAY == 3) || ((CURRENT_DAY == 2) && (gSaveContext.save.roomInf[globalCtx->sceneNum][5] & 2))) { + if ((CURRENT_DAY == 3) || + ((CURRENT_DAY == 2) && (gSaveContext.save.permanentSceneFlags[globalCtx->sceneNum].unk_14 & 2))) { return true; } return false; diff --git a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c index 264f9ba56..6f87fbab5 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -909,9 +909,9 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { this->textId = 0x336D; } else { time = gSaveContext.unk_3DE0[4]; - if ((s32)time < (s32)gSaveContext.save.roomInf[127][4]) { + if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // [Score] New record! - gSaveContext.save.roomInf[127][4] = time; + gSaveContext.save.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); func_801518B0(globalCtx, 0x3350, &this->actor); this->textId = 0x3350; @@ -953,8 +953,8 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { this->textId = 0x3356; } else { time = gSaveContext.unk_3DE0[4]; - if ((s32)time < (s32)gSaveContext.save.roomInf[127][4]) { - gSaveContext.save.roomInf[127][4] = time; + if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { + gSaveContext.save.horseBackBalloonHighScore = time; EnMa4_SetFaceExpression(this, 0, 3); func_801518B0(globalCtx, 0x3350, &this->actor); this->textId = 0x3350; @@ -980,9 +980,9 @@ void EnMa4_StartDialogue(EnMa4* this, GlobalContext* globalCtx) { this->textId = 0x3356; } else { time = gSaveContext.unk_3DE0[4]; - if ((s32)time < (s32)gSaveContext.save.roomInf[127][4]) { + if ((s32)time < (s32)gSaveContext.save.horseBackBalloonHighScore) { // New record - gSaveContext.save.roomInf[127][4] = time; + gSaveContext.save.horseBackBalloonHighScore = time; func_801518B0(globalCtx, 0x335D, &this->actor); this->textId = 0x335D; } else { diff --git a/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c b/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c index fecbf05d3..afb1a80c7 100644 --- a/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c +++ b/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c @@ -198,7 +198,7 @@ void func_80A68B6C(EnMushi2* this) { } s32 func_80A68BA0(EnMushi2* this) { - return (D_80A6B994 > 3) && this->unk_34C == 0; + return (D_80A6B994 > 3) && this->unk_34C == NULL; } void func_80A68BC8(EnMushi2* this) { @@ -605,11 +605,11 @@ void func_80A69ADC(Actor* thisx) { sp44 = Math3D_SignedDistanceFromPlane( this->unk_310.x, this->unk_310.y, this->unk_310.z, func_80A69AA8(this->unk_310.x, this->unk_310.y, this->unk_310.z, &this->actor.world.pos), - &bean->actor.world.pos); + &bean->dyna.actor.world.pos); sp40 = Math3D_SignedDistanceFromPlane( this->unk_328.x, this->unk_328.y, this->unk_328.z, func_80A69AA8(this->unk_328.x, this->unk_328.y, this->unk_328.z, &this->actor.world.pos), - &bean->actor.world.pos); + &bean->dyna.actor.world.pos); sp3C = Math3D_XZLength(sp44, sp40); if (fabsf(sp3C) > 0.1f) { @@ -651,11 +651,11 @@ void func_80A69D3C(EnMushi2* this) { sp40 = Math3D_SignedDistanceFromPlane( this->unk_310.x, this->unk_310.y, this->unk_310.z, func_80A69AA8(this->unk_310.x, this->unk_310.y, this->unk_310.z, &this->actor.world.pos), - &this->unk_34C->actor.world.pos); + &this->unk_34C->dyna.actor.world.pos); sp3C = Math3D_SignedDistanceFromPlane( this->unk_328.x, this->unk_328.y, this->unk_328.z, func_80A69AA8(this->unk_328.x, this->unk_328.y, this->unk_328.z, &this->actor.world.pos), - &this->unk_34C->actor.world.pos); + &this->unk_34C->dyna.actor.world.pos); sp38 = Math3D_XZLengthSquared(sp40, sp3C); if (fabsf(sp38) > 0.010000001f) { @@ -840,7 +840,7 @@ void func_80A6A508(Actor* thisx) { } this->unk_368 = Rand_S16Offset(10, 30); - if (this->unk_34C == 0) { + if (this->unk_34C == NULL) { func_80A69CE0(thisx); } else { func_80A69ADC(thisx); @@ -1118,7 +1118,7 @@ void EnMushi2_Update(Actor* thisx, GlobalContext* globalCtx) { f32 phi_f0; s32 temp; - if ((this->unk_34C != NULL) && (this->unk_34C->actor.update == NULL)) { + if ((this->unk_34C != NULL) && (this->unk_34C->dyna.actor.update == NULL)) { this->unk_34C = NULL; } @@ -1137,7 +1137,7 @@ void EnMushi2_Update(Actor* thisx, GlobalContext* globalCtx) { this->unk_36A--; } - if ((this->unk_34C != 0) && ((this->actionFunc == func_80A6A5C0) || (this->actionFunc == func_80A6A824)) && + if ((this->unk_34C != NULL) && ((this->actionFunc == func_80A6A5C0) || (this->actionFunc == func_80A6A824)) && (this->unk_354 < SQ(3.0f))) { this->unk_30C |= 0x80; func_80A6B078(this); @@ -1176,15 +1176,15 @@ void EnMushi2_Update(Actor* thisx, GlobalContext* globalCtx) { func_80A68BC8(this); } - if (this->unk_34C != 0) { + if (this->unk_34C != NULL) { sp4C = 0.0f; - this->unk_354 = Math3D_Vec3fDistSq(&this->actor.world.pos, &this->unk_34C->actor.world.pos); + this->unk_354 = Math3D_Vec3fDistSq(&this->actor.world.pos, &this->unk_34C->dyna.actor.world.pos); if (this->unk_354 < this->unk_350) { - f32 dist = Math3D_DistPlaneToPos(COLPOLY_GET_NORMAL(this->unk_34C->actor.floorPoly->normal.x), - COLPOLY_GET_NORMAL(this->unk_34C->actor.floorPoly->normal.y), - COLPOLY_GET_NORMAL(this->unk_34C->actor.floorPoly->normal.z), - this->unk_34C->actor.floorPoly->dist, &this->actor.world.pos); + f32 dist = Math3D_DistPlaneToPos(COLPOLY_GET_NORMAL(this->unk_34C->dyna.actor.floorPoly->normal.x), + COLPOLY_GET_NORMAL(this->unk_34C->dyna.actor.floorPoly->normal.y), + COLPOLY_GET_NORMAL(this->unk_34C->dyna.actor.floorPoly->normal.z), + this->unk_34C->dyna.actor.floorPoly->dist, &this->actor.world.pos); if (fabsf(dist) < 3.0f) { sp4C = 1.9f; @@ -1203,7 +1203,7 @@ void EnMushi2_Update(Actor* thisx, GlobalContext* globalCtx) { !(this->unk_358 > 0.999f) || !(this->unk_354 < SQ(20.0f)))) { s32 phi_v0 = true; - if (this->unk_34C == 0) { + if (this->unk_34C == NULL) { this->collider.base.ocFlags1 |= OC1_TYPE_PLAYER; } else { this->collider.base.ocFlags1 &= ~OC1_TYPE_PLAYER; diff --git a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c index 73ce4b8b6..54ca45a58 100644 --- a/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c +++ b/src/overlays/actors/ovl_En_Ossan/z_en_ossan.c @@ -249,7 +249,7 @@ void EnOssan_EndInteraction(GlobalContext* globalCtx, EnOssan* this) { Player* player = GET_PLAYER(globalCtx); Actor_ProcessTalkRequest(&this->actor, &globalCtx->state); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; Interface_ChangeAlpha(50); this->drawCursor = 0; @@ -931,7 +931,7 @@ void EnOssan_SetupBuyItemWithFanfare(GlobalContext* globalCtx, EnOssan* this) { Player* player = GET_PLAYER(globalCtx); Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->stateFlags2 &= ~0x20000000; Interface_ChangeAlpha(50); @@ -1048,7 +1048,7 @@ void EnOssan_BuyItemWithFanfare(EnOssan* this, GlobalContext* globalCtx) { void EnOssan_SetupItemPurchased(EnOssan* this, GlobalContext* globalCtx) { if (Message_GetState(&globalCtx->msgCtx) == 6 && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; EnOssan_SetupAction(this, EnOssan_ItemPurchased); if (this->cutsceneState == ENOSSAN_CUTSCENESTATE_STOPPED) { diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.c b/src/overlays/actors/ovl_En_Rr/z_en_rr.c index 058442b90..d3f9951cc 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.c +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.c @@ -307,7 +307,7 @@ void func_808FA4F4(EnRr* this, GlobalContext* globalCtx) { if (((this->unk_1E2 == 0) && (gSaveContext.save.playerForm == PLAYER_FORM_HUMAN)) && (CUR_EQUIP_VALUE_VOID(EQUIP_SHIELD) == EQUIP_SHIELD)) { sp34 = true; - this->unk_1E2 = func_8012ED78(globalCtx, 1); + this->unk_1E2 = Inventory_DeleteEquipment(globalCtx, 1); } else { sp34 = false; } diff --git a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c index 7e8eea792..177dff76f 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -307,7 +307,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) { if (func_80147624(globalCtx)) { if (this->unk_328 & 1) { this->unk_328 &= ~1; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actor.flags &= ~ACTOR_FLAG_1; this->unk_328 &= ~4; @@ -330,7 +330,7 @@ void func_80BCB6D0(EnScopenuts* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, this->unk_33C, &this->actor); } else { func_8019F208(); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; Rupees_ChangeBy(this->unk_358 * -1); this->actionFunc = func_80BCB90C; diff --git a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c index a6f579f85..fa5739227 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -462,7 +462,7 @@ void func_80ADBAB8(EnSellnuts* this, GlobalContext* globalCtx) { } if ((sp27 == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = func_80ADBBEC; func_800B7298(globalCtx, NULL, 0x13); @@ -508,7 +508,7 @@ void func_80ADBD64(EnSellnuts* this, GlobalContext* globalCtx) { } if ((sp27 == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_338 &= ~2; this->actor.flags &= ~1; @@ -550,7 +550,7 @@ void func_80ADBE80(EnSellnuts* this, GlobalContext* globalCtx) { void func_80ADBFA0(EnSellnuts* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; if (this->unk_34C == 0) { this->actionFunc = func_80ADB544; @@ -713,7 +713,7 @@ void func_80ADC6D0(EnSellnuts* this, GlobalContext* globalCtx) { Player* player = GET_PLAYER(globalCtx); if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; if (player->transformation == PLAYER_FORM_DEKU) { if (gSaveContext.save.day == 3) { @@ -743,7 +743,7 @@ void func_80ADC7B4(EnSellnuts* this, GlobalContext* globalCtx) { ActorCutscene_SetIntentToPlay(this->cutscene); } } else if ((this->unk_366 == 1) && (temp == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_366 = 0; ActorCutscene_Stop(this->cutscene); diff --git a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c index a238e55dc..bad4bffe2 100644 --- a/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c +++ b/src/overlays/actors/ovl_En_Sob1/z_en_sob1.c @@ -436,7 +436,7 @@ void EnSob1_EndInteraction(GlobalContext* globalCtx, EnSob1* this) { this->cutsceneState = ENSOB1_CUTSCENESTATE_STOPPED; } Actor_ProcessTalkRequest(&this->actor, &globalCtx->state); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; Interface_ChangeAlpha(50); this->drawCursor = 0; @@ -927,7 +927,7 @@ void EnSob1_SetupBuyItemWithFanfare(GlobalContext* globalCtx, EnSob1* this) { Player* player = GET_PLAYER(globalCtx); Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->stateFlags2 &= ~0x20000000; Interface_ChangeAlpha(50); @@ -1067,7 +1067,7 @@ void EnSob1_BuyItemWithFanfare(EnSob1* this, GlobalContext* globalCtx) { void EnSob1_SetupItemPurchased(EnSob1* this, GlobalContext* globalCtx) { if (Message_GetState(&globalCtx->msgCtx) == 6 && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; EnSob1_SetupAction(this, EnSob1_ItemPurchased); if (this->cutsceneState == ENSOB1_CUTSCENESTATE_STOPPED) { diff --git a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c index df1be3851..489e8f5c0 100644 --- a/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c +++ b/src/overlays/actors/ovl_En_Ssh/z_en_ssh.c @@ -653,7 +653,7 @@ void EnSsh_Init(Actor* thisx, GlobalContext* globalCtx) { this->actor.gravity = 0.0f; this->initialYaw = this->actor.world.rot.y; EnSsh_SetupAction(this, EnSsh_Start); - if (func_8012F22C(globalCtx->sceneNum) >= 30) { + if (Inventory_GetSkullTokenCount(globalCtx->sceneNum) >= 30) { Actor_MarkForDeath(&this->actor); } } diff --git a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c index c58d780b9..d7b929dc5 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -1108,7 +1108,7 @@ void func_80BAD130(EnSuttari* this, GlobalContext* globalCtx) { u8 talkState = Message_GetState(&globalCtx->msgCtx); if ((talkState == 5 || talkState == 6) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; if (this->flags1 & 8) { this->actionFunc = func_80BAD004; @@ -1145,7 +1145,7 @@ void func_80BAD2B4(EnSuttari* this, GlobalContext* globalCtx) { this->actionFunc = func_80BAD230; } else { ActorCutscene_Stop(this->cutscenes[1]); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->flags1 |= 0x40; this->actionFunc = func_80BAD380; @@ -1169,7 +1169,7 @@ void func_80BAD380(EnSuttari* this, GlobalContext* globalCtx) { player->stateFlags1 &= ~0x10000000; this->flags1 &= ~0x4000; ActorCutscene_Stop(this->cutscenes[1]); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->flags1 |= 0x40; } @@ -1312,7 +1312,7 @@ void func_80BADA9C(EnSuttari* this, GlobalContext* globalCtx) { ((EnElf*)GET_PLAYER(globalCtx)->tatlActor)->unk_264 |= 0x10; this->flags2 &= ~1; } - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->textId = 0; if (this->flags1 & 1) { diff --git a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c index 7f4e5f2ea..5f57ec177 100644 --- a/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c +++ b/src/overlays/actors/ovl_En_Syateki_Man/z_en_syateki_man.c @@ -271,7 +271,7 @@ void func_809C6A04(EnSyatekiMan* this, GlobalContext* globalCtx) { Rupees_ChangeBy(-20); gSaveContext.save.weekEventReg[63] |= 1; gSaveContext.save.weekEventReg[63] &= (u8)~2; - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_26A = 7; player->stateFlags1 |= 0x20; @@ -320,7 +320,7 @@ void func_809C6C2C(EnSyatekiMan* this, GlobalContext* globalCtx) { case 0xA2B: case 0xA2C: case 0xA35: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; Interface_InitMinigame(globalCtx); @@ -353,7 +353,7 @@ void func_809C6C2C(EnSyatekiMan* this, GlobalContext* globalCtx) { break; case 0xA34: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; gSaveContext.minigameState = 3; @@ -388,7 +388,7 @@ void func_809C6E30(EnSyatekiMan* this, GlobalContext* globalCtx) { case 6: if (func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->stateFlags1 &= ~0x20; gSaveContext.save.weekEventReg[63] &= (u8)~1; @@ -628,7 +628,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_284 = 0x400; } } else { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; this->unk_26A = 7; @@ -641,7 +641,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { case 0x3FE: case 0x400: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; this->unk_27E = 0; @@ -688,7 +688,7 @@ void func_809C7620(EnSyatekiMan* this, GlobalContext* globalCtx) { case 0x405: case 0x406: case 0x407: - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->actor.freezeTimer = 0; gSaveContext.minigameState = 3; @@ -974,9 +974,8 @@ void func_809C8488(EnSyatekiMan* this, GlobalContext* globalCtx) { this->unk_274 = 0; this->unk_276 = 0; if (this->unk_270 <= 0) { - if ((s32)((gSaveContext.save.roomInf[127][6] & 0xFFFF0000) >> 0x10) < this->unk_280) { - gSaveContext.save.roomInf[127][6] = - ((gSaveContext.save.roomInf[127][6]) & 0xFFFF) | ((u16)this->unk_280 << 0x10); + if ((s32)((gSaveContext.save.unk_EF4 & 0xFFFF0000) >> 0x10) < this->unk_280) { + gSaveContext.save.unk_EF4 = ((gSaveContext.save.unk_EF4) & 0xFFFF) | ((u16)this->unk_280 << 0x10); } this->unk_270 = 15; if (this->unk_280 >= 0x848) { @@ -1165,8 +1164,8 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) { if ((this->unk_270 <= 0) && !globalCtx->interfaceCtx.isMinigamePerfect) { Flags_SetAllTreasure(globalCtx, this->unk_280); this->unk_270 = 15; - if (((s32)(gSaveContext.save.roomInf[127][6] & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) { - if ((s32)(gSaveContext.save.roomInf[127][6] & 0xFFFF) < this->unk_280) { + if (((s32)(gSaveContext.save.unk_EF4 & 0xFFFF) < this->unk_280) || (this->unk_280 == 50)) { + if ((s32)(gSaveContext.save.unk_EF4 & 0xFFFF) < this->unk_280) { if (!(gSaveContext.save.weekEventReg[59] & 0x20)) { func_801518B0(globalCtx, 0x407, &this->actor); this->unk_284 = 0x407; @@ -1181,7 +1180,7 @@ void func_809C8BF0(EnSyatekiMan* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, 0x406, &this->actor); this->unk_284 = 0x406; } - gSaveContext.save.roomInf[127][6] = (gSaveContext.save.roomInf[127][6] & 0xFFFF0000) | (this->unk_280 & 0xFFFF); + gSaveContext.save.unk_EF4 = (gSaveContext.save.unk_EF4 & 0xFFFF0000) | (this->unk_280 & 0xFFFF); this->unk_26A = 6; } else { if (CURRENT_DAY != 3) { diff --git a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c index 6e626b752..952743c89 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -168,7 +168,7 @@ void EnThiefbird_Init(Actor* thisx, GlobalContext* globalCtx) { D_80C1392C = 1; Math_Vec3f_Copy(&D_80C13920, &this->actor.world.pos); Actor_MarkForDeath(&this->actor); - } else if ((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) { + } else if ((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18) { Actor_MarkForDeath(&this->actor); } else { func_80C11538(this); @@ -260,7 +260,7 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { itemId1 = ITEM_SWORD_GREAT_FAIRY; } else { CUR_FORM_EQUIP(EQUIP_SLOT_B) = ITEM_NONE; - TAKE_EQUIPPED_ITEM(EQUIP_SWORD); + SET_EQUIP_VALUE(EQUIP_SWORD, 0); this->unk_3E8 = D_80C13680[phi_a3 - 1]; } @@ -271,11 +271,10 @@ s32 func_80C10B0C(EnThiefbird* this, GlobalContext* globalCtx) { return false; } - if (!((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18)) { - gSaveContext.save.roomInf[126][5] = (gSaveContext.save.roomInf[126][5] & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18); + if (!((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18)) { + gSaveContext.save.stolenItems = (gSaveContext.save.stolenItems & 0xFFFFFF) | ((itemId1 & 0xFF) << 0x18); } else { - gSaveContext.save.roomInf[126][5] = - (gSaveContext.save.roomInf[126][5] & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10); + gSaveContext.save.stolenItems = (gSaveContext.save.stolenItems & 0xFF00FFFF) | ((itemId1 & 0xFF) << 0x10); } return true; @@ -571,8 +570,8 @@ void func_80C1193C(EnThiefbird* this, GlobalContext* globalCtx) { Actor_PlaySfxAtPos(&this->actor, NA_SE_EN_THIEFBIRD_VOICE); if (!(this->collider.base.atFlags & AT_BOUNCED)) { if ((D_80C1392C != 0) && CUR_UPG_VALUE(UPG_QUIVER) && - (!((gSaveContext.save.roomInf[126][5] & 0xFF000000) >> 0x18) || - !((gSaveContext.save.roomInf[126][5] & 0xFF0000) >> 0x10)) && + (!((gSaveContext.save.stolenItems & 0xFF000000) >> 0x18) || + !((gSaveContext.save.stolenItems & 0xFF0000) >> 0x10)) && (Rand_ZeroOne() < 0.5f) && func_80C10B0C(this, globalCtx)) { func_80C1242C(this); } else if (func_80C10E98(globalCtx)) { diff --git a/src/overlays/actors/ovl_En_Tk/z_en_tk.c b/src/overlays/actors/ovl_En_Tk/z_en_tk.c index 137012525..f740a8029 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -291,7 +291,7 @@ void func_80AECA3C(EnTk* this, GlobalContext* globalCtx) { void func_80AECA90(EnTk* this, GlobalContext* globalCtx) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { - globalCtx->msgCtx.unk11F22 = 0; + globalCtx->msgCtx.msgMode = 0; globalCtx->msgCtx.unk11F10 = 0; func_80AEDE10(this, globalCtx); } else if (this->actor.xzDistToPlayer < 100.0f) { @@ -318,7 +318,7 @@ void func_80AECB6C(EnTk* this, GlobalContext* globalCtx) { this->actor.textId = 0; if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { - globalCtx->msgCtx.unk11F22 = 0; + globalCtx->msgCtx.msgMode = 0; globalCtx->msgCtx.unk11F10 = 0; func_80AED4F8(this, globalCtx); return; @@ -690,7 +690,7 @@ void func_80AED940(EnTk* this, GlobalContext* globalCtx) { if (Actor_ProcessTalkRequest(&this->actor, &globalCtx->state)) { this->unk_2CA &= ~0x80; this->actor.flags &= ~0x10000; - globalCtx->msgCtx.unk11F22 = 0; + globalCtx->msgCtx.msgMode = 0; globalCtx->msgCtx.unk11F10 = 0; func_80AEDE10(this, globalCtx); } else if (!(this->unk_2CA & 0x80)) { @@ -871,7 +871,7 @@ void func_80AEDF5C(EnTk* this, GlobalContext* globalCtx) { this->unk_2CA |= 2; if (globalCtx->msgCtx.choiceIndex == 0) { func_8019F208(); - globalCtx->msgCtx.unk11F22 = 0x44; + globalCtx->msgCtx.msgMode = 0x44; func_80AEE2A8(this, globalCtx); } else { func_8019F230(); diff --git a/src/overlays/actors/ovl_En_Trt/z_en_trt.c b/src/overlays/actors/ovl_En_Trt/z_en_trt.c index e644b7322..e36dae75a 100644 --- a/src/overlays/actors/ovl_En_Trt/z_en_trt.c +++ b/src/overlays/actors/ovl_En_Trt/z_en_trt.c @@ -199,7 +199,7 @@ void EnTrt_EndInteraction(GlobalContext* globalCtx, EnTrt* this) { this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; } Actor_ProcessTalkRequest(&this->actor, &globalCtx->state); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; Interface_ChangeAlpha(50); this->drawCursor = 0; @@ -342,7 +342,7 @@ void EnTrt_GetMushroom(EnTrt* this, GlobalContext* globalCtx) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; } - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = EnTrt_PayForMushroom; break; @@ -387,7 +387,7 @@ void EnTrt_SetupTryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; } - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = EnTrt_GiveRedPotionForKoume; } else { @@ -632,7 +632,7 @@ void EnTrt_SetupBuyItemWithFanfare(GlobalContext* globalCtx, EnTrt* this) { Player* player = GET_PLAYER(globalCtx); Actor_PickUp(&this->actor, globalCtx, this->items[this->cursorIdx]->getItemId, 300.0f, 300.0f); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; player->stateFlags2 &= ~0x20000000; Interface_ChangeAlpha(50); @@ -950,7 +950,7 @@ void EnTrt_TryToGiveRedPotion(EnTrt* this, GlobalContext* globalCtx) { ActorCutscene_Stop(this->cutscene); this->cutsceneState = ENTRT_CUTSCENESTATE_STOPPED; } - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->actionFunc = EnTrt_GiveRedPotionForKoume; } else { diff --git a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c index 296341f20..5ef7eddc7 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c @@ -328,7 +328,7 @@ void func_80AD3CEC(EnTrt2* this, GlobalContext* globalCtx) { func_801518B0(globalCtx, this->unk_3A8, &this->actor); this->unk_3D8 = false; } else if ((sp27 == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_80AD3380(&this->skelAnime, sAnimations, 6); this->unk_3B2 = 4; @@ -356,7 +356,7 @@ void func_80AD3DA4(EnTrt2* this, GlobalContext* globalCtx) { void func_80AD3E34(EnTrt2* this, GlobalContext* globalCtx) { if ((Message_GetState(&globalCtx->msgCtx) == 5) && func_80147624(globalCtx)) { if (Inventory_HasEmptyBottle()) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_3B2 = 12; } else { @@ -384,7 +384,7 @@ void func_80AD3EF0(EnTrt2* this, GlobalContext* globalCtx) { } } } else if ((temp_v0 == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; this->unk_3B2 = 12; } @@ -428,7 +428,7 @@ void func_80AD417C(EnTrt2* this, GlobalContext* globalCtx) { func_80AD349C(this); func_80AD3DA4(this, globalCtx); } else { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; if (this->unk_3A8 == 0x84C) { func_80AD3380(&this->skelAnime, sAnimations, 6); @@ -510,7 +510,7 @@ void func_80AD4550(EnTrt2* this, GlobalContext* globalCtx) { } if ((sp23 == 5) && func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; } } diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c index 3aa692b90..c276b222a 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.c @@ -485,7 +485,7 @@ void EnWeatherTag_Update(Actor* thisx, GlobalContext* globalCtx) { u16 oldTime; this->actionFunc(this, globalCtx); - if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.unk11F22 != 0) && (globalCtx->msgCtx.unk11F04 == 0x5E6) && + if ((globalCtx->actorCtx.unk5 & 2) && (globalCtx->msgCtx.msgMode != 0) && (globalCtx->msgCtx.unk11F04 == 0x5E6) && (!FrameAdvance_IsEnabled(globalCtx)) && (globalCtx->sceneLoadFlag == 0) && (ActorCutscene_GetCurrentIndex() == -1) && (globalCtx->csCtx.state == 0)) { diff --git a/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.h b/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.h index 0c8bdc714..8360ae1e2 100644 --- a/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.h +++ b/src/overlays/actors/ovl_Obj_Aqua/z_obj_aqua.h @@ -4,6 +4,7 @@ #include "global.h" #define AQUA_HOT(thisx) ((thisx)->params & 1) +#define OBJAQUA_1 1 struct ObjAqua; diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c index 18ff5d8dc..d61b3f771 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.c @@ -5,8 +5,10 @@ */ #include "z_obj_bean.h" +#include "objects/object_mamenoki/object_mamenoki.h" +#include "objects/gameplay_keep/gameplay_keep.h" -#define FLAGS 0x00400000 +#define FLAGS (ACTOR_FLAG_400000) #define THIS ((ObjBean*)thisx) @@ -14,7 +16,50 @@ void ObjBean_Init(Actor* thisx, GlobalContext* globalCtx); void ObjBean_Destroy(Actor* thisx, GlobalContext* globalCtx); void ObjBean_Update(Actor* thisx, GlobalContext* globalCtx); -#if 0 +void func_80937C10(ObjBean* this); +void func_80937C24(ObjBean* this); +void func_80937CA0(ObjBean* this); +void func_80937CE4(ObjBean* this); +void func_80937D54(ObjBean* this); +void func_80937DD8(ObjBean* this); +void func_80937DEC(ObjBean* this, GlobalContext* globalCtx); +void func_80937FB0(ObjBean* this); +void func_80937FC8(ObjBean* this, GlobalContext* globalCtx); +void func_809381B0(ObjBean* this); +void func_809381C4(ObjBean* this, GlobalContext* globalCtx); +void func_80938284(ObjBean* this); +void func_80938298(ObjBean* this, GlobalContext* globalCtx); +void func_8093833C(ObjBean* this); +void func_80938358(ObjBean* this, GlobalContext* globalCtx); +void func_809383B4(ObjBean* this); +void func_809383D0(ObjBean* this, GlobalContext* globalCtx); +void func_80938408(ObjBean* this); +void func_80938444(ObjBean* this, GlobalContext* globalCtx); +void func_809384E8(ObjBean* this); +void func_80938504(ObjBean* this, GlobalContext* globalCtx); +void func_80938588(ObjBean* this); +void func_809385A8(ObjBean* this, GlobalContext* globalCtx); +void func_80938670(ObjBean* this); +void func_8093868C(ObjBean* this, GlobalContext* globalCtx); +void func_80938704(ObjBean* this); +void func_80938728(ObjBean* this, GlobalContext* globalCtx); +void func_8093876C(ObjBean* this); +void func_80938780(ObjBean* this, GlobalContext* globalCtx); +void func_80938804(ObjBean* this); +void func_80938834(ObjBean* this, GlobalContext* globalCtx); +void func_80938874(ObjBean* this); +void func_809388A8(ObjBean* this, GlobalContext* globalCtx); +void func_8093892C(ObjBean* this); +void func_80938958(ObjBean* this, GlobalContext* globalCtx); +void func_809389BC(ObjBean* this, GlobalContext* globalCtx); +void func_80938A14(ObjBean* this); +void func_80938A5C(ObjBean* this, GlobalContext* globalCtx); +void func_80938AA4(ObjBean* this); +void func_80938AD8(ObjBean* this, GlobalContext* globalCtx); +void func_80938C1C(Actor* thisx, GlobalContext* globalCtx); +void func_80938E00(Actor* thisx, GlobalContext* globalCtx); +void func_80938F50(Actor* thisx, GlobalContext* globalCtx); + const ActorInit Obj_Bean_InitVars = { ACTOR_OBJ_BEAN, ACTORCAT_BG, @@ -27,160 +72,895 @@ const ActorInit Obj_Bean_InitVars = { (ActorFunc)NULL, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80938FA0 = { - { COLTYPE_NONE, AT_NONE, AC_NONE, OC1_ON | OC1_TYPE_PLAYER, OC2_TYPE_2, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_NONE, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit1 = { + { + COLTYPE_NONE, + AT_NONE, + AC_NONE, + OC1_ON | OC1_TYPE_PLAYER, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00000000, 0x00, 0x00 }, + { 0x00000000, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_NONE, + OCELEM_ON, + }, { 64, 30, -31, { 0, 0, 0 } }, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80938FCC = { - { COLTYPE_NONE, AT_NONE, AC_ON | AC_TYPE_OTHER, OC1_NONE, OC2_TYPE_2, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0xF7CFFFFF, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE, }, +static ColliderCylinderInit sCylinderInit2 = { + { + COLTYPE_NONE, + AT_NONE, + AC_ON | AC_TYPE_OTHER, + OC1_NONE, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0x00000000, 0x00, 0x00 }, + { 0xF7CFFFFF, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_NONE, + }, { 10, 10, 0, { 0, 0, 0 } }, }; -// static InitChainEntry sInitChain[] = { -static InitChainEntry D_8093902C[] = { +static Vec2f D_80938FF8[4] = { + { 3.0f, 0.3f }, + { 10.0f, 0.5f }, + { 30.0f, 0.5f }, + { 3.0f, 0.3f }, +}; + +void func_80936CF0(ObjBean* this, GlobalContext* globalCtx) { + Vec3f sp24; + s32 sp20; + + sp24.x = this->dyna.actor.world.pos.x; + sp24.y = this->dyna.actor.world.pos.y + 29.999998f; + sp24.z = this->dyna.actor.world.pos.z; + this->dyna.actor.floorHeight = + BgCheck_EntityRaycastFloor5(&globalCtx->colCtx, &this->dyna.actor.floorPoly, &sp20, &this->dyna.actor, &sp24); +} + +s32 func_80936D58(ObjBean* this, GlobalContext* globalCtx) { + static Vec3f D_80939018 = { 0.0f, 30.0f, 0.0f }; + s32 pad; + s32 spB8; + Vec3f spAC; + Vec3f spA0; + Vec3f sp94; + Vec3f sp88; + MtxF sp48; + + Matrix_RotateY(this->dyna.actor.shape.rot.y, MTXMODE_NEW); + Matrix_InsertXRotation_s(this->dyna.actor.shape.rot.x, MTXMODE_APPLY); + Matrix_InsertZRotation_s(this->dyna.actor.shape.rot.z, MTXMODE_APPLY); + Matrix_MultiplyVector3fByState(&D_80939018, &spAC); + Math_Vec3f_Sum(&this->dyna.actor.world.pos, &spAC, &spA0); + Math_Vec3f_Diff(&this->dyna.actor.world.pos, &spAC, &sp94); + + if (BgCheck_EntityLineTest2(&globalCtx->colCtx, &spA0, &sp94, &sp88, &this->dyna.actor.floorPoly, 1, 1, 1, 1, &spB8, + &this->dyna.actor)) { + this->dyna.actor.world.pos.x = (COLPOLY_GET_NORMAL(this->dyna.actor.floorPoly->normal.x) * 1.9f) + sp88.x; + this->dyna.actor.world.pos.y = (COLPOLY_GET_NORMAL(this->dyna.actor.floorPoly->normal.y) * 1.9f) + sp88.y; + this->dyna.actor.world.pos.z = (COLPOLY_GET_NORMAL(this->dyna.actor.floorPoly->normal.z) * 1.9f) + sp88.z; + func_800C0094(this->dyna.actor.floorPoly, this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &sp48); + Matrix_SetCurrentState(&sp48); + Matrix_RotateY(this->dyna.actor.shape.rot.y, MTXMODE_APPLY); + Matrix_CopyCurrentState(&sp48); + func_8018219C(&sp48, &this->dyna.actor.shape.rot, 0); + return true; + } + return false; +} + +void func_80936F04(ObjBean* this) { + this->unk_1AC = this->unk_1AE = this->unk_1B0 = 0; + this->unk_1C8 = 0.0f; +} + +void func_80936F24(ObjBean* this) { + this->unk_1AC += 0xB6; + this->unk_1AE += 0xFB; + this->unk_1B0 += 0x64; + Math_StepToF(&this->unk_1C8, 2.0f, 0.1f); + this->unk_1CC = (Math_SinS(this->unk_1AC * 3) + Math_SinS(this->unk_1AE * 3)) * this->unk_1C8; + this->unk_1D0 = (Math_CosS(this->unk_1AC * 4) + Math_CosS(this->unk_1AE * 4)) * this->unk_1C8; + this->dyna.actor.scale.z = + ((Math_SinS(this->unk_1B0 * 5) * 0.06f) + (Math_SinS(this->unk_1AE * 8) * 0.01f) + 1.07f) * 0.1f; + this->dyna.actor.scale.x = this->dyna.actor.scale.z; + this->dyna.actor.scale.y = ((Math_CosS(this->unk_1B0 * 10) * 0.2f) + 1.0f) * 0.1f; + this->dyna.actor.shape.rot.y = (this->dyna.actor.home.rot.y + (s32)(Math_SinS(this->unk_1AC * 3) * 1000.0f)) + + (s32)(Math_SinS(this->unk_1B0 * 2) * 2100.0f); +} + +void func_80937130(ObjBean* this) { + this->unk_1AC = this->unk_1AE = this->unk_1B0 = 0; + Actor_SetScale(&this->dyna.actor, 0.0f); +} + +void func_80937160(ObjBean* this) { + this->unk_1AC += 0x384; + if (this->unk_1AC > 0x5FFF) { + this->unk_1AC = 0x5FFF; + } + + this->unk_1AE += 0x258; + if (this->unk_1AE > 0x4000) { + this->unk_1AE = 0x4000; + } + + this->dyna.actor.scale.y = Math_SinS(this->unk_1AC) * 0.16970563f; + this->dyna.actor.scale.x = this->dyna.actor.scale.z = Math_SinS(this->unk_1AE) * 0.10700001f; + Math_StepToF(&this->unk_1CC, 0.0f, 0.1f); + Math_StepToF(&this->unk_1D0, 0.0f, 0.1f); + Math_ScaledStepToS(&this->dyna.actor.shape.rot.y, this->dyna.actor.home.rot.y, 100); +} + +void func_80937238(ObjBean* this) { + this->dyna.actor.world.pos.x = this->unk_1BC.x + this->unk_1CC; + this->dyna.actor.world.pos.y = this->unk_1BC.y; + this->dyna.actor.world.pos.z = this->unk_1BC.z + this->unk_1D0; +} + +void func_80937268(ObjBean* this, GlobalContext* globalCtx) { + this->unk_1D8 = globalCtx->setupPathList[OBJBEAN_GET_3F00(&this->dyna.actor)].count - 1; + this->unk_1DA = 0; + this->unk_1DC = 1; +} + +void func_809372A8(ObjBean* this) { + Math_Vec3s_ToVec3f(&this->unk_1BC, this->unk_1D4); +} + +void func_809372D0(ObjBean* this) { + Actor* actor = &this->dyna.actor; + Vec3f sp38; + f32 sp34; + f32 temp_f2; + f32 temp_f12; + + Math_Vec3s_ToVec3f(&sp38, &this->unk_1D4[this->unk_1DC]); + Math_Vec3f_Diff(&sp38, &this->unk_1BC, &actor->velocity); + + sp34 = Math3D_Vec3fMagnitude(&actor->velocity); + temp_f2 = D_80938FF8[this->unk_1DE].x; + temp_f12 = D_80938FF8[this->unk_1DE].y; + if (sp34 < (actor->speedXZ * 8.0f)) { + temp_f2 = ((temp_f2 - 2.0f) * 0.1f) + 2.0f; + temp_f12 *= 0.4f; + } + + Math_StepToF(&actor->speedXZ, temp_f2, temp_f12); + + if ((actor->speedXZ + 0.05f) < sp34) { + Math_Vec3f_Scale(&actor->velocity, actor->speedXZ / sp34); + this->unk_1BC.x += actor->velocity.x; + this->unk_1BC.y += actor->velocity.y; + this->unk_1BC.z += actor->velocity.z; + } else { + Math_Vec3f_Copy(&this->unk_1BC, &sp38); + this->unk_1DA = this->unk_1DC; + if (this->unk_1DA >= this->unk_1D8) { + this->unk_1DC = 0; + } else { + this->unk_1DC++; + } + actor->speedXZ *= 0.5f; + } +} + +s32 func_80937468(ObjBean* this, GlobalContext* globalCtx) { + Actor* bgActor = globalCtx->actorCtx.actorLists[ACTORCAT_BG].first; + + while (bgActor != NULL) { + if ((bgActor->id == ACTOR_EN_HORSE) && + (Math3D_Vec3fDistSq(&bgActor->world.pos, &this->dyna.actor.world.pos) < SQ(100.0f))) { + return true; + } + bgActor = bgActor->next; + } + + return false; +} + +ObjBean* func_809374F8(ObjBean* this, GlobalContext* globalCtx) { + Actor* bgActor = globalCtx->actorCtx.actorLists[ACTORCAT_BG].first; + s32 params = OBJBEAN_GET_3F80(&this->dyna.actor, 0); + + while (bgActor != NULL) { + if (bgActor->id == ACTOR_OBJ_BEAN) { + s32 params2 = OBJBEAN_GET_C000(bgActor); + + if (!params2 && (bgActor->room == this->dyna.actor.room) && !OBJBEAN_GET_80(bgActor) && + (params == OBJBEAN_GET_7F(bgActor, 0)) && + (Math3D_Vec3fDistSq(&bgActor->world.pos, &this->dyna.actor.world.pos) < SQ(10.0f))) { + break; + } + } + bgActor = bgActor->next; + } + + return (ObjBean*)bgActor; +} + +void func_809375C8(ObjBean* this, GlobalContext* globalCtx) { + ObjBean* bean = func_809374F8(this, globalCtx); + + if (bean != NULL) { + bean->unk_200 = 1; + } +} + +void func_809375F4(ObjBean* this, GlobalContext* globalCtx) { + static Gfx* D_80939024[] = { + gameplay_keep_DL_0527F0, + gameplay_keep_DL_0528B0, + }; + Vec3f spC4; + Vec3f spB8; + f32 temp_f20; + s32 temp_s2; + s16 temp_s1 = 0; + s32 phi_s3; + s32 phi_v0; + s32 i; + + for (i = 0; i < 36; i++) { + temp_s1 += 0x4E20; + temp_f20 = Rand_ZeroOne() * 60.0f; + + spC4.x = (Math_SinS(temp_s1) * temp_f20) + this->dyna.actor.world.pos.x; + spC4.y = this->dyna.actor.world.pos.y; + spC4.z = (Math_CosS(temp_s1) * temp_f20) + this->dyna.actor.world.pos.z; + + spB8.x = Math_SinS(temp_s1) * 3.5f; + spB8.y = Rand_ZeroOne() * 13.0f; + spB8.z = Math_CosS(temp_s1) * 3.5f; + + spB8.x += this->dyna.actor.world.pos.x - this->dyna.actor.prevPos.x; + spB8.y += this->dyna.actor.world.pos.y - this->dyna.actor.prevPos.y; + spB8.z += this->dyna.actor.world.pos.z - this->dyna.actor.prevPos.z; + + temp_s2 = (s32)(Rand_ZeroOne() * 180.0f) + 30; + + phi_v0 = 0x40; + if (temp_s2 < 0x5A) { + phi_s3 = -0x50; + if (Rand_ZeroOne() < 0.1f) { + phi_v0 = 0x60; + } else { + phi_v0 = 0x40; + } + } else { + phi_s3 = -100; + phi_v0 = 0x40; + } + EffectSsKakera_Spawn(globalCtx, &spC4, &spB8, &spC4, phi_s3, phi_v0, 40, 3, 0, temp_s2, 0, 0, + (temp_s2 >> 3) + 40, -1, 1, D_80939024[i & 1]); + } +} + +static InitChainEntry sInitChain[] = { ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE), ICHAIN_F32(uncullZoneForward, 2500, ICHAIN_CONTINUE), ICHAIN_F32(uncullZoneScale, 200, ICHAIN_CONTINUE), ICHAIN_F32(uncullZoneDownward, 200, ICHAIN_STOP), }; -#endif - -extern ColliderCylinderInit D_80938FA0; -extern ColliderCylinderInit D_80938FCC; -extern InitChainEntry D_8093902C[]; - -extern UNK_TYPE D_06000090; -extern UNK_TYPE D_060004BC; -extern UNK_TYPE D_06002208; - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80936CF0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80936D58.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80936F04.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80936F24.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937130.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937160.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937238.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937268.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809372A8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809372D0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937468.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809374F8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809375C8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809375F4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/ObjBean_Init.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/ObjBean_Destroy.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937B54.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937C10.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937C24.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937C30.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937CA0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937CE4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937D54.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937DD8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937DEC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937FB0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80937FC8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809381B0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809381C4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938284.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938298.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_8093833C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938358.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809383B4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809383D0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938408.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938444.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809384E8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938504.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938588.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809385A8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938670.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_8093868C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938704.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938728.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_8093876C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938780.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938804.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938834.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938874.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809388A8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_8093892C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938958.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938998.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_809389BC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938A14.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938A5C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938AA4.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938AD8.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938C1C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/ObjBean_Update.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938E00.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Bean/func_80938F50.s") +void ObjBean_Init(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + ObjBean* this = THIS; + s32 sp2C = OBJBEAN_GET_C000(&this->dyna.actor); + + Actor_ProcessInitChain(&this->dyna.actor, sInitChain); + this->unk_1FE = 0; + this->unk_1B8 = 0.1f; + DynaPolyActor_Init(&this->dyna, 3); + Collider_InitCylinder(globalCtx, &this->collider); + + if ((sp2C == ENOBJBEAN_GET_C000_1) || (sp2C == ENOBJBEAN_GET_C000_2)) { + this->dyna.actor.update = func_80938C1C; + this->dyna.actor.textId = 0xFD; + if (sp2C == ENOBJBEAN_GET_C000_1) { + Collider_SetCylinder(globalCtx, &this->collider, &this->dyna.actor, &sCylinderInit2); + Collider_UpdateCylinder(&this->dyna.actor, &this->collider); + } + this->dyna.actor.flags |= ACTOR_FLAG_10; + func_80937C10(this); + if (!func_80936D58(this, globalCtx)) { + Actor_MarkForDeath(&this->dyna.actor); + } else { + func_800BC154(globalCtx, &globalCtx->actorCtx, &this->dyna.actor, 7); + func_80937DD8(this); + } + } else { + s32 params2 = OBJBEAN_GET_3F00(&this->dyna.actor); + Path* path = &globalCtx->setupPathList[params2]; + + this->unk_1DE = OBJBEAN_GET_3(&this->dyna.actor); + this->dyna.actor.world.rot.z = 0; + this->dyna.actor.home.rot.z = 0; + this->dyna.actor.shape.rot.z = 0; + this->unk_1FE |= 2; + + DynaPolyActor_LoadMesh(globalCtx, &this->dyna, &object_mamenoki_Colheader_0004BC); + Collider_SetCylinder(globalCtx, &this->collider, &this->dyna.actor, &sCylinderInit1); + Collider_UpdateCylinder(&this->dyna.actor, &this->collider); + + this->unk_1D4 = Lib_SegmentedToVirtual(path->points); + + func_80937268(this, globalCtx); + func_809372A8(this); + func_80937238(this); + ActorShape_Init(&this->dyna.actor.shape, 0.0f, ActorShadow_DrawCircle, 8.8f); + func_80936CF0(this, globalCtx); + + if (!OBJBEAN_GET_80(&this->dyna.actor) && Flags_GetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 0)) && + !Flags_GetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 1)) && func_800FE9B4(globalCtx)) { + Flags_SetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 1)); + } + + if (OBJBEAN_GET_80(&this->dyna.actor) || Flags_GetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 1))) { + func_80938804(this); + } else { + func_800C62BC(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId); + func_80938704(this); + } + } +} + +void ObjBean_Destroy(Actor* thisx, GlobalContext* globalCtx) { + ObjBean* this = THIS; + + DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId); + Collider_DestroyCylinder(globalCtx, &this->collider); +} + +void func_80937B54(ObjBean* this) { + Math_StepToS(&this->unk_1EE, this->unk_1F0, this->unk_1F2); + Math_StepToS(&this->unk_1F4, this->unk_1F6, this->unk_1F8); + this->unk_1FA += this->unk_1F4; + this->unk_1FC = 6372.0f - (Math_SinS(this->unk_1FA) * this->unk_1EE); + this->dyna.actor.scale.y = Math_SinS(this->unk_1FC) * 0.17434467f; + this->dyna.actor.scale.x = this->dyna.actor.scale.z = Math_CosS(this->unk_1FC) * 0.12207746f; +} + +void func_80937C10(ObjBean* this) { + this->unk_1E8 = func_80937C24; +} + +void func_80937C24(ObjBean* this) { +} + +void func_80937C30(ObjBean* this) { + this->unk_1E8 = func_80937CA0; + this->unk_1EC = Rand_S16Offset(12, 40); + this->unk_1F0 = Rand_S16Offset(200, 400); + this->unk_1F2 = 20; + this->unk_1F6 = Rand_S16Offset(100, 800); + this->unk_1F8 = 20; +} + +void func_80937CA0(ObjBean* this) { + this->unk_1EC--; + func_80937B54(this); + if (this->unk_1EC < 0) { + func_80937CE4(this); + } +} + +void func_80937CE4(ObjBean* this) { + this->unk_1E8 = func_80937D54; + this->unk_1EC = Rand_S16Offset(30, 4); + this->unk_1F0 = Rand_S16Offset(2000, 1000); + this->unk_1F2 = 200; + this->unk_1F6 = Rand_S16Offset(14000, 6000); + this->unk_1F8 = 4000; +} + +void func_80937D54(ObjBean* this) { + this->unk_1EC--; + if (this->unk_1EC == 14) { + this->unk_1F0 = Rand_S16Offset(200, 400); + this->unk_1F6 = Rand_S16Offset(100, 500); + this->unk_1F8 = 2000; + } + + func_80937B54(this); + + if (this->unk_1EC < 0) { + func_80937C30(this); + } +} + +void func_80937DD8(ObjBean* this) { + this->actionFunc = func_80937DEC; +} + +void func_80937DEC(ObjBean* this, GlobalContext* globalCtx) { + s32 pad; + s32 sp20 = OBJBEAN_GET_C000(&this->dyna.actor); + + if (sp20 == ENOBJBEAN_GET_C000_1) { + s32 pad2; + + if (func_809374F8(this, globalCtx) == NULL) { + this->unk_1FF = false; + } else { + this->unk_1FF = true; + } + } else { + this->unk_1FF = false; + } + + if (this->unk_1FF && !Flags_GetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 1)) && + Flags_GetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 0)) && func_800FE9B4(globalCtx)) { + Flags_SetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 1)); + } + + if (this->unk_1FF && Flags_GetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 1))) { + Actor_MarkForDeath(&this->dyna.actor); + return; + } + + if (sp20 == ENOBJBEAN_GET_C000_2) { + this->dyna.actor.draw = func_80938F50; + } else { + this->dyna.actor.draw = func_80938E00; + } + + if (this->unk_1FF && Flags_GetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 0))) { + this->unk_1FE |= 5; + func_80937C30(this); + } else { + this->unk_1FE |= 1; + func_80937C10(this); + } + + if (Flags_GetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 0))) { + this->unk_1E4 = 5; + } else { + this->unk_1E4 = 0; + } + + func_80937FB0(this); +} + +void func_80937FB0(ObjBean* this) { + this->unk_1E0 = 0; + this->actionFunc = func_80937FC8; +} + +void func_80937FC8(ObjBean* this, GlobalContext* globalCtx) { + this->unk_1E8(this); + + if (Actor_ProcessTalkRequest(&this->dyna.actor, &globalCtx->state)) { + if (Player_GetExchangeItemId(globalCtx) == EXCH_ITEM_2E) { + func_809383B4(this); + Flags_SetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 0)); + } + + if (Flags_GetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 0))) { + this->unk_1E4 = 5; + } else { + s32 pad; + + this->unk_1E4 = 0; + } + } else if (this->unk_1E4 == 1) { + this->unk_1DF = 16; + func_809381B0(this); + } else if (((this->collider.base.acFlags & AC_HIT) && (this->collider.base.ac != NULL) && + (this->collider.base.ac->id == ACTOR_OBJ_AQUA)) || + ((this->unk_1FF != 0) && (this->unk_1FE & 4) && (this->dyna.actor.xzDistToPlayer < 300.0f) && + func_800FE9B4(globalCtx))) { + func_809375C8(this, globalCtx); + Flags_SetSwitch(globalCtx, OBJBEAN_GET_3F80(&this->dyna.actor, 1)); + this->unk_1E4 = 6; + func_80938670(this); + } else if (this->unk_1FF != 0) { + if (this->unk_1FE & 4) { + this->collider.base.acFlags &= ~AC_HIT; + if (this->dyna.actor.xzDistToPlayer < 150.0f) { + CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + } + } else { + func_800B85E0(&this->dyna.actor, globalCtx, 28.0f, 0x2E); + } + } +} + +void func_809381B0(ObjBean* this) { + this->actionFunc = func_809381C4; +} + +void func_809381C4(ObjBean* this, GlobalContext* globalCtx) { + this->unk_1E8(this); + + if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { + ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); + if (this->dyna.actor.cutscene >= 0) { + func_800B7298(globalCtx, &this->dyna.actor, 1); + } + this->unk_1E4 = 2; + func_80938284(this); + } else if (this->unk_1E4 == 4) { + ActorCutscene_Stop(this->dyna.actor.cutscene); + play_sound(NA_SE_SY_ERROR); + this->unk_1E4 = 0; + func_80937FB0(this); + } else { + ActorCutscene_SetIntentToPlay(this->dyna.actor.cutscene); + } +} + +void func_80938284(ObjBean* this) { + this->actionFunc = func_80938298; +} + +void func_80938298(ObjBean* this, GlobalContext* globalCtx) { + this->unk_1E8(this); + + if (this->unk_1E0 >= 3) { + this->unk_1E4 = 3; + Flags_SetSwitch(globalCtx, OBJBEAN_GET_7F(&this->dyna.actor, 0)); + this->unk_1E4 = 5; + func_8093833C(this); + } else if (this->unk_1E4 == 4) { + ActorCutscene_Stop(this->dyna.actor.cutscene); + play_sound(NA_SE_SY_ERROR); + this->unk_1E4 = 0; + func_80937FB0(this); + } +} + +void func_8093833C(ObjBean* this) { + this->actionFunc = func_80938358; + this->unk_1B2 = 4; +} + +void func_80938358(ObjBean* this, GlobalContext* globalCtx) { + this->unk_1E8(this); + + if (this->unk_1B2 <= 0) { + ActorCutscene_Stop(this->dyna.actor.cutscene); + func_80937FB0(this); + } +} + +void func_809383B4(ObjBean* this) { + this->unk_1B2 = 60; + this->actionFunc = func_809383D0; +} + +void func_809383D0(ObjBean* this, GlobalContext* globalCtx) { + if (this->unk_1B2 <= 0) { + this->unk_1FE |= 4; + func_80938408(this); + } +} + +void func_80938408(ObjBean* this) { + Actor_SetScale(&this->dyna.actor, 0.01f); + this->actionFunc = func_80938444; +} + +void func_80938444(ObjBean* this, GlobalContext* globalCtx) { + s32 pad; + s32 sp20 = Math_StepToF(&this->dyna.actor.scale.y, 0.16672663f, 0.01f) & 1; + + sp20 &= Math_StepToF(&this->dyna.actor.scale.x, 0.03569199f, 0.00113f); + + this->dyna.actor.scale.z = this->dyna.actor.scale.x; + if (sp20) { + if (this->unk_1B2 <= 0) { + func_809384E8(this); + } + } else { + this->unk_1B2 = 1; + } + func_800B9010(&this->dyna.actor, NA_SE_PL_PLANT_GROW_UP - SFX_FLAG); +} + +void func_809384E8(ObjBean* this) { + this->unk_1AC = 0x33E9; + this->actionFunc = func_80938504; +} + +void func_80938504(ObjBean* this, GlobalContext* globalCtx) { + this->unk_1AC -= 2400; + this->dyna.actor.scale.y = Math_SinS(this->unk_1AC) * 0.17434467f; + this->dyna.actor.scale.x = this->dyna.actor.scale.z = Math_CosS(this->unk_1AC) * 0.12207746f; + if (this->unk_1AC < 6372) { + func_80938588(this); + } +} + +void func_80938588(ObjBean* this) { + this->unk_1AC = 0; + this->unk_1AE = 3000; + this->actionFunc = func_809385A8; +} + +void func_809385A8(ObjBean* this, GlobalContext* globalCtx) { + s32 pad; + s16 sp22; + + this->unk_1AC += 16000; + this->unk_1AE -= 200; + sp22 = 6372.0f - (Math_SinS(this->unk_1AC) * this->unk_1AE); + this->dyna.actor.scale.y = Math_SinS(sp22) * 0.17434467f; + this->dyna.actor.scale.x = this->dyna.actor.scale.z = Math_CosS(sp22) * 0.12207746f; + if (this->unk_1AE < 0) { + func_80937C30(this); + func_80937FB0(this); + } +} + +void func_80938670(ObjBean* this) { + this->actionFunc = func_8093868C; + this->unk_1B2 = 73; +} + +void func_8093868C(ObjBean* this, GlobalContext* globalCtx) { + if (this->unk_1B2 <= 0) { + Actor_MarkForDeath(&this->dyna.actor); + } else if (this->unk_1B2 <= 20) { + this->dyna.actor.scale.x *= 0.89f; + this->dyna.actor.scale.y *= 0.89f; + this->dyna.actor.scale.z *= 0.89f; + this->unk_1B8 *= 0.89f; + } +} + +void func_80938704(ObjBean* this) { + this->dyna.actor.flags |= ACTOR_FLAG_10; + this->dyna.actor.draw = NULL; + this->actionFunc = func_80938728; +} + +void func_80938728(ObjBean* this, GlobalContext* globalCtx) { + if (this->unk_200 != 0) { + ActorCutscene_SetIntentToPlay(this->dyna.actor.cutscene); + func_8093876C(this); + } +} + +void func_8093876C(ObjBean* this) { + this->actionFunc = func_80938780; +} + +void func_80938780(ObjBean* this, GlobalContext* globalCtx) { + if (ActorCutscene_GetCanPlayNext(this->dyna.actor.cutscene)) { + ActorCutscene_StartAndSetUnkLinkFields(this->dyna.actor.cutscene, &this->dyna.actor); + if (this->dyna.actor.cutscene >= 0) { + func_800B7298(globalCtx, &this->dyna.actor, 1); + } + this->unk_1B4 = 36; + func_80937130(this); + func_80938AA4(this); + } else { + ActorCutscene_SetIntentToPlay(this->dyna.actor.cutscene); + } +} + +void func_80938804(ObjBean* this) { + this->dyna.actor.flags &= ~ACTOR_FLAG_10; + this->dyna.actor.draw = func_80938E00; + this->actionFunc = func_80938834; +} + +void func_80938834(ObjBean* this, GlobalContext* globalCtx) { + if (DynaPolyActor_IsInRidingMovingState(&this->dyna)) { + func_80938874(this); + } + func_80936F24(this); +} + +void func_80938874(ObjBean* this) { + this->actionFunc = func_809388A8; + this->dyna.actor.draw = func_80938E00; + this->dyna.actor.flags |= ACTOR_FLAG_10; + this->dyna.actor.speedXZ = 0.0f; +} + +void func_809388A8(ObjBean* this, GlobalContext* globalCtx) { + func_809372D0(this); + if (this->unk_1DA == this->unk_1D8) { + func_80937268(this, globalCtx); + func_809372A8(this); + func_8093892C(this); + } else if (DynaPolyActor_IsInRidingMovingState(&this->dyna)) { + func_800B9010(&this->dyna.actor, NA_SE_PL_PLANT_MOVE - SFX_FLAG); + } + func_80936F24(this); +} + +void func_8093892C(ObjBean* this) { + this->dyna.actor.flags |= ACTOR_FLAG_10; + this->dyna.actor.draw = func_80938E00; + this->actionFunc = func_80938958; +} + +void func_80938958(ObjBean* this, GlobalContext* globalCtx) { + if (!DynaPolyActor_IsInRidingRotatingState(&this->dyna)) { + func_80938804(this); + } + func_80936F24(this); +} + +void func_80938998(ObjBean* this) { + this->dyna.actor.flags |= ACTOR_FLAG_10; + this->dyna.actor.draw = NULL; + this->actionFunc = func_809389BC; +} + +void func_809389BC(ObjBean* this, GlobalContext* globalCtx) { + if (!DynaPolyActor_IsInRidingMovingState(&this->dyna)) { + func_80937268(this, globalCtx); + func_809372A8(this); + func_80937238(this); + func_80938A14(this); + } +} + +void func_80938A14(ObjBean* this) { + this->dyna.actor.draw = NULL; + this->dyna.actor.flags |= ACTOR_FLAG_10; + this->unk_1B2 = 100; + func_80937130(this); + this->actionFunc = func_80938A5C; +} + +void func_80938A5C(ObjBean* this, GlobalContext* globalCtx) { + if (func_80937468(this, globalCtx)) { + this->unk_1B2 = 100; + } else if (this->unk_1B2 <= 0) { + func_80938AA4(this); + } +} + +void func_80938AA4(ObjBean* this) { + this->dyna.actor.flags |= ACTOR_FLAG_10; + this->dyna.actor.draw = func_80938E00; + this->unk_1B2 = 30; + this->actionFunc = func_80938AD8; +} + +void func_80938AD8(ObjBean* this, GlobalContext* globalCtx) { + s32 pad; + s32 sp30 = func_80937468(this, globalCtx); + + func_80937160(this); + if (this->unk_1B2 == 25) { + Actor_PlaySfxAtPos(&this->dyna.actor, NA_SE_PL_PLANT_GROW_BIG); + } + + if (sp30 != 0) { + func_800C6314(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId); + } else { + func_800C6314(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId); + } + + if (this->dyna.actor.xzDistToPlayer < 74.0f) { + Player* player = GET_PLAYER(globalCtx); + f32 sp28 = 74.0f - this->dyna.actor.xzDistToPlayer; + f32 sin; + f32 cos; + + if (sp28 > 8.0f) { + sp28 = 8.0f; + } + + sin = Math_SinS(this->dyna.actor.yawTowardsPlayer) * sp28; + cos = Math_CosS(this->dyna.actor.yawTowardsPlayer) * sp28; + + player->actor.world.pos.x += sin; + player->actor.world.pos.z += cos; + } + + if ((this->unk_1B2 <= 0) && (sp30 == 0)) { + func_80936F04(this); + func_80938804(this); + } +} + +void func_80938C1C(Actor* thisx, GlobalContext* globalCtx) { + ObjBean* this = THIS; + + if (this->unk_1B2 > 0) { + this->unk_1B2--; + } + + if (this->unk_1DF > 0) { + this->unk_1DF--; + if (this->unk_1DF == 0) { + play_sound(NA_SE_SY_TRE_BOX_APPEAR); + } + } + + this->actionFunc(this, globalCtx); +} + +void ObjBean_Update(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + ObjBean* this = THIS; + + if (this->unk_1B2 > 0) { + this->unk_1B2--; + } + + this->actionFunc(this, globalCtx); + + if (this->unk_1B4 > 0) { + this->unk_1B4--; + if (this->unk_1B4 == 0) { + ActorCutscene_Stop(this->dyna.actor.cutscene); + } + } + + if (this->dyna.actor.draw != NULL) { + func_80937238(this); + if (this->dyna.actor.xzDistToPlayer < 150.0f) { + this->collider.dim.radius = (this->dyna.actor.scale.x * 640.0f) + 0.5f; + Collider_UpdateCylinder(&this->dyna.actor, &this->collider); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider.base); + } + func_80936CF0(this, globalCtx); + this->dyna.actor.shape.shadowDraw = ActorShadow_DrawCircle; + this->dyna.actor.shape.shadowScale = this->dyna.actor.scale.x * 88.0f; + if (func_80937468(this, globalCtx)) { + func_809375F4(this, globalCtx); + func_800C62BC(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId); + func_80938998(this); + } + } else { + this->dyna.actor.shape.shadowDraw = NULL; + } + Actor_SetFocus(&this->dyna.actor, 6.0f); +} + +void func_80938E00(Actor* thisx, GlobalContext* globalCtx) { + ObjBean* this = THIS; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + func_8012C28C(globalCtx->state.gfxCtx); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (this->unk_1FE & 4) { + gSPDisplayList(POLY_OPA_DISP++, object_mamenoki_DL_000090); + } + + if (this->unk_1FE & 2) { + gSPDisplayList(POLY_OPA_DISP++, object_mamenoki_DL_0002D0); + } + + if (this->unk_1FE & 1) { + Matrix_SetStateRotationAndTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, + this->dyna.actor.world.pos.z, &this->dyna.actor.shape.rot); + Matrix_Scale(this->unk_1B8, this->unk_1B8, this->unk_1B8, MTXMODE_APPLY); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, object_mamenoki_DL_000530); + } + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} + +void func_80938F50(Actor* thisx, GlobalContext* globalCtx) { + ObjBean* this = THIS; + + Gfx_DrawDListXlu(globalCtx, object_mamenoki_DL_002208); +} diff --git a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h index 5156011ff..da6e4a22c 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h @@ -6,9 +6,16 @@ struct ObjBean; typedef void (*ObjBeanActionFunc)(struct ObjBean*, GlobalContext*); +typedef void (*ObjBeanUnkFunc)(struct ObjBean*); +#define OBJBEAN_GET_7F(thisx, x) (((thisx)->params + (x)) & 0x7F) +#define OBJBEAN_GET_80(thisx) (((thisx)->params >> 7) & 1) +#define OBJBEAN_GET_3F00(thisx) (((thisx)->params >> 8) & 0x3F) +#define OBJBEAN_GET_3F80(thisx, x) ((((thisx)->params >> 7) + (x)) & 0x7F) #define OBJBEAN_GET_C000(thisx) (((thisx)->params >> 0xE) & 3) +#define OBJBEAN_GET_3(thisx) ((thisx)->home.rot.z & 3) + enum { /* 0x00 */ ENOBJBEAN_GET_C000_0, /* 0x01 */ ENOBJBEAN_GET_C000_1, @@ -16,13 +23,40 @@ enum { }; typedef struct ObjBean { - /* 0x0000 */ Actor actor; - /* 0x0144 */ char unk_144[0x18]; - /* 0x015C */ ObjBeanActionFunc actionFunc; - /* 0x0160 */ char unk_160[0x80]; - /* 0x01E0 */ s8 unk_1E0; - /* 0x01E4 */ s32 unk_1E4; - /* 0x01E8 */ char unk_1E8[0x1C]; + /* 0x000 */ DynaPolyActor dyna; + /* 0x15C */ ObjBeanActionFunc actionFunc; + /* 0x160 */ ColliderCylinder collider; + /* 0x1AC */ s16 unk_1AC; + /* 0x1AE */ s16 unk_1AE; + /* 0x1B0 */ s16 unk_1B0; + /* 0x1B2 */ s16 unk_1B2; + /* 0x1B4 */ s8 unk_1B4; + /* 0x1B8 */ f32 unk_1B8; + /* 0x1BC */ Vec3f unk_1BC; + /* 0x1C8 */ f32 unk_1C8; + /* 0x1CC */ f32 unk_1CC; + /* 0x1D0 */ f32 unk_1D0; + /* 0x1D4 */ Vec3s* unk_1D4; + /* 0x1D8 */ s16 unk_1D8; + /* 0x1DA */ s16 unk_1DA; + /* 0x1DC */ s16 unk_1DC; + /* 0x1DE */ s8 unk_1DE; + /* 0x1DF */ s8 unk_1DF; + /* 0x1E0 */ s8 unk_1E0; + /* 0x1E4 */ s32 unk_1E4; + /* 0x1E8 */ ObjBeanUnkFunc unk_1E8; + /* 0x1EC */ s16 unk_1EC; + /* 0x1EE */ s16 unk_1EE; + /* 0x1F0 */ s16 unk_1F0; + /* 0x1F2 */ s16 unk_1F2; + /* 0x1F4 */ s16 unk_1F4; + /* 0x1F6 */ s16 unk_1F6; + /* 0x1F8 */ s16 unk_1F8; + /* 0x1FA */ s16 unk_1FA; + /* 0x1FC */ s16 unk_1FC; + /* 0x1FE */ u8 unk_1FE; + /* 0x1FF */ u8 unk_1FF; + /* 0x200 */ u8 unk_200; } ObjBean; // size = 0x204 extern const ActorInit Obj_Bean_InitVars; diff --git a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c index 379d78c52..b7f0a8105 100644 --- a/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c +++ b/src/overlays/actors/ovl_Obj_Ghaka/z_obj_ghaka.c @@ -98,7 +98,7 @@ void func_80B3C4E0(ObjGhaka* this, GlobalContext* globalCtx) { if (talkState == 5) { if (func_80147624(globalCtx)) { - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_80B3C260(this); } @@ -117,7 +117,7 @@ void func_80B3C4E0(ObjGhaka* this, GlobalContext* globalCtx) { break; case 2: func_8019F230(); - globalCtx->msgCtx.unk11F22 = 0x43; + globalCtx->msgCtx.msgMode = 0x43; globalCtx->msgCtx.unk12023 = 4; func_80B3C260(this); } diff --git a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c index 57092079a..6a4e8ce27 100644 --- a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c +++ b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c @@ -5,8 +5,10 @@ */ #include "z_obj_ice_poly.h" +#include "overlays/actors/ovl_Obj_Aqua/z_obj_aqua.h" +#include "objects/gameplay_keep/gameplay_keep.h" -#define FLAGS 0x00000010 +#define FLAGS ACTOR_FLAG_10 #define THIS ((ObjIcePoly*)thisx) @@ -15,11 +17,11 @@ void ObjIcePoly_Destroy(Actor* thisx, GlobalContext* globalCtx); void ObjIcePoly_Update(Actor* thisx, GlobalContext* globalCtx); void ObjIcePoly_Draw(Actor* thisx, GlobalContext* globalCtx); +void func_80931828(ObjIcePoly* this, GlobalContext* globalCtx); void func_80931A38(ObjIcePoly* this, GlobalContext* globalCtx); void func_80931E58(ObjIcePoly* this, GlobalContext* globalCtx); void func_80931EEC(ObjIcePoly* this, GlobalContext* globalCtx); -#if 0 const ActorInit Obj_Ice_Poly_InitVars = { ACTOR_OBJ_ICE_POLY, ACTORCAT_ITEMACTION, @@ -32,37 +34,327 @@ const ActorInit Obj_Ice_Poly_InitVars = { (ActorFunc)ObjIcePoly_Draw, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_80932320 = { - { COLTYPE_HARD, AT_ON | AT_TYPE_ENEMY, AC_ON | AC_HARD | AC_TYPE_PLAYER, OC1_ON | OC1_TYPE_ALL, OC2_TYPE_2, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK0, { 0xF7CFFFFF, 0x02, 0x00 }, { 0xF7CFF7FF, 0x00, 0x00 }, TOUCH_ON | TOUCH_SFX_NONE, BUMP_ON, OCELEM_ON, }, +static ColliderCylinderInit sCylinderInit1 = { + { + COLTYPE_HARD, + AT_ON | AT_TYPE_ENEMY, + AC_ON | AC_HARD | AC_TYPE_PLAYER, + OC1_ON | OC1_TYPE_ALL, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK0, + { 0xF7CFFFFF, 0x02, 0x00 }, + { 0xF7CFF7FF, 0x00, 0x00 }, + TOUCH_ON | TOUCH_SFX_NONE, + BUMP_ON, + OCELEM_ON, + }, { 50, 105, 0, { 0, 0, 0 } }, }; -// static ColliderCylinderInit sCylinderInit = { -static ColliderCylinderInit D_8093234C = { - { COLTYPE_NONE, AT_NONE, AC_ON | AC_TYPE_PLAYER | AC_TYPE_OTHER, OC1_NONE, OC2_TYPE_2, COLSHAPE_CYLINDER, }, - { ELEMTYPE_UNK5, { 0xF7CFFFFF, 0x00, 0x00 }, { 0x00000800, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE, }, +static ColliderCylinderInit sCylinderInit2 = { + { + COLTYPE_NONE, + AT_NONE, + AC_ON | AC_TYPE_PLAYER | AC_TYPE_OTHER, + OC1_NONE, + OC2_TYPE_2, + COLSHAPE_CYLINDER, + }, + { + ELEMTYPE_UNK5, + { 0xF7CFFFFF, 0x00, 0x00 }, + { 0x00000800, 0x00, 0x00 }, + TOUCH_NONE | TOUCH_SFX_NORMAL, + BUMP_ON, + OCELEM_NONE, + }, { 65, 105, 0, { 0, 0, 0 } }, }; -#endif +static Color_RGBA8 D_80932378 = { 250, 250, 250, 255 }; +static Color_RGBA8 D_8093237C = { 180, 180, 180, 255 }; -extern ColliderCylinderInit D_80932320; -extern ColliderCylinderInit D_8093234C; +void ObjIcePoly_Init(Actor* thisx, GlobalContext* globalCtx) { + ObjIcePoly* this = THIS; + s32 i; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/ObjIcePoly_Init.s") + this->unk_149 = OBJICEPOLY_GET_FF00(thisx); + thisx->params &= 0xFF; + thisx->uncullZoneForward = 5600.0f; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/ObjIcePoly_Destroy.s") + Actor_SetScale(thisx, thisx->params * 0.01f); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/func_80931828.s") + for (i = 0; i < ARRAY_COUNT(this->colliders1); i++) { + Collider_InitAndSetCylinder(globalCtx, &this->colliders1[i], thisx, &sCylinderInit1); + Collider_InitAndSetCylinder(globalCtx, &this->colliders2[i], thisx, &sCylinderInit2); + Collider_UpdateCylinder(thisx, &this->colliders1[i]); + Collider_UpdateCylinder(thisx, &this->colliders2[i]); + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/func_80931A38.s") + this->colliders1[0].dim.radius = thisx->scale.x * 48.0f; + this->colliders1[0].dim.height = thisx->scale.y * 58.0f; + this->colliders2[0].dim.height = this->colliders1[0].dim.height; + this->colliders2[0].dim.radius = this->colliders1[0].dim.radius + 17; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/func_80931E58.s") + this->colliders1[1].dim.radius = thisx->scale.x * 23.0f; + this->colliders1[1].dim.height = thisx->scale.y * 50.0f; + this->colliders2[1].dim.radius = this->colliders1[1].dim.radius; + this->colliders2[1].dim.height = this->colliders1[1].dim.height; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/func_80931EEC.s") + this->colliders1[1].dim.yShift = this->colliders1[0].dim.height; + this->colliders2[1].dim.yShift = this->colliders1[1].dim.yShift; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/ObjIcePoly_Update.s") + thisx->colChkInfo.mass = MASS_IMMOVABLE; + this->unk_148 = 255; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Ice_Poly/ObjIcePoly_Draw.s") + Actor_SetFocus(thisx, thisx->scale.y * 30.0f); + + thisx->shape.rot.x = 0x500; + thisx->shape.rot.z = -0x500; + + if (((this->unk_149 != OBJICEPOLY_FF_FF) && Flags_GetSwitch(globalCtx, this->unk_149)) || + ((globalCtx->sceneNum == SCENE_KAJIYA) && (gSaveContext.save.weekEventReg[33] & 0x80))) { + Actor_MarkForDeath(thisx); + return; + } + + this->actionFunc = func_80931A38; +} + +void ObjIcePoly_Destroy(Actor* thisx, GlobalContext* globalCtx) { + ObjIcePoly* this = THIS; + s32 i; + + for (i = 0; i < ARRAY_COUNT(this->colliders1); i++) { + Collider_DestroyCylinder(globalCtx, &this->colliders1[i]); + Collider_DestroyCylinder(globalCtx, &this->colliders2[i]); + } +} + +void func_80931828(ObjIcePoly* this, GlobalContext* globalCtx) { + static Color_RGBA8 D_80932380 = { 170, 255, 255, 255 }; + static Color_RGBA8 D_80932384 = { 0, 50, 100, 255 }; + static Vec3f D_80932388 = { 0.0f, -1.0f, 0.0f }; + f32 temp; + Vec3f spA0; + Vec3f sp94; + f32 sp90; + s32 i; + CollisionPoly* sp88; + + spA0.x = this->actor.world.pos.x; + spA0.y = (this->colliders1[0].dim.height * 2) + this->actor.world.pos.y; + spA0.z = this->actor.world.pos.z; + + sp90 = BgCheck_EntityRaycastFloor1(&globalCtx->colCtx, &sp88, &spA0); + if (sp90 < this->actor.world.pos.y) { + sp90 = this->actor.world.pos.y; + } + temp = spA0.y - sp90; + + for (i = 0; i < 30; i++) { + sp94.x = randPlusMinusPoint5Scaled(12.0f); + sp94.y = Rand_ZeroFloat(15.0f); + sp94.z = randPlusMinusPoint5Scaled(12.0f); + + spA0.x = (this->colliders1[0].dim.radius * (sp94.x * (1.0f / 12))) + this->actor.world.pos.x; + spA0.z = (this->colliders1[0].dim.radius * (sp94.z * (1.0f / 12))) + this->actor.world.pos.z; + spA0.y = Rand_ZeroFloat(temp) + sp90; + EffectSsEnIce_Spawn(globalCtx, &spA0, (Rand_ZeroFloat(0.4f) + 0.3f) * this->actor.scale.x, &sp94, &D_80932388, + &D_80932380, &D_80932384, 40); + } +} + +void func_80931A38(ObjIcePoly* this, GlobalContext* globalCtx) { + s32 pad; + Player* player = GET_PLAYER(globalCtx); + Vec3f sp6C; + s32 i; + s32 pad2; + s32 phi_v0; + s32 pad3; + f32 sp58; + + if (!(player->stateFlags2 & 0x4000) && (this->unk_14A != 0)) { + this->unk_14A--; + } + + if ((this->colliders1[0].base.atFlags & AT_HIT) || (this->colliders1[1].base.atFlags & AT_HIT)) { + this->unk_14A = 40; + this->colliders1[0].base.atFlags &= ~AT_HIT; + this->colliders1[1].base.atFlags &= ~AT_HIT; + } + + if (((this->colliders2[0].base.acFlags & AC_HIT) && + ((this->colliders2[0].base.ac == NULL) || + ((this->colliders2[0].base.ac->id != ACTOR_OBJ_AQUA) && + (this->colliders2[0].info.acHitInfo->toucher.dmgFlags == 0x800)) || + ((this->colliders2[0].base.ac->id == ACTOR_OBJ_AQUA) && + (this->colliders2[0].base.ac->params == OBJAQUA_1)))) || + ((this->colliders2[1].base.acFlags & AC_HIT) && + ((this->colliders2[1].base.ac == NULL) || + ((this->colliders2[1].base.ac->id != ACTOR_OBJ_AQUA) && + (this->colliders2[1].info.acHitInfo->toucher.dmgFlags == 0x800)) || + ((this->colliders2[1].base.ac->id == ACTOR_OBJ_AQUA) && + (this->colliders2[1].base.ac->params == OBJAQUA_1))))) { + ActorCutscene_SetIntentToPlay(this->actor.cutscene); + this->unk_14A = 0; + this->actionFunc = func_80931E58; + this->actor.focus.rot.y = this->actor.yawTowardsPlayer; + + if (globalCtx->sceneNum == SCENE_00KEIKOKU) { + Actor* actor = NULL; + + do { + actor = SubS_FindActor(globalCtx, actor, ACTORCAT_ITEMACTION, ACTOR_OBJ_ICE_POLY); + if (actor != NULL) { + if ((&this->actor != actor) && (&this->actor != actor)) { + ((ObjIcePoly*)actor)->unk_14A = 0; + ((ObjIcePoly*)actor)->actionFunc = func_80931E58; + } + actor = actor->next; + } + } while (actor != NULL); + } + } else if ((this->unk_149 != OBJICEPOLY_FF_FF) && Flags_GetSwitch(globalCtx, this->unk_149)) { + ActorCutscene_SetIntentToPlay(this->actor.cutscene); + this->unk_14A = 1; + this->actionFunc = func_80931E58; + } else { + if ((this->actor.parent != NULL) && (this->actor.parent->update != NULL)) { + this->actor.parent->freezeTimer = 40; + } else { + this->actor.parent = NULL; + } + + if (this->unk_14A == 0) { + CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->colliders1[0].base); + CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->colliders1[1].base); + } + + for (i = 0; i < ARRAY_COUNT(this->colliders1); i++) { + CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->colliders1[i].base); + CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->colliders1[i].base); + CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->colliders2[i].base); + } + } + + if (Rand_ZeroOne() < 0.05f) { + sp58 = Rand_ZeroOne(); + if (Rand_ZeroOne() < 0.5f) { + phi_v0 = -1; + } else { + phi_v0 = 1; + } + sp6C.x = (phi_v0 * (15.0f + (sp58 * 15.0f)) * this->actor.scale.x) + this->actor.world.pos.x; + sp6C.y = (((Rand_ZeroOne() * 90.0f) + 10.0f) * this->actor.scale.y) + this->actor.world.pos.y; + + sp58 = Rand_ZeroOne(); + if (Rand_ZeroOne() < 0.5f) { + phi_v0 = -1; + } else { + phi_v0 = 1; + } + sp6C.z = (phi_v0 * (15.0f + (sp58 * 15.0f)) * this->actor.scale.z) + this->actor.world.pos.z; + + EffectSsKiraKira_SpawnDispersed(globalCtx, &sp6C, &gZeroVec3f, &gZeroVec3f, &D_80932378, &D_8093237C, 2000, 5); + } +} + +void func_80931E58(ObjIcePoly* this, GlobalContext* globalCtx) { + if (ActorCutscene_GetCanPlayNext(this->actor.cutscene)) { + ActorCutscene_StartAndSetUnkLinkFields(this->actor.cutscene, &this->actor); + if (this->unk_14A == 1) { + func_80931828(this, globalCtx); + Actor_MarkForDeath(&this->actor); + } else { + this->unk_14A = 40; + Actor_PlaySfxAtPos(&this->actor, NA_SE_EV_ICE_MELT); + this->actionFunc = func_80931EEC; + } + } else { + ActorCutscene_SetIntentToPlay(this->actor.cutscene); + } +} + +void func_80931EEC(ObjIcePoly* this, GlobalContext* globalCtx) { + Vec3f spAC; + Vec3f spA0; + Vec3f sp94; + f32 temp_f20; + s32 i; + s32 phi_v0; + + spAC.x = 0.0f; + spAC.y = this->actor.scale.y; + spAC.z = 0.0f; + + spA0.x = 0.0f; + spA0.y = this->actor.scale.y; + spA0.z = 0.0f; + + for (i = 0; i < 2; i++) { + temp_f20 = Rand_ZeroOne(); + if (Rand_ZeroOne() < 0.5f) { + phi_v0 = -1; + } else { + phi_v0 = 1; + } + sp94.x = (phi_v0 * (20.0f + (20.0f * temp_f20)) * this->actor.scale.x) + this->actor.world.pos.x; + sp94.y = (Rand_ZeroOne() * this->actor.scale.y * 50.0f) + this->actor.world.pos.y; + + temp_f20 = Rand_ZeroOne(); + if (Rand_ZeroOne() < 0.5f) { + phi_v0 = -1; + } else { + phi_v0 = 1; + } + sp94.z = (phi_v0 * (20.0f + (20.0f * temp_f20)) * this->actor.scale.x) + this->actor.world.pos.z; + + func_800B0DE0(globalCtx, &sp94, &spA0, &spAC, &D_80932378, &D_8093237C, + ((Rand_ZeroOne() * 100.0f) + 350.0f) * this->actor.scale.x, this->actor.scale.x * 20.0f); + } + + if (this->unk_14A != 0) { + this->unk_14A--; + } + + this->actor.scale.y = this->actor.params * 0.01f * (0.5f + (this->unk_14A * 0.0125f)); + this->unk_148 -= 6; + + if (this->unk_14A == 0) { + ActorCutscene_Stop(this->actor.cutscene); + if (this->unk_149 != OBJICEPOLY_FF_FF) { + Flags_SetSwitch(globalCtx, this->unk_149); + } + Actor_MarkForDeath(&this->actor); + } +} + +void ObjIcePoly_Update(Actor* thisx, GlobalContext* globalCtx) { + ObjIcePoly* this = THIS; + + this->actionFunc(this, globalCtx); +} + +void ObjIcePoly_Draw(Actor* thisx, GlobalContext* globalCtx) { + s32 pad; + ObjIcePoly* this = THIS; + + OPEN_DISPS(globalCtx->state.gfxCtx); + + func_8012C2DC(globalCtx->state.gfxCtx); + func_800B8118(&this->actor, globalCtx, 0); + + gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(POLY_XLU_DISP++, 0x08, + Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0, globalCtx->gameplayFrames % 256, 0x20, 0x10, 1, 0, + (globalCtx->gameplayFrames * 2) % 256, 0x40, 0x20)); + gDPSetEnvColor(POLY_XLU_DISP++, 0, 50, 100, this->unk_148); + gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_050D10); + + CLOSE_DISPS(globalCtx->state.gfxCtx); +} diff --git a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h index 6870eccc9..b34866e3c 100644 --- a/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h +++ b/src/overlays/actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.h @@ -7,11 +7,18 @@ struct ObjIcePoly; typedef void (*ObjIcePolyActionFunc)(struct ObjIcePoly*, GlobalContext*); +#define OBJICEPOLY_GET_FF00(thisx) (((thisx)->params >> 8) & 0xFF) + +#define OBJICEPOLY_FF_FF 0xFF + typedef struct ObjIcePoly { /* 0x0000 */ Actor actor; /* 0x0144 */ ObjIcePolyActionFunc actionFunc; /* 0x0148 */ u8 unk_148; - /* 0x0149 */ char unk_149[0x133]; + /* 0x0149 */ u8 unk_149; + /* 0x014A */ s16 unk_14A; + /* 0x014C */ ColliderCylinder colliders1[2]; + /* 0x01E4 */ ColliderCylinder colliders2[2]; } ObjIcePoly; // size = 0x27C extern const ActorInit Obj_Ice_Poly_InitVars; diff --git a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c index e8ec61d28..4832bc01a 100644 --- a/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c +++ b/src/overlays/actors/ovl_Obj_Warpstone/z_obj_warpstone.c @@ -141,7 +141,7 @@ void ObjWarpstone_Update(Actor* thisx, GlobalContext* globalCtx) { } else if ((Message_GetState(&globalCtx->msgCtx) == 4) && (func_80147624(globalCtx))) { if (globalCtx->msgCtx.choiceIndex != 0) { func_8019F208(); - globalCtx->msgCtx.unk11F22 = 0x4D; + globalCtx->msgCtx.msgMode = 0x4D; globalCtx->msgCtx.unk120D6 = 0; globalCtx->msgCtx.unk120D4 = 0; gSaveContext.save.owlSaveLocation = OBJ_WARPSTONE_GET_ID(this); diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 7bd647b78..f2141726a 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2206,7 +2206,7 @@ 0x80123AA4:("func_80123AA4",), 0x80123BD4:("func_80123BD4",), 0x80123C58:("func_80123C58",), - 0x80123C90:("func_80123C90",), + 0x80123C90:("Player_SetEquipmentData",), 0x80123D50:("func_80123D50",), 0x80123DA4:("func_80123DA4",), 0x80123DC0:("func_80123DC0",), @@ -2405,16 +2405,16 @@ 0x8012EAA8:("Room_HandleLoadCallbacks",), 0x8012EBA8:("Room_Draw",), 0x8012EBF8:("func_8012EBF8",), - 0x8012EC80:("func_8012EC80",), - 0x8012ED34:("func_8012ED34",), - 0x8012ED78:("func_8012ED78",), + 0x8012EC80:("Inventory_GetBtnBItem",), + 0x8012ED34:("Inventory_ChangeEquipment",), + 0x8012ED78:("Inventory_DeleteEquipment",), 0x8012EDE8:("Inventory_ChangeUpgrade",), - 0x8012EE34:("func_8012EE34",), - 0x8012EF0C:("func_8012EF0C",), - 0x8012F0EC:("func_8012F0EC",), - 0x8012F1BC:("func_8012F1BC",), - 0x8012F22C:("func_8012F22C",), - 0x8012F278:("func_8012F278",), + 0x8012EE34:("Inventory_IsMapVisible",), + 0x8012EF0C:("Inventory_SetMapVisibility",), + 0x8012F0EC:("Inventory_SaveDekuPlaygroundHighScore",), + 0x8012F1BC:("Inventory_IncrementSkullTokenCount",), + 0x8012F22C:("Inventory_GetSkullTokenCount",), + 0x8012F278:("Inventory_SaveLotteryCodeGuess",), 0x8012F2E0:("Object_Spawn",), 0x8012F3D0:("Object_InitBank",), 0x8012F4FC:("Object_UpdateBank",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 49823cee3..1aa72e4c9 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1369,7 +1369,7 @@ 0x801C2078:("gItemSlots","u8","[80]",0x50), 0x801C20C8:("gItemPrices","UNK_TYPE1","",0x1), 0x801C212C:("gScenesPerRegion","SceneIdList","[]",0x252), - 0x801C2380:("D_801C2380","u16","[]",0x90), + 0x801C2380:("sScenesPerTingleMap","u16","[]",0x90), 0x801C2410:("D_801C2410","UNK_TYPE1","",0x1), 0x801C2650:("tatlMessageFiles","RomFile","[2]",0x10), 0x801C2660:("sceneTextureFiles","RomFile","[9]",0x48), @@ -2232,32 +2232,30 @@ 0x801D1E60:("initialgspUcodeText","UNK_PTR","",0x4), 0x801D1E64:("initialgspUcodeData","UNK_PTR","",0x4), 0x801D1E70:("D_801D1E70","UNK_TYPE1","",0x1), - 0x801D2E80:("D_801D2E80","UNK_TYPE1","",0x1), - 0x801D2F80:("D_801D2F80","UNK_TYPE1","",0x1), - 0x801D3070:("D_801D3070","UNK_TYPE1","",0x1), - 0x801D3700:("D_801D3700","UNK_TYPE1","",0x1), - 0x801D3D90:("D_801D3D90","UNK_TYPE1","",0x1), - 0x801D3F90:("D_801D3F90","UNK_TYPE1","",0x1), - 0x801D4190:("D_801D4190","UNK_TYPE1","",0x1), - 0x801D4390:("D_801D4390","UNK_TYPE1","",0x1), - 0x801D4590:("D_801D4590","UNK_TYPE1","",0x1), + 0x801D2E80:("gLowPassFilterData","UNK_TYPE1","",0x1), + 0x801D2F80:("gHighPassFilterData","UNK_TYPE1","",0x1), + 0x801D3070:("gBandStopFilterData","UNK_TYPE1","",0x1), + 0x801D3700:("gBandPassFilterData","UNK_TYPE1","",0x1), + 0x801D3D90:("gSawtoothWaveSample","UNK_TYPE1","",0x1), + 0x801D3F90:("gTriangleWaveSample","UNK_TYPE1","",0x1), + 0x801D4190:("gSineWaveSample","UNK_TYPE1","",0x1), + 0x801D4390:("gSquareWaveSample","UNK_TYPE1","",0x1), + 0x801D4590:("gWhiteNoiseSample","UNK_TYPE1","",0x1), 0x801D4790:("D_801D4790","UNK_TYPE1","",0x1), - 0x801D4990:("D_801D4990","UNK_TYPE1","",0x1), - 0x801D4B90:("D_801D4B90","UNK_TYPE1","",0x1), - 0x801D4D90:("gWaveSamples","UNK_PTR","",0x4), - 0x801D4D98:("D_801D4D98","UNK_PTR","",0x4), - 0x801D4DB0:("D_801D4DB0","UNK_PTR","",0x4), + 0x801D4990:("gEighthPulseWaveSample","UNK_TYPE1","",0x1), + 0x801D4B90:("gQuarterPulseWaveSample","UNK_TYPE1","",0x1), + 0x801D4D90:("gWaveSamples","s16*","[9]",0x24), 0x801D4DB4:("gBendPitchOneOctaveFrequencies","f32","[256]",0x400), - 0x801D51B4:("D_801D51B4","f32","[256]",0x400), - 0x801D55B4:("D_801D55B4","f32","[128]",0x200), - 0x801D57B4:("D_801D57B4","UNK_TYPE1","",0x1), - 0x801D57C4:("D_801D57C4","UNK_TYPE1","",0x1), - 0x801D57D4:("D_801D57D4","UNK_TYPE1","",0x1), + 0x801D51B4:("gBendPitchTwoSemitonesFrequencies","f32","[256]",0x400), + 0x801D55B4:("gPitchFrequencies","f32","[128]",0x200), + 0x801D57B4:("gDefaultShortNoteVelocityTable","UNK_TYPE1","",0x1), + 0x801D57C4:("gDefaultShortNoteGateTimeTable","UNK_TYPE1","",0x1), + 0x801D57D4:("gDefaultEnvelope","UNK_TYPE1","",0x1), 0x801D57E4:("gZeroNoteSub","UNK_TYPE4","",0x4), 0x801D5804:("gDefaultNoteSub","UNK_TYPE4","",0x4), - 0x801D5824:("gHeadsetPanQuantization","UNK_TYPE2","",0x2), - 0x801D58A2:("D_801D58A2","UNK_TYPE2","",0x2), - 0x801D58AA:("D_801D58AA","UNK_TYPE1","",0x1), + 0x801D5824:("gHeadsetPanQuantization","u16","[64]",0x80), + 0x801D58A4:("D_801D58A4","s32","",0x4), + 0x801D58A8:("D_801D58A8","s16","[64]",0x80), 0x801D5928:("gHeadsetPanVolume","f32","[128]",0x200), 0x801D5B28:("gStereoPanVolume","f32","[128]",0x200), 0x801D5D28:("gDefaultPanVolume","f32","[128]",0x200), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index e1e6075fb..532fff5f4 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -1720,7 +1720,7 @@ asm/non_matchings/code/z_player_lib/func_801239AC.s,func_801239AC,0x801239AC,0x3 asm/non_matchings/code/z_player_lib/func_80123AA4.s,func_80123AA4,0x80123AA4,0x4C asm/non_matchings/code/z_player_lib/func_80123BD4.s,func_80123BD4,0x80123BD4,0x21 asm/non_matchings/code/z_player_lib/func_80123C58.s,func_80123C58,0x80123C58,0xE -asm/non_matchings/code/z_player_lib/func_80123C90.s,func_80123C90,0x80123C90,0x30 +asm/non_matchings/code/z_player_lib/Player_SetEquipmentData.s,Player_SetEquipmentData,0x80123C90,0x30 asm/non_matchings/code/z_player_lib/func_80123D50.s,func_80123D50,0x80123D50,0x15 asm/non_matchings/code/z_player_lib/func_80123DA4.s,func_80123DA4,0x80123DA4,0x7 asm/non_matchings/code/z_player_lib/func_80123DC0.s,func_80123DC0,0x80123DC0,0x34 @@ -1919,16 +1919,16 @@ asm/non_matchings/code/z_room/Room_StartRoomTransition.s,Room_StartRoomTransitio asm/non_matchings/code/z_room/Room_HandleLoadCallbacks.s,Room_HandleLoadCallbacks,0x8012EAA8,0x40 asm/non_matchings/code/z_room/Room_Draw.s,Room_Draw,0x8012EBA8,0x14 asm/non_matchings/code/z_room/func_8012EBF8.s,func_8012EBF8,0x8012EBF8,0x22 -asm/non_matchings/code/code_8012EC80/func_8012EC80.s,func_8012EC80,0x8012EC80,0x2D -asm/non_matchings/code/code_8012EC80/func_8012ED34.s,func_8012ED34,0x8012ED34,0x11 -asm/non_matchings/code/code_8012EC80/func_8012ED78.s,func_8012ED78,0x8012ED78,0x1C +asm/non_matchings/code/code_8012EC80/Inventory_GetBtnBItem.s,Inventory_GetBtnBItem,0x8012EC80,0x2D +asm/non_matchings/code/code_8012EC80/Inventory_ChangeEquipment.s,Inventory_ChangeEquipment,0x8012ED34,0x11 +asm/non_matchings/code/code_8012EC80/Inventory_DeleteEquipment.s,Inventory_DeleteEquipment,0x8012ED78,0x1C asm/non_matchings/code/code_8012EC80/Inventory_ChangeUpgrade.s,Inventory_ChangeUpgrade,0x8012EDE8,0x13 -asm/non_matchings/code/code_8012EC80/func_8012EE34.s,func_8012EE34,0x8012EE34,0x36 -asm/non_matchings/code/code_8012EC80/func_8012EF0C.s,func_8012EF0C,0x8012EF0C,0x78 -asm/non_matchings/code/code_8012EC80/func_8012F0EC.s,func_8012F0EC,0x8012F0EC,0x34 -asm/non_matchings/code/code_8012EC80/func_8012F1BC.s,func_8012F1BC,0x8012F1BC,0x1C -asm/non_matchings/code/code_8012EC80/func_8012F22C.s,func_8012F22C,0x8012F22C,0x13 -asm/non_matchings/code/code_8012EC80/func_8012F278.s,func_8012F278,0x8012F278,0x16 +asm/non_matchings/code/code_8012EC80/Inventory_IsMapVisible.s,Inventory_IsMapVisible,0x8012EE34,0x36 +asm/non_matchings/code/code_8012EC80/Inventory_SetMapVisibility.s,Inventory_SetMapVisibility,0x8012EF0C,0x78 +asm/non_matchings/code/code_8012EC80/Inventory_SaveDekuPlaygroundHighScore.s,Inventory_SaveDekuPlaygroundHighScore,0x8012F0EC,0x34 +asm/non_matchings/code/code_8012EC80/Inventory_IncrementSkullTokenCount.s,Inventory_IncrementSkullTokenCount,0x8012F1BC,0x1C +asm/non_matchings/code/code_8012EC80/Inventory_GetSkullTokenCount.s,Inventory_GetSkullTokenCount,0x8012F22C,0x13 +asm/non_matchings/code/code_8012EC80/Inventory_SaveLotteryCodeGuess.s,Inventory_SaveLotteryCodeGuess,0x8012F278,0x16 asm/non_matchings/code/z_scene/Object_Spawn.s,Object_Spawn,0x8012F2E0,0x3C asm/non_matchings/code/z_scene/Object_InitBank.s,Object_InitBank,0x8012F3D0,0x4B asm/non_matchings/code/z_scene/Object_UpdateBank.s,Object_UpdateBank,0x8012F4FC,0x43 diff --git a/undefined_syms.txt b/undefined_syms.txt index 2881bd48e..30b7873fa 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -2175,14 +2175,6 @@ D_0600033C = 0x0600033C; D_06005948 = 0x06005948; D_06005CF8 = 0x06005CF8; -// ovl_Obj_Bean - -D_06000090 = 0x06000090; -D_060002D0 = 0x060002D0; -D_060004BC = 0x060004BC; -D_06000530 = 0x06000530; -D_06002208 = 0x06002208; - // ovl_Obj_Bigicicle D_060009B0 = 0x060009B0;