From 8cabbb1a2bd282e0a757385aa8d23d710aaafb13 Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Tue, 6 Jun 2023 05:03:02 +1000 Subject: [PATCH 01/10] File Select (1 Non-Matching) (#1158) * Everything below Main OK, and some small ones at the top * 3 more short ones * FileChoose_Main * SelectModeUpdate/Draw * SelectMode update functions done * 2 more small ones * ConfigModeDraw * SetWindowVtx * FileChoose_FadeInMenuElements * Rest of the Config Mode Update Functions * Minor cleanup * FileChoose_UpdateMainMenu * Make xml for title_static * Minor correction * One nasty draw, thanks Synray Co-Authored-By: Synray <31429825+Synray@users.noreply.github.com> * import data * some cleanup * import OoT docs * missed some docs * some progress * FileSelect_SetWindowContentVtx WIP * improve FileSelect_SetWindowContentVtx * match z_file_nameset_NES * cleanup and docs * title static * a few more functions * even more functions * small cleanup * Data Cleanup * 2 more matches * z_file_choose_80807940 OK * cleanup * fix merge master * FileSelect_DrawFileInfo wip * small cleanup * minor * fix merge * match FileSelect_DrawFileInfo * cleanup * fix merge * fix merge * sram cleanup * document select mode * many docs * more docs * more cleanup * small nitpick * consistency * more cleanup * more cleanup * small * small typos * octal bad * pr review * noop * elliptic review * more review * non-matching * oops * more suggestions * keyboard formatting * fix master * sound * padding --------- Co-authored-by: Elliptic Ellipsis Co-authored-by: Synray <31429825+Synray@users.noreply.github.com> --- assets/xml/misc/title_static.xml | 126 + assets/xml/overlays/ovl_file_choose.xml | 19 + include/functions.h | 3 +- include/z64.h | 46 +- include/z64save.h | 59 +- include/z64scene.h | 6 +- spec | 14 +- src/code/graph.c | 2 +- src/code/z_common_data.c | 6 +- src/code/z_demo.c | 21 +- src/code/z_game_dlftbls.c | 2 +- src/code/z_game_over.c | 2 +- src/code/z_lifemeter.c | 4 +- src/code/z_parameter.c | 2 +- src/code/z_play.c | 12 +- src/code/z_scene.c | 4 +- src/code/z_sram_NES.c | 617 ++-- src/code/z_vr_box.c | 4 +- .../actors/ovl_Dm_Char01/z_dm_char01.c | 4 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 8 +- src/overlays/actors/ovl_En_Holl/z_en_holl.c | 2 +- .../actors/ovl_En_Viewer/z_en_viewer.c | 6 +- .../ovl_En_Weather_Tag/z_en_weather_tag.c | 67 +- .../actors/ovl_Obj_Grass/z_obj_grass.c | 1 + .../actors/ovl_player_actor/z_player.c | 4 +- .../ovl_file_choose/z_file_choose.h | 115 - .../ovl_file_choose/z_file_choose_80807940.c | 46 - .../ovl_file_choose/z_file_choose_NES.c | 2547 ++++++++++++++++- .../ovl_file_choose/z_file_copy_erase.c | 1253 ++++++++ .../ovl_file_choose/z_file_nameset_NES.c | 1061 ++++++- .../ovl_file_choose/z_file_nameset_data.c | 17 + .../ovl_file_choose/z_file_select.h | 327 +++ src/overlays/gamestates/ovl_title/z_title.c | 2 +- .../ovl_kaleido_scope/z_kaleido_debug.c | 15 +- .../ovl_kaleido_scope/z_kaleido_scope_NES.c | 15 +- tools/disasm/functions.txt | 178 +- tools/disasm/variables.txt | 106 +- tools/sizes/code_functions.csv | 20 +- 38 files changed, 5951 insertions(+), 792 deletions(-) create mode 100644 assets/xml/misc/title_static.xml create mode 100644 assets/xml/overlays/ovl_file_choose.xml delete mode 100644 src/overlays/gamestates/ovl_file_choose/z_file_choose.h delete mode 100644 src/overlays/gamestates/ovl_file_choose/z_file_choose_80807940.c create mode 100644 src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c create mode 100644 src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c create mode 100644 src/overlays/gamestates/ovl_file_choose/z_file_select.h diff --git a/assets/xml/misc/title_static.xml b/assets/xml/misc/title_static.xml new file mode 100644 index 000000000..5e6cea55f --- /dev/null +++ b/assets/xml/misc/title_static.xml @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/xml/overlays/ovl_file_choose.xml b/assets/xml/overlays/ovl_file_choose.xml new file mode 100644 index 000000000..cac6f3d9d --- /dev/null +++ b/assets/xml/overlays/ovl_file_choose.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/include/functions.h b/include/functions.h index ccf1877e0..7d64745f6 100644 --- a/include/functions.h +++ b/include/functions.h @@ -2218,7 +2218,8 @@ s32 SysFlashrom_IsBusy(void); s32 SysFlashrom_AwaitResult(void); void SysFlashrom_WriteDataSync(void* addr, u32 pageNum, u32 pageCount); -s32 func_80185F90(u32 param_1); +s32 func_80185F90(u32 arg0); + u32 osFlashGetAddr(u32 pageNum); OSPiHandle* osFlashReInit(u8 latency, u8 pulse, u8 pageSize, u8 relDuration, u32 start); void osFlashChange(u32 flashNum); diff --git a/include/z64.h b/include/z64.h index b5597f58c..a83001a01 100644 --- a/include/z64.h +++ b/include/z64.h @@ -273,45 +273,45 @@ typedef struct { /* 0x00 */ u16 unk_0; /* 0x02 */ u16 sceneTimeSpeed; /* 0x04 */ Vec3f sunPos; - /* 0x10 */ u8 unk_10; - /* 0x11 */ u8 unk_11; + /* 0x10 */ u8 skybox1Index; + /* 0x11 */ u8 skybox2Index; /* 0x12 */ u8 unk_12; - /* 0x13 */ u8 unk_13; + /* 0x13 */ u8 skyboxBlend; /* 0x14 */ u8 unk_14; /* 0x15 */ u8 skyboxDisabled; /* 0x16 */ u8 sunMoonDisabled; - /* 0x17 */ u8 unk_17; - /* 0x18 */ u8 unk_18; - /* 0x19 */ u8 unk_19; - /* 0x1A */ u16 unk_1A; + /* 0x17 */ u8 skyboxConfig; + /* 0x18 */ u8 changeSkyboxNextConfig; + /* 0x19 */ u8 changeSkyboxState; + /* 0x1A */ u16 changeSkyboxTimer; /* 0x1C */ u16 unk_1C; - /* 0x1E */ u8 unk_1E; - /* 0x1F */ u8 unk_1F; - /* 0x20 */ u8 unk_20; - /* 0x21 */ u8 unk_21; - /* 0x22 */ u16 unk_22; - /* 0x24 */ u16 unk_24; + /* 0x1E */ u8 lightMode; + /* 0x1F */ u8 lightConfig; + /* 0x20 */ u8 changeLightNextConfig; + /* 0x21 */ u8 changeLightEnabled; + /* 0x22 */ u16 changeLightTimer; + /* 0x24 */ u16 changeDuration; /* 0x26 */ u8 unk_26; /* 0x28 */ LightInfo dirLight1; // sun 1 /* 0x36 */ LightInfo unk_36; // sun 2 - /* 0x44 */ s8 unk_44; - /* 0x48 */ DmaRequest unk_48; - /* 0x68 */ OSMesgQueue unk_68; - /* 0x80 */ OSMesg unk_80; - /* 0x84 */ f32 unk_84; - /* 0x88 */ f32 unk_88; + /* 0x44 */ s8 skyboxDmaState; + /* 0x48 */ DmaRequest dmaRequest; + /* 0x68 */ OSMesgQueue loadQueue; + /* 0x80 */ OSMesg loadMsg; + /* 0x84 */ f32 glareAlpha; + /* 0x88 */ f32 lensFlareAlphaScale; /* 0x8C */ EnvLightSettings lightSettings; /* 0xA8 */ f32 unk_A8; /* 0xAC */ Vec3s windDir; /* 0xB4 */ f32 windSpeed; /* 0xB8 */ u8 numLightSettings; /* 0xBC */ LightSettings* lightSettingsList; - /* 0xC0 */ u8 unk_C0; - /* 0xC1 */ u8 unk_C1; - /* 0xC2 */ u8 unk_C2; + /* 0xC0 */ u8 lightBlendEnabled; + /* 0xC1 */ u8 lightSetting; + /* 0xC2 */ u8 prevLightSetting; /* 0xC3 */ u8 lightSettingOverride; /* 0xC4 */ LightSettings unk_C4; - /* 0xDA */ u16 unk_DA; + /* 0xDA */ u16 lightBlendRateOverride; /* 0xDC */ f32 lightBlend; /* 0xE0 */ u8 unk_E0; /* 0xE1 */ u8 unk_E1; diff --git a/include/z64save.h b/include/z64save.h index fdb99fea0..cea6ffa46 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -10,6 +10,13 @@ struct GameState; struct PlayState; struct FileSelectState; +typedef enum { + /* 0 */ SAVE_AUDIO_STEREO, + /* 1 */ SAVE_AUDIO_MONO, + /* 2 */ SAVE_AUDIO_HEADSET, + /* 3 */ SAVE_AUDIO_SURROUND +} AudioOption; + // TODO: properly name DOWN, RETURN and TOP typedef enum RespawnMode { /* 0 */ RESPAWN_MODE_DOWN, // "RESTART_MODE_DOWN" @@ -157,13 +164,13 @@ typedef enum { #define PICTO_PHOTO_COMPRESSED_SIZE (PICTO_PHOTO_SIZE * 5 / 8) typedef struct SramContext { - /* 0x00 */ u8* readBuff; - /* 0x04 */ u8 *saveBuf; + /* 0x00 */ u8* noFlashSaveBuf; // Never allocated memory + /* 0x04 */ u8* saveBuf; /* 0x08 */ char unk_08[4]; /* 0x0C */ s16 status; /* 0x10 */ u32 curPage; /* 0x14 */ u32 numPages; - /* 0x18 */ OSTime unk_18; + /* 0x18 */ OSTime startWriteOsTime; /* 0x20 */ s16 unk_20; /* 0x22 */ s16 unk_22; /* 0x24 */ s16 unk_24; @@ -226,14 +233,14 @@ typedef struct CycleSceneFlags { typedef struct SaveOptions { /* 0x0 */ u16 optionId; // "option_id" /* 0x2 */ u8 language; // "j_n" - /* 0x3 */ s8 audioSetting; // "s_sound" + /* 0x3 */ u8 audioSetting; // "s_sound" /* 0x4 */ u8 languageSetting; // "language" /* 0x5 */ u8 zTargetSetting; // "z_attention", 0: Switch; 1: Hold } SaveOptions; // size = 0x6 typedef struct SavePlayerData { /* 0x00 */ char newf[6]; // "newf" Will always be "ZELDA3 for a valid save - /* 0x06 */ u16 deaths; // "savect" + /* 0x06 */ u16 threeDayResetCount; // "savect" /* 0x08 */ char playerName[8]; // "player_name" /* 0x10 */ s16 healthCapacity; // "max_life" /* 0x12 */ s16 health; // "now_life" @@ -337,11 +344,11 @@ typedef struct SaveContext { /* 0x3DB4 */ f32 entranceSpeed; // "player_wipe_speedF" /* 0x3DB8 */ u16 entranceSound; // "player_wipe_door_SE" /* 0x3DBA */ u8 unk_3DBA; // "player_wipe_item" - /* 0x3DBB */ u8 unk_3DBB; // "next_walk" + /* 0x3DBB */ u8 retainWeatherMode; // "next_walk" /* 0x3DBC */ s16 dogParams; // OoT leftover. "dog_flag" /* 0x3DBE */ u8 envHazardTextTriggerFlags; // "guide_status" /* 0x3DBF */ u8 showTitleCard; // "name_display" - /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" + /* 0x3DC0 */ s16 nayrusLoveTimer; // remnant of OoT, "shield_magic_timer" /* 0x3DC2 */ u8 unk_3DC2; // "pad1" /* 0x3DC8 */ OSTime postmanTimerStopOsTime; // The osTime when the timer stops for the postman minigame. "get_time" /* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // See the `TimerState` enum. "event_fg" @@ -374,13 +381,13 @@ typedef struct SaveContext { /* 0x3F3A */ u16 minigameScore; // "yabusame_total" /* 0x3F3C */ u16 minigameHiddenScore; // "yabusame_out_ct" /* 0x3F3E */ u8 unk_3F3E; // "no_save" - /* 0x3F3F */ u8 unk_3F3F; // "flash_flag" + /* 0x3F3F */ u8 flashSaveAvailable; // "flash_flag" /* 0x3F40 */ SaveOptions options; - /* 0x3F46 */ u16 unk_3F46; // "NottoriBgm" + /* 0x3F46 */ u16 forcedSeqId; // "NottoriBgm" /* 0x3F48 */ u8 cutsceneTransitionControl; // "fade_go" /* 0x3F4A */ u16 nextCutsceneIndex; // "next_daytime" /* 0x3F4C */ u8 cutsceneTrigger; // "doukidemo" - /* 0x3F4D */ u8 unk_3F4D; // "Kenjya_no" + /* 0x3F4D */ u8 chamberCutsceneNum; // remnant of OoT "Kenjya_no" /* 0x3F4E */ u16 nextDayTime; // "next_zelda_time" /* 0x3F50 */ u8 transFadeDuration; // "fade_speed" /* 0x3F51 */ u8 transWipeSpeed; // "wipe_speed" transition related @@ -1575,28 +1582,28 @@ void Sram_InitDebugSave(void); void Sram_ResetSaveFromMoonCrash(SramContext* sramCtx); void Sram_OpenSave(struct FileSelectState* fileSelect, SramContext* sramCtx); void func_8014546C(SramContext* sramCtx); -void func_801457CC(struct FileSelectState* fileSelect, SramContext* sramCtx); -void func_80146580(struct FileSelectState* fileSelect2, SramContext* sramCtx, s32 fileNum); -void func_80146628(struct FileSelectState* fileSelect2, SramContext* sramCtx); +void func_801457CC(struct GameState* gameState, SramContext* sramCtx); +void Sram_EraseSave(struct FileSelectState* fileSelect2, SramContext* sramCtx, s32 fileNum); +void Sram_CopySave(struct FileSelectState* fileSelect2, SramContext* sramCtx); void Sram_InitSave(struct FileSelectState* fileSelect2, SramContext* sramCtx); -void func_80146DF8(SramContext* sramCtx); +void Sram_WriteSaveOptionsToBuffer(SramContext* sramCtx); void Sram_InitSram(struct GameState* gameState, SramContext* sramCtx); void Sram_Alloc(struct GameState* gameState, SramContext* sramCtx); void Sram_SaveSpecialEnterClockTown(struct PlayState* play); void Sram_SaveSpecialNewDay(struct PlayState* play); -void func_80147008(SramContext* sramCtx, u32 curPage, u32 numPages); -void func_80147020(SramContext* sramCtx); -void func_80147068(SramContext* sramCtx); -void func_80147138(SramContext* sramCtx, s32 curPage, s32 numPages); -void func_80147150(SramContext* sramCtx); -void func_80147198(SramContext* sramCtx); +void Sram_SetFlashPagesDefault(SramContext* sramCtx, u32 curPage, u32 numPages); +void Sram_StartWriteToFlashDefault(SramContext* sramCtx); +void Sram_UpdateWriteToFlashDefault(SramContext* sramCtx); +void Sram_SetFlashPagesOwlSave(SramContext* sramCtx, s32 curPage, s32 numPages); +void Sram_StartWriteToFlashOwlSave(SramContext* sramCtx); +void Sram_UpdateWriteToFlashOwlSave(SramContext* sramCtx); -extern s32 D_801C6798[]; +extern u32 gSramSlotOffsets[]; extern u8 gAmmoItems[]; -extern s32 D_801C67C8[]; -extern s32 D_801C67F0[]; -extern s32 D_801C6818[]; -extern s32 D_801C6840[]; -extern s32 D_801C6850[]; +extern s32 gFlashSaveStartPages[]; +extern s32 gFlashSaveNumPages[]; +extern s32 gFlashSpecialSaveNumPages[]; +extern s32 gFlashOwlSaveStartPages[]; +extern s32 gFlashOwlSaveNumPages[]; #endif diff --git a/include/z64scene.h b/include/z64scene.h index 7f48d8740..5505f08e3 100644 --- a/include/z64scene.h +++ b/include/z64scene.h @@ -130,8 +130,8 @@ typedef struct { /* 0x1 */ u8 data1; /* 0x2 */ UNK_TYPE1 pad2[2]; /* 0x4 */ u8 skyboxId; - /* 0x5 */ u8 unk5; - /* 0x6 */ u8 unk6; + /* 0x5 */ u8 skyboxConfig; + /* 0x6 */ u8 envLightMode; } SCmdSkyboxSettings; // size = 0x7 typedef struct { @@ -719,6 +719,8 @@ typedef enum { */ #define ENTRANCE(scene, spawn) ((((ENTR_SCENE_##scene) & 0x7F) << 9) | (((spawn) & 0x1F) << 4)) +#define ENTR_LOAD_OPENING -1 + /* * Entrances used in cutscene destination. Includes scene layer that's immediately applied to `nextCutsceneIndex` and removed. * See `CutsceneScriptEntry.nextEntrance` diff --git a/spec b/spec index 601a46f40..a3cde9e58 100644 --- a/spec +++ b/spec @@ -664,12 +664,15 @@ endseg beginseg name "ovl_file_choose" compress + include "build/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.o" + include "build/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.o" include "build/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.o" - include "build/src/overlays/gamestates/ovl_file_choose/z_file_choose_80807940.o" include "build/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.o" - include "build/data/ovl_file_choose/ovl_file_choose.data.o" - include "build/data/ovl_file_choose/ovl_file_choose.bss.o" - include "build/data/ovl_file_choose/ovl_file_choose.reloc.o" + #ifdef NON_MATCHING + include "build/src/overlays/gamestates/ovl_file_choose/ovl_file_choose_reloc.o" + #else + include "build/data/ovl_file_choose/ovl_file_choose.reloc.o" + #endif endseg beginseg @@ -8824,7 +8827,8 @@ beginseg name "title_static" compress romalign 0x1000 - include "build/baserom/title_static.o" + include "build/assets/misc/title_static/title_static.o" + number 1 endseg beginseg diff --git a/src/code/graph.c b/src/code/graph.c index bf9067b69..2e104234e 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -2,7 +2,7 @@ #include "buffers.h" #include "system_malloc.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" -#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" +#include "overlays/gamestates/ovl_file_choose/z_file_select.h" #include "overlays/gamestates/ovl_opening/z_opening.h" #include "overlays/gamestates/ovl_select/z_select.h" #include "overlays/gamestates/ovl_title/z_title.h" diff --git a/src/code/z_common_data.c b/src/code/z_common_data.c index 0e682231f..46dfe189e 100644 --- a/src/code/z_common_data.c +++ b/src/code/z_common_data.c @@ -8,10 +8,10 @@ void SaveContext_Init(void) { gSaveContext.save.playerForm = 0; gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; - gSaveContext.unk_3F46 = NA_BGM_GENERAL_SFX; + gSaveContext.forcedSeqId = NA_BGM_GENERAL_SFX; gSaveContext.nextCutsceneIndex = 0xFFEF; gSaveContext.cutsceneTrigger = 0; - gSaveContext.unk_3F4D = 0; + gSaveContext.chamberCutsceneNum = 0; gSaveContext.nextDayTime = 0xFFFF; gSaveContext.skyboxTime = 0; gSaveContext.dogIsLost = true; @@ -19,6 +19,6 @@ void SaveContext_Init(void) { gSaveContext.prevHudVisibility = HUD_VISIBILITY_ALL; gSaveContext.options.language = 1; - gSaveContext.options.audioSetting = 0; + gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO; gSaveContext.options.zTargetSetting = 0; } diff --git a/src/code/z_demo.c b/src/code/z_demo.c index 733ec4bc1..00ee877e9 100644 --- a/src/code/z_demo.c +++ b/src/code/z_demo.c @@ -171,15 +171,15 @@ void CutsceneCmd_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdMisc* cmd) { case CS_MISC_CLOUDY_SKY: if (isFirstFrame) { - play->envCtx.unk_19 = 1; - play->envCtx.unk_17 = 1; - play->envCtx.unk_18 = 0; - play->envCtx.unk_1A = 0x3C; - play->envCtx.unk_21 = 1; - play->envCtx.unk_1F = 0; - play->envCtx.unk_20 = 1; - play->envCtx.unk_24 = 0x3C; - play->envCtx.unk_22 = play->envCtx.unk_24; + play->envCtx.changeSkyboxState = 1; + play->envCtx.skyboxConfig = 1; + play->envCtx.changeSkyboxNextConfig = 0; + play->envCtx.changeSkyboxTimer = 60; + play->envCtx.changeLightEnabled = true; + play->envCtx.lightConfig = 0; + play->envCtx.changeLightNextConfig = 1; + play->envCtx.changeDuration = 60; + play->envCtx.changeLightTimer = play->envCtx.changeDuration; } break; @@ -327,8 +327,7 @@ void CutsceneCmd_Misc(PlayState* play, CutsceneContext* csCtx, CsCmdMisc* cmd) { case CS_MISC_MOON_CRASH_SKYBOX: if (isFirstFrame) { - // skyboxConfig - play->envCtx.unk_17 = 0xD; + play->envCtx.skyboxConfig = 0xD; } break; diff --git a/src/code/z_game_dlftbls.c b/src/code/z_game_dlftbls.c index 1b82705f5..7336b01f6 100644 --- a/src/code/z_game_dlftbls.c +++ b/src/code/z_game_dlftbls.c @@ -1,6 +1,6 @@ #include "global.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" -#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" +#include "overlays/gamestates/ovl_file_choose/z_file_select.h" #include "overlays/gamestates/ovl_opening/z_opening.h" #include "overlays/gamestates/ovl_select/z_select.h" #include "overlays/gamestates/ovl_title/z_title.h" diff --git a/src/code/z_game_over.c b/src/code/z_game_over.c index d0e5e45f2..c3c6819be 100644 --- a/src/code/z_game_over.c +++ b/src/code/z_game_over.c @@ -49,7 +49,7 @@ void GameOver_Update(PlayState* play) { } } - gSaveContext.unk_3DC0 = 2000; + gSaveContext.nayrusLoveTimer = 2000; gSaveContext.save.saveInfo.playerData.tatlTimer = 0; gSaveContext.seqId = (u8)NA_BGM_DISABLED; gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; diff --git a/src/code/z_lifemeter.c b/src/code/z_lifemeter.c index c9bea1669..7226a6719 100644 --- a/src/code/z_lifemeter.c +++ b/src/code/z_lifemeter.c @@ -16,14 +16,14 @@ s16 sBeatingHeartsDDEnv[3]; s16 sHeartsDDPrim[2][3]; s16 sHeartsDDEnv[2][3]; -TexturePtr sHeartTextures[] = { +static TexturePtr sHeartTextures[] = { gHeartFullTex, gHeartQuarterTex, gHeartQuarterTex, gHeartQuarterTex, gHeartQuarterTex, gHeartQuarterTex, gHeartHalfTex, gHeartHalfTex, gHeartHalfTex, gHeartHalfTex, gHeartHalfTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, gHeartThreeQuarterTex, }; -TexturePtr sHeartDDTextures[] = { +static TexturePtr sHeartDDTextures[] = { gDefenseHeartFullTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, gDefenseHeartQuarterTex, gDefenseHeartHalfTex, gDefenseHeartHalfTex, gDefenseHeartHalfTex, diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index 9672b8804..f8f28f4b8 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -147,7 +147,7 @@ s16 D_801BF97C = 255; f32 D_801BF980 = 1.0f; s32 D_801BF984 = 0; -Gfx sScreenFillSetupDL[] = { +static Gfx sScreenFillSetupDL[] = { gsDPPipeSync(), gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), diff --git a/src/code/z_play.c b/src/code/z_play.c index dade44cf6..dd9b6c561 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -7,7 +7,7 @@ #include "z64view.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" #include "overlays/gamestates/ovl_opening/z_opening.h" -#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" +#include "overlays/gamestates/ovl_file_choose/z_file_select.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" s32 gDbgCamEnabled = false; @@ -1036,9 +1036,9 @@ void Play_UpdateMain(PlayState* this) { if (this->sramCtx.status != 0) { if (gSaveContext.save.isOwlSave) { - func_80147198(&this->sramCtx); + Sram_UpdateWriteToFlashOwlSave(&this->sramCtx); } else { - func_80147068(&this->sramCtx); + Sram_UpdateWriteToFlashDefault(&this->sramCtx); } } } @@ -1272,8 +1272,8 @@ void Play_DrawMain(PlayState* this) { if ((this->skyboxId != SKYBOX_NONE) && !this->envCtx.skyboxDisabled) { if ((this->skyboxId == SKYBOX_NORMAL_SKY) || (this->skyboxId == SKYBOX_3)) { Environment_UpdateSkybox(this->skyboxId, &this->envCtx, &this->skyboxCtx); - Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.unk_13, this->view.eye.x, - this->view.eye.y, this->view.eye.z); + Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.skyboxBlend, + this->view.eye.x, this->view.eye.y, this->view.eye.z); } else if (!this->skyboxCtx.skyboxShouldDraw) { Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x, this->view.eye.y, this->view.eye.z); @@ -2217,7 +2217,7 @@ void Play_Init(GameState* thisx) { if (((gSaveContext.gameMode != GAMEMODE_NORMAL) && (gSaveContext.gameMode != GAMEMODE_TITLE_SCREEN)) || (gSaveContext.save.cutsceneIndex >= 0xFFF0)) { - gSaveContext.unk_3DC0 = 0; + gSaveContext.nayrusLoveTimer = 0; Magic_Reset(this); gSaveContext.sceneLayer = (gSaveContext.save.cutsceneIndex & 0xF) + 1; diff --git a/src/code/z_scene.c b/src/code/z_scene.c index 623db6b24..368b4509e 100644 --- a/src/code/z_scene.c +++ b/src/code/z_scene.c @@ -365,8 +365,8 @@ void Scene_LoadAreaTextures(PlayState* play, s32 fileIndex) { // SceneTableEntry Header Command 0x11: Skybox Settings void Scene_CommandSkyboxSettings(PlayState* play, SceneCmd* cmd) { play->skyboxId = cmd->skyboxSettings.skyboxId & 3; - play->envCtx.unk_17 = play->envCtx.unk_18 = cmd->skyboxSettings.unk5; - play->envCtx.unk_1E = cmd->skyboxSettings.unk6; + play->envCtx.skyboxConfig = play->envCtx.changeSkyboxNextConfig = cmd->skyboxSettings.skyboxConfig; + play->envCtx.lightMode = cmd->skyboxSettings.envLightMode; Scene_LoadAreaTextures(play, cmd->skyboxSettings.data1); } diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index f47a8e201..21bfaf7ef 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -1,9 +1,9 @@ #include "prevent_bss_reordering.h" #include "global.h" #include "z64horse.h" -#include "overlays/gamestates/ovl_file_choose/z_file_choose.h" +#include "overlays/gamestates/ovl_file_choose/z_file_select.h" -void func_80146EBC(SramContext* sramCtx, s32 curPage, s32 numPages); +void Sram_SyncWriteToFlash(SramContext* sramCtx, s32 curPage, s32 numPages); void func_80147314(SramContext* sramCtx, s32 fileNum); void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2); @@ -140,9 +140,21 @@ u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = { /* 99 */ 0, }; +// Unused remnant values from OoT. Not the correct sizes in MM. +#define OOT_SAVECONTEXT_SIZE 0x1428 +#define OOT_SLOT_SIZE (OOT_SAVECONTEXT_SIZE + 0x28) +#define OOT_SRAM_HEADER_SIZE 0x10 +#define OOT_SLOT_OFFSET(index) (OOT_SRAM_HEADER_SIZE + 0x10 + (index * OOT_SLOT_SIZE)) + // used in other files -s32 D_801C6798[] = { - 0x00000020, 0x00001470, 0x000028C0, 0x00003D10, 0x00005160, 0x000065B0, +u32 gSramSlotOffsets[] = { + OOT_SLOT_OFFSET(0), + OOT_SLOT_OFFSET(1), + OOT_SLOT_OFFSET(2), + // the latter three saves are backup saves for the former saves (in OoT) + OOT_SLOT_OFFSET(3), + OOT_SLOT_OFFSET(4), + OOT_SLOT_OFFSET(5), }; u8 gAmmoItems[] = { @@ -172,28 +184,89 @@ u8 gAmmoItems[] = { ITEM_NONE, // SLOT_BOTTLE_6 }; -s32 D_801C67C8[] = { 0, 0x40, 0x80, 0xC0, 0x100, 0x180, 0x200, 0x280, 0x300, 0x380 }; - -s32 D_801C67F0[] = { 0x40, 0x40, 0x40, 0x40, 0x80, 0x80, 0x80, 0x80, 1, 1 }; - -s32 D_801C6818[] = { 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 1, 1 }; - -s32 D_801C6840[] = { 0x100, 0x180, 0x200, 0x280 }; - -s32 D_801C6850[] = { 0x80, 0x80, 0x80, 0x80, 0x300, 0x380, 1, 1 }; - -s32 D_801C6870[] = { - sizeof(Save), - sizeof(Save), - sizeof(Save), - sizeof(Save), - offsetof(SaveContext, fileNum), - offsetof(SaveContext, fileNum), - offsetof(SaveContext, fileNum), - offsetof(SaveContext, fileNum), +// Stores flash start page number +s32 gFlashSaveStartPages[] = { + 0, // File 1 New Cycle Save + 0x40, // File 1 New Cycle Save Backup + 0x80, // File 2 New Cycle Save + 0xC0, // File 2 New Cycle Save Backup + 0x100, // File 1 Owl Save + 0x180, // File 1 Owl Save Backup + 0x200, // File 2 Owl Save + 0x280, // File 2 Owl Save Backup + 0x300, // Sram Header (SaveOptions) + 0x380, // Sram Header Backup (SaveOptions) }; -u8 D_801C6890[8] = { 1, 2, 4, 8, 0x10, 0x20, 0x40, 0x80 }; +// Flash rom number of pages +s32 gFlashSaveNumPages[] = { + 0x40, // File 1 New Cycle Save + 0x40, // File 1 New Cycle Save Backup + 0x40, // File 2 New Cycle Save + 0x40, // File 2 New Cycle Save Backup + 0x80, // File 1 Owl Save + 0x80, // File 1 Owl Save Backup + 0x80, // File 2 Owl Save + 0x80, // File 2 Owl Save Backup + 1, // Sram Header (SaveOptions) + 1, // Sram Header Backup (SaveOptions) +}; + +// Flash rom number of pages on very first time Player enters South Clock Town from the Clock Tower +s32 gFlashSpecialSaveNumPages[] = { + 0x80, // File 1 New Cycle Save + 0x80, // File 1 New Cycle Save Backup + 0x80, // File 2 New Cycle Save + 0x80, // File 2 New Cycle Save Backup + 0x80, // File 1 Owl Save + 0x80, // File 1 Owl Save Backup + 0x80, // File 2 Owl Save + 0x80, // File 2 Owl Save Backup + 1, // Sram Header (SaveOptions) + 1, // Sram Header Backup (SaveOptions) +}; + +// Owl Save flash rom start page number +s32 gFlashOwlSaveStartPages[] = { + 0x100, // File 1 Owl Save + 0x180, // File 1 Owl Save Backup + 0x200, // File 2 Owl Save + 0x280, // File 2 Owl Save Backup +}; + +// Owl Save flash rom number of pages +s32 gFlashOwlSaveNumPages[] = { + 0x80, // File 1 Owl Save + 0x80, // File 1 Owl Save Backup + 0x80, // File 2 Owl Save + 0x80, // File 2 Owl Save Backup +}; + +// Save Options Sram Header flash rom start page number +s32 gFlashOptionsSaveStartPages[] = { + 0x300, // Sram Header (SaveOptions) + 0x380, // Sram Header Backup (SaveOptions) +}; + +// Save Options Sram Header flash rom number of pages +s32 gFlashOptionsSaveNumPages[] = { + 1, // Sram Header (SaveOptions) + 1, // Sram Header Backup (SaveOptions) +}; + +// Flash rom actual size needed +s32 gFlashSaveSizes[] = { + sizeof(Save), // size = 0x100C - File 1 New Cycle Save + sizeof(Save), // size = 0x100C - File 1 New Cycle Save Backup + sizeof(Save), // size = 0x100C - File 2 New Cycle Save + sizeof(Save), // size = 0x100C - File 2 New Cycle Save Backup + offsetof(SaveContext, fileNum), // size = 0x3CA0 - File 1 Owl Save + offsetof(SaveContext, fileNum), // size = 0x3CA0 - File 1 Owl Save Backup + offsetof(SaveContext, fileNum), // size = 0x3CA0 - File 2 Owl Save + offsetof(SaveContext, fileNum), // size = 0x3CA0 - File 2 Owl Save Backup +}; + +u8 D_801C6890[8] = { 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7 }; u16 D_801F6AF0; u8 D_801F6AF2; @@ -245,9 +318,9 @@ void Sram_SaveEndOfCycle(PlayState* play) { gSaveContext.save.day = 0; gSaveContext.save.time = CLOCK_TIME(6, 0) - 1; - gSaveContext.save.saveInfo.playerData.deaths++; - if (gSaveContext.save.saveInfo.playerData.deaths > 999) { - gSaveContext.save.saveInfo.playerData.deaths = 999; + gSaveContext.save.saveInfo.playerData.threeDayResetCount++; + if (gSaveContext.save.saveInfo.playerData.threeDayResetCount > 999) { + gSaveContext.save.saveInfo.playerData.threeDayResetCount = 999; } sceneId = Play_GetOriginalSceneId(play->sceneId); @@ -577,7 +650,7 @@ void Sram_GenerateRandomSaveFields(void) { SavePlayerData sSaveDefaultPlayerData = { { '\0', '\0', '\0', '\0', '\0', '\0' }, // newf - 0, // deaths + 0, // threeDayResetCount { 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E }, // playerName " " 0x30, // healthCapacity 0x30, // health @@ -678,7 +751,7 @@ void Sram_InitNewSave(void) { SavePlayerData sSaveDebugPlayerData = { { 'Z', 'E', 'L', 'D', 'A', '3' }, // newf - 0x0000, // deaths + 0, // threeDayResetCount { 0x15, 0x12, 0x17, 0x14, 0x3E, 0x3E, 0x3E, 0x3E }, // playerName "LINK " 0x80, // healthCapacity 0x80, // health @@ -775,7 +848,18 @@ Inventory sSaveDebugInventory = { (1 << QUEST_SONG_SOARING) | (1 << QUEST_SONG_STORMS) | (1 << QUEST_BOMBERS_NOTEBOOK) | (1 << QUEST_SONG_LULLABY_INTRO), // dungeonItems - { 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }, + { + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + (1 << DUNGEON_BOSS_KEY) | (1 << DUNGEON_COMPASS) | (1 << DUNGEON_MAP), + }, // dungeonKeys { 8, 8, 8, 8, 8, 8, 8, 8, 8 }, // defenseHearts @@ -851,15 +935,15 @@ void Sram_ResetSaveFromMoonCrash(SramContext* sramCtx) { bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[gSaveContext.fileNum * 2], - D_801C67F0[gSaveContext.fileNum * 2]) != 0) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[gSaveContext.fileNum * 2 + 1], - D_801C67F0[gSaveContext.fileNum * 2 + 1]); + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[gSaveContext.fileNum * 2], + gFlashSaveNumPages[gSaveContext.fileNum * 2]) != 0) { + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[gSaveContext.fileNum * 2 + 1], + gFlashSaveNumPages[gSaveContext.fileNum * 2 + 1]); } Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save)); if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf)) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[gSaveContext.fileNum * 2 + 1], - D_801C67F0[gSaveContext.fileNum * 2 + 1]); + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[gSaveContext.fileNum * 2 + 1], + gFlashSaveNumPages[gSaveContext.fileNum * 2 + 1]); Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, sizeof(Save)); } gSaveContext.save.cutsceneIndex = cutsceneIndex; @@ -907,32 +991,34 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) { s32 pad1; s32 fileNum; - if (gSaveContext.unk_3F3F) { + if (gSaveContext.flashSaveAvailable) { bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); if (gSaveContext.fileNum == 0xFF) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[0], D_801C67F0[0]); - } else if (fileSelect->unk_2446A[gSaveContext.fileNum] != 0) { + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[0], gFlashSaveNumPages[0]); + } else if (fileSelect->isOwlSave[gSaveContext.fileNum + 2]) { phi_t1 = gSaveContext.fileNum + 2; phi_t1 *= 2; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[phi_t1], D_801C67F0[phi_t1]) != 0) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[phi_t1 + 1], D_801C67F0[phi_t1 + 1]); + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[phi_t1], gFlashSaveNumPages[phi_t1]) != 0) { + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[phi_t1 + 1], + gFlashSaveNumPages[phi_t1 + 1]); } } else { phi_t1 = gSaveContext.fileNum; phi_t1 *= 2; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[phi_t1], D_801C67F0[phi_t1]) != 0) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[phi_t1 + 1], D_801C67F0[phi_t1 + 1]); + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[phi_t1], gFlashSaveNumPages[phi_t1]) != 0) { + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[phi_t1 + 1], + gFlashSaveNumPages[phi_t1 + 1]); } } - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[phi_t1]); + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[phi_t1]); if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf)) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[phi_t1 + 1], D_801C67F0[phi_t1 + 1]); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[phi_t1]); + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[phi_t1 + 1], gFlashSaveNumPages[phi_t1 + 1]); + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[phi_t1]); } } @@ -963,7 +1049,7 @@ void Sram_OpenSave(FileSelectState* fileSelect, SramContext* sramCtx) { if (gSaveContext.save.isFirstCycle) { gSaveContext.save.entrance = ENTRANCE(SOUTH_CLOCK_TOWN, 0); gSaveContext.save.day = 0; - gSaveContext.save.time = 0x3FFF; + gSaveContext.save.time = CLOCK_TIME(6, 0) - 1; } else { gSaveContext.save.entrance = ENTRANCE(CUTSCENE, 0); gSaveContext.nextCutsceneIndex = 0; @@ -1028,7 +1114,7 @@ void func_8014546C(SramContext* sramCtx) { gSaveContext.save.saveInfo.checksum = 0; gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save)); - if (gSaveContext.unk_3F3F) { + if (gSaveContext.flashSaveAvailable) { Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, sizeof(Save)); Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save)); } @@ -1051,7 +1137,7 @@ void func_80145698(SramContext* sramCtx) { gSaveContext.save.saveInfo.checksum = 0; gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save)); - if (gSaveContext.unk_3F3F) { + if (gSaveContext.flashSaveAvailable) { Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, sizeof(Save)); Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save)); } @@ -1059,31 +1145,21 @@ void func_80145698(SramContext* sramCtx) { // Verifies save and use backup if corrupted? #ifdef NON_EQUIVALENT -void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { - FileSelectState* fileSelect = fileSelect2; +void func_801457CC(GameState* gameState, SramContext* sramCtx) { + FileSelectState* fileSelect = (FileSelectState*)gameState; u16 sp7A; - // u16 sp78; + u16 oldCheckSum; // s2 u16 sp76; - // u16 sp74; - u16 sp6E; //! - // s32 sp68; - // u16 sp66; - u16 phi_s2; //! - u16 sp64; - // s32 sp60; - // s32 sp5C; - // s32 sp58; - // u32 new_var; - u16 phi_s2_3; - // s16 fakevar; + u16 sp64; // sp74? + u16 phi_s2; + u16 phi_s7; + u16 sp6E; + u16 newCheckSum; // v0 + u16 phi_a0; // maskCount - u16 temp_s2; - u16 temp_v0_2; - u16 phi_a0; // maskCount - - if (gSaveContext.unk_3F3F) { + if (gSaveContext.flashSaveAvailable) { D_801F6AF0 = gSaveContext.save.time; - D_801F6AF2 = gSaveContext.unk_3F3F; + D_801F6AF2 = gSaveContext.flashSaveAvailable; sp64 = 0; for (sp76 = 0; sp76 < 5; sp76++, sp64 += 2) { @@ -1091,40 +1167,65 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { phi_s2 = false; sp6E = 0; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64])) { + // read main save from flash + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64], gFlashSaveNumPages[sp64]) != 0) { + // main save didn't work sp6E = 1; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) { + // read backup save from flash + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64 + 1], + gFlashSaveNumPages[sp64 + 1]) != 0) { + // backup save didn't work phi_s2 = true; } } if (sp76 < 2) { - fileSelect->unk_24468[sp76] = 0; + // Non-owl save + // sp76 = 0: main save + // sp76 = 1: backup save + + fileSelect->isOwlSave[sp76] = 0; if (phi_s2) { + // both main save and backup save failed bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); } else { - // Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - temp_s2 = gSaveContext.save.saveInfo.checksum; + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + + // test checksum of main save + oldCheckSum = gSaveContext.save.saveInfo.checksum; gSaveContext.save.saveInfo.checksum = 0; - temp_v0_2 = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]); - gSaveContext.save.saveInfo.checksum = temp_s2; + newCheckSum = Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[sp64]); + gSaveContext.save.saveInfo.checksum = oldCheckSum; - if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (temp_s2 != temp_v0_2)) { + if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (oldCheckSum != newCheckSum)) { + // checksum didnt match, try backup save sp6E = 1; - if (CHECK_NEWF2(gSaveContext.save.saveInfo.playerData.newf)) {} - phi_s2 = false; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) { + if ((gSaveContext.save.saveInfo.playerData.newf[0] == 'Z') && + (gSaveContext.save.saveInfo.playerData.newf[1] == 'E')) { + phi_s2 = false; + } + + // phi_s2 = false; + + // read backup save from flash + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64 + 1], + gFlashSaveNumPages[sp64 + 1]) != 0) { + // backup save didn't work phi_s2 = true; } - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - temp_s2 = gSaveContext.save.saveInfo.checksum; + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + + // test checksum of backup save + oldCheckSum = gSaveContext.save.saveInfo.checksum; gSaveContext.save.saveInfo.checksum = 0; + + //! FAKE: (s32)sp64 if (phi_s2 || CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || - (temp_s2 != Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]))) { + (oldCheckSum != Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[(s32)sp64]))) { + // backup save didn't work bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save)); sp6E = 999; @@ -1133,29 +1234,30 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { } gSaveContext.save.saveInfo.checksum = 0; + // FAKE: Needed? gSaveContext.save.saveInfo.checksum = - Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64 & 0xFFFFFFFF]); // TODO: Needed? + Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[sp64 & 0xFFFFFFFF]); for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); sp7A++) { fileSelect->newf[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.newf[sp7A]; } if (!CHECK_NEWF(fileSelect->newf[sp76])) { - fileSelect->unk_2440C[sp76] = gSaveContext.save.saveInfo.playerData.deaths; + fileSelect->threeDayResetCount[sp76] = gSaveContext.save.saveInfo.playerData.threeDayResetCount; for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); sp7A++) { - fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A]; + fileSelect->fileNames[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A]; } fileSelect->healthCapacity[sp76] = gSaveContext.save.saveInfo.playerData.healthCapacity; fileSelect->health[sp76] = gSaveContext.save.saveInfo.playerData.health; - fileSelect->unk_24454[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts; - fileSelect->unk_24444[sp76] = gSaveContext.save.saveInfo.inventory.questItems; - fileSelect->unk_24458[sp76] = gSaveContext.save.time; - fileSelect->unk_24460[sp76] = gSaveContext.save.day; - fileSelect->unk_24468[sp76] = gSaveContext.save.isOwlSave; + fileSelect->defenseHearts[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts; + fileSelect->questItems[sp76] = gSaveContext.save.saveInfo.inventory.questItems; + fileSelect->time[sp76] = gSaveContext.save.time; + fileSelect->day[sp76] = gSaveContext.save.day; + fileSelect->isOwlSave[sp76] = gSaveContext.save.isOwlSave; fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees; - fileSelect->unk_24474[sp76] = CUR_UPG_VALUE(4); + fileSelect->walletUpgrades[sp76] = CUR_UPG_VALUE(UPG_WALLET); for (sp7A = 0, phi_a0 = 0; sp7A < 24; sp7A++) { if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] != 0xFF) { @@ -1168,90 +1270,106 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { } if (sp6E == 1) { + // backup save Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save)); - func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C6818[sp64]); - } else if (sp6E == 0) { // TODO: == 0? - temp_s2 = gSaveContext.save.saveInfo.checksum; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) { - phi_s2_3 = 1; + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64], gFlashSpecialSaveNumPages[sp64]); + } else if (!sp6E) { + // main save + phi_s7 = gSaveContext.save.saveInfo.checksum; + + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64 + 1], + gFlashSaveNumPages[sp64 + 1]) != 0) { + oldCheckSum = 1; } else { Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save)); - phi_s2_3 = gSaveContext.save.saveInfo.checksum; + oldCheckSum = gSaveContext.save.saveInfo.checksum; gSaveContext.save.saveInfo.checksum = 0; sp7A = Sram_CalcChecksum(&gSaveContext.save, sizeof(Save)); } - if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (phi_s2_3 != sp7A) || - (phi_s2_3 != temp_s2)) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64]); + if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (oldCheckSum != sp7A) || + (oldCheckSum != phi_s7)) { + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64], gFlashSaveNumPages[sp64]); Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save)); Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save)); - func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C6818[sp64]); + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64], gFlashSpecialSaveNumPages[sp64]); } } } else if (sp76 < 4) { - fileSelect->unk_24468[sp76] = 0; + // Owl Save: + // sp76 = 3: main owl save + // sp76 = 4: backup owl save + fileSelect->isOwlSave[sp76] = 0; - if (!CHECK_NEWF(fileSelect->newf2[(s32)sp76])) { // TODO: Needed? + if (!CHECK_NEWF(fileSelect->newf[sp76 - 2])) { if (phi_s2) { + // both main save and backup save failed bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, - D_801C6870[sp64]); // TODO: Needed? + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); } else { - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - temp_s2 = gSaveContext.save.saveInfo.checksum; + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + oldCheckSum = gSaveContext.save.saveInfo.checksum; + // test checksum of main save gSaveContext.save.saveInfo.checksum = 0; - temp_v0_2 = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]); - gSaveContext.save.saveInfo.checksum = temp_s2; - if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (temp_s2 != temp_v0_2)) { + newCheckSum = Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[sp64]); + gSaveContext.save.saveInfo.checksum = oldCheckSum; + + if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (oldCheckSum != newCheckSum)) { + // checksum didnt match, try backup save sp6E = 1; if ((gSaveContext.save.saveInfo.playerData.newf[0] == 'Z') && (gSaveContext.save.saveInfo.playerData.newf[1] == 'E')) { phi_s2 = false; } - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) { + // read backup save from flash + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64 + 1], + gFlashSaveNumPages[sp64 + 1])) { + // backup save didn't work phi_s2 = true; } - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - temp_s2 = gSaveContext.save.saveInfo.checksum; + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + + // test checksum of backup save + oldCheckSum = gSaveContext.save.saveInfo.checksum; gSaveContext.save.saveInfo.checksum = 0; + if (phi_s2 || CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || - (temp_s2 != Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]))) { + (oldCheckSum != Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[sp64]))) { bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); sp6E = 999; } } } gSaveContext.save.saveInfo.checksum = 0; + // FAKE: Needed? gSaveContext.save.saveInfo.checksum = - Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64 & 0xFFFFFFFF]); // TODO: Needed? + Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[sp64 & 0xFFFFFFFF]); for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); sp7A++) { fileSelect->newf[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.newf[sp7A]; } if (!CHECK_NEWF(fileSelect->newf[sp76])) { - fileSelect->unk_2440C[sp76] = gSaveContext.save.saveInfo.playerData.deaths; + fileSelect->threeDayResetCount[sp76] = gSaveContext.save.saveInfo.playerData.threeDayResetCount; for (sp7A = 0; sp7A < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); sp7A++) { - phi_s2 += 0; // TODO: Needed? - fileSelect->unk_24414[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A]; + fileSelect->fileNames[sp76][sp7A] = gSaveContext.save.saveInfo.playerData.playerName[sp7A]; } fileSelect->healthCapacity[sp76] = gSaveContext.save.saveInfo.playerData.healthCapacity; fileSelect->health[sp76] = gSaveContext.save.saveInfo.playerData.health; - fileSelect->unk_24454[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts; - fileSelect->unk_24444[sp76] = gSaveContext.save.saveInfo.inventory.questItems; - fileSelect->unk_24458[sp76] = gSaveContext.save.time; - fileSelect->unk_24460[sp76] = gSaveContext.save.day; - fileSelect->unk_24468[sp76] = gSaveContext.save.isOwlSave; + fileSelect->defenseHearts[sp76] = gSaveContext.save.saveInfo.inventory.defenseHearts; + fileSelect->questItems[sp76] = gSaveContext.save.saveInfo.inventory.questItems; + fileSelect->time[sp76] = gSaveContext.save.time; + fileSelect->day[sp76] = gSaveContext.save.day; + fileSelect->isOwlSave[sp76] = gSaveContext.save.isOwlSave; fileSelect->rupees[sp76] = gSaveContext.save.saveInfo.playerData.rupees; - fileSelect->unk_24474[sp76] = CUR_UPG_VALUE(4); + fileSelect->walletUpgrades[sp76] = CUR_UPG_VALUE(UPG_WALLET); for (sp7A = 0, phi_a0 = 0; sp7A < 24; sp7A++) { if (gSaveContext.save.saveInfo.inventory.items[sp7A + 24] != 0xFF) { @@ -1264,39 +1382,44 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { } if (sp6E == 1) { - func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C67F0[sp64]); - func_80146EBC(sramCtx, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1]); - } else if (!sp6E) { // TODO: == 0? - temp_s2 = gSaveContext.save.saveInfo.checksum; - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1])) { - phi_s2_3 = 1; + // backup save + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64], gFlashSaveNumPages[sp64]); + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64 + 1], gFlashSaveNumPages[sp64 + 1]); + } else if (!sp6E) { + // main save + phi_s7 = gSaveContext.save.saveInfo.checksum; + + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64 + 1], + gFlashSaveNumPages[sp64 + 1])) { + oldCheckSum = 1; } else { - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - phi_s2_3 = gSaveContext.save.saveInfo.checksum; + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + oldCheckSum = gSaveContext.save.saveInfo.checksum; gSaveContext.save.saveInfo.checksum = 0; - // phi_s2_3 = gSaveContext.save.saveInfo.checksum; - sp7A = Sram_CalcChecksum(&gSaveContext, D_801C6870[sp64]); + sp7A = Sram_CalcChecksum(&gSaveContext, gFlashSaveSizes[sp64]); } - if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (phi_s2_3 != sp7A) || - (phi_s2_3 != temp_s2)) { - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[sp64], D_801C67F0[sp64]); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C67F0[sp64]); - func_80146EBC(sramCtx, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1]); + if (CHECK_NEWF(gSaveContext.save.saveInfo.playerData.newf) || (oldCheckSum != sp7A) || + (oldCheckSum != phi_s7)) { + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashSaveStartPages[sp64], + gFlashSaveNumPages[sp64]); + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64], gFlashSaveNumPages[sp64]); + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64 + 1], + gFlashSaveNumPages[sp64 + 1]); } } } else { bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); - Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, D_801C6870[sp64]); - func_80146EBC(sramCtx, D_801C67C8[sp64], D_801C67F0[sp64]); - func_80146EBC(sramCtx, D_801C67C8[sp64 + 1], D_801C67F0[sp64 + 1]); + Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, gFlashSaveSizes[sp64]); + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64], gFlashSaveNumPages[sp64]); + Sram_SyncWriteToFlash(sramCtx, gFlashSaveStartPages[sp64 + 1], gFlashSaveNumPages[sp64 + 1]); } } else { if (phi_s2) { gSaveContext.options.optionId = 0xA51D; gSaveContext.options.language = 1; - gSaveContext.options.audioSetting = 0; + gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO; gSaveContext.options.languageSetting = 0; gSaveContext.options.zTargetSetting = 0; } else { @@ -1304,7 +1427,7 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { if (gSaveContext.options.optionId != 0xA51D) { gSaveContext.options.optionId = 0xA51D; gSaveContext.options.language = 1; - gSaveContext.options.audioSetting = 0; + gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO; gSaveContext.options.languageSetting = 0; gSaveContext.options.zTargetSetting = 0; } @@ -1314,7 +1437,7 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { } gSaveContext.save.time = D_801F6AF0; - gSaveContext.unk_3F3F = D_801F6AF2; + gSaveContext.flashSaveAvailable = D_801F6AF2; } gSaveContext.options.language = 1; @@ -1323,50 +1446,52 @@ void func_801457CC(FileSelectState* fileSelect2, SramContext* sramCtx) { #pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/func_801457CC.s") #endif -void func_80146580(FileSelectState* fileSelect2, SramContext* sramCtx, s32 fileNum) { +void Sram_EraseSave(FileSelectState* fileSelect2, SramContext* sramCtx, s32 fileNum) { FileSelectState* fileSelect = fileSelect2; s32 pad; - if (gSaveContext.unk_3F3F) { - if (fileSelect->unk_2446A[fileNum]) { + if (gSaveContext.flashSaveAvailable) { + if (fileSelect->isOwlSave[fileNum + 2]) { func_80147314(sramCtx, fileNum); - fileSelect->unk_2446A[fileNum] = 0; + fileSelect->isOwlSave[fileNum + 2] = false; } bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, sizeof(Save)); } gSaveContext.save.time = D_801F6AF0; - gSaveContext.unk_3F3F = D_801F6AF2; + gSaveContext.flashSaveAvailable = D_801F6AF2; } #ifdef NON_MATCHING // v0/v1 -void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) { +void Sram_CopySave(FileSelectState* fileSelect2, SramContext* sramCtx) { FileSelectState* fileSelect = fileSelect2; u16 i; s16 maskCount; - if (gSaveContext.unk_3F3F) { - if (fileSelect->unk_2446A[fileSelect->unk_2448E]) { - func_80147414(sramCtx, fileSelect->unk_2448E, fileSelect->fileNum); - fileSelect->unk_24410[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.deaths; + if (gSaveContext.flashSaveAvailable) { + if (fileSelect->isOwlSave[fileSelect->selectedFileIndex + 2]) { + func_80147414(sramCtx, fileSelect->selectedFileIndex, fileSelect->copyDestFileIndex); + fileSelect->threeDayResetCount[fileSelect->copyDestFileIndex + 2] = + gSaveContext.save.saveInfo.playerData.threeDayResetCount; for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) { - fileSelect->unk_24424[fileSelect->fileNum][i] = gSaveContext.save.saveInfo.playerData.playerName[i]; + fileSelect->fileNames[fileSelect->copyDestFileIndex + 2][i] = + gSaveContext.save.saveInfo.playerData.playerName[i]; } - fileSelect->unk_24438[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.healthCapacity; - fileSelect->unk_24440[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.health; - fileSelect->unk_24456[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.defenseHearts; - fileSelect->unk_2444C[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.questItems; - fileSelect->unk_2445C[fileSelect->fileNum] = gSaveContext.save.time; - fileSelect->unk_24464[fileSelect->fileNum] = gSaveContext.save.day; - fileSelect->unk_2446A[fileSelect->fileNum] = gSaveContext.save.isOwlSave; - fileSelect->unk_24470[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.rupees; - // = CUR_UPG_VALUE(UPG_WALLET); - fileSelect->unk_24476[fileSelect->fileNum] = - (gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4]; + fileSelect->healthCapacity[fileSelect->copyDestFileIndex + 2] = + gSaveContext.save.saveInfo.playerData.healthCapacity; + fileSelect->health[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.saveInfo.playerData.health; + fileSelect->defenseHearts[fileSelect->copyDestFileIndex + 2] = + gSaveContext.save.saveInfo.inventory.defenseHearts; + fileSelect->questItems[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.saveInfo.inventory.questItems; + fileSelect->time[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.time; + fileSelect->day[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.day; + fileSelect->isOwlSave[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.isOwlSave; + fileSelect->rupees[fileSelect->copyDestFileIndex + 2] = gSaveContext.save.saveInfo.playerData.rupees; + fileSelect->walletUpgrades[fileSelect->copyDestFileIndex + 2] = CUR_UPG_VALUE(UPG_WALLET); for (i = 0, maskCount = 0; i < 24; i++) { if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) { @@ -1374,42 +1499,42 @@ void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) { } } - fileSelect->unk_2447A[fileSelect->fileNum] = maskCount; - fileSelect->unk_2447E[fileSelect->fileNum] = - (gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C; + fileSelect->maskCount[fileSelect->copyDestFileIndex + 2] = maskCount; + fileSelect->heartPieceCount[fileSelect->copyDestFileIndex + 2] = GET_QUEST_HEART_PIECE_COUNT; } // clear buffer bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); // read to buffer - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C67C8[fileSelect->unk_2448E * 2], - D_801C67F0[fileSelect->unk_2448E * 2]); - + SysFlashrom_ReadData(&sramCtx->saveBuf[0], gFlashSaveStartPages[fileSelect->selectedFileIndex * 2], + gFlashSaveNumPages[fileSelect->selectedFileIndex * 2]); if (1) {} - SysFlashrom_ReadData(&sramCtx->saveBuf[0x2000], D_801C67C8[fileSelect->unk_2448E * 2 + 1], - D_801C67F0[fileSelect->unk_2448E * 2 + 1]); + + SysFlashrom_ReadData(&sramCtx->saveBuf[0x2000], gFlashSaveStartPages[fileSelect->selectedFileIndex * 2 + 1], + gFlashSaveNumPages[fileSelect->selectedFileIndex * 2 + 1]); if (1) {} // copy buffer to save context Lib_MemCpy(&gSaveContext.save, sramCtx->saveBuf, sizeof(Save)); - fileSelect->unk_2440C[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.deaths; + fileSelect->threeDayResetCount[fileSelect->copyDestFileIndex] = + gSaveContext.save.saveInfo.playerData.threeDayResetCount; for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) { - fileSelect->unk_24414[fileSelect->fileNum][i] = gSaveContext.save.saveInfo.playerData.playerName[i]; + fileSelect->fileNames[fileSelect->copyDestFileIndex][i] = + gSaveContext.save.saveInfo.playerData.playerName[i]; } - fileSelect->healthCapacity[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.healthCapacity; - fileSelect->health[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.health; - fileSelect->unk_24454[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.defenseHearts; - fileSelect->unk_24444[fileSelect->fileNum] = gSaveContext.save.saveInfo.inventory.questItems; - fileSelect->unk_24458[fileSelect->fileNum] = gSaveContext.save.time; - fileSelect->unk_24460[fileSelect->fileNum] = gSaveContext.save.day; - fileSelect->unk_24468[fileSelect->fileNum] = gSaveContext.save.isOwlSave; - fileSelect->rupees[fileSelect->fileNum] = gSaveContext.save.saveInfo.playerData.rupees; - // = CUR_UPG_VALUE(UPG_WALLET); - fileSelect->unk_24474[fileSelect->fileNum] = - (gSaveContext.save.saveInfo.inventory.upgrades & gUpgradeMasks[4]) >> gUpgradeShifts[4]; + fileSelect->healthCapacity[fileSelect->copyDestFileIndex] = + gSaveContext.save.saveInfo.playerData.healthCapacity; + fileSelect->health[fileSelect->copyDestFileIndex] = gSaveContext.save.saveInfo.playerData.health; + fileSelect->defenseHearts[fileSelect->copyDestFileIndex] = gSaveContext.save.saveInfo.inventory.defenseHearts; + fileSelect->questItems[fileSelect->copyDestFileIndex] = gSaveContext.save.saveInfo.inventory.questItems; + fileSelect->time[fileSelect->copyDestFileIndex] = gSaveContext.save.time; + fileSelect->day[fileSelect->copyDestFileIndex] = gSaveContext.save.day; + fileSelect->isOwlSave[fileSelect->copyDestFileIndex] = gSaveContext.save.isOwlSave; + fileSelect->rupees[fileSelect->copyDestFileIndex] = gSaveContext.save.saveInfo.playerData.rupees; + fileSelect->walletUpgrades[fileSelect->copyDestFileIndex] = CUR_UPG_VALUE(UPG_WALLET); for (i = 0, maskCount = 0; i < 24; i++) { if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) { @@ -1417,16 +1542,15 @@ void func_80146628(FileSelectState* fileSelect2, SramContext* sramCtx) { } } - fileSelect->maskCount[fileSelect->fileNum] = maskCount; - fileSelect->heartPieceCount[fileSelect->fileNum] = - (gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C; + fileSelect->maskCount[fileSelect->copyDestFileIndex] = maskCount; + fileSelect->heartPieceCount[fileSelect->copyDestFileIndex] = GET_QUEST_HEART_PIECE_COUNT; } gSaveContext.save.time = D_801F6AF0; - gSaveContext.unk_3F3F = D_801F6AF2; + gSaveContext.flashSaveAvailable = D_801F6AF2; } #else -#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/func_80146628.s") +#pragma GLOBAL_ASM("asm/non_matchings/code/z_sram_NES/Sram_CopySave.s") #endif void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) { @@ -1435,15 +1559,15 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) { FileSelectState* fileSelect = fileSelect2; s16 maskCount; - if (gSaveContext.unk_3F3F) { + if (gSaveContext.flashSaveAvailable) { Sram_InitNewSave(); - if (fileSelect->unk_24480 == 0) { + if (fileSelect->buttonIndex == 0) { gSaveContext.save.cutsceneIndex = 0xFFF0; } for (phi_v0 = 0; phi_v0 < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); phi_v0++) { gSaveContext.save.saveInfo.playerData.playerName[phi_v0] = - fileSelect->unk_24414[fileSelect->unk_24480][phi_v0]; + fileSelect->fileNames[fileSelect->buttonIndex][phi_v0]; } gSaveContext.save.saveInfo.playerData.newf[0] = 'Z'; @@ -1459,24 +1583,25 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) { Lib_MemCpy(&sramCtx->saveBuf[0x2000], &gSaveContext.save, sizeof(Save)); for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.newf); i++) { - fileSelect->newf[fileSelect->unk_24480][i] = gSaveContext.save.saveInfo.playerData.newf[i]; + fileSelect->newf[fileSelect->buttonIndex][i] = gSaveContext.save.saveInfo.playerData.newf[i]; } - fileSelect->unk_2440C[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.deaths; + fileSelect->threeDayResetCount[fileSelect->buttonIndex] = + gSaveContext.save.saveInfo.playerData.threeDayResetCount; for (i = 0; i < ARRAY_COUNT(gSaveContext.save.saveInfo.playerData.playerName); i++) { - fileSelect->unk_24414[fileSelect->unk_24480][i] = gSaveContext.save.saveInfo.playerData.playerName[i]; + fileSelect->fileNames[fileSelect->buttonIndex][i] = gSaveContext.save.saveInfo.playerData.playerName[i]; } - fileSelect->healthCapacity[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.healthCapacity; - fileSelect->health[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.health; - fileSelect->unk_24454[fileSelect->unk_24480] = gSaveContext.save.saveInfo.inventory.defenseHearts; - fileSelect->unk_24444[fileSelect->unk_24480] = gSaveContext.save.saveInfo.inventory.questItems; - fileSelect->unk_24458[fileSelect->unk_24480] = gSaveContext.save.time; - fileSelect->unk_24460[fileSelect->unk_24480] = gSaveContext.save.day; - fileSelect->unk_24468[fileSelect->unk_24480] = gSaveContext.save.isOwlSave; - fileSelect->rupees[fileSelect->unk_24480] = gSaveContext.save.saveInfo.playerData.rupees; - fileSelect->unk_24474[fileSelect->unk_24480] = CUR_UPG_VALUE(UPG_WALLET); + fileSelect->healthCapacity[fileSelect->buttonIndex] = gSaveContext.save.saveInfo.playerData.healthCapacity; + fileSelect->health[fileSelect->buttonIndex] = gSaveContext.save.saveInfo.playerData.health; + fileSelect->defenseHearts[fileSelect->buttonIndex] = gSaveContext.save.saveInfo.inventory.defenseHearts; + fileSelect->questItems[fileSelect->buttonIndex] = gSaveContext.save.saveInfo.inventory.questItems; + fileSelect->time[fileSelect->buttonIndex] = gSaveContext.save.time; + fileSelect->day[fileSelect->buttonIndex] = gSaveContext.save.day; + fileSelect->isOwlSave[fileSelect->buttonIndex] = gSaveContext.save.isOwlSave; + fileSelect->rupees[fileSelect->buttonIndex] = gSaveContext.save.saveInfo.playerData.rupees; + fileSelect->walletUpgrades[fileSelect->buttonIndex] = CUR_UPG_VALUE(UPG_WALLET); for (i = 0, maskCount = 0; i < 24; i++) { if (gSaveContext.save.saveInfo.inventory.items[i + 24] != ITEM_NONE) { @@ -1484,17 +1609,19 @@ void Sram_InitSave(FileSelectState* fileSelect2, SramContext* sramCtx) { } } - fileSelect->maskCount[fileSelect->unk_24480] = maskCount; - fileSelect->heartPieceCount[fileSelect->unk_24480] = - (gSaveContext.save.saveInfo.inventory.questItems & 0xF0000000) >> 0x1C; + fileSelect->maskCount[fileSelect->buttonIndex] = maskCount; + fileSelect->heartPieceCount[fileSelect->buttonIndex] = GET_QUEST_HEART_PIECE_COUNT; } gSaveContext.save.time = D_801F6AF0; - gSaveContext.unk_3F3F = D_801F6AF2; + gSaveContext.flashSaveAvailable = D_801F6AF2; } -void func_80146DF8(SramContext* sramCtx) { - if (gSaveContext.unk_3F3F) { +/** + * Write the SaveOptions of SaveContext to the save buffer + */ +void Sram_WriteSaveOptionsToBuffer(SramContext* sramCtx) { + if (gSaveContext.flashSaveAvailable) { // TODO: macros for languages gSaveContext.options.language = 1; Lib_MemCpy(sramCtx->saveBuf, &gSaveContext.options, sizeof(SaveOptions)); @@ -1508,7 +1635,7 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) { } void Sram_Alloc(GameState* gameState, SramContext* sramCtx) { - if (gSaveContext.unk_3F3F) { + if (gSaveContext.flashSaveAvailable) { sramCtx->saveBuf = THA_AllocTailAlign16(&gameState->heap, SAVE_BUFFER_SIZE); sramCtx->status = 0; } @@ -1517,7 +1644,7 @@ void Sram_Alloc(GameState* gameState, SramContext* sramCtx) { /** * Synchronous flash write */ -void func_80146EBC(SramContext* sramCtx, s32 curPage, s32 numPages) { +void Sram_SyncWriteToFlash(SramContext* sramCtx, s32 curPage, s32 numPages) { sramCtx->curPage = curPage; sramCtx->numPages = numPages; SysFlashrom_WriteDataSync(sramCtx->saveBuf, curPage, numPages); @@ -1533,8 +1660,8 @@ void Sram_SaveSpecialEnterClockTown(PlayState* play) { gSaveContext.save.isFirstCycle = true; gSaveContext.save.isOwlSave = false; func_80145698(sramCtx); - SysFlashrom_WriteDataSync(sramCtx->saveBuf, D_801C67C8[gSaveContext.fileNum * 2], - D_801C6818[gSaveContext.fileNum * 2]); + SysFlashrom_WriteDataSync(sramCtx->saveBuf, gFlashSaveStartPages[gSaveContext.fileNum * 2], + gFlashSpecialSaveNumPages[gSaveContext.fileNum * 2]); } /** @@ -1555,25 +1682,25 @@ void Sram_SaveSpecialNewDay(PlayState* play) { gSaveContext.save.day = day; gSaveContext.save.time = time; gSaveContext.save.cutsceneIndex = cutsceneIndex; - SysFlashrom_WriteDataSync(play->sramCtx.saveBuf, D_801C67C8[gSaveContext.fileNum * 2], - D_801C67F0[gSaveContext.fileNum * 2]); + SysFlashrom_WriteDataSync(play->sramCtx.saveBuf, gFlashSaveStartPages[gSaveContext.fileNum * 2], + gFlashSaveNumPages[gSaveContext.fileNum * 2]); } -void func_80147008(SramContext* sramCtx, u32 curPage, u32 numPages) { +void Sram_SetFlashPagesDefault(SramContext* sramCtx, u32 curPage, u32 numPages) { sramCtx->curPage = curPage; sramCtx->numPages = numPages; sramCtx->status = 1; } -void func_80147020(SramContext* sramCtx) { +void Sram_StartWriteToFlashDefault(SramContext* sramCtx) { // async flash write SysFlashrom_WriteDataAsync(sramCtx->saveBuf, sramCtx->curPage, sramCtx->numPages); - sramCtx->unk_18 = osGetTime(); + sramCtx->startWriteOsTime = osGetTime(); sramCtx->status = 2; } -void func_80147068(SramContext* sramCtx) { +void Sram_UpdateWriteToFlashDefault(SramContext* sramCtx) { if (sramCtx->status == 2) { if (SysFlashrom_IsBusy() != 0) { // if task running if (SysFlashrom_AwaitResult() == 0) { // wait for task done @@ -1584,25 +1711,26 @@ void func_80147068(SramContext* sramCtx) { sramCtx->status = 4; } } - } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->unk_18) >= SECONDS_TO_TIMER(2)) { + } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >= SECONDS_TO_TIMER(2)) { + // Finished status is hardcoded to 2 seconds instead of when the task finishes sramCtx->status = 0; } } -void func_80147138(SramContext* sramCtx, s32 curPage, s32 numPages) { +void Sram_SetFlashPagesOwlSave(SramContext* sramCtx, s32 curPage, s32 numPages) { sramCtx->curPage = curPage; sramCtx->numPages = numPages; sramCtx->status = 6; } -void func_80147150(SramContext* sramCtx) { +void Sram_StartWriteToFlashOwlSave(SramContext* sramCtx) { SysFlashrom_WriteDataAsync(sramCtx->saveBuf, sramCtx->curPage, sramCtx->numPages); - sramCtx->unk_18 = osGetTime(); + sramCtx->startWriteOsTime = osGetTime(); sramCtx->status = 7; } -void func_80147198(SramContext* sramCtx) { +void Sram_UpdateWriteToFlashOwlSave(SramContext* sramCtx) { if (sramCtx->status == 7) { if (SysFlashrom_IsBusy() != 0) { // Is task running if (SysFlashrom_AwaitResult() == 0) { // Wait for task done @@ -1621,7 +1749,8 @@ void func_80147198(SramContext* sramCtx) { sramCtx->status = 4; } } - } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->unk_18) >= SECONDS_TO_TIMER(2)) { + } else if (OSTIME_TO_TIMER(osGetTime() - sramCtx->startWriteOsTime) >= SECONDS_TO_TIMER(2)) { + // Finished status is hardcoded to 2 seconds instead of when the task finishes sramCtx->status = 0; bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); gSaveContext.save.isOwlSave = false; @@ -1648,8 +1777,9 @@ void func_80147314(SramContext* sramCtx, s32 fileNum) { gSaveContext.save.saveInfo.checksum = Sram_CalcChecksum(&gSaveContext, offsetof(SaveContext, fileNum)); Lib_MemCpy(sramCtx->saveBuf, &gSaveContext, offsetof(SaveContext, fileNum)); - func_80146EBC(sramCtx, D_801C6840[fileNum * 2], D_801C6850[fileNum * 2]); - func_80146EBC(sramCtx, D_801C6840[fileNum * 2 + 1], D_801C6850[fileNum * 2]); + Sram_SyncWriteToFlash(sramCtx, gFlashOwlSaveStartPages[fileNum * 2], gFlashOwlSaveNumPages[fileNum * 2]); + //! Note: should be `gFlashOwlSaveNumPages[fileNum * 2 + 1]`? + Sram_SyncWriteToFlash(sramCtx, gFlashOwlSaveStartPages[fileNum * 2 + 1], gFlashOwlSaveNumPages[fileNum * 2]); gSaveContext.save.isOwlSave = true; @@ -1661,6 +1791,7 @@ void func_80147314(SramContext* sramCtx, s32 fileNum) { gSaveContext.save.saveInfo.playerData.newf[5] = '3'; } +// Used by `Sram_CopySave` with `isOwlSave` set void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2) { s32 pad; @@ -1668,16 +1799,18 @@ void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2) { bzero(sramCtx->saveBuf, SAVE_BUFFER_SIZE); // Read save file - if (SysFlashrom_ReadData(sramCtx->saveBuf, D_801C6840[fileNum * 2], D_801C6850[fileNum * 2]) != 0) { + if (SysFlashrom_ReadData(sramCtx->saveBuf, gFlashOwlSaveStartPages[fileNum * 2], + gFlashOwlSaveNumPages[fileNum * 2]) != 0) { // If failed, read backup save file - SysFlashrom_ReadData(sramCtx->saveBuf, D_801C6840[fileNum * 2 + 1], D_801C6850[fileNum * 2 + 1]); + SysFlashrom_ReadData(sramCtx->saveBuf, gFlashOwlSaveStartPages[fileNum * 2 + 1], + gFlashOwlSaveNumPages[fileNum * 2 + 1]); } // Copy buffer to save context Lib_MemCpy(&gSaveContext, sramCtx->saveBuf, offsetof(SaveContext, fileNum)); - func_80146EBC(sramCtx, D_801C6840[arg2 * 2], D_801C6850[arg2 * 2]); - func_80146EBC(sramCtx, D_801C6840[arg2 * 2 + 1], D_801C6850[arg2 * 2]); + Sram_SyncWriteToFlash(sramCtx, gFlashOwlSaveStartPages[arg2 * 2], gFlashOwlSaveNumPages[arg2 * 2]); + Sram_SyncWriteToFlash(sramCtx, gFlashOwlSaveStartPages[arg2 * 2 + 1], gFlashOwlSaveNumPages[arg2 * 2]); } void Sram_nop8014750C(UNK_TYPE4 arg0) { diff --git a/src/code/z_vr_box.c b/src/code/z_vr_box.c index 911e3e757..dd0785d94 100644 --- a/src/code/z_vr_box.c +++ b/src/code/z_vr_box.c @@ -239,7 +239,7 @@ void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) { case SKYBOX_NORMAL_SKY: osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); - if (play->envCtx.unk_10 == 0) { + if (play->envCtx.skybox1Index == 0) { // Send a DMA request for the clear sky texture size = SEGMENT_ROM_SIZE(d2_fine_static); @@ -256,7 +256,7 @@ void func_80143324(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) { osRecvMesg(&skyboxCtx->loadQueue, NULL, OS_MESG_BLOCK); osCreateMesgQueue(&skyboxCtx->loadQueue, &skyboxCtx->loadMsg, 1); - if (play->envCtx.unk_11 == 0) { + if (play->envCtx.skybox2Index == 0) { // Send a DMA request for the clear sky texture size = SEGMENT_ROM_SIZE(d2_fine_static); diff --git a/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c b/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c index 767d4c827..33c6eed8f 100644 --- a/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c +++ b/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.c @@ -74,8 +74,8 @@ void DmChar01_Init(Actor* thisx, PlayState* play) { } if (gSaveContext.sceneLayer == 0) { - play->envCtx.unk_1F = 5; - play->envCtx.unk_20 = 5; + play->envCtx.lightConfig = 5; + play->envCtx.changeLightNextConfig = 5; } this->unk_348 = 255.0f; 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 36415d7db..01a5b8c82 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -1129,8 +1129,8 @@ void DmStk_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.01f); if ((play->sceneId == SCENE_00KEIKOKU) && (gSaveContext.sceneLayer == 3) && (play->csCtx.scriptIndex > 0)) { - play->envCtx.unk_17 = 15; - play->envCtx.unk_18 = 15; + play->envCtx.skyboxConfig = 15; + play->envCtx.changeSkyboxNextConfig = 15; } } @@ -1826,8 +1826,8 @@ void DmStk_Update(Actor* thisx, PlayState* play) { } if ((play->sceneId == SCENE_00KEIKOKU) && (gSaveContext.sceneLayer == 3) && (play->csCtx.scriptIndex > 0)) { - play->envCtx.unk_17 = 15; - play->envCtx.unk_18 = 15; + play->envCtx.skyboxConfig = 15; + play->envCtx.changeSkyboxNextConfig = 15; } } diff --git a/src/overlays/actors/ovl_En_Holl/z_en_holl.c b/src/overlays/actors/ovl_En_Holl/z_en_holl.c index 9b196c2fc..ed3fe65b9 100644 --- a/src/overlays/actors/ovl_En_Holl/z_en_holl.c +++ b/src/overlays/actors/ovl_En_Holl/z_en_holl.c @@ -191,7 +191,7 @@ void EnHoll_VisibleIdle(EnHoll* this, PlayState* play) { } } else if (this->type == EN_HOLL_TYPE_SCENE_CHANGER) { play->nextEntrance = play->setupExitList[EN_HOLL_GET_EXIT_LIST_INDEX(&this->actor)]; - gSaveContext.unk_3DBB = 1; + gSaveContext.retainWeatherMode = true; Scene_SetExitFade(play); play->transitionTrigger = TRANS_TRIGGER_START; play->unk_1878C(play); diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c index 34551dac9..79bee615a 100644 --- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c +++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c @@ -78,8 +78,8 @@ void func_8089F014(EnViewer* this, PlayState* play, f32 arg2) { } play->envCtx.lightSettingOverride = 0; play->envCtx.unk_E0 = 2; - play->envCtx.unk_C1 = this->actor.world.rot.x; - play->envCtx.unk_C2 = this->actor.world.rot.z; + play->envCtx.lightSetting = this->actor.world.rot.x; + play->envCtx.prevLightSetting = this->actor.world.rot.z; play->envCtx.lightBlend = arg2; } @@ -94,7 +94,7 @@ void func_8089F0A0(EnViewer* this, PlayState* play) { func_800FAAB4( play, SurfaceType_GetLightSettingIndex(&play->colCtx, player->actor.floorPoly, player->actor.floorBgId)); play->envCtx.lightBlend = 1.0f; - play->envCtx.unk_C2 = play->envCtx.unk_C1; + play->envCtx.prevLightSetting = play->envCtx.lightSetting; } } 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 10be4ec3c..84f621915 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 @@ -99,8 +99,8 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) { case WEATHERTAG_TYPE_UNK5: func_800BC154(play, &play->actorCtx, &this->actor, 7); play->skyboxId = SKYBOX_3; - play->envCtx.unk_1F = 5; - play->envCtx.unk_20 = 5; + play->envCtx.lightConfig = 5; + play->envCtx.changeLightNextConfig = 5; D_801F4E74 = 1.0f; EnWeatherTag_SetupAction(this, func_80966BF4); break; @@ -124,25 +124,26 @@ void EnWeatherTag_Init(Actor* thisx, PlayState* play) { // matches but unused params is suspicious // called WeatherTag_CheckEnableWeatherEffect in OOT, that's where "weatherMode" came from -u8 func_80966608(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, u8 new1F, u8 new20, u16 new24, - u8 weatherMode) { +u8 func_80966608(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, u8 lightConfig, + u8 changeLightNextConfig, u16 changeDuration, u8 weatherMode) { Player* player = GET_PLAYER(play); u8 returnVal = 0; if (WEATHER_TAG_RANGE100(&this->actor) > Actor_WorldDistXZToActor(&player->actor, &this->actor)) { - if (play->envCtx.unk_1F == play->envCtx.unk_20) { + if (play->envCtx.lightConfig == play->envCtx.changeLightNextConfig) { D_801BDBB8 = 1; - if (!(play->envCtx.unk_1E == 0) || ((play->envCtx.unk_1F != 1) && (play->envCtx.unk_21 == 0))) { + if (!(play->envCtx.lightMode == 0) || + ((play->envCtx.lightConfig != 1) && !play->envCtx.changeLightEnabled)) { D_801BDBB8 = 0; if (gWeatherMode != weatherMode) { gWeatherMode = weatherMode; - play->envCtx.unk_21 = 1; - play->envCtx.unk_1F = new1F; - play->envCtx.unk_20 = new20; - D_801BDBB4 = new20; - play->envCtx.unk_24 = new24; - play->envCtx.unk_22 = play->envCtx.unk_24; + play->envCtx.changeLightEnabled = true; + play->envCtx.lightConfig = lightConfig; + play->envCtx.changeLightNextConfig = changeLightNextConfig; + D_801BDBB4 = changeLightNextConfig; + play->envCtx.changeDuration = changeDuration; + play->envCtx.changeLightTimer = play->envCtx.changeDuration; } returnVal = 1; } @@ -153,23 +154,25 @@ u8 func_80966608(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, // again with the unused parameters // called WeatherTag_CheckRestoreWeather in OOT -u8 func_80966758(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, u8 new1F, u8 new20, u16 new24) { +u8 func_80966758(EnWeatherTag* this, PlayState* play, UNK_TYPE a3, UNK_TYPE a4, u8 lightConfig, + u8 changeLightNextConfig, u16 changeDuration) { Player* player = GET_PLAYER(play); u8 returnVal = 0; if (WEATHER_TAG_RANGE100(&this->actor) < Actor_WorldDistXZToActor(&player->actor, &this->actor)) { - if (play->envCtx.unk_1F == play->envCtx.unk_20) { + if (play->envCtx.lightConfig == play->envCtx.changeLightNextConfig) { D_801BDBB8 = 1; - if (!(play->envCtx.unk_1E == 0) || ((play->envCtx.unk_1F != 1) && (play->envCtx.unk_21 == 0))) { + if (!(play->envCtx.lightMode == 0) || + ((play->envCtx.lightConfig != 1) && !play->envCtx.changeLightEnabled)) { D_801BDBB8 = 0; gWeatherMode = 0; - play->envCtx.unk_21 = 1; - play->envCtx.unk_1F = new1F; - play->envCtx.unk_20 = new20; - D_801BDBB4 = new20; - play->envCtx.unk_24 = new24; - play->envCtx.unk_22 = play->envCtx.unk_24; + play->envCtx.changeLightEnabled = true; + play->envCtx.lightConfig = lightConfig; + play->envCtx.changeLightNextConfig = changeLightNextConfig; + D_801BDBB4 = changeLightNextConfig; + play->envCtx.changeDuration = changeDuration; + play->envCtx.changeLightTimer = play->envCtx.changeDuration; returnVal = 1; } } @@ -240,7 +243,7 @@ void EnWeatherTag_Die(EnWeatherTag* this, PlayState* play) { // poisoned swamp: placed behind the water fall from ikana // this tag stops spawning after STT cleared? void func_80966B08(EnWeatherTag* this, PlayState* play) { - if (func_80966608(this, play, 0, 0, play->envCtx.unk_1F, 5, 100, 2) || (gWeatherMode == 2)) { + if (func_80966608(this, play, 0, 0, play->envCtx.lightConfig, 5, 100, 2) || (gWeatherMode == 2)) { play->skyboxId = SKYBOX_3; EnWeatherTag_SetupAction(this, func_80966D20); } else if (D_801F4E74 <= 0.01f) { @@ -253,7 +256,7 @@ void func_80966B08(EnWeatherTag* this, PlayState* play) { // WEATHERTAG_TYPE_UNK5: only one in ikana canyon, corner of cliff right outside of stone tower entrance // because it uses cutsecnes.. is this the clear ikana cutcsene? void func_80966BF4(EnWeatherTag* this, PlayState* play) { - u8 newUnk20; + u8 changeLightNextConfig; CsCmdActorCue* cue; if (Cutscene_IsCueInChannel(play, CS_CMD_ACTOR_CUE_567)) { @@ -263,25 +266,25 @@ void func_80966BF4(EnWeatherTag* this, PlayState* play) { case 0: case 1: default: - - newUnk20 = 0; + changeLightNextConfig = 0; break; + case 2: - newUnk20 = 3; + changeLightNextConfig = 3; break; case 3: - newUnk20 = 4; + changeLightNextConfig = 4; break; } Math_SmoothStepToF(&D_801F4E74, 0.0f, 0.2f, 0.02f, 0.001f); - if (play->envCtx.unk_20 != newUnk20) { - play->envCtx.unk_21 = 1; - play->envCtx.unk_20 = newUnk20; - play->envCtx.unk_24 = 100; - play->envCtx.unk_22 = play->envCtx.unk_24; + if (play->envCtx.changeLightNextConfig != changeLightNextConfig) { + play->envCtx.changeLightEnabled = true; + play->envCtx.changeLightNextConfig = changeLightNextConfig; + play->envCtx.changeDuration = 100; + play->envCtx.changeLightTimer = play->envCtx.changeDuration; } } } diff --git a/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c b/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c index 6431a558b..a17f853df 100644 --- a/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c +++ b/src/overlays/actors/ovl_Obj_Grass/z_obj_grass.c @@ -4,6 +4,7 @@ * Description: "Master" instance of grass for unit spawned by Obj_Grass_Unit */ +#include "prevent_bss_reordering.h" #include "z_obj_grass.h" #include "overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.h" #include "objects/gameplay_keep/gameplay_keep.h" diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 5da69099e..41cf34318 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -5734,7 +5734,7 @@ void func_808354A4(PlayState* play, s32 arg1, s32 arg2) { gSaveContext.respawnFlag = -2; } - gSaveContext.unk_3DBB = 1; + gSaveContext.retainWeatherMode = 1; Scene_SetExitFade(play); } @@ -16454,7 +16454,7 @@ void func_8085269C(Player* this, PlayState* play) { (play->msgCtx.ocarinaMode == 0x18) || (play->msgCtx.ocarinaMode == 0x19)) { if (play->msgCtx.ocarinaMode == 0x16) { if (!func_8082DA90(play)) { - if (gSaveContext.save.saveInfo.playerData.deaths == 1) { + if (gSaveContext.save.saveInfo.playerData.threeDayResetCount == 1) { play->nextEntrance = ENTRANCE(CUTSCENE, 1); } else { play->nextEntrance = ENTRANCE(CUTSCENE, 0); diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose.h b/src/overlays/gamestates/ovl_file_choose/z_file_choose.h deleted file mode 100644 index f3231ec56..000000000 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose.h +++ /dev/null @@ -1,115 +0,0 @@ -#ifndef Z64_FILE_CHOOSE_H -#define Z64_FILE_CHOOSE_H - -#include "global.h" - -void FileSelect_Init(GameState* thisx); -void FileSelect_Destroy(GameState* thisx); - -typedef struct FileSelectState { - /* 0x00000 */ GameState state; - /* 0x000A4 */ Vtx* unk_A4; - /* 0x000A8 */ u8* staticSegment; - /* 0x000AC */ u8* parameterSegment; - /* 0x000B0 */ u8* titleSegment; - /* 0x000B8 */ View view; - /* 0x00220 */ SramContext sramCtx; - /* 0x00248 */ SkyboxContext skyboxCtx; - /* 0x00470 */ MessageContext msgCtx; - /* 0x12550 */ Font font; - /* 0x242E0 */ EnvironmentContext envCtx; - /* 0x243E0 */ Vtx* unk_243E0; - /* 0x243E4 */ Vtx* unk_243E4; - /* 0x243E8 */ u8 newf2[2][6]; - /* 0x243F4 */ u8 newf[2][6]; - /* 0x24400 */ UNK_TYPE1 unk_24400[0xC]; - /* 0x2440C */ u16 unk_2440C[2]; - /* 0x24410 */ u16 unk_24410[2]; - /* 0x24414 */ u8 unk_24414[2][8]; // playername - /* 0x24424 */ u8 unk_24424[2][8]; // playername - /* 0x24434 */ s16 healthCapacity[2]; - /* 0x24438 */ u16 unk_24438[2]; - /* 0x2443C */ s16 health[2]; - /* 0x24440 */ u16 unk_24440[2]; - /* 0x24444 */ u32 unk_24444[2]; - /* 0x2444C */ u32 unk_2444C[2]; - /* 0x24454 */ s8 unk_24454[2]; - /* 0x24456 */ u8 unk_24456[2]; - /* 0x24458 */ u16 unk_24458[2]; - /* 0x2445C */ u16 unk_2445C[2]; - /* 0x24460 */ s16 unk_24460[2]; - /* 0x24464 */ s16 unk_24464[2]; - /* 0x24468 */ u8 unk_24468[2]; - /* 0x2446A */ u8 unk_2446A[2]; - /* 0x2446C */ s16 rupees[2]; - /* 0x24470 */ s16 unk_24470[2]; - /* 0x24474 */ s8 unk_24474[2]; - /* 0x24476 */ s8 unk_24476[2]; - /* 0x24478 */ s8 maskCount[2]; - /* 0x2447A */ s8 unk_2447A[2]; - /* 0x2447C */ s8 heartPieceCount[2]; - /* 0x2447E */ s8 unk_2447E[2]; - /* 0x24480 */ s16 unk_24480; - /* 0x24482 */ s16 unk_24482; - /* 0x24484 */ s16 unk_24484; - /* 0x24486 */ s16 unk_24486; - /* 0x24488 */ s16 unk_24488; - /* 0x2448A */ s16 unk_2448A; - /* 0x2448C */ s16 unk_2448C; - /* 0x2448E */ s16 unk_2448E; - /* 0x24490 */ s16 unk_24490; - /* 0x24492 */ s16 unk_24492[3]; - /* 0x24498 */ s16 unk_24498; - /* 0x2449A */ s16 unk_2449A[6]; - /* 0x244A6 */ s16 fileNum; - /* 0x244A8 */ s16 unk_244A8; - /* 0x244AA */ s16 unk_244AA; - /* 0x244AC */ s16 unk_244AC; - /* 0x244AE */ s16 unk_244AE; - /* 0x244B0 */ s16 unk_244B0[3]; - /* 0x244B6 */ s16 unk_244B6[2]; - /* 0x244BA */ s16 unk_244BA; - /* 0x244BC */ s16 unk_244BC[3]; - /* 0x244C2 */ s16 unk_244C2[3]; - /* 0x244C8 */ s16 unk_244C8[3]; - /* 0x244CE */ s16 unk_244CE[3]; - /* 0x244D4 */ s16 unk_244D4[3]; - /* 0x244DA */ s16 unk_244DA[4]; - /* 0x244E2 */ s16 unk_244E2; - /* 0x244E4 */ s16 unk_244E4; - /* 0x244E6 */ s16 unk_244E6; - /* 0x244E8 */ s16 unk_244E8; - /* 0x244EA */ s16 unk_244EA[4]; - /* 0x244F2 */ s16 unk_244F2; - /* 0x244F4 */ s16 unk_244F4; - /* 0x244F6 */ s16 unk_244F6[2]; - /* 0x244FA */ s16 unk_244FA; - /* 0x244FC */ s16 unk_244FC; - /* 0x244FE */ s16 unk_244FE; - /* 0x24500 */ s16 unk_24500; - /* 0x24502 */ s16 unk_24502; - /* 0x24504 */ s16 unk_24504; - /* 0x24506 */ s16 unk_24506; - /* 0x24508 */ s16 unk_24508; - /* 0x2450A */ s16 unk_2450A; - /* 0x2450C */ f32 unk_2450C; - /* 0x24510 */ s16 unk_24510; - /* 0x24512 */ s16 unk_24512; - /* 0x24514 */ s16 unk_24514; - /* 0x24516 */ s16 unk_24516; - /* 0x24518 */ s16 unk_24518; - /* 0x2451A */ s16 unk_2451A; - /* 0x2451C */ s16 unk_2451C; - /* 0x2451E */ s16 unk_2451E[5]; - /* 0x24528 */ s16 unk_24528; - /* 0x2452A */ s16 unk_2452A; - /* 0x2452C */ s16 unk_2452C[4]; - /* 0x24534 */ s16 unk_24534[4]; - /* 0x2453C */ s16 unk_2453C[4]; - /* 0x24544 */ s16 unk_24544[4]; - /* 0x2454C */ s16 unk_2454C; - /* 0x2454E */ s16 unk_2454E; - /* 0x24550 */ s16 unk_24550; -} FileSelectState; // size = 0x24558 - -#endif diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose_80807940.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose_80807940.c deleted file mode 100644 index 2e0e9a0d4..000000000 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose_80807940.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * File: z_file_choose_80807940.c - * Overlay: ovl_file_choose - * Description: - */ - -#include "z_file_choose.h" -#include "z64rumble.h" - -extern UNK_TYPE D_01002800; -extern UNK_TYPE D_01007980; -extern UNK_TYPE D_0102A6B0; -extern UNK_TYPE D_0102B170; -extern UNK_TYPE D_010310F0; -extern UNK_TYPE D_010311F0; - -// there are uses of D_0E000000.fillRect (appearing as D_0E0002E0) in this file -extern GfxMasterList D_0E000000; - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80807940.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80807A78.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80807C58.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80808214.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80808D30.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80808F1C.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80809DF0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80809EA0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080A3CC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080A418.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080A4A0.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080A6BC.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080A708.s") - -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080BBFC.s") diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c b/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c index da9144e7c..0cc43ad50 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_choose_NES.c @@ -4,96 +4,2545 @@ * Description: */ -#include "z_file_choose.h" +#include "z_file_select.h" +#include "overlays/gamestates/ovl_opening/z_opening.h" #include "z64rumble.h" +#include "z64save.h" #include "z64shrink_window.h" #include "z64view.h" +#include "interface/parameter_static/parameter_static.h" +#include "misc/title_static/title_static.h" -extern UNK_TYPE D_01002800; -extern UNK_TYPE D_01007980; -extern UNK_TYPE D_0102A6B0; -extern UNK_TYPE D_0102B170; -extern UNK_TYPE D_010310F0; -extern UNK_TYPE D_010311F0; +s32 D_808144F10 = 100; +f32 D_808144F14 = 8.0f; +f32 D_808144F18 = 100.0f; +s32 D_808144F1C = 0; -// there are uses of D_0E000000.fillRect (appearing as D_0E0002E0) in this file -extern GfxMasterList D_0E000000; +static Gfx sScreenFillSetupDL[] = { + gsDPPipeSync(), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH), + gsDPSetOtherMode(G_AD_DISABLE | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | + G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_1PRIMITIVE, + G_AC_NONE | G_ZS_PIXEL | G_RM_CLD_SURF | G_RM_CLD_SURF2), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PRIMITIVE), + gsSPEndDisplayList(), +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080BC20.s") +s16 sFileInfoBoxPartWidths[] = { + 36, 36, 36, 36, 24, 28, 28, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_nop8080bc44.s") +s16 sWindowContentColors[] = { 100, 150, 255 }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_nop8080BC4C.s") +s16 sFileSelectSkyboxRotation = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080BC58.s") +s16 sWalletFirstDigit[] = { + 1, // tens (Default Wallet) + 0, // hundreds (Adult Wallet) + 0, // hundreds (Giant Wallet) +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080BDAC.s") +void FileSelect_IncrementConfigMode(FileSelectState* this) { + this->configMode++; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_RenderView.s") +void FileSelect_Noop1(void) { +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080BE60.s") +void FileSelect_Noop2(FileSelectState* this) { +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080C040.s") +void FileSelect_InitModeUpdate(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080C228.s") + if (this->configMode == CM_FADE_IN_START) { + if (gSaveContext.options.optionId != 0xA51D) { // Magic number? + this->configMode++; + } else { + this->menuMode = FS_MENU_MODE_CONFIG; + this->configMode = CM_FADE_IN_START; + this->titleLabel = FS_TITLE_SELECT_FILE; + this->nextTitleLabel = FS_TITLE_OPEN_FILE; + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080C29C.s") + if (this->configMode == CM_FADE_IN_END) { + this->screenFillAlpha -= 40; + if (this->screenFillAlpha <= 0) { + this->screenFillAlpha = 0; + this->configMode++; // CM_MAIN_MENU + } + } else if (this->configMode == CM_MAIN_MENU) { + FileSelect_IncrementConfigMode(this); // CM_SETUP_COPY_SOURCE + } else { + this->screenFillAlpha += 40; + if (this->screenFillAlpha >= 255) { + this->screenFillAlpha = 255; + this->menuMode = FS_MENU_MODE_CONFIG; + this->configMode = CM_FADE_IN_START; + this->titleLabel = FS_TITLE_SELECT_FILE; + this->nextTitleLabel = FS_TITLE_OPEN_FILE; + } + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080C324.s") +void FileSelect_InitModeDraw(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080C3A8.s") + Gfx_SetupDL39_Opa(this->state.gfxCtx); + FileSelect_Noop2(this); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D164.s") +void FileSelect_SetView(FileSelectState* this, f32 eyeX, f32 eyeY, f32 eyeZ) { + Vec3f eye; + Vec3f lookAt; + Vec3f up; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D170.s") + eye.x = eyeX; + eye.y = eyeY; + eye.z = eyeZ; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D1BC.s") + lookAt.x = lookAt.y = lookAt.z = 0.0f; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D220.s") + up.x = up.z = 0.0f; + up.y = 1.0f; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D284.s") + View_LookAt(&this->view, &eye, &lookAt, &up); + View_Apply(&this->view, VIEW_ALL | VIEW_FORCE_VIEWING | VIEW_FORCE_VIEWPORT | VIEW_FORCE_PROJECTION_PERSPECTIVE); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D2EC.s") +Gfx* FileSelect_DrawTexQuadIA8(Gfx* gfx, TexturePtr texture, s16 width, s16 height, s16 point) { + gDPLoadTextureBlock(gfx++, texture, G_IM_FMT_IA, G_IM_SIZ_8b, width, height, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D3D0.s") + gSP1Quadrangle(gfx++, point, point + 2, point + 3, point + 1, 0); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D40C.s") + return gfx; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080D6D4.s") +/** + * Fade in the menu window and title label. + * If a file is occupied fade in the name, name box, and connector. + * Fade in the copy erase and options button according to the window alpha. + */ +void FileSelect_FadeInMenuElements(FileSelectState* this) { + SramContext* sramCtx = &this->sramCtx; + s16 i; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080F25C.s") + this->titleAlpha[FS_TITLE_CUR] += 20; + this->windowAlpha += 16; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808108DC.s") + for (i = 0; i < 3; i++) { + this->fileButtonAlpha[i] = this->windowAlpha; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80811CB8.s") + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->windowAlpha; + this->connectorAlpha[i] += 20; + if (this->connectorAlpha[i] >= 255) { + this->connectorAlpha[i] = 255; + } + } + } else if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->windowAlpha; + this->connectorAlpha[i] += 20; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812460.s") + if (this->connectorAlpha[i] >= 255) { + this->connectorAlpha[i] = 255; + } + } + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812668.s") + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->optionButtonAlpha = this->windowAlpha; +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812760.s") +/** + * Converts a numerical value to hundreds-tens-ones digits + */ +void FileSelect_SplitNumber(u16 value, u16* hundreds, u16* tens, u16* ones) { + *hundreds = 0; + *tens = 0; + *ones = value; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812840.s") + do { + if ((*ones - 100) < 0) { + break; + } + (*hundreds)++; + *ones -= 100; + } while (true); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812980.s") + do { + if ((*ones - 10) < 0) { + break; + } + (*tens)++; + *ones -= 10; + } while (true); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812A6C.s") +// Start of Config Mode Update Functions -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812D44.s") +/** + * Reduce the alpha of the black screen fill to create a fade in effect. + * Additionally, slide the window from the right to the center of the screen. + * Update function for `CM_FADE_IN_START` + */ +void FileSelect_StartFadeIn(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812D94.s") + FileSelect_FadeInMenuElements(this); + this->screenFillAlpha -= 40; + this->windowPosX -= 20; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812E94.s") + if (this->windowPosX <= -94) { + this->windowPosX = -94; + this->configMode = CM_FADE_IN_END; + this->screenFillAlpha = 0; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80812ED0.s") +/** + * Finish fading in the remaining menu elements. + * Fade in the controls text at the bottom of the screen. + * Update function for `CM_FADE_IN_END` + */ +void FileSelect_FinishFadeIn(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_UpdateAndDrawSkybox.s") + this->controlsAlpha += 20; + FileSelect_FadeInMenuElements(this); -void FileSelect_Main(GameState* thisx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_Main.s") + if (this->titleAlpha[FS_TITLE_CUR] >= 255) { + this->titleAlpha[FS_TITLE_CUR] = 255; + this->controlsAlpha = 255; + this->windowAlpha = 200; + this->configMode = CM_MAIN_MENU; + } +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80813908.s") +u8 sEmptyName[] = { 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E, 0x3E }; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_Destroy.s") +/** + * Update the cursor and wait for the player to select a button to change menus accordingly. + * If an empty file is selected, enter the name entry config mode. + * If an occupied file is selected, enter the `Select` menu mode. + * If copy, erase, or options is selected, set config mode accordingly. + * Lastly, set any warning labels if appropriate. + * Update function for `CM_MAIN_MENU` + */ +void FileSelect_UpdateMainMenu(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_Init.s") + if (CHECK_BTN_ALL(input->press.button, BTN_START) || CHECK_BTN_ALL(input->press.button, BTN_A)) { + if (this->buttonIndex <= FS_BTN_MAIN_FILE_3) { + if (!gSaveContext.flashSaveAvailable) { + if (!NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->configMode = CM_ROTATE_TO_NAME_ENTRY; + this->kbdButton = FS_KBD_BTN_NONE; + this->charPage = FS_CHAR_PAGE_HIRA; + if (gSaveContext.options.language != 0) { + this->charPage = FS_CHAR_PAGE_ENG; + } + this->kbdX = 0; + this->kbdY = 0; + this->charIndex = 0; + this->charBgAlpha = 0; + this->newFileNameCharCount = 0; + this->nameEntryBoxPosX = 120; + this->nameEntryBoxAlpha = 0; + Lib_MemCpy(&this->fileNames[this->buttonIndex], &sEmptyName, ARRAY_COUNT(sEmptyName)); + } else { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->actionTimer = 4; + this->selectMode = SM_FADE_MAIN_TO_SELECT; + this->selectedFileIndex = this->buttonIndex; + this->menuMode = FS_MENU_MODE_SELECT; + this->nextTitleLabel = FS_TITLE_OPEN_FILE; + } + } else if (!SLOT_OCCUPIED(this, this->buttonIndex)) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->configMode = CM_ROTATE_TO_NAME_ENTRY; + this->kbdButton = FS_KBD_BTN_NONE; + this->charPage = FS_CHAR_PAGE_HIRA; + if (gSaveContext.options.language != 0) { + this->charPage = FS_CHAR_PAGE_ENG; + } + this->kbdX = 0; + this->kbdY = 0; + this->charIndex = 0; + this->charBgAlpha = 0; + this->newFileNameCharCount = 0; + this->nameEntryBoxPosX = 120; + this->nameEntryBoxAlpha = 0; + Lib_MemCpy(&this->fileNames[this->buttonIndex], &sEmptyName, ARRAY_COUNT(sEmptyName)); + } else { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->actionTimer = 4; + this->selectMode = SM_FADE_MAIN_TO_SELECT; + this->selectedFileIndex = this->buttonIndex; + this->menuMode = FS_MENU_MODE_SELECT; + this->nextTitleLabel = FS_TITLE_OPEN_FILE; + } + } else if (this->warningLabel == FS_WARNING_NONE) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->prevConfigMode = this->configMode; + + if (this->buttonIndex == FS_BTN_MAIN_COPY) { + this->configMode = CM_SETUP_COPY_SOURCE; + this->nextTitleLabel = FS_TITLE_COPY_FROM; + } else if (this->buttonIndex == FS_BTN_MAIN_ERASE) { + this->configMode = CM_SETUP_ERASE_SELECT; + this->nextTitleLabel = FS_TITLE_ERASE_FILE; + } else { + this->configMode = CM_MAIN_TO_OPTIONS; + this->kbdButton = FS_KBD_BTN_HIRA; + this->kbdX = 0; + this->kbdY = 0; + this->charBgAlpha = 0; + this->newFileNameCharCount = 0; + this->nameEntryBoxPosX = 120; + } + this->actionTimer = 4; + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + gSaveContext.gameMode = GAMEMODE_TITLE_SCREEN; + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, TitleSetup_Init, sizeof(TitleSetupState)); + } else { + if (ABS_ALT(this->stickAdjY) > 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + if (this->stickAdjY > 30) { + this->buttonIndex--; + if (this->buttonIndex == FS_BTN_MAIN_FILE_3) { + this->buttonIndex = FS_BTN_MAIN_FILE_2; + } + if (this->buttonIndex < FS_BTN_MAIN_FILE_1) { + this->buttonIndex = FS_BTN_MAIN_OPTIONS; + } + } else { + this->buttonIndex++; + if (this->buttonIndex == FS_BTN_MAIN_FILE_3) { + this->buttonIndex = FS_BTN_MAIN_COPY; + } + if (this->buttonIndex > FS_BTN_MAIN_OPTIONS) { + this->buttonIndex = FS_BTN_MAIN_FILE_1; + } + } + } + + if (this->buttonIndex == FS_BTN_MAIN_COPY) { + if (!gSaveContext.flashSaveAvailable) { + if (!NO_FLASH_SLOT_OCCUPIED(sramCtx, 0) && !NO_FLASH_SLOT_OCCUPIED(sramCtx, 1) && + !NO_FLASH_SLOT_OCCUPIED(sramCtx, 2)) { + this->warningButtonIndex = this->buttonIndex; + this->warningLabel = FS_WARNING_NO_FILE_COPY; + this->emptyFileTextAlpha = 255; + } else if (NO_FLASH_SLOT_OCCUPIED(sramCtx, 0) && NO_FLASH_SLOT_OCCUPIED(sramCtx, 1) && + NO_FLASH_SLOT_OCCUPIED(sramCtx, 2)) { + this->warningButtonIndex = this->buttonIndex; + this->warningLabel = FS_WARNING_NO_EMPTY_FILES; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } else { + if (!SLOT_OCCUPIED(this, 0) && !SLOT_OCCUPIED(this, 1) && !SLOT_OCCUPIED(this, 2)) { + this->warningButtonIndex = this->buttonIndex; + this->warningLabel = FS_WARNING_NO_FILE_COPY; + this->emptyFileTextAlpha = 255; + } else if (SLOT_OCCUPIED(this, 0) && SLOT_OCCUPIED(this, 1) && SLOT_OCCUPIED(this, 2)) { + this->warningButtonIndex = this->buttonIndex; + this->warningLabel = FS_WARNING_NO_EMPTY_FILES; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } + } else if (this->buttonIndex == FS_BTN_MAIN_ERASE) { + if (!gSaveContext.flashSaveAvailable) { + if (!NO_FLASH_SLOT_OCCUPIED(sramCtx, 0) && !NO_FLASH_SLOT_OCCUPIED(sramCtx, 1) && + !NO_FLASH_SLOT_OCCUPIED(sramCtx, 2)) { + this->warningButtonIndex = this->buttonIndex; + this->warningLabel = FS_WARNING_NO_FILE_ERASE; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } else { + if (!SLOT_OCCUPIED(this, 0) && !SLOT_OCCUPIED(this, 1) && !SLOT_OCCUPIED(this, 2)) { + this->warningButtonIndex = this->buttonIndex; + this->warningLabel = FS_WARNING_NO_FILE_ERASE; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } + } else { + this->warningLabel = FS_WARNING_NONE; + } + } +} + +/** + * Update function for `CM_UNUSED_31` + */ +void FileSelect_UnusedCM31(GameState* thisx) { +} + +/** + * Delay the next config mode from running until `D_80814564` reaches 254. + * Because the timer increments by 2, the delay is 127 frames (assuming the value was not changed by reg editor). + * Unused in the final game, was possibly used for debugging. + * Update function for `CM_UNUSED_DELAY` + */ +void FileSelect_UnusedCMDelay(GameState* thisx) { + static s16 D_80814564 = 0; + FileSelectState* this = (FileSelectState*)thisx; + + D_80814564 += 2; + + if (D_80814564 == 254) { + this->configMode = this->nextConfigMode; + D_80814564 = 0; + } +} + +/** + * Rotate the window from the main menu to the name entry menu. + * Update function for `CM_ROTATE_TO_NAME_ENTRY` + */ +void FileSelect_RotateToNameEntry(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->windowRot += 50.0f; + + if (this->windowRot >= 314.0f) { + this->windowRot = 314.0f; + this->configMode = CM_START_NAME_ENTRY; + } +} + +/** + * Rotate the window from the main menu to the options menu. + * Update function for `CM_MAIN_TO_OPTIONS` + */ +void FileSelect_RotateToOptions(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->windowRot += 50.0f; + + if (this->windowRot >= 314.0f) { + this->windowRot = 314.0f; + this->configMode = CM_START_OPTIONS; + } +} + +/** + * Rotate the window from the options menu to the main menu. + * Update function for `CM_NAME_ENTRY_TO_MAIN` and `CM_OPTIONS_TO_MAIN` + */ +void FileSelect_RotateToMain(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->windowRot += 50.0f; + + if (this->windowRot >= 628.0f) { + this->windowRot = 0.0f; + this->configMode = CM_MAIN_MENU; + } +} + +void (*sConfigModeUpdateFuncs[])(GameState*) = { + // Main Menu + FileSelect_StartFadeIn, // CM_FADE_IN_START + FileSelect_FinishFadeIn, // CM_FADE_IN_END + FileSelect_UpdateMainMenu, // CM_MAIN_MENU + // Copy File + FileSelect_SetupCopySource, // CM_SETUP_COPY_SOURCE + FileSelect_SelectCopySource, // CM_SELECT_COPY_SOURCE + FileSelect_SetupCopyDest1, // CM_SETUP_COPY_DEST_1 + FileSelect_SetupCopyDest2, // CM_SETUP_COPY_DEST_2 + FileSelect_SelectCopyDest, // CM_SELECT_COPY_DEST + FileSelect_ExitToCopySource1, // CM_EXIT_TO_COPY_SOURCE_1 + FileSelect_ExitToCopySource2, // CM_EXIT_TO_COPY_SOURCE_2 + FileSelect_SetupCopyConfirm1, // CM_SETUP_COPY_CONFIRM_1 + FileSelect_SetupCopyConfirm2, // CM_SETUP_COPY_CONFIRM_2 + FileSelect_CopyConfirm, // CM_COPY_CONFIRM + FileSelect_CopyWaitForFlashSave, // CM_COPY_WAIT_FOR_FLASH_SAVE + FileSelect_ReturnToCopyDest, // CM_RETURN_TO_COPY_DEST + FileSelect_CopyAnim1, // CM_COPY_ANIM_1 + FileSelect_CopyAnim2, // CM_COPY_ANIM_2 + FileSelect_CopyAnim3, // CM_COPY_ANIM_3 + FileSelect_CopyAnim4, // CM_COPY_ANIM_4 + FileSelect_CopyAnim5, // CM_COPY_ANIM_5 + FileSelect_ExitCopyToMain, // CM_COPY_RETURN_MAIN + // Erase File + FileSelect_SetupEraseSelect, // CM_SETUP_ERASE_SELECT + FileSelect_EraseSelect, // CM_ERASE_SELECT + FileSelect_SetupEraseConfirm1, // CM_SETUP_ERASE_CONFIRM_1 + FileSelect_SetupEraseConfirm2, // CM_SETUP_ERASE_CONFIRM_2 + FileSelect_EraseConfirm, // CM_ERASE_CONFIRM + FileSelect_ExitToEraseSelect1, // CM_EXIT_TO_ERASE_SELECT_1 + FileSelect_ExitToEraseSelect2, // CM_EXIT_TO_ERASE_SELECT_2 + FileSelect_EraseAnim1, // CM_ERASE_ANIM_1 + FileSelect_EraseWaitForFlashSave, // CM_ERASE_WAIT_FOR_FLASH_SAVE + FileSelect_EraseAnim2, // CM_ERASE_ANIM_2 + FileSelect_EraseAnim3, // CM_ERASE_ANIM_3 + FileSelect_ExitEraseToMain, // CM_EXIT_ERASE_TO_MAIN + FileSelect_UnusedCM31, // CM_UNUSED_31 + // New File Name Entry + FileSelect_RotateToNameEntry, // CM_ROTATE_TO_NAME_ENTRY + FileSelect_StartNameEntry, // CM_START_NAME_ENTRY + FileSelect_UpdateKeyboardCursor, // CM_NAME_ENTRY + FileSelect_NameEntryWaitForFlashSave, // CM_NAME_ENTRY_WAIT_FOR_FLASH_SAVE + FileSelect_RotateToMain, // CM_NAME_ENTRY_TO_MAIN + // Options + FileSelect_RotateToOptions, // CM_MAIN_TO_OPTIONS + FileSelect_StartOptions, // CM_START_OPTIONS + FileSelect_UpdateOptionsMenu, // CM_OPTIONS_MENU + FileSelect_OptionsWaitForFlashSave, // CM_OPTIONS_WAIT_FOR_FLASH_SAVE + FileSelect_RotateToMain, // CM_OPTIONS_TO_MAIN + // Possible Debug + FileSelect_UnusedCMDelay, // CM_UNUSED_DELAY +}; + +s16 sCursorAlphaTargets[] = { 70, 200 }; + +/** + * Updates the alpha of the cursor to make it pulsate. + */ +void FileSelect_PulsateCursor(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s32 alphaStep = + ABS_ALT(this->highlightColor[3] - sCursorAlphaTargets[this->highlightPulseDir]) / this->highlightTimer; + + if (this->highlightColor[3] >= sCursorAlphaTargets[this->highlightPulseDir]) { + this->highlightColor[3] -= alphaStep; + } else { + this->highlightColor[3] += alphaStep; + } + + this->highlightTimer--; + + if (this->highlightTimer == 0) { + this->highlightColor[3] = sCursorAlphaTargets[this->highlightPulseDir]; + this->highlightTimer = 20; + this->highlightPulseDir ^= 1; + } +} + +void FileSelect_ConfigModeUpdate(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + sConfigModeUpdateFuncs[this->configMode](&this->state); +} + +void FileSelect_SetWindowVtx(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 i; + s16 j; + s16 x; + s32 tmp; + s32 tmp2; + s32 tmp3; + + this->windowVtx = GRAPH_ALLOC(this->state.gfxCtx, 80 * sizeof(Vtx)); + tmp = this->windowPosX - 90; + + for (x = 0, i = 0; i < 4; i++) { + tmp += 0x40; + tmp2 = (i == 3) ? 0x30 : 0x40; + + for (j = 0, tmp3 = 0x50; j < 5; j++, x += 4, tmp3 -= 0x20) { + this->windowVtx[x].v.ob[0] = this->windowVtx[x + 2].v.ob[0] = tmp; + + this->windowVtx[x + 1].v.ob[0] = this->windowVtx[x + 3].v.ob[0] = tmp2 + tmp; + + this->windowVtx[x].v.ob[1] = this->windowVtx[x + 1].v.ob[1] = tmp3; + + this->windowVtx[x + 2].v.ob[1] = this->windowVtx[x + 3].v.ob[1] = tmp3 - 0x20; + + this->windowVtx[x].v.ob[2] = this->windowVtx[x + 1].v.ob[2] = this->windowVtx[x + 2].v.ob[2] = + this->windowVtx[x + 3].v.ob[2] = 0; + + this->windowVtx[x].v.flag = this->windowVtx[x + 1].v.flag = this->windowVtx[x + 2].v.flag = + this->windowVtx[x + 3].v.flag = 0; + + this->windowVtx[x].v.tc[0] = this->windowVtx[x].v.tc[1] = this->windowVtx[x + 1].v.tc[1] = + this->windowVtx[x + 2].v.tc[0] = 0; + + this->windowVtx[x + 1].v.tc[0] = this->windowVtx[x + 3].v.tc[0] = tmp2 << 5; + + this->windowVtx[x + 2].v.tc[1] = this->windowVtx[x + 3].v.tc[1] = 32 << 5; + + this->windowVtx[x].v.cn[0] = this->windowVtx[x + 2].v.cn[0] = this->windowVtx[x].v.cn[1] = + this->windowVtx[x + 2].v.cn[1] = this->windowVtx[x].v.cn[2] = this->windowVtx[x + 2].v.cn[2] = + this->windowVtx[x + 1].v.cn[0] = this->windowVtx[x + 3].v.cn[0] = this->windowVtx[x + 1].v.cn[1] = + this->windowVtx[x + 3].v.cn[1] = this->windowVtx[x + 1].v.cn[2] = + this->windowVtx[x + 3].v.cn[2] = this->windowVtx[x].v.cn[3] = + this->windowVtx[x + 2].v.cn[3] = this->windowVtx[x + 1].v.cn[3] = + this->windowVtx[x + 3].v.cn[3] = 255; + } + } +} + +s16 D_80814620[] = { 8, 8, 8, 0 }; +s16 D_80814628[] = { 12, 12, 12, 0 }; +s16 D_80814630[] = { 12, 12, 12, 0 }; +s16 D_80814638[] = { + 88, 104, 120, 940, 944, 948, +}; +s16 D_80814644[] = { 88, 104, 120, 944 }; +s16 D_8081464C[] = { 940, 944 }; +s16 D_80814650[] = { 940, 944 }; + +/* + * fileSelect->windowContentVtx[0] -> Title Label (4) + * + * fileSelect->windowContentVtx[4] -> File 1 InfoBox (28) + * fileSelect->windowContentVtx[32] -> File 2 InfoBox (28) + * fileSelect->windowContentVtx[60] -> File 3 InfoBox (28) + * + * ** FILE 1 ** + * + * fileSelect->windowContentVtx[88] -> File Button + * fileSelect->windowContentVtx[92] -> File Name Box + * fileSelect->windowContentVtx[96] -> Connectors + * fileSelect->windowContentVtx[100] -> Blank Button (Owl Save) + * + * ** FILE 2 ** + * + * fileSelect->windowContentVtx[104] -> Repeat of File 1 above + * + * ** FILE 3 ** + * + * fileSelect->windowContentVtx[120] -> Repeat of File 1 above + * + * ** FILE 1 Info ** + * + * fileSelect->windowContentVtx[136] -> File Name (32) + * fileSelect->windowContentVtx[168] -> File Name Shadow (32) + * fileSelect->windowContentVtx[200] -> Rupee Digits (12) + * fileSelect->windowContentVtx[212] -> Rupee Digits Shadow (12) + * fileSelect->windowContentVtx[224] -> Mask Count (8) + * fileSelect->windowContentVtx[232] -> Mask Count Shadow (8) + * fileSelect->windowContentVtx[240] -> Hearts (80) + * fileSelect->windowContentVtx[320] -> Remains (16) + * fileSelect->windowContentVtx[336] -> Rupee Icon (4) + * fileSelect->windowContentVtx[340] -> Heart Piece Count (4) + * fileSelect->windowContentVtx[344] -> Mask Text (8) + * fileSelect->windowContentVtx[352] -> Owl Save Icon (4) + * fileSelect->windowContentVtx[356] -> Day Text (8) + * fileSelect->windowContentVtx[364] -> Time Digits (20) + * fileSelect->windowContentVtx[384] -> Time Digits Shadow (20) + * + * ** FILE 2 Info ** + * + * fileSelect->windowContentVtx[404] -> Repeat of File 1 above + * + * ** FILE 3 Info ** + * + * fileSelect->windowContentVtx[672] -> Repeat of File 1 above + * + * fileSelect->windowContentVtx[940] -> Action buttons (copy/erase/yes/quit) + * fileSelect->windowContentVtx[944] -> Action buttons (copy/erase/yes/quit) + * fileSelect->windowContentVtx[948] -> Option Button + * fileSelect->windowContentVtx[952] -> Highlight over currently selected button + * fileSelect->windowContentVtx[956] -> Warning labels + */ + +#ifdef NON_MATCHING +// regalloc at the beginning is fixed by removing FAKE: labelled code +void FileSelect_SetWindowContentVtx(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + u16 vtxId; + s16 j; + s16 index; + s16 spAC; + s16 i; // a3 + u16 spA4[3]; + u16* ptr; + s32 posY; // sp9C + s32 relPosY; // sp98 + s32 tempPosY; + s32 posX; // s1 + s32 temp_t5; + + this->windowContentVtx = GRAPH_ALLOC(this->state.gfxCtx, 960 * sizeof(Vtx)); + + // Initialize all windowContentVtx + for (vtxId = 0; vtxId < 960; vtxId += 4) { + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = 0x12C; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 16; + + // y-coord (top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = 0; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 16; + + // z-coordinate + this->windowContentVtx[vtxId + 0].v.ob[2] = this->windowContentVtx[vtxId + 1].v.ob[2] = + this->windowContentVtx[vtxId + 2].v.ob[2] = this->windowContentVtx[vtxId + 3].v.ob[2] = 0; + + //! FAKE: + if (index && index && index) {} + + // flag + this->windowContentVtx[vtxId + 0].v.flag = this->windowContentVtx[vtxId + 1].v.flag = + this->windowContentVtx[vtxId + 2].v.flag = this->windowContentVtx[vtxId + 3].v.flag = 0; + + // texture coordinates + this->windowContentVtx[vtxId + 0].v.tc[0] = this->windowContentVtx[vtxId + 0].v.tc[1] = + this->windowContentVtx[vtxId + 1].v.tc[1] = this->windowContentVtx[vtxId + 2].v.tc[0] = 0; + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 2].v.tc[1] = + this->windowContentVtx[vtxId + 3].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x200; + + // alpha + this->windowContentVtx[vtxId + 0].v.cn[0] = this->windowContentVtx[vtxId + 1].v.cn[0] = + this->windowContentVtx[vtxId + 2].v.cn[0] = this->windowContentVtx[vtxId + 3].v.cn[0] = + this->windowContentVtx[vtxId + 0].v.cn[1] = this->windowContentVtx[vtxId + 1].v.cn[1] = + this->windowContentVtx[vtxId + 2].v.cn[1] = this->windowContentVtx[vtxId + 3].v.cn[1] = + this->windowContentVtx[vtxId + 0].v.cn[2] = this->windowContentVtx[vtxId + 1].v.cn[2] = + this->windowContentVtx[vtxId + 2].v.cn[2] = this->windowContentVtx[vtxId + 3].v.cn[2] = + this->windowContentVtx[vtxId + 0].v.cn[3] = this->windowContentVtx[vtxId + 1].v.cn[3] = + this->windowContentVtx[vtxId + 2].v.cn[3] = + this->windowContentVtx[vtxId + 3].v.cn[3] = 255; + } + + /** Title Label **/ + + // x-coord (left) + this->windowContentVtx[0].v.ob[0] = this->windowContentVtx[2].v.ob[0] = this->windowPosX; + // x-coord (right) + this->windowContentVtx[1].v.ob[0] = this->windowContentVtx[3].v.ob[0] = this->windowContentVtx[0].v.ob[0] + 0x80; + // y-coord (top) + this->windowContentVtx[0].v.ob[1] = this->windowContentVtx[1].v.ob[1] = 0x48; + // y-coord (bottom) + this->windowContentVtx[2].v.ob[1] = this->windowContentVtx[3].v.ob[1] = this->windowContentVtx[0].v.ob[1] - 0x10; + // texture coordinates + this->windowContentVtx[1].v.tc[0] = this->windowContentVtx[3].v.tc[0] = 0x1000; + + /** File InfoBox **/ + + // Loop through 3 files + for (vtxId = 4, i = 0; i < 3; i++) { + posX = this->windowPosX - 6; + + // Loop through 7 textures + for (j = 0; j < 7; j++, vtxId += 4) { + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + sFileInfoBoxPartWidths[j]; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = + this->fileNamesY[i] + 0x2C; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x38; + + // texture coordinates + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = + sFileInfoBoxPartWidths[j] << 5; + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x700; + + // Update X position + posX += sFileInfoBoxPartWidths[j]; + } + } + + // File Buttons + + posX = this->windowPosX - 6; + posY = 44; + + // Loop through 3 files + for (j = 0; j < 3; j++, vtxId += 16, posY -= 0x10) { + + /* File Button */ + + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x40; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = + this->buttonYOffsets[j] + posY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x10; + + // texture coordinates + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x800; + + /* File Name Box */ + + // x-coord (left) + this->windowContentVtx[vtxId + 4].v.ob[0] = this->windowContentVtx[vtxId + 6].v.ob[0] = posX + 0x40; + // x-coord (right) + this->windowContentVtx[vtxId + 5].v.ob[0] = this->windowContentVtx[vtxId + 7].v.ob[0] = + this->windowContentVtx[vtxId + 4].v.ob[0] + 0x6C; + + // y-coord(top) + this->windowContentVtx[vtxId + 4].v.ob[1] = this->windowContentVtx[vtxId + 5].v.ob[1] = + this->buttonYOffsets[j] + posY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 6].v.ob[1] = this->windowContentVtx[vtxId + 7].v.ob[1] = + this->windowContentVtx[vtxId + 4].v.ob[1] - 0x10; + + // texture coordinates + this->windowContentVtx[vtxId + 5].v.tc[0] = this->windowContentVtx[vtxId + 7].v.tc[0] = 0xD80; + + /* Connectors */ + + // x-coord (left) + this->windowContentVtx[vtxId + 8].v.ob[0] = this->windowContentVtx[vtxId + 10].v.ob[0] = posX + 0x34; + // x-coord (right) + this->windowContentVtx[vtxId + 9].v.ob[0] = this->windowContentVtx[vtxId + 11].v.ob[0] = + this->windowContentVtx[vtxId + 8].v.ob[0] + 0x18; + + // y-coord(top) + this->windowContentVtx[vtxId + 8].v.ob[1] = this->windowContentVtx[vtxId + 9].v.ob[1] = + this->buttonYOffsets[j] + posY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 10].v.ob[1] = this->windowContentVtx[vtxId + 11].v.ob[1] = + this->windowContentVtx[vtxId + 8].v.ob[1] - 0x10; + + // texture coordinates + this->windowContentVtx[vtxId + 9].v.tc[0] = this->windowContentVtx[vtxId + 11].v.tc[0] = 0x300; + + /* Blank Button (Owl Save) */ + + // x-coord (left) + this->windowContentVtx[vtxId + 12].v.ob[0] = this->windowContentVtx[vtxId + 14].v.ob[0] = posX + 0xA9; + // x-coord (right) + this->windowContentVtx[vtxId + 13].v.ob[0] = this->windowContentVtx[vtxId + 15].v.ob[0] = + this->windowContentVtx[vtxId + 12].v.ob[0] + 0x34; + + // y-coord(top) + this->windowContentVtx[vtxId + 12].v.ob[1] = this->windowContentVtx[vtxId + 13].v.ob[1] = + this->buttonYOffsets[j] + posY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 14].v.ob[1] = this->windowContentVtx[vtxId + 15].v.ob[1] = + this->windowContentVtx[vtxId + 12].v.ob[1] - 0x10; + + // texture coordinates + this->windowContentVtx[vtxId + 13].v.tc[0] = this->windowContentVtx[vtxId + 15].v.tc[0] = 0x680; + } + + posY = 44; + + // Loop through 3 files + for (j = 0; j < 3; j++, posY -= 16) { + if (!gSaveContext.flashSaveAvailable) { + // Should skip vtxId + // vtxId += 268; + continue; + } + + // Account for owl-save offset + + spAC = j; + if (this->isOwlSave[j + 2]) { + spAC = j + 2; + } + + /* File name */ + + posX = this->windowPosX - 6; + + if ((this->configMode == 0x10) && (j == this->copyDestFileIndex)) { + relPosY = this->fileNamesY[j] + 0x2C; + } else if (((this->configMode == 0x11) || (this->configMode == 0x12)) && (j == this->copyDestFileIndex)) { + relPosY = this->buttonYOffsets[j] + posY; + } else { + relPosY = posY + this->buttonYOffsets[j] + this->fileNamesY[j]; + } + + tempPosY = relPosY - 2; + + // Loop through 8 characters of file name + for (i = 0; i < 8; i++, vtxId += 4) { + + index = this->fileNames[j][i]; + + /* File Name */ + + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = + D_80814280[index] + posX + 0x4E; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0xB; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0xC; + + /* File Name Shadow */ + + // x-coord (left) + this->windowContentVtx[vtxId + 32].v.ob[0] = this->windowContentVtx[vtxId + 34].v.ob[0] = + D_80814280[index] + posX + 0x4F; + // x-coord (right) + this->windowContentVtx[vtxId + 33].v.ob[0] = this->windowContentVtx[vtxId + 35].v.ob[0] = + this->windowContentVtx[vtxId + 32].v.ob[0] + 0xB; + + // y-coord(top) + this->windowContentVtx[vtxId + 32].v.ob[1] = this->windowContentVtx[vtxId + 33].v.ob[1] = tempPosY - 1; + // y-coord (bottom) + this->windowContentVtx[vtxId + 34].v.ob[1] = this->windowContentVtx[vtxId + 35].v.ob[1] = + this->windowContentVtx[vtxId + 32].v.ob[1] - 0xC; + + // Update X position + posX += 10; + } + // Account for the shadow + vtxId += 32; + + /* Rupee Digits */ + + posX = this->windowPosX + 14; + tempPosY = relPosY - 0x18; + + FileSelect_SplitNumber(this->rupees[spAC], &spA4[0], &spA4[1], &spA4[2]); + + index = sWalletFirstDigit[this->walletUpgrades[spAC]]; + + ptr = &spA4[index]; + + for (i = 0; i < 3; i++, vtxId += 4, ptr++) { + + /* Rupee Digits */ + + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = + D_80814280[*ptr] + posX; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + D_80814628[i]; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - D_80814630[i]; + + /* Rupee Digits Shadow */ + + // x-coord (left) + this->windowContentVtx[vtxId + 12].v.ob[0] = this->windowContentVtx[vtxId + 14].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 1; + // x-coord (right) + this->windowContentVtx[vtxId + 13].v.ob[0] = this->windowContentVtx[vtxId + 15].v.ob[0] = + this->windowContentVtx[vtxId + 12].v.ob[0] + D_80814628[i]; + + // y-coord(top) + this->windowContentVtx[vtxId + 12].v.ob[1] = this->windowContentVtx[vtxId + 13].v.ob[1] = tempPosY - 1; + // y-coord (bottom) + this->windowContentVtx[vtxId + 14].v.ob[1] = this->windowContentVtx[vtxId + 15].v.ob[1] = + this->windowContentVtx[vtxId + 12].v.ob[1] - D_80814630[i]; + + // Update X position + posX += D_80814620[i]; + } + + // Account for the shadow + vtxId += 12; + + /* Mask Count */ + + posX = this->windowPosX + 42; + tempPosY = relPosY - 0x2A; + + FileSelect_SplitNumber(this->maskCount[spAC], &spA4[0], &spA4[1], &spA4[2]); + + for (i = 1; i < 3; i++, vtxId += 4) { + + /* Mask Count */ + + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = + D_80814280[spA4[i]] + posX; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + D_80814628[i]; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - D_80814630[i]; + + /* Mask Count Shadow */ + + // x-coord (left) + this->windowContentVtx[vtxId + 8].v.ob[0] = this->windowContentVtx[vtxId + 10].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 1; + // x-coord (right) + this->windowContentVtx[vtxId + 9].v.ob[0] = this->windowContentVtx[vtxId + 11].v.ob[0] = + this->windowContentVtx[vtxId + 8].v.ob[0] + D_80814628[i]; + + // y-coord(top) + this->windowContentVtx[vtxId + 8].v.ob[1] = this->windowContentVtx[vtxId + 9].v.ob[1] = tempPosY - 1; + // y-coord (bottom) + this->windowContentVtx[vtxId + 10].v.ob[1] = this->windowContentVtx[vtxId + 11].v.ob[1] = + this->windowContentVtx[vtxId + 8].v.ob[1] - D_80814630[i]; + + // Update X position + posX += D_80814620[i]; + } + + // Account for the shadow + vtxId += 8; + + /* Hearts */ + + posX = this->windowPosX + 63; + tempPosY = relPosY - 0x10; + + // Loop through 20 hearts + for (i = 0; i < 20; i++, vtxId += 4, posX += 9) { + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0xA; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0xA; + + // New row of hearts next iteration + if (i == 9) { + posX = this->windowPosX + (63 - 9); + tempPosY -= 8; + } + } + + /* Quest Remains */ + + posX = this->windowPosX + 64; + tempPosY = relPosY - 0x20; + + // Loop through 4 Remains + for (i = 0; i < 4; i++, vtxId += 4, posX += 0x18) { + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x14; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x14; + + // texture coordinates + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 2].v.tc[1] = + this->windowContentVtx[vtxId + 3].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x400; + } + + /* Rupee Icon */ + + // posX = this->windowPosX - 1; + tempPosY = relPosY - 0x15; + + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = this->windowPosX - 1; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x10; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x10; + + // texture coordinates + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x200; + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x200; + + vtxId += 4; + + /* Heart Piece Count */ + + // posX = this->windowPosX + 0x27; + tempPosY = relPosY - 0x15; + + // x-coord (left) + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = this->windowPosX + 0x27; + // x-coord (right) + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x18; + + // y-coord(top) + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + // y-coord (bottom) + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x10; + + // texture coordinates + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x300; + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x200; + + vtxId += 4; + + /* Mask Text */ + + // posX = this->windowPosX - 10; + tempPosY = relPosY - 0x27; + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = this->windowPosX - 10; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x40; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x10; + + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x800; + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x200; + + this->windowContentVtx[vtxId + 4].v.ob[0] = this->windowContentVtx[vtxId + 6].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 1; + + this->windowContentVtx[vtxId + 5].v.ob[0] = this->windowContentVtx[vtxId + 7].v.ob[0] = + this->windowContentVtx[vtxId + 4].v.ob[0] + 0x40; + + this->windowContentVtx[vtxId + 4].v.ob[1] = this->windowContentVtx[vtxId + 5].v.ob[1] = tempPosY - 1; + + this->windowContentVtx[vtxId + 6].v.ob[1] = this->windowContentVtx[vtxId + 7].v.ob[1] = + this->windowContentVtx[vtxId + 4].v.ob[1] - 0x10; + + this->windowContentVtx[vtxId + 5].v.tc[0] = this->windowContentVtx[vtxId + 7].v.tc[0] = 0x800; + this->windowContentVtx[vtxId + 6].v.tc[1] = this->windowContentVtx[vtxId + 7].v.tc[1] = 0x200; + + vtxId += 8; + + /* Owl Save Icon */ + + posX = this->windowPosX + 0xA3; + + if ((this->configMode == 0x10) && (j == this->copyDestFileIndex)) { + tempPosY = this->fileNamesY[j] + 0x2C; + } else if (((this->configMode == 0x11) || (this->configMode == 0x12)) && (j == this->copyDestFileIndex)) { + tempPosY = this->buttonYOffsets[j] + posY; + } else { + tempPosY = posY + this->buttonYOffsets[j] + this->fileNamesY[j]; + } + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX + 0xE; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x18; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY - 2; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0xC; + + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x300; + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x180; + + vtxId += 4; + + /* Day Text */ + + for (i = 0; i < 2; i++, vtxId += 4) { + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = 2 + posX + i; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x30; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY - i - 0x12; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x18; + + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x600; + + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x300; + } + + /* Time Digits */ + + posX += 6; + temp_t5 = vtxId; + + for (i = 0; i < 5; i++, vtxId += 4, posX += 8) { + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0xC; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = tempPosY - 0x2A; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0xC; + + this->windowContentVtx[vtxId + 0x14].v.ob[0] = this->windowContentVtx[vtxId + 0x16].v.ob[0] = posX + 1; + + this->windowContentVtx[vtxId + 0x15].v.ob[0] = this->windowContentVtx[vtxId + 0x17].v.ob[0] = + this->windowContentVtx[vtxId + 0x14].v.ob[0] + 0xC; + + this->windowContentVtx[vtxId + 0x14].v.ob[1] = this->windowContentVtx[vtxId + 0x15].v.ob[1] = + tempPosY - 0x2B; + + this->windowContentVtx[vtxId + 0x16].v.ob[1] = this->windowContentVtx[vtxId + 0x17].v.ob[1] = + this->windowContentVtx[vtxId + 0x14].v.ob[1] - 0xC; + } + + // Adjust the colon to the right + this->windowContentVtx[temp_t5 + 8].v.ob[0] = this->windowContentVtx[temp_t5 + 10].v.ob[0] = + this->windowContentVtx[temp_t5 + 8].v.ob[0] + 3; + + this->windowContentVtx[temp_t5 + 9].v.ob[0] = this->windowContentVtx[temp_t5 + 11].v.ob[0] = + this->windowContentVtx[temp_t5 + 8].v.ob[0] + 0xC; + + this->windowContentVtx[temp_t5 + 0x1C].v.ob[0] = this->windowContentVtx[temp_t5 + 0x1E].v.ob[0] = + this->windowContentVtx[temp_t5 + 8].v.ob[0] + 1; + + this->windowContentVtx[temp_t5 + 0x1D].v.ob[0] = this->windowContentVtx[temp_t5 + 0x1F].v.ob[0] = + this->windowContentVtx[temp_t5 + 0x1C].v.ob[0] + 0xC; + + vtxId += 20; + } + + posX = this->windowPosX - 6; + posY = -0xC; + + for (j = 0; j < 2; j++, vtxId += 4, posY -= 0x10) { + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x40; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = + this->buttonYOffsets[j + 3] + posY; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x10; + + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x800; + } + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = posX; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x40; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = + this->buttonYOffsets[5] - 0x34; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x10; + + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x800; + + vtxId += 4; + + if (((this->menuMode == FS_MENU_MODE_CONFIG) && (this->configMode >= 2)) || + ((this->menuMode == FS_MENU_MODE_SELECT) && (this->selectMode == 3))) { + if (this->menuMode == FS_MENU_MODE_CONFIG) { + if ((this->configMode == 4) || (this->configMode == 7) || (this->configMode == 0x16)) { + j = D_80814644[this->buttonIndex]; + } else if ((this->configMode == 0x19) || (this->configMode == 0xC)) { + j = D_8081464C[this->buttonIndex]; + } else { + j = D_80814638[this->buttonIndex]; + } + } else { + j = D_80814650[this->confirmButtonIndex]; + } + + this->windowContentVtx[vtxId + 0].v.ob[0] = this->windowContentVtx[vtxId + 2].v.ob[0] = this->windowPosX - 0xA; + + this->windowContentVtx[vtxId + 1].v.ob[0] = this->windowContentVtx[vtxId + 3].v.ob[0] = + this->windowContentVtx[vtxId + 0].v.ob[0] + 0x48; + + this->windowContentVtx[vtxId + 0].v.ob[1] = this->windowContentVtx[vtxId + 1].v.ob[1] = + this->windowContentVtx[j].v.ob[1] + 4; + + this->windowContentVtx[vtxId + 2].v.ob[1] = this->windowContentVtx[vtxId + 3].v.ob[1] = + this->windowContentVtx[vtxId + 0].v.ob[1] - 0x18; + + this->windowContentVtx[vtxId + 1].v.tc[0] = this->windowContentVtx[vtxId + 3].v.tc[0] = 0x900; + + this->windowContentVtx[vtxId + 2].v.tc[1] = this->windowContentVtx[vtxId + 3].v.tc[1] = 0x300; + } + + this->windowContentVtx[vtxId + 4].v.ob[0] = this->windowContentVtx[vtxId + 6].v.ob[0] = this->windowPosX + 0x3A; + + this->windowContentVtx[vtxId + 5].v.ob[0] = this->windowContentVtx[vtxId + 7].v.ob[0] = + this->windowContentVtx[vtxId + 4].v.ob[0] + 0x80; + + this->windowContentVtx[vtxId + 4].v.ob[1] = this->windowContentVtx[vtxId + 5].v.ob[1] = + this->windowContentVtx[D_80814638[this->warningButtonIndex]].v.ob[1]; + + this->windowContentVtx[vtxId + 6].v.ob[1] = this->windowContentVtx[vtxId + 7].v.ob[1] = + this->windowContentVtx[vtxId + 4].v.ob[1] - 0x10; + + this->windowContentVtx[vtxId + 5].v.tc[0] = this->windowContentVtx[vtxId + 7].v.tc[0] = 0x1000; +} +#else +void FileSelect_SetWindowContentVtx(GameState* thisx); +#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/FileSelect_SetWindowContentVtx.s") +#endif + +u16 D_80814654[] = { + 0x88, + 0x194, + 0x2A0, +}; +TexturePtr sFileSelRemainsTextures[] = { + gFileSelOdolwasRemainsTex, + gFileSelGohtsRemainsTex, + gFileSelGyorgsRemainsTex, + gFileSelTwinmoldsRemainsTex, +}; +TexturePtr sFileSelDayENGTextures[] = { + gFileSelFirstDayENGTex, + gFileSelFirstDayENGTex, + gFileSelSecondDayENGTex, + gFileSelFinalDayENGTex, +}; +TexturePtr sFileSelHeartPieceTextures[] = { + gFileSel0QuarterHeartENGTex, + gFileSel1QuarterHeartENGTex, + gFileSel2QuarterHeartENGTex, + gFileSel3QuarterHeartENGTex, +}; +static TexturePtr sHeartTextures[2][5] = { + { + gHeartEmptyTex, + gHeartQuarterTex, + gHeartHalfTex, + gHeartThreeQuarterTex, + gHeartFullTex, + }, + { + gDefenseHeartEmptyTex, + gDefenseHeartQuarterTex, + gDefenseHeartHalfTex, + gDefenseHeartThreeQuarterTex, + gDefenseHeartFullTex, + }, +}; +u8 sHealthToQuarterHeartCount[] = { + 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, +}; +s16 sFileSelRupeePrimColors[3][3] = { + { 200, 255, 100 }, // Default Wallet + { 170, 170, 255 }, // Adult Wallet + { 255, 105, 105 }, // Giant Wallet +}; +s16 sFileSelRupeeEnvColors[3][3] = { + { 0, 80, 0 }, // Default Wallet + { 10, 10, 80 }, // Adult Wallet + { 40, 10, 0 }, // Giant Wallet +}; +static s16 sHeartPrimColors[2][3] = { + { 255, 70, 50 }, + { 200, 0, 0 }, +}; +static s16 sHeartEnvColors[2][3] = { + { 50, 40, 60 }, + { 255, 255, 255 }, +}; + +void FileSelect_DrawFileInfo(GameState* thisx, s16 fileIndex) { + FileSelectState* this = (FileSelectState*)thisx; + Font* font = &this->font; + s16 j; + s16 vtxOffset; + s32 heartType; + s16 i; + s16 sp20C; + s16 health; + s16 timeDigits[5]; + u16 digits[3]; // rupees and mask count + u8 quarterHeartCount; + + OPEN_DISPS(this->state.gfxCtx); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, + PRIMITIVE, 0); + + sp20C = fileIndex; + + // draw file name + if (this->nameAlpha[fileIndex] != 0) { + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + (4 * 8)], 32, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, this->nameAlpha[fileIndex]); + + for (vtxOffset = 0, i = 0; vtxOffset < (4 * 8); i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, + font->fontBuf + this->fileNames[fileIndex][i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex]], 32, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->nameAlpha[fileIndex]); + + for (vtxOffset = 0, i = 0; vtxOffset < (4 * 8); i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, + font->fontBuf + this->fileNames[fileIndex][i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + } + + if ((fileIndex == this->selectedFileIndex) || (fileIndex == this->copyDestFileIndex)) { + if (this->isOwlSave[fileIndex + 2]) { + sp20C = fileIndex + 2; + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, sFileSelRupeePrimColors[this->walletUpgrades[sp20C]][0], + sFileSelRupeePrimColors[this->walletUpgrades[sp20C]][1], + sFileSelRupeePrimColors[this->walletUpgrades[sp20C]][2], this->fileInfoAlpha[fileIndex]); + gDPSetEnvColor(POLY_OPA_DISP++, sFileSelRupeeEnvColors[this->walletUpgrades[sp20C]][0], + sFileSelRupeeEnvColors[this->walletUpgrades[sp20C]][1], + sFileSelRupeeEnvColors[this->walletUpgrades[sp20C]][2], 255); + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xC8], 4, 0); + + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelRupeeTex, G_IM_FMT_IA, G_IM_SIZ_8b, 16, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, + PRIMITIVE, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, this->fileInfoAlpha[fileIndex]); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0x4C], 12, 0); + + FileSelect_SplitNumber((u16)this->rupees[sp20C], &digits[0], &digits[1], &digits[2]); + + for (vtxOffset = 0, i = sWalletFirstDigit[this->walletUpgrades[sp20C]]; i < 3; i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + digits[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + + if (this->rupees[sp20C] == gUpgradeCapacities[4][this->walletUpgrades[sp20C]]) { + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 120, 255, 0, this->fileInfoAlpha[fileIndex]); + } else if (this->rupees[sp20C] != 0) { + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->fileInfoAlpha[fileIndex]); + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 100, 100, 100, this->fileInfoAlpha[fileIndex]); + } + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0x40], 12, 0); + + for (vtxOffset = 0, i = sWalletFirstDigit[this->walletUpgrades[sp20C]]; i < 3; i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + digits[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 0, 0, this->fileInfoAlpha[fileIndex]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xCC], 4, 0); + + POLY_OPA_DISP = FileSelect_DrawTexQuadIA8( + POLY_OPA_DISP, sFileSelHeartPieceTextures[this->heartPieceCount[sp20C]], 0x18, 0x10, (s16)0); + + if (this->defenseHearts[sp20C] == 0) { + heartType = 0; + } else { + heartType = 1; + } + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, sHeartPrimColors[heartType][0], sHeartPrimColors[heartType][1], + sHeartPrimColors[heartType][2], this->fileInfoAlpha[fileIndex]); + gDPSetEnvColor(POLY_OPA_DISP++, sHeartEnvColors[heartType][0], sHeartEnvColors[heartType][1], + sHeartEnvColors[heartType][2], 255); + + i = this->healthCapacity[sp20C] / 0x10; + + health = this->health[sp20C]; + if (health <= 0x30) { + health = 0x30; + } + + quarterHeartCount = 4; + for (vtxOffset = 0, j = 0; j < i; j++, vtxOffset += 4) { + if (health < 0x10) { + if (health != 0) { + quarterHeartCount = sHealthToQuarterHeartCount[health]; + health = 0; + } else { + quarterHeartCount = 0; + } + } else { + health -= 0x10; + } + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0x68 + vtxOffset], 4, 0); + POLY_OPA_DISP = + FileSelect_DrawTexQuadIA8(POLY_OPA_DISP, sHeartTextures[heartType][quarterHeartCount], 0x10, 0x10, 0); + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->fileInfoAlpha[fileIndex]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + + for (vtxOffset = 0, j = 0; j < 4; j++, vtxOffset += 4) { + if (this->questItems[sp20C] & gBitFlags[j]) { + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xB8 + vtxOffset], 4, 0); + gDPLoadTextureBlock(POLY_OPA_DISP++, sFileSelRemainsTextures[j], G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + } + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, + PRIMITIVE, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, this->fileInfoAlpha[fileIndex]); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xD0], 8, 0); + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, gFileSelMASKSENGTex, G_IM_FMT_I, 64, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 4, 6, 7, 5, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->fileInfoAlpha[fileIndex]); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + gDPPipeSync(POLY_OPA_DISP++); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, this->fileInfoAlpha[fileIndex]); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0x60], 8, 0); + + FileSelect_SplitNumber(this->maskCount[sp20C], &digits[0], &digits[1], &digits[2]); + + for (vtxOffset = 0, i = 1; i < 3; i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + digits[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->fileInfoAlpha[fileIndex]); + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0x58], 8, 0); + + for (vtxOffset = 0, i = 1; i < 3; i++, vtxOffset += 4) { + + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + digits[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + } + + if (this->isOwlSave[fileIndex + 2]) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->nameAlpha[fileIndex]); + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xD8], 4, 0); + + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelOwlSaveIconTex, G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 12, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xDC], 8, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, this->fileInfoAlpha[fileIndex]); + + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, sFileSelDayENGTextures[this->day[sp20C]], G_IM_FMT_I, 48, 24, 0, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 4, 6, 7, 5, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->fileInfoAlpha[fileIndex]); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + timeDigits[0] = 0; + timeDigits[1] = TIME_TO_MINUTES_F(this->time[sp20C]) / 60.0f; + + while (timeDigits[1] >= 10) { + timeDigits[0]++; + timeDigits[1] -= 10; + } + + timeDigits[3] = 0; + timeDigits[4] = (s32)TIME_TO_MINUTES_F(this->time[sp20C]) % 60; + + while (timeDigits[4] >= 10) { + timeDigits[3]++; + timeDigits[4] -= 10; + } + timeDigits[2] = 0x41; + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, + PRIMITIVE, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 0, 0, 0, this->fileInfoAlpha[fileIndex]); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xF8], 20, 0); + + for (i = 0, vtxOffset = 0; i < 5; i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + timeDigits[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + + gDPSetPrimColor(POLY_OPA_DISP++, 0x00, 0x00, 255, 255, 255, this->fileInfoAlpha[fileIndex]); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[D_80814654[fileIndex] + 0xE4], 20, 0); + + for (i = 0, vtxOffset = 0; i < 5; i++, vtxOffset += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + timeDigits[i] * FONT_CHAR_TEX_SIZE, vtxOffset); + } + } + + gDPPipeSync(POLY_OPA_DISP++); + + CLOSE_DISPS(this->state.gfxCtx); +} + +TexturePtr sFileInfoBoxTextures[] = { + gFileSelFileInfoBox0Tex, gFileSelFileInfoBox1Tex, gFileSelFileInfoBox2Tex, gFileSelFileInfoBox3Tex, + gFileSelFileInfoBox4Tex, gFileSelFileExtraInfoBox0Tex, gFileSelFileExtraInfoBox1Tex, +}; + +TexturePtr sTitleLabels[] = { + gFileSelPleaseSelectAFileENGTex, gFileSelOpenThisFileENGTex, gFileSelCopyWhichFileENGTex, + gFileSelCopyToWhichFileENGTex, gFileSelAreYouSureCopyENGTex, gFileSelFileCopiedENGTex, + gFileSelEraseWhichFileENGTex, gFileSelAreYouSureEraseENGTex, gFileSelFileErasedENGTex, +}; + +TexturePtr sWarningLabels[] = { + gFileSelNoFileToCopyENGTex, gFileSelNoFileToEraseENGTex, gFileSelNoEmptyFileENGTex, + gFileSelFileEmptyENGTex, gFileSelFileInUseENGTex, +}; + +TexturePtr sFileButtonTextures[] = { + gFileSelFile1ButtonENGTex, + gFileSelFile2ButtonENGTex, + gFileSelFile3ButtonENGTex, +}; + +TexturePtr sActionButtonTextures[] = { + gFileSelCopyButtonENGTex, + gFileSelEraseButtonENGTex, + gFileSelYesButtonENGTex, + gFileSelQuitButtonENGTex, +}; + +/** + * Draw most window contents including buttons, labels, and icons. + * Does not include anything from the keyboard and settings windows. + */ +void FileSelect_DrawWindowContents(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 fileIndex; + s16 temp; + s16 i; + s16 quadVtxIndex; + + if (1) {} + + OPEN_DISPS(this->state.gfxCtx); + + // draw title label + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[0], 4, 0); + gDPLoadTextureBlock(POLY_OPA_DISP++, sTitleLabels[this->titleLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + // draw next title label + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_NEXT]); + gDPLoadTextureBlock(POLY_OPA_DISP++, sTitleLabels[this->nextTitleLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + temp = 4; + + gDPPipeSync(POLY_OPA_DISP++); + + // draw file info box (large box when a file is selected) + for (fileIndex = 0; fileIndex < 3; fileIndex++, temp += 28) { + if (fileIndex < 2) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->fileInfoAlpha[fileIndex]); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[temp], 28, 0); + + for (quadVtxIndex = 0, i = 0; i < 7; i++, quadVtxIndex += 4) { + if ((i < 5) || (this->isOwlSave[fileIndex + 2] && (i >= 5))) { + gDPLoadTextureBlock(POLY_OPA_DISP++, sFileInfoBoxTextures[i], G_IM_FMT_IA, G_IM_SIZ_16b, + sFileInfoBoxPartWidths[i], 56, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, quadVtxIndex, quadVtxIndex + 2, quadVtxIndex + 3, quadVtxIndex + 1, + 0); + } + } + } + } + + gDPPipeSync(POLY_OPA_DISP++); + + for (i = 0; i < 3; i++, temp += 16) { + if (i < 2) { + // draw file button + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[temp], 16, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[0], sWindowContentColors[1], + sWindowContentColors[2], this->fileButtonAlpha[i]); + gDPLoadTextureBlock(POLY_OPA_DISP++, sFileButtonTextures[i], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + // draw file name box + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[0], sWindowContentColors[1], + sWindowContentColors[2], this->nameBoxAlpha[i]); + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelFileNameBoxTex, G_IM_FMT_IA, G_IM_SIZ_16b, 108, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 4, 6, 7, 5, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[0], sWindowContentColors[1], + sWindowContentColors[2], this->connectorAlpha[i]); + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelConnectorTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0); + + if (this->isOwlSave[i + 2]) { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sWindowContentColors[0], sWindowContentColors[1], + sWindowContentColors[2], this->nameBoxAlpha[i]); + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelBlankButtonTex, G_IM_FMT_IA, G_IM_SIZ_16b, 52, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 12, 14, 15, 13, 0); + } + } + } + + // draw file info + for (fileIndex = 0; fileIndex < 2; fileIndex++) { + FileSelect_DrawFileInfo(&this->state, fileIndex); + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + gSPVertex(POLY_OPA_DISP++, &this->windowContentVtx[0x3AC], 20, 0); + + // draw primary action buttons (copy/erase) + for (quadVtxIndex = 0, i = 0; i < 2; i++, quadVtxIndex += 4) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->actionButtonAlpha[i]); + gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[i], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, quadVtxIndex, quadVtxIndex + 2, quadVtxIndex + 3, quadVtxIndex + 1, 0); + } + + gDPPipeSync(POLY_OPA_DISP++); + + // draw confirm buttons (yes/quit) + for (quadVtxIndex = 0, i = FS_BTN_CONFIRM_YES; i <= FS_BTN_CONFIRM_QUIT; i++, quadVtxIndex += 4) { + temp = this->confirmButtonTexIndices[i]; + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->confirmButtonAlpha[i]); + gDPLoadTextureBlock(POLY_OPA_DISP++, sActionButtonTextures[temp], G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, quadVtxIndex, quadVtxIndex + 2, quadVtxIndex + 3, quadVtxIndex + 1, 0); + } + + // draw options button + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->optionButtonAlpha); + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelOptionsButtonENGTex, G_IM_FMT_IA, G_IM_SIZ_16b, 64, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 8, 10, 11, 9, 0); + + // draw highlight over currently selected button + if (((this->menuMode == FS_MENU_MODE_CONFIG) && + ((this->configMode == CM_MAIN_MENU) || (this->configMode == CM_SELECT_COPY_SOURCE) || + (this->configMode == CM_SELECT_COPY_DEST) || (this->configMode == CM_COPY_CONFIRM) || + (this->configMode == CM_ERASE_SELECT) || (this->configMode == CM_ERASE_CONFIRM))) || + ((this->menuMode == FS_MENU_MODE_SELECT) && (this->selectMode == SM_CONFIRM_FILE))) { + gDPPipeSync(POLY_OPA_DISP++); + + gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, + PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->highlightColor[0], this->highlightColor[1], + this->highlightColor[2], this->highlightColor[3]); + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelBigButtonHighlightTex, G_IM_FMT_I, G_IM_SIZ_8b, 72, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 12, 14, 15, 13, 0); + } + + // draw warning labels + if (this->warningLabel > FS_WARNING_NONE) { + gDPPipeSync(POLY_OPA_DISP++); + + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->emptyFileTextAlpha); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + gDPLoadTextureBlock(POLY_OPA_DISP++, sWarningLabels[this->warningLabel], G_IM_FMT_IA, G_IM_SIZ_8b, 128, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 16, 18, 19, 17, 0); + } + + gDPPipeSync(POLY_OPA_DISP++); + + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); + + CLOSE_DISPS(this->state.gfxCtx); +} + +void FileSelect_ConfigModeDraw(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + OPEN_DISPS(this->state.gfxCtx); + + gDPPipeSync(POLY_OPA_DISP++); + + Gfx_SetupDL42_Opa(this->state.gfxCtx); + FileSelect_SetView(this, 0.0f, 0.0f, 64.0f); + FileSelect_SetWindowVtx(&this->state); + FileSelect_SetWindowContentVtx(&this->state); + + if ((this->configMode != CM_NAME_ENTRY) && (this->configMode != CM_START_NAME_ENTRY)) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->windowAlpha); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + Matrix_Translate(0.0f, 0.0f, -93.6f, MTXMODE_NEW); + Matrix_Scale(0.78f, 0.78f, 0.78f, MTXMODE_APPLY); + + if (this->windowRot != 0) { + Matrix_RotateXFApply(this->windowRot / 100.0f); + } + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[0], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow1DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[32], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow2DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[64], 16, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow3DL); + + gDPPipeSync(POLY_OPA_DISP++); + + FileSelect_DrawWindowContents(&this->state); + } + + // draw name entry menu + if ((this->configMode >= CM_ROTATE_TO_NAME_ENTRY) && (this->configMode <= CM_NAME_ENTRY_TO_MAIN)) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->windowAlpha); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + Matrix_Translate(0.0f, 0.0f, -93.6f, MTXMODE_NEW); + Matrix_Scale(0.78f, 0.78f, 0.78f, MTXMODE_APPLY); + Matrix_RotateXFApply((this->windowRot - 314.0f) / 100.0f); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[0], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow1DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[32], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow2DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[64], 16, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow3DL); + + gDPPipeSync(POLY_OPA_DISP++); + + FileSelect_DrawNameEntry(&this->state); + } + + // draw options menu + if ((this->configMode >= CM_MAIN_TO_OPTIONS) && (this->configMode <= CM_OPTIONS_TO_MAIN)) { + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->windowAlpha); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + Matrix_Translate(0.0f, 0.0f, -93.6f, MTXMODE_NEW); + Matrix_Scale(0.78f, 0.78f, 0.78f, MTXMODE_APPLY); + Matrix_RotateXFApply((this->windowRot - 314.0f) / 100.0f); + + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[0], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow1DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[32], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow2DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[64], 16, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow3DL); + + gDPPipeSync(POLY_OPA_DISP++); + + FileSelect_DrawOptions(&this->state); + } + + gDPPipeSync(POLY_OPA_DISP++); + + FileSelect_SetView(this, 0.0f, 0.0f, 64.0f); + + CLOSE_DISPS(this->state.gfxCtx); +} + +/** + * Fade out the main menu elements to transition to select mode. + * Update function for `SM_FADE_MAIN_TO_SELECT` + */ +void FileSelect_FadeMainToSelect(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + this->fileButtonAlpha[i] -= 50; + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->optionButtonAlpha = this->fileButtonAlpha[i]; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameAlpha[i] = this->nameBoxAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] -= 255 / 4; + } + } else { + if (SLOT_OCCUPIED(this, i)) { + this->nameAlpha[i] = this->nameBoxAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] -= 255 / 4; + } + } + } + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->actionTimer = 4; + this->selectMode++; // SM_MOVE_FILE_TO_TOP + this->confirmButtonIndex = FS_BTN_CONFIRM_YES; + } +} + +// Amount to move by to reach the top of the screen +s16 sFileYOffsets[] = { 0, 16, 32 }; + +/** + * Moves the selected file to the top of the window. + * Update function for `SM_MOVE_FILE_TO_TOP` + */ +void FileSelect_MoveSelectedFileToTop(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s32 yStep; + + yStep = ABS_ALT(this->buttonYOffsets[this->buttonIndex] - sFileYOffsets[this->buttonIndex]) / this->actionTimer; + this->buttonYOffsets[this->buttonIndex] += yStep; + this->actionTimer--; + + if ((this->actionTimer == 0) || (this->buttonYOffsets[this->buttonIndex] == sFileYOffsets[this->buttonIndex])) { + this->buttonYOffsets[FS_BTN_SELECT_YES] = this->buttonYOffsets[FS_BTN_SELECT_QUIT] = -24; + this->actionTimer = 4; + this->selectMode++; // SM_FADE_IN_FILE_INFO + } +} + +/** + * Fade in the file info for the selected file. + * Update function for `SM_FADE_IN_FILE_INFO` + */ +void FileSelect_FadeInFileInfo(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->fileInfoAlpha[this->buttonIndex] += 50; + this->nameBoxAlpha[this->buttonIndex] -= 100; + + if (this->nameBoxAlpha[this->buttonIndex] <= 0) { + this->nameBoxAlpha[this->buttonIndex] = 0; + } + + this->actionTimer--; + + if (this->actionTimer == 0) { + this->fileInfoAlpha[this->buttonIndex] = 200; + this->actionTimer = 4; + this->selectMode++; // SM_CONFIRM_FILE + } + + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = + this->fileInfoAlpha[this->buttonIndex]; +} + +/** + * Update the cursor and handle the option that the player picks for confirming the selected file. + * Update function for `SM_CONFIRM_FILE` + */ +void FileSelect_ConfirmFile(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + Input* input = CONTROLLER1(&this->state); + + if (CHECK_BTN_ALL(input->press.button, BTN_START) || (CHECK_BTN_ALL(input->press.button, BTN_A))) { + if (this->confirmButtonIndex == FS_BTN_CONFIRM_YES) { + Rumble_Request(300.0f, 180, 20, 100); + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->selectMode = SM_FADE_OUT; + func_801A4058(0xF); + } else { // FS_BTN_CONFIRM_QUIT + play_sound(NA_SE_SY_FSEL_CLOSE); + this->selectMode++; // SM_FADE_OUT_FILE_INFO + } + } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + play_sound(NA_SE_SY_FSEL_CLOSE); + this->selectMode++; // SM_FADE_OUT_FILE_INFO + } else if (ABS_ALT(this->stickAdjY) >= 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->confirmButtonIndex ^= 1; + } +} + +/** + * Fade out the file info for the selected file before returning to the main menu. + * Update function for `SM_FADE_OUT_FILE_INFO` + */ +void FileSelect_FadeOutFileInfo(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->fileInfoAlpha[this->buttonIndex] -= 200 / 4; + this->nameBoxAlpha[this->buttonIndex] += 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->buttonYOffsets[FS_BTN_SELECT_YES] = this->buttonYOffsets[FS_BTN_SELECT_QUIT] = 0; + this->nameBoxAlpha[this->buttonIndex] = 200; + this->fileInfoAlpha[this->buttonIndex] = 0; + this->nextTitleLabel = FS_TITLE_SELECT_FILE; + this->actionTimer = 4; + this->selectMode++; + } + + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = + this->fileInfoAlpha[this->buttonIndex]; +} + +/** + * Move the selected file back to the slot position then go to config mode for the main menu. + * Update function for `SM_MOVE_FILE_TO_SLOT` + */ +void FileSelect_MoveSelectedFileToSlot(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s32 yStep; + s16 i; + + yStep = ABS_ALT(this->buttonYOffsets[this->buttonIndex]) / this->actionTimer; + this->buttonYOffsets[this->buttonIndex] -= yStep; + + if (this->buttonYOffsets[this->buttonIndex] <= 0) { + this->buttonYOffsets[this->buttonIndex] = 0; + } + + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + this->fileButtonAlpha[i] += 200 / 4; + + if (this->fileButtonAlpha[i] >= 200) { + this->fileButtonAlpha[i] = 200; + } + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->optionButtonAlpha = this->fileButtonAlpha[i]; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } else { + if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } + } + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->titleLabel = this->nextTitleLabel; + this->actionTimer = 4; + this->menuMode = FS_MENU_MODE_CONFIG; + this->configMode = CM_MAIN_MENU; + this->nextConfigMode = CM_MAIN_MENU; + this->selectMode = SM_FADE_MAIN_TO_SELECT; + } +} + +/** + * Fill the screen with black to fade out. + * Update function for `SM_FADE_OUT` + */ +void FileSelect_FadeOut(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->screenFillAlpha += 40; + + if (this->screenFillAlpha >= 255) { + this->screenFillAlpha = 255; + this->selectMode++; // SM_LOAD_GAME + } +} + +/** + * Load the save for the appropriate file and start the game. + * Update function for `SM_LOAD_GAME` + */ +void FileSelect_LoadGame(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + u16 i; + + gSaveContext.fileNum = this->buttonIndex; + Sram_OpenSave(this, &this->sramCtx); + + gSaveContext.gameMode = GAMEMODE_NORMAL; + + STOP_GAMESTATE(&this->state); + SET_NEXT_GAMESTATE(&this->state, Play_Init, sizeof(PlayState)); + + gSaveContext.respawnFlag = 0; + gSaveContext.respawn[RESPAWN_MODE_DOWN].entrance = ENTR_LOAD_OPENING; + gSaveContext.seqId = (u8)NA_BGM_DISABLED; + gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; + gSaveContext.showTitleCard = true; + gSaveContext.dogParams = 0; + + for (i = 0; i < TIMER_ID_MAX; i++) { + gSaveContext.timerStates[i] = TIMER_STATE_OFF; + } + + gSaveContext.prevHudVisibility = HUD_VISIBILITY_ALL; + gSaveContext.nayrusLoveTimer = 0; + gSaveContext.healthAccumulator = 0; + gSaveContext.magicFlag = 0; + gSaveContext.forcedSeqId = 0; + gSaveContext.skyboxTime = CLOCK_TIME(0, 0); + gSaveContext.nextTransitionType = TRANS_NEXT_TYPE_DEFAULT; + gSaveContext.cutsceneTrigger = 0; + gSaveContext.chamberCutsceneNum = 0; + gSaveContext.nextDayTime = 0xFFFF; + gSaveContext.retainWeatherMode = false; + + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; + + gSaveContext.hudVisibilityForceButtonAlphasByStatus = false; + gSaveContext.nextHudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibility = HUD_VISIBILITY_IDLE; + gSaveContext.hudVisibilityTimer = 0; + + gSaveContext.save.saveInfo.playerData.tatlTimer = 0; +} + +void (*sSelectModeUpdateFuncs[])(GameState*) = { + FileSelect_FadeMainToSelect, // SM_FADE_MAIN_TO_SELECT + FileSelect_MoveSelectedFileToTop, // SM_MOVE_FILE_TO_TOP + FileSelect_FadeInFileInfo, // SM_FADE_IN_FILE_INFO + FileSelect_ConfirmFile, // SM_CONFIRM_FILE + FileSelect_FadeOutFileInfo, // SM_FADE_OUT_FILE_INFO + FileSelect_MoveSelectedFileToSlot, // SM_MOVE_FILE_TO_SLOT + FileSelect_FadeOut, // SM_FADE_OUT + FileSelect_LoadGame, // SM_LOAD_GAME +}; + +void FileSelect_SelectModeUpdate(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + sSelectModeUpdateFuncs[this->selectMode](&this->state); +} + +void FileSelect_SelectModeDraw(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + OPEN_DISPS(this->state.gfxCtx); + + gDPPipeSync(POLY_OPA_DISP++); + + Gfx_SetupDL42_Opa(this->state.gfxCtx); + FileSelect_SetView(this, 0.0f, 0.0f, 64.0f); + FileSelect_SetWindowVtx(&this->state); + FileSelect_SetWindowContentVtx(&this->state); + + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->windowAlpha); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + Matrix_Translate(0.0f, 0.0f, -93.6f, MTXMODE_NEW); + Matrix_Scale(0.78f, 0.78f, 0.78f, MTXMODE_APPLY); + Matrix_RotateXFApply(this->windowRot / 100.0f); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[0], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow1DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[32], 32, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow2DL); + + gSPVertex(POLY_OPA_DISP++, &this->windowVtx[64], 16, 0); + gSPDisplayList(POLY_OPA_DISP++, gFileSelWindow3DL); + + FileSelect_DrawWindowContents(&this->state); + gDPPipeSync(POLY_OPA_DISP++); + FileSelect_SetView(this, 0.0f, 0.0f, 64.0f); + + CLOSE_DISPS(this->state.gfxCtx); +} + +void FileSelect_UpdateAndDrawSkybox(FileSelectState* this) { + s32 pad; + f32 eyeX; + f32 eyeY; + f32 eyeZ; + + OPEN_DISPS(this->state.gfxCtx); + + gDPPipeSync(POLY_OPA_DISP++); + + eyeX = 1000.0f * Math_CosS(sFileSelectSkyboxRotation) - 1000.0f * Math_SinS(sFileSelectSkyboxRotation); + eyeY = -700.0f; + eyeZ = 1000.0f * Math_SinS(sFileSelectSkyboxRotation) + 1000.0f * Math_CosS(sFileSelectSkyboxRotation); + + FileSelect_SetView(this, eyeX, eyeY, eyeZ); + Skybox_Draw(&this->skyboxCtx, this->state.gfxCtx, SKYBOX_NORMAL_SKY, this->envCtx.skyboxBlend, eyeX, eyeY, eyeZ); + + gDPSetTextureLUT(POLY_OPA_DISP++, G_TT_NONE); + + sFileSelectSkyboxRotation += -0xA; + + CLOSE_DISPS(this->state.gfxCtx); +} + +void (*gFileSelectDrawFuncs[])(GameState*) = { + FileSelect_InitModeDraw, // FS_MENU_MODE_INIT + FileSelect_ConfigModeDraw, // FS_MENU_MODE_CONFIG + FileSelect_SelectModeDraw, // FS_MENU_MODE_SELECT +}; +void (*gFileSelectUpdateFuncs[])(GameState*) = { + FileSelect_InitModeUpdate, // FS_MENU_MODE_INIT + FileSelect_ConfigModeUpdate, // FS_MENU_MODE_CONFIG + FileSelect_SelectModeUpdate, // FS_MENU_MODE_SELECT +}; + +TexturePtr D_808147B4[] = { gFileSelPleaseWaitENGTex, gFileSelDecideCancelENGTex, gFileSelDecideSaveENGTex }; +s16 D_808147C0[] = { 144, 144, 152 }; +s16 D_808147C8[] = { 90, 90, 86 }; + +void FileSelect_Main(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + Input* input = CONTROLLER1(&this->state); + s32 texIndex; + s32 pad; + + func_8012CF0C(this->state.gfxCtx, 0, 1, 0, 0, 0); + + OPEN_DISPS(this->state.gfxCtx); + + gSPSegment(POLY_OPA_DISP++, 0x01, this->staticSegment); + gSPSegment(POLY_OPA_DISP++, 0x02, this->parameterSegment); + gSPSegment(POLY_OPA_DISP++, 0x06, this->titleSegment); + + this->stickAdjX = input->rel.stick_x; + this->stickAdjY = input->rel.stick_y; + + if (this->stickAdjX < -30) { + if (this->stickXDir == -1) { + this->inputTimerX--; + if (this->inputTimerX < 0) { + this->inputTimerX = 2; + } else { + this->stickAdjX = 0; + } + } else { + this->inputTimerX = 10; + this->stickXDir = -1; + } + } else if (this->stickAdjX > 30) { + if (this->stickXDir == 1) { + this->inputTimerX--; + if (this->inputTimerX < 0) { + this->inputTimerX = 2; + } else { + this->stickAdjX = 0; + } + } else { + this->inputTimerX = 10; + this->stickXDir = 1; + } + } else { + this->stickXDir = 0; + } + + if (this->stickAdjY < -30) { + if (this->stickYDir == -1) { + this->inputTimerY--; + if (this->inputTimerY < 0) { + this->inputTimerY = 2; + } else { + this->stickAdjY = 0; + } + } else { + this->inputTimerY = 10; + this->stickYDir = -1; + } + } else if (this->stickAdjY > 30) { + if (this->stickYDir == 1) { + this->inputTimerY--; + if (this->inputTimerY < 0) { + this->inputTimerY = 2; + } else { + this->stickAdjY = 0; + } + } else { + this->inputTimerY = 10; + this->stickYDir = 1; + } + } else { + this->stickYDir = 0; + } + + this->emptyFileTextAlpha = 0; + + FileSelect_PulsateCursor(&this->state); + gFileSelectUpdateFuncs[this->menuMode](&this->state); + FileSelect_UpdateAndDrawSkybox(this); + gFileSelectDrawFuncs[this->menuMode](&this->state); + + Gfx_SetupDL39_Opa(this->state.gfxCtx); + + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 100, 255, 255, this->controlsAlpha); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + if (this->sramCtx.status > 0) { + texIndex = 0; + } else if ((this->configMode >= CM_MAIN_TO_OPTIONS) && (this->configMode <= CM_OPTIONS_TO_MAIN)) { + texIndex = 2; + } else { + texIndex = 1; + } + + gDPLoadTextureBlock(POLY_OPA_DISP++, D_808147B4[texIndex], G_IM_FMT_IA, G_IM_SIZ_8b, D_808147C0[texIndex], 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, + G_TX_NOLOD); + + gSPTextureRectangle(POLY_OPA_DISP++, D_808147C8[texIndex] << 2, 204 << 2, + (D_808147C8[texIndex] + D_808147C0[texIndex]) << 2, (204 + 16) << 2, G_TX_RENDERTILE, 0, 0, + 1 << 10, 1 << 10); + + gDPPipeSync(POLY_OPA_DISP++); + gSPDisplayList(POLY_OPA_DISP++, sScreenFillSetupDL); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 0, this->screenFillAlpha); + gSPDisplayList(POLY_OPA_DISP++, D_0E000000.fillRect); + + CLOSE_DISPS(this->state.gfxCtx); +} + +void FileSelect_InitContext(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + EnvironmentContext* envCtx = &this->envCtx; + + Sram_Alloc(&this->state, &this->sramCtx); + func_801457CC(&this->state, &this->sramCtx); + + this->menuMode = FS_MENU_MODE_INIT; + + this->buttonIndex = this->selectMode = this->selectedFileIndex = this->copyDestFileIndex = + this->confirmButtonIndex = 0; + + this->confirmButtonTexIndices[0] = 2; + this->confirmButtonTexIndices[1] = 3; + this->titleLabel = FS_TITLE_SELECT_FILE; + this->nextTitleLabel = FS_TITLE_OPEN_FILE; + + this->screenFillAlpha = 255; + this->highlightPulseDir = 1; + this->unk_244F4 = 0xC; + this->highlightColor[0] = 155; + this->highlightColor[1] = 255; + this->highlightColor[2] = 255; + this->highlightColor[3] = 70; + this->configMode = CM_FADE_IN_START; + this->windowRot = 0.0f; + + this->stickXDir = this->inputTimerX = 0; + this->stickYDir = this->inputTimerY = 0; + + this->kbdX = this->kbdY = this->charIndex = 0; + + this->kbdButton = FS_KBD_BTN_NONE; + + this->windowColor[0] = 100; + this->windowColor[1] = 150; + this->windowColor[2] = 255; + + this->windowAlpha = this->titleAlpha[FS_TITLE_CUR] = this->titleAlpha[FS_TITLE_NEXT] = this->fileButtonAlpha[0] = + this->fileButtonAlpha[1] = this->fileButtonAlpha[2] = this->nameBoxAlpha[0] = this->nameBoxAlpha[1] = + this->nameBoxAlpha[2] = this->nameAlpha[0] = this->nameAlpha[1] = this->nameAlpha[2] = + this->connectorAlpha[0] = this->connectorAlpha[1] = this->connectorAlpha[2] = this->fileInfoAlpha[0] = + this->fileInfoAlpha[1] = this->fileInfoAlpha[2] = this->actionButtonAlpha[FS_BTN_ACTION_COPY] = + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = this->actionButtonAlpha[2] = + this->actionButtonAlpha[3] = this->optionButtonAlpha = this->nameEntryBoxAlpha = + this->controlsAlpha = this->emptyFileTextAlpha = 0; + + this->windowPosX = 6; + this->actionTimer = 4; + this->warningLabel = FS_WARNING_NONE; + + this->warningButtonIndex = this->buttonYOffsets[0] = this->buttonYOffsets[1] = this->buttonYOffsets[2] = + this->buttonYOffsets[3] = this->buttonYOffsets[4] = this->buttonYOffsets[5] = this->fileNamesY[0] = + this->fileNamesY[1] = this->fileNamesY[2] = 0; + + this->unk_2451E[0] = 0; + this->unk_2451E[1] = 3; + this->unk_2451E[2] = 6; + this->unk_2451E[3] = 8; + this->unk_2451E[4] = 10; + this->highlightTimer = 20; + + ShrinkWindow_Letterbox_SetSizeTarget(0); + + gSaveContext.skyboxTime = 0; + gSaveContext.save.time = 0; + + Skybox_Init(&this->state, &this->skyboxCtx, 1); + R_TIME_SPEED = 10; + + envCtx->changeSkyboxState = 0; + envCtx->changeSkyboxTimer = 0; + envCtx->changeLightEnabled = false; + envCtx->changeLightTimer = 0; + envCtx->skyboxDmaState = 0; + envCtx->skybox1Index = 99; + envCtx->skybox2Index = 99; + envCtx->lightConfig = 0; + envCtx->changeLightNextConfig = 0; + envCtx->lightSetting = 0; + envCtx->skyboxConfig = 2; + envCtx->skyboxDisabled = 0; + envCtx->skyboxBlend = 0; + envCtx->glareAlpha = 0.0f; + envCtx->lensFlareAlphaScale = 0.0f; + + gSaveContext.buttonStatus[EQUIP_SLOT_B] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_LEFT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_DOWN] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_C_RIGHT] = BTN_ENABLED; + gSaveContext.buttonStatus[EQUIP_SLOT_A] = BTN_ENABLED; +} + +void FileSelect_Destroy(GameState* this) { + ShrinkWindow_Destroy(); +} + +void FileSelect_Init(GameState* thisx) { + s32 pad; + FileSelectState* this = (FileSelectState*)thisx; + size_t size; + + Game_SetFramerateDivisor(&this->state, 1); + Matrix_Init(&this->state); + ShrinkWindow_Init(); + View_Init(&this->view, this->state.gfxCtx); + this->state.main = FileSelect_Main; + this->state.destroy = FileSelect_Destroy; + FileSelect_InitContext(&this->state); + Font_LoadOrderedFont(&this->font); + + size = SEGMENT_ROM_SIZE(title_static); + this->staticSegment = THA_AllocTailAlign16(&this->state.heap, size); + DmaMgr_SendRequest0(this->staticSegment, SEGMENT_ROM_START(title_static), size); + + size = SEGMENT_ROM_SIZE(parameter_static); + this->parameterSegment = THA_AllocTailAlign16(&this->state.heap, size); + DmaMgr_SendRequest0(this->parameterSegment, SEGMENT_ROM_START(parameter_static), size); + + size = gObjectTable[OBJECT_MAG].vromEnd - gObjectTable[OBJECT_MAG].vromStart; + this->titleSegment = THA_AllocTailAlign16(&this->state.heap, size); + DmaMgr_SendRequest0(this->titleSegment, gObjectTable[OBJECT_MAG].vromStart, size); + + Audio_SetSpec(0xA); + // Setting ioData to 1 and writing it to ioPort 7 will skip the harp intro + Audio_PlaySequenceWithSeqPlayerIO(SEQ_PLAYER_BGM_MAIN, NA_BGM_FILE_SELECT, 0, 7, 1); +} diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c b/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c new file mode 100644 index 000000000..7f8e5789c --- /dev/null +++ b/src/overlays/gamestates/ovl_file_choose/z_file_copy_erase.c @@ -0,0 +1,1253 @@ +/* + * File: z_file_copy_erase.c + * Overlay: ovl_file_choose + * Description: Copying and Erasing Files + */ + +#include "z_file_select.h" +#include "z64rumble.h" + +// When choosing a file to copy or erase, the 6 main menu buttons are placed at these offsets +s16 sChooseFileYOffsets[] = { -48, -48, -48, -24, -24, 0 }; + +s16 D_8081424C[3][3] = { + { 0, -48, -48 }, + { -64, 16, -48 }, + { -64, -64, 32 }, +}; + +s16 sEraseDelayTimer = 15; + +/** + * Move buttons into place for the select source screen and fade in the proper labels. + * Update function for `CM_SETUP_COPY_SOURCE` + */ +void FileSelect_SetupCopySource(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s32 yStep; + s16 i; + + for (i = 0; i < 5; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i] - sChooseFileYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= sChooseFileYOffsets[i]) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] -= 200 / 4; + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] -= 200 / 4; + this->optionButtonAlpha -= 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] += 200 / 4; + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->actionTimer = 4; + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->optionButtonAlpha = 0; + + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 200; + this->titleLabel = this->nextTitleLabel; + + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->buttonIndex = FS_BTN_COPY_QUIT; + this->configMode++; // CM_SELECT_COPY_SOURCE + } +} + +/** + * Allow the player to select a file to copy or exit back to the main menu. + * Update function for `CM_SELECT_COPY_SOURCE` + */ +void FileSelect_SelectCopySource(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); + + if (((this->buttonIndex == FS_BTN_COPY_QUIT) && CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { + this->actionTimer = 4; + this->buttonIndex = FS_BTN_MAIN_COPY; + this->nextTitleLabel = FS_TITLE_SELECT_FILE; + this->configMode = CM_COPY_RETURN_MAIN; + this->warningLabel = FS_WARNING_NONE; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) { + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + this->actionTimer = 4; + this->selectedFileIndex = this->buttonIndex; + this->configMode = CM_SETUP_COPY_DEST_1; + this->nextTitleLabel = FS_TITLE_COPY_TO; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else if (SLOT_OCCUPIED(this, this->buttonIndex)) { + this->actionTimer = 4; + this->selectedFileIndex = this->buttonIndex; + this->configMode = CM_SETUP_COPY_DEST_1; + this->nextTitleLabel = FS_TITLE_COPY_TO; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else { + if (ABS_ALT(this->stickAdjY) >= 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + if (this->stickAdjY >= 30) { + this->buttonIndex--; + // Instead of removing File 3 entirely, the index is manually adjusted to skip it + if (this->buttonIndex == FS_BTN_COPY_FILE_3) { + this->buttonIndex = FS_BTN_COPY_FILE_2; + } + if (this->buttonIndex < FS_BTN_COPY_FILE_1) { + this->buttonIndex = FS_BTN_COPY_QUIT; + } + } else { + this->buttonIndex++; + // Instead of removing File 3 entirely, the index is manually adjusted to skip it + if (this->buttonIndex == FS_BTN_COPY_FILE_3) { + this->buttonIndex = FS_BTN_COPY_QUIT; + } + if (this->buttonIndex > FS_BTN_COPY_QUIT) { + this->buttonIndex = FS_BTN_COPY_FILE_1; + } + } + } + + if (this->buttonIndex != FS_BTN_COPY_QUIT) { + if (!gSaveContext.flashSaveAvailable) { + if (!NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + this->warningLabel = FS_WARNING_FILE_EMPTY; + this->warningButtonIndex = this->buttonIndex; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } else if (!SLOT_OCCUPIED(this, this->buttonIndex)) { + this->warningLabel = FS_WARNING_FILE_EMPTY; + this->warningButtonIndex = this->buttonIndex; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } + } +} + +/** + * Move the menu buttons into place for the copy destination selection and switch titles. + * Update function for `CM_SETUP_COPY_DEST_1` + */ +void FileSelect_SetupCopyDest1(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s32 yStep; + s16 i; + + for (i = 0; i < 3; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i] - D_8081424C[this->buttonIndex][i]) / this->actionTimer; + + if (D_8081424C[this->buttonIndex][i] >= this->buttonYOffsets[i]) { + this->buttonYOffsets[i] += yStep; + } else { + this->buttonYOffsets[i] -= yStep; + } + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->nameBoxAlpha[this->buttonIndex] -= 200 / 4; + + this->actionTimer--; + if (this->actionTimer == 0) { + this->buttonYOffsets[this->buttonIndex] = D_8081424C[this->buttonIndex][this->buttonIndex]; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->actionTimer = 4; + this->configMode++; // CM_SETUP_COPY_DEST_2 + } +} + +/** + * Show the file info of the file selected to copy from. + * Update function for `CM_SETUP_COPY_DEST_2` + */ +void FileSelect_SetupCopyDest2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->nameBoxAlpha[this->buttonIndex] -= 200 / 4; + this->fileInfoAlpha[this->buttonIndex] += 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->nameBoxAlpha[this->buttonIndex] = 0; + this->fileInfoAlpha[this->buttonIndex] = 200; + this->buttonIndex = FS_BTN_COPY_QUIT; + this->actionTimer = 4; + this->configMode = CM_SELECT_COPY_DEST; + } +} + +/** + * Allow the player to select a slot to copy to or exit to the copy select screen. + * Update function for `CM_SELECT_COPY_DEST` + */ +void FileSelect_SelectCopyDest(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); + + if (((this->buttonIndex == FS_BTN_COPY_QUIT) && CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { + this->buttonIndex = this->selectedFileIndex; + this->nextTitleLabel = FS_TITLE_COPY_FROM; + this->actionTimer = 4; + this->configMode = CM_EXIT_TO_COPY_SOURCE_1; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) { + if (!gSaveContext.flashSaveAvailable) { + if (!NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + this->copyDestFileIndex = this->buttonIndex; + this->nextTitleLabel = FS_TITLE_COPY_CONFIRM; + this->actionTimer = 4; + this->configMode = CM_SETUP_COPY_CONFIRM_1; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else if (!SLOT_OCCUPIED(this, this->buttonIndex)) { + this->copyDestFileIndex = this->buttonIndex; + this->nextTitleLabel = FS_TITLE_COPY_CONFIRM; + this->actionTimer = 4; + this->configMode = CM_SETUP_COPY_CONFIRM_1; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else { + if (ABS_ALT(this->stickAdjY) >= 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + if (this->stickAdjY >= 30) { + this->buttonIndex--; + // Instead of removing File 3 entirely, the index is manually adjusted to skip it + if (this->buttonIndex == FS_BTN_COPY_FILE_3) { + this->buttonIndex = FS_BTN_COPY_FILE_2; + } + if (this->buttonIndex == this->selectedFileIndex) { + this->buttonIndex--; + if (this->buttonIndex < FS_BTN_COPY_FILE_1) { + this->buttonIndex = FS_BTN_COPY_QUIT; + } + // Instead of removing File 3 entirely, the index is manually adjusted to skip it + if (this->buttonIndex == FS_BTN_COPY_FILE_3) { + this->buttonIndex = FS_BTN_COPY_FILE_2; + } + } else if (this->buttonIndex < FS_BTN_COPY_FILE_1) { + this->buttonIndex = FS_BTN_COPY_QUIT; + } + } else { + this->buttonIndex++; + if (this->buttonIndex > FS_BTN_COPY_QUIT) { + this->buttonIndex = FS_BTN_COPY_FILE_1; + } + if (this->buttonIndex == this->selectedFileIndex) { + this->buttonIndex++; + } + // Instead of removing File 3 entirely, the index is manually adjusted to skip it + if (this->buttonIndex == FS_BTN_COPY_FILE_3) { + this->buttonIndex = FS_BTN_COPY_QUIT; + } + } + } + if (this->buttonIndex != FS_BTN_COPY_QUIT) { + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + this->warningLabel = FS_WARNING_FILE_IN_USE; + this->warningButtonIndex = this->buttonIndex; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } else if (SLOT_OCCUPIED(this, this->buttonIndex)) { + this->warningLabel = FS_WARNING_FILE_IN_USE; + this->warningButtonIndex = this->buttonIndex; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } + } +} + +/** + * Fade out file info, bring back the name box, and get ready to return to copy source screen. + * Update function for `CM_EXIT_TO_COPY_SOURCE_1` + */ +void FileSelect_ExitToCopySource1(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->fileInfoAlpha[this->buttonIndex] -= 200 / 4; + this->nameBoxAlpha[this->buttonIndex] += 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->nextTitleLabel = FS_TITLE_COPY_FROM; + this->nameBoxAlpha[this->buttonIndex] = 200; + this->fileInfoAlpha[this->buttonIndex] = 0; + this->actionTimer = 4; + this->configMode++; // CM_EXIT_TO_COPY_SOURCE_2 + } +} + +/** + * Move the buttons back into place and return to copy source select. + * Update function for `CM_EXIT_TO_COPY_SOURCE_2` + */ +void FileSelect_ExitToCopySource2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + for (i = 0; i < 3; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i] - sChooseFileYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= sChooseFileYOffsets[i]) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->buttonIndex = FS_BTN_COPY_QUIT; + this->configMode = CM_SELECT_COPY_SOURCE; + } +} + +s16 D_80814264[] = { -56, -40, -24, 0 }; + +/** + * Rearrange buttons on the screen to prepare for copy confirmation. + * Update function for `CM_SETUP_COPY_CONFIRM_1` + */ +void FileSelect_SetupCopyConfirm1(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + + for (i = 0; i < 3; i++) { + if ((i != this->copyDestFileIndex) && (i != this->selectedFileIndex)) { + this->fileButtonAlpha[i] -= 200 / 4; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->connectorAlpha[i] -= 255 / 4; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->connectorAlpha[i] -= 255 / 4; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + } + } else if (i == this->copyDestFileIndex) { + yStep = ABS_ALT(this->buttonYOffsets[i] - D_80814264[i]) / this->actionTimer; + this->buttonYOffsets[i] += yStep; + + if (this->buttonYOffsets[i] >= D_80814264[i]) { + this->buttonYOffsets[i] = D_80814264[i]; + } + } + } + + this->actionTimer--; + + if (this->actionTimer == 0) { + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->actionTimer = 4; + this->configMode++; + } +} + +/** + * Fade in the 'Yes' button before allowing the player to decide. + * Update function for `CM_SETUP_COPY_CONFIRM_2` + */ +void FileSelect_SetupCopyConfirm2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] += 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->configMode = CM_COPY_CONFIRM; + this->buttonIndex = FS_BTN_CONFIRM_QUIT; + } +} + +/** + * Allow the player to confirm the copy, or quit back to the destination select. + * If yes is selected, the actual copy occurs in this function before moving on to the animation. + * Update function for `CM_COPY_CONFIRM` + */ +void FileSelect_CopyConfirm(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); + u16 dayTime; + + if (((this->buttonIndex != FS_BTN_CONFIRM_YES) && CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { + this->actionTimer = 4; + this->nextTitleLabel = FS_TITLE_COPY_TO; + this->configMode = CM_RETURN_TO_COPY_DEST; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) { + dayTime = gSaveContext.save.time; + gSaveContext.save.time = dayTime; + this->nameAlpha[this->copyDestFileIndex] = 0; + this->fileInfoAlpha[this->copyDestFileIndex] = this->nameAlpha[this->copyDestFileIndex]; + this->nextTitleLabel = FS_TITLE_COPY_COMPLETE; + this->actionTimer = 4; + Sram_CopySave(this, sramCtx); + if (!gSaveContext.flashSaveAvailable) { + this->configMode = CM_COPY_ANIM_1; + } else { + Sram_SetFlashPagesDefault(sramCtx, gFlashSaveStartPages[this->copyDestFileIndex * 2], + gFlashSpecialSaveNumPages[this->copyDestFileIndex * 2]); + Sram_StartWriteToFlashDefault(sramCtx); + this->configMode = CM_COPY_WAIT_FOR_FLASH_SAVE; + } + Rumble_Request(300.0f, 180, 20, 100); + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else if (ABS_ALT(this->stickAdjY) >= 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->buttonIndex ^= 1; + } +} + +/** + * Update and wait for the save to flash to complete. + * Update function for `CM_COPY_WAIT_FOR_FLASH_SAVE` + */ +void FileSelect_CopyWaitForFlashSave(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + u16 i; + + Sram_UpdateWriteToFlashDefault(sramCtx); + + if (sramCtx->status == 0) { + this->configMode = CM_COPY_ANIM_1; + + for (i = 0; i < 6; i++) { + this->newf[this->copyDestFileIndex][i] = gSaveContext.save.saveInfo.playerData.newf[i]; + } + + this->threeDayResetCount[this->copyDestFileIndex] = gSaveContext.save.saveInfo.playerData.threeDayResetCount; + + for (i = 0; i < 8; i++) { + this->fileNames[this->copyDestFileIndex][i] = gSaveContext.save.saveInfo.playerData.playerName[i]; + } + + this->healthCapacity[this->copyDestFileIndex] = gSaveContext.save.saveInfo.playerData.healthCapacity; + this->health[this->copyDestFileIndex] = gSaveContext.save.saveInfo.playerData.health; + this->defenseHearts[this->copyDestFileIndex] = gSaveContext.save.saveInfo.inventory.defenseHearts; + } +} + +/** + * Move buttons back in place and return to copy destination select. + * Update function for `CM_RETURN_TO_COPY_DEST` + */ +void FileSelect_ReturnToCopyDest(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 200 / 4; + + for (i = 0; i < 3; i++) { + if ((i != this->copyDestFileIndex) && (i != this->selectedFileIndex)) { + this->fileButtonAlpha[i] += 200 / 4; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } + + yStep = ABS_ALT(this->buttonYOffsets[i] - D_8081424C[this->selectedFileIndex][i]) / this->actionTimer; + + if (D_8081424C[this->selectedFileIndex][i] >= this->buttonYOffsets[i]) { + this->buttonYOffsets[i] += yStep; + } else { + this->buttonYOffsets[i] -= yStep; + } + } + + this->actionTimer--; + + if (this->actionTimer == 0) { + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->actionTimer = 4; + this->buttonIndex = FS_BTN_COPY_QUIT; + this->configMode = CM_SELECT_COPY_DEST; + } +} + +/** + * Hide title + * Update function for `CM_COPY_ANIM_1` + */ +void FileSelect_CopyAnim1(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->titleAlpha[FS_TITLE_CUR] = 0; + this->actionTimer = 4; + this->configMode++; // CM_COPY_ANIM_2 + } +} + +/** + * Move a copy of the file window down and fade in the file info. + * Update function for `CM_COPY_ANIM_2` + */ +void FileSelect_CopyAnim2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s32 yStep; + + this->fileInfoAlpha[this->copyDestFileIndex] += 200 / 4; + this->nameAlpha[this->copyDestFileIndex] += 200 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + yStep = ABS_ALT(this->fileNamesY[this->copyDestFileIndex] + 56) / this->actionTimer; + this->fileNamesY[this->copyDestFileIndex] -= yStep; + + if (this->fileNamesY[this->copyDestFileIndex] <= -56) { + this->fileNamesY[this->copyDestFileIndex] = -56; + } + + this->actionTimer--; + + if (this->actionTimer == 0) { + this->actionTimer = 45; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->configMode++; // CM_COPY_ANIM_3 + } +} + +/** + * Play a sound effect to indicate that the copy has completed. Wait for a timer or for + * the player to press a button before moving on. + * Update function for `CM_COPY_ANIM_3` + */ +void FileSelect_CopyAnim3(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + Input* input = CONTROLLER1(&this->state); + + if (this->actionTimer == 38) { + this->connectorAlpha[this->copyDestFileIndex] = 255; + play_sound(NA_SE_EV_DIAMOND_SWITCH); + } + + this->actionTimer--; + + if (this->actionTimer < 37) { + if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_B | BTN_START) || (this->actionTimer == 0)) { + this->actionTimer = 4; + this->nextTitleLabel = FS_TITLE_SELECT_FILE; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + this->configMode = CM_COPY_ANIM_4; + } + } +} + +/** + * Fade out the info boxes for both files and bring in their name boxes. Fade out title. + * Update function for `CM_COPY_ANIM_4` + */ +void FileSelect_CopyAnim4(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->fileInfoAlpha[this->selectedFileIndex] -= 200 / 4; + this->fileInfoAlpha[this->copyDestFileIndex] -= 200 / 4; + this->nameBoxAlpha[this->selectedFileIndex] += 200 / 4; + this->nameBoxAlpha[this->copyDestFileIndex] += 200 / 4; + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->fileNamesY[this->copyDestFileIndex] = this->buttonYOffsets[3] = 0; + this->actionTimer = 4; + this->titleAlpha[FS_TITLE_CUR] = 0; + this->configMode++; + } +} + +/** + * Restore all buttons and labels back to their original place and go back to the main menu. + * Update function for `CM_COPY_ANIM_5` + */ +void FileSelect_CopyAnim5(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + for (i = 0; i < 5; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= 0) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + this->fileButtonAlpha[i] += 200 / 4; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } + } + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] += 200 / 4; + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] += 200 / 4; + this->optionButtonAlpha += 200 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + for (i = 0; i < 3; i++) { + this->connectorAlpha[i] = 0; + this->fileButtonAlpha[i] = 200; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->connectorAlpha[i]; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] = 255; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] = 255; + } + } + + this->fileNamesY[this->selectedFileIndex] = 0; + this->highlightColor[3] = 70; + this->highlightPulseDir = 1; + this->highlightTimer = 20; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->configMode = CM_MAIN_MENU; + } +} + +/** + * Exit from the copy source screen to the main menu. Return all buttons and labels to their original place. + * Update function for `CM_COPY_RETURN_MAIN` + */ +void FileSelect_ExitCopyToMain(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 i; + s32 yStep; + + for (i = 0; i < 5; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= 0) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] += 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 200 / 4; + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = 200; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->configMode = CM_MAIN_MENU; + } + + this->optionButtonAlpha = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->actionButtonAlpha[FS_BTN_ACTION_COPY]; +} + +/** + * Move buttons into place for the erase select screen and fade in the proper labels. + * Update function for `CM_SETUP_ERASE_SELECT` + */ +void FileSelect_SetupEraseSelect(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 i; + s32 yStep; + + for (i = 0; i < 5; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i] - sChooseFileYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= sChooseFileYOffsets[i]) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] -= 100; + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] -= 100; + this->optionButtonAlpha -= 100; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] += 200 / 4; + + if (this->actionButtonAlpha[FS_BTN_ACTION_COPY] <= 0) { + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->optionButtonAlpha = 0; + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->highlightColor[3] = 70; + this->highlightPulseDir = 1; + this->highlightTimer = 20; + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->optionButtonAlpha = 0; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 200; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->buttonIndex = FS_BTN_ERASE_QUIT; + this->configMode++; // CM_ERASE_SELECT + } +} + +/** + * Allow the player to select a file to erase or exit back to the main menu. + * Update function for `CM_ERASE_SELECT` + */ +void FileSelect_EraseSelect(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); + + if (((this->buttonIndex == FS_BTN_COPY_QUIT) && CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { + this->buttonIndex = FS_BTN_MAIN_ERASE; + this->actionTimer = 4; + this->nextTitleLabel = FS_TITLE_SELECT_FILE; + this->configMode = CM_EXIT_ERASE_TO_MAIN; + this->warningLabel = FS_WARNING_NONE; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) { + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + this->actionTimer = 4; + this->selectedFileIndex = this->buttonIndex; + this->configMode = CM_SETUP_ERASE_CONFIRM_1; + this->nextTitleLabel = FS_TITLE_ERASE_CONFIRM; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else if (SLOT_OCCUPIED(this, this->buttonIndex)) { + this->actionTimer = 4; + this->selectedFileIndex = this->buttonIndex; + this->configMode = CM_SETUP_ERASE_CONFIRM_1; + this->nextTitleLabel = FS_TITLE_ERASE_CONFIRM; + play_sound(NA_SE_SY_FSEL_DECIDE_L); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } else { + if (ABS_ALT(this->stickAdjY) >= 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + + if (this->stickAdjY >= 30) { + this->buttonIndex--; + if (this->buttonIndex == FS_BTN_ERASE_FILE_3) { + this->buttonIndex = FS_BTN_ERASE_FILE_2; + } + if (this->buttonIndex < FS_BTN_ERASE_FILE_1) { + this->buttonIndex = FS_BTN_ERASE_QUIT; + } + } else { + this->buttonIndex++; + if (this->buttonIndex == FS_BTN_ERASE_FILE_3) { + this->buttonIndex = FS_BTN_ERASE_QUIT; + } + if (this->buttonIndex > FS_BTN_ERASE_QUIT) { + this->buttonIndex = FS_BTN_ERASE_FILE_1; + } + } + } + + if (this->buttonIndex != FS_BTN_ERASE_QUIT) { + if (!gSaveContext.flashSaveAvailable) { + if (!NO_FLASH_SLOT_OCCUPIED(sramCtx, this->buttonIndex)) { + this->warningLabel = FS_WARNING_FILE_EMPTY; + this->warningButtonIndex = this->buttonIndex; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } else if (!SLOT_OCCUPIED(this, this->buttonIndex)) { + this->warningLabel = FS_WARNING_FILE_EMPTY; + this->warningButtonIndex = this->buttonIndex; + this->emptyFileTextAlpha = 255; + } else { + this->warningLabel = FS_WARNING_NONE; + } + } else { + this->warningLabel = FS_WARNING_NONE; + } + } +} + +s16 D_8081426C[] = { 0, 16, 32 }; + +/** + * Update function for `CM_SETUP_ERASE_CONFIRM_1` + */ +void FileSelect_SetupEraseConfirm1(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + this->fileButtonAlpha[i] -= 200 / 4; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->connectorAlpha[i] -= 255 / 4; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->connectorAlpha[i] -= 255 / 4; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + } + } else { + this->nameBoxAlpha[i] -= 200 / 4; + } + } + this->titleAlpha[FS_TITLE_CUR] -= 255 / 8; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 8; + + yStep = ABS_ALT(this->buttonYOffsets[this->buttonIndex] - D_8081426C[this->buttonIndex]) / this->actionTimer; + + if (this->buttonYOffsets[this->buttonIndex] >= D_8081426C[this->buttonIndex]) { + this->buttonYOffsets[this->buttonIndex] -= yStep; + } else { + this->buttonYOffsets[this->buttonIndex] += yStep; + } + + this->actionTimer--; + + if (this->actionTimer == 0) { + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + this->fileButtonAlpha[i] = 0; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->connectorAlpha[i] = 0; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i] = 0; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->connectorAlpha[i] = 0; + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i] = 0; + } + } else { + this->nameBoxAlpha[i] = 0; + } + } + + this->buttonYOffsets[this->buttonIndex] = D_8081426C[this->buttonIndex]; + this->actionTimer = 4; + this->configMode++; + } +} + +/** + * Show the file info of the file selected to erase. + * Update function for `CM_SETUP_ERASE_CONFIRM_2` + */ +void FileSelect_SetupEraseConfirm2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] += 200 / 4; + this->titleAlpha[FS_TITLE_CUR] -= 255 / 8; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 8; + this->fileInfoAlpha[this->buttonIndex] += 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->actionTimer = 4; + this->titleLabel = this->nextTitleLabel; + this->fileInfoAlpha[this->buttonIndex] = this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = 200; + this->buttonIndex = FS_BTN_CONFIRM_QUIT; + this->configMode = CM_ERASE_CONFIRM; + } +} + +/** + * Allow the player to confirm their choice to erase or return back to erase select. + * Update function for `CM_ERASE_CONFIRM` + */ +void FileSelect_EraseConfirm(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); + + if (((this->buttonIndex != FS_BTN_CONFIRM_YES) && CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) || + CHECK_BTN_ALL(input->press.button, BTN_B)) { + this->buttonIndex = this->selectedFileIndex; + this->nextTitleLabel = FS_TITLE_ERASE_FILE; + this->configMode = CM_EXIT_TO_ERASE_SELECT_1; + this->actionTimer = 4; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) { + Sram_EraseSave(this, sramCtx, this->selectedFileIndex); + if (!gSaveContext.flashSaveAvailable) { + this->configMode = CM_ERASE_ANIM_1; + } else { + Sram_SetFlashPagesDefault(sramCtx, gFlashSaveStartPages[this->selectedFileIndex * 2], + gFlashSpecialSaveNumPages[this->selectedFileIndex * 2]); + Sram_StartWriteToFlashDefault(sramCtx); + this->configMode = CM_ERASE_WAIT_FOR_FLASH_SAVE; + } + this->connectorAlpha[this->selectedFileIndex] = 0; + play_sound(NA_SE_EV_DIAMOND_SWITCH); + this->actionTimer = 4; + this->nextTitleLabel = FS_TITLE_ERASE_COMPLETE; + Rumble_Request(200.0f, 255, 20, 150); + sEraseDelayTimer = 15; + } else if (ABS_ALT(this->stickAdjY) >= 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->buttonIndex ^= 1; + } +} + +/** + * Fade out file info, bring back the name box, and get ready to return to erase select screen. + * Update function for `CM_EXIT_TO_ERASE_SELECT_1` + */ +void FileSelect_ExitToEraseSelect1(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->fileInfoAlpha[this->buttonIndex] -= 200 / 4; + this->nameBoxAlpha[this->buttonIndex] += 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 200 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->actionTimer = 4; + this->fileInfoAlpha[this->buttonIndex] = 0; + this->configMode++; // CM_EXIT_TO_ERASE_SELECT_2 + } +} + +/** + * Move the buttons back into place and return to erase select. + * Update function for `CM_EXIT_TO_ERASE_SELECT_2` + */ +void FileSelect_ExitToEraseSelect2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + yStep = + ABS_ALT(this->buttonYOffsets[this->buttonIndex] - sChooseFileYOffsets[this->buttonIndex]) / this->actionTimer; + + if (this->buttonYOffsets[this->buttonIndex] >= sChooseFileYOffsets[this->buttonIndex]) { + this->buttonYOffsets[this->buttonIndex] -= yStep; + } else { + this->buttonYOffsets[this->buttonIndex] += yStep; + } + + for (i = 0; i < 3; i++) { + if (i != this->buttonIndex) { + this->fileButtonAlpha[i] += 200 / 4; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->buttonYOffsets[this->buttonIndex] = sChooseFileYOffsets[this->buttonIndex]; + this->actionTimer = 4; + this->buttonIndex = FS_BTN_ERASE_QUIT; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->configMode = CM_ERASE_SELECT; + } +} + +/** + * Wait for an initial delay, then start fading out the selected file. + * The actual file deletion occurs in this function. + * Update function for `CM_ERASE_ANIM_1` + */ +void FileSelect_EraseAnim1(GameState* thisx) { + static s16 D_80814E80; + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + + if (sEraseDelayTimer == 0) { + if (this->actionTimer == 4) { + D_80814E80 = 1; + } + + if (this->actionTimer != 0) { + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->fileInfoAlpha[this->selectedFileIndex] -= 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] -= 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 200 / 4; + } + + this->fileNamesY[this->selectedFileIndex] -= D_80814E80; + D_80814E80 += 2; + + this->actionTimer--; + if (this->actionTimer == 0) { + this->configMode = CM_ERASE_ANIM_2; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = this->connectorAlpha[this->selectedFileIndex] = 0; + + //! FAKE: there should be a better chained assignment + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + if (1) {} + if (0) {} + this->fileInfoAlpha[this->selectedFileIndex] = this->nameAlpha[this->selectedFileIndex] = + this->nameBoxAlpha[this->selectedFileIndex] = this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT]; + + this->actionTimer = 45; + } + } else { + sEraseDelayTimer--; + + if (sEraseDelayTimer == 0) { + play_sound(NA_SE_OC_ABYSS); + } + } +} + +/** + * Update and wait for the save to flash to complete. + * Update function for `CM_ERASE_WAIT_FOR_FLASH_SAVE` + */ +void FileSelect_EraseWaitForFlashSave(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + u16 i; + + Sram_UpdateWriteToFlashDefault(sramCtx); + + if (sramCtx->status == 0) { + this->configMode = CM_ERASE_ANIM_1; + for (i = 0; i < 6; i++) { + this->newf[this->selectedFileIndex][i] = gSaveContext.save.saveInfo.playerData.newf[i]; + } + } +} + +/** + * Wait for a delay timer or for the palyer to press a button before returning to the main menu. + * Update function for `CM_ERASE_ANIM_2` + */ +void FileSelect_EraseAnim2(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + Input* input = CONTROLLER1(&this->state); + + if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_B | BTN_START) || (--this->actionTimer == 0)) { + this->buttonYOffsets[3] = 0; + this->actionTimer = 4; + this->nextTitleLabel = FS_TITLE_SELECT_FILE; + this->configMode++; // CM_ERASE_ANIM_3 + play_sound(NA_SE_SY_FSEL_CLOSE); + } +} + +/** + * Exit from the erase animation to the main menu. Return all buttons and labels to their original place. + * Update function for `CM_ERASE_ANIM_3` + */ +void FileSelect_EraseAnim3(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + s16 i; + s32 yStep; + + for (i = 0; i < 5; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= 0) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + for (i = 0; i < 3; i++) { + this->fileButtonAlpha[i] += 200 / 4; + + if (!gSaveContext.flashSaveAvailable) { + if (NO_FLASH_SLOT_OCCUPIED(sramCtx, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } else if (SLOT_OCCUPIED(this, i)) { + this->nameBoxAlpha[i] = this->nameAlpha[i] = this->fileButtonAlpha[i]; + this->connectorAlpha[i] += 255 / 4; + } + } + + if (this->fileButtonAlpha[this->selectedFileIndex] >= 200) { + this->fileButtonAlpha[this->selectedFileIndex] = 200; + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->fileNamesY[this->selectedFileIndex] = 0; + this->highlightColor[3] = 70; + this->highlightPulseDir = 1; + this->highlightTimer = 20; + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = 200; + this->confirmButtonAlpha[FS_BTN_CONFIRM_YES] = this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->configMode = CM_MAIN_MENU; + } + + this->optionButtonAlpha = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->actionButtonAlpha[FS_BTN_ACTION_COPY]; +} + +/** + * Exit from the erase select screen to the main menu. Return all buttons and labels to their original place. + * Update function for `CM_EXIT_ERASE_TO_MAIN` + */ +void FileSelect_ExitEraseToMain(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 i; + s32 yStep; + + for (i = 0; i < 5; i++) { + yStep = ABS_ALT(this->buttonYOffsets[i]) / this->actionTimer; + + if (this->buttonYOffsets[i] >= 0) { + this->buttonYOffsets[i] -= yStep; + } else { + this->buttonYOffsets[i] += yStep; + } + } + + this->actionButtonAlpha[FS_BTN_ACTION_COPY] += 200 / 4; + this->actionButtonAlpha[FS_BTN_ACTION_ERASE] += 200 / 4; + this->optionButtonAlpha += 200 / 4; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] -= 200 / 2; + + if (this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] <= 0) { + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + } + + this->titleAlpha[FS_TITLE_CUR] -= 255 / 4; + this->titleAlpha[FS_TITLE_NEXT] += 255 / 4; + this->actionTimer--; + + if (this->actionTimer == 0) { + this->highlightColor[3] = 70; + this->highlightPulseDir = 1; + this->highlightTimer = 20; + this->actionButtonAlpha[FS_BTN_ACTION_COPY] = 200; + this->confirmButtonAlpha[FS_BTN_CONFIRM_QUIT] = 0; + this->titleLabel = this->nextTitleLabel; + this->titleAlpha[FS_TITLE_CUR] = 255; + this->titleAlpha[FS_TITLE_NEXT] = 0; + this->configMode = CM_MAIN_MENU; + } + + this->optionButtonAlpha = this->actionButtonAlpha[FS_BTN_ACTION_ERASE] = + this->actionButtonAlpha[FS_BTN_ACTION_COPY]; +} diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c index c6e3983d8..02236002a 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_NES.c @@ -1,78 +1,1059 @@ /* * File: z_file_nameset_NES.c * Overlay: ovl_file_choose - * Description: + * Description: Entering name on a new file, selecting options from the options menu */ -#include "z_file_choose.h" +#include "prevent_bss_reordering.h" +#include "z_file_select.h" #include "z64rumble.h" +#include "misc/title_static/title_static.h" +#include "overlays/ovl_file_choose/ovl_file_choose.h" -extern UNK_TYPE D_01002800; -extern UNK_TYPE D_01007980; -extern UNK_TYPE D_0102A6B0; -extern UNK_TYPE D_0102B170; -extern UNK_TYPE D_010310F0; -extern UNK_TYPE D_010311F0; +void FileSelect_DrawTexQuadI4(GraphicsContext* gfxCtx, TexturePtr texture, s16 point) { + OPEN_DISPS(gfxCtx); -// there are uses of D_0E000000.fillRect (appearing as D_0E0002E0) in this file -extern GfxMasterList D_0E000000; + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, texture, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, point, point + 2, point + 3, point + 1, 0); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80804010.s") + CLOSE_DISPS(gfxCtx); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808041A0.s") +void FileSelect_DrawMultiTexQuadI4(GraphicsContext* gfxCtx, TexturePtr texture1, TexturePtr texture2, s16 point) { + OPEN_DISPS(gfxCtx); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80804654.s") + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, texture1, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gDPLoadMultiBlock_4b(POLY_OPA_DISP++, texture2, 0x0080, 1, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, point, point + 2, point + 3, point + 1, 0); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808047D8.s") + CLOSE_DISPS(gfxCtx); +} -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080489C.s") +s16 D_80814280[] = { + 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 2, 1, 1, 4, 2, 2, 2, 1, 1, 0, 2, 0, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 2, 2, 2, 2, 2, 3, 2, 2, 4, 3, 2, 4, 1, 2, 2, 1, 1, 2, 2, 3, 2, 2, 0, 2, 2, 2, 0, 3, 1, 0, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80804DAC.s") +s16 D_80814304[] = { + 1, 2, 0, 1, 1, 2, 1, 1, 4, 2, 2, 2, 1, 1, 0, 2, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 2, 2, 2, 2, 2, 3, + 2, 2, 4, 3, 2, 4, 1, 2, 2, 1, 1, 2, 2, 3, 2, 2, 0, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80804E74.s") +s16 D_80814384[] = { + 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80804F98.s") +s16 D_80814404[] = { + -94, -96, -48, 0, 32, 64, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080525C.s") +s16 D_80814410[] = { + 56, 44, 44, 28, 28, 44, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808052B0.s") +s16 D_8081441C[] = { + 72, -48, -48, -48, -48, -48, +}; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808054A4.s") +void FileSelect_SetKeyboardVtx(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 phi_t2; + s16 phi_t0; + s16 phi_t3; + s16 phi_s1; + s16 phi_t1; + s16 phi_s2; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808055D0.s") + this->keyboardVtx = GRAPH_ALLOC(this->state.gfxCtx, sizeof(Vtx) * 4 * 5 * 13); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808058A4.s") + phi_s1 = 0x26; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80805918.s") + for (phi_t2 = 0, phi_s2 = 0, phi_t3 = 0; phi_s2 < 5; phi_s2++) { + phi_t0 = -0x60; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80805A58.s") + for (phi_t1 = 0; phi_t1 < 13; phi_t1++, phi_t3 += 4, phi_t2++) { + //! @bug D_80814304 is accessed out of bounds when drawing the empty space character (value of 64). Under + //! normal circumstances it reads a halfword from D_80814384. + this->keyboardVtx[phi_t3].v.ob[0] = this->keyboardVtx[phi_t3 + 2].v.ob[0] = D_80814304[phi_t2] + phi_t0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80805B30.s") + this->keyboardVtx[phi_t3 + 1].v.ob[0] = this->keyboardVtx[phi_t3 + 3].v.ob[0] = + D_80814304[phi_t2] + phi_t0 + 12; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80805C1C.s") + this->keyboardVtx[phi_t3].v.ob[1] = this->keyboardVtx[phi_t3 + 1].v.ob[1] = phi_s1; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806014.s") + this->keyboardVtx[phi_t3 + 2].v.ob[1] = this->keyboardVtx[phi_t3 + 3].v.ob[1] = phi_s1 - 12; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806148.s") + this->keyboardVtx[phi_t3].v.ob[2] = this->keyboardVtx[phi_t3 + 1].v.ob[2] = + this->keyboardVtx[phi_t3 + 2].v.ob[2] = this->keyboardVtx[phi_t3 + 3].v.ob[2] = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806310.s") + this->keyboardVtx[phi_t3].v.flag = this->keyboardVtx[phi_t3 + 1].v.flag = + this->keyboardVtx[phi_t3 + 2].v.flag = this->keyboardVtx[phi_t3 + 3].v.flag = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808067E0.s") + this->keyboardVtx[phi_t3].v.tc[0] = this->keyboardVtx[phi_t3].v.tc[1] = + this->keyboardVtx[phi_t3 + 1].v.tc[1] = this->keyboardVtx[phi_t3 + 2].v.tc[0] = 0; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806BC8.s") + this->keyboardVtx[phi_t3 + 1].v.tc[0] = this->keyboardVtx[phi_t3 + 2].v.tc[1] = + this->keyboardVtx[phi_t3 + 3].v.tc[0] = this->keyboardVtx[phi_t3 + 3].v.tc[1] = 16 << 5; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806CA0.s") + this->keyboardVtx[phi_t3].v.cn[0] = this->keyboardVtx[phi_t3 + 1].v.cn[0] = + this->keyboardVtx[phi_t3 + 2].v.cn[0] = this->keyboardVtx[phi_t3 + 3].v.cn[0] = + this->keyboardVtx[phi_t3].v.cn[1] = this->keyboardVtx[phi_t3 + 1].v.cn[1] = + this->keyboardVtx[phi_t3 + 2].v.cn[1] = this->keyboardVtx[phi_t3 + 3].v.cn[1] = + this->keyboardVtx[phi_t3].v.cn[2] = this->keyboardVtx[phi_t3 + 1].v.cn[2] = + this->keyboardVtx[phi_t3 + 2].v.cn[2] = this->keyboardVtx[phi_t3 + 3].v.cn[2] = + this->keyboardVtx[phi_t3].v.cn[3] = this->keyboardVtx[phi_t3 + 1].v.cn[3] = + this->keyboardVtx[phi_t3 + 2].v.cn[3] = this->keyboardVtx[phi_t3 + 3].v.cn[3] = + 255; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806E84.s") + phi_t0 += 0x10; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80806F30.s") + phi_s1 -= 0x10; + } -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808071E4.s") + this->keyboard2Vtx = GRAPH_ALLOC(this->state.gfxCtx, sizeof(Vtx) * 24); -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_80807390.s") + for (phi_t1 = 0, phi_t3 = 0; phi_t3 < 6; phi_t3++, phi_t1 += 4) { -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_8080742C.s") + this->keyboard2Vtx[phi_t1 + 0].v.ob[0] = this->keyboard2Vtx[phi_t1 + 2].v.ob[0] = D_80814404[phi_t3] + 1; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808074B4.s") + this->keyboard2Vtx[phi_t1 + 1].v.ob[0] = this->keyboard2Vtx[phi_t1 + 3].v.ob[0] = + this->keyboard2Vtx[phi_t1 + 0].v.ob[0] + D_80814410[phi_t3] - 2; -#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_file_choose/func_808077AC.s") + this->keyboard2Vtx[phi_t1 + 0].v.ob[1] = this->keyboard2Vtx[phi_t1 + 1].v.ob[1] = D_8081441C[phi_t3] - 1; + + this->keyboard2Vtx[phi_t1 + 2].v.ob[1] = this->keyboard2Vtx[phi_t1 + 3].v.ob[1] = + this->keyboard2Vtx[phi_t1 + 0].v.ob[1] - 0xE; + + this->keyboard2Vtx[phi_t1 + 0].v.ob[2] = this->keyboard2Vtx[phi_t1 + 1].v.ob[2] = + this->keyboard2Vtx[phi_t1 + 2].v.ob[2] = this->keyboard2Vtx[phi_t1 + 3].v.ob[2] = 0; + + this->keyboard2Vtx[phi_t1 + 0].v.flag = this->keyboard2Vtx[phi_t1 + 1].v.flag = + this->keyboard2Vtx[phi_t1 + 2].v.flag = this->keyboard2Vtx[phi_t1 + 3].v.flag = 0; + + this->keyboard2Vtx[phi_t1 + 0].v.tc[0] = this->keyboard2Vtx[phi_t1 + 0].v.tc[1] = + this->keyboard2Vtx[phi_t1 + 1].v.tc[1] = this->keyboard2Vtx[phi_t1 + 2].v.tc[0] = 0; + + this->keyboard2Vtx[phi_t1 + 1].v.tc[0] = this->keyboard2Vtx[phi_t1 + 3].v.tc[0] = D_80814410[phi_t3] << 5; + + this->keyboard2Vtx[phi_t1 + 2].v.tc[1] = this->keyboard2Vtx[phi_t1 + 3].v.tc[1] = 16 << 5; + + this->keyboard2Vtx[phi_t1 + 0].v.cn[0] = this->keyboard2Vtx[phi_t1 + 1].v.cn[0] = + this->keyboard2Vtx[phi_t1 + 2].v.cn[0] = this->keyboard2Vtx[phi_t1 + 3].v.cn[0] = + this->keyboard2Vtx[phi_t1 + 0].v.cn[1] = this->keyboard2Vtx[phi_t1 + 1].v.cn[1] = + this->keyboard2Vtx[phi_t1 + 2].v.cn[1] = this->keyboard2Vtx[phi_t1 + 3].v.cn[1] = + this->keyboard2Vtx[phi_t1 + 0].v.cn[2] = this->keyboard2Vtx[phi_t1 + 1].v.cn[2] = + this->keyboard2Vtx[phi_t1 + 2].v.cn[2] = this->keyboard2Vtx[phi_t1 + 3].v.cn[2] = + this->keyboard2Vtx[phi_t1 + 0].v.cn[3] = this->keyboard2Vtx[phi_t1 + 1].v.cn[3] = + this->keyboard2Vtx[phi_t1 + 2].v.cn[3] = this->keyboard2Vtx[phi_t1 + 3].v.cn[3] = + 255; + } +} + +TexturePtr sBackspaceEndTextures[] = { + gFileSelBackspaceButtonTex, + gFileSelENDButtonENGTex, +}; + +u16 sBackspaceEndWidths[] = { 28, 44 }; + +s16 D_80814434[] = { + -30, -16, -6, 4, 14, 24, 34, 44, 54, -16, -16, 0, +}; + +s16 D_8081444C[] = { + 72, 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, 0, +}; + +/** + * Set vertices used by all elements of the name entry screen that are NOT the keyboard. + * This includes the cursor highlight, the name entry plate and characters, and the buttons. + */ +void FileSelect_SetNameEntryVtx(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + Font* font = &this->font; + u8 temp; + s16 var_s0; + s16 var_t1; + s16 sp108; + + OPEN_DISPS(this->state.gfxCtx); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + gSPVertex(POLY_OPA_DISP++, this->keyboard2Vtx, 24, 0); + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelNameENGTex, G_IM_FMT_IA, G_IM_SIZ_8b, 56, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + gDPPipeSync(POLY_OPA_DISP++); + + for (var_t1 = 0, var_s0 = 0x10; var_t1 < 2; var_t1++, var_s0 += 4) { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], 255); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + gDPLoadTextureBlock(POLY_OPA_DISP++, sBackspaceEndTextures[var_t1], G_IM_FMT_IA, G_IM_SIZ_16b, + sBackspaceEndWidths[var_t1], 16, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, var_s0, var_s0 + 2, var_s0 + 3, var_s0 + 1, 0); + } + + this->nameEntryVtx = GRAPH_ALLOC(this->state.gfxCtx, 44 * sizeof(Vtx)); + + for (var_s0 = 0, var_t1 = 0; var_t1 < 44; var_t1 += 4, var_s0++) { + if ((var_s0 > 0) && (var_s0 < 9)) { + temp = this->fileNames[this->buttonIndex][var_s0 - 1]; + + this->nameEntryVtx[var_t1 + 0].v.ob[0] = this->nameEntryVtx[var_t1 + 2].v.ob[0] = + D_80814434[var_s0] + this->nameEntryBoxPosX + D_80814280[temp]; + + this->nameEntryVtx[var_t1 + 1].v.ob[0] = this->nameEntryVtx[var_t1 + 3].v.ob[0] = + this->nameEntryVtx[var_t1 + 0].v.ob[0] + 10; + } else { + this->nameEntryVtx[var_t1 + 0].v.ob[0] = this->nameEntryVtx[var_t1 + 2].v.ob[0] = + D_80814434[var_s0] + this->nameEntryBoxPosX; + + this->nameEntryVtx[var_t1 + 1].v.ob[0] = this->nameEntryVtx[var_t1 + 3].v.ob[0] = + this->nameEntryVtx[var_t1 + 0].v.ob[0] + 10; + } + + this->nameEntryVtx[var_t1 + 0].v.ob[1] = this->nameEntryVtx[var_t1 + 1].v.ob[1] = D_8081444C[var_s0]; + + this->nameEntryVtx[var_t1 + 2].v.ob[1] = this->nameEntryVtx[var_t1 + 3].v.ob[1] = + this->nameEntryVtx[var_t1 + 0].v.ob[1] - 10; + + this->nameEntryVtx[var_t1 + 0].v.ob[2] = this->nameEntryVtx[var_t1 + 1].v.ob[2] = + this->nameEntryVtx[var_t1 + 2].v.ob[2] = this->nameEntryVtx[var_t1 + 3].v.ob[2] = 0; + + this->nameEntryVtx[var_t1 + 0].v.flag = this->nameEntryVtx[var_t1 + 1].v.flag = + this->nameEntryVtx[var_t1 + 2].v.flag = this->nameEntryVtx[var_t1 + 3].v.flag = 0; + + this->nameEntryVtx[var_t1 + 0].v.tc[0] = this->nameEntryVtx[var_t1 + 0].v.tc[1] = + this->nameEntryVtx[var_t1 + 1].v.tc[1] = this->nameEntryVtx[var_t1 + 2].v.tc[0] = 0; + + this->nameEntryVtx[var_t1 + 1].v.tc[0] = this->nameEntryVtx[var_t1 + 2].v.tc[1] = + this->nameEntryVtx[var_t1 + 3].v.tc[0] = this->nameEntryVtx[var_t1 + 3].v.tc[1] = 16 << 5; + + this->nameEntryVtx[var_t1 + 0].v.cn[0] = this->nameEntryVtx[var_t1 + 1].v.cn[0] = + this->nameEntryVtx[var_t1 + 2].v.cn[0] = this->nameEntryVtx[var_t1 + 3].v.cn[0] = + this->nameEntryVtx[var_t1 + 0].v.cn[1] = this->nameEntryVtx[var_t1 + 1].v.cn[1] = + this->nameEntryVtx[var_t1 + 2].v.cn[1] = this->nameEntryVtx[var_t1 + 3].v.cn[1] = + this->nameEntryVtx[var_t1 + 0].v.cn[2] = this->nameEntryVtx[var_t1 + 1].v.cn[2] = + this->nameEntryVtx[var_t1 + 2].v.cn[2] = this->nameEntryVtx[var_t1 + 3].v.cn[2] = + this->nameEntryVtx[var_t1 + 0].v.cn[3] = this->nameEntryVtx[var_t1 + 1].v.cn[3] = + this->nameEntryVtx[var_t1 + 2].v.cn[3] = this->nameEntryVtx[var_t1 + 3].v.cn[3] = + 255; + } + + this->nameEntryVtx[1].v.ob[0] = this->nameEntryVtx[3].v.ob[0] = this->nameEntryVtx[0].v.ob[0] + 0x6C; + this->nameEntryVtx[2].v.ob[1] = this->nameEntryVtx[3].v.ob[1] = this->nameEntryVtx[0].v.ob[1] - 0x10; + this->nameEntryVtx[1].v.tc[0] = this->nameEntryVtx[3].v.tc[0] = 108 << 5; + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->windowColor[0], this->windowColor[1], this->windowColor[2], + this->nameEntryBoxAlpha); + gSPVertex(POLY_OPA_DISP++, this->nameEntryVtx, 4, 0); + + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelFileNameBoxTex, G_IM_FMT_IA, G_IM_SIZ_16b, 108, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, + PRIMITIVE, 0); + gSPVertex(POLY_OPA_DISP++, this->nameEntryVtx + 4, 32, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->nameEntryBoxAlpha); + + for (sp108 = 0, var_s0 = 0; var_s0 < 0x20; var_s0 += 4, sp108++) { + FileSelect_DrawTexQuadI4( + this->state.gfxCtx, font->fontBuf + this->fileNames[this->buttonIndex][sp108] * FONT_CHAR_TEX_SIZE, var_s0); + } + + this->nameEntryVtx[37].v.tc[0] = this->nameEntryVtx[38].v.tc[1] = this->nameEntryVtx[39].v.tc[0] = + this->nameEntryVtx[39].v.tc[1] = this->nameEntryVtx[41].v.tc[0] = this->nameEntryVtx[42].v.tc[1] = + this->nameEntryVtx[43].v.tc[0] = this->nameEntryVtx[43].v.tc[1] = 24 << 5; + + if ((this->kbdButton == FS_KBD_BTN_HIRA) || (this->kbdButton == FS_KBD_BTN_KATA) || + (this->kbdButton == FS_KBD_BTN_END)) { + this->nameEntryVtx[41].v.tc[0] = this->nameEntryVtx[43].v.tc[0] = 56 << 5; + } else if ((this->kbdButton == FS_KBD_BTN_ENG) || (this->kbdButton == FS_KBD_BTN_BACKSPACE)) { + this->nameEntryVtx[41].v.tc[0] = this->nameEntryVtx[43].v.tc[0] = 40 << 5; + } + + CLOSE_DISPS(this->state.gfxCtx); +} + +void FileSelect_DrawKeyboard(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + Font* font = &this->font; + s16 i; + s16 tmp; + s16 vtx; + + OPEN_DISPS(this->state.gfxCtx); + + Gfx_SetupDL42_Opa(this->state.gfxCtx); + gDPSetCycleType(POLY_OPA_DISP++, G_CYC_2CYCLE); + gDPSetRenderMode(POLY_OPA_DISP++, G_RM_PASS, G_RM_XLU_SURF2); + gDPSetCombineLERP(POLY_OPA_DISP++, 0, 0, 0, PRIMITIVE, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, 0, 0, 0, COMBINED, 0, + 0, 0, COMBINED); + gDPSetPrimColor(POLY_OPA_DISP++, 0, this->charBgAlpha, 255, 255, 255, 255); + + for (i = 0, vtx = 0; vtx < 0x100; vtx += 32) { + gSPVertex(POLY_OPA_DISP++, &this->keyboardVtx[vtx], 32, 0); + + for (tmp = 0; tmp < 32; i++, tmp += 4) { + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + D_808141F0[i] * FONT_CHAR_TEX_SIZE, tmp); + } + } + + gSPVertex(POLY_OPA_DISP++, &this->keyboardVtx[0x100], 4, 0); + FileSelect_DrawTexQuadI4(this->state.gfxCtx, font->fontBuf + D_808141F0[i] * FONT_CHAR_TEX_SIZE, 0); + + CLOSE_DISPS(this->state.gfxCtx); +} + +void FileSelect_DrawNameEntry(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Font* font = &this->font; + Input* input = CONTROLLER1(&this->state); + s16 i; + s16 tmp; + u16 time; + s16 validName; + + OPEN_DISPS(this->state.gfxCtx); + + FileSelect_SetKeyboardVtx(&this->state); + FileSelect_SetNameEntryVtx(&this->state); + FileSelect_PulsateCursor(&this->state); + + tmp = (this->newFileNameCharCount * 4) + 4; + this->nameEntryVtx[36].v.ob[0] = this->nameEntryVtx[38].v.ob[0] = this->nameEntryVtx[tmp].v.ob[0] - 6; + this->nameEntryVtx[37].v.ob[0] = this->nameEntryVtx[39].v.ob[0] = this->nameEntryVtx[36].v.ob[0] + 24; + this->nameEntryVtx[36].v.ob[1] = this->nameEntryVtx[37].v.ob[1] = this->nameEntryVtx[tmp].v.ob[1] + 7; + this->nameEntryVtx[38].v.ob[1] = this->nameEntryVtx[39].v.ob[1] = this->nameEntryVtx[36].v.ob[1] - 24; + + if ((this->kbdButton == FS_KBD_BTN_HIRA) || (this->kbdButton == FS_KBD_BTN_KATA) || + (this->kbdButton == FS_KBD_BTN_END)) { + this->nameEntryVtx[40].v.ob[0] = this->nameEntryVtx[42].v.ob[0] = + this->keyboard2Vtx[(this->kbdX + 1) * 4].v.ob[0] - 4; + this->nameEntryVtx[41].v.ob[0] = this->nameEntryVtx[43].v.ob[0] = this->nameEntryVtx[40].v.ob[0] + 52; + this->nameEntryVtx[40].v.ob[1] = this->nameEntryVtx[41].v.ob[1] = + this->keyboard2Vtx[(this->kbdX + 1) * 4].v.ob[1] + 4; + } else if ((this->kbdButton == FS_KBD_BTN_ENG) || (this->kbdButton == FS_KBD_BTN_BACKSPACE)) { + this->nameEntryVtx[40].v.ob[0] = this->nameEntryVtx[42].v.ob[0] = + this->keyboard2Vtx[(this->kbdX + 1) * 4].v.ob[0] - 4; + this->nameEntryVtx[41].v.ob[0] = this->nameEntryVtx[43].v.ob[0] = this->nameEntryVtx[40].v.ob[0] + 40; + this->nameEntryVtx[40].v.ob[1] = this->nameEntryVtx[41].v.ob[1] = + this->keyboard2Vtx[(this->kbdX + 1) * 4].v.ob[1] + 4; + } else { + this->nameEntryVtx[40].v.ob[0] = this->nameEntryVtx[42].v.ob[0] = + this->keyboardVtx[this->charIndex * 4].v.ob[0] - D_80814304[this->charIndex] - 6; + this->nameEntryVtx[41].v.ob[0] = this->nameEntryVtx[43].v.ob[0] = this->nameEntryVtx[40].v.ob[0] + 24; + this->nameEntryVtx[40].v.ob[1] = this->nameEntryVtx[41].v.ob[1] = + this->keyboardVtx[this->charIndex * 4].v.ob[1] + 6; + } + + this->nameEntryVtx[42].v.ob[1] = this->nameEntryVtx[43].v.ob[1] = this->nameEntryVtx[40].v.ob[1] - 24; + + gSPVertex(POLY_OPA_DISP++, &this->nameEntryVtx[36], 8, 0); + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, 1, 0, PRIMITIVE, 0, TEXEL0, 0, PRIMITIVE, 0, 1, 0, PRIMITIVE, 0, TEXEL0, 0, + PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, this->highlightColor[0], this->highlightColor[1], this->highlightColor[2], + this->highlightColor[3]); + + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelCharHighlightTex, G_IM_FMT_I, G_IM_SIZ_8b, 24, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + + if ((this->kbdButton == FS_KBD_BTN_HIRA) || (this->kbdButton == FS_KBD_BTN_KATA) || + (this->kbdButton == FS_KBD_BTN_END)) { + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelMediumButtonHighlightTex, G_IM_FMT_I, G_IM_SIZ_8b, 56, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + } else if ((this->kbdButton == FS_KBD_BTN_ENG) || (this->kbdButton == FS_KBD_BTN_BACKSPACE)) { + gDPLoadTextureBlock(POLY_OPA_DISP++, gFileSelSmallButtonHighlightTex, G_IM_FMT_I, G_IM_SIZ_8b, 40, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + } + + gSP1Quadrangle(POLY_OPA_DISP++, 4, 6, 7, 5, 0); + + FileSelect_DrawKeyboard(&this->state); + gDPPipeSync(POLY_OPA_DISP++); + Gfx_SetupDL42_Opa(this->state.gfxCtx); + + gDPSetCombineLERP(POLY_OPA_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, + PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255); + + if (this->configMode == CM_NAME_ENTRY) { + if (CHECK_BTN_ALL(input->press.button, BTN_START)) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + // place cursor on END button + this->kbdY = 5; + this->kbdX = 4; + } else if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + if ((this->newFileNameCharCount == 7) && (this->fileNames[this->buttonIndex][7] != 0x3E)) { + + for (i = this->newFileNameCharCount; i < 7; i++) { + this->fileNames[this->buttonIndex][i] = this->fileNames[this->buttonIndex][i + 1]; + } + + this->fileNames[this->buttonIndex][i] = 0x3E; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else { + this->newFileNameCharCount--; + + if (this->newFileNameCharCount < 0) { + this->newFileNameCharCount = 0; + this->configMode = CM_NAME_ENTRY_TO_MAIN; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else { + for (i = this->newFileNameCharCount; i < 7; i++) { + this->fileNames[this->buttonIndex][i] = this->fileNames[this->buttonIndex][i + 1]; + } + + this->fileNames[this->buttonIndex][i] = 0x3E; + play_sound(NA_SE_SY_FSEL_CLOSE); + } + } + } else { + if (this->charPage <= FS_CHAR_PAGE_ENG) { + if (this->kbdY != 5) { + // draw the character the cursor is hovering over in yellow + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 0, 255); + + //! @bug D_80814384 is accessed out of bounds when drawing the empty space character (value of 64). + //! Under normal circumstances it reads a halfword from D_80814404. + this->keyboardVtx[(this->charIndex * 4) + 0].v.ob[0] = + this->keyboardVtx[(this->charIndex * 4) + 2].v.ob[0] = + this->keyboardVtx[(this->charIndex * 4) + 0].v.ob[0] + D_80814384[this->charIndex] - 2; + + this->keyboardVtx[(this->charIndex * 4) + 1].v.ob[0] = + this->keyboardVtx[(this->charIndex * 4) + 3].v.ob[0] = + this->keyboardVtx[(this->charIndex * 4) + 0].v.ob[0] + 0x10; + + this->keyboardVtx[(this->charIndex * 4) + 0].v.ob[1] = + this->keyboardVtx[(this->charIndex * 4) + 1].v.ob[1] = + this->keyboardVtx[(this->charIndex * 4) + 0].v.ob[1] + 2; + + this->keyboardVtx[(this->charIndex * 4) + 2].v.ob[1] = + this->keyboardVtx[(this->charIndex * 4) + 3].v.ob[1] = + this->keyboardVtx[(this->charIndex * 4) + 0].v.ob[1] - 0x10; + + gSPVertex(POLY_OPA_DISP++, &this->keyboardVtx[this->charIndex * 4], 4, 0); + + FileSelect_DrawTexQuadI4(this->state.gfxCtx, + font->fontBuf + D_808141F0[this->charIndex] * FONT_CHAR_TEX_SIZE, 0); + + if (CHECK_BTN_ALL(input->press.button, BTN_A)) { + play_sound(NA_SE_SY_FSEL_DECIDE_S); + this->fileNames[this->buttonIndex][this->newFileNameCharCount] = D_808141F0[this->charIndex]; + + this->newFileNameCharCount++; + + if (this->newFileNameCharCount > 7) { + this->newFileNameCharCount = 7; + } + } + } else if (CHECK_BTN_ALL(input->press.button, BTN_A)) { + if (this->charPage != this->kbdButton) { + if (this->kbdButton == FS_KBD_BTN_BACKSPACE) { + if ((this->newFileNameCharCount == 7) && (this->fileNames[this->buttonIndex][7] != 0x3E)) { + + for (i = this->newFileNameCharCount; i < 7; i++) { + this->fileNames[this->buttonIndex][i] = this->fileNames[this->buttonIndex][i + 1]; + } + + this->fileNames[this->buttonIndex][i] = 0x3E; + play_sound(NA_SE_SY_FSEL_CLOSE); + } else { + this->newFileNameCharCount--; + + if (this->newFileNameCharCount < 0) { + this->newFileNameCharCount = 0; + } + + for (i = this->newFileNameCharCount; i < 7; i++) { + this->fileNames[this->buttonIndex][i] = this->fileNames[this->buttonIndex][i + 1]; + } + + this->fileNames[this->buttonIndex][i] = 0x3E; + play_sound(NA_SE_SY_FSEL_CLOSE); + } + } else if (this->kbdButton == FS_KBD_BTN_END) { + validName = false; + + for (i = 0; i < 8; i++) { + if (this->fileNames[this->buttonIndex][i] != 0x3E) { + validName = true; + break; + } + } + + if (validName) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + gSaveContext.fileNum = this->buttonIndex; + time = ((void)0, gSaveContext.save.time); + Sram_InitSave(this, sramCtx); + gSaveContext.save.time = time; + + if (!gSaveContext.flashSaveAvailable) { + this->configMode = CM_NAME_ENTRY_TO_MAIN; + } else { + Sram_SetFlashPagesDefault(sramCtx, gFlashSaveStartPages[this->buttonIndex * 2], + gFlashSpecialSaveNumPages[this->buttonIndex * 2]); + Sram_StartWriteToFlashDefault(sramCtx); + this->configMode = CM_NAME_ENTRY_WAIT_FOR_FLASH_SAVE; + } + + this->nameBoxAlpha[this->buttonIndex] = this->nameAlpha[this->buttonIndex] = 200; + this->connectorAlpha[this->buttonIndex] = 255; + Rumble_Request(300.0f, 180, 20, 100); + } else { + play_sound(NA_SE_SY_FSEL_ERROR); + } + } + } + } + + if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->newFileNameCharCount++; + + if (this->newFileNameCharCount > 7) { + this->newFileNameCharCount = 7; + } + } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->newFileNameCharCount--; + + if (this->newFileNameCharCount < 0) { + this->newFileNameCharCount = 0; + } + } + } + } + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA); + + CLOSE_DISPS(this->state.gfxCtx); +} + +/** + * Fade in the name entry box and slide it to the center of the screen from the right side. + * After the name entry box is in place, init the keyboard/cursor and change modes. + * Update function for `CM_START_NAME_ENTRY` + */ +void FileSelect_StartNameEntry(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->nameEntryBoxAlpha += 25; + + if (this->nameEntryBoxAlpha >= 255) { + this->nameEntryBoxAlpha = 255; + } + + this->nameEntryBoxPosX -= 30; + + if (this->nameEntryBoxPosX <= 0) { + this->nameEntryBoxPosX = 0; + this->nameEntryBoxAlpha = 255; + this->kbdX = 0; + this->kbdY = 0; + this->kbdButton = FS_KBD_BTN_NONE; + this->configMode = CM_NAME_ENTRY; + } +} + +/** + * Update the keyboard cursor and play sound effects at the appropriate times. + * There are many special cases for warping the cursor depending on where + * the cursor currently is. + * Update function for `CM_NAME_ENTRY` + */ +void FileSelect_UpdateKeyboardCursor(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + s16 prevKbdX; + + this->kbdButton = FS_KBD_BTN_NONE; + + if (this->kbdY != 5) { + if (this->stickAdjX < -30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->charIndex--; + this->kbdX--; + if (this->kbdX < 0) { + this->kbdX = 12; + this->charIndex = (this->kbdY * 13) + this->kbdX; + } + } else if (this->stickAdjX > 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->charIndex++; + this->kbdX++; + if (this->kbdX > 12) { + this->kbdX = 0; + this->charIndex = (this->kbdY * 13) + this->kbdX; + } + } + } else { + if (this->stickAdjX < -30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->kbdX--; + if (this->kbdX < 3) { + this->kbdX = 4; + } + } else if (this->stickAdjX > 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->kbdX++; + if (this->kbdX > 4) { + this->kbdX = 3; + } + } + } + + if (this->stickAdjY > 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + + this->kbdY--; + + if (this->kbdY < 0) { + // Don't go to bottom row + if (this->kbdX < 8) { + this->kbdY = 4; + this->charIndex = (s32)(this->kbdX + 52); + } else { + this->kbdY = 5; + this->charIndex += 52; + prevKbdX = this->kbdX; + + if (this->kbdX < 10) { + this->kbdX = 3; + } else if (this->kbdX < 13) { + this->kbdX = 4; + } + this->unk_2451E[this->kbdX] = prevKbdX; + } + } else { + this->charIndex -= 13; + + if (this->kbdY == 4) { + this->charIndex = 52; + this->kbdX = this->unk_2451E[this->kbdX]; + this->charIndex += this->kbdX; + } + } + } else if (this->stickAdjY < -30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + this->kbdY++; + + if (this->kbdY > 5) { + this->kbdY = 0; + this->kbdX = this->unk_2451E[this->kbdX]; + this->charIndex = this->kbdX; + } else { + this->charIndex += 13; + + if (this->kbdY == 5) { + if (this->kbdX < 8) { + this->kbdY = 0; + this->charIndex = this->kbdX; + } else { + prevKbdX = this->kbdX; + + if (this->kbdX < 3) { + this->kbdX = 0; + } else if (this->kbdX < 6) { + this->kbdX = 1; + } else if (this->kbdX < 8) { + this->kbdX = 2; + } else if (this->kbdX < 10) { + this->kbdX = 3; + } else if (this->kbdX < 13) { + this->kbdX = 4; + } + this->unk_2451E[this->kbdX] = prevKbdX; + } + } + } + } + if (this->kbdY == 5) { + this->kbdButton = this->kbdX; + } +} + +/** + * Update and wait for the save to flash to complete. + * Update function for `CM_NAME_ENTRY_WAIT_FOR_FLASH_SAVE` + */ +void FileSelect_NameEntryWaitForFlashSave(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + + Sram_UpdateWriteToFlashDefault(sramCtx); + + if (sramCtx->status == 0) { + this->configMode = CM_NAME_ENTRY_TO_MAIN; + } +} + +/** + * This function is mostly a copy paste of `FileSelect_StartNameEntry`. + * The name entry box fades and slides in even though it is not visible. + * After this is complete, change to the options config mode. + * Update function for `CM_START_OPTIONS` + */ +void FileSelect_StartOptions(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + + this->nameEntryBoxAlpha += 25; + + if (this->nameEntryBoxAlpha >= 255) { + this->nameEntryBoxAlpha = 255; + } + + this->nameEntryBoxPosX -= 30; + + if (this->nameEntryBoxPosX <= 0) { + this->nameEntryBoxPosX = 0; + this->nameEntryBoxAlpha = 255; + this->configMode = CM_OPTIONS_MENU; + } +} + +u8 sSelectedSetting; +// bss padding +s32 D_80814E94; +s32 D_80814E98; +s32 D_80814E9C; +s32 D_80814EA0; + +/** + * Update the cursor and appropriate settings for the options menu. + * If the player presses B, write the selected options to the SRAM header + * and set config mode to rotate back to the main menu. + * Update function for `CM_OPTIONS_MENU` + */ +void FileSelect_UpdateOptionsMenu(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + Input* input = CONTROLLER1(&this->state); + + if (CHECK_BTN_ALL(input->press.button, BTN_B)) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + Sram_WriteSaveOptionsToBuffer(sramCtx); + + if (!gSaveContext.flashSaveAvailable) { + this->configMode = CM_OPTIONS_TO_MAIN; + } else { + Sram_SetFlashPagesDefault(sramCtx, gFlashSaveStartPages[8], gFlashSpecialSaveNumPages[8]); + Sram_StartWriteToFlashDefault(sramCtx); + this->configMode = CM_OPTIONS_WAIT_FOR_FLASH_SAVE; + } + func_801A3D98(gSaveContext.options.audioSetting); + return; + } + + if (this->stickAdjX < -30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + + if (sSelectedSetting == FS_SETTING_AUDIO) { + gSaveContext.options.audioSetting--; + + // because audio setting is unsigned, can't check for < 0 + if (gSaveContext.options.audioSetting > 0xF0) { + gSaveContext.options.audioSetting = SAVE_AUDIO_SURROUND; + } + } else { + gSaveContext.options.zTargetSetting ^= 1; + } + } else if (this->stickAdjX > 30) { + play_sound(NA_SE_SY_FSEL_CURSOR); + + if (sSelectedSetting == FS_SETTING_AUDIO) { + gSaveContext.options.audioSetting++; + if (gSaveContext.options.audioSetting > SAVE_AUDIO_SURROUND) { + gSaveContext.options.audioSetting = SAVE_AUDIO_STEREO; + } + } else { + gSaveContext.options.zTargetSetting ^= 1; + } + } + + if ((this->stickAdjY < -30) || (this->stickAdjY > 30)) { + play_sound(NA_SE_SY_FSEL_CURSOR); + sSelectedSetting ^= 1; + return; + } + if (CHECK_BTN_ALL(input->press.button, BTN_A)) { + play_sound(NA_SE_SY_FSEL_DECIDE_L); + sSelectedSetting ^= 1; + } +} + +/** + * Update and wait for the save to flash to complete. + * Update function for `CM_OPTIONS_WAIT_FOR_FLASH_SAVE` + */ +void FileSelect_OptionsWaitForFlashSave(GameState* thisx) { + FileSelectState* this = (FileSelectState*)thisx; + SramContext* sramCtx = &this->sramCtx; + + Sram_UpdateWriteToFlashDefault(sramCtx); + + if (sramCtx->status == 0) { + this->configMode = CM_OPTIONS_TO_MAIN; + } +} + +typedef struct { + /* 0x0 */ TexturePtr texture; + /* 0x4 */ u16 width; + /* 0x6 */ u16 height; +} OptionsMenuTextureInfo; // size = 0x8 + +OptionsMenuTextureInfo gOptionsMenuHeaders[] = { + { gFileSelOptionsENGTex, 128, 16 }, { gFileSelSoundENGTex, 64, 16 }, + { gFileSelTargetingENGTex, 64, 16 }, { gFileSelCheckBrightnessENGTex, 96, 16 }, + { gFileSelDolbySurroundLogoENGTex, 48, 17 }, +}; + +OptionsMenuTextureInfo gOptionsMenuSettings[] = { + { gFileSelStereoENGTex, 48, 16 }, { gFileSelMonoENGTex, 48, 16 }, { gFileSelHeadsetENGTex, 48, 16 }, + { gFileSelSurroundENGTex, 48, 16 }, { gFileSelSwitchENGTex, 48, 16 }, { gFileSelHoldENGTex, 48, 16 }, +}; + +void FileSelect_DrawOptionsImpl(GameState* thisx) { + static s16 sCursorPrimRed = 255; + static s16 sCursorPrimGreen = 255; + static s16 sCursorPrimBlue = 255; + static s16 sCursorEnvRed = 0; + static s16 sCursorEnvGreen = 0; + static s16 sCursorEnvBlue = 0; + static s16 sCursorPulseDir = 1; + static s16 sCursorFlashTimer = 20; + static s16 sCursorPrimColors[][3] = { + { 255, 255, 255 }, + { 0, 255, 255 }, + }; + static s16 sCursorEnvColors[][3] = { + { 0, 0, 0 }, + { 0, 150, 150 }, + }; + FileSelectState* this = (FileSelectState*)thisx; + s16 cursorRedStep; + s16 cursorGreenStep; + s16 cursorBlueStep; + s16 i; + s16 j; + s16 vtx; + + OPEN_DISPS(this->state.gfxCtx); + + cursorRedStep = ABS_ALT(sCursorPrimRed - sCursorPrimColors[sCursorPulseDir][0]) / sCursorFlashTimer; + cursorGreenStep = ABS_ALT(sCursorPrimGreen - sCursorPrimColors[sCursorPulseDir][1]) / sCursorFlashTimer; + cursorBlueStep = ABS_ALT(sCursorPrimBlue - sCursorPrimColors[sCursorPulseDir][2]) / sCursorFlashTimer; + + if (sCursorPrimRed >= sCursorPrimColors[sCursorPulseDir][0]) { + sCursorPrimRed -= cursorRedStep; + } else { + sCursorPrimRed += cursorRedStep; + } + + if (sCursorPrimGreen >= sCursorPrimColors[sCursorPulseDir][1]) { + sCursorPrimGreen -= cursorGreenStep; + } else { + sCursorPrimGreen += cursorGreenStep; + } + + if (sCursorPrimBlue >= sCursorPrimColors[sCursorPulseDir][2]) { + sCursorPrimBlue -= cursorBlueStep; + } else { + sCursorPrimBlue += cursorBlueStep; + } + + cursorRedStep = ABS_ALT(sCursorEnvRed - sCursorEnvColors[sCursorPulseDir][0]) / sCursorFlashTimer; + cursorGreenStep = ABS_ALT(sCursorEnvGreen - sCursorEnvColors[sCursorPulseDir][1]) / sCursorFlashTimer; + cursorBlueStep = ABS_ALT(sCursorEnvBlue - sCursorEnvColors[sCursorPulseDir][2]) / sCursorFlashTimer; + + if (sCursorEnvRed >= sCursorEnvColors[sCursorPulseDir][0]) { + sCursorEnvRed -= cursorRedStep; + } else { + sCursorEnvRed += cursorRedStep; + } + + if (sCursorEnvGreen >= sCursorEnvColors[sCursorPulseDir][1]) { + sCursorEnvGreen -= cursorGreenStep; + } else { + sCursorEnvGreen += cursorGreenStep; + } + + if (sCursorEnvBlue >= sCursorEnvColors[sCursorPulseDir][2]) { + sCursorEnvBlue -= cursorBlueStep; + } else { + sCursorEnvBlue += cursorBlueStep; + } + + if (--sCursorFlashTimer == 0) { + sCursorPrimRed = sCursorPrimColors[sCursorPulseDir][0]; + sCursorPrimGreen = sCursorPrimColors[sCursorPulseDir][1]; + sCursorPrimBlue = sCursorPrimColors[sCursorPulseDir][2]; + + sCursorEnvRed = sCursorEnvColors[sCursorPulseDir][0]; + sCursorEnvGreen = sCursorEnvColors[sCursorPulseDir][1]; + sCursorEnvBlue = sCursorEnvColors[sCursorPulseDir][2]; + + sCursorFlashTimer = 20; + + if (++sCursorPulseDir > 1) { + sCursorPulseDir = 0; + } + } + + // blue divider lines + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0); + + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, gFileSelOptionsDividerTex, G_IM_FMT_IA, 256, 2, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + + Matrix_Push(); + Matrix_Translate(0.0f, 0.1f, 0.0f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(POLY_OPA_DISP++, gOptionsDividerTopVtx, 4, 0); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + Matrix_Pop(); + + Matrix_Push(); + Matrix_Translate(0.0f, 0.2f, 0.0f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(POLY_OPA_DISP++, gOptionsDividerMiddleVtx, 4, 0); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + Matrix_Pop(); + + Matrix_Push(); + Matrix_Translate(0.0f, 0.4f, 0.0f, MTXMODE_APPLY); + gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(this->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPVertex(POLY_OPA_DISP++, gOptionsDividerBottomVtx, 4, 0); + gSP1Quadrangle(POLY_OPA_DISP++, 0, 2, 3, 1, 0); + Matrix_Pop(); + + gSPVertex(POLY_OPA_DISP++, D_80813DF0, 32, 0); + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + + for (i = 0, vtx = 0; i < 5; i++, vtx += 4) { + if (i == 4) { + gDPPipeSync(POLY_OPA_DISP++); + if (gSaveContext.options.audioSetting == SAVE_AUDIO_SURROUND) { + gDPSetEnvColor(POLY_OPA_DISP++, 255, 255, 255, 255); + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 0, 0, 0, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + } + + gDPLoadTextureBlock(POLY_OPA_DISP++, gOptionsMenuHeaders[i].texture, G_IM_FMT_IA, G_IM_SIZ_8b, + gOptionsMenuHeaders[i].width, gOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); + } + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetCombineLERP(POLY_OPA_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + gSPVertex(POLY_OPA_DISP++, D_80813F30, 32, 0); + + for (i = 0, vtx = 0; i < 4; i++, vtx += 4) { + gDPPipeSync(POLY_OPA_DISP++); + if (i == gSaveContext.options.audioSetting) { + if (sSelectedSetting == FS_SETTING_AUDIO) { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sCursorPrimRed, sCursorPrimGreen, sCursorPrimBlue, + this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, sCursorEnvRed, sCursorEnvGreen, sCursorEnvBlue, 255); + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 120, 120, 120, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + + gDPLoadTextureBlock(POLY_OPA_DISP++, gOptionsMenuSettings[i].texture, G_IM_FMT_IA, G_IM_SIZ_8b, + gOptionsMenuSettings[i].width, gOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); + } + + for (; i < 6; i++, vtx += 4) { + gDPPipeSync(POLY_OPA_DISP++); + + if (i == (gSaveContext.options.zTargetSetting + 4)) { + if (sSelectedSetting == FS_SETTING_ZTARGET) { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, sCursorPrimRed, sCursorPrimGreen, sCursorPrimBlue, + this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, sCursorEnvRed, sCursorEnvGreen, sCursorEnvBlue, 255); + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + } else { + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 120, 120, 120, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + } + + gDPLoadTextureBlock(POLY_OPA_DISP++, gOptionsMenuSettings[i].texture, G_IM_FMT_IA, G_IM_SIZ_8b, + gOptionsMenuSettings[i].width, gOptionsMenuHeaders[i].height, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); + } + + gDPPipeSync(POLY_OPA_DISP++); + + // check brightness bars + gDPLoadTextureBlock_4b(POLY_OPA_DISP++, gFileSelBrightnessCheckTex, G_IM_FMT_IA, 96, 16, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 55, 55, 55, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 40, 40, 40, 255); + gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); + + vtx += 4; + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 30, 30, 30, this->titleAlpha[FS_TITLE_CUR]); + gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 255); + gSP1Quadrangle(POLY_OPA_DISP++, vtx, vtx + 2, vtx + 3, vtx + 1, 0); + + CLOSE_DISPS(this->state.gfxCtx); +} + +void FileSelect_DrawOptions(GameState* thisx) { + FileSelect_DrawOptionsImpl(thisx); +} diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c new file mode 100644 index 000000000..47619b66d --- /dev/null +++ b/src/overlays/gamestates/ovl_file_choose/z_file_nameset_data.c @@ -0,0 +1,17 @@ +#include "z_file_select.h" + +// Vtx Data +#include "overlays/ovl_file_choose/ovl_file_choose.c" + +u8 D_808141F0[] = { + // 'A' 'B' 'C' 'D' 'E' 'F' 'G' 'H' 'I' 'J' 'K' 'L' 'M' + /* Row 0 */ 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, + // 'N' 'O' 'P' 'Q' 'R' 'S' 'T' 'U' 'V' 'W' 'X' 'Y' 'Z' + /* Row 1 */ 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, + // 'a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' + /* Row 2 */ 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, + // 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z' + /* Row 3 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, + // '1' '2' '3' '4' '5' '6' '7' '8' '9' '0' '.' '-' ' ' + /* Row 4 */ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x00, 0x40, 0x3F, 0x3E +}; diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_select.h b/src/overlays/gamestates/ovl_file_choose/z_file_select.h new file mode 100644 index 000000000..7dcc72a9d --- /dev/null +++ b/src/overlays/gamestates/ovl_file_choose/z_file_select.h @@ -0,0 +1,327 @@ +#ifndef FILE_SELECT_H +#define FILE_SELECT_H + +#include "global.h" + +// `sramCtx->noFlashSaveBuf` is never allocated space, so should never be used +// Slot offsets are also based on OoT SaveContext sizes, and contains incorrect sizes from MM +// Macros appear to be remnant from OoT +#define NO_FLASH_GET_NEWF(sramCtx, slotNum, index) \ + (sramCtx->noFlashSaveBuf[gSramSlotOffsets[slotNum] + offsetof(SaveContext, save.saveInfo.playerData.newf[index])]) +#define NO_FLASH_SLOT_OCCUPIED(sramCtx, slotNum) \ + ((NO_FLASH_GET_NEWF(sramCtx, slotNum, 0) == 'Z') || (NO_FLASH_GET_NEWF(sramCtx, slotNum, 1) == 'E') || \ + (NO_FLASH_GET_NEWF(sramCtx, slotNum, 2) == 'L') || (NO_FLASH_GET_NEWF(sramCtx, slotNum, 3) == 'D') || \ + (NO_FLASH_GET_NEWF(sramCtx, slotNum, 4) == 'A') || (NO_FLASH_GET_NEWF(sramCtx, slotNum, 5) == '3')) + +#define GET_NEWF(fileSelect, slotNum, index) (fileSelect->newf[slotNum][index]) +#define SLOT_OCCUPIED(fileSelect, slotNum) \ + ((GET_NEWF(fileSelect, slotNum, 0) == 'Z') && (GET_NEWF(fileSelect, slotNum, 1) == 'E') && \ + (GET_NEWF(fileSelect, slotNum, 2) == 'L') && (GET_NEWF(fileSelect, slotNum, 3) == 'D') && \ + (GET_NEWF(fileSelect, slotNum, 4) == 'A') && (GET_NEWF(fileSelect, slotNum, 5) == '3')) + +// Init mode: Initial setup as the file select is starting up, fades and slides in various menu elements +// Config mode: Handles the bulk of the file select, various configuration tasks like picking a file, copy/erase, and the options menu +// Select mode: Displays the selected file with various details about it, and allows the player to confirm and open it +typedef enum { + /* 0 */ FS_MENU_MODE_INIT, + /* 1 */ FS_MENU_MODE_CONFIG, + /* 2 */ FS_MENU_MODE_SELECT +} MenuMode; + +typedef enum { + /* 0x00 */ CM_FADE_IN_START, + /* 0x01 */ CM_FADE_IN_END, + /* 0x02 */ CM_MAIN_MENU, + /* 0x03 */ CM_SETUP_COPY_SOURCE, + /* 0x04 */ CM_SELECT_COPY_SOURCE, + /* 0x05 */ CM_SETUP_COPY_DEST_1, + /* 0x06 */ CM_SETUP_COPY_DEST_2, + /* 0x07 */ CM_SELECT_COPY_DEST, + /* 0x08 */ CM_EXIT_TO_COPY_SOURCE_1, + /* 0x09 */ CM_EXIT_TO_COPY_SOURCE_2, + /* 0x0A */ CM_SETUP_COPY_CONFIRM_1, + /* 0x0B */ CM_SETUP_COPY_CONFIRM_2, + /* 0x0C */ CM_COPY_CONFIRM, + /* 0x0D */ CM_COPY_WAIT_FOR_FLASH_SAVE, + /* 0x0E */ CM_RETURN_TO_COPY_DEST, + /* 0x0F */ CM_COPY_ANIM_1, + /* 0x10 */ CM_COPY_ANIM_2, + /* 0x11 */ CM_COPY_ANIM_3, + /* 0x12 */ CM_COPY_ANIM_4, + /* 0x13 */ CM_COPY_ANIM_5, + /* 0x14 */ CM_COPY_RETURN_MAIN, + /* 0x15 */ CM_SETUP_ERASE_SELECT, + /* 0x16 */ CM_ERASE_SELECT, + /* 0x17 */ CM_SETUP_ERASE_CONFIRM_1, + /* 0x18 */ CM_SETUP_ERASE_CONFIRM_2, + /* 0x19 */ CM_ERASE_CONFIRM, + /* 0x1A */ CM_EXIT_TO_ERASE_SELECT_1, + /* 0x1B */ CM_EXIT_TO_ERASE_SELECT_2, + /* 0x1C */ CM_ERASE_ANIM_1, + /* 0x1D */ CM_ERASE_WAIT_FOR_FLASH_SAVE, + /* 0x1E */ CM_ERASE_ANIM_2, + /* 0x1F */ CM_ERASE_ANIM_3, + /* 0x20 */ CM_EXIT_ERASE_TO_MAIN, + /* 0x21 */ CM_UNUSED_31, + /* 0x22 */ CM_ROTATE_TO_NAME_ENTRY, + /* 0x23 */ CM_START_NAME_ENTRY, + /* 0x24 */ CM_NAME_ENTRY, + /* 0x25 */ CM_NAME_ENTRY_WAIT_FOR_FLASH_SAVE, + /* 0x26 */ CM_NAME_ENTRY_TO_MAIN, + /* 0x27 */ CM_MAIN_TO_OPTIONS, + /* 0x28 */ CM_START_OPTIONS, + /* 0x29 */ CM_OPTIONS_MENU, + /* 0x2A */ CM_OPTIONS_WAIT_FOR_FLASH_SAVE, + /* 0x2B */ CM_OPTIONS_TO_MAIN, + /* 0x2C */ CM_UNUSED_DELAY +} ConfigMode; + +typedef enum { + /* 0 */ SM_FADE_MAIN_TO_SELECT, + /* 1 */ SM_MOVE_FILE_TO_TOP, + /* 2 */ SM_FADE_IN_FILE_INFO, + /* 3 */ SM_CONFIRM_FILE, + /* 4 */ SM_FADE_OUT_FILE_INFO, + /* 5 */ SM_MOVE_FILE_TO_SLOT, + /* 6 */ SM_FADE_OUT, + /* 7 */ SM_LOAD_GAME +} SelectMode; + +typedef enum { + /* 0 */ FS_TITLE_SELECT_FILE, // "Please select a file." + /* 1 */ FS_TITLE_OPEN_FILE, // "Open this file?" + /* 2 */ FS_TITLE_COPY_FROM, // "Copy which file?" + /* 3 */ FS_TITLE_COPY_TO, // "Copy to which file?" + /* 4 */ FS_TITLE_COPY_CONFIRM, // "Are you sure?" + /* 5 */ FS_TITLE_COPY_COMPLETE, // "File copied." + /* 6 */ FS_TITLE_ERASE_FILE, // "Erase which file?" + /* 7 */ FS_TITLE_ERASE_CONFIRM, // "Are you sure?" + /* 8 */ FS_TITLE_ERASE_COMPLETE // "File erased." +} TitleLabel; + +typedef enum { + /* 0 */ FS_TITLE_CUR, + /* 1 */ FS_TITLE_NEXT +} TitleIndex; + +typedef enum { + /* -1 */ FS_WARNING_NONE = -1, + /* 0 */ FS_WARNING_NO_FILE_COPY, // "No file to copy." + /* 1 */ FS_WARNING_NO_FILE_ERASE, // "No file to erase." + /* 2 */ FS_WARNING_NO_EMPTY_FILES, // "There is no empty file." + /* 3 */ FS_WARNING_FILE_EMPTY, // "This is an empty file." + /* 4 */ FS_WARNING_FILE_IN_USE // "This file is in use." +} WarningLabel; + +typedef enum { + /* 0 */ FS_BTN_MAIN_FILE_1, + /* 1 */ FS_BTN_MAIN_FILE_2, + /* 2 */ FS_BTN_MAIN_FILE_3, + /* 3 */ FS_BTN_MAIN_COPY, + /* 4 */ FS_BTN_MAIN_ERASE, + /* 5 */ FS_BTN_MAIN_OPTIONS +} MainMenuButtonIndex; + +typedef enum { + /* 0 */ FS_BTN_COPY_FILE_1, + /* 1 */ FS_BTN_COPY_FILE_2, + /* 2 */ FS_BTN_COPY_FILE_3, + /* 3 */ FS_BTN_COPY_QUIT +} CopyMenuButtonIndex; + +typedef enum { + /* 0 */ FS_BTN_ERASE_FILE_1, + /* 1 */ FS_BTN_ERASE_FILE_2, + /* 2 */ FS_BTN_ERASE_FILE_3, + /* 3 */ FS_BTN_ERASE_QUIT +} EraseMenuButtonIndex; + +typedef enum { + /* 0 */ FS_BTN_SELECT_FILE_1, + /* 1 */ FS_BTN_SELECT_FILE_2, + /* 2 */ FS_BTN_SELECT_FILE_3, + /* 3 */ FS_BTN_SELECT_YES, + /* 4 */ FS_BTN_SELECT_QUIT +} SelectMenuButtonIndex; + +typedef enum { + /* 0 */ FS_BTN_CONFIRM_YES, + /* 1 */ FS_BTN_CONFIRM_QUIT +} ConfirmButtonIndex; + +typedef enum { + /* 0 */ FS_BTN_ACTION_COPY, + /* 1 */ FS_BTN_ACTION_ERASE +} ActionButtonIndex; + +typedef enum { + /* 0 */ FS_SETTING_AUDIO, + /* 1 */ FS_SETTING_ZTARGET +} SettingIndex; + +typedef enum { + /* 0 */ FS_CHAR_PAGE_HIRA, + /* 1 */ FS_CHAR_PAGE_KATA, + /* 2 */ FS_CHAR_PAGE_ENG +} CharPage; + +typedef enum { + /* 0 */ FS_KBD_BTN_HIRA, + /* 1 */ FS_KBD_BTN_KATA, + /* 2 */ FS_KBD_BTN_ENG, + /* 3 */ FS_KBD_BTN_BACKSPACE, + /* 4 */ FS_KBD_BTN_END, + /* 99 */ FS_KBD_BTN_NONE = 99 +} KeyboardButton; + +typedef struct FileSelectState { + /* 0x00000 */ GameState state; + /* 0x000A4 */ Vtx* windowVtx; + /* 0x000A8 */ u8* staticSegment; + /* 0x000AC */ u8* parameterSegment; + /* 0x000B0 */ u8* titleSegment; + /* 0x000B8 */ View view; + /* 0x00220 */ SramContext sramCtx; + /* 0x00248 */ SkyboxContext skyboxCtx; + /* 0x00470 */ MessageContext msgCtx; + /* 0x12550 */ Font font; + /* 0x242E0 */ EnvironmentContext envCtx; + /* 0x243E0 */ UNK_TYPE1 pad243E0[0x4]; + /* 0x243E4 */ Vtx* windowContentVtx; + /* 0x243E8 */ Vtx* keyboardVtx; + /* 0x243EC */ Vtx* nameEntryVtx; + /* 0x243F0 */ Vtx* keyboard2Vtx; + /* 0x243F4 */ u8 newf[4][6]; + /* 0x2440C */ u16 threeDayResetCount[4]; + /* 0x24414 */ char fileNames[4][8]; + /* 0x24434 */ s16 healthCapacity[4]; + /* 0x2443C */ s16 health[4]; + /* 0x24444 */ u32 questItems[4]; + /* 0x24454 */ s8 defenseHearts[4]; + /* 0x24458 */ u16 time[4]; + /* 0x24460 */ s16 day[4]; + /* 0x24468 */ u8 isOwlSave[4]; + /* 0x2446C */ s16 rupees[4]; + /* 0x24474 */ u8 walletUpgrades[4]; + /* 0x24478 */ u8 maskCount[4]; + /* 0x2447C */ u8 heartPieceCount[4]; + /* 0x24480 */ s16 buttonIndex; // enum will depend on `ConfigMode` + /* 0x24482 */ s16 confirmButtonIndex; // see `ConfirmButtonIndex` enum + /* 0x24484 */ s16 menuMode; // see `MenuMode` enum + /* 0x24486 */ s16 configMode; // see `ConfigMode` enum + /* 0x24488 */ s16 prevConfigMode; // see `ConfigMode` enum + /* 0x2448A */ s16 nextConfigMode; // see `ConfigMode` enum + /* 0x2448C */ s16 selectMode; // see `SelectMode` enum + /* 0x2448E */ s16 selectedFileIndex; + /* 0x24490 */ UNK_TYPE1 pad24490[0x2]; + /* 0x24492 */ s16 fileNamesY[3]; + /* 0x24498 */ s16 actionTimer; + /* 0x2449A */ s16 buttonYOffsets[6]; + /* 0x244A6 */ s16 copyDestFileIndex; + /* 0x244A8 */ s16 warningLabel; + /* 0x244AA */ s16 warningButtonIndex; + /* 0x244AC */ s16 titleLabel; // see `TitleLabel` enum + /* 0x244AE */ s16 nextTitleLabel; // see `TitleLabel` enum + /* 0x244B0 */ s16 windowColor[3]; + /* 0x244B6 */ s16 titleAlpha[2]; // see `TitleIndex` enum + /* 0x244BA */ s16 windowAlpha; + /* 0x244BC */ s16 fileButtonAlpha[3]; + /* 0x244C2 */ s16 nameBoxAlpha[3]; + /* 0x244C8 */ s16 nameAlpha[3]; + /* 0x244CE */ s16 connectorAlpha[3]; + /* 0x244D4 */ s16 fileInfoAlpha[3]; + /* 0x244DA */ s16 actionButtonAlpha[2]; + /* 0x244DA */ s16 confirmButtonAlpha[2]; + /* 0x244E2 */ s16 optionButtonAlpha; + /* 0x244E4 */ s16 nameEntryBoxAlpha; + /* 0x244E6 */ s16 controlsAlpha; + /* 0x244E8 */ s16 emptyFileTextAlpha; + /* 0x244EA */ s16 highlightColor[4]; + /* 0x244F2 */ s16 highlightPulseDir; + /* 0x244F4 */ s16 unk_244F4; + /* 0x244F6 */ s16 confirmButtonTexIndices[2]; + /* 0x244FA */ s16 inputTimerX; + /* 0x244FC */ s16 inputTimerY; + /* 0x244FE */ s16 stickXDir; + /* 0x24500 */ s16 stickYDir; + /* 0x24502 */ s16 stickAdjX; + /* 0x24504 */ s16 stickAdjY; + /* 0x24506 */ s16 nameEntryBoxPosX; + /* 0x24508 */ s16 windowPosX; + /* 0x2450A */ s16 screenFillAlpha; + /* 0x2450C */ f32 windowRot; + /* 0x24510 */ s16 kbdButton; + /* 0x24512 */ s16 charPage; + /* 0x24514 */ s16 charBgAlpha; + /* 0x24516 */ s16 charIndex; + /* 0x24518 */ s16 kbdX; + /* 0x2451A */ s16 kbdY; + /* 0x2451C */ s16 newFileNameCharCount; + /* 0x2451E */ s16 unk_2451E[5]; + /* 0x24528 */ s16 highlightTimer; + /* 0x2452A */ s16 unk_2452A; + /* 0x2452C */ s16 unk_2452C[4]; + /* 0x24534 */ s16 unk_24534[4]; + /* 0x2453C */ s16 unk_2453C[4]; + /* 0x24544 */ s16 unk_24544[4]; + /* 0x2454C */ s16 unk_2454C; + /* 0x2454E */ s16 unk_2454E; + /* 0x24550 */ s16 unk_24550; +} FileSelectState; // size = 0x24558 + +void FileSelect_Init(GameState* thisx); +void FileSelect_Destroy(GameState* thisx); + +void FileSelect_PulsateCursor(GameState* thisx); +void FileSelect_DrawNameEntry(GameState* thisx); +void FileSelect_DrawOptions(GameState* thisx); +void FileSelect_DrawTexQuadI4(GraphicsContext* gfxCtx, TexturePtr texture, s16 point); + +// Copying Files +void FileSelect_SetupCopySource(GameState* thisx); +void FileSelect_SelectCopySource(GameState* thisx); +void FileSelect_SetupCopyDest1(GameState* thisx); +void FileSelect_SetupCopyDest2(GameState* thisx); +void FileSelect_SelectCopyDest(GameState* thisx); +void FileSelect_ExitToCopySource1(GameState* thisx); +void FileSelect_ExitToCopySource2(GameState* thisx); +void FileSelect_SetupCopyConfirm1(GameState* thisx); +void FileSelect_SetupCopyConfirm2(GameState* thisx); +void FileSelect_CopyConfirm(GameState* thisx); +void FileSelect_CopyWaitForFlashSave(GameState* thisx); +void FileSelect_ReturnToCopyDest(GameState* thisx); +void FileSelect_CopyAnim1(GameState* thisx); +void FileSelect_CopyAnim2(GameState* thisx); +void FileSelect_CopyAnim3(GameState* thisx); +void FileSelect_CopyAnim4(GameState* thisx); +void FileSelect_CopyAnim5(GameState* thisx); +void FileSelect_ExitCopyToMain(GameState* thisx); + +// Erasing Files +void FileSelect_SetupEraseSelect(GameState* thisx); +void FileSelect_EraseSelect(GameState* thisx); +void FileSelect_SetupEraseConfirm1(GameState* thisx); +void FileSelect_SetupEraseConfirm2(GameState* thisx); +void FileSelect_EraseConfirm(GameState* thisx); +void FileSelect_ExitToEraseSelect1(GameState* thisx); +void FileSelect_ExitToEraseSelect2(GameState* thisx); +void FileSelect_EraseAnim1(GameState* thisx); +void FileSelect_EraseWaitForFlashSave(GameState* thisx); +void FileSelect_EraseAnim2(GameState* thisx); +void FileSelect_EraseAnim3(GameState* thisx); +void FileSelect_ExitEraseToMain(GameState* thisx); + +// Entering Name +void FileSelect_StartNameEntry(GameState* thisx); +void FileSelect_UpdateKeyboardCursor(GameState* thisx); +void FileSelect_NameEntryWaitForFlashSave(GameState* thisx); + +// Selecting Options +void FileSelect_StartOptions(GameState* thisx); +void FileSelect_UpdateOptionsMenu(GameState* thisx); +void FileSelect_OptionsWaitForFlashSave(GameState* thisx); + +extern u8 D_808141F0[]; +extern s16 D_80814280[]; + +#endif diff --git a/src/overlays/gamestates/ovl_title/z_title.c b/src/overlays/gamestates/ovl_title/z_title.c index 8e270b836..abde294e5 100644 --- a/src/overlays/gamestates/ovl_title/z_title.c +++ b/src/overlays/gamestates/ovl_title/z_title.c @@ -171,7 +171,7 @@ void ConsoleLogo_Init(GameState* thisx) { gSaveContext.fileNum = 0xFF; } - gSaveContext.unk_3F3F = true; + gSaveContext.flashSaveAvailable = true; Sram_Alloc(thisx, &this->sramCtx); this->ult = 0; this->timer = 20; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c index 1eb46728f..8517fdf20 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c @@ -285,7 +285,7 @@ void KaleidoScope_DrawInventoryEditorText(Gfx** gfxp) { GfxPrint_SetPos(&printer, 23, 22); GfxPrint_Printf(&printer, "%s", "セイ"); - // Life (double defence) + // Life (double defense) GfxPrint_SetPos(&printer, 4, 25); GfxPrint_Printf(&printer, "%s", "イ"); GfxPrint_SetPos(&printer, 4, 26); @@ -601,7 +601,7 @@ void KaleidoScope_DrawInventoryEditor(PlayState* play) { counterDigits[1] += 21; } - // Double Defence + // Double Defense KaleidoScope_DrawDigit(play, gSaveContext.save.saveInfo.playerData.doubleDefense, 44, 202); // Magic @@ -1048,16 +1048,13 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { // Dungeon Items slot = sCurSection - INV_EDITOR_SECTION_DUNGEON_ITEMS; if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { - // Map - gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 4; + gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= (1 << DUNGEON_MAP); } if (CHECK_BTN_ALL(input->press.button, BTN_CDOWN)) { - // Compass - gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 2; + gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= (1 << DUNGEON_COMPASS); } if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { - // Boss Key - gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= 1; + gSaveContext.save.saveInfo.inventory.dungeonItems[slot] ^= (1 << DUNGEON_BOSS_KEY); } } else if (sCurSection < INV_EDITOR_SECTION_DOUBLE_DEFENSE) { @@ -1077,7 +1074,7 @@ void KaleidoScope_UpdateInventoryEditor(PlayState* play) { } } else { - // Double Defence + // Double Defense if (CHECK_BTN_ALL(input->press.button, BTN_CUP) || CHECK_BTN_ALL(input->press.button, BTN_CLEFT) || CHECK_BTN_ALL(input->press.button, BTN_CDOWN) || CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { gSaveContext.save.saveInfo.playerData.doubleDefense ^= 1; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index 9d210a728..64da25451 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -3060,12 +3060,12 @@ void KaleidoScope_Update(PlayState* play) { Play_SaveCycleSceneFlags(&play->state); gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId; func_8014546C(sramCtx); - if (gSaveContext.unk_3F3F == 0) { + if (!gSaveContext.flashSaveAvailable) { pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_5; } else { - func_80147008(sramCtx, D_801C67C8[gSaveContext.fileNum], - D_801C67F0[gSaveContext.fileNum]); - func_80147020(sramCtx); + Sram_SetFlashPagesDefault(sramCtx, gFlashSaveStartPages[gSaveContext.fileNum], + gFlashSaveNumPages[gSaveContext.fileNum]); + Sram_StartWriteToFlashDefault(sramCtx); pauseCtx->savePromptState = PAUSE_SAVEPROMPT_STATE_4; } sDelayTimer = 90; @@ -3327,11 +3327,12 @@ void KaleidoScope_Update(PlayState* play) { gSaveContext.save.saveInfo.playerData.savedSceneId = play->sceneId; gSaveContext.save.saveInfo.playerData.health = 0x30; func_8014546C(sramCtx); - if (gSaveContext.unk_3F3F == 0) { + if (!gSaveContext.flashSaveAvailable) { pauseCtx->state = PAUSE_STATE_GAMEOVER_8; } else { - func_80147008(sramCtx, D_801C67C8[gSaveContext.fileNum], D_801C67F0[gSaveContext.fileNum]); - func_80147020(sramCtx); + Sram_SetFlashPagesDefault(sramCtx, gFlashSaveStartPages[gSaveContext.fileNum], + gFlashSaveNumPages[gSaveContext.fileNum]); + Sram_StartWriteToFlashDefault(sramCtx); pauseCtx->state = PAUSE_STATE_GAMEOVER_7; } sDelayTimer = 90; diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 4c65de06c..e4f96e594 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2802,21 +2802,21 @@ 0x8014546C:("func_8014546C",), 0x80145698:("func_80145698",), 0x801457CC:("func_801457CC",), - 0x80146580:("func_80146580",), - 0x80146628:("func_80146628",), + 0x80146580:("Sram_EraseSave",), + 0x80146628:("Sram_CopySave",), 0x80146AA0:("Sram_InitSave",), - 0x80146DF8:("func_80146DF8",), + 0x80146DF8:("Sram_WriteSaveOptionsToBuffer",), 0x80146E40:("Sram_InitSram",), 0x80146E70:("Sram_Alloc",), - 0x80146EBC:("func_80146EBC",), + 0x80146EBC:("Sram_SyncWriteToFlash",), 0x80146EE8:("Sram_SaveSpecialEnterClockTown",), 0x80146F5C:("Sram_SaveSpecialNewDay",), - 0x80147008:("func_80147008",), - 0x80147020:("func_80147020",), - 0x80147068:("func_80147068",), - 0x80147138:("func_80147138",), - 0x80147150:("func_80147150",), - 0x80147198:("func_80147198",), + 0x80147008:("Sram_SetFlashPagesDefault",), + 0x80147020:("Sram_StartWriteToFlashDefault",), + 0x80147068:("Sram_UpdateWriteToFlashDefault",), + 0x80147138:("Sram_SetFlashPagesOwlSave",), + 0x80147150:("Sram_StartWriteToFlashOwlSave",), + 0x80147198:("Sram_UpdateWriteToFlashOwlSave",), 0x80147314:("func_80147314",), 0x80147414:("func_80147414",), 0x8014750C:("Sram_nop8014750C",), @@ -4107,87 +4107,87 @@ 0x80803EC0:("TitleSetup_Main",), 0x80803F0C:("TitleSetup_Destroy",), 0x80803F30:("TitleSetup_Init",), - 0x80804010:("func_80804010",), - 0x808041A0:("func_808041A0",), - 0x80804654:("func_80804654",), - 0x808047D8:("func_808047D8",), - 0x8080489C:("func_8080489C",), - 0x80804DAC:("func_80804DAC",), - 0x80804E74:("func_80804E74",), - 0x80804F98:("func_80804F98",), - 0x8080525C:("func_8080525C",), - 0x808052B0:("func_808052B0",), - 0x808054A4:("func_808054A4",), - 0x808055D0:("func_808055D0",), - 0x808058A4:("func_808058A4",), - 0x80805918:("func_80805918",), - 0x80805A58:("func_80805A58",), - 0x80805B30:("func_80805B30",), - 0x80805C1C:("func_80805C1C",), - 0x80806014:("func_80806014",), - 0x80806148:("func_80806148",), - 0x80806310:("func_80806310",), - 0x808067E0:("func_808067E0",), - 0x80806BC8:("func_80806BC8",), - 0x80806CA0:("func_80806CA0",), - 0x80806E84:("func_80806E84",), - 0x80806F30:("func_80806F30",), - 0x808071E4:("func_808071E4",), - 0x80807390:("func_80807390",), - 0x8080742C:("func_8080742C",), - 0x808074B4:("func_808074B4",), - 0x808077AC:("func_808077AC",), - 0x80807940:("func_80807940",), - 0x80807A78:("func_80807A78",), - 0x80807C58:("func_80807C58",), - 0x80808214:("func_80808214",), - 0x80808D30:("func_80808D30",), - 0x80808F1C:("func_80808F1C",), - 0x80809DF0:("func_80809DF0",), - 0x80809EA0:("func_80809EA0",), - 0x8080A3CC:("func_8080A3CC",), - 0x8080A418:("func_8080A418",), - 0x8080A4A0:("func_8080A4A0",), - 0x8080A6BC:("func_8080A6BC",), - 0x8080A708:("func_8080A708",), - 0x8080BBFC:("func_8080BBFC",), - 0x8080BC20:("func_8080BC20",), - 0x8080BC44:("FileSelect_nop8080bc44",), - 0x8080BC4C:("FileSelect_nop8080BC4C",), - 0x8080BC58:("func_8080BC58",), - 0x8080BDAC:("func_8080BDAC",), - 0x8080BDDC:("FileSelect_RenderView",), - 0x8080BE60:("func_8080BE60",), - 0x8080C040:("func_8080C040",), - 0x8080C228:("func_8080C228",), - 0x8080C29C:("func_8080C29C",), - 0x8080C324:("func_8080C324",), - 0x8080C3A8:("func_8080C3A8",), - 0x8080D164:("func_8080D164",), - 0x8080D170:("func_8080D170",), - 0x8080D1BC:("func_8080D1BC",), - 0x8080D220:("func_8080D220",), - 0x8080D284:("func_8080D284",), - 0x8080D2EC:("func_8080D2EC",), - 0x8080D3D0:("func_8080D3D0",), - 0x8080D40C:("func_8080D40C",), - 0x8080D6D4:("func_8080D6D4",), - 0x8080F25C:("func_8080F25C",), - 0x808108DC:("func_808108DC",), - 0x80811CB8:("func_80811CB8",), - 0x80812460:("func_80812460",), - 0x80812668:("func_80812668",), - 0x80812760:("func_80812760",), - 0x80812840:("func_80812840",), - 0x80812980:("func_80812980",), - 0x80812A6C:("func_80812A6C",), - 0x80812D44:("func_80812D44",), - 0x80812D94:("func_80812D94",), - 0x80812E94:("func_80812E94",), - 0x80812ED0:("func_80812ED0",), + 0x80804010:("FileSelect_SetupCopySource",), + 0x808041A0:("FileSelect_SelectCopySource",), + 0x80804654:("FileSelect_SetupCopyDest1",), + 0x808047D8:("FileSelect_SetupCopyDest2",), + 0x8080489C:("FileSelect_SelectCopyDest",), + 0x80804DAC:("FileSelect_ExitToCopySource1",), + 0x80804E74:("FileSelect_ExitToCopySource2",), + 0x80804F98:("FileSelect_SetupCopyConfirm1",), + 0x8080525C:("FileSelect_SetupCopyConfirm2",), + 0x808052B0:("FileSelect_CopyConfirm",), + 0x808054A4:("FileSelect_CopyWaitForFlashSave",), + 0x808055D0:("FileSelect_ReturnToCopyDest",), + 0x808058A4:("FileSelect_CopyAnim1",), + 0x80805918:("FileSelect_CopyAnim2",), + 0x80805A58:("FileSelect_CopyAnim3",), + 0x80805B30:("FileSelect_CopyAnim4",), + 0x80805C1C:("FileSelect_CopyAnim5",), + 0x80806014:("FileSelect_ExitCopyToMain",), + 0x80806148:("FileSelect_SetupEraseSelect",), + 0x80806310:("FileSelect_EraseSelect",), + 0x808067E0:("FileSelect_SetupEraseConfirm1",), + 0x80806BC8:("FileSelect_SetupEraseConfirm2",), + 0x80806CA0:("FileSelect_EraseConfirm",), + 0x80806E84:("FileSelect_ExitToEraseSelect1",), + 0x80806F30:("FileSelect_ExitToEraseSelect2",), + 0x808071E4:("FileSelect_EraseAnim1",), + 0x80807390:("FileSelect_EraseWaitForFlashSave",), + 0x8080742C:("FileSelect_EraseAnim2",), + 0x808074B4:("FileSelect_EraseAnim3",), + 0x808077AC:("FileSelect_ExitEraseToMain",), + 0x80807940:("FileSelect_DrawTexQuadI4",), + 0x80807A78:("FileSelect_DrawMultiTexQuadI4",), + 0x80807C58:("FileSelect_SetKeyboardVtx",), + 0x80808214:("FileSelect_SetNameEntryVtx",), + 0x80808D30:("FileSelect_DrawKeyboard",), + 0x80808F1C:("FileSelect_DrawNameEntry",), + 0x80809DF0:("FileSelect_StartNameEntry",), + 0x80809EA0:("FileSelect_UpdateKeyboardCursor",), + 0x8080A3CC:("FileSelect_NameEntryWaitForFlashSave",), + 0x8080A418:("FileSelect_StartOptions",), + 0x8080A4A0:("FileSelect_UpdateOptionsMenu",), + 0x8080A6BC:("FileSelect_OptionsWaitForFlashSave",), + 0x8080A708:("FileSelect_DrawOptionsImpl",), + 0x8080BBFC:("FileSelect_DrawOptions",), + 0x8080BC20:("FileSelect_IncrementConfigMode",), + 0x8080BC44:("FileSelect_Noop1",), + 0x8080BC4C:("FileSelect_Noop2",), + 0x8080BC58:("FileSelect_InitModeUpdate",), + 0x8080BDAC:("FileSelect_InitModeDraw",), + 0x8080BDDC:("FileSelect_SetView",), + 0x8080BE60:("FileSelect_DrawTexQuadIA8",), + 0x8080C040:("FileSelect_FadeInMenuElements",), + 0x8080C228:("FileSelect_SplitNumber",), + 0x8080C29C:("FileSelect_StartFadeIn",), + 0x8080C324:("FileSelect_FinishFadeIn",), + 0x8080C3A8:("FileSelect_UpdateMainMenu",), + 0x8080D164:("FileSelect_UnusedCM31",), + 0x8080D170:("FileSelect_UnusedCMDelay",), + 0x8080D1BC:("FileSelect_RotateToNameEntry",), + 0x8080D220:("FileSelect_RotateToOptions",), + 0x8080D284:("FileSelect_RotateToMain",), + 0x8080D2EC:("FileSelect_PulsateCursor",), + 0x8080D3D0:("FileSelect_ConfigModeUpdate",), + 0x8080D40C:("FileSelect_SetWindowVtx",), + 0x8080D6D4:("FileSelect_SetWindowContentVtx",), + 0x8080F25C:("FileSelect_DrawFileInfo",), + 0x808108DC:("FileSelect_DrawWindowContents",), + 0x80811CB8:("FileSelect_ConfigModeDraw",), + 0x80812460:("FileSelect_FadeMainToSelect",), + 0x80812668:("FileSelect_MoveSelectedFileToTop",), + 0x80812760:("FileSelect_FadeInFileInfo",), + 0x80812840:("FileSelect_ConfirmFile",), + 0x80812980:("FileSelect_FadeOutFileInfo",), + 0x80812A6C:("FileSelect_MoveSelectedFileToSlot",), + 0x80812D44:("FileSelect_FadeOut",), + 0x80812D94:("FileSelect_LoadGame",), + 0x80812E94:("FileSelect_SelectModeUpdate",), + 0x80812ED0:("FileSelect_SelectModeDraw",), 0x8081313C:("FileSelect_UpdateAndDrawSkybox",), 0x80813268:("FileSelect_Main",), - 0x80813908:("func_80813908",), + 0x80813908:("FileSelect_InitContext",), 0x80813C74:("FileSelect_Destroy",), 0x80813C98:("FileSelect_Init",), 0x80814EB0:("DayTelop_Update",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index daa6aff8f..3a14118c5 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1927,14 +1927,14 @@ 0x801C5F44:("D_801C5F44","UNK_TYPE4","",0x4), 0x801C5FC0:("sPersistentCycleFlags","u32","[452]",0x710), 0x801C66D0:("D_801C66D0","UNK_TYPE2","",0x2), - 0x801C6798:("D_801C6798","UNK_TYPE4","",0x4), + 0x801C6798:("gSramSlotOffsets","UNK_TYPE4","",0x4), 0x801C67B0:("gAmmoItems","UNK_TYPE1","",0x1), - 0x801C67C8:("D_801C67C8","s32","[10]",0x28), - 0x801C67F0:("D_801C67F0","s32","[10]",0x28), - 0x801C6818:("D_801C6818","s32","[10]",0x28), - 0x801C6840:("D_801C6840","UNK_TYPE1","",0x1), - 0x801C6850:("D_801C6850","UNK_TYPE1","",0x1), - 0x801C6870:("D_801C6870","UNK_TYPE1","",0x1), + 0x801C67C8:("gFlashSaveStartPages","s32","[10]",0x28), + 0x801C67F0:("gFlashSaveNumPages","s32","[10]",0x28), + 0x801C6818:("gFlashSpecialSaveNumPages","s32","[10]",0x28), + 0x801C6840:("gFlashOwlSaveStartPages","UNK_TYPE1","",0x1), + 0x801C6850:("gFlashOwlSaveNumPages","UNK_TYPE1","",0x1), + 0x801C6870:("gFlashSaveSizes","UNK_TYPE1","",0x1), 0x801C6890:("D_801C6890","UNK_TYPE1","",0x1), 0x801C6898:("sSaveDefaultPlayerData","SavePlayerData","",0x28), 0x801C68C0:("sSaveDefaultItemEquips","ItemEquips","",0x22), @@ -4544,13 +4544,13 @@ 0x80803FC8:("openingCutscenes","u32","[2]",0x8), 0x80813DF0:("D_80813DF0","UNK_TYPE1","",0x1), 0x80813F30:("D_80813F30","UNK_TYPE1","",0x1), - 0x80814130:("D_80814130","UNK_TYPE1","",0x1), - 0x80814170:("D_80814170","UNK_TYPE1","",0x1), - 0x808141B0:("D_808141B0","UNK_TYPE1","",0x1), + 0x80814130:("gOptionsDividerTopVtx","UNK_TYPE1","",0x1), + 0x80814170:("gOptionsDividerMiddleVtx","UNK_TYPE1","",0x1), + 0x808141B0:("gOptionsDividerBottomVtx","UNK_TYPE1","",0x1), 0x808141F0:("D_808141F0","UNK_TYPE1","",0x1), - 0x80814240:("D_80814240","UNK_TYPE2","",0x2), + 0x80814240:("sChooseFileYOffsets","UNK_TYPE2","",0x2), 0x8081424C:("D_8081424C","UNK_TYPE2","",0x2), - 0x80814260:("D_80814260","UNK_TYPE2","",0x2), + 0x80814260:("sEraseDelayTimer","UNK_TYPE2","",0x2), 0x80814264:("D_80814264","UNK_TYPE2","",0x2), 0x8081426C:("D_8081426C","UNK_TYPE1","",0x1), 0x80814280:("D_80814280","UNK_TYPE1","",0x1), @@ -4559,31 +4559,31 @@ 0x80814404:("D_80814404","UNK_TYPE2","",0x2), 0x80814410:("D_80814410","UNK_TYPE2","",0x2), 0x8081441C:("D_8081441C","UNK_TYPE2","",0x2), - 0x80814428:("D_80814428","UNK_TYPE4","",0x4), - 0x80814430:("D_80814430","UNK_TYPE2","",0x2), + 0x80814428:("sBackspaceEndTextures","UNK_TYPE4","",0x4), + 0x80814430:("sBackspaceEndWidths","UNK_TYPE2","",0x2), 0x80814434:("D_80814434","UNK_TYPE2","",0x2), 0x8081444C:("D_8081444C","UNK_TYPE1","",0x1), - 0x80814464:("D_80814464","UNK_TYPE4","",0x4), - 0x8081448C:("D_8081448C","UNK_TYPE4","",0x4), - 0x808144BC:("D_808144BC","UNK_TYPE2","",0x2), - 0x808144C0:("D_808144C0","UNK_TYPE2","",0x2), - 0x808144C4:("D_808144C4","UNK_TYPE2","",0x2), - 0x808144C8:("D_808144C8","UNK_TYPE2","",0x2), - 0x808144CC:("D_808144CC","UNK_TYPE2","",0x2), - 0x808144D0:("D_808144D0","UNK_TYPE2","",0x2), - 0x808144D4:("D_808144D4","UNK_TYPE2","",0x2), - 0x808144D8:("D_808144D8","UNK_TYPE2","",0x2), - 0x808144DC:("D_808144DC","UNK_TYPE1","",0x1), - 0x808144E8:("D_808144E8","UNK_TYPE1","",0x1), - 0x80814510:("D_80814510","Gfx","[5]",0x28), - 0x80814538:("D_80814538","UNK_TYPE2","",0x2), - 0x80814548:("D_80814548","UNK_TYPE2","",0x2), - 0x80814550:("fileChooseSkyboxRotation","s16","",0x2), - 0x80814554:("D_80814554","UNK_TYPE1","",0x1), - 0x8081455C:("D_8081455C","UNK_TYPE1","",0x1), + 0x80814464:("gOptionsMenuHeaders","UNK_TYPE4","",0x4), + 0x8081448C:("gOptionsMenuSettings","UNK_TYPE4","",0x4), + 0x808144BC:("sCursorPrimRed","UNK_TYPE2","",0x2), + 0x808144C0:("sCursorPrimGreen","UNK_TYPE2","",0x2), + 0x808144C4:("sCursorPrimBlue","UNK_TYPE2","",0x2), + 0x808144C8:("sCursorEnvRed","UNK_TYPE2","",0x2), + 0x808144CC:("sCursorEnvGreen","UNK_TYPE2","",0x2), + 0x808144D0:("sCursorEnvBlue","UNK_TYPE2","",0x2), + 0x808144D4:("sCursorPulseDir","UNK_TYPE2","",0x2), + 0x808144D8:("sCursorFlashTimer","UNK_TYPE2","",0x2), + 0x808144DC:("sCursorPrimColors","UNK_TYPE1","",0x1), + 0x808144E8:("sCursorEnvColors","UNK_TYPE1","",0x1), + 0x80814510:("sScreenFillSetupDL","Gfx","[5]",0x28), + 0x80814538:("sFileInfoBoxPartWidths","UNK_TYPE2","",0x2), + 0x80814548:("sWindowContentColors","UNK_TYPE2","",0x2), + 0x80814550:("sFileSelectSkyboxRotation","s16","",0x2), + 0x80814554:("sWalletFirstDigit","UNK_TYPE1","",0x1), + 0x8081455C:("sEmptyName","UNK_TYPE1","",0x1), 0x80814564:("D_80814564","UNK_TYPE2","",0x2), - 0x80814568:("D_80814568","UNK_TYPE","[45]",0xb4), - 0x8081461C:("D_8081461C","s16","[2]",0x4), + 0x80814568:("sConfigModeUpdateFuncs","UNK_TYPE","[45]",0xb4), + 0x8081461C:("sCursorAlphaTargets","s16","[2]",0x4), 0x80814620:("D_80814620","UNK_TYPE2","",0x2), 0x80814628:("D_80814628","UNK_TYPE2","",0x2), 0x80814630:("D_80814630","UNK_TYPE2","",0x2), @@ -4592,24 +4592,24 @@ 0x8081464C:("D_8081464C","UNK_TYPE1","",0x1), 0x80814650:("D_80814650","UNK_TYPE1","",0x1), 0x80814654:("D_80814654","UNK_TYPE1","",0x1), - 0x8081465C:("D_8081465C","UNK_TYPE4","",0x4), - 0x8081466C:("D_8081466C","UNK_TYPE1","",0x1), - 0x8081467C:("D_8081467C","UNK_TYPE1","",0x1), - 0x8081468C:("D_8081468C","UNK_TYPE4","",0x4), - 0x808146B4:("D_808146B4","UNK_TYPE1","",0x1), - 0x808146C4:("D_808146C4","UNK_TYPE1","",0x1), - 0x808146D8:("D_808146D8","UNK_TYPE1","",0x1), - 0x808146EC:("D_808146EC","UNK_TYPE2","",0x2), - 0x808146F8:("D_808146F8","UNK_TYPE2","",0x2), - 0x80814704:("D_80814704","UNK_TYPE4","",0x4), - 0x80814720:("D_80814720","UNK_TYPE1","",0x1), - 0x80814744:("D_80814744","UNK_TYPE1","",0x1), - 0x80814758:("D_80814758","UNK_TYPE4","",0x4), - 0x80814764:("D_80814764","UNK_TYPE4","",0x4), - 0x80814774:("D_80814774","UNK_TYPE1","",0x1), - 0x8081477C:("D_8081477C","UNK_TYPE","[8]",0x20), - 0x8081479C:("D_8081479C","UNK_TYPE","[3]",0xc), - 0x808147A8:("D_808147A8","UNK_TYPE","[3]",0xc), + 0x8081465C:("sFileSelRemainsTextures","UNK_TYPE4","",0x4), + 0x8081466C:("sFileSelDayENGTextures","UNK_TYPE1","",0x1), + 0x8081467C:("sFileSelHeartPieceTextures","UNK_TYPE1","",0x1), + 0x8081468C:("sHeartTextures","UNK_TYPE4","",0x4), + 0x808146B4:("sHealthToQuarterHeartCount","UNK_TYPE1","",0x1), + 0x808146C4:("sFileSelRupeePrimColors","UNK_TYPE1","",0x1), + 0x808146D8:("sFileSelRupeeEnvColors","UNK_TYPE1","",0x1), + 0x808146EC:("sHeartPrimColors","UNK_TYPE2","",0x2), + 0x808146F8:("sHeartEnvColors","UNK_TYPE2","",0x2), + 0x80814704:("sFileInfoBoxTextures","UNK_TYPE4","",0x4), + 0x80814720:("sTitleLabels","UNK_TYPE1","",0x1), + 0x80814744:("sWarningLabels","UNK_TYPE1","",0x1), + 0x80814758:("sFileButtonTextures","UNK_TYPE4","",0x4), + 0x80814764:("sActionButtonTextures","UNK_TYPE4","",0x4), + 0x80814774:("sFileYOffsets","UNK_TYPE1","",0x1), + 0x8081477C:("sSelectModeUpdateFuncs","UNK_TYPE","[8]",0x20), + 0x8081479C:("gFileSelectDrawFuncs","UNK_TYPE","[3]",0xc), + 0x808147A8:("gFileSelectUpdateFuncs","UNK_TYPE","[3]",0xc), 0x808147B4:("D_808147B4","UNK_TYPE4","",0x4), 0x808147C0:("D_808147C0","UNK_TYPE2","",0x2), 0x808147C8:("D_808147C8","UNK_TYPE2","",0x2), @@ -4622,7 +4622,7 @@ 0x808147EC:("D_808147EC","f32","",0x4), 0x808147F0:("D_808147F0","f32","",0x4), 0x80814E80:("D_80814E80","UNK_TYPE1","",0x1), - 0x80814E90:("D_80814E90","UNK_TYPE1","",0x1), + 0x80814E90:("sSelectedSetting","UNK_TYPE1","",0x1), 0x80815FF0:("D_80815FF0","u8","",0x1), 0x80815FF4:("sDayLeftTextures","TexturePtr","[4]",0x10), 0x80816004:("sDayRightTextures","TexturePtr","[4]",0x10), diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 6713041f7..3d5839a69 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -2316,21 +2316,21 @@ asm/non_matchings/code/z_sram_NES/Sram_OpenSave.s,Sram_OpenSave,0x80144E78,0x17D asm/non_matchings/code/z_sram_NES/func_8014546C.s,func_8014546C,0x8014546C,0x8B asm/non_matchings/code/z_sram_NES/func_80145698.s,func_80145698,0x80145698,0x4D asm/non_matchings/code/z_sram_NES/func_801457CC.s,func_801457CC,0x801457CC,0x36D -asm/non_matchings/code/z_sram_NES/func_80146580.s,func_80146580,0x80146580,0x2A -asm/non_matchings/code/z_sram_NES/func_80146628.s,func_80146628,0x80146628,0x11E +asm/non_matchings/code/z_sram_NES/Sram_EraseSave.s,Sram_EraseSave,0x80146580,0x2A +asm/non_matchings/code/z_sram_NES/Sram_CopySave.s,Sram_CopySave,0x80146628,0x11E asm/non_matchings/code/z_sram_NES/Sram_InitSave.s,Sram_InitSave,0x80146AA0,0xD6 -asm/non_matchings/code/z_sram_NES/func_80146DF8.s,func_80146DF8,0x80146DF8,0x12 +asm/non_matchings/code/z_sram_NES/Sram_WriteSaveOptionsToBuffer.s,Sram_WriteSaveOptionsToBuffer,0x80146DF8,0x12 asm/non_matchings/code/z_sram_NES/Sram_InitSram.s,Sram_InitSram,0x80146E40,0xC asm/non_matchings/code/z_sram_NES/Sram_Alloc.s,Sram_Alloc,0x80146E70,0x13 -asm/non_matchings/code/z_sram_NES/func_80146EBC.s,func_80146EBC,0x80146EBC,0xB +asm/non_matchings/code/z_sram_NES/Sram_SyncWriteToFlash.s,Sram_SyncWriteToFlash,0x80146EBC,0xB asm/non_matchings/code/z_sram_NES/Sram_SaveSpecialEnterClockTown.s,Sram_SaveSpecialEnterClockTown,0x80146EE8,0x1D asm/non_matchings/code/z_sram_NES/Sram_SaveSpecialNewDay.s,Sram_SaveSpecialNewDay,0x80146F5C,0x2B -asm/non_matchings/code/z_sram_NES/func_80147008.s,func_80147008,0x80147008,0x6 -asm/non_matchings/code/z_sram_NES/func_80147020.s,func_80147020,0x80147020,0x12 -asm/non_matchings/code/z_sram_NES/func_80147068.s,func_80147068,0x80147068,0x34 -asm/non_matchings/code/z_sram_NES/func_80147138.s,func_80147138,0x80147138,0x6 -asm/non_matchings/code/z_sram_NES/func_80147150.s,func_80147150,0x80147150,0x12 -asm/non_matchings/code/z_sram_NES/func_80147198.s,func_80147198,0x80147198,0x5F +asm/non_matchings/code/z_sram_NES/Sram_SetFlashPagesDefault.s,Sram_SetFlashPagesDefault,0x80147008,0x6 +asm/non_matchings/code/z_sram_NES/Sram_StartWriteToFlashDefault.s,Sram_StartWriteToFlashDefault,0x80147020,0x12 +asm/non_matchings/code/z_sram_NES/Sram_UpdateWriteToFlashDefault.s,Sram_UpdateWriteToFlashDefault,0x80147068,0x34 +asm/non_matchings/code/z_sram_NES/Sram_SetFlashPagesOwlSave.s,Sram_SetFlashPagesOwlSave,0x80147138,0x6 +asm/non_matchings/code/z_sram_NES/Sram_StartWriteToFlashOwlSave.s,Sram_StartWriteToFlashOwlSave,0x80147150,0x12 +asm/non_matchings/code/z_sram_NES/Sram_UpdateWriteToFlashOwlSave.s,Sram_UpdateWriteToFlashOwlSave,0x80147198,0x5F asm/non_matchings/code/z_sram_NES/func_80147314.s,func_80147314,0x80147314,0x40 asm/non_matchings/code/z_sram_NES/func_80147414.s,func_80147414,0x80147414,0x3E asm/non_matchings/code/z_sram_NES/Sram_nop8014750C.s,Sram_nop8014750C,0x8014750C,0x5 From f92a61db27ed8ee213072df11169777c6794bc1b Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Tue, 6 Jun 2023 08:57:45 +1000 Subject: [PATCH 02/10] Misc Cleanup 3 (#1268) * begin more cleanup * more enums * typo * == * fix go.h * fix RaceDogInfo struct * PR Review * PR Suggestions * missed one * missed even more * fix params * fix number --- Makefile | 4 +-- include/z64.h | 18 +++++----- include/z64actor.h | 2 +- include/z64audio.h | 2 +- include/z64camera.h | 2 +- include/z64item.h | 2 +- include/z64math.h | 4 +-- include/z64player.h | 2 +- include/z64save.h | 4 +-- include/z64schedule.h | 4 +-- include/z64transition.h | 2 +- include/z_fireobj.h | 2 +- src/audio/code_8019AF00.c | 6 ++-- src/audio/lib/heap.c | 10 +++--- src/audio/lib/load.c | 8 ++--- src/boot_O2_g3/yaz0.c | 10 +++--- src/code/sys_cmpdma.c | 4 +-- src/code/z_draw.c | 6 ++-- src/code/z_eventmgr.c | 2 +- src/code/z_fbdemo_circle.c | 2 +- src/code/z_parameter.c | 10 +++--- src/code/z_player_lib.c | 8 ++--- src/code/z_room.c | 8 ++--- src/libultra/flash/osFlash.c | 4 +-- src/libultra/os/initialize.c | 10 +++--- .../actors/ovl_Bg_Breakwall/z_bg_breakwall.c | 2 +- .../actors/ovl_Bg_Breakwall/z_bg_breakwall.h | 6 ++-- .../ovl_Bg_Ctower_Gear/z_bg_ctower_gear.h | 8 ++--- .../ovl_Bg_Ctower_Rot/z_bg_ctower_rot.h | 2 +- .../ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c | 6 ++-- .../actors/ovl_Bg_Fire_Wall/z_bg_fire_wall.h | 6 ++-- .../ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c | 6 ++-- .../z_bg_hakugin_switch.c | 2 +- .../z_bg_ikana_rotaryroom.c | 6 ++-- .../ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.h | 10 +++--- .../actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.h | 2 +- .../actors/ovl_Bg_Ladder/z_bg_ladder.h | 2 +- .../ovl_Bg_Last_Bwall/z_bg_last_bwall.h | 4 +-- .../actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.h | 2 +- .../ovl_Bg_Open_Shutter/z_bg_open_shutter.c | 4 +-- .../actors/ovl_Bg_Umajump/z_bg_umajump.h | 12 +++---- src/overlays/actors/ovl_Boss_02/z_boss_02.h | 6 ++-- src/overlays/actors/ovl_Boss_03/z_boss_03.h | 2 +- .../actors/ovl_Demo_Kankyo/z_demo_kankyo.h | 4 +-- .../actors/ovl_Demo_Moonend/z_demo_moonend.c | 4 +-- .../actors/ovl_Demo_Moonend/z_demo_moonend.h | 2 +- .../actors/ovl_Demo_Syoten/z_demo_syoten.h | 4 +-- .../actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c | 14 ++++---- src/overlays/actors/ovl_Dm_Al/z_dm_al.h | 4 +-- .../actors/ovl_Dm_Char01/z_dm_char01.h | 6 ++-- .../actors/ovl_Dm_Char02/z_dm_char02.c | 2 +- .../actors/ovl_Dm_Char05/z_dm_char05.h | 6 ++-- .../actors/ovl_Dm_Char08/z_dm_char08.c | 6 ++-- .../actors/ovl_Dm_Opstage/z_dm_opstage.h | 2 +- .../actors/ovl_Dm_Ravine/z_dm_ravine.h | 2 +- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c | 10 +++--- src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h | 2 +- src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c | 8 ++--- .../actors/ovl_Door_Shutter/z_door_shutter.c | 10 +++--- .../actors/ovl_Door_Warp1/z_door_warp1.h | 6 ++-- src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h | 12 +++---- .../z_eff_kamejima_wave.c | 2 +- .../z_eff_kamejima_wave.h | 8 ++--- .../actors/ovl_Eff_Lastday/z_eff_lastday.c | 26 +++++++------- .../actors/ovl_Eff_Lastday/z_eff_lastday.h | 12 +++---- .../ovl_En_Akindonuts/z_en_akindonuts.h | 6 ++-- src/overlays/actors/ovl_En_Ani/z_en_ani.h | 8 ++--- .../actors/ovl_En_Aob_01/z_en_aob_01.c | 4 +-- src/overlays/actors/ovl_En_Az/z_en_az.c | 2 +- src/overlays/actors/ovl_En_Baguo/z_en_baguo.c | 12 +++---- src/overlays/actors/ovl_En_Bb/z_en_bb.c | 4 +-- .../actors/ovl_En_Bbfall/z_en_bbfall.c | 4 +-- src/overlays/actors/ovl_En_Bee/z_en_bee.h | 4 +-- .../actors/ovl_En_Bigpamet/z_en_bigpamet.h | 6 ++-- src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.h | 10 +++--- .../actors/ovl_En_Bigslime/z_en_bigslime.c | 2 +- src/overlays/actors/ovl_En_Bjt/z_en_bjt.c | 2 +- src/overlays/actors/ovl_En_Bom/z_en_bom.h | 8 ++--- .../actors/ovl_En_Bombers/z_en_bombers.h | 6 ++-- .../actors/ovl_En_Bomjima/z_en_bomjima.c | 6 ++-- .../actors/ovl_En_Bomjimb/z_en_bomjimb.h | 12 +++---- src/overlays/actors/ovl_En_Boom/z_en_boom.c | 2 +- src/overlays/actors/ovl_En_Box/z_en_box.c | 2 +- .../actors/ovl_En_Clear_Tag/z_en_clear_tag.c | 2 +- .../actors/ovl_En_Col_Man/z_en_col_man.h | 2 +- src/overlays/actors/ovl_En_Cow/z_en_cow.h | 6 ++-- src/overlays/actors/ovl_En_Crow/z_en_crow.c | 2 +- src/overlays/actors/ovl_En_Daiku/z_en_daiku.c | 30 ++++++++-------- src/overlays/actors/ovl_En_Daiku/z_en_daiku.h | 12 +++---- .../actors/ovl_En_Daiku2/z_en_daiku2.h | 6 ++-- .../actors/ovl_En_Dekunuts/z_en_dekunuts.h | 4 +-- .../ovl_En_Demo_heishi/z_en_demo_heishi.c | 10 +++--- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 12 +++---- src/overlays/actors/ovl_En_Dg/z_en_dg.h | 4 +-- src/overlays/actors/ovl_En_Dnk/z_en_dnk.h | 14 ++++---- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 2 +- src/overlays/actors/ovl_En_Dno/z_en_dno.h | 4 +-- src/overlays/actors/ovl_En_Dnp/z_en_dnp.c | 2 +- src/overlays/actors/ovl_En_Dnp/z_en_dnp.h | 6 ++-- src/overlays/actors/ovl_En_Dns/z_en_dns.c | 2 +- src/overlays/actors/ovl_En_Dns/z_en_dns.h | 12 +++---- src/overlays/actors/ovl_En_Door/z_en_door.c | 10 +++--- src/overlays/actors/ovl_En_Door/z_en_door.h | 2 +- .../actors/ovl_En_Dragon/z_en_dragon.c | 6 ++-- .../actors/ovl_En_Dragon/z_en_dragon.h | 2 +- .../actors/ovl_En_Egblock/z_en_egblock.c | 2 +- src/overlays/actors/ovl_En_Egol/z_en_egol.c | 10 +++--- src/overlays/actors/ovl_En_Elf/z_en_elf.h | 16 ++++----- .../actors/ovl_En_Elfgrp/z_en_elfgrp.h | 6 ++-- .../actors/ovl_En_Encount1/z_en_encount1.h | 2 +- .../actors/ovl_En_Encount4/z_en_encount4.c | 6 ++-- .../actors/ovl_En_Estone/z_en_estone.h | 2 +- src/overlays/actors/ovl_En_Fall/z_en_fall.c | 10 +++--- src/overlays/actors/ovl_En_Fall/z_en_fall.h | 2 +- src/overlays/actors/ovl_En_Fg/z_en_fg.h | 24 ++++++------- src/overlays/actors/ovl_En_Fish/z_en_fish.h | 6 ++-- .../actors/ovl_En_Fishing/z_en_fishing.c | 36 +++++++++---------- .../actors/ovl_En_Floormas/z_en_floormas.h | 6 ++-- src/overlays/actors/ovl_En_Fz/z_en_fz.h | 6 ++-- .../actors/ovl_En_Gakufu/z_en_gakufu.h | 4 +-- src/overlays/actors/ovl_En_Gb2/z_en_gb2.h | 6 ++-- src/overlays/actors/ovl_En_Ge1/z_en_ge1.c | 4 +-- src/overlays/actors/ovl_En_Gg/z_en_gg.h | 2 +- src/overlays/actors/ovl_En_Giant/z_en_giant.h | 2 +- .../actors/ovl_En_Ginko_Man/z_en_ginko_man.c | 2 +- src/overlays/actors/ovl_En_GirlA/z_en_girla.h | 20 +++++------ src/overlays/actors/ovl_En_Gk/z_en_gk.h | 6 ++-- src/overlays/actors/ovl_En_Go/z_en_go.h | 6 ++-- .../actors/ovl_En_Goroiwa/z_en_goroiwa.h | 24 ++++++------- .../ovl_En_Grasshopper/z_en_grasshopper.c | 10 +++--- .../ovl_En_Grasshopper/z_en_grasshopper.h | 2 +- src/overlays/actors/ovl_En_Gs/z_en_gs.h | 6 ++-- .../ovl_En_Guard_Nuts/z_en_guard_nuts.c | 2 +- src/overlays/actors/ovl_En_Hg/z_en_hg.c | 4 +-- src/overlays/actors/ovl_En_Hgo/z_en_hgo.c | 2 +- src/overlays/actors/ovl_En_Horse/z_en_horse.c | 24 ++++++------- src/overlays/actors/ovl_En_Horse/z_en_horse.h | 2 +- .../z_en_horse_game_check.h | 6 ++-- src/overlays/actors/ovl_En_Ik/z_en_ik.c | 3 +- src/overlays/actors/ovl_En_In/z_en_in.h | 2 +- src/overlays/actors/ovl_En_Jg/z_en_jg.c | 10 +++--- .../actors/ovl_En_Kakasi/z_en_kakasi.c | 18 +++++----- .../actors/ovl_En_Karebaba/z_en_karebaba.c | 10 +++--- .../actors/ovl_En_Karebaba/z_en_karebaba.h | 2 +- src/overlays/actors/ovl_En_Kusa/z_en_kusa.c | 4 +-- src/overlays/actors/ovl_En_Kusa/z_en_kusa.h | 4 +-- src/overlays/actors/ovl_En_Light/z_en_light.c | 6 ++-- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 4 +-- .../actors/ovl_En_Minifrog/z_en_minifrog.h | 6 ++-- .../actors/ovl_En_Minislime/z_en_minislime.c | 2 +- .../actors/ovl_En_Minislime/z_en_minislime.h | 8 ++--- .../actors/ovl_En_Mt_tag/z_en_mt_tag.c | 6 ++-- src/overlays/actors/ovl_En_Nb/z_en_nb.c | 2 +- src/overlays/actors/ovl_En_Nb/z_en_nb.h | 2 +- .../actors/ovl_En_Neo_Reeba/z_en_neo_reeba.c | 2 +- src/overlays/actors/ovl_En_Niw/z_en_niw.c | 6 ++-- src/overlays/actors/ovl_En_Niw/z_en_niw.h | 2 +- src/overlays/actors/ovl_En_Nwc/z_en_nwc.c | 16 ++++----- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 4 +-- src/overlays/actors/ovl_En_Owl/z_en_owl.h | 2 +- .../actors/ovl_En_Pametfrog/z_en_pametfrog.c | 12 +++---- .../actors/ovl_En_Pametfrog/z_en_pametfrog.h | 20 +++++------ src/overlays/actors/ovl_En_Part/z_en_part.h | 10 +++--- .../actors/ovl_En_Po_Fusen/z_en_po_fusen.c | 2 +- .../ovl_En_Po_Sisters/z_en_po_sisters.c | 2 +- .../ovl_En_Po_Sisters/z_en_po_sisters.h | 10 +++--- src/overlays/actors/ovl_En_Pp/z_en_pp.c | 8 ++--- src/overlays/actors/ovl_En_Pp/z_en_pp.h | 2 +- src/overlays/actors/ovl_En_Pst/z_en_pst.c | 2 +- src/overlays/actors/ovl_En_Pst/z_en_pst.h | 2 +- .../actors/ovl_En_Racedog/z_en_racedog.c | 14 ++++---- src/overlays/actors/ovl_En_Raf/z_en_raf.c | 4 +-- .../actors/ovl_En_Railgibud/z_en_railgibud.c | 8 ++--- src/overlays/actors/ovl_En_Rat/z_en_rat.c | 4 +-- src/overlays/actors/ovl_En_Rat/z_en_rat.h | 2 +- src/overlays/actors/ovl_En_Rd/z_en_rd.c | 4 +-- src/overlays/actors/ovl_En_Rd/z_en_rd.h | 2 +- src/overlays/actors/ovl_En_Rr/z_en_rr.h | 6 ++-- .../actors/ovl_En_Ruppecrow/z_en_ruppecrow.c | 10 +++--- .../actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c | 2 +- .../actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.h | 2 +- src/overlays/actors/ovl_En_Skb/z_en_skb.h | 4 +-- src/overlays/actors/ovl_En_Slime/z_en_slime.c | 2 +- src/overlays/actors/ovl_En_Slime/z_en_slime.h | 2 +- .../actors/ovl_En_Snowman/z_en_snowman.c | 4 +-- .../actors/ovl_En_Snowman/z_en_snowman.h | 2 +- src/overlays/actors/ovl_En_Sth/z_en_sth.c | 2 +- src/overlays/actors/ovl_En_Sth/z_en_sth.h | 4 +-- .../ovl_En_Stone_heishi/z_en_stone_heishi.c | 6 ++-- .../ovl_En_Stop_heishi/z_en_stop_heishi.c | 2 +- .../actors/ovl_En_Stream/z_en_stream.h | 4 +-- .../z_en_syateki_dekunuts.c | 4 +-- .../z_en_syateki_dekunuts.h | 2 +- .../ovl_En_Syateki_Man/z_en_syateki_man.c | 2 +- .../ovl_En_Syateki_Wf/z_en_syateki_wf.c | 2 +- .../ovl_En_Talk_Gibud/z_en_talk_gibud.c | 14 ++++---- .../actors/ovl_En_Tanron4/z_en_tanron4.c | 6 ++-- src/overlays/actors/ovl_En_Test2/z_en_test2.c | 2 +- src/overlays/actors/ovl_En_Test2/z_en_test2.h | 6 ++-- src/overlays/actors/ovl_En_Test6/z_en_test6.h | 6 ++-- .../actors/ovl_En_Time_Tag/z_en_time_tag.h | 2 +- src/overlays/actors/ovl_En_Tite/z_en_tite.h | 6 ++-- src/overlays/actors/ovl_En_Tk/z_en_tk.c | 6 ++-- .../actors/ovl_En_Torch2/z_en_torch2.h | 4 +-- .../actors/ovl_En_Viewer/z_en_viewer.c | 6 ++-- .../actors/ovl_En_Viewer/z_en_viewer.h | 8 ++--- .../actors/ovl_En_Wallmas/z_en_wallmas.h | 6 ++-- .../ovl_En_Water_Effect/z_en_water_effect.h | 2 +- .../ovl_En_Weather_Tag/z_en_weather_tag.h | 2 +- src/overlays/actors/ovl_En_Wiz/z_en_wiz.c | 18 +++++----- src/overlays/actors/ovl_En_Wiz/z_en_wiz.h | 2 +- .../actors/ovl_En_Wiz_Brock/z_en_wiz_brock.h | 2 +- .../actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c | 2 +- src/overlays/actors/ovl_En_Zob/z_en_zob.h | 6 ++-- src/overlays/actors/ovl_En_Zod/z_en_zod.c | 4 +-- src/overlays/actors/ovl_En_Zod/z_en_zod.h | 8 ++--- .../actors/ovl_En_Zoraegg/z_en_zoraegg.h | 6 ++-- src/overlays/actors/ovl_En_Zos/z_en_zos.h | 6 ++-- .../actors/ovl_Item_B_Heart/z_item_b_heart.h | 6 ++-- src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h | 4 +-- .../actors/ovl_Obj_Armos/z_obj_armos.h | 6 ++-- src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h | 10 +++--- .../actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c | 10 +++--- .../actors/ovl_Obj_Etcetera/z_obj_etcetera.h | 2 +- .../ovl_Obj_Fireshield/z_obj_fireshield.c | 4 +-- .../actors/ovl_Obj_Hunsui/z_obj_hunsui.c | 10 +++--- .../actors/ovl_Obj_Hunsui/z_obj_hunsui.h | 6 ++-- .../ovl_Obj_Jgame_Light/z_obj_jgame_light.c | 6 ++-- .../ovl_Obj_Kendo_Kanban/z_obj_kendo_kanban.c | 2 +- .../ovl_Obj_Lightblock/z_obj_lightblock.c | 10 +++--- .../actors/ovl_Obj_Mure3/z_obj_mure3.c | 10 +++--- .../actors/ovl_Obj_Mure3/z_obj_mure3.h | 4 +-- .../ovl_Obj_Ocarinalift/z_obj_ocarinalift.c | 12 +++---- .../ovl_Obj_Ocarinalift/z_obj_ocarinalift.h | 8 ++--- .../actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h | 6 ++-- .../actors/ovl_Obj_Pzlblock/z_obj_pzlblock.c | 2 +- .../actors/ovl_Obj_Rotlift/z_obj_rotlift.h | 2 +- .../actors/ovl_Obj_Snowball/z_obj_snowball.c | 8 ++--- .../ovl_Obj_Spidertent/z_obj_spidertent.c | 4 +-- .../ovl_Obj_Tokei_Turret/z_obj_tokei_turret.h | 2 +- .../actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h | 2 +- .../actors/ovl_Obj_Tsubo/z_obj_tsubo.c | 3 +- .../actors/ovl_Obj_Usiyane/z_obj_usiyane.h | 6 ++-- .../ovl_Obj_Y2shutter/z_obj_y2shutter.h | 4 +-- .../actors/ovl_Oceff_Storm/z_oceff_storm.h | 2 +- .../actors/ovl_player_actor/z_player.c | 2 +- .../ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c | 2 +- .../ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h | 2 +- .../z_eff_ss_fhg_flash.h | 36 +++++++++---------- .../ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c | 8 ++--- .../ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h | 4 +-- src/overlays/gamestates/ovl_select/z_select.h | 6 ++-- .../ovl_kaleido_scope/z_kaleido_collect.c | 2 +- .../ovl_kaleido_scope/z_kaleido_debug.c | 2 +- 254 files changed, 765 insertions(+), 767 deletions(-) diff --git a/Makefile b/Makefile index 8782c02ad..89eeb21d2 100644 --- a/Makefile +++ b/Makefile @@ -122,8 +122,8 @@ OPTFLAGS := -O2 -g3 ASFLAGS := -march=vr4300 -32 -Iinclude MIPS_VERSION := -mips2 -# we support Microsoft extensions such as anonymous structs, which the compiler does support but warns for their usage. Surpress the warnings with -woff. -CFLAGS += -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(IINC) -nostdinc -Wab,-r4300_mul -woff 624,649,838,712,516 +# we support Microsoft extensions such as anonymous structs, which the compiler does support but warns for their usage. Suppress the warnings with -woff. +CFLAGS += -G 0 -non_shared -fullwarn -verbose -Xcpluscomm $(IINC) -nostdinc -Wab,-r4300_mul -woff 649,838,712,516 # Use relocations and abi fpr names in the dump OBJDUMP_FLAGS := --disassemble --reloc --disassemble-zeroes -Mreg-names=32 diff --git a/include/z64.h b/include/z64.h index a83001a01..6418b43ca 100644 --- a/include/z64.h +++ b/include/z64.h @@ -657,7 +657,7 @@ typedef struct { #define FLASHROM_REQUEST_WRITE 1 #define FLASHROM_REQUEST_READ 2 -enum fram_command { +typedef enum framCommand { /* Does nothing for FRAM_COMMAND_SET_MODE_READ_AND_STATUS, FRAM_MODE_NOP, FRAM_COMMAND_SET_MODE_STATUS_AND_STATUS Initializes fram to 0xFF in FRAM_MODE_ERASE Writes Contents in FLASHRAM_MODE_WRITE @@ -681,15 +681,15 @@ enum fram_command { FRAM_COMMAND_SET_MODE_READ_AND_STATUS = 0xF0000000, /* unk */ FRAM_COMMAND_UNK_ERASE_OPERATION = 0x3C000000 -}; +} framCommand; -enum fram_mode { - FRAM_MODE_NOP = 0, - FRAM_MODE_ERASE, - FRAM_MODE_WRITE, - FRAM_MODE_READ, - FRAM_MODE_STATUS -}; +typedef enum framMode { + /* 0 */ FRAM_MODE_NOP, + /* 1 */ FRAM_MODE_ERASE, + /* 2 */ FRAM_MODE_WRITE, + /* 3 */ FRAM_MODE_READ, + /* 4 */ FRAM_MODE_STATUS +} framMode; typedef enum { /* 0 */ VI_MODE_EDIT_STATE_INACTIVE, diff --git a/include/z64actor.h b/include/z64actor.h index f58716401..3051f2c6e 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -317,7 +317,7 @@ typedef struct EnAObj { typedef enum { /* 0 */ AOBJ_SIGNPOST_OBLONG, - /* 1 */ AOBJ_SIGNPOST_ARROW, + /* 1 */ AOBJ_SIGNPOST_ARROW } AObjType; #define AOBJ_GET_TEXTID(thisx) ((((thisx)->params >> 8) & 0xFF) | 0x300) diff --git a/include/z64audio.h b/include/z64audio.h index a37760566..9b077cf1a 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -105,7 +105,7 @@ typedef enum { /* 1 */ SOUNDMODE_HEADSET, /* 2 */ SOUNDMODE_SURROUND_EXTERNAL, /* 3 */ SOUNDMODE_MONO, - /* 4 */ SOUNDMODE_SURROUND, + /* 4 */ SOUNDMODE_SURROUND } SoundMode; typedef enum { diff --git a/include/z64camera.h b/include/z64camera.h index 54cf748ac..ccdee8811 100644 --- a/include/z64camera.h +++ b/include/z64camera.h @@ -361,7 +361,7 @@ typedef enum { /* 0x12 */ CAM_DATA_18, /* 0x13 */ CAM_DATA_19, /* 0x14 */ CAM_DATA_20, - /* 0x15 */ CAM_DATA_21, + /* 0x15 */ CAM_DATA_21 } CameraDataType; /*================================ diff --git a/include/z64item.h b/include/z64item.h index 345a22897..55cbb337f 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -19,7 +19,7 @@ typedef enum { /* 2 */ EQUIP_VALUE_SWORD_RAZOR, /* 3 */ EQUIP_VALUE_SWORD_GILDED, /* 4 */ EQUIP_VALUE_SWORD_DIETY, - /* 5 */ EQUIP_VALUE_SWORD_MAX, + /* 5 */ EQUIP_VALUE_SWORD_MAX } EquipValueSword; typedef enum { diff --git a/include/z64math.h b/include/z64math.h index 8df81454a..cd5c1db20 100644 --- a/include/z64math.h +++ b/include/z64math.h @@ -105,13 +105,13 @@ typedef VecSphGeo VecGeo; typedef enum { /* 0 */ OLIB_ADD_COPY, // Copy `b` to dest /* 1 */ OLIB_ADD_OFFSET, // Add `a` and `b` to dest, and also add the yaw of `a` to the dest - /* 2 */ OLIB_ADD, // Add `a` and `b` to dest + /* 2 */ OLIB_ADD // Add `a` and `b` to dest } OlibVec3fAdd; typedef enum { /* 0 */ OLIB_DIFF_COPY, // Copy `b` to dest /* 1 */ OLIB_DIFF_OFFSET, // Sub `a` and `b` to dest, and also subs the yaw of `a` to the dest - /* 2 */ OLIB_DIFF, // Sub `a` and `b` to dest + /* 2 */ OLIB_DIFF // Sub `a` and `b` to dest } OlibVec3fDiff; #define LERPIMP(v0, v1, t) ((v0) + (((v1) - (v0)) * (t))) diff --git a/include/z64player.h b/include/z64player.h index d9c80384f..f10984216 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -962,7 +962,7 @@ typedef enum PlayerUnkAA5 { /* 2 */ PLAYER_UNKAA5_2, /* 3 */ PLAYER_UNKAA5_3, /* 4 */ PLAYER_UNKAA5_4, - /* 5 */ PLAYER_UNKAA5_5, + /* 5 */ PLAYER_UNKAA5_5 } PlayerUnkAA5; typedef void (*PlayerActionFunc)(struct Player* this, struct PlayState* play); diff --git a/include/z64save.h b/include/z64save.h index cea6ffa46..805b62e5a 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -87,7 +87,7 @@ typedef enum { /* 5 */ TIMER_ID_ENV_HAZARD, // environmental hazard timer (underwater or hot room) /* 6 */ TIMER_ID_GORON_RACE_UNUSED, /* 7 */ TIMER_ID_MAX, - /* 99 */ TIMER_ID_NONE = 99, + /* 99 */ TIMER_ID_NONE = 99 } TimerId; typedef enum { @@ -1569,7 +1569,7 @@ typedef enum { /* 0 */ DUNGEON_INDEX_WOODFALL_TEMPLE, /* 1 */ DUNGEON_INDEX_SNOWHEAD_TEMPLE, /* 2 */ DUNGEON_INDEX_GREAT_BAY_TEMPLE, - /* 3 */ DUNGEON_INDEX_STONE_TOWER_TEMPLE, // Also applies to Inverted Stone Tower Temple + /* 3 */ DUNGEON_INDEX_STONE_TOWER_TEMPLE // Also applies to Inverted Stone Tower Temple } DungeonIndex; void Sram_ActivateOwl(u8 owlId); diff --git a/include/z64schedule.h b/include/z64schedule.h index f3a703f3c..07a942e90 100644 --- a/include/z64schedule.h +++ b/include/z64schedule.h @@ -50,13 +50,13 @@ typedef enum { /* 0x0F */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_S, // Branches if the current time is less than the command time, short range branch /* 0x10 */ SCHEDULE_CMD_ID_CHECK_BEFORE_TIME_L, // Branches if the current time is less than the command time, long range branch /* 0x11 */ SCHEDULE_CMD_ID_BRANCH_S, // Always branch, short range branch - /* 0x12 */ SCHEDULE_CMD_ID_BRANCH_L, // Always branch, long range branch + /* 0x12 */ SCHEDULE_CMD_ID_BRANCH_L // Always branch, long range branch } ScheduleCommandId; typedef enum { /* 0 */ SCHEDULE_CHECK_MISC_ROOM_KEY, /* 1 */ SCHEDULE_CHECK_MISC_LETTER_TO_KAFEI, - /* 2 */ SCHEDULE_CHECK_MISC_MASK_ROMANI, + /* 2 */ SCHEDULE_CHECK_MISC_MASK_ROMANI } ScheduleCheckMisc; typedef struct { diff --git a/include/z64transition.h b/include/z64transition.h index e223d9b58..fe6027a9f 100644 --- a/include/z64transition.h +++ b/include/z64transition.h @@ -68,7 +68,7 @@ typedef struct { typedef enum { /* 1 */ TRANS_INSTANCE_TYPE_FILL_OUT = 1, - /* 2 */ TRANS_INSTANCE_TYPE_FILL_IN, + /* 2 */ TRANS_INSTANCE_TYPE_FILL_IN } TransitionInstanceType; #define TRANS_INSTANCE_TYPE_FADE_FLASH 3 diff --git a/include/z_fireobj.h b/include/z_fireobj.h index 7bd58d80a..6fe0639bc 100644 --- a/include/z_fireobj.h +++ b/include/z_fireobj.h @@ -61,7 +61,7 @@ typedef enum FireState { /* 0 */ FIRE_STATE_GROWING, /* 1 */ FIRE_STATE_SHRINKING, /* 2 */ FIRE_STATE_FULLY_LIT, - /* 3 */ FIRE_STATE_NOT_LIT, + /* 3 */ FIRE_STATE_NOT_LIT } FireState; #define FIRE_FLAG_WATER_EXTINGUISHABLE (1 << 0) diff --git a/src/audio/code_8019AF00.c b/src/audio/code_8019AF00.c index e88135b8d..40c457cb3 100644 --- a/src/audio/code_8019AF00.c +++ b/src/audio/code_8019AF00.c @@ -9,7 +9,7 @@ typedef struct { /* 0x0 */ Vec3f* pos; /* 0x4 */ f32 freqScale; /* 0x8 */ s8 reverbAdd; -} SfxSettings; // size = 0x9 +} SfxSettings; // size = 0xC typedef struct { /* 0x0 */ f32 volume; @@ -20,7 +20,7 @@ typedef struct { /* 0xB */ u8 filter; /* 0xC */ u8 combFilterGain; /* 0xD */ u8 zVolume; -} SfxChannelState; // size = 0xE +} SfxChannelState; // size = 0x10 typedef enum { /* 0x0 */ SFX_CHANNEL_PLAYER0, // SfxPlayerBank @@ -50,7 +50,7 @@ typedef enum { /* 0x4 */ SEQ_PLAYER_IO_PORT_4, /* 0x5 */ SEQ_PLAYER_IO_PORT_5, /* 0x6 */ SEQ_PLAYER_IO_PORT_6, - /* 0x7 */ SEQ_PLAYER_IO_PORT_7, + /* 0x7 */ SEQ_PLAYER_IO_PORT_7 } SeqPlayerIOPort; typedef struct { diff --git a/src/audio/lib/heap.c b/src/audio/lib/heap.c index 1ea26952b..52533da4d 100644 --- a/src/audio/lib/heap.c +++ b/src/audio/lib/heap.c @@ -1386,11 +1386,11 @@ void AudioHeap_DiscardSampleCaches(void) { } typedef struct { - uintptr_t oldAddr; - uintptr_t newAddr; - size_t size; - u8 newMedium; -} StorageChange; + /* 0x0 */ uintptr_t oldAddr; + /* 0x4 */ uintptr_t newAddr; + /* 0x8 */ size_t size; + /* 0xC */ u8 newMedium; +} StorageChange; // size = 0x10 void AudioHeap_ChangeStorage(StorageChange* change, Sample* sample) { if ((sample != NULL) && ((sample->medium == change->newMedium) || (D_801FD120 != 1)) && diff --git a/src/audio/lib/load.c b/src/audio/lib/load.c index 7df46952b..8016e9b6a 100644 --- a/src/audio/lib/load.c +++ b/src/audio/lib/load.c @@ -80,10 +80,10 @@ typedef enum { #define OS_MESG_PRI_HIGH 1 typedef struct { - u16 numInstruments; - u16 numDrums; - u16 numSfx; -} UnloadedFonts; + /* 0x0 */ u16 numInstruments; + /* 0x2 */ u16 numDrums; + /* 0x4 */ u16 numSfx; +} UnloadedFonts; // size = 0x6 OSMesgQueue sScriptLoadQueue; OSMesg sScriptLoadMesgBuf[0x10]; diff --git a/src/boot_O2_g3/yaz0.c b/src/boot_O2_g3/yaz0.c index aa7ecdfe1..76f990659 100644 --- a/src/boot_O2_g3/yaz0.c +++ b/src/boot_O2_g3/yaz0.c @@ -58,11 +58,11 @@ void* Yaz0_NextDMA(void* curSrcPos) { } typedef struct { - /* 0x00 */ u32 magic; // Yaz0 - /* 0x04 */ u32 decSize; - /* 0x08 */ u32 compInfoOffset; // only used in mio0 - /* 0x0C */ u32 uncompDataOffset; // only used in mio0 -} Yaz0Header; // size = 0x10 + /* 0x0 */ u32 magic; // Yaz0 + /* 0x4 */ u32 decSize; + /* 0x8 */ u32 compInfoOffset; // only used in mio0 + /* 0xC */ u32 uncompDataOffset; // only used in mio0 +} Yaz0Header; // size = 0x10 #define YAZ0_MAGIC 0x59617A30 // "Yaz0" diff --git a/src/code/sys_cmpdma.c b/src/code/sys_cmpdma.c index b2a17d547..715892b49 100644 --- a/src/code/sys_cmpdma.c +++ b/src/code/sys_cmpdma.c @@ -2,7 +2,7 @@ #include "system_malloc.h" typedef struct { - union { + /* 0x0 */ union { u32 dmaWord[2]; u32 dataStart; u32 dataSize; @@ -11,7 +11,7 @@ typedef struct { u32 end; } offset; }; -} CmpDmaBuffer; +} CmpDmaBuffer; // size = 0x8 CmpDmaBuffer sDmaBuffer; diff --git a/src/code/z_draw.c b/src/code/z_draw.c index ace56a965..e6a814e2a 100644 --- a/src/code/z_draw.c +++ b/src/code/z_draw.c @@ -115,9 +115,9 @@ void GetItem_DrawWallet(PlayState* play, s16 drawId); void GetItem_DrawRemains(PlayState* play, s16 drawId); typedef struct { - /* 0x00 */ void (*drawFunc)(PlayState*, s16); - /* 0x04 */ void* drawResources[8]; // Either display lists (Gfx*) or matrices (Mtx*) -} DrawItemTableEntry; // size = 0x24 + /* 0x0 */ void (*drawFunc)(PlayState*, s16); + /* 0x4 */ void* drawResources[8]; // Either display lists (Gfx*) or matrices (Mtx*) +} DrawItemTableEntry; // size = 0x24 static DrawItemTableEntry sDrawItemTable[] = { // GID_BOTTLE, OBJECT_GI_BOTTLE diff --git a/src/code/z_eventmgr.c b/src/code/z_eventmgr.c index e3defb402..121957396 100644 --- a/src/code/z_eventmgr.c +++ b/src/code/z_eventmgr.c @@ -36,7 +36,7 @@ ActorCutscene sGlobalCutsceneList[] = { typedef enum { /* 0 */ CS_START_0, /* 1 */ CS_START_1, - /* 2 */ CS_START_2, + /* 2 */ CS_START_2 } ActorCutsceneStartMethod; typedef struct { diff --git a/src/code/z_fbdemo_circle.c b/src/code/z_fbdemo_circle.c index addfe6b67..185373e06 100644 --- a/src/code/z_fbdemo_circle.c +++ b/src/code/z_fbdemo_circle.c @@ -2,7 +2,7 @@ typedef enum { /* 0 */ TRANS_CIRCLE_DIR_IN, - /* 1 */ TRANS_CIRCLE_DIR_OUT, + /* 1 */ TRANS_CIRCLE_DIR_OUT } TransitionCircleDirection; Gfx sTransCircleSetupDL[] = { diff --git a/src/code/z_parameter.c b/src/code/z_parameter.c index f8f28f4b8..e63c9d8e5 100644 --- a/src/code/z_parameter.c +++ b/src/code/z_parameter.c @@ -23,11 +23,11 @@ typedef enum { #define DO_ACTION_TEX_SIZE ((DO_ACTION_TEX_WIDTH * DO_ACTION_TEX_HEIGHT) / 2) // (sizeof(gCheckDoActionENGTex)) typedef struct { - /* 0x00 */ u8 scene; - /* 0x01 */ u8 flags1; - /* 0x02 */ u8 flags2; - /* 0x03 */ u8 flags3; -} RestrictionFlags; + /* 0x0 */ u8 scene; + /* 0x1 */ u8 flags1; + /* 0x2 */ u8 flags2; + /* 0x3 */ u8 flags3; +} RestrictionFlags; // size = 0x4 Input sPostmanTimerInput[MAXCONTROLLERS]; diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 44b1fd986..2c0a79d21 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -270,7 +270,7 @@ void func_80122C20(PlayState* play, struct_80122D44_arg1* arg1) { typedef struct { /* 0x0 */ Color_RGB8 color; /* 0x4 */ Gfx* dList; -} struct_801BFDD0; // size = 0x08 +} struct_801BFDD0; // size = 0x8 struct_801BFDD0 D_801BFDD0[] = { { { 180, 200, 255 }, gLinkGoronCurledDL }, @@ -1643,9 +1643,9 @@ TexturePtr sPlayerMouthTextures[PLAYER_MOUTH_MAX] = { }; typedef struct PlayerFaceIndices { - /* 0x00 */ u8 eyeIndex; - /* 0x01 */ u8 mouthIndex; -} PlayerFaceIndices; // size = 0x02 + /* 0x0 */ u8 eyeIndex; + /* 0x1 */ u8 mouthIndex; +} PlayerFaceIndices; // size = 0x2 PlayerFaceIndices sPlayerFaces[] = { { PLAYER_EYES_OPEN, PLAYER_MOUTH_CLOSED }, // PLAYER_FACE_0 diff --git a/src/code/z_room.c b/src/code/z_room.c index 9bc6e12ee..78eb5f98e 100644 --- a/src/code/z_room.c +++ b/src/code/z_room.c @@ -53,10 +53,10 @@ typedef enum { } RoomCullableDebugMode; typedef struct RoomShapeCullableEntryLinked { - /* 0x00 */ RoomShapeCullableEntry* entry; - /* 0x04 */ f32 boundsNearZ; - /* 0x08 */ struct RoomShapeCullableEntryLinked* prev; - /* 0x0C */ struct RoomShapeCullableEntryLinked* next; + /* 0x0 */ RoomShapeCullableEntry* entry; + /* 0x4 */ f32 boundsNearZ; + /* 0x8 */ struct RoomShapeCullableEntryLinked* prev; + /* 0xC */ struct RoomShapeCullableEntryLinked* next; } RoomShapeCullableEntryLinked; // size = 0x10 #define ROOM_SHAPE_CULLABLE_MAX_ENTRIES 128 diff --git a/src/libultra/flash/osFlash.c b/src/libultra/flash/osFlash.c index cd4420c4a..f8649f4fd 100644 --- a/src/libultra/flash/osFlash.c +++ b/src/libultra/flash/osFlash.c @@ -10,8 +10,8 @@ s32 __osFlashVersion; UNK_TYPE1 D_801FD0FC[0x14]; typedef enum { - FLASH_OLD, - FLASH_NEW, + /* 0 */ FLASH_OLD, + /* 1 */ FLASH_NEW } FlashVersion; u32 osFlashGetAddr(u32 pageNum) { diff --git a/src/libultra/os/initialize.c b/src/libultra/os/initialize.c index 776191227..4fabb4c4d 100644 --- a/src/libultra/os/initialize.c +++ b/src/libultra/os/initialize.c @@ -3,11 +3,11 @@ #define COLD_RESET 0 typedef struct { - /* 0x0 */ u32 ins_00; // lui k0, 0x8000 - /* 0x4 */ u32 ins_04; // addiu k0, k0, 0x39E0 - /* 0x8 */ u32 ins_08; // jr k0 ; __osException - /* 0xC */ u32 ins_0C; // nop -} struct_exceptionPreamble; + /* 0x0 */ u32 ins_00; // lui k0, 0x8000 + /* 0x4 */ u32 ins_04; // addiu k0, k0, 0x39E0 + /* 0x8 */ u32 ins_08; // jr k0 ; __osException + /* 0xC */ u32 ins_0C; // nop +} struct_exceptionPreamble; // size = 0x10 u64 osClockRate = OS_CLOCK_RATE; s32 osViClock = VI_NTSC_CLOCK; diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c index ef35a34ed..737d480ad 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c @@ -60,7 +60,7 @@ typedef struct { /* 0x14 */ BgBreakwallUnkFunc unk_14; /* 0x18 */ BgBreakwallUnkFunc2 unk_18; /* 0x1C */ ActorFunc unk_1C; -} BgBreakwallStruct; +} BgBreakwallStruct; // size = 0x20 BgBreakwallStruct D_808B8140[] = { { OBJECT_OMOYA_OBJ, object_omoya_obj_DL_0001A0, NULL, NULL, NULL, func_808B7380, func_808B77D0, NULL }, diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h index bcdda2327..c332fe82c 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h @@ -12,11 +12,11 @@ typedef void (*BgBreakwallUnkFunc2)(struct BgBreakwall*, PlayState*); #define BGBREAKWALL_GET_F(thisx) ((thisx)-> params & 0xF) #define BGBREAKWALL_SWITCHFLAG(thisx) (((thisx)-> params & 0xFE00) >> 9) -enum { +typedef enum { /* 7 */ BGBREAKWALL_F_7 = 7, /* 9 */ BGBREAKWALL_F_9 = 9, - /* 11 */ BGBREAKWALL_F_11 = 11, -}; + /* 11 */ BGBREAKWALL_F_11 = 11 +} BgBreakwallParam; typedef struct BgBreakwall { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.h b/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.h index afea1bf0d..d59bfd3ea 100644 --- a/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.h +++ b/src/overlays/actors/ovl_Bg_Ctower_Gear/z_bg_ctower_gear.h @@ -9,10 +9,10 @@ struct BgCtowerGear; #define BGCTOWERGEAR_GET_TYPE(thisx) ((thisx)->params & 3) typedef enum { - /* 0x0 */ BGCTOWERGEAR_CEILING_COG, - /* 0x1 */ BGCTOWERGEAR_CENTER_COG, - /* 0x2 */ BGCTOWERGEAR_WATER_WHEEL, - /* 0x3 */ BGCTOWERGEAR_ORGAN + /* 0 */ BGCTOWERGEAR_CEILING_COG, + /* 1 */ BGCTOWERGEAR_CENTER_COG, + /* 2 */ BGCTOWERGEAR_WATER_WHEEL, + /* 3 */ BGCTOWERGEAR_ORGAN } BgCtowerGearType; typedef struct BgCtowerGear { diff --git a/src/overlays/actors/ovl_Bg_Ctower_Rot/z_bg_ctower_rot.h b/src/overlays/actors/ovl_Bg_Ctower_Rot/z_bg_ctower_rot.h index 52a905ed5..a06934669 100644 --- a/src/overlays/actors/ovl_Bg_Ctower_Rot/z_bg_ctower_rot.h +++ b/src/overlays/actors/ovl_Bg_Ctower_Rot/z_bg_ctower_rot.h @@ -11,7 +11,7 @@ typedef enum { /* 0 */ BGCTOWERROT_CORRIDOR, /* 1 */ BGCTOWERROT_STONE_DOOR_MAIN, // Main door controls cutscene flow (updating Link fields and playing sounds). // It is the one on the left when entering from the Lost Woods - /* 2 */ BGCTOWERROT_STONE_DOOR, + /* 2 */ BGCTOWERROT_STONE_DOOR } BgCtowerRotType; typedef struct BgCtowerRot { diff --git a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c index de7e7eb32..6d13f4ac3 100644 --- a/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c +++ b/src/overlays/actors/ovl_Bg_Dblue_Movebg/z_bg_dblue_movebg.c @@ -34,9 +34,9 @@ void func_80A2B308(Actor* thisx, PlayState* play); BgDblueMovebg* D_80A2BBF0; typedef struct { - u8 unk_00; - u8 unk_01; -} BgDblueMovebgUnkStruct; + /* 0x0 */ u8 unk_00; + /* 0x1 */ u8 unk_01; +} BgDblueMovebgUnkStruct; // size = 0x2 BgDblueMovebgUnkStruct D_80A2BBF4; diff --git a/src/overlays/actors/ovl_Bg_Fire_Wall/z_bg_fire_wall.h b/src/overlays/actors/ovl_Bg_Fire_Wall/z_bg_fire_wall.h index af5a29923..bf5300758 100644 --- a/src/overlays/actors/ovl_Bg_Fire_Wall/z_bg_fire_wall.h +++ b/src/overlays/actors/ovl_Bg_Fire_Wall/z_bg_fire_wall.h @@ -8,9 +8,9 @@ struct BgFireWall; typedef void (*BgFireWallActionFunc)(struct BgFireWall*, PlayState*); typedef enum { - /* 0 */ BGFIREWALL_PARAMS_0, - /* 1 */ BGFIREWALL_PARAMS_1, -} BgFireWallParams; + /* 0 */ BGFIREWALL_PARAM_0, + /* 1 */ BGFIREWALL_PARAM_1 +} BgFireWallParam; typedef struct BgFireWall { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c b/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c index 942a544ff..66666b82b 100644 --- a/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c +++ b/src/overlays/actors/ovl_Bg_Hakugin_Post/z_bg_hakugin_post.c @@ -52,9 +52,9 @@ ActorInit Bg_Hakugin_Post_InitVars = { }; typedef struct { - f32 unk_00; - u8 unk_04; -} BgHakuginPostUnkStruct3; + /* 0x0 */ f32 unk_00; + /* 0x4 */ u8 unk_04; +} BgHakuginPostUnkStruct3; // size = 0x8 static BgHakuginPostUnkStruct3 D_80A9D880[] = { { 1200.0f, false }, { 600.0f, false }, { 900.0f, false }, { 870.0f, false }, diff --git a/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c b/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c index bcc662c9f..2d8fc2683 100644 --- a/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c +++ b/src/overlays/actors/ovl_Bg_Hakugin_Switch/z_bg_hakugin_switch.c @@ -78,7 +78,7 @@ typedef struct { /* 0x0C */ f32 unk_C; /* 0x10 */ Gfx* unk_10; /* 0x14 */ u8 unk_14; -} BgHakuginSwitchStruct; +} BgHakuginSwitchStruct; // size = 0x18 BgHakuginSwitchStruct D_80B1688C[] = { { -156.0f, -178.0f, 6.0f, 10.0f, object_goronswitch_DL_000268, 0xB4 }, diff --git a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c index 8a90a6809..ad2d9fbdd 100644 --- a/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c +++ b/src/overlays/actors/ovl_Bg_Ikana_Rotaryroom/z_bg_ikana_rotaryroom.c @@ -116,9 +116,9 @@ Vec3f D_80B8216C = { 225.0f, -280.0f, -210.0f }; Vec3f D_80B82178 = { -255.0f, -280.0f, 210.0f }; typedef struct { - /* 0x00 */ s8 unk_00; - /* 0x01 */ s8 unk_01; - /* 0x04 */ Vec3f unk_04; + /* 0x0 */ s8 unk_00; + /* 0x1 */ s8 unk_01; + /* 0x4 */ Vec3f unk_04; } BgIkanaRotaryroomStruct4; // size = 0x10 BgIkanaRotaryroomStruct4 D_80B82184[2][2] = { diff --git a/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.h b/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.h index beeeb0b81..643be076c 100644 --- a/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.h +++ b/src/overlays/actors/ovl_Bg_Iknv_Doukutu/z_bg_iknv_doukutu.h @@ -9,11 +9,11 @@ typedef void (*BgIknvDoukutuActionFunc)(struct BgIknvDoukutu*, PlayState*); #define BGIKNVDOUKUTU_GET_F(thisx) ((thisx)->params & 0xF) -enum { - BGIKNVDOUKUTU_F_0, - BGIKNVDOUKUTU_F_1, - BGIKNVDOUKUTU_F_2, -}; +typedef enum { + /* 0 */ BGIKNVDOUKUTU_F_0, + /* 1 */ BGIKNVDOUKUTU_F_1, + /* 2 */ BGIKNVDOUKUTU_F_2 +} BgIknvDoukutuParam; typedef struct BgIknvDoukutu { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.h b/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.h index a5c01165d..266ec81f2 100644 --- a/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.h +++ b/src/overlays/actors/ovl_Bg_Iknv_Obj/z_bg_iknv_obj.h @@ -19,7 +19,7 @@ typedef struct BgIknvObj { typedef enum { /* 0 */ IKNV_OBJ_WATERWHEEL, /* 1 */ IKNV_OBJ_RAISED_DOOR, // defunct door covering entrance to Stone Tower - /* 2 */ IKNV_OBJ_SAKON_DOOR, // door to Sakon's Hideout + /* 2 */ IKNV_OBJ_SAKON_DOOR // door to Sakon's Hideout } BgIknvObjType; #endif // Z_BG_IKNV_OBJ_H diff --git a/src/overlays/actors/ovl_Bg_Ladder/z_bg_ladder.h b/src/overlays/actors/ovl_Bg_Ladder/z_bg_ladder.h index e4cd15c15..f920c18eb 100644 --- a/src/overlays/actors/ovl_Bg_Ladder/z_bg_ladder.h +++ b/src/overlays/actors/ovl_Bg_Ladder/z_bg_ladder.h @@ -21,7 +21,7 @@ typedef enum { /* 0 */ LADDER_SIZE_12RUNG, /* 1 */ LADDER_SIZE_16RUNG, /* 2 */ LADDER_SIZE_20RUNG, - /* 3 */ LADDER_SIZE_24RUNG, + /* 3 */ LADDER_SIZE_24RUNG } BgLadderSize; #endif // Z_BG_LADDER_H diff --git a/src/overlays/actors/ovl_Bg_Last_Bwall/z_bg_last_bwall.h b/src/overlays/actors/ovl_Bg_Last_Bwall/z_bg_last_bwall.h index e6d752c28..cae36be27 100644 --- a/src/overlays/actors/ovl_Bg_Last_Bwall/z_bg_last_bwall.h +++ b/src/overlays/actors/ovl_Bg_Last_Bwall/z_bg_last_bwall.h @@ -12,8 +12,8 @@ typedef void (*BgLastBwallActionFunc)(struct BgLastBwall*, PlayState*); #define BGLASTBWALL_GET_TYPE(thisx) (((thisx)->params >> 0xC) & 0xF) typedef enum { - BGLASTBWALL_TYPE_0 = 0, - BGLASTBWALL_TYPE_1 = 1, + /* 0 */ BGLASTBWALL_TYPE_0, + /* 1 */ BGLASTBWALL_TYPE_1 } BgLastBwallType; typedef struct BgLastBwall { diff --git a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.h b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.h index 0e377f539..d9f4a1ece 100644 --- a/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.h +++ b/src/overlays/actors/ovl_Bg_Numa_Hana/z_bg_numa_hana.h @@ -9,7 +9,7 @@ typedef enum { /* 0 */ BG_NUMA_HANA_TYPE_NORMAL, - /* 1 */ BG_NUMA_HANA_TYPE_OPEN_FLOWER_COLLISION, + /* 1 */ BG_NUMA_HANA_TYPE_OPEN_FLOWER_COLLISION } BgNumaHanaType; struct BgNumaHana; diff --git a/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c b/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c index 119c3854a..e23504231 100644 --- a/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c +++ b/src/overlays/actors/ovl_Bg_Open_Shutter/z_bg_open_shutter.c @@ -23,8 +23,8 @@ void func_80ACAE5C(BgOpenShutter* this, PlayState* play); void func_80ACAEF0(BgOpenShutter* this, PlayState* play); typedef enum { - /* 0x1 */ BGOPENSHUTTER_DOOR_OPEN = 1, - /* 0x2 */ BGOPENSHUTTER_DOOR_CLOSED, + /* 1 */ BGOPENSHUTTER_DOOR_OPEN = 1, + /* 2 */ BGOPENSHUTTER_DOOR_CLOSED } BGOpenShutterDoorState; ActorInit Bg_Open_Shutter_InitVars = { diff --git a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h index fe29e34cb..ae35ac98c 100644 --- a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h +++ b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.h @@ -7,12 +7,12 @@ #define BG_UMAJUMP_GET_TYPE(thisx) ((thisx)->params & 0xFF) typedef enum { - BG_UMAJUMP_TYPE_1 = 1, - BG_UMAJUMP_TYPE_2, - BG_UMAJUMP_TYPE_3, - BG_UMAJUMP_TYPE_4, - BG_UMAJUMP_TYPE_5, - BG_UMAJUMP_TYPE_6, + /* 1 */ BG_UMAJUMP_TYPE_1 = 1, + /* 2 */ BG_UMAJUMP_TYPE_2, + /* 3 */ BG_UMAJUMP_TYPE_3, + /* 4 */ BG_UMAJUMP_TYPE_4, + /* 5 */ BG_UMAJUMP_TYPE_5, + /* 6 */ BG_UMAJUMP_TYPE_6 } BgUmaJumpType; struct BgUmajump; diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.h b/src/overlays/actors/ovl_Boss_02/z_boss_02.h index e7efc1199..4fbd8b471 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.h +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.h @@ -27,15 +27,15 @@ typedef enum { /* 1 */ TWINMOLD_EFFECT_SAND, // The sand kicked up when Twinmold touches the ground /* 2 */ TWINMOLD_EFFECT_BLACK_DUST, // Unused /* 3 */ TWINMOLD_EFFECT_FRAGMENT, // The fragments that fly off when the parts of Twinmold explode - /* 4 */ TWINMOLD_EFFECT_FLASH, // The flashes of light that appear when the parts of Twinmold explode + /* 4 */ TWINMOLD_EFFECT_FLASH // The flashes of light that appear when the parts of Twinmold explode } TwinmoldEffectType; typedef enum { /* 0 */ TWINMOLD_RED, /* 35 */ TWINMOLD_BLUE = 35, /* 100 */ TWINMOLD_TAIL = 100, - /* 200 */ TWINMOLD_STATIC = 200, -} TwinmoldParams; + /* 200 */ TWINMOLD_STATIC = 200 +} TwinmoldParam; typedef struct Boss02 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.h b/src/overlays/actors/ovl_Boss_03/z_boss_03.h index a00dbacff..236606369 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.h +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.h @@ -31,7 +31,7 @@ typedef enum { /* 1 */ GYORG_EFFECT_BUBBLE, /* 2 */ GYORG_EFFECT_DROPLET, /* 3 */ GYORG_EFFECT_SPLASH, - /* 4 */ GYORG_EFFECT_WET_SPOT, + /* 4 */ GYORG_EFFECT_WET_SPOT } GyorgEffectType; typedef struct Boss03 { diff --git a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h index 971adb3bd..cbee0a148 100644 --- a/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h +++ b/src/overlays/actors/ovl_Demo_Kankyo/z_demo_kankyo.h @@ -38,14 +38,14 @@ typedef struct DemoKankyo { typedef enum { /* 0 */ DEMO_KANKYO_TYPE_LOSTWOODS, /* 1 */ DEMO_KANKYO_TYPE_GIANTS, - /* 2 */ DEMO_KANKYO_TYPE_MOON, + /* 2 */ DEMO_KANKYO_TYPE_MOON } DemoKankyoType; typedef enum { /* 0 */ DEMO_KANKYO_STATE_INIT, /* 1 */ DEMO_KANKYO_STATE_SINGLE, /* 2 */ DEMO_KANKYO_STATE_SKYFISH, - /* 3 */ DEMO_KANKYO_STATE_DISABLED, + /* 3 */ DEMO_KANKYO_STATE_DISABLED } DemoKankyoStateType; #endif // Z_DEMO_KANKYO_H diff --git a/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.c b/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.c index ba8d1b834..ec33a8a94 100644 --- a/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.c +++ b/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.c @@ -38,7 +38,7 @@ void DemoMoonend_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.1f); this->actionFunc = DemoMoonend_DoNothing; - if (DEMOMOONEND_GET_PARAMS_F(thisx) == 1) { + if (DEMOMOONEND_GET_PARAM_F(thisx) == 1) { Actor_SetScale(&this->actor, 0.05f); Actor_SetScale(&this->actor, 6.0f); this->actor.draw = NULL; @@ -60,7 +60,7 @@ void DemoMoonend_Init(Actor* thisx, PlayState* play) { void DemoMoonend_Destroy(Actor* thisx, PlayState* play) { DemoMoonend* this = THIS; - if (DEMOMOONEND_GET_PARAMS_F(thisx) != 1) { + if (DEMOMOONEND_GET_PARAM_F(thisx) != 1) { func_8018349C(&this->skeletonInfo); } } diff --git a/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.h b/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.h index fd229e004..b56c60a9b 100644 --- a/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.h +++ b/src/overlays/actors/ovl_Demo_Moonend/z_demo_moonend.h @@ -8,7 +8,7 @@ struct DemoMoonend; typedef void (*DemoMoonendActionFunc)(struct DemoMoonend*, PlayState*); -#define DEMOMOONEND_GET_PARAMS_F(thisx) (((thisx)->params) & 0xF) +#define DEMOMOONEND_GET_PARAM_F(thisx) (((thisx)->params) & 0xF) typedef struct DemoMoonend { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.h b/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.h index 1997a2bc5..19f99bf2f 100644 --- a/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.h +++ b/src/overlays/actors/ovl_Demo_Syoten/z_demo_syoten.h @@ -12,13 +12,13 @@ typedef void (*DemoSyotenActionFunc)(struct DemoSyoten*, PlayState*); #define DEMOSYOTEN_7E00_3F 0x3F -enum { +typedef enum { /* 0 */ DEMOSYOTEN_F_0, /* 1 */ DEMOSYOTEN_F_1, /* 2 */ DEMOSYOTEN_F_2, /* 3 */ DEMOSYOTEN_F_3, /* 4 */ DEMOSYOTEN_F_4 -}; +} DemoSyotenParam; typedef struct DemoSyoten { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c b/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c index 56bc60a4d..2db282367 100644 --- a/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c +++ b/src/overlays/actors/ovl_Demo_Tre_Lgt/z_demo_tre_lgt.c @@ -24,11 +24,11 @@ void DemoTreLgt_SetupAnimate(DemoTreLgt* this, PlayState* play, f32 frame); void DemoTreLgt_Animate(DemoTreLgt* this, PlayState* play); typedef struct { - f32 unk0; - f32 unk4; - f32 unk8; - f32 unkC; -} DemoTreLgtInfo; + /* 0x0 */ f32 unk0; + /* 0x4 */ f32 unk4; + /* 0x8 */ f32 unk8; + /* 0xC */ f32 unkC; +} DemoTreLgtInfo; // size = 0x10 static DemoTreLgtInfo D_808E1490[2] = { { 1.0f, 136.0f, 190.0f, 40.0f }, @@ -53,8 +53,8 @@ static TransformUpdateIndex* sBoxLightAnimations[] = { }; typedef enum { - /* 0x00 */ DEMO_TRE_LGT_ACTION_WAIT, // wait until animation is needed - /* 0x01 */ DEMO_TRE_LGT_ACTION_ANIMATE + /* 0 */ DEMO_TRE_LGT_ACTION_WAIT, // wait until animation is needed + /* 1 */ DEMO_TRE_LGT_ACTION_ANIMATE } DemoTreLgtAction; static DemoTreLgtActionFunc sActionFuncs[] = { diff --git a/src/overlays/actors/ovl_Dm_Al/z_dm_al.h b/src/overlays/actors/ovl_Dm_Al/z_dm_al.h index 4114b9f9c..3c77ed6c3 100644 --- a/src/overlays/actors/ovl_Dm_Al/z_dm_al.h +++ b/src/overlays/actors/ovl_Dm_Al/z_dm_al.h @@ -22,8 +22,8 @@ typedef struct DmAl { } DmAl; // size = 0x460 typedef enum { - /* 0x0 */ MADAME_AROMA_ANIMATION_0, - /* 0x1 */ MADAME_AROMA_ANIMATION_1 + /* 0 */ MADAME_AROMA_ANIMATION_0, + /* 1 */ MADAME_AROMA_ANIMATION_1 } DmAlAnimations; #endif // Z_DM_AL_H diff --git a/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.h b/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.h index 6f29531a0..7ce8df7d2 100644 --- a/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.h +++ b/src/overlays/actors/ovl_Dm_Char01/z_dm_char01.h @@ -9,12 +9,12 @@ typedef void (*DmChar01ActionFunc)(struct DmChar01*, PlayState*); #define DMCHAR01_GET(thisx) ((thisx)->params) -enum { +typedef enum { /* 0 */ DMCHAR01_0, /* 1 */ DMCHAR01_1, /* 2 */ DMCHAR01_2, - /* 3 */ DMCHAR01_3, -}; + /* 3 */ DMCHAR01_3 +} DmChar01Param; typedef struct DmChar01 { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c index f49820f03..2f933c751 100644 --- a/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c +++ b/src/overlays/actors/ovl_Dm_Char02/z_dm_char02.c @@ -35,7 +35,7 @@ typedef enum { /* 0 */ DMCHAR02_ANIM_HIT_GROUND, /* 1 */ DMCHAR02_ANIM_TURN_AROUND, /* 2 */ DMCHAR02_ANIM_JUGGLE, - /* 3 */ DMCHAR02_ANIM_FALL, + /* 3 */ DMCHAR02_ANIM_FALL } DmChar02Animation; static AnimationInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_Dm_Char05/z_dm_char05.h b/src/overlays/actors/ovl_Dm_Char05/z_dm_char05.h index 3bff39f6a..84f7c3e3e 100644 --- a/src/overlays/actors/ovl_Dm_Char05/z_dm_char05.h +++ b/src/overlays/actors/ovl_Dm_Char05/z_dm_char05.h @@ -9,7 +9,7 @@ typedef void (*DmChar05ActionFunc)(struct DmChar05*, PlayState*); #define DMCHAR05_GET(thisx) ((thisx)->params) -enum { +typedef enum { /* 0 */ DMCHAR05_0, /* 1 */ DMCHAR05_1, /* 2 */ DMCHAR05_2, @@ -22,8 +22,8 @@ enum { /* 9 */ DMCHAR05_9, /* 10 */ DMCHAR05_10, /* 11 */ DMCHAR05_11, - /* 12 */ DMCHAR05_12, -}; + /* 12 */ DMCHAR05_12 +} DmChar05Param; typedef struct DmChar05 { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c b/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c index 9bd85db3a..9f5d18967 100644 --- a/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c +++ b/src/overlays/actors/ovl_Dm_Char08/z_dm_char08.c @@ -38,8 +38,8 @@ typedef enum { /* 2 */ TURTLE_EYEMODE_CLOSED, /* 3 */ TURTLE_EYEMODE_LOOK_STRAIGHT, /* 4 */ TURTLE_EYEMODE_UNUSED, - /* 5 */ TURTLE_EYEMODE_LOOK_RIGHT, -} EyeMode; + /* 5 */ TURTLE_EYEMODE_LOOK_RIGHT +} TurtleEyeMode; typedef enum { /* 0 */ TURTLE_ANIM_IDLE, @@ -48,7 +48,7 @@ typedef enum { /* 3 */ TURTLE_ANIM_SPEAK1, /* 4 */ TURTLE_ANIM_COUGH, /* 5 */ TURTLE_ANIM_SPEAK2, - /* 6 */ TURTLE_ANIM_YAWN, + /* 6 */ TURTLE_ANIM_YAWN } TurtleAnimation; ActorInit Dm_Char08_InitVars = { diff --git a/src/overlays/actors/ovl_Dm_Opstage/z_dm_opstage.h b/src/overlays/actors/ovl_Dm_Opstage/z_dm_opstage.h index 03fd093f3..964965cae 100644 --- a/src/overlays/actors/ovl_Dm_Opstage/z_dm_opstage.h +++ b/src/overlays/actors/ovl_Dm_Opstage/z_dm_opstage.h @@ -14,7 +14,7 @@ typedef enum { /* 0 */ DMOPSTAGE_TYPE_GROUND, /* 1 */ DMOPSTAGE_TYPE_ROOT_TREE, /* 2 */ DMOPSTAGE_TYPE_CUT_TREE, - /* 3 */ DMOPSTAGE_TYPE_STRAIGHT_TREE, + /* 3 */ DMOPSTAGE_TYPE_STRAIGHT_TREE } DmOpStageTypes; typedef struct DmOpstage { diff --git a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.h b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.h index 01b9b52af..fbc5fcb8b 100644 --- a/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.h +++ b/src/overlays/actors/ovl_Dm_Ravine/z_dm_ravine.h @@ -10,7 +10,7 @@ typedef void (*DmRavineActionFunc)(struct DmRavine*, PlayState*); typedef enum { /* 0 */ DM_RAVINE_STATE_INITIALIZED, /* 1 */ DM_RAVINE_STATE_ACTIVE, - /* 2 */ DM_RAVINE_STATE_PENDING_DEATH, + /* 2 */ DM_RAVINE_STATE_PENDING_DEATH } DmRavineState; typedef struct DmRavine { 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 01a5b8c82..1787bcf6f 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.c @@ -108,7 +108,7 @@ typedef enum { /* 68 */ SK_ANIM_LOOK_LEFT_START, /* 69 */ SK_ANIM_LOOK_LEFT_LOOP, /* 70 */ SK_ANIM_SNIFF, - /* 71 */ SK_ANIM_LAUGH_AFTER_SNIFF, + /* 71 */ SK_ANIM_LAUGH_AFTER_SNIFF } SkullKidAnimation; typedef enum { @@ -116,7 +116,7 @@ typedef enum { /* 1 */ SK_MASK_TYPE_NORMAL, /* 2 */ SK_MASK_TYPE_GLOWING_EYES, /* 3 */ SK_MASK_TYPE_FADING_OUT, - /* 9 */ SK_MASK_TYPE_RAISED = 9, + /* 9 */ SK_MASK_TYPE_RAISED = 9 } SkullKidMaskType; typedef enum { @@ -127,19 +127,19 @@ typedef enum { /* 4 */ SK_HAND_TYPE_JUGGLING_OR_DROPPING_OCARINA, /* 5 */ SK_HAND_TYPE_HOLDING_MAJORAS_MASK_AND_FLUTE, /* 6 */ SK_HAND_TYPE_HOLDING_FLUTE, - /* 9 */ SK_HAND_TYPE_DEFAULT = 9, + /* 9 */ SK_HAND_TYPE_DEFAULT = 9 } SkullKidHandType; typedef enum { /* 0 */ SK_FADE_IN_STATE_NONE, /* 1 */ SK_FADE_IN_STATE_START, /* 2 */ SK_FADE_IN_STATE_INCREASE_FOG, - /* 3 */ SK_FADE_IN_STATE_INCREASE_ALPHA, + /* 3 */ SK_FADE_IN_STATE_INCREASE_ALPHA } SkullKidFadeInState; typedef enum { /* 0 */ SK_FADE_OUT_STATE_NONE, - /* 1 */ SK_FADE_OUT_STATE_FADING_OUT, + /* 1 */ SK_FADE_OUT_STATE_FADING_OUT } SkullKidFadeOutState; typedef enum { diff --git a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h index 0f58c534d..cc7ac89ea 100644 --- a/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h +++ b/src/overlays/actors/ovl_Dm_Stk/z_dm_stk.h @@ -12,7 +12,7 @@ typedef void (*DmStkActionFunc)(struct DmStk*, PlayState*); typedef enum { /* 0 */ DM_STK_TYPE_SKULL_KID, - /* 1 */ DM_STK_TYPE_MAJORAS_MASK, + /* 1 */ DM_STK_TYPE_MAJORAS_MASK } DmStkType; typedef struct DmStk { diff --git a/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c b/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c index e875d8ab8..30d1cb3ef 100644 --- a/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c +++ b/src/overlays/actors/ovl_Dm_Zl/z_dm_zl.c @@ -47,7 +47,7 @@ typedef enum { /* 4 */ ZELDA_ANIM_GIVING_OCARINA, /* 5 */ ZELDA_ANIM_PLAYING_OCARINA_START, /* 6 */ ZELDA_ANIM_PLAYING_OCARINA, - /* 7 */ ZELDA_ANIM_MAX, + /* 7 */ ZELDA_ANIM_MAX } DmZlAnimation; static TexturePtr sMouthTextures[] = { @@ -61,7 +61,7 @@ typedef enum { /* 0 */ ZELDA_MOUTH_NEUTRAL, /* 1 */ ZELDA_MOUTH_SMILING, /* 2 */ ZELDA_MOUTH_FROWNING, - /* 3 */ ZELDA_MOUTH_OPEN, + /* 3 */ ZELDA_MOUTH_OPEN } DmZlMouthTextures; static TexturePtr sEyeTextures[] = { @@ -81,7 +81,7 @@ typedef enum { /* 3 */ ZELDA_EYE_WIDE, /* 4 */ ZELDA_EYE_HAPPY, /* 5 */ ZELDA_EYE_OPEN_LOOKING_LEFT, - /* 6 */ ZELDA_EYE_OPEN_LOOKING_RIGHT, + /* 6 */ ZELDA_EYE_OPEN_LOOKING_RIGHT } DmZlEyeTextures; // Unused in MM @@ -92,7 +92,7 @@ typedef enum { /* 3 */ ZELDA_EYE_STATE_LOOKING_RIGHT, /* 4 */ ZELDA_EYE_STATE_WIDE, /* 5 */ ZELDA_EYE_STATE_HAPPY, - /* 6 */ ZELDA_EYE_STATE_CLOSED2, + /* 6 */ ZELDA_EYE_STATE_CLOSED2 } DmZlEyeStates; /** diff --git a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c index 88129eddc..7e202b0af 100644 --- a/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c +++ b/src/overlays/actors/ovl_Door_Shutter/z_door_shutter.c @@ -101,8 +101,8 @@ static InitChainEntry sInitChain[] = { }; typedef struct { - /* 0x00 */ s16 sceneId; - /* 0x02 */ u8 index; + /* 0x0 */ s16 sceneId; + /* 0x2 */ u8 index; } ShutterSceneInfo; // size = 0x4 ShutterSceneInfo D_808A2258[] = { @@ -115,9 +115,9 @@ ShutterSceneInfo D_808A2258[] = { }; typedef struct { - /* 0x00 */ s16 dungeonSceneId; - /* 0x02 */ s16 bossSceneId; - /* 0x04 */ u8 index; + /* 0x0 */ s16 dungeonSceneId; + /* 0x2 */ s16 bossSceneId; + /* 0x4 */ u8 index; } BossDoorInfo; // size = 0x6 BossDoorInfo D_808A22A0[] = { diff --git a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h index 1bc7e13bc..de67845ed 100644 --- a/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h +++ b/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.h @@ -13,15 +13,15 @@ typedef void (*DoorWarp1ActionFunc)(struct DoorWarp1*, PlayState*); #define DOORWARP1_GET_FF00_2(thisx) ((thisx)->params & 0xFF00) #define DOORWARP1_GET_FF00_3(thisx) ((thisx)->params >> 8) -enum { +typedef enum { /* 0 */ ENDOORWARP1_FF_0, /* 1 */ ENDOORWARP1_FF_1, /* 2 */ ENDOORWARP1_FF_2, /* 3 */ ENDOORWARP1_FF_3, /* 4 */ ENDOORWARP1_FF_4, /* 5 */ ENDOORWARP1_FF_5, - /* 6 */ ENDOORWARP1_FF_6, -}; + /* 6 */ ENDOORWARP1_FF_6 +} DoorWarp1Param; typedef struct DoorWarp1 { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h index 38b724865..20a1df27e 100644 --- a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h +++ b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.h @@ -22,12 +22,12 @@ typedef struct EffDust { } EffDust; // size = 0x560 typedef enum { - /* 0x0 */ EFF_DUST_TYPE_0, - /* 0x1 */ EFF_DUST_TYPE_1, - /* 0x2 */ EFF_DUST_TYPE_SPIN_ATTACK_CHARGE, - /* 0x3 */ EFF_DUST_TYPE_3, - /* 0x4 */ EFF_DUST_TYPE_4, - /* 0x5 */ EFF_DUST_TYPE_5 + /* 0 */ EFF_DUST_TYPE_0, + /* 1 */ EFF_DUST_TYPE_1, + /* 2 */ EFF_DUST_TYPE_SPIN_ATTACK_CHARGE, + /* 3 */ EFF_DUST_TYPE_3, + /* 4 */ EFF_DUST_TYPE_4, + /* 5 */ EFF_DUST_TYPE_5 } EffDustType; #endif // Z_EFF_DUST_H diff --git a/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.c b/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.c index d45d669a7..9b5290907 100644 --- a/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.c +++ b/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.c @@ -49,7 +49,7 @@ void EffKamejimaWave_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.2f); this->actor.scale.y = 0.0f; - if (EFFKAMEJIMAWAVE_GET_F(thisx) == EFFKAMEJIMAWAVE_PARAMS_1) { + if (EFFKAMEJIMAWAVE_GET_F(thisx) == EFFKAMEJIMAWAVE_PARAM_1) { this->actionFunc = func_80BCEDE0; sVtxAlpha = 255; } else { diff --git a/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.h b/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.h index c79537363..de5567ff0 100644 --- a/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.h +++ b/src/overlays/actors/ovl_Eff_Kamejima_Wave/z_eff_kamejima_wave.h @@ -16,9 +16,9 @@ typedef struct EffKamejimaWave { /* 0x14C */ EffKamejimaWaveActionFunc actionFunc; } EffKamejimaWave; // size = 0x150 -typedef enum params { - /* 0x0 */ EFFKAMEJIMAWAVE_PARAMS_0, - /* 0x1 */ EFFKAMEJIMAWAVE_PARAMS_1 -} EffKamejimaWaveParams; +typedef enum EffKamejimaWaveParam { + /* 0 */ EFFKAMEJIMAWAVE_PARAM_0, + /* 1 */ EFFKAMEJIMAWAVE_PARAM_1 +} EffKamejimaWaveParam; #endif // Z_EFF_KAMEJIMA_WAVE_H diff --git a/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.c b/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.c index a37f4ec07..8ec3ac959 100644 --- a/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.c +++ b/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.c @@ -22,10 +22,10 @@ void func_80BEBEB8(EffLastday* this, PlayState* play); void func_80BEBF78(EffLastday* this, PlayState* play); typedef enum EffLastDayAction { - /* 0x0 */ EFFLASTDAY_ACTION_NONE, - /* 0x1 */ EFFLASTDAY_ACTION_1, - /* 0x2 */ EFFLASTDAY_ACTION_2, - /* 0x3 */ EFFLASTDAY_ACTION_3 + /* 0 */ EFFLASTDAY_ACTION_NONE, + /* 1 */ EFFLASTDAY_ACTION_1, + /* 2 */ EFFLASTDAY_ACTION_2, + /* 3 */ EFFLASTDAY_ACTION_3 } EffLastDayAction; ActorInit Eff_Lastday_InitVars = { @@ -46,7 +46,7 @@ void EffLastday_Init(Actor* thisx, PlayState* play2) { Actor_SetScale(&this->actor, 0.1f); switch (EFFLASTDAY_GET_F(&this->actor)) { - case EFFLASTDAY_PARAMS_1: + case EFFLASTDAY_PARAM_1: this->dList = object_lastday_DL_000510; this->matAnim = Lib_SegmentedToVirtual(object_lastday_Matanimheader_000608); this->cueType = CS_CMD_ACTOR_CUE_508; @@ -54,7 +54,7 @@ void EffLastday_Init(Actor* thisx, PlayState* play2) { Actor_SetScale(&this->actor, 1.0f); break; - case EFFLASTDAY_PARAMS_2: + case EFFLASTDAY_PARAM_2: this->dList = object_lastday_DL_000210; this->matAnim = Lib_SegmentedToVirtual(object_lastday_Matanimheader_000308); this->cueType = CS_CMD_ACTOR_CUE_509; @@ -62,7 +62,7 @@ void EffLastday_Init(Actor* thisx, PlayState* play2) { Actor_SetScale(&this->actor, 0.5f); break; - case EFFLASTDAY_PARAMS_3: + case EFFLASTDAY_PARAM_3: this->dList = object_lastday_DL_000060; this->matAnim = Lib_SegmentedToVirtual(object_lastday_Matanimheader_000148); this->cueType = CS_CMD_ACTOR_CUE_510; @@ -79,13 +79,13 @@ void EffLastday_Init(Actor* thisx, PlayState* play2) { Actor_SetScale(&this->actor, 1.0f); Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EFF_LASTDAY, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, - EFFLASTDAY_PARAMS_1); + EFFLASTDAY_PARAM_1); Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EFF_LASTDAY, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, - EFFLASTDAY_PARAMS_2); + EFFLASTDAY_PARAM_2); Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EFF_LASTDAY, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, this->actor.world.rot.y, 0, - EFFLASTDAY_PARAMS_3); + EFFLASTDAY_PARAM_3); break; } } @@ -238,10 +238,10 @@ void EffLastday_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); switch (EFFLASTDAY_GET_F(thisx)) { - case EFFLASTDAY_PARAMS_1: - case EFFLASTDAY_PARAMS_2: + case EFFLASTDAY_PARAM_1: + case EFFLASTDAY_PARAM_2: break; - case EFFLASTDAY_PARAMS_3: + case EFFLASTDAY_PARAM_3: EffLastday_SetVtxAlpha(this->alpha); break; default: diff --git a/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.h b/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.h index 0b5002863..9d2087ae1 100644 --- a/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.h +++ b/src/overlays/actors/ovl_Eff_Lastday/z_eff_lastday.h @@ -19,11 +19,11 @@ typedef struct EffLastday { /* 0x154 */ EffLastdayActionFunc actionFunc; } EffLastday; // size = 0x158 -typedef enum EffLastDayParams { - /* 0x0 */ EFFLASTDAY_PARAMS_0, - /* 0x1 */ EFFLASTDAY_PARAMS_1, - /* 0x2 */ EFFLASTDAY_PARAMS_2, - /* 0x3 */ EFFLASTDAY_PARAMS_3 -} EffLastDayParams; +typedef enum EffLastDayParam { + /* 0 */ EFFLASTDAY_PARAM_0, + /* 1 */ EFFLASTDAY_PARAM_1, + /* 2 */ EFFLASTDAY_PARAM_2, + /* 3 */ EFFLASTDAY_PARAM_3 +} EffLastDayParam; #endif // Z_EFF_LASTDAY_H diff --git a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.h b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.h index 4c8a4eb77..680fdbb75 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.h +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.h @@ -14,10 +14,10 @@ typedef void (*EnAkindonutsUnkFunc)(struct EnAkindonuts*, PlayState*); #define ENAKINDONUTS_PATH_INDEX_NONE 0x3F -enum { +typedef enum { /* 1 */ ENAKINDONUTS_3_1 = 1, - /* 2 */ ENAKINDONUTS_3_2, -}; + /* 2 */ ENAKINDONUTS_3_2 +} EnAkindonutsParam; typedef struct EnAkindonuts { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ani/z_en_ani.h b/src/overlays/actors/ovl_En_Ani/z_en_ani.h index fcced964b..d0f2e6a12 100644 --- a/src/overlays/actors/ovl_En_Ani/z_en_ani.h +++ b/src/overlays/actors/ovl_En_Ani/z_en_ani.h @@ -28,10 +28,10 @@ typedef struct EnAni { /* 0x2FC */ EnAniActionFunc actionFunc; } EnAni; // size = 0x300 -enum EnAniType { - /* else */ ANI_TYPE_STANDING, // unfinshed and unused - /* 1 */ ANI_TYPE_TREE_HANGING = 1, -}; +typedef enum EnAniType { + /* 1 */ ANI_TYPE_TREE_HANGING = 1, + /* 2 */ ANI_TYPE_STANDING // unfinshed and unused. Never read as 2, only taken as the "else" case from `ANI_TYPE_TREE_HANGING` +} EnAniType; #define ANI_GET_TYPE(thisx) ((thisx)->params & 0xFF) 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 8d3c6b23b..dcd380256 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 @@ -50,14 +50,14 @@ typedef enum { /* 2 */ EN_AOB01_ANIM_LAUGH_LOOP, /* 3 */ EN_AOB01_ANIM_SURPRISE_START, /* 4 */ EN_AOB01_ANIM_SURPRISE_LOOP, - /* 5 */ EN_AOB01_ANIM_IDLE_2, + /* 5 */ EN_AOB01_ANIM_IDLE_2 } EnAob01Animation; typedef enum { /* 0 */ EN_AOB01_EYE_OPEN, /* 1 */ EN_AOB01_EYE_HALF, /* 2 */ EN_AOB01_EYE_CLOSED, - /* 3 */ EN_AOB01_EYE_MAX, + /* 3 */ EN_AOB01_EYE_MAX } EnAob01EyeTexture; static AnimationInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_Az/z_en_az.c b/src/overlays/actors/ovl_En_Az/z_en_az.c index b6c5df58d..f4a9005f6 100644 --- a/src/overlays/actors/ovl_En_Az/z_en_az.c +++ b/src/overlays/actors/ovl_En_Az/z_en_az.c @@ -72,7 +72,7 @@ typedef enum { /* 10 */ BEAVER_ANIM_TALK_TO_RIGHT, /* 11 */ BEAVER_ANIM_BOW, /* 12 */ BEAVER_ANIM_IDLE_FACE_LEFT, - /* 13 */ BEAVER_ANIM_IDLE_FACE_RIGHT, + /* 13 */ BEAVER_ANIM_IDLE_FACE_RIGHT } BeaverAnimation; static AnimationSpeedInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c b/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c index df47a5f67..4ea6bc475 100644 --- a/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c +++ b/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c @@ -27,18 +27,18 @@ void EnBaguo_UpdateEffects(EnBaguo* this, PlayState* play); void EnBaguo_DrawEffects(EnBaguo* this, PlayState* play); typedef enum { - /* 0x0 */ NEJIRON_ACTION_INACTIVE, // The Nejiron is either underground or emerging from underground - /* 0x1 */ NEJIRON_ACTION_ACTIVE, // The Nejiron is above ground and actively chasing the player - /* 0x2 */ NEJIRON_ACTION_RETREATING, // The Nejiron is burrowing back underground - /* 0x3 */ NEJIRON_ACTION_EXPLODING // The Nejiron has detonated + /* 0 */ NEJIRON_ACTION_INACTIVE, // The Nejiron is either underground or emerging from underground + /* 1 */ NEJIRON_ACTION_ACTIVE, // The Nejiron is above ground and actively chasing the player + /* 2 */ NEJIRON_ACTION_RETREATING, // The Nejiron is burrowing back underground + /* 3 */ NEJIRON_ACTION_EXPLODING // The Nejiron has detonated } NejironAction; /** * These directions are relative to the Nejiron. */ typedef enum { - /* 0x0 */ NEJIRON_DIRECTION_RIGHT, - /* 0x1 */ NEJIRON_DIRECTION_LEFT + /* 0 */ NEJIRON_DIRECTION_RIGHT, + /* 1 */ NEJIRON_DIRECTION_LEFT } NejironRollDirection; ActorInit En_Baguo_InitVars = { diff --git a/src/overlays/actors/ovl_En_Bb/z_en_bb.c b/src/overlays/actors/ovl_En_Bb/z_en_bb.c index 048fbfc95..c1d13be5a 100644 --- a/src/overlays/actors/ovl_En_Bb/z_en_bb.c +++ b/src/overlays/actors/ovl_En_Bb/z_en_bb.c @@ -32,7 +32,7 @@ void EnBb_Revive(EnBb* this, PlayState* play); typedef enum { /* -1 */ BB_BODY_PART_DRAW_STATUS_BROKEN = -1, /* 0 */ BB_BODY_PART_DRAW_STATUS_ALIVE, - /* 1 */ BB_BODY_PART_DRAW_STATUS_DEAD, + /* 1 */ BB_BODY_PART_DRAW_STATUS_DEAD } EnBbBodyPartDrawStatus; ActorInit En_Bb_InitVars = { @@ -73,7 +73,7 @@ typedef enum { /* 0x3 */ EN_BB_DMGEFF_ICE_ARROW = 0x3, /* 0x4 */ EN_BB_DMGEFF_LIGHT_ARROW, /* 0x5 */ EN_BB_DMGEFF_ZORA_MAGIC, - /* 0xE */ EN_BB_DMGEFF_HOOKSHOT = 0xE, + /* 0xE */ EN_BB_DMGEFF_HOOKSHOT = 0xE } EnBbDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c b/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c index 11dace3a5..9fabcecc0 100644 --- a/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c +++ b/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c @@ -32,7 +32,7 @@ void EnBbfall_Frozen(EnBbfall* this, PlayState* play); typedef enum { /* -1 */ BBFALL_BODY_PART_DRAW_STATUS_BROKEN = -1, /* 0 */ BBFALL_BODY_PART_DRAW_STATUS_ALIVE, - /* 1 */ BBFALL_BODY_PART_DRAW_STATUS_DEAD, + /* 1 */ BBFALL_BODY_PART_DRAW_STATUS_DEAD } EnBbfallBodyPartDrawStatus; ActorInit En_Bbfall_InitVars = { @@ -102,7 +102,7 @@ typedef enum { /* 0x3 */ EN_BBFALL_DMGEFF_ICE_ARROW = 0x3, /* 0x4 */ EN_BBFALL_DMGEFF_LIGHT_ARROW, /* 0x5 */ EN_BBFALL_DMGEFF_ZORA_MAGIC, - /* 0xE */ EN_BBFALL_DMGEFF_HOOKSHOT = 0xE, + /* 0xE */ EN_BBFALL_DMGEFF_HOOKSHOT = 0xE } EnBbfallDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Bee/z_en_bee.h b/src/overlays/actors/ovl_En_Bee/z_en_bee.h index 09d9ef931..b1773a5ca 100644 --- a/src/overlays/actors/ovl_En_Bee/z_en_bee.h +++ b/src/overlays/actors/ovl_En_Bee/z_en_bee.h @@ -9,8 +9,8 @@ struct EnBee; typedef void (*EnBeeActionFunc)(struct EnBee*, PlayState*); typedef enum { - /* 0 */ BEE_BEHAVIOR_IDLE = 0, - /* 1 */ BEE_BEHAVIOR_ATTACK, + /* 0 */ BEE_BEHAVIOR_IDLE, + /* 1 */ BEE_BEHAVIOR_ATTACK } BeeBehaviorType; typedef struct EnBee { diff --git a/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.h b/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.h index bb9d29280..a3561c33b 100644 --- a/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.h +++ b/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.h @@ -8,10 +8,10 @@ struct EnBigpamet; typedef void (*EnBigpametActionFunc)(struct EnBigpamet*, PlayState*); -enum { +typedef enum { /* 0 */ ENBIGPAMET_0, - /* 1 */ ENBIGPAMET_1, -}; + /* 1 */ ENBIGPAMET_1 +} EnBigpametParam; typedef struct { /* 0x00 */ Vec3f unk_00; diff --git a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.h b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.h index 9b84784f4..b532d6d08 100644 --- a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.h +++ b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.h @@ -53,16 +53,16 @@ typedef struct EnBigpo { /* 0x338 */ EnBigpoFireEffect fires[3]; } EnBigpo; // size = 0x398 -// well ver is regular, dampe basement ver is summoned -// on spawn, 3/possible fires are turned into chosenfire -enum EnBigpoType { +// well version is "regular" (spawns automatically), dampe basement version is "summoned" +// on room enter, 3 "possiblefire" are turned into "chosenfire" at random +typedef enum EnBigpoType { /* 0 */ ENBIGPO_REGULAR, /* 1 */ ENBIGPO_SUMMONED, /* 2 */ ENBIGPO_POSSIBLEFIRE, /* 3 */ ENBIGPO_CHOSENFIRE, /* 4 */ ENBIGPO_REVEALEDFIRE, - /* 5 */ ENBIGPO_UNK5, -}; + /* 5 */ ENBIGPO_UNK5 +} EnBigpoType; #define BIGPO_GET_SWITCHFLAGS(thisx) (u8)((thisx)->params >> 0x8) diff --git a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c index 75e6fa38e..1a90fd29b 100644 --- a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c +++ b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c @@ -254,7 +254,7 @@ typedef enum { /* 0x5 */ BIGSLIME_DMGEFF_ELECTRIC_STUN, /* 0xD */ BIGSLIME_DMGEFF_DEKU_STUN = 0xD, /* 0xE */ BIGSLIME_DMGEFF_HOOKSHOT, - /* 0xF */ BIGSLIME_DMGEFF_BREAK_ICE, + /* 0xF */ BIGSLIME_DMGEFF_BREAK_ICE } BigslimeDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c index 6aa9f9e35..ef5c9c0e2 100644 --- a/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c +++ b/src/overlays/actors/ovl_En_Bjt/z_en_bjt.c @@ -229,7 +229,7 @@ typedef enum { /* 1 */ TOILET_HAND_BEHAVIOUR_TAKE_ITEM, // take paper and disappear to use it /* 2 */ TOILET_HAND_BEHAVIOUR_USE_ITEM, // using paper, flushing /* 3 */ TOILET_HAND_BEHAVIOUR_REAPPEAR, // reappear with reward - /* 4 */ TOILET_HAND_BEHAVIOUR_REWARD_GIVEN, + /* 4 */ TOILET_HAND_BEHAVIOUR_REWARD_GIVEN } ToiletHandBehaviour; // msgevent callback/communication. Follow and choose parts of script to run diff --git a/src/overlays/actors/ovl_En_Bom/z_en_bom.h b/src/overlays/actors/ovl_En_Bom/z_en_bom.h index 40558a919..d11547230 100644 --- a/src/overlays/actors/ovl_En_Bom/z_en_bom.h +++ b/src/overlays/actors/ovl_En_Bom/z_en_bom.h @@ -13,14 +13,14 @@ typedef void (*EnBomActionFunc)(struct EnBom*, PlayState*); typedef enum BombType { /* 0 */ BOMB_TYPE_BODY, - /* 1 */ BOMB_TYPE_EXPLOSION, + /* 1 */ BOMB_TYPE_EXPLOSION } BombType; // Passed via x rotation -typedef enum EnBomExplosiveType { +typedef enum BombExplosiveType { /* 0 */ BOMB_EXPLOSIVE_TYPE_BOMB, - /* 1 */ BOMB_EXPLOSIVE_TYPE_POWDER_KEG, -} EnBomExplosiveType; + /* 1 */ BOMB_EXPLOSIVE_TYPE_POWDER_KEG +} BombExplosiveType; typedef struct EnBom { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.h b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.h index 85c5ecdb3..1585613ce 100644 --- a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.h +++ b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.h @@ -10,13 +10,13 @@ typedef void (*EnBombersActionFunc)(struct EnBombers*, PlayState*); #define ENBOMBERS_GET_F(thisx) ((thisx)->params & 0xF) #define ENBOMBERS_GET_F0(thisx) (((thisx)->params >> 4) & 0xF) -enum { +typedef enum { /* 0 */ ENBOMBERS_F_0, /* 1 */ ENBOMBERS_F_1, /* 2 */ ENBOMBERS_F_2, /* 3 */ ENBOMBERS_F_3, - /* 4 */ ENBOMBERS_F_4, -}; + /* 4 */ ENBOMBERS_F_4 +} EnBombersParam; #define ENBOMBERS_F0_0 0 diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index 8260386df..7c2a64841 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -39,7 +39,7 @@ void func_80C00168(EnBomjima* this, PlayState* play); void func_80C00234(EnBomjima* this); void func_80C00284(EnBomjima* this, PlayState* play); -typedef enum EN_BOMJIMA_ACTION { +typedef enum EnBomjimaAction { /* 0 */ EN_BOMJIMA_ACTION_0, /* 1 */ EN_BOMJIMA_ACTION_1, /* 2 */ EN_BOMJIMA_ACTION_2, @@ -47,8 +47,8 @@ typedef enum EN_BOMJIMA_ACTION { /* 4 */ EN_BOMJIMA_ACTION_4, /* 5 */ EN_BOMJIMA_ACTION_5, /* 6 */ EN_BOMJIMA_ACTION_6, - /* 7 */ EN_BOMJIMA_ACTION_7, -} EN_BOMJIMA_ACTION; + /* 7 */ EN_BOMJIMA_ACTION_7 +} EnBomjimaAction; static s32 D_80C009F0 = 0; static s32 D_80C009F4 = 0; diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.h b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.h index f411f21a2..a784e335d 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.h +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.h @@ -11,19 +11,19 @@ typedef void (*EnBomjimbActionFunc)(struct EnBomjimb*, PlayState*); #define ENBOMJIMB_GET_F0(thisx) (((thisx)->params >> 4) & 0xF) #define ENBOMJIMB_GET_FF00(thisx) (((thisx)->params >> 8) & 0xFF) -enum { +typedef enum { /* 0 */ ENBOMJIMB_F_0, /* 1 */ ENBOMJIMB_F_1, /* 2 */ ENBOMJIMB_F_2, /* 3 */ ENBOMJIMB_F_3, - /* 4 */ ENBOMJIMB_F_4, -}; + /* 4 */ ENBOMJIMB_F_4 +} EnBomjimbParamF; -enum { +typedef enum { /* 0 */ ENBOMJIMB_F0_0, /* 1 */ ENBOMJIMB_F0_1, - /* 2 */ ENBOMJIMB_F0_2, -}; + /* 2 */ ENBOMJIMB_F0_2 +} EnBomjimbParamF0; typedef struct EnBomjimb { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Boom/z_en_boom.c b/src/overlays/actors/ovl_En_Boom/z_en_boom.c index 9165b9392..f9b5b3d41 100644 --- a/src/overlays/actors/ovl_En_Boom/z_en_boom.c +++ b/src/overlays/actors/ovl_En_Boom/z_en_boom.c @@ -311,7 +311,7 @@ typedef struct { /* 0x00 */ Gfx* unk_00; /* 0x04 */ Vec3f unk_04; /* 0x10 */ Vec3f unk_10; -} EnBoomStruct; +} EnBoomStruct; // size = 0x1C EnBoomStruct D_808A3078[] = { { gameplay_keep_DL_06FE20, { -960.0f, 0.0f, 0.0f }, { 960.0f, 0.0f, 0.0f } }, diff --git a/src/overlays/actors/ovl_En_Box/z_en_box.c b/src/overlays/actors/ovl_En_Box/z_en_box.c index b65b2c63d..044f54334 100644 --- a/src/overlays/actors/ovl_En_Box/z_en_box.c +++ b/src/overlays/actors/ovl_En_Box/z_en_box.c @@ -73,7 +73,7 @@ static InitChainEntry sInitChain[] = { }; typedef struct { - f32 data[5]; + /* 0x0 */ f32 data[5]; } EnBox_PlaybackSpeed; // 0x14 static EnBox_PlaybackSpeed sPlaybackSpeed = { { 1.5f, 1.0f, 1.5f, 1.0f, 1.5f } }; diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index 7666f8e12..4becc2fe6 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -20,7 +20,7 @@ typedef enum { /* 0x05 */ CLEAR_TAG_EFFECT_LIGHT_RAYS, /* 0x06 */ CLEAR_TAG_EFFECT_SHOCKWAVE, /* 0x07 */ CLEAR_TAG_EFFECT_SPLASH, - /* 0x08 */ CLEAR_TAG_EFFECT_ISOLATED_SMOKE, + /* 0x08 */ CLEAR_TAG_EFFECT_ISOLATED_SMOKE } ClearTagEffectType; void EnClearTag_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.h b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.h index 977bf2473..c002dc5e3 100644 --- a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.h +++ b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.h @@ -21,7 +21,7 @@ typedef enum { /* 1 */ EN_COL_MAN_RECOVERY_HEART, /* 2 */ EN_COL_MAN_FALLING_ROCK, /* 3 */ EN_COL_MAN_CUTSCENE_BOMB, - /* 4 */ EN_COL_MAN_GAMEPLAY_BOMB, + /* 4 */ EN_COL_MAN_GAMEPLAY_BOMB } EnColManType; #endif // Z_EN_COL_MAN_H diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.h b/src/overlays/actors/ovl_En_Cow/z_en_cow.h index 3c73b747f..200ec5bec 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.h +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.h @@ -10,9 +10,9 @@ #define EN_COW_FLAG_WONT_GIVE_MILK (1 << 2) typedef enum { - /* 0 */ EN_COW_TYPE_DEFAULT, - /* 1 */ EN_COW_TYPE_TAIL, - /* 2 */ EN_COW_TYPE_ABDUCTED, + /* 0 */ EN_COW_TYPE_DEFAULT, + /* 1 */ EN_COW_TYPE_TAIL, + /* 2 */ EN_COW_TYPE_ABDUCTED } EnCowType; struct EnCow; diff --git a/src/overlays/actors/ovl_En_Crow/z_en_crow.c b/src/overlays/actors/ovl_En_Crow/z_en_crow.c index f524e6d5e..ec9a11b4c 100644 --- a/src/overlays/actors/ovl_En_Crow/z_en_crow.c +++ b/src/overlays/actors/ovl_En_Crow/z_en_crow.c @@ -74,7 +74,7 @@ typedef enum { /* 2 */ GUAY_DMGEFF_FIRE, /* 3 */ GUAY_DMGEFF_ICE, /* 4 */ GUAY_DMGEFF_LIGHT, - /* 5 */ GUAY_DMGEFF_ELECTRIC, + /* 5 */ GUAY_DMGEFF_ELECTRIC } GuayDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c index 2900f4d34..2c232f096 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.c @@ -76,14 +76,14 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) { this->actor.targetMode = 0; Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); this->unk_278 = ENDAIKU_GET_FF(&this->actor); - if (this->unk_278 == ENDAIKU_PARAMS_FF_3) { + if (this->unk_278 == ENDAIKU_PARAM_FF_3) { this->pathIndex = ENDAIKU_GET_PATH_INDEX(&this->actor); this->path = SubS_GetPathByIndex(play, this->pathIndex, ENDAIKU_PATH_INDEX_NONE); - } else if (this->unk_278 == ENDAIKU_PARAMS_FF_2) { + } else if (this->unk_278 == ENDAIKU_PARAM_FF_2) { this->unk_264 = -2000; } - if (this->unk_278 == ENDAIKU_PARAMS_FF_0) { + if (this->unk_278 == ENDAIKU_PARAM_FF_0) { this->collider.dim.radius = 30; this->collider.dim.height = 60; this->collider.dim.yShift = 0; @@ -100,20 +100,20 @@ void EnDaiku_Init(Actor* thisx, PlayState* play) { this->actor.gravity = -3.0f; switch (this->unk_278) { - case ENDAIKU_PARAMS_FF_0: + case ENDAIKU_PARAM_FF_0: this->unk_27E = this->unk_278 * 4 + 4; - case ENDAIKU_PARAMS_FF_1: + case ENDAIKU_PARAM_FF_1: SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_002FA0, this->jointTable, this->morphTable, 17); break; - case ENDAIKU_PARAMS_FF_2: + case ENDAIKU_PARAM_FF_2: SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_00B690, this->jointTable, this->morphTable, 17); break; - case ENDAIKU_PARAMS_FF_3: + case ENDAIKU_PARAM_FF_3: SkelAnime_InitFlex(play, &this->skelAnime, &object_daiku_Skel_00A850, &object_daiku_Anim_001114, this->jointTable, this->morphTable, 17); break; @@ -173,7 +173,7 @@ void func_809438F8(EnDaiku* this, PlayState* play) { s32 pad2; if (Player_GetMask(play) == PLAYER_MASK_KAFEIS_MASK) { - if (this->unk_278 == ENDAIKU_PARAMS_FF_1) { + if (this->unk_278 == ENDAIKU_PARAM_FF_1) { this->actor.textId = 0x2365; } else { this->actor.textId = 0x2366; @@ -188,7 +188,7 @@ void func_809438F8(EnDaiku* this, PlayState* play) { return; } - if ((this->unk_278 == ENDAIKU_PARAMS_FF_2) && (this->unk_284 <= currentFrame)) { + if ((this->unk_278 == ENDAIKU_PARAM_FF_2) && (this->unk_284 <= currentFrame)) { if (Rand_ZeroOne() < 0.5f) { func_8094373C(this, 7); } else { @@ -196,7 +196,7 @@ void func_809438F8(EnDaiku* this, PlayState* play) { } } - if (this->unk_278 == ENDAIKU_PARAMS_FF_3) { + if (this->unk_278 == ENDAIKU_PARAM_FF_3) { f32 xzDist; f32 yawDiff; @@ -219,11 +219,11 @@ void func_809438F8(EnDaiku* this, PlayState* play) { } } - if (this->unk_278 != ENDAIKU_PARAMS_FF_0) { + if (this->unk_278 != ENDAIKU_PARAM_FF_0) { s16 angle = ABS_ALT(BINANG_SUB(this->actor.yawTowardsPlayer, this->actor.world.rot.y)); this->unk_280 = this->actor.yawTowardsPlayer; - if ((this->unk_278 == ENDAIKU_PARAMS_FF_1) || (this->unk_278 == ENDAIKU_PARAMS_FF_2) || (angle <= 0x2890)) { + if ((this->unk_278 == ENDAIKU_PARAM_FF_1) || (this->unk_278 == ENDAIKU_PARAM_FF_2) || (angle <= 0x2890)) { func_800B8614(&this->actor, play, 100.0f); } } @@ -237,7 +237,7 @@ void func_80943BC0(EnDaiku* this) { void func_80943BDC(EnDaiku* this, PlayState* play) { f32 currentFrame = this->skelAnime.curFrame; - if ((this->unk_278 == ENDAIKU_PARAMS_FF_2) && (this->unk_284 <= currentFrame)) { + if ((this->unk_278 == ENDAIKU_PARAM_FF_2) && (this->unk_284 <= currentFrame)) { if (Rand_ZeroOne() < 0.5f) { func_8094373C(this, 7); } else { @@ -259,7 +259,7 @@ void EnDaiku_Update(Actor* thisx, PlayState* play) { SkelAnime_Update(&this->skelAnime); } - if ((this->unk_278 == ENDAIKU_PARAMS_FF_0) && (gSaveContext.save.day == 3) && (gSaveContext.save.isNight)) { + if ((this->unk_278 == ENDAIKU_PARAM_FF_0) && (gSaveContext.save.day == 3) && (gSaveContext.save.isNight)) { Actor_Kill(&this->actor); return; } @@ -314,7 +314,7 @@ void EnDaiku_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* ro gSPDisplayList(POLY_OPA_DISP++, D_809440D4[this->unk_278]); } - if ((this->unk_278 == ENDAIKU_PARAMS_FF_3) && (limbIndex == 8)) { + if ((this->unk_278 == ENDAIKU_PARAM_FF_3) && (limbIndex == 8)) { gSPDisplayList(POLY_OPA_DISP++, object_daiku_DL_008EC8); } diff --git a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h index c75afec6e..ff88c8c9a 100644 --- a/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h +++ b/src/overlays/actors/ovl_En_Daiku/z_en_daiku.h @@ -12,12 +12,12 @@ typedef void (*EnDaikuActionFunc)(struct EnDaiku*, PlayState*); #define ENDAIKU_PATH_INDEX_NONE 0x3F -enum { - /* 0x0 */ ENDAIKU_PARAMS_FF_0, - /* 0x1 */ ENDAIKU_PARAMS_FF_1, - /* 0x2 */ ENDAIKU_PARAMS_FF_2, - /* 0x3 */ ENDAIKU_PARAMS_FF_3, -}; +typedef enum { + /* 0 */ ENDAIKU_PARAM_FF_0, + /* 1 */ ENDAIKU_PARAM_FF_1, + /* 2 */ ENDAIKU_PARAM_FF_2, + /* 3 */ ENDAIKU_PARAM_FF_3 +} EnDaikuParam; typedef struct EnDaiku { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.h b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.h index 775b2453f..58fc26b9a 100644 --- a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.h +++ b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.h @@ -13,11 +13,11 @@ typedef void (*EnDaiku2ActionFunc)(struct EnDaiku2*, PlayState*); #define ENDAIKU2_PATH_INDEX_NONE 0x3F -enum { +typedef enum { /* -1 */ ENDAIKU2_GET_7F_MINUS1 = -1, /* 0 */ ENDAIKU2_GET_7F_0, - /* 127 */ ENDAIKU2_GET_7F_127 = 127, -}; + /* 127 */ ENDAIKU2_GET_7F_127 = 127 +} EnDaiku2Param; typedef struct EnDaiku2Effect { /* 0x00 */ u8 isEnabled; diff --git a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h index 59b6677a0..248f758ac 100644 --- a/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h +++ b/src/overlays/actors/ovl_En_Dekunuts/z_en_dekunuts.h @@ -10,12 +10,12 @@ typedef void (*EnDekunutsActionFunc)(struct EnDekunuts*, PlayState*); #define ENDEKUNUTS_GET_FF00(thisx) (((thisx)->params >> 8) & 0xFF) -enum { +typedef enum { /* 0x00 */ ENDEKUNUTS_GET_FF00_0, /* 0x01 */ ENDEKUNUTS_GET_FF00_1, /* 0x02 */ ENDEKUNUTS_GET_FF00_2, /* 0xFF */ ENDEKUNUTS_GET_FF00_FF = 0xFF -}; +} EnDekunutsParam; typedef struct EnDekunuts { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c b/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c index 5b5857c94..faacd7510 100644 --- a/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c +++ b/src/overlays/actors/ovl_En_Demo_heishi/z_en_demo_heishi.c @@ -23,11 +23,11 @@ void EnDemoheishi_Talk(EnDemoheishi* this, PlayState* play); s32 EnDemoheishi_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx); typedef enum { - /* 0 */ DEMOHEISHI_ANIM_STAND_HAND_ON_HIP, - /* 1 */ DEMOHEISHI_ANIM_CHEER_WITH_SPEAR, - /* 2 */ DEMOHEISHI_ANIM_WAVE, - /* 3 */ DEMOHEISHI_ANIM_SIT_AND_REACH, - /* 4 */ DEMOHEISHI_ANIM_STAND_UP + /* 0 */ DEMOHEISHI_ANIM_STAND_HAND_ON_HIP, + /* 1 */ DEMOHEISHI_ANIM_CHEER_WITH_SPEAR, + /* 2 */ DEMOHEISHI_ANIM_WAVE, + /* 3 */ DEMOHEISHI_ANIM_SIT_AND_REACH, + /* 4 */ DEMOHEISHI_ANIM_STAND_UP } EnDemoheishiAnimation; ActorInit En_Demo_heishi_InitVars = { diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index 849ae3378..d80013a99 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -62,7 +62,7 @@ ActorInit En_Dg_InitVars = { typedef enum { /* 0 */ DOG_GRAB_STATE_NONE, /* 1 */ DOG_GRAB_STATE_HELD, - /* 2 */ DOG_GRAB_STATE_THROWN_OR_SITTING_AFTER_THROW, + /* 2 */ DOG_GRAB_STATE_THROWN_OR_SITTING_AFTER_THROW } DogGrabState; typedef enum { @@ -74,7 +74,7 @@ typedef enum { /* 5 */ DOG_BEHAVIOR_ZORA_WAIT, /* 6 */ DOG_BEHAVIOR_DEKU, /* 7 */ DOG_BEHAVIOR_DEKU_WAIT, - /* 8 */ DOG_BEHAVIOR_DEFAULT, + /* 8 */ DOG_BEHAVIOR_DEFAULT } DogBehavior; static u8 sIsAnyDogHeld = false; @@ -85,10 +85,10 @@ static s16 sBremenMaskFollowerIndex = ENDG_INDEX_NO_BREMEN_MASK_FOLLOWER; * Stores the state for the dogs milling about at the Doggy Racetrack. */ typedef struct { - s16 color; // The dog's color, which is used as an index into sBaseSpeeds - s16 index; // The dog's index within sDogInfo - s16 textId; // The ID of the text to display when the dog is picked up -} RacetrackDogInfo; + /* 0x0 */ s16 color; // The dog's color, which is used as an index into sBaseSpeeds + /* 0x2 */ s16 index; // The dog's index within sDogInfo + /* 0x4 */ s16 textId; // The ID of the text to display when the dog is picked up +} RacetrackDogInfo; // size = 0x6 /** * A table of RacetrackDogInfo for every dog at the Doggy Racetrack. Note that the textId values diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.h b/src/overlays/actors/ovl_En_Dg/z_en_dg.h index 9f8203987..e36342706 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.h +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.h @@ -11,8 +11,8 @@ typedef enum { /* 3 */ DOG_COLOR_BEIGE, /* 4 */ DOG_COLOR_BROWN, /* 5 */ DOG_COLOR_BLUE, - /* 6 */ DOG_COLOR_GOLD, -} DogColors; + /* 6 */ DOG_COLOR_GOLD +} DogColor; struct EnDg; diff --git a/src/overlays/actors/ovl_En_Dnk/z_en_dnk.h b/src/overlays/actors/ovl_En_Dnk/z_en_dnk.h index f0665f1b5..57467b3f1 100644 --- a/src/overlays/actors/ovl_En_Dnk/z_en_dnk.h +++ b/src/overlays/actors/ovl_En_Dnk/z_en_dnk.h @@ -10,13 +10,13 @@ typedef void (*EnDnkActionFunc)(struct EnDnk*, PlayState*); #define ENDNK_GET_3(thisx) ((thisx)->params & 0x3) #define ENDNK_GET_3C(thisx) ((thisx)->params & 0x3C) -enum { - /* 0x0 */ ENDNK_GET_3_0, - /* 0x1 */ ENDNK_GET_3_1, - /* 0x2 */ ENDNK_GET_3_2, - /* 0x3 */ ENDNK_GET_3_3, - /* 0x4 */ ENDNK_GET_3_4, -}; +typedef enum { + /* 0 */ ENDNK_GET_3_0, + /* 1 */ ENDNK_GET_3_1, + /* 2 */ ENDNK_GET_3_2, + /* 3 */ ENDNK_GET_3_3, + /* 4 */ ENDNK_GET_3_4 +} EnDnkParam; typedef struct EnDnk { /* 0x000 */ Actor actor; 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 b7eb08743..904a18e62 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -63,7 +63,7 @@ typedef enum { /* 16 */ EN_DNO_ANIM_IMPLORE_START, /* 17 */ EN_DNO_ANIM_SHOCK_START, /* 18 */ EN_DNO_ANIM_SHOCK_LOOP, - /* 19 */ EN_DNO_ANIM_GRIEVE, + /* 19 */ EN_DNO_ANIM_GRIEVE } EnDnoAnimation; static AnimationSpeedInfo sAnimations[] = { diff --git a/src/overlays/actors/ovl_En_Dno/z_en_dno.h b/src/overlays/actors/ovl_En_Dno/z_en_dno.h index f9a55cd4e..b2e7f750f 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.h +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.h @@ -13,8 +13,8 @@ typedef void (*EnDnoActionFunc)(struct EnDno*, PlayState*); #define EN_DNO_GET_C000(thisx) (((thisx)->params >> 0xE) & 0x3) typedef enum { - /* 0x0 */ EN_DNO_GET_C000_0, - /* 0x1 */ EN_DNO_GET_C000_1, + /* 0 */ EN_DNO_GET_C000_0, + /* 1 */ EN_DNO_GET_C000_1 } EnDnoUnkC000; typedef struct EnDno { diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c index 0b3c5ac85..1dd5dac34 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.c @@ -29,7 +29,7 @@ typedef enum { /* 1 */ EN_DNP_EYE_HALF, /* 2 */ EN_DNP_EYE_CLOSED, /* 3 */ EN_DNP_EYE_ANGRY, - /* 4 */ EN_DNP_EYE_MAX, + /* 4 */ EN_DNP_EYE_MAX } EnDnpEyeIndex; ActorInit En_Dnp_InitVars = { diff --git a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h index 64f0baf93..9b02f19d3 100644 --- a/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h +++ b/src/overlays/actors/ovl_En_Dnp/z_en_dnp.h @@ -11,9 +11,9 @@ typedef void (*EnDnpActionFunc)(struct EnDnp*, PlayState*); #define EN_DNP_GET_TYPE(thisx) ((thisx)->params & 7) typedef enum { - /* 0x0 */ EN_DNP_TYPE_WOODFALL_TEMPLE, - /* 0x1 */ EN_DNP_TYPE_RELEASED_FROM_BOTTLE, - /* 0x2 */ EN_DNP_TYPE_DEKU_KINGS_CHAMBER, + /* 0 */ EN_DNP_TYPE_WOODFALL_TEMPLE, + /* 1 */ EN_DNP_TYPE_RELEASED_FROM_BOTTLE, + /* 2 */ EN_DNP_TYPE_DEKU_KINGS_CHAMBER } EnDnpType; typedef struct EnDnp { diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.c b/src/overlays/actors/ovl_En_Dns/z_en_dns.c index f481f3d6b..d662e7e55 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.c +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.c @@ -30,7 +30,7 @@ typedef enum { /* 7 */ EN_DNS_ANIM_RUN_LOOP, /* 8 */ EN_DNS_ANIM_DANCE, /* 9 */ EN_DNS_ANIM_FLIP, - /* 10 */ EN_DNS_ANIM_MAX, + /* 10 */ EN_DNS_ANIM_MAX } EnDnsAnimation; static s32 D_8092DCB0[] = { diff --git a/src/overlays/actors/ovl_En_Dns/z_en_dns.h b/src/overlays/actors/ovl_En_Dns/z_en_dns.h index 4b730abd3..ade8b6174 100644 --- a/src/overlays/actors/ovl_En_Dns/z_en_dns.h +++ b/src/overlays/actors/ovl_En_Dns/z_en_dns.h @@ -13,12 +13,12 @@ typedef s32 (*EnDnsFunc)(struct EnDns*, PlayState*); #define ENDNS_GET_4000(thisx) ((thisx)->params & 0x4000) #define ENDNS_GET_8000(thisx) ((thisx)->params & 0x8000) -enum { - /* 0x0 */ ENDNS_GET_7_0, - /* 0x1 */ ENDNS_GET_7_1, - /* 0x2 */ ENDNS_GET_7_2, - /* 0x3 */ ENDNS_GET_7_3, -}; +typedef enum { + /* 0 */ ENDNS_GET_7_0, + /* 1 */ ENDNS_GET_7_1, + /* 2 */ ENDNS_GET_7_2, + /* 3 */ ENDNS_GET_7_3 +} EnDnsParam; typedef struct EnDns { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.c b/src/overlays/actors/ovl_En_Door/z_en_door.c index 91d243464..60d0ec673 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.c +++ b/src/overlays/actors/ovl_En_Door/z_en_door.c @@ -289,10 +289,10 @@ ActorInit En_Door_InitVars = { }; typedef struct { - /* 0x00 */ s16 sceneId; - /* 0x02 */ u8 dListIndex; - /* 0x04 */ s16 objectId; -} EnDoorInfo; + /* 0x0 */ s16 sceneId; + /* 0x2 */ u8 dListIndex; + /* 0x4 */ s16 objectId; +} EnDoorInfo; // size = 0x6 static EnDoorInfo sObjInfo[] = { { SCENE_MITURIN, 0x01, OBJECT_NUMA_OBJ }, @@ -394,7 +394,7 @@ void EnDoor_Init(Actor* thisx, PlayState* play2) { this->doorType = ENDOOR_GET_TYPE(thisx); - this->switchFlag = ENDOOR_GET_PARAMS_7F(thisx); + this->switchFlag = ENDOOR_GET_PARAM_7F(thisx); if ((this->doorType == ENDOOR_TYPE_7) && (this->switchFlag == 0)) { DynaPolyActor_Init(&this->knobDoor.dyna, 0); DynaPolyActor_LoadMesh(play, &this->knobDoor.dyna, &gDoorCol); diff --git a/src/overlays/actors/ovl_En_Door/z_en_door.h b/src/overlays/actors/ovl_En_Door/z_en_door.h index b6fc7c254..03dc31ab6 100644 --- a/src/overlays/actors/ovl_En_Door/z_en_door.h +++ b/src/overlays/actors/ovl_En_Door/z_en_door.h @@ -10,7 +10,7 @@ struct EnDoor; typedef void (*EnDoorActionFunc)(struct EnDoor*, PlayState*); #define ENDOOR_GET_TYPE(thisx) (((thisx)->params >> 7) & 7) -#define ENDOOR_GET_PARAMS_7F(thisx) (((thisx)->params) & 0x7F) +#define ENDOOR_GET_PARAM_7F(thisx) (((thisx)->params) & 0x7F) typedef enum EnDoorType { /* 0 */ ENDOOR_TYPE_0, diff --git a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c index f03b2702e..d2acb55be 100644 --- a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c +++ b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c @@ -35,17 +35,17 @@ typedef enum { /* 0 */ DEEP_PYTHON_EXTEND_STATE_NOT_FULLY_EXTENDED, /* 1 */ DEEP_PYTHON_EXTEND_STATE_FULLY_EXTENDED, /* 2 */ DEEP_PYTHON_EXTEND_STATE_REPEAT_LARGE_SWAY, - /* 3 */ DEEP_PYTHON_EXTEND_STATE_REPEAT_SMALL_SWAY, + /* 3 */ DEEP_PYTHON_EXTEND_STATE_REPEAT_SMALL_SWAY } DeepPythonExtendState; typedef enum { /* 0 */ DEEP_PYTHON_GRAB_STATE_START, - /* 1 */ DEEP_PYTHON_GRAB_STATE_GRABBED, + /* 1 */ DEEP_PYTHON_GRAB_STATE_GRABBED } DeepPythonGrabState; typedef enum { /* 0 */ DEEP_PYTHON_ATTACK_STATE_START, - /* 1 */ DEEP_PYTHON_ATTACK_STATE_RELEASED, + /* 1 */ DEEP_PYTHON_ATTACK_STATE_RELEASED } DeepPythonAttackState; static s32 sNumPythonsDead = 0; diff --git a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.h b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.h index 2d5f31b54..a35c8fa9b 100644 --- a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.h +++ b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.h @@ -13,7 +13,7 @@ typedef enum { /* 3 */ DEEP_PYTHON_ACTION_DAMAGE, /* 4 */ DEEP_PYTHON_ACTION_RETREAT, /* 5 */ DEEP_PYTHON_ACTION_SETUP_DEAD, - /* 6 */ DEEP_PYTHON_ACTION_DEAD, + /* 6 */ DEEP_PYTHON_ACTION_DEAD } DeepPythonAction; struct EnDragon; diff --git a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c index 6f67950ab..2a9a0ac67 100644 --- a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c +++ b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c @@ -13,7 +13,7 @@ typedef enum { /* 0 */ EGBLOCK_EFFECT_DEBRIS_SOLID, - /* 1 */ EGBLOCK_EFFECT_DEBRIS_FLAT, + /* 1 */ EGBLOCK_EFFECT_DEBRIS_FLAT } EnEgblockEffectType; void EnEgblock_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Egol/z_en_egol.c b/src/overlays/actors/ovl_En_Egol/z_en_egol.c index bcb7c6fa2..c9750991a 100644 --- a/src/overlays/actors/ovl_En_Egol/z_en_egol.c +++ b/src/overlays/actors/ovl_En_Egol/z_en_egol.c @@ -37,7 +37,7 @@ typedef enum { /* 0 */ EYEGORE_EFFECT_IMPACT, /* 1 */ EYEGORE_EFFECT_PIECE_LARGE, /* 2 */ EYEGORE_EFFECT_PIECE_SMALL, - /* 3 */ EYEGORE_EFFECT_DEBRIS, + /* 3 */ EYEGORE_EFFECT_DEBRIS } EnEgolEffectType; typedef enum { @@ -56,7 +56,7 @@ typedef enum { /* 12 */ EYEGORE_ANIM_SIT, /* 13 */ EYEGORE_ANIM_LEFT_PUNCH, /* 14 */ EYEGORE_ANIM_RIGHT_PUNCH, - /* 15 */ EYEGORE_ANIM_MAX, + /* 15 */ EYEGORE_ANIM_MAX } EnEgolAnimation; typedef enum { @@ -64,7 +64,7 @@ typedef enum { /* 1 */ EYEGORE_LASER_START, /* 2 */ EYEGORE_LASER_CHARGING, /* 3 */ EYEGORE_LASER_FIRE, - /* 7 */ EYEGORE_LASER_ON = 7, + /* 7 */ EYEGORE_LASER_ON = 7 } EnEgolLaserState; void EnEgol_Init(Actor* thisx, PlayState* play); @@ -238,7 +238,7 @@ typedef enum { /* 0x0 */ EYEGORE_DMGEFF_IMMUNE_0, /* 0x4 */ EYEGORE_DMGEFF_LIGHT_ARROW = 4, /* 0xE */ EYEGORE_DMGEFF_NONE = 0xE, - /* 0xF */ EYEGORE_DMGEFF_IMMUNE_F, + /* 0xF */ EYEGORE_DMGEFF_IMMUNE_F } EnEgolDamageEffect; static DamageTable sDamageTable = { @@ -1101,7 +1101,7 @@ void EnEgol_Death(EnEgol* this, PlayState* play) { typedef enum { /* 0 */ EYEGORE_HIT_NONE, /* 1 */ EYEGORE_HIT_DAMAGE, - /* 2 */ EYEGORE_HIT_IMMUNE, // Makes hitmarks, but no reaction + /* 2 */ EYEGORE_HIT_IMMUNE // Makes hitmarks, but no reaction } EyegoreHitReaction; void EnEgol_CollisionCheck(EnEgol* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.h b/src/overlays/actors/ovl_En_Elf/z_en_elf.h index 680d59158..18e444e97 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.h +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.h @@ -50,14 +50,14 @@ typedef struct EnElf { } EnElf; // size = 0x274 typedef enum { - /* 0x00 */ ENELF_TYPE_0, - /* 0x01 */ ENELF_TYPE_1, - /* 0x02 */ ENELF_TYPE_2, - /* 0x03 */ ENELF_TYPE_3, - /* 0x04 */ ENELF_TYPE_4, - /* 0x05 */ ENELF_TYPE_5, - /* 0x06 */ ENELF_TYPE_6, - /* 0x07 */ ENELF_TYPE_7 + /* 0 */ ENELF_TYPE_0, + /* 1 */ ENELF_TYPE_1, + /* 2 */ ENELF_TYPE_2, + /* 3 */ ENELF_TYPE_3, + /* 4 */ ENELF_TYPE_4, + /* 5 */ ENELF_TYPE_5, + /* 6 */ ENELF_TYPE_6, + /* 7 */ ENELF_TYPE_7 } FairyType; #endif // Z_EN_ELF_H diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.h b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.h index 975b08c2c..692a76d82 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.h +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.h @@ -10,13 +10,13 @@ typedef void (*EnElfgrpActionFunc)(struct EnElfgrp*, PlayState*); #define ENELFGRP_GET(thisx) ((thisx)->params & 0xF) #define ENELFGRP_GET_FE00(thisx) (((thisx)->params & 0xFE00) >> 9) -enum { +typedef enum { /* 0 */ ENELFGRP_0, /* 2 */ ENELFGRP_1, /* 2 */ ENELFGRP_2, /* 3 */ ENELFGRP_3, - /* 4 */ ENELFGRP_4, -}; + /* 4 */ ENELFGRP_4 +} EnElfgrpParam; typedef struct EnElfgrp { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h index 5c8e6db83..85e1b3ca4 100644 --- a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h +++ b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h @@ -18,7 +18,7 @@ typedef enum EnEncount1Enemy { /* 0 */ EN_ENCOUNT1_GRASSHOPPER, /* 1 */ EN_ENCOUNT1_WALLMASTER, /* 2 */ EN_ENCOUNT1_SKULLFISH, - /* 3 */ EN_ENCOUNT1_SKULLFISH_2, + /* 3 */ EN_ENCOUNT1_SKULLFISH_2 } EnEncount1Enemy; struct EnEncount1; diff --git a/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c b/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c index 8d9a18cf1..972d038ae 100644 --- a/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c +++ b/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c @@ -103,11 +103,11 @@ void func_809C4078(EnEncount4* this, PlayState* play) { return; } - fireWallParams = BGFIREWALL_PARAMS_0; + fireWallParams = BGFIREWALL_PARAM_0; if ((this->unk_148 == 0) || (captainKeeta->unk2DC != 0)) { i = 0; if (this->unk_148 != 0) { - fireWallParams = BGFIREWALL_PARAMS_1; + fireWallParams = BGFIREWALL_PARAM_1; i = 2; } while (i < ARRAY_COUNT(D_809C46DC)) { @@ -174,7 +174,7 @@ void func_809C42A8(EnEncount4* this, PlayState* play) { pos.x += Math_SinS(yRot) * (40.0f + randPlusMinusPoint5Scaled(40.0f)); pos.z += Math_CosS(yRot) * (40.0f + randPlusMinusPoint5Scaled(40.0f)); if (Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_SKB, pos.x, pos.y, pos.z, 0, 0, 0, - ENSKB_PARAMS_0) != NULL) { + ENSKB_PARAM_0) != NULL) { this->unk_14C++; if (this->unk_14C >= 2) { this->actionFunc = func_809C4598; diff --git a/src/overlays/actors/ovl_En_Estone/z_en_estone.h b/src/overlays/actors/ovl_En_Estone/z_en_estone.h index ceb26c9c6..f9b44b944 100644 --- a/src/overlays/actors/ovl_En_Estone/z_en_estone.h +++ b/src/overlays/actors/ovl_En_Estone/z_en_estone.h @@ -11,7 +11,7 @@ typedef void (*EnEstoneActionFunc)(struct EnEstone*, PlayState*); typedef enum { /* 0 */ ENESTONE_TYPE_LARGE, - /* 1 */ ENESTONE_TYPE_SMALL, + /* 1 */ ENESTONE_TYPE_SMALL } EnEstoneType; typedef struct { diff --git a/src/overlays/actors/ovl_En_Fall/z_en_fall.c b/src/overlays/actors/ovl_En_Fall/z_en_fall.c index 8c975dbad..2f226e61c 100644 --- a/src/overlays/actors/ovl_En_Fall/z_en_fall.c +++ b/src/overlays/actors/ovl_En_Fall/z_en_fall.c @@ -52,11 +52,11 @@ void EnFall_FireRing_Draw(Actor* thisx, PlayState* play); void EnFall_MoonsTear_Draw(Actor* thisx, PlayState* play); typedef struct { - u8 modelIndex; - Vec3f pos; - Vec3f velocity; - Vec3s rot; -} EnFallDebrisEffect; + /* 0x00 */ u8 modelIndex; + /* 0x04 */ Vec3f pos; + /* 0x10 */ Vec3f velocity; + /* 0x1C */ Vec3s rot; +} EnFallDebrisEffect; // size = 0x24 #define EN_FALL_DEBRIS_EFFECT_COUNT 50 diff --git a/src/overlays/actors/ovl_En_Fall/z_en_fall.h b/src/overlays/actors/ovl_En_Fall/z_en_fall.h index c9eaaf44f..60bb7ec33 100644 --- a/src/overlays/actors/ovl_En_Fall/z_en_fall.h +++ b/src/overlays/actors/ovl_En_Fall/z_en_fall.h @@ -19,7 +19,7 @@ typedef enum { /* 9 */ EN_FALL_TYPE_CLOCK_TOWER_MOON, /* 10 */ EN_FALL_TYPE_STOPPED_MOON_OPEN_MOUTH, /* 11 */ EN_FALL_TYPE_CRASH_FIRE_RING, - /* 12 */ EN_FALL_TYPE_LODMOON_INVERTED_STONE_TOWER, + /* 12 */ EN_FALL_TYPE_LODMOON_INVERTED_STONE_TOWER } EnFallType; struct EnFall; diff --git a/src/overlays/actors/ovl_En_Fg/z_en_fg.h b/src/overlays/actors/ovl_En_Fg/z_en_fg.h index 6440812ca..a1917b9bc 100644 --- a/src/overlays/actors/ovl_En_Fg/z_en_fg.h +++ b/src/overlays/actors/ovl_En_Fg/z_en_fg.h @@ -9,21 +9,21 @@ typedef void (*EnFgActionFunc)(struct EnFg*, PlayState*); // Based on the envColor data. Related to params but mostly unused. typedef enum { - /* 0x0 */ FG_YELLOW, - /* 0x1 */ FG_CYAN, - /* 0x2 */ FG_PINK, - /* 0x3 */ FG_BLUE, - /* 0x4 */ FG_WHITE, - /* 0x5 */ FG_BLACK, // All frogs are blackened when hit by an explosion + /* 0 */ FG_YELLOW, + /* 1 */ FG_CYAN, + /* 2 */ FG_PINK, + /* 3 */ FG_BLUE, + /* 4 */ FG_WHITE, + /* 5 */ FG_BLACK // All frogs are blackened when hit by an explosion } FrogType; typedef enum { - /* 0x0 */ FG_DMGEFFECT_NONE, - /* 0x1 */ FG_DMGEFFECT_EXPLOSION, // Bomb or bombchu, not powderkeg - /* 0x2 */ FG_DMGEFFECT_DEKUSTICK, - /* 0x3 */ FG_DMGEFFECT_HOOKSHOT, - /* 0x4 */ FG_DMGEFFECT_ARROW, - /* 0x5 */ FG_DMGEFFECT_ICEARROW, + /* 0 */ FG_DMGEFFECT_NONE, + /* 1 */ FG_DMGEFFECT_EXPLOSION, // Bomb or bombchu, not powderkeg + /* 2 */ FG_DMGEFFECT_DEKUSTICK, + /* 3 */ FG_DMGEFFECT_HOOKSHOT, + /* 4 */ FG_DMGEFFECT_ARROW, + /* 5 */ FG_DMGEFFECT_ICEARROW } FrogDamageEffect; typedef struct { diff --git a/src/overlays/actors/ovl_En_Fish/z_en_fish.h b/src/overlays/actors/ovl_En_Fish/z_en_fish.h index d3941906c..2a348051e 100644 --- a/src/overlays/actors/ovl_En_Fish/z_en_fish.h +++ b/src/overlays/actors/ovl_En_Fish/z_en_fish.h @@ -7,12 +7,12 @@ struct EnFish; typedef void (*EnFishUnkFunc)(Actor*, PlayState*); -enum { +typedef enum { /* -1 */ ENFISH_MINUS1 = -1, /* 0 */ ENFISH_0, /* 1 */ ENFISH_1, - /* 2 */ ENFISH_2, -}; + /* 2 */ ENFISH_2 +} EnFishParam; typedef struct EnFish { /* 0x000 */ Actor actor; 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 010106fe5..2ada30cba 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -25,24 +25,24 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2); void EnFishing_DrawOwner(Actor* thisx, PlayState* play); typedef struct { - /* 0x00 */ u8 unk_00; - /* 0x02 */ Vec3s pos; - /* 0x08 */ u8 unk_08; - /* 0x0C */ f32 unk_0C; + /* 0x0 */ u8 unk_00; + /* 0x2 */ Vec3s pos; + /* 0x8 */ u8 unk_08; + /* 0xC */ f32 unk_0C; } FishingFishInit; // size = 0x10 #define EFFECT_COUNT 130 typedef enum { - /* 0x00 */ FS_EFF_NONE, - /* 0x01 */ FS_EFF_RIPPLE, - /* 0x02 */ FS_EFF_DUST_SPLASH, - /* 0x03 */ FS_EFF_WATER_DUST, - /* 0x04 */ FS_EFF_BUBBLE, - /* 0x05 */ FS_EFF_RAIN_DROP, - /* 0x06 */ FS_EFF_OWNER_HAT, - /* 0x07 */ FS_EFF_RAIN_RIPPLE, - /* 0x08 */ FS_EFF_RAIN_SPLASH + /* 0 */ FS_EFF_NONE, + /* 1 */ FS_EFF_RIPPLE, + /* 2 */ FS_EFF_DUST_SPLASH, + /* 3 */ FS_EFF_WATER_DUST, + /* 4 */ FS_EFF_BUBBLE, + /* 5 */ FS_EFF_RAIN_DROP, + /* 6 */ FS_EFF_OWNER_HAT, + /* 7 */ FS_EFF_RAIN_RIPPLE, + /* 8 */ FS_EFF_RAIN_SPLASH } FishingEffectType; typedef struct { @@ -73,9 +73,9 @@ typedef enum { } FishingPropType; typedef struct { - /* 0x00 */ u8 type; - /* 0x02 */ Vec3s pos; -} FishingPropInit; // size = 0x08 + /* 0x0 */ u8 type; + /* 0x2 */ Vec3s pos; +} FishingPropInit; // size = 0x8 typedef struct { /* 0x00 */ Vec3f pos; @@ -93,8 +93,8 @@ typedef struct { } FishingProp; // size = 0x3C typedef enum { - /* 0x00 */ FS_GROUP_FISH_NONE, - /* 0x01 */ FS_GROUP_FISH_NORMAL + /* 0 */ FS_GROUP_FISH_NONE, + /* 1 */ FS_GROUP_FISH_NORMAL } FishingGroupFishType; #define GROUP_FISH_COUNT 60 diff --git a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h index 002f9e67c..628cad4f6 100644 --- a/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h +++ b/src/overlays/actors/ovl_En_Floormas/z_en_floormas.h @@ -11,12 +11,12 @@ typedef void (*EnFloormasActionFunc)(struct EnFloormas*, PlayState*); #define ENFLOORMAS_GET_7FFF(thisx) ((thisx)->params & 0x7FFF) #define ENFLOORMAS_GET_8000(thisx) ((thisx)->params & 0x8000) -enum { +typedef enum { /* 0x00 */ ENFLOORMAS_GET_7FFF_0, /* 0x10 */ ENFLOORMAS_GET_7FFF_10 = 0x10, /* 0x20 */ ENFLOORMAS_GET_7FFF_20 = 0x20, - /* 0x40 */ ENFLOORMAS_GET_7FFF_40 = 0x40, -}; + /* 0x40 */ ENFLOORMAS_GET_7FFF_40 = 0x40 +} EnFloormasParam; typedef struct EnFloormas { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Fz/z_en_fz.h b/src/overlays/actors/ovl_En_Fz/z_en_fz.h index 539560c88..ac1cb0648 100644 --- a/src/overlays/actors/ovl_En_Fz/z_en_fz.h +++ b/src/overlays/actors/ovl_En_Fz/z_en_fz.h @@ -13,12 +13,12 @@ typedef void (*EnFzUnkFunc)(struct EnFz*); #define ENFZ_GET_4000(thisx) ((thisx)->params & 0x4000) #define ENFZ_GET_8000(thisx) ((thisx)->params & 0x8000) -enum { +typedef enum { /* 0 */ ENFZ_F_0, /* 1 */ ENFZ_F_1, /* 2 */ ENFZ_F_2, - /* 3 */ ENFZ_F_3, -}; + /* 3 */ ENFZ_F_3 +} EnFzParam; typedef struct { /* 0x00 */ u8 unk_00; diff --git a/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.h b/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.h index 04d9c7159..5602a3b4f 100644 --- a/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.h +++ b/src/overlays/actors/ovl_En_Gakufu/z_en_gakufu.h @@ -10,8 +10,8 @@ typedef void (*EnGakufuActionFunc)(struct EnGakufu*, PlayState*); #define GAKUFU_GET_TYPE(thisx) ((thisx)->params & 0xF) typedef enum { - /* 0x0 */ GAKUFU_TERMINA_FIELD, - /* 0x1 */ GAKUFU_MILK_BAR + /* 0 */ GAKUFU_TERMINA_FIELD, + /* 1 */ GAKUFU_MILK_BAR } GakufuType; typedef struct EnGakufu { diff --git a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.h b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.h index 87cee9e99..a257ab3d4 100644 --- a/src/overlays/actors/ovl_En_Gb2/z_en_gb2.h +++ b/src/overlays/actors/ovl_En_Gb2/z_en_gb2.h @@ -10,11 +10,11 @@ typedef void (*EnGb2ActionFunc)(struct EnGb2*, PlayState*); #define ENGB2_GET_7(thisx) ((thisx)->params & 7) #define ENGB2_GET_7F8(thisx) (((thisx)->params & 0x7F8) >> 3) -enum { +typedef enum { /* 0 */ ENGB2_7_0, /* 1 */ ENGB2_7_1, - /* 2 */ ENGB2_7_2, -}; + /* 2 */ ENGB2_7_2 +} EnGb2Param; typedef struct EnGb2 { /* 0x0000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c index 0a8aea2fd..c78f14048 100644 --- a/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c +++ b/src/overlays/actors/ovl_En_Ge1/z_en_ge1.c @@ -69,8 +69,8 @@ typedef enum { /* 6 */ GERUDO_WHITE_ANIM_EXCITED_CLAPPING, /* 7 */ GERUDO_WHITE_ANIM_SALUTE, /* 8 */ GERUDO_WHITE_ANIM_LEADING_BOAT, - /* 9 */ GERUDO_WHITE_ANIM_BLOWN_AWAY, -} GerudoWhiteAnimations; + /* 9 */ GERUDO_WHITE_ANIM_BLOWN_AWAY +} GerudoWhiteAnimation; void EnGe1_ChangeAnim(EnGe1* this, s16 animIndex, u8 mode, f32 morphFrames); void EnGe1_ShadowDraw(Actor* thisx, Lights* lights, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Gg/z_en_gg.h b/src/overlays/actors/ovl_En_Gg/z_en_gg.h index cc744cffa..802024897 100644 --- a/src/overlays/actors/ovl_En_Gg/z_en_gg.h +++ b/src/overlays/actors/ovl_En_Gg/z_en_gg.h @@ -21,7 +21,7 @@ typedef struct EnGgStruct { /* 0x40 */ s32 unk_40; /* 0x44 */ s32 unk_44; /* 0x48 */ u8 unk_48; -} EnGgStruct; // size == 0x4C +} EnGgStruct; // size = 0x4C typedef struct EnGg { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Giant/z_en_giant.h b/src/overlays/actors/ovl_En_Giant/z_en_giant.h index 45e89dd55..5842a62da 100644 --- a/src/overlays/actors/ovl_En_Giant/z_en_giant.h +++ b/src/overlays/actors/ovl_En_Giant/z_en_giant.h @@ -35,7 +35,7 @@ typedef enum { /* 12 */ GIANT_TYPE_MOUNTAIN_CLOCK_TOWER_FAILURE, /* 13 */ GIANT_TYPE_CANYON_CLOCK_TOWER_FAILURE, /* 14 */ GIANT_TYPE_SWAMP_CLOCK_TOWER_FAILURE, - /* 15 */ GIANT_TYPE_OCEAN_CLOCK_TOWER_FAILURE, + /* 15 */ GIANT_TYPE_OCEAN_CLOCK_TOWER_FAILURE } GiantType; struct EnGiant; 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 a76d89e7b..b40c2287a 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 @@ -47,7 +47,7 @@ typedef enum { /* 1 */ GINKO_ANIM_SITTING, /* 2 */ GINKO_ANIM_REACHING, /* 3 */ GINKO_ANIM_AMAZED, - /* 4 */ GINKO_ANIM_ADVERTISING, + /* 4 */ GINKO_ANIM_ADVERTISING } GinkoAnimation; static AnimationInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.h b/src/overlays/actors/ovl_En_GirlA/z_en_girla.h index f61b50b5a..e155ef6df 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.h +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.h @@ -48,16 +48,16 @@ typedef struct EnGirlA { } EnGirlA; // size = 0x1CC typedef enum { - /* 0x0 */ CANBUY_RESULT_SUCCESS_1, - /* 0x1 */ CANBUY_RESULT_SUCCESS_2, - /* 0x2 */ CANBUY_RESULT_NO_ROOM, - /* 0x3 */ CANBUY_RESULT_NEED_EMPTY_BOTTLE, - /* 0x4 */ CANBUY_RESULT_NEED_RUPEES, - /* 0x5 */ CANBUY_RESULT_CANNOT_GET_NOW, - /* 0x6 */ CANBUY_RESULT_CANNOT_GET_NOW_2, - /* 0x7 */ CANBUY_RESULT_NO_ROOM_2, - /* 0x8 */ CANBUY_RESULT_ALREADY_HAVE, - /* 0x9 */ CANBUY_RESULT_HAVE_BETTER + /* 0 */ CANBUY_RESULT_SUCCESS_1, + /* 1 */ CANBUY_RESULT_SUCCESS_2, + /* 2 */ CANBUY_RESULT_NO_ROOM, + /* 3 */ CANBUY_RESULT_NEED_EMPTY_BOTTLE, + /* 4 */ CANBUY_RESULT_NEED_RUPEES, + /* 5 */ CANBUY_RESULT_CANNOT_GET_NOW, + /* 6 */ CANBUY_RESULT_CANNOT_GET_NOW_2, + /* 7 */ CANBUY_RESULT_NO_ROOM_2, + /* 8 */ CANBUY_RESULT_ALREADY_HAVE, + /* 9 */ CANBUY_RESULT_HAVE_BETTER } EnGirlACanBuyResult; typedef enum { diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.h b/src/overlays/actors/ovl_En_Gk/z_en_gk.h index fd724cc7c..130b97675 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.h +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.h @@ -13,14 +13,14 @@ typedef void (*EnGkActionFunc)(struct EnGk*, PlayState*); #define ENGK_PATH_INDEX_NONE 0xF -enum { +typedef enum { /* 0 */ ENGK_F_0, /* 1 */ ENGK_F_1, /* 2 */ ENGK_F_2, /* 3 */ ENGK_F_3, /* 4 */ ENGK_F_4, - /* 5 */ ENGK_F_5, -}; + /* 5 */ ENGK_F_5 +} EnGkParam; typedef struct EnGk { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.h b/src/overlays/actors/ovl_En_Go/z_en_go.h index 23c02a9c4..5162a4f77 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.h +++ b/src/overlays/actors/ovl_En_Go/z_en_go.h @@ -56,7 +56,7 @@ typedef enum EnGoType { /* 5 */ ENGO_ASIDE_STORE, // Shrine Goron outside store /* 6 */ ENGO_ASIDE_ELDERSROOM, // Shrine Goron outside Elder's room /* 7 */ ENGO_ASIDE_ELDERSSON, // Shrine Goron aside the Elder's Son - /* 8 */ ENGO_MEDIGORON, // Medigoron selling Powder Kegs + /* 8 */ ENGO_MEDIGORON // Medigoron selling Powder Kegs } EnGoType; /** @@ -70,7 +70,7 @@ typedef enum EnGoRacetrackSubtype { /* 4 */ ENGO_ATHLETIC_HAMSTRINGSIT, /* 5 */ ENGO_ATHLETIC_HAMSTRINGSTAND, /* 6 */ ENGO_SPECTATOR_CHEER, - /* 7 */ ENGO_SPECTATOR_SHOUTING, + /* 7 */ ENGO_SPECTATOR_SHOUTING } EnGoRacetrackSubtype; /** @@ -78,7 +78,7 @@ typedef enum EnGoRacetrackSubtype { */ typedef enum EnGoGraveyardSubtype { /* 0 */ ENGO_GRAVEYARD_GRAVEMAKER, - /* 1 */ ENGO_GRAVEYARD_FROZEN, + /* 1 */ ENGO_GRAVEYARD_FROZEN } EnGoGraveyardSubtype; typedef struct EnGo { diff --git a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h index e672355e5..2ace5ff85 100644 --- a/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h +++ b/src/overlays/actors/ovl_En_Goroiwa/z_en_goroiwa.h @@ -14,27 +14,27 @@ typedef s32 (*EnGoroiwaUnkFunc)(struct EnGoroiwa*); #define ENGOROIWA_GET_300(thisx) (((thisx)->params >> 0x8) & 3) #define ENGOROIWA_GET_FF(thisx) ((thisx)->params & 0xFF) -enum { +typedef enum { /* 0 */ ENGOROIWA_300_0, /* 1 */ ENGOROIWA_300_1, - /* 3 */ ENGOROIWA_300_3 = 3, -}; + /* 3 */ ENGOROIWA_300_3 = 3 +} EnGoroiwaParam300; -enum { +typedef enum { /* 0 */ ENGOROIWA_400_0, - /* 1 */ ENGOROIWA_400_1, -}; + /* 1 */ ENGOROIWA_400_1 +} EnGoroiwaParam400; -enum { +typedef enum { /* 0 */ ENGOROIWA_3000_0, /* 1 */ ENGOROIWA_3000_1, - /* 2 */ ENGOROIWA_3000_2, -}; + /* 2 */ ENGOROIWA_3000_2 +} EnGoroiwaParam3000; -enum { +typedef enum { /* 1 */ ENGOROIWA_C000_1 = 1, - /* 2 */ ENGOROIWA_C000_2, -}; + /* 2 */ ENGOROIWA_C000_2 +} EnGoroiwaParamC000; typedef struct { /* 0x00 */ Vec3f unk_00; diff --git a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c index c4ff0959c..7fbed6122 100644 --- a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c +++ b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c @@ -52,18 +52,18 @@ typedef enum { /* 7 */ EN_GRASSHOPPER_ACTION_WAIT_AFTER_ATTACK, /* 8 */ EN_GRASSHOPPER_ACTION_DAMAGED, /* 9 */ EN_GRASSHOPPER_ACTION_DEAD, - /* 10 */ EN_GRASSHOPPER_ACTION_FALL, + /* 10 */ EN_GRASSHOPPER_ACTION_FALL } EnGrasshopperAction; typedef enum { /* 0 */ EN_GRASSHOPPER_DECISION_ATTACK, /* 1 */ EN_GRASSHOPPER_DECISION_FLY, - /* 2 */ EN_GRASSHOPPER_DECISION_ROAM_IN_CIRCLES, // Never used in the final game + /* 2 */ EN_GRASSHOPPER_DECISION_ROAM_IN_CIRCLES // Never used in the final game } EnGrasshopperNextAction; typedef enum { /* 0 */ EN_GRASSHOPPER_BANK_STATE_BANKING, - /* 1 */ EN_GRASSHOPPER_BANK_STATE_DONE, + /* 1 */ EN_GRASSHOPPER_BANK_STATE_DONE } EnGrasshopperBankState; typedef enum { @@ -74,7 +74,7 @@ typedef enum { /* 4 */ EN_GRASSHOPPER_ANIM_HOVER, /* 5 */ EN_GRASSHOPPER_ANIM_DAMAGE, /* 6 */ EN_GRASSHOPPER_ANIM_DEAD, - /* 7 */ EN_GRASSHOPPER_ANIM_FALL, + /* 7 */ EN_GRASSHOPPER_ANIM_FALL } EnGrasshopperAnim; static s32 sOccupiedIndices[] = { @@ -99,7 +99,7 @@ typedef enum { /* 0x3 */ EN_GRASSHOPPER_DMGEFF_FREEZE, // Damages and freezes the Dragonfly in ice /* 0x4 */ EN_GRASSHOPPER_DMGEFF_LIGHT_ORB, // Damages and surrounds the Dragonfly with light orbs /* 0xE */ EN_GRASSHOPPER_DMGEFF_HOOK = 0xE, // If hit by the Hookshot, it pulls the Dragonfly towards the player - /* 0xF */ EN_GRASSHOPPER_DMGEFF_NONE, // Deals regular damage with no extra effect + /* 0xF */ EN_GRASSHOPPER_DMGEFF_NONE // Deals regular damage with no extra effect } EnDragonflyDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.h b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.h index 11ed8a130..049091393 100644 --- a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.h +++ b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.h @@ -17,7 +17,7 @@ typedef enum EnGrasshopperType { /* 0 */ EN_GRASSHOPPER_TYPE_NORMAL, /* 1 */ EN_GRASSHOPPER_TYPE_GROWS_WHEN_SPAWNED, // Spawned by EnEncount1 /* 2 */ EN_GRASSHOPPER_TYPE_WOODFALL_TEMPLE_FINAL_ROOM, - /* 3 */ EN_GRASSHOPPER_TYPE_WOODFALL, + /* 3 */ EN_GRASSHOPPER_TYPE_WOODFALL } EnGrasshopperType; typedef struct EnGrasshopperEffect { diff --git a/src/overlays/actors/ovl_En_Gs/z_en_gs.h b/src/overlays/actors/ovl_En_Gs/z_en_gs.h index 42efabb61..b7af0c582 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.h +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.h @@ -11,12 +11,12 @@ typedef void (*EnGsActionFunc)(struct EnGs*, PlayState*); #define ENGS_GET_FE0(thisx) (((thisx)->params >> 5) & 0x7F) #define ENGS_GET_F000(thisx) (((thisx)->params >> 0xC) & 0xF) -enum { +typedef enum { /* 0 */ ENGS_0, /* 1 */ ENGS_1, /* 2 */ ENGS_2, - /* 3 */ ENGS_3, -}; + /* 3 */ ENGS_3 +} EnGsParam; typedef struct EnGs { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c index d27dd5a59..ea93d617f 100644 --- a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c +++ b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c @@ -84,7 +84,7 @@ typedef enum { /* 0 */ WAIT_HEAD_TILT_ANIM, /* 1 */ WALK_ANIM, /* 2 */ DIG_ANIM, - /* 3 */ WALK_ANIM_2, + /* 3 */ WALK_ANIM_2 } EnGuardNutsAnim; typedef enum { diff --git a/src/overlays/actors/ovl_En_Hg/z_en_hg.c b/src/overlays/actors/ovl_En_Hg/z_en_hg.c index 0992aa9d9..180bf8cab 100644 --- a/src/overlays/actors/ovl_En_Hg/z_en_hg.c +++ b/src/overlays/actors/ovl_En_Hg/z_en_hg.c @@ -37,14 +37,14 @@ typedef enum { /* 4 */ HG_ANIM_REACH_FORWARD, /* 5 */ HG_ANIM_CURL_UP, /* 6 */ HG_ANIM_CROUCHED_PANIC, - /* 7 */ HG_ANIM_PANIC, + /* 7 */ HG_ANIM_PANIC } HgAnimation; typedef enum { /* 0 */ HG_CS_FIRST_ENCOUNTER, /* 1 */ HG_CS_GET_MASK, /* 2 */ HG_CS_SUBSEQUENT_ENCOUNTER, - /* 3 */ HG_CS_SONG_OF_HEALING, + /* 3 */ HG_CS_SONG_OF_HEALING } HgCsIndex; ActorInit En_Hg_InitVars = { diff --git a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c index 37d5a61f9..f6c90f6b4 100644 --- a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c +++ b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c @@ -45,7 +45,7 @@ typedef enum { /* 3 */ HGO_ANIM_CONSOLE, /* 4 */ HGO_ANIM_CONSOLE_HEAD_UP, /* 5 */ HGO_ANIM_REACH_DOWN_TO_LIFT, - /* 6 */ HGO_ANIM_TOSS, + /* 6 */ HGO_ANIM_TOSS } HgoAnimation; ActorInit En_Hgo_InitVars = { diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.c b/src/overlays/actors/ovl_En_Horse/z_en_horse.c index b6d2c8c40..787a40da7 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.c +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.c @@ -92,22 +92,22 @@ void EnHorse_StickDirection(Vec2f* curStick, f32* stickMag, s16* angle); s32 EnHorse_GetMountSide(EnHorse* this, PlayState* play); typedef struct { - s32 cueId; - s32 csFuncIdx; -} CsActionEntry; + /* 0x0 */ s32 cueId; + /* 0x4 */ s32 csFuncIdx; +} CsActionEntry; // size = 0x8 typedef struct { - s16 x; - s16 y; - s16 z; - s16 speed; - s16 angle; -} RaceWaypoint; + /* 0x0 */ s16 x; + /* 0x2 */ s16 y; + /* 0x4 */ s16 z; + /* 0x6 */ s16 speed; + /* 0x8 */ s16 angle; +} RaceWaypoint; // size = 0xA typedef struct { - s32 numWaypoints; - RaceWaypoint* waypoints; -} RaceInfo; + /* 0x0 */ s32 numWaypoints; + /* 0x4 */ RaceWaypoint* waypoints; +} RaceInfo; // size = 0x8 static AnimationHeader* sEponaAnimations[] = { &object_horse_link_child_Anim_006D44, &object_horse_link_child_Anim_007468, &object_horse_link_child_Anim_005F64, diff --git a/src/overlays/actors/ovl_En_Horse/z_en_horse.h b/src/overlays/actors/ovl_En_Horse/z_en_horse.h index 0574b3198..3cfc1fb54 100644 --- a/src/overlays/actors/ovl_En_Horse/z_en_horse.h +++ b/src/overlays/actors/ovl_En_Horse/z_en_horse.h @@ -133,7 +133,7 @@ typedef enum EnHorseParam { /* 17 */ ENHORSE_17, /* 18 */ ENHORSE_18, /* 19 */ ENHORSE_19, - /* 20 */ ENHORSE_20, + /* 20 */ ENHORSE_20 } EnHorseParam; /** diff --git a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h index d43f1f90c..9033878a4 100644 --- a/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h +++ b/src/overlays/actors/ovl_En_Horse_Game_Check/z_en_horse_game_check.h @@ -11,7 +11,7 @@ typedef s32 (*EnHorseGameCheckUnkFunc)(struct EnHorseGameCheck*, PlayState*); #define ENHORSEGAMECHECK_GET_FF(thisx) ((thisx)->params & 0xFF) #define ENHORSEGAMECHECK_GET_FF00(thisx) (((thisx)->params & 0xFF00) >> 8) -enum { +typedef enum { /* 0 */ ENHORSEGAMECHECK_FF_0, /* 1 */ ENHORSEGAMECHECK_FF_1, /* 2 */ ENHORSEGAMECHECK_FF_2, @@ -22,8 +22,8 @@ enum { /* 7 */ ENHORSEGAMECHECK_FF_7, /* 8 */ ENHORSEGAMECHECK_FF_8, /* 9 */ ENHORSEGAMECHECK_FF_9, - /* 10 */ ENHORSEGAMECHECK_FF_MAX, -}; + /* 10 */ ENHORSEGAMECHECK_FF_MAX +} EnHorseGameCheckParam; typedef struct EnHorseGameCheck { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c index 71b338121..d4a534ad1 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -169,8 +169,7 @@ typedef enum { /* 0x4 */ DMG_EFF_FIRE = 0x2, /* 0x0 */ DMG_EFF_ICE, /* 0x4 */ DMG_EFF_LIGHT_SPARKS, - /* 0xF */ DMG_EFF_IMMUNE = 0xF, - + /* 0xF */ DMG_EFF_IMMUNE = 0xF } EnIkDmgEff; static DamageTable sDamageTableArmor = { diff --git a/src/overlays/actors/ovl_En_In/z_en_in.h b/src/overlays/actors/ovl_En_In/z_en_in.h index c5d7500b6..6f4dd5d95 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.h +++ b/src/overlays/actors/ovl_En_In/z_en_in.h @@ -33,7 +33,7 @@ typedef enum { /* 14 */ ENIN_ANIM_14, /* 15 */ ENIN_ANIM_15, /* 16 */ ENIN_ANIM_16, - /* 17 */ ENIN_ANIM_17, + /* 17 */ ENIN_ANIM_17 } EnInAnimation; #define ENIN_GET_TYPE(thisx) ((thisx)->params & 0x1FF) diff --git a/src/overlays/actors/ovl_En_Jg/z_en_jg.c b/src/overlays/actors/ovl_En_Jg/z_en_jg.c index 7479a6208..df217b86d 100644 --- a/src/overlays/actors/ovl_En_Jg/z_en_jg.c +++ b/src/overlays/actors/ovl_En_Jg/z_en_jg.c @@ -54,14 +54,14 @@ typedef enum { /* 16 */ EN_JG_ANIM_DEPRESSED, /* 17 */ EN_JG_ANIM_CUTSCENE_IDLE, /* 18 */ EN_JG_ANIM_CRADLE, - /* 19 */ EN_JG_ANIM_MAX, + /* 19 */ EN_JG_ANIM_MAX } EnJgAnimation; typedef enum { - /* 0x0 */ EN_JG_ACTION_FIRST_THAW, - /* 0x1 */ EN_JG_ACTION_SPAWNING, - /* 0x2 */ EN_JG_ACTION_FROZEN_OR_NON_FIRST_THAW, - /* 0x3 */ EN_JG_ACTION_LULLABY_INTRO_CS, + /* 0 */ EN_JG_ACTION_FIRST_THAW, + /* 1 */ EN_JG_ACTION_SPAWNING, + /* 2 */ EN_JG_ACTION_FROZEN_OR_NON_FIRST_THAW, + /* 3 */ EN_JG_ACTION_LULLABY_INTRO_CS } EnJgAction; ActorInit En_Jg_InitVars = { diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 86d74f69a..930a0d7a3 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -113,15 +113,15 @@ Vec3f D_80972030 = { -3.0f, 50.0f, 90.0f }; Vec3f D_8097203C = { 10.0f, -15.0f, 2.0f }; typedef enum { - /* 0x0 */ ENKAKASI_ANIM_ARMS_CROSSED_ROCKING, // arms crossed and rocking back and forth - /* 0x1 */ ENKAKASI_ANIM_SIDEWAYS_SHAKING, - /* 0x2 */ ENKAKASI_ANIM_HOPPING_REGULAR, // bounce bounce bounce (repeat) - /* 0x3 */ ENKAKASI_ANIM_SPIN_REACH_OFFER, // spin and then reaching toward player - /* 0x4 */ ENKAKASI_ANIM_TWIRL, // slower cinimatic twirl - /* 0x5 */ ENKAKASI_ANIM_ARMS_CROSSED_STILL, // arms crossed but still, also some noise sfx - /* 0x6 */ ENKAKASI_ANIM_WAVE, // "wave" short sideways shake, stops early, partial? unused? - /* 0x7 */ ENKAKASI_ANIM_SLOWROLL, // partial bounch, ends looking left, OFFER anim takes over - /* 0x8 */ ENKAKASI_ANIM_IDLE, // slow stretching wiggle, ends in regular position + /* 0 */ ENKAKASI_ANIM_ARMS_CROSSED_ROCKING, // arms crossed and rocking back and forth + /* 1 */ ENKAKASI_ANIM_SIDEWAYS_SHAKING, + /* 2 */ ENKAKASI_ANIM_HOPPING_REGULAR, // bounce bounce bounce (repeat) + /* 3 */ ENKAKASI_ANIM_SPIN_REACH_OFFER, // spin and then reaching toward player + /* 4 */ ENKAKASI_ANIM_TWIRL, // slower cinimatic twirl + /* 5 */ ENKAKASI_ANIM_ARMS_CROSSED_STILL, // arms crossed but still, also some noise sfx + /* 6 */ ENKAKASI_ANIM_WAVE, // "wave" short sideways shake, stops early, partial? unused? + /* 7 */ ENKAKASI_ANIM_SLOWROLL, // partial bounch, ends looking left, OFFER anim takes over + /* 8 */ ENKAKASI_ANIM_IDLE // slow stretching wiggle, ends in regular position } EnKakasiAnimation; static AnimationHeader* sAnimations[] = { diff --git a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c index 66aa6d5c7..34b3d6405 100644 --- a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c +++ b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.c @@ -93,11 +93,11 @@ static ColliderCylinderInit sAttackCylinderInit = { static CollisionCheckInfoInit sColChkInfoInit = { 1, 15, 80, MASS_HEAVY }; typedef enum { - /* 0x0 */ KAREBABA_DMGEFF_NONE, - /* 0x2 */ KAREBABA_DMGEFF_FIRE = 2, - /* 0x3 */ KAREBABA_DMGEFF_ICE, - /* 0x4 */ KAREBABA_DMGEFF_LIGHT, - /* 0x5 */ KAREBABA_DMGEFF_ELECTRIC, + /* 0 */ KAREBABA_DMGEFF_NONE, + /* 2 */ KAREBABA_DMGEFF_FIRE = 2, + /* 3 */ KAREBABA_DMGEFF_ICE, + /* 4 */ KAREBABA_DMGEFF_LIGHT, + /* 5 */ KAREBABA_DMGEFF_ELECTRIC } DekuBabaDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h index aa05aec0a..045bef42a 100644 --- a/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h +++ b/src/overlays/actors/ovl_En_Karebaba/z_en_karebaba.h @@ -11,7 +11,7 @@ typedef void (*EnKarebabaActionFunc)(struct EnKarebaba*, PlayState*); typedef enum { /* 0 */ ENKAREBABA_0, // Unused, always shrinks and drops a Deku Nut /* 1 */ ENKAREBABA_1, // Drops sticks (Only type OoT has) - /* 2 */ KAREBABA_MINI, + /* 2 */ KAREBABA_MINI } KarebabaType; typedef struct EnKarebaba { diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c index 147ca2401..16ce97153 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.c @@ -245,14 +245,14 @@ void EnKusa_DropCollectible(EnKusa* this, PlayState* play) { s32 collectableParams; if ((KUSA_GET_TYPE(&this->actor) == ENKUSA_TYPE_GRASS) || (KUSA_GET_TYPE(&this->actor) == ENKUSA_TYPE_BUSH)) { - if (!KUSA_GET_PARAMS_0C(&this->actor)) { + if (!KUSA_GET_PARAM_0C(&this->actor)) { Item_DropCollectibleRandom(play, NULL, &this->actor.world.pos, KUSA_GET_RAND_COLLECTIBLE_ID(&this->actor) * 0x10); } } else if (KUSA_GET_TYPE(&this->actor) == ENKUSA_TYPE_REGROWING_GRASS) { Item_DropCollectible(play, &this->actor.world.pos, 3); } else { - collectible = func_800A8150(KUSA_GET_PARAMS_3F(&this->actor)); + collectible = func_800A8150(KUSA_GET_PARAM_3F(&this->actor)); if (collectible >= 0) { collectableParams = KUSA_GET_COLLECTIBLE_ID(&this->actor); Item_DropCollectible(play, &this->actor.world.pos, (collectableParams << 8) | collectible); diff --git a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h index 56f55af3e..b231f3e0e 100644 --- a/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h +++ b/src/overlays/actors/ovl_En_Kusa/z_en_kusa.h @@ -28,8 +28,8 @@ typedef struct EnKusa { #define KUSA_GET_COLLECTIBLE_ID(thisx) (((thisx)->params >> 8) & 0x7F) #define KUSA_GET_RAND_COLLECTIBLE_ID(thisx) (((thisx)->params >> 8) & 0xF) #define KUSA_SHOULD_SPAWN_BUGS(thisx) (((thisx)->params >> 0x4) & 1) -#define KUSA_GET_PARAMS_0C(thisx) (((thisx)->params >> 0xC) & 0x1) -#define KUSA_GET_PARAMS_3F(thisx) (((thisx)->params >> 0x2) & 0x3F) +#define KUSA_GET_PARAM_0C(thisx) (((thisx)->params >> 0xC) & 0x1) +#define KUSA_GET_PARAM_3F(thisx) (((thisx)->params >> 0x2) & 0x3F) #define KUSA_GET_TYPE(thisx)((thisx)->params & 0x3) diff --git a/src/overlays/actors/ovl_En_Light/z_en_light.c b/src/overlays/actors/ovl_En_Light/z_en_light.c index 0908649dc..f3c3f4705 100644 --- a/src/overlays/actors/ovl_En_Light/z_en_light.c +++ b/src/overlays/actors/ovl_En_Light/z_en_light.c @@ -31,9 +31,9 @@ ActorInit En_Light_InitVars = { }; typedef struct { - /* 0x00 */ Color_RGBA8 unk_00; - /* 0x04 */ Color_RGB8 unk_04; - /* 0x07 */ u8 unk_07; + /* 0x0 */ Color_RGBA8 unk_00; + /* 0x4 */ Color_RGB8 unk_04; + /* 0x7 */ u8 unk_07; } EnLightStruct; // size = 0x8 EnLightStruct D_808666D0[] = { 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 d295b1c7f..fe26c18eb 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -44,14 +44,14 @@ void EnMa4_InitFaceExpression(EnMa4* this); typedef enum { /* 0 */ MA4_TYPE_DAY1, /* 1 */ MA4_TYPE_ALIENS_DEFEATED, - /* 2 */ MA4_TYPE_ALIENS_WON, + /* 2 */ MA4_TYPE_ALIENS_WON } EnMa4Type; typedef enum { /* 0 */ MA4_STATE_DEFAULT, /* 1 */ MA4_STATE_HORSEBACKGAME, /* 2 */ MA4_STATE_AFTERHORSEBACKGAME, - /* 3 */ MA4_STATE_AFTERDESCRIBETHEMCS, + /* 3 */ MA4_STATE_AFTERDESCRIBETHEMCS } EnMa4State; ActorInit En_Ma4_InitVars = { diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h index 9a3801d91..3e321cc56 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.h @@ -19,9 +19,9 @@ typedef enum { } MinifrogType; typedef enum { - /* 0x00 */ MINIFROG_STATE_JUMP, - /* 0x01 */ MINIFROG_STATE_AIR, - /* 0x02 */ MINIFROG_STATE_GROUND + /* 0 */ MINIFROG_STATE_JUMP, + /* 1 */ MINIFROG_STATE_AIR, + /* 2 */ MINIFROG_STATE_GROUND } MinifrogJumpState; typedef struct EnMinifrog { diff --git a/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c b/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c index 3b6cbaf86..3aac9ae11 100644 --- a/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c +++ b/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c @@ -80,7 +80,7 @@ typedef enum { /* 0x2 */ MINISLIME_DMGEFF_FIRE = 0x2, /* 0x3 */ MINISLIME_DMGEFF_ICE, /* 0xE */ MINISLIME_DMGEFF_HOOKSHOT = 0xE, - /* 0xF */ MINISLIME_DMGEFF_BREAK_ICE, + /* 0xF */ MINISLIME_DMGEFF_BREAK_ICE } MinislimeDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Minislime/z_en_minislime.h b/src/overlays/actors/ovl_En_Minislime/z_en_minislime.h index 77cabe9b6..8d29f2b8a 100644 --- a/src/overlays/actors/ovl_En_Minislime/z_en_minislime.h +++ b/src/overlays/actors/ovl_En_Minislime/z_en_minislime.h @@ -21,13 +21,13 @@ typedef enum { /* 0x8 */ MINISLIME_DEFEAT_MELT, /* 0x9 */ MINISLIME_DESPAWN, /* 0xA */ MINISLIME_SETUP_GEKKO_THROW, - /* 0xB */ MINISLIME_GEKKO_THROW, + /* 0xB */ MINISLIME_GEKKO_THROW } EnMinislimeState; typedef enum { - /* 0x0 */ MINISLIME_INACTIVE_STATE, - /* 0x1 */ MINISLIME_ACTIVE_CONTINUE_STATE, - /* 0x2 */ MINISLIME_ACTIVE_INIT_STATE, + /* 0 */ MINISLIME_INACTIVE_STATE, + /* 1 */ MINISLIME_ACTIVE_CONTINUE_STATE, + /* 2 */ MINISLIME_ACTIVE_INIT_STATE } EnMinislimeActiveState; typedef struct EnMinislime { diff --git a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c index c94a94b12..db05f0d61 100644 --- a/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c +++ b/src/overlays/actors/ovl_En_Mt_tag/z_en_mt_tag.c @@ -23,9 +23,9 @@ void EnMttag_PotentiallyRestartRace(EnMttag* this, PlayState* play); void EnMttag_HandleCantWinChoice(EnMttag* this, PlayState* play); typedef enum { - GORON_RACE_CHEAT_NO_CHEATING, - GORON_RACE_CHEAT_FALSE_START, - GORON_RACE_CHEAT_TRYING_TO_REACH_GOAL_FROM_BEHIND, + /* 0 */ GORON_RACE_CHEAT_NO_CHEATING, + /* 1 */ GORON_RACE_CHEAT_FALSE_START, + /* 2 */ GORON_RACE_CHEAT_TRYING_TO_REACH_GOAL_FROM_BEHIND } PlayerCheatStatus; ActorInit En_Mt_tag_InitVars = { diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 4edadf412..474c1d2df 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -43,7 +43,7 @@ typedef enum EnNbScheduleResult { /* 1 */ EN_NB_SCH_1, /* 2 */ EN_NB_SCH_2, /* 3 */ EN_NB_SCH_3, - /* 4 */ EN_NB_SCH_4, + /* 4 */ EN_NB_SCH_4 } EnNbScheduleResult; static u8 sScheduleScript[] = { diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.h b/src/overlays/actors/ovl_En_Nb/z_en_nb.h index f11464c79..2a784e096 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.h +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.h @@ -17,7 +17,7 @@ typedef enum EnNbAnimation { /* 2 */ EN_NB_ANIM_TALK_ONCE, /* 3 */ EN_NB_ANIM_TALK_LOOP, /* 4 */ EN_NB_ANIM_ANGRY, - /* 5 */ EN_NB_ANIM_RELIEVED, + /* 5 */ EN_NB_ANIM_RELIEVED } EnNbAnimation; typedef struct EnNb { diff --git a/src/overlays/actors/ovl_En_Neo_Reeba/z_en_neo_reeba.c b/src/overlays/actors/ovl_En_Neo_Reeba/z_en_neo_reeba.c index 66098a9d5..755385d00 100644 --- a/src/overlays/actors/ovl_En_Neo_Reeba/z_en_neo_reeba.c +++ b/src/overlays/actors/ovl_En_Neo_Reeba/z_en_neo_reeba.c @@ -57,7 +57,7 @@ typedef enum { /* 0xC */ EN_NEO_REEBA_DMGEFF_HOOKSHOT = 0xC, // No damage, used only for hookshot /* 0xD */ EN_NEO_REEBA_DMGEFF_ELECTRIC_STUN, // Electric effects, frozen in place /* 0xE */ EN_NEO_REEBA_DMGEFF_NONE, // Normal hit - /* 0xF */ EN_NEO_REEBA_DMGEFF_SHATTER, // Normal hit that can break ice if leever is frozen + /* 0xF */ EN_NEO_REEBA_DMGEFF_SHATTER // Normal hit that can break ice if leever is frozen } EnNeoReebaDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c index 03cdad42c..4982f7e75 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -36,7 +36,7 @@ void EnNiw_SpawnFeather(EnNiw* this, Vec3f* pos, Vec3f* vel, Vec3f* accel, f32 s s16 sCuccoStormActive = false; // why wouldnt they just use actionFunc? -enum EnNiwState { +typedef enum EnNiwState { /* 0 */ NIW_STATE_IDLE, /* 1 */ NIW_STATE_ANGRY1, // 1/2/3 are stages of summoning cucco storm /* 2 */ NIW_STATE_ANGRY2, @@ -45,8 +45,8 @@ enum EnNiwState { /* 5 */ NIW_STATE_FALLING, /* 6 */ NIW_STATE_SWIMMING, /* 7 */ NIW_STATE_RUNNING, - /* 8 */ NIW_STATE_HOPPING, -}; + /* 8 */ NIW_STATE_HOPPING +} EnNiwState; ActorInit En_Niw_InitVars = { ACTOR_EN_NIW, diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.h b/src/overlays/actors/ovl_En_Niw/z_en_niw.h index c60397535..06f487800 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.h +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.h @@ -106,7 +106,7 @@ typedef enum { /* 2 */ NIW_ANIM_PECKING_AND_WAVING, // wings move along their axis, like human hand waving /* 3 */ NIW_ANIM_PECKING_AND_FORFLAPPING, // (unused) low (yaw based) flapping, forward and back /* 4 */ NIW_ANIM_FREEZE, // used during Cucco Storm - /* 5 */ NIW_ANIM_PECKING_SLOW_FORFLAPPING, // wing speed half that of 3 + /* 5 */ NIW_ANIM_PECKING_SLOW_FORFLAPPING // wing speed half that of 3 } EnNiwHeadAndWingAnimationState; diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c index ac1e9749a..fc6ef71db 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c @@ -32,14 +32,14 @@ void EnNwc_DrawAdultBody(Actor* thisx, PlayState* play); s32 EnNwc_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, Actor* thisx); EnHs* EnNwc_FindGrog(PlayState* play); -enum EnNiwState { - /* -1 */ NWC_STATE_NIW_LOADED = -1, // set after loading object_niw - /* 0 */ NWC_STATE_CHECK_BREMAN = 0, // checking for breman mask - /* 1 */ NWC_STATE_TURNING, // turning to face a new direction to explore - /* 2 */ NWC_STATE_HOPPING_FORWARD, // hopping to go explore - /* 3 */ NWC_STATE_FOLLOWING, // following the player - /* 4 */ NWC_STATE_RUNNING, // running from the player after failed breman march -}; +typedef enum EnNwcState { + /* -1 */ NWC_STATE_NIW_LOADED = -1, // set after loading object_niw + /* 0 */ NWC_STATE_CHECK_BREMAN, // checking for breman mask + /* 1 */ NWC_STATE_TURNING, // turning to face a new direction to explore + /* 2 */ NWC_STATE_HOPPING_FORWARD, // hopping to go explore + /* 3 */ NWC_STATE_FOLLOWING, // following the player + /* 4 */ NWC_STATE_RUNNING // running from the player after failed breman march +} EnNwcState; ActorInit En_Nwc_InitVars = { ACTOR_EN_NWC, diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index 4ff55d7a0..52f611c0e 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -44,8 +44,8 @@ void EnOwl_ChangeMode(EnOwl* this, EnOwlActionFunc actionFunc, EnOwlFunc unkFunc AnimationHeader* animation, f32 morphFrames); typedef enum { - /* 0x00 */ OWL_REPEAT, - /* 0x01 */ OWL_OK + /* 0 */ OWL_REPEAT, + /* 1 */ OWL_OK } EnOwlMessageChoice; ActorInit En_Owl_InitVars = { diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.h b/src/overlays/actors/ovl_En_Owl/z_en_owl.h index 5e02aba94..095434fa0 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.h +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.h @@ -17,7 +17,7 @@ typedef enum { /* 0x002 */ ENOWL_GET_TYPE_2, /* 0x003 */ ENOWL_GET_TYPE_3, /* 0x01E */ ENOWL_GET_TYPE_30 = 30, - /* 0x3E8 */ ENOWL_GET_TYPE_1000 = 1000, + /* 0x3E8 */ ENOWL_GET_TYPE_1000 = 1000 } EnOwlType; typedef struct EnOwl { diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c index 0caeb9305..079e3027d 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c @@ -80,12 +80,12 @@ ActorInit En_Pametfrog_InitVars = { }; typedef enum { - /* 0x0 */ GEKKO_DMGEFF_NONE, - /* 0x1 */ GEKKO_DMGEFF_STUN, - /* 0x2 */ GEKKO_DMGEFF_FIRE, - /* 0x3 */ GEKKO_DMGEFF_ICE, - /* 0x4 */ GEKKO_DMGEFF_LIGHT, - /* 0x5 */ GEKKO_DMGEFF_ZORA_BARRIER, + /* 0 */ GEKKO_DMGEFF_NONE, + /* 1 */ GEKKO_DMGEFF_STUN, + /* 2 */ GEKKO_DMGEFF_FIRE, + /* 3 */ GEKKO_DMGEFF_ICE, + /* 4 */ GEKKO_DMGEFF_LIGHT, + /* 5 */ GEKKO_DMGEFF_ZORA_BARRIER } EnPametfrogDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h index 90bc0cb1b..31a3be14b 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.h @@ -9,16 +9,16 @@ struct EnPametfrog; typedef void (*EnPametfrogActionFunc)(struct EnPametfrog*, PlayState*); typedef enum { - /* 0x0 */ GEKKO_PRE_SNAPPER, - /* 0x1 */ GEKKO_GET_SNAPPER, - /* 0x2 */ GEKKO_INIT_SNAPPER, - /* 0x3 */ GEKKO_ON_SNAPPER, - /* 0x4 */ GEKKO_REAR_ON_SNAPPER, - /* 0x5 */ GEKKO_CUTSCENE, - /* 0x6 */ GEKKO_FALL_OFF_SNAPPER, - /* 0x7 */ GEKKO_RETURN_TO_SNAPPER, - /* 0x8 */ GEKKO_JUMP_ON_SNAPPER, - /* 0x9 */ GEKKO_DEFEAT, + /* 0 */ GEKKO_PRE_SNAPPER, + /* 1 */ GEKKO_GET_SNAPPER, + /* 2 */ GEKKO_INIT_SNAPPER, + /* 3 */ GEKKO_ON_SNAPPER, + /* 4 */ GEKKO_REAR_ON_SNAPPER, + /* 5 */ GEKKO_CUTSCENE, + /* 6 */ GEKKO_FALL_OFF_SNAPPER, + /* 7 */ GEKKO_RETURN_TO_SNAPPER, + /* 8 */ GEKKO_JUMP_ON_SNAPPER, + /* 9 */ GEKKO_DEFEAT } EnPametfrogState; typedef struct EnPametfrog { diff --git a/src/overlays/actors/ovl_En_Part/z_en_part.h b/src/overlays/actors/ovl_En_Part/z_en_part.h index 662e8574e..5bd4de503 100644 --- a/src/overlays/actors/ovl_En_Part/z_en_part.h +++ b/src/overlays/actors/ovl_En_Part/z_en_part.h @@ -8,11 +8,11 @@ struct EnPart; typedef void (*EnPartActionFunc)(struct EnPart*, PlayState*); typedef enum { - ENPART_TYPE_0 = 0, - ENPART_TYPE_1 = 1, - ENPART_TYPE_4 = 4, - ENPART_TYPE_15 = 15 -} EnPartParams; + /* 0x0 */ ENPART_TYPE_0, + /* 0x1 */ ENPART_TYPE_1, + /* 0x4 */ ENPART_TYPE_4 = 4, + /* 0xF */ ENPART_TYPE_15 = 15 +} EnPartParam; typedef struct EnPart { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c b/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c index 652c19dc7..24517f8aa 100644 --- a/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c +++ b/src/overlays/actors/ovl_En_Po_Fusen/z_en_po_fusen.c @@ -58,7 +58,7 @@ static ColliderSphereInit sSphereInit = { typedef enum { /* 0x0 */ POE_BALLOON_DMGEFF_NONE, - /* 0xF */ POE_BALLOON_DMGEFF_POP = 0xF, + /* 0xF */ POE_BALLOON_DMGEFF_POP = 0xF } PoeBalloonDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c index a1ea97199..357b08bdd 100644 --- a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c +++ b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.c @@ -101,7 +101,7 @@ typedef enum { /* 0x1 */ POE_SISTERS_DMGEFF_UNKDMG12, // set in DamageTable, but unused /* 0x4 */ POE_SISTERS_DMGEFF_LIGHTARROWS = 0x4, /* 0xE */ POE_SISTERS_DMGEFF_SPINATTACK = 0xE, - /* 0xF */ POE_SISTERS_DMGEFF_DEKUNUT = 0xF, + /* 0xF */ POE_SISTERS_DMGEFF_DEKUNUT } PoeSisterDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h index cfb8a1697..f800788c7 100644 --- a/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h +++ b/src/overlays/actors/ovl_En_Po_Sisters/z_en_po_sisters.h @@ -15,17 +15,17 @@ typedef void (*EnPoSistersActionFunc)(struct EnPoSisters*, PlayState*); #define POE_SISTERS_PARAMS(observerFlag, megClone, type) (((observerFlag) << 0xC) | ((megClone & 3) << 0xA) | ((type & 3) << 8)) typedef enum { - /* 0 */ POE_SISTERS_TYPE_MEG, // purple - /* 1 */ POE_SISTERS_TYPE_JO, // red - /* 2 */ POE_SISTERS_TYPE_BETH, // blue - /* 3 */ POE_SISTERS_TYPE_AMY, // green + /* 0 */ POE_SISTERS_TYPE_MEG, // purple + /* 1 */ POE_SISTERS_TYPE_JO, // red + /* 2 */ POE_SISTERS_TYPE_BETH, // blue + /* 3 */ POE_SISTERS_TYPE_AMY // green } EnPoSisterType; typedef enum { /* 0 */ POE_SISTERS_MEG_REAL, /* 1 */ POE_SISTERS_MEG_CLONE1, /* 2 */ POE_SISTERS_MEG_CLONE2, - /* 3 */ POE_SISTERS_MEG_CLONE3, + /* 3 */ POE_SISTERS_MEG_CLONE3 } EnPoSisterMegCloneID; typedef struct EnPoSisters { diff --git a/src/overlays/actors/ovl_En_Pp/z_en_pp.c b/src/overlays/actors/ovl_En_Pp/z_en_pp.c index ef15618c9..6d16c1418 100644 --- a/src/overlays/actors/ovl_En_Pp/z_en_pp.c +++ b/src/overlays/actors/ovl_En_Pp/z_en_pp.c @@ -39,7 +39,7 @@ void EnPp_BodyPart_Move(EnPp* this, PlayState* play); typedef enum { /* 0 */ EN_PP_COLLISION_RESULT_OK, /* 1 */ EN_PP_COLLISION_RESULT_ABOUT_TO_RUN_INTO_WALL, - /* 2 */ EN_PP_COLLISION_RESULT_ABOUT_TO_RUN_OFF_LEDGE, + /* 2 */ EN_PP_COLLISION_RESULT_ABOUT_TO_RUN_OFF_LEDGE } EnPpCollisionResult; typedef enum { @@ -56,13 +56,13 @@ typedef enum { /* 10 */ EN_PP_ACTION_MASK_DEAD, /* 11 */ EN_PP_ACTION_SPAWN_BODY_PARTS, /* 12 */ EN_PP_ACTION_DONE_SPAWNING_BODY_PARTS, - /* 13 */ EN_PP_ACTION_BODY_PART_MOVE, + /* 13 */ EN_PP_ACTION_BODY_PART_MOVE } EnPpAction; typedef enum { /* 0 */ EN_PP_MASK_DETACH_STATE_START, /* 1 */ EN_PP_MASK_DETACH_STATE_FALL, - /* 2 */ EN_PP_MASK_DETACH_STATE_DIE, + /* 2 */ EN_PP_MASK_DETACH_STATE_DIE } EnPpMaskDetachState; static s32 sCurrentDeadBodyPartIndex = 0; @@ -77,7 +77,7 @@ typedef enum { /* 0xC */ EN_PP_DMGEFF_KNOCK_OFF_MASK = 0xC, // Knocks off the Hiploop's mask or deals regular damage /* 0xD */ EN_PP_DMGEFF_HOOKSHOT, // Pulls the Hiploop's mask to the player or deals regular damage /* 0xE */ EN_PP_DMGEFF_GORON_POUND, // Knocks off the Hiploop's mask or forces it to jump - /* 0xF */ EN_PP_DMGEFF_DAMAGE, // Deals regular damage + /* 0xF */ EN_PP_DMGEFF_DAMAGE // Deals regular damage } EnPpDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Pp/z_en_pp.h b/src/overlays/actors/ovl_En_Pp/z_en_pp.h index aabbd9e2e..2409487be 100644 --- a/src/overlays/actors/ovl_En_Pp/z_en_pp.h +++ b/src/overlays/actors/ovl_En_Pp/z_en_pp.h @@ -22,7 +22,7 @@ typedef enum { /* 13 */ EN_PP_TYPE_BODY_PART_FRONT_RIGHT_LOWER_LEG = 13, /* 17 */ EN_PP_TYPE_BODY_PART_LEFT_WING_MIDDLE = 17, /* 23 */ EN_PP_TYPE_BODY_PART_RIGHT_WING_MIDDLE = 23, - /* 26 */ EN_PP_TYPE_BODY_PART_CENTER_WING_MIDDLE = 26, + /* 26 */ EN_PP_TYPE_BODY_PART_CENTER_WING_MIDDLE = 26 } EnPpType; typedef struct EnPp { diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.c b/src/overlays/actors/ovl_En_Pst/z_en_pst.c index 34ce6bafb..9b5f1ef38 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.c +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.c @@ -26,7 +26,7 @@ typedef enum { typedef enum { /* 0 */ POSTBOX_BEHAVIOUR_WAIT_FOR_ITEM, - /* 1 */ POSTBOX_BEHAVIOUR_TAKE_ITEM, + /* 1 */ POSTBOX_BEHAVIOUR_TAKE_ITEM } PostboxBehaviour; static u8 D_80B2C200[] = { diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.h b/src/overlays/actors/ovl_En_Pst/z_en_pst.h index 6051924da..c3ebd58a8 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.h +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.h @@ -9,7 +9,7 @@ typedef enum { /* 1 */ POSTBOX_NORTH_CLOCKTOWN, /* 2 */ POSTBOX_EAST_UPPER_CLOCKTOWN, /* 3 */ POSTBOX_EAST_LOWER_CLOCKTOWN, - /* 4 */ POSTBOX_SOUTH_LOWER_CLOCKTOWN, + /* 4 */ POSTBOX_SOUTH_LOWER_CLOCKTOWN } PostboxType; struct EnPst; diff --git a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c index d08110e43..ba7676655 100644 --- a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c +++ b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c @@ -62,13 +62,13 @@ void EnRacedog_PlaySfxWalk(EnRacedog* this); * Stores various information for each dog in the race, mostly related to speed. */ typedef struct { - f32 sprintSpeedMultiplier; // Target speed is multiplied by this when the dog is in the last 1/4 of the race - f32 goodConditionSpeedMultiplier; // Target speed is multiplied by this if the dog is in good condition - s16 color; // The dog's color, which is used as an index into sBaseSpeeds - s16 index; // The dog's index within sDogInfo - s16 pointToUseSecondBaseSpeed; // When the dog is at or after this point, the second value in sBaseSpeeds is used - s16 textId; // Used to determine the dog's condition -} RaceDogInfo; + /* 0x0 */ f32 sprintSpeedMultiplier; // Multiplies target speed when the dog is in the last 1/4 of the race + /* 0x4 */ f32 goodConditionSpeedMultiplier; // Multiplies target speed if the dog is in good condition + /* 0x8 */ s16 color; // The dog's color, which is used as an index into sBaseSpeeds + /* 0xA */ s16 index; // The dog's index within sDogInfo + /* 0xC */ s16 pointToUseSecondBaseSpeed; // When the dog is at or after this point, use the second sBaseSpeeds value + /* 0xE */ s16 textId; // Used to determine the dog's condition +} RaceDogInfo; // size = 0x10 ActorInit En_Racedog_InitVars = { ACTOR_EN_RACEDOG, diff --git a/src/overlays/actors/ovl_En_Raf/z_en_raf.c b/src/overlays/actors/ovl_En_Raf/z_en_raf.c index 0c344e75f..055b308f2 100644 --- a/src/overlays/actors/ovl_En_Raf/z_en_raf.c +++ b/src/overlays/actors/ovl_En_Raf/z_en_raf.c @@ -40,7 +40,7 @@ typedef enum { /* 2 */ EN_RAF_ANIM_CHEW, /* 3 */ EN_RAF_ANIM_SPIT, /* 4 */ EN_RAF_ANIM_CONVULSE, - /* 5 */ EN_RAF_ANIM_DEATH, + /* 5 */ EN_RAF_ANIM_DEATH } EnRafAnimation; typedef enum { @@ -51,7 +51,7 @@ typedef enum { /* 4 */ EN_RAF_ACTION_EXPLODE, /* 5 */ EN_RAF_ACTION_CONVULSE, /* 6 */ EN_RAF_ACTION_DISSOLVE, - /* 7 */ EN_RAF_ACTION_DORMANT, + /* 7 */ EN_RAF_ACTION_DORMANT } EnRafAction; typedef enum { diff --git a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c index 9766fe694..9a0e1864e 100644 --- a/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c +++ b/src/overlays/actors/ovl_En_Railgibud/z_en_railgibud.c @@ -70,18 +70,18 @@ typedef enum { /* 16 */ EN_RAILGIBUD_ANIM_SLUMP_LOOP, /* 17 */ EN_RAILGIBUD_ANIM_CONVULSION, /* 18 */ EN_RAILGIBUD_ANIM_ARMS_UP_START, - /* 19 */ EN_RAILGIBUD_ANIM_ARMS_UP_LOOP, + /* 19 */ EN_RAILGIBUD_ANIM_ARMS_UP_LOOP } EnRailgibudAnimation; typedef enum { /* 0 */ EN_RAILGIBUD_TYPE_GIBDO, - /* 1 */ EN_RAILGIBUD_TYPE_REDEAD, + /* 1 */ EN_RAILGIBUD_TYPE_REDEAD } EnRailgibudType; typedef enum { /* 0 */ EN_RAILGIBUD_GRAB_START, /* 1 */ EN_RAILGIBUD_GRAB_ATTACK, - /* 2 */ EN_RAILGIBUD_GRAB_RELEASE, + /* 2 */ EN_RAILGIBUD_GRAB_RELEASE } EnRailgibudGrabState; ActorInit En_Railgibud_InitVars = { @@ -147,7 +147,7 @@ typedef enum { /* 0xC */ EN_RAILGIBUD_DMGEFF_ZORA_MAGIC = 0xC, // Stuns and applies an electric effect /* 0xD */ EN_RAILGIBUD_DMGEFF_RECOIL, // Deals no damage, but displays hit mark and recoil animation /* 0xE */ EN_RAILGIBUD_DMGEFF_LIGHT_RAY, // Instantly kills a Redead on contact - /* 0xF */ EN_RAILGIBUD_DMGEFF_DAMAGE, // Deals damage and plays the damage animation + /* 0xF */ EN_RAILGIBUD_DMGEFF_DAMAGE // Deals damage and plays the damage animation } EnRailgibudDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Rat/z_en_rat.c b/src/overlays/actors/ovl_En_Rat/z_en_rat.c index e145291f6..7d585c234 100644 --- a/src/overlays/actors/ovl_En_Rat/z_en_rat.c +++ b/src/overlays/actors/ovl_En_Rat/z_en_rat.c @@ -32,7 +32,7 @@ void EnRat_PostDetonation(EnRat* this, PlayState* play); typedef enum { /* -2 */ EN_RAT_HOOK_STARTED = -2, - /* -1 */ EN_RAT_HOOKED, + /* -1 */ EN_RAT_HOOKED } EnRatHookedState; ActorInit En_Rat_InitVars = { @@ -70,7 +70,7 @@ static ColliderSphereInit sSphereInit = { typedef enum { /* 0x0 */ EN_RAT_DMGEFF_NONE, /* 0x1 */ EN_RAT_DMGEFF_STUN, - /* 0xF */ EN_RAT_DMGEFF_HOOKSHOT = 0xF, // Pulls the Real Bombchu towards the player + /* 0xF */ EN_RAT_DMGEFF_HOOKSHOT = 0xF // Pulls the Real Bombchu towards the player } EnRatDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Rat/z_en_rat.h b/src/overlays/actors/ovl_En_Rat/z_en_rat.h index 9472e8c31..28c880a92 100644 --- a/src/overlays/actors/ovl_En_Rat/z_en_rat.h +++ b/src/overlays/actors/ovl_En_Rat/z_en_rat.h @@ -21,7 +21,7 @@ */ typedef enum { /* 0 */ EN_RAT_TYPE_DUNGEON, - /* 1 */ EN_RAT_TYPE_OVERWORLD, + /* 1 */ EN_RAT_TYPE_OVERWORLD } EnRatType; struct EnRat; diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.c b/src/overlays/actors/ovl_En_Rd/z_en_rd.c index 01b9cdd6d..34fc41192 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.c +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.c @@ -94,7 +94,7 @@ typedef enum { /* 1 */ EN_RD_GRAB_INITIAL_DAMAGE, /* 2 */ EN_RD_GRAB_ATTACK, /* 3 */ EN_RD_GRAB_RELEASE, - /* 4 */ EN_RD_GRAB_END, + /* 4 */ EN_RD_GRAB_END } EnRdGrabState; ActorInit En_Rd_InitVars = { @@ -139,7 +139,7 @@ typedef enum { /* 0xC */ EN_RD_DMGEFF_ZORA_MAGIC = 0xC, // Stuns and applies an electric effect /* 0xD */ EN_RD_DMGEFF_RECOIL, // Deals no damage, but displays hit mark and recoil animation /* 0xE */ EN_RD_DMGEFF_LIGHT_RAY, // Instantly kills on contact - /* 0xF */ EN_RD_DMGEFF_DAMAGE, // Deals damage and plays the damage animation + /* 0xF */ EN_RD_DMGEFF_DAMAGE // Deals damage and plays the damage animation } EnRdDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Rd/z_en_rd.h b/src/overlays/actors/ovl_En_Rd/z_en_rd.h index f5fbf82cb..fced38e75 100644 --- a/src/overlays/actors/ovl_En_Rd/z_en_rd.h +++ b/src/overlays/actors/ovl_En_Rd/z_en_rd.h @@ -27,7 +27,7 @@ typedef enum { /* 4 */ EN_RD_TYPE_FROZEN, // Unused in the final game /* 5 */ EN_RD_TYPE_SQUATTING_DANCE, /* 6 */ EN_RD_TYPE_CLAPPING_DANCE, - /* 7 */ EN_RD_TYPE_PIROUETTE, + /* 7 */ EN_RD_TYPE_PIROUETTE } EnRdType; typedef struct EnRd { diff --git a/src/overlays/actors/ovl_En_Rr/z_en_rr.h b/src/overlays/actors/ovl_En_Rr/z_en_rr.h index e996cfb12..6f4178dd9 100644 --- a/src/overlays/actors/ovl_En_Rr/z_en_rr.h +++ b/src/overlays/actors/ovl_En_Rr/z_en_rr.h @@ -7,12 +7,12 @@ struct EnRr; typedef void (*EnRrActionFunc)(struct EnRr*, PlayState*); -enum { +typedef enum { /* 0 */ ENRR_0, /* 1 */ ENRR_1, /* 2 */ ENRR_2, - /* 3 */ ENRR_3, -}; + /* 3 */ ENRR_3 +} EnRrParam; typedef struct { /* 0x00 */ f32 unk_00; diff --git a/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c b/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c index 69ad52a2d..351b2f146 100644 --- a/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c +++ b/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c @@ -11,11 +11,11 @@ #define THIS ((EnRuppecrow*)thisx) -enum { - ENRUPPECROW_EFFECT_NONE = 0, - ENRUPPECROW_EFFECT_ICE = 10, - ENRUPPECROW_EFFECT_LIGHT = 20, -}; +typedef enum { + /* 0x00 */ ENRUPPECROW_EFFECT_NONE = 0, + /* 0x0A */ ENRUPPECROW_EFFECT_ICE = 10, + /* 0x14 */ ENRUPPECROW_EFFECT_LIGHT = 20 +} EnRuppecrowEffect; void EnRuppecrow_Init(Actor* thisx, PlayState* play2); void EnRuppecrow_Destroy(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c b/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c index c135f63da..5a3dc440a 100644 --- a/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c +++ b/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.c @@ -21,7 +21,7 @@ void func_80BD6B18(EnScRuppe* this, PlayState* play); typedef struct { /* 0x0 */ TexturePtr tex; /* 0x4 */ s16 amount; -} RuppeInfo; +} RuppeInfo; // size = 0x8 ActorInit En_Sc_Ruppe_InitVars = { ACTOR_EN_SC_RUPPE, diff --git a/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.h b/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.h index 8ef0f4c56..afc955985 100644 --- a/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.h +++ b/src/overlays/actors/ovl_En_Sc_Ruppe/z_en_sc_ruppe.h @@ -23,7 +23,7 @@ typedef enum { /* 2 */ RUPEE_RED, /* 3 */ RUPEE_ORANGE, /* 4 */ RUPEE_PURPLE, - /* 5 */ RUPEE_UNUSED, + /* 5 */ RUPEE_UNUSED } RupeeType; #endif // Z_EN_SC_RUPPE_H diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.h b/src/overlays/actors/ovl_En_Skb/z_en_skb.h index 1fbf441ea..1970ebf8c 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.h +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.h @@ -10,8 +10,8 @@ typedef void (*EnSkbActionFunc)(struct EnSkb*, PlayState*); #define ENSKB_GET_F0(thisx) (((thisx)->params >> 4) & 0xF) typedef enum { - /* 0 */ ENSKB_PARAMS_0, -} EnSkbParams; + /* 0 */ ENSKB_PARAM_0 +} EnSkbParam; typedef struct EnSkb { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Slime/z_en_slime.c b/src/overlays/actors/ovl_En_Slime/z_en_slime.c index 8d7a0e071..5c962978e 100644 --- a/src/overlays/actors/ovl_En_Slime/z_en_slime.c +++ b/src/overlays/actors/ovl_En_Slime/z_en_slime.c @@ -28,7 +28,7 @@ typedef enum EnSlimeDamageEffect { /* 0x4 */ EN_SLIME_DMGEFF_LIGHT, /* 0x5 */ EN_SLIME_DMGEFF_ELECTRIC, /* 0xE */ EN_SLIME_DMGEFF_HOOKSHOT = 0xE, - /* 0xF */ EN_SLIME_DMGEFF_BLUNT, + /* 0xF */ EN_SLIME_DMGEFF_BLUNT } EnSlimeDamageEffect; void EnSlime_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_En_Slime/z_en_slime.h b/src/overlays/actors/ovl_En_Slime/z_en_slime.h index 0a40a117e..130c442de 100644 --- a/src/overlays/actors/ovl_En_Slime/z_en_slime.h +++ b/src/overlays/actors/ovl_En_Slime/z_en_slime.h @@ -42,7 +42,7 @@ typedef enum EnSlimeType { /* 0 */ EN_SLIME_TYPE_BLUE, /* 1 */ EN_SLIME_TYPE_GREEN, /* 2 */ EN_SLIME_TYPE_YELLOW, - /* 3 */ EN_SLIME_TYPE_RED, + /* 3 */ EN_SLIME_TYPE_RED } EnSlimeType; #endif // Z_EN_SLIME_H diff --git a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c index 5a65c1094..ed3235345 100644 --- a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c +++ b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c @@ -58,7 +58,7 @@ typedef enum { // Indicates that either this Eeno is shrinking having been absorbed by another Eeno, or that // this Eeno is a fully-combined large Eeno and is done trying to combine with other split // Eenos. In both cases, this Eeno cannot be absorbed by any other Eeno. - /* 3 */ EN_SNOWMAN_COMBINE_STATE_BEING_ABSORBED_OR_DONE, + /* 3 */ EN_SNOWMAN_COMBINE_STATE_BEING_ABSORBED_OR_DONE } EnSnowmanCombineState; ActorInit En_Snowman_InitVars = { @@ -119,7 +119,7 @@ typedef enum { /* 0x2 */ EN_SNOWMAN_DMGEFF_MELT, /* 0x4 */ EN_SNOWMAN_DMGEFF_LIGHT_ORB = 0x4, /* 0x5 */ EN_SNOWMAN_DMGEFF_ELECTRIC_STUN, - /* 0xF */ EN_SNOWMAN_DMGEFF_HOOKSHOT = 0xF, // Damages small Eenos, pulls the player towards large Eenos + /* 0xF */ EN_SNOWMAN_DMGEFF_HOOKSHOT = 0xF // Damages small Eenos, pulls the player towards large Eenos } EnTalkGibudDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.h b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.h index da0c0a30a..55285fec8 100644 --- a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.h +++ b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.h @@ -12,7 +12,7 @@ typedef enum { /* 1 */ EN_SNOWMAN_TYPE_LARGE, /* 2 */ EN_SNOWMAN_TYPE_SPLIT, /* 3 */ EN_SNOWMAN_TYPE_SMALL_SNOWBALL, - /* 4 */ EN_SNOWMAN_TYPE_LARGE_SNOWBALL, + /* 4 */ EN_SNOWMAN_TYPE_LARGE_SNOWBALL } EnSnowmanType; struct EnSnowman; diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.c b/src/overlays/actors/ovl_En_Sth/z_en_sth.c index 3908e863f..7e3b9ead6 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.c +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.c @@ -70,7 +70,7 @@ typedef enum { /* 5 */ STH_ANIM_LOOK_AROUND, // checking out Oceanside Spider House /* 6 */ STH_ANIM_PLEAD, // wants to buy Oceanside Spider House /* 7 */ STH_ANIM_PANIC, // after buying Oceanside Spider House, can be found at bottom of slide, - /* 8 */ STH_ANIM_START, // set in init, not an actual index to the array + /* 8 */ STH_ANIM_START // set in init, not an actual index to the array } EnSthAnimation; static AnimationHeader* sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_Sth/z_en_sth.h b/src/overlays/actors/ovl_En_Sth/z_en_sth.h index 1c8c92852..dbc459ce1 100644 --- a/src/overlays/actors/ovl_En_Sth/z_en_sth.h +++ b/src/overlays/actors/ovl_En_Sth/z_en_sth.h @@ -16,9 +16,9 @@ typedef enum { /* 2 */ STH_TYPE_SWAMP_SPIDER_HOUSE_CURED, // cursed is EnSsh /* 3 */ STH_TYPE_MOON_LOOKING, // South Clock Town, looking up at the moon /* 4 */ STH_TYPE_OCEANSIDE_SPIDER_HOUSE_GREET, // looking for shelter - /* 5 */ STH_TYPE_OCEANSIDE_SPIDER_HOUSE_PANIC, // shelter was not enough + /* 5 */ STH_TYPE_OCEANSIDE_SPIDER_HOUSE_PANIC // shelter was not enough // Other values: Actor will spawn and animate with arm waving, no further interaction. -} EnSthTypes; +} EnSthType; // Note: Vanilla types usually have 0xFEXX typing, but this upper section is unused by the code, reason unknown #define STH_GET_TYPE(thisx) ((thisx)->params & 0xF) diff --git a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c index b89976faf..e41fc5dc7 100644 --- a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c +++ b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c @@ -90,7 +90,7 @@ typedef enum { /* 0 */ EN_STONE_BOTTLE_NONE, /* 1 */ EN_STONE_BOTTLE_RED_POTION, /* 2 */ EN_STONE_BOTTLE_EMPTY, - /* 3 */ EN_STONE_BOTTLE_BLUE_POTION, + /* 3 */ EN_STONE_BOTTLE_BLUE_POTION } EnStoneHeishiBottle; typedef enum { @@ -100,8 +100,8 @@ typedef enum { /* 3 */ EN_STONE_HEISHI_ANIM_WAVE, /* 4 */ EN_STONE_HEISHI_ANIM_SIT_AND_REACH, /* 5 */ EN_STONE_HEISHI_ANIM_DRINK_2, - /* 6 */ EN_STONE_HEISHI_ANIM_STAND_UP, -} EnStoneHeishiAnimations; + /* 6 */ EN_STONE_HEISHI_ANIM_STAND_UP +} EnStoneHeishiAnimation; void EnStoneheishi_Init(Actor* thisx, PlayState* play) { EnStoneheishi* this = THIS; diff --git a/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c b/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c index d90752d9b..43ddae02a 100644 --- a/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c +++ b/src/overlays/actors/ovl_En_Stop_heishi/z_en_stop_heishi.c @@ -31,7 +31,7 @@ typedef enum { /* 5 */ SOLDIER_ANIM_5, /* 6 */ SOLDIER_ANIM_6, /* 7 */ SOLDIER_ANIM_STAND_HAND_ON_CHEST, - /* 8 */ SOLDIER_ANIM_MAX, + /* 8 */ SOLDIER_ANIM_MAX } SoldierAnimation; ActorInit En_Stop_heishi_InitVars = { diff --git a/src/overlays/actors/ovl_En_Stream/z_en_stream.h b/src/overlays/actors/ovl_En_Stream/z_en_stream.h index 88856c3dd..c5aa3c9e2 100644 --- a/src/overlays/actors/ovl_En_Stream/z_en_stream.h +++ b/src/overlays/actors/ovl_En_Stream/z_en_stream.h @@ -12,13 +12,13 @@ typedef enum { /* 0 */ EN_STREAM_SIZE_NORMAL, - /* 1 */ EN_STREAM_SIZE_SMALL, + /* 1 */ EN_STREAM_SIZE_SMALL } EnStreamSize; typedef enum { /* 0 */ EN_STREAM_PLAYER_OUTSIDE_RANGE, /* 1 */ EN_STREAM_PLAYER_WITHIN_RANGE_INSIDE_VORTEX, - /* 2 */ EN_STREAM_PLAYER_WITHIN_RANGE_BELOW_VORTEX, + /* 2 */ EN_STREAM_PLAYER_WITHIN_RANGE_BELOW_VORTEX } EnStreamPlayerLocation; struct EnStream; diff --git a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c index b8c5eda14..ee9c63536 100644 --- a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c +++ b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.c @@ -36,7 +36,7 @@ void EnSyatekiDekunuts_Dead(EnSyatekiDekunuts* this, PlayState* play); typedef enum { /* 0 */ EN_SYATEKI_DEKUNUTS_HEADDRESS_TYPE_NORMAL, - /* 1 */ EN_SYATEKI_DEKUNUTS_HEADDRESS_TYPE_FLIPPED_UP, + /* 1 */ EN_SYATEKI_DEKUNUTS_HEADDRESS_TYPE_FLIPPED_UP } EnSyatekiDekunutsHeaddressType; ActorInit En_Syateki_Dekunuts_InitVars = { @@ -80,7 +80,7 @@ typedef enum { /* 3 */ EN_SYATEKI_DEKUNUTS_ANIM_LOOK_AROUND, /* 4 */ EN_SYATEKI_DEKUNUTS_ANIM_DAMAGE, /* 5 */ EN_SYATEKI_DEKUNUTS_ANIM_DIE, - /* 6 */ EN_SYATEKI_DEKUNUTS_ANIM_UNBURROW, // unused + /* 6 */ EN_SYATEKI_DEKUNUTS_ANIM_UNBURROW // unused } EnSyatekiDekunutsAnimation; static AnimationInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.h b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.h index 2ceb0b32d..ce3e9ba90 100644 --- a/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.h +++ b/src/overlays/actors/ovl_En_Syateki_Dekunuts/z_en_syateki_dekunuts.h @@ -11,7 +11,7 @@ typedef enum { /* 0 */ EN_SYATEKI_DEKUNUTS_TYPE_NORMAL, // Worth 30 points - /* 1 */ EN_SYATEKI_DEKUNUTS_TYPE_BONUS, // Worth 100 points + /* 1 */ EN_SYATEKI_DEKUNUTS_TYPE_BONUS // Worth 100 points } EnSyatekiDekunutsType; struct EnSyatekiDekunuts; 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 a58425737..f5910a06d 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 @@ -74,7 +74,7 @@ ActorInit En_Syateki_Man_InitVars = { typedef enum { /* 0 */ EN_SYATEKI_MAN_ANIM_HANDS_ON_TABLE, /* 1 */ EN_SYATEKI_MAN_ANIM_SWAMP_HEAD_SCRATCH_LOOP, - /* 2 */ EN_SYATEKI_MAN_ANIM_SWAMP_HEAD_SCRATCH_END, + /* 2 */ EN_SYATEKI_MAN_ANIM_SWAMP_HEAD_SCRATCH_END } EnSyatekiManAnimation; static AnimationInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c index 7b885c5e8..52aa71cad 100644 --- a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c +++ b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c @@ -120,7 +120,7 @@ typedef enum { /* 3 */ EN_SYATEKI_WF_ANIM_LAND, /* 4 */ EN_SYATEKI_WF_ANIM_BACKFLIP, // unused /* 5 */ EN_SYATEKI_WF_ANIM_DAMAGED, - /* 6 */ EN_SYATEKI_WF_ANIM_REAR_UP_FALL_OVER, + /* 6 */ EN_SYATEKI_WF_ANIM_REAR_UP_FALL_OVER } EnSyatekiWfAnimation; static AnimationInfo sAnimationInfo[] = { diff --git a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c index ee3b9af58..84d0b7dd1 100644 --- a/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c +++ b/src/overlays/actors/ovl_En_Talk_Gibud/z_en_talk_gibud.c @@ -53,12 +53,12 @@ typedef struct { /* 0x4 */ ItemId item; /* 0x8 */ s32 amount; /* 0xC */ s16 isBottledItem; -} EnTalkGibudRequestedItem; +} EnTalkGibudRequestedItem; // size = 0x10 typedef enum { /* 0 */ EN_TALK_GIBUD_REQUESTED_ITEM_MET, /* 1 */ EN_TALK_GIBUD_REQUESTED_ITEM_NOT_ENOUGH_AMMO, - /* 2 */ EN_TALK_GIBUD_REQUESTED_ITEM_NOT_MET, + /* 2 */ EN_TALK_GIBUD_REQUESTED_ITEM_NOT_MET } EnTalkGibudRequestedItemState; typedef enum { @@ -71,7 +71,7 @@ typedef enum { /* 6 */ EN_TALK_GIBUD_REQUESTED_ITEM_INDEX_BOMBS, /* 7 */ EN_TALK_GIBUD_REQUESTED_ITEM_INDEX_HOT_SPRING_WATER, /* 8 */ EN_TALK_GIBUD_REQUESTED_ITEM_INDEX_BIG_POE, - /* 9 */ EN_TALK_GIBUD_REQUESTED_ITEM_INDEX_MILK, + /* 9 */ EN_TALK_GIBUD_REQUESTED_ITEM_INDEX_MILK } EnTalkGibudRequestedItemIndex; typedef enum { @@ -88,18 +88,18 @@ typedef enum { /* 10 */ EN_TALK_GIBUD_ANIM_WALK, /* 11 */ EN_TALK_GIBUD_ANIM_DANCE_SQUAT, /* 12 */ EN_TALK_GIBUD_ANIM_DANCE_PIROUETTE, - /* 13 */ EN_TALK_GIBUD_ANIM_DANCE_CLAP, + /* 13 */ EN_TALK_GIBUD_ANIM_DANCE_CLAP } EnTalkGibudAnimation; typedef enum { /* 0 */ EN_TALK_GIBUD_TYPE_GIBDO, - /* 1 */ EN_TALK_GIBUD_TYPE_REDEAD, + /* 1 */ EN_TALK_GIBUD_TYPE_REDEAD } EnTalkGibudType; typedef enum { /* 0 */ EN_TALK_GIBUD_GRAB_START, /* 1 */ EN_TALK_GIBUD_GRAB_ATTACK, - /* 2 */ EN_TALK_GIBUD_GRAB_RELEASE, + /* 2 */ EN_TALK_GIBUD_GRAB_RELEASE } EnTalkGibudGrabState; ActorInit En_Talk_Gibud_InitVars = { @@ -159,7 +159,7 @@ typedef enum { /* 0xC */ EN_TALK_GIBUD_DMGEFF_ZORA_MAGIC = 0xC, // Stuns and applies an electric effect /* 0xD */ EN_TALK_GIBUD_DMGEFF_RECOIL, // Deals no damage, but displays hit mark and recoil animation /* 0xE */ EN_TALK_GIBUD_DMGEFF_LIGHT_RAY, // Instantly kills a Redead on contact - /* 0xF */ EN_TALK_GIBUD_DMGEFF_DAMAGE, // Deals damage and plays the damage animation + /* 0xF */ EN_TALK_GIBUD_DMGEFF_DAMAGE // Deals damage and plays the damage animation } EnTalkGibudDamageEffect; static DamageTable sDamageTable = { diff --git a/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c b/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c index 1eaf1d128..5c62c50ee 100644 --- a/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c +++ b/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c @@ -23,13 +23,13 @@ void EnTanron4_FlyNearActor(EnTanron4* this, PlayState* play); typedef enum { /* 0 */ SEAGULL_FLY_FLAP, - /* 1 */ SEAGULL_FLY_GLIDE, + /* 1 */ SEAGULL_FLY_GLIDE } SeagullFlyState; typedef enum { /* 0 */ SEAGULL_TIMER_FLY_STATE, - /* 1 */ SEAGULL_TIMER_CHOOSE_TARGET, -} SeagullTimers; + /* 1 */ SEAGULL_TIMER_CHOOSE_TARGET +} SeagullTimer; ActorInit En_Tanron4_InitVars = { ACTOR_EN_TANRON4, diff --git a/src/overlays/actors/ovl_En_Test2/z_en_test2.c b/src/overlays/actors/ovl_En_Test2/z_en_test2.c index 8e5a39bf8..e853570f4 100644 --- a/src/overlays/actors/ovl_En_Test2/z_en_test2.c +++ b/src/overlays/actors/ovl_En_Test2/z_en_test2.c @@ -72,7 +72,7 @@ void EnTest2_Init(Actor* thisx, PlayState* play) { EnTest2* this = THIS; Actor_ProcessInitChain(&this->actor, sInitChain); - if ((this->actor.params == EN_TEST2_PARAMS_B) || (this->actor.params == EN_TEST2_PARAMS_C)) { + if ((this->actor.params == EN_TEST2_PARAM_B) || (this->actor.params == EN_TEST2_PARAM_C)) { this->actor.flags |= ACTOR_FLAG_20; } } diff --git a/src/overlays/actors/ovl_En_Test2/z_en_test2.h b/src/overlays/actors/ovl_En_Test2/z_en_test2.h index 3b03e0cc1..d54dbb265 100644 --- a/src/overlays/actors/ovl_En_Test2/z_en_test2.h +++ b/src/overlays/actors/ovl_En_Test2/z_en_test2.h @@ -11,8 +11,8 @@ typedef struct EnTest2 { } EnTest2; // size = 0x148 typedef enum { - /* 0xB */ EN_TEST2_PARAMS_B = 0xB, - /* 0xC */ EN_TEST2_PARAMS_C -} EnTest2_Params; + /* 0xB */ EN_TEST2_PARAM_B = 0xB, + /* 0xC */ EN_TEST2_PARAM_C +} EnTest2_Param; #endif // Z_EN_TEST2_H diff --git a/src/overlays/actors/ovl_En_Test6/z_en_test6.h b/src/overlays/actors/ovl_En_Test6/z_en_test6.h index d7e40a983..2fe138ddb 100644 --- a/src/overlays/actors/ovl_En_Test6/z_en_test6.h +++ b/src/overlays/actors/ovl_En_Test6/z_en_test6.h @@ -9,11 +9,11 @@ typedef void (*EnTest6ActionFunc)(struct EnTest6*, PlayState*); #define ENTEST6_GET(thisx) ((thisx)->params) -enum { +typedef enum { /* 24 */ ENTEST6_24 = 24, /* 25 */ ENTEST6_25, - /* 26 */ ENTEST6_26, -}; + /* 26 */ ENTEST6_26 +} EnTest6Param; typedef struct { /* 0x00 */ LightNode* node; diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.h b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.h index 128e01973..c022ca122 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.h +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.h @@ -56,7 +56,7 @@ typedef enum { /* 13 */ TIMETAG_KICKOUT_TEXT_TOWN_SHOOTING_GALLERY_2, // quick, it's closing time /* 14 */ TIMETAG_KICKOUT_TEXT_SWORDSMANS_SCHOOL, // need to cut the moon, must leave /* 15 */ TIMETAG_KICKOUT_TEXT_TREASURE_CHEST_SHOP, // already time to close shop - /* 16 */ TIMETAG_KICKOUT_TEXT_DOGGY_RACETRACK, // no more for today + /* 16 */ TIMETAG_KICKOUT_TEXT_DOGGY_RACETRACK // no more for today } TimeTagKickOutText; typedef struct EnTimeTag { diff --git a/src/overlays/actors/ovl_En_Tite/z_en_tite.h b/src/overlays/actors/ovl_En_Tite/z_en_tite.h index 57d8ef3e3..af77f4a8d 100644 --- a/src/overlays/actors/ovl_En_Tite/z_en_tite.h +++ b/src/overlays/actors/ovl_En_Tite/z_en_tite.h @@ -7,13 +7,13 @@ struct EnTite; typedef void (*EnTiteActionFunc)(struct EnTite*, PlayState*); -enum { +typedef enum { /* -4 */ ENTITE_MINUS_4 = -4, /* -3 */ ENTITE_MINUS_3, /* -2 */ ENTITE_MINUS_2, /* -1 */ ENTITE_MINUS_1, - /* 0 */ ENTITE_MINUS_0, -}; + /* 0 */ ENTITE_MINUS_0 +} EnTiteParam; typedef struct EnTite { /* 0x000 */ Actor actor; 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 341f0a89d..469e07e6d 100644 --- a/src/overlays/actors/ovl_En_Tk/z_en_tk.c +++ b/src/overlays/actors/ovl_En_Tk/z_en_tk.c @@ -130,9 +130,9 @@ static f32 D_80AEF8F0[] = { }; typedef struct { - /* 0x00 */ Actor* unk_00; - /* 0x04 */ f32 unk_04; -} EnTkStruct; // size = 0x8? + /* 0x0 */ Actor* unk_00; + /* 0x4 */ f32 unk_04; +} EnTkStruct; // size = 0x8 void func_80AEC460(EnTk* this) { if (DECR(this->unk_2C4) == 0) { diff --git a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h index 9033b9923..edc488d1e 100644 --- a/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h +++ b/src/overlays/actors/ovl_En_Torch2/z_en_torch2.h @@ -18,7 +18,7 @@ typedef enum { /* 1 */ TORCH2_PARAM_GORON, /* 2 */ TORCH2_PARAM_ZORA, /* 3 */ TORCH2_PARAM_DEKU, - /* 4 */ TORCH2_PARAM_FIERCE_DEITY, + /* 4 */ TORCH2_PARAM_FIERCE_DEITY } EnTorch2Param; typedef enum { @@ -26,7 +26,7 @@ typedef enum { /* 1 */ TORCH2_STATE_FADING_IN, /* 2 */ TORCH2_STATE_SOLID, /* 3 */ TORCH2_STATE_IDLE, - /* 4 */ TORCH2_STATE_DYING, + /* 4 */ TORCH2_STATE_DYING } EnTorch2State; #endif // Z_EN_TORCH2_H diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c index 79bee615a..551d7d774 100644 --- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c +++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.c @@ -47,18 +47,18 @@ void EnViewer_Init(Actor* thisx, PlayState* play) { this->unk_154 = D_8089F3E0; D_8089F3E0++; switch (ENVIEWER_GET_3(&this->actor)) { - case ENVIEWER_PARAMS_0: + case ENVIEWER_PARAM_0: this->unk_148 = ENVIEWER_GET_8000(&this->actor) * 40.0f; this->unk_150 = (u8)ENVIEWER_GET_1FC(&this->actor) * 40.0f; EnViewer_SetupAction(this, func_8089F17C); break; - case ENVIEWER_PARAMS_1: + case ENVIEWER_PARAM_1: this->unk_148 = (u16)ENVIEWER_GET_FE00(&this->actor) * 40.0f; this->unk_150 = (u8)ENVIEWER_GET_1FC(&this->actor) * 40.0f; this->unk_14C = (u16)(this->actor.world.rot.y) * 40.0f; EnViewer_SetupAction(this, func_8089F218); break; - case ENVIEWER_PARAMS_2: + case ENVIEWER_PARAM_2: this->unk_148 = (u16)ENVIEWER_GET_FE00(&this->actor) * 40.0f; this->unk_14C = (u8)ENVIEWER_GET_1FC(&this->actor) * 40.0f; EnViewer_SetupAction(this, func_8089F2C4); diff --git a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h index 1532e7c70..c4d2114bf 100644 --- a/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h +++ b/src/overlays/actors/ovl_En_Viewer/z_en_viewer.h @@ -22,9 +22,9 @@ typedef struct EnViewer { } EnViewer; // size = 0x158 typedef enum { - /* 0x0 */ ENVIEWER_PARAMS_0, - /* 0x1 */ ENVIEWER_PARAMS_1, - /* 0x2 */ ENVIEWER_PARAMS_2 -} EnViewerParams; + /* 0x0 */ ENVIEWER_PARAM_0, + /* 0x1 */ ENVIEWER_PARAM_1, + /* 0x2 */ ENVIEWER_PARAM_2 +} EnViewerParam; #endif // Z_EN_VIEWER_H diff --git a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h index 93dd63245..4d1466b95 100644 --- a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h +++ b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.h @@ -27,9 +27,9 @@ * the timer to 130 frames if the player strays too far from the Wallmaster's current position. */ typedef enum { - /* 0x0 */ WALLMASTER_TYPE_TIMER_ONLY, - /* 0x1 */ WALLMASTER_TYPE_PROXIMITY, - /* 0x2 */ WALLMASTER_TYPE_FLAG + /* 0 */ WALLMASTER_TYPE_TIMER_ONLY, + /* 1 */ WALLMASTER_TYPE_PROXIMITY, + /* 2 */ WALLMASTER_TYPE_FLAG } WallmasterType; struct EnWallmas; diff --git a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.h b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.h index 433ebac62..f4b9d7284 100644 --- a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.h +++ b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.h @@ -24,7 +24,7 @@ typedef enum { /* 0x309 */ ENWATEREFFECT_TYPE_GYORG_RIPPLES = 0x309, // Ripples on the surface when Gyrog enters/leaves the water /* 0x30A */ ENWATEREFFECT_TYPE_GYORG_PRIMARY_SPRAY, // Large "funnel" of water that forms when Gyorg enters/leaves the water /* 0x30B */ ENWATEREFFECT_TYPE_GYORG_SECONDARY_SPRAY, // Secondary "funnel" in the middle of the larger "funnel" - /* 0x30C */ ENWATEREFFECT_TYPE_GYORG_SHOCKWAVE, // Shockwave on the surface when Gyorg rams into the central platform + /* 0x30C */ ENWATEREFFECT_TYPE_GYORG_SHOCKWAVE // Shockwave on the surface when Gyorg rams into the central platform } EnWaterEffectType; typedef struct EnWaterEffect { diff --git a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h index b1e7f8f86..5313aacfd 100644 --- a/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h +++ b/src/overlays/actors/ovl_En_Weather_Tag/z_en_weather_tag.h @@ -32,7 +32,7 @@ typedef enum { /* 4 */ WEATHERTAG_TYPE_UNK4, /* 5 */ WEATHERTAG_TYPE_UNK5, /* 6 */ WEATHERTAG_TYPE_WATERMURK, - /* 7 */ WEATHERTAG_TYPE_LOCALDAY2RAIN, + /* 7 */ WEATHERTAG_TYPE_LOCALDAY2RAIN } WeatherTagType; #endif // Z_EN_WEATHER_TAG_H diff --git a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c index b64af5a88..7fd55f4ee 100644 --- a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c +++ b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c @@ -50,7 +50,7 @@ typedef enum { /* 6 */ EN_WIZ_ACTION_BURST_INTO_FLAMES, /* 7 */ EN_WIZ_ACTION_RUN_IN_CIRCLES, /* 8 */ EN_WIZ_ACTION_ATTACK, - /* 9 */ EN_WIZ_ACTION_DANCE, + /* 9 */ EN_WIZ_ACTION_DANCE } EnWizAction; typedef enum { @@ -68,7 +68,7 @@ typedef enum { /* 0 */ EN_WIZ_FIGHT_STATE_FIRST_PHASE, /* 1 */ EN_WIZ_FIGHT_STATE_SECOND_PHASE_CUTSCENE, /* 2 */ EN_WIZ_FIGHT_STATE_SECOND_PHASE_GHOSTS_COPY_WIZROBE, - /* 3 */ EN_WIZ_FIGHT_STATE_SECOND_PHASE_GHOSTS_RUN_AROUND, + /* 3 */ EN_WIZ_FIGHT_STATE_SECOND_PHASE_GHOSTS_RUN_AROUND } EnWizFightState; typedef enum { @@ -77,7 +77,7 @@ typedef enum { /* 2 */ EN_WIZ_ANIM_DANCE, /* 3 */ EN_WIZ_ANIM_WIND_UP, /* 4 */ EN_WIZ_ANIM_ATTACK, - /* 5 */ EN_WIZ_ANIM_DAMAGE, + /* 5 */ EN_WIZ_ANIM_DAMAGE } EnWizAnimation; ActorInit En_Wiz_InitVars = { @@ -239,12 +239,12 @@ static ColliderCylinderInit sCylinderInit = { }; typedef enum { - /* 0x0 */ EN_WIZ_DMGEFF_IMMUNE, // Deals no damage - /* 0x1 */ EN_WIZ_DMGEFF_UNK1, // Deals no damage. Was probably originally intended for destroying ghosts. - /* 0x2 */ EN_WIZ_DMGEFF_FIRE, // Damages and sets Ice Wizrobes on fire - /* 0x3 */ EN_WIZ_DMGEFF_FREEZE, // Damages and surrounds Fire Wizrobes with ice - /* 0x4 */ EN_WIZ_DMGEFF_LIGHT_ORB, // Damages and surrounds the Wizrobe with light orbs - /* 0xF */ EN_WIZ_DMGEFF_NONE = 0xF, // Deals regular damage and has no special effect + /* 0x0 */ EN_WIZ_DMGEFF_IMMUNE, // Deals no damage + /* 0x1 */ EN_WIZ_DMGEFF_UNK1, // Deals no damage. Was probably originally intended for destroying ghosts. + /* 0x2 */ EN_WIZ_DMGEFF_FIRE, // Damages and sets Ice Wizrobes on fire + /* 0x3 */ EN_WIZ_DMGEFF_FREEZE, // Damages and surrounds Fire Wizrobes with ice + /* 0x4 */ EN_WIZ_DMGEFF_LIGHT_ORB, // Damages and surrounds the Wizrobe with light orbs + /* 0xF */ EN_WIZ_DMGEFF_NONE = 0xF // Deals regular damage and has no special effect } EnWizDamageEffect; static DamageTable sFireWizrobeDamageTable = { diff --git a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.h b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.h index 4d35a0f68..70f7a6c64 100644 --- a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.h +++ b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.h @@ -10,7 +10,7 @@ typedef enum { /* 0 */ EN_WIZ_TYPE_FIRE, /* 1 */ EN_WIZ_TYPE_ICE, - /* 2 */ EN_WIZ_TYPE_FIRE_NO_BGM, // does not request the mini-boss BGM + /* 2 */ EN_WIZ_TYPE_FIRE_NO_BGM // does not request the mini-boss BGM } EnWizType; struct EnWiz; diff --git a/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.h b/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.h index 3df0362ed..651aac8ea 100644 --- a/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.h +++ b/src/overlays/actors/ovl_En_Wiz_Brock/z_en_wiz_brock.h @@ -7,7 +7,7 @@ typedef enum { /* 0 */ EN_WIZ_BROCK_PLATFORM_TYPE_INACTIVE, /* 1 */ EN_WIZ_BROCK_PLATFORM_TYPE_FIRE, /* 2 */ EN_WIZ_BROCK_PLATFORM_TYPE_ICE, - /* 3 */ EN_WIZ_BROCK_PLATFORM_TYPE_MAX, + /* 3 */ EN_WIZ_BROCK_PLATFORM_TYPE_MAX } EnWizBrockPlatformType; struct EnWizBrock; diff --git a/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c b/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c index 4a7f6cd20..8251a896b 100644 --- a/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c +++ b/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c @@ -32,7 +32,7 @@ typedef enum { /* 0 */ EN_WIZ_FIRE_ACTION_MOVE_MAGIC_PROJECTILE, /* 1 */ EN_WIZ_FIRE_ACTION_SMALL_FLAME, /* 2 */ EN_WIZ_FIRE_ACTION_POOL, - /* 3 */ EN_WIZ_FIRE_ACTION_KILL_MAGIC_PROJECTILE, + /* 3 */ EN_WIZ_FIRE_ACTION_KILL_MAGIC_PROJECTILE } EnWizFireAction; static s32 sPoolHitByIceArrow = false; diff --git a/src/overlays/actors/ovl_En_Zob/z_en_zob.h b/src/overlays/actors/ovl_En_Zob/z_en_zob.h index e0bd7bf79..6e6c8e7a8 100644 --- a/src/overlays/actors/ovl_En_Zob/z_en_zob.h +++ b/src/overlays/actors/ovl_En_Zob/z_en_zob.h @@ -9,10 +9,10 @@ typedef void (*EnZobActionFunc)(struct EnZob*, PlayState*); #define ENZOB_GET_F(thisx) ((thisx)->params & 0xF) -enum { +typedef enum { /* 1 */ ENZOB_F_1 = 1, - /* 2 */ ENZOB_F_2, -}; + /* 2 */ ENZOB_F_2 +} EnZobParam; typedef struct EnZob { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Zod/z_en_zod.c b/src/overlays/actors/ovl_En_Zod/z_en_zod.c index 57c85a664..d032b6579 100644 --- a/src/overlays/actors/ovl_En_Zod/z_en_zod.c +++ b/src/overlays/actors/ovl_En_Zod/z_en_zod.c @@ -30,7 +30,7 @@ typedef enum { /* 2 */ ENZOD_ANIM_ARMS_FOLDED, /* 3 */ ENZOD_ANIM_PLAYING_LENTO, /* 4 */ ENZOD_ANIM_PLAYING_ANDANTINO, - /* 5 */ ENZOD_ANIM_MAX, + /* 5 */ ENZOD_ANIM_MAX } EnZodAnimation; typedef enum { @@ -42,7 +42,7 @@ typedef enum { /* 6 */ ENZOD_INSTRUMENT_DRUM_3, /* 7 */ ENZOD_INSTRUMENT_DRUM_4, /* 8 */ ENZOD_INSTRUMENT_DRUM_5, - /* 9 */ ENZOD_INSTRUMENT_BASS_DRUM, + /* 9 */ ENZOD_INSTRUMENT_BASS_DRUM } EnZodInstrument; const ActorInit En_Zod_InitVars = { diff --git a/src/overlays/actors/ovl_En_Zod/z_en_zod.h b/src/overlays/actors/ovl_En_Zod/z_en_zod.h index 9e6f3f4da..12278bb97 100644 --- a/src/overlays/actors/ovl_En_Zod/z_en_zod.h +++ b/src/overlays/actors/ovl_En_Zod/z_en_zod.h @@ -33,9 +33,9 @@ typedef struct EnZod { } EnZod; // size = 0x2A0 typedef enum { - /* 1 */ ENZOD_TYPE_1 = 1, - /* 2 */ ENZOD_TYPE_2, - /* 0xF */ ENZOD_TYPE_0xF = 0xF, -} EnZodTypes; + /* 0x1 */ ENZOD_TYPE_1 = 1, + /* 0x2 */ ENZOD_TYPE_2, + /* 0xF */ ENZOD_TYPE_0xF = 0xF +} EnZodType; #endif // Z_EN_ZOD_H diff --git a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.h b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.h index 18a421272..f8895af3f 100644 --- a/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.h +++ b/src/overlays/actors/ovl_En_Zoraegg/z_en_zoraegg.h @@ -10,7 +10,7 @@ typedef void (*EnZoraeggActionFunc)(struct EnZoraegg*, PlayState*); #define ENZORAEGG_GET_1F(thisx) ((thisx)->params & 0x1F) #define ENZORAEGG_GET_FE00(thisx) (((thisx)->params & 0xFE00) >> 9) -enum { +typedef enum { /* 0x00 */ ENZORAEGG_1F_00, /* 0x01 */ ENZORAEGG_1F_01, /* 0x02 */ ENZORAEGG_1F_02, @@ -36,8 +36,8 @@ enum { /* 0x16 */ ENZORAEGG_1F_16, /* 0x17 */ ENZORAEGG_1F_17, /* 0x18 */ ENZORAEGG_1F_18, - /* 0x19 */ ENZORAEGG_1F_19, -}; + /* 0x19 */ ENZORAEGG_1F_19 +} EnZoraeggParam; typedef struct EnZoraegg { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.h b/src/overlays/actors/ovl_En_Zos/z_en_zos.h index 669430a0c..f761a9bc5 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.h +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.h @@ -10,10 +10,10 @@ typedef void (*EnZosActionFunc)(struct EnZos*, PlayState*); #define ENZOS_GET_F(thisx) ((thisx)->params & 0xF) -enum { +typedef enum { /* 1 */ ENZOS_F_1 = 1, - /* 2 */ ENZOS_F_2, -}; + /* 2 */ ENZOS_F_2 +} EnZosParam; typedef struct EnZos { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h b/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h index 7a071a8ec..90577dcfd 100644 --- a/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h +++ b/src/overlays/actors/ovl_Item_B_Heart/z_item_b_heart.h @@ -4,9 +4,9 @@ #include "global.h" typedef enum { - /* 0 */ BHEART_PARAM_NORMAL, // Spawn Parameter for Normal Scale. - /* 35 */ BHEART_PARAM_SMALL = 35, // Spawn Parameter for Small Scale. -} ItemBHeartParams; + /* 0 */ BHEART_PARAM_NORMAL, // Spawn Parameter for Normal Scale. + /* 35 */ BHEART_PARAM_SMALL = 35 // Spawn Parameter for Small Scale. +} ItemBHeartParam; #define BHEART_SCALE_SMALL (0.1f) // Scale value for Small Mode #define BHEART_SCALE_NORMAL (1.0f) // Scale value for Normal Mode diff --git a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h index cd48cfed1..f27254cec 100644 --- a/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h +++ b/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.h @@ -19,8 +19,8 @@ typedef enum { /* 0x7 */ MIRRAY_SPIRIT_TOPROOM_COBRA1, /* 0x8 */ MIRRAY_SPIRIT_TOPROOM_COBRA2, /* 0x9 */ MIRRAY_GANONSCASTLE_SPIRITTRIAL_DOWNLIGHT, - /* 0xA */ MIRRAY_MAX, -} MirRayBeamLocations; + /* 0xA */ MIRRAY_MAX +} MirRayBeamLocation; typedef struct MirRay { /* 0x000 */ Actor actor; diff --git a/src/overlays/actors/ovl_Obj_Armos/z_obj_armos.h b/src/overlays/actors/ovl_Obj_Armos/z_obj_armos.h index 177cc8e66..4ac83cc9d 100644 --- a/src/overlays/actors/ovl_Obj_Armos/z_obj_armos.h +++ b/src/overlays/actors/ovl_Obj_Armos/z_obj_armos.h @@ -12,15 +12,15 @@ typedef void (*ObjArmosActionFunc)(struct ObjArmos*, PlayState*); #define OBJARMOS_GET_ROTZ_7(thisx) ((thisx)->home.rot.z & 7) #define OBJARMOS_GET_ROTX_F(thisx) ((thisx)->home.rot.x & 0xF) -enum { +typedef enum { /* 0 */ OBJARMOS_ROT_7_0, /* 1 */ OBJARMOS_ROT_7_1, /* 2 */ OBJARMOS_ROT_7_2, /* 3 */ OBJARMOS_ROT_7_3, /* 4 */ OBJARMOS_ROT_7_4, /* 5 */ OBJARMOS_ROT_7_5, - /* 6 */ OBJARMOS_ROT_7_6, -}; + /* 6 */ OBJARMOS_ROT_7_6 +} ObjArmosParam; typedef struct ObjArmos { /* 0x000 */ DynaPolyActor dyna; 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 7699b3427..1a22de390 100644 --- a/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h +++ b/src/overlays/actors/ovl_Obj_Bean/z_obj_bean.h @@ -16,11 +16,11 @@ typedef void (*ObjBeanUnkFunc)(struct ObjBean*); #define OBJBEAN_GET_3(thisx) ((thisx)->home.rot.z & 3) -enum { - /* 0x0 */ ENOBJBEAN_GET_C000_0, - /* 0x1 */ ENOBJBEAN_GET_C000_1, - /* 0x2 */ ENOBJBEAN_GET_C000_2, -}; +typedef enum { + /* 0 */ ENOBJBEAN_GET_C000_0, + /* 1 */ ENOBJBEAN_GET_C000_1, + /* 2 */ ENOBJBEAN_GET_C000_2 +} ObjBeanParam; typedef struct ObjBean { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c b/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c index 66ef9c691..c8eed614b 100644 --- a/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c +++ b/src/overlays/actors/ovl_Obj_Bombiwa/z_obj_bombiwa.c @@ -77,11 +77,11 @@ static ColliderCylinderInit sCylinderInit2 = { }; typedef struct { - /* 0x00 */ ColliderCylinderInit* collider; - /* 0x04 */ ActorShadowFunc unk_04; - /* 0x08 */ ActorFunc unk_08; - /* 0x0C */ s32 (*unk_0C)(Actor*); -} ObjBombiwaStruct2; + /* 0x0 */ ColliderCylinderInit* collider; + /* 0x4 */ ActorShadowFunc unk_04; + /* 0x8 */ ActorFunc unk_08; + /* 0xC */ s32 (*unk_0C)(Actor*); +} ObjBombiwaStruct2; // size = 0x10 static ObjBombiwaStruct2 D_8093A998[] = { { &sCylinderInit1, ActorShadow_DrawCircle, func_8093A418, func_809393B0 }, diff --git a/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.h b/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.h index 1805e151a..454e3f674 100644 --- a/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.h +++ b/src/overlays/actors/ovl_Obj_Etcetera/z_obj_etcetera.h @@ -12,7 +12,7 @@ typedef enum { /* 1 */ DEKU_FLOWER_TYPE_PINK_WITH_INITIAL_BOUNCE, /* 2 */ DEKU_FLOWER_TYPE_GOLD, /* 3 */ DEKU_FLOWER_TYPE_GOLD_WITH_INITIAL_BOUNCE, - /* 4 */ DEKU_FLOWER_TYPE_MAX, + /* 4 */ DEKU_FLOWER_TYPE_MAX } DekuFlowerType; struct ObjEtcetera; diff --git a/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c b/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c index 4804b8b87..40c363dca 100644 --- a/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c +++ b/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c @@ -55,8 +55,8 @@ static ColliderCylinderInit sCylinderInit = { }; typedef struct { - /* 0x00 */ f32 unk_00; - /* 0x04 */ f32 unk_04; + /* 0x0 */ f32 unk_00; + /* 0x4 */ f32 unk_04; } ObjFireshieldStruct; // size = 0x8 ObjFireshieldStruct D_80A4D84C[] = { diff --git a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c index 336076199..4cc81013e 100644 --- a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c +++ b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c @@ -29,16 +29,16 @@ AnimatedMaterial* D_80B9DED0; AnimatedMaterial* D_80B9DED4; typedef struct { - /* 0x00 */ u8 unk_00; - /* 0x01 */ u8 unk_01; - /* 0x02 */ u8 unk_02; + /* 0x0 */ u8 unk_00; + /* 0x1 */ u8 unk_01; + /* 0x2 */ u8 unk_02; } ObjHansuiBssStruct; // size = 0x3 ObjHansuiBssStruct D_80B9DED8; typedef struct { - /* 0x00 */ u8 unk_00; - /* 0x01 */ u8 unk_01; + /* 0x0 */ u8 unk_00; + /* 0x1 */ u8 unk_01; } ObjHansuiStruct; // size = 0x2 ObjHansuiStruct D_80B9DC70[] = { diff --git a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h index c06abbe7d..1f0450b28 100644 --- a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h +++ b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.h @@ -12,15 +12,15 @@ typedef void (*ObjHunsuiActionFunc)(struct ObjHunsui*, PlayState*); #define OBJHUNSUI_GET_F80(thisx) (((thisx)->params >> 7) & 0x1F) #define OBJHUNSUI_GET_F000(thisx) (((thisx)->params >> 0xC) & 0xF) -enum { +typedef enum { /* 0 */ OBJHUNSUI_F000_0, /* 1 */ OBJHUNSUI_F000_1, /* 2 */ OBJHUNSUI_F000_2, /* 3 */ OBJHUNSUI_F000_3, /* 4 */ OBJHUNSUI_F000_4, /* 5 */ OBJHUNSUI_F000_5, - /* 6 */ OBJHUNSUI_F000_6, -}; + /* 6 */ OBJHUNSUI_F000_6 +} ObjHunsuiParam; typedef struct ObjHunsui { /* 0x000 */ DynaPolyActor dyna; diff --git a/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c b/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c index 2aae58bad..529d7ec95 100644 --- a/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c +++ b/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c @@ -13,9 +13,9 @@ #define THIS ((ObjJgameLight*)thisx) typedef enum { - /* 0x0 */ OBJJGAMELIGHT_NONE, - /* 0x1 */ OBJJGAMELIGHT_CORRECT, - /* 0x2 */ OBJJGAMELIGHT_INCORRECT, + /* 0 */ OBJJGAMELIGHT_NONE, + /* 1 */ OBJJGAMELIGHT_CORRECT, + /* 2 */ OBJJGAMELIGHT_INCORRECT } ObjJgameLightSignal; void ObjJgameLight_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Kendo_Kanban/z_obj_kendo_kanban.c b/src/overlays/actors/ovl_Obj_Kendo_Kanban/z_obj_kendo_kanban.c index df518ff43..048aa9bcc 100644 --- a/src/overlays/actors/ovl_Obj_Kendo_Kanban/z_obj_kendo_kanban.c +++ b/src/overlays/actors/ovl_Obj_Kendo_Kanban/z_obj_kendo_kanban.c @@ -28,7 +28,7 @@ typedef enum { /* -1 */ OBJKENDOKANBAN_DIR_DOWN = -1, /* 0 */ OBJKENDOKANBAN_DIR_UNDETERMINED, - /* 1 */ OBJKENDOKANBAN_DIR_UP, + /* 1 */ OBJKENDOKANBAN_DIR_UP } ObjKendoKanbanDirection; void ObjKendoKanban_Init(Actor* thisx, PlayState* play); diff --git a/src/overlays/actors/ovl_Obj_Lightblock/z_obj_lightblock.c b/src/overlays/actors/ovl_Obj_Lightblock/z_obj_lightblock.c index 1062d18f8..6a6937e7e 100644 --- a/src/overlays/actors/ovl_Obj_Lightblock/z_obj_lightblock.c +++ b/src/overlays/actors/ovl_Obj_Lightblock/z_obj_lightblock.c @@ -55,11 +55,11 @@ static ColliderCylinderInit sCylinderInit = { }; typedef struct { - /* 0x00 */ f32 scale; - /* 0x04 */ s16 radius; - /* 0x06 */ s16 height; - /* 0x08 */ s16 yShift; - /* 0x0C */ s32 params; + /* 0x0 */ f32 scale; + /* 0x4 */ s16 radius; + /* 0x6 */ s16 height; + /* 0x8 */ s16 yShift; + /* 0xC */ s32 params; } LightblockTypeVars; // size = 0x10 static LightblockTypeVars sLightblockTypeVars[] = { diff --git a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c index c8f657c13..10f12c64a 100644 --- a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c +++ b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.c @@ -108,7 +108,7 @@ void func_8098F220(ObjMure3* this, PlayState* play) { } void func_8098F364(ObjMure3* this, PlayState* play) { - s16 count = sRupeeCounts[OBJMURE3_PARAMS_RUPEEINDEX(&this->actor)]; + s16 count = sRupeeCounts[OBJMURE3_PARAM_RUPEEINDEX(&this->actor)]; s32 i; EnItem00** collectible; @@ -126,7 +126,7 @@ void func_8098F364(ObjMure3* this, PlayState* play) { } void func_8098F438(ObjMure3* this, PlayState* play) { - s16 count = sRupeeCounts[OBJMURE3_PARAMS_RUPEEINDEX(&this->actor)]; + s16 count = sRupeeCounts[OBJMURE3_PARAM_RUPEEINDEX(&this->actor)]; s32 i; for (i = 0; i < count; i++) { @@ -134,7 +134,7 @@ void func_8098F438(ObjMure3* this, PlayState* play) { if ((*collectible != NULL) && !((this->unk164 >> i) & 1)) { if ((*collectible)->unk1A4 != 0) { - Flags_SetSwitch(play, OBJMURE3_PARAMS_7F(&this->actor)); + Flags_SetSwitch(play, OBJMURE3_PARAM_7F(&this->actor)); } if ((*collectible)->actor.update == NULL) { this->unk164 |= (1 << i); @@ -147,7 +147,7 @@ void func_8098F438(ObjMure3* this, PlayState* play) { void ObjMure3_Init(Actor* thisx, PlayState* play) { ObjMure3* this = THIS; - if (Flags_GetSwitch(play, OBJMURE3_PARAMS_7F(&this->actor))) { + if (Flags_GetSwitch(play, OBJMURE3_PARAM_7F(&this->actor))) { Actor_Kill(&this->actor); return; } @@ -175,7 +175,7 @@ void func_8098F5E4(ObjMure3* this, PlayState* play) { if (Math3D_XZLengthSquared(this->actor.projectedPos.x, this->actor.projectedPos.z) < SQ(1150.0f)) { this->actor.flags |= ACTOR_FLAG_10; - sSpawnFuncs[OBJMURE3_PARAMS_RUPEEINDEX(&this->actor)](this, play); + sSpawnFuncs[OBJMURE3_PARAM_RUPEEINDEX(&this->actor)](this, play); func_8098F66C(this); } } diff --git a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h index 8715e4308..336a092b4 100644 --- a/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h +++ b/src/overlays/actors/ovl_Obj_Mure3/z_obj_mure3.h @@ -3,8 +3,8 @@ #include "global.h" -#define OBJMURE3_PARAMS_7F(thisx) ((thisx)->params & 0x7F) -#define OBJMURE3_PARAMS_RUPEEINDEX(thisx) (((thisx)->params >> 13) & 7) +#define OBJMURE3_PARAM_7F(thisx) ((thisx)->params & 0x7F) +#define OBJMURE3_PARAM_RUPEEINDEX(thisx) (((thisx)->params >> 13) & 7) struct ObjMure3; diff --git a/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.c b/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.c index eab144cbd..168168f41 100644 --- a/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.c +++ b/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.c @@ -74,7 +74,7 @@ void ObjOcarinalift_Init(Actor* thisx, PlayState* play) { this->unk16C = 1; this->unk170 = Lib_SegmentedToVirtual(path->points); func_80AC94C0(this, this->unk168); - if ((OBJOCARINALIFT_GET_C(&this->dyna.actor) != OBJOCARINALIFT_PARAMSC_1) && + if ((OBJOCARINALIFT_GET_C(&this->dyna.actor) != OBJOCARINALIFT_PARAM_1) && (Flags_GetSwitch(play, OBJOCARINALIFT_GET_SWITCH_FLAG(&this->dyna.actor)))) { func_80AC96B4(this); } else { @@ -137,7 +137,7 @@ void func_80AC96D0(ObjOcarinalift* this, PlayState* play) { this->unk168 += this->unk16C; thisx->speed *= 0.4f; if (((this->unk168 >= this->unk164) && (this->unk16C > 0)) || ((this->unk168 <= 0) && (this->unk16C < 0))) { - if (paramsC == OBJOCARINALIFT_PARAMSC_0) { + if (paramsC == OBJOCARINALIFT_PARAM_0) { this->unk16C = -this->unk16C; this->timer = 10; func_80AC9A68(this); @@ -155,11 +155,11 @@ void func_80AC96D0(ObjOcarinalift* this, PlayState* play) { func_80AC99C0(this); DynaPoly_DisableCollision(play, &play->colCtx.dyna, this->dyna.bgId); sp34 = false; - } else if ((paramsC == OBJOCARINALIFT_PARAMSC_1) && (this->unk168 == OBJOCARINALIFT_GET_1F(thisx))) { + } else if ((paramsC == OBJOCARINALIFT_PARAM_1) && (this->unk168 == OBJOCARINALIFT_GET_1F(thisx))) { func_80AC9AB8(this); } } - } else if ((paramsC == OBJOCARINALIFT_PARAMSC_1) && (this->unk168 == OBJOCARINALIFT_GET_1F(thisx))) { + } else if ((paramsC == OBJOCARINALIFT_PARAM_1) && (this->unk168 == OBJOCARINALIFT_GET_1F(thisx))) { func_80AC9AB8(this); } if (sp34) { @@ -176,7 +176,7 @@ void func_80AC99D4(ObjOcarinalift* this, PlayState* play) { if (!DynaPolyActor_IsPlayerOnTop(&this->dyna)) { func_80AC94C0(this, this->unk168); DynaPoly_EnableCollision(play, &play->colCtx.dyna, this->dyna.bgId); - if ((OBJOCARINALIFT_GET_C(&this->dyna.actor) == OBJOCARINALIFT_PARAMSC_1) && + if ((OBJOCARINALIFT_GET_C(&this->dyna.actor) == OBJOCARINALIFT_PARAM_1) && (this->unk168 == OBJOCARINALIFT_GET_1F(&this->dyna.actor))) { func_80AC9AB8(this); } else { @@ -218,7 +218,7 @@ void func_80AC9B5C(ObjOcarinalift* this, PlayState* play) { if (func_800B886C(&this->dyna.actor, play)) { if (play->msgCtx.ocarinaMode == 4) { if (play->msgCtx.lastPlayedSong == 0) { - if (OBJOCARINALIFT_GET_C(&this->dyna.actor) != OBJOCARINALIFT_PARAMSC_1) { + if (OBJOCARINALIFT_GET_C(&this->dyna.actor) != OBJOCARINALIFT_PARAM_1) { Flags_SetSwitch(play, OBJOCARINALIFT_GET_SWITCH_FLAG(&this->dyna.actor)); } CutsceneManager_Queue(this->dyna.actor.csId); diff --git a/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.h b/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.h index 3789383c2..abb1e440b 100644 --- a/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.h +++ b/src/overlays/actors/ovl_Obj_Ocarinalift/z_obj_ocarinalift.h @@ -24,9 +24,9 @@ typedef struct ObjOcarinalift { /* 0x176 */ s16 cutsceneTimer; } ObjOcarinalift; // size = 0x178 -typedef enum ObjOcarinaliftParams { - /* 0x0 */ OBJOCARINALIFT_PARAMSC_0, - /* 0x1 */ OBJOCARINALIFT_PARAMSC_1 -} ObjOcarinaliftParams; +typedef enum ObjOcarinaliftParam { + /* 0 */ OBJOCARINALIFT_PARAM_0, + /* 1 */ OBJOCARINALIFT_PARAM_1 +} ObjOcarinaliftParam; #endif // Z_OBJ_OCARINALIFT_H diff --git a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h index d2f61e2cf..4740b907a 100644 --- a/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h +++ b/src/overlays/actors/ovl_Obj_Oshihiki/z_obj_oshihiki.h @@ -12,7 +12,7 @@ typedef void (*ObjOshihikiActionFunc)(struct ObjOshihiki*, PlayState*); #define OBJOSHIHIKI_GET_7F00(thisx) (((thisx)->params >> 8) & 0x7F) #define OBJOSHIHIKI_GET_FF00(thisx) (((thisx)->params >> 8) & 0xFF) -enum { +typedef enum { /* 0 */ OBJOSHIHIKI_F_0, /* 1 */ OBJOSHIHIKI_F_1, /* 2 */ OBJOSHIHIKI_F_2, @@ -21,8 +21,8 @@ enum { /* 5 */ OBJOSHIHIKI_F_5, /* 6 */ OBJOSHIHIKI_F_6, /* 7 */ OBJOSHIHIKI_F_7, - /* 8 */ OBJOSHIHIKI_F_8, -}; + /* 8 */ OBJOSHIHIKI_F_8 +} ObjOshihikiParam; #define OBJOSHIHIKI_FF00_0 0 #define OBJOSHIHIKI_FF00_80 0x80 diff --git a/src/overlays/actors/ovl_Obj_Pzlblock/z_obj_pzlblock.c b/src/overlays/actors/ovl_Obj_Pzlblock/z_obj_pzlblock.c index 29a673eae..8a124b0ab 100644 --- a/src/overlays/actors/ovl_Obj_Pzlblock/z_obj_pzlblock.c +++ b/src/overlays/actors/ovl_Obj_Pzlblock/z_obj_pzlblock.c @@ -44,7 +44,7 @@ typedef struct { /* 0x0 */ s16 unk_00; /* 0x4 */ CollisionHeader* unk_04; /* 0x8 */ Gfx* unk_08; -} ObjPzlblockStruct; +} ObjPzlblockStruct; // size = 0xC ObjPzlblockStruct D_809A4060[] = { { GAMEPLAY_DANGEON_KEEP, &gameplay_dangeon_keep_Colheader_01D488, gameplay_dangeon_keep_DL_01C228 }, diff --git a/src/overlays/actors/ovl_Obj_Rotlift/z_obj_rotlift.h b/src/overlays/actors/ovl_Obj_Rotlift/z_obj_rotlift.h index df3fe1dee..e059b6baa 100644 --- a/src/overlays/actors/ovl_Obj_Rotlift/z_obj_rotlift.h +++ b/src/overlays/actors/ovl_Obj_Rotlift/z_obj_rotlift.h @@ -10,7 +10,7 @@ typedef enum { /* 0 */ OBJROTLIFT_TYPE_PLATFORMS, - /* 1 */ OBJROTLIFT_TYPE_SPIKES, + /* 1 */ OBJROTLIFT_TYPE_SPIKES } ObjRotliftType; struct ObjRotlift; diff --git a/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c b/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c index a4378d92b..92ac9ad85 100644 --- a/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c +++ b/src/overlays/actors/ovl_Obj_Snowball/z_obj_snowball.c @@ -73,10 +73,10 @@ static ColliderJntSphInit sJntSphInit = { }; typedef struct { - /* 0x00 */ s16 unk_00; - /* 0x02 */ s16 unk_02; - /* 0x04 */ ObjSnowballActionFunc unk_04; -} ObjSnowballStruct2; + /* 0x0 */ s16 unk_00; + /* 0x2 */ s16 unk_02; + /* 0x4 */ ObjSnowballActionFunc unk_04; +} ObjSnowballStruct2; // size = 0x8 static ObjSnowballStruct2 D_80B04F84[] = { { -1, 0, func_80B02D58 }, diff --git a/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c b/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c index fb34d736a..c366a6982 100644 --- a/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c +++ b/src/overlays/actors/ovl_Obj_Spidertent/z_obj_spidertent.c @@ -234,7 +234,7 @@ typedef struct { /* 0x1C */ f32 unk_1C; /* 0x20 */ f32 unk_20; /* 0x24 */ f32 unk_24; -} ObjSpidertentStruct; +} ObjSpidertentStruct; // size = 0x28 ObjSpidertentStruct D_80B31350[] = { { @@ -272,7 +272,7 @@ typedef struct { /* 0x0F */ s8 unk_0F; /* 0x10 */ Color_RGBA8 unk_10; /* 0x14 */ Color_RGBA8 unk_14; -} ObjSpidertentStruct2; +} ObjSpidertentStruct2; // size = 0x18 ObjSpidertentStruct2 D_80B313A0[] = { { diff --git a/src/overlays/actors/ovl_Obj_Tokei_Turret/z_obj_tokei_turret.h b/src/overlays/actors/ovl_Obj_Tokei_Turret/z_obj_tokei_turret.h index 620228f53..4ebde38ad 100644 --- a/src/overlays/actors/ovl_Obj_Tokei_Turret/z_obj_tokei_turret.h +++ b/src/overlays/actors/ovl_Obj_Tokei_Turret/z_obj_tokei_turret.h @@ -7,7 +7,7 @@ typedef enum { /* 0 */ TURRET_TIER_BASE, - /* 1 */ TURRET_TIER_TOP, + /* 1 */ TURRET_TIER_TOP } TurretTierType; struct ObjTokeiTurret; diff --git a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h index e670d19e0..43f424ceb 100644 --- a/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h +++ b/src/overlays/actors/ovl_Obj_Tokeidai/z_obj_tokeidai.h @@ -16,7 +16,7 @@ typedef enum { /* 8 */ OBJ_TOKEIDAI_TYPE_TOWER_WALLS_TERMINA_FIELD = 8, /* 9 */ OBJ_TOKEIDAI_TYPE_WALL_CLOCK, /* 10 */ OBJ_TOKEIDAI_TYPE_SMALL_WALL_CLOCK, - /* 11 */ OBJ_TOKEIDAI_TYPE_STAIRCASE_TO_ROOFTOP, + /* 11 */ OBJ_TOKEIDAI_TYPE_STAIRCASE_TO_ROOFTOP } ObjTokeidaiType; struct ObjTokeidai; diff --git a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c index 5f0e6c411..9b8baa861 100644 --- a/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c +++ b/src/overlays/actors/ovl_Obj_Tsubo/z_obj_tsubo.c @@ -63,8 +63,7 @@ typedef struct { /* 0x14 */ ObjTsuboUnkFunc breakPot1; /* 0x18 */ ObjTsuboUnkFunc breakPot2; /* 0x1C */ ObjTsuboUnkFunc breakPot3; - -} ObjTsuboData; +} ObjTsuboData; // size = 0x20 ObjTsuboData sPotTypeData[4] = { { GAMEPLAY_DANGEON_KEEP, 0.197f, gameplay_dangeon_keep_DL_017EA0, gameplay_dangeon_keep_DL_018090, 12, 32, diff --git a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.h b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.h index 92bd96549..b6ed8d0df 100644 --- a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.h +++ b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.h @@ -9,10 +9,10 @@ typedef void (*ObjUsiyaneActionFunc)(struct ObjUsiyane*, PlayState*); #define OBJUSIYANE_GET_F(thisx) ((thisx)->params & 0xF) -enum { +typedef enum { /* 0 */ OBJUSIYANE_F_0, - /* 1 */ OBJUSIYANE_F_1, -}; + /* 1 */ OBJUSIYANE_F_1 +} ObjUsiyaneParam; typedef struct { /* 0x00 */ Vec3f unk_00; diff --git a/src/overlays/actors/ovl_Obj_Y2shutter/z_obj_y2shutter.h b/src/overlays/actors/ovl_Obj_Y2shutter/z_obj_y2shutter.h index bccdce645..a1b32bbe9 100644 --- a/src/overlays/actors/ovl_Obj_Y2shutter/z_obj_y2shutter.h +++ b/src/overlays/actors/ovl_Obj_Y2shutter/z_obj_y2shutter.h @@ -13,8 +13,8 @@ typedef struct ObjY2shutter { } ObjY2shutter; // size = 0x160 typedef enum { - /* 0x0 */ SHUTTER_BARRED, - /* 0x1 */ SHUTTER_GRATED, + /* 0 */ SHUTTER_BARRED, + /* 1 */ SHUTTER_GRATED } ShutterType; #define OBJY2SHUTTER_GET_TYPE(thisx) (((thisx)->params >> 7) & 1) diff --git a/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h b/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h index 87a67191c..8bd3ecd65 100644 --- a/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h +++ b/src/overlays/actors/ovl_Oceff_Storm/z_oceff_storm.h @@ -19,6 +19,6 @@ typedef struct OceffStorm { typedef enum { /* 1 */ OCEFF_STORM_ACTION_PARAM_1 = 1 -} OceffStormActionParams; +} OceffStormActionParam; #endif // Z_OCEFF_STORM_H diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 41cf34318..9bf780859 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -80,7 +80,7 @@ typedef enum AnimSfxType { /* 7 */ ANIMSFX_TYPE_FLOOR_JUMP, // does not use sfxId /* 8 */ ANIMSFX_TYPE_8, // FLOOR_WALK_Something2 // does not use sfxId /* 9 */ ANIMSFX_TYPE_9, // Uses NA_SE_PL_WALK_LADDER // does not use sfxId, unused - /* 10 */ ANIMSFX_TYPE_SURFACE, + /* 10 */ ANIMSFX_TYPE_SURFACE } AnimSfxType; #define ANIMSFX_SHIFT_TYPE(type) ((type) << 11) diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c index 0e79c5df7..a786327fa 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c +++ b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.c @@ -52,7 +52,7 @@ u32 EffectSsEnFire_Init(PlayState* play, u32 index, EffectSs* this, void* initPa this->rScaleMax = initParams->scale; - if (initParams->params & ENFIRE_PARAMS_USE_SCALE) { + if (initParams->params & ENFIRE_PARAM_USE_SCALE) { this->rScale = initParams->scale; } else { this->rScale = 0; diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h index 0f17477b8..491df81a5 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h +++ b/src/overlays/effects/ovl_Effect_Ss_En_Fire/z_eff_ss_en_fire.h @@ -4,7 +4,7 @@ #include "global.h" #define ENFIRE_FLAGS_BODYPART_POS_VEC3S (1 << 15) -#define ENFIRE_PARAMS_USE_SCALE (1 << 15) +#define ENFIRE_PARAM_USE_SCALE (1 << 15) typedef struct { /* 0x00 */ Actor* actor; diff --git a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h index c2f231269..4f8cd94fe 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h +++ b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.h @@ -4,30 +4,30 @@ #include "global.h" typedef enum { - /* 0x00 */ FHGFLASH_LIGHTBALL, - /* 0x01 */ FHGFLASH_SHOCK + /* 0 */ FHGFLASH_LIGHTBALL, + /* 1 */ FHGFLASH_SHOCK } FhgFlashType; typedef enum { - /* 0x00 */ FHGFLASH_LIGHTBALL_GREEN, - /* 0x01 */ FHGFLASH_LIGHTBALL_LIGHTBLUE, - /* 0x02 */ FHGFLASH_LIGHTBALL_RED, - /* 0x03 */ FHGFLASH_LIGHTBALL_YELLOW, - /* 0x04 */ FHGFLASH_LIGHTBALL_BLUE, - /* 0x05 */ FHGFLASH_LIGHTBALL_PURPLE, - /* 0x06 */ FHGFLASH_LIGHTBALL_ORANGE, - /* 0x07 */ FHGFLASH_LIGHTBALL_WHITE1, - /* 0x08 */ FHGFLASH_LIGHTBALL_WHITE2 + /* 0 */ FHGFLASH_LIGHTBALL_GREEN, + /* 1 */ FHGFLASH_LIGHTBALL_LIGHTBLUE, + /* 2 */ FHGFLASH_LIGHTBALL_RED, + /* 3 */ FHGFLASH_LIGHTBALL_YELLOW, + /* 4 */ FHGFLASH_LIGHTBALL_BLUE, + /* 5 */ FHGFLASH_LIGHTBALL_PURPLE, + /* 6 */ FHGFLASH_LIGHTBALL_ORANGE, + /* 7 */ FHGFLASH_LIGHTBALL_WHITE1, + /* 8 */ FHGFLASH_LIGHTBALL_WHITE2 } FhgFlashLightBallParam; typedef enum { - /* 0x00 */ FHGFLASH_SHOCK_NO_ACTOR, - /* 0x01 */ FHGFLASH_SHOCK_PLAYER, - /* 0x02 */ FHGFLASH_SHOCK_GOHT_2, - /* 0x03 */ FHGFLASH_SHOCK_GOHT_3, - /* 0x04 */ FHGFLASH_SHOCK_GOHT_4, - /* 0x05 */ FHGFLASH_SHOCK_GOHT_5, - /* 0x06 */ FHGFLASH_SHOCK_GOHT_6 + /* 0 */ FHGFLASH_SHOCK_NO_ACTOR, + /* 1 */ FHGFLASH_SHOCK_PLAYER, + /* 2 */ FHGFLASH_SHOCK_GOHT_2, + /* 3 */ FHGFLASH_SHOCK_GOHT_3, + /* 4 */ FHGFLASH_SHOCK_GOHT_4, + /* 5 */ FHGFLASH_SHOCK_GOHT_5, + /* 6 */ FHGFLASH_SHOCK_GOHT_6 } FhgFlashLightningParam; typedef struct { diff --git a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c index f9735d396..1856ba6ac 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c +++ b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.c @@ -21,10 +21,10 @@ EffectSsInit Effect_Ss_Stone1_InitVars = { }; typedef struct { - /* 0x00 */ TexturePtr texture; - /* 0x04 */ Color_RGBA8 primColor; - /* 0x08 */ Color_RGBA8 envColor; -} EffStoneDrawInfo; + /* 0x0 */ TexturePtr texture; + /* 0x4 */ Color_RGBA8 primColor; + /* 0x8 */ Color_RGBA8 envColor; +} EffStoneDrawInfo; // size = 0xC static EffStoneDrawInfo sDrawInfo[] = { { gEffStone8Tex, { 200, 0, 0, 255 }, { 0, 0, 0, 255 } }, diff --git a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h index b50868b81..627bbd4f2 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h +++ b/src/overlays/effects/ovl_Effect_Ss_Stone1/z_eff_ss_stone1.h @@ -4,8 +4,8 @@ #include "global.h" typedef struct { - /* 0x00 */ Vec3f pos; - /* 0x0C */ s32 reg0; + /* 0x0 */ Vec3f pos; + /* 0xC */ s32 reg0; } EffectSsStone1InitParams; // size = 0x10 #endif diff --git a/src/overlays/gamestates/ovl_select/z_select.h b/src/overlays/gamestates/ovl_select/z_select.h index 69312e986..8b5974103 100644 --- a/src/overlays/gamestates/ovl_select/z_select.h +++ b/src/overlays/gamestates/ovl_select/z_select.h @@ -8,9 +8,9 @@ struct MapSelectState; typedef void (*SelectLoadFunc)(struct MapSelectState*, u32, s32); typedef struct { - /* 0x00 */ char* name; - /* 0x04 */ SelectLoadFunc loadFunc; - /* 0x08 */ s32 entrance; + /* 0x0 */ char* name; + /* 0x4 */ SelectLoadFunc loadFunc; + /* 0x8 */ s32 entrance; } SceneSelectEntry; // size = 0xC typedef struct MapSelectState { diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c index 1b8511b50..1b18adcd1 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_collect.c @@ -563,7 +563,7 @@ typedef struct { /* 0x2 */ s16 down; /* 0x4 */ s16 left; /* 0x6 */ s16 right; -} CursorPointDirection; +} CursorPointDirection; // size = 0x8 void KaleidoScope_UpdateQuestCursor(PlayState* play) { static s16 sQuestSongPlaybackDelayTimer = 0; diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c index 8517fdf20..f643d8d40 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_debug.c @@ -37,7 +37,7 @@ typedef struct { /* 0x0 */ s16 screenX; /* 0x2 */ s16 screenY; /* 0x4 */ s16 width; -} SectionPosition; // size = 0x6; +} SectionPosition; // size = 0x6 // clang-format off SectionPosition sSectionPositions[] = { From 7f5087d0b2014dc1ba2bbfc7ce858f0059a8a7cb Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Tue, 6 Jun 2023 12:16:34 +1000 Subject: [PATCH 03/10] sys_math.c Rename (#1258) * rename via comments * missed a comment * math header * name boot_80086760.c functions * PR Review * rm cam comment * Elliptic review * alphabetical --- include/functions.h | 101 +----------------- include/variables.h | 1 - include/z64math.h | 71 ++++++++++++ src/boot_O2/boot_80086760.c | 77 +++++-------- src/code/sys_math.c | 33 +++--- src/code/z_actor.c | 18 ++-- src/code/z_bgcheck.c | 3 +- src/code/z_camera.c | 33 +++--- src/code/z_eff_blure.c | 24 ++--- src/code/z_en_item00.c | 12 +-- src/code/z_lib.c | 6 +- src/code/z_olib.c | 8 +- src/code/z_player_lib.c | 12 +-- src/code/z_sub_s.c | 2 +- .../actors/ovl_Bg_F40_Flift/z_bg_f40_flift.c | 7 +- .../ovl_Bg_F40_Swlift/z_bg_f40_swlift.c | 2 +- .../actors/ovl_Bg_Icefloe/z_bg_icefloe.c | 10 +- .../actors/ovl_Bg_Icicle/z_bg_icicle.c | 8 +- .../actors/ovl_Bg_Spdweb/z_bg_spdweb.c | 7 +- src/overlays/actors/ovl_Boss_02/z_boss_02.c | 38 +++---- src/overlays/actors/ovl_Boss_03/z_boss_03.c | 56 +++++----- src/overlays/actors/ovl_Boss_04/z_boss_04.c | 4 +- src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c | 18 ++-- .../ovl_En_Akindonuts/z_en_akindonuts.c | 2 +- src/overlays/actors/ovl_En_Am/z_en_am.c | 10 +- src/overlays/actors/ovl_En_Arrow/z_en_arrow.c | 2 +- .../ovl_En_Attack_Niw/z_en_attack_niw.c | 8 +- src/overlays/actors/ovl_En_Baguo/z_en_baguo.c | 6 +- src/overlays/actors/ovl_En_Bat/z_en_bat.c | 9 +- .../actors/ovl_En_Bbfall/z_en_bbfall.c | 2 +- src/overlays/actors/ovl_En_Bee/z_en_bee.c | 16 ++- src/overlays/actors/ovl_En_Bh/z_en_bh.c | 8 +- .../actors/ovl_En_Bigokuta/z_en_bigokuta.c | 8 +- .../actors/ovl_En_Bigpamet/z_en_bigpamet.c | 4 +- src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c | 4 +- .../actors/ovl_En_Bigslime/z_en_bigslime.c | 33 +++--- .../actors/ovl_En_Bigslime/z_en_bigslime.h | 2 +- .../actors/ovl_En_Bom_Chu/z_en_bom_chu.c | 2 +- .../actors/ovl_En_Bombers/z_en_bombers.c | 4 +- .../actors/ovl_En_Bomjima/z_en_bomjima.c | 10 +- .../actors/ovl_En_Bomjimb/z_en_bomjimb.c | 4 +- .../actors/ovl_En_Clear_Tag/z_en_clear_tag.c | 4 +- .../actors/ovl_En_Col_Man/z_en_col_man.c | 6 +- src/overlays/actors/ovl_En_Crow/z_en_crow.c | 4 +- .../actors/ovl_En_Daiku2/z_en_daiku2.c | 12 +-- .../actors/ovl_En_Dekubaba/z_en_dekubaba.c | 4 +- src/overlays/actors/ovl_En_Dg/z_en_dg.c | 10 +- .../actors/ovl_En_Dinofos/z_en_dinofos.c | 12 +-- .../actors/ovl_En_Dodongo/z_en_dodongo.c | 14 +-- .../actors/ovl_En_Dragon/z_en_dragon.c | 10 +- .../actors/ovl_En_Egblock/z_en_egblock.c | 10 +- src/overlays/actors/ovl_En_Egol/z_en_egol.c | 17 ++- src/overlays/actors/ovl_En_Elf/z_en_elf.c | 12 +-- .../actors/ovl_En_Elfbub/z_en_elfbub.c | 2 +- .../actors/ovl_En_Elfgrp/z_en_elfgrp.c | 4 +- .../actors/ovl_En_Elforg/z_en_elforg.c | 6 +- .../actors/ovl_En_Encount1/z_en_encount1.c | 14 +-- .../actors/ovl_En_Encount4/z_en_encount4.c | 4 +- .../actors/ovl_En_Estone/z_en_estone.c | 10 +- src/overlays/actors/ovl_En_Fall/z_en_fall.c | 8 +- src/overlays/actors/ovl_En_Famos/z_en_famos.c | 6 +- .../actors/ovl_En_Firefly/z_en_firefly.c | 2 +- src/overlays/actors/ovl_En_Fish2/z_en_fish2.c | 24 ++--- .../actors/ovl_En_Fishing/z_en_fishing.c | 56 +++++----- src/overlays/actors/ovl_En_Fz/z_en_fz.c | 22 ++-- src/overlays/actors/ovl_En_Gg2/z_en_gg2.c | 2 +- src/overlays/actors/ovl_En_Gk/z_en_gk.c | 2 +- .../ovl_En_Grasshopper/z_en_grasshopper.c | 34 +++--- src/overlays/actors/ovl_En_Gs/z_en_gs.c | 4 +- .../actors/ovl_En_Hakurock/z_en_hakurock.c | 2 +- .../actors/ovl_En_Hanabi/z_en_hanabi.c | 10 +- .../ovl_En_Hidden_Nuts/z_en_hidden_nuts.c | 8 +- .../actors/ovl_En_Hint_Skb/z_en_hint_skb.c | 8 +- src/overlays/actors/ovl_En_Ik/z_en_ik.c | 14 +-- src/overlays/actors/ovl_En_Jg/z_en_jg.c | 2 +- .../actors/ovl_En_Kaizoku/z_en_kaizoku.c | 2 +- .../actors/ovl_En_Kakasi/z_en_kakasi.c | 6 +- src/overlays/actors/ovl_En_Kame/z_en_kame.c | 4 +- .../actors/ovl_En_Kanban/z_en_kanban.c | 20 ++-- .../actors/ovl_En_Minifrog/z_en_minifrog.c | 6 +- .../actors/ovl_En_Minislime/z_en_minislime.c | 30 +++--- src/overlays/actors/ovl_En_Mkk/z_en_mkk.c | 10 +- .../actors/ovl_En_Nimotsu/z_en_nimotsu.c | 4 +- src/overlays/actors/ovl_En_Niw/z_en_niw.c | 22 ++-- src/overlays/actors/ovl_En_Nwc/z_en_nwc.c | 12 +-- src/overlays/actors/ovl_En_Osk/z_en_osk.c | 6 +- src/overlays/actors/ovl_En_Owl/z_en_owl.c | 2 +- .../actors/ovl_En_Pametfrog/z_en_pametfrog.c | 10 +- src/overlays/actors/ovl_En_Part/z_en_part.c | 6 +- .../actors/ovl_En_Peehat/z_en_peehat.c | 14 +-- src/overlays/actors/ovl_En_Pp/z_en_pp.c | 26 ++--- src/overlays/actors/ovl_En_Pr/z_en_pr.c | 8 +- src/overlays/actors/ovl_En_Pr2/z_en_pr2.c | 18 ++-- src/overlays/actors/ovl_En_Prz/z_en_prz.c | 32 +++--- .../actors/ovl_En_Racedog/z_en_racedog.c | 18 ++-- src/overlays/actors/ovl_En_Raf/z_en_raf.c | 6 +- src/overlays/actors/ovl_En_Rat/z_en_rat.c | 20 ++-- .../actors/ovl_En_Ruppecrow/z_en_ruppecrow.c | 4 +- src/overlays/actors/ovl_En_Sb/z_en_sb.c | 6 +- .../actors/ovl_En_Scopecrow/z_en_scopecrow.c | 2 +- .../actors/ovl_En_Scopenuts/z_en_scopenuts.c | 2 +- .../actors/ovl_En_Sellnuts/z_en_sellnuts.c | 2 +- src/overlays/actors/ovl_En_Skb/z_en_skb.c | 10 +- src/overlays/actors/ovl_En_Slime/z_en_slime.c | 42 ++++---- .../actors/ovl_En_Snowman/z_en_snowman.c | 20 ++-- .../actors/ovl_En_Suttari/z_en_suttari.c | 8 +- src/overlays/actors/ovl_En_Sw/z_en_sw.c | 2 +- .../ovl_En_Syateki_Crow/z_en_syateki_crow.c | 4 +- .../ovl_En_Syateki_Okuta/z_en_syateki_okuta.c | 4 +- .../ovl_En_Syateki_Wf/z_en_syateki_wf.c | 6 +- .../actors/ovl_En_Tanron1/z_en_tanron1.c | 8 +- .../actors/ovl_En_Tanron2/z_en_tanron2.c | 2 +- .../actors/ovl_En_Tanron3/z_en_tanron3.c | 26 ++--- .../actors/ovl_En_Tanron4/z_en_tanron4.c | 23 ++-- .../actors/ovl_En_Tanron5/z_en_tanron5.c | 16 +-- .../actors/ovl_En_Thiefbird/z_en_thiefbird.c | 10 +- src/overlays/actors/ovl_En_Tite/z_en_tite.c | 10 +- src/overlays/actors/ovl_En_Trt2/z_en_trt2.c | 12 +-- .../actors/ovl_En_Tru_Mt/z_en_tru_mt.c | 2 +- .../ovl_En_Water_Effect/z_en_water_effect.c | 12 +-- src/overlays/actors/ovl_En_Wf/z_en_wf.c | 10 +- src/overlays/actors/ovl_En_Wiz/z_en_wiz.c | 8 +- .../actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c | 22 ++-- .../actors/ovl_En_Wood02/z_en_wood02.c | 6 +- src/overlays/actors/ovl_En_Yb/z_en_yb.c | 6 +- src/overlays/actors/ovl_En_Zog/z_en_zog.c | 8 +- .../ovl_Obj_Bigicicle/z_obj_bigicicle.c | 16 +-- src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c | 2 +- .../actors/ovl_Obj_Hunsui/z_obj_hunsui.c | 8 +- .../actors/ovl_Obj_Ice_Poly/z_obj_ice_poly.c | 4 +- src/overlays/actors/ovl_Obj_Taru/z_obj_taru.c | 6 +- .../actors/ovl_player_actor/z_player.c | 30 +++--- .../ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c | 4 +- .../z_eff_ss_fhg_flash.c | 12 +-- .../z_eff_ss_kirakira.c | 4 +- .../effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c | 2 +- tools/disasm/functions.txt | 78 +++++++------- tools/namefixer.py | 8 +- tools/sizes/boot_functions.csv | 66 ++++++------ tools/sizes/code_functions.csv | 12 +-- 140 files changed, 916 insertions(+), 955 deletions(-) diff --git a/include/functions.h b/include/functions.h index 7d64745f6..71aa14729 100644 --- a/include/functions.h +++ b/include/functions.h @@ -129,39 +129,6 @@ void MtxConv_L2F(MtxF* mtx, Mtx* mf); void __assert(const char* file, u32 lineNum); // void func_800862B4(void); s32 func_80086620(OSMesgQueue* param_1, PadMgr* param_2, OSContStatus* param_3); -f32 func_80086760(f32 x); -// void func_80086794(void); -// void func_800867B4(void); -// void func_800867D4(void); -// void func_800867F4(void); -f32 func_80086814(f32 x); -// void func_80086834(void); -// void func_80086880(void); -// void func_800869A4(void); -// void func_80086AF0(void); -f32 func_80086B30(f32 y, f32 x); -// void func_80086C18(void); -f32 func_80086C48(f32 x); -// void func_80086C70(void); -f64 func_80086C7C(f64 param_1); -s32 func_80086C88(f32 param_1); -s32 func_80086C98(f64 param_1); -// void func_80086CA8(void); -f64 func_80086CB4(f64 param_1); -s32 func_80086CC0(f32 param_1); -s32 func_80086CD0(f64 param_1); -// void func_80086CE0(void); -f64 func_80086CEC(f64 param_1); -s32 func_80086CF8(f32 param_1); -s32 func_80086D08(f64 param_1); -// void func_80086D18(void); -f64 func_80086D24(f64); -s32 func_80086D30(f32 param_1); -s32 func_80086D40(f64 param_1); -// void func_80086D50(void); -f64 func_80086D6C(f64 param_1); -s32 func_80086D8C(f32 param_1); -s32 func_80086DAC(f64 param_1); u32 Rand_Next(void); void Rand_Seed(u32 seed); @@ -1161,70 +1128,17 @@ void func_800FEA50(PlayState* play); void func_800FEAB0(void); // void func_800FEAC0(void); void func_800FEAF4(EnvironmentContext* envCtx); + void* Lib_MemCpy(void* dest, void* src, size_t size); void* Lib_MemSet(void* buffer, s32 value, size_t size); -f32 Math_CosS(s16 angle); -f32 Math_SinS(s16 angle); -s32 Math_StepToIImpl(s32 start, s32 target, s32 step); -void Math_StepToIGet(s32* pValue, s32 target, s32 step); -s32 Math_StepToI(s32* pValue, s32 target, s32 step); -s32 Math_ScaledStepToS(s16* pValue, s16 target, s16 step); -s32 Math_StepToS(s16* pValue, s16 target, s16 step); -s32 Math_StepToC(s8* pValue, s8 target, s8 step); -s32 Math_StepToF(f32* pValue, f32 target, f32 step); -s32 Math_StepUntilAngleS(s16* pValue, s16 target, s16 step); -s32 Math_StepToAngleS(s16* pValue, s16 target, s16 step); -s32 Math_AsymStepToS(s16* pValue, s16 target, s16 incrStep, s16 decrStep); -s32 Math_StepUntilF(f32* pValue, f32 limit, f32 step); -s32 Math_AsymStepToF(f32* pValue, f32 target, f32 incrStep, f32 decrStep); void func_800FF3A0(f32* distOut, s16* angleOut, Input* input); -s16 Rand_S16Offset(s16 base, s16 range); -s16 Rand_S16OffsetStride(s16 base, s16 stride, s16 range); -void Math_Vec3f_Copy(Vec3f* dest, Vec3f* src); -void Math_Vec3s_Copy(Vec3s* dest, Vec3s* src); -void Math_Vec3s_ToVec3f(Vec3f* dest, Vec3s* src); -void Math_Vec3f_ToVec3s(Vec3s* dest, Vec3f* src); -void Math_Vec3f_Sum(Vec3f* l, Vec3f* r, Vec3f* dest); -void Math_Vec3f_Diff(Vec3f* l, Vec3f* r, Vec3f* dest); -void Math_Vec3s_DiffToVec3f(Vec3f* dest, Vec3s* l, Vec3s* r); -void Math_Vec3f_Scale(Vec3f* vec, f32 scale); -void Math_Vec3f_ScaleAndStore(Vec3f* vec, f32 scale, Vec3f* dest); -void Math_Vec3f_Lerp(Vec3f* a, Vec3f* b, f32 t, Vec3f* dest); -void Math_Vec3f_SumScaled(Vec3f* a, Vec3f* b, f32 scale, Vec3f* dest); -void Math_Vec3f_AddRand(Vec3f* orig, f32 scale, Vec3f* dest); -void Math_Vec3f_DistXYZAndStoreNormDiff(Vec3f* a, Vec3f* b, f32 scale, Vec3f* dest); -f32 Math_Vec3f_DistXYZ(Vec3f* a, Vec3f* b); -f32 Math_Vec3f_DistXYZAndStoreDiff(Vec3f* a, Vec3f* b, Vec3f* dest); -f32 Math_Vec3f_DistXZ(Vec3f* a, Vec3f* b); -f32 Math_Vec3f_DistXZAndStore(Vec3f* a, Vec3f* b, f32* dx, f32* dz); -f32 Math_Vec3f_StepToXZ(Vec3f* start, Vec3f* target, f32 speed); -f32 Math_Vec3f_DiffY(Vec3f* a, Vec3f* b); -s16 Math_Vec3f_Yaw(Vec3f* a, Vec3f* b); -s16 Math_Vec3f_Pitch(Vec3f* a, Vec3f* b); void Actor_ProcessInitChain(Actor* actor, InitChainEntry* ichain); -// void IChain_Apply_u8(u8* actor, InitChainEntry* init); -// void IChain_Apply_s8(u8* actor, InitChainEntry* init); -// void IChain_Apply_u16(u8* actor, InitChainEntry* init); -// void IChain_Apply_s16(u8* actor, InitChainEntry* init); -// void IChain_Apply_u32(u8* actor, InitChainEntry* init); -// void IChain_Apply_s32(u8* actor, InitChainEntry* init); -// void IChain_Apply_f32(u8* actor, InitChainEntry* init); -// void IChain_Apply_f32div1000(u8* actor, InitChainEntry* init); -// void IChain_Apply_Vec3f(u8* actor, InitChainEntry* init); -// void IChain_Apply_Vec3fdiv1000(u8* actor, InitChainEntry* init); -// void IChain_Apply_Vec3s(u8* actor, InitChainEntry* init); -f32 Math_SmoothStepToF(f32* pValue, f32 target, f32 fraction, f32 step, f32 minStep); -void Math_ApproachF(f32* pValue, f32 target, f32 scale, f32 maxStep); -void Math_ApproachZeroF(f32* pValue, f32 scale, f32 maxStep); -s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, s16 step, s16 minStep); -void Math_ApproachS(s16* pValue, s16 target, s16 scale, s16 maxStep); void Color_RGBA8_Copy(Color_RGBA8* dst, Color_RGBA8* src); void func_801000A4(u16 sfxId); void func_801000CC(u16 sfxId); void Lib_PlaySfxAtPos(Vec3f* pos, u16 sfxId); void Lib_Vec3f_TranslateAndRotateY(Vec3f* translation, s16 rotAngle, Vec3f* src, Vec3f* dst); void Lib_LerpRGB(Color_RGB8* a, Color_RGB8* b, f32 t, Color_RGB8* dst); -f32 Math_Vec3f_StepTo(Vec3f* start, Vec3f* target, f32 speed); void Lib_Nop801004FC(void); void* Lib_SegmentedToVirtual(void* ptr); void* Lib_SegmentedToVirtualNull(void* ptr); @@ -2056,13 +1970,7 @@ void CmpDma_LoadAllFiles(uintptr_t segmentVrom, void* dst, size_t size); // void Check_DrawRegionLockErrorMessage(void); void Check_ExpansionPak(void); void Check_RegionIsSupported(void); -f32 func_80179300(f32 n); -f32 func_80179400(s32 n); -f32 pow_int(f32 base, s32 exp); -f32 sin_rad(f32 rad); -f32 cos_rad(f32 rad); -f32 Rand_ZeroFloat(f32 scale); -f32 randPlusMinusPoint5Scaled(f32 scale); + f32 Math3D_Normalize(Vec3f* vec); s32 Math3D_PlaneVsLineSegClosestPoint(f32 planeAA, f32 planeAB, f32 planeAC, f32 planeADist, f32 planeBA, f32 planeBB, f32 planeBC, f32 planeBDist, Vec3f* linePointA, Vec3f* linePointB, Vec3f* closestPoint); s32 func_80179798(Vec3f* param_1, Vec3f* param_2, Vec3f* param_3, Vec3f* param_4, Vec3f* param_5, Vec3f* param_6); @@ -2158,11 +2066,6 @@ s32 Math3D_YZInSphere(Sphere16* sphere, f32 y, f32 z); // void func_8017FB1C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11); // void func_8017FD44(void); -s16 Math_Atan2S(f32 y, f32 x); -f32 Math_Atan2F(f32 y, f32 x); -s16 Math_Atan2S_XY(f32 x, f32 y); -f32 Math_Atan2F_XY(f32 x, f32 y); - u64* SysUcode_GetUCodeBoot(void); size_t SysUcode_GetUCodeBootSize(void); u64* SysUcode_GetUCode(void); diff --git a/include/variables.h b/include/variables.h index e264a7d9b..fef772123 100644 --- a/include/variables.h +++ b/include/variables.h @@ -755,7 +755,6 @@ extern s32 gScreenWidth; extern s32 gScreenHeight; extern u32 startHeapSize; extern UNK_PTR D_801D1540; -// extern f32 sFactorialTbl[13]; extern Vec3f gZeroVec3f; extern Vec3s gZeroVec3s; diff --git a/include/z64math.h b/include/z64math.h index cd5c1db20..a86cf9a20 100644 --- a/include/z64math.h +++ b/include/z64math.h @@ -168,4 +168,75 @@ typedef enum { #define SQXYZ(vec) ((vec.x) * (vec.x) + (vec.y) * (vec.y) + (vec.z) * (vec.z)) #define DOTXYZ(vec1, vec2) ((vec1.x) * (vec2.x) + (vec1.y) * (vec2.y) + (vec1.z) * (vec2.z)) +f32 Math_CosS(s16 angle); +f32 Math_SinS(s16 angle); +s32 Math_StepToIImpl(s32 start, s32 target, s32 step); +void Math_StepToIGet(s32* pValue, s32 target, s32 step); +s32 Math_StepToI(s32* pValue, s32 target, s32 step); +s32 Math_ScaledStepToS(s16* pValue, s16 target, s16 step); +s32 Math_StepToS(s16* pValue, s16 target, s16 step); +s32 Math_StepToC(s8* pValue, s8 target, s8 step); +s32 Math_StepToF(f32* pValue, f32 target, f32 step); +s32 Math_StepUntilAngleS(s16* pValue, s16 target, s16 step); +s32 Math_StepToAngleS(s16* pValue, s16 target, s16 step); +s32 Math_AsymStepToS(s16* pValue, s16 target, s16 incrStep, s16 decrStep); +s32 Math_StepUntilF(f32* pValue, f32 limit, f32 step); +s32 Math_AsymStepToF(f32* pValue, f32 target, f32 incrStep, f32 decrStep); +s16 Rand_S16Offset(s16 base, s16 range); +s16 Rand_S16OffsetStride(s16 base, s16 stride, s16 range); +void Math_Vec3f_Copy(Vec3f* dest, Vec3f* src); +void Math_Vec3s_Copy(Vec3s* dest, Vec3s* src); +void Math_Vec3s_ToVec3f(Vec3f* dest, Vec3s* src); +void Math_Vec3f_ToVec3s(Vec3s* dest, Vec3f* src); +void Math_Vec3f_Sum(Vec3f* l, Vec3f* r, Vec3f* dest); +void Math_Vec3f_Diff(Vec3f* l, Vec3f* r, Vec3f* dest); +void Math_Vec3s_DiffToVec3f(Vec3f* dest, Vec3s* l, Vec3s* r); +void Math_Vec3f_Scale(Vec3f* vec, f32 scale); +void Math_Vec3f_ScaleAndStore(Vec3f* vec, f32 scale, Vec3f* dest); +void Math_Vec3f_Lerp(Vec3f* a, Vec3f* b, f32 t, Vec3f* dest); +void Math_Vec3f_SumScaled(Vec3f* a, Vec3f* b, f32 scale, Vec3f* dest); +void Math_Vec3f_AddRand(Vec3f* orig, f32 scale, Vec3f* dest); +void Math_Vec3f_DistXYZAndStoreNormDiff(Vec3f* a, Vec3f* b, f32 scale, Vec3f* dest); +f32 Math_Vec3f_DistXYZ(Vec3f* a, Vec3f* b); +f32 Math_Vec3f_DistXYZAndStoreDiff(Vec3f* a, Vec3f* b, Vec3f* dest); +f32 Math_Vec3f_DistXZ(Vec3f* a, Vec3f* b); +f32 Math_Vec3f_DistXZAndStore(Vec3f* a, Vec3f* b, f32* dx, f32* dz); +f32 Math_Vec3f_StepToXZ(Vec3f* start, Vec3f* target, f32 speed); +f32 Math_Vec3f_DiffY(Vec3f* a, Vec3f* b); +s16 Math_Vec3f_Yaw(Vec3f* a, Vec3f* b); +s16 Math_Vec3f_Pitch(Vec3f* a, Vec3f* b); +f32 Math_SmoothStepToF(f32* pValue, f32 target, f32 fraction, f32 step, f32 minStep); +void Math_ApproachF(f32* pValue, f32 target, f32 scale, f32 maxStep); +void Math_ApproachZeroF(f32* pValue, f32 scale, f32 maxStep); +s16 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, s16 step, s16 minStep); +void Math_ApproachS(s16* pValue, s16 target, s16 scale, s16 maxStep); +f32 Math_Vec3f_StepTo(Vec3f* start, Vec3f* target, f32 speed); + +f32 Math_FactorialF(f32 n); +f32 Math_Factorial(s32 n); +f32 Math_PowF(f32 base, s32 exp); +f32 Math_SinF(f32 rad); +f32 Math_CosF(f32 rad); +f32 Rand_ZeroFloat(f32 scale); +f32 Rand_CenteredFloat(f32 scale); + +f32 Math_FTanF(f32 x); +f32 Math_FFloorF(f32 x); +f32 Math_FCeilF(f32 x); +f32 Math_FRoundF(f32 x); +f32 Math_FTruncF(f32 x); +f32 Math_FNearbyIntF(f32 x); +f32 Math_FAtanTaylorQF(f32 x); +f32 Math_FAtanTaylorF(f32 x); +f32 Math_FAtanContFracF(f32 x); +f32 Math_FAtanF(f32 x); +f32 Math_FAtan2F(f32 y, f32 x); +f32 Math_FAsinF(f32 x); +f32 Math_FAcosF(f32 x); + +s16 Math_Atan2S(f32 y, f32 x); +f32 Math_Atan2F(f32 y, f32 x); +s16 Math_Atan2S_XY(f32 x, f32 y); +f32 Math_Atan2F_XY(f32 x, f32 y); + #endif diff --git a/src/boot_O2/boot_80086760.c b/src/boot_O2/boot_80086760.c index 398a1e41a..cb77bed50 100644 --- a/src/boot_O2/boot_80086760.c +++ b/src/boot_O2/boot_80086760.c @@ -5,57 +5,44 @@ #include "global.h" #include "fixed_point.h" -extern f32 func_80086C70(f32 x); -extern f32 func_80086CA8(f32 x); -extern f32 func_80086D50(f32 x); -extern f32 func_80086CE0(f32 x); -extern f32 func_80086D18(f32 x); - s32 gUseAtanContFrac; /** * Tangent function computed using libultra sinf and cosf */ -// Math_FTanF -f32 func_80086760(f32 x) { +f32 Math_FTanF(f32 x) { return sinf(x) / cosf(x); } // Unused -// Math_FFloorF -f32 func_80086794(f32 x) { - return func_80086C70(x); +f32 Math_FFloorF(f32 x) { + return floorf(x); } // Unused -// Math_FCeilF -f32 func_800867B4(f32 x) { - return func_80086CA8(x); +f32 Math_FCeilF(f32 x) { + return ceilf(x); } // Unused -// Math_FRoundF -f32 func_800867D4(f32 x) { - return func_80086D50(x); +f32 Math_FRoundF(f32 x) { + return roundf(x); } // Unused -// Math_FTruncF -f32 func_800867F4(f32 x) { - return func_80086CE0(x); +f32 Math_FTruncF(f32 x) { + return truncf(x); } -// Math_FNearbyIntF -f32 func_80086814(f32 x) { - return func_80086D18(x); +f32 Math_FNearbyIntF(f32 x) { + return nearbyintf(x); } /** * Arctangent approximation using a Maclaurin series [https://mathworld.wolfram.com/MaclaurinSeries.html] * (one quadrant, i.e. |x| < 1) */ -// Math_FAtanTaylorQF -f32 func_80086834(f32 x) { +f32 Math_FAtanTaylorQF(f32 x) { // Coefficients of Maclaurin series of arctangent static const f32 coeffs[] = { -1.0f / 3, +1.0f / 5, -1.0f / 7, +1.0f / 9, -1.0f / 11, +1.0f / 13, -1.0f / 15, +1.0f / 17, 0.0f, @@ -84,10 +71,9 @@ f32 func_80086834(f32 x) { * Extends previous arctangent function to the rest of the real numbers. * Uses the formulae arctan(x) = pi/2 - arctan(1/x) * and arctan(x) = pi/4 - arctan( (1-x)/(1+x) ) - * to extend the range in which the series computed by func_80086834 is a good approximation + * to extend the range in which the series computed by Math_FAtanTaylorQF is a good approximation */ -// Math_FAtanTaylorF -f32 func_80086880(f32 x) { +f32 Math_FAtanTaylorF(f32 x) { f32 t; f32 q; @@ -102,13 +88,13 @@ f32 func_80086880(f32 x) { } if (t <= M_SQRT2 - 1.0f) { - return func_80086834(x); + return Math_FAtanTaylorQF(x); } if (t >= M_SQRT2 + 1.0f) { - q = M_PI / 2 - func_80086834(1.0f / t); + q = M_PI / 2 - Math_FAtanTaylorQF(1.0f / t); } else { // in the interval (\sqrt{2} - 1, \sqrt{2} + 1) - q = M_PI / 4 - func_80086834((1.0f - t) / (1.0f + t)); + q = M_PI / 4 - Math_FAtanTaylorQF((1.0f - t) / (1.0f + t)); } if (x > 0.0f) { @@ -123,8 +109,7 @@ f32 func_80086880(f32 x) { * Cf. https://en.wikipedia.org/wiki/Gauss%27s_continued_fraction#The_series_2F1_2 , * https://dlmf.nist.gov/4.25#E4 */ -// Math_FAtanContFracF -f32 func_800869A4(f32 x) { +f32 Math_FAtanContFracF(f32 x) { s32 sector; f32 z; f32 conv; @@ -162,24 +147,22 @@ f32 func_800869A4(f32 x) { } } -// Math_FAtanF /** * Single-argument arctangent, only used by the two-argument function. * Nothing else sets the bss variable gUseAtanContFrac, so the Maclaurin series is always used */ -f32 func_80086AF0(f32 x) { +f32 Math_FAtanF(f32 x) { if (!gUseAtanContFrac) { - return func_80086880(x); + return Math_FAtanTaylorF(x); } else { - return func_800869A4(x); + return Math_FAtanContFracF(x); } } -// Math_FAtan2F /** * Main two-argument arctangent function */ -f32 func_80086B30(f32 y, f32 x) { +f32 Math_FAtan2F(f32 y, f32 x) { if (x == 0.0f) { if (y == 0.0f) { return 0.0f; @@ -191,20 +174,18 @@ f32 func_80086B30(f32 y, f32 x) { return qNaN0x10000; } } else if (x >= 0.0f) { - return func_80086AF0(y / x); + return Math_FAtanF(y / x); } else if (y < 0.0f) { - return func_80086AF0(y / x) - M_PI; + return Math_FAtanF(y / x) - M_PI; } else { - return M_PI - func_80086AF0(-(y / x)); + return M_PI - Math_FAtanF(-(y / x)); } } -// Math_FAsinF -f32 func_80086C18(f32 x) { - return func_80086B30(x, sqrtf(1.0f - SQ(x))); +f32 Math_FAsinF(f32 x) { + return Math_FAtan2F(x, sqrtf(1.0f - SQ(x))); } -// Math_FAcosF -f32 func_80086C48(f32 x) { - return M_PI / 2 - func_80086C18(x); +f32 Math_FAcosF(f32 x) { + return M_PI / 2 - Math_FAsinF(x); } diff --git a/src/code/sys_math.c b/src/code/sys_math.c index 7fd7e9dea..99d13c332 100644 --- a/src/code/sys_math.c +++ b/src/code/sys_math.c @@ -4,15 +4,17 @@ */ #include "global.h" -static f32 sFactorialTbl[] = { 1.0f, 1.0f, 2.0f, 6.0f, 24.0f, 120.0f, 720.0f, - 5040.0f, 40320.0f, 362880.0f, 3628800.0f, 39916800.0f, 479001600.0f }; +static f32 sFactorialTbl[] = { + 1.0f, 1.0f, 2.0f, 6.0f, 24.0f, 120.0f, 720.0f, 5040.0f, 40320.0f, 362880.0f, 3628800.0f, 39916800.0f, 479001600.0f, +}; -// Rename to Math_FactorialF /** * Takes a float, returns the factorial of it(s trunctation), iteratively * Unused + * + * @remark original name: "ffact" */ -f32 func_80179300(f32 n) { +f32 Math_FactorialF(f32 n) { f32 ret = 1.0f; s32 i; @@ -23,12 +25,13 @@ f32 func_80179300(f32 n) { return ret; } -// Rename to Math_Factorial /** * Takes an int and returns its factorial as a float. Uses the lookup table for n <= 12. * Unused + * + * @remark original name: "ifact" */ -f32 func_80179400(s32 n) { +f32 Math_Factorial(s32 n) { f32 ret; s32 i; @@ -45,12 +48,13 @@ f32 func_80179400(s32 n) { return ret; } -// Rename to Math_PowF /** * Returns base^{exp} if exp is nonnegative and 1.0f otherwise. * Unused + * + * @remark original name: "powi" */ -f32 pow_int(f32 base, s32 exp) { +f32 Math_PowF(f32 base, s32 exp) { f32 ret = 1.0f; while (exp > 0) { @@ -61,19 +65,21 @@ f32 pow_int(f32 base, s32 exp) { return ret; } -// Rename to Math_SinF /** * Takes an angle in radians and returns the sine. + * + * @remark original name: "sinf_table" */ -f32 sin_rad(f32 rad) { +f32 Math_SinF(f32 rad) { return sins(RAD_TO_BINANG(rad)) * SHT_MINV; } -// Rename to Math_CosF /** * Takes an angle in radians and returns the cosine. + * + * @remark original name: "cosf_table" */ -f32 cos_rad(f32 rad) { +f32 Math_CosF(f32 rad) { return coss(RAD_TO_BINANG(rad)) * SHT_MINV; } @@ -84,10 +90,9 @@ f32 Rand_ZeroFloat(f32 scale) { return Rand_ZeroOne() * scale; } -// Rename to Rand_CenteredFloat /** * Returns a pseudo-random floating-point number between (- scale / 2) and (scale / 2). Originally in z_actor in OoT. */ -f32 randPlusMinusPoint5Scaled(f32 scale) { +f32 Rand_CenteredFloat(f32 scale) { return Rand_Centered() * scale; } diff --git a/src/code/z_actor.c b/src/code/z_actor.c index 82ff8ddd9..e7bc92a26 100644 --- a/src/code/z_actor.c +++ b/src/code/z_actor.c @@ -3567,8 +3567,8 @@ void Actor_SpawnFloorDustRing(PlayState* play, Actor* actor, Vec3f* posXZ, f32 r accel.y += (Rand_ZeroOne() - 0.5f) * 0.2f; for (i = countMinusOne; i >= 0; i--) { - pos.x = (sin_rad(angle) * radius) + posXZ->x; - pos.z = (cos_rad(angle) * radius) + posXZ->z; + pos.x = (Math_SinF(angle) * radius) + posXZ->x; + pos.z = (Math_CosF(angle) * radius) + posXZ->z; accel.x = (Rand_ZeroOne() - 0.5f) * randAccelWeight; accel.z = (Rand_ZeroOne() - 0.5f) * randAccelWeight; @@ -4816,7 +4816,7 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 // Apply and draw a light orb over each limb of frozen actor for (limbIndex = 0; limbIndex < limbPosCount; limbIndex++, limbPos++) { - Matrix_RotateZF(randPlusMinusPoint5Scaled(2 * M_PI), MTXMODE_APPLY); + Matrix_RotateZF(Rand_CenteredFloat(2 * M_PI), MTXMODE_APPLY); currentMatrix->mf[3][0] = limbPos->x; currentMatrix->mf[3][1] = limbPos->y; currentMatrix->mf[3][2] = limbPos->z; @@ -4857,9 +4857,9 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 // first electric spark Matrix_RotateXFApply(Rand_ZeroFloat(2 * M_PI)); Matrix_RotateZF(Rand_ZeroFloat(2 * M_PI), MTXMODE_APPLY); - currentMatrix->mf[3][0] = randPlusMinusPoint5Scaled((f32)sREG(24) + 30.0f) + limbPos->x; - currentMatrix->mf[3][1] = randPlusMinusPoint5Scaled((f32)sREG(24) + 30.0f) + limbPos->y; - currentMatrix->mf[3][2] = randPlusMinusPoint5Scaled((f32)sREG(24) + 30.0f) + limbPos->z; + currentMatrix->mf[3][0] = Rand_CenteredFloat((f32)sREG(24) + 30.0f) + limbPos->x; + currentMatrix->mf[3][1] = Rand_CenteredFloat((f32)sREG(24) + 30.0f) + limbPos->y; + currentMatrix->mf[3][2] = Rand_CenteredFloat((f32)sREG(24) + 30.0f) + limbPos->z; gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -4869,9 +4869,9 @@ void Actor_DrawDamageEffects(PlayState* play, Actor* actor, Vec3f limbPos[], s16 // second electric spark Matrix_RotateXFApply(Rand_ZeroFloat(2 * M_PI)); Matrix_RotateZF(Rand_ZeroFloat(2 * M_PI), MTXMODE_APPLY); - currentMatrix->mf[3][0] = randPlusMinusPoint5Scaled((f32)sREG(24) + 30.0f) + limbPos->x; - currentMatrix->mf[3][1] = randPlusMinusPoint5Scaled((f32)sREG(24) + 30.0f) + limbPos->y; - currentMatrix->mf[3][2] = randPlusMinusPoint5Scaled((f32)sREG(24) + 30.0f) + limbPos->z; + currentMatrix->mf[3][0] = Rand_CenteredFloat((f32)sREG(24) + 30.0f) + limbPos->x; + currentMatrix->mf[3][1] = Rand_CenteredFloat((f32)sREG(24) + 30.0f) + limbPos->y; + currentMatrix->mf[3][2] = Rand_CenteredFloat((f32)sREG(24) + 30.0f) + limbPos->z; gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/code/z_bgcheck.c b/src/code/z_bgcheck.c index e30dec5d5..a263d4393 100644 --- a/src/code/z_bgcheck.c +++ b/src/code/z_bgcheck.c @@ -1,4 +1,5 @@ #include "global.h" +#include "fixed_point.h" #include "vt.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" @@ -3047,7 +3048,7 @@ void DynaPoly_AddBgActorToLookup(PlayState* play, DynaCollisionContext* dyna, s3 newPoly->normal.z = COLPOLY_SNORMAL(newNormal.z); } - newPoly->dist = func_80086D24(-DOTXYZ(newNormal, vtxA)); + newPoly->dist = nearbyint(-DOTXYZ(newNormal, vtxA)); if (newNormal.y > 0.5f) { s16 polyId = *polyStartIndex + i; diff --git a/src/code/z_camera.c b/src/code/z_camera.c index bd23308c3..ce09f7c4d 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -875,7 +875,7 @@ void func_800CC938(Camera* camera) { * Calculates the angle between points `from` and `to` */ s16 Camera_CalcXZAngle(Vec3f* to, Vec3f* from) { - return CAM_DEG_TO_BINANG(RAD_TO_DEG(func_80086B30(from->x - to->x, from->z - to->z))); + return CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(from->x - to->x, from->z - to->z))); } // BSS @@ -964,8 +964,8 @@ s16 Camera_GetPitchAdjFromFloorHeightDiffs(Camera* camera, s16 viewYaw, s16 shou floorYDiffNear = (sFloorYNear - camera->focalActorFloorHeight) * 0.8f; floorYDiffFar = (sFloorYFar - camera->focalActorFloorHeight) * (20.0f * 0.01f); - pitchNear = CAM_DEG_TO_BINANG(RAD_TO_DEG(func_80086B30(floorYDiffNear, nearDist))); - pitchFar = CAM_DEG_TO_BINANG(RAD_TO_DEG(func_80086B30(floorYDiffFar, farDist))); + pitchNear = CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(floorYDiffNear, nearDist))); + pitchFar = CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(floorYDiffFar, farDist))); return pitchNear + pitchFar; } @@ -1457,9 +1457,8 @@ s32 Camera_CalcAtForParallel(Camera* camera, VecGeo* arg1, f32 yOffset, f32 xzOf deltaY = focalActorPosRot->pos.y - *focalActorPosY; eyeAtDistXZ = OLib_Vec3fDistXZ(at, &camera->eye); - // Math_FTanF // Get the height based on 80% of the fov - fovHeight = func_80086760(DEG_TO_RAD(camera->fov * (0.8f * 0.5f))) * eyeAtDistXZ; + fovHeight = Math_FTanF(DEG_TO_RAD(camera->fov * (0.8f * 0.5f))) * eyeAtDistXZ; if (deltaY > fovHeight) { //! FAKE @@ -1539,8 +1538,8 @@ s32 Camera_CalcAtForFriendlyLockOn(Camera* camera, VecGeo* eyeAtDir, Vec3f* targ deltaY = focalActorPosRot->pos.y - *yPosOffset; sp50 = OLib_Vec3fDistXZ(at, &camera->eye); phi_f16 = sp50; - func_80086B30(deltaY, sp50); - fovHeight = func_80086760(DEG_TO_RAD(camera->fov * 0.4f)) * phi_f16; + Math_FAtan2F(deltaY, sp50); + fovHeight = Math_FTanF(DEG_TO_RAD(camera->fov * 0.4f)) * phi_f16; if (fovHeight < deltaY) { *yPosOffset += deltaY - fovHeight; @@ -1552,12 +1551,12 @@ s32 Camera_CalcAtForFriendlyLockOn(Camera* camera, VecGeo* eyeAtDir, Vec3f* targ focalActorAtOffsetTarget.y -= deltaY; } else { deltaY = focalActorPosRot->pos.y - *yPosOffset; - temp_f0_6 = func_80086B30(deltaY, OLib_Vec3fDistXZ(at, &camera->eye)); + temp_f0_6 = Math_FAtan2F(deltaY, OLib_Vec3fDistXZ(at, &camera->eye)); if (temp_f0_6 > 0.34906584f) { // (M_PI / 9) - phi_f16 = 1.0f - sin_rad(temp_f0_6 - 0.34906584f); + phi_f16 = 1.0f - Math_SinF(temp_f0_6 - 0.34906584f); } else if (temp_f0_6 < -0.17453292f) { // (M_PI / 18) - phi_f16 = 1.0f - sin_rad(-0.17453292f - temp_f0_6); + phi_f16 = 1.0f - Math_SinF(-0.17453292f - temp_f0_6); } else { phi_f16 = 1.0f; } @@ -1625,10 +1624,10 @@ s32 Camera_CalcAtForEnemyLockOn(Camera* camera, f32* arg1, s32 arg2, f32 yOffset new_var2 = *arg1; sp4C = new_var2; deltaY = focalActorPosRot->pos.y - *arg6; - temp_f0_3 = func_80086B30(deltaY, sp4C); + temp_f0_3 = Math_FAtan2F(deltaY, sp4C); if (!(flags & 0x80)) { - fovHeight = func_80086760(DEG_TO_RAD(camera->fov * 0.4f)) * sp4C; + fovHeight = Math_FTanF(DEG_TO_RAD(camera->fov * 0.4f)) * sp4C; if (fovHeight < deltaY) { *arg6 += deltaY - fovHeight; @@ -1641,9 +1640,9 @@ s32 Camera_CalcAtForEnemyLockOn(Camera* camera, f32* arg1, s32 arg2, f32 yOffset focalActorAtOffsetTarget.y -= deltaY; } else { if (temp_f0_3 > 0.34906584f) { // (M_PI / 9) - phi_f14 = 1.0f - sin_rad(temp_f0_3 - 0.34906584f); + phi_f14 = 1.0f - Math_SinF(temp_f0_3 - 0.34906584f); } else if (temp_f0_3 < -0.17453292f) { // (M_PI / 18) - phi_f14 = 1.0f - sin_rad(-0.17453292f - temp_f0_3); + phi_f14 = 1.0f - Math_SinF(-0.17453292f - temp_f0_3); } else { phi_f14 = 1.0f; } @@ -6343,8 +6342,8 @@ s32 Camera_Demo4(Camera* camera) { // Camera fixed on human player as the mask moves from the pocket to the face // Camera rolls left and right if (rwData->timer >= 12) { - rwData->unk_0C = (rwData->timer - 12) * 10.384615f; - sin = sin_rad(DEG_TO_RAD(rwData->unk_0C)); + rwData->unk_0C = (rwData->timer - 12) * (135.0f / 13.0f); + sin = Math_SinF(DEG_TO_RAD(rwData->unk_0C)); rwData->unk_0C = ((rwData->unk_10 < 0.0f) ? -1.0f : 1.0f) * sin; if (rwData->timer == 12) { Distortion_Request(DISTORTION_TYPE_MASK_TRANSFORM_1); @@ -6516,7 +6515,7 @@ s32 Camera_Demo5(Camera* camera) { // Camera zooms out while rolling back and forth rwData->unk_0C = rwData->timer * (180.0f / 23.0f); sp58 = DEG_TO_RAD(rwData->unk_0C); - sin = sin_rad(sp58); + sin = Math_SinF(sp58); rwData->unk_0C = ((rwData->unk_10 < 0.0f) ? -1.0f : 1.0f) * sin; new_var = (46 - rwData->timer) * (5.0f / 46.0f); focalActorFocus.pos.x = (Math_SinS(rwData->unk_24) * new_var * rwData->unk_0C) + focalActorPosRot->pos.x; diff --git a/src/code/z_eff_blure.c b/src/code/z_eff_blure.c index 370ca9481..775db80e1 100644 --- a/src/code/z_eff_blure.c +++ b/src/code/z_eff_blure.c @@ -561,16 +561,16 @@ void EffectBlure_DrawElemHermiteInterpolation(EffectBlure* this, EffectBlureElem vtx[0].v = baseVtx; vtx[1].v = baseVtx; - vtx[0].v.ob[0] = func_80086814(sp158.x); - vtx[0].v.ob[1] = func_80086814(sp158.y); - vtx[0].v.ob[2] = func_80086814(sp158.z); + vtx[0].v.ob[0] = Math_FNearbyIntF(sp158.x); + vtx[0].v.ob[1] = Math_FNearbyIntF(sp158.y); + vtx[0].v.ob[2] = Math_FNearbyIntF(sp158.z); vtx[0].v.cn[0] = sp148.r; vtx[0].v.cn[1] = sp148.g; vtx[0].v.cn[2] = sp148.b; vtx[0].v.cn[3] = sp148.a; - vtx[1].v.ob[0] = func_80086814(sp14C.x); - vtx[1].v.ob[1] = func_80086814(sp14C.y); - vtx[1].v.ob[2] = func_80086814(sp14C.z); + vtx[1].v.ob[0] = Math_FNearbyIntF(sp14C.x); + vtx[1].v.ob[1] = Math_FNearbyIntF(sp14C.y); + vtx[1].v.ob[2] = Math_FNearbyIntF(sp14C.z); vtx[1].v.cn[0] = sp144.r; vtx[1].v.cn[1] = sp144.g; vtx[1].v.cn[2] = sp144.b; @@ -606,17 +606,17 @@ void EffectBlure_DrawElemHermiteInterpolation(EffectBlure* this, EffectBlureElem vtx[j1].v = baseVtx; vtx[j2].v = baseVtx; - vtx[j1].v.ob[0] = func_80086814(sp158.x); - vtx[j1].v.ob[1] = func_80086814(sp158.y); - vtx[j1].v.ob[2] = func_80086814(sp158.z); + vtx[j1].v.ob[0] = Math_FNearbyIntF(sp158.x); + vtx[j1].v.ob[1] = Math_FNearbyIntF(sp158.y); + vtx[j1].v.ob[2] = Math_FNearbyIntF(sp158.z); vtx[j1].v.cn[0] = func_800B0A24(sp1A4.r, sp19C.r, temp_f28); vtx[j1].v.cn[1] = func_800B0A24(sp1A4.g, sp19C.g, temp_f28); vtx[j1].v.cn[2] = func_800B0A24(sp1A4.b, sp19C.b, temp_f28); vtx[j1].v.cn[3] = func_800B0A24(sp1A4.a, sp19C.a, temp_f28); - vtx[j2].v.ob[0] = func_80086814(sp14C.x); - vtx[j2].v.ob[1] = func_80086814(sp14C.y); - vtx[j2].v.ob[2] = func_80086814(sp14C.z); + vtx[j2].v.ob[0] = Math_FNearbyIntF(sp14C.x); + vtx[j2].v.ob[1] = Math_FNearbyIntF(sp14C.y); + vtx[j2].v.ob[2] = Math_FNearbyIntF(sp14C.z); vtx[j2].v.cn[0] = func_800B0A24(sp1A0.r, sp198.r, temp_f28); vtx[j2].v.cn[1] = func_800B0A24(sp1A0.g, sp198.g, temp_f28); vtx[j2].v.cn[2] = func_800B0A24(sp1A0.b, sp198.b, temp_f28); diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 7b9e2ca34..886c3c942 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -127,7 +127,7 @@ void EnItem00_Init(Actor* thisx, PlayState* play) { break; case ITEM00_RECOVERY_HEART: - this->actor.home.rot.z = randPlusMinusPoint5Scaled(0xFFFF); + this->actor.home.rot.z = Rand_CenteredFloat(0xFFFF); shadowOffset = 430.0f; Actor_SetScale(&this->actor, 0.02f); this->unk154 = 0.02f; @@ -381,9 +381,9 @@ void func_800A6650(EnItem00* this, PlayState* play) { } if ((play->gameplayFrames & 1) != 0) { - pos.x = this->actor.world.pos.x + randPlusMinusPoint5Scaled(10.0f); - pos.y = this->actor.world.pos.y + randPlusMinusPoint5Scaled(10.0f); - pos.z = this->actor.world.pos.z + randPlusMinusPoint5Scaled(10.0f); + pos.x = this->actor.world.pos.x + Rand_CenteredFloat(10.0f); + pos.y = this->actor.world.pos.y + Rand_CenteredFloat(10.0f); + pos.z = this->actor.world.pos.z + Rand_CenteredFloat(10.0f); EffectSsKirakira_SpawnSmall(play, &pos, &sEffectVelocity, &sEffectAccel, &sEffectPrimColor, &sEffectEnvColor); } @@ -956,7 +956,7 @@ Actor* Item_DropCollectible(PlayState* play, Vec3f* spawnPos, u32 params) { } spawnedActor->speed = 2.0f; spawnedActor->gravity = -0.9f; - spawnedActor->world.rot.y = randPlusMinusPoint5Scaled(0x10000); + spawnedActor->world.rot.y = Rand_CenteredFloat(0x10000); Actor_SetScale(spawnedActor, 0.0f); ((EnItem00*)spawnedActor)->actionFunc = func_800A6780; ((EnItem00*)spawnedActor)->unk152 = 0xDC; @@ -1011,7 +1011,7 @@ Actor* Item_DropCollectible2(PlayState* play, Vec3f* spawnPos, s32 params) { } else { spawnedActor->gravity = -0.9f; } - spawnedActor->world.rot.y = randPlusMinusPoint5Scaled(0x10000); + spawnedActor->world.rot.y = Rand_CenteredFloat(0x10000); spawnedActor->flags |= 0x10; } } diff --git a/src/code/z_lib.c b/src/code/z_lib.c index 136918765..f3e67e5f3 100644 --- a/src/code/z_lib.c +++ b/src/code/z_lib.c @@ -348,9 +348,9 @@ void Math_Vec3f_SumScaled(Vec3f* a, Vec3f* b, f32 scale, Vec3f* dest) { } void Math_Vec3f_AddRand(Vec3f* orig, f32 scale, Vec3f* dest) { - dest->x = randPlusMinusPoint5Scaled(scale) + orig->x; - dest->y = randPlusMinusPoint5Scaled(scale) + orig->y; - dest->z = randPlusMinusPoint5Scaled(scale) + orig->z; + dest->x = Rand_CenteredFloat(scale) + orig->x; + dest->y = Rand_CenteredFloat(scale) + orig->y; + dest->z = Rand_CenteredFloat(scale) + orig->z; } void Math_Vec3f_DistXYZAndStoreNormDiff(Vec3f* a, Vec3f* b, f32 scale, Vec3f* dest) { diff --git a/src/code/z_olib.c b/src/code/z_olib.c index 754857014..848a48a72 100644 --- a/src/code/z_olib.c +++ b/src/code/z_olib.c @@ -123,14 +123,14 @@ VecSph* OLib_Vec3fToVecSph(VecSph* dest, Vec3f* vec) { if ((distXZ == 0.0f) && (vec->y == 0.0f)) { sph.pitch = 0; } else { - sph.pitch = CAM_DEG_TO_BINANG(RAD_TO_DEG(func_80086B30(distXZ, vec->y))); + sph.pitch = CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(distXZ, vec->y))); } sph.r = sqrtf(SQ(vec->y) + distXZSq); if ((vec->x == 0.0f) && (vec->z == 0.0f)) { sph.yaw = 0; } else { - sph.yaw = CAM_DEG_TO_BINANG(RAD_TO_DEG(func_80086B30(vec->x, vec->z))); + sph.yaw = CAM_DEG_TO_BINANG(RAD_TO_DEG(Math_FAtan2F(vec->x, vec->z))); } *dest = sph; @@ -202,8 +202,8 @@ Vec3f* OLib_AddVecGeoToVec3f(Vec3f* dest, Vec3f* a, VecGeo* geo) { Vec3f* OLib_Vec3fDiffRad(Vec3f* dest, Vec3f* a, Vec3f* b) { Vec3f anglesRad; - anglesRad.x = func_80086B30(b->z - a->z, b->y - a->y); - anglesRad.y = func_80086B30(b->x - a->x, b->z - a->z); + anglesRad.x = Math_FAtan2F(b->z - a->z, b->y - a->y); + anglesRad.y = Math_FAtan2F(b->x - a->x, b->z - a->z); anglesRad.z = 0; *dest = anglesRad; diff --git a/src/code/z_player_lib.c b/src/code/z_player_lib.c index 2c0a79d21..2e2d2222d 100644 --- a/src/code/z_player_lib.c +++ b/src/code/z_player_lib.c @@ -1540,10 +1540,8 @@ void Player_UpdateBunnyEars(Player* player) { sBunnyEarKinematics.angVel.y += -sBunnyEarKinematics.rot.y >> 2; angle = player->actor.world.rot.y - player->actor.shape.rot.y; - force.x = - (s32)(player->actor.speed * -200.0f * Math_CosS(angle) * (randPlusMinusPoint5Scaled(2.0f) + 10.0f)) & 0xFFFF; - force.y = - (s32)(player->actor.speed * 100.0f * Math_SinS(angle) * (randPlusMinusPoint5Scaled(2.0f) + 10.0f)) & 0xFFFF; + force.x = (s32)(player->actor.speed * -200.0f * Math_CosS(angle) * (Rand_CenteredFloat(2.0f) + 10.0f)) & 0xFFFF; + force.y = (s32)(player->actor.speed * 100.0f * Math_SinS(angle) * (Rand_CenteredFloat(2.0f) + 10.0f)) & 0xFFFF; sBunnyEarKinematics.angVel.x += force.x >> 2; sBunnyEarKinematics.angVel.y += force.y >> 2; @@ -1801,7 +1799,7 @@ void Player_AdjustSingleLeg(PlayState* play, Player* player, SkelAnime* skelAnim temp_f20 = sp74 - SQ(sp58); temp_f20 = (temp_f20 < 0.0f) ? 0.0f : sqrtf(temp_f20); - sp4C = func_80086B30(temp_f20, sp58); + sp4C = Math_FAtan2F(temp_f20, sp58); distance = sqrtf(SQ(diffX) + SQ(yIntersect - sp90.y) + SQ(diffZ)); sp58 = (SQ(distance) + sp70) / (2.0f * distance); sp54 = distance - sp58; @@ -1809,8 +1807,8 @@ void Player_AdjustSingleLeg(PlayState* play, Player* player, SkelAnime* skelAnim temp_f20 = sp74 - SQ(sp58); temp_f20 = (temp_f20 < 0.0f) ? 0.0f : sqrtf(temp_f20); - sp48 = func_80086B30(temp_f20, sp58); - phi_t1 = (M_PI - (func_80086B30(sp54, temp_f20) + ((M_PI / 2.0f) - sp48))) * (0x8000 / M_PI); + sp48 = Math_FAtan2F(temp_f20, sp58); + phi_t1 = (M_PI - (Math_FAtan2F(sp54, temp_f20) + ((M_PI / 2.0f) - sp48))) * (0x8000 / M_PI); phi_t1 = -skelAnime->jointTable[shinLimbIndex].z + phi_t1; temp_f8 = (sp48 - sp4C) * (0x8000 / M_PI); diff --git a/src/code/z_sub_s.c b/src/code/z_sub_s.c index 35886da18..90d09a4b1 100644 --- a/src/code/z_sub_s.c +++ b/src/code/z_sub_s.c @@ -577,7 +577,7 @@ s32 SubS_HasReachedPoint(Actor* actor, Path* path, s32 pointIndex) { diffZ = points[index + 1].z - points[index - 1].z; } - func_8017B7F8(&point, RAD_TO_BINANG(func_80086B30(diffX, diffZ)), &px, &pz, &d); + func_8017B7F8(&point, RAD_TO_BINANG(Math_FAtan2F(diffX, diffZ)), &px, &pz, &d); if (((px * actor->world.pos.x) + (pz * actor->world.pos.z) + d) > 0.0f) { reached = true; } diff --git a/src/overlays/actors/ovl_Bg_F40_Flift/z_bg_f40_flift.c b/src/overlays/actors/ovl_Bg_F40_Flift/z_bg_f40_flift.c index 2c9919728..f47bf4394 100644 --- a/src/overlays/actors/ovl_Bg_F40_Flift/z_bg_f40_flift.c +++ b/src/overlays/actors/ovl_Bg_F40_Flift/z_bg_f40_flift.c @@ -64,10 +64,11 @@ void func_808D75F0(BgF40Flift* this, PlayState* play) { } this->timer--; if (this->dyna.actor.params == 1) { - this->dyna.actor.world.pos.y = (sin_rad(this->timer * (M_PI / 24.0f)) * 5.0f) + this->dyna.actor.home.pos.y; + this->dyna.actor.world.pos.y = + (Math_SinF(this->timer * (M_PI / 24.0f)) * 5.0f) + this->dyna.actor.home.pos.y; } else { this->dyna.actor.world.pos.y = - (sin_rad(this->timer * (M_PI / 24.0f)) * 5.0f) + (926.8f + this->dyna.actor.home.pos.y); + (Math_SinF(this->timer * (M_PI / 24.0f)) * 5.0f) + (926.8f + this->dyna.actor.home.pos.y); } } } @@ -76,7 +77,7 @@ void func_808D7714(BgF40Flift* this, PlayState* play) { if (this->timer != 0) { this->timer--; this->dyna.actor.world.pos.y = - (((cos_rad(this->timer * (M_PI / 96.0f)) * this->dyna.actor.params) + 1.0f) * 463.4f) + + (((Math_CosF(this->timer * (M_PI / 96.0f)) * this->dyna.actor.params) + 1.0f) * 463.4f) + this->dyna.actor.home.pos.y; } else { this->dyna.actor.params = -this->dyna.actor.params; diff --git a/src/overlays/actors/ovl_Bg_F40_Swlift/z_bg_f40_swlift.c b/src/overlays/actors/ovl_Bg_F40_Swlift/z_bg_f40_swlift.c index bf6244efe..039d20f3c 100644 --- a/src/overlays/actors/ovl_Bg_F40_Swlift/z_bg_f40_swlift.c +++ b/src/overlays/actors/ovl_Bg_F40_Swlift/z_bg_f40_swlift.c @@ -105,7 +105,7 @@ void BgF40Swlift_Update(Actor* thisx, PlayState* play2) { } this->timer--; this->dyna.actor.world.pos.y = - sHeights[this->dyna.actor.params] + (sin_rad(this->timer * (M_PI / 24.0f)) * 5.0f); + sHeights[this->dyna.actor.params] + (Math_SinF(this->timer * (M_PI / 24.0f)) * 5.0f); } } diff --git a/src/overlays/actors/ovl_Bg_Icefloe/z_bg_icefloe.c b/src/overlays/actors/ovl_Bg_Icefloe/z_bg_icefloe.c index 15a677c29..50e99c1aa 100644 --- a/src/overlays/actors/ovl_Bg_Icefloe/z_bg_icefloe.c +++ b/src/overlays/actors/ovl_Bg_Icefloe/z_bg_icefloe.c @@ -96,8 +96,8 @@ void BgIcefloe_Grow(BgIcefloe* this, PlayState* play) { Vec3f velocity; Vec3f position; - velocity.x = randPlusMinusPoint5Scaled(6.0f); - velocity.z = randPlusMinusPoint5Scaled(6.0f); + velocity.x = Rand_CenteredFloat(6.0f); + velocity.z = Rand_CenteredFloat(6.0f); velocity.y = Rand_ZeroFloat(4.0f) + 4.0f; this->dyna.actor.scale.x += (0.65f * 0.01f); this->dyna.actor.scale.z += (0.65f * 0.01f); @@ -127,7 +127,7 @@ void func_80AC4C34(BgIcefloe* this, PlayState* play) { func_80AC4CF0(this); } else { this->dyna.actor.world.pos.y = - (sin_rad(this->timer * (M_PI / 30.0f)) * 3.0f) + (this->dyna.actor.home.pos.y + 10.0f); + (Math_SinF(this->timer * (M_PI / 30.0f)) * 3.0f) + (this->dyna.actor.home.pos.y + 10.0f); } } @@ -144,8 +144,8 @@ void func_80AC4D2C(BgIcefloe* this, PlayState* play) { Vec3f position; velocity.y = (this->timer - 38) * (1 / 12.0f); - velocity.x = randPlusMinusPoint5Scaled(1.5f) * velocity.y; - velocity.z = randPlusMinusPoint5Scaled(1.5f) * velocity.y; + velocity.x = Rand_CenteredFloat(1.5f) * velocity.y; + velocity.z = Rand_CenteredFloat(1.5f) * velocity.y; velocity.y += 0.8f; position.x = this->dyna.actor.world.pos.x + (2.0f * velocity.x); position.z = this->dyna.actor.world.pos.z + (2.0f * velocity.z); diff --git a/src/overlays/actors/ovl_Bg_Icicle/z_bg_icicle.c b/src/overlays/actors/ovl_Bg_Icicle/z_bg_icicle.c index 740d807d8..a8eea2641 100644 --- a/src/overlays/actors/ovl_Bg_Icicle/z_bg_icicle.c +++ b/src/overlays/actors/ovl_Bg_Icicle/z_bg_icicle.c @@ -109,12 +109,12 @@ void BgIcicle_Break(BgIcicle* this, PlayState* play, f32 arg2) { for (i = 0; i < 2; i++) { for (j = 0; j < 10; j++) { - pos.x = this->dyna.actor.world.pos.x + randPlusMinusPoint5Scaled(8.0f); + pos.x = this->dyna.actor.world.pos.x + Rand_CenteredFloat(8.0f); pos.y = this->dyna.actor.world.pos.y + (Rand_ZeroOne() * arg2) + (i * arg2); - pos.z = this->dyna.actor.world.pos.z + randPlusMinusPoint5Scaled(8.0f); + pos.z = this->dyna.actor.world.pos.z + Rand_CenteredFloat(8.0f); - velocity.x = randPlusMinusPoint5Scaled(7.0f); - velocity.z = randPlusMinusPoint5Scaled(7.0f); + velocity.x = Rand_CenteredFloat(7.0f); + velocity.z = Rand_CenteredFloat(7.0f); velocity.y = (Rand_ZeroOne() * 4.0f) + 8.0f; EffectSsEnIce_Spawn(play, &pos, (Rand_ZeroOne() * 0.2f) + 0.1f, &velocity, &accel, &primColor, &envColor, diff --git a/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c b/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c index fa80cbf90..c11df8af1 100644 --- a/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c +++ b/src/overlays/actors/ovl_Bg_Spdweb/z_bg_spdweb.c @@ -240,7 +240,7 @@ void func_809CE234(BgSpdweb* this, PlayState* play) { spA8.y = this->dyna.actor.world.pos.y; for (i = 0; i < 6; i++) { - temp_s0 = (s32)randPlusMinusPoint5Scaled(10240.0f) + phi_s2; + temp_s0 = (s32)Rand_CenteredFloat(0x2800) + phi_s2; temp_f24 = Math_SinS(temp_s0); temp_f22 = Math_CosS(temp_s0); @@ -323,7 +323,8 @@ void func_809CE4C8(BgSpdweb* this, PlayState* play) { this->unk_162--; } - this->dyna.actor.world.pos.y = (sin_rad(this->unk_162 * (M_PI / 6)) * this->unk_164) + this->dyna.actor.home.pos.y; + this->dyna.actor.world.pos.y = + (Math_SinF(this->unk_162 * (M_PI / 6)) * this->unk_164) + this->dyna.actor.home.pos.y; Math_ApproachZeroF(&this->unk_164, 1.0f, 0.8f); if (this->unk_162 == 4) { @@ -388,7 +389,7 @@ void func_809CE830(BgSpdweb* this, PlayState* play) { spC4.z = this->dyna.actor.world.pos.z + 90.0f * sinQ * cosF1; for (i = 0; i < 6; i++) { - temp_s0 = (s32)randPlusMinusPoint5Scaled(0x2800) + temp_s3; + temp_s0 = (s32)Rand_CenteredFloat(0x2800) + temp_s3; sinF2 = Math_SinS(temp_s0); cosF2 = Math_CosS(temp_s0); diff --git a/src/overlays/actors/ovl_Boss_02/z_boss_02.c b/src/overlays/actors/ovl_Boss_02/z_boss_02.c index 7220b5d06..5b19594fb 100644 --- a/src/overlays/actors/ovl_Boss_02/z_boss_02.c +++ b/src/overlays/actors/ovl_Boss_02/z_boss_02.c @@ -485,9 +485,9 @@ void Boss02_SpawnEffectSand(TwinmoldEffect* effects, Vec3f* pos, f32 scale) { if (effects->type == TWINMOLD_EFFECT_NONE) { effects->type = TWINMOLD_EFFECT_SAND; effects->pos = *pos; - effects->velocity.x = randPlusMinusPoint5Scaled(30.0f); + effects->velocity.x = Rand_CenteredFloat(30.0f); effects->velocity.y = Rand_ZeroFloat(7.0f) + 7.0f; - effects->velocity.z = randPlusMinusPoint5Scaled(30.0f); + effects->velocity.z = Rand_CenteredFloat(30.0f); effects->accel.y = -0.3f; effects->scale = scale; effects->alpha = 255; @@ -507,9 +507,9 @@ void Boss02_SpawnEffectFragment(TwinmoldEffect* effects, Vec3f* pos) { effects->type = TWINMOLD_EFFECT_FRAGMENT; effects->pos = *pos; effects->timer = Rand_ZeroFloat(20.0f); - effects->velocity.x = randPlusMinusPoint5Scaled(50.0f); - effects->velocity.y = randPlusMinusPoint5Scaled(50.0f); - effects->velocity.z = randPlusMinusPoint5Scaled(50.0f); + effects->velocity.x = Rand_CenteredFloat(50.0f); + effects->velocity.y = Rand_CenteredFloat(50.0f); + effects->velocity.z = Rand_CenteredFloat(50.0f); effects->accel.z = 0.0f; effects->accel.x = 0.0f; effects->accel.y = -1.5f; @@ -774,8 +774,8 @@ void func_809DAB78(Boss02* this, PlayState* play) { this->actor.world.pos.z = player->actor.world.pos.z; this->actor.world.pos.y = player->actor.world.pos.y - (600.0f * D_809DF5B0); } else { - this->actor.world.pos.x = randPlusMinusPoint5Scaled(5000.0f * D_809DF5B0); - this->actor.world.pos.z = randPlusMinusPoint5Scaled(5000.0f * D_809DF5B0); + this->actor.world.pos.x = Rand_CenteredFloat(5000.0f * D_809DF5B0); + this->actor.world.pos.z = Rand_CenteredFloat(5000.0f * D_809DF5B0); this->actor.world.pos.y = -500.0f * D_809DF5B0; if (sIsInGiantMode) { this->actor.world.pos.y += 3150.0f; @@ -802,8 +802,8 @@ void func_809DAB78(Boss02* this, PlayState* play) { this->unk_0146[0] = 150; } else { this->unk_0144 = 2; - this->unk_01B0.x = randPlusMinusPoint5Scaled(3000.0f * D_809DF5B0); - this->unk_01B0.z = randPlusMinusPoint5Scaled(3000.0f * D_809DF5B0); + this->unk_01B0.x = Rand_CenteredFloat(3000.0f * D_809DF5B0); + this->unk_01B0.z = Rand_CenteredFloat(3000.0f * D_809DF5B0); if ((fabsf(this->unk_01B0.x) < (500.0f * D_809DF5B0)) && (fabsf(this->unk_01B0.z) < (500.0f * D_809DF5B0))) { this->unk_01B0.x = 500.0f; @@ -847,12 +847,12 @@ void func_809DAB78(Boss02* this, PlayState* play) { this->unk_01B0.z = player->actor.world.pos.z; if (this->unk_0146[0] == 0) { this->unk_0144 = 3; - this->unk_01B0.x = randPlusMinusPoint5Scaled(500.0f * D_809DF5B0) + this->actor.world.pos.x; + this->unk_01B0.x = Rand_CenteredFloat(500.0f * D_809DF5B0) + this->actor.world.pos.x; this->unk_01B0.y = -3000.0f * D_809DF5B0; if (sIsInGiantMode) { this->unk_01B0.y += 3150.0f; } - this->unk_01B0.z = randPlusMinusPoint5Scaled(500.0f * D_809DF5B0) + this->actor.world.pos.z; + this->unk_01B0.z = Rand_CenteredFloat(500.0f * D_809DF5B0) + this->actor.world.pos.z; this->unk_0146[0] = 150; this->unk_0164 = 0.0f; } @@ -917,7 +917,7 @@ void func_809DAB78(Boss02* this, PlayState* play) { Matrix_MultVecZ(1500.0f * D_809DF5B0, &spA4); this->unk_0146[0] = 50; this->unk_01B0.x = player->actor.world.pos.x + spA4.x; - this->unk_01B0.y = randPlusMinusPoint5Scaled(500.0f * D_809DF5B0) + (600.0f * D_809DF5B0); + this->unk_01B0.y = Rand_CenteredFloat(500.0f * D_809DF5B0) + (600.0f * D_809DF5B0); if (sIsInGiantMode) { this->unk_01B0.y += 3150.0f; } @@ -963,7 +963,7 @@ void func_809DAB78(Boss02* this, PlayState* play) { this->actor.gravity = -1.0f * D_809DF5B0; this->actor.velocity.y = 0.0f; this->actor.terminalVelocity = -1000.0f * D_809DF5B0; - this->unk_0164 = randPlusMinusPoint5Scaled(0.05f); + this->unk_0164 = Rand_CenteredFloat(0.05f); spCC = player->actor.world.pos.x - this->actor.world.pos.x; spC4 = player->actor.world.pos.z - this->actor.world.pos.z; @@ -1205,16 +1205,16 @@ void Boss02_Twinmold_Update(Actor* thisx, PlayState* play) { Actor_PlaySfx(&this->actor, NA_SE_EN_INBOSS_SAND_OLD - SFX_FLAG); if (this->unk_0144 > 20) { - sp3C.x = randPlusMinusPoint5Scaled(100.0f * D_809DF5B0) + this->unk_0170.x; - sp3C.y = randPlusMinusPoint5Scaled(50.0f * D_809DF5B0) + this->unk_0170.y; - sp3C.z = randPlusMinusPoint5Scaled(100.0f * D_809DF5B0) + this->unk_0170.z; + sp3C.x = Rand_CenteredFloat(100.0f * D_809DF5B0) + this->unk_0170.x; + sp3C.y = Rand_CenteredFloat(50.0f * D_809DF5B0) + this->unk_0170.y; + sp3C.z = Rand_CenteredFloat(100.0f * D_809DF5B0) + this->unk_0170.z; Boss02_SpawnEffectSand(play->specialEffects, &sp3C, Rand_ZeroFloat(3.0f) + 6.0f); } if ((this->unk_014C % 2) == 0) { - sp3C.x = randPlusMinusPoint5Scaled(100.0f * D_809DF5B0) + this->unk_0170.x; - sp3C.y = randPlusMinusPoint5Scaled(50.0f * D_809DF5B0) + this->unk_0170.y; - sp3C.z = randPlusMinusPoint5Scaled(100.0f * D_809DF5B0) + this->unk_0170.z; + sp3C.x = Rand_CenteredFloat(100.0f * D_809DF5B0) + this->unk_0170.x; + sp3C.y = Rand_CenteredFloat(50.0f * D_809DF5B0) + this->unk_0170.y; + sp3C.z = Rand_CenteredFloat(100.0f * D_809DF5B0) + this->unk_0170.z; Boss02_SpawnEffectSand(play->specialEffects, &sp3C, Rand_ZeroFloat(3.0f) + 6.0f); } } diff --git a/src/overlays/actors/ovl_Boss_03/z_boss_03.c b/src/overlays/actors/ovl_Boss_03/z_boss_03.c index ddd9d4830..d44c961e9 100644 --- a/src/overlays/actors/ovl_Boss_03/z_boss_03.c +++ b/src/overlays/actors/ovl_Boss_03/z_boss_03.c @@ -162,8 +162,8 @@ void Boss03_SpawnEffectDroplet(PlayState* play, Vec3f* pos) { eff->unk_34.y = 0.0f; eff->unk_34.z = Rand_ZeroFloat(2 * M_PI); eff->unk_02 = Rand_ZeroFloat(100.0f); - eff->velocity.x = randPlusMinusPoint5Scaled(25.0f); - eff->velocity.z = randPlusMinusPoint5Scaled(25.0f); + eff->velocity.x = Rand_CenteredFloat(25.0f); + eff->velocity.z = Rand_CenteredFloat(25.0f); return; } @@ -425,17 +425,17 @@ void Boss03_SpawnDust(Boss03* this, PlayState* play) { Vec3f accel; for (i = 0; i < 5; i++) { - velocity.x = randPlusMinusPoint5Scaled(10.0f); + velocity.x = Rand_CenteredFloat(10.0f); velocity.y = Rand_ZeroFloat(2.0f) + 2.0f; - velocity.z = randPlusMinusPoint5Scaled(10.0f); + velocity.z = Rand_CenteredFloat(10.0f); accel.y = -0.075f; accel.z = 0.0f; accel.x = 0.0f; pos.y = Rand_ZeroFloat(20.0f) + 5.0f; - pos.z = randPlusMinusPoint5Scaled(150.0f) + this->insideJawPos.z; - pos.x = randPlusMinusPoint5Scaled(150.0f) + this->insideJawPos.x; + pos.z = Rand_CenteredFloat(150.0f) + this->insideJawPos.z; + pos.x = Rand_CenteredFloat(150.0f) + this->insideJawPos.x; func_800B0EB0(play, &pos, &velocity, &accel, &sGyorgDustPrimColor, &sGyorgDustEnvColor, Rand_ZeroFloat(200.0f) + 400.0f, 10, Rand_ZeroFloat(10.0f) + 25.0f); @@ -597,9 +597,9 @@ void func_809E34B8(Boss03* this, PlayState* play) { if (this->workTimer[WORK_TIMER_UNK2_A] == 0) { if ((sqrtf(SQ(xDiff) + SQ(zDiff)) < 100.0f) || (this->workTimer[WORK_TIMER_UNK0_A] == 0)) { for (i = 0; i < 200; i++) { - this->unk_268.x = randPlusMinusPoint5Scaled(2500.0f); + this->unk_268.x = Rand_CenteredFloat(2500.0f); this->unk_268.y = Rand_ZeroFloat(100.0f) + 150.0f; - this->unk_268.z = randPlusMinusPoint5Scaled(2500.0f); + this->unk_268.z = Rand_CenteredFloat(2500.0f); xDiff = this->unk_268.x - this->actor.world.pos.x; zDiff = this->unk_268.z - this->actor.world.pos.z; @@ -1100,9 +1100,9 @@ void Boss03_JumpOverPlatform(Boss03* this, PlayState* play) { Vec3f sp30; for (i = 0; i < 3; i++) { - sp30.x = this->actor.world.pos.x + randPlusMinusPoint5Scaled(150.0f); + sp30.x = this->actor.world.pos.x + Rand_CenteredFloat(150.0f); sp30.y = this->actor.world.pos.y; - sp30.z = this->actor.world.pos.z + randPlusMinusPoint5Scaled(150.0f); + sp30.z = this->actor.world.pos.z + Rand_CenteredFloat(150.0f); Boss03_SpawnEffectDroplet(play, &sp30); } } @@ -1337,9 +1337,9 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { if (1) {} for (i = 0; i < 3; i++) { - effectPos.x = randPlusMinusPoint5Scaled(150.0f) + this->actor.world.pos.x; + effectPos.x = Rand_CenteredFloat(150.0f) + this->actor.world.pos.x; effectPos.y = this->actor.world.pos.y; - effectPos.z = randPlusMinusPoint5Scaled(150.0f) + this->actor.world.pos.z; + effectPos.z = Rand_CenteredFloat(150.0f) + this->actor.world.pos.z; Boss03_SpawnEffectDroplet(play, &effectPos); } @@ -1399,9 +1399,9 @@ void Boss03_IntroCutscene(Boss03* this, PlayState* play) { this->subCamEye = this->actor.world.pos; for (i = 0; i < bubblesToSpawnNum; i++) { - effectPos.x = randPlusMinusPoint5Scaled(100.0f) + this->subCamAt.x; - effectPos.y = (randPlusMinusPoint5Scaled(100.0f) + this->subCamAt.y) - 150.0f; - effectPos.z = randPlusMinusPoint5Scaled(100.0f) + this->subCamAt.z; + effectPos.x = Rand_CenteredFloat(100.0f) + this->subCamAt.x; + effectPos.y = (Rand_CenteredFloat(100.0f) + this->subCamAt.y) - 150.0f; + effectPos.z = Rand_CenteredFloat(100.0f) + this->subCamAt.z; Boss03_SpawnEffectBubble(play, &effectPos); } @@ -1573,17 +1573,15 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { this->actor.speed = ((Rand_ZeroFloat(5.0f) + 2.5f) * sp64) + 2.5f; if (Rand_ZeroOne() < 0.5f) { - this->shapeRotTargetX = - ((s16)randPlusMinusPoint5Scaled(500.0f) + this->shapeRotTargetX) + 0x8000; + this->shapeRotTargetX = ((s16)(s32)Rand_CenteredFloat(0x1F4) + this->shapeRotTargetX) + 0x8000; } if (Rand_ZeroOne() < 0.5f) { - this->shapeRotTargetZ = - ((s16)randPlusMinusPoint5Scaled(500.0f) + this->shapeRotTargetZ) + 0x8000; + this->shapeRotTargetZ = ((s16)(s32)Rand_CenteredFloat(0x1F4) + this->shapeRotTargetZ) + 0x8000; } if (Rand_ZeroOne() < 0.5f) { - this->shapeRotTargetY = Rand_ZeroFloat(65536.0f); + this->shapeRotTargetY = Rand_ZeroFloat(0x10000); } this->actor.world.rot.y = Math_Atan2S_XY(-this->actor.world.pos.z, -this->actor.world.pos.x); @@ -1600,9 +1598,9 @@ void Boss03_DeathCutscene(Boss03* this, PlayState* play) { sp4C = 150.0f * sp64; for (i = 0; i < 1; i++) { - sp78.x = randPlusMinusPoint5Scaled(sp4C) + this->actor.world.pos.x; + sp78.x = Rand_CenteredFloat(sp4C) + this->actor.world.pos.x; sp78.y = this->actor.world.pos.y; - sp78.z = randPlusMinusPoint5Scaled(sp4C) + this->actor.world.pos.z; + sp78.z = Rand_CenteredFloat(sp4C) + this->actor.world.pos.z; Boss03_SpawnEffectDroplet(play, &sp78); } @@ -2073,9 +2071,9 @@ void Boss03_Update(Actor* thisx, PlayState* play2) { if ((this->unk_240 % 2) == 0) { for (i = 0; i < this->bubbleEffectSpawnCount; i++) { - bubblePos.x = randPlusMinusPoint5Scaled(100.0f) + this->actor.world.pos.x; - bubblePos.y = randPlusMinusPoint5Scaled(100.0f) + this->actor.world.pos.y; - bubblePos.z = randPlusMinusPoint5Scaled(100.0f) + this->actor.world.pos.z; + bubblePos.x = Rand_CenteredFloat(100.0f) + this->actor.world.pos.x; + bubblePos.y = Rand_CenteredFloat(100.0f) + this->actor.world.pos.y; + bubblePos.z = Rand_CenteredFloat(100.0f) + this->actor.world.pos.z; Boss03_SpawnEffectBubble(play, &bubblePos); } @@ -2106,9 +2104,9 @@ void Boss03_Update(Actor* thisx, PlayState* play2) { if (this->wetSpotEffectSpawnCount != 0) { this->wetSpotEffectSpawnCount--; - wetSpotPos.x = randPlusMinusPoint5Scaled(50.0f) + player->actor.world.pos.x; + wetSpotPos.x = Rand_CenteredFloat(50.0f) + player->actor.world.pos.x; wetSpotPos.y = PLATFORM_HEIGHT; - wetSpotPos.z = randPlusMinusPoint5Scaled(50.0f) + player->actor.world.pos.z; + wetSpotPos.z = Rand_CenteredFloat(50.0f) + player->actor.world.pos.z; Boss03_SpawnEffectWetSpot(play, &wetSpotPos); } } @@ -2131,9 +2129,9 @@ void Boss03_Update(Actor* thisx, PlayState* play2) { for (j = 0, i = 0; i < 20; j++) { Matrix_RotateYF(yRot, MTXMODE_NEW); Matrix_MultVecZ(Rand_ZeroFloat(60.000004f) + 312.0f, &dropletPos); - dropletPos.x += this->unk_284 + randPlusMinusPoint5Scaled(40.0f); + dropletPos.x += this->unk_284 + Rand_CenteredFloat(40.0f); dropletPos.y = PLATFORM_HEIGHT; - dropletPos.z += this->unk_28C + randPlusMinusPoint5Scaled(40.0f); + dropletPos.z += this->unk_28C + Rand_CenteredFloat(40.0f); if (sqrtf(SQ(dropletPos.x) + SQ(dropletPos.z)) < 355.0f) { Boss03_SpawnEffectDroplet(play, &dropletPos); diff --git a/src/overlays/actors/ovl_Boss_04/z_boss_04.c b/src/overlays/actors/ovl_Boss_04/z_boss_04.c index bf250ca18..4e22822a4 100644 --- a/src/overlays/actors/ovl_Boss_04/z_boss_04.c +++ b/src/overlays/actors/ovl_Boss_04/z_boss_04.c @@ -439,8 +439,8 @@ void func_809ECD18(Boss04* this, PlayState* play) { if (Rand_ZeroOne() < 0.1f) { Math_Vec3f_Copy(&this->unk_6C8, &player->actor.world.pos); } else { - this->unk_6C8.x = randPlusMinusPoint5Scaled(600.0f) + this->unk_6E8; - this->unk_6C8.z = randPlusMinusPoint5Scaled(600.0f) + this->unk_6F0; + this->unk_6C8.x = Rand_CenteredFloat(600.0f) + this->unk_6E8; + this->unk_6C8.z = Rand_CenteredFloat(600.0f) + this->unk_6F0; } } diff --git a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c index ef73ef2dd..742b3bb70 100644 --- a/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c +++ b/src/overlays/actors/ovl_Eff_Dust/z_eff_dust.c @@ -110,7 +110,7 @@ void EffDust_Destroy(Actor* thisx, PlayState* play) { void func_80918D64(EffDust* this, PlayState* play) { s16 theta; - s16 fi; + s16 phi; s32 i; s32 j; f32* distanceTraveled = this->distanceTraveled; @@ -127,10 +127,10 @@ void func_80918D64(EffDust* this, PlayState* play) { i = this->index & 0x3F; if (this->distanceTraveled[i] >= 1.0f) { // Spherical coordinate system. - fi = randPlusMinusPoint5Scaled(0x10000); + phi = Rand_CenteredFloat(0x10000); theta = Rand_ZeroFloat(0x1000); - this->initialPositions[i].x = -(f32)this->actor.home.rot.z * Math_CosS(fi) * Math_CosS(theta); - this->initialPositions[i].y = -(f32)this->actor.home.rot.z * Math_SinS(fi) * Math_CosS(theta); + this->initialPositions[i].x = -(f32)this->actor.home.rot.z * Math_CosS(phi) * Math_CosS(theta); + this->initialPositions[i].y = -(f32)this->actor.home.rot.z * Math_SinS(phi) * Math_CosS(theta); this->initialPositions[i].z = -(f32)this->actor.home.rot.z * Math_SinS(theta); this->distanceTraveled[i] = 0.0f; this->index++; @@ -141,7 +141,7 @@ void func_80918D64(EffDust* this, PlayState* play) { void func_80918FE4(EffDust* this, PlayState* play) { s16 theta; - s16 fi; + s16 phi; f32* distanceTraveled = this->distanceTraveled; s32 i; s32 j; @@ -157,11 +157,11 @@ void func_80918FE4(EffDust* this, PlayState* play) { i = this->index & 0x3F; if (this->distanceTraveled[i] >= 1.0f) { // Spherical coordinate system. - fi = randPlusMinusPoint5Scaled(0x10000); + phi = Rand_CenteredFloat(0x10000); theta = Rand_ZeroFloat(0x2000); - this->initialPositions[i].x = 400.0f * Math_CosS(fi) * Math_CosS(theta); + this->initialPositions[i].x = 400.0f * Math_CosS(phi) * Math_CosS(theta); this->initialPositions[i].y = 400.0f * Math_SinS(theta); - this->initialPositions[i].z = 400.0f * Math_SinS(fi) * Math_CosS(theta); + this->initialPositions[i].z = 400.0f * Math_SinS(phi) * Math_CosS(theta); this->distanceTraveled[i] = 0.0f; this->index++; } @@ -206,7 +206,7 @@ void func_80919230(EffDust* this, PlayState* play) { i = this->index & 0x3F; if (this->distanceTraveled[i] >= 1.0f) { - theta = randPlusMinusPoint5Scaled(0x10000); + theta = Rand_CenteredFloat(0x10000); switch (this->actor.params) { case EFF_DUST_TYPE_SPIN_ATTACK_CHARGE: this->initialPositions[i].x = (Rand_ZeroOne() * 4500.0f) + 700.0f; 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 5fcf75fdf..6e56cc609 100644 --- a/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c +++ b/src/overlays/actors/ovl_En_Akindonuts/z_en_akindonuts.c @@ -179,7 +179,7 @@ s32 func_80BECD10(EnAkindonuts* this, Path* path, s32 arg2) { phi_f14 = sp5C[idx + 1].z - sp5C[idx - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { sp50 = true; } diff --git a/src/overlays/actors/ovl_En_Am/z_en_am.c b/src/overlays/actors/ovl_En_Am/z_en_am.c index b6d32f6ec..7d1f1e140 100644 --- a/src/overlays/actors/ovl_En_Am/z_en_am.c +++ b/src/overlays/actors/ovl_En_Am/z_en_am.c @@ -193,9 +193,9 @@ void EnAm_SpawnEffects(EnAm* this, PlayState* play) { // Dust Clouds that spawn from the hop for (i = 4; i > 0; i--) { - effectPos.x = randPlusMinusPoint5Scaled(65.0f) + this->actor.world.pos.x; - effectPos.y = randPlusMinusPoint5Scaled(10.0f) + (this->actor.world.pos.y + 40.0f); - effectPos.z = randPlusMinusPoint5Scaled(65.0f) + this->actor.world.pos.z; + effectPos.x = Rand_CenteredFloat(65.0f) + this->actor.world.pos.x; + effectPos.y = Rand_CenteredFloat(10.0f) + (this->actor.world.pos.y + 40.0f); + effectPos.z = Rand_CenteredFloat(65.0f) + this->actor.world.pos.z; EffectSsKirakira_SpawnSmall(play, &effectPos, &sVelocity, &sAccel, &D_808B1118, &D_808B111C); } Actor_PlaySfx(&this->actor, NA_SE_EN_AMOS_WALK); @@ -254,7 +254,7 @@ void EnAm_ApplyEnemyTexture(EnAm* this, PlayState* play) { func_808B0358(this); } else { tempTextureBlend = this->textureBlend + 20; - rand = randPlusMinusPoint5Scaled(10.0f); + rand = Rand_CenteredFloat(10.0f); cos = Math_CosS(this->actor.shape.rot.y) * rand; sin = Math_SinS(this->actor.shape.rot.y) * rand; this->actor.world.pos.x = this->actor.home.pos.x + cos; @@ -433,7 +433,7 @@ void func_808B0894(EnAm* this, PlayState* play) { for (i = 0; i < 8; i++) { dustPos.x = (Math_SinS(0) * 7.0f) + this->actor.world.pos.x; - dustPos.y = (randPlusMinusPoint5Scaled(10.0f) * 6.0f) + (this->actor.world.pos.y + 40.0f); + dustPos.y = (Rand_CenteredFloat(10.0f) * 6.0f) + (this->actor.world.pos.y + 40.0f); dustPos.z = (Math_CosS(0) * 7.0f) + this->actor.world.pos.z; func_800B0EB0(play, &dustPos, &gZeroVec3f, &gZeroVec3f, &D_808B1120, &D_808B1124, 200, 45, 12); diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index 5f0ef2edf..e47a726a4 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -336,7 +336,7 @@ void func_8088ACE0(EnArrow* this, PlayState* play) { (this->collider.base.atFlags & AT_BOUNCED)) { if ((this->collider.base.at != NULL) && (this->collider.base.at->id != ACTOR_OBJ_SYOKUDAI)) { Math_Vec3f_Copy(&this->actor.world.pos, &this->actor.prevPos); - this->actor.world.rot.y += BINANG_ROT180((s16)randPlusMinusPoint5Scaled(8000.0f)); + this->actor.world.rot.y += BINANG_ROT180((s16)(s32)Rand_CenteredFloat(0x1F40)); this->actor.velocity.y = -this->actor.velocity.y; this->bubble.unk_149 = -1; return; diff --git a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c index 8c2b4eb4b..e8b74f8ec 100644 --- a/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c +++ b/src/overlays/actors/ovl_En_Attack_Niw/z_en_attack_niw.c @@ -54,9 +54,9 @@ void EnAttackNiw_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 0.01f); this->actor.gravity = 0.0f; - this->randomTargetCenterOffset.x = randPlusMinusPoint5Scaled(100.0f); - this->randomTargetCenterOffset.y = randPlusMinusPoint5Scaled(10.0f); - this->randomTargetCenterOffset.z = randPlusMinusPoint5Scaled(100.0f); + this->randomTargetCenterOffset.x = Rand_CenteredFloat(100.0f); + this->randomTargetCenterOffset.y = Rand_CenteredFloat(10.0f); + this->randomTargetCenterOffset.z = Rand_CenteredFloat(100.0f); Actor_SetScale(&this->actor, 0.01f); this->actor.flags &= ~ACTOR_FLAG_1; // Unnecessary: this actor does not start with this flag @@ -311,7 +311,7 @@ void EnAttackNiw_AimAtPlayer(EnAttackNiw* this, PlayState* play) { } if (this->randomAngleChangeTimer == 50) { - this->targetRotY = randPlusMinusPoint5Scaled(200.0f) + this->actor.yawTowardsPlayer; + this->targetRotY = Rand_CenteredFloat(200.0f) + this->actor.yawTowardsPlayer; } Math_SmoothStepToS(&this->actor.world.rot.y, this->targetRotY, 2, this->rotStep, 0); diff --git a/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c b/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c index 4ea6bc475..406270ff8 100644 --- a/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c +++ b/src/overlays/actors/ovl_En_Baguo/z_en_baguo.c @@ -449,9 +449,9 @@ void EnBaguo_InitializeEffect(EnBaguo* this, Vec3f* pos, Vec3f* velocity, Vec3f* effect->accel = *accel; effect->scale = scale; effect->timer = timer; - effect->rotation.x = (s16)randPlusMinusPoint5Scaled(30000.0f); - effect->rotation.y = (s16)randPlusMinusPoint5Scaled(30000.0f); - effect->rotation.z = (s16)randPlusMinusPoint5Scaled(30000.0f); + effect->rotation.x = (s16)(s32)Rand_CenteredFloat(0x7530); + effect->rotation.y = (s16)(s32)Rand_CenteredFloat(0x7530); + effect->rotation.z = (s16)(s32)Rand_CenteredFloat(0x7530); return; } } diff --git a/src/overlays/actors/ovl_En_Bat/z_en_bat.c b/src/overlays/actors/ovl_En_Bat/z_en_bat.c index 549a2c4bd..acb47b743 100644 --- a/src/overlays/actors/ovl_En_Bat/z_en_bat.c +++ b/src/overlays/actors/ovl_En_Bat/z_en_bat.c @@ -161,11 +161,10 @@ void EnBat_Init(Actor* thisx, PlayState* play) { EnBat_SetupFlyIdle(this); while (BAD_BAT_GET_NUMBER_TO_SPAWN(thisx) > 1) { Actor_SpawnAsChildAndCutscene( - &play->actorCtx, play, ACTOR_EN_BAT, thisx->world.pos.x + randPlusMinusPoint5Scaled(200.0f), - thisx->world.pos.y + randPlusMinusPoint5Scaled(100.0f), - thisx->world.pos.z + randPlusMinusPoint5Scaled(200.0f), randPlusMinusPoint5Scaled(0x2000), - 0xFFFF * Rand_ZeroOne(), 0, BAD_BAT_PARAMS(this->switchFlag, this->paramFlags, 0), CS_ID_NONE, - thisx->halfDaysBits, NULL); + &play->actorCtx, play, ACTOR_EN_BAT, thisx->world.pos.x + Rand_CenteredFloat(200.0f), + thisx->world.pos.y + Rand_CenteredFloat(100.0f), thisx->world.pos.z + Rand_CenteredFloat(200.0f), + Rand_CenteredFloat(0x2000), 0xFFFF * Rand_ZeroOne(), 0, + BAD_BAT_PARAMS(this->switchFlag, this->paramFlags, 0), CS_ID_NONE, thisx->halfDaysBits, NULL); BAD_BAT_GET_NUMBER_TO_SPAWN(thisx)--; } } diff --git a/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c b/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c index 9fabcecc0..d52f12ccf 100644 --- a/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c +++ b/src/overlays/actors/ovl_En_Bbfall/z_en_bbfall.c @@ -340,7 +340,7 @@ void EnBbfall_Fly(EnBbfall* this, PlayState* play) { // Bounce upwards off the ground this->actor.velocity.y *= -1.2f; this->actor.velocity.y = CLAMP(this->actor.velocity.y, 8.0f, 12.0f); - this->actor.shape.rot.y += (s16)randPlusMinusPoint5Scaled(73728.0f); + this->actor.shape.rot.y += (s16)(s32)Rand_CenteredFloat(0x12000); } this->actor.bgCheckFlags &= ~BGCHECKFLAG_GROUND; diff --git a/src/overlays/actors/ovl_En_Bee/z_en_bee.c b/src/overlays/actors/ovl_En_Bee/z_en_bee.c index c03cc005d..1c2d1ed0f 100644 --- a/src/overlays/actors/ovl_En_Bee/z_en_bee.c +++ b/src/overlays/actors/ovl_En_Bee/z_en_bee.c @@ -158,9 +158,9 @@ void EnBee_FlyIdle(EnBee* this, PlayState* play) { nextPos.z += Math_CosS(this->targetYaw) * 30.0f; if ((this->instanceId % 2) == 0) { - this->targetYaw += (s16)((s32)randPlusMinusPoint5Scaled(1000.0f) + 4000); + this->targetYaw += (s16)((s32)Rand_CenteredFloat(1000.0f) + 4000); } else { - this->targetYaw -= (s16)((s32)randPlusMinusPoint5Scaled(1000.0f) + 4000); + this->targetYaw -= (s16)((s32)Rand_CenteredFloat(1000.0f) + 4000); } this->flightHoverOffset += 1000; @@ -197,10 +197,10 @@ void EnBee_Attack(EnBee* this, PlayState* play) { yawOffset = (this->instanceId * 0x700) + 0x2000; for (i = 0; i < 2; i++) { - rand = randPlusMinusPoint5Scaled(20.0f); + rand = Rand_CenteredFloat(20.0f); nextPos.x += Math_SinS((f32)this->actor.yawTowardsPlayer + this->targetYaw + yawOffset) * (rand + 30.0f); nextPos.y = (Math_SinS(this->flightHoverOffset) * 10.0f) + (player->actor.floorHeight + 40.0f); - rand = randPlusMinusPoint5Scaled(20.0f); + rand = Rand_CenteredFloat(20.0f); nextPos.z += Math_CosS((f32)this->actor.yawTowardsPlayer + this->targetYaw + yawOffset) * (rand + 30.0f); Math_Vec3f_Copy(&this->targetPos[i], &nextPos); @@ -210,14 +210,12 @@ void EnBee_Attack(EnBee* this, PlayState* play) { Math_Vec3f_Copy(&nextPos, &this->targetPos[this->posIndex]); if ((this->instanceId % 2) == 0) { - this->targetYaw += - (this->instanceId * 0x700) + (s32)randPlusMinusPoint5Scaled((this->instanceId * 0x700) * 0.5f); + this->targetYaw += (this->instanceId * 0x700) + (s32)Rand_CenteredFloat((this->instanceId * 0x700) * 0.5f); } else { - this->targetYaw -= - (this->instanceId * 0x700) + (s32)randPlusMinusPoint5Scaled((this->instanceId * 0x700) * 0.5f); + this->targetYaw -= (this->instanceId * 0x700) + (s32)Rand_CenteredFloat((this->instanceId * 0x700) * 0.5f); } - this->flightHoverOffset += (s32)randPlusMinusPoint5Scaled(500.0f) + 1000; + this->flightHoverOffset += (s32)Rand_CenteredFloat(500.0f) + 1000; if (this->targetYaw > 0x10000) { this->targetYaw = 0; diff --git a/src/overlays/actors/ovl_En_Bh/z_en_bh.c b/src/overlays/actors/ovl_En_Bh/z_en_bh.c index cdd7abee3..6d99ada15 100644 --- a/src/overlays/actors/ovl_En_Bh/z_en_bh.c +++ b/src/overlays/actors/ovl_En_Bh/z_en_bh.c @@ -59,9 +59,9 @@ void func_80C22DEC(EnBh* this, PlayState* play) { xzDist = sqrtf(SQ(xDiff) + SQ(zDiff)); if ((this->timer2 == 0) || (xzDist < 100.0f)) { - this->pos.x = randPlusMinusPoint5Scaled(300.0f) + this->actor.home.pos.x; - this->pos.y = randPlusMinusPoint5Scaled(100.0f) + this->actor.home.pos.y; - this->pos.z = randPlusMinusPoint5Scaled(300.0f) + this->actor.home.pos.z; + this->pos.x = Rand_CenteredFloat(300.0f) + this->actor.home.pos.x; + this->pos.y = Rand_CenteredFloat(100.0f) + this->actor.home.pos.y; + this->pos.z = Rand_CenteredFloat(300.0f) + this->actor.home.pos.z; this->timer2 = Rand_ZeroFloat(50.0f) + 30.0f; this->step = 0; } @@ -85,7 +85,7 @@ void func_80C22DEC(EnBh* this, PlayState* play) { this->skelanime.playSpeed = 1.0f; this->timer = Rand_ZeroFloat(70.0f) + 50.0f; } else if (((this->timer & 7) == 7) && (Rand_ZeroOne() < 0.5f)) { - this->unk1E4 = randPlusMinusPoint5Scaled(3000.0f); + this->unk1E4 = Rand_CenteredFloat(3000.0f); } } else { SkelAnime_Update(&this->skelanime); diff --git a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c index 713410f23..1b849799a 100644 --- a/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c +++ b/src/overlays/actors/ovl_En_Bigokuta/z_en_bigokuta.c @@ -436,9 +436,9 @@ void EnBigokuta_PlayDeathEffects(EnBigokuta* this, PlayState* play) { bubblePos.y = this->picto.actor.world.pos.y; for (i = 0; i < 20; i++) { - bubbleVel.x = randPlusMinusPoint5Scaled(10.0f); + bubbleVel.x = Rand_CenteredFloat(10.0f); bubbleVel.y = Rand_ZeroFloat(5.5f) + 5.5f; - bubbleVel.z = randPlusMinusPoint5Scaled(10.0f); + bubbleVel.z = Rand_CenteredFloat(10.0f); bubblePos.x = this->picto.actor.world.pos.x + (2.0f * bubbleVel.x); bubblePos.z = this->picto.actor.world.pos.z + (2.0f * bubbleVel.z); @@ -604,7 +604,7 @@ s32 EnBigokuta_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec MTXMODE_APPLY); } } else if (this->actionFunc == EnBigokuta_SuckInPlayer) { - f32 sin = sin_rad(this->timer * (M_PI / 3.0f)) * 0.5f; + f32 sin = Math_SinF(this->timer * (M_PI / 3.0f)) * 0.5f; Matrix_Scale(((this->timer * (2 / 90.0f)) * (0.5f + sin)) + 1.0f, ((this->timer * (2 / 90.0f)) * (0.5f - sin)) + 1.0f, 1.0f - ((this->timer * 0.3f) / 9.0f), @@ -613,7 +613,7 @@ s32 EnBigokuta_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec if (this->timer == 0) { Matrix_Scale(0.9f, 0.9f, 1.15f, MTXMODE_APPLY); } else if (this->timer > 0) { - f32 sin = sin_rad(this->timer * (M_PI / 3.0f)) * 0.5f; + f32 sin = Math_SinF(this->timer * (M_PI / 3.0f)) * 0.5f; Matrix_Scale(((0.5f + sin) * 0.2f) + 1.0f, ((0.5f - sin) * 0.2f) + 1.0f, 0.7f, MTXMODE_APPLY); } else { diff --git a/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.c b/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.c index a77733d31..3daaf1f85 100644 --- a/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.c +++ b/src/overlays/actors/ovl_En_Bigpamet/z_en_bigpamet.c @@ -267,7 +267,7 @@ void func_80A27B58(EnBigpamet* this) { this->unk_2A2 = 40; for (ptr = &this->unk_2FC[0], i = 0; i < ARRAY_COUNT(this->unk_2FC); i++, ptr++) { - temp_s1 = (s32)randPlusMinusPoint5Scaled(20480.0f) + this->actor.wallYaw; + temp_s1 = (s32)Rand_CenteredFloat(0x5000) + this->actor.wallYaw; temp_s2 = Rand_S16Offset(0x1000, 0x3000); temp_fs2 = Math_SinS(temp_s2); @@ -342,7 +342,7 @@ void func_80A27FE8(EnBigpamet* this, PlayState* play) { pos.y += 8.0f; if (this->actionFunc != func_80A28D0C) { - sp32 = (s32)randPlusMinusPoint5Scaled(0x8000) + this->actor.world.rot.y; + sp32 = (s32)Rand_CenteredFloat(0x8000) + this->actor.world.rot.y; pos.x -= 55.0f * Math_SinS(sp32); pos.z -= 55.0f * Math_CosS(sp32); } diff --git a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c index 7c82b50b0..762141ed4 100644 --- a/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c +++ b/src/overlays/actors/ovl_En_Bigpo/z_en_bigpo.c @@ -554,7 +554,7 @@ void EnBigpo_IdleFlying(EnBigpo* this, PlayState* play) { // flight position calculations this->hoverHeightCycleTimer = (this->hoverHeightCycleTimer == 0) ? 40 : (this->hoverHeightCycleTimer - 1); Math_StepToF(&this->savedHeight, player->actor.world.pos.y + 100.0f, 1.5f); - this->actor.world.pos.y = (sin_rad(this->hoverHeightCycleTimer * (M_PI / 20)) * 10.0f) + this->savedHeight; + this->actor.world.pos.y = (Math_SinF(this->hoverHeightCycleTimer * (M_PI / 20)) * 10.0f) + this->savedHeight; Math_StepToF(&this->actor.speed, 3.0f, 0.2f); func_800B9010(&this->actor, NA_SE_EN_PO_FLY - SFX_FLAG); if (Actor_WorldDistXZToPoint(&this->actor, &this->actor.home.pos) > 300.0f) { @@ -827,7 +827,7 @@ void EnBigpo_ScoopSoulIdle(EnBigpo* this, PlayState* play) { EnBigpo_SetupScoopSoulLeaving(this); } else { Actor_OfferGetItem(&this->actor, play, GI_MAX, 35.0f, 60.0f); - this->actor.world.pos.y = (sin_rad(this->idleTimer * (M_PI / 20)) * 5.0f) + this->savedHeight; + this->actor.world.pos.y = (Math_SinF(this->idleTimer * (M_PI / 20)) * 5.0f) + this->savedHeight; } } diff --git a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c index 1a90fd29b..695ac9153 100644 --- a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c +++ b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.c @@ -657,7 +657,7 @@ void EnBigslime_AddWavySurface(EnBigslime* this) { randFloat = (Rand_ZeroOne() * 40.0f) + 50.0f; } - this->vtxSurfacePerturbation[i] = sin_rad((randInt + i) * (M_PI / 3)) * randFloat * 0.001f; + this->vtxSurfacePerturbation[i] = Math_SinF((randInt + i) * (M_PI / 3)) * randFloat * 0.001f; } } @@ -673,7 +673,7 @@ void EnBigslime_UpdateWavySurface(EnBigslime* this) { } this->wavySurfaceTimer--; - vtxSurfaceWave = sin_rad(this->wavySurfaceTimer * (M_PI / 12)); + vtxSurfaceWave = Math_SinF(this->wavySurfaceTimer * (M_PI / 12)); for (i = 0; i < BIGSLIME_NUM_VTX; i++) { staticVtx = &sBigslimeStaticVtx[i]; dynamicVtx = &sBigslimeDynamicVtx[this->dynamicVtxState][i]; @@ -692,9 +692,9 @@ void EnBigslime_InitFallMinislime(EnBigslime* this) { for (i = 0; i < MINISLIME_NUM_SPAWN; i++) { minislime = this->minislime[i]; minislime->actor.params = MINISLIME_INIT_FALL; - minislime->actor.world.pos.x = randPlusMinusPoint5Scaled(80.0f) + (GBT_ROOM_5_MIN_X + ((i % 4) + 1) * 192.0f); + minislime->actor.world.pos.x = Rand_CenteredFloat(80.0f) + (GBT_ROOM_5_MIN_X + ((i % 4) + 1) * 192.0f); minislime->actor.world.pos.y = Rand_ZeroFloat(250.0f) + (GBT_ROOM_5_CENTER_Y + 50.0f); - minislime->actor.world.pos.z = randPlusMinusPoint5Scaled(80.0f) + (GBT_ROOM_5_MIN_Z + ((i / 4) + 1) * 192.0f); + minislime->actor.world.pos.z = Rand_CenteredFloat(80.0f) + (GBT_ROOM_5_MIN_Z + ((i / 4) + 1) * 192.0f); } this->minislimeState = MINISLIME_ACTIVE_INIT_STATE; @@ -1169,7 +1169,7 @@ void EnBigslime_SetTargetVtxToWideCone(EnBigslime* this) { s32 j; for (i = 0; i < BIGSLIME_NUM_RING_FACES / 2; i++) { - vtxY = (((cos_rad(i * (M_PI / 6)) + 1.0f) * 0.925f) + -0.85f) * BIGSLIME_RADIUS_F; + vtxY = (((Math_CosF(i * (M_PI / 6)) + 1.0f) * 0.925f) + -0.85f) * BIGSLIME_RADIUS_F; for (j = sVtxRingStartIndex[i]; j < sVtxRingStartIndex[i + 1]; j++) { staticVtx = &sBigslimeStaticVtx[j]; targetVtx = &sBigslimeTargetVtx[j]; @@ -1188,7 +1188,7 @@ void EnBigslime_SetTargetVtxToWideCone(EnBigslime* this) { } for (; i < BIGSLIME_NUM_RING_VTX; i++) { - vtxY = ((cos_rad((i - BIGSLIME_NUM_RING_FACES / 2) * (M_PI / 16)) * 0.05f) + -1.0f) * BIGSLIME_RADIUS_F; + vtxY = ((Math_CosF((i - BIGSLIME_NUM_RING_FACES / 2) * (M_PI / 16)) * 0.05f) + -1.0f) * BIGSLIME_RADIUS_F; for (j = sVtxRingStartIndex[i]; j < sVtxRingStartIndex[i + 1]; j++) { staticVtx = &sBigslimeStaticVtx[j]; targetVtx = &sBigslimeTargetVtx[j]; @@ -1301,7 +1301,7 @@ void EnBigslime_SetTargetVtxToThinCone(EnBigslime* this) { sBigslimeTargetVtx[0].n.ob[2] = 0; for (i = 1; i < BIGSLIME_NUM_RING_FACES / 2; i++) { - upperSphereCos = (((cos_rad((i - 1) * (M_PI / 5)) + 1.0f) * 0.925f) + -0.85f) * BIGSLIME_RADIUS_F; + upperSphereCos = (((Math_CosF((i - 1) * (M_PI / 5)) + 1.0f) * 0.925f) + -0.85f) * BIGSLIME_RADIUS_F; for (j = sVtxRingStartIndex[i]; j < sVtxRingStartIndex[i + 1]; j++) { staticVtx = &sBigslimeStaticVtx[j]; targetVtx = &sBigslimeTargetVtx[j]; @@ -1318,7 +1318,7 @@ void EnBigslime_SetTargetVtxToThinCone(EnBigslime* this) { } for (; i < BIGSLIME_NUM_RING_FACES; i++) { - lowerSphereCos = cos_rad((i - BIGSLIME_NUM_RING_FACES / 2) * (M_PI / BIGSLIME_NUM_RING_FACES)); + lowerSphereCos = Math_CosF((i - BIGSLIME_NUM_RING_FACES / 2) * (M_PI / BIGSLIME_NUM_RING_FACES)); for (j = sVtxRingStartIndex[i]; j < sVtxRingStartIndex[i + 1]; j++) { staticVtx = &sBigslimeStaticVtx[j]; targetVtx = &sBigslimeTargetVtx[j]; @@ -1361,7 +1361,7 @@ void EnBigslime_SetTargetVtxToInverseCone(EnBigslime* this) { sBigslimeTargetVtx[0].n.ob[2] = 0; for (i = 1; i < BIGSLIME_NUM_RING_FACES / 2; i++) { - upperSphereCos = cos_rad((i - 1) * (M_PI / 10)); + upperSphereCos = Math_CosF((i - 1) * (M_PI / 10)); for (j = sVtxRingStartIndex[i]; j < sVtxRingStartIndex[i + 1]; j++) { staticVtx = &sBigslimeStaticVtx[j]; targetVtx = &sBigslimeTargetVtx[j]; @@ -1374,7 +1374,7 @@ void EnBigslime_SetTargetVtxToInverseCone(EnBigslime* this) { for (; i < BIGSLIME_NUM_RING_FACES; i++) { lowerSphereCos = - (((cos_rad((i - BIGSLIME_NUM_RING_FACES / 2) * (M_PI / 5)) + 1) * 0.925f) + -1.0f) * BIGSLIME_RADIUS_F; + (((Math_CosF((i - BIGSLIME_NUM_RING_FACES / 2) * (M_PI / 5)) + 1) * 0.925f) + -1.0f) * BIGSLIME_RADIUS_F; for (j = sVtxRingStartIndex[i]; j < sVtxRingStartIndex[i + 1]; j++) { staticVtx = &sBigslimeStaticVtx[j]; targetVtx = &sBigslimeTargetVtx[j]; @@ -1692,7 +1692,7 @@ void EnBigslime_WindupThrowPlayer(EnBigslime* this, PlayState* play) { EnBigslime_UpdateCameraGrabPlayer(this, play); if (this->windupPunchTimer > 0) { invWindupPunchTimer = 1.0f / this->windupPunchTimer; - scale = cos_rad(this->windupPunchTimer * (M_PI / 27)) + 1.0f; + scale = Math_CosF(this->windupPunchTimer * (M_PI / 27)) + 1.0f; player->actor.world.pos.y = this->actor.world.pos.y + (this->actor.scale.y * -500.0f); // Linearly interpolate gekkoRot.y --> this->actor.world.rot.y @@ -1705,7 +1705,7 @@ void EnBigslime_WindupThrowPlayer(EnBigslime* this, PlayState* play) { EnBigslime_GekkoSfxInsideBigslime(this, NA_SE_EN_FROG_PUNCH1); } - scale = 0.5f - cos_rad(-this->windupPunchTimer * (M_PI / 5)) * 0.5f; + scale = 0.5f - Math_CosF(-this->windupPunchTimer * (M_PI / 5)) * 0.5f; if (this->windupPunchTimer == -5) { if (player->stateFlags2 & PLAYER_STATE2_80) { player->actor.parent = NULL; @@ -1879,7 +1879,7 @@ void EnBigslime_Freeze(EnBigslime* this, PlayState* play) { if (vtxIceSeed < BIGSLIME_NUM_VTX) { dynamicVtx = &sBigslimeDynamicVtx[this->dynamicVtxState][vtxIceSeed]; targetVtx = &sBigslimeTargetVtx[vtxIceSeed]; - randFloat = randPlusMinusPoint5Scaled(40.0f); + randFloat = Rand_CenteredFloat(40.0f); dynamicVtx->n.ob[0] += (s16)(randFloat / this->actor.scale.x); dynamicVtx->n.ob[1] += (s16)(randFloat / this->actor.scale.y); dynamicVtx->n.ob[2] += (s16)(randFloat / this->actor.scale.z); @@ -2444,9 +2444,9 @@ void EnBigslime_SetupFrogSpawn(EnBigslime* this, PlayState* play) { func_800B0DE0(play, &dustPos, &gZeroVec3f, &gZeroVec3f, &dustPrimColor, &dustEnvColor, 500, 50); for (i = 0; i < 25; i++) { - hahenVel.x = randPlusMinusPoint5Scaled(5.0f); + hahenVel.x = Rand_CenteredFloat(5.0f); hahenVel.y = Rand_ZeroFloat(3.0f) + 4.0f; - hahenVel.z = randPlusMinusPoint5Scaled(5.0f); + hahenVel.z = Rand_CenteredFloat(5.0f); EffectSsHahen_Spawn(play, worldPos, &hahenVel, &hahenAccel, 0, Rand_S16Offset(12, 3), HAHEN_OBJECT_DEFAULT, 10, 0); } @@ -2464,7 +2464,8 @@ void EnBigslime_FrogSpawn(EnBigslime* this, PlayState* play) { this->spawnFrogTimer--; // Zoom the camera in and out at the newly spawned red frog - subCamZoom = sin_rad(this->spawnFrogTimer * (M_PI / 5)) * ((0.04f * (this->spawnFrogTimer * 0.1f)) + 0.02f) + 1.0f; + subCamZoom = + Math_SinF(this->spawnFrogTimer * (M_PI / 5)) * ((0.04f * (this->spawnFrogTimer * 0.1f)) + 0.02f) + 1.0f; subCamEye.x = subCam->at.x + (this->subCamDistToFrog.x * subCamZoom); subCamEye.z = subCam->at.z + (this->subCamDistToFrog.z * subCamZoom); subCamEye.y = subCam->at.y + (this->subCamDistToFrog.y * subCamZoom); diff --git a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.h b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.h index f10938b37..8f2b5bee3 100644 --- a/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.h +++ b/src/overlays/actors/ovl_En_Bigslime/z_en_bigslime.h @@ -87,7 +87,7 @@ typedef struct EnBigslime { s16 isDespawned; s16 isInitJump; }; - /* 0x02BC */ s16 wavySurfaceTimer; // decrements from 24, used in sin_rad for currData2 + /* 0x02BC */ s16 wavySurfaceTimer; // decrements from 24, used in Math_SinF for currData2 /* 0x02BE */ s16 stunTimer; /* 0x02C0 */ union { s16 freezeTimer; diff --git a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c index 4355759c7..ee00081db 100644 --- a/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c +++ b/src/overlays/actors/ovl_En_Bom_Chu/z_en_bom_chu.c @@ -120,7 +120,7 @@ s32 EnBomChu_UpdateFloorPoly(EnBomChu* this, CollisionPoly* floorPoly, PlayState return false; } - angle = func_80086C48(normDotUp); + angle = Math_FAcosF(normDotUp); if (angle < 0.001f) { return false; } diff --git a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c index 86cad7219..55f7ff281 100644 --- a/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c +++ b/src/overlays/actors/ovl_En_Bombers/z_en_bombers.c @@ -236,8 +236,8 @@ void func_80C03AF4(EnBombers* this, PlayState* play) { if (this->unk_2A8 == 0) { Math_Vec3f_Copy(&sp60, &this->actor.home.pos); - sp60.x += randPlusMinusPoint5Scaled(150.0f); - sp60.z += randPlusMinusPoint5Scaled(150.0f); + sp60.x += Rand_CenteredFloat(150.0f); + sp60.z += Rand_CenteredFloat(150.0f); abs = ABS_ALT(BINANG_SUB(this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &sp60))); if ((abs < 0x4000) && !BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &sp60, &sp6C, diff --git a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c index 7c2a64841..229a1e695 100644 --- a/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c +++ b/src/overlays/actors/ovl_En_Bomjima/z_en_bomjima.c @@ -266,8 +266,8 @@ void func_80BFE67C(EnBomjima* this, PlayState* play) { if (this->unk_2C0 == 0) { Math_Vec3f_Copy(&sp54, &this->actor.home.pos); - sp54.x += randPlusMinusPoint5Scaled(150.0f); - sp54.z += randPlusMinusPoint5Scaled(150.0f); + sp54.x += Rand_CenteredFloat(150.0f); + sp54.z += Rand_CenteredFloat(150.0f); abs = ABS_ALT(BINANG_SUB(this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &sp54))); if ((abs < 0x4000) && !BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &sp54, &sp6C, @@ -422,7 +422,7 @@ void func_80BFEB64(EnBomjima* this, PlayState* play) { } sp40.x = (Math_SinS(sp3E) * (Rand_ZeroFloat(20.0f) + 40.0f)) + this->bombal->actor.world.pos.x; - sp40.y = this->bombal->actor.world.pos.y - randPlusMinusPoint5Scaled(40.0f); + sp40.y = this->bombal->actor.world.pos.y - Rand_CenteredFloat(40.0f); sp40.z = (Math_CosS(sp3E) * (Rand_ZeroFloat(20.0f) + 40.0f)) + this->bombal->actor.world.pos.z; SoundSource_PlaySfxAtFixedWorldPos(play, &sp40, 50, NA_SE_EV_BOMBERS_SHOT_EXPLOSUIN); @@ -433,8 +433,8 @@ void func_80BFEB64(EnBomjima* this, PlayState* play) { func_80BFE494(this, 5, 1.0f); this->unk_29A = 0; Math_Vec3f_Copy(&this->unk_2A4, &this->actor.home.pos); - this->unk_2A4.x += randPlusMinusPoint5Scaled(150.0f); - this->unk_2A4.z += randPlusMinusPoint5Scaled(150.0f); + this->unk_2A4.x += Rand_CenteredFloat(150.0f); + this->unk_2A4.z += Rand_CenteredFloat(150.0f); this->unk_2A2++; } } diff --git a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c index 3c0f0da54..fbdcb860f 100644 --- a/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c +++ b/src/overlays/actors/ovl_En_Bomjimb/z_en_bomjimb.c @@ -275,8 +275,8 @@ void func_80C014E4(EnBomjimb* this, PlayState* play) { case 0: if (this->unk_2AE == 0) { Math_Vec3f_Copy(&sp48, &this->actor.home.pos); - sp48.x += randPlusMinusPoint5Scaled(150.0f); - sp48.z += randPlusMinusPoint5Scaled(150.0f); + sp48.x += Rand_CenteredFloat(150.0f); + sp48.z += Rand_CenteredFloat(150.0f); abs = ABS_ALT(BINANG_SUB(this->actor.world.rot.y, Math_Vec3f_Yaw(&this->actor.world.pos, &sp48))); if ((abs < 0x4000) && !BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &sp48, &sp60, diff --git a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c index 4becc2fe6..8e3e907bb 100644 --- a/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c +++ b/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.c @@ -494,8 +494,8 @@ void EnClearTag_Init(Actor* thisx, PlayState* play) { vel.z = cosf(i * (33.0f / 40.0f)) * i * .5f; vel.y = Rand_ZeroFloat(8.0f) + 7.0f; - vel.x += randPlusMinusPoint5Scaled(0.5f); - vel.z += randPlusMinusPoint5Scaled(0.5f); + vel.x += Rand_CenteredFloat(0.5f); + vel.z += Rand_CenteredFloat(0.5f); accel.x = 0.0f; accel.y = -1.0f; diff --git a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c index 703585dd4..fa6349871 100644 --- a/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c +++ b/src/overlays/actors/ovl_En_Col_Man/z_en_col_man.c @@ -163,7 +163,7 @@ void func_80AFDFB4(EnColMan* this, PlayState* play) { if ((this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && (this->actor.velocity.y < 0.0f)) { if (!this->hasSetRandomValues) { - this->actor.world.rot.y = randPlusMinusPoint5Scaled(30000.0f); + this->actor.world.rot.y = Rand_CenteredFloat(30000.0f); this->actor.speed = 2.0f + BREG(56) + Rand_ZeroFloat(2.0f); this->actor.velocity.y = 12.0f + BREG(57) + Rand_ZeroFloat(5.0f); this->hasSetRandomValues = true; @@ -172,9 +172,9 @@ void func_80AFDFB4(EnColMan* this, PlayState* play) { } for (i = 0; i < 2; i++) { - velocity.x = randPlusMinusPoint5Scaled(2.0f); + velocity.x = Rand_CenteredFloat(2.0f); velocity.y = Rand_ZeroFloat(2.0f) + 1.0f; - velocity.z = randPlusMinusPoint5Scaled(2.0f); + velocity.z = Rand_CenteredFloat(2.0f); accel.y = -0.1f; accel.z = 0.0f; accel.x = 0.0f; diff --git a/src/overlays/actors/ovl_En_Crow/z_en_crow.c b/src/overlays/actors/ovl_En_Crow/z_en_crow.c index ec9a11b4c..4c88b84cb 100644 --- a/src/overlays/actors/ovl_En_Crow/z_en_crow.c +++ b/src/overlays/actors/ovl_En_Crow/z_en_crow.c @@ -552,9 +552,9 @@ s32 EnCrow_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f* if (this->actor.colChkInfo.health != 0) { if (limbIndex == OBJECT_CROW_LIMB_UPPER_TAIL) { - rot->y += (s16)(0xC00 * sin_rad(this->skelAnime.curFrame * (M_PI / 4))); + rot->y += (s16)(0xC00 * Math_SinF(this->skelAnime.curFrame * (M_PI / 4))); } else if (limbIndex == OBJECT_CROW_LIMB_TAIL) { - rot->y += (s16)(0x1400 * sin_rad((this->skelAnime.curFrame + 2.5f) * (M_PI / 4))); + rot->y += (s16)(0x1400 * Math_SinF((this->skelAnime.curFrame + 2.5f) * (M_PI / 4))); } } return false; diff --git a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c index eaf1839c6..311b6d216 100644 --- a/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c +++ b/src/overlays/actors/ovl_En_Daiku2/z_en_daiku2.c @@ -243,9 +243,9 @@ void func_80BE66E4(EnDaiku2* this, PlayState* play) { sp70.y += 40.0f; sp70.z += Math_CosS(this->actor.world.rot.y) * 70.0f; - sp70.x += randPlusMinusPoint5Scaled(5.0f); - sp70.y += randPlusMinusPoint5Scaled(5.0f); - sp70.z += randPlusMinusPoint5Scaled(5.0f); + sp70.x += Rand_CenteredFloat(5.0f); + sp70.y += Rand_CenteredFloat(5.0f); + sp70.z += Rand_CenteredFloat(5.0f); sp88.y = -1.0f; @@ -507,9 +507,9 @@ void func_80BE7504(EnDaiku2* this, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 ar effect->unk_1C = *arg3; effect->unk_30 = arg4; effect->unk_34 = arg5; - effect->unk_28.x = randPlusMinusPoint5Scaled(30000.0f); - effect->unk_28.y = randPlusMinusPoint5Scaled(30000.0f); - effect->unk_28.z = randPlusMinusPoint5Scaled(30000.0f); + effect->unk_28.x = Rand_CenteredFloat(30000.0f); + effect->unk_28.y = Rand_CenteredFloat(30000.0f); + effect->unk_28.z = Rand_CenteredFloat(30000.0f); break; } } diff --git a/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c b/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c index 186494268..422b35e87 100644 --- a/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c +++ b/src/overlays/actors/ovl_En_Dekubaba/z_en_dekubaba.c @@ -384,7 +384,7 @@ void EnDekubaba_Grow(EnDekubaba* this, PlayState* play) { this->size * 0.01f * (0.5f + (15 - this->timer) * 0.5f / 15.0f); Math_ScaledStepToS(&this->actor.shape.rot.x, 0x1800, 0x800); - headDistVertical = sin_rad(CLAMP_MAX((15 - this->timer) * (1.0f / 15), 0.7f) * M_PI) * 32.0f + 14.0f; + headDistVertical = Math_SinF(CLAMP_MAX((15 - this->timer) * (1.0f / 15), 0.7f) * M_PI) * 32.0f + 14.0f; if (this->actor.shape.rot.x < -0x38E3) { headDistHorizontal = 0.0f; @@ -468,7 +468,7 @@ void EnDekubaba_Retract(EnDekubaba* this, PlayState* play) { this->size * 0.01f * (0.5f + this->timer * (1.0f / 30)); Math_ScaledStepToS(&this->actor.shape.rot.x, -0x4000, 0x300); - headDistVertical = (sin_rad(CLAMP_MAX(this->timer * 0.033f, 0.7f) * M_PI) * 32.0f) + 14.0f; + headDistVertical = (Math_SinF(CLAMP_MAX(this->timer * 0.033f, 0.7f) * M_PI) * 32.0f) + 14.0f; if (this->actor.shape.rot.x < -0x38E3) { headDistHorizontal = 0.0f; diff --git a/src/overlays/actors/ovl_En_Dg/z_en_dg.c b/src/overlays/actors/ovl_En_Dg/z_en_dg.c index d80013a99..46c6de979 100644 --- a/src/overlays/actors/ovl_En_Dg/z_en_dg.c +++ b/src/overlays/actors/ovl_En_Dg/z_en_dg.c @@ -280,7 +280,7 @@ s32 EnDg_HasReachedPoint(EnDg* this, Path* path, s32 pointIndex) { diffZ = points[currentPoint + 1].z - points[currentPoint - 1].z; } - func_8017B7F8(&point, RAD_TO_BINANG(func_80086B30(diffX, diffZ)), &px, &pz, &d); + func_8017B7F8(&point, RAD_TO_BINANG(Math_FAtan2F(diffX, diffZ)), &px, &pz, &d); if (((this->actor.world.pos.x * px) + (pz * this->actor.world.pos.z) + d) > 0.0f) { reached = true; @@ -358,9 +358,9 @@ void EnDg_SpawnFloorDustRing(EnDg* this, PlayState* play) { Vec3f pos; if (((this->index + curFrame) % mod) == 0) { - pos.x = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.x; + pos.x = Rand_CenteredFloat(15.0f) + this->actor.world.pos.x; pos.y = this->actor.world.pos.y; - pos.z = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.z; + pos.z = Rand_CenteredFloat(15.0f) + this->actor.world.pos.z; Actor_SpawnFloorDustRing(play, &this->actor, &pos, 10.0f, 0, 2.0f, 300, 0, true); } } @@ -900,14 +900,14 @@ void EnDg_JumpAttack(EnDg* this, PlayState* play) { if (curFrame < 9) { if (Animation_OnFrame(&this->skelAnime, 0.0f)) { - sAnimationInfo[DOG_ANIM_JUMP_ATTACK].playSpeed = randPlusMinusPoint5Scaled(1.0f) + 3.0f; + sAnimationInfo[DOG_ANIM_JUMP_ATTACK].playSpeed = Rand_CenteredFloat(1.0f) + 3.0f; } EnDg_SpawnFloorDustRing(this, play); } else { this->dogFlags |= DOG_FLAG_JUMP_ATTACKING; if (Animation_OnFrame(&this->skelAnime, 9.0f)) { - f32 rand = randPlusMinusPoint5Scaled(1.5f); + f32 rand = Rand_CenteredFloat(1.5f); sAnimationInfo[DOG_ANIM_JUMP_ATTACK].playSpeed = 1.2f; this->actor.velocity.y = 2.0f * rand + 3.0f; diff --git a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c index 5b268f1f8..e24e2691b 100644 --- a/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c +++ b/src/overlays/actors/ovl_En_Dinofos/z_en_dinofos.c @@ -1062,7 +1062,7 @@ void func_8089CB10(EnDinofos* this, PlayState* play) { } void func_8089CBEC(EnDinofos* this, PlayState* play) { - s16 temp_s3 = ((s32)randPlusMinusPoint5Scaled(0x1000) + this->actor.shape.rot.y) + this->unk_28E; + s16 temp_s3 = ((s32)Rand_CenteredFloat(0x1000) + this->actor.shape.rot.y) + this->unk_28E; Vec3f sp88; Vec3f sp7C; ColliderJntSphElementDim* dim; @@ -1081,10 +1081,10 @@ void func_8089CBEC(EnDinofos* this, PlayState* play) { temp_s0 = CLAMP_MIN(temp_s0, 0); sp88.x = 11.0f * temp_f20; - sp88.y = randPlusMinusPoint5Scaled(2.0f) + -5.4f; + sp88.y = Rand_CenteredFloat(2.0f) + -5.4f; sp88.z = 11.0f * temp_f22; sp7C.x = 0.9f * temp_f20; - sp7C.y = randPlusMinusPoint5Scaled(0.6f) + 1.4f; + sp7C.y = Rand_CenteredFloat(0.6f) + 1.4f; sp7C.z = 0.9f * temp_f22; func_800B9010(&this->actor, NA_SE_EN_DODO_J_FIRE - SFX_FLAG); EffectSsDFire_Spawn(play, &this->limbPos[10], &sp88, &sp7C, 30, 22, 255 - (temp_s0 * 20), 20, 3, 8); @@ -1098,7 +1098,7 @@ void func_8089CBEC(EnDinofos* this, PlayState* play) { for (i = 6; i < end; i++) { dim = &this->colliderJntSph.elements[i].dim; - temp_s3 = (s32)(cos_rad((this->unk_290 + ((i - 5) << 1)) * (M_PI / 20)) * 0x2C00) + this->actor.shape.rot.y; + temp_s3 = (s32)(Math_CosF((this->unk_290 + ((i - 5) << 1)) * (M_PI / 20)) * 0x2C00) + this->actor.shape.rot.y; dim->worldSphere.center.x = (s32)this->limbPos[10].x + (s32)(Math_SinS(temp_s3) * dim->modelSphere.center.z); dim->worldSphere.center.y = (s32)this->limbPos[10].y + (s32)dim->modelSphere.center.y; @@ -1232,9 +1232,9 @@ void func_8089D42C(EnDinofos* this, PlayState* play) { if ((this->actionFunc == func_8089B834) && (this->unk_290 != 0)) { Math_ScaledStepToS(&this->unk_28E, Math_SinS(this->unk_290 * 1400) * 0x2C00, 0x300); } else if (this->actionFunc == func_8089CA74) { - Math_ScaledStepToS(&this->unk_28E, cos_rad(M_PI) * 0x2C00, 0x233); + Math_ScaledStepToS(&this->unk_28E, Math_CosF(M_PI) * 0x2C00, 0x2C00 / 20); } else if (this->actionFunc == func_8089CBEC) { - this->unk_28E = cos_rad(this->unk_290 * (M_PI / 20)) * 0x2C00; + this->unk_28E = Math_CosF(this->unk_290 * (M_PI / 20)) * 0x2C00; } else if (!Play_InCsMode(play)) { temp_v0_2 = this->unk_28E + this->actor.shape.rot.y; temp_v0_2 = BINANG_SUB(this->actor.yawTowardsPlayer, temp_v0_2); diff --git a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c index 3f149049a..6149a7360 100644 --- a/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c +++ b/src/overlays/actors/ovl_En_Dodongo/z_en_dodongo.c @@ -371,11 +371,11 @@ void func_80876930(EnDodongo* this, PlayState* play, Vec3f* arg2) { temp3 = this->unk_334 * 30.0f; for (i = 0; i < 3; i++) { - sp88.x = randPlusMinusPoint5Scaled(temp3) + arg2->x; + sp88.x = Rand_CenteredFloat(temp3) + arg2->x; sp88.y = Rand_ZeroFloat(5.0f) + this->actor.floorHeight; - sp88.z = randPlusMinusPoint5Scaled(temp3) + arg2->z; - D_8087933C.x = randPlusMinusPoint5Scaled(2.0f); - D_8087933C.z = randPlusMinusPoint5Scaled(2.0f); + sp88.z = Rand_CenteredFloat(temp3) + arg2->z; + D_8087933C.x = Rand_CenteredFloat(2.0f); + D_8087933C.z = Rand_CenteredFloat(2.0f); func_800B0DE0(play, &sp88, &gZeroVec3f, &D_8087933C, sp80, sp7C, temp1, temp2); } } @@ -738,9 +738,9 @@ void func_80877E60(EnDodongo* this, PlayState* play) { this->timer--; if (this->timer == 10) { for (i = 10; i >= 0; i--) { - sp84.x = randPlusMinusPoint5Scaled(10.0f); - sp84.y = randPlusMinusPoint5Scaled(10.0f); - sp84.z = randPlusMinusPoint5Scaled(10.0f); + sp84.x = Rand_CenteredFloat(10.0f); + sp84.y = Rand_CenteredFloat(10.0f); + sp84.z = Rand_CenteredFloat(10.0f); sp78.x = sp84.x * -0.1f; sp78.y = sp84.y * -0.1f; sp78.z = sp84.z * -0.1f; diff --git a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c index d2acb55be..fae9fc4fc 100644 --- a/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c +++ b/src/overlays/actors/ovl_En_Dragon/z_en_dragon.c @@ -299,11 +299,11 @@ void EnDragon_SpawnBubbles(EnDragon* this, PlayState* play, Vec3f basePos) { Vec3f bubblePos; s32 i; - bubbleCount = (s32)randPlusMinusPoint5Scaled(5.0f) + 10; + bubbleCount = (s32)Rand_CenteredFloat(5.0f) + 10; colorIndex = 0; if (this->action == DEEP_PYTHON_ACTION_DEAD) { colorIndex = 1; - bubbleCount = (s32)randPlusMinusPoint5Scaled(5.0f) + 10; + bubbleCount = (s32)Rand_CenteredFloat(5.0f) + 10; } for (i = 0; i < bubbleCount; i++) { @@ -311,9 +311,9 @@ void EnDragon_SpawnBubbles(EnDragon* this, PlayState* play, Vec3f basePos) { sBubbleVelocity.x = Rand_ZeroFloat(1.0f) * 23.0f; sBubbleVelocity.y = Rand_ZeroFloat(1.0f) * 10.0f; sBubbleVelocity.z = Rand_ZeroFloat(1.0f) * 23.0f; - bubblePos.x += randPlusMinusPoint5Scaled(i * 30.0f); - bubblePos.y += randPlusMinusPoint5Scaled(5.0f); - bubblePos.z += randPlusMinusPoint5Scaled(i * 30.0f); + bubblePos.x += Rand_CenteredFloat(i * 30.0f); + bubblePos.y += Rand_CenteredFloat(5.0f); + bubblePos.z += Rand_CenteredFloat(i * 30.0f); sBubbleAccel.y = Rand_ZeroFloat(1.0f) * 20.0f * 3.0f; scale = Rand_S16Offset(380, 240); EffectSsDtBubble_SpawnCustomColor(play, &bubblePos, &sBubbleVelocity, &sBubbleAccel, diff --git a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c index 2a9a0ac67..bd9949c61 100644 --- a/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c +++ b/src/overlays/actors/ovl_En_Egblock/z_en_egblock.c @@ -134,8 +134,8 @@ void EnEgblock_SpawnEffect(EnEgblock* this, Vec3f* pos, s16 lifetime, s16 arg3) if (!effect->isActive) { effect->isActive = true; effect->pos = *pos; - effect->pos.x += randPlusMinusPoint5Scaled(50.0f); - effect->pos.z += randPlusMinusPoint5Scaled(50.0f); + effect->pos.x += Rand_CenteredFloat(50.0f); + effect->pos.z += Rand_CenteredFloat(50.0f); effect->timer = lifetime; effect->alpha = 255; effect->type = arg3; @@ -146,9 +146,9 @@ void EnEgblock_SpawnEffect(EnEgblock* this, Vec3f* pos, s16 lifetime, s16 arg3) effect->velocity.y = 5.0f + (10.0f * Rand_ZeroOne()); effect->velocity.z = 2.0f * (Rand_ZeroOne() - 0.5f); effect->scale = 0.5f + (0.2f * Rand_ZeroFloat(1.0f)); - effect->rot.x = randPlusMinusPoint5Scaled(0x7530); - effect->rot.y = randPlusMinusPoint5Scaled(0x7530); - effect->rot.z = randPlusMinusPoint5Scaled(0x7530); + effect->rot.x = Rand_CenteredFloat(0x7530); + effect->rot.y = Rand_CenteredFloat(0x7530); + effect->rot.z = Rand_CenteredFloat(0x7530); break; } } diff --git a/src/overlays/actors/ovl_En_Egol/z_en_egol.c b/src/overlays/actors/ovl_En_Egol/z_en_egol.c index c9750991a..1a54c8c33 100644 --- a/src/overlays/actors/ovl_En_Egol/z_en_egol.c +++ b/src/overlays/actors/ovl_En_Egol/z_en_egol.c @@ -610,8 +610,7 @@ void EnEgol_Retreat(EnEgol* this, PlayState* play) { if ((ABS_ALT(angleToFacing) < 0x3000) && (fabsf(this->actor.world.pos.y - player->actor.world.pos.y) < 50.0f) && (this->actor.xzDistToPlayer < 100.0f) && (player->invincibilityTimer == 0)) { - func_800B8D50(play, &this->actor, 2.0f, (s32)randPlusMinusPoint5Scaled(0x2000) + this->actor.world.rot.y, 5.0f, - 0x10); + func_800B8D50(play, &this->actor, 2.0f, (s32)Rand_CenteredFloat(0x2000) + this->actor.world.rot.y, 5.0f, 0x10); } Math_Vec3f_Copy(&spawnPos, &gZeroVec3f); if ((this->actor.world.pos.y - 50.0f) <= player->actor.world.pos.y) { @@ -764,11 +763,11 @@ void EnEgol_Laser(EnEgol* this, PlayState* play) { /*! @bug The following is supposed to calculate the rotation from vertical to the collision poly normal. * However, the calculation is performed incorrectly. The correct calculation is - * rotToNorm.x = func_80086B30(nz, ny) * 0x8000 / M_PI; - * rotToNorm.z = func_80086B30(-nx, sqrtf(1.0f - SQ(nx))) * 0x8000 / M_PI; + * rotToNorm.x = Math_FAtan2F(nz, ny) * 0x8000 / M_PI; + * rotToNorm.z = Math_FAtan2F(-nx, sqrtf(1.0f - SQ(nx))) * 0x8000 / M_PI; */ - rotToNorm.x = RAD_TO_BINANG_ALT2(-func_80086B30(-nz * ny, 1.0f)); - rotToNorm.z = RAD_TO_BINANG_ALT2(func_80086B30(-nx * ny, 1.0f)); + rotToNorm.x = RAD_TO_BINANG_ALT2(-Math_FAtan2F(-nz * ny, 1.0f)); + rotToNorm.z = RAD_TO_BINANG_ALT2(Math_FAtan2F(-nx * ny, 1.0f)); if ((this->actor.world.pos.y - 50.0f) <= player->actor.world.pos.y) { EnEgol_SpawnEffect(this, &hitPos, &rotToNorm, 100, 0.02f, EYEGORE_EFFECT_IMPACT); @@ -1534,9 +1533,9 @@ void EnEgol_SpawnEffect(EnEgol* this, Vec3f* pos, Vec3s* rot, s16 lifetime, f32 effect->timer = lifetime; effect->alpha = 255; effect->type = type; - effect->rot.x = randPlusMinusPoint5Scaled(0x7530); - effect->rot.y = randPlusMinusPoint5Scaled(0x7530); - effect->rot.z = randPlusMinusPoint5Scaled(0x7530); + effect->rot.x = Rand_CenteredFloat(0x7530); + effect->rot.y = Rand_CenteredFloat(0x7530); + effect->rot.z = Rand_CenteredFloat(0x7530); if ((effect->type == EYEGORE_EFFECT_PIECE_LARGE) || (effect->type == EYEGORE_EFFECT_PIECE_SMALL)) { effect->accel.y = -1.0f; effect->velocity.x = 4.0f * (Rand_ZeroOne() - 0.5f); diff --git a/src/overlays/actors/ovl_En_Elf/z_en_elf.c b/src/overlays/actors/ovl_En_Elf/z_en_elf.c index 2bb7b6d0d..3dc6e4a72 100644 --- a/src/overlays/actors/ovl_En_Elf/z_en_elf.c +++ b/src/overlays/actors/ovl_En_Elf/z_en_elf.c @@ -201,7 +201,7 @@ void func_8088C858(EnElf* this, PlayState* play) { this->unk_244 = 1; this->unk_248 = 128; this->unk_254 = Rand_ZeroFloat(1.0f) + 0.5f; - this->unk_24C = randPlusMinusPoint5Scaled(0x7FFF); + this->unk_24C = Rand_CenteredFloat(0x7FFF); this->unk_26C = func_8088C9CC; } } @@ -216,7 +216,7 @@ void func_8088C920(EnElf* this, PlayState* play) { this->unk_244 = 1; this->unk_248 = 128; this->unk_254 = Rand_ZeroFloat(1.0f) + 0.5f; - this->unk_24C = randPlusMinusPoint5Scaled(0x7FFF); + this->unk_24C = Rand_CenteredFloat(0x7FFF); this->unk_26C = func_8088C9CC; } } @@ -264,7 +264,7 @@ void func_8088C9CC(EnElf* this, PlayState* play) { this->unk_244 = 1; this->unk_248 = 128; this->unk_254 = Rand_ZeroFloat(0.5f) + 0.5f; - this->unk_24C = randPlusMinusPoint5Scaled(0x7FFF); + this->unk_24C = Rand_CenteredFloat(0x7FFF); } } @@ -293,7 +293,7 @@ void func_8088CC48(EnElf* this, PlayState* play) { this->unk_246 = 0; this->unk_24A = (s32)Rand_ZeroFloat(1048.0f) + 0x200; this->unk_224 = this->actor.world.pos; - this->unk_258 = randPlusMinusPoint5Scaled(0x7FFF); + this->unk_258 = Rand_CenteredFloat(0x7FFF); this->unk_26C = func_8088C9CC; func_8088CBAC(this, play); this->unk_25C = 0; @@ -1247,9 +1247,9 @@ void func_8088F5F4(EnElf* this, PlayState* play, s32 sparkleLife) { Color_RGBA8 envColor; if (!(this->fairyFlags & 8)) { - sparklePos.x = randPlusMinusPoint5Scaled(6.0f) + this->actor.world.pos.x; + sparklePos.x = Rand_CenteredFloat(6.0f) + this->actor.world.pos.x; sparklePos.y = (Rand_ZeroOne() * 6.0f) + this->actor.world.pos.y; - sparklePos.z = randPlusMinusPoint5Scaled(6.0f) + this->actor.world.pos.z; + sparklePos.z = Rand_CenteredFloat(6.0f) + this->actor.world.pos.z; primColor.r = this->innerColor.r; primColor.g = this->innerColor.g; diff --git a/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c b/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c index e2a5f69e3..2584a1c73 100644 --- a/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c +++ b/src/overlays/actors/ovl_En_Elfbub/z_en_elfbub.c @@ -66,7 +66,7 @@ void EnElfbub_Init(Actor* thisx, PlayState* play) { Actor_SetScale(&this->actor, 1.25f); this->actionFunc = EnElfbub_Idle; - this->zRot = randPlusMinusPoint5Scaled(0x10000); + this->zRot = Rand_CenteredFloat(0x10000); this->zRotDelta = 1000; this->xScale = 0.08f; diff --git a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c index a3f17f605..cacef3f4d 100644 --- a/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c +++ b/src/overlays/actors/ovl_En_Elfgrp/z_en_elfgrp.c @@ -262,8 +262,8 @@ void func_80A39DC8(EnElfgrp* this, PlayState* play, s32 arg2, s32 arg3) { } for (i = 0; i < arg2; i++) { - elforg = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELFORG, randPlusMinusPoint5Scaled(20.0f) + sp6C.x, sp6C.y, - randPlusMinusPoint5Scaled(20.0f) + sp6C.z, 0, 0, 0, params); + elforg = Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ELFORG, Rand_CenteredFloat(20.0f) + sp6C.x, sp6C.y, + Rand_CenteredFloat(20.0f) + sp6C.z, 0, 0, 0, params); if (elforg == NULL) { continue; } diff --git a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c index 05351cd3f..9b65ae2a6 100644 --- a/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c +++ b/src/overlays/actors/ovl_En_Elforg/z_en_elforg.c @@ -58,7 +58,7 @@ void EnElforg_InitializeParams(EnElforg* this) { this->actor.speed = 1.0f; this->targetSpeedXZ = 1.0f; this->actor.velocity.y = 0.0f; - this->actor.world.rot.y = randPlusMinusPoint5Scaled(0x10000); + this->actor.world.rot.y = Rand_CenteredFloat(0x10000); this->timer = 0; this->secondaryTimer = Rand_ZeroFloat(100.0f); this->actor.shape.yOffset = 0.0f; @@ -176,9 +176,9 @@ void EnElforg_SpawnSparkles(EnElforg* this, PlayState* play, s32 life) { s32 pad; s32 index; - pos.x = randPlusMinusPoint5Scaled(6.0f) + this->actor.world.pos.x; + pos.x = Rand_CenteredFloat(6.0f) + this->actor.world.pos.x; pos.y = (Rand_ZeroOne() * 6.0f) + this->actor.world.pos.y + (this->actor.shape.yOffset * this->actor.scale.y); - pos.z = randPlusMinusPoint5Scaled(6.0f) + this->actor.world.pos.z; + pos.z = Rand_CenteredFloat(6.0f) + this->actor.world.pos.z; index = (this->area < STRAY_FAIRY_AREA_CLOCK_TOWN || this->area >= STRAY_FAIRY_AREA_MAX) ? STRAY_FAIRY_AREA_CLOCK_TOWN : this->area; diff --git a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c index 834a6449f..3d8224039 100644 --- a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c +++ b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c @@ -102,15 +102,15 @@ void EnEncount1_SpawnActor(EnEncount1* this, PlayState* play) { this->timer = 0; switch (this->type) { case EN_ENCOUNT1_GRASSHOPPER: - scale = randPlusMinusPoint5Scaled(40.0f) + 200.0f; + scale = Rand_CenteredFloat(40.0f) + 200.0f; rotY = player->actor.shape.rot.y; if (this->spawnActiveCount & 1) { rotY = -rotY; - scale = randPlusMinusPoint5Scaled(20.0f) + 100.0f; + scale = Rand_CenteredFloat(20.0f) + 100.0f; } - spawnPos.x = player->actor.world.pos.x + (Math_SinS(rotY) * scale) + randPlusMinusPoint5Scaled(40.0f); + spawnPos.x = player->actor.world.pos.x + (Math_SinS(rotY) * scale) + Rand_CenteredFloat(40.0f); spawnPos.y = player->actor.floorHeight + 120.0f; - spawnPos.z = player->actor.world.pos.z + (Math_CosS(rotY) * scale) + randPlusMinusPoint5Scaled(40.0f); + spawnPos.z = player->actor.world.pos.z + (Math_CosS(rotY) * scale) + Rand_CenteredFloat(40.0f); floorHeight = BgCheck_EntityRaycastFloor5(&play->colCtx, &floorPoly, &bgId, &this->actor, &spawnPos); if ((floorHeight <= BGCHECK_Y_MIN) || ((player->actor.depthInWater != BGCHECK_Y_MIN) && @@ -125,11 +125,11 @@ void EnEncount1_SpawnActor(EnEncount1* this, PlayState* play) { break; case EN_ENCOUNT1_SKULLFISH: - scale = randPlusMinusPoint5Scaled(250.0f) + 500.0f; + scale = Rand_CenteredFloat(250.0f) + 500.0f; rotY = player->actor.shape.rot.y; - spawnPos.x = player->actor.world.pos.x + (Math_SinS(rotY) * scale) + randPlusMinusPoint5Scaled(40.0f); + spawnPos.x = player->actor.world.pos.x + (Math_SinS(rotY) * scale) + Rand_CenteredFloat(40.0f); spawnPos.y = player->actor.world.pos.y - Rand_ZeroFloat(20.0f); - spawnPos.z = player->actor.world.pos.z + (Math_CosS(rotY) * scale) + randPlusMinusPoint5Scaled(40.0f); + spawnPos.z = player->actor.world.pos.z + (Math_CosS(rotY) * scale) + Rand_CenteredFloat(40.0f); floorHeight = BgCheck_EntityRaycastFloor5(&play->colCtx, &floorPoly, &bgId, &this->actor, &spawnPos); if (!(player->stateFlags1 & PLAYER_STATE1_8000000) || (floorHeight <= BGCHECK_Y_MIN) || (player->actor.depthInWater < floorHeight)) { diff --git a/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c b/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c index 972d038ae..5e28850c6 100644 --- a/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c +++ b/src/overlays/actors/ovl_En_Encount4/z_en_encount4.c @@ -171,8 +171,8 @@ void func_809C42A8(EnEncount4* this, PlayState* play) { if (this->unk_14C != 0) { yRot += 0x8000; } - pos.x += Math_SinS(yRot) * (40.0f + randPlusMinusPoint5Scaled(40.0f)); - pos.z += Math_CosS(yRot) * (40.0f + randPlusMinusPoint5Scaled(40.0f)); + pos.x += Math_SinS(yRot) * (40.0f + Rand_CenteredFloat(40.0f)); + pos.z += Math_CosS(yRot) * (40.0f + Rand_CenteredFloat(40.0f)); if (Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_SKB, pos.x, pos.y, pos.z, 0, 0, 0, ENSKB_PARAM_0) != NULL) { this->unk_14C++; diff --git a/src/overlays/actors/ovl_En_Estone/z_en_estone.c b/src/overlays/actors/ovl_En_Estone/z_en_estone.c index 85d0527fa..64bfdaecc 100644 --- a/src/overlays/actors/ovl_En_Estone/z_en_estone.c +++ b/src/overlays/actors/ovl_En_Estone/z_en_estone.c @@ -64,10 +64,10 @@ void EnEstone_Init(Actor* thisx, PlayState* play) { s32 pad; ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawCircle, 15.0f); - this->rotVel.x = this->rotVel.y = this->rotVel.z = randPlusMinusPoint5Scaled(1.0f) * 20.0f; + this->rotVel.x = this->rotVel.y = this->rotVel.z = Rand_CenteredFloat(1.0f) * 20.0f; Collider_InitAndSetCylinder(play, &this->collider, &this->actor, &sCylinderInit); this->actor.colChkInfo.mass = MASS_IMMOVABLE; - this->actor.world.rot.y += (s16)randPlusMinusPoint5Scaled(0x2710); + this->actor.world.rot.y += (s16)(s32)Rand_CenteredFloat(0x2710); this->actor.shape.rot.y = this->actor.world.rot.y; if (this->actor.params == ENESTONE_TYPE_LARGE) { @@ -224,9 +224,9 @@ void EnEstone_SpawnEffect(EnEstone* this, Vec3f* pos, Vec3f* velocity, Vec3f* ac effect->accel = *accel; effect->scale = scale; effect->timer = lifetime; - effect->rot.x = randPlusMinusPoint5Scaled(0x7530); - effect->rot.y = randPlusMinusPoint5Scaled(0x7530); - effect->rot.z = randPlusMinusPoint5Scaled(0x7530); + effect->rot.x = Rand_CenteredFloat(0x7530); + effect->rot.y = Rand_CenteredFloat(0x7530); + effect->rot.z = Rand_CenteredFloat(0x7530); break; } } diff --git a/src/overlays/actors/ovl_En_Fall/z_en_fall.c b/src/overlays/actors/ovl_En_Fall/z_en_fall.c index 2f226e61c..03989b01f 100644 --- a/src/overlays/actors/ovl_En_Fall/z_en_fall.c +++ b/src/overlays/actors/ovl_En_Fall/z_en_fall.c @@ -662,16 +662,16 @@ s32 EnFall_RisingDebris_InitializeEffect(EnFall* this) { debrisEffects[i].pos.x = this->actor.world.pos.x; debrisEffects[i].pos.y = this->actor.world.pos.y; debrisEffects[i].pos.z = this->actor.world.pos.z; - angle = randPlusMinusPoint5Scaled(0x10000); + angle = Rand_CenteredFloat(0x10000); scale = (1.0f - (Rand_ZeroFloat(1.0f) * Rand_ZeroFloat(1.0f))) * 3000.0f; debrisEffects[i].pos.x += Math_SinS(angle) * scale; debrisEffects[i].pos.z += Math_CosS(angle) * scale; debrisEffects[i].velocity.x = 0.0f; debrisEffects[i].velocity.z = 0.0f; debrisEffects[i].velocity.y = 80.0f; - debrisEffects[i].rot.x = randPlusMinusPoint5Scaled(0x10000); - debrisEffects[i].rot.y = randPlusMinusPoint5Scaled(0x10000); - debrisEffects[i].rot.z = randPlusMinusPoint5Scaled(0x10000); + debrisEffects[i].rot.x = Rand_CenteredFloat(0x10000); + debrisEffects[i].rot.y = Rand_CenteredFloat(0x10000); + debrisEffects[i].rot.z = Rand_CenteredFloat(0x10000); this->activeDebrisEffectCount++; return true; } diff --git a/src/overlays/actors/ovl_En_Famos/z_en_famos.c b/src/overlays/actors/ovl_En_Famos/z_en_famos.c index 97d1ec357..269866ff0 100644 --- a/src/overlays/actors/ovl_En_Famos/z_en_famos.c +++ b/src/overlays/actors/ovl_En_Famos/z_en_famos.c @@ -265,7 +265,7 @@ void EnFamos_SetupDeathDebris(EnFamos* this) { rock->rotation.y = (s32)Rand_Next() >> 0x10; rock->rotation.z = (s32)Rand_Next() >> 0x10; rock->pos.x = Math_SinS(randVelDirection) * 20.0f + this->actor.world.pos.x; - rock->pos.y = randPlusMinusPoint5Scaled(60.0f) + (this->actor.world.pos.y + 40.0f); + rock->pos.y = Rand_CenteredFloat(60.0f) + (this->actor.world.pos.y + 40.0f); rock->pos.z = Math_CosS(randVelDirection) * 20.0f + this->actor.world.pos.z; rock->scale = Rand_ZeroFloat(0.002f) + (2.5f * 0.001f); } @@ -687,8 +687,8 @@ void EnFamos_DeathExplosion(EnFamos* this, PlayState* play) { Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 4); } - this->actor.world.pos.x = randPlusMinusPoint5Scaled(5.0f) + this->targetDest.x; - this->actor.world.pos.z = randPlusMinusPoint5Scaled(5.0f) + this->targetDest.z; + this->actor.world.pos.x = Rand_CenteredFloat(5.0f) + this->targetDest.x; + this->actor.world.pos.z = Rand_CenteredFloat(5.0f) + this->targetDest.z; if (this->stateTimer == 1) { EnBom* explosion = (EnBom*)Actor_Spawn(&play->actorCtx, play, ACTOR_EN_BOM, this->actor.world.pos.x, this->actor.world.pos.y + 40.0f, this->actor.world.pos.z, diff --git a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c index b26592ac0..fd3b723d8 100644 --- a/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c +++ b/src/overlays/actors/ovl_En_Firefly/z_en_firefly.c @@ -301,7 +301,7 @@ void EnFirefly_FlyIdle(EnFirefly* this, PlayState* play) { Math_ScaledStepToS(&this->actor.shape.rot.y, Actor_WorldYawTowardPoint(&this->actor, &this->actor.home.pos), 0x300); } else if (rand < 0.8f) { - this->actor.shape.rot.y += (s16)randPlusMinusPoint5Scaled(1536.0f); + this->actor.shape.rot.y += (s16)(s32)Rand_CenteredFloat(0x600); } // Climb if too close to ground diff --git a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c index ac3a4246b..923cfeef2 100644 --- a/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c +++ b/src/overlays/actors/ovl_En_Fish2/z_en_fish2.c @@ -352,7 +352,7 @@ void func_80B28C14(EnFish2* this, PlayState* play) { this->unk_2B4 = (s32)Rand_ZeroFloat(20.0f) + 10; } else if (this->unk_2B4 == 1) { if ((this->unk_348 == 0) || (Rand_ZeroOne() < 0.6f)) { - this->unk_348 = randPlusMinusPoint5Scaled(0x2000); + this->unk_348 = Rand_CenteredFloat(0x2000); } else { this->unk_348 = Math_Vec3f_Pitch(&this->actor.world.pos, &this->unk_324); if (this->unk_348 < -0x1000) { @@ -545,8 +545,8 @@ void func_80B295A4(EnFish2* this, PlayState* play) { Math_ApproachZeroF(&this->actor.speed, 0.3f, 0.3f); if (this->unk_2B4 != 0) { Math_Vec3f_Copy(&sp60, &this->unk_318); - sp60.x += randPlusMinusPoint5Scaled(100.0f); - sp60.z += randPlusMinusPoint5Scaled(100.0f); + sp60.x += Rand_CenteredFloat(100.0f); + sp60.z += Rand_CenteredFloat(100.0f); for (i = 0; i < 2; i++) { EffectSsBubble_Spawn(play, &sp60, 0.0f, 5.0f, 5.0f, Rand_ZeroFloat(this->unk_330 * 4.0f) + 0.1f); @@ -912,10 +912,10 @@ void func_80B2A498(EnFish2* this, PlayState* play) { for (i = 0; i < 10; i++) { Math_Vec3f_Copy(&sp6C, &this->actor.world.pos); - sp6C.x += randPlusMinusPoint5Scaled(70.0f); + sp6C.x += Rand_CenteredFloat(70.0f); sp6C.y = this->unk_334 + 10.0f; - sp6C.z += randPlusMinusPoint5Scaled(70.0f); - EffectSsGSplash_Spawn(play, &sp6C, NULL, NULL, 0, (s32)randPlusMinusPoint5Scaled(50.0f) + 350); + sp6C.z += Rand_CenteredFloat(70.0f); + EffectSsGSplash_Spawn(play, &sp6C, NULL, NULL, 0, (s32)Rand_CenteredFloat(50.0f) + 350); } } } @@ -970,11 +970,11 @@ void EnFish2_Update(Actor* thisx, PlayState* play2) { if ((play->gameplayFrames % 8) == 0) { Math_Vec3f_Copy(&sp5C, &this->unk_324); - sp5C.x += randPlusMinusPoint5Scaled(100.0f); + sp5C.x += Rand_CenteredFloat(100.0f); sp5C.y = this->actor.floorHeight; - sp5C.z += randPlusMinusPoint5Scaled(100.0f); + sp5C.z += Rand_CenteredFloat(100.0f); - for (i = 0; i < (s32)randPlusMinusPoint5Scaled(5.0f) + 10; i++) { + for (i = 0; i < (s32)Rand_CenteredFloat(5.0f) + 10; i++) { EffectSsBubble_Spawn(play, &sp5C, 0, 5.0f, 5.0f, Rand_ZeroFloat(this->unk_330 * 4.0f) + 0.1f); } } @@ -1102,9 +1102,9 @@ void func_80B2ADB0(EnFish2* this, Vec3f* vec, s16 arg2) { ptr->unk_20 = VIRTUAL_TO_PHYSICAL(SEGMENTED_TO_VIRTUAL(phi_v0)); ptr->unk_00 = true; ptr->unk_04 = *vec; - ptr->unk_04.x += randPlusMinusPoint5Scaled(ptr->unk_00 + (this->unk_330 * 4000.0f)); - ptr->unk_04.y += randPlusMinusPoint5Scaled(20.0f); - ptr->unk_04.z += randPlusMinusPoint5Scaled(ptr->unk_00 + (this->unk_330 * 4000.0f)); + ptr->unk_04.x += Rand_CenteredFloat(ptr->unk_00 + (this->unk_330 * 4000.0f)); + ptr->unk_04.y += Rand_CenteredFloat(20.0f); + ptr->unk_04.z += Rand_CenteredFloat(ptr->unk_00 + (this->unk_330 * 4000.0f)); ptr->unk_18 = (this->unk_330 * 20.0f) - (Rand_ZeroFloat(5.0f) * 0.01f); ptr->unk_1C = 0x42; ptr->unk_10 = arg2; 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 2ada30cba..20edbcbc2 100644 --- a/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c +++ b/src/overlays/actors/ovl_En_Fishing/z_en_fishing.c @@ -1838,9 +1838,9 @@ void EnFishing_DrawLureAndLine(PlayState* play, Vec3f* linePos, Vec3f* lineRot) dy = sLurePos.y - sRodTipPos.y; dz = sLurePos.z - sRodTipPos.z; - ry = func_80086B30(dx, dz); + ry = Math_FAtan2F(dx, dz); dist = sqrtf(SQ(dx) + SQ(dz)); - rx = -func_80086B30(dy, dist); + rx = -Math_FAtan2F(dy, dist); dist = sqrtf(SQ(dx) + SQ(dy) + SQ(dz)) * 0.001f; @@ -1865,9 +1865,9 @@ void EnFishing_DrawLureAndLine(PlayState* play, Vec3f* linePos, Vec3f* lineRot) dy = D_80917218.y - (linePos + i)->y; dz = D_80917218.z - (linePos + i)->z; - ry = func_80086B30(dx, dz); + ry = Math_FAtan2F(dx, dz); dist = sqrtf(SQ(dx) + SQ(dz)); - rx = -func_80086B30(dy, dist); + rx = -Math_FAtan2F(dy, dist); dist = sqrtf(SQ(dx) + SQ(dy) + SQ(dz)) * 0.001f; @@ -3003,9 +3003,9 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { this->actor.shape.rot.y = -0x8000; if ((this->actor.projectedPos.z < 200.0f) && (this->actor.projectedPos.z > 0.0f)) { - spC4.x = randPlusMinusPoint5Scaled(5.0f) + 130.0f; + spC4.x = Rand_CenteredFloat(5.0f) + 130.0f; spC4.y = 40.0f; - spC4.z = randPlusMinusPoint5Scaled(5.0f) + 1280.0f; + spC4.z = Rand_CenteredFloat(5.0f) + 1280.0f; EnFishing_SpawnBubble(NULL, play->specialEffects, &spC4, Rand_ZeroFloat(0.02f) + 0.03f, 1); } @@ -3080,9 +3080,9 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { } else { this->unk_150 = 1; this->unk_172[0] = Rand_ZeroFloat(30.0f) + 10.0f; - this->unk_1AC.x = randPlusMinusPoint5Scaled(300.0f); + this->unk_1AC.x = Rand_CenteredFloat(300.0f); this->unk_1AC.y = (WATER_SURFACE_Y(play) - 50.0f) - Rand_ZeroFloat(50.0f); - this->unk_1AC.z = randPlusMinusPoint5Scaled(300.0f); + this->unk_1AC.z = Rand_CenteredFloat(300.0f); this->unk_188 = 1.0f; this->unk_18C = 2000.0f; } @@ -3144,8 +3144,8 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { Math_ApproachF(&this->unk_1A8, 4096.0f, 1.0f, 256.0f); if ((play->gameplayFrames % 32) == 0) { - this->unk_1AC.x = randPlusMinusPoint5Scaled(600.0f); - this->unk_1AC.z = randPlusMinusPoint5Scaled(600.0f); + this->unk_1AC.x = Rand_CenteredFloat(600.0f); + this->unk_1AC.z = Rand_CenteredFloat(600.0f); this->unk_1AC.y = -120.0f; } } else if (sp124 > 50.0f) { @@ -3600,7 +3600,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { for (spA2 = 0; spA2 < 100; spA2++) { - Matrix_RotateYF(randPlusMinusPoint5Scaled(0.75f * M_PI) + + Matrix_RotateYF(Rand_CenteredFloat(0.75f * M_PI) + BINANG_TO_RAD_ALT(this->actor.yawTowardsPlayer + 0x8000), MTXMODE_NEW); Matrix_MultVec3f(&sp10C, &sp100); @@ -4067,7 +4067,7 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { func_80903C60(this, 1); this->unk_17C = this->actor.velocity.y; this->actor.velocity.y = 0.0f; - this->unk_162 = randPlusMinusPoint5Scaled(32768.0f); + this->unk_162 = (s16)(s32)Rand_CenteredFloat(0x8000); } else if ((this->actor.world.pos.y < WATER_SURFACE_Y(play)) && (this->actor.prevPos.y >= WATER_SURFACE_Y(play))) { if (this->unk_17C < -5.0f) { @@ -4128,10 +4128,10 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { if (Rand_ZeroOne() < 0.5f) { this->unk_15E = 0; } else { - this->unk_15E = (s16)randPlusMinusPoint5Scaled(32.0f) + 0x8000; + this->unk_15E = (s16)(s32)Rand_CenteredFloat(0x20) + 0x8000; } - this->unk_160 = (s16)randPlusMinusPoint5Scaled(16384.0f); + this->unk_160 = (s16)(s32)Rand_CenteredFloat(0x4000); this->unk_188 = 1.0f; this->unk_18C = 5000.0f; this->unk_194 = 5000.0f; @@ -4141,8 +4141,8 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { if ((this->unk_150 == 5) && !(this->unk_154 & 1)) { Vec3f pos; - pos.x = randPlusMinusPoint5Scaled(10.0f) + this->actor.world.pos.x; - pos.z = randPlusMinusPoint5Scaled(10.0f) + this->actor.world.pos.z; + pos.x = Rand_CenteredFloat(10.0f) + this->actor.world.pos.x; + pos.z = Rand_CenteredFloat(10.0f) + this->actor.world.pos.z; pos.y = this->actor.floorHeight + 5.0f; EnFishing_SpawnWaterDust(&this->actor.projectedPos, play->specialEffects, &pos, (this->unk_1A4 * 0.005f) + 0.15f); @@ -4160,9 +4160,9 @@ void EnFishing_UpdateFish(Actor* thisx, PlayState* play2) { this->unk_1CA--; for (i = 0; i < 2; i++) { - pos.x = randPlusMinusPoint5Scaled(range) + this->actor.world.pos.x; - pos.y = randPlusMinusPoint5Scaled(range) + this->actor.world.pos.y; - pos.z = randPlusMinusPoint5Scaled(range) + this->actor.world.pos.z; + pos.x = Rand_CenteredFloat(range) + this->actor.world.pos.x; + pos.y = Rand_CenteredFloat(range) + this->actor.world.pos.y; + pos.z = Rand_CenteredFloat(range) + this->actor.world.pos.z; EnFishing_SpawnBubble(&this->actor.projectedPos, play->specialEffects, &pos, Rand_ZeroFloat(0.035f) + 0.04f, 0); } @@ -4568,14 +4568,14 @@ void EnFishing_UpdateGroupFishes(PlayState* play) { spD6 = Math_Atan2S_XY(dist, dy); if ((dist < 10.0f) || (((fish->timer % 32) == 0) && (Rand_ZeroOne() > 0.5f))) { - fish->unk_10.y = basePos[groupIndex].y + randPlusMinusPoint5Scaled(10.0f); + fish->unk_10.y = basePos[groupIndex].y + Rand_CenteredFloat(10.0f); if (D_8090CF18 != 0) { - fish->unk_10.x = basePos[groupIndex].x + randPlusMinusPoint5Scaled(200.0f); - fish->unk_10.z = basePos[groupIndex].z + randPlusMinusPoint5Scaled(200.0f); + fish->unk_10.x = basePos[groupIndex].x + Rand_CenteredFloat(200.0f); + fish->unk_10.z = basePos[groupIndex].z + Rand_CenteredFloat(200.0f); } else { - fish->unk_10.x = basePos[groupIndex].x + randPlusMinusPoint5Scaled(100.0f); - fish->unk_10.z = basePos[groupIndex].z + randPlusMinusPoint5Scaled(100.0f); + fish->unk_10.x = basePos[groupIndex].x + Rand_CenteredFloat(100.0f); + fish->unk_10.z = basePos[groupIndex].z + Rand_CenteredFloat(100.0f); } ripplePos = fish->pos; @@ -5460,8 +5460,8 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { ((play->gameplayFrames % 2) == 0)) { Vec3f pos; - pos.x = randPlusMinusPoint5Scaled(20.0f) + player->actor.world.pos.x; - pos.z = randPlusMinusPoint5Scaled(20.0f) + player->actor.world.pos.z; + pos.x = Rand_CenteredFloat(20.0f) + player->actor.world.pos.x; + pos.z = Rand_CenteredFloat(20.0f) + player->actor.world.pos.z; pos.y = player->actor.floorHeight + 5.0f; EnFishing_SpawnWaterDust(NULL, play->specialEffects, &pos, 0.5f); } @@ -5552,9 +5552,9 @@ void EnFishing_UpdateOwner(Actor* thisx, PlayState* play2) { rot.z = (Camera_GetInputDirYaw(mainCam) * -(M_PI / 0x8000)) + rot.y; for (i = 0; i < (u8)D_8090CCD0; i++) { - pos.x = randPlusMinusPoint5Scaled(700.0f) + play->view.eye.x; + pos.x = Rand_CenteredFloat(700.0f) + play->view.eye.x; pos.y = (Rand_ZeroFloat(100.0f) + 150.0f) - 170.0f; - pos.z = randPlusMinusPoint5Scaled(700.0f) + play->view.eye.z; + pos.z = Rand_CenteredFloat(700.0f) + play->view.eye.z; if (pos.z < 1160.0f) { SkinMatrix_Vec3fMtxFMultXYZW(&play->viewProjectionMtxF, &pos, &projectedPos, &sProjectedW); diff --git a/src/overlays/actors/ovl_En_Fz/z_en_fz.c b/src/overlays/actors/ovl_En_Fz/z_en_fz.c index 150f3c8c1..71f980d47 100644 --- a/src/overlays/actors/ovl_En_Fz/z_en_fz.c +++ b/src/overlays/actors/ovl_En_Fz/z_en_fz.c @@ -306,14 +306,14 @@ void func_809328F4(EnFz* this, PlayState* play, Vec3f* arg2, s32 arg3, f32 arg4) sp88.b = 200; for (i = 0; i < arg3; i++) { - temp_f24 = randPlusMinusPoint5Scaled(0.3f) + 0.6f; - temp_s1 = (s32)randPlusMinusPoint5Scaled(5.0f) + 12; - spA8.x = randPlusMinusPoint5Scaled(arg4) + arg2->x; + temp_f24 = Rand_CenteredFloat(0.3f) + 0.6f; + temp_s1 = (s32)Rand_CenteredFloat(5.0f) + 12; + spA8.x = Rand_CenteredFloat(arg4) + arg2->x; spA8.y = Rand_ZeroFloat(arg4) + arg2->y; - spA8.z = randPlusMinusPoint5Scaled(arg4) + arg2->z; - sp9C.x = randPlusMinusPoint5Scaled(10.0f); + spA8.z = Rand_CenteredFloat(arg4) + arg2->z; + sp9C.x = Rand_CenteredFloat(10.0f); sp9C.y = Rand_ZeroFloat(10.0f) + 2.0f; - sp9C.z = randPlusMinusPoint5Scaled(10.0f); + sp9C.z = Rand_CenteredFloat(10.0f); EffectSsEnIce_Spawn(play, &spA8, temp_f24, &sp9C, &sp90, &sp8C, &sp88, temp_s1); } @@ -329,9 +329,9 @@ void func_80932AF4(EnFz* this) { Vec3f sp2C; if (!(this->unk_BC6 & 0xF)) { - sp44.x = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.x; - sp44.y = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.y + 30.0f; - sp44.z = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.z; + sp44.x = Rand_CenteredFloat(40.0f) + this->actor.world.pos.x; + sp44.y = Rand_CenteredFloat(40.0f) + this->actor.world.pos.y + 30.0f; + sp44.z = Rand_CenteredFloat(40.0f) + this->actor.world.pos.z; sp2C.x = sp2C.z = 0.0f; sp2C.y = 0.1f; sp38.x = sp38.y = sp38.z = 0.0f; @@ -345,9 +345,9 @@ void func_80932BD4(EnFz* this) { Vec3f sp2C; if (!(this->unk_BC6 & 3)) { - sp44.x = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.x; + sp44.x = Rand_CenteredFloat(40.0f) + this->actor.world.pos.x; sp44.y = this->unk_BB4; - sp44.z = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.z; + sp44.z = Rand_CenteredFloat(40.0f) + this->actor.world.pos.z; sp2C.x = sp2C.z = 0.0f; sp2C.y = 0.1f; sp38.x = sp38.y = sp38.z = 0.0f; diff --git a/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c b/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c index e05945680..3540b1a24 100644 --- a/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c +++ b/src/overlays/actors/ovl_En_Gg2/z_en_gg2.c @@ -310,7 +310,7 @@ s32 func_80B3B648(EnGg2* this, Path* path, s32 arg2_) { phi_f14 = points[arg2 + 1].z - points[arg2 - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { ret = true; diff --git a/src/overlays/actors/ovl_En_Gk/z_en_gk.c b/src/overlays/actors/ovl_En_Gk/z_en_gk.c index 8692f937c..1db4d7c5b 100644 --- a/src/overlays/actors/ovl_En_Gk/z_en_gk.c +++ b/src/overlays/actors/ovl_En_Gk/z_en_gk.c @@ -374,7 +374,7 @@ s32 func_80B50C78(EnGk* this, Path* path, s32 arg2_) { phi_f14 = sp5C[arg2 + 1].z - sp5C[arg2 - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { ret = true; diff --git a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c index 7fbed6122..bfd2d19ab 100644 --- a/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c +++ b/src/overlays/actors/ovl_En_Grasshopper/z_en_grasshopper.c @@ -246,7 +246,7 @@ void EnGrasshopper_Init(Actor* thisx, PlayState* play) { this->type; } - this->baseFlyHeight = randPlusMinusPoint5Scaled(50.0f) + this->flyingHomePos.y; + this->baseFlyHeight = Rand_CenteredFloat(50.0f) + this->flyingHomePos.y; EnGrasshopper_SetupFly(this); } @@ -343,7 +343,7 @@ void EnGrasshopper_DecideAction(EnGrasshopper* this, PlayState* play) { void EnGrasshopper_SetupFly(EnGrasshopper* this) { EnGrasshopper_ChangeAnim(this, EN_GRASSHOPPER_ANIM_FLY); - this->baseFlyHeight = randPlusMinusPoint5Scaled(50.0f) + this->flyingHomePos.y; + this->baseFlyHeight = Rand_CenteredFloat(50.0f) + this->flyingHomePos.y; this->action = EN_GRASSHOPPER_ACTION_FLY; this->actionFunc = EnGrasshopper_Fly; } @@ -384,7 +384,7 @@ void EnGrasshopper_Fly(EnGrasshopper* this, PlayState* play) { } if (this->shouldTurn) { - this->baseFlyHeight = randPlusMinusPoint5Scaled(50.0f) + this->flyingHomePos.y; + this->baseFlyHeight = Rand_CenteredFloat(50.0f) + this->flyingHomePos.y; this->targetRot.y = Math_Atan2S(diffX, diffZ); this->timer = Rand_S16Offset(30, 30); } @@ -412,7 +412,7 @@ void EnGrasshopper_Fly(EnGrasshopper* this, PlayState* play) { this->targetRot.y = Math_Atan2S(diffX, diffZ); this->timer = Rand_S16Offset(30, 70); - this->baseFlyHeight = randPlusMinusPoint5Scaled(50.0f) + this->flyingHomePos.y; + this->baseFlyHeight = Rand_CenteredFloat(50.0f) + this->flyingHomePos.y; } } } @@ -441,7 +441,7 @@ void EnGrasshopper_RoamInCircles(EnGrasshopper* this, PlayState* play) { this->baseFlyHeight = Math_SinS(this->bobPhase) * 10.0f; if (this->timer == 0) { - this->baseFlyHeight = randPlusMinusPoint5Scaled(10.0f); + this->baseFlyHeight = Rand_CenteredFloat(10.0f); this->timer = Rand_S16Offset(30, 30); } @@ -583,8 +583,8 @@ void EnGrasshopper_ApproachPlayer(EnGrasshopper* this, PlayState* play) { if ((this->splashCount < 3) || !(play->gameplayFrames % 8)) { this->splashCount++; Math_Vec3f_Copy(&splashPos, &this->tailTipPos); - splashPos.x += randPlusMinusPoint5Scaled(20.0f); - splashPos.z += randPlusMinusPoint5Scaled(20.0f); + splashPos.x += Rand_CenteredFloat(20.0f); + splashPos.z += Rand_CenteredFloat(20.0f); EffectSsGSplash_Spawn(play, &splashPos, NULL, NULL, 0, (((s32)Rand_ZeroOne() * 100) + 400)); SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 50, NA_SE_EV_BOMB_DROP_WATER); } @@ -633,8 +633,8 @@ void EnGrasshopper_Attack(EnGrasshopper* this, PlayState* play) { if ((this->splashCount < 3) || !(play->gameplayFrames % 8)) { this->splashCount++; Math_Vec3f_Copy(&splashPos, &this->tailTipPos); - splashPos.x += randPlusMinusPoint5Scaled(20.0f); - splashPos.z += randPlusMinusPoint5Scaled(20.0f); + splashPos.x += Rand_CenteredFloat(20.0f); + splashPos.z += Rand_CenteredFloat(20.0f); EffectSsGSplash_Spawn(play, &splashPos, NULL, NULL, 0, ((s32)Rand_ZeroOne() * 100) + 400); SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 50, NA_SE_EV_BOMB_DROP_WATER); } @@ -796,8 +796,8 @@ void EnGrasshopper_Fall(EnGrasshopper* this, PlayState* play) { for (i = 0; i < 3; i++) { Math_Vec3f_Copy(&splashPos, &this->actor.world.pos); - splashPos.x += randPlusMinusPoint5Scaled((i * 5.0f) + 20.0f); - splashPos.z += randPlusMinusPoint5Scaled((i * 5.0f) + 20.0f); + splashPos.x += Rand_CenteredFloat((i * 5.0f) + 20.0f); + splashPos.z += Rand_CenteredFloat((i * 5.0f) + 20.0f); EffectSsGSplash_Spawn(play, &splashPos, NULL, NULL, 0, (((s32)Rand_ZeroOne() * 100) + 400)); } @@ -826,7 +826,7 @@ void EnGrasshopper_Fall(EnGrasshopper* this, PlayState* play) { for (i = 0; i < ARRAY_COUNT(sFireVelocityAndAccel); i++) { Math_Vec3f_Copy(&firePos, &this->actor.world.pos); - firePos.x += randPlusMinusPoint5Scaled(30.0f); + firePos.x += Rand_CenteredFloat(30.0f); if (!isUnderWater) { firePos.y = this->actor.floorHeight; } else if (WaterBox_GetSurface1(play, &play->colCtx, this->actor.world.pos.x, this->actor.world.pos.z, @@ -834,7 +834,7 @@ void EnGrasshopper_Fall(EnGrasshopper* this, PlayState* play) { firePos.y = waterSurface; } - firePos.z += randPlusMinusPoint5Scaled(30.0f); + firePos.z += Rand_CenteredFloat(30.0f); func_800B3030(play, &firePos, &sFireVelocityAndAccel[i], &sFireVelocityAndAccel[i], 100, 0, 2); } @@ -1062,10 +1062,10 @@ void EnGrasshopper_InitializeEffect(EnGrasshopper* this, Vec3f* pos) { effect->isEnabled = true; effect->pos = *pos; effect->timer = 10; - effect->velocity.x = randPlusMinusPoint5Scaled(20.0f); - effect->velocity.y = randPlusMinusPoint5Scaled(20.0f); - effect->velocity.z = randPlusMinusPoint5Scaled(20.0f); - effect->yaw = randPlusMinusPoint5Scaled(30000.0f); + effect->velocity.x = Rand_CenteredFloat(20.0f); + effect->velocity.y = Rand_CenteredFloat(20.0f); + effect->velocity.z = Rand_CenteredFloat(20.0f); + effect->yaw = Rand_CenteredFloat(30000.0f); return; } } 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 d8004bef8..6f6f2cad9 100644 --- a/src/overlays/actors/ovl_En_Gs/z_en_gs.c +++ b/src/overlays/actors/ovl_En_Gs/z_en_gs.c @@ -815,9 +815,9 @@ s32 func_809995A4(EnGs* this, PlayState* play) { Vec3f sp60; for (i = 0; i < 3; i++) { - sp60.x = randPlusMinusPoint5Scaled(15.0f); + sp60.x = Rand_CenteredFloat(15.0f); sp60.y = Rand_ZeroFloat(-1.0f); - sp60.z = randPlusMinusPoint5Scaled(15.0f); + sp60.z = Rand_CenteredFloat(15.0f); sp6C.x = this->actor.world.pos.x + (2.0f * sp60.x); sp6C.y = this->actor.world.pos.y + 7.0f; diff --git a/src/overlays/actors/ovl_En_Hakurock/z_en_hakurock.c b/src/overlays/actors/ovl_En_Hakurock/z_en_hakurock.c index bcc5882a2..f5885b3cf 100644 --- a/src/overlays/actors/ovl_En_Hakurock/z_en_hakurock.c +++ b/src/overlays/actors/ovl_En_Hakurock/z_en_hakurock.c @@ -265,7 +265,7 @@ void func_80B22500(EnHakurock* this, PlayState* play) { if (this->counter > 0) { this->counter--; if ((this->counter & 1) == 0) { - this->actor.world.pos.y = (sin_rad(this->counter * (M_PI / 20)) * 4.0f) + this->actor.floorHeight; + this->actor.world.pos.y = (Math_SinF(this->counter * (M_PI / 20)) * 4.0f) + this->actor.floorHeight; } else { this->actor.world.pos.y = this->actor.floorHeight; } diff --git a/src/overlays/actors/ovl_En_Hanabi/z_en_hanabi.c b/src/overlays/actors/ovl_En_Hanabi/z_en_hanabi.c index ce60a0187..4294a8320 100644 --- a/src/overlays/actors/ovl_En_Hanabi/z_en_hanabi.c +++ b/src/overlays/actors/ovl_En_Hanabi/z_en_hanabi.c @@ -107,9 +107,9 @@ void func_80B22E0C(EnHanabiStruct* arg0) { arg0->unk_20.y *= arg0->unk_14.x; arg0->unk_20.y -= 1.0f; - arg0->unk_20.x += randPlusMinusPoint5Scaled(0.8f); - arg0->unk_20.y += randPlusMinusPoint5Scaled(0.8f); - arg0->unk_20.z += randPlusMinusPoint5Scaled(0.8f); + arg0->unk_20.x += Rand_CenteredFloat(0.8f); + arg0->unk_20.y += Rand_CenteredFloat(0.8f); + arg0->unk_20.z += Rand_CenteredFloat(0.8f); if (arg0->unk_01 > 0) { arg0->unk_01--; @@ -286,10 +286,10 @@ void func_80B236C8(EnHanabi* this, PlayState* play) { } sp34.x += sp30 * Math_SinS(this->actor.home.rot.y); - sp34.y += randPlusMinusPoint5Scaled(300.0f); + sp34.y += Rand_CenteredFloat(300.0f); sp34.z += sp30 * Math_CosS(this->actor.home.rot.y); - if (this->actor.home.rot.x >= 0x259) { + if (this->actor.home.rot.x > 0x258) { sp28 = func_80B22C80(&sp34, this->unk_148, 2.0f); } else { sp28 = func_80B22C80(&sp34, this->unk_148, 1.0f); diff --git a/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c b/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c index e0f9301ce..8ad694a11 100644 --- a/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c +++ b/src/overlays/actors/ovl_En_Hidden_Nuts/z_en_hidden_nuts.c @@ -173,8 +173,8 @@ void func_80BDB2B8(EnHiddenNuts* this, PlayState* play) { Math_Vec3f_Copy(&sp74, &this->actor.world.pos); - sp74.x += randPlusMinusPoint5Scaled(15.0f); - sp74.z += randPlusMinusPoint5Scaled(15.0f); + sp74.x += Rand_CenteredFloat(15.0f); + sp74.z += Rand_CenteredFloat(15.0f); EffectSsDtBubble_SpawnCustomColor(play, &sp74, &sp94, &sp88, &sp84, &sp80, Rand_S16Offset(120, 90), 30, true); @@ -216,8 +216,8 @@ void func_80BDB59C(EnHiddenNuts* this, PlayState* play) { Math_Vec3f_Copy(&sp78, &this->actor.world.pos); - sp78.x += randPlusMinusPoint5Scaled(15.0f); - sp78.z += randPlusMinusPoint5Scaled(15.0f); + sp78.x += Rand_CenteredFloat(15.0f); + sp78.z += Rand_CenteredFloat(15.0f); EffectSsDtBubble_SpawnCustomColor(play, &sp78, &sp98, &sp8C, &sp88, &sp84, Rand_S16Offset(120, 90), 30, true); 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 7c01fa788..1a0105788 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 @@ -814,11 +814,11 @@ void func_80C215E4(PlayState* play, EnHintSkb* this, Vec3f* arg2) { s32 pad; sp5C.y = this->actor.floorHeight; - sp5C.x = (sin_rad(sp40) * 15.0f) + arg2->x; - sp5C.z = (cos_rad(sp40) * 15.0f) + arg2->z; + sp5C.x = (Math_SinF(sp40) * 15.0f) + arg2->x; + sp5C.z = (Math_CosF(sp40) * 15.0f) + arg2->z; - sp44.x = randPlusMinusPoint5Scaled(1.0f); - sp44.z = randPlusMinusPoint5Scaled(1.0f); + sp44.x = Rand_CenteredFloat(1.0f); + sp44.z = Rand_CenteredFloat(1.0f); sp50.y += (Rand_ZeroOne() - 0.5f) * 4.0f; diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c index d4a534ad1..a116c323a 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -487,7 +487,7 @@ void EnIk_VerticalAttack(EnIk* this, PlayState* play) { if ((this->skelAnime.curFrame > 13.0f) && (this->skelAnime.curFrame < 23.0f)) { this->colliderQuad.base.atFlags |= AT_ON; if (this->drawArmorFlags) { - this->actor.speed = sin_rad((this->skelAnime.curFrame - 13.0f) * (M_PI / 20)) * 10.0f; + this->actor.speed = Math_SinF((this->skelAnime.curFrame - 13.0f) * (M_PI / 20)) * 10.0f; } } else { this->colliderQuad.base.atFlags &= ~AT_ON; @@ -550,7 +550,7 @@ void EnIk_HorizontalDoubleAttack(EnIk* this, PlayState* play) { } else { phi_f2 = this->skelAnime.curFrame - 1.0f; } - this->actor.speed = sin_rad((M_PI / 8) * phi_f2) * 4.5f; + this->actor.speed = Math_SinF((M_PI / 8) * phi_f2) * 4.5f; } this->colliderQuad.base.atFlags |= AT_ON; } else { @@ -685,9 +685,9 @@ void EnIk_Die(EnIk* this, PlayState* play) { if (this->timer != 0) { this->timer--; for (i = 6 - (this->timer >> 2); i >= 0; i--) { - effectPos.x = randPlusMinusPoint5Scaled(80.0f) + this->actor.world.pos.x; - effectPos.z = randPlusMinusPoint5Scaled(80.0f) + this->actor.world.pos.z; - effectPos.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f); + effectPos.x = Rand_CenteredFloat(80.0f) + this->actor.world.pos.x; + effectPos.z = Rand_CenteredFloat(80.0f) + this->actor.world.pos.z; + effectPos.y = Rand_CenteredFloat(50.0f) + (this->actor.world.pos.y + 20.0f); func_800B3030(play, &effectPos, &sEffectVelAndAccel, &sEffectVelAndAccel, 100, 0, 2); } if (this->timer == 0) { @@ -845,9 +845,9 @@ void EnIk_UpdateArmor(EnIk* this, PlayState* play) { ikEffect->pos.y = this->actor.floorHeight; for (i = 0; i < 4; i++) { - effectPos.x = randPlusMinusPoint5Scaled(20.0f) + ikEffect->pos.x; + effectPos.x = Rand_CenteredFloat(20.0f) + ikEffect->pos.x; effectPos.y = Rand_ZeroFloat(20.0f) + ikEffect->pos.y; - effectPos.z = randPlusMinusPoint5Scaled(20.0f) + ikEffect->pos.z; + effectPos.z = Rand_CenteredFloat(20.0f) + ikEffect->pos.z; func_800B3030(play, &effectPos, &gZeroVec3f, &gZeroVec3f, 40, 7, 2); } diff --git a/src/overlays/actors/ovl_En_Jg/z_en_jg.c b/src/overlays/actors/ovl_En_Jg/z_en_jg.c index df217b86d..449acf212 100644 --- a/src/overlays/actors/ovl_En_Jg/z_en_jg.c +++ b/src/overlays/actors/ovl_En_Jg/z_en_jg.c @@ -242,7 +242,7 @@ s32 EnJg_ReachedPoint(EnJg* this, Path* path, s32 pointIndex) { diffZ = points[currentPoint + 1].z - points[currentPoint - 1].z; } - func_8017B7F8(&point, RAD_TO_BINANG(func_80086B30(diffX, diffZ)), &px, &pz, &d); + func_8017B7F8(&point, RAD_TO_BINANG(Math_FAtan2F(diffX, diffZ)), &px, &pz, &d); if (((this->actor.world.pos.x * px) + (pz * this->actor.world.pos.z) + d) > 0.0f) { reached = true; diff --git a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c index a1da5941b..d572c1331 100644 --- a/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c +++ b/src/overlays/actors/ovl_En_Kaizoku/z_en_kaizoku.c @@ -1461,7 +1461,7 @@ void func_80B88964(EnKaizoku* this, PlayState* play) { void func_80B88CD8(EnKaizoku* this) { EnKaizoku_ChangeAnim(this, EN_KAIZOKU_ANIM_3); - this->picto.actor.speed = randPlusMinusPoint5Scaled(12.0f); + this->picto.actor.speed = Rand_CenteredFloat(12.0f); this->skelAnime.playSpeed = 1.0f; this->picto.actor.world.rot.y = this->picto.actor.shape.rot.y; this->unk_2B2 = Rand_ZeroOne() * 30.0f + 30.0f; diff --git a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c index 930a0d7a3..fc8d3d201 100644 --- a/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c +++ b/src/overlays/actors/ovl_En_Kakasi/z_en_kakasi.c @@ -1006,11 +1006,11 @@ void EnKakasi_DiggingAway(EnKakasi* this, PlayState* play) { if ((play->gameplayFrames % 4) == 0) { Math_Vec3f_Copy(&tempWorldPos, &this->picto.actor.world.pos); tempWorldPos.y = this->picto.actor.floorHeight; - tempWorldPos.x += randPlusMinusPoint5Scaled(2.0f); - tempWorldPos.z += randPlusMinusPoint5Scaled(2.0f); + tempWorldPos.x += Rand_CenteredFloat(2.0f); + tempWorldPos.z += Rand_CenteredFloat(2.0f); if (play->sceneId == SCENE_8ITEMSHOP) { - EffectSsGSplash_Spawn(play, &tempWorldPos, 0, 0, 0, randPlusMinusPoint5Scaled(100.0f) + 200.0f); + EffectSsGSplash_Spawn(play, &tempWorldPos, 0, 0, 0, Rand_CenteredFloat(100.0f) + 200.0f); SoundSource_PlaySfxAtFixedWorldPos(play, &tempWorldPos, 0x32, NA_SE_EV_BOMB_DROP_WATER); } else { diff --git a/src/overlays/actors/ovl_En_Kame/z_en_kame.c b/src/overlays/actors/ovl_En_Kame/z_en_kame.c index d9d5ef7d8..820dd1f4e 100644 --- a/src/overlays/actors/ovl_En_Kame/z_en_kame.c +++ b/src/overlays/actors/ovl_En_Kame/z_en_kame.c @@ -606,9 +606,9 @@ void func_80AD8388(EnKame* this, PlayState* play) { this->actor.scale.y = this->actor.scale.x; this->actor.scale.z = this->actor.scale.x; } - sp34.x = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.x; + sp34.x = Rand_CenteredFloat(40.0f) + this->actor.world.pos.x; sp34.y = this->actor.world.pos.y + 15.0f; - sp34.z = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.z; + sp34.z = Rand_CenteredFloat(40.0f) + this->actor.world.pos.z; func_800B3030(play, &sp34, &gZeroVec3f, &gZeroVec3f, 100, 0, 2); } } diff --git a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c index e1d9df24c..ff7e4bb08 100644 --- a/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c +++ b/src/overlays/actors/ovl_En_Kanban/z_en_kanban.c @@ -135,8 +135,8 @@ void func_80954960(EnKanban* this) { ny = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.y); nz = COLPOLY_GET_NORMAL(this->actor.floorPoly->normal.z); - this->floorRot.x = -func_80086B30(-nz * ny, 1.0f); - this->floorRot.z = func_80086B30(-nx * ny, 1.0f); + this->floorRot.x = -Math_FAtan2F(-nz * ny, 1.0f); + this->floorRot.z = Math_FAtan2F(-nx * ny, 1.0f); } } @@ -350,7 +350,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { piece->actionState = ENKANBAN_AIR; piece->actor.gravity = -1.0f; piece->actor.world.rot.y = - BINANG_ROT180((s32)randPlusMinusPoint5Scaled(0x4000) + this->actor.yawTowardsPlayer); + BINANG_ROT180((s32)Rand_CenteredFloat(0x4000) + this->actor.yawTowardsPlayer); if ((hitItem->toucher.dmgFlags & 0x10) || (hitItem->toucher.dmgFlags & 8) || (hitItem->toucher.dmgFlags & 0x80000000)) { @@ -369,7 +369,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { piece->bounceZ = Rand_ZeroFloat(7.0f) + 3.0f; } - piece->spinVel.y = randPlusMinusPoint5Scaled(0x1800); + piece->spinVel.y = Rand_CenteredFloat(0x1800); if (Rand_ZeroOne() < 0.5f) { piece->direction = 1; @@ -526,7 +526,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { this->actor.velocity.y = 0.0f; } else { this->actor.velocity.y *= -0.3f; - this->actor.world.rot.y += (s16)randPlusMinusPoint5Scaled(0x4000); + this->actor.world.rot.y += (s16)(s32)Rand_CenteredFloat(0x4000); } bounced = true; } else { @@ -653,8 +653,8 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { dustCount = this->partCount * 0.5f; for (j = 0; j < dustCount + 3; j++) { - pos.x = randPlusMinusPoint5Scaled((this->partCount * 0.5f) + 20.0f) + this->actor.world.pos.x; - pos.z = randPlusMinusPoint5Scaled((this->partCount * 0.5f) + 20.0f) + this->actor.world.pos.z; + pos.x = Rand_CenteredFloat((this->partCount * 0.5f) + 20.0f) + this->actor.world.pos.x; + pos.z = Rand_CenteredFloat((this->partCount * 0.5f) + 20.0f) + this->actor.world.pos.z; func_800B0F18(play, &pos, &velocity, &accel, &primColor, &envColor, 100, 5, Rand_ZeroFloat(5.0f) + 14.0f); } @@ -750,7 +750,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { this->actionState = ENKANBAN_AIR; this->actor.gravity = -1.0f; - this->actor.world.rot.y = randPlusMinusPoint5Scaled(0x10000); + this->actor.world.rot.y = Rand_CenteredFloat(0x10000); if (this->partCount >= 4) { this->bounceX = Rand_ZeroFloat(10.0f) + 6.0f; this->bounceZ = Rand_ZeroFloat(10.0f) + 6.0f; @@ -763,7 +763,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { this->actor.speed = Rand_ZeroFloat(1.5f); } - this->spinVel.y = randPlusMinusPoint5Scaled(0x1800); + this->spinVel.y = Rand_CenteredFloat(0x1800); if (Rand_ZeroOne() < 0.5f) { this->direction = 1; @@ -808,7 +808,7 @@ void EnKanban_Update(Actor* thisx, PlayState* play) { this->actor.speed = 4.0f + bombStrength; } - this->spinVel.y = randPlusMinusPoint5Scaled(0x1800); + this->spinVel.y = Rand_CenteredFloat(0x1800); if (Rand_ZeroOne() < 0.5f) { this->direction = 1; diff --git a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c index 315bc1ffd..94590f5b6 100644 --- a/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c +++ b/src/overlays/actors/ovl_En_Minifrog/z_en_minifrog.c @@ -233,9 +233,9 @@ void EnMinifrog_SpawnDust(EnMinifrog* this, PlayState* play) { vec5.z = this->actor.world.pos.z - (5.0f * Math_CosS(yaw) * Math_CosS(pitch)); for (i = 0; i < 5; i++) { - vel.x = randPlusMinusPoint5Scaled(4.0f); - vel.y = randPlusMinusPoint5Scaled(4.0f); - vel.z = randPlusMinusPoint5Scaled(4.0f); + vel.x = Rand_CenteredFloat(4.0f); + vel.y = Rand_CenteredFloat(4.0f); + vel.z = Rand_CenteredFloat(4.0f); accel.x = -vel.x * 0.1f; accel.y = -vel.y * 0.1f; accel.z = -vel.z * 0.1f; diff --git a/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c b/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c index 3aac9ae11..68d08b223 100644 --- a/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c +++ b/src/overlays/actors/ovl_En_Minislime/z_en_minislime.c @@ -209,11 +209,11 @@ void EnMinislime_AddIceSmokeEffect(EnMinislime* this, PlayState* play) { Vec3f pos; Vec3f vel; - pos.x = (randPlusMinusPoint5Scaled(200.0f) * this->actor.scale.x) + this->actor.world.pos.x; + pos.x = (Rand_CenteredFloat(200.0f) * this->actor.scale.x) + this->actor.world.pos.x; pos.y = CLAMP_MIN(this->actor.world.pos.y, GBT_ROOM_5_MIN_Y + 30.0f); - pos.z = (randPlusMinusPoint5Scaled(200.0f) * this->actor.scale.z) + this->actor.world.pos.z; - vel.x = randPlusMinusPoint5Scaled(1.5f); - vel.z = randPlusMinusPoint5Scaled(1.5f); + pos.z = (Rand_CenteredFloat(200.0f) * this->actor.scale.z) + this->actor.world.pos.z; + vel.x = Rand_CenteredFloat(1.5f); + vel.z = Rand_CenteredFloat(1.5f); vel.y = 2.0f; EffectSsIceSmoke_Spawn(play, &pos, &vel, &gZeroVec3f, 500); } @@ -401,8 +401,8 @@ void EnMinislime_GrowAndShrink(EnMinislime* this, PlayState* play) { this->growShrinkTimer--; scaleFactor = (this->growShrinkTimer / 6) + 1.0f; this->actor.scale.z = this->actor.scale.x = - ((cos_rad(this->growShrinkTimer * (M_PI / 3)) * (scaleFactor * (2.0f / 30.0f))) + 1.5f) * 0.1f; - this->actor.scale.y = ((sin_rad(this->growShrinkTimer * (M_PI / 3)) * (scaleFactor * 0.05f)) + 0.75f) * 0.1f; + ((Math_CosF(this->growShrinkTimer * (M_PI / 3)) * (scaleFactor * (2.0f / 30.0f))) + 1.5f) * 0.1f; + this->actor.scale.y = ((Math_SinF(this->growShrinkTimer * (M_PI / 3)) * (scaleFactor * 0.05f)) + 0.75f) * 0.1f; if (this->actor.params == MINISLIME_SETUP_GEKKO_THROW) { EnMinislime_SetupMoveToGekko(this); } else if ((this->actor.xzDistToPlayer < 150.0f) && (this->growShrinkTimer < 38)) { @@ -424,11 +424,12 @@ void EnMinislime_Idle(EnMinislime* this, PlayState* play) { f32 speedXZ; this->idleTimer--; - speedXZ = sin_rad(this->idleTimer * (M_PI / 10)); + speedXZ = Math_SinF(this->idleTimer * (M_PI / 10)); this->actor.speed = speedXZ * 1.5f; this->actor.speed = CLAMP_MIN(this->actor.speed, 0.0f); Math_StepToF(&this->actor.scale.x, ((0.14f * speedXZ) + 1.5f) * 0.1f, 0.010000001f); - Math_StepToF(&this->actor.scale.y, ((cos_rad(this->idleTimer * (M_PI / 10)) * 0.07f) + 0.75f) * 0.1f, 0.010000001f); + Math_StepToF(&this->actor.scale.y, ((Math_CosF(this->idleTimer * (M_PI / 10)) * 0.07f) + 0.75f) * 0.1f, + 0.010000001f); Math_StepToF(&this->actor.scale.z, 0.3f - this->actor.scale.x, 0.010000001f); if (this->idleTimer == 0) { if (this->actor.xzDistToPlayer < 300.0f) { @@ -537,13 +538,13 @@ void EnMinislime_Knockback(EnMinislime* this, PlayState* play) { this->knockbackTimer--; Math_StepToF(&this->actor.speed, 0.0f, 1.0f); sqrtFrozenTimer = sqrtf(this->knockbackTimer); - this->actor.scale.x = ((cos_rad(this->knockbackTimer * (M_PI / 3)) * (0.05f * sqrtFrozenTimer)) + 1.0f) * 0.15f; + this->actor.scale.x = ((Math_CosF(this->knockbackTimer * (M_PI / 3)) * (0.05f * sqrtFrozenTimer)) + 1.0f) * 0.15f; this->actor.scale.z = this->actor.scale.x; if (this->knockbackTimer == 15) { this->collider.base.acFlags |= AC_ON; } - this->actor.scale.y = ((sin_rad(this->knockbackTimer * (M_PI / 3)) * (0.05f * sqrtFrozenTimer)) + 1.0f) * 0.075f; + this->actor.scale.y = ((Math_SinF(this->knockbackTimer * (M_PI / 3)) * (0.05f * sqrtFrozenTimer)) + 1.0f) * 0.075f; if (this->actor.params == MINISLIME_SETUP_GEKKO_THROW) { EnMinislime_SetupMoveToGekko(this); } else if (this->knockbackTimer == 0) { @@ -575,9 +576,10 @@ void EnMinislime_DefeatIdle(EnMinislime* this, PlayState* play) { f32 xzScale; this->idleTimer--; - xzScale = sin_rad(this->idleTimer * (M_PI / 10)); + xzScale = Math_SinF(this->idleTimer * (M_PI / 10)); Math_StepToF(&this->actor.scale.x, ((0.14f * xzScale) + 1.5f) * 0.1f, 0.010000001f); - Math_StepToF(&this->actor.scale.y, ((0.07f * cos_rad(this->idleTimer * (M_PI / 10))) + 0.75f) * 0.1f, 0.010000001f); + Math_StepToF(&this->actor.scale.y, ((0.07f * Math_CosF(this->idleTimer * (M_PI / 10))) + 0.75f) * 0.1f, + 0.010000001f); Math_StepToF(&this->actor.scale.z, 0.3f - this->actor.scale.x, 0.010000001f); if (this->idleTimer == 0) { this->idleTimer = 20; @@ -670,9 +672,9 @@ void EnMinislime_GekkoThrow(EnMinislime* this, PlayState* play) { f32 xzScale; this->throwTimer--; - xzScale = sin_rad(this->throwTimer * (M_PI / 5)); + xzScale = Math_SinF(this->throwTimer * (M_PI / 5)); this->actor.scale.x = ((0.3f * xzScale) + 1.5f) * 0.1f; - this->actor.scale.y = ((cos_rad(this->throwTimer * (M_PI / 5)) * 0.2f) + 0.75f) * 0.1f; + this->actor.scale.y = ((Math_CosF(this->throwTimer * (M_PI / 5)) * 0.2f) + 0.75f) * 0.1f; this->actor.scale.z = 0.3f - this->actor.scale.x; if (this->throwTimer == 0) { this->throwTimer = 10; diff --git a/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c b/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c index 9b4722fba..4e9af5578 100644 --- a/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c +++ b/src/overlays/actors/ovl_En_Mkk/z_en_mkk.c @@ -274,7 +274,7 @@ void func_80A4E2E8(EnMkk* this, PlayState* play) { Math_ScaledStepToS(&this->unk_150, this->actor.yawTowardsPlayer, 0x400); } this->actor.shape.rot.y = - (s32)(sin_rad(this->unk_14E * ((2 * M_PI) / 15)) * (614.4f * this->actor.speed)) + this->unk_150; + (s32)(Math_SinF(this->unk_14E * ((2 * M_PI) / 15)) * (614.4f * this->actor.speed)) + this->unk_150; func_800B9010(&this->actor, NA_SE_EN_KUROSUKE_MOVE - SFX_FLAG); if (sp20) { this->unk_14B &= ~2; @@ -379,16 +379,16 @@ void func_80A4E84C(EnMkk* this) { this->unk_154.y = this->actor.world.pos.y; this->unk_154.x = this->actor.world.pos.x - 10.0f * Math_SinS(this->actor.shape.rot.y + - (s32)(1228.8f * this->actor.speed * sin_rad(this->unk_14E * (M_PI / 5)))); + (s32)(1228.8f * this->actor.speed * Math_SinF(this->unk_14E * (M_PI / 5)))); this->unk_154.z = this->actor.world.pos.z - 10.0f * Math_CosS(this->actor.shape.rot.y + - (s32)(1228.8f * this->actor.speed * sin_rad(this->unk_14E * (M_PI / 5)))); + (s32)(1228.8f * this->actor.speed * Math_SinF(this->unk_14E * (M_PI / 5)))); this->unk_160.x = this->unk_154.x - 12.0f * Math_SinS(this->actor.shape.rot.y - - (s32)(1228.8f * this->actor.speed * sin_rad(this->unk_14E * (M_PI / 5)))); + (s32)(1228.8f * this->actor.speed * Math_SinF(this->unk_14E * (M_PI / 5)))); this->unk_160.z = this->unk_154.z - 12.0f * Math_CosS(this->actor.shape.rot.y - - (s32)(1228.8f * this->actor.speed * sin_rad(this->unk_14E * (M_PI / 5)))); + (s32)(1228.8f * this->actor.speed * Math_SinF(this->unk_14E * (M_PI / 5)))); } } diff --git a/src/overlays/actors/ovl_En_Nimotsu/z_en_nimotsu.c b/src/overlays/actors/ovl_En_Nimotsu/z_en_nimotsu.c index 41f872488..472196ae9 100644 --- a/src/overlays/actors/ovl_En_Nimotsu/z_en_nimotsu.c +++ b/src/overlays/actors/ovl_En_Nimotsu/z_en_nimotsu.c @@ -87,9 +87,9 @@ void EnNimotsu_Update(Actor* thisx, PlayState* play) { } if ((play->state.frames % 3) == 0) { - dustPosition.x = this->actor.world.pos.x + randPlusMinusPoint5Scaled(15.0f); + dustPosition.x = this->actor.world.pos.x + Rand_CenteredFloat(15.0f); dustPosition.y = this->actor.world.pos.y; - dustPosition.z = this->actor.world.pos.z + randPlusMinusPoint5Scaled(15.0f); + dustPosition.z = this->actor.world.pos.z + Rand_CenteredFloat(15.0f); Actor_SpawnFloorDustRing(play, &this->actor, &dustPosition, 20.0f, 0, 2.0f, 0, 0, 0); } } diff --git a/src/overlays/actors/ovl_En_Niw/z_en_niw.c b/src/overlays/actors/ovl_En_Niw/z_en_niw.c index 4982f7e75..0e96590d5 100644 --- a/src/overlays/actors/ovl_En_Niw/z_en_niw.c +++ b/src/overlays/actors/ovl_En_Niw/z_en_niw.c @@ -280,7 +280,7 @@ void EnNiw_SpawnAttackNiw(EnNiw* this, PlayState* play) { yView = play->view.at.y - play->view.eye.y; zView = play->view.at.z - play->view.eye.z; newNiwPos.x = ((Rand_ZeroOne() - 0.5f) * xView) + play->view.eye.x; - newNiwPos.y = randPlusMinusPoint5Scaled(0.3f) + (play->view.eye.y + 50.0f + (yView * 0.5f)); + newNiwPos.y = Rand_CenteredFloat(0.3f) + (play->view.eye.y + 50.0f + (yView * 0.5f)); newNiwPos.z = ((Rand_ZeroOne() - 0.5f) * zView) + play->view.eye.z; attackNiw = Actor_SpawnAsChild(&play->actorCtx, &this->actor, play, ACTOR_EN_ATTACK_NIW, newNiwPos.x, newNiwPos.y, newNiwPos.z, 0, 0, 0, ATTACK_NIW_REGULAR); @@ -340,8 +340,8 @@ void EnNiw_SetupIdle(EnNiw* this) { void EnNiw_Idle(EnNiw* this, PlayState* play) { f32 posX2; f32 posZ2; - f32 posX1 = randPlusMinusPoint5Scaled(100.0f); - f32 posZ1 = randPlusMinusPoint5Scaled(100.0f); + f32 posX1 = Rand_CenteredFloat(100.0f); + f32 posZ1 = Rand_CenteredFloat(100.0f); s16 nextAnimIndex; if (this->niwType == NIW_TYPE_REGULAR) { @@ -438,9 +438,9 @@ void EnNiw_Held(EnNiw* this, PlayState* play) { this->heldTimer = (s32)(Rand_ZeroFloat(1.0f) * 10.0f) + 10; } - this->actor.shape.rot.x = (s16)randPlusMinusPoint5Scaled(5000.0f) + this->actor.world.rot.x; - this->actor.shape.rot.y = (s16)randPlusMinusPoint5Scaled(5000.0f) + this->actor.world.rot.y; - this->actor.shape.rot.z = (s16)randPlusMinusPoint5Scaled(5000.0f) + this->actor.world.rot.z; + this->actor.shape.rot.x = (s16)(s32)Rand_CenteredFloat(0x1388) + this->actor.world.rot.x; + this->actor.shape.rot.y = (s16)(s32)Rand_CenteredFloat(0x1388) + this->actor.world.rot.y; + this->actor.shape.rot.z = (s16)(s32)Rand_CenteredFloat(0x1388) + this->actor.world.rot.z; if (this->niwType == NIW_TYPE_REGULAR) { if (Actor_HasNoParent(&this->actor, play)) { this->actor.shape.rot.z = 0; @@ -773,9 +773,9 @@ void EnNiw_Update(Actor* thisx, PlayState* play) { featherCount = 4; } for (i = 0; i < featherCount; i++) { - pos.x = randPlusMinusPoint5Scaled(10.0f) + this->actor.world.pos.x; - pos.y = randPlusMinusPoint5Scaled(10.0f) + (this->actor.world.pos.y + this->unk308); - pos.z = randPlusMinusPoint5Scaled(10.0f) + this->actor.world.pos.z; + pos.x = Rand_CenteredFloat(10.0f) + this->actor.world.pos.x; + pos.y = Rand_CenteredFloat(10.0f) + (this->actor.world.pos.y + this->unk308); + pos.z = Rand_CenteredFloat(10.0f) + this->actor.world.pos.z; featherScale = Rand_ZeroFloat(6.0f) + 6.0f; if ((this->unk29E == 2) && (this->unk308 != 0)) { @@ -785,9 +785,9 @@ void EnNiw_Update(Actor* thisx, PlayState* play) { if (this->unk308 == 0) { featherScale = Rand_ZeroFloat(2.0f) + 2.0f; } - vel.x = randPlusMinusPoint5Scaled(3.0f); + vel.x = Rand_CenteredFloat(3.0f); vel.y = Rand_ZeroFloat(2.0f) * 0.5f + 2.0f; - vel.z = randPlusMinusPoint5Scaled(3.0f); + vel.z = Rand_CenteredFloat(3.0f); accel.z = accel.x = 0.0f; accel.y = -0.15f; diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c index fc6ef71db..2f8914edc 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c @@ -110,9 +110,9 @@ void EnNwc_SpawnDust(EnNwc* this, PlayState* play) { vec5.z = this->actor.world.pos.z - 5.0f * Math_CosS(yaw) * Math_CosS(pitch); for (i = 0; i < 5; i++) { - vel.x = randPlusMinusPoint5Scaled(4.0f); - vel.y = randPlusMinusPoint5Scaled(4.0f); - vel.z = randPlusMinusPoint5Scaled(4.0f); + vel.x = Rand_CenteredFloat(4.0f); + vel.y = Rand_CenteredFloat(4.0f); + vel.z = Rand_CenteredFloat(4.0f); accel.x = -vel.x * 0.1f; accel.y = -vel.y * 0.1f; accel.z = -vel.z * 0.1f; @@ -182,7 +182,7 @@ void EnNwc_ChangeState(EnNwc* this, s16 newState) { case NWC_STATE_TURNING: this->stateTimer = Rand_ZeroFloat(20.0f) + 15.0f; this->actionFunc = EnNwc_Turn; - this->fallingRotY = (s16)(s32)randPlusMinusPoint5Scaled(0x10000); + this->fallingRotY = (s16)(s32)Rand_CenteredFloat(0x10000); break; case NWC_STATE_HOPPING_FORWARD: @@ -193,7 +193,7 @@ void EnNwc_ChangeState(EnNwc* this, s16 newState) { case NWC_STATE_FOLLOWING: this->actionFunc = EnNwc_Follow; this->transformTimer = 0; - this->randomRot = (s16)(s32)randPlusMinusPoint5Scaled(10000.0f); + this->randomRot = (s16)(s32)Rand_CenteredFloat(0x2710); break; case NWC_STATE_RUNNING: @@ -331,7 +331,7 @@ void EnNwc_Follow(EnNwc* this, PlayState* play) { } } else { // not too close: keep moving - this->randomRot += (s16)randPlusMinusPoint5Scaled(1500.0f); + this->randomRot += (s16)(s32)Rand_CenteredFloat(0x5DC); if (this->randomRot > 0x1388) { this->randomRot = 0x1388; } else if (this->randomRot < -0x1388) { diff --git a/src/overlays/actors/ovl_En_Osk/z_en_osk.c b/src/overlays/actors/ovl_En_Osk/z_en_osk.c index 7a40b38f5..c1ce34949 100644 --- a/src/overlays/actors/ovl_En_Osk/z_en_osk.c +++ b/src/overlays/actors/ovl_En_Osk/z_en_osk.c @@ -118,9 +118,9 @@ void func_80BF5E68(EnOsk* this, AnimationHeader** animations, s16 index, f32 pla void func_80BF5EBC(EnOsk* this, PlayState* play) { Vec3f sp2C; - sp2C.x = randPlusMinusPoint5Scaled(30.0f) + this->actor.world.pos.x; - sp2C.z = randPlusMinusPoint5Scaled(30.0f) + this->actor.world.pos.z; - sp2C.y = randPlusMinusPoint5Scaled(30.0f) + this->actor.world.pos.y; + sp2C.x = Rand_CenteredFloat(30.0f) + this->actor.world.pos.x; + sp2C.z = Rand_CenteredFloat(30.0f) + this->actor.world.pos.z; + sp2C.y = Rand_CenteredFloat(30.0f) + this->actor.world.pos.y; func_800B3030(play, &sp2C, &D_80BF7018, &D_80BF7018, 100, 0, 2); } diff --git a/src/overlays/actors/ovl_En_Owl/z_en_owl.c b/src/overlays/actors/ovl_En_Owl/z_en_owl.c index 52f611c0e..e5b4cabe3 100644 --- a/src/overlays/actors/ovl_En_Owl/z_en_owl.c +++ b/src/overlays/actors/ovl_En_Owl/z_en_owl.c @@ -271,7 +271,7 @@ void func_8095AB1C(EnOwl* this, PlayState* play) { } void func_8095AB4C(EnOwl* this) { - if (randPlusMinusPoint5Scaled(1.0f) < 0.0f) { + if (Rand_CenteredFloat(1.0f) < 0.0f) { this->actionFlags |= 0x20; } else { this->actionFlags &= ~0x20; diff --git a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c index 079e3027d..4c75fac65 100644 --- a/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c +++ b/src/overlays/actors/ovl_En_Pametfrog/z_en_pametfrog.c @@ -306,7 +306,7 @@ s32 func_8086A2CC(EnPametfrog* this, CollisionPoly* floorPoly) { return false; } - rotation = func_80086C48(arg0); + rotation = Math_FAcosF(arg0); if (rotation < 0.0001f) { return false; } @@ -523,7 +523,7 @@ void EnPametfrog_FallOffSnapper(EnPametfrog* this, PlayState* play) { this->timer--; } - sin = sin_rad(this->timer * (M_PI / 3)) * ((0.02f * (this->timer * (1.0f / 6.0f))) + 0.005f) + 1.0f; + sin = Math_SinF(this->timer * (M_PI / 3)) * ((0.02f * (this->timer * (1.0f / 6.0f))) + 0.005f) + 1.0f; EnPametfrog_ShakeCamera(this, play, 300.0f * sin, 100.0f * sin); if (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) { EnPametfrog_StopCutscene(this, play); @@ -966,9 +966,9 @@ void EnPametfrog_SetupSpawnFrog(EnPametfrog* this, PlayState* play) { Flags_SetClearTemp(play, play->roomCtx.curRoom.num); for (i = 0; i < 25; i++) { - vel.x = randPlusMinusPoint5Scaled(5.0f); + vel.x = Rand_CenteredFloat(5.0f); vel.y = Rand_ZeroFloat(3.0f) + 4.0f; - vel.z = randPlusMinusPoint5Scaled(5.0f); + vel.z = Rand_CenteredFloat(5.0f); EffectSsHahen_Spawn(play, &this->actor.world.pos, &vel, &sAccel, 0, Rand_S16Offset(12, 3), HAHEN_OBJECT_DEFAULT, 10, 0); } @@ -981,7 +981,7 @@ void EnPametfrog_SpawnFrog(EnPametfrog* this, PlayState* play) { f32 magShake; this->timer--; - magShake = (sin_rad(this->timer * (M_PI / 5)) * ((0.04f * (this->timer * 0.1f)) + 0.02f)) + 1.0f; + magShake = (Math_SinF(this->timer * (M_PI / 5)) * ((0.04f * (this->timer * 0.1f)) + 0.02f)) + 1.0f; EnPametfrog_ShakeCamera(this, play, 75.0f * magShake, 10.0f * magShake); if (this->timer == 0) { EnPametfrog_StopCutscene(this, play); diff --git a/src/overlays/actors/ovl_En_Part/z_en_part.c b/src/overlays/actors/ovl_En_Part/z_en_part.c index ac073358f..e56970e10 100644 --- a/src/overlays/actors/ovl_En_Part/z_en_part.c +++ b/src/overlays/actors/ovl_En_Part/z_en_part.c @@ -90,10 +90,10 @@ void func_808654C4(EnPart* this, PlayState* play) { break; case ENPART_TYPE_4: for (i = 7; i >= 0; i--) { - effectPos.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x; - effectPos.y = randPlusMinusPoint5Scaled(50.0f) + + effectPos.x = Rand_CenteredFloat(60.0f) + this->actor.world.pos.x; + effectPos.y = Rand_CenteredFloat(50.0f) + (this->actor.world.pos.y + (this->actor.shape.yOffset * this->actor.scale.y)); - effectPos.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z; + effectPos.z = Rand_CenteredFloat(60.0f) + this->actor.world.pos.z; effectVelocity.y = Rand_ZeroOne() + 1.0f; effectScale = Rand_S16Offset(80, 100); EffectSsDtBubble_SpawnColorProfile(play, &effectPos, &effectVelocity, &gZeroVec3f, effectScale, 25, diff --git a/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c b/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c index d4996d74f..645b7edf5 100644 --- a/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c +++ b/src/overlays/actors/ovl_En_Peehat/z_en_peehat.c @@ -257,9 +257,9 @@ void func_80897258(PlayState* play, EnPeehat* this, Vec3f* arg2, f32 arg3, f32 a sp44.x = (Math_SinS(sp42) * arg3) + arg2->x; sp44.z = (Math_CosS(sp42) * arg3) + arg2->z; - D_80899564.x = randPlusMinusPoint5Scaled(1.05f); - D_80899564.z = randPlusMinusPoint5Scaled(1.05f); - D_80899558.y = randPlusMinusPoint5Scaled(4.0f) + 8.0f; + D_80899564.x = Rand_CenteredFloat(1.05f); + D_80899564.z = Rand_CenteredFloat(1.05f); + D_80899558.y = Rand_CenteredFloat(4.0f) + 8.0f; EffectSsHahen_Spawn(play, &sp44, &D_80899558, &D_80899564, 0, (Rand_ZeroFloat(5.0f) + 12.0f) * arg4, HAHEN_OBJECT_DEFAULT, 10, NULL); @@ -506,7 +506,7 @@ void func_80897F44(EnPeehat* this, PlayState* play) { this->actor.world.pos.y -= 1.0f; } - cos = cos_rad(this->unk_2B8); + cos = Math_CosF(this->unk_2B8); this->actor.world.pos.y += cos * 1.4f; this->unk_2B8 += fabsf(cos * 0.18f) + 0.07f; this->unk_2B0--; @@ -514,7 +514,7 @@ void func_80897F44(EnPeehat* this, PlayState* play) { if (this->unk_2B0 <= 0) { this->actor.speed = Rand_ZeroFloat(0.5f) + 2.5f; this->unk_2B0 = Rand_ZeroFloat(10.0f) + 10.0f; - this->unk_2B6 = randPlusMinusPoint5Scaled(1000.0f); + this->unk_2B6 = Rand_CenteredFloat(1000.0f); } SkelAnime_Update(&this->skelAnime); @@ -549,10 +549,10 @@ void func_80898144(EnPeehat* this, PlayState* play) { } else { this->actor.world.pos.y += 1.0f; } - cos = cos_rad(this->unk_2B8); + cos = Math_CosF(this->unk_2B8); this->actor.world.pos.y += cos * 1.4f; - cos = cos_rad(this->unk_2B8); + cos = Math_CosF(this->unk_2B8); this->unk_2B8 += fabsf(cos * 0.18f) + 0.07f; step = Math_Vec3f_Yaw(&this->actor.world.pos, &this->actor.home.pos); diff --git a/src/overlays/actors/ovl_En_Pp/z_en_pp.c b/src/overlays/actors/ovl_En_Pp/z_en_pp.c index 6d16c1418..48c8cd5ab 100644 --- a/src/overlays/actors/ovl_En_Pp/z_en_pp.c +++ b/src/overlays/actors/ovl_En_Pp/z_en_pp.c @@ -397,17 +397,17 @@ void EnPp_SpawnDust(EnPp* this, PlayState* play) { Vec3f accel; for (i = 0; i < ARRAY_COUNT(this->backFootPos); i++) { - velocity.x = randPlusMinusPoint5Scaled(2.0f); + velocity.x = Rand_CenteredFloat(2.0f); velocity.y = Rand_ZeroFloat(2.0f) + 1.0f; - velocity.z = randPlusMinusPoint5Scaled(2.0f); + velocity.z = Rand_CenteredFloat(2.0f); accel.y = -0.1f; accel.z = 0.0f; accel.x = 0.0f; - pos.x = this->backFootPos[i].x + randPlusMinusPoint5Scaled(10.0f); + pos.x = this->backFootPos[i].x + Rand_CenteredFloat(10.0f); pos.y = Rand_ZeroFloat(3.0f) + this->actor.floorHeight + 1.0f; - pos.z = this->backFootPos[i].z + randPlusMinusPoint5Scaled(10.0f); + pos.z = this->backFootPos[i].z + Rand_CenteredFloat(10.0f); func_800B0EB0(play, &pos, &velocity, &accel, &sDustPrimColor, &sDustEnvColor, (Rand_ZeroFloat(50.0f) + 60.0f), 30, (Rand_ZeroFloat(5.0f) + 20.0f)); @@ -534,8 +534,8 @@ void EnPp_Idle(EnPp* this, PlayState* play) { if ((this->timer == 0) && (this->secondaryTimer == 0)) { this->secondaryTimer = Rand_ZeroFloat(20.0f) + 20.0f; Math_Vec3f_Copy(&posToLookAt, &this->actor.home.pos); - posToLookAt.x += randPlusMinusPoint5Scaled(50.0f); - posToLookAt.z += randPlusMinusPoint5Scaled(50.0f); + posToLookAt.x += Rand_CenteredFloat(50.0f); + posToLookAt.z += Rand_CenteredFloat(50.0f); this->targetRotY = Math_Vec3f_Yaw(&this->actor.world.pos, &posToLookAt); this->actor.speed = 0.0f; if (this->animIndex != EN_PP_ANIM_IDLE) { @@ -1046,8 +1046,8 @@ void EnPp_Dead(EnPp* this, PlayState* play) { if (this->actor.world.pos.y < waterSurface) { for (i = 0; i < 5; i++) { Math_Vec3f_Copy(&splashPos, &this->actor.world.pos); - splashPos.x += randPlusMinusPoint5Scaled(10 + (5 * i)); - splashPos.z += randPlusMinusPoint5Scaled(40 + (5 * i)); + splashPos.x += Rand_CenteredFloat(10 + (5 * i)); + splashPos.z += Rand_CenteredFloat(40 + (5 * i)); EffectSsGSplash_Spawn(play, &splashPos, NULL, NULL, 0, (Rand_ZeroOne() * 100.0f) + 400.0f); } @@ -1143,9 +1143,9 @@ void EnPp_Mask_Detach(EnPp* this, PlayState* play) { for (i = 0; i < ARRAY_COUNT(sMaskFireVelocityAndAccel); i++) { Math_Vec3f_Copy(&maskFirePos, &this->maskFlamesBasePos); - maskFirePos.x += randPlusMinusPoint5Scaled(20.0f); + maskFirePos.x += Rand_CenteredFloat(20.0f); maskFirePos.y = this->actor.floorHeight; - maskFirePos.z += randPlusMinusPoint5Scaled(20.0f); + maskFirePos.z += Rand_CenteredFloat(20.0f); func_800B3030(play, &maskFirePos, &sMaskFireVelocityAndAccel[i], &sMaskFireVelocityAndAccel[i], 70, 0, 2); } @@ -1173,7 +1173,7 @@ void EnPp_BodyPart_SetupMove(EnPp* this) { this->deadBodyPartRotationalVelocity.z = (this->deadBodyPartIndex * 0x2E) + 0xFF00; if (EN_PP_GET_TYPE(&this->actor) != EN_PP_TYPE_BODY_PART_BODY) { this->actor.speed = Rand_ZeroFloat(4.0f) + 4.0f; - this->actor.world.rot.y = ((s32)randPlusMinusPoint5Scaled(223.0f) + 0x1999) * this->deadBodyPartIndex; + this->actor.world.rot.y = ((s32)Rand_CenteredFloat(223.0f) + 0x1999) * this->deadBodyPartIndex; } this->action = EN_PP_ACTION_BODY_PART_MOVE; @@ -1213,8 +1213,8 @@ void EnPp_BodyPart_Move(EnPp* this, PlayState* play) { if (EN_PP_GET_TYPE(&this->actor) == EN_PP_TYPE_BODY_PART_BODY) { for (i = 0; i < 6; i++) { Math_Vec3f_Copy(&splashPos, &this->actor.world.pos); - splashPos.x += randPlusMinusPoint5Scaled(10 + (5 * i)); - splashPos.z += randPlusMinusPoint5Scaled(40 + (5 * i)); + splashPos.x += Rand_CenteredFloat(10 + (5 * i)); + splashPos.z += Rand_CenteredFloat(40 + (5 * i)); EffectSsGSplash_Spawn(play, &splashPos, NULL, NULL, 0, (Rand_ZeroOne() * 100.0f) + 400.0f); } } else { diff --git a/src/overlays/actors/ovl_En_Pr/z_en_pr.c b/src/overlays/actors/ovl_En_Pr/z_en_pr.c index 30fd0ee15..98762c907 100644 --- a/src/overlays/actors/ovl_En_Pr/z_en_pr.c +++ b/src/overlays/actors/ovl_En_Pr/z_en_pr.c @@ -319,7 +319,7 @@ void func_80A32A40(EnPr* this, PlayState* play) { WaterBox* sp30; Math_Vec3f_Copy(&sp34, &this->actor.world.pos); - sp34.y = randPlusMinusPoint5Scaled(50.0f) + this->actor.home.pos.y; + sp34.y = Rand_CenteredFloat(50.0f) + this->actor.home.pos.y; if (WaterBox_GetSurface1(play, &play->colCtx, this->actor.world.pos.x, this->actor.world.pos.z, &this->unk_2B4, &sp30)) { @@ -551,9 +551,9 @@ void EnPr_Update(Actor* thisx, PlayState* play) { Math_Vec3f_Copy(&sp40, &this->unk_2D4); this->unk_204 = 0; - sp40.x += randPlusMinusPoint5Scaled(20.0f); - sp40.y += randPlusMinusPoint5Scaled(5.0f); - sp40.z += randPlusMinusPoint5Scaled(20.0f); + sp40.x += Rand_CenteredFloat(20.0f); + sp40.y += Rand_CenteredFloat(5.0f); + sp40.z += Rand_CenteredFloat(20.0f); for (i = 0; i < (s32)Rand_ZeroFloat(5.0f) + 5; i++) { EffectSsBubble_Spawn(play, &sp40, 0.0f, 5.0f, 5.0f, Rand_ZeroFloat(0.03f) + 0.07f); diff --git a/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c b/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c index f4747b4c6..a4dd96d4b 100644 --- a/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c +++ b/src/overlays/actors/ovl_En_Pr2/z_en_pr2.c @@ -390,8 +390,8 @@ void func_80A748E8(EnPr2* this, PlayState* play) { if (this->unk_1DA == 1) { this->unk_1D8 = Rand_S16Offset(100, 100); Math_Vec3f_Copy(&sp3C, &this->unk_228); - sp3C.x += randPlusMinusPoint5Scaled(300.0f); - sp3C.z += randPlusMinusPoint5Scaled(300.0f); + sp3C.x += Rand_CenteredFloat(300.0f); + sp3C.z += Rand_CenteredFloat(300.0f); Math_Vec3f_Copy(&this->unk_21C, &sp3C); } } else { @@ -536,7 +536,7 @@ void func_80A751B4(EnPr2* this) { this->actor.shape.rot.z = this->actor.world.rot.z; this->unk_1D8 = 30; this->actor.speed = Rand_ZeroFloat(0.5f); - this->actor.world.rot.y = randPlusMinusPoint5Scaled(0x8000); + this->actor.world.rot.y = Rand_CenteredFloat(0x8000); } Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 10); this->unk_1D4 = 3; @@ -596,9 +596,9 @@ void func_80A75310(EnPr2* this, PlayState* play) { for (i = 0; i < 10; i++) { Math_Vec3f_Copy(&sp64, &this->actor.world.pos); - sp64.x += randPlusMinusPoint5Scaled(20.0f); - sp64.y += randPlusMinusPoint5Scaled(5.0f); - sp64.z += randPlusMinusPoint5Scaled(20.0f); + sp64.x += Rand_CenteredFloat(20.0f); + sp64.y += Rand_CenteredFloat(5.0f); + sp64.z += Rand_CenteredFloat(20.0f); frame = Rand_ZeroFloat(0.03f) + 0.07f; EffectSsBubble_Spawn(play, &sp64, 0.0f, 5.0f, 5.0f, frame); @@ -675,9 +675,9 @@ void EnPr2_Update(Actor* thisx, PlayState* play) { Math_Vec3f_Copy(&sp58, &this->unk_270); this->unk_1D6 = false; - sp58.x += randPlusMinusPoint5Scaled(20.0f); - sp58.y += randPlusMinusPoint5Scaled(5.0f); - sp58.z += randPlusMinusPoint5Scaled(20.0f); + sp58.x += Rand_CenteredFloat(20.0f); + sp58.y += Rand_CenteredFloat(5.0f); + sp58.z += Rand_CenteredFloat(20.0f); for (i = 0; i < 2; i++) { rand = Rand_ZeroFloat(0.03f) + 0.07f; diff --git a/src/overlays/actors/ovl_En_Prz/z_en_prz.c b/src/overlays/actors/ovl_En_Prz/z_en_prz.c index d71de14f7..ef37cf9f0 100644 --- a/src/overlays/actors/ovl_En_Prz/z_en_prz.c +++ b/src/overlays/actors/ovl_En_Prz/z_en_prz.c @@ -127,7 +127,7 @@ void EnPrz_Init(Actor* thisx, PlayState* play) { this->unk_220 = &this->actor; this->unk_1EC = 255; - this->unk_202 = randPlusMinusPoint5Scaled((this->unk_1E6 * 100.0f) + 1000.0f); + this->unk_202 = Rand_CenteredFloat((this->unk_1E6 * 100.0f) + 1000.0f); func_80A76388(this); } @@ -176,7 +176,7 @@ void func_80A76070(EnPrz* this, s16 arg1, PlayState* play) { temp_s0 = -100; } - if (fabsf(this->actor.world.rot.y - (f32)arg1) < (randPlusMinusPoint5Scaled(20.0f) + 100.0f)) { + if (fabsf(this->actor.world.rot.y - (f32)arg1) < (Rand_CenteredFloat(20.0f) + 100.0f)) { Math_ApproachZeroF(&this->unk_218, 0.5f, 20.0f); } else { Math_ApproachF(&this->unk_218, temp_s0, 0.5f, 5.0f); @@ -218,7 +218,7 @@ s32 func_80A762C0(EnPrz* this, PlayState* play) { } void func_80A76388(EnPrz* this) { - this->actor.speed = randPlusMinusPoint5Scaled(1.0f) + 4.0f; + this->actor.speed = Rand_CenteredFloat(1.0f) + 4.0f; func_80A75F18(this, 0); this->unk_1EA = 1; this->actionFunc = func_80A763E8; @@ -251,11 +251,11 @@ void func_80A763E8(EnPrz* this, PlayState* play) { if ((this->unk_1EE == 0) && (this->unk_1F2 == 0)) { s16 rot; - this->unk_214 = randPlusMinusPoint5Scaled(40.0f); + this->unk_214 = Rand_CenteredFloat(40.0f); rot = BINANG_ROT180(this->unk_220->world.rot.y); this->unk_1D8.x += Math_SinS(rot) * this->unk_214; - this->unk_1D8.y = randPlusMinusPoint5Scaled(40.0f) + (this->unk_220->world.pos.y + 40.0f); + this->unk_1D8.y = Rand_CenteredFloat(40.0f) + (this->unk_220->world.pos.y + 40.0f); rot = BINANG_ROT180(this->unk_220->world.rot.y); this->unk_1D8.z += Math_CosS(rot) * this->unk_214; @@ -302,7 +302,7 @@ void func_80A76634(EnPrz* this, PlayState* play) { } void func_80A76748(EnPrz* this) { - this->actor.speed = randPlusMinusPoint5Scaled(1.0f) + 3.0f; + this->actor.speed = Rand_CenteredFloat(1.0f) + 3.0f; this->unk_1EE = 0; this->unk_1EA = 3; this->skelAnime.playSpeed = 2.0f; @@ -317,7 +317,7 @@ void func_80A767A8(EnPrz* this, PlayState* play) { if (func_80A762C0(this, play)) { func_80A75F18(this, 0); - this->actor.speed = randPlusMinusPoint5Scaled(1.0f) + 4.0f; + this->actor.speed = Rand_CenteredFloat(1.0f) + 4.0f; func_80A76604(this, play); return; } @@ -353,8 +353,8 @@ void func_80A767A8(EnPrz* this, PlayState* play) { this->unk_1C8 = 1; } - this->unk_1D8.y = (player->actor.world.pos.y + D_80A771E0[GET_PLAYER_FORM]) + - randPlusMinusPoint5Scaled((2.0f * this->unk_1E6) + 1.0f); + this->unk_1D8.y = + (player->actor.world.pos.y + D_80A771E0[GET_PLAYER_FORM]) + Rand_CenteredFloat((2.0f * this->unk_1E6) + 1.0f); func_80A76070(this, Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk_1D8), play); } @@ -374,7 +374,7 @@ void func_80A76A1C(EnPrz* this) { this->unk_1FE = this->actor.world.rot.y; this->actor.speed = Rand_ZeroFloat(0.5f); - this->actor.world.rot.y = randPlusMinusPoint5Scaled(0x8000); + this->actor.world.rot.y = Rand_CenteredFloat(0x8000); Actor_SetColorFilter(&this->actor, COLORFILTER_COLORFLAG_RED, 255, COLORFILTER_BUFFLAG_OPA, 30); this->unk_1EE = 50; @@ -409,9 +409,9 @@ void func_80A76B14(EnPrz* this, PlayState* play) { for (i = 0; i < 10; i++) { Math_Vec3f_Copy(&sp6C, &this->actor.world.pos); - sp6C.x += randPlusMinusPoint5Scaled(20.0f); - sp6C.y += randPlusMinusPoint5Scaled(5.0f); - sp6C.z += randPlusMinusPoint5Scaled(20.0f); + sp6C.x += Rand_CenteredFloat(20.0f); + sp6C.y += Rand_CenteredFloat(5.0f); + sp6C.z += Rand_CenteredFloat(20.0f); EffectSsBubble_Spawn(play, &sp6C, 0.0f, 5.0f, 5.0f, Rand_ZeroFloat(0.03f) + 0.07f); } @@ -473,9 +473,9 @@ void EnPrz_Update(Actor* thisx, PlayState* play) { Math_Vec3f_Copy(&sp38, &this->unk_1CC); this->unk_1C8 = 0; - sp38.x += randPlusMinusPoint5Scaled(20.0f); - sp38.y += randPlusMinusPoint5Scaled(5.0f); - sp38.z += randPlusMinusPoint5Scaled(20.0f); + sp38.x += Rand_CenteredFloat(20.0f); + sp38.y += Rand_CenteredFloat(5.0f); + sp38.z += Rand_CenteredFloat(20.0f); EffectSsBubble_Spawn(play, &sp38, 0.0f, 5.0f, 5.0f, Rand_ZeroFloat(0.03f) + 0.07f); } diff --git a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c index ba7676655..d4e83a388 100644 --- a/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c +++ b/src/overlays/actors/ovl_En_Racedog/z_en_racedog.c @@ -275,8 +275,8 @@ s16 EnRacedog_GetYRotation(Path* path, s32 pointIndex, Vec3f* pos, f32* distSQ) if (path != NULL) { point = Lib_SegmentedToVirtual(path->points); point = &point[pointIndex]; - diffXRand = (randPlusMinusPoint5Scaled(100.0f) + point->x) - pos->x; - diffZRand = (randPlusMinusPoint5Scaled(100.0f) + point->z) - pos->z; + diffXRand = (Rand_CenteredFloat(100.0f) + point->x) - pos->x; + diffZRand = (Rand_CenteredFloat(100.0f) + point->z) - pos->z; diffX = point->x - pos->x; diffZ = point->z - pos->z; } else { @@ -474,9 +474,9 @@ void EnRacedog_UpdateSpeed(EnRacedog* this) { // The dog is past the very start, but is still less than 1/4th of the way through the race track. // This code will give the blue dog a higher base speed than any other dog (6.0 instead of 5.0). if (sDogInfo[this->index].color == DOG_COLOR_BLUE) { - this->targetSpeed = sBaseSpeeds[sDogInfo[this->index].color][0] + randPlusMinusPoint5Scaled(1.0f); + this->targetSpeed = sBaseSpeeds[sDogInfo[this->index].color][0] + Rand_CenteredFloat(1.0f); } else { - this->targetSpeed = 5.0f + randPlusMinusPoint5Scaled(1.0f); + this->targetSpeed = 5.0f + Rand_CenteredFloat(1.0f); } if (DOG_IS_IN_GOOD_CONDITION(this) && (this->index != sFirstPlaceIndex)) { @@ -485,9 +485,9 @@ void EnRacedog_UpdateSpeed(EnRacedog* this) { } else if (this->currentPoint < (quarterPathCount * 3)) { // The dog is between 1/4th and 3/4ths of the way through the race track. if (this->currentPoint < sDogInfo[this->index].pointToUseSecondBaseSpeed) { - this->targetSpeed = 5.0f + randPlusMinusPoint5Scaled(1.0f); + this->targetSpeed = 5.0f + Rand_CenteredFloat(1.0f); } else { - this->targetSpeed = sBaseSpeeds[sDogInfo[this->index].color][1] + randPlusMinusPoint5Scaled(1.0f); + this->targetSpeed = sBaseSpeeds[sDogInfo[this->index].color][1] + Rand_CenteredFloat(1.0f); if (DOG_IS_IN_GOOD_CONDITION(this) && (this->index != sFirstPlaceIndex)) { this->targetSpeed *= sDogInfo[this->index].goodConditionSpeedMultiplier; @@ -497,7 +497,7 @@ void EnRacedog_UpdateSpeed(EnRacedog* this) { // The dog is more than 3/4ths of the way through the race track. EnRacedog_CalculateFinalStretchTargetSpeed(this); } else { - this->targetSpeed = randPlusMinusPoint5Scaled(1.0f) + 5.0f; + this->targetSpeed = Rand_CenteredFloat(1.0f) + 5.0f; } } } @@ -657,9 +657,9 @@ void EnRacedog_SpawnFloorDustRing(EnRacedog* this, PlayState* play) { Vec3f pos; if (((this->index + curFrame) % mod) == 0) { - pos.x = this->actor.world.pos.x + randPlusMinusPoint5Scaled(15.0f); + pos.x = this->actor.world.pos.x + Rand_CenteredFloat(15.0f); pos.y = this->actor.world.pos.y; - pos.z = this->actor.world.pos.z + randPlusMinusPoint5Scaled(15.0f); + pos.z = this->actor.world.pos.z + Rand_CenteredFloat(15.0f); Actor_SpawnFloorDustRing(play, &this->actor, &pos, 10.0f, 0, 2.0f, 300, 0, true); } } diff --git a/src/overlays/actors/ovl_En_Raf/z_en_raf.c b/src/overlays/actors/ovl_En_Raf/z_en_raf.c index 055b308f2..1a4024f51 100644 --- a/src/overlays/actors/ovl_En_Raf/z_en_raf.c +++ b/src/overlays/actors/ovl_En_Raf/z_en_raf.c @@ -895,9 +895,9 @@ void EnRaf_InitializeEffect(EnRaf* this, Vec3f* pos, Vec3f* velocity, Vec3f* acc effect->accel = *accel; effect->scale = scale; effect->timer = timer; - effect->rotation.x = randPlusMinusPoint5Scaled(30000.0f); - effect->rotation.y = randPlusMinusPoint5Scaled(30000.0f); - effect->rotation.z = randPlusMinusPoint5Scaled(30000.0f); + effect->rotation.x = Rand_CenteredFloat(30000.0f); + effect->rotation.y = Rand_CenteredFloat(30000.0f); + effect->rotation.z = Rand_CenteredFloat(30000.0f); return; } } diff --git a/src/overlays/actors/ovl_En_Rat/z_en_rat.c b/src/overlays/actors/ovl_En_Rat/z_en_rat.c index 7d585c234..e08cb5574 100644 --- a/src/overlays/actors/ovl_En_Rat/z_en_rat.c +++ b/src/overlays/actors/ovl_En_Rat/z_en_rat.c @@ -230,7 +230,7 @@ s32 EnRat_UpdateFloorPoly(EnRat* this, CollisionPoly* floorPoly, PlayState* play return false; } - angle = func_80086C48(normDotUp); + angle = Math_FAcosF(normDotUp); if (angle < 0.001f) { return false; } @@ -324,9 +324,9 @@ void EnRat_ChooseDirection(EnRat* this) { angle -= 0x8000; } - angle += (s16)randPlusMinusPoint5Scaled(0x800); + angle += (s16)(s32)Rand_CenteredFloat(0x800); } else { - angle = (Rand_ZeroOne() < 0.1f) ? (s16)randPlusMinusPoint5Scaled(0x800) : 0; + angle = (Rand_ZeroOne() < 0.1f) ? (s16)(s32)Rand_CenteredFloat(0x800) : 0; } } @@ -633,9 +633,9 @@ void EnRat_UpdateSparkOffsets(EnRat* this) { for (i = 0; i < ARRAY_COUNT(this->sparkOffsets); i++) { ptr = &this->sparkOffsets[i]; - ptr->x = randPlusMinusPoint5Scaled(6.0f); - ptr->y = randPlusMinusPoint5Scaled(6.0f); - ptr->z = randPlusMinusPoint5Scaled(6.0f); + ptr->x = Rand_CenteredFloat(6.0f); + ptr->y = Rand_CenteredFloat(6.0f); + ptr->z = Rand_CenteredFloat(6.0f); } } @@ -937,14 +937,14 @@ void EnRat_PostLimbDraw(PlayState* play2, s32 limbIndex, Gfx** dList, Vec3s* rot gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gBombCapDL); if (EN_RAT_GET_TYPE(&this->actor) == EN_RAT_TYPE_DUNGEON) { - redModifier = fabsf(cos_rad(this->timer * (M_PI / 30.f))); + redModifier = fabsf(Math_CosF(this->timer * (M_PI / 30.f))); } else { if (this->timer >= 120) { - redModifier = fabsf(cos_rad((this->timer % 30) * (M_PI / 30.0f))); + redModifier = fabsf(Math_CosF((this->timer % 30) * (M_PI / 30.0f))); } else if (this->timer >= 30) { - redModifier = fabsf(cos_rad((this->timer % 6) * (M_PI / 6.0f))); + redModifier = fabsf(Math_CosF((this->timer % 6) * (M_PI / 6.0f))); } else { - redModifier = fabsf(cos_rad((this->timer % 3) * (M_PI / 3.0f))); + redModifier = fabsf(Math_CosF((this->timer % 3) * (M_PI / 3.0f))); } } diff --git a/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c b/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c index 351b2f146..dfff2735c 100644 --- a/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c +++ b/src/overlays/actors/ovl_En_Ruppecrow/z_en_ruppecrow.c @@ -161,7 +161,7 @@ s32 EnRuppecrow_ReachedPointClockwise(EnRuppecrow* this, Path* path, s32 pointIn diffZ = points[currentPoint + 1].z - points[currentPoint - 1].z; } - func_8017B7F8(&point, RAD_TO_BINANG(func_80086B30(diffX, diffZ)), &px, &pz, &d); + func_8017B7F8(&point, RAD_TO_BINANG(Math_FAtan2F(diffX, diffZ)), &px, &pz, &d); if (((this->actor.world.pos.x * px) + (pz * this->actor.world.pos.z) + d) > 0.0f) { reached = true; } @@ -194,7 +194,7 @@ s32 EnRuppecrow_ReachedPointCounterClockwise(EnRuppecrow* this, Path* path, s32 diffZ = points[currentPoint - 1].z - points[currentPoint + 1].z; } - func_8017B7F8(&point, RAD_TO_BINANG(func_80086B30(diffX, diffZ)), &px, &pz, &d); + func_8017B7F8(&point, RAD_TO_BINANG(Math_FAtan2F(diffX, diffZ)), &px, &pz, &d); if (((this->actor.world.pos.x * px) + (pz * this->actor.world.pos.z) + d) > 0.0f) { reached = true; } diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.c b/src/overlays/actors/ovl_En_Sb/z_en_sb.c index b34ee8c64..17ad656a4 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.c +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.c @@ -417,9 +417,9 @@ void EnSb_Draw(Actor* thisx, PlayState* play) { fireDecr = this->fireCount - 1; if (!(fireDecr & 1)) { offset = &sFlamePosOffsets[fireDecr & 3]; - flamePos.x = randPlusMinusPoint5Scaled(5.0f) + (this->actor.world.pos.x + offset->x); - flamePos.y = randPlusMinusPoint5Scaled(5.0f) + (this->actor.world.pos.y + offset->y); - flamePos.z = randPlusMinusPoint5Scaled(5.0f) + (this->actor.world.pos.z + offset->z); + flamePos.x = Rand_CenteredFloat(5.0f) + (this->actor.world.pos.x + offset->x); + flamePos.y = Rand_CenteredFloat(5.0f) + (this->actor.world.pos.y + offset->y); + flamePos.z = Rand_CenteredFloat(5.0f) + (this->actor.world.pos.z + offset->z); EffectSsEnFire_SpawnVec3f(play, &this->actor, &flamePos, 100, 0, 0, -1); } } diff --git a/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c b/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c index 9779de80c..448683376 100644 --- a/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c +++ b/src/overlays/actors/ovl_En_Scopecrow/z_en_scopecrow.c @@ -192,7 +192,7 @@ s32 func_80BCD334(EnScopecrow* this, Path* path, s32 pointIndex) { phi_fa1 = points[index + 1].z - points[index - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_fa0, phi_fa1)), &sp3C.z, &sp3C.y, &sp3C.x); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_fa0, phi_fa1)), &sp3C.z, &sp3C.y, &sp3C.x); if (((this->actor.world.pos.x * sp3C.z) + (sp3C.y * this->actor.world.pos.z) + sp3C.x) > 0.0f) { ret = true; 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 08b4b2817..cf634321e 100644 --- a/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c +++ b/src/overlays/actors/ovl_En_Scopenuts/z_en_scopenuts.c @@ -654,7 +654,7 @@ s32 func_80BCC2AC(EnScopenuts* this, Path* path, s32 arg2_) { phi_f14 = sp5C[arg2 + 1].z - sp5C[arg2 - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { sp50 = true; 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 e22791c82..73edc4267 100644 --- a/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c +++ b/src/overlays/actors/ovl_En_Sellnuts/z_en_sellnuts.c @@ -916,7 +916,7 @@ s32 func_80ADCE4C(EnSellnuts* this, Path* path, s32 arg2) { pointY = points[var + 1].z - points[var - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(pointX, pointY)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(pointX, pointY)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { ret = true; } diff --git a/src/overlays/actors/ovl_En_Skb/z_en_skb.c b/src/overlays/actors/ovl_En_Skb/z_en_skb.c index e67808d38..a8167009c 100644 --- a/src/overlays/actors/ovl_En_Skb/z_en_skb.c +++ b/src/overlays/actors/ovl_En_Skb/z_en_skb.c @@ -165,10 +165,10 @@ void func_809947B0(PlayState* play, EnSkb* this, Vec3f* inPos) { s32 pad; pos.y = this->actor.floorHeight; - pos.x = (sin_rad(sp40) * 15.0f) + inPos->x; - pos.z = (cos_rad(sp40) * 15.0f) + inPos->z; - accel.x = randPlusMinusPoint5Scaled(1.0f); - accel.z = randPlusMinusPoint5Scaled(1.0f); + pos.x = (Math_SinF(sp40) * 15.0f) + inPos->x; + pos.z = (Math_CosF(sp40) * 15.0f) + inPos->z; + accel.x = Rand_CenteredFloat(1.0f); + accel.z = Rand_CenteredFloat(1.0f); velocity.y += (Rand_ZeroOne() - 0.5f) * 4.0f; EffectSsHahen_Spawn(play, &pos, &velocity, &accel, 0, ((Rand_ZeroOne() * 5.0f) + 12.0f) * 0.8f, HAHEN_OBJECT_DEFAULT, 10, NULL); @@ -579,7 +579,7 @@ void func_80995A8C(EnSkb* this, PlayState* play) { } if ((this->unk_3D8 != 0) && ((play->gameplayFrames % 16) == 0)) { - this->unk_3DA = randPlusMinusPoint5Scaled(50000.0f); + this->unk_3DA = Rand_CenteredFloat(50000.0f); } Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer + this->unk_3DA, 1, 0x2EE, 0); diff --git a/src/overlays/actors/ovl_En_Slime/z_en_slime.c b/src/overlays/actors/ovl_En_Slime/z_en_slime.c index 5c962978e..5e71d1a54 100644 --- a/src/overlays/actors/ovl_En_Slime/z_en_slime.c +++ b/src/overlays/actors/ovl_En_Slime/z_en_slime.c @@ -328,15 +328,15 @@ void EnSlime_Idle(EnSlime* this, PlayState* play) { timerFactor = sqrtf(this->timer) * 0.2f; EnSlime_Blink(this); - scale = ((sin_rad(this->timer * (2.0f * M_PI / 5.0f)) * (0.13f * timerFactor)) + 1.0f) * 0.01f; + scale = ((Math_SinF(this->timer * (2.0f * M_PI / 5.0f)) * (0.13f * timerFactor)) + 1.0f) * 0.01f; this->actor.scale.x = scale; this->actor.scale.z = scale; if (this->timer < 24) { - this->actor.scale.y = ((cos_rad(this->timer * (2.0f * M_PI / 5.0f)) * (0.05f * timerFactor)) + 1.0f) * 0.01f; + this->actor.scale.y = ((Math_CosF(this->timer * (2.0f * M_PI / 5.0f)) * (0.05f * timerFactor)) + 1.0f) * 0.01f; } - this->actor.shape.rot.x = randPlusMinusPoint5Scaled(0x200) * timerFactor; - this->actor.shape.rot.z = randPlusMinusPoint5Scaled(0x200) * timerFactor; + this->actor.shape.rot.x = Rand_CenteredFloat(0x200) * timerFactor; + this->actor.shape.rot.z = Rand_CenteredFloat(0x200) * timerFactor; // If player is not wearing the stone mask, is within 280 units of the chuchu, // and the chuchu is facing the player, initialize chase/attack cycle. @@ -361,7 +361,7 @@ void EnSlime_SetupMoveInDirection(EnSlime* this) { if (Actor_WorldDistXZToPoint(&this->actor, &this->actor.home.pos) > 120.0f) { this->idleRotY = Actor_WorldYawTowardPoint(&this->actor, &this->actor.home.pos); } else if (Rand_ZeroOne() < 0.7f) { - this->idleRotY = (s32)randPlusMinusPoint5Scaled(0x4000) + this->actor.shape.rot.y; + this->idleRotY = (s32)Rand_CenteredFloat(0x4000) + this->actor.shape.rot.y; } this->actor.world.rot.y = this->actor.shape.rot.y; this->actionFunc = EnSlime_MoveInDirection; @@ -390,7 +390,7 @@ void EnSlime_MoveInDirection(EnSlime* this, PlayState* play) { } // Update actor scale, xz speed, and rotation to provide amorphous effect - sinFactor = fabsf(sin_rad(this->timer * (M_PI / 24))); + sinFactor = fabsf(Math_SinF(this->timer * (M_PI / 24))); Math_StepToF(&this->actor.scale.z, ((0.15f * sinFactor) + 1.0f) * 0.01f, 0.0002f); Math_StepToF(&this->actor.scale.x, (1.0f - (0.2f * sinFactor)) * 0.01f, 0.0002f); Math_StepToF(&this->actor.scale.y, (1.0f - (0.1f * sinFactor)) * 0.01f, 0.0002f); @@ -443,7 +443,7 @@ void EnSlime_MoveToHome(EnSlime* this, PlayState* play) { this->idleRotY = Actor_WorldYawTowardPoint(&this->actor, &this->actor.home.pos); } - timerFactor = fabsf(sin_rad(this->timer * (M_PI / 24))); + timerFactor = fabsf(Math_SinF(this->timer * (M_PI / 24))); Math_StepToF(&this->actor.scale.z, ((0.15f * timerFactor) + 1.0f) * 0.01f, 0.0002f); Math_StepToF(&this->actor.scale.x, (1.0f - (0.2f * timerFactor)) * 0.01f, 0.0002f); Math_StepToF(&this->actor.scale.y, (1.0f - (0.1f * timerFactor)) * 0.01f, 0.0002f); @@ -567,14 +567,14 @@ void EnSlime_Land(EnSlime* this, PlayState* play) { this->timer--; scaleY = ((this->timer / 5) + 1) * 1.6f; rotXZ = sqrtf(this->timer) * 0.2f; - scaleXZ = ((cos_rad(this->timer * (2.0f * M_PI / 5.0f)) * (0.05f * scaleY)) + 1.0f) * 0.01f; + scaleXZ = ((Math_CosF(this->timer * (2.0f * M_PI / 5.0f)) * (0.05f * scaleY)) + 1.0f) * 0.01f; this->actor.scale.x = scaleXZ; this->actor.scale.z = scaleXZ; if (this->timer < 15) { - this->actor.scale.y = (1.0f - (sin_rad(this->timer * (2.0f * M_PI / 5.0f)) * (0.04f * scaleY))) * 0.01f; + this->actor.scale.y = (1.0f - (Math_SinF(this->timer * (2.0f * M_PI / 5.0f)) * (0.04f * scaleY))) * 0.01f; } - this->actor.shape.rot.x = randPlusMinusPoint5Scaled(0x200) * rotXZ; - this->actor.shape.rot.z = randPlusMinusPoint5Scaled(0x200) * rotXZ; + this->actor.shape.rot.x = Rand_CenteredFloat(0x200) * rotXZ; + this->actor.shape.rot.z = Rand_CenteredFloat(0x200) * rotXZ; if (Actor_WorldDistXZToPoint(&this->actor, &this->actor.home.pos) > this->distLimit) { EnSlime_SetupMoveToHome(this); @@ -623,16 +623,16 @@ void EnSlime_ReactToBluntHit(EnSlime* this, PlayState* play) { Math_StepToF(&this->actor.speed, 0.0f, 1.0f); timerFactor = sqrtf(this->timer); if (this->timer < 30) { - scale = ((cos_rad(this->timer * (2.0f * M_PI / 5.0f)) * (0.08f * timerFactor)) + 1.0f) * 0.01f; + scale = ((Math_CosF(this->timer * (2.0f * M_PI / 5.0f)) * (0.08f * timerFactor)) + 1.0f) * 0.01f; this->actor.scale.x = scale; this->actor.scale.z = scale; } if (this->timer == 15) { this->collider.base.acFlags |= AC_ON; } - this->actor.scale.y = ((sin_rad((f32)this->timer * (2.0f * M_PI / 5.0f)) * (0.07f * timerFactor)) + 1.0f) * 0.01f; - this->actor.shape.rot.x = randPlusMinusPoint5Scaled(0x200) * timerFactor; - this->actor.shape.rot.z = randPlusMinusPoint5Scaled(0x200) * timerFactor; + this->actor.scale.y = ((Math_SinF((f32)this->timer * (2.0f * M_PI / 5.0f)) * (0.07f * timerFactor)) + 1.0f) * 0.01f; + this->actor.shape.rot.x = Rand_CenteredFloat(0x200) * timerFactor; + this->actor.shape.rot.z = Rand_CenteredFloat(0x200) * timerFactor; if (this->timer == 0) { if (Actor_WorldDistXZToPoint(&this->actor, &this->actor.home.pos) > this->distLimit) { @@ -680,9 +680,9 @@ void EnSlime_SetupDamaged(EnSlime* this, PlayState* play, s32 arg2) { EffectSsGSplash_Spawn(play, &effectPos, NULL, NULL, 1, 550); for (i = 0; i < 10; i++) { - effectPos.x = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.x + ySin; - effectPos.y = randPlusMinusPoint5Scaled(10.0f) + this->actor.world.pos.y + 40.0f; - effectPos.z = randPlusMinusPoint5Scaled(40.0f) + this->actor.world.pos.z + yCos; + effectPos.x = Rand_CenteredFloat(40.0f) + this->actor.world.pos.x + ySin; + effectPos.y = Rand_CenteredFloat(10.0f) + this->actor.world.pos.y + 40.0f; + effectPos.z = Rand_CenteredFloat(40.0f) + this->actor.world.pos.z + yCos; effectVelocity.x = ((Rand_ZeroOne() * 3.5f) + 1.0f) * -Math_SinS(this->actor.world.rot.y); effectVelocity.z = ((Rand_ZeroOne() * 3.5f) + 1.0f) * -Math_CosS(this->actor.world.rot.y); @@ -1184,9 +1184,9 @@ void EnSlime_Draw(Actor* thisx, PlayState* play) { } if (this->actionFunc == EnSlime_Damaged) { - wobbleScale.x = 1.0f - (sin_rad((f32)this->timer * (M_PI / 2.0f)) * 0.3f); - wobbleScale.y = (sin_rad((f32)this->timer * (M_PI / 2.0f)) * 0.3f) + 1.0f; - wobbleScale.z = 1.0f - (cos_rad((f32)this->timer * (M_PI / 2.0f)) * 0.3f); + wobbleScale.x = 1.0f - (Math_SinF((f32)this->timer * (M_PI / 2.0f)) * 0.3f); + wobbleScale.y = (Math_SinF((f32)this->timer * (M_PI / 2.0f)) * 0.3f) + 1.0f; + wobbleScale.z = 1.0f - (Math_CosF((f32)this->timer * (M_PI / 2.0f)) * 0.3f); Matrix_RotateXFApply(this->wobbleRot.x); Matrix_RotateZF(this->wobbleRot.z, MTXMODE_APPLY); diff --git a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c index ed3235345..e22a5a73b 100644 --- a/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c +++ b/src/overlays/actors/ovl_En_Snowman/z_en_snowman.c @@ -475,18 +475,18 @@ void EnSnowman_ReadySnowball(EnSnowman* this, PlayState* play) { Math_ApproachS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 0xA, 0x1000); if ((EN_SNOWMAN_GET_TYPE(&this->actor) != EN_SNOWMAN_TYPE_LARGE) && this->isHoldingSnowball && ((play->gameplayFrames % 2) != 0)) { - pos.x = randPlusMinusPoint5Scaled(10.0f) + this->snowballPos.x; - pos.y = randPlusMinusPoint5Scaled(10.0f) + this->snowballPos.y; - pos.z = randPlusMinusPoint5Scaled(10.0f) + this->snowballPos.z; + pos.x = Rand_CenteredFloat(10.0f) + this->snowballPos.x; + pos.y = Rand_CenteredFloat(10.0f) + this->snowballPos.y; + pos.z = Rand_CenteredFloat(10.0f) + this->snowballPos.z; func_800B0DE0(play, &pos, &sDustVelocity, &gZeroVec3f, &sDustPrimColor, &sDustEnvColor, 500, 30); } else if (EN_SNOWMAN_GET_TYPE(&this->actor) == EN_SNOWMAN_TYPE_LARGE) { if ((this->skelAnime.curFrame > 3.0f) && (this->skelAnime.curFrame < 14.0f) && ((play->gameplayFrames % 2) != 0)) { - pos.x = (this->actor.world.pos.x + (70.0f * Math_SinS(this->actor.shape.rot.y))) + - randPlusMinusPoint5Scaled(40.0f); - pos.y = this->actor.world.pos.y + randPlusMinusPoint5Scaled(20.0f); - pos.z = (this->actor.world.pos.z + (70.0f * Math_CosS(this->actor.shape.rot.y))) + - randPlusMinusPoint5Scaled(40.0f); + pos.x = + (this->actor.world.pos.x + (70.0f * Math_SinS(this->actor.shape.rot.y))) + Rand_CenteredFloat(40.0f); + pos.y = this->actor.world.pos.y + Rand_CenteredFloat(20.0f); + pos.z = + (this->actor.world.pos.z + (70.0f * Math_CosS(this->actor.shape.rot.y))) + Rand_CenteredFloat(40.0f); func_800B0DE0(play, &pos, &sDustVelocity, &gZeroVec3f, &sDustPrimColor, &sDustEnvColor, 1000, 150); } } @@ -619,8 +619,8 @@ void EnSnowman_Melt(EnSnowman* this, PlayState* play) { this->work.timer--; if ((this->work.timer >= 38) && (!(this->work.timer & 1))) { smokeVelocity.y = (this->work.timer - 38) * (1.0f / 12.0f); - smokeVelocity.x = randPlusMinusPoint5Scaled(1.5f) * smokeVelocity.y; - smokeVelocity.z = randPlusMinusPoint5Scaled(1.5f) * smokeVelocity.y; + smokeVelocity.x = Rand_CenteredFloat(1.5f) * smokeVelocity.y; + smokeVelocity.z = Rand_CenteredFloat(1.5f) * smokeVelocity.y; smokeVelocity.y += 0.8f; smokePos.x = ((smokeVelocity.x >= 0.0f ? 1.0f : -1.0f) * Rand_ZeroFloat(20.0f) * this->eenoScale) + this->actor.world.pos.x; 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 e86d1e1bd..12d8d22a8 100644 --- a/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c +++ b/src/overlays/actors/ovl_En_Suttari/z_en_suttari.c @@ -536,9 +536,9 @@ void func_80BAB374(EnSuttari* this, PlayState* play) { Vec3f sp38; if ((curFrame % 3) == 0) { - sp38.x = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.x; + sp38.x = Rand_CenteredFloat(15.0f) + this->actor.world.pos.x; sp38.y = this->actor.world.pos.y; - sp38.z = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.z; + sp38.z = Rand_CenteredFloat(15.0f) + this->actor.world.pos.z; Actor_SpawnFloorDustRing(play, &this->actor, &sp38, 10.0f, 0, 2.0f, 0, 0, 0); } } @@ -623,7 +623,7 @@ s32 func_80BAB758(EnSuttari* this, Path* path, s32 arg2) { sp54 = sp5C[index + 1].x - sp5C[index - 1].x; sp48 = sp5C[index + 1].z - sp5C[index - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(sp54, sp48)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(sp54, sp48)), &sp44, &sp40, &sp3C); if (((sp44 * this->actor.world.pos.x) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { ret = true; } @@ -653,7 +653,7 @@ s32 func_80BAB8F4(EnSuttari* this, Path* path, s32 arg2) { sp54 = sp5C[index - 1].x - sp5C[index + 1].x; sp48 = sp5C[index - 1].z - sp5C[index + 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(sp54, sp48)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(sp54, sp48)), &sp44, &sp40, &sp3C); if (((sp44 * this->actor.world.pos.x) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { ret = true; } diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index a705a8546..4937125dc 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -304,7 +304,7 @@ s32 func_808D91C4(EnSw* this, CollisionPoly* arg1) { return false; } - sp4C = func_80086C48(temp_f12); + sp4C = Math_FAcosF(temp_f12); if (sp4C < 0.001f) { return false; } diff --git a/src/overlays/actors/ovl_En_Syateki_Crow/z_en_syateki_crow.c b/src/overlays/actors/ovl_En_Syateki_Crow/z_en_syateki_crow.c index 5f5194523..af419ba23 100644 --- a/src/overlays/actors/ovl_En_Syateki_Crow/z_en_syateki_crow.c +++ b/src/overlays/actors/ovl_En_Syateki_Crow/z_en_syateki_crow.c @@ -292,9 +292,9 @@ s32 EnSyatekiCrow_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, EnSyatekiCrow* this = THIS; if (limbIndex == OBJECT_CROW_LIMB_UPPER_TAIL) { - rot->y += (s16)(0xC00 * sin_rad(this->skelAnime.curFrame * (M_PI / 4))); + rot->y += (s16)(0xC00 * Math_SinF(this->skelAnime.curFrame * (M_PI / 4))); } else if (limbIndex == OBJECT_CROW_LIMB_TAIL) { - rot->y += (s16)(0x1400 * sin_rad((this->skelAnime.curFrame + 2.5f) * (M_PI / 4))); + rot->y += (s16)(0x1400 * Math_SinF((this->skelAnime.curFrame + 2.5f) * (M_PI / 4))); } return false; diff --git a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c index 324307d8a..91ed08140 100644 --- a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c +++ b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c @@ -404,7 +404,7 @@ void func_80A36CB0(EnSyatekiOkuta* this) { } } else if (this->actionFunc == func_80A36488) { this->unk_1D8.x = this->unk_1D8.z = 1.0f; - this->unk_1D8.y = (sin_rad((M_PI / 16) * curFrame) * 0.2f) + 1.0f; + this->unk_1D8.y = (Math_SinF((M_PI / 16) * curFrame) * 0.2f) + 1.0f; } else if (this->actionFunc == func_80A36504) { if (curFrame < 3.0f) { this->unk_1D8.y = 1.0f; @@ -440,7 +440,7 @@ s32 func_80A370EC(EnSyatekiOkuta* this, f32 arg1, Vec3f* arg2) { if (this->actionFunc == func_80A363B4) { arg2->y = 1.0f; arg2->z = 1.0f; - arg2->x = (sin_rad((M_PI / 16) * arg1) * 0.4f) + 1.0f; + arg2->x = (Math_SinF((M_PI / 16) * arg1) * 0.4f) + 1.0f; } else if (this->actionFunc == func_80A365EC) { if ((arg1 >= 35.0f) || (arg1 < 25.0f)) { return false; diff --git a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c index 52aa71cad..347d78088 100644 --- a/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c +++ b/src/overlays/actors/ovl_En_Syateki_Wf/z_en_syateki_wf.c @@ -408,9 +408,9 @@ void EnSyatekiWf_Dead(EnSyatekiWf* this, PlayState* play) { s32 i; for (i = (s32)this->skelAnime.animLength - (s32)this->skelAnime.curFrame; i >= 0; i--) { - firePos.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x; - firePos.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z; - firePos.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f); + firePos.x = Rand_CenteredFloat(60.0f) + this->actor.world.pos.x; + firePos.z = Rand_CenteredFloat(60.0f) + this->actor.world.pos.z; + firePos.y = Rand_CenteredFloat(50.0f) + (this->actor.world.pos.y + 20.0f); func_800B3030(play, &firePos, &sFireVelocityAndAccel, &sFireVelocityAndAccel, 100, 0, 2); } } diff --git a/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c b/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c index 495c16c13..c71676061 100644 --- a/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c +++ b/src/overlays/actors/ovl_En_Tanron1/z_en_tanron1.c @@ -248,9 +248,9 @@ void func_80BB5318(EnTanron1* this, PlayState* play) { ptr->unk_20 = Math_Atan2S(temp.x, temp.z); ptr->unk_1E = Math_Atan2S(temp.y, sqrtf(SQXZ(temp))); if ((ptr->unk_26 & 0xF) == 0) { - ptr->unk_30 = randPlusMinusPoint5Scaled(temp_f30); - ptr->unk_34 = randPlusMinusPoint5Scaled(temp_f30 * 0.5f); - ptr->unk_38 = randPlusMinusPoint5Scaled(temp_f30); + ptr->unk_30 = Rand_CenteredFloat(temp_f30); + ptr->unk_34 = Rand_CenteredFloat(temp_f30 * 0.5f); + ptr->unk_38 = Rand_CenteredFloat(temp_f30); } temp.x = player->actor.world.pos.x - ptr->unk_00.x; @@ -336,7 +336,7 @@ void func_80BB5318(EnTanron1* this, PlayState* play) { Math_ApproachF(&ptr->unk_30, ptr->unk_34, 1.0f, 0.5f); if ((ptr->unk_26 & 0xF) == 0) { if (Rand_ZeroOne() < 0.5f) { - ptr->unk_34 = randPlusMinusPoint5Scaled(12.0f); + ptr->unk_34 = Rand_CenteredFloat(12.0f); } ptr->unk_3C = BgCheck_EntityRaycastFloor1(&play->colCtx, &sp98, &ptr->unk_00); sp9C = ptr->unk_00.y; diff --git a/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c b/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c index dd4f389a3..785308dad 100644 --- a/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c +++ b/src/overlays/actors/ovl_En_Tanron2/z_en_tanron2.c @@ -236,7 +236,7 @@ void func_80BB6BD8(EnTanron2* this, PlayState* play) { switch (this->unk_158) { case 0: if (Rand_ZeroOne() > 0.2f) { - sp32 = Rand_ZeroFloat(65536.0f); + sp32 = Rand_ZeroFloat(0x10000); } else { sp32 = Math_Atan2S(sp2C, sp28); } diff --git a/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c b/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c index b86b9c714..81a4ac2af 100644 --- a/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c +++ b/src/overlays/actors/ovl_En_Tanron3/z_en_tanron3.c @@ -100,8 +100,8 @@ void EnTanron3_CreateEffect(PlayState* play, Vec3f* effectPos) { effectPtr->unk_34.y = 0.0f; effectPtr->unk_34.z = Rand_ZeroFloat(2 * M_PI); effectPtr->unk_02 = Rand_ZeroFloat(100.0f); - effectPtr->velocity.x = randPlusMinusPoint5Scaled(25.0f); - effectPtr->velocity.z = randPlusMinusPoint5Scaled(25.0f); + effectPtr->velocity.x = Rand_CenteredFloat(25.0f); + effectPtr->velocity.z = Rand_CenteredFloat(25.0f); break; } } @@ -155,9 +155,9 @@ void EnTanron3_SetupLive(EnTanron3* this, PlayState* play) { this->workTimer[WORK_TIMER_PICK_NEW_DEVIATION] = 50; this->actor.speed = 5.0f; this->speedMaxStep = 0.5f; - this->deviation.x = randPlusMinusPoint5Scaled(500.0f); - this->deviation.y = randPlusMinusPoint5Scaled(100.0f); - this->deviation.z = randPlusMinusPoint5Scaled(500.0f); + this->deviation.x = Rand_CenteredFloat(500.0f); + this->deviation.y = Rand_CenteredFloat(100.0f); + this->deviation.z = Rand_CenteredFloat(500.0f); Math_Vec3f_Copy(&this->targetPos, &this->actor.world.pos); this->timer = Rand_ZeroFloat(100.0f); } @@ -245,9 +245,9 @@ void EnTanron3_Live(EnTanron3* this, PlayState* play) { if (this->workTimer[WORK_TIMER_OUT_OF_WATER] == 0) { if ((this->workTimer[WORK_TIMER_PICK_NEW_DEVIATION] == 0) && (this->actor.speed > 1.0f)) { this->workTimer[WORK_TIMER_PICK_NEW_DEVIATION] = Rand_ZeroFloat(20.0f); - this->deviation.x = randPlusMinusPoint5Scaled(100.0f); - this->deviation.y = randPlusMinusPoint5Scaled(50.0f + extraScaleY); - this->deviation.z = randPlusMinusPoint5Scaled(100.0f); + this->deviation.x = Rand_CenteredFloat(100.0f); + this->deviation.y = Rand_CenteredFloat(50.0f + extraScaleY); + this->deviation.z = Rand_CenteredFloat(100.0f); } this->targetPosWithDeviation.y = this->targetPos.y + this->deviation.y + 50.0f; } @@ -297,17 +297,17 @@ void EnTanron3_Live(EnTanron3* this, PlayState* play) { this->actor.speed = Rand_ZeroFloat(2.0f) + 2.0f; if (Rand_ZeroOne() < 0.5f) { this->targetShapeRotation.x = - (s16)randPlusMinusPoint5Scaled(500.0f) + this->targetShapeRotation.x + 0x8000; + (s16)(s32)Rand_CenteredFloat(0x1F4) + this->targetShapeRotation.x + 0x8000; } if (Rand_ZeroOne() < 0.5f) { this->targetShapeRotation.z = - (s16)randPlusMinusPoint5Scaled(500.0f) + this->targetShapeRotation.z + 0x8000; + (s16)(s32)Rand_CenteredFloat(0x1F4) + this->targetShapeRotation.z + 0x8000; } if (Rand_ZeroOne() < 0.5f) { this->targetShapeRotation.y = (s16)Rand_ZeroFloat(0x10000); } this->actor.world.rot.y = Math_Atan2S_XY(this->actor.world.pos.z, this->actor.world.pos.x) + - (s16)randPlusMinusPoint5Scaled(0xCE20); + (s16)(s32)Rand_CenteredFloat(0xCE20); } Math_ApproachS(&this->actor.shape.rot.y, this->targetShapeRotation.y, 3, 0x500); @@ -316,9 +316,9 @@ void EnTanron3_Live(EnTanron3* this, PlayState* play) { if ((Rand_ZeroOne() < 0.5f) & !(this->timer & 0x3)) { Vec3f effectPos; - effectPos.x = randPlusMinusPoint5Scaled(30.0f) + this->actor.world.pos.x; + effectPos.x = Rand_CenteredFloat(30.0f) + this->actor.world.pos.x; effectPos.y = this->actor.world.pos.y; - effectPos.z = randPlusMinusPoint5Scaled(30.0f) + this->actor.world.pos.z; + effectPos.z = Rand_CenteredFloat(30.0f) + this->actor.world.pos.z; EnTanron3_CreateEffect(play, &effectPos); } break; diff --git a/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c b/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c index 5c62c50ee..074eaec79 100644 --- a/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c +++ b/src/overlays/actors/ovl_En_Tanron4/z_en_tanron4.c @@ -65,10 +65,9 @@ void EnTanron4_Init(Actor* thisx, PlayState* play2) { s32 i; for (i = 0; i < thisx->params; i++) { - Actor_Spawn(&play->actorCtx, play, ACTOR_EN_TANRON4, - thisx->world.pos.x + randPlusMinusPoint5Scaled(500.0f), - thisx->world.pos.y + randPlusMinusPoint5Scaled(100.0f), - thisx->world.pos.z + randPlusMinusPoint5Scaled(500.0f), 0, Rand_ZeroFloat(65536.0f), 0, + Actor_Spawn(&play->actorCtx, play, ACTOR_EN_TANRON4, thisx->world.pos.x + Rand_CenteredFloat(500.0f), + thisx->world.pos.y + Rand_CenteredFloat(100.0f), + thisx->world.pos.z + Rand_CenteredFloat(500.0f), 0, Rand_ZeroFloat(0x10000), 0, SEAGULL_CLONE); } } @@ -112,9 +111,9 @@ void EnTanron4_FlyNearHome(EnTanron4* this, PlayState* play) { distToTarget = sqrtf(SQ(xDiff) + SQ(zDiff)); if ((this->timers[SEAGULL_TIMER_CHOOSE_TARGET] == 0) || (distToTarget < 100.0f)) { - this->targetPos.x = this->actor.home.pos.x + randPlusMinusPoint5Scaled(500.0f); - this->targetPos.y = this->actor.home.pos.y + randPlusMinusPoint5Scaled(100.0f); - this->targetPos.z = this->actor.home.pos.z + randPlusMinusPoint5Scaled(500.0f); + this->targetPos.x = this->actor.home.pos.x + Rand_CenteredFloat(500.0f); + this->targetPos.y = this->actor.home.pos.y + Rand_CenteredFloat(100.0f); + this->targetPos.z = this->actor.home.pos.z + Rand_CenteredFloat(500.0f); this->timers[SEAGULL_TIMER_CHOOSE_TARGET] = Rand_ZeroFloat(100.0f) + 60.0f; this->step = 0; @@ -151,7 +150,7 @@ void EnTanron4_FlyNearHome(EnTanron4* this, PlayState* play) { case SEAGULL_FLY_GLIDE: if (((this->randRollTimer % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { - this->rollTarget = randPlusMinusPoint5Scaled(3000.0f + KREG(44)); + this->rollTarget = Rand_CenteredFloat(3000.0f + KREG(44)); } if (this->timers[SEAGULL_TIMER_FLY_STATE] == 0) { @@ -192,9 +191,9 @@ void EnTanron4_FlyNearActor(EnTanron4* this, PlayState* play) { distToTarget = sqrtf(SQ(xDiff) + SQ(zDiff)); if ((this->timers[SEAGULL_TIMER_CHOOSE_TARGET] == 0) || (distToTarget < 100.0f)) { - this->targetPos.x = targetActor->world.pos.x + randPlusMinusPoint5Scaled(200.0f + KREG(82)); - this->targetPos.y = targetActor->world.pos.y + KREG(80) + 100.0f + randPlusMinusPoint5Scaled(100.0f + KREG(81)); - this->targetPos.z = targetActor->world.pos.z + randPlusMinusPoint5Scaled(200.0f + KREG(82)); + this->targetPos.x = targetActor->world.pos.x + Rand_CenteredFloat(200.0f + KREG(82)); + this->targetPos.y = targetActor->world.pos.y + KREG(80) + 100.0f + Rand_CenteredFloat(100.0f + KREG(81)); + this->targetPos.z = targetActor->world.pos.z + Rand_CenteredFloat(200.0f + KREG(82)); this->timers[SEAGULL_TIMER_CHOOSE_TARGET] = Rand_ZeroFloat(100.0f) + 60.0f; this->step = 0; @@ -230,7 +229,7 @@ void EnTanron4_FlyNearActor(EnTanron4* this, PlayState* play) { case SEAGULL_FLY_GLIDE: if (((this->randRollTimer % 8) == 0) && (Rand_ZeroOne() < 0.5f)) { - this->rollTarget = randPlusMinusPoint5Scaled(3000.0f + KREG(44)); + this->rollTarget = Rand_CenteredFloat(3000.0f + KREG(44)); } if (this->timers[SEAGULL_TIMER_FLY_STATE] == 0) { diff --git a/src/overlays/actors/ovl_En_Tanron5/z_en_tanron5.c b/src/overlays/actors/ovl_En_Tanron5/z_en_tanron5.c index 18e24c5e7..a56b01c3b 100644 --- a/src/overlays/actors/ovl_En_Tanron5/z_en_tanron5.c +++ b/src/overlays/actors/ovl_En_Tanron5/z_en_tanron5.c @@ -101,9 +101,9 @@ void func_80BE4930(EnTanron5Effect* effect, Vec3f* arg1, f32 arg2) { effect->unk_00 = *arg1; - effect->unk_0C = randPlusMinusPoint5Scaled(10.0f); + effect->unk_0C = Rand_CenteredFloat(10.0f); effect->unk_10 = Rand_ZeroFloat(2.0f) + 3.0f; - effect->unk_14 = randPlusMinusPoint5Scaled(10.0f); + effect->unk_14 = Rand_CenteredFloat(10.0f); effect->unk_18.y = -0.15f; effect->unk_18.x = 0.0f; @@ -127,9 +127,9 @@ void func_80BE4A2C(EnTanron5Effect* effect, Vec3f* arg1, f32 arg2) { effect->unk_00 = *arg1; - effect->unk_0C = randPlusMinusPoint5Scaled(30.0f); + effect->unk_0C = Rand_CenteredFloat(30.0f); effect->unk_10 = Rand_ZeroFloat(7.0f); - effect->unk_14 = randPlusMinusPoint5Scaled(30.0f); + effect->unk_14 = Rand_CenteredFloat(30.0f); effect->unk_18.y = -0.3f; effect->unk_18.x = 0.0f; @@ -154,8 +154,8 @@ void EnTanron5_Init(Actor* thisx, PlayState* play) { return; } - this->unk_198 = randPlusMinusPoint5Scaled(0x2000); - this->unk_19A = randPlusMinusPoint5Scaled(0x2000); + this->unk_198 = Rand_CenteredFloat(0x2000); + this->unk_19A = Rand_CenteredFloat(0x2000); if (ENTANRON5_GET(&this->actor) < ENTANRON5_107) { Actor_SetScale(&this->actor, (Rand_ZeroFloat(0.025f) + 0.085f) * D_80BE5DD0); @@ -327,8 +327,8 @@ void EnTanron5_Update(Actor* thisx, PlayState* play2) { spAC = 50.0f; } - sp9C.x = (randPlusMinusPoint5Scaled(spA8) * D_80BE5DD0) + spB8.x; - sp9C.z = (randPlusMinusPoint5Scaled(spA8) * D_80BE5DD0) + spB8.z; + sp9C.x = (Rand_CenteredFloat(spA8) * D_80BE5DD0) + spB8.x; + sp9C.z = (Rand_CenteredFloat(spA8) * D_80BE5DD0) + spB8.z; sp9C.y = this->actor.floorHeight + (spAC * D_80BE5DD0); Actor_Spawn(&play->actorCtx, play, ACTOR_EN_TANRON5, sp9C.x, sp9C.y, sp9C.z, 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 2bef1cda2..87589ae8c 100644 --- a/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c +++ b/src/overlays/actors/ovl_En_Thiefbird/z_en_thiefbird.c @@ -193,12 +193,12 @@ void func_80C10984(EnThiefbird* this, s32 arg1) { for (i = 0; i < ARRAY_COUNT(this->unk_3F0); i++, ptr++) { if (ptr->unk_22 == 0) { ptr->unk_22 = (s32)Rand_ZeroFloat(20.0f) + 40; - ptr->unk_00.x = randPlusMinusPoint5Scaled(30.0f) + this->actor.focus.pos.x; - ptr->unk_00.y = randPlusMinusPoint5Scaled(30.0f) + this->actor.focus.pos.y; - ptr->unk_00.z = randPlusMinusPoint5Scaled(30.0f) + this->actor.focus.pos.z; - ptr->unk_0C.x = randPlusMinusPoint5Scaled(5.0f); + ptr->unk_00.x = Rand_CenteredFloat(30.0f) + this->actor.focus.pos.x; + ptr->unk_00.y = Rand_CenteredFloat(30.0f) + this->actor.focus.pos.y; + ptr->unk_00.z = Rand_CenteredFloat(30.0f) + this->actor.focus.pos.z; + ptr->unk_0C.x = Rand_CenteredFloat(5.0f); ptr->unk_0C.y = Rand_ZeroOne() + 2.0f; - ptr->unk_0C.z = randPlusMinusPoint5Scaled(5.0f); + ptr->unk_0C.z = Rand_CenteredFloat(5.0f); ptr->unk_1C = Rand_ZeroFloat(1000.0f); ptr->unk_18 = (Rand_ZeroFloat(20.0f) + 40.0f) * 0.0001f; ptr->unk_1E = (s32)Rand_Next() >> 0x10; diff --git a/src/overlays/actors/ovl_En_Tite/z_en_tite.c b/src/overlays/actors/ovl_En_Tite/z_en_tite.c index cfae13191..1ae0e073b 100644 --- a/src/overlays/actors/ovl_En_Tite/z_en_tite.c +++ b/src/overlays/actors/ovl_En_Tite/z_en_tite.c @@ -253,9 +253,9 @@ void func_80893BCC(EnTite* this, PlayState* play) { for (i = 5; i < ARRAY_COUNT(this->limbPos); i++) { for (j = 0; j < 2; j++) { ptr = &this->limbPos[i]; - sp7C.x = ptr->x + randPlusMinusPoint5Scaled(1.0f); - sp7C.y = ptr->y + randPlusMinusPoint5Scaled(1.0f); - sp7C.z = ptr->z + randPlusMinusPoint5Scaled(1.0f); + sp7C.x = ptr->x + Rand_CenteredFloat(1.0f); + sp7C.y = ptr->y + Rand_CenteredFloat(1.0f); + sp7C.z = ptr->z + Rand_CenteredFloat(1.0f); func_800B0DE0(play, &sp7C, &gZeroVec3f, &D_80896B64, &D_80896B3C, &D_80896B40, (s32)Rand_ZeroFloat(16.0f) + 80, 15); } @@ -808,9 +808,9 @@ void func_80895738(EnTite* this, PlayState* play) { void func_8089595C(EnTite* this, PlayState* play) { Vec3f sp2C; - sp2C.x = randPlusMinusPoint5Scaled(20.0f) + this->actor.world.pos.x; + sp2C.x = Rand_CenteredFloat(20.0f) + this->actor.world.pos.x; sp2C.y = this->actor.world.pos.y + 15.0f; - sp2C.z = randPlusMinusPoint5Scaled(20.0f) + this->actor.world.pos.z; + sp2C.z = Rand_CenteredFloat(20.0f) + this->actor.world.pos.z; func_800B0DE0(play, &sp2C, &gZeroVec3f, &D_80896B44, &D_80896B3C, &D_80896B40, 500, 50); } 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 bf0f9cc31..29560fdce 100644 --- a/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c +++ b/src/overlays/actors/ovl_En_Trt2/z_en_trt2.c @@ -499,9 +499,9 @@ void func_80AD434C(EnTrt2* this, PlayState* play) { Vec3f sp5C = { 0.0f, 0.5f, 0.0f }; for (i = (s32)this->skelAnime.animLength - (s32)this->skelAnime.curFrame; i >= 0; i -= 2) { - sp68.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x; - sp68.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z; - sp68.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f); + sp68.x = Rand_CenteredFloat(60.0f) + this->actor.world.pos.x; + sp68.z = Rand_CenteredFloat(60.0f) + this->actor.world.pos.z; + sp68.y = Rand_CenteredFloat(50.0f) + (this->actor.world.pos.y + 20.0f); func_800B3030(play, &sp68, &sp5C, &sp5C, 100, 0, 3); } @@ -592,7 +592,7 @@ s32 func_80AD475C(EnTrt2* this, Path* path, s32 arg2) { phi_f14 = points[arg + 1].z - points[arg - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { ret = true; @@ -639,9 +639,9 @@ f32 func_80AD49B8(Path* path, s32 arg1, Vec3f* arg2, Vec3s* arg3) { void func_80AD4A78(EnTrt2* this, PlayState* play) { Vec3f sp34; - sp34.x = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.x; + sp34.x = Rand_CenteredFloat(15.0f) + this->actor.world.pos.x; sp34.y = this->actor.world.pos.y; - sp34.z = randPlusMinusPoint5Scaled(15.0f) + this->actor.world.pos.z; + sp34.z = Rand_CenteredFloat(15.0f) + this->actor.world.pos.z; Actor_SpawnFloorDustRing(play, &this->actor, &sp34, 50.0f, 0, 2.0f, 0, 0, 0); } diff --git a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c index 6cd2641a1..f877a26a8 100644 --- a/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c +++ b/src/overlays/actors/ovl_En_Tru_Mt/z_en_tru_mt.c @@ -301,7 +301,7 @@ s32 func_80B76600(EnTruMt* this, Path* path, s32 arg2) { phi_f14 = sp5C[idx + 1].z - sp5C[idx - 1].z; } - func_8017B7F8(&sp30, RAD_TO_BINANG(func_80086B30(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); + func_8017B7F8(&sp30, RAD_TO_BINANG(Math_FAtan2F(phi_f12, phi_f14)), &sp44, &sp40, &sp3C); if (((this->actor.world.pos.x * sp44) + (sp40 * this->actor.world.pos.z) + sp3C) > 0.0f) { sp50 = true; } diff --git a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c index b14f82424..c8ec8f8c4 100644 --- a/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c +++ b/src/overlays/actors/ovl_En_Water_Effect/z_en_water_effect.c @@ -159,9 +159,9 @@ void EnWaterEffect_Update(Actor* thisx, PlayState* play2) { if ((this->unk_DC4 % 32) == 0) { if (Rand_ZeroOne() < 0.5f) { Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 10.0f, 40.0f, UPDBGCHECKINFO_FLAG_4); - sp88.x = randPlusMinusPoint5Scaled(50.0f) + this->actor.world.pos.x; + sp88.x = Rand_CenteredFloat(50.0f) + this->actor.world.pos.x; sp88.y = this->actor.world.pos.y; - sp88.z = randPlusMinusPoint5Scaled(50.0f) + this->actor.world.pos.z; + sp88.z = Rand_CenteredFloat(50.0f) + this->actor.world.pos.z; if ((this->actor.world.pos.y + this->actor.depthInWater) <= this->actor.floorHeight) { phi_v1 = 0; } else { @@ -367,9 +367,9 @@ void func_80A599E8(EnWaterEffect* this, Vec3f* arg1, u8 arg2) { if (arg2 >= 2) { if (arg2 == 2) { - ptr->unk_10.x = randPlusMinusPoint5Scaled(10.0f); + ptr->unk_10.x = Rand_CenteredFloat(10.0f); ptr->unk_10.y = Rand_ZeroFloat(3.0f) + 5.0f; - ptr->unk_10.z = randPlusMinusPoint5Scaled(10.0f); + ptr->unk_10.z = Rand_CenteredFloat(10.0f); } ptr->unk_2C.z = 0.0017f; ptr->unk_2C.x = 0.003f; @@ -421,9 +421,9 @@ void func_80A59C04(Actor* thisx, PlayState* play2) { if (this->unk_DC6 == 0) { this->unk_DC6 = Rand_ZeroFloat(150.0f) + 100.0f; Actor_UpdateBgCheckInfo(play, &this->actor, 20.0f, 10.0f, 40.0f, UPDBGCHECKINFO_FLAG_4); - sp74.x = randPlusMinusPoint5Scaled(50.0f) + this->actor.world.pos.x; + sp74.x = Rand_CenteredFloat(50.0f) + this->actor.world.pos.x; sp74.y = this->actor.world.pos.y; - sp74.z = randPlusMinusPoint5Scaled(50.0f) + this->actor.world.pos.z; + sp74.z = Rand_CenteredFloat(50.0f) + this->actor.world.pos.z; func_80A599E8(this, &sp74, 0); } } diff --git a/src/overlays/actors/ovl_En_Wf/z_en_wf.c b/src/overlays/actors/ovl_En_Wf/z_en_wf.c index b05bc4869..26301730f 100644 --- a/src/overlays/actors/ovl_En_Wf/z_en_wf.c +++ b/src/overlays/actors/ovl_En_Wf/z_en_wf.c @@ -489,9 +489,9 @@ void func_80990C6C(EnWf* this, PlayState* play, s32 arg2) { } for (i = 0; i < arg2; i++) { - sp88.x = randPlusMinusPoint5Scaled(50.0f) + this->actor.world.pos.x; + sp88.x = Rand_CenteredFloat(50.0f) + this->actor.world.pos.x; sp88.y = Rand_ZeroFloat(5.0f) + this->actor.world.pos.y; - sp88.z = randPlusMinusPoint5Scaled(50.0f) + this->actor.world.pos.z; + sp88.z = Rand_CenteredFloat(50.0f) + this->actor.world.pos.z; func_800B0F18(play, &sp88, &gZeroVec3f, &D_809942DC, phi_s1, phi_s1, phi_s6, 5, Rand_ZeroFloat(5.0f) + 14.0f); } @@ -1199,9 +1199,9 @@ void func_80992E0C(EnWf* this, PlayState* play) { this->unk_2A0--; for (i = (25 - this->unk_2A0) >> 1; i >= 0; i--) { - sp60.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x; - sp60.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z; - sp60.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f); + sp60.x = Rand_CenteredFloat(60.0f) + this->actor.world.pos.x; + sp60.z = Rand_CenteredFloat(60.0f) + this->actor.world.pos.z; + sp60.y = Rand_CenteredFloat(50.0f) + (this->actor.world.pos.y + 20.0f); func_800B3030(play, &sp60, &D_809942F0, &D_809942F0, 100, 0, 2); } diff --git a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c index 7fd55f4ee..6ce68a0e3 100644 --- a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c +++ b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c @@ -1297,7 +1297,7 @@ void EnWiz_UpdateDamage(EnWiz* this, PlayState* play) { scaleStep = Rand_S16Offset(20, 10); Math_Vec3f_Copy(&pos, &this->ghostPos[i]); pos.x += (f32)Rand_S16Offset(20, 20) * ((Rand_ZeroOne() < 0.5f) ? -1 : 1); - pos.y += 70.0f + randPlusMinusPoint5Scaled(30.0f); + pos.y += 70.0f + Rand_CenteredFloat(30.0f); pos.z += (f32)Rand_S16Offset(20, 20) * ((Rand_ZeroOne() < 0.5f) ? -1 : 1); func_800B0DE0(play, &pos, &velocity, &accel, &sDustPrimColor, &sDustEnvTimer, Rand_S16Offset(350, 100), scaleStep); @@ -1419,9 +1419,9 @@ void EnWiz_PostLimbDrawXlu(PlayState* play, s32 limbIndex, Gfx** dList, Vec3s* r Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY); Matrix_MultVec3f(&staffFlamePos, &flamePos); - flamePos.x += randPlusMinusPoint5Scaled(4.0f); - flamePos.y += randPlusMinusPoint5Scaled(7.0f); - flamePos.z += randPlusMinusPoint5Scaled(5.0f); + flamePos.x += Rand_CenteredFloat(4.0f); + flamePos.y += Rand_CenteredFloat(7.0f); + flamePos.z += Rand_CenteredFloat(5.0f); func_800B3030(play, &flamePos, &gZeroVec3f, &gZeroVec3f, ((Rand_ZeroFloat(1.0f) * 50.0f) + 70.0f), 10, 1); SoundSource_PlaySfxAtFixedWorldPos(play, &flamePos, 10, NA_SE_EN_EXTINCT); } diff --git a/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c b/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c index 8251a896b..e6fc7e776 100644 --- a/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c +++ b/src/overlays/actors/ovl_En_Wiz_Fire/z_en_wiz_fire.c @@ -152,7 +152,7 @@ void EnWiz_SetupMoveMagicProjectile(EnWizFire* this, PlayState* play) { Matrix_RotateXS(this->actor.world.rot.x, MTXMODE_APPLY); if (this->type != EN_WIZ_FIRE_TYPE_MAGIC_PROJECTILE) { - velocity.z = randPlusMinusPoint5Scaled(2.0f) + 8.0f; + velocity.z = Rand_CenteredFloat(2.0f) + 8.0f; } else { velocity.z = 12.0f; } @@ -223,8 +223,8 @@ void EnWiz_MoveMagicProjectile(EnWizFire* this, PlayState* play) { this->increaseLowestUsedIndexTimer = 10; Matrix_Push(); - Matrix_RotateYS((s16)randPlusMinusPoint5Scaled(0x100) + this->actor.world.rot.y, MTXMODE_NEW); - velocity.z = randPlusMinusPoint5Scaled(2.0f) + 8.0f; + Matrix_RotateYS((s16)(s32)Rand_CenteredFloat(0x100) + this->actor.world.rot.y, MTXMODE_NEW); + velocity.z = Rand_CenteredFloat(2.0f) + 8.0f; Matrix_MultVec3f(&velocity, &this->actor.velocity); Matrix_Pop(); @@ -257,7 +257,7 @@ void EnWiz_MoveMagicProjectile(EnWizFire* this, PlayState* play) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_WIZ_FIRE, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, 0, arcingProjectileRotY, 0, EN_WIZ_FIRE_TYPE_ARCING_MAGIC_PROJECTILE); - arcingProjectileRotY += BINANG_ADD((s32)randPlusMinusPoint5Scaled(0x1000), 0x3333); + arcingProjectileRotY += BINANG_ADD((s32)Rand_CenteredFloat(0x1000), 0x10000 / 5); } Actor_PlaySfx(&this->actor, NA_SE_IT_BOMB_EXPLOSION); @@ -313,9 +313,9 @@ void EnWiz_MoveMagicProjectile(EnWizFire* this, PlayState* play) { void EnWiz_SetupSmallFlame(EnWizFire* this, PlayState* play) { this->targetScale = 0.02f; this->timer = Rand_S16Offset(50, 50); - this->scaleMod.x = randPlusMinusPoint5Scaled(1.0f) * 0.007f; - this->scaleMod.y = randPlusMinusPoint5Scaled(1.0f) * 0.005f; - this->scaleMod.z = randPlusMinusPoint5Scaled(1.0f) * 0.007f; + this->scaleMod.x = Rand_CenteredFloat(1.0f) * 0.007f; + this->scaleMod.y = Rand_CenteredFloat(1.0f) * 0.005f; + this->scaleMod.z = Rand_CenteredFloat(1.0f) * 0.007f; this->actionFunc = EnWiz_SmallFlame; } @@ -379,13 +379,13 @@ void EnWiz_Pool(EnWizFire* this, PlayState* play) { Vec3f accel = { 0.0f, 0.0f, 0.0f }; Vec3f pos; - accel.x = randPlusMinusPoint5Scaled(3.0f) / 10.0f; + accel.x = Rand_CenteredFloat(3.0f) / 10.0f; accel.y = 0.23f; - accel.z = randPlusMinusPoint5Scaled(3.0f) / 10.0f; + accel.z = Rand_CenteredFloat(3.0f) / 10.0f; Math_Vec3f_Copy(&pos, &this->actor.world.pos); - pos.x += randPlusMinusPoint5Scaled(150.0f); - pos.z += randPlusMinusPoint5Scaled(150.0f); + pos.x += Rand_CenteredFloat(150.0f); + pos.z += Rand_CenteredFloat(150.0f); Math_ApproachF(&this->poolScale, 0.022f, 0.3f, 0.01f); this->collider.dim.radius = this->poolScale * 4300.0f; diff --git a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c index 874e0a63e..cf4331ffa 100644 --- a/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c +++ b/src/overlays/actors/ovl_En_Wood02/z_en_wood02.c @@ -264,8 +264,8 @@ void EnWood02_Init(Actor* thisx, PlayState* play) { case WOOD_LEAF_YELLOW: this->unk_14A[0] = 75; actorScale = 0.02f; - this->actor.velocity.x = randPlusMinusPoint5Scaled(6.0f); - this->actor.velocity.z = randPlusMinusPoint5Scaled(6.0f); + this->actor.velocity.x = Rand_CenteredFloat(6.0f); + this->actor.velocity.z = Rand_CenteredFloat(6.0f); this->actor.velocity.y = (Rand_ZeroOne() * 1.25f) + -3.1f; break; } @@ -409,7 +409,7 @@ void EnWood02_Update(Actor* thisx, PlayState* play2) { for (i = 3; i >= 0; i--) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_WOOD02, dropsSpawnPt.x, dropsSpawnPt.y, dropsSpawnPt.z, - 0, randPlusMinusPoint5Scaled(0xFFFF), 0, leavesParams); + 0, Rand_CenteredFloat(0xFFFF), 0, leavesParams); } } diff --git a/src/overlays/actors/ovl_En_Yb/z_en_yb.c b/src/overlays/actors/ovl_En_Yb/z_en_yb.c index 1dbe5d2e8..9df560150 100644 --- a/src/overlays/actors/ovl_En_Yb/z_en_yb.c +++ b/src/overlays/actors/ovl_En_Yb/z_en_yb.c @@ -242,9 +242,9 @@ void EnYb_Disappear(EnYb* this, PlayState* play) { EnYb_UpdateAnimation(this, play); for (i = 3; i >= 0; i--) { - sp60.x = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.x; - sp60.z = randPlusMinusPoint5Scaled(60.0f) + this->actor.world.pos.z; - sp60.y = randPlusMinusPoint5Scaled(50.0f) + (this->actor.world.pos.y + 20.0f); + sp60.x = Rand_CenteredFloat(60.0f) + this->actor.world.pos.x; + sp60.z = Rand_CenteredFloat(60.0f) + this->actor.world.pos.z; + sp60.y = Rand_CenteredFloat(50.0f) + (this->actor.world.pos.y + 20.0f); func_800B3030(play, &sp60, &D_80BFB2E8, &D_80BFB2E8, 100, 0, 2); } diff --git a/src/overlays/actors/ovl_En_Zog/z_en_zog.c b/src/overlays/actors/ovl_En_Zog/z_en_zog.c index 979187532..96de52b88 100644 --- a/src/overlays/actors/ovl_En_Zog/z_en_zog.c +++ b/src/overlays/actors/ovl_En_Zog/z_en_zog.c @@ -394,9 +394,9 @@ void func_80B93D2C(EnZog* this, PlayState* play) { void func_80B93DE8(Vec3f* arg0, PlayState* play, s32 arg2) { Vec3f sp2C; - sp2C.x = randPlusMinusPoint5Scaled(30.0f) + arg0->x; + sp2C.x = Rand_CenteredFloat(30.0f) + arg0->x; sp2C.y = arg0->y + 3.0f; - sp2C.z = randPlusMinusPoint5Scaled(30.0f) + arg0->z; + sp2C.z = Rand_CenteredFloat(30.0f) + arg0->z; EffectSsKirakira_SpawnDispersed(play, &sp2C, &D_80B9598C, &D_80B95998, &D_80B959A4, &D_80B959A8, 1000, arg2); } @@ -865,9 +865,9 @@ void func_80B94E34(EnZog* this, PlayState* play) { Vec3f sp38; Lib_Vec3f_TranslateAndRotateY(&this->actor.world.pos, this->actor.shape.rot.y, &D_80B959AC, &sp38); - sp38.x += randPlusMinusPoint5Scaled(30.0f); + sp38.x += Rand_CenteredFloat(30.0f); sp38.y += 20.0f; - sp38.z += randPlusMinusPoint5Scaled(30.0f); + sp38.z += Rand_CenteredFloat(30.0f); if (WaterBox_GetSurface1(play, &play->colCtx, sp38.x, sp38.z, &sp38.y, &sp44) && (this->actor.world.pos.y < sp38.y)) { EffectSsGSplash_Spawn(play, &sp38, NULL, NULL, 1, diff --git a/src/overlays/actors/ovl_Obj_Bigicicle/z_obj_bigicicle.c b/src/overlays/actors/ovl_Obj_Bigicicle/z_obj_bigicicle.c index 85468c59c..61805fd49 100644 --- a/src/overlays/actors/ovl_Obj_Bigicicle/z_obj_bigicicle.c +++ b/src/overlays/actors/ovl_Obj_Bigicicle/z_obj_bigicicle.c @@ -159,13 +159,13 @@ void func_80AE8DE4(ObjBigicicle* this, PlayState* play) { f32 temp_f20 = this->actor.scale.x * (50.0f / 3.0f); for (i = 0; i < 10; i++) { - sp98.x = (randPlusMinusPoint5Scaled(4.0f) * temp_f20) + this->actor.world.pos.x; + sp98.x = (Rand_CenteredFloat(4.0f) * temp_f20) + this->actor.world.pos.x; sp98.y = ((Rand_ZeroFloat(20.0f) - 35.0f) * temp_f20) + this->actor.world.pos.y; - sp98.z = (randPlusMinusPoint5Scaled(4.0f) * temp_f20) + this->actor.world.pos.z; + sp98.z = (Rand_CenteredFloat(4.0f) * temp_f20) + this->actor.world.pos.z; - sp8C.x = randPlusMinusPoint5Scaled(13.0f); + sp8C.x = Rand_CenteredFloat(13.0f); sp8C.y = Rand_ZeroFloat(2.0f); - sp8C.z = randPlusMinusPoint5Scaled(13.0f); + sp8C.z = Rand_CenteredFloat(13.0f); EffectSsHahen_Spawn(play, &sp98, &sp8C, &D_80AE987C, HAHEN_XLU, (Rand_ZeroFloat(20.0f) + 30.0f) * temp_f20, OBJECT_BIGICICLE, 40, object_bigicicle_DL_0009B0); @@ -222,8 +222,8 @@ void func_80AE9180(ObjBigicicle* this, PlayState* play) { if (this->unk_14A > 0) { this->unk_14A--; - this->actor.shape.rot.x = BINANG_ADD((s32)(randPlusMinusPoint5Scaled(1408.0f) * 0.02f * this->unk_14A), 0x4000); - this->actor.shape.rot.z = randPlusMinusPoint5Scaled(1408.0f) * 0.02f * this->unk_14A; + this->actor.shape.rot.x = BINANG_ADD((s32)(Rand_CenteredFloat(0x580) * 0.02f * this->unk_14A), 0x4000); + this->actor.shape.rot.z = Rand_CenteredFloat(0x580) * 0.02f * this->unk_14A; } else { this->actor.shape.rot.x = 0x4000; this->actor.shape.rot.z = 0; @@ -271,9 +271,9 @@ void func_80AE939C(ObjBigicicle* this, PlayState* play) { f32 temp_f20 = this->actor.scale.x * (50.0f / 3.0f); for (i = 0; i < 20; i++) { - sp8C.x = randPlusMinusPoint5Scaled(15.0f); + sp8C.x = Rand_CenteredFloat(15.0f); sp8C.y = Rand_ZeroFloat(7.0f) + 3.0f; - sp8C.z = randPlusMinusPoint5Scaled(15.0f); + sp8C.z = Rand_CenteredFloat(15.0f); sp98.x = this->actor.world.pos.x + (sp8C.x * 5.0f * temp_f20); sp98.y = this->actor.world.pos.y + (sp8C.y * 7.0f * temp_f20); diff --git a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c index c2270f15b..4971b39bc 100644 --- a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c +++ b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c @@ -119,7 +119,7 @@ u32 func_80BB9A1C(ObjChan* this, f32 arg1) { sp20 = Math_SinS(this->unk1D4) * this->unk1D0; temp_f6 = (Math_CosS(this->unk1D4) * (400 * M_PI / 0x8000) * this->unk1D0) + arg1; if (temp_f6 != 0.0f) { - this->unk1D4 = RAD_TO_BINANG(func_80086B30(sp20 * (400 * M_PI / 0x8000), temp_f6)); + this->unk1D4 = RAD_TO_BINANG(Math_FAtan2F(sp20 * (400 * M_PI / 0x8000), temp_f6)); } else if (sp20 >= 0.0f) { this->unk1D4 = 0x4000; } else { diff --git a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c index 4cc81013e..7559c4db7 100644 --- a/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c +++ b/src/overlays/actors/ovl_Obj_Hunsui/z_obj_hunsui.c @@ -130,8 +130,8 @@ void func_80B9C5E8(ObjHunsui* this, PlayState* play) { this->unk_18C = 0; Math_Vec3f_Copy(&sp40, &player->actor.world.pos); - sp40.x += randPlusMinusPoint5Scaled(10.0f); - sp40.z += randPlusMinusPoint5Scaled(10.0f); + sp40.x += Rand_CenteredFloat(10.0f); + sp40.z += Rand_CenteredFloat(10.0f); sp40.y += Rand_ZeroFloat(2.0f); EffectSsGSplash_Spawn(play, &sp40, NULL, NULL, 2.0f * Rand_ZeroOne(), 1); @@ -144,8 +144,8 @@ void func_80B9C5E8(ObjHunsui* this, PlayState* play) { Math_Vec3f_Copy(&sp40, &player->actor.world.pos); this->unk_18C = 0; - sp40.x += randPlusMinusPoint5Scaled(10.0f); - sp40.z += randPlusMinusPoint5Scaled(10.0f); + sp40.x += Rand_CenteredFloat(10.0f); + sp40.z += Rand_CenteredFloat(10.0f); sp40.y += Rand_ZeroFloat(45.0f); EffectSsGSplash_Spawn(play, &sp40, NULL, NULL, 1, 1); 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 10937f985..d1601e69d 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 @@ -156,9 +156,9 @@ void func_80931828(ObjIcePoly* this, PlayState* play) { temp = spA0.y - sp90; for (i = 0; i < 30; i++) { - sp94.x = randPlusMinusPoint5Scaled(12.0f); + sp94.x = Rand_CenteredFloat(12.0f); sp94.y = Rand_ZeroFloat(15.0f); - sp94.z = randPlusMinusPoint5Scaled(12.0f); + sp94.z = Rand_CenteredFloat(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; diff --git a/src/overlays/actors/ovl_Obj_Taru/z_obj_taru.c b/src/overlays/actors/ovl_Obj_Taru/z_obj_taru.c index aeaddd2ee..6eac0ddbc 100644 --- a/src/overlays/actors/ovl_Obj_Taru/z_obj_taru.c +++ b/src/overlays/actors/ovl_Obj_Taru/z_obj_taru.c @@ -141,10 +141,10 @@ void func_80B9B9C8(ObjTaru* this, PlayState* play) { for (i = 0; i < 4; i++) { for (j = phi_fp; j < phi_s5; j++) { - temp_fs0 = randPlusMinusPoint5Scaled(10.0f) + -105.0f + (j * 30.0f); - temp_fs1 = randPlusMinusPoint5Scaled(4.0f); + temp_fs0 = Rand_CenteredFloat(10.0f) + -105.0f + (j * 30.0f); + temp_fs1 = Rand_CenteredFloat(4.0f); spD8.x = temp_fs0 * cos; - spD8.y = randPlusMinusPoint5Scaled(10.0f) + 15.0f + (i * 30.0f); + spD8.y = Rand_CenteredFloat(10.0f) + 15.0f + (i * 30.0f); spD8.z = temp_fs0 * sin; spCC.x = (spD8.x * 0.05f) + (temp_fs1 * sin); spCC.y = Rand_ZeroFloat(5.0f) + 2.0f; diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 9bf780859..bbde013ef 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -6280,9 +6280,9 @@ void func_80836C70(PlayState* play, Player* this, PlayerBodyPart bodyPartIndex) for (i = 0; i < 4; i++) { Vec3f velocity; - velocity.x = randPlusMinusPoint5Scaled(4.0f); + velocity.x = Rand_CenteredFloat(4.0f); velocity.y = Rand_ZeroFloat(2.0f); - velocity.z = randPlusMinusPoint5Scaled(4.0f); + velocity.z = Rand_CenteredFloat(4.0f); D_8085D130.y = -0.2f; EffectSsHahen_Spawn(play, &this->bodyPartsPos[bodyPartIndex], &velocity, &D_8085D130, 0, 10, OBJECT_LINK_NUTS, 16, object_link_nuts_DL_008860); @@ -9507,9 +9507,9 @@ void func_8083F57C(Player* this, PlayState* play) { } void func_8083F828(Vec3f* arg0, Vec3f* arg1, f32 arg2, f32 arg3, f32 arg4) { - arg1->x = randPlusMinusPoint5Scaled(arg3) + arg0->x; - arg1->y = randPlusMinusPoint5Scaled(arg4) + (arg0->y + arg2); - arg1->z = randPlusMinusPoint5Scaled(arg3) + arg0->z; + arg1->x = Rand_CenteredFloat(arg3) + arg0->x; + arg1->y = Rand_CenteredFloat(arg4) + (arg0->y + arg2); + arg1->z = Rand_CenteredFloat(arg3) + arg0->z; } Color_RGBA8 D_8085D26C = { 255, 255, 255, 255 }; @@ -9528,8 +9528,8 @@ s32 func_8083F8A8(PlayState* play, Player* this, f32 radius, s32 countMax, f32 r count = (count >= ABS_ALT(countMax)) ? ABS_ALT(countMax) : count; for (i = 0; i < count; i++) { func_8083F828(&this->actor.world.pos, &pos, 0.0f, 40.0f, 10.0f); - D_8085D27C.x = randPlusMinusPoint5Scaled(3.0f); - D_8085D27C.z = randPlusMinusPoint5Scaled(3.0f); + D_8085D27C.x = Rand_CenteredFloat(3.0f); + D_8085D27C.z = Rand_CenteredFloat(3.0f); EffectSsDust_Spawn(play, 0, &pos, &D_8085D27C, &D_8085D270, &D_8085D26C, &D_8085D26C, scale, scaleStep, 42, 0); } @@ -9555,9 +9555,9 @@ s32 func_8083F8A8(PlayState* play, Player* this, f32 radius, s32 countMax, f32 r count = (count >= countMax) ? countMax : count; for (i = 0; i < count; i++) { func_8083F828(&this->actor.world.pos, &pos, 0.0f, 20.0f, 20.0f); - velocity.x = randPlusMinusPoint5Scaled(3.0f); + velocity.x = Rand_CenteredFloat(3.0f); velocity.y = Rand_ZeroFloat(2.0f); - velocity.z = randPlusMinusPoint5Scaled(3.0f); + velocity.z = Rand_CenteredFloat(3.0f); D_8085D288.y = -0.1f; EffectSsHahen_Spawn(play, &pos, &velocity, &D_8085D288, 0, 0x96, 1, 0x10, gKakeraLeafTip); } @@ -11237,9 +11237,9 @@ void func_808445C4(PlayState* play, Player* this) { randIndex = Rand_ZeroFloat(PLAYER_BODYPART_MAX - 0.1f); bodyPartsPos = randIndex + this->bodyPartsPos; - pos.x = (randPlusMinusPoint5Scaled(5.0f) + bodyPartsPos->x) - this->actor.world.pos.x; - pos.y = (randPlusMinusPoint5Scaled(5.0f) + bodyPartsPos->y) - this->actor.world.pos.y; - pos.z = (randPlusMinusPoint5Scaled(5.0f) + bodyPartsPos->z) - this->actor.world.pos.z; + pos.x = (Rand_CenteredFloat(5.0f) + bodyPartsPos->x) - this->actor.world.pos.x; + pos.y = (Rand_CenteredFloat(5.0f) + bodyPartsPos->y) - this->actor.world.pos.y; + pos.z = (Rand_CenteredFloat(5.0f) + bodyPartsPos->z) - this->actor.world.pos.z; EffectSsFhgFlash_SpawnShock(play, &this->actor, &pos, scale, 1); func_800B8F98(&this->actor, NA_SE_PL_SPARK - SFX_FLAG); } @@ -19575,9 +19575,9 @@ void func_80859D70(PlayState* play, Player* this, UNK_TYPE arg2) { this->rightHandType = 0xFF; } else { posInfo = &D_8085E368[this->transformation]; - randPos.x = randPlusMinusPoint5Scaled(posInfo->range.x) + posInfo->base.x; - randPos.y = randPlusMinusPoint5Scaled(posInfo->range.y) + posInfo->base.y; - randPos.z = randPlusMinusPoint5Scaled(posInfo->range.z) + posInfo->base.z; + randPos.x = Rand_CenteredFloat(posInfo->range.x) + posInfo->base.x; + randPos.y = Rand_CenteredFloat(posInfo->range.y) + posInfo->base.y; + randPos.z = Rand_CenteredFloat(posInfo->range.z) + posInfo->base.z; SkinMatrix_Vec3fMtxFMultXYZ(&this->shieldMf, &randPos, &effectPos); EffectSsKirakira_SpawnDispersed(play, &effectPos, &gZeroVec3f, &gZeroVec3f, &D_8085E3A4, &D_8085E3A8, 600, -10); } diff --git a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c index 14d5d5c6e..cf019c6cf 100644 --- a/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c +++ b/src/overlays/effects/ovl_Effect_Ss_En_Ice/z_eff_ss_en_ice.c @@ -60,7 +60,7 @@ u32 EffectSsEnIce_Init(PlayState* play, u32 index, EffectSs* this, void* initPar this->rEnvColorG = initParams->envColor.g; this->rEnvColorB = initParams->envColor.b; this->rAlphaMode = 1; - this->rPitch = randPlusMinusPoint5Scaled(0x10000); + this->rPitch = Rand_CenteredFloat(0x10000); } else if (initParams->type == ENICE_TYPE_NORMAL) { Math_Vec3f_Copy(&this->pos, &initParams->pos); Math_Vec3f_Copy(&this->vec, &initParams->pos); @@ -142,7 +142,7 @@ void EffectSsEnIce_UpdateFlying(PlayState* play, u32 index, EffectSs* this) { } else { this->actor = NULL; if (this->life >= 9) { - rand = randPlusMinusPoint5Scaled(0xFFFF); + rand = Rand_CenteredFloat(0xFFFF); this->accel.x = Math_SinS(rand) * (Rand_ZeroOne() + 1.0f); this->accel.z = Math_CosS(rand) * (Rand_ZeroOne() + 1.0f); this->life = 8; diff --git a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c index f2038c768..4edc1e3b1 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c +++ b/src/overlays/effects/ovl_Effect_Ss_Fhg_Flash/z_eff_ss_fhg_flash.c @@ -90,9 +90,9 @@ void EffectSsFhgFlash_Update(PlayState* play, u32 index, EffectSs* this) { Player* player = GET_PLAYER(play); randBodyPart = Rand_ZeroFloat(PLAYER_BODYPART_MAX - 0.1f); - this->pos.x = player->bodyPartsPos[randBodyPart].x + randPlusMinusPoint5Scaled(10.0f); - this->pos.y = player->bodyPartsPos[randBodyPart].y + randPlusMinusPoint5Scaled(15.0f); - this->pos.z = player->bodyPartsPos[randBodyPart].z + randPlusMinusPoint5Scaled(10.0f); + this->pos.x = player->bodyPartsPos[randBodyPart].x + Rand_CenteredFloat(10.0f); + this->pos.y = player->bodyPartsPos[randBodyPart].y + Rand_CenteredFloat(15.0f); + this->pos.z = player->bodyPartsPos[randBodyPart].z + Rand_CenteredFloat(10.0f); } else if ((this->rParams >= FHGFLASH_SHOCK_GOHT_2) && (this->rParams <= FHGFLASH_SHOCK_GOHT_6)) { s32 pad; Vec3f* bodyPartPos; @@ -105,9 +105,9 @@ void EffectSsFhgFlash_Update(PlayState* play, u32 index, EffectSs* this) { bodyPartPos = &goht->unk_2F00[this->rParams][index].unk_00; } - this->pos.x = randPlusMinusPoint5Scaled(70.0f) + bodyPartPos->x; - this->pos.y = randPlusMinusPoint5Scaled(70.0f) + bodyPartPos->y; - this->pos.z = randPlusMinusPoint5Scaled(70.0f) + bodyPartPos->z; + this->pos.x = Rand_CenteredFloat(70.0f) + bodyPartPos->x; + this->pos.y = Rand_CenteredFloat(70.0f) + bodyPartPos->y; + this->pos.z = Rand_CenteredFloat(70.0f) + bodyPartPos->z; } if (this->life < 100) { this->rAlpha -= 50; diff --git a/src/overlays/effects/ovl_Effect_Ss_Kirakira/z_eff_ss_kirakira.c b/src/overlays/effects/ovl_Effect_Ss_Kirakira/z_eff_ss_kirakira.c index 4e395141b..4e8f11f5c 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Kirakira/z_eff_ss_kirakira.c +++ b/src/overlays/effects/ovl_Effect_Ss_Kirakira/z_eff_ss_kirakira.c @@ -139,8 +139,8 @@ void func_80977DB4(PlayState* play, u32 index, EffectSs* this) { void func_80977E6C(PlayState* play, u32 index, EffectSs* this) { this->velocity.x *= 0.95f; this->velocity.z *= 0.95f; - this->accel.x = randPlusMinusPoint5Scaled(0.2f); - this->accel.z = randPlusMinusPoint5Scaled(0.2f); + this->accel.x = Rand_CenteredFloat(0.2f); + this->accel.z = Rand_CenteredFloat(0.2f); this->rEnvColorA += this->rAlphaStep; if (this->rEnvColorA < 0) { diff --git a/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c b/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c index f79e59340..69b24c029 100644 --- a/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c +++ b/src/overlays/effects/ovl_Effect_Ss_Sbn/z_eff_ss_sbn.c @@ -68,7 +68,7 @@ u32 EffectSsSbn_Init(PlayState* play, u32 index, EffectSs* this, void* initParam this->rReg4 = 250; this->rReg4Step = 30; - this->rScale = randPlusMinusPoint5Scaled(100.0f) + (initParams->scale * 120.0f); + this->rScale = Rand_CenteredFloat(100.0f) + (initParams->scale * 120.0f); if (this->rScale < 600) { this->rScale = 600; } else if (this->rScale > 1500) { diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index e4f96e594..1d38ccc2e 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -166,39 +166,39 @@ 0x80086588:("SystemHeap_RunInits",), 0x800865F8:("SystemHeap_Init",), 0x80086620:("PadSetup_Init",), - 0x80086760:("func_80086760",), - 0x80086794:("func_80086794",), - 0x800867B4:("func_800867B4",), - 0x800867D4:("func_800867D4",), - 0x800867F4:("func_800867F4",), - 0x80086814:("func_80086814",), - 0x80086834:("func_80086834",), - 0x80086880:("func_80086880",), - 0x800869A4:("func_800869A4",), - 0x80086AF0:("func_80086AF0",), - 0x80086B30:("func_80086B30",), - 0x80086C18:("func_80086C18",), - 0x80086C48:("func_80086C48",), - 0x80086C70:("func_80086C70",), - 0x80086C7C:("func_80086C7C",), - 0x80086C88:("func_80086C88",), - 0x80086C98:("func_80086C98",), - 0x80086CA8:("func_80086CA8",), - 0x80086CB4:("func_80086CB4",), - 0x80086CC0:("func_80086CC0",), - 0x80086CD0:("func_80086CD0",), - 0x80086CE0:("func_80086CE0",), - 0x80086CEC:("func_80086CEC",), - 0x80086CF8:("func_80086CF8",), - 0x80086D08:("func_80086D08",), - 0x80086D18:("func_80086D18",), - 0x80086D24:("func_80086D24",), - 0x80086D30:("func_80086D30",), - 0x80086D40:("func_80086D40",), - 0x80086D50:("func_80086D50",), - 0x80086D6C:("func_80086D6C",), - 0x80086D8C:("func_80086D8C",), - 0x80086DAC:("func_80086DAC",), + 0x80086760:("Math_FTanF",), + 0x80086794:("Math_FFloorF",), + 0x800867B4:("Math_FCeilF",), + 0x800867D4:("Math_FRoundF",), + 0x800867F4:("Math_FTruncF",), + 0x80086814:("Math_FNearbyIntF",), + 0x80086834:("Math_FAtanTaylorQF",), + 0x80086880:("Math_FAtanTaylorF",), + 0x800869A4:("Math_FAtanContFracF",), + 0x80086AF0:("Math_FAtanF",), + 0x80086B30:("Math_FAtan2F",), + 0x80086C18:("Math_FAsinF",), + 0x80086C48:("Math_FAcosF",), + 0x80086C70:("floorf",), + 0x80086C7C:("floor",), + 0x80086C88:("lfloorf",), + 0x80086C98:("lfloor",), + 0x80086CA8:("ceilf",), + 0x80086CB4:("ceil",), + 0x80086CC0:("lceilf",), + 0x80086CD0:("lceil",), + 0x80086CE0:("truncf",), + 0x80086CEC:("trunc",), + 0x80086CF8:("ltruncf",), + 0x80086D08:("ltrunc",), + 0x80086D18:("nearbyintf",), + 0x80086D24:("nearbyint",), + 0x80086D30:("lnearbyintf",), + 0x80086D40:("lnearbyint",), + 0x80086D50:("roundf",), + 0x80086D6C:("round",), + 0x80086D8C:("lroundf",), + 0x80086DAC:("lround",), 0x80086DD0:("SystemArena_Malloc",), 0x80086DF8:("SystemArena_MallocR",), 0x80086E20:("SystemArena_Realloc",), @@ -3248,13 +3248,13 @@ 0x801791CC:("Check_DrawRegionLockErrorMessage",), 0x80179260:("Check_ExpansionPak",), 0x801792A4:("Check_RegionIsSupported",), - 0x80179300:("func_80179300",), - 0x80179400:("func_80179400",), - 0x801794C4:("pow_int",), - 0x801794EC:("sin_rad",), - 0x80179540:("cos_rad",), + 0x80179300:("Math_FactorialF",), + 0x80179400:("Math_Factorial",), + 0x801794C4:("Math_PowF",), + 0x801794EC:("Math_SinF",), + 0x80179540:("Math_CosF",), 0x80179594:("Rand_ZeroFloat",), - 0x801795C0:("randPlusMinusPoint5Scaled",), + 0x801795C0:("Rand_CenteredFloat",), 0x801795F0:("Math3D_Normalize",), 0x80179678:("Math3D_PlaneVsLineSegClosestPoint",), 0x80179798:("func_80179798",), diff --git a/tools/namefixer.py b/tools/namefixer.py index 286653e13..a755cc88c 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -18,10 +18,16 @@ simpleReplace = { wordReplace = { # Functions "Actor_GetSwitchFlag": "Flags_GetSwitch", - # "Math_FAtan2F": "Math_Atan2S_XY", // All old Math_FAtan2F should be renamed, so func_80086B30 can be renamed to Math_FAtan2F "Math_Acot2F": "Math_Atan2F_XY", "atan_flip": "Math_Atan2F_XY", "atans": "Math_Atan2S", + "sin_rad": "Math_SinF", + "cos_rad": "Math_CosF", + "randPlusMinusPoint5Scaled": "Rand_CenteredFloat", + # "Math_FAtan2F": "Math_Atan2S_XY", // Old Math_FAtan2F was renamed + "func_80086B30": "Math_FAtan2F", + "func_80086760": "Math_FTanF", + "func_80086C48": "Math_FAcosF", # "SysMatrix_StateAlloc": "Matrix_StateAlloc", # "SysMatrix_StatePush": "Matrix_StatePush", diff --git a/tools/sizes/boot_functions.csv b/tools/sizes/boot_functions.csv index 744376bcc..ecc9eed27 100644 --- a/tools/sizes/boot_functions.csv +++ b/tools/sizes/boot_functions.csv @@ -163,39 +163,39 @@ asm/non_matchings/boot/boot_800862E0/SystemHeap_RunBlockFunc1Reverse.s,SystemHea asm/non_matchings/boot/boot_800862E0/SystemHeap_RunInits.s,SystemHeap_RunInits,0x80086588,0x1C asm/non_matchings/boot/boot_800862E0/SystemHeap_Init.s,SystemHeap_Init,0x800865F8,0xA asm/non_matchings/boot/padsetup/PadSetup_Init.s,PadSetup_Init,0x80086620,0x50 -asm/non_matchings/boot/boot_80086760/func_80086760.s,func_80086760,0x80086760,0xD -asm/non_matchings/boot/boot_80086760/func_80086794.s,func_80086794,0x80086794,0x8 -asm/non_matchings/boot/boot_80086760/func_800867B4.s,func_800867B4,0x800867B4,0x8 -asm/non_matchings/boot/boot_80086760/func_800867D4.s,func_800867D4,0x800867D4,0x8 -asm/non_matchings/boot/boot_80086760/func_800867F4.s,func_800867F4,0x800867F4,0x8 -asm/non_matchings/boot/boot_80086760/func_80086814.s,func_80086814,0x80086814,0x8 -asm/non_matchings/boot/boot_80086760/func_80086834.s,func_80086834,0x80086834,0x13 -asm/non_matchings/boot/boot_80086760/func_80086880.s,func_80086880,0x80086880,0x49 -asm/non_matchings/boot/boot_80086760/func_800869A4.s,func_800869A4,0x800869A4,0x53 -asm/non_matchings/boot/boot_80086760/func_80086AF0.s,func_80086AF0,0x80086AF0,0x10 -asm/non_matchings/boot/boot_80086760/func_80086B30.s,func_80086B30,0x80086B30,0x3A -asm/non_matchings/boot/boot_80086760/func_80086C18.s,func_80086C18,0x80086C18,0xC -asm/non_matchings/boot/boot_80086760/func_80086C48.s,func_80086C48,0x80086C48,0xA -asm/non_matchings/boot/fp/func_80086C70.s,func_80086C70,0x80086C70,0x3 -asm/non_matchings/boot/fp/func_80086C7C.s,func_80086C7C,0x80086C7C,0x3 -asm/non_matchings/boot/fp/func_80086C88.s,func_80086C88,0x80086C88,0x4 -asm/non_matchings/boot/fp/func_80086C98.s,func_80086C98,0x80086C98,0x4 -asm/non_matchings/boot/fp/func_80086CA8.s,func_80086CA8,0x80086CA8,0x3 -asm/non_matchings/boot/fp/func_80086CB4.s,func_80086CB4,0x80086CB4,0x3 -asm/non_matchings/boot/fp/func_80086CC0.s,func_80086CC0,0x80086CC0,0x4 -asm/non_matchings/boot/fp/func_80086CD0.s,func_80086CD0,0x80086CD0,0x4 -asm/non_matchings/boot/fp/func_80086CE0.s,func_80086CE0,0x80086CE0,0x3 -asm/non_matchings/boot/fp/func_80086CEC.s,func_80086CEC,0x80086CEC,0x3 -asm/non_matchings/boot/fp/func_80086CF8.s,func_80086CF8,0x80086CF8,0x4 -asm/non_matchings/boot/fp/func_80086D08.s,func_80086D08,0x80086D08,0x4 -asm/non_matchings/boot/fp/func_80086D18.s,func_80086D18,0x80086D18,0x3 -asm/non_matchings/boot/fp/func_80086D24.s,func_80086D24,0x80086D24,0x3 -asm/non_matchings/boot/fp/func_80086D30.s,func_80086D30,0x80086D30,0x4 -asm/non_matchings/boot/fp/func_80086D40.s,func_80086D40,0x80086D40,0x4 -asm/non_matchings/boot/fp/func_80086D50.s,func_80086D50,0x80086D50,0x7 -asm/non_matchings/boot/fp/func_80086D6C.s,func_80086D6C,0x80086D6C,0x8 -asm/non_matchings/boot/fp/func_80086D8C.s,func_80086D8C,0x80086D8C,0x8 -asm/non_matchings/boot/fp/func_80086DAC.s,func_80086DAC,0x80086DAC,0x9 +asm/non_matchings/boot/boot_80086760/Math_FTanF.s,Math_FTanF,0x80086760,0xD +asm/non_matchings/boot/boot_80086760/Math_FFloorF.s,Math_FFloorF,0x80086794,0x8 +asm/non_matchings/boot/boot_80086760/Math_FCeilF.s,Math_FCeilF,0x800867B4,0x8 +asm/non_matchings/boot/boot_80086760/Math_FRoundF.s,Math_FRoundF,0x800867D4,0x8 +asm/non_matchings/boot/boot_80086760/Math_FTruncF.s,Math_FTruncF,0x800867F4,0x8 +asm/non_matchings/boot/boot_80086760/Math_FNearbyIntF.s,Math_FNearbyIntF,0x80086814,0x8 +asm/non_matchings/boot/boot_80086760/Math_FAtanTaylorQF.s,Math_FAtanTaylorQF,0x80086834,0x13 +asm/non_matchings/boot/boot_80086760/Math_FAtanTaylorF.s,Math_FAtanTaylorF,0x80086880,0x49 +asm/non_matchings/boot/boot_80086760/Math_FAtanContFracF.s,Math_FAtanContFracF,0x800869A4,0x53 +asm/non_matchings/boot/boot_80086760/Math_FAtanF.s,Math_FAtanF,0x80086AF0,0x10 +asm/non_matchings/boot/boot_80086760/Math_FAtan2F.s,Math_FAtan2F,0x80086B30,0x3A +asm/non_matchings/boot/boot_80086760/Math_FAsinF.s,Math_FAsinF,0x80086C18,0xC +asm/non_matchings/boot/boot_80086760/Math_FAcosF.s,Math_FAcosF,0x80086C48,0xA +asm/non_matchings/boot/fp/floorf.s,floorf,0x80086C70,0x3 +asm/non_matchings/boot/fp/floor.s,floor,0x80086C7C,0x3 +asm/non_matchings/boot/fp/lfloorf.s,lfloorf,0x80086C88,0x4 +asm/non_matchings/boot/fp/lfloor.s,lfloor,0x80086C98,0x4 +asm/non_matchings/boot/fp/ceilf.s,ceilf,0x80086CA8,0x3 +asm/non_matchings/boot/fp/ceil.s,ceil,0x80086CB4,0x3 +asm/non_matchings/boot/fp/lceilf.s,lceilf,0x80086CC0,0x4 +asm/non_matchings/boot/fp/lceil.s,lceil,0x80086CD0,0x4 +asm/non_matchings/boot/fp/truncf.s,truncf,0x80086CE0,0x3 +asm/non_matchings/boot/fp/trunc.s,trunc,0x80086CEC,0x3 +asm/non_matchings/boot/fp/ltruncf.s,ltruncf,0x80086CF8,0x4 +asm/non_matchings/boot/fp/ltrunc.s,ltrunc,0x80086D08,0x4 +asm/non_matchings/boot/fp/nearbyintf.s,nearbyintf,0x80086D18,0x3 +asm/non_matchings/boot/fp/nearbyint.s,nearbyint,0x80086D24,0x3 +asm/non_matchings/boot/fp/lnearbyintf.s,lnearbyintf,0x80086D30,0x4 +asm/non_matchings/boot/fp/lnearbyint.s,lnearbyint,0x80086D40,0x4 +asm/non_matchings/boot/fp/roundf.s,roundf,0x80086D50,0x7 +asm/non_matchings/boot/fp/round.s,round,0x80086D6C,0x8 +asm/non_matchings/boot/fp/lroundf.s,lroundf,0x80086D8C,0x8 +asm/non_matchings/boot/fp/lround.s,lround,0x80086DAC,0x9 asm/non_matchings/boot/system_malloc/SystemArena_Malloc.s,SystemArena_Malloc,0x80086DD0,0xA asm/non_matchings/boot/system_malloc/SystemArena_MallocR.s,SystemArena_MallocR,0x80086DF8,0xA asm/non_matchings/boot/system_malloc/SystemArena_Realloc.s,SystemArena_Realloc,0x80086E20,0xC diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 3d5839a69..834b933ef 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -2762,13 +2762,13 @@ asm/non_matchings/code/sys_initial_check/Check_DrawExpansionPakErrorMessage.s,Ch asm/non_matchings/code/sys_initial_check/Check_DrawRegionLockErrorMessage.s,Check_DrawRegionLockErrorMessage,0x801791CC,0x25 asm/non_matchings/code/sys_initial_check/Check_ExpansionPak.s,Check_ExpansionPak,0x80179260,0x11 asm/non_matchings/code/sys_initial_check/Check_RegionIsSupported.s,Check_RegionIsSupported,0x801792A4,0x17 -asm/non_matchings/code/sys_math/func_80179300.s,func_80179300,0x80179300,0x40 -asm/non_matchings/code/sys_math/func_80179400.s,func_80179400,0x80179400,0x31 -asm/non_matchings/code/sys_math/pow_int.s,pow_int,0x801794C4,0xA -asm/non_matchings/code/sys_math/sin_rad.s,sin_rad,0x801794EC,0x15 -asm/non_matchings/code/sys_math/cos_rad.s,cos_rad,0x80179540,0x15 +asm/non_matchings/code/sys_math/Math_FactorialF.s,Math_FactorialF,0x80179300,0x40 +asm/non_matchings/code/sys_math/Math_Factorial.s,Math_Factorial,0x80179400,0x31 +asm/non_matchings/code/sys_math/Math_PowF.s,Math_PowF,0x801794C4,0xA +asm/non_matchings/code/sys_math/Math_SinF.s,Math_SinF,0x801794EC,0x15 +asm/non_matchings/code/sys_math/Math_CosF.s,Math_CosF,0x80179540,0x15 asm/non_matchings/code/sys_math/Rand_ZeroFloat.s,Rand_ZeroFloat,0x80179594,0xB -asm/non_matchings/code/sys_math/randPlusMinusPoint5Scaled.s,randPlusMinusPoint5Scaled,0x801795C0,0xC +asm/non_matchings/code/sys_math/Rand_CenteredFloat.s,Rand_CenteredFloat,0x801795C0,0xC asm/non_matchings/code/sys_math3d/Math3D_Normalize.s,Math3D_Normalize,0x801795F0,0x22 asm/non_matchings/code/sys_math3d/Math3D_PlaneVsLineSegClosestPoint.s,Math3D_PlaneVsLineSegClosestPoint,0x80179678,0x48 asm/non_matchings/code/sys_math3d/func_80179798.s,func_80179798,0x80179798,0xAB From 4cce44466170344b68b146cfbec6d9597d0910bb Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Mon, 5 Jun 2023 20:13:47 -0700 Subject: [PATCH 04/10] Misc cleanup (#1273) * this2 -> thisx * exchangeItemId enums * Sleep_Cycles * ENENCOUNT1_PATH_INDEX_NONE * Fram enums --- include/z64.h | 8 +- src/boot_O2/sleep.c | 4 +- src/overlays/actors/ovl_En_Al/z_en_al.c | 4 +- .../actors/ovl_En_Encount1/z_en_encount1.c | 2 +- .../actors/ovl_En_Encount1/z_en_encount1.h | 2 + src/overlays/actors/ovl_En_In/z_en_in.c | 8 +- src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c | 30 +++---- .../actors/ovl_En_Mushi2/z_en_mushi2.c | 18 ++-- .../actors/ovl_En_Time_Tag/z_en_time_tag.c | 6 +- src/overlays/actors/ovl_En_Tru/z_en_tru.c | 9 +- src/overlays/actors/ovl_En_Tsn/z_en_tsn.c | 4 +- src/overlays/actors/ovl_En_Zos/z_en_zos.c | 4 +- src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c | 89 ++++++++++--------- .../actors/ovl_Obj_Dhouse/z_obj_dhouse.c | 6 +- .../ovl_Obj_Fireshield/z_obj_fireshield.c | 15 ++-- .../ovl_Obj_Flowerpot/z_obj_flowerpot.c | 24 ++--- .../ovl_Obj_Grass_Carry/z_obj_grass_carry.c | 30 +++---- .../actors/ovl_Obj_Iceblock/z_obj_iceblock.c | 21 +++-- .../ovl_Obj_Tokei_Step/z_obj_tokei_step.c | 6 +- 19 files changed, 147 insertions(+), 143 deletions(-) diff --git a/include/z64.h b/include/z64.h index 6418b43ca..637f28dc4 100644 --- a/include/z64.h +++ b/include/z64.h @@ -657,7 +657,7 @@ typedef struct { #define FLASHROM_REQUEST_WRITE 1 #define FLASHROM_REQUEST_READ 2 -typedef enum framCommand { +typedef enum FramCommand { /* Does nothing for FRAM_COMMAND_SET_MODE_READ_AND_STATUS, FRAM_MODE_NOP, FRAM_COMMAND_SET_MODE_STATUS_AND_STATUS Initializes fram to 0xFF in FRAM_MODE_ERASE Writes Contents in FLASHRAM_MODE_WRITE @@ -681,15 +681,15 @@ typedef enum framCommand { FRAM_COMMAND_SET_MODE_READ_AND_STATUS = 0xF0000000, /* unk */ FRAM_COMMAND_UNK_ERASE_OPERATION = 0x3C000000 -} framCommand; +} FramCommand; -typedef enum framMode { +typedef enum FramMode { /* 0 */ FRAM_MODE_NOP, /* 1 */ FRAM_MODE_ERASE, /* 2 */ FRAM_MODE_WRITE, /* 3 */ FRAM_MODE_READ, /* 4 */ FRAM_MODE_STATUS -} framMode; +} FramMode; typedef enum { /* 0 */ VI_MODE_EDIT_STATE_INACTIVE, diff --git a/src/boot_O2/sleep.c b/src/boot_O2/sleep.c index 01a85c5cc..a35abc5b2 100644 --- a/src/boot_O2/sleep.c +++ b/src/boot_O2/sleep.c @@ -2,10 +2,10 @@ void Sleep_Cycles(u64 time) { OSMesgQueue mq; - OSMesg msg; + OSMesg msg[1]; OSTimer timer; - osCreateMesgQueue(&mq, &msg, OS_MESG_BLOCK); + osCreateMesgQueue(&mq, msg, ARRAY_COUNT(msg)); osSetTimer(&timer, time, 0, &mq, NULL); osRecvMesg(&mq, NULL, OS_MESG_BLOCK); } diff --git a/src/overlays/actors/ovl_En_Al/z_en_al.c b/src/overlays/actors/ovl_En_Al/z_en_al.c index 0bbb53686..2568d6617 100644 --- a/src/overlays/actors/ovl_En_Al/z_en_al.c +++ b/src/overlays/actors/ovl_En_Al/z_en_al.c @@ -480,10 +480,10 @@ s32 func_80BDEC2C(EnAl* this, PlayState* play) { if ((this->unk_4C2 & 7) && Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->unk_4C2 &= ~0x1800; - if (player->exchangeItemId == 0x33) { + if (player->exchangeItemId == PLAYER_IA_LETTER_MAMA) { this->unk_4C2 |= 0x800; this->unk_4F4 = player->exchangeItemId; - } else if (player->exchangeItemId != 0) { + } else if (player->exchangeItemId != PLAYER_IA_NONE) { this->unk_4C2 |= 0x1000; this->unk_4F4 = player->exchangeItemId; } diff --git a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c index 3d8224039..737ffd2d3 100644 --- a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c +++ b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.c @@ -67,7 +67,7 @@ void EnEncount1_Init(Actor* thisx, PlayState* play) { } if (this->type == EN_ENCOUNT1_SKULLFISH_2) { this->pathIndex = ENENCOUNT1_GET_PATH_INDEX(&this->actor); - this->path = SubS_GetPathByIndex(play, this->pathIndex, 0x3F); + this->path = SubS_GetPathByIndex(play, this->pathIndex, ENENCOUNT1_PATH_INDEX_NONE); this->spawnTotalMax = -1; this->spawnDistanceMax = -1.0f; } diff --git a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h index 85e1b3ca4..0eb675272 100644 --- a/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h +++ b/src/overlays/actors/ovl_En_Encount1/z_en_encount1.h @@ -10,6 +10,8 @@ #define ENENCOUNT1_GET_SPAWN_TOTAL_MAX(thisx) ((thisx)->params & 0x3F) #define ENENCOUNT1_GET_PATH_INDEX(thisx) ((thisx)->params & 0x3F) // Used only by EN_ENCOUNT1_SKULLFISH_2 which doesn't use SpawnTotalMax +#define ENENCOUNT1_PATH_INDEX_NONE 0x3F + #define ENENCOUNT1_GET_SPAWN_TIME_MIN(thisx) ((thisx)->world.rot.x) // Time to wait between spawning #define ENENCOUNT1_GET_SPAWN_UNUSED_PROP(thisx) ((thisx)->world.rot.y) // Unused spawn property #define ENENCOUNT1_GET_SPAWN_DISTANCE_MAX(thisx) ((thisx)->world.rot.z) // Negative means infinite distance diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index 514074a8f..ad60ad551 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -593,7 +593,7 @@ void func_808F4108(EnIn* this, PlayState* play, u16 textId) { } s32 func_808F4150(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx) { - EnIn* this2 = this; + Actor* thisx = &this->actor; if (msgCtx->choiceIndex == 0) { func_8019F208(); @@ -604,15 +604,15 @@ s32 func_808F4150(PlayState* play, EnIn* this, s32 arg2, MessageContext* msgCtx) } else if (this->unk4AC & 8) { func_808F4108(this, play, 0x3475); } else { - Actor_ContinueText(play, &this->actor, 0x3475); + Actor_ContinueText(play, thisx, 0x3475); } } else { play_sound(NA_SE_SY_ERROR); - Actor_ContinueText(play, &this->actor, 0x3473); + Actor_ContinueText(play, thisx, 0x3473); } } else { func_8019F230(); - Actor_ContinueText(play, &this->actor, 0x3472); + Actor_ContinueText(play, thisx, 0x3472); } return 0; } diff --git a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c index 5d7a5fd5b..cfc3efdc0 100644 --- a/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c +++ b/src/overlays/actors/ovl_En_Kusa2/z_en_kusa2.c @@ -960,14 +960,14 @@ void func_80A5D7A4(EnKusa2* this) { } void func_80A5D7C4(EnKusa2* this, PlayState* play) { - EnKusa2* this2 = this; + Actor* thisx = &this->actor; s16 sp2A; if (Actor_HasParent(&this->actor, play)) { - SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_PL_PULL_UP_PLANT); - this->actor.shape.shadowDraw = ActorShadow_DrawCircle; - this->actor.shape.shadowAlpha = 60; - this->actor.room = -1; + SoundSource_PlaySfxAtFixedWorldPos(play, &thisx->world.pos, 20, NA_SE_PL_PULL_UP_PLANT); + thisx->shape.shadowDraw = ActorShadow_DrawCircle; + thisx->shape.shadowAlpha = 60; + thisx->room = -1; func_80A5BD94(this); func_80A5D964(this); return; @@ -975,23 +975,23 @@ void func_80A5D7C4(EnKusa2* this, PlayState* play) { if (!func_80A5BFD8(this, play)) { if ((this->unk_1C0 != NULL) && (this->unk_1C0->unk_1BE != 0)) { - this->actor.shape.shadowDraw = ActorShadow_DrawCircle; - if (this2->unk_1C0 != NULL) { - sp2A = Actor_WorldYawTowardActor(&this->unk_1C0->actor, &this->actor); - this->actor.home.rot.y = Rand_S16Offset(-1500, 3000) + sp2A; + thisx->shape.shadowDraw = ActorShadow_DrawCircle; + if (this->unk_1C0 != NULL) { + sp2A = Actor_WorldYawTowardActor(&this->unk_1C0->actor, thisx); + thisx->home.rot.y = Rand_S16Offset(-1500, 3000) + sp2A; } this->unk_1C8 = Rand_S16Offset(72, 16); - this->actor.velocity.y = 8.8f; - Actor_PlaySfx(&this->actor, NA_SE_EN_NUTS_WALK); + thisx->velocity.y = 8.8f; + Actor_PlaySfx(thisx, NA_SE_EN_NUTS_WALK); func_80A5DC70(this); } - if (this->actor.xzDistToPlayer < 600.0f) { + if (thisx->xzDistToPlayer < 600.0f) { CollisionCheck_SetAC(play, &play->colChkCtx, &this->collider.base); - if (this->actor.xzDistToPlayer < 400.0f) { + if (thisx->xzDistToPlayer < 400.0f) { CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); - if (this->actor.xzDistToPlayer < 100.0f) { - Actor_OfferCarry(&this->actor, play); + if (thisx->xzDistToPlayer < 100.0f) { + Actor_OfferCarry(thisx, play); } } } 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 ebea9196b..98b01d728 100644 --- a/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c +++ b/src/overlays/actors/ovl_En_Mushi2/z_en_mushi2.c @@ -851,14 +851,14 @@ void func_80A6A508(Actor* thisx) { } void func_80A6A5C0(EnMushi2* this, PlayState* play) { - EnMushi2* this2 = this; + Actor* thisx = &this->actor; func_80A69D3C(this); - Math_SmoothStepToF(&this->actor.speed, this->unk_35C, 0.1f, 0.5f, 0.0f); + Math_SmoothStepToF(&thisx->speed, this->unk_35C, 0.1f, 0.5f, 0.0f); if (this->unk_354 < SQ(40.0f)) { f32 temp = 1.0f - ((SQ(40.0f) - this->unk_354) * (1.0f / (10.0f * SQ(40.0f)))); - this->actor.speed *= temp; + thisx->speed *= temp; } func_80A68ED8(this); @@ -867,8 +867,8 @@ void func_80A6A5C0(EnMushi2* this, PlayState* play) { func_80A69388(this); } - this->skelAnime.playSpeed = this->actor.speed * 1.6f; - this2->skelAnime.playSpeed = CLAMP(this2->skelAnime.playSpeed, 0.1f, 1.9f); + this->skelAnime.playSpeed = thisx->speed * 1.6f; + this->skelAnime.playSpeed = CLAMP(this->skelAnime.playSpeed, 0.1f, 1.9f); if ((this->unk_36A <= 0) || func_80A68BA0(this)) { func_80A6B078(this); @@ -895,9 +895,9 @@ void func_80A6A794(EnMushi2* this) { } void func_80A6A824(EnMushi2* this, PlayState* play) { - EnMushi2* this2 = this; + Actor* thisx = &this->actor; - Math_SmoothStepToF(&this->actor.speed, this->unk_35C, 0.1f, 0.5f, 0.0f); + Math_SmoothStepToF(&thisx->speed, this->unk_35C, 0.1f, 0.5f, 0.0f); func_80A68ED8(this); func_80A697C4(this, play); @@ -905,8 +905,8 @@ void func_80A6A824(EnMushi2* this, PlayState* play) { func_80A69388(this); } - this->skelAnime.playSpeed = (Rand_ZeroOne() * 0.8f) + (this->actor.speed * 1.2f); - this2->skelAnime.playSpeed = CLAMP(this2->skelAnime.playSpeed, 0.0f, 1.9f); + this->skelAnime.playSpeed = (Rand_ZeroOne() * 0.8f) + (thisx->speed * 1.2f); + this->skelAnime.playSpeed = CLAMP(this->skelAnime.playSpeed, 0.0f, 1.9f); if ((this->unk_36A <= 0) || func_80A68BA0(this)) { func_80A6B078(this); diff --git a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c index 10f3ea529..dfcd1bad0 100644 --- a/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c +++ b/src/overlays/actors/ovl_En_Time_Tag/z_en_time_tag.c @@ -114,12 +114,12 @@ void EnTimeTag_RooftopOath_Cutscene(EnTimeTag* this, PlayState* play) { } void EnTimeTag_RooftopOath_Wait(EnTimeTag* this, PlayState* play) { - EnTimeTag* this2 = this; + Actor* thisx = &this->actor; if ((play->msgCtx.ocarinaMode == 3) && (play->msgCtx.lastPlayedSong == OCARINA_SONG_OATH)) { - if (this->actor.csId != CS_ID_NONE) { + if (thisx->csId != CS_ID_NONE) { this->actionFunc = EnTimeTag_RooftopOath_Cutscene; - CutsceneManager_Queue(this2->actor.csId); + CutsceneManager_Queue(thisx->csId); gSaveContext.timerStates[TIMER_ID_MOON_CRASH] = TIMER_STATE_OFF; } play->msgCtx.ocarinaMode = 4; diff --git a/src/overlays/actors/ovl_En_Tru/z_en_tru.c b/src/overlays/actors/ovl_En_Tru/z_en_tru.c index a11d00cdb..895d1d406 100644 --- a/src/overlays/actors/ovl_En_Tru/z_en_tru.c +++ b/src/overlays/actors/ovl_En_Tru/z_en_tru.c @@ -692,10 +692,11 @@ s32 func_80A872AC(EnTru* this, PlayState* play) { } this->unk_34E &= ~(0x4000 | 0x2000); - if ((player->exchangeItemId == 35) || (player->exchangeItemId == 36)) { + if ((player->exchangeItemId == PLAYER_IA_BOTTLE_POTION_RED) || + (player->exchangeItemId == PLAYER_IA_BOTTLE_POTION_BLUE)) { this->unk_34E |= 0x2000; this->unk_38C = player->exchangeItemId; - } else if (player->exchangeItemId != 0) { + } else if (player->exchangeItemId != PLAYER_IA_NONE) { this->unk_34E |= 0x4000; } @@ -972,8 +973,8 @@ s32 func_80A87B48(Actor* thisx, PlayState* play) { this->actor.shape.shadowDraw = NULL; this->unk_34E |= (0x200 | 0x8); this->unk_34E &= ~0x800; - if (player->exchangeItemId != 0) { - player->exchangeItemId = 0; + if (player->exchangeItemId != PLAYER_IA_NONE) { + player->exchangeItemId = PLAYER_IA_NONE; } EnTru_ChangeAnim(this, KOUME_ANIM_HOVER1); } diff --git a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c index 894c07002..a404ac817 100644 --- a/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c +++ b/src/overlays/actors/ovl_En_Tsn/z_en_tsn.c @@ -420,7 +420,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { case 0x1075: case 0x1078: - player->exchangeItemId = 0; + player->exchangeItemId = PLAYER_IA_NONE; Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); Animation_MorphToLoop(&this->unk_1D8->skelAnime, &object_tsn_Anim_0092FC, -10.0f); break; @@ -448,7 +448,7 @@ void func_80AE0704(EnTsn* this, PlayState* play) { break; case 0x107B: - player->exchangeItemId = 0; + player->exchangeItemId = PLAYER_IA_NONE; Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); Animation_MorphToLoop(&this->unk_1D8->skelAnime, &object_tsn_Anim_0092FC, -10.0f); break; diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index bd8ff3435..c3192cec1 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -417,7 +417,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { switch (play->msgCtx.currentTextId) { case 0x1237: - player->exchangeItemId = 0; + player->exchangeItemId = PLAYER_IA_NONE; case 0x1238: case 0x123A: @@ -436,7 +436,7 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { case 0x1232: case 0x1241: - player->exchangeItemId = 0; + player->exchangeItemId = PLAYER_IA_NONE; case 0x1239: case 0x1246: diff --git a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c index 4971b39bc..d1f19032f 100644 --- a/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c +++ b/src/overlays/actors/ovl_Obj_Chan/z_obj_chan.c @@ -25,7 +25,7 @@ void ObjChan_Destroy(Actor* thisx, PlayState* play); void ObjChan_Update(Actor* thisx, PlayState* play); void ObjChan_Draw(Actor* thisx, PlayState* play); -void ObjChan_ChandelierAction(ObjChan* this2, PlayState* play); +void ObjChan_ChandelierAction(ObjChan* this, PlayState* play); void ObjChan_PotAction(ObjChan* this, PlayState* play); ActorInit Obj_Chan_InitVars = { @@ -64,7 +64,7 @@ static InitChainEntry sInitChain[] = { ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP), }; -void ObjChan_InitChandelier(ObjChan* this2, PlayState* play); +void ObjChan_InitChandelier(ObjChan* this, PlayState* play); void ObjChan_InitPot(ObjChan* this, PlayState* play); void ObjChan_CreateSmashEffects(ObjChan* this, PlayState* play); void ObjChan_DrawPot(Actor* thisx, PlayState* play); @@ -99,10 +99,14 @@ void ObjChan_Init(Actor* thisx, PlayState* play) { this->actor.shape.rot.y = 0; ObjChan_InitChandelier(this, play); break; + case OBJCHAN_SUBTYPE_POT: this->actor.draw = ObjChan_DrawPot; ObjChan_InitPot(this, play); break; + + default: + break; } } @@ -150,46 +154,44 @@ void ObjChan_CalculatePotPosition(Vec3f* childPosOut, Vec3s* childRotOut, Vec3f* childRotOut->y += childAngle; } -//! TODO: Possibly takes actor and recasts -void ObjChan_InitChandelier(ObjChan* this2, PlayState* play) { - ObjChan* this = this2; +void ObjChan_InitChandelier(ObjChan* this, PlayState* play) { + Actor* thisx = &this->actor; s32 i; - ObjChan* temp_v0; + ObjChan* pot; Vec3f childPos; Vec3s childRot; CollisionPoly* sp94; s32 sp90; Vec3f sp84; - Math_Vec3f_Copy(&this->unk1C0, &this->actor.world.pos); + Math_Vec3f_Copy(&this->unk1C0, &thisx->world.pos); - Math_Vec3f_Copy(&sp84, &this->actor.world.pos); + Math_Vec3f_Copy(&sp84, &thisx->world.pos); sp84.y += 1600.0f; - if (BgCheck_EntityLineTest1(&play->colCtx, &this->actor.world.pos, &sp84, &this->unk1C0, &sp94, false, false, true, - true, &sp90)) { - this->unk1CC = this->actor.world.pos.y - this->unk1C0.y; + if (BgCheck_EntityLineTest1(&play->colCtx, &thisx->world.pos, &sp84, &this->unk1C0, &sp94, false, false, true, true, + &sp90)) { + this->unk1CC = thisx->world.pos.y - this->unk1C0.y; } else { - Actor_Kill(&this->actor); + Actor_Kill(thisx); return; } for (i = 0; i < 5; i++) { - ObjChan_CalculatePotPosition(&childPos, &childRot, &this->actor.world.pos, &this->actor.shape.rot, + ObjChan_CalculatePotPosition(&childPos, &childRot, &thisx->world.pos, &thisx->shape.rot, (s32)DEG_TO_BINANG_ALT3(i * 360.0f / 5.0f) + this->rotation); - temp_v0 = (ObjChan*)Actor_SpawnAsChildAndCutscene(&play->actorCtx, play, ACTOR_OBJ_CHAN, childPos.x, childPos.y, - childPos.z, childRot.x, childRot.y, childRot.z, - (this->actor.params & 0xFFF) | 0x1000, this->actor.csId, - this->actor.halfDaysBits, &this->actor); - if (temp_v0 != NULL) { - this->pots[i] = temp_v0; - temp_v0->myPotIndex = i; - temp_v0->actor.csId = this->actor.csId; + pot = (ObjChan*)Actor_SpawnAsChildAndCutscene( + &play->actorCtx, play, ACTOR_OBJ_CHAN, childPos.x, childPos.y, childPos.z, childRot.x, childRot.y, + childRot.z, (thisx->params & 0xFFF) | 0x1000, thisx->csId, thisx->halfDaysBits, thisx); + if (pot != NULL) { + this->pots[i] = pot; + pot->myPotIndex = i; + pot->actor.csId = thisx->csId; } else { - Actor_Kill(&this->actor); + Actor_Kill(thisx); } } - if (Flags_GetSwitch(play, this->actor.params & 0x7F)) { + if (Flags_GetSwitch(play, thisx->params & 0x7F)) { this->stateFlags |= OBJCHAN_STATE_FIRE_DELAY; this->stateFlags |= OBJCHAN_STATE_ON_FIRE; @@ -211,9 +213,9 @@ void ObjChan_InitChandelier(ObjChan* this2, PlayState* play) { } //! TODO: More descriptive name than Action? -void ObjChan_ChandelierAction(ObjChan* this2, PlayState* play) { - ObjChan* this = this2; - ObjChan* temp; +void ObjChan_ChandelierAction(ObjChan* this, PlayState* play) { + Actor* thisx = &this->actor; + ObjChan* pot; s32 i; Vec3f sp60; Vec3s sp58; @@ -230,7 +232,7 @@ void ObjChan_ChandelierAction(ObjChan* this2, PlayState* play) { this->unk1D0 = 0.0f; } } - this->actor.shape.rot.z = (Math_SinS(this->unk1D4) * this->unk1D0); + thisx->shape.rot.z = (Math_SinS(this->unk1D4) * this->unk1D0); if ((this->stateFlags & OBJCHAN_STATE_START_CUTSCENE) && SubS_StartCutscene(&this->actor, this->csIdList[0], CS_ID_NONE, SUBS_CUTSCENE_WITH_PLAYER)) { this->stateFlags |= OBJCHAN_STATE_CUTSCENE; @@ -240,34 +242,34 @@ void ObjChan_ChandelierAction(ObjChan* this2, PlayState* play) { this->stateFlags &= ~OBJCHAN_STATE_CUTSCENE; CutsceneManager_Stop(this->csIdList[0]); } - Matrix_RotateYS(this->actor.shape.rot.y, MTXMODE_NEW); - Matrix_RotateXS(this->actor.shape.rot.x, MTXMODE_APPLY); - Matrix_RotateZS(this->actor.shape.rot.z, MTXMODE_APPLY); + Matrix_RotateYS(thisx->shape.rot.y, MTXMODE_NEW); + Matrix_RotateXS(thisx->shape.rot.x, MTXMODE_APPLY); + Matrix_RotateZS(thisx->shape.rot.z, MTXMODE_APPLY); Matrix_RotateYS(this->rotation, MTXMODE_APPLY); - Matrix_MultVecY(this->unk1CC, &this->actor.world.pos); - Math_Vec3f_Sum(&this->actor.world.pos, &this->unk1C0, &this->actor.world.pos); + Matrix_MultVecY(this->unk1CC, &thisx->world.pos); + Math_Vec3f_Sum(&thisx->world.pos, &this->unk1C0, &thisx->world.pos); Collider_UpdateCylinder(&this->actor, &this->collider); for (i = 0; i < 5; i++) { - temp = this->pots[i]; - if (temp != NULL) { - ObjChan_CalculatePotPosition(&sp60, &sp58, &this->actor.world.pos, &this->actor.shape.rot, + pot = this->pots[i]; + if (pot != NULL) { + ObjChan_CalculatePotPosition(&sp60, &sp58, &thisx->world.pos, &thisx->shape.rot, (s32)DEG_TO_BINANG_ALT3(i * 360.0f / 5.0f) + this->rotation); - Math_Vec3f_Copy(&temp->actor.world.pos, &sp60); - Math_Vec3s_Copy(&temp->actor.shape.rot, &this->actor.shape.rot); - temp->actor.shape.rot.y = this->rotation; - Math_Vec3f_ToVec3s(&temp->collider.dim.pos, &temp->actor.world.pos); + Math_Vec3f_Copy(&pot->actor.world.pos, &sp60); + Math_Vec3s_Copy(&pot->actor.shape.rot, &thisx->shape.rot); + pot->actor.shape.rot.y = this->rotation; + Math_Vec3f_ToVec3s(&pot->collider.dim.pos, &pot->actor.world.pos); } } if ((this->collider.base.acFlags & AC_HIT) && (this->collider.info.acHitInfo->toucher.dmgFlags & 0x800)) { - Flags_SetSwitch(play, this->actor.params & 0x7F); + Flags_SetSwitch(play, thisx->params & 0x7F); } - if (Flags_GetSwitch(play, this->actor.params & 0x7F)) { + if (Flags_GetSwitch(play, thisx->params & 0x7F)) { if (!(this->stateFlags & OBJCHAN_STATE_FIRE_DELAY)) { this->rotationSpeed = 0; this->flameSize = 0.0f; for (i = 0; i < 5; i++) { - temp = this->pots[i]; - if (temp != NULL) { + pot = this->pots[i]; + if (pot != NULL) { this->pots[i]->stateFlags |= OBJCHAN_STATE_FIRE_DELAY; this->pots[i]->fireDelayFrames = 20 + i * 5; this->pots[i]->flameSize = 0.0f; @@ -338,6 +340,7 @@ void ObjChan_CreateSmashEffects(ObjChan* this, PlayState* play) { for (temp_s2 = 0, temp_s1 = 0; temp_s2 != 18; temp_s2++, temp_s1 += 0x4E20) { f32 sin = Math_SinS(temp_s1); f32 cos = Math_CosS(temp_s1); + spDC.x = sin * 8.0f; spDC.y = Rand_ZeroOne() * 12.0f + 2.0f; spDC.z = cos * 8.0f; diff --git a/src/overlays/actors/ovl_Obj_Dhouse/z_obj_dhouse.c b/src/overlays/actors/ovl_Obj_Dhouse/z_obj_dhouse.c index c4e61efa3..c1b46fce7 100644 --- a/src/overlays/actors/ovl_Obj_Dhouse/z_obj_dhouse.c +++ b/src/overlays/actors/ovl_Obj_Dhouse/z_obj_dhouse.c @@ -167,8 +167,8 @@ void func_80B12A88(Actor* thisx) { } } -void func_80B12B38(ObjDhouse* this2, PlayState* play) { - ObjDhouse* this = this2; +void func_80B12B38(ObjDhouse* this, PlayState* play) { + Actor* thisx = &this->dyna.actor; s32 i; f32 temp_f0; CollisionPoly* sp90; @@ -201,7 +201,7 @@ void func_80B12B38(ObjDhouse* this2, PlayState* play) { phi_s3 = false; if (ptr->unk_0C.y < 0.0f) { func_80B12A50(ptr, ptr3, &sp80); - temp_f0 = BgCheck_EntityRaycastFloor5(&play->colCtx, &sp90, &sp7C, &this->dyna.actor, &sp80); + temp_f0 = BgCheck_EntityRaycastFloor5(&play->colCtx, &sp90, &sp7C, thisx, &sp80); if (((sp80.y - 35.0f) < temp_f0) && (temp_f0 > (BGCHECK_Y_MIN + 1.0f))) { phi_s3 = true; } diff --git a/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c b/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c index 40c363dca..e672780de 100644 --- a/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c +++ b/src/overlays/actors/ovl_Obj_Fireshield/z_obj_fireshield.c @@ -315,8 +315,8 @@ void ObjFireshield_Destroy(Actor* thisx, PlayState* play) { } void ObjFireshield_Update(Actor* thisx, PlayState* play) { + s32 pad; ObjFireshield* this = THIS; - ObjFireshield* this2 = THIS; s32 sp44 = OBJFIRESHIELD_GET_ROTX(&this->actor); s32 sp40 = OBJFIRESHIELD_GET_7F(&this->actor); s32 temp_a0; @@ -342,12 +342,12 @@ void ObjFireshield_Update(Actor* thisx, PlayState* play) { this->collider.base.atFlags &= ~AT_HIT; } else if (this->collider.base.atFlags & AT_HIT) { this->collider.base.atFlags &= ~AT_HIT; - func_800B8D98(play, &this->actor, 5.0f, this->actor.yawTowardsPlayer, 1.0f); + func_800B8D98(play, thisx, 5.0f, thisx->yawTowardsPlayer, 1.0f); } func_80A4CE28(this, play); - this->actor.world.pos.y = ((sp44 ? 144.0f : -144.0f) * (1.0f - this2->unk_198)) + this->actor.home.pos.y; + thisx->world.pos.y = ((sp44 ? 144.0f : -144.0f) * (1.0f - this->unk_198)) + thisx->home.pos.y; this->unk_1A6 = this->unk_198 * 255.0f; @@ -357,13 +357,12 @@ void ObjFireshield_Update(Actor* thisx, PlayState* play) { this->collider.dim.height = this->unk_198 * 80.0f; if (sp44) { - this->collider.dim.yShift = - (s32)(this->actor.home.pos.y - this->actor.world.pos.y) - this->collider.dim.height; + this->collider.dim.yShift = (s32)(thisx->home.pos.y - thisx->world.pos.y) - this->collider.dim.height; } else { - this->collider.dim.yShift = this->actor.home.pos.y - this->actor.world.pos.y; + this->collider.dim.yShift = thisx->home.pos.y - thisx->world.pos.y; } - func_800B9010(&this->actor, NA_SE_EV_BURNING - SFX_FLAG); + func_800B9010(thisx, NA_SE_EV_BURNING - SFX_FLAG); if (player->transformation == PLAYER_FORM_GORON) { this->collider.info.toucher.damage = 0; @@ -373,7 +372,7 @@ void ObjFireshield_Update(Actor* thisx, PlayState* play) { this->collider.info.toucher.effect = 1; } - Collider_UpdateCylinder(&this->actor, &this->collider); + Collider_UpdateCylinder(thisx, &this->collider); CollisionCheck_SetAT(play, &play->colChkCtx, &this->collider.base); CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); } diff --git a/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c b/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c index 844f52506..aca30fe92 100644 --- a/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c +++ b/src/overlays/actors/ovl_Obj_Flowerpot/z_obj_flowerpot.c @@ -22,7 +22,7 @@ void func_80A1C838(ObjFlowerpot* this, PlayState* play); void func_80A1CBF8(ObjFlowerpot* this); void func_80A1CC0C(ObjFlowerpot* this, PlayState* play); void func_80A1CD10(ObjFlowerpot* this); -void func_80A1CEF4(ObjFlowerpot* this2, PlayState* play); +void func_80A1CEF4(ObjFlowerpot* this, PlayState* play); u32 D_80A1D830; MtxF D_80A1D838[8]; @@ -589,8 +589,8 @@ void func_80A1CD10(ObjFlowerpot* this) { } } -void func_80A1CEF4(ObjFlowerpot* this2, PlayState* play) { - ObjFlowerpot* this = this2; +void func_80A1CEF4(ObjFlowerpot* this, PlayState* play) { + Actor* thisx = &this->actor; s32 sp28 = this->collider.elements[0].info.toucherFlags & TOUCH_HIT; if (sp28) { @@ -603,7 +603,7 @@ void func_80A1CEF4(ObjFlowerpot* this2, PlayState* play) { func_80A1C62C(this, play); - if ((this->actor.bgCheckFlags & (BGCHECKFLAG_GROUND | BGCHECKFLAG_GROUND_TOUCH | BGCHECKFLAG_WALL)) || sp28 || + if ((thisx->bgCheckFlags & (BGCHECKFLAG_GROUND | BGCHECKFLAG_GROUND_TOUCH | BGCHECKFLAG_WALL)) || sp28 || (this->unk_1E8 <= 0)) { if (!(this->unk_1EA & 2)) { func_80A1B914(this, play); @@ -613,11 +613,11 @@ void func_80A1CEF4(ObjFlowerpot* this2, PlayState* play) { } func_80A1BA44(this, play); func_80A1B994(this, play); - Actor_Kill(&this->actor); + Actor_Kill(thisx); return; } - if (this->actor.bgCheckFlags & BGCHECKFLAG_WATER_TOUCH) { + if (thisx->bgCheckFlags & BGCHECKFLAG_WATER_TOUCH) { if (!(this->unk_1EA & 2)) { func_80A1B914(this, play); func_80A1C328(this, play); @@ -626,22 +626,22 @@ void func_80A1CEF4(ObjFlowerpot* this2, PlayState* play) { } func_80A1BD80(this, play); func_80A1B994(this, play); - SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 40, NA_SE_EV_DIVE_INTO_WATER_L); - Actor_Kill(&this->actor); + SoundSource_PlaySfxAtFixedWorldPos(play, &thisx->world.pos, 40, NA_SE_EV_DIVE_INTO_WATER_L); + Actor_Kill(thisx); return; } - Actor_MoveWithGravity(&this->actor); + Actor_MoveWithGravity(thisx); if (!(this->unk_1EA & 2)) { - D_80A1D3F8 += (s16)(this->actor.shape.rot.x * -0.06f); + D_80A1D3F8 += (s16)(thisx->shape.rot.x * -0.06f); } else { Math_StepToS(&D_80A1D3F8, 0, 80); Math_StepToS(&D_80A1D3FC, 0, 20); } - this->actor.shape.rot.x += D_80A1D3F8; - this->actor.shape.rot.y += D_80A1D3FC; + thisx->shape.rot.x += D_80A1D3F8; + thisx->shape.rot.y += D_80A1D3FC; func_80A1C5E8(this, play); CollisionCheck_SetOC(play, &play->colChkCtx, &this->collider.base); diff --git a/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c b/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c index e46c5da44..795d740f1 100644 --- a/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c +++ b/src/overlays/actors/ovl_Obj_Grass_Carry/z_obj_grass_carry.c @@ -208,31 +208,31 @@ void func_809AB474(ObjGrassCarry* this) { } void func_809AB4A8(ObjGrassCarry* this, PlayState* play) { - ObjGrassCarry* this2 = this; + Actor* thisx = &this->actor; - if (Actor_HasParent(&this->actor, play)) { + if (Actor_HasParent(thisx, play)) { func_809AB5FC(this); if (this->unk_194 != NULL) { this->unk_194->unk_0F |= 4; } - this->actor.draw = func_809ABB7C; - this->actor.shape.shadowDraw = ActorShadow_DrawCircle; - this->actor.shape.shadowAlpha = 60; - this->actor.shape.shadowScale = 1.0f; + thisx->draw = func_809ABB7C; + thisx->shape.shadowDraw = ActorShadow_DrawCircle; + thisx->shape.shadowAlpha = 60; + thisx->shape.shadowScale = 1.0f; this->unk_190->unk_3292 ^= 1; - this->actor.room = -1; - SoundSource_PlaySfxAtFixedWorldPos(play, &this->actor.world.pos, 20, NA_SE_PL_PULL_UP_PLANT); + thisx->room = -1; + SoundSource_PlaySfxAtFixedWorldPos(play, &thisx->world.pos, 20, NA_SE_PL_PULL_UP_PLANT); } else if (this->unk_190->unk_3294 != NULL) { Player* player = GET_PLAYER(play); this->unk_194 = this->unk_190->unk_3294; - Math_Vec3f_Copy(&this->actor.world.pos, &this->unk_194->unk_00); - this->actor.shape.rot.y = this->actor.world.rot.y = this->unk_194->unk_0C; - this->unk_198 = this2->unk_194->unk_0E; - this->actor.xzDistToPlayer = Actor_WorldDistXZToActor(&this->actor, &player->actor); - this->actor.playerHeightRel = Actor_HeightDiff(&this->actor, &player->actor); - this->actor.xyzDistToPlayerSq = SQ(this->actor.xzDistToPlayer) + SQ(this->actor.playerHeightRel); - this->actor.yawTowardsPlayer = Actor_WorldYawTowardActor(&this->actor, &player->actor); + Math_Vec3f_Copy(&thisx->world.pos, &this->unk_194->unk_00); + thisx->shape.rot.y = thisx->world.rot.y = this->unk_194->unk_0C; + this->unk_198 = this->unk_194->unk_0E; + thisx->xzDistToPlayer = Actor_WorldDistXZToActor(&this->actor, &player->actor); + thisx->playerHeightRel = Actor_HeightDiff(&this->actor, &player->actor); + thisx->xyzDistToPlayerSq = SQ(thisx->xzDistToPlayer) + SQ(thisx->playerHeightRel); + thisx->yawTowardsPlayer = Actor_WorldYawTowardActor(&this->actor, &player->actor); Actor_OfferCarry(&this->actor, play); } } diff --git a/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c b/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c index b5547fdad..0ae8abe18 100644 --- a/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c +++ b/src/overlays/actors/ovl_Obj_Iceblock/z_obj_iceblock.c @@ -239,12 +239,12 @@ void func_80A237A4(ObjIceblock* this) { ((this->unk_244 - ((600.0f * this->dyna.actor.scale.y) - 90.0f)) + (sp20 * ptr->unk_08)) + ptr->unk_00; } -void func_80A23938(ObjIceblock* this2) { - ObjIceblock* this = this2; +void func_80A23938(ObjIceblock* this) { + Actor* thisx = &this->dyna.actor; if (this->unk_1B0 & 0x80) { - Math_ScaledStepToS(&this->dyna.actor.shape.rot.x, 0, 400); - Math_ScaledStepToS(&this->dyna.actor.shape.rot.z, 0, 400); + Math_ScaledStepToS(&thisx->shape.rot.x, 0, 400); + Math_ScaledStepToS(&thisx->shape.rot.z, 0, 400); } else { ObjIceBlockUnkStruct4* ptr = &this->unk_27C; f32 phi_f0; @@ -252,7 +252,7 @@ void func_80A23938(ObjIceblock* this2) { if (this->unk_1B0 & 0x20) { phi_f0 = 0.3f; - ptr->unk_14 = this->dyna.actor.yawTowardsPlayer; + ptr->unk_14 = thisx->yawTowardsPlayer; } else { phi_f0 = 0.08f; } @@ -264,16 +264,15 @@ void func_80A23938(ObjIceblock* this2) { temp = ptr->unk_16 - ptr->unk_14; - ptr->unk_18 += - (s16)(temp * -0.04f * this->dyna.actor.xzDistToPlayer * this->dyna.actor.scale.x * (1.0f / 600.0f)); + ptr->unk_18 += (s16)(temp * -0.04f * thisx->xzDistToPlayer * thisx->scale.x * (1.0f / 600.0f)); ptr->unk_18 = func_80A23090(ptr->unk_18, 50, 800); ptr->unk_16 += ptr->unk_18; - this->dyna.actor.shape.rot.x = Math_CosS(ptr->unk_16) * ptr->unk_20 * ptr->unk_1C; - this->dyna.actor.shape.rot.x = CLAMP(this->dyna.actor.shape.rot.x, -2000, 2000); + thisx->shape.rot.x = Math_CosS(ptr->unk_16) * ptr->unk_20 * ptr->unk_1C; + thisx->shape.rot.x = CLAMP(thisx->shape.rot.x, -2000, 2000); - this->dyna.actor.shape.rot.z = -Math_SinS(ptr->unk_16) * ptr->unk_20 * ptr->unk_1C; - this->dyna.actor.shape.rot.z = CLAMP(this->dyna.actor.shape.rot.z, -2000, 2000); + thisx->shape.rot.z = -Math_SinS(ptr->unk_16) * ptr->unk_20 * ptr->unk_1C; + thisx->shape.rot.z = CLAMP(thisx->shape.rot.z, -2000, 2000); } } diff --git a/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c b/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c index b7f7ece6e..a198f4a0f 100644 --- a/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c +++ b/src/overlays/actors/ovl_Obj_Tokei_Step/z_obj_tokei_step.c @@ -140,7 +140,7 @@ void ObjTokeiStep_InitTimers(ObjTokeiStep* this) { } s32 ObjTokeiStep_OpenProcess(ObjTokeiStep* this, PlayState* play) { - ObjTokeiStep* this2 = this; + Actor* thisx = &this->dyna.actor; s32 i; ObjTokeiStepPanel* panel; f32 finalPosY; @@ -179,8 +179,8 @@ s32 ObjTokeiStep_OpenProcess(ObjTokeiStep* this, PlayState* play) { panel->pos.y += finalPosY; } if (panel->numBounces == 1) { - ObjTokeiStep_SpawnDust(this2, panel, play); - ObjTokeiStep_RequestQuakeAndRumble(this2, play); + ObjTokeiStep_SpawnDust(this, panel, play); + ObjTokeiStep_RequestQuakeAndRumble(this, play); } } } From a0701c170b5861572eab29bc9f0aed92aa0e11d9 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Tue, 6 Jun 2023 08:54:18 -0400 Subject: [PATCH 05/10] `z64game.h` (#1250) * z64game.h * grrrrr * fix missing stuff * Update include/z64game.h Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Update include/z64game.h Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * review * global.h to the top * reiew * fix --------- Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> --- include/functions.h | 19 ---- include/macros.h | 15 --- include/variables.h | 5 +- include/z64.h | 49 +-------- include/z64game.h | 104 ++++++++++++++++++ include/z_prenmi.h | 10 +- include/z_title_setup.h | 8 +- src/code/game.c | 6 +- src/code/z_prenmi.c | 8 +- .../gamestates/ovl_daytelop/z_daytelop.c | 3 +- .../gamestates/ovl_daytelop/z_daytelop.h | 10 +- .../ovl_file_choose/z_file_select.h | 5 + .../gamestates/ovl_opening/z_opening.c | 3 + .../gamestates/ovl_opening/z_opening.h | 18 +-- src/overlays/gamestates/ovl_select/z_select.h | 7 +- src/overlays/gamestates/ovl_title/z_title.h | 8 +- 16 files changed, 155 insertions(+), 123 deletions(-) create mode 100644 include/z64game.h diff --git a/include/functions.h b/include/functions.h index 71aa14729..626bfc261 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1874,25 +1874,6 @@ void AudioMgr_ThreadEntry(void* arg); void AudioMgr_Unlock(AudioMgr* audioMgr); void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr); -void Game_UpdateFramerateVariables(s32 divisor); -void Game_SetFramerateDivisor(GameState* gameState, s32 divisor); -void GameState_SetFBFilter(Gfx** gfx, void* zbuffer); -void Game_Nop80173534(GameState* gameState); -void GameState_Draw(GameState* gameState, GraphicsContext* gfxCtx); -void GameState_SetFrameBuffer(GraphicsContext* gfxCtx); -void func_801736DC(GraphicsContext* gfxCtx); -void Game_UpdateInput(GameState* gameState); -void Game_Update(GameState* gameState); -void Game_IncrementFrameCount(GameState* gameState); -void GameState_InitArena(GameState* gameState, size_t size); -void GameState_Realloc(GameState* gameState, size_t size); -void GameState_Init(GameState* gameState, GameStateFunc init, GraphicsContext* gfxCtx); -void GameState_Destroy(GameState* gameState); -GameStateFunc GameState_GetInit(GameState* gameState); -size_t GameState_GetSize(GameState* gameState); -u32 GameState_IsRunning(GameState* gameState); -s32 GameState_GetArenaSize(GameState* gameState); -s32 func_80173B48(GameState* gameState); void GameAlloc_Log(GameAlloc* this); void* GameAlloc_Malloc(GameAlloc* this, size_t size); void GameAlloc_Free(GameAlloc* this, void* data); diff --git a/include/macros.h b/include/macros.h index 25ccb3d37..9f2305e01 100644 --- a/include/macros.h +++ b/include/macros.h @@ -28,21 +28,6 @@ #define GET_ACTIVE_CAM(play) ((play)->cameraPtrs[(play)->activeCamId]) -#define STOP_GAMESTATE(curState) \ - do { \ - GameState* state = curState; \ - \ - state->running = false; \ - } while(0) - -#define SET_NEXT_GAMESTATE(curState, nextInit, nextSize) \ - do { \ - GameState* state = curState; \ - \ - (state)->init = nextInit; \ - (state)->size = nextSize; \ - } while (0) - #define GET_PLAYER(play) ((Player*)(play)->actorCtx.actorLists[ACTORCAT_PLAYER].first) #define GET_FIRST_ENEMY(play) ((Actor*)(play)->actorCtx.actorLists[ACTORCAT_ENEMY].first) diff --git a/include/variables.h b/include/variables.h index fef772123..ba1548f0f 100644 --- a/include/variables.h +++ b/include/variables.h @@ -745,10 +745,7 @@ extern Input* D_801D0D60; // extern UNK_TYPE2 D_801D14E4; // extern UNK_TYPE2 D_801D14E8; // extern UNK_TYPE4 D_801D14F0; -extern s32 gFramerateDivisor; -extern f32 gFramerateDivisorF; -extern f32 gFramerateDivisorHalf; -extern f32 gFramerateDivisorThird; + extern u32 retryCount; extern u32 cfbIdx[3]; extern s32 gScreenWidth; diff --git a/include/z64.h b/include/z64.h index 637f28dc4..1b9cabdc9 100644 --- a/include/z64.h +++ b/include/z64.h @@ -44,6 +44,7 @@ #include "z64effect.h" #include "z64frameadvance.h" #include "z64game_over.h" +#include "z64game.h" #include "z64interface.h" #include "z64item.h" #include "z64light.h" @@ -407,54 +408,6 @@ typedef struct { /* 0x844 */ void* fb; } FaultThreadStruct; // size = 0x848 -struct GameState; - -typedef void (*GameStateFunc)(struct GameState* gameState); - -typedef struct { - /* 0x00 */ void* loadedRamAddr; - /* 0x04 */ uintptr_t vromStart; // if applicable - /* 0x08 */ uintptr_t vromEnd; // if applicable - /* 0x0C */ void* vramStart; // if applicable - /* 0x10 */ void* vramEnd; // if applicable - /* 0x14 */ UNK_PTR unk_14; - /* 0x18 */ GameStateFunc init; // initializes and executes the given context - /* 0x1C */ GameStateFunc destroy; // deconstructs the context, and sets the next context to load - /* 0x20 */ UNK_PTR unk_20; - /* 0x24 */ UNK_PTR unk_24; - /* 0x28 */ UNK_TYPE unk_28; - /* 0x2C */ size_t instanceSize; -} GameStateOverlay; // size = 0x30 - -typedef struct GameAllocEntry { - /* 0x0 */ struct GameAllocEntry* next; - /* 0x4 */ struct GameAllocEntry* prev; - /* 0x8 */ size_t size; - /* 0xC */ u32 unk_0C; -} GameAllocEntry; // size = 0x10 - -typedef struct GameAlloc { - /* 0x00 */ GameAllocEntry base; - /* 0x10 */ GameAllocEntry* head; -} GameAlloc; // size = 0x14 - -typedef struct GameState { - /* 0x00 */ GraphicsContext* gfxCtx; - /* 0x04 */ GameStateFunc main; - /* 0x08 */ GameStateFunc destroy; - /* 0x0C */ GameStateFunc init; // Usually the current game state's init, though after stopping, the graph thread will look here to determine the next game state to load. - /* 0x10 */ size_t size; - /* 0x14 */ Input input[MAXCONTROLLERS]; - /* 0x74 */ TwoHeadArena heap; - /* 0x84 */ GameAlloc alloc; - /* 0x98 */ UNK_TYPE1 pad98[0x3]; - /* 0x9B */ u8 running; // If 0, switch to next game state - /* 0x9C */ u32 frames; - /* 0xA0 */ u8 padA0[0x2]; - /* 0xA2 */ u8 framerateDivisor; // game speed? - /* 0xA3 */ u8 unk_A3; -} GameState; // size = 0xA4 - struct PlayState; typedef s32 (*ColChkResetFunc)(struct PlayState*, Collider*); diff --git a/include/z64game.h b/include/z64game.h new file mode 100644 index 000000000..c5551edc7 --- /dev/null +++ b/include/z64game.h @@ -0,0 +1,104 @@ +#ifndef Z64_GAME_H +#define Z64_GAME_H + +#include "ultra64.h" +#include "libc/stdbool.h" +#include "libc/stdint.h" +#include "io/controller.h" +#include "tha.h" +#include "padmgr.h" + +struct GraphicsContext; +struct GameState; + + +typedef void (*GameStateFunc)(struct GameState* gameState); + +typedef struct { + /* 0x00 */ void* loadedRamAddr; + /* 0x04 */ uintptr_t vromStart; // if applicable + /* 0x08 */ uintptr_t vromEnd; // if applicable + /* 0x0C */ void* vramStart; // if applicable + /* 0x10 */ void* vramEnd; // if applicable + /* 0x14 */ UNK_PTR unk_14; + /* 0x18 */ GameStateFunc init; // initializes and executes the given context + /* 0x1C */ GameStateFunc destroy; // deconstructs the context, and sets the next context to load + /* 0x20 */ UNK_PTR unk_20; + /* 0x24 */ UNK_PTR unk_24; + /* 0x28 */ UNK_TYPE unk_28; + /* 0x2C */ size_t instanceSize; +} GameStateOverlay; // size = 0x30 + +typedef struct GameAllocEntry { + /* 0x0 */ struct GameAllocEntry* next; + /* 0x4 */ struct GameAllocEntry* prev; + /* 0x8 */ size_t size; + /* 0xC */ u32 unk_0C; +} GameAllocEntry; // size = 0x10 + +typedef struct GameAlloc { + /* 0x00 */ GameAllocEntry base; + /* 0x10 */ GameAllocEntry* head; +} GameAlloc; // size = 0x14 + +typedef struct GameState { + /* 0x00 */ struct GraphicsContext* gfxCtx; + /* 0x04 */ GameStateFunc main; + /* 0x08 */ GameStateFunc destroy; + /* 0x0C */ GameStateFunc init; // Usually the current game state's init, though after stopping, the graph thread will look here to determine the next game state to load. + /* 0x10 */ size_t size; + /* 0x14 */ Input input[MAXCONTROLLERS]; + /* 0x74 */ TwoHeadArena heap; + /* 0x84 */ GameAlloc alloc; + /* 0x98 */ UNK_TYPE1 pad98[0x3]; + /* 0x9B */ u8 running; // If 0, switch to next game state + /* 0x9C */ u32 frames; + /* 0xA0 */ u8 padA0[0x2]; + /* 0xA2 */ u8 framerateDivisor; + /* 0xA3 */ u8 unk_A3; +} GameState; // size = 0xA4 + + +void Game_UpdateFramerateVariables(s32 divisor); +void Game_SetFramerateDivisor(GameState* gameState, s32 divisor); +void GameState_SetFBFilter(Gfx** gfx, void* zbuffer); +void Game_Nop80173534(GameState* gameState); +void GameState_Draw(GameState* gameState, struct GraphicsContext* gfxCtx); +void GameState_SetFrameBuffer(struct GraphicsContext* gfxCtx); +void func_801736DC(struct GraphicsContext* gfxCtx); +void Game_UpdateInput(GameState* gameState); +void Game_Update(GameState* gameState); +void Game_IncrementFrameCount(GameState* gameState); +void GameState_InitArena(GameState* gameState, size_t size); +void GameState_Realloc(GameState* gameState, size_t size); +void GameState_Init(GameState* gameState, GameStateFunc init, struct GraphicsContext* gfxCtx); +void GameState_Destroy(GameState* gameState); +GameStateFunc GameState_GetInit(GameState* gameState); +size_t GameState_GetSize(GameState* gameState); +u32 GameState_IsRunning(GameState* gameState); +s32 GameState_GetArenaSize(GameState* gameState); +s32 func_80173B48(GameState* gameState); + +extern s32 gFramerateDivisor; +extern f32 gFramerateDivisorF; +extern f32 gFramerateDivisorHalf; +extern f32 gFramerateDivisorThird; + + +#define STOP_GAMESTATE(curState) \ + do { \ + GameState* state = curState; \ + \ + state->running = false; \ + } while(0) + +#define SET_NEXT_GAMESTATE(curState, nextInit, nextSize) \ + do { \ + GameState* state = curState; \ + \ + (state)->init = nextInit; \ + (state)->size = nextSize; \ + } while (0) + + +#endif diff --git a/include/z_prenmi.h b/include/z_prenmi.h index 04c3f5f16..7be3eb16f 100644 --- a/include/z_prenmi.h +++ b/include/z_prenmi.h @@ -1,15 +1,15 @@ #ifndef Z64PRENMI_H #define Z64PRENMI_H -#include "global.h" - -void PreNMI_Destroy(GameState* thisx); -void PreNMI_Init(GameState* thisx); +#include "z64game.h" typedef struct { /* 0x00 */ GameState state; /* 0xA4 */ u32 timer; - /* 0xA8 */ UNK_TYPE4 unkA8; + /* 0xA8 */ s32 unk_A8; } PreNMIState; // size = 0xAC +void PreNMI_Destroy(GameState* thisx); +void PreNMI_Init(GameState* thisx); + #endif diff --git a/include/z_title_setup.h b/include/z_title_setup.h index 3b299af97..1bd7c7d7d 100644 --- a/include/z_title_setup.h +++ b/include/z_title_setup.h @@ -1,13 +1,13 @@ #ifndef Z64TITLE_SETUP_H #define Z64TITLE_SETUP_H -#include "global.h" - -void Setup_Destroy(GameState* gameState); -void Setup_Init(GameState* thisx); +#include "z64game.h" typedef struct { /* 0x00 */ GameState state; } SetupState; // size = 0xA4 +void Setup_Destroy(GameState* gameState); +void Setup_Init(GameState* thisx); + #endif diff --git a/src/code/game.c b/src/code/game.c index c98241177..8f4e0f44d 100644 --- a/src/code/game.c +++ b/src/code/game.c @@ -11,9 +11,9 @@ f32 gFramerateDivisorThird = 1.0f / 3.0f; void Game_UpdateFramerateVariables(s32 divisor) { gFramerateDivisor = divisor; - gFramerateDivisorF = (f32)divisor; - gFramerateDivisorHalf = (f32)(divisor * 0.5f); - gFramerateDivisorThird = (f32)(divisor / 3.0f); + gFramerateDivisorF = divisor; + gFramerateDivisorHalf = divisor / 2.0f; + gFramerateDivisorThird = divisor / 3.0f; } void Game_SetFramerateDivisor(GameState* gameState, s32 divisor) { diff --git a/src/code/z_prenmi.c b/src/code/z_prenmi.c index 94d235a37..097d4d946 100644 --- a/src/code/z_prenmi.c +++ b/src/code/z_prenmi.c @@ -1,3 +1,4 @@ +#include "global.h" #include "z_prenmi.h" void PreNMI_Stop(PreNMIState* this) { @@ -9,10 +10,9 @@ void PreNMI_Update(PreNMIState* this) { if (this->timer == 0) { ViConfig_UpdateVi(1); PreNMI_Stop(this); - return; + } else { + this->timer--; } - - this->timer--; } void PreNMI_Draw(PreNMIState* this) { @@ -48,7 +48,7 @@ void PreNMI_Init(GameState* thisx) { this->state.main = PreNMI_Main; this->state.destroy = PreNMI_Destroy; this->timer = 30; - this->unkA8 = 10; + this->unk_A8 = 10; Game_SetFramerateDivisor(&this->state, 1); } diff --git a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c index 108ccedcd..134c6457b 100644 --- a/src/overlays/gamestates/ovl_daytelop/z_daytelop.c +++ b/src/overlays/gamestates/ovl_daytelop/z_daytelop.c @@ -4,9 +4,10 @@ * Description: "Dawn of ... day" screen */ +#include "global.h" #include "z_daytelop.h" +#include "z64save.h" #include "z64shrink_window.h" -#include "z64view.h" #include "misc/daytelop_static/daytelop_static.h" #include "interface/icon_item_gameover_static/icon_item_gameover_static.h" diff --git a/src/overlays/gamestates/ovl_daytelop/z_daytelop.h b/src/overlays/gamestates/ovl_daytelop/z_daytelop.h index a7350e898..da49827c3 100644 --- a/src/overlays/gamestates/ovl_daytelop/z_daytelop.h +++ b/src/overlays/gamestates/ovl_daytelop/z_daytelop.h @@ -1,16 +1,13 @@ #ifndef Z64_DAYTELOP_H #define Z64_DAYTELOP_H -#include "global.h" - -void DayTelop_Init(GameState* thisx); -void DayTelop_Destroy(GameState* thisx); +#include "z64game.h" +#include "z64view.h" typedef struct { /* 0x000 */ GameState state; /* 0x0A4 */ void* daytelopStaticFile; /* 0x0A8 */ void* gameoverStaticFile; - /* 0x0AC */ UNK_TYPE1 unk_AC[0x4]; /* 0x0B0 */ View view; /* 0x218 */ UNK_TYPE1 unk_218[0x28]; /* 0x240 */ s16 transitionCountdown; @@ -24,4 +21,7 @@ typedef enum { /* 2 */ DAYTELOP_HOURSTEXT_ON } DaytelopFadeState; +void DayTelop_Init(GameState* thisx); +void DayTelop_Destroy(GameState* thisx); + #endif diff --git a/src/overlays/gamestates/ovl_file_choose/z_file_select.h b/src/overlays/gamestates/ovl_file_choose/z_file_select.h index 7dcc72a9d..88236e63e 100644 --- a/src/overlays/gamestates/ovl_file_choose/z_file_select.h +++ b/src/overlays/gamestates/ovl_file_choose/z_file_select.h @@ -2,6 +2,11 @@ #define FILE_SELECT_H #include "global.h" +#include "z64game.h" +#include "z64message.h" +#include "z64skybox.h" +#include "z64view.h" + // `sramCtx->noFlashSaveBuf` is never allocated space, so should never be used // Slot offsets are also based on OoT SaveContext sizes, and contains incorrect sizes from MM diff --git a/src/overlays/gamestates/ovl_opening/z_opening.c b/src/overlays/gamestates/ovl_opening/z_opening.c index 9697b111f..84425cc73 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.c +++ b/src/overlays/gamestates/ovl_opening/z_opening.c @@ -4,9 +4,12 @@ * Description: Initializes the game into the title screen */ +#include "global.h" #include "z_opening.h" +#include "z64save.h" #include "z64shrink_window.h" #include "z64view.h" +#include "regs.h" void TitleSetup_SetupTitleScreen(TitleSetupState* this) { static s32 sOpeningEntrances[] = { ENTRANCE(CUTSCENE, 0), ENTRANCE(CUTSCENE, 1) }; diff --git a/src/overlays/gamestates/ovl_opening/z_opening.h b/src/overlays/gamestates/ovl_opening/z_opening.h index 36a01ffe9..530b069e1 100644 --- a/src/overlays/gamestates/ovl_opening/z_opening.h +++ b/src/overlays/gamestates/ovl_opening/z_opening.h @@ -1,15 +1,15 @@ -#ifndef _Z64_OPENING_H_ -#define _Z64_OPENING_H_ +#ifndef Z64_OPENING_H +#define Z64_OPENING_H -#include "global.h" +#include "z64game.h" +#include "z64view.h" + +typedef struct { + /* 0x000 */ GameState state; + /* 0x0A8 */ View view; +} TitleSetupState; // size = 0x210 void TitleSetup_Init(GameState* thisx); void TitleSetup_Destroy(GameState* thisx); -typedef struct { - /* 0x000 */ GameState state; - /* 0x0A4 */ UNK_TYPE1 unk_A4[0x4]; - /* 0x0A8 */ View view; -} TitleSetupState; // size = 0x210 - #endif diff --git a/src/overlays/gamestates/ovl_select/z_select.h b/src/overlays/gamestates/ovl_select/z_select.h index 8b5974103..876c9e3ff 100644 --- a/src/overlays/gamestates/ovl_select/z_select.h +++ b/src/overlays/gamestates/ovl_select/z_select.h @@ -1,7 +1,8 @@ -#ifndef _Z64_SELECT_H_ -#define _Z64_SELECT_H_ +#ifndef Z64_SELECT_H +#define Z64_SELECT_H -#include "global.h" +#include "z64game.h" +#include "z64view.h" struct MapSelectState; diff --git a/src/overlays/gamestates/ovl_title/z_title.h b/src/overlays/gamestates/ovl_title/z_title.h index 0cb19da1a..ee5d5c841 100644 --- a/src/overlays/gamestates/ovl_title/z_title.h +++ b/src/overlays/gamestates/ovl_title/z_title.h @@ -2,9 +2,8 @@ #define Z64_TITLE_H #include "global.h" - -void ConsoleLogo_Init(GameState* thisx); -void ConsoleLogo_Destroy(GameState* thisx); +#include "z64game.h" +#include "z64view.h" typedef struct { /* 0x000 */ GameState state; @@ -20,4 +19,7 @@ typedef struct { /* 0x244 */ u8 exit; } ConsoleLogoState; // size = 0x248 +void ConsoleLogo_Init(GameState* thisx); +void ConsoleLogo_Destroy(GameState* thisx); + #endif From 8c961f2b16334649b0d3ad811b856b95381c87d2 Mon Sep 17 00:00:00 2001 From: Derek Hensley Date: Tue, 6 Jun 2023 07:54:50 -0700 Subject: [PATCH 06/10] Play_Hireso (Bombers Notebook) OK w/ Docs (#1235) * Start * Try every function * Import data * Docs from message branch * Fix non-equivalency for func_8016AE1C * Everything looks NON_MATCHING * Some more clean up and docs * Some cleanup * Small format * Small improvements here and there * Match a couple * Anotha one * and than there was 1 * and than there were none :) * Lots of docs * Finish code docs * schedule static * Macros + cleanup * text ids array cleanup * Entries cleanup * Use sBombersNotebookEntries in macros * Some docs from message branch * eventIndex -> event * Remove outdated comments * PR * BOMBERS_NOTEBOOK_ENTRY_SIZE * tables * Token pasting to simplify * Some more fixes * PR pt 1 * Format * Bring over BombersNotebook docs from z_message branch Co-authored-by: ZoeyZolotova * Full enum glory * Format * Name weekeventregs * typo * Some comments * bss * Review * bss * Update src/code/z_play_hireso.c Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> * Fix * Namefixer * bss * Format * 0 = 0x0000 --------- Co-authored-by: ZoeyZolotova Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com> --- assets/xml/interface/schedule_static.xml | 38 + include/PR/gbi.h | 4 +- include/functions.h | 15 +- include/macros.h | 2 + include/segment_symbols.h | 1 + include/tables/bombers_notebook/event_table.h | 48 + .../tables/bombers_notebook/person_table.h | 31 + include/variables.h | 49 - include/z64.h | 21 +- include/z64bombers_notebook.h | 58 + include/z64message.h | 7 +- include/z64save.h | 144 +- spec | 4 +- src/code/z_kaleido_scope_call.c | 1 - src/code/z_message.c | 61 +- src/code/z_play.c | 5 +- src/code/z_play_hireso.c | 1362 ++++++++++++++++- src/code/z_quake.c | 1 + src/code/z_skelanime.c | 1 - .../actors/ovl_Bg_Breakwall/z_bg_breakwall.c | 2 +- .../actors/ovl_Bg_Umajump/z_bg_umajump.c | 16 +- src/overlays/actors/ovl_En_Ah/z_en_ah.c | 2 +- src/overlays/actors/ovl_En_Baba/z_en_baba.c | 8 +- .../ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c | 16 +- src/overlays/actors/ovl_En_Cow/z_en_cow.c | 2 +- src/overlays/actors/ovl_En_Fsn/z_en_fsn.c | 34 +- .../actors/ovl_En_Guruguru/z_en_guruguru.c | 10 +- src/overlays/actors/ovl_En_Hs/z_en_hs.c | 4 +- src/overlays/actors/ovl_En_Ig/z_en_ig.c | 6 +- src/overlays/actors/ovl_En_In/z_en_in.c | 69 +- src/overlays/actors/ovl_En_Ma4/z_en_ma4.c | 34 +- .../actors/ovl_En_Ma_Yto/z_en_ma_yto.c | 92 +- .../actors/ovl_En_Ma_Yts/z_en_ma_yts.c | 31 +- src/overlays/actors/ovl_En_Mm3/z_en_mm3.c | 14 +- src/overlays/actors/ovl_En_Nb/z_en_nb.c | 2 +- src/overlays/actors/ovl_En_Pm/z_en_pm.c | 6 +- src/overlays/actors/ovl_En_Pst/z_en_pst.c | 10 +- src/overlays/actors/ovl_En_Rz/z_en_rz.c | 4 +- .../ovl_En_Stone_heishi/z_en_stone_heishi.c | 10 +- src/overlays/actors/ovl_En_Test3/z_en_test3.c | 16 +- src/overlays/actors/ovl_En_Test4/z_en_test4.c | 1 - src/overlays/actors/ovl_En_Toto/z_en_toto.c | 14 +- src/overlays/actors/ovl_En_Yb/z_en_yb.c | 4 +- .../actors/ovl_Obj_Dinner/z_obj_dinner.c | 3 +- .../actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c | 6 +- src/overlays/actors/ovl_Obj_Um/z_obj_um.c | 24 +- .../actors/ovl_Obj_Usiyane/z_obj_usiyane.c | 2 +- .../actors/ovl_player_actor/z_player.c | 5 +- .../ovl_kaleido_scope/z_kaleido_scope_NES.c | 2 +- tools/disasm/disasm.py | 5 +- tools/disasm/functions.txt | 20 +- tools/disasm/variables.txt | 23 +- tools/namefixer.py | 1 + tools/permuter_settings.toml | 2 + tools/sizes/code_functions.csv | 20 +- tools/weekeventregconvert.py | 140 +- undefined_syms.txt | 23 + 57 files changed, 2015 insertions(+), 521 deletions(-) create mode 100644 assets/xml/interface/schedule_static.xml create mode 100644 include/tables/bombers_notebook/event_table.h create mode 100644 include/tables/bombers_notebook/person_table.h create mode 100644 include/z64bombers_notebook.h diff --git a/assets/xml/interface/schedule_static.xml b/assets/xml/interface/schedule_static.xml new file mode 100644 index 000000000..68b097d51 --- /dev/null +++ b/assets/xml/interface/schedule_static.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/include/PR/gbi.h b/include/PR/gbi.h index 3ba8748b0..1b57c6a34 100644 --- a/include/PR/gbi.h +++ b/include/PR/gbi.h @@ -4699,7 +4699,7 @@ _DW({ \ /* like gSPTextureRectangle but accepts negative position arguments */ #define gSPScisTextureRectangle(pkt, xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ -{ \ +_DW({ \ Gfx *_g = (Gfx *)(pkt); \ \ _g->words.w0 = (_SHIFTL(G_TEXRECT, 24, 8) | \ @@ -4723,7 +4723,7 @@ _DW({ \ 0, 16))); \ gImmp1(pkt, G_RDPHALF_2, (_SHIFTL((dsdx), 16, 16) | \ _SHIFTL((dtdy), 0, 16))); \ -} +}) #define gsSPTextureRectangleFlip(xl, yl, xh, yh, tile, s, t, dsdx, dtdy) \ (_SHIFTL(G_TEXRECTFLIP, 24, 8) | _SHIFTL(xh, 12, 12) | \ diff --git a/include/functions.h b/include/functions.h index 626bfc261..04f6dfb73 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1695,7 +1695,7 @@ void func_801514B0(PlayState* play, u16 arg1, u8 arg2); void Message_StartTextbox(PlayState* play, u16 textId, Actor* Actor); void Message_ContinueTextbox(PlayState* play, u16 textId); void func_80151A68(PlayState* play, u16 textId); -void func_80151BB4(PlayState* play, u8 arg1); +void Message_BombersNotebookQueueEvent(PlayState* play, u8 event); // void func_80151C9C(void); void func_80151DA4(PlayState* play, u16 arg2); void func_80152434(PlayState* play, u16 arg2); @@ -1825,19 +1825,6 @@ void Play_AssignPlayerCsIdsFromScene(GameState* thisx, s32 spawnCsId); void Play_FillScreen(GameState* thisx, s16 fillScreenOn, u8 red, u8 green, u8 blue, u8 alpha); void Play_Init(GameState* thisx); -// void func_8016AC10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10); -// void func_8016AE1C(void); -// void func_8016B278(void); -// void func_8016B4B0(void); -// void func_8016C344(void); -// void func_8016CD4C(void); -// void func_8016E40C(void); -// void func_8016EA90(void); -void BombersNotebook_Draw(BombersNotebook* this, GraphicsContext* gfxCtx); -// void func_8016F4EC(void); -void BombersNotebook_Update(PlayState* play, BombersNotebook* this, Input* input); -void BombersNotebook_Init(BombersNotebook* this); -void BombersNotebook_Destroy(BombersNotebook* this); void PreRender_SetValuesSave(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg); void PreRender_Init(PreRender* this); void PreRender_SetValues(PreRender* this, u32 width, u32 height, void* fbuf, void* zbuf); diff --git a/include/macros.h b/include/macros.h index 9f2305e01..d2b98dec5 100644 --- a/include/macros.h +++ b/include/macros.h @@ -34,6 +34,7 @@ #define CLOCK_TIME(hr, min) (s32)(((hr) * 60 + (min)) * 0x10000 / (24 * 60)) #define CLOCK_TIME_MINUTE (CLOCK_TIME(0, 1)) +#define CLOCK_TIME_HOUR (CLOCK_TIME(1, 0)) #define DAY_LENGTH (CLOCK_TIME(24, 0)) #define TIME_TO_HOURS_F(time) ((time) * (24.0f / 0x10000)) @@ -44,6 +45,7 @@ #define CLOCK_TIME_F(hr, min) (((hr) * 60.0f + (min)) * (0x10000 / (24.0f * 60.0f))) #define CLOCK_TIME_ALT_F(hr, min) (((hr) * 60.0f + (min)) / (24.0f * 60.0f / 0x10000)) #define CLOCK_TIME_ALT2_F(hr, min) ((((hr) + (min) / 60.0f) * 60.0f) / (24.0f * 60.0f / 0x10000)) +#define CLOCK_TIME_HOUR_F (CLOCK_TIME_F(1, 0)) #define CAPACITY(upg, value) gUpgradeCapacities[upg][value] #define CUR_CAPACITY(upg) CAPACITY(upg, CUR_UPG_VALUE(upg)) diff --git a/include/segment_symbols.h b/include/segment_symbols.h index a8e88e794..d7c959d23 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -57,6 +57,7 @@ DECLARE_ROM_SEGMENT(icon_item_static_old) DECLARE_ROM_SEGMENT(icon_item_24_static_test) DECLARE_ROM_SEGMENT(icon_item_24_static_old) DECLARE_ROM_SEGMENT(schedule_dma_static_test) +DECLARE_ROM_SEGMENT(schedule_dma_static_old) DECLARE_ROM_SEGMENT(schedule_static) DECLARE_ROM_SEGMENT(story_static) DECLARE_ROM_SEGMENT(do_action_static) diff --git a/include/tables/bombers_notebook/event_table.h b/include/tables/bombers_notebook/event_table.h new file mode 100644 index 000000000..161269a7e --- /dev/null +++ b/include/tables/bombers_notebook/event_table.h @@ -0,0 +1,48 @@ +/** + * Bombers Notebook Event Table + * + * DEFINE_EVENT should be used for events in the notebook + * - Argument 0: Enum value for the event + * - Argument 1: Icon to use (see BombersNotebookEventIcon) + * - Argument 2: WeekEventFlag that updates the icons color + * - Argument 3: Message id for the description of this event + * - Argument 4: Message id for the completion of this event + * - Argument 5: WeekEventFlag for the completion of this event + * + * Note: These events are after the MET events, so will start indexing at BOMBERS_NOTEBOOK_PERSON_MAX + */ +/* 0x14 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_RECEIVED_ROOM_KEY, 0x2198, 0x2152, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY) +/* 0x15 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_PROMISED_MIDNIGHT_MEETING, 0x2199, 0x2153, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING) +/* 0x16 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x219A, 0x2154, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI) +/* 0x17 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x219B, 0x0000, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI) +/* 0x18 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI, 0x219C, 0x2156, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI) +/* 0x19 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_RECEIVED_PENDANT_OF_MEMORIES, 0x219D, 0x2157, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES) +/* 0x1A */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES, 0x219E, 0x2158, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES) +/* 0x1B */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT, 0x219F, 0x2159, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT) +/* 0x1C */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM, 0x21A0, 0x215A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM) +/* 0x1D */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_DEFENDED_AGAINST_THEM, 0x21A1, 0x215B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM) +/* 0x1E */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21A2, 0x0000, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE) +/* 0x1F */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_ESCORTED_CREMIA, 0x21A3, 0x215D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA) +/* 0x20 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21A4, 0x0000, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK) +/* 0x21 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21A5, 0x215F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK) +/* 0x22 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, WEEKEVENTREG_RECEIVED_PRIORITY_MAIL, 0x21A6, 0x2160, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL) +/* 0x23 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21A7, 0x2161, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL) +/* 0x24 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE, BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21A8, 0x0000, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE) +/* 0x25 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21A9, 0x2163, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK) +/* 0x26 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21AA, 0x2164, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP) +/* 0x27 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21AB, 0x2165, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP) +/* 0x28 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21AC, 0x2166, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP) +/* 0x29 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21AD, 0x2167, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP) +/* 0x2A */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21AE, 0x2168, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP) +/* 0x2B */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP, BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21AF, 0x2169, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP) +/* 0x2C */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B0, 0x216A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK) +/* 0x2D */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B1, 0x216B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK) +/* 0x2E */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B2, 0x216C, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD) +/* 0x2F */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B3, 0x216D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK) +/* 0x30 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B4, 0x216E, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK) +/* 0x31 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B5, 0x216F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT) +/* 0x32 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B6, 0x2170, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK) +/* 0x33 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B7, 0x2171, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK) +/* 0x34 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B8, 0x2172, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK) +/* 0x35 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21B9, 0x2173, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK) +/* 0x36 */ DEFINE_EVENT(BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK, BOMBERS_NOTEBOOK_EVENT_ICON_MASK, BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE, 0x21BA, 0x2174, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK) diff --git a/include/tables/bombers_notebook/person_table.h b/include/tables/bombers_notebook/person_table.h new file mode 100644 index 000000000..71771956b --- /dev/null +++ b/include/tables/bombers_notebook/person_table.h @@ -0,0 +1,31 @@ +/** + * Bombers Notebook Person Table + * + * DEFINE_PERSON should be used for people with entries in the notebook + * - Argument 0: Enum value for this person + * - Argument 1: Photo texture for this person + * - Argument 2: Message id for the description of this person + * - Argument 3: Enum value for the event meeting this person + * - Argument 4: Message id for the event meeting this person + * - Argument 5: WeekEventFlag for the event meeting this person + */ +/* 0x00 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMBERS, D_07009800, 0x21DD, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS, 0x2147, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS) +/* 0x01 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJU, D_07000000, 0x21CA, BOMBERS_NOTEBOOK_EVENT_MET_ANJU, 0x2134, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU) +/* 0x02 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAFEI, D_07000800, 0x21CB, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI, 0x2135, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI) +/* 0x03 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CURIOSITY_SHOP_MAN, D_07001000, 0x21CC, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN, 0x2136, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN) +/* 0x04 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_BOMB_SHOP_LADY, D_07001800, 0x21CD, BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY, 0x2137, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY) +/* 0x05 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROMANI, D_07002000, 0x21CE, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI, 0x2138, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI) +/* 0x06 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_CREMIA, D_07002800, 0x21CF, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA, 0x2139, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA) +/* 0x07 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MAYOR_DOTOUR, D_07003000, 0x21D0, BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR, 0x213A, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR) +/* 0x08 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_MADAME_AROMA, D_07003800, 0x21D1, BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA, 0x213B, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA) +/* 0x09 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOTO, D_07004000, 0x21D2, BOMBERS_NOTEBOOK_EVENT_MET_TOTO, 0x213C, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO) +/* 0x0A */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN, D_07004800, 0x21D3, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN, 0x213D, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN) +/* 0x0B */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_POSTMAN, D_07005000, 0x21D4, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN, 0x213E, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN) +/* 0x0C */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ROSA_SISTERS, D_07005800, 0x21D5, BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS, 0x213F, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS) +/* 0x0D */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_TOILET_HAND, D_07006000, 0x21D6, BOMBERS_NOTEBOOK_EVENT_MET_TOLIET_HAND, 0x2140, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND) +/* 0x0E */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_ANJUS_GRANDMOTHER, D_07006800, 0x21D7, BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER, 0x2141, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER) +/* 0x0F */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_KAMARO, D_07007000, 0x21D8, BOMBERS_NOTEBOOK_EVENT_MET_KAMARO, 0x2142, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO) +/* 0x10 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GROG, D_07007800, 0x21D9, BOMBERS_NOTEBOOK_EVENT_MET_GROG, 0x2143, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG) +/* 0x11 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GORMAN_BROTHERS, D_07008000, 0x21DA, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS, 0x2144, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS) +/* 0x12 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_SHIRO, D_07008800, 0x21DB, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO, 0x2145, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO) +/* 0x13 */ DEFINE_PERSON(BOMBERS_NOTEBOOK_PERSON_GURU_GURU, D_07009000, 0x21DC, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU, 0x2146, WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU) diff --git a/include/variables.h b/include/variables.h index ba1548f0f..108fa5833 100644 --- a/include/variables.h +++ b/include/variables.h @@ -563,8 +563,6 @@ extern UNK_PTR D_801C5CB0; // extern UNK_TYPE2 D_801C6A90; // extern UNK_TYPE2 D_801C6A94; extern u8 gPageSwitchNextButtonStatus[6][5]; -// extern UNK_TYPE1 D_801C6AB8; -// extern UNK_TYPE1 D_801C6B28; // extern UNK_TYPE1 D_801CED40; // extern UNK_TYPE2 D_801CFC78; // extern UNK_TYPE1 D_801CFC7A; @@ -697,53 +695,6 @@ extern s32 gDbgCamEnabled; extern Input* D_801D0D60; // extern UNK_TYPE2 sPlayerCsIdToCsCamId; // extern UNK_TYPE1 D_801D0D7A; -// extern UNK_TYPE1 D_801D0D80; -// extern UNK_TYPE1 D_801D11F4; -// extern UNK_TYPE1 D_801D1230; -// extern UNK_TYPE1 D_801D1234; -// extern UNK_TYPE4 D_801D1238; -// extern UNK_TYPE1 D_801D1244; -// extern UNK_TYPE1 D_801D12C0; -// extern UNK_TYPE1 D_801D12D0; -// extern UNK_TYPE1 D_801D12D4; -// extern UNK_TYPE1 D_801D12D8; -// extern UNK_TYPE1 D_801D12DC; -// extern UNK_TYPE2 D_801D1330; -// extern UNK_TYPE1 D_801D1342; -// extern UNK_TYPE2 D_801D1344; -// extern UNK_TYPE1 D_801D1368; -// extern UNK_TYPE2 D_801D1374; -// extern UNK_TYPE1 D_801D1388; -// extern UNK_TYPE2 D_801D13D8; -// extern UNK_TYPE2 D_801D13DC; -// extern UNK_TYPE2 D_801D13E0; -// extern UNK_TYPE2 D_801D13E4; -// extern UNK_TYPE4 D_801D13E8; -// extern UNK_TYPE1 D_801D13EC; -// extern UNK_TYPE1 D_801D13F0; -// extern UNK_TYPE1 D_801D13F4; -// extern UNK_TYPE1 D_801D13F8; -// extern UNK_TYPE1 D_801D1420; -// extern UNK_TYPE2 D_801D142C; -// extern UNK_TYPE2 D_801D1434; -// extern UNK_TYPE2 D_801D1438; -// extern UNK_TYPE2 D_801D143C; -// extern UNK_TYPE2 D_801D1440; -// extern UNK_TYPE2 D_801D1444; -// extern UNK_TYPE2 D_801D1448; -// extern UNK_TYPE2 D_801D144C; -// extern UNK_TYPE2 D_801D1450; -// extern UNK_TYPE2 D_801D1454; -// extern UNK_TYPE2 D_801D1458; -// extern UNK_TYPE2 D_801D145C; -// extern UNK_TYPE2 D_801D1460; -// extern UNK_TYPE1 D_801D1464; -// extern UNK_TYPE1 D_801D1468; -// extern UNK_TYPE1 D_801D146C; -// extern UNK_TYPE2 D_801D14DC; -// extern UNK_TYPE2 D_801D14E0; -// extern UNK_TYPE2 D_801D14E4; -// extern UNK_TYPE2 D_801D14E8; // extern UNK_TYPE4 D_801D14F0; extern u32 retryCount; diff --git a/include/z64.h b/include/z64.h index 1b9cabdc9..641a060b4 100644 --- a/include/z64.h +++ b/include/z64.h @@ -35,6 +35,7 @@ #include "z64animation_legacy.h" #include "z64audio.h" #include "z64bgcheck.h" +#include "z64bombers_notebook.h" #include "z64camera.h" #include "z64collision_check.h" #include "z64curve.h" @@ -529,26 +530,6 @@ typedef struct PlayState { /* 0x18E6C */ char unk_18E6C[0x3EC]; } PlayState; // size = 0x19258 -typedef struct { - /* 0x00 */ u8 unk_00; - /* 0x01 */ char unk_01[0x3F]; - /* 0x40 */ void* unk_40; - /* 0x44 */ u32 unk_44; - /* 0x48 */ u32 unk_48; - /* 0x4C */ DmaRequest unk_4C; - /* 0x6C */ OSMesgQueue unk_6C; - /* 0x84 */ OSMesg unk_84[1]; - /* 0x88 */ void* unk_88; - /* 0x8C */ uintptr_t unk_8C; - /* 0x90 */ size_t unk_90; - /* 0x94 */ s32 unk_94; - /* 0x98 */ s32 unk_98; - /* 0x9C */ s32 unk_9C; - /* 0xA0 */ char unk_A0[0x4]; - /* 0xA4 */ s32 unk_A4; - /* 0xA8 */ s32 unk_A8; -} BombersNotebook; // size = 0xAC - typedef enum { /* 0 */ PICTO_PHOTO_STATE_OFF, /* 1 */ PICTO_PHOTO_STATE_SETUP, diff --git a/include/z64bombers_notebook.h b/include/z64bombers_notebook.h new file mode 100644 index 000000000..403f4a88a --- /dev/null +++ b/include/z64bombers_notebook.h @@ -0,0 +1,58 @@ +#ifndef Z64BOMBERS_NOTEBOOK_H +#define Z64BOMBERS_NOTEBOOK_H + +#include "ultra64.h" +#include "io/controller.h" +#include "z64dma.h" + +#define DEFINE_PERSON(enum, _photo, _description, _metEnum, _metMessage, _metFlag) enum, +typedef enum BombersNotebookPerson { + #include "tables/bombers_notebook/person_table.h" + /* 0x14 */ BOMBERS_NOTEBOOK_PERSON_MAX +} BombersNotebookPerson; + +#undef DEFINE_PERSON + +typedef enum BombersNotebookLoadState { + /* 0 */ BOMBERS_NOTEBOOK_LOAD_STATE_NONE, + /* 1 */ BOMBERS_NOTEBOOK_LOAD_STATE_STARTED, + /* 2 */ BOMBERS_NOTEBOOK_LOAD_STATE_DONE +} BombersNotebookLoadState; + +#define DEFINE_PERSON(_enum, _photo, _description, metEnum, _metMessage, _metFlag) metEnum, +#define DEFINE_EVENT(enum, _icon, _colorFlag, _description, _completedMessage, _completedFlag) enum, +typedef enum BombersNotebookEvent { + #include "tables/bombers_notebook/person_table.h" + #include "tables/bombers_notebook/event_table.h" + /* 0x37 */ BOMBERS_NOTEBOOK_EVENT_MAX +} BombersNotebookEvent; + +#undef DEFINE_PERSON +#undef DEFINE_EVENT + +typedef struct { + /* 0x00 */ u8 loadState; + /* 0x01 */ UNK_TYPE1 pad01[0x3F]; + /* 0x40 */ void* scheduleDmaSegment; + /* 0x44 */ uintptr_t scheduleDmaSegmentStart; + /* 0x48 */ size_t scheduleDmaSegmentSize; + /* 0x4C */ DmaRequest dmaRequest; + /* 0x6C */ OSMesgQueue loadQueue; + /* 0x84 */ OSMesg loadMsg[1]; + /* 0x88 */ void* scheduleSegment; + /* 0x8C */ uintptr_t scheduleSegmentStart; + /* 0x90 */ size_t scheduleSegmentSize; + /* 0x94 */ s32 cursorPageRow; + /* 0x98 */ s32 cursorEntry; // Entries are 3 apart, see BOMBERS_NOTEBOOK_ENTRY_SIZE + /* 0x9C */ s32 cursorPage; + /* 0xA0 */ UNK_TYPE1 padA0[0x4]; + /* 0xA4 */ s32 scrollAmount; + /* 0xA8 */ s32 scrollOffset; +} BombersNotebook; // size = 0xAC + +void BombersNotebook_Draw(BombersNotebook* this, struct GraphicsContext* gfxCtx); +void BombersNotebook_Update(struct PlayState* play, BombersNotebook* this, Input* input); +void BombersNotebook_Init(BombersNotebook* this); +void BombersNotebook_Destroy(BombersNotebook* this); + +#endif diff --git a/include/z64message.h b/include/z64message.h index 2b0387045..09c9c4e04 100644 --- a/include/z64message.h +++ b/include/z64message.h @@ -9,6 +9,9 @@ struct Actor; struct MessageTableEntry; struct OcarinaStaff; +extern u16 sBombersNotebookEventMessages[BOMBERS_NOTEBOOK_EVENT_MAX]; +extern u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX]; + typedef enum TextState { /* 0 */ TEXT_STATE_NONE, /* 1 */ TEXT_STATE_1, @@ -159,8 +162,8 @@ typedef struct MessageContext { /* 0x120A0 */ s32 unk120A0; /* 0x120A4 */ s16 unk120A4[6]; /* 0x120B0 */ u8 unk120B0; - /* 0x120B1 */ u8 unk120B1; - /* 0x120B2 */ u8 unk120B2[0xA]; + /* 0x120B1 */ u8 bombersNotebookEventQueueCount; + /* 0x120B2 */ u8 bombersNotebookEventQueue[10]; /* 0x120BC */ u16 unk_120BC; /* 0x120BE */ s16 unk120BE; /* 0x120C0 */ s16 unk120C0; diff --git a/include/z64save.h b/include/z64save.h index 805b62e5a..312b18b2e 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -733,13 +733,13 @@ typedef enum { #define WEEKEVENTREG_TALKED_THAWED_GRAVEYARD_GORON PACK_WEEKEVENTREG_FLAG(21, 0x08) #define WEEKEVENTREG_21_10 PACK_WEEKEVENTREG_FLAG(21, 0x10) -#define WEEKEVENTREG_21_20 PACK_WEEKEVENTREG_FLAG(21, 0x20) +#define WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM PACK_WEEKEVENTREG_FLAG(21, 0x20) #define WEEKEVENTREG_21_40 PACK_WEEKEVENTREG_FLAG(21, 0x40) #define WEEKEVENTREG_21_80 PACK_WEEKEVENTREG_FLAG(21, 0x80) // Aliens defeated // "Winning" the alien invasion -#define WEEKEVENTREG_22_01 PACK_WEEKEVENTREG_FLAG(22, 0x01) +#define WEEKEVENTREG_DEFENDED_AGAINST_THEM PACK_WEEKEVENTREG_FLAG(22, 0x01) #define WEEKEVENTREG_22_02 PACK_WEEKEVENTREG_FLAG(22, 0x02) @@ -795,11 +795,11 @@ typedef enum { #define WEEKEVENTREG_26_40 PACK_WEEKEVENTREG_FLAG(26, 0x40) #define WEEKEVENTREG_26_80 PACK_WEEKEVENTREG_FLAG(26, 0x80) #define WEEKEVENTREG_27_01 PACK_WEEKEVENTREG_FLAG(27, 0x01) -#define WEEKEVENTREG_27_02 PACK_WEEKEVENTREG_FLAG(27, 0x02) -#define WEEKEVENTREG_27_04 PACK_WEEKEVENTREG_FLAG(27, 0x04) -#define WEEKEVENTREG_27_08 PACK_WEEKEVENTREG_FLAG(27, 0x08) -#define WEEKEVENTREG_27_10 PACK_WEEKEVENTREG_FLAG(27, 0x10) -#define WEEKEVENTREG_27_20 PACK_WEEKEVENTREG_FLAG(27, 0x20) +#define WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_UPPER_CLOCKTOWN PACK_WEEKEVENTREG_FLAG(27, 0x02) +#define WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_NORTH_CLOCKTOWN PACK_WEEKEVENTREG_FLAG(27, 0x04) +#define WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_UPPER_CLOCKTOWN PACK_WEEKEVENTREG_FLAG(27, 0x08) +#define WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_LOWER_CLOCKTOWN PACK_WEEKEVENTREG_FLAG(27, 0x10) +#define WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_LOWER_CLOCKTOWN PACK_WEEKEVENTREG_FLAG(27, 0x20) #define WEEKEVENTREG_27_40 PACK_WEEKEVENTREG_FLAG(27, 0x40) #define WEEKEVENTREG_27_80 PACK_WEEKEVENTREG_FLAG(27, 0x80) #define WEEKEVENTREG_28_01 PACK_WEEKEVENTREG_FLAG(28, 0x01) @@ -956,22 +956,22 @@ typedef enum { #define WEEKEVENTREG_50_01 PACK_WEEKEVENTREG_FLAG(50, 0x01) #define WEEKEVENTREG_50_02 PACK_WEEKEVENTREG_FLAG(50, 0x02) #define WEEKEVENTREG_50_04 PACK_WEEKEVENTREG_FLAG(50, 0x04) -#define WEEKEVENTREG_50_08 PACK_WEEKEVENTREG_FLAG(50, 0x08) +#define WEEKEVENTREG_PROMISED_MIDNIGHT_MEETING PACK_WEEKEVENTREG_FLAG(50, 0x08) #define WEEKEVENTREG_50_10 PACK_WEEKEVENTREG_FLAG(50, 0x10) -#define WEEKEVENTREG_50_20 PACK_WEEKEVENTREG_FLAG(50, 0x20) +#define WEEKEVENTREG_HAD_MIDNIGHT_MEETING PACK_WEEKEVENTREG_FLAG(50, 0x20) #define WEEKEVENTREG_50_40 PACK_WEEKEVENTREG_FLAG(50, 0x40) -#define WEEKEVENTREG_50_80 PACK_WEEKEVENTREG_FLAG(50, 0x80) -#define WEEKEVENTREG_51_01 PACK_WEEKEVENTREG_FLAG(51, 0x01) +#define WEEKEVENTREG_RECEIVED_PENDANT_OF_MEMORIES PACK_WEEKEVENTREG_FLAG(50, 0x80) +#define WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES PACK_WEEKEVENTREG_FLAG(51, 0x01) #define WEEKEVENTREG_51_02 PACK_WEEKEVENTREG_FLAG(51, 0x02) #define WEEKEVENTREG_51_04 PACK_WEEKEVENTREG_FLAG(51, 0x04) #define WEEKEVENTREG_51_08 PACK_WEEKEVENTREG_FLAG(51, 0x08) #define WEEKEVENTREG_51_10 PACK_WEEKEVENTREG_FLAG(51, 0x10) -#define WEEKEVENTREG_51_20 PACK_WEEKEVENTREG_FLAG(51, 0x20) +#define WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT PACK_WEEKEVENTREG_FLAG(51, 0x20) #define WEEKEVENTREG_51_40 PACK_WEEKEVENTREG_FLAG(51, 0x40) #define WEEKEVENTREG_51_80 PACK_WEEKEVENTREG_FLAG(51, 0x80) // ProtectedCremia -#define WEEKEVENTREG_52_01 PACK_WEEKEVENTREG_FLAG(52, 0x01) +#define WEEKEVENTREG_ESCORTED_CREMIA PACK_WEEKEVENTREG_FLAG(52, 0x01) // Lose Milk Run minigame #define WEEKEVENTREG_52_02 PACK_WEEKEVENTREG_FLAG(52, 0x02) @@ -1101,61 +1101,65 @@ typedef enum { #define WEEKEVENTREG_65_20 PACK_WEEKEVENTREG_FLAG(65, 0x20) #define WEEKEVENTREG_65_40 PACK_WEEKEVENTREG_FLAG(65, 0x40) #define WEEKEVENTREG_65_80 PACK_WEEKEVENTREG_FLAG(65, 0x80) -#define WEEKEVENTREG_66_01 PACK_WEEKEVENTREG_FLAG(66, 0x01) -#define WEEKEVENTREG_66_02 PACK_WEEKEVENTREG_FLAG(66, 0x02) -#define WEEKEVENTREG_66_04 PACK_WEEKEVENTREG_FLAG(66, 0x04) -#define WEEKEVENTREG_66_08 PACK_WEEKEVENTREG_FLAG(66, 0x08) -#define WEEKEVENTREG_66_10 PACK_WEEKEVENTREG_FLAG(66, 0x10) -#define WEEKEVENTREG_66_20 PACK_WEEKEVENTREG_FLAG(66, 0x20) -#define WEEKEVENTREG_66_40 PACK_WEEKEVENTREG_FLAG(66, 0x40) -#define WEEKEVENTREG_66_80 PACK_WEEKEVENTREG_FLAG(66, 0x80) -#define WEEKEVENTREG_67_01 PACK_WEEKEVENTREG_FLAG(67, 0x01) -#define WEEKEVENTREG_67_02 PACK_WEEKEVENTREG_FLAG(67, 0x02) -#define WEEKEVENTREG_67_04 PACK_WEEKEVENTREG_FLAG(67, 0x04) -#define WEEKEVENTREG_67_08 PACK_WEEKEVENTREG_FLAG(67, 0x08) -#define WEEKEVENTREG_67_10 PACK_WEEKEVENTREG_FLAG(67, 0x10) -#define WEEKEVENTREG_67_20 PACK_WEEKEVENTREG_FLAG(67, 0x20) -#define WEEKEVENTREG_67_40 PACK_WEEKEVENTREG_FLAG(67, 0x40) -#define WEEKEVENTREG_67_80 PACK_WEEKEVENTREG_FLAG(67, 0x80) -#define WEEKEVENTREG_68_01 PACK_WEEKEVENTREG_FLAG(68, 0x01) -#define WEEKEVENTREG_68_02 PACK_WEEKEVENTREG_FLAG(68, 0x02) -#define WEEKEVENTREG_68_04 PACK_WEEKEVENTREG_FLAG(68, 0x04) -#define WEEKEVENTREG_68_08 PACK_WEEKEVENTREG_FLAG(68, 0x08) -#define WEEKEVENTREG_68_10 PACK_WEEKEVENTREG_FLAG(68, 0x10) -#define WEEKEVENTREG_68_20 PACK_WEEKEVENTREG_FLAG(68, 0x20) -#define WEEKEVENTREG_68_40 PACK_WEEKEVENTREG_FLAG(68, 0x40) -#define WEEKEVENTREG_68_80 PACK_WEEKEVENTREG_FLAG(68, 0x80) -#define WEEKEVENTREG_69_01 PACK_WEEKEVENTREG_FLAG(69, 0x01) -#define WEEKEVENTREG_69_02 PACK_WEEKEVENTREG_FLAG(69, 0x02) -#define WEEKEVENTREG_69_04 PACK_WEEKEVENTREG_FLAG(69, 0x04) -#define WEEKEVENTREG_69_08 PACK_WEEKEVENTREG_FLAG(69, 0x08) -#define WEEKEVENTREG_69_10 PACK_WEEKEVENTREG_FLAG(69, 0x10) -#define WEEKEVENTREG_69_20 PACK_WEEKEVENTREG_FLAG(69, 0x20) -#define WEEKEVENTREG_69_40 PACK_WEEKEVENTREG_FLAG(69, 0x40) -#define WEEKEVENTREG_69_80 PACK_WEEKEVENTREG_FLAG(69, 0x80) -#define WEEKEVENTREG_70_01 PACK_WEEKEVENTREG_FLAG(70, 0x01) -#define WEEKEVENTREG_70_02 PACK_WEEKEVENTREG_FLAG(70, 0x02) -#define WEEKEVENTREG_70_04 PACK_WEEKEVENTREG_FLAG(70, 0x04) -#define WEEKEVENTREG_70_08 PACK_WEEKEVENTREG_FLAG(70, 0x08) -#define WEEKEVENTREG_70_10 PACK_WEEKEVENTREG_FLAG(70, 0x10) -#define WEEKEVENTREG_70_20 PACK_WEEKEVENTREG_FLAG(70, 0x20) -#define WEEKEVENTREG_70_40 PACK_WEEKEVENTREG_FLAG(70, 0x40) -#define WEEKEVENTREG_70_80 PACK_WEEKEVENTREG_FLAG(70, 0x80) -#define WEEKEVENTREG_71_01 PACK_WEEKEVENTREG_FLAG(71, 0x01) -#define WEEKEVENTREG_71_02 PACK_WEEKEVENTREG_FLAG(71, 0x02) -#define WEEKEVENTREG_71_04 PACK_WEEKEVENTREG_FLAG(71, 0x04) -#define WEEKEVENTREG_71_08 PACK_WEEKEVENTREG_FLAG(71, 0x08) -#define WEEKEVENTREG_71_10 PACK_WEEKEVENTREG_FLAG(71, 0x10) -#define WEEKEVENTREG_71_20 PACK_WEEKEVENTREG_FLAG(71, 0x20) -#define WEEKEVENTREG_71_40 PACK_WEEKEVENTREG_FLAG(71, 0x40) -#define WEEKEVENTREG_71_80 PACK_WEEKEVENTREG_FLAG(71, 0x80) -#define WEEKEVENTREG_72_01 PACK_WEEKEVENTREG_FLAG(72, 0x01) -#define WEEKEVENTREG_72_02 PACK_WEEKEVENTREG_FLAG(72, 0x02) -#define WEEKEVENTREG_72_04 PACK_WEEKEVENTREG_FLAG(72, 0x04) -#define WEEKEVENTREG_72_08 PACK_WEEKEVENTREG_FLAG(72, 0x08) -#define WEEKEVENTREG_72_10 PACK_WEEKEVENTREG_FLAG(72, 0x10) -#define WEEKEVENTREG_72_20 PACK_WEEKEVENTREG_FLAG(72, 0x20) -#define WEEKEVENTREG_72_40 PACK_WEEKEVENTREG_FLAG(72, 0x40) + +/* Bombers' Notebook Events */ + +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU PACK_WEEKEVENTREG_FLAG(66, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI PACK_WEEKEVENTREG_FLAG(66, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN PACK_WEEKEVENTREG_FLAG(66, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY PACK_WEEKEVENTREG_FLAG(66, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI PACK_WEEKEVENTREG_FLAG(66, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA PACK_WEEKEVENTREG_FLAG(66, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR PACK_WEEKEVENTREG_FLAG(66, 0x40) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA PACK_WEEKEVENTREG_FLAG(66, 0x80) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO PACK_WEEKEVENTREG_FLAG(67, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN PACK_WEEKEVENTREG_FLAG(67, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN PACK_WEEKEVENTREG_FLAG(67, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS PACK_WEEKEVENTREG_FLAG(67, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND PACK_WEEKEVENTREG_FLAG(67, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER PACK_WEEKEVENTREG_FLAG(67, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO PACK_WEEKEVENTREG_FLAG(67, 0x40) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG PACK_WEEKEVENTREG_FLAG(67, 0x80) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS PACK_WEEKEVENTREG_FLAG(68, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO PACK_WEEKEVENTREG_FLAG(68, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU PACK_WEEKEVENTREG_FLAG(68, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS PACK_WEEKEVENTREG_FLAG(68, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY PACK_WEEKEVENTREG_FLAG(68, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING PACK_WEEKEVENTREG_FLAG(68, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI PACK_WEEKEVENTREG_FLAG(68, 0x40) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI PACK_WEEKEVENTREG_FLAG(68, 0x80) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI PACK_WEEKEVENTREG_FLAG(69, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES PACK_WEEKEVENTREG_FLAG(69, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES PACK_WEEKEVENTREG_FLAG(69, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT PACK_WEEKEVENTREG_FLAG(69, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM PACK_WEEKEVENTREG_FLAG(69, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM PACK_WEEKEVENTREG_FLAG(69, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE PACK_WEEKEVENTREG_FLAG(69, 0x40) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA PACK_WEEKEVENTREG_FLAG(69, 0x80) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK PACK_WEEKEVENTREG_FLAG(70, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK PACK_WEEKEVENTREG_FLAG(70, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL PACK_WEEKEVENTREG_FLAG(70, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL PACK_WEEKEVENTREG_FLAG(70, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE PACK_WEEKEVENTREG_FLAG(70, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK PACK_WEEKEVENTREG_FLAG(70, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP PACK_WEEKEVENTREG_FLAG(70, 0x40) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP PACK_WEEKEVENTREG_FLAG(70, 0x80) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP PACK_WEEKEVENTREG_FLAG(71, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP PACK_WEEKEVENTREG_FLAG(71, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP PACK_WEEKEVENTREG_FLAG(71, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP PACK_WEEKEVENTREG_FLAG(71, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK PACK_WEEKEVENTREG_FLAG(71, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK PACK_WEEKEVENTREG_FLAG(71, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD PACK_WEEKEVENTREG_FLAG(71, 0x40) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK PACK_WEEKEVENTREG_FLAG(71, 0x80) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK PACK_WEEKEVENTREG_FLAG(72, 0x01) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT PACK_WEEKEVENTREG_FLAG(72, 0x02) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK PACK_WEEKEVENTREG_FLAG(72, 0x04) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK PACK_WEEKEVENTREG_FLAG(72, 0x08) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK PACK_WEEKEVENTREG_FLAG(72, 0x10) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK PACK_WEEKEVENTREG_FLAG(72, 0x20) +#define WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK PACK_WEEKEVENTREG_FLAG(72, 0x40) + #define WEEKEVENTREG_72_80 PACK_WEEKEVENTREG_FLAG(72, 0x80) #define WEEKEVENTREG_73_01 PACK_WEEKEVENTREG_FLAG(73, 0x01) #define WEEKEVENTREG_73_02 PACK_WEEKEVENTREG_FLAG(73, 0x02) @@ -1180,7 +1184,7 @@ typedef enum { #define WEEKEVENTREG_75_02 PACK_WEEKEVENTREG_FLAG(75, 0x02) #define WEEKEVENTREG_75_04 PACK_WEEKEVENTREG_FLAG(75, 0x04) #define WEEKEVENTREG_75_08 PACK_WEEKEVENTREG_FLAG(75, 0x08) -#define WEEKEVENTREG_75_10 PACK_WEEKEVENTREG_FLAG(75, 0x10) +#define WEEKEVENTREG_RECEIVED_ROOM_KEY PACK_WEEKEVENTREG_FLAG(75, 0x10) #define WEEKEVENTREG_75_20 PACK_WEEKEVENTREG_FLAG(75, 0x20) #define WEEKEVENTREG_75_40 PACK_WEEKEVENTREG_FLAG(75, 0x40) #define WEEKEVENTREG_75_80 PACK_WEEKEVENTREG_FLAG(75, 0x80) @@ -1226,7 +1230,7 @@ typedef enum { // Aveil has spotted Player #define WEEKEVENTREG_80_08 PACK_WEEKEVENTREG_FLAG(80, 0x08) -#define WEEKEVENTREG_80_10 PACK_WEEKEVENTREG_FLAG(80, 0x10) +#define WEEKEVENTREG_RECEIVED_PRIORITY_MAIL PACK_WEEKEVENTREG_FLAG(80, 0x10) #define WEEKEVENTREG_80_20 PACK_WEEKEVENTREG_FLAG(80, 0x20) #define WEEKEVENTREG_80_40 PACK_WEEKEVENTREG_FLAG(80, 0x40) #define WEEKEVENTREG_80_80 PACK_WEEKEVENTREG_FLAG(80, 0x80) diff --git a/spec b/spec index a3cde9e58..e427e6866 100644 --- a/spec +++ b/spec @@ -373,7 +373,8 @@ endseg beginseg name "schedule_static" compress - include "build/baserom/schedule_static.o" + include "build/assets/interface/schedule_static/schedule_static.o" + number 8 endseg beginseg @@ -548,7 +549,6 @@ beginseg include "build/src/code/z_overlay.o" include "build/src/code/z_play.o" include "build/src/code/z_play_hireso.o" - include "build/data/code/z_play_hireso.data.o" include "build/src/code/PreRender.o" include "build/data/code/PreRender.bss.o" include "build/src/code/TwoHeadGfxArena.o" diff --git a/src/code/z_kaleido_scope_call.c b/src/code/z_kaleido_scope_call.c index d0f757125..1d2046e57 100644 --- a/src/code/z_kaleido_scope_call.c +++ b/src/code/z_kaleido_scope_call.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #include "z64shrink_window.h" #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" diff --git a/src/code/z_message.c b/src/code/z_message.c index 8681967e6..38f44d9ec 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -5,6 +5,27 @@ #include "overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope.h" #if 0 +#define DEFINE_PERSON(_enum, _photo, _description, _metEnum, metMessage, _metFlag) metMessage, +#define DEFINE_EVENT(_enum, _icon, _colorFlag, _description, completedMessage, _completedFlag) completedMessage, + +u16 sBombersNotebookEventMessages[BOMBERS_NOTEBOOK_EVENT_MAX] = { +#include "tables/bombers_notebook/person_table.h" +#include "tables/bombers_notebook/event_table.h" +}; + +#undef DEFINE_PERSON +#undef DEFINE_EVENT + +#define DEFINE_PERSON(_enum, _photo, _description, _metEnum, _metMessage, metFlag) metFlag, +#define DEFINE_EVENT(_enum, _icon, _colorFlag, _description, _completedMessage, completedFlag) completedFlag, + +u16 gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_EVENT_MAX] = { +#include "tables/bombers_notebook/person_table.h" +#include "tables/bombers_notebook/event_table.h" +}; + +#undef DEFINE_PERSON +#undef DEFINE_EVENT s16 D_801D02D8[15] = { ACTOR_OCEFF_WIPE5, ACTOR_OCEFF_WIPE5, // Sonata of Awakening Effect, Sonata of Awakening Effect @@ -20,8 +41,6 @@ s32 D_801D02F8[15] = { 0,1,2,3,4,0,1,0,0,0,0,0,1,1,0 }; #endif -extern u16 D_801C6AB8[]; -extern u16 D_801C6B28[]; extern s16 D_801D02D8[]; extern s32 D_801D02F8[]; extern s16 D_801F6B0C; @@ -365,19 +384,19 @@ void func_80151A68(PlayState* play, u16 textId) { } } -void func_80151BB4(PlayState* play, u8 arg1) { +void Message_BombersNotebookQueueEvent(PlayState* play, u8 event) { MessageContext* msgCtx = &play->msgCtx; - u8 temp = arg1; if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (!CHECK_WEEKEVENTREG(D_801C6B28[arg1])) { - msgCtx->unk120B2[msgCtx->unk120B1] = temp; - msgCtx->unk120B1++; + if (!CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[event])) { + msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount] = event; + msgCtx->bombersNotebookEventQueueCount++; } - } else if (arg1 >= 20) { - if (!CHECK_WEEKEVENTREG(D_801C6B28[arg1])) { - msgCtx->unk120B2[msgCtx->unk120B1] = temp; - msgCtx->unk120B1++; + } else if (event >= BOMBERS_NOTEBOOK_PERSON_MAX) { + // Non MET events are processed even if the player does not have the notebook yet + if (!CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[event])) { + msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount] = event; + msgCtx->bombersNotebookEventQueueCount++; } } } @@ -386,16 +405,22 @@ u32 func_80151C9C(PlayState* play) { MessageContext* msgCtx = &play->msgCtx; while (true) { - if (msgCtx->unk120B1 == 0) { + if (msgCtx->bombersNotebookEventQueueCount == 0) { return false; } - msgCtx->unk120B1--; + msgCtx->bombersNotebookEventQueueCount--; - if (!CHECK_WEEKEVENTREG(D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]])) { - SET_WEEKEVENTREG(D_801C6B28[msgCtx->unk120B2[msgCtx->unk120B1]]); + if (!CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]])) { + SET_WEEKEVENTREG(gBombersNotebookWeekEventFlags + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]]); - if ((D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]] != 0) && CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - Message_ContinueTextbox(play, D_801C6AB8[msgCtx->unk120B2[msgCtx->unk120B1]]); + if ((sBombersNotebookEventMessages + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]] != 0) && + CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { + Message_ContinueTextbox( + play, sBombersNotebookEventMessages + [msgCtx->bombersNotebookEventQueue[msgCtx->bombersNotebookEventQueueCount]]); play_sound(NA_SE_SY_SCHEDULE_WRITE); return true; } @@ -476,7 +501,7 @@ u8 Message_GetState(MessageContext* msgCtx) { if (msgCtx->msgMode == 0x40) { return TEXT_STATE_13; } - if ((msgCtx->msgMode == 0x43) && (msgCtx->stateTimer == 1) && (msgCtx->unk120B1 == 0)) { + if ((msgCtx->msgMode == 0x43) && (msgCtx->stateTimer == 1) && (msgCtx->bombersNotebookEventQueueCount == 0)) { return TEXT_STATE_CLOSING; } diff --git a/src/code/z_play.c b/src/code/z_play.c index dd9b6c561..6ef734aee 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1,5 +1,6 @@ #include "global.h" #include "buffers.h" +#include "z64bombers_notebook.h" #include "z64debug_display.h" #include "z64quake.h" #include "z64rumble.h" @@ -1051,14 +1052,14 @@ void Play_Update(PlayState* this) { if (!sBombersNotebookOpen) { if (this->pauseCtx.bombersNotebookOpen) { sBombersNotebookOpen = true; - sBombersNotebook.unk_00 = 0; + sBombersNotebook.loadState = BOMBERS_NOTEBOOK_LOAD_STATE_NONE; } } else if (CHECK_BTN_ALL(CONTROLLER1(&this->state)->press.button, BTN_L) || CHECK_BTN_ALL(CONTROLLER1(&this->state)->press.button, BTN_B) || CHECK_BTN_ALL(CONTROLLER1(&this->state)->press.button, BTN_START) || (gIrqMgrResetStatus != 0)) { sBombersNotebookOpen = false; this->pauseCtx.bombersNotebookOpen = false; - sBombersNotebook.unk_00 = 0; + sBombersNotebook.loadState = BOMBERS_NOTEBOOK_LOAD_STATE_NONE; this->msgCtx.msgLength = 0; this->msgCtx.msgMode = 0; this->msgCtx.currentTextId = 0; diff --git a/src/code/z_play_hireso.c b/src/code/z_play_hireso.c index 829fe71f2..b995028ca 100644 --- a/src/code/z_play_hireso.c +++ b/src/code/z_play_hireso.c @@ -1,27 +1,1363 @@ #include "global.h" +#include "z64bombers_notebook.h" +#include "interface/schedule_static/schedule_static.h" -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016AC10.s") +// TODO: Needs YAZ0 +// Segment 0x07 schedule_dma_static_test +extern TexturePtr D_07000000; +extern TexturePtr D_07000800; +extern TexturePtr D_07001000; +extern TexturePtr D_07001800; +extern TexturePtr D_07002000; +extern TexturePtr D_07002800; +extern TexturePtr D_07003000; +extern TexturePtr D_07003800; +extern TexturePtr D_07004000; +extern TexturePtr D_07004800; +extern TexturePtr D_07005000; +extern TexturePtr D_07005800; +extern TexturePtr D_07006000; +extern TexturePtr D_07006800; +extern TexturePtr D_07007000; +extern TexturePtr D_07007800; +extern TexturePtr D_07008000; +extern TexturePtr D_07008800; +extern TexturePtr D_07009000; +extern TexturePtr D_07009800; +extern TexturePtr D_0700AC00; +extern TexturePtr D_0700AEA0; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016AE1C.s") +#define BOMBERS_NOTEBOOK_ENTRY_SIZE 3 +#define BOMBERS_NOTEBOOK_ENTRY_MAX 10 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016B278.s") +#define BOMBERS_NOTEBOOK_ENTRY_GET_DAY(row, entry) (((&sBombersNotebookEntries[row][entry])[0] & 0xF00) >> 8) +#define BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(row, entry) ((&sBombersNotebookEntries[row][entry])[0] & 0xFF) +#define BOMBERS_NOTEBOOK_ENTRY_GET_START_TIME(row, entry) ((&sBombersNotebookEntries[row][entry])[1]) +#define BOMBERS_NOTEBOOK_ENTRY_GET_END_TIME(row, entry) ((&sBombersNotebookEntries[row][entry])[2]) -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016B4B0.s") +#define BOMBERS_NOTEBOOK_ENTRY(pos, day, event, startTime, endTime) \ + ((pos)&0xF000) | (((day)&0xF) << 8) | ((event)&0xFF), (startTime), (endTime) +#define BOMBERS_NOTEBOOK_ENTRY_END 0x9999 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016C344.s") +#define BOMBERS_NOTEBOOK_ENTRY_POS_CENTER 0x0000 +#define BOMBERS_NOTEBOOK_ENTRY_POS_BELOW 0x4000 +#define BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE 0x8000 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016CD4C.s") +typedef enum { + /* 0 */ BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT, + /* 1 */ BOMBERS_NOTEBOOK_EVENT_ICON_MASK, + /* 2 */ BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON +} BombersNotebookEventIcon; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016E40C.s") +#define BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE 0xFFF0 +#define BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI 0xFFF1 -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016EA90.s") +u16 sBombersNotebookEntries[BOMBERS_NOTEBOOK_PERSON_MAX][BOMBERS_NOTEBOOK_ENTRY_MAX * BOMBERS_NOTEBOOK_ENTRY_SIZE] = { + { + /* Bombers */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 1, BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 2, BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 3, BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Anju */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY, + CLOCK_TIME(13, 45), CLOCK_TIME(16, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 1, BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING, + CLOCK_TIME(14, 30), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 1, BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI, + CLOCK_TIME(23, 30), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI, + CLOCK_TIME(23, 30), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, + BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES, CLOCK_TIME(17, 0), + CLOCK_TIME(21, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, + BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES, CLOCK_TIME(6, 0), + CLOCK_TIME(12, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK, + CLOCK_TIME(5, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Kafei */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES, CLOCK_TIME(16, 30), + CLOCK_TIME(22, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT, + CLOCK_TIME(18, 0), CLOCK_TIME(19, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK, + CLOCK_TIME(5, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Curiosity Shop Man */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK, + CLOCK_TIME(13, 0), CLOCK_TIME(22, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL, + CLOCK_TIME(13, 0), CLOCK_TIME(22, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK, + CLOCK_TIME(22, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Old Lady from Bomb Shop */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK, + CLOCK_TIME(0, 30), CLOCK_TIME(1, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Romani */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM, + CLOCK_TIME(6, 0), CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 1, BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM, + CLOCK_TIME(2, 30), CLOCK_TIME(5, 15)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE, + CLOCK_TIME(2, 30), CLOCK_TIME(5, 15)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Cremia */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 2, BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA, + CLOCK_TIME(18, 0), CLOCK_TIME(21, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK, + CLOCK_TIME(18, 0), CLOCK_TIME(21, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Mayor Dotour */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP, + CLOCK_TIME(8, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP, + CLOCK_TIME(8, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP, + CLOCK_TIME(8, 0), CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Madame Aroma */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK, + CLOCK_TIME(8, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK, + CLOCK_TIME(8, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL, + CLOCK_TIME(18, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Toto */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK, CLOCK_TIME(22, 0), + CLOCK_TIME(5, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK, CLOCK_TIME(22, 0), + CLOCK_TIME(5, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Gorman */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK, CLOCK_TIME(22, 0), + CLOCK_TIME(5, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK, CLOCK_TIME(22, 0), + CLOCK_TIME(5, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Postman */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP, + CLOCK_TIME(15, 0), CLOCK_TIME(0, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI, + CLOCK_TIME(6, 0), CLOCK_TIME(12, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP, + CLOCK_TIME(15, 0), CLOCK_TIME(0, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT, + CLOCK_TIME(18, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Rosa Sisters */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP, + CLOCK_TIME(18, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP, + CLOCK_TIME(18, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* ??? */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Anju's Grandmother */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 1, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP, CLOCK_TIME(8, 0), + CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 1, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP, CLOCK_TIME(8, 0), + CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE, 2, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP, CLOCK_TIME(8, 0), + CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_BELOW, 2, + BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP, CLOCK_TIME(8, 0), + CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Kamaro */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK, + CLOCK_TIME(0, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Grog */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD, + CLOCK_TIME(6, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD, + CLOCK_TIME(6, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD, + CLOCK_TIME(6, 0), CLOCK_TIME(20, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Gorman Brothers */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK, + CLOCK_TIME(6, 0), CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK, + CLOCK_TIME(6, 0), CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA, + CLOCK_TIME(18, 0), CLOCK_TIME(21, 0)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK, + CLOCK_TIME(6, 0), CLOCK_TIME(18, 0)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Shiro */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 3, BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK, + CLOCK_TIME(6, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, + { + /* Guru-Guru */ + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 1, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK, + CLOCK_TIME(18, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY(BOMBERS_NOTEBOOK_ENTRY_POS_CENTER, 2, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK, + CLOCK_TIME(18, 0), CLOCK_TIME(5, 59)), + BOMBERS_NOTEBOOK_ENTRY_END, + }, +}; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Draw.s") +s16 sBombersNotebookDayRectRectLeft[] = { 120, 120, 270, 420 }; +TexturePtr sBombersNotebookDayTextures[] = { + gBombersNotebookDay1stTex, + gBombersNotebookDay2ndTex, + gBombersNotebookDayFinalTex, +}; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/func_8016F4EC.s") +#define DEFINE_EVENT(_enum, icon, _colorFlag, _description, _completedMessage, _completedFlag) icon, -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Update.s") +s32 sBombersNotebookEventIcons[] = { +#include "tables/bombers_notebook/event_table.h" +}; -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Init.s") +#undef DEFINE_EVENT -#pragma GLOBAL_ASM("asm/non_matchings/code/z_play_hireso/BombersNotebook_Destroy.s") +s32 sBombersNotebookEventIconWidths[] = { 16, 24, 32 }; +s32 sBombersNotebookEventIconHeights[] = { 16, 28, 28 }; + +#define DEFINE_EVENT(_enum, _icon, colorFlag, _description, _completedMessage, _completedFlag) colorFlag, + +u16 sBombersNotebookEventColorWeekEventFlags[] = { +#include "tables/bombers_notebook/event_table.h" +}; + +#undef DEFINE_EVENT + +void BombersNotebook_DrawScisTexRect(Gfx** gfxP, s32 rxl, s32 ryl, s32 rxh, s32 ryh, s32 tile, s32 s, s32 t, s32 dsdx, + s32 dtdy) { + s32 xl = rxl - (gCfbLeftAdjust * 4); + s32 yl = ryl - (gCfbUpperAdjust * 4); + s32 xh = rxh - (gCfbLeftAdjust * 4); + s32 yh = ryh - (gCfbUpperAdjust * 4); + Gfx* gfx = *gfxP; + + gSPScisTextureRectangle(gfx++, xl, yl, xh, yh, tile, s, t, dsdx, dtdy); + + *gfxP = gfx; +} + +s16 sBombersNotebookHeaderColors[][3] = { + { 116, 134, 146 }, // Column 1 + { 158, 156, 131 }, // Column 2 + { 174, 141, 151 }, // Column 3 +}; + +void BombersNotebook_DrawHeaders(Gfx** gfxP) { + Gfx* gfx = *gfxP; + s32 i; + s32 rectLeft; + + gDPLoadTextureBlock(gfx++, gBombersNotebookHeaderBoxTex, G_IM_FMT_I, G_IM_SIZ_8b, 8, 24, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + for (i = 0, rectLeft = 120; i < ARRAY_COUNT(sBombersNotebookHeaderColors); i++, rectLeft += 150) { + gDPSetPrimColor(gfx++, 0, 0, sBombersNotebookHeaderColors[i][0], sBombersNotebookHeaderColors[i][1], + sBombersNotebookHeaderColors[i][2], 192); + BombersNotebook_DrawScisTexRect(&gfx, rectLeft * 4, 74 * 4, (rectLeft + 143) * 4, 98 * 4, 0, 0, 0, 1 << 10, + 1 << 10); + } + + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + for (i = 0, rectLeft = 124; i < ARRAY_COUNT(sBombersNotebookDayTextures); i++, rectLeft += 150) { + gDPLoadTextureBlock(gfx++, sBombersNotebookDayTextures[i], G_IM_FMT_IA, G_IM_SIZ_8b, 48, 22, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, rectLeft * 4, 77 * 4, (rectLeft + 48) * 4, 99 * 4, 0, 0, 0, 1 << 10, + 1 << 10); + } + + rectLeft = 172; + gDPLoadTextureBlock_4b(gfx++, gBombersNotebook1800Tex, G_IM_FMT_IA, 48, 11, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + for (i = 0; i < 3; i++) { + BombersNotebook_DrawScisTexRect(&gfx, rectLeft * 4, 86 * 4, (rectLeft + 48) * 4, 97 * 4, 0, 0, 0, 1 << 10, + 1 << 10); + rectLeft += 150; + } + + gDPPipeSync(gfx++); + *gfxP = gfx; +} + +// Each column/day gets subdivided into 4 sub columns, the first 2 sub columns use 1 color, the last 2 another +s16 sBombersNotebookColumnColors[][2][3] = { + { { 165, 183, 195 }, { 140, 158, 170 } }, // Column 1 + { { 197, 195, 172 }, { 172, 170, 147 } }, // Column 2 + { { 223, 190, 200 }, { 190, 165, 175 } }, // Column 3 +}; + +void BombersNotebook_DrawColumns(Gfx** gfxP) { + Gfx* gfx = *gfxP; + s16* color; + s32 i; + s32 j; + s32 k; + s32 columnRectLeft; + s32 subColumnRectLeft; + s32 pad; + + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookSubColumnBoxTex, G_IM_FMT_I, 48, 1, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + color = &sBombersNotebookColumnColors[0][0][0]; + for (i = 0, columnRectLeft = 120; i < ARRAY_COUNT(sBombersNotebookColumnColors); i++, columnRectLeft += 150) { + subColumnRectLeft = columnRectLeft; + for (j = 0; j < 2; j++) { + gDPSetPrimColor(gfx++, 0, 0, color[0], color[1], color[2], 192); + for (k = 0; k < 2; k++) { + BombersNotebook_DrawScisTexRect(&gfx, subColumnRectLeft * 4, 104 * 4, (subColumnRectLeft + 48) * 4, + 480 * 4, 0, 0, 0, 1 << 10, 1 << 10); + subColumnRectLeft += 36; + } + color += 3; + } + } + + gDPPipeSync(gfx++); + *gfxP = gfx; +} + +TexturePtr sBombersNotebookEventIconTextures[] = { + gBombersNotebookEntryIconExclamationPointTex, + &D_0700AC00, + &D_0700AEA0, +}; +s16 sBombersNotebookEntryIconColors[][3] = { + { 255, 255, 0 }, + { 141, 255, 182 }, + { 255, 100, 60 }, +}; + +void BombersNotebook_DrawEntries(Gfx** gfxP, s32 row, u32 rectTop) { + Gfx* gfx = *gfxP; + s32 entryRectLeft; + u32 eventIcon; + u32 unfinishedEvent = false; + u16 startTime; + u16 endTime; + s32 j = 0; + u32 iconRectLeft; + s32 entryRectRight; + u32 yOffset; + s32 entryWidth; + + while (true) { + if (sBombersNotebookEntries[row][j] == BOMBERS_NOTEBOOK_ENTRY_END) { + if (!unfinishedEvent) { + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, + PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 255); + gDPSetEnvColor(gfx++, 0, 0, 0, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookStampTex, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 48, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, 567 * 4, (rectTop + 1) * 4, 599 * 4, (rectTop + 49) * 4, 0, 0, 0, + 1 << 10, 1 << 10); + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + gDPSetEnvColor(gfx++, 255, 0, 0, 255); + BombersNotebook_DrawScisTexRect(&gfx, 565 * 4, (rectTop + -1) * 4, 597 * 4, (rectTop + 47) * 4, 0, 0, 0, + 1 << 10, 1 << 10); + gDPPipeSync(gfx++); + gDPSetCombineMode(gfx++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetEnvColor(gfx++, 0, 0, 0, 255); + } + break; + } + + if (sBombersNotebookEntries[row][j] & BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE) { + yOffset = 8; + } else if (sBombersNotebookEntries[row][j] & BOMBERS_NOTEBOOK_ENTRY_POS_BELOW) { + yOffset = 24; + } else { // BOMBERS_NOTEBOOK_ENTRY_POS_CENTER + yOffset = 16; + } + + startTime = BOMBERS_NOTEBOOK_ENTRY_GET_START_TIME(row, j) - CLOCK_TIME(6, 0); + endTime = BOMBERS_NOTEBOOK_ENTRY_GET_END_TIME(row, j) - CLOCK_TIME(6, 0); + entryRectLeft = + sBombersNotebookDayRectRectLeft[BOMBERS_NOTEBOOK_ENTRY_GET_DAY(row, j)] + (startTime / CLOCK_TIME(0, 10)); + entryRectRight = + sBombersNotebookDayRectRectLeft[BOMBERS_NOTEBOOK_ENTRY_GET_DAY(row, j)] + (endTime / CLOCK_TIME(0, 10)); + entryWidth = entryRectRight - entryRectLeft - 8; + if ((entryRectRight - entryRectLeft) < 8) { + entryRectLeft = ((entryRectLeft + entryRectRight) - entryRectLeft) - 8; + entryRectRight = entryRectLeft + 8; + } + + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookEntryBoxEndTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 16, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 2, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (entryRectLeft + 2) * 4, (rectTop + yOffset + 2) * 4, + (entryRectLeft + 6) * 4, (rectTop + yOffset + 18) * 4, 0, 0, 0, 1 << 10, + 1 << 10); + BombersNotebook_DrawScisTexRect(&gfx, (entryRectRight + -2) * 4, (rectTop + yOffset + 2) * 4, + (entryRectRight + 2) * 4, (rectTop + yOffset + 18) * 4, 0, 0x80, 0, 1 << 10, + 1 << 10); + if (entryWidth > 0) { + gDPLoadTextureBlock(gfx++, gBombersNotebookEntryBoxMiddleTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 16, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 2, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (entryRectLeft + 6) * 4, (rectTop + yOffset + 2) * 4, + (entryRectLeft + 6 + entryWidth) * 4, (rectTop + yOffset + 18) * 4, 0, 0, 0, + 1 << 10, 1 << 10); + } + + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookEntryBoxEndTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 16, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 2, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + //! FAKE: the ^ 0 + BombersNotebook_DrawScisTexRect(&gfx, (entryRectLeft * 4) ^ 0, (rectTop + yOffset) * 4, (entryRectLeft + 4) * 4, + (rectTop + yOffset + 16) * 4, 0, 0, 0, 1 << 10, 1 << 10); + //! FAKE: the ^ 0 + BombersNotebook_DrawScisTexRect(&gfx, (entryRectRight + -4) * 4, (rectTop + yOffset) * 4, + (entryRectRight * 4) ^ 0, (rectTop + yOffset + 16) * 4, 0, 0x80, 0, 1 << 10, + 1 << 10); + if (entryWidth > 0) { + gDPLoadTextureBlock(gfx++, gBombersNotebookEntryBoxMiddleTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 4, 16, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 2, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (entryRectLeft + 4) * 4, (rectTop + yOffset) * 4, + (entryRectLeft + 4 + entryWidth) * 4, (rectTop + yOffset + 16) * 4, 0, 0, 0, + 1 << 10, 1 << 10); + } + + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(row, j)])) { + eventIcon = + sBombersNotebookEventIcons[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(row, j) - BOMBERS_NOTEBOOK_PERSON_MAX]; + if ((entryRectRight - entryRectLeft) < sBombersNotebookEventIconWidths[eventIcon]) { + iconRectLeft = + (((entryRectLeft - sBombersNotebookEventIconWidths[eventIcon]) + entryRectRight) - entryRectLeft) + + 3; + } else { + iconRectLeft = (((entryRectRight - entryRectLeft) - sBombersNotebookEventIconWidths[eventIcon]) / 2) + + entryRectLeft; + } + + if ((eventIcon == BOMBERS_NOTEBOOK_EVENT_ICON_MASK) || (eventIcon == BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON)) { + if (sBombersNotebookEntries[row][j] & BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE) { + yOffset -= 12; + } else if (!(sBombersNotebookEntries[row][j] & BOMBERS_NOTEBOOK_ENTRY_POS_BELOW)) { + // BOMBERS_NOTEBOOK_ENTRY_POS_CENTER + yOffset -= 6; + } + } + gDPLoadTextureBlock(gfx++, sBombersNotebookEventIconTextures[eventIcon], G_IM_FMT_IA, G_IM_SIZ_8b, + sBombersNotebookEventIconWidths[eventIcon], sBombersNotebookEventIconHeights[eventIcon], + 0, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 255); + + BombersNotebook_DrawScisTexRect(&gfx, (iconRectLeft + 2) * 4, (rectTop + yOffset + 2) * 4, + (iconRectLeft + 2 + sBombersNotebookEventIconWidths[eventIcon]) * 4, + (rectTop + yOffset + 2 + sBombersNotebookEventIconHeights[eventIcon]) * 4, + 0, 0, 0, 1 << 10, 1 << 10); + if (sBombersNotebookEventColorWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(row, j) - + BOMBERS_NOTEBOOK_PERSON_MAX] == + BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_NONE) { + gDPSetPrimColor(gfx++, 0, 0, sBombersNotebookEntryIconColors[eventIcon][0], + sBombersNotebookEntryIconColors[eventIcon][1], + sBombersNotebookEntryIconColors[eventIcon][2], 255); + } else if (sBombersNotebookEventColorWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(row, j) - + BOMBERS_NOTEBOOK_PERSON_MAX] == + BOMBERS_NOTEBOOK_EVENT_COLOR_WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_UPPER_CLOCKTOWN) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_NORTH_CLOCKTOWN) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_UPPER_CLOCKTOWN) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_LOWER_CLOCKTOWN) || + CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_LOWER_CLOCKTOWN)) { + gDPSetPrimColor(gfx++, 0, 0, sBombersNotebookEntryIconColors[eventIcon][0], + sBombersNotebookEntryIconColors[eventIcon][1], + sBombersNotebookEntryIconColors[eventIcon][2], 255); + } else { + gDPSetPrimColor(gfx++, 0, 0, 155, 155, 155, 255); + } + } else { + if (CHECK_WEEKEVENTREG( + sBombersNotebookEventColorWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(row, j) - + BOMBERS_NOTEBOOK_PERSON_MAX])) { + gDPSetPrimColor(gfx++, 0, 0, sBombersNotebookEntryIconColors[eventIcon][0], + sBombersNotebookEntryIconColors[eventIcon][1], + sBombersNotebookEntryIconColors[eventIcon][2], 255); + } else { + gDPSetPrimColor(gfx++, 0, 0, 155, 155, 155, 255); + } + } + BombersNotebook_DrawScisTexRect(&gfx, iconRectLeft * 4, (rectTop + yOffset) * 4, + (iconRectLeft + sBombersNotebookEventIconWidths[eventIcon]) * 4, + (rectTop + yOffset + sBombersNotebookEventIconHeights[eventIcon]) * 4, 0, 0, + 0, 1 << 10, 1 << 10); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + } else { + unfinishedEvent = true; + } + j += BOMBERS_NOTEBOOK_ENTRY_SIZE; + } + + *gfxP = gfx; +} + +#define DEFINE_PERSON(_enum, photo, _description, _metEnum, _metMessage, _metFlag) &photo, + +TexturePtr sBombersNotebookPhotoTextures[] = { +#include "tables/bombers_notebook/person_table.h" +}; + +#undef DEFINE_PERSON + +void BombersNotebook_DrawRows(BombersNotebook* this, Gfx** gfxP) { + static s16 sBarColorR = 0; + static s16 sBarColorG = 0; + static s16 sBarColorB = 0; + static s16 sBarColorTimer = 10; + static s16 sBarColorIndex = 0; + static s16 sBarColorTargetsR[] = { 100, 0 }; + static s16 sBarColorTargetsG[] = { 80, 0 }; + static s16 sBarColorTargetsB[] = { 255, 0 }; + Gfx* gfx = *gfxP; + s32 photoWidth; + s32 rowEnd; + s32 cursorPage; + u32 barRectLeft; + f32 photoRectDs; + u32 photoOffset; + s32 i; + u32 rectTop; + s16 colorStep; + + colorStep = ABS_ALT(sBarColorR - sBarColorTargetsR[sBarColorIndex]) / sBarColorTimer; + if (sBarColorR >= sBarColorTargetsR[sBarColorIndex]) { + sBarColorR -= colorStep; + } else { + sBarColorR += colorStep; + } + + colorStep = ABS_ALT(sBarColorG - sBarColorTargetsG[sBarColorIndex]) / sBarColorTimer; + if (sBarColorG >= sBarColorTargetsG[sBarColorIndex]) { + sBarColorG -= colorStep; + } else { + sBarColorG += colorStep; + } + + colorStep = ABS_ALT(sBarColorB - sBarColorTargetsB[sBarColorIndex]) / sBarColorTimer; + if (sBarColorB >= sBarColorTargetsB[sBarColorIndex]) { + sBarColorB -= colorStep; + } else { + sBarColorB += colorStep; + } + + sBarColorTimer--; + if (sBarColorTimer == 0) { + sBarColorTimer = 10; + sBarColorR = sBarColorTargetsR[sBarColorIndex]; + sBarColorG = sBarColorTargetsG[sBarColorIndex]; + sBarColorB = sBarColorTargetsB[sBarColorIndex]; + sBarColorIndex ^= 1; + } + + rectTop = this->scrollOffset + 107; + if (this->cursorPage >= (BOMBERS_NOTEBOOK_PERSON_MAX - 8)) { + rowEnd = BOMBERS_NOTEBOOK_PERSON_MAX; + i = this->cursorPage; + } else { + rowEnd = this->cursorPage + 8; + i = rowEnd - 8; + } + cursorPage = i; + for (; i < rowEnd; i++, rectTop += 52) { + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[i])) { + gDPLoadTextureBlock(gfx++, sBombersNotebookPhotoTextures[i], G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + } else { + gDPLoadTextureBlock(gfx++, gBombersNotebookEmptyPhotoTex, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + } + if ((i == (this->cursorPageRow + cursorPage)) && (this->scrollAmount == 0)) { + barRectLeft = 56; + photoOffset = 8; + photoRectDs = 200.0f; + photoWidth = 64; + } else { + barRectLeft = 48; + photoOffset = 0; + photoRectDs = 150.0f; + photoWidth = 48; + } + BombersNotebook_DrawScisTexRect(&gfx, (57 - photoOffset) * 4, (rectTop - photoOffset) * 4, + (57 - photoOffset + photoWidth) * 4, (rectTop - photoOffset + photoWidth) * 4, + 0, 0, 0, 1024.0f / (photoRectDs / 100.0f), 1024.0f / (photoRectDs / 100.0f)); + + if ((i == (this->cursorPageRow + cursorPage)) && (this->scrollAmount == 0)) { + gDPSetPrimColor(gfx++, 0, 0, sBarColorR, sBarColorG, sBarColorB, 255); + } else { + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 60); + } + gDPLoadTextureBlock(gfx++, gBombersNotebookBarTex, G_IM_FMT_I, G_IM_SIZ_8b, 8, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + BombersNotebook_DrawScisTexRect(&gfx, (barRectLeft + 57) * 4, (rectTop + 22) * 4, + (barRectLeft - photoOffset + 527) * 4, (rectTop + 26) * 4, 0, 0, 0, 1 << 10, + 1 << 10); + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookCircleTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + BombersNotebook_DrawScisTexRect(&gfx, (barRectLeft - photoOffset + 527) * 4, (rectTop + 16) * 4, + (barRectLeft - photoOffset + 543) * 4, (rectTop + 32) * 4, 0, 0, 0, 1 << 10, + 1 << 10); + + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[i])) { + gDPPipeSync(gfx++); + gDPSetRenderMode(gfx++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + + BombersNotebook_DrawEntries(&gfx, i, rectTop); + + gDPPipeSync(gfx++); + gDPSetRenderMode(gfx++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + } + } + gDPPipeSync(gfx++); + *gfxP = gfx; +} + +TexturePtr sBombersNotebookDigitTextures[] = { + gBombersNotebookDigit0Tex, gBombersNotebookDigit1Tex, gBombersNotebookDigit2Tex, gBombersNotebookDigit3Tex, + gBombersNotebookDigit4Tex, gBombersNotebookDigit5Tex, gBombersNotebookDigit6Tex, gBombersNotebookDigit7Tex, + gBombersNotebookDigit8Tex, gBombersNotebookDigit9Tex, +}; +u8 sBombersNotebookDigitRectLeftOffsets[] = { 13, 8, 12, 13, 14, 13, 12, 12, 13, 12 }; +s16 sBombersNotebookDayTexRectLeftOffsets[] = { 16, 12, 9 }; + +#define CURRENT_DAY_CLAMP_MIN_1 ((CURRENT_DAY == 0) ? 1 : CURRENT_DAY) +void BombersNotebook_DrawTimeOfDay(Gfx** gfxP) { + Gfx* gfx = *gfxP; + u32 timeOfDayRectLeft; + u32 timeBoxRectLeft; + u32 connectorRectLeft; + u32 lineRectLeft; + u32 digitsRectLeft; + u16 time; + s32 onesDigit; + s32 tensDigit; + s32 hours; + + time = (((void)0, gSaveContext.save.time) - CLOCK_TIME(6, 0)); + if (CURRENT_DAY == 0) { + time = 0; + } + timeOfDayRectLeft = sBombersNotebookDayRectRectLeft[CURRENT_DAY] + (time / CLOCK_TIME(0, 10)); + if ((CURRENT_DAY_CLAMP_MIN_1 == 1) || + ((CURRENT_DAY_CLAMP_MIN_1 == 2) && (((void)0, gSaveContext.save.time) < CLOCK_TIME(12, 0)))) { + timeOfDayRectLeft -= 32; + lineRectLeft = timeOfDayRectLeft + 32; + } else if ((CURRENT_DAY_CLAMP_MIN_1 == 2) && (time >= (CLOCK_TIME(17, 0) - CLOCK_TIME(6, 0))) && + (time <= (CLOCK_TIME(19, 0) - CLOCK_TIME(6, 0)))) { + timeOfDayRectLeft -= 64; + lineRectLeft = timeOfDayRectLeft + 64; + } else { + timeOfDayRectLeft -= 96; + lineRectLeft = timeOfDayRectLeft + 96; + } + + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + gDPLoadTextureBlock_4b(gfx++, gBombersNoteoobkTimeOfDayBoxTex, G_IM_FMT_IA, 64, 28, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, timeOfDayRectLeft * 4, 42 * 4, (timeOfDayRectLeft + 128) * 4, 70 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 255); + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0); + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookTimeOfDayTex, G_IM_FMT_I, 96, 20, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + + BombersNotebook_DrawScisTexRect(&gfx, (timeOfDayRectLeft + 16) * 4, 47 * 4, (timeOfDayRectLeft + 112) * 4, 67 * 4, + 0, 0, 0, 1 << 10, 1 << 10); + + gDPPipeSync(gfx++); + gDPSetCombineMode(gfx++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + if (((CURRENT_DAY_CLAMP_MIN_1 >= 3) || + ((CURRENT_DAY_CLAMP_MIN_1 == 2) && (time > (CLOCK_TIME(18, 0) - CLOCK_TIME(6, 0)))))) { + timeBoxRectLeft = timeOfDayRectLeft - 159; + connectorRectLeft = timeOfDayRectLeft - 17; + } else { + timeBoxRectLeft = timeOfDayRectLeft + 130; + connectorRectLeft = timeOfDayRectLeft + 113; + } + + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookTimeBoxLeftTex, G_IM_FMT_IA, 16, 28, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, timeBoxRectLeft * 4, 42 * 4, (timeBoxRectLeft + 16) * 4, 70 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookTimeBoxMiddleTex, G_IM_FMT_IA, 16, 28, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 4, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (timeBoxRectLeft + 16) * 4, 42 * 4, (timeBoxRectLeft + 141) * 4, 70 * 4, 0, 0, + 0, 1 << 10, 1 << 10); + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookTimeBoxRightTex, G_IM_FMT_IA, 16, 28, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (timeBoxRectLeft + 141) * 4, 42 * 4, (timeBoxRectLeft + 157) * 4, 70 * 4, 0, + 0, 0, 1 << 10, 1 << 10); + gDPLoadTextureBlock(gfx++, sBombersNotebookDayTextures[CURRENT_DAY_CLAMP_MIN_1 - 1], G_IM_FMT_IA, G_IM_SIZ_8b, 48, + 22, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, + G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect( + &gfx, (timeBoxRectLeft + sBombersNotebookDayTexRectLeftOffsets[CURRENT_DAY_CLAMP_MIN_1 - 1]) * 4, 46 * 4, + (timeBoxRectLeft + sBombersNotebookDayTexRectLeftOffsets[CURRENT_DAY_CLAMP_MIN_1 - 1] + 48) * 4, 68 * 4, 0, 0, + 0, 1 << 10, 1 << 10); + + gDPSetPrimColor(gfx++, 0, 0, 150, 150, 150, 255); + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookCircleTex, G_IM_FMT_I, 16, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (timeBoxRectLeft + 56) * 4, 48 * 4, (timeBoxRectLeft + 72) * 4, 0x100, 0, 0, + 0, 1 << 10, 1 << 10); + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0); + gDPSetPrimColor(gfx++, 0, 0, 0, 0, 0, 255); + + tensDigit = 0; + onesDigit = ((void)0, gSaveContext.save.time) / CLOCK_TIME_HOUR; + if (CURRENT_DAY == 0) { + onesDigit = 6; + } + hours = onesDigit; + do { + if (onesDigit >= 10) { + tensDigit++; + onesDigit -= 10; + } + } while (onesDigit >= 10); + + digitsRectLeft = timeBoxRectLeft + 75; + gDPLoadTextureBlock_4b(gfx++, sBombersNotebookDigitTextures[tensDigit], G_IM_FMT_I, 16, 17, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, digitsRectLeft * 4, 48 * 4, (digitsRectLeft + 16) * 4, 65 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + + digitsRectLeft += sBombersNotebookDigitRectLeftOffsets[tensDigit]; + gDPLoadTextureBlock_4b(gfx++, sBombersNotebookDigitTextures[onesDigit], G_IM_FMT_I, 16, 17, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, digitsRectLeft * 4, 48 * 4, (digitsRectLeft + 16) * 4, 65 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + + digitsRectLeft += sBombersNotebookDigitRectLeftOffsets[onesDigit]; + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookColonTex, G_IM_FMT_I, 16, 17, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, digitsRectLeft * 4, 48 * 4, (digitsRectLeft + 16) * 4, 65 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + + digitsRectLeft += 7; + tensDigit = 0; + if (CURRENT_DAY == 0) { + onesDigit = TIME_TO_MINUTES_ALT_F((CLOCK_TIME_F(6, 0) - (hours * CLOCK_TIME_HOUR_F))); + } else { + onesDigit = TIME_TO_MINUTES_ALT_F(((void)0, gSaveContext.save.time) - (hours * CLOCK_TIME_HOUR_F)); + } + do { + if (onesDigit >= 10) { + tensDigit++; + onesDigit -= 10; + } + } while (onesDigit >= 10); + + gDPLoadTextureBlock_4b(gfx++, sBombersNotebookDigitTextures[tensDigit], G_IM_FMT_I, 16, 17, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, digitsRectLeft * 4, 48 * 4, (digitsRectLeft + 16) * 4, 65 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + digitsRectLeft += sBombersNotebookDigitRectLeftOffsets[tensDigit]; + gDPLoadTextureBlock_4b(gfx++, sBombersNotebookDigitTextures[onesDigit], G_IM_FMT_I, 16, 17, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, digitsRectLeft * 4, 48 * 4, (digitsRectLeft + 16) * 4, 65 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + + gDPPipeSync(gfx++); + gDPSetCombineMode(gfx++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookConnectorTex, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 14, 0, + G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, + G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, connectorRectLeft * 4, 49 * 4, (connectorRectLeft + 32) * 4, 63 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + + gDPSetPrimColor(gfx++, 0, 0, 242, 0, 14, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookLineTex, G_IM_FMT_I, G_IM_SIZ_8b, 8, 1, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, lineRectLeft * 4, 74 * 4, (lineRectLeft + 32) * 4, 490 * 4, 0, 0, 0, 1 << 10, + 1 << 10); + + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, 255); + gDPSetEnvColor(gfx++, 200, 0, 0, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookArrowTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD); + BombersNotebook_DrawScisTexRect(&gfx, (lineRectLeft + -11) * 4, 70 * 4, (lineRectLeft + 13) * 4, 86 * 4, 0, 0, 0, + 1 << 10, 1 << 10); + + gDPPipeSync(gfx++); + *gfxP = gfx; +} + +void BombersNotebook_DrawCursor(BombersNotebook* this, Gfx** gfxP) { + Gfx* gfx = *gfxP; + s32 cursorRow; + s32 cursorEntry; + s32 entryRectRight; + s32 entryRectLeft; + s32 entryIcon; + u32 cursorRectLeft; + u32 cursorRectTop; + u32 yOffset; + u16 startTime; + u16 endTime; + + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(gfx++, 0, 0, 255, 205, 55, 255); + gDPSetEnvColor(gfx++, 0, 0, 0, 255); + gDPLoadTextureBlock_4b(gfx++, gBombersNotebookCursorTex, G_IM_FMT_IA, 16, 16, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD); + + if (this->cursorEntry == 0) { + BombersNotebook_DrawScisTexRect(&gfx, 47 * 4, (this->cursorPageRow * 52 + 97) * 4, 63 * 4, + (this->cursorPageRow * 52 + 113) * 4, 0, 0, 0, 1 << 10, 1 << 10); + BombersNotebook_DrawScisTexRect(&gfx, 98 * 4, (this->cursorPageRow * 52 + 97) * 4, 114 * 4, + (this->cursorPageRow * 52 + 113) * 4, 0, 0x200, 0, 1 << 10, 1 << 10); + BombersNotebook_DrawScisTexRect(&gfx, 47 * 4, (this->cursorPageRow * 52 + 147) * 4, 63 * 4, + (this->cursorPageRow * 52 + 163) * 4, 0, 0, 0x200, 1 << 10, 1 << 10); + BombersNotebook_DrawScisTexRect(&gfx, 98 * 4, (this->cursorPageRow * 52 + 147) * 4, 114 * 4, + (this->cursorPageRow * 52 + 163) * 4, 0, 0x200, 0x200, 1 << 10, 1 << 10); + } else { + cursorRow = this->cursorPageRow + this->cursorPage; + cursorRectTop = (this->cursorPageRow * 52) + 107; + cursorEntry = this->cursorEntry - BOMBERS_NOTEBOOK_ENTRY_SIZE; // Offset from photo entry + if (sBombersNotebookEntries[cursorRow][cursorEntry] & BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE) { + yOffset = 8; + } else if (sBombersNotebookEntries[cursorRow][cursorEntry] & BOMBERS_NOTEBOOK_ENTRY_POS_BELOW) { + yOffset = 24; + } else { // BOMBERS_NOTEBOOK_ENTRY_POS_CENTER + yOffset = 16; + } + + startTime = BOMBERS_NOTEBOOK_ENTRY_GET_START_TIME(cursorRow, cursorEntry) - CLOCK_TIME(6, 0); + endTime = BOMBERS_NOTEBOOK_ENTRY_GET_END_TIME(cursorRow, cursorEntry) - CLOCK_TIME(6, 0); + entryRectLeft = sBombersNotebookDayRectRectLeft[BOMBERS_NOTEBOOK_ENTRY_GET_DAY(cursorRow, cursorEntry)] + + (startTime / CLOCK_TIME(0, 10)); + entryRectRight = sBombersNotebookDayRectRectLeft[BOMBERS_NOTEBOOK_ENTRY_GET_DAY(cursorRow, cursorEntry)] + + (endTime / CLOCK_TIME(0, 10)); + if ((entryRectRight - entryRectLeft) < 8) { + entryRectLeft = ((entryRectLeft + entryRectRight) - entryRectLeft) - 8; + entryRectRight = entryRectLeft + 8; + } + entryIcon = sBombersNotebookEventIcons[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT(cursorRow, cursorEntry) - + BOMBERS_NOTEBOOK_PERSON_MAX]; + if ((entryRectRight - entryRectLeft) < sBombersNotebookEventIconWidths[entryIcon]) { + cursorRectLeft = + (((entryRectLeft - sBombersNotebookEventIconWidths[entryIcon]) + entryRectRight) - entryRectLeft) + 3; + } else { + cursorRectLeft = + (((entryRectRight - entryRectLeft) - sBombersNotebookEventIconWidths[entryIcon]) / 2) + entryRectLeft; + } + if (entryIcon == BOMBERS_NOTEBOOK_EVENT_ICON_EXCLAMATION_POINT) { + cursorRectLeft -= 8; + cursorRectTop -= 8; + } else { + cursorRectLeft -= 9; + cursorRectTop -= 8; + } + if ((entryIcon == BOMBERS_NOTEBOOK_EVENT_ICON_MASK) || (entryIcon == BOMBERS_NOTEBOOK_EVENT_ICON_RIBBON)) { + if (sBombersNotebookEntries[cursorRow][cursorEntry] & BOMBERS_NOTEBOOK_ENTRY_POS_ABOVE) { + yOffset -= 12; + } else if (!(sBombersNotebookEntries[cursorRow][cursorEntry] & BOMBERS_NOTEBOOK_ENTRY_POS_BELOW)) { + // BOMBERS_NOTEBOOK_ENTRY_POS_CENTER + yOffset -= 6; + } + } + BombersNotebook_DrawScisTexRect(&gfx, cursorRectLeft * 4, (cursorRectTop + yOffset) * 4, + (cursorRectLeft + 16) * 4, (cursorRectTop + yOffset + 16) * 4, 0, 0, 0, 1 << 10, + 1 << 10); + BombersNotebook_DrawScisTexRect(&gfx, (cursorRectLeft + sBombersNotebookEventIconWidths[entryIcon]) * 4, + (cursorRectTop + yOffset) * 4, + (cursorRectLeft + sBombersNotebookEventIconWidths[entryIcon] + 16) * 4, + (cursorRectTop + yOffset + 16) * 4, 0, 0x200, 0, 1 << 10, 1 << 10); + BombersNotebook_DrawScisTexRect( + &gfx, cursorRectLeft * 4, (cursorRectTop + yOffset + sBombersNotebookEventIconHeights[entryIcon]) * 4, + (cursorRectLeft + 16) * 4, (cursorRectTop + yOffset + sBombersNotebookEventIconHeights[entryIcon] + 16) * 4, + 0, 0, 0x200, 1 << 10, 1 << 10); + BombersNotebook_DrawScisTexRect(&gfx, (cursorRectLeft + sBombersNotebookEventIconWidths[entryIcon]) * 4, + (cursorRectTop + yOffset + sBombersNotebookEventIconHeights[entryIcon]) * 4, + (cursorRectLeft + sBombersNotebookEventIconWidths[entryIcon] + 16) * 4, + (cursorRectTop + yOffset + sBombersNotebookEventIconHeights[entryIcon] + 16) * + 4, + 0, 0x200, 0x200, 1 << 10, 1 << 10); + } + + gDPPipeSync(gfx++); + *gfxP = gfx; +} + +void BombersNotebook_DrawArrows(BombersNotebook* this, Gfx** gfxP) { + static s16 sUpperArrowColorR = 0; + static s16 sUpperArrowColorG = 100; + static s16 sUpperArrowColorB = 255; + static s16 sLowerArrowColorR = 0; + static s16 sLowerArrowColorG = 100; + static s16 sLowerArrowColorB = 255; + static s16 sUpperArrowColorIndex = 0; + static s16 sLowerArrowColorIndex = 0; + static s16 sUpperArrowColorTimer = 6; + static s16 sLowerArrowColorTimer = 6; + static s16 sUpperArrowOffsetY = 0; + static s16 sLowerArrowOffsetY = 0; + static s16 sArrowColorTargetsG[] = { 175, 100 }; + static s16 sArrowColorTargetsB[] = { 205, 255 }; + Gfx* gfx = *gfxP; + u32 rectTop; + s16 colorStep; + + gDPPipeSync(gfx++); + gDPLoadTextureBlock(gfx++, gBombersNotebookArrowTex, G_IM_FMT_IA, G_IM_SIZ_8b, 24, 16, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, G_TX_NOMASK, 4, G_TX_NOLOD, G_TX_NOLOD); + + colorStep = ABS_ALT(sUpperArrowColorG - sArrowColorTargetsG[sUpperArrowColorIndex]) / sUpperArrowColorTimer; + if (sUpperArrowColorG >= sArrowColorTargetsG[sUpperArrowColorIndex]) { + sUpperArrowColorG -= colorStep; + } else { + sUpperArrowColorG += colorStep; + } + + colorStep = ABS_ALT(sUpperArrowColorB - sArrowColorTargetsB[sUpperArrowColorIndex]) / sUpperArrowColorTimer; + if (sUpperArrowColorB >= sArrowColorTargetsB[sUpperArrowColorIndex]) { + sUpperArrowColorB -= colorStep; + } else { + sUpperArrowColorB += colorStep; + } + + sUpperArrowColorTimer--; + if (sUpperArrowColorTimer == 0) { + sUpperArrowOffsetY ^= 6; + sUpperArrowColorTimer = 6; + sUpperArrowColorG = sArrowColorTargetsG[sUpperArrowColorIndex]; + sUpperArrowColorB = sArrowColorTargetsB[sUpperArrowColorIndex]; + sUpperArrowColorIndex ^= 1; + } + + colorStep = ABS_ALT(sLowerArrowColorG - sArrowColorTargetsG[sLowerArrowColorIndex]) / sLowerArrowColorTimer; + if (sLowerArrowColorG >= sArrowColorTargetsG[sLowerArrowColorIndex]) { + sLowerArrowColorG -= colorStep; + } else { + sLowerArrowColorG += colorStep; + } + + colorStep = ABS_ALT(sLowerArrowColorB - sArrowColorTargetsB[sLowerArrowColorIndex]) / sLowerArrowColorTimer; + if (sLowerArrowColorB >= sArrowColorTargetsB[sLowerArrowColorIndex]) { + sLowerArrowColorB -= colorStep; + } else { + sLowerArrowColorB += colorStep; + } + + sLowerArrowColorTimer--; + if (sLowerArrowColorTimer == 0) { + sLowerArrowOffsetY ^= 6; + sLowerArrowColorTimer = 6; + sLowerArrowColorG = sArrowColorTargetsG[sLowerArrowColorIndex]; + sLowerArrowColorB = sArrowColorTargetsB[sLowerArrowColorIndex]; + sLowerArrowColorIndex ^= 1; + } + + if (this->cursorPage != 0) { + gDPPipeSync(gfx++); + gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetPrimColor(gfx++, 0, 0, sUpperArrowColorR, sUpperArrowColorG, sUpperArrowColorB, 255); + gDPSetEnvColor(gfx++, sUpperArrowColorR, sUpperArrowColorG, sUpperArrowColorB, 255); + rectTop = (-sUpperArrowOffsetY + 83) * 4; + BombersNotebook_DrawScisTexRect(&gfx, 46 * 4, rectTop, 70 * 4, rectTop + (16 * 4), 0, 0, 0x200, 1 << 10, + 1 << 10); + } + + if (this->cursorPage < 16) { + gDPPipeSync(gfx++); + gDPSetPrimColor(gfx++, 0, 0, sLowerArrowColorR, sLowerArrowColorG, sLowerArrowColorB, 255); + gDPSetEnvColor(gfx++, sLowerArrowColorR, sLowerArrowColorG, sLowerArrowColorB, 255); + BombersNotebook_DrawScisTexRect(&gfx, 46 * 4, (sLowerArrowOffsetY + 319) * 4, 70 * 4, + (sLowerArrowOffsetY + 335) * 4, 0, 0, 0, 1 << 10, 1 << 10); + } + gDPPipeSync(gfx++); + *gfxP = gfx; +} + +void BombersNotebook_Draw(BombersNotebook* this, GraphicsContext* gfxCtx) { + Gfx* gfx; + s32 pad[2]; + + func_8012CF0C(gfxCtx, this->loadState != BOMBERS_NOTEBOOK_LOAD_STATE_DONE, false, 0, 0, 0); + + OPEN_DISPS(gfxCtx); + + gfx = POLY_OPA_DISP; + + if (this->loadState == BOMBERS_NOTEBOOK_LOAD_STATE_DONE) { + gSPSegment(gfx++, 0x07, this->scheduleDmaSegment); + gSPSegment(gfx++, 0x08, this->scheduleSegment); + gfx = Gfx_SetupDL39(gfx); + gDPSetCombineLERP(gfx++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, + ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0); + gDPSetRenderMode(gfx++, G_RM_OPA_SURF, G_RM_OPA_SURF2); + gDPSetPrimColor(gfx++, 0, 0, 255, 255, 215, 255); + gDPSetEnvColor(gfx++, 100, 100, 100, 255); + gDPLoadTextureBlock(gfx++, gBombersNotebookBackgroundTex, G_IM_FMT_I, G_IM_SIZ_8b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + + BombersNotebook_DrawScisTexRect(&gfx, 0 * 4, 0 * 4, SCREEN_WIDTH_HIRES * 4, SCREEN_HEIGHT_HIRES * 4, 0, 0, 0, + 0x200, 0x200); + + gDPPipeSync(gfx++); + gDPSetCombineMode(gfx++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM); + gDPSetRenderMode(gfx++, G_RM_XLU_SURF, G_RM_XLU_SURF2); + + BombersNotebook_DrawHeaders(&gfx); + BombersNotebook_DrawColumns(&gfx); + + gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 86, 600, 450); + BombersNotebook_DrawRows(this, &gfx); + + gDPPipeSync(gfx++); + gSPDisplayList(gfx++, D_0E000000.setScissor); + + BombersNotebook_DrawTimeOfDay(&gfx); + + if (this->scrollAmount == 0) { + BombersNotebook_DrawCursor(this, &gfx); + } + BombersNotebook_DrawArrows(this, &gfx); + } + POLY_OPA_DISP = gfx; + + CLOSE_DISPS(gfxCtx); +} + +void BombersNotebook_LoadFiles(BombersNotebook* this, s32 flag) { + switch (this->loadState) { + case BOMBERS_NOTEBOOK_LOAD_STATE_NONE: + if (this->scheduleDmaSegment == NULL) { + break; + } + CmpDma_LoadAllFiles(this->scheduleDmaSegmentStart, this->scheduleDmaSegment, this->scheduleDmaSegmentSize); + osCreateMesgQueue(&this->loadQueue, this->loadMsg, ARRAY_COUNT(this->loadMsg)); + DmaMgr_SendRequestImpl(&this->dmaRequest, this->scheduleSegment, this->scheduleSegmentStart, + this->scheduleSegmentSize, 0, &this->loadQueue, NULL); + this->loadState = BOMBERS_NOTEBOOK_LOAD_STATE_STARTED; + // fallthrough + case BOMBERS_NOTEBOOK_LOAD_STATE_STARTED: + if (osRecvMesg(&this->loadQueue, NULL, flag) == 0) { + this->loadState = BOMBERS_NOTEBOOK_LOAD_STATE_DONE; + } + break; + + default: + break; + } +} + +#define DEFINE_PERSON(_enum, _photo, description, _metEnum, _metMessage, _metFlag) description, +#define DEFINE_EVENT(_enum, _icon, _colorFlag, description, _completedMessage, _completedFlag) description, + +u16 sBombersNotebookTextIds[] = { +#include "tables/bombers_notebook/person_table.h" +#include "tables/bombers_notebook/event_table.h" +}; + +#undef DEFINE_PERSON +#undef DEFINE_EVENT + +void BombersNotebook_Update(PlayState* play, BombersNotebook* this, Input* input) { + static s16 sStickXRepeatTimer = 0; + static s16 sStickYRepeatTimer = 0; + static s16 sStickXRepeatState = 0; + static s16 sStickYRepeatState = 0; + s32 stickAdjX = input->rel.stick_x; + s32 stickAdjY = input->rel.stick_y; + s32 cursorEntryScan; + + this->scheduleDmaSegmentStart = SEGMENT_ROM_START(schedule_dma_static_test); + this->scheduleDmaSegmentSize = SEGMENT_ROM_SIZE(schedule_dma_static_old); + this->scheduleSegmentStart = SEGMENT_ROM_START(schedule_static); + this->scheduleSegmentSize = SEGMENT_ROM_SIZE(schedule_static); + + if (this->scheduleDmaSegment == NULL) { + this->scheduleDmaSegment = ZeldaArena_Malloc(this->scheduleDmaSegmentSize); + } + + if (this->scheduleSegment == NULL) { + this->scheduleSegment = ZeldaArena_Malloc(this->scheduleSegmentSize); + } + + BombersNotebook_LoadFiles(this, OS_MESG_NOBLOCK); + + if (this->loadState == BOMBERS_NOTEBOOK_LOAD_STATE_DONE) { + if (stickAdjX < -30) { + if (sStickXRepeatState == -1) { + sStickXRepeatTimer--; + if (sStickXRepeatTimer < 0) { + sStickXRepeatTimer = 2; + } else { + stickAdjX = 0; + } + } else { + sStickXRepeatTimer = 10; + sStickXRepeatState = -1; + } + } else if (stickAdjX > 30) { + if (sStickXRepeatState == 1) { + sStickXRepeatTimer--; + if (sStickXRepeatTimer < 0) { + sStickXRepeatTimer = 2; + } else { + stickAdjX = 0; + } + } else { + sStickXRepeatTimer = 10; + sStickXRepeatState = 1; + } + } else { + sStickXRepeatState = 0; + } + + if (stickAdjY < -30) { + if (sStickYRepeatState == -1) { + sStickYRepeatTimer--; + if (sStickYRepeatTimer < 0) { + sStickYRepeatTimer = 2; + } else { + stickAdjY = 0; + } + } else { + sStickYRepeatTimer = 10; + sStickYRepeatState = -1; + } + } else if (stickAdjY > 30) { + if (sStickYRepeatState == 1) { + sStickYRepeatTimer--; + if (sStickYRepeatTimer < 0) { + sStickYRepeatTimer = 2; + } else { + stickAdjY = 0; + } + } else { + sStickYRepeatTimer = 10; + sStickYRepeatState = 1; + } + } else { + sStickYRepeatState = 0; + } + + if (this->scrollAmount == 0) { + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[this->cursorPageRow + this->cursorPage])) { + cursorEntryScan = this->cursorEntry; + if (stickAdjX > 30) { + while (true) { + cursorEntryScan += BOMBERS_NOTEBOOK_ENTRY_SIZE; + if (sBombersNotebookEntries[this->cursorPageRow + this->cursorPage] + [cursorEntryScan - BOMBERS_NOTEBOOK_ENTRY_SIZE] == + BOMBERS_NOTEBOOK_ENTRY_END) { + while (true) { + cursorEntryScan -= BOMBERS_NOTEBOOK_ENTRY_SIZE; + if (cursorEntryScan == 0) { + play_sound(NA_SE_SY_ERROR); + break; + } + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT( + this->cursorPageRow + this->cursorPage, + cursorEntryScan - BOMBERS_NOTEBOOK_ENTRY_SIZE)])) { + play_sound(NA_SE_SY_ERROR); + break; + } + } + break; + } + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT( + this->cursorPageRow + this->cursorPage, + cursorEntryScan - BOMBERS_NOTEBOOK_ENTRY_SIZE)])) { + play_sound(NA_SE_SY_CURSOR); + break; + } + } + this->cursorEntry = cursorEntryScan; + } else if (stickAdjX < -30) { + if (cursorEntryScan != 0) { + do { + cursorEntryScan -= BOMBERS_NOTEBOOK_ENTRY_SIZE; + if (CHECK_WEEKEVENTREG(gBombersNotebookWeekEventFlags[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT( + this->cursorPageRow + this->cursorPage, + cursorEntryScan - BOMBERS_NOTEBOOK_ENTRY_SIZE)])) { + play_sound(NA_SE_SY_CURSOR); + break; + } + } while (cursorEntryScan != 0); + this->cursorEntry = cursorEntryScan; + } + } + if (this->cursorEntry != 0) { + if (play->msgCtx.currentTextId != + sBombersNotebookTextIds[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT( + this->cursorPageRow + this->cursorPage, this->cursorEntry - BOMBERS_NOTEBOOK_ENTRY_SIZE)]) { + Message_ContinueTextbox(play, sBombersNotebookTextIds[BOMBERS_NOTEBOOK_ENTRY_GET_EVENT( + this->cursorPageRow + this->cursorPage, + this->cursorEntry - BOMBERS_NOTEBOOK_ENTRY_SIZE)]); + } + } else { + if (play->msgCtx.currentTextId != sBombersNotebookTextIds[this->cursorPageRow + this->cursorPage]) { + Message_ContinueTextbox(play, sBombersNotebookTextIds[this->cursorPageRow + this->cursorPage]); + } + } + } else { + Message_CloseTextbox(play); + } + + if (stickAdjY < -30) { + if (this->cursorPageRow < 3) { + play_sound(NA_SE_SY_CURSOR); + this->cursorEntry = 0; + this->cursorPageRow++; + } else if (this->cursorPage < (BOMBERS_NOTEBOOK_PERSON_MAX - 4)) { + if (sStickYRepeatState == -1) { + this->scrollAmount = -24; + } else { + this->scrollAmount = -12; + } + this->scrollOffset = 0; + this->cursorEntry = 0; + } + } else if (stickAdjY > 30) { + if (this->cursorPageRow > 0) { + play_sound(NA_SE_SY_CURSOR); + this->cursorEntry = 0; + this->cursorPageRow--; + } else if (this->cursorPage != 0) { + play_sound(NA_SE_SY_CURSOR); + this->cursorPage--; + if (sStickYRepeatState == 1) { + this->scrollAmount = 24; + } else { + this->scrollAmount = 12; + } + this->scrollOffset = -48; + this->cursorEntry = 0; + } + } + } else if (this->scrollAmount < 0) { + this->scrollOffset += this->scrollAmount; + if (ABS_ALT(this->scrollOffset) >= 48) { + play_sound(NA_SE_SY_CURSOR); + this->scrollOffset = 0; + this->scrollAmount = 0; + this->cursorPage++; + } + } else { + this->scrollOffset += this->scrollAmount; + if (this->scrollOffset == 0) { + this->scrollOffset = 0; + this->scrollAmount = 0; + } + } + } +} + +void BombersNotebook_Init(BombersNotebook* this) { + bzero(this, sizeof(BombersNotebook)); +} + +void BombersNotebook_Destroy(BombersNotebook* this) { + if (this->loadState == BOMBERS_NOTEBOOK_LOAD_STATE_STARTED) { + BombersNotebook_LoadFiles(this, OS_MESG_BLOCK); + } + if (this->scheduleDmaSegment != NULL) { + ZeldaArena_Free(this->scheduleDmaSegment); + this->scheduleDmaSegment = NULL; + } + //! @bug: Does not free malloc'd memory for schedule segment +} diff --git a/src/code/z_quake.c b/src/code/z_quake.c index c5115375c..8225c6347 100644 --- a/src/code/z_quake.c +++ b/src/code/z_quake.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "z64quake.h" #include "z64view.h" diff --git a/src/code/z_skelanime.c b/src/code/z_skelanime.c index cff66dacb..79af1b73f 100644 --- a/src/code/z_skelanime.c +++ b/src/code/z_skelanime.c @@ -1,4 +1,3 @@ -#include "prevent_bss_reordering.h" #include "global.h" #define ANIM_INTERP 1 diff --git a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c index 737d480ad..efe92eebc 100644 --- a/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c +++ b/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c @@ -145,7 +145,7 @@ s32 func_808B736C(BgBreakwall* this, PlayState* play) { } s32 func_808B7380(BgBreakwall* this, PlayState* play) { - if ((gSaveContext.save.day >= 2) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((gSaveContext.save.day >= 2) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } return true; diff --git a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c index 8bf39145c..132f8f13f 100644 --- a/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c +++ b/src/overlays/actors/ovl_Bg_Umajump/z_bg_umajump.c @@ -133,11 +133,11 @@ void BgUmajump_Update(Actor* thisx, PlayState* play) { Actor_SetObjectDependency(play, &this->dyna.actor); if (this->dyna.actor.params == BG_UMAJUMP_TYPE_5) { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); } } else if (this->dyna.actor.params == BG_UMAJUMP_TYPE_6) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); } } else if ((this->dyna.actor.params == BG_UMAJUMP_TYPE_4) || (this->dyna.actor.params == BG_UMAJUMP_TYPE_3)) { @@ -154,11 +154,11 @@ void BgUmajump_Update(Actor* thisx, PlayState* play) { this->dyna.actor.update = func_8091A5A0; } else if ((this->dyna.actor.params == BG_UMAJUMP_TYPE_5) || (this->dyna.actor.params == BG_UMAJUMP_TYPE_6)) { if (this->dyna.actor.params == BG_UMAJUMP_TYPE_5) { - if ((this->dyna.bgId == BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((this->dyna.bgId == BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); } } else if ((this->dyna.actor.params == BG_UMAJUMP_TYPE_6) && (this->dyna.bgId == BGACTOR_NEG_ONE) && - (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) || + (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) || ((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == true) && ((gSaveContext.save.time >= CLOCK_TIME(5, 30)) && (gSaveContext.save.time <= CLOCK_TIME(6, 0)))))) { @@ -190,18 +190,18 @@ void func_8091A5A0(Actor* thisx, PlayState* play) { } if (this->dyna.actor.params == BG_UMAJUMP_TYPE_5) { - if ((this->dyna.bgId == BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((this->dyna.bgId == BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); - } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); } } else if (this->dyna.actor.params == BG_UMAJUMP_TYPE_6) { if ((this->dyna.bgId == BGACTOR_NEG_ONE) && - (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) || + (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) || ((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == true) && (gSaveContext.save.time >= CLOCK_TIME(5, 30)) && (gSaveContext.save.time <= CLOCK_TIME(6, 0))))) { DynaPolyActor_LoadMesh(play, &this->dyna, &object_umajump_Colheader_001558); - } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) && + } else if ((this->dyna.bgId != BGACTOR_NEG_ONE) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) && ((gSaveContext.save.day != 2) || (gSaveContext.save.isNight != true) || (gSaveContext.save.time < CLOCK_TIME(5, 30)) || (gSaveContext.save.time > CLOCK_TIME(6, 0)))) { DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); diff --git a/src/overlays/actors/ovl_En_Ah/z_en_ah.c b/src/overlays/actors/ovl_En_Ah/z_en_ah.c index 61f493b83..0a8df4f40 100644 --- a/src/overlays/actors/ovl_En_Ah/z_en_ah.c +++ b/src/overlays/actors/ovl_En_Ah/z_en_ah.c @@ -25,7 +25,7 @@ static u8 D_80BD3DB0[] = { /* 0x08 */ SCHEDULE_CMD_RET_VAL_L(1), /* 0x0B */ SCHEDULE_CMD_CHECK_NOT_IN_DAY_S(2, 0x20 - 0x0F), /* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(21, 0, 23, 0, 0x1D - 0x15), - /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_50_20, 0x1C - 0x19), + /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x1C - 0x19), /* 0x19 */ SCHEDULE_CMD_RET_VAL_L(1), /* 0x1C */ SCHEDULE_CMD_RET_NONE(), /* 0x1D */ SCHEDULE_CMD_RET_VAL_L(3), diff --git a/src/overlays/actors/ovl_En_Baba/z_en_baba.c b/src/overlays/actors/ovl_En_Baba/z_en_baba.c index f41dcbd31..e62cc45f4 100644 --- a/src/overlays/actors/ovl_En_Baba/z_en_baba.c +++ b/src/overlays/actors/ovl_En_Baba/z_en_baba.c @@ -293,9 +293,9 @@ void EnBaba_HandleConversation(EnBaba* this, PlayState* play) { if (this->stateFlags & BOMB_SHOP_LADY_STATE_END_CONVERSATION) { if (this->stateFlags & BOMB_SHOP_LADY_STATE_GAVE_BLAST_MASK) { this->stateFlags &= ~BOMB_SHOP_LADY_STATE_GAVE_BLAST_MASK; - func_80151BB4(play, 0x33); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK); } - func_80151BB4(play, 4); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY); } } @@ -602,7 +602,7 @@ void EnBaba_Talk(EnBaba* this, PlayState* play) { play->msgCtx.stateTimer = 4; if (this->stateFlags & BOMB_SHOP_LADY_STATE_AUTOTALK) { if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (play->msgCtx.unk120B1 == 0) { + if (play->msgCtx.bombersNotebookEventQueueCount == 0) { SET_WEEKEVENTREG(WEEKEVENTREG_81_02); EnBaba_TriggerTransition(play, ENTRANCE(NORTH_CLOCK_TOWN, 7)); return; @@ -625,7 +625,7 @@ void EnBaba_Talk(EnBaba* this, PlayState* play) { } } } else if (talkState == TEXT_STATE_DONE) { - if (Message_ShouldAdvance(play) && (play->msgCtx.unk120B1 == 0)) { + if (Message_ShouldAdvance(play) && (play->msgCtx.bombersNotebookEventQueueCount == 0)) { SET_WEEKEVENTREG(WEEKEVENTREG_81_02); EnBaba_TriggerTransition(play, ENTRANCE(NORTH_CLOCK_TOWN, 7)); } diff --git a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c index 834d5f7f7..19f2e1d9b 100644 --- a/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c +++ b/src/overlays/actors/ovl_En_Bom_Bowl_Man/z_en_bom_bowl_man.c @@ -309,9 +309,9 @@ void func_809C4DA4(EnBomBowlMan* this, PlayState* play) { break; case 5: - func_80151BB4(play, 0x24); - func_80151BB4(play, 0x25); - func_80151BB4(play, 0); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS); this->actionFunc = func_809C51B4; sp28 = true; break; @@ -330,7 +330,7 @@ void func_809C4DA4(EnBomBowlMan* this, PlayState* play) { void func_809C51B4(EnBomBowlMan* this, PlayState* play) { Player* player = GET_PLAYER(play); - if ((play->msgCtx.unk120B1 == 0) && + if ((play->msgCtx.bombersNotebookEventQueueCount == 0) && ((play->msgCtx.msgMode == 0) || (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE))) { play->nextEntrance = Entrance_CreateFromSpawn(6); gSaveContext.nextCutsceneIndex = 0; @@ -432,9 +432,9 @@ void func_809C5598(EnBomBowlMan* this, PlayState* play) { } else if (this->actor.textId == 0x735) { this->unk_2C2 = 0; func_809C493C(this, 17, 1.0f); - func_80151BB4(play, 0x24); - func_80151BB4(play, 0x25); - func_80151BB4(play, 0); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS); func_800B7298(play, &this->actor, PLAYER_CSMODE_WAIT); this->actionFunc = func_809C5738; return; @@ -448,7 +448,7 @@ void func_809C5738(EnBomBowlMan* this, PlayState* play) { s16 yaw = Math_Vec3f_Yaw(&this->actor.world.pos, &this->unk_2A0); if (this->unk_2C2 == 0) { - if ((play->msgCtx.unk120B1 == 0) && + if ((play->msgCtx.bombersNotebookEventQueueCount == 0) && ((play->msgCtx.msgMode == 0) || (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE))) { this->unk_2C2 = 1; func_809C4B6C(this); diff --git a/src/overlays/actors/ovl_En_Cow/z_en_cow.c b/src/overlays/actors/ovl_En_Cow/z_en_cow.c index 266e2c47b..aa74c5007 100644 --- a/src/overlays/actors/ovl_En_Cow/z_en_cow.c +++ b/src/overlays/actors/ovl_En_Cow/z_en_cow.c @@ -117,7 +117,7 @@ void EnCow_Init(Actor* thisx, PlayState* play) { this->actionFunc = EnCow_Idle; - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) && (CURRENT_DAY != 1) && + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) && (CURRENT_DAY != 1) && (EN_COW_TYPE(thisx) == EN_COW_TYPE_ABDUCTED)) { Actor_Kill(&this->actor); return; 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 07dfe95f0..89bf08d7b 100644 --- a/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c +++ b/src/overlays/actors/ovl_En_Fsn/z_en_fsn.c @@ -157,7 +157,7 @@ u16 EnFsn_GetWelcome(PlayState* play) { void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { switch (this->textId) { case 0: - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_80_10)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_PRIORITY_MAIL)) { this->textId = 0x29E0; break; } else { @@ -171,7 +171,7 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { this->flags |= ENFSN_GIVE_ITEM; this->flags |= ENFSN_GAVE_LETTER_TO_MAMA; this->getItemId = GI_LETTER_TO_MAMA; - SET_WEEKEVENTREG(WEEKEVENTREG_80_10); + SET_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_PRIORITY_MAIL); this->textId = 0x29F1; break; } else { @@ -194,7 +194,7 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { this->flags |= ENFSN_GIVE_ITEM; this->flags |= ENFSN_GAVE_LETTER_TO_MAMA; this->getItemId = GI_LETTER_TO_MAMA; - SET_WEEKEVENTREG(WEEKEVENTREG_80_10); + SET_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_PRIORITY_MAIL); this->textId = 0x29F1; break; @@ -210,13 +210,13 @@ void EnFsn_HandleConversationBackroom(EnFsn* this, PlayState* play) { if (this->flags & ENFSN_END_CONVERSATION) { if (this->flags & ENFSN_GAVE_LETTER_TO_MAMA) { this->flags &= ~ENFSN_GAVE_LETTER_TO_MAMA; - func_80151BB4(play, 34); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL); } if (this->flags & ENFSN_GAVE_KEATONS_MASK) { this->flags &= ~ENFSN_GAVE_KEATONS_MASK; - func_80151BB4(play, 33); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK); } - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); } } @@ -425,7 +425,7 @@ s32 EnFsn_TestEndInteraction(EnFsn* this, PlayState* play, Input* input) { if (CHECK_BTN_ALL(input->press.button, BTN_B)) { this->actor.textId = (CURRENT_DAY == 3) ? 0x29DF : 0x29D1; Message_StartTextbox(play, this->actor.textId, &this->actor); - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); this->actionFunc = EnFsn_SetupEndInteraction; return true; } @@ -473,7 +473,7 @@ s32 EnFsn_FacingShopkeeperDialogResult(EnFsn* this, PlayState* play) { func_8019F230(); this->actor.textId = (CURRENT_DAY == 3) ? 0x29DF : 0x29D1; Message_StartTextbox(play, this->actor.textId, &this->actor); - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); this->actionFunc = EnFsn_SetupEndInteraction; return true; @@ -977,7 +977,7 @@ void EnFsn_DeterminePrice(EnFsn* this, PlayState* play) { this->actor.textId = 0x29D1; } Message_StartTextbox(play, this->actor.textId, &this->actor); - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); this->actionFunc = EnFsn_SetupEndInteraction; } } @@ -1036,8 +1036,8 @@ void EnFsn_MakeOffer(EnFsn* this, PlayState* play) { void EnFsn_GiveItem(EnFsn* this, PlayState* play) { if (Actor_HasParent(&this->actor, play)) { if ((this->isSelling == true) && (this->items[this->cursorIndex]->getItemId == GI_MASK_ALL_NIGHT)) { - func_80151BB4(play, 45); - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); } this->actor.parent = NULL; if (ENFSN_IS_SHOP(&this->actor) && !this->isSelling) { @@ -1053,7 +1053,7 @@ void EnFsn_GiveItem(EnFsn* this, PlayState* play) { void EnFsn_SetupResumeInteraction(EnFsn* this, PlayState* play) { if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (play->msgCtx.unk120B1 == 0) { + if (play->msgCtx.bombersNotebookEventQueueCount == 0) { EnFsn_HandleSetupResumeInteraction(this, play); } } else { @@ -1239,7 +1239,7 @@ void EnFsn_SetupEndInteraction(EnFsn* this, PlayState* play) { if (((talkState == TEXT_STATE_5) || (talkState == TEXT_STATE_DONE)) && Message_ShouldAdvance(play)) { if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (play->msgCtx.unk120B1 == 0) { + if (play->msgCtx.bombersNotebookEventQueueCount == 0) { EnFsn_EndInteraction(this, play); } else { play->msgCtx.msgMode = 0x43; @@ -1311,7 +1311,7 @@ void EnFsn_AskCanBuyMore(EnFsn* this, PlayState* play) { func_8019F230(); this->actor.textId = (CURRENT_DAY == 3) ? 0x29DF : 0x29D1; Message_StartTextbox(play, this->actor.textId, &this->actor); - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); break; default: @@ -1320,7 +1320,7 @@ void EnFsn_AskCanBuyMore(EnFsn* this, PlayState* play) { } } else if (((talkState == TEXT_STATE_5) || (talkState == TEXT_STATE_DONE)) && Message_ShouldAdvance(play)) { if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (play->msgCtx.unk120B1 == 0) { + if (play->msgCtx.bombersNotebookEventQueueCount == 0) { EnFsn_EndInteraction(this, play); } else { play->msgCtx.msgMode = 0x43; @@ -1362,7 +1362,7 @@ void EnFsn_AskCanBuyAterRunningOutOfItems(EnFsn* this, PlayState* play) { func_8019F230(); this->actor.textId = (CURRENT_DAY == 3) ? 0x29DF : 0x29D1; Message_StartTextbox(play, this->actor.textId, &this->actor); - func_80151BB4(play, 3); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN); break; default: @@ -1371,7 +1371,7 @@ void EnFsn_AskCanBuyAterRunningOutOfItems(EnFsn* this, PlayState* play) { } } else if (((talkState == TEXT_STATE_5) || (talkState == TEXT_STATE_DONE)) && Message_ShouldAdvance(play)) { if (CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { - if (play->msgCtx.unk120B1 == 0) { + if (play->msgCtx.bombersNotebookEventQueueCount == 0) { EnFsn_EndInteraction(this, play); } else { play->msgCtx.msgMode = 0x43; diff --git a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c index bdc4637d1..cb9545d7a 100644 --- a/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c +++ b/src/overlays/actors/ovl_En_Guruguru/z_en_guruguru.c @@ -211,7 +211,7 @@ void func_80BC7068(EnGuruguru* this, PlayState* play) { Message_CloseTextbox(play); this->headZRotTarget = 0; if ((this->textIdIndex == 13) || (this->textIdIndex == 14)) { - func_80151BB4(play, 0x13); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU); SET_WEEKEVENTREG(WEEKEVENTREG_79_04); func_80BC6E10(this); return; @@ -223,7 +223,7 @@ void func_80BC7068(EnGuruguru* this, PlayState* play) { if (this->actor.textId == 0x292A) { SET_WEEKEVENTREG(WEEKEVENTREG_38_10); } - func_80151BB4(play, 0x13); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU); func_80BC6E10(this); return; } @@ -234,8 +234,8 @@ void func_80BC7068(EnGuruguru* this, PlayState* play) { if (this->textIdIndex == 12) { SET_WEEKEVENTREG(WEEKEVENTREG_38_40); func_801A3B48(0); - func_80151BB4(play, 0x36); - func_80151BB4(play, 0x13); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU); func_80BC6E10(this); return; } @@ -275,7 +275,7 @@ void func_80BC7068(EnGuruguru* this, PlayState* play) { return; } func_801A3B48(0); - func_80151BB4(play, 0x13); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU); func_80BC6E10(this); } } diff --git a/src/overlays/actors/ovl_En_Hs/z_en_hs.c b/src/overlays/actors/ovl_En_Hs/z_en_hs.c index 5c06e292a..648a13d46 100644 --- a/src/overlays/actors/ovl_En_Hs/z_en_hs.c +++ b/src/overlays/actors/ovl_En_Hs/z_en_hs.c @@ -99,9 +99,9 @@ void EnHs_Destroy(Actor* thisx, PlayState* play) { void func_80952DFC(PlayState* play) { if (INV_CONTENT(ITEM_MASK_BUNNY) == ITEM_MASK_BUNNY) { - func_80151BB4(play, 0x2E); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD); } - func_80151BB4(play, 0x10); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GROG); } void EnHs_UpdateChickPos(Vec3f* dst, Vec3f src, f32 offset) { diff --git a/src/overlays/actors/ovl_En_Ig/z_en_ig.c b/src/overlays/actors/ovl_En_Ig/z_en_ig.c index d4ccc8fd6..abdf870b9 100644 --- a/src/overlays/actors/ovl_En_Ig/z_en_ig.c +++ b/src/overlays/actors/ovl_En_Ig/z_en_ig.c @@ -25,7 +25,7 @@ static u8 D_80BF3260[] = { /* 0x05 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_TOWN, 0x57 - 0x09), /* 0x09 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 25, 15, 45, 0x51 - 0x0F), /* 0x0F */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0x4B - 0x15), - /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_75_10, 0x1A - 0x19), + /* 0x15 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_RECEIVED_ROOM_KEY, 0x1A - 0x19), /* 0x19 */ SCHEDULE_CMD_RET_NONE(), /* 0x1A */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x45 - 0x20), /* 0x20 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 55, 17, 15, 0x3F - 0x26), @@ -42,7 +42,7 @@ static u8 D_80BF3260[] = { /* 0x5B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 45, 15, 50, 0xAF - 0x61), /* 0x61 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(15, 50, 16, 10, 0xA9 - 0x67), /* 0x67 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 10, 16, 30, 0xA3 - 0x6D), - /* 0x6D */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_75_10, 0x8A - 0x71), + /* 0x6D */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_RECEIVED_ROOM_KEY, 0x8A - 0x71), /* 0x71 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 30, 16, 50, 0x84 - 0x77), /* 0x77 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(16, 50, 16, 55, 0x7E - 0x7D), /* 0x7D */ SCHEDULE_CMD_RET_NONE(), @@ -372,7 +372,7 @@ s32 func_80BF17BC(EnIg* this, PlayState* play) { case 1: case 3: - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_75_10) && (this->unk_3F6 == 3)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_ROOM_KEY) && (this->unk_3F6 == 3)) { CutsceneManager_Stop(csId); this->unk_3F6 = 5; } else { diff --git a/src/overlays/actors/ovl_En_In/z_en_in.c b/src/overlays/actors/ovl_En_In/z_en_in.c index ad60ad551..ca764b134 100644 --- a/src/overlays/actors/ovl_En_In/z_en_in.c +++ b/src/overlays/actors/ovl_En_In/z_en_in.c @@ -225,7 +225,7 @@ s32 func_808F33B8(void) { s32 ret = (((gSaveContext.save.day == 1) && ((gSaveContext.save.time >= CLOCK_TIME(5, 30)) && (gSaveContext.save.time <= CLOCK_TIME(6, 0)))) || (gSaveContext.save.day >= 2)) && - !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01); + !CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM); return ret; } @@ -561,8 +561,9 @@ void func_808F4054(PlayState* play, EnIn* this, s32 arg2, u16 textId) { s32 pad; if ((textId == 0x34AE) || (textId == 0x34B0) || (textId == 0x34B2)) { - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); } + switch (arg2) { case 1: case 5: @@ -722,12 +723,12 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x345A: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; case 0x345B: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -747,7 +748,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x345F: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -762,7 +763,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3462: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -817,7 +818,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3467: case 0x3468: case 0x3469: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -833,7 +834,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x346A: this->actionFunc = func_808F5A94; - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; } break; @@ -863,13 +864,13 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3472: func_808F43E0(this); CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; case 0x3473: CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x3475: @@ -925,11 +926,11 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3484: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x3485: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x3474: @@ -981,14 +982,14 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3480: func_808F43E0(this); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; case 0x3479: func_808F43E0(this); func_808F35D8(this, play); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -1002,15 +1003,15 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3481: this->actionFunc = func_808F5A34; func_808F43E0(this); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; case 0x347D: this->actionFunc = func_808F5A34; func_808F43E0(this); - func_80151BB4(play, 0x11); - func_80151BB4(play, 0x2F); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK); ret = true; break; @@ -1033,16 +1034,16 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x3488: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; case 0x3489: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x348A: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x348B: @@ -1056,7 +1057,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { break; case 0x348D: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -1070,7 +1071,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3468: case 0x3469: case 0x3491: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x348E: @@ -1118,7 +1119,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3492: this->actionFunc = func_808F5A94; - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; } break; @@ -1126,11 +1127,11 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 7: switch (textId) { case 0x34A8: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x34A7: - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x3495: @@ -1148,7 +1149,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x34A4: this->actionFunc = func_808F5A34; func_808F43E0(this); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -1160,7 +1161,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3473: CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); break; case 0x3474: @@ -1199,8 +1200,8 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x34A0: this->actionFunc = func_808F5A34; - func_80151BB4(play, 0x11); - func_80151BB4(play, 0x2F); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK); func_808F43E0(this); ret = true; break; @@ -1224,7 +1225,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x34A3: func_808F43E0(this); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -1254,7 +1255,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x349C: func_808F43E0(this); func_808F35D8(this, play); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -1284,7 +1285,7 @@ s32 func_808F4414(PlayState* play, EnIn* this, s32 arg2) { case 0x3472: func_808F43E0(this); CLEAR_WEEKEVENTREG(WEEKEVENTREG_56_08); - func_80151BB4(play, 0x11); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS); ret = true; break; @@ -1552,7 +1553,7 @@ void EnIn_Init(Actor* thisx, PlayState* play) { EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_0); this->actionFunc = func_808F5A94; } else { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { Actor_Spawn(&play->actorCtx, play, ACTOR_EN_KANBAN, this->actor.world.pos.x, this->actor.world.pos.y, this->actor.world.pos.z, this->actor.shape.rot.x, this->actor.shape.rot.y, this->actor.shape.rot.z, 0xF); @@ -1563,7 +1564,7 @@ void EnIn_Init(Actor* thisx, PlayState* play) { } } } else { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { Actor_Kill(&this->actor); } else { EnIn_ChangeAnim(&this->skelAnime, ENIN_ANIM_7); 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 fe26c18eb..29a09cd90 100644 --- a/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c +++ b/src/overlays/actors/ovl_En_Ma4/z_en_ma4.c @@ -202,7 +202,7 @@ void EnMa4_Init(Actor* thisx, PlayState* play) { if (CURRENT_DAY == 1) { this->type = MA4_TYPE_DAY1; - } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + } else if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { this->type = MA4_TYPE_ALIENS_DEFEATED; } else { this->type = MA4_TYPE_ALIENS_WON; @@ -374,7 +374,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { case 0x3341: if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - SET_WEEKEVENTREG(WEEKEVENTREG_21_20); + SET_WEEKEVENTREG(WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM); Message_StartTextbox(play, 0x3343, &this->actor); this->textId = 0x3343; } else { @@ -383,14 +383,14 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x3342, &this->actor); this->textId = 0x3342; this->state = MA4_STATE_DEFAULT; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } break; case 0x3346: if (play->msgCtx.choiceIndex == 0) { func_8019F208(); - SET_WEEKEVENTREG(WEEKEVENTREG_21_20); + SET_WEEKEVENTREG(WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM); Message_StartTextbox(play, 0x3343, &this->actor); this->textId = 0x3343; } else { @@ -410,7 +410,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { func_8019F230(); Message_StartTextbox(play, 0x3348, &this->actor); this->textId = 0x3348; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } break; @@ -422,9 +422,9 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { Message_StartTextbox(play, 0x334E, &this->actor); this->textId = 0x334E; if (CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) { - func_80151BB4(play, 0x1C); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM); } - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } else { // No. func_8019F230(); EnMa4_SetFaceExpression(this, 0, 0); @@ -443,7 +443,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { EnMa4_SetFaceExpression(this, 1, 0); Message_StartTextbox(play, 0x3355, &this->actor); this->textId = 0x3355; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } break; @@ -459,13 +459,13 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { EnMa4_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x3357, &this->actor); this->textId = 0x3357; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } else { func_8019F230(); EnMa4_SetFaceExpression(this, 4, 2); Message_StartTextbox(play, 0x335B, &this->actor); this->textId = 0x335B; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } } break; @@ -480,7 +480,7 @@ void EnMa4_HandlePlayerChoice(EnMa4* this, PlayState* play) { EnMa4_SetFaceExpression(this, 4, 2); Message_StartTextbox(play, 0x335A, &this->actor); this->textId = 0x335A; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } break; @@ -505,7 +505,7 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, PlayState* play) { EnMa4_SetFaceExpression(this, 0, 3); Message_StartTextbox(play, 0x3336, &this->actor); this->textId = 0x3336; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x3338: @@ -611,7 +611,7 @@ void EnMa4_ChooseNextDialogue(EnMa4* this, PlayState* play) { if ((gSaveContext.save.playerForm != PLAYER_FORM_HUMAN) || !CHECK_QUEST_ITEM(QUEST_SONG_EPONA)) { Message_StartTextbox(play, 0x335C, &this->actor); this->textId = 0x335C; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } else { Message_StartTextbox(play, 0x3359, &this->actor); this->textId = 0x3359; @@ -645,7 +645,7 @@ void EnMa4_DialogueHandler(EnMa4* this, PlayState* play) { case TEXT_STATE_DONE: // End conversation if (Message_ShouldAdvance(play)) { - if ((play->msgCtx.unk120B1 == 0) || !CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { + if ((play->msgCtx.bombersNotebookEventQueueCount == 0) || !CHECK_QUEST_ITEM(QUEST_BOMBERS_NOTEBOOK)) { EnMa4_SetupWait(this); } } @@ -888,7 +888,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { EnMa4_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x3337, &this->actor); this->textId = 0x3337; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } else { Message_StartTextbox(play, 0x3335, &this->actor); this->textId = 0x3335; @@ -896,7 +896,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { } } else if (this->state == MA4_STATE_DEFAULT) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_21_40)) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_21_20)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM)) { Message_StartTextbox(play, 0x3346, &this->actor); this->textId = 0x3346; } else { @@ -944,7 +944,7 @@ void EnMa4_StartDialogue(EnMa4* this, PlayState* play) { EnMa4_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x3337, &this->actor); this->textId = 0x3337; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } else { Message_StartTextbox(play, 0x3335, &this->actor); this->textId = 0x3335; diff --git a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c index 00281d6e4..5dd713019 100644 --- a/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c +++ b/src/overlays/actors/ovl_En_Ma_Yto/z_en_ma_yto.c @@ -153,7 +153,7 @@ void EnMaYto_Init(Actor* thisx, PlayState* play) { this->unk320 = 0; this->eyeTexIndex = 0; - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { EnMaYto_SetFaceExpression(this, 0, 1); } else { EnMaYto_SetFaceExpression(this, 5, 2); @@ -186,19 +186,19 @@ void EnMaYto_Init(Actor* thisx, PlayState* play) { s32 EnMaYto_CheckValidSpawn(EnMaYto* this, PlayState* play) { switch (this->type) { case MA_YTO_TYPE_DEFAULT: - if ((CURRENT_DAY == 3) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 3) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } break; case MA_YTO_TYPE_DINNER: - if ((CURRENT_DAY != 1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY != 1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } break; case MA_YTO_TYPE_BARN: - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { if (((this->actor.params & 0x0F00) >> 8) != 0) { return false; } @@ -211,7 +211,7 @@ s32 EnMaYto_CheckValidSpawn(EnMaYto* this, PlayState* play) { break; case MA_YTO_TYPE_AFTERMILKRUN: - if ((!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) || + if ((!CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_14_01)) { return false; } @@ -240,7 +240,7 @@ void EnMaYto_InitAnimation(EnMaYto* this, PlayState* play) { break; case MA_YTO_TYPE_BARN: - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { EnMaYto_ChangeAnim(this, 12); } else { EnMaYto_ChangeAnim(this, 8); @@ -278,8 +278,8 @@ void EnMaYto_ChooseAction(EnMaYto* this, PlayState* play) { case MA_YTO_TYPE_AFTERMILKRUN: this->unk310 = 0; - if ((INV_CONTENT(ITEM_MASK_ROMANI) == ITEM_MASK_ROMANI) && CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) && - (Rand_Next() & 0x80)) { + if ((INV_CONTENT(ITEM_MASK_ROMANI) == ITEM_MASK_ROMANI) && + CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA) && (Rand_Next() & 0x80)) { EnMaYto_SetupBeginWarmFuzzyFeelingCs(this); } else { EnMaYto_SetupAfterMilkRunInit(this); @@ -333,7 +333,7 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, PlayState* play) { return 0; case MA_YTO_TYPE_DINNER: - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) && (CURRENT_DAY == 2)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) && (CURRENT_DAY == 2)) { return 0; } if (EnMaYto_SearchRomani(this, play)) { @@ -342,7 +342,7 @@ s32 EnMaYto_TryFindRomani(EnMaYto* this, PlayState* play) { return 1; case MA_YTO_TYPE_BARN: - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { if (EnMaYto_SearchRomani(this, play)) { return 2; } @@ -476,7 +476,7 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 3, 1); Message_StartTextbox(play, 0x3393, &this->actor); this->textId = 0x3393; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); break; case 0x3394: @@ -489,7 +489,7 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, PlayState* play) { EnMaYto_ChangeAnim(this, 1); Message_StartTextbox(play, 0x3396, &this->actor); this->textId = 0x3396; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); break; default: @@ -499,7 +499,7 @@ void EnMaYto_DefaultChooseNextDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupDinnerWait(EnMaYto* this) { - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { func_80B90E50(this, 0); this->unk31E = 0; } else { @@ -540,7 +540,7 @@ void EnMaYto_DinnerWait(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupDinnerDialogueHandler(EnMaYto* this) { - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { func_80B90E50(this, 1); } else { func_80B90E50(this, 2); @@ -635,8 +635,8 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetRomaniFaceExpression(this, 0, 1); Message_StartTextbox(play, 0x339E, &this->actor); this->textId = 0x339E; - func_80151BB4(play, 6); - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x339F: @@ -671,20 +671,20 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x33A4, &this->actor); this->textId = 0x33A4; - func_80151BB4(play, 6); - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x33A5: Message_StartTextbox(play, 0x33A6, &this->actor); this->textId = 0x33A6; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); break; case 0x33A7: Message_StartTextbox(play, 0x33A8, &this->actor); this->textId = 0x33A8; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); break; default: @@ -694,7 +694,7 @@ void EnMaYto_DinnerChooseNextDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupBarnWait(EnMaYto* this) { - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { EnMaYto_ChangeAnim(this, 13); func_80B90E50(this, 0); this->unk31E = 0; @@ -722,7 +722,7 @@ void EnMaYto_BarnWait(EnMaYto* this, PlayState* play) { Actor_ChangeFocus(&this->actor, play, &this->actor); EnMaYto_BarnStartDialogue(this, play); EnMaYto_SetupBarnDialogueHandler(this); - } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01) || (ABS_ALT(direction) < 0x2000)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM) || (ABS_ALT(direction) < 0x2000)) { func_800B8614(&this->actor, play, 100.0f); child = this->actor.child; @@ -734,7 +734,7 @@ void EnMaYto_BarnWait(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupBarnDialogueHandler(EnMaYto* this) { - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { func_80B90E50(this, 1); } else { func_80B90E50(this, 2); @@ -796,8 +796,8 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { Actor_ChangeFocus(&this->actor, play, &this->actor); Message_StartTextbox(play, 0x33AD, &this->actor); this->textId = 0x33AD; - func_80151BB4(play, 6); - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x33AE: @@ -814,8 +814,8 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 4, 2); Message_StartTextbox(play, 0x33B0, &this->actor); this->textId = 0x33B0; - func_80151BB4(play, 6); - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x33B1: @@ -824,7 +824,7 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { // "I should had believed what Romani said" Message_StartTextbox(play, 0x33B2, &this->actor); this->textId = 0x33B2; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); break; case 0x33C6: @@ -871,8 +871,8 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetRomaniFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x33CC, &this->actor); this->textId = 0x33CC; - func_80151BB4(play, 6); - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; default: @@ -882,7 +882,7 @@ void EnMaYto_BarnChooseNextDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_SetupAfterMilkRunInit(EnMaYto* this) { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { EnMaYto_SetFaceExpression(this, 3, 1); } else { Audio_PlayFanfare(NA_BGM_FAILURE_1); @@ -897,7 +897,7 @@ void EnMaYto_AfterMilkRunInit(EnMaYto* this, PlayState* play) { if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { this->actor.flags &= ~ACTOR_FLAG_10000; - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { Message_StartTextbox(play, 0x33C1, &this->actor); this->textId = 0x33C1; } else { @@ -908,7 +908,7 @@ void EnMaYto_AfterMilkRunInit(EnMaYto* this, PlayState* play) { SET_WEEKEVENTREG(WEEKEVENTREG_14_01); this->unk310 = 4; EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); return; } @@ -991,9 +991,9 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, PlayState* play) { this->textId = 0x33C3; SET_WEEKEVENTREG(WEEKEVENTREG_14_01); this->unk310 = 3; - func_80151BB4(play, 0x20); - func_80151BB4(play, 0x1F); - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); } else { // You already have the mask @@ -1002,7 +1002,7 @@ void EnMaYto_PostMilkRunExplainReward(EnMaYto* this, PlayState* play) { this->textId = 0x33D0; SET_WEEKEVENTREG(WEEKEVENTREG_14_01); this->unk310 = 3; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); EnMaYto_SetupPostMilkRunWaitDialogueEnd(this); } } else { @@ -1086,7 +1086,7 @@ void EnMaYto_PostMilkRunWaitDialogueEnd(EnMaYto* this, PlayState* play) { } } - if ((Message_GetState(&play->msgCtx) == TEXT_STATE_NONE) && (play->msgCtx.unk120B1 == 0)) { + if ((Message_GetState(&play->msgCtx) == TEXT_STATE_NONE) && (play->msgCtx.bombersNotebookEventQueueCount == 0)) { EnMaYto_SetupPostMilkRunEnd(this); } } @@ -1154,13 +1154,13 @@ void EnMaYto_DefaultStartDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 0, 3); Message_StartTextbox(play, 0x33C5, &this->actor); this->textId = 0x33C5; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); } else { EnMaYto_SetTalkedFlag(); EnMaYto_SetFaceExpression(this, 0, 3); Message_StartTextbox(play, 0x33C4, &this->actor); this->textId = 0x33C4; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); } } } @@ -1211,7 +1211,7 @@ void EnMaYto_DinnerStartDialogue(EnMaYto* this, PlayState* play) { if (EnMaYto_HasSpokenToPlayer()) { Message_StartTextbox(play, 0x33A6, &this->actor); this->textId = 0x33A6; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); } else { EnMaYto_SetTalkedFlag(); Message_StartTextbox(play, 0x33A5, &this->actor); @@ -1223,7 +1223,7 @@ void EnMaYto_DinnerStartDialogue(EnMaYto* this, PlayState* play) { if (EnMaYto_HasSpokenToPlayer()) { Message_StartTextbox(play, 0x33A8, &this->actor); this->textId = 0x33A8; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); } else { EnMaYto_SetTalkedFlag(); Message_StartTextbox(play, 0x33A7, &this->actor); @@ -1237,7 +1237,7 @@ void EnMaYto_DinnerStartDialogue(EnMaYto* this, PlayState* play) { } void EnMaYto_BarnStartDialogue(EnMaYto* this, PlayState* play) { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { if (CURRENT_DAY == 2) { if (this->unk310 == 1) { Message_StartTextbox(play, 0x33AE, &this->actor); @@ -1266,7 +1266,7 @@ void EnMaYto_BarnStartDialogue(EnMaYto* this, PlayState* play) { EnMaYto_SetFaceExpression(this, 5, 3); Message_StartTextbox(play, 0x33B3, &this->actor); this->textId = 0x33B3; - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); } else { EnMaYto_SetTalkedFlag(); EnMaYto_SetFaceExpression(this, 5, 3); @@ -1360,7 +1360,7 @@ void EnMaYto_SetFaceExpression(EnMaYto* this, s16 overrideEyeTexIndex, s16 mouth } void EnMaYto_InitFaceExpression(EnMaYto* this) { - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { EnMaYto_SetFaceExpression(this, 0, 1); EnMaYto_SetRomaniFaceExpression(this, 0, 0); } else { @@ -1484,7 +1484,7 @@ void EnMaYto_Draw(Actor* thisx, PlayState* play) { OPEN_DISPS(play->state.gfxCtx); - if ((this->type == MA_YTO_TYPE_BARN) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((this->type == MA_YTO_TYPE_BARN) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(POLY_OPA_DISP++, gCremiaWoodenBoxDL); } diff --git a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c index 163f89fcd..bb9c9c926 100644 --- a/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c +++ b/src/overlays/actors/ovl_En_Ma_Yts/z_en_ma_yts.c @@ -144,7 +144,7 @@ void EnMaYts_InitAnimation(EnMaYts* this, PlayState* play) { case MA_YTS_TYPE_SITTING: this->actor.targetMode = 6; // Day 1 or "Winning" the alien invasion - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { EnMaYts_ChangeAnim(this, 14); } else { EnMaYts_ChangeAnim(this, 18); @@ -177,14 +177,14 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, PlayState* play) { case 2: // Failing the alien invasion - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } break; case 3: // "Winning" the alien invasion - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } break; @@ -196,7 +196,7 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, PlayState* play) { case MA_YTS_TYPE_BARN: // Failing the alien invasion - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } else if ((gSaveContext.save.time >= CLOCK_TIME(20, 0)) && (CURRENT_DAY == 3)) { return false; @@ -205,7 +205,7 @@ s32 EnMaYts_CheckValidSpawn(EnMaYts* this, PlayState* play) { case MA_YTS_TYPE_SLEEPING: // "Winning" the alien invasion - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } break; @@ -254,7 +254,7 @@ void EnMaYts_Init(Actor* thisx, PlayState* play) { this->hasBow = false; } - if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if ((CURRENT_DAY == 1) || CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { this->overrideEyeTexIndex = 0; this->eyeTexIndex = 0; this->mouthTexIndex = 0; @@ -272,7 +272,8 @@ void EnMaYts_Init(Actor* thisx, PlayState* play) { this->mouthTexIndex = 0; this->unk_32C = 2; EnMaYts_SetupEndCreditsHandler(this); - } else if ((CURRENT_DAY == 2) && (gSaveContext.save.isNight == 1) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + } else if ((CURRENT_DAY == 2) && (gSaveContext.save.isNight == 1) && + CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { EnMaYts_SetupStartDialogue(this); } else { EnMaYts_SetupDoNothing(this); @@ -313,7 +314,7 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { EnMaYts_SetFaceExpression(this, 4, 3); Message_StartTextbox(play, 0x3362, &this->actor); this->textId = 0x3362; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } } else if (Player_GetMask(play) != PLAYER_MASK_NONE) { if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_65_40)) { @@ -325,9 +326,9 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { EnMaYts_SetFaceExpression(this, 4, 2); Message_StartTextbox(play, 0x3366, &this->actor); this->textId = 0x3366; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } - } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_21_20)) { + } else if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM)) { EnMaYts_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x3367, &this->actor); this->textId = 0x3367; @@ -343,7 +344,7 @@ void EnMaYts_StartDialogue(EnMaYts* this, PlayState* play) { EnMaYts_SetFaceExpression(this, 0, 0); Message_StartTextbox(play, 0x336C, &this->actor); this->textId = 0x336C; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); } } EnMaYts_SetupDialogueHandler(this); @@ -445,7 +446,7 @@ void EnMaYts_ChooseNextDialogue(EnMaYts* this, PlayState* play) { EnMaYts_SetFaceExpression(this, 4, 3); Message_StartTextbox(play, 0x3361, &this->actor); this->textId = 0x3361; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x3363: @@ -458,14 +459,14 @@ void EnMaYts_ChooseNextDialogue(EnMaYts* this, PlayState* play) { EnMaYts_SetFaceExpression(this, 4, 2); Message_StartTextbox(play, 0x3365, &this->actor); this->textId = 0x3365; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x3367: EnMaYts_SetFaceExpression(this, 4, 3); Message_StartTextbox(play, 0x3368, &this->actor); this->textId = 0x3368; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; case 0x3369: @@ -478,7 +479,7 @@ void EnMaYts_ChooseNextDialogue(EnMaYts* this, PlayState* play) { EnMaYts_SetFaceExpression(this, 3, 3); Message_StartTextbox(play, 0x336B, &this->actor); this->textId = 0x336B; - func_80151BB4(play, 5); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROMANI); break; default: diff --git a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c index abf5503a4..ab387771c 100644 --- a/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c +++ b/src/overlays/actors/ovl_En_Mm3/z_en_mm3.c @@ -157,7 +157,7 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x279C, &this->actor); this->unk_2B4 = 0x279C; - func_80151BB4(play, 0xB); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN); } } else { func_8019F208(); @@ -168,7 +168,7 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) { func_8019F230(); Message_StartTextbox(play, 0x278F, &this->actor); this->unk_2B4 = 0x278F; - func_80151BB4(play, 0xB); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN); } break; @@ -183,13 +183,13 @@ void func_80A6F3B4(EnMm3* this, PlayState* play) { play_sound(NA_SE_SY_ERROR); Message_StartTextbox(play, 0x279C, &this->actor); this->unk_2B4 = 0x279C; - func_80151BB4(play, 0xB); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN); } } else { func_8019F230(); Message_StartTextbox(play, 0x279B, &this->actor); this->unk_2B4 = 0x279B; - func_80151BB4(play, 0xB); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN); } break; } @@ -282,7 +282,7 @@ void func_80A6F5E4(EnMm3* this, PlayState* play) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_KICKOUT_TIME_PASSED)) { Message_StartTextbox(play, 0x279B, &this->actor); this->unk_2B4 = 0x279B; - func_80151BB4(play, 0xB); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN); } else { Message_StartTextbox(play, 0x2798, &this->actor); this->unk_2B4 = 0x2798; @@ -448,8 +448,8 @@ void func_80A6FEEC(EnMm3* this, PlayState* play) { player->stateFlags1 &= ~PLAYER_STATE1_20; Message_StartTextbox(play, 0x2794, &this->actor); this->unk_2B4 = 0x2794; - func_80151BB4(play, 0xB); - func_80151BB4(play, 0x2B); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP); this->actor.flags &= ~ACTOR_FLAG_10000; func_80A6F9C8(this); } else { diff --git a/src/overlays/actors/ovl_En_Nb/z_en_nb.c b/src/overlays/actors/ovl_En_Nb/z_en_nb.c index 474c1d2df..79c2e5cba 100644 --- a/src/overlays/actors/ovl_En_Nb/z_en_nb.c +++ b/src/overlays/actors/ovl_En_Nb/z_en_nb.c @@ -66,7 +66,7 @@ static u8 sScheduleScript[] = { /* 0x3E */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1), /* 0x41 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_2), /* 0x44 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1), - /* 0x47 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_50_20, 0x57 - 0x4B), + /* 0x47 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_HAD_MIDNIGHT_MEETING, 0x57 - 0x4B), /* 0x4B */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(8, 0, 18, 0, 0x54 - 0x51), /* 0x51 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_3), /* 0x54 */ SCHEDULE_CMD_RET_VAL_L(EN_NB_SCH_1), diff --git a/src/overlays/actors/ovl_En_Pm/z_en_pm.c b/src/overlays/actors/ovl_En_Pm/z_en_pm.c index 0627ddbf8..072f6d6ac 100644 --- a/src/overlays/actors/ovl_En_Pm/z_en_pm.c +++ b/src/overlays/actors/ovl_En_Pm/z_en_pm.c @@ -1105,7 +1105,11 @@ void func_80AF8AC8(EnPm* this) { void func_80AF8BA8(s32 arg0) { static u16 D_80AFB8D4[] = { - WEEKEVENTREG_27_02, WEEKEVENTREG_27_04, WEEKEVENTREG_27_08, WEEKEVENTREG_27_10, WEEKEVENTREG_27_20, + WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_UPPER_CLOCKTOWN, + WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_NORTH_CLOCKTOWN, + WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_UPPER_CLOCKTOWN, + WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_LOWER_CLOCKTOWN, + WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_LOWER_CLOCKTOWN, }; static u16 D_80AFB8E0[] = { WEEKEVENTREG_27_40, WEEKEVENTREG_27_80, WEEKEVENTREG_28_01, WEEKEVENTREG_28_02, WEEKEVENTREG_28_04, diff --git a/src/overlays/actors/ovl_En_Pst/z_en_pst.c b/src/overlays/actors/ovl_En_Pst/z_en_pst.c index 9b5f1ef38..7a507e0ef 100644 --- a/src/overlays/actors/ovl_En_Pst/z_en_pst.c +++ b/src/overlays/actors/ovl_En_Pst/z_en_pst.c @@ -162,15 +162,15 @@ void EnPst_UpdateCollision(EnPst* this, PlayState* play) { s32 EnPst_HandleLetterDay1(EnPst* this) { switch (this->actor.params) { case POSTBOX_SOUTH_UPPER_CLOCKTOWN: - return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_02); + return CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_UPPER_CLOCKTOWN); case POSTBOX_NORTH_CLOCKTOWN: - return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_04); + return CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_NORTH_CLOCKTOWN); case POSTBOX_EAST_UPPER_CLOCKTOWN: - return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_08); + return CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_UPPER_CLOCKTOWN); case POSTBOX_EAST_LOWER_CLOCKTOWN: - return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_10); + return CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_LOWER_CLOCKTOWN); case POSTBOX_SOUTH_LOWER_CLOCKTOWN: - return CHECK_WEEKEVENTREG(WEEKEVENTREG_27_20); + return CHECK_WEEKEVENTREG(WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_LOWER_CLOCKTOWN); default: return false; } diff --git a/src/overlays/actors/ovl_En_Rz/z_en_rz.c b/src/overlays/actors/ovl_En_Rz/z_en_rz.c index 1a43768fc..e980d1cb5 100644 --- a/src/overlays/actors/ovl_En_Rz/z_en_rz.c +++ b/src/overlays/actors/ovl_En_Rz/z_en_rz.c @@ -347,9 +347,9 @@ EnRz* EnRz_FindSister(EnRz* this, PlayState* play) { void func_80BFBDFC(PlayState* play) { if (CHECK_WEEKEVENTREG(WEEKEVENTREG_75_80)) { - func_80151BB4(play, 0x27); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP); } - func_80151BB4(play, 0xC); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS); } void EnRz_Destroy(Actor* thisx, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c index e41fc5dc7..3a32031d3 100644 --- a/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c +++ b/src/overlays/actors/ovl_En_Stone_heishi/z_en_stone_heishi.c @@ -230,7 +230,7 @@ void func_80BC9680(EnStoneheishi* this, PlayState* play) { player->actor.textId = sEnStoneHeishiTextIds[this->textIdIndex]; Message_ContinueTextbox(play, sEnStoneHeishiTextIds[this->textIdIndex]); - func_80151BB4(play, 0x12); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO); } } @@ -250,7 +250,7 @@ void func_80BC9680(EnStoneheishi* this, PlayState* play) { if (this->textIdIndex < 7) { this->textIdIndex++; } else { - func_80151BB4(play, 0x12); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO); func_80BC94B0(this); return; } @@ -293,7 +293,7 @@ void EnStoneheishi_CheckGivenItem(EnStoneheishi* this, PlayState* play) { } } else if (itemAction <= PLAYER_IA_MINUS1) { Message_CloseTextbox(play); - func_80151BB4(play, 0x12); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO); func_80BC94B0(this); } } @@ -411,8 +411,8 @@ void func_80BC9E50(EnStoneheishi* this, PlayState* play) { SkelAnime_Update(&this->skelAnime); if (Actor_ProcessTalkRequest(&this->actor, &play->state)) { - func_80151BB4(play, 0x35); - func_80151BB4(play, 0x12); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_SHIRO); this->action = EN_STONE_ACTION_1; this->actionFunc = func_80BC9680; } else { diff --git a/src/overlays/actors/ovl_En_Test3/z_en_test3.c b/src/overlays/actors/ovl_En_Test3/z_en_test3.c index 6711fcde6..2000e0e53 100644 --- a/src/overlays/actors/ovl_En_Test3/z_en_test3.c +++ b/src/overlays/actors/ovl_En_Test3/z_en_test3.c @@ -126,7 +126,7 @@ static u8 sScheduleScript[] = { /* 0x0A5 */ SCHEDULE_CMD_CHECK_FLAG_L(WEEKEVENTREG_79_40, 0x12C - 0x0AA), /* 0x0AA */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_SECOM, 0x0B0 - 0x0AE), /* 0x0AE */ SCHEDULE_CMD_RET_VAL_S(7), - /* 0x0B0 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_20, 0x0DD - 0x0B4), + /* 0x0B0 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT, 0x0DD - 0x0B4), /* 0x0B4 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_IKANA, 0x0DC - 0x0B8), /* 0x0B8 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_08, 0x0BE - 0x0BC), /* 0x0BC */ SCHEDULE_CMD_RET_VAL_S(5), @@ -150,7 +150,7 @@ static u8 sScheduleScript[] = { /* 0x0F3 */ SCHEDULE_CMD_RET_TIME(4, 0, 4, 10, 11), /* 0x0F9 */ SCHEDULE_CMD_CHECK_NOT_IN_SCENE_S(SCENE_YADOYA, 0x12B - 0x0FD), /* 0x0FD */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 10, 4, 30, 0x125 - 0x103), - /* 0x103 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_51_01, 0x11C - 0x107), + /* 0x103 */ SCHEDULE_CMD_CHECK_FLAG_S(WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES, 0x11C - 0x107), /* 0x107 */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 30, 4, 45, 0x116 - 0x10D), /* 0x10D */ SCHEDULE_CMD_CHECK_TIME_RANGE_S(4, 45, 6, 0, 0x114 - 0x113), /* 0x113 */ SCHEDULE_CMD_RET_NONE(), @@ -313,7 +313,7 @@ s32 func_80A3E898(EnTest3* this, PlayState* play) { u16 textId = this->unk_D78->textId; if ((this->unk_D78->unk_0 == 4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { - func_80151BB4(play, 2); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI); } if (textId == 0xFFFF) { Message_CloseTextbox(play); @@ -658,7 +658,7 @@ s32 func_80A3F73C(EnTest3* this, PlayState* play) { this->player.stateFlags2 &= ~PLAYER_STATE2_40000; D_80A41D5C = true; if ((this->unk_D78->unk_0 == 4) && CHECK_WEEKEVENTREG(WEEKEVENTREG_51_08)) { - func_80151BB4(play, 2); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI); } } else { if (play->actorCtx.flags & ACTORCTX_FLAG_4) { @@ -785,7 +785,7 @@ s32 func_80A3FBE8(EnTest3* this, PlayState* play) { func_800FE658(TIME_TO_MINUTES_ALT_F(fabsf((s16) - ((void)0, gSaveContext.save.time)))); } if (play->actorCtx.flags & ACTORCTX_FLAG_6) { - SET_WEEKEVENTREG(WEEKEVENTREG_51_20); + SET_WEEKEVENTREG(WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT); CLEAR_WEEKEVENTREG(WEEKEVENTREG_90_02); } D_80A41D20 = 3; @@ -1019,8 +1019,8 @@ void func_80A40908(EnTest3* this, PlayState* play) { func_80A3E7E0(this, func_80A4084C); this->player.targetedActor = &GET_PLAYER(play)->actor; SET_WEEKEVENTREG(WEEKEVENTREG_51_08); - func_80151BB4(play, 0x19); - func_80151BB4(play, 2); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_KAFEI); } else { func_800B8500(&this->player.actor, play, 9999.9f, 9999.9f, PLAYER_IA_MINUS1); this->unk_D78 = &D_80A41854[6]; @@ -1217,7 +1217,7 @@ void EnTest3_PostLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList1, Gfx** dL Matrix_MultVec3f(&D_80A418CC, &this->player.actor.focus.pos); } } else if (limbIndex == OBJECT_TEST3_LIMB_15) { - if (D_80A41D60 || CHECK_WEEKEVENTREG(WEEKEVENTREG_50_80) || + if (D_80A41D60 || CHECK_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_PENDANT_OF_MEMORIES) || (INV_CONTENT(ITEM_PENDANT_OF_MEMORIES) == ITEM_PENDANT_OF_MEMORIES) || (this->player.getItemDrawIdPlusOne - 1 == GID_PENDANT_OF_MEMORIES)) { D_80A41D60 = true; diff --git a/src/overlays/actors/ovl_En_Test4/z_en_test4.c b/src/overlays/actors/ovl_En_Test4/z_en_test4.c index 21ddf2bee..fb18d4a39 100644 --- a/src/overlays/actors/ovl_En_Test4/z_en_test4.c +++ b/src/overlays/actors/ovl_En_Test4/z_en_test4.c @@ -4,7 +4,6 @@ * Description: Three-Day Events */ -#include "prevent_bss_reordering.h" #include "z_en_test4.h" #include "z64horse.h" #include "overlays/gamestates/ovl_daytelop/z_daytelop.h" diff --git a/src/overlays/actors/ovl_En_Toto/z_en_toto.c b/src/overlays/actors/ovl_En_Toto/z_en_toto.c index 7de3b50c2..2177742dc 100644 --- a/src/overlays/actors/ovl_En_Toto/z_en_toto.c +++ b/src/overlays/actors/ovl_En_Toto/z_en_toto.c @@ -290,7 +290,7 @@ void func_80BA3BFC(EnToto* this, PlayState* play) { this->unk2B4 = 0; } else { if (this->text->unk0 == 4) { - func_80151BB4(play, 9); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_TOTO); } Animation_MorphToLoop(&this->skelAnime, &object_zm_Anim_00B3E0, -4.0f); } @@ -333,9 +333,9 @@ void func_80BA3DBC(EnToto* this, PlayState* play) { } else { player = GET_PLAYER(play); if ((player->stateFlags1 & PLAYER_STATE1_400) && player->unk_AE7 != 0) { - func_80151BB4(play, 48); - func_80151BB4(play, 9); - func_80151BB4(play, 10); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_TOTO); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN); } else { return; } @@ -369,7 +369,7 @@ s32 func_80BA3F2C(EnToto* this, PlayState* play) { func_80BA3EE8(this, play); } if (this->text->unk0 == 4) { - func_80151BB4(play, 9); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_TOTO); } return 0; } @@ -686,8 +686,8 @@ void func_80BA4CB4(EnToto* this, PlayState* play) { Animation_PlayOnce(&this->skelAnime, (this->cueId == 1) ? &object_zm_Anim_0016A4 : &object_zm_Anim_0022C8); if ((this->cueId == 2) && (this->unk2B3 != 0xF)) { - func_80151BB4(play, 9); - func_80151BB4(play, 10); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_TOTO); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_GORMAN); } } } diff --git a/src/overlays/actors/ovl_En_Yb/z_en_yb.c b/src/overlays/actors/ovl_En_Yb/z_en_yb.c index 9df560150..9238a166b 100644 --- a/src/overlays/actors/ovl_En_Yb/z_en_yb.c +++ b/src/overlays/actors/ovl_En_Yb/z_en_yb.c @@ -136,9 +136,9 @@ void EnYb_Destroy(Actor* thisx, PlayState* play) { void func_80BFA2FC(PlayState* play) { if (INV_CONTENT(ITEM_MASK_KAMARO) == ITEM_MASK_KAMARO) { - func_80151BB4(play, 0x34); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK); } - func_80151BB4(play, 0xF); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_KAMARO); } /** diff --git a/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c b/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c index ee8c84877..774632cb4 100644 --- a/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c +++ b/src/overlays/actors/ovl_Obj_Dinner/z_obj_dinner.c @@ -31,7 +31,8 @@ ActorInit Obj_Dinner_InitVars = { void ObjDinner_Init(Actor* thisx, PlayState* play) { ObjDinner* this = THIS; - if ((gSaveContext.save.isNight != true) || ((CURRENT_DAY == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01))) { + if ((gSaveContext.save.isNight != true) || + ((CURRENT_DAY == 3) && CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM))) { Actor_Kill(&this->actor); } Actor_SetScale(&this->actor, 0.1f); diff --git a/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c b/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c index 8ff6e8455..75ff18b6b 100644 --- a/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c +++ b/src/overlays/actors/ovl_Obj_Milk_Bin/z_obj_milk_bin.c @@ -58,7 +58,7 @@ void ObjMilkBin_Init(Actor* thisx, PlayState* play) { this->disableDraw = 0; this->type = thisx->params; - if ((this->type == OBJ_MILK_BIN_TYPE_2) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if ((this->type == OBJ_MILK_BIN_TYPE_2) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { this->disableDraw |= 1; } } @@ -74,14 +74,14 @@ void ObjMilkBin_Update(Actor* thisx, PlayState* play2) { ObjMilkBin* this = THIS; if (this->type == OBJ_MILK_BIN_TYPE_1) { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { if (((gSaveContext.save.day == 2) && (gSaveContext.save.isNight == 1)) || (gSaveContext.save.day >= 3)) { Actor_Kill(&this->actor); return; } } } else if (this->type == OBJ_MILK_BIN_TYPE_2) { - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { this->disableDraw &= ~1; } else { this->disableDraw |= 1; diff --git a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c index c4f884694..a6085ef51 100644 --- a/src/overlays/actors/ovl_Obj_Um/z_obj_um.c +++ b/src/overlays/actors/ovl_Obj_Um/z_obj_um.c @@ -15,7 +15,7 @@ /** * weekEventReg flags checked by this actor: - * - WEEKEVENTREG_22_01: Aliens defeated + * - WEEKEVENTREG_DEFENDED_AGAINST_THEM: Aliens defeated * If false: The actor doesn't spawn * - WEEKEVENTREG_31_40 * If true: Cremia doesn't explain again she'll deliever milk to town @@ -23,7 +23,7 @@ * If true: Triggers cutscene on Romani's Ranch * - WEEKEVENTREG_34_80 * If true: Doesn't spawn on Romani's Ranch - * - WEEKEVENTREG_52_01 + * - WEEKEVENTREG_ESCORTED_CREMIA * If true: Doesn't spawn on Romani's Ranch or Milk Road * - WEEKEVENTREG_52_02 * If true: Doesn't spawn on Romani's Ranch or Milk Road @@ -37,7 +37,7 @@ * Player accepts the ride and is with Cremia during the Milk Run * - WEEKEVENTREG_34_80: Cremia does Milk Run alone * Player didn't interact or didn't accept the ride - * - WEEKEVENTREG_52_01: Won Milk Run minigame + * - WEEKEVENTREG_ESCORTED_CREMIA: Won Milk Run minigame * At least one pot is safe. Turns off the "Lose Milk Run minigame" * - WEEKEVENTREG_52_02: Lose Milk Run minigame * Every pot was broken by bandits. Turns off the "Win Milk Run minigame" @@ -47,7 +47,7 @@ * weekEventReg flags unset by this actor: * - WEEKEVENTREG_31_80 * Turned off when the Milk Run finishes - * - WEEKEVENTREG_52_01 + * - WEEKEVENTREG_ESCORTED_CREMIA * Turned off if Player lose the Milk Run * - WEEKEVENTREG_52_02 * Turned off if Player wins the Milk Run @@ -682,7 +682,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { this->initialPathIndex = OBJ_UM_GET_PATH_INDEX(thisx); // if (!AliensDefeated) - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { Actor_Kill(&this->dyna.actor); return; } @@ -702,7 +702,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { // Waiting for player if (CHECK_WEEKEVENTREG(WEEKEVENTREG_34_80) || (gSaveContext.save.time >= CLOCK_TIME(19, 0)) || - (gSaveContext.save.time <= CLOCK_TIME(6, 0)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) || + (gSaveContext.save.time <= CLOCK_TIME(6, 0)) || CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { Actor_Kill(&this->dyna.actor); return; @@ -713,7 +713,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { ObjUm_SetupAction(this, ObjUm_RanchWait); } } else if (this->type == OBJ_UM_TYPE_PRE_MILK_RUN) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_31_80) || CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA)) { Actor_Kill(&this->dyna.actor); return; } @@ -739,7 +739,7 @@ void ObjUm_Init(Actor* thisx, PlayState* play) { this->unk_354 = 0; ObjUm_RotatePlayer(this, play, 0); } else if (this->type == OBJ_UM_TYPE_POST_MILK_RUN) { - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) || CHECK_WEEKEVENTREG(WEEKEVENTREG_59_02)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA) || CHECK_WEEKEVENTREG(WEEKEVENTREG_59_02)) { Actor_Kill(&this->dyna.actor); return; } @@ -843,7 +843,7 @@ s32 func_80B795A0(PlayState* play, ObjUm* this, s32 arg2) { } else { Actor_ContinueText(play, &this->dyna.actor, 0x33B5); func_8019F230(); - func_80151BB4(play, 6); + Message_BombersNotebookQueueEvent(play, BOMBERS_NOTEBOOK_EVENT_MET_CREMIA); phi_v1 = false; } break; @@ -1302,13 +1302,13 @@ void ObjUm_RunMinigame(ObjUm* this, PlayState* play) { CLEAR_WEEKEVENTREG(WEEKEVENTREG_31_80); gSaveContext.ambienceId = AMBIENCE_ID_DISABLED; - if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_52_01) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { + if (!CHECK_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA) && !CHECK_WEEKEVENTREG(WEEKEVENTREG_52_02)) { if (!this->areAllPotsBroken) { play->nextEntrance = ENTRANCE(MILK_ROAD, 6); play->transitionType = TRANS_TYPE_64; gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; - SET_WEEKEVENTREG(WEEKEVENTREG_52_01); + SET_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA); CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_02); } else { play->nextEntrance = ENTRANCE(ROMANI_RANCH, 8); @@ -1316,7 +1316,7 @@ void ObjUm_RunMinigame(ObjUm* this, PlayState* play) { gSaveContext.nextTransitionType = TRANS_TYPE_FADE_WHITE; play->transitionTrigger = TRANS_TRIGGER_START; SET_WEEKEVENTREG(WEEKEVENTREG_52_02); - CLEAR_WEEKEVENTREG(WEEKEVENTREG_52_01); + CLEAR_WEEKEVENTREG(WEEKEVENTREG_ESCORTED_CREMIA); } } break; diff --git a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c index 46a6b994d..23e6eb0ac 100644 --- a/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c +++ b/src/overlays/actors/ovl_Obj_Usiyane/z_obj_usiyane.c @@ -80,7 +80,7 @@ s32 func_80C07CD0(void) { } } - if (CHECK_WEEKEVENTREG(WEEKEVENTREG_22_01)) { + if (CHECK_WEEKEVENTREG(WEEKEVENTREG_DEFENDED_AGAINST_THEM)) { return false; } return true; diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index bbde013ef..01c732aa2 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -3,7 +3,6 @@ * Overlay: ovl_player_actor * Description: Player */ - #include "prevent_bss_reordering.h" #include "global.h" #include "z64horse.h" @@ -19110,7 +19109,7 @@ void func_80859708(PlayState* play, Player* this, UNK_TYPE arg2) { PlayerAnimation_Update(play, &this->skelAnime); if ((this->actor.id == ACTOR_EN_TEST3) && Animation_OnFrame(&this->skelAnime, 20.0f)) { this->getItemDrawIdPlusOne = GID_MASK_SUN + 1; - func_80151BB4(play, 0x1B); + Message_BombersNotebookQueueEvent(play, 0x1B); Audio_PlayFanfare(NA_BGM_GET_NEW_MASK); } } @@ -19786,7 +19785,7 @@ void func_8085A7C0(PlayState* play, Player* this, UNK_TYPE arg2) { } } } else if (PlayerAnimation_OnFrame(&this->skelAnime, 4.0f)) { - SET_WEEKEVENTREG(WEEKEVENTREG_50_80); + SET_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_PENDANT_OF_MEMORIES); } } diff --git a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c index 64da25451..b60a00f9e 100644 --- a/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c +++ b/src/overlays/kaleido_scope/ovl_kaleido_scope/z_kaleido_scope_NES.c @@ -3,7 +3,7 @@ * Overlay: ovl_kaleido_scope * Description: Pause Menu */ - +#include "prevent_bss_reordering.h" #include "z_kaleido_scope.h" #include "overlays/gamestates/ovl_opening/z_opening.h" #include "interface/icon_item_gameover_static/icon_item_gameover_static.h" diff --git a/tools/disasm/disasm.py b/tools/disasm/disasm.py index 37ba8b45e..78d66d337 100755 --- a/tools/disasm/disasm.py +++ b/tools/disasm/disasm.py @@ -169,7 +169,6 @@ variable_addrs = None files_text = {} - def proper_name(symbol, in_data=False, is_symbol=True): # hacks # ovl_En_Encount4 fake symbol at the very end of the data section @@ -181,6 +180,10 @@ def proper_name(symbol, in_data=False, is_symbol=True): return variables_ast[0x801EF670][0] + f" - 0x{0x801EF670 - 0x801EF51D:X}" elif symbol == 0x801D0D7A: # play_hireso constant-folding D_801D0D80 array return variables_ast[0x801D0D80][0] + f" - 0x{0x801D0D80 - 0x801D0D7A:X}" + elif symbol == 0x801D11F4: # play_hireso constant-folding D_801D1244 array + return variables_ast[0x801D1244][0] + f" - 0x{0x801D1244 - 0x801D11F4:X}" + elif symbol == 0x801D12C0: # play_hireso constant-folding D_801D12E8 array + return variables_ast[0x801D12E8][0] + f" - 0x{0x801D12E8 - 0x801D12C0:X}" elif symbol == 0x80A09740: # boss_07 symbol with large addend folded into %lo return variables_ast[0x80A09A60][0] + f" - 0x{0x80A09A60 - 0x80A09740:X}" # bg_ikana_mirror symbol with large addend folded into %lo diff --git a/tools/disasm/functions.txt b/tools/disasm/functions.txt index 1d38ccc2e..4fc8f07c1 100644 --- a/tools/disasm/functions.txt +++ b/tools/disasm/functions.txt @@ -2855,7 +2855,7 @@ 0x801518B0:("Message_StartTextbox",), 0x80151938:("Message_ContinueTextbox",), 0x80151A68:("func_80151A68",), - 0x80151BB4:("func_80151BB4",), + 0x80151BB4:("Message_BombersNotebookQueueEvent",), 0x80151C9C:("func_80151C9C",), 0x80151DA4:("func_80151DA4",), 0x80152434:("func_80152434",), @@ -3040,16 +3040,16 @@ 0x8016A178:("Play_AssignPlayerCsIdsFromScene",), 0x8016A268:("Play_FillScreen",), 0x8016A2C8:("Play_Init",), - 0x8016AC10:("func_8016AC10",), - 0x8016AE1C:("func_8016AE1C",), - 0x8016B278:("func_8016B278",), - 0x8016B4B0:("func_8016B4B0",), - 0x8016C344:("func_8016C344",), - 0x8016CD4C:("func_8016CD4C",), - 0x8016E40C:("func_8016E40C",), - 0x8016EA90:("func_8016EA90",), + 0x8016AC10:("BombersNotebook_DrawScisTexRect",), + 0x8016AE1C:("BombersNotebook_DrawHeaders",), + 0x8016B278:("BombersNotebook_DrawColumns",), + 0x8016B4B0:("BombersNotebook_DrawEntries",), + 0x8016C344:("BombersNotebook_DrawRows",), + 0x8016CD4C:("BombersNotebook_DrawTimeOfDay",), + 0x8016E40C:("BombersNotebook_DrawCursor",), + 0x8016EA90:("BombersNotebook_DrawArrows",), 0x8016F1A8:("BombersNotebook_Draw",), - 0x8016F4EC:("func_8016F4EC",), + 0x8016F4EC:("BombersNotebook_LoadFiles",), 0x8016F5A8:("BombersNotebook_Update",), 0x8016FC78:("BombersNotebook_Init",), 0x8016FC98:("BombersNotebook_Destroy",), diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 3a14118c5..749ee5878 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1958,8 +1958,8 @@ 0x801C6A90:("D_801C6A90","UNK_TYPE2","",0x2), 0x801C6A94:("D_801C6A94","UNK_TYPE2","",0x2), 0x801C6A98:("gPageSwitchNextButtonStatus","UNK_TYPE1","",0x1), - 0x801C6AB8:("D_801C6AB8","UNK_TYPE1","",0x1), - 0x801C6B28:("D_801C6B28","UNK_TYPE1","",0x1), + 0x801C6AB8:("sBombersNotebookEventMessages","UNK_TYPE1","",0x1), + 0x801C6B28:("gBombersNotebookWeekEventFlags","UNK_TYPE1","",0x1), 0x801C6B98:("D_801C6B98","UNK_TYPE1","",0x1), 0x801CED40:("D_801CED40","UNK_TYPE1","",0x1), 0x801CFB08:("D_801CFB08","UNK_TYPE1","",0x1), @@ -2115,19 +2115,14 @@ 0x801D0D5C:("sIsCameraUnderwater","UNK_TYPE2","",0x2), 0x801D0D60:("D_801D0D60","Input*","",0x4), 0x801D0D64:("sPlayerCsIdToCsCamId","s16","[10]",0x14), - 0x801D0D80:("D_801D0D80","UNK_TYPE1","",0x1), - 0x801D11F4:("D_801D11F4","UNK_TYPE1","",0x1), - 0x801D1230:("D_801D1230","UNK_TYPE1","",0x1), - 0x801D1234:("D_801D1234","UNK_TYPE1","",0x1), - 0x801D1238:("D_801D1238","UNK_TYPE4","",0x4), - 0x801D1244:("D_801D1244","UNK_TYPE1","",0x1), - 0x801D12C0:("D_801D12C0","UNK_TYPE1","",0x1), - 0x801D12D0:("D_801D12D0","UNK_TYPE1","",0x1), - 0x801D12D4:("D_801D12D4","UNK_TYPE1","",0x1), - 0x801D12D8:("D_801D12D8","UNK_TYPE1","",0x1), + 0x801D0D80:("D_801D0D80","UNK_TYPE1","",0x4B0), + 0x801D1230:("D_801D1230","UNK_TYPE1","",0x8), + 0x801D1238:("D_801D1238","UNK_TYPE4","",0x1), + 0x801D1244:("D_801D1244","UNK_TYPE1","",0x8C), + 0x801D12D0:("D_801D12D0","UNK_TYPE1","",0xC), 0x801D12DC:("D_801D12DC","UNK_TYPE1","",0x1), - 0x801D1330:("D_801D1330","UNK_TYPE2","",0x2), - 0x801D1342:("D_801D1342","UNK_TYPE1","",0x1), + 0x801D12E8:("D_801D12E8","UNK_TYPE1","",0x1), + 0x801D1330:("D_801D1330","UNK_TYPE1","",0x14), 0x801D1344:("D_801D1344","UNK_TYPE2","",0x2), 0x801D1368:("D_801D1368","UNK_TYPE1","",0x1), 0x801D1374:("D_801D1374","UNK_TYPE2","",0x2), diff --git a/tools/namefixer.py b/tools/namefixer.py index a755cc88c..417210d8f 100755 --- a/tools/namefixer.py +++ b/tools/namefixer.py @@ -713,6 +713,7 @@ wordReplace = { "func_80158FB0": "Message_LoadTimeNES", "func_8015926C": "Message_LoadOwlWarpTextNES", "func_8015E750": "Message_FindCreditsMessage", + "func_80151BB4": "Message_BombersNotebookQueueEvent", "func_80133038": "Schedule_RunScript", "EffectSsKiraKira_SpawnSmallYellow": "EffectSsKirakira_SpawnSmallYellow", diff --git a/tools/permuter_settings.toml b/tools/permuter_settings.toml index 5f42d30d6..efa3bc2fe 100644 --- a/tools/permuter_settings.toml +++ b/tools/permuter_settings.toml @@ -5,6 +5,8 @@ compiler_type = "ido" "gs[DS]P.*" = "void" "gDma.*" = "void" "G_IM_SIZ_.*" = "int" +"G_IM_FMT_.*" = "int" +"G_TX_.*" = "int" "G_[AC]C.*" = "int" LOG = "void" SET_FULLSCREEN_VIEWPORT = "void" diff --git a/tools/sizes/code_functions.csv b/tools/sizes/code_functions.csv index 834b933ef..80d36de95 100644 --- a/tools/sizes/code_functions.csv +++ b/tools/sizes/code_functions.csv @@ -2369,7 +2369,7 @@ asm/non_matchings/code/z_message/func_801514B0.s,func_801514B0,0x801514B0,0x100 asm/non_matchings/code/z_message/Message_StartTextbox.s,Message_StartTextbox,0x801518B0,0x22 asm/non_matchings/code/z_message/Message_ContinueTextbox.s,Message_ContinueTextbox,0x80151938,0x4C asm/non_matchings/code/z_message/func_80151A68.s,func_80151A68,0x80151A68,0x53 -asm/non_matchings/code/z_message/func_80151BB4.s,func_80151BB4,0x80151BB4,0x3A +asm/non_matchings/code/z_message/Message_BombersNotebookQueueEvent.s,Message_BombersNotebookQueueEvent,0x80151BB4,0x3A asm/non_matchings/code/z_message/func_80151C9C.s,func_80151C9C,0x80151C9C,0x42 asm/non_matchings/code/z_message/func_80151DA4.s,func_80151DA4,0x80151DA4,0x1A4 asm/non_matchings/code/z_message/func_80152434.s,func_80152434,0x80152434,0xC @@ -2554,16 +2554,16 @@ asm/non_matchings/code/z_play/Play_IsDebugCamEnabled.s,Play_IsDebugCamEnabled,0x asm/non_matchings/code/z_play/func_8016A178.s,func_8016A178,0x8016A178,0x3C asm/non_matchings/code/z_play/Play_FillScreen.s,Play_FillScreen,0x8016A268,0x18 asm/non_matchings/code/z_play/Play_Init.s,Play_Init,0x8016A2C8,0x252 -asm/non_matchings/code/z_play_hireso/func_8016AC10.s,func_8016AC10,0x8016AC10,0x83 -asm/non_matchings/code/z_play_hireso/func_8016AE1C.s,func_8016AE1C,0x8016AE1C,0x117 -asm/non_matchings/code/z_play_hireso/func_8016B278.s,func_8016B278,0x8016B278,0x8E -asm/non_matchings/code/z_play_hireso/func_8016B4B0.s,func_8016B4B0,0x8016B4B0,0x3A5 -asm/non_matchings/code/z_play_hireso/func_8016C344.s,func_8016C344,0x8016C344,0x282 -asm/non_matchings/code/z_play_hireso/func_8016CD4C.s,func_8016CD4C,0x8016CD4C,0x5B0 -asm/non_matchings/code/z_play_hireso/func_8016E40C.s,func_8016E40C,0x8016E40C,0x1A1 -asm/non_matchings/code/z_play_hireso/func_8016EA90.s,func_8016EA90,0x8016EA90,0x1C6 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawScisTexRect.s,BombersNotebook_DrawScisTexRect,0x8016AC10,0x83 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawHeaders.s,BombersNotebook_DrawHeaders,0x8016AE1C,0x117 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawColumns.s,BombersNotebook_DrawColumns,0x8016B278,0x8E +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawEntries.s,BombersNotebook_DrawEntries,0x8016B4B0,0x3A5 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawRows.s,BombersNotebook_DrawRows,0x8016C344,0x282 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawTimeOfDay.s,BombersNotebook_DrawTimeOfDay,0x8016CD4C,0x5B0 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawCursor.s,BombersNotebook_DrawCursor,0x8016E40C,0x1A1 +asm/non_matchings/code/z_play_hireso/BombersNotebook_DrawArrows.s,BombersNotebook_DrawArrows,0x8016EA90,0x1C6 asm/non_matchings/code/z_play_hireso/BombersNotebook_Draw.s,BombersNotebook_Draw,0x8016F1A8,0xD1 -asm/non_matchings/code/z_play_hireso/func_8016F4EC.s,func_8016F4EC,0x8016F4EC,0x2F +asm/non_matchings/code/z_play_hireso/BombersNotebook_LoadFiles.s,BombersNotebook_LoadFiles,0x8016F4EC,0x2F asm/non_matchings/code/z_play_hireso/BombersNotebook_Update.s,BombersNotebook_Update,0x8016F5A8,0x1B4 asm/non_matchings/code/z_play_hireso/BombersNotebook_Init.s,BombersNotebook_Init,0x8016FC78,0x8 asm/non_matchings/code/z_play_hireso/BombersNotebook_Destroy.s,BombersNotebook_Destroy,0x8016FC98,0x16 diff --git a/tools/weekeventregconvert.py b/tools/weekeventregconvert.py index 28b64d2fa..591671ab8 100755 --- a/tools/weekeventregconvert.py +++ b/tools/weekeventregconvert.py @@ -177,10 +177,10 @@ weekEventReg = { (21 << 8) | 0x04: "WEEKEVENTREG_TALKED_GORON_GRAVEMAKER_AS_GORON", (21 << 8) | 0x08: "WEEKEVENTREG_TALKED_THAWED_GRAVEYARD_GORON", (21 << 8) | 0x10: "WEEKEVENTREG_21_10", - (21 << 8) | 0x20: "WEEKEVENTREG_21_20", + (21 << 8) | 0x20: "WEEKEVENTREG_PROMISED_TO_HELP_WITH_THEM", (21 << 8) | 0x40: "WEEKEVENTREG_21_40", (21 << 8) | 0x80: "WEEKEVENTREG_21_80", - (22 << 8) | 0x01: "WEEKEVENTREG_22_01", + (22 << 8) | 0x01: "WEEKEVENTREG_DEFENDED_AGAINST_THEM", (22 << 8) | 0x02: "WEEKEVENTREG_22_02", (22 << 8) | 0x04: "WEEKEVENTREG_CALMED_GORON_ELDERS_SON", (22 << 8) | 0x08: "WEEKEVENTREG_22_08", @@ -221,11 +221,11 @@ weekEventReg = { (26 << 8) | 0x40: "WEEKEVENTREG_26_40", (26 << 8) | 0x80: "WEEKEVENTREG_26_80", (27 << 8) | 0x01: "WEEKEVENTREG_27_01", - (27 << 8) | 0x02: "WEEKEVENTREG_27_02", - (27 << 8) | 0x04: "WEEKEVENTREG_27_04", - (27 << 8) | 0x08: "WEEKEVENTREG_27_08", - (27 << 8) | 0x10: "WEEKEVENTREG_27_10", - (27 << 8) | 0x20: "WEEKEVENTREG_27_20", + (27 << 8) | 0x02: "WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_UPPER_CLOCKTOWN", + (27 << 8) | 0x04: "WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_NORTH_CLOCKTOWN", + (27 << 8) | 0x08: "WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_UPPER_CLOCKTOWN", + (27 << 8) | 0x10: "WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_EAST_LOWER_CLOCKTOWN", + (27 << 8) | 0x20: "WEEKEVENTREG_DEPOSITED_LETTER_TO_KAFEI_SOUTH_LOWER_CLOCKTOWN", (27 << 8) | 0x40: "WEEKEVENTREG_27_40", (27 << 8) | 0x80: "WEEKEVENTREG_27_80", (28 << 8) | 0x01: "WEEKEVENTREG_28_01", @@ -407,20 +407,20 @@ weekEventReg = { (50 << 8) | 0x01: "WEEKEVENTREG_50_01", (50 << 8) | 0x02: "WEEKEVENTREG_50_02", (50 << 8) | 0x04: "WEEKEVENTREG_50_04", - (50 << 8) | 0x08: "WEEKEVENTREG_50_08", + (50 << 8) | 0x08: "WEEKEVENTREG_PROMISED_MIDNIGHT_MEETING", (50 << 8) | 0x10: "WEEKEVENTREG_50_10", - (50 << 8) | 0x20: "WEEKEVENTREG_50_20", + (50 << 8) | 0x20: "WEEKEVENTREG_HAD_MIDNIGHT_MEETING", (50 << 8) | 0x40: "WEEKEVENTREG_50_40", - (50 << 8) | 0x80: "WEEKEVENTREG_50_80", - (51 << 8) | 0x01: "WEEKEVENTREG_51_01", + (50 << 8) | 0x80: "WEEKEVENTREG_RECEIVED_PENDANT_OF_MEMORIES", + (51 << 8) | 0x01: "WEEKEVENTREG_DELIVERED_PENDANT_OF_MEMORIES", (51 << 8) | 0x02: "WEEKEVENTREG_51_02", (51 << 8) | 0x04: "WEEKEVENTREG_51_04", (51 << 8) | 0x08: "WEEKEVENTREG_51_08", (51 << 8) | 0x10: "WEEKEVENTREG_51_10", - (51 << 8) | 0x20: "WEEKEVENTREG_51_20", + (51 << 8) | 0x20: "WEEKEVENTREG_ESCAPED_SAKONS_HIDEOUT", (51 << 8) | 0x40: "WEEKEVENTREG_51_40", (51 << 8) | 0x80: "WEEKEVENTREG_51_80", - (52 << 8) | 0x01: "WEEKEVENTREG_52_01", + (52 << 8) | 0x01: "WEEKEVENTREG_ESCORTED_CREMIA", (52 << 8) | 0x02: "WEEKEVENTREG_52_02", (52 << 8) | 0x04: "WEEKEVENTREG_52_04", (52 << 8) | 0x08: "WEEKEVENTREG_52_08", @@ -532,61 +532,61 @@ weekEventReg = { (65 << 8) | 0x20: "WEEKEVENTREG_65_20", (65 << 8) | 0x40: "WEEKEVENTREG_65_40", (65 << 8) | 0x80: "WEEKEVENTREG_65_80", - (66 << 8) | 0x01: "WEEKEVENTREG_66_01", - (66 << 8) | 0x02: "WEEKEVENTREG_66_02", - (66 << 8) | 0x04: "WEEKEVENTREG_66_04", - (66 << 8) | 0x08: "WEEKEVENTREG_66_08", - (66 << 8) | 0x10: "WEEKEVENTREG_66_10", - (66 << 8) | 0x20: "WEEKEVENTREG_66_20", - (66 << 8) | 0x40: "WEEKEVENTREG_66_40", - (66 << 8) | 0x80: "WEEKEVENTREG_66_80", - (67 << 8) | 0x01: "WEEKEVENTREG_67_01", - (67 << 8) | 0x02: "WEEKEVENTREG_67_02", - (67 << 8) | 0x04: "WEEKEVENTREG_67_04", - (67 << 8) | 0x08: "WEEKEVENTREG_67_08", - (67 << 8) | 0x10: "WEEKEVENTREG_67_10", - (67 << 8) | 0x20: "WEEKEVENTREG_67_20", - (67 << 8) | 0x40: "WEEKEVENTREG_67_40", - (67 << 8) | 0x80: "WEEKEVENTREG_67_80", - (68 << 8) | 0x01: "WEEKEVENTREG_68_01", - (68 << 8) | 0x02: "WEEKEVENTREG_68_02", - (68 << 8) | 0x04: "WEEKEVENTREG_68_04", - (68 << 8) | 0x08: "WEEKEVENTREG_68_08", - (68 << 8) | 0x10: "WEEKEVENTREG_68_10", - (68 << 8) | 0x20: "WEEKEVENTREG_68_20", - (68 << 8) | 0x40: "WEEKEVENTREG_68_40", - (68 << 8) | 0x80: "WEEKEVENTREG_68_80", - (69 << 8) | 0x01: "WEEKEVENTREG_69_01", - (69 << 8) | 0x02: "WEEKEVENTREG_69_02", - (69 << 8) | 0x04: "WEEKEVENTREG_69_04", - (69 << 8) | 0x08: "WEEKEVENTREG_69_08", - (69 << 8) | 0x10: "WEEKEVENTREG_69_10", - (69 << 8) | 0x20: "WEEKEVENTREG_69_20", - (69 << 8) | 0x40: "WEEKEVENTREG_69_40", - (69 << 8) | 0x80: "WEEKEVENTREG_69_80", - (70 << 8) | 0x01: "WEEKEVENTREG_70_01", - (70 << 8) | 0x02: "WEEKEVENTREG_70_02", - (70 << 8) | 0x04: "WEEKEVENTREG_70_04", - (70 << 8) | 0x08: "WEEKEVENTREG_70_08", - (70 << 8) | 0x10: "WEEKEVENTREG_70_10", - (70 << 8) | 0x20: "WEEKEVENTREG_70_20", - (70 << 8) | 0x40: "WEEKEVENTREG_70_40", - (70 << 8) | 0x80: "WEEKEVENTREG_70_80", - (71 << 8) | 0x01: "WEEKEVENTREG_71_01", - (71 << 8) | 0x02: "WEEKEVENTREG_71_02", - (71 << 8) | 0x04: "WEEKEVENTREG_71_04", - (71 << 8) | 0x08: "WEEKEVENTREG_71_08", - (71 << 8) | 0x10: "WEEKEVENTREG_71_10", - (71 << 8) | 0x20: "WEEKEVENTREG_71_20", - (71 << 8) | 0x40: "WEEKEVENTREG_71_40", - (71 << 8) | 0x80: "WEEKEVENTREG_71_80", - (72 << 8) | 0x01: "WEEKEVENTREG_72_01", - (72 << 8) | 0x02: "WEEKEVENTREG_72_02", - (72 << 8) | 0x04: "WEEKEVENTREG_72_04", - (72 << 8) | 0x08: "WEEKEVENTREG_72_08", - (72 << 8) | 0x10: "WEEKEVENTREG_72_10", - (72 << 8) | 0x20: "WEEKEVENTREG_72_20", - (72 << 8) | 0x40: "WEEKEVENTREG_72_40", + (66 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU", + (66 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI", + (66 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN", + (66 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY", + (66 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI", + (66 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA", + (66 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR", + (66 << 8) | 0x80: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAOME_AROMA", + (67 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO", + (67 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN", + (67 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN", + (67 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS", + (67 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND", + (67 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER", + (67 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO", + (67 << 8) | 0x80: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG", + (68 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS", + (68 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO", + (68 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU", + (68 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS", + (68 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY", + (68 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING", + (68 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI", + (68 << 8) | 0x80: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI", + (69 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI", + (69 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES", + (69 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES", + (69 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT", + (69 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM", + (69 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM", + (69 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE", + (69 << 8) | 0x80: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA", + (70 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK", + (70 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK", + (70 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL", + (70 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL", + (70 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE", + (70 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK", + (70 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP", + (70 << 8) | 0x80: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP", + (71 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP", + (71 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP", + (71 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP", + (71 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP", + (71 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK", + (71 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK", + (71 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD", + (71 << 8) | 0x80: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK", + (72 << 8) | 0x01: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK", + (72 << 8) | 0x02: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT", + (72 << 8) | 0x04: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK", + (72 << 8) | 0x08: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK", + (72 << 8) | 0x10: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK", + (72 << 8) | 0x20: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK", + (72 << 8) | 0x40: "WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK", (72 << 8) | 0x80: "WEEKEVENTREG_72_80", (73 << 8) | 0x01: "WEEKEVENTREG_73_01", (73 << 8) | 0x02: "WEEKEVENTREG_73_02", @@ -608,7 +608,7 @@ weekEventReg = { (75 << 8) | 0x02: "WEEKEVENTREG_75_02", (75 << 8) | 0x04: "WEEKEVENTREG_75_04", (75 << 8) | 0x08: "WEEKEVENTREG_75_08", - (75 << 8) | 0x10: "WEEKEVENTREG_75_10", + (75 << 8) | 0x10: "WEEKEVENTREG_RECEIVED_ROOM_KEY", (75 << 8) | 0x20: "WEEKEVENTREG_75_20", (75 << 8) | 0x40: "WEEKEVENTREG_75_40", (75 << 8) | 0x80: "WEEKEVENTREG_75_80", @@ -648,7 +648,7 @@ weekEventReg = { (80 << 8) | 0x02: "WEEKEVENTREG_80_02", (80 << 8) | 0x04: "WEEKEVENTREG_80_04", (80 << 8) | 0x08: "WEEKEVENTREG_80_08", - (80 << 8) | 0x10: "WEEKEVENTREG_80_10", + (80 << 8) | 0x10: "WEEKEVENTREG_RECEIVED_PRIORITY_MAIL", (80 << 8) | 0x20: "WEEKEVENTREG_80_20", (80 << 8) | 0x40: "WEEKEVENTREG_80_40", (80 << 8) | 0x80: "WEEKEVENTREG_80_80", diff --git a/undefined_syms.txt b/undefined_syms.txt index a45e5c682..e586991ff 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -1100,6 +1100,29 @@ D_06000D60 = 0x06000D60; // segment 0x07 +D_07000000 = 0x07000000; +D_07000800 = 0x07000800; +D_07001000 = 0x07001000; +D_07001800 = 0x07001800; +D_07002000 = 0x07002000; +D_07002800 = 0x07002800; +D_07003000 = 0x07003000; +D_07003800 = 0x07003800; +D_07004000 = 0x07004000; +D_07004800 = 0x07004800; +D_07005000 = 0x07005000; +D_07005800 = 0x07005800; +D_07006000 = 0x07006000; +D_07006800 = 0x07006800; +D_07007000 = 0x07007000; +D_07007800 = 0x07007800; +D_07008000 = 0x07008000; +D_07008800 = 0x07008800; +D_07009000 = 0x07009000; +D_07009800 = 0x07009800; +D_0700AC00 = 0x0700AC00; +D_0700AEA0 = 0x0700AEA0; + // segment 0x08 From f05d1723d6c0ee94fb4342958395f67ef751bdfe Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Fri, 9 Jun 2023 04:46:13 +1000 Subject: [PATCH 07/10] Persistent Cycle Weekeventregs (#1267) * persistent weekeventregs * move macro * PR Suggestions * 2 to ALT * PR Suggestions --- include/macros.h | 11 ++ include/z64cutscene.h | 11 -- include/z64save.h | 2 +- src/code/z_sram_NES.c | 251 ++++++++++++++++++++++++++----------- tools/disasm/variables.txt | 4 +- 5 files changed, 195 insertions(+), 84 deletions(-) diff --git a/include/macros.h b/include/macros.h index d2b98dec5..6b54474b6 100644 --- a/include/macros.h +++ b/include/macros.h @@ -68,6 +68,17 @@ #define ALIGN64(val) (((val) + 0x3F) & ~0x3F) #define ALIGN256(val) (((val) + 0xFF) & ~0xFF) +#define BIT_FLAG_TO_SHIFT(flag) \ + ((flag & 0x80) ? 7 : \ + (flag & 0x40) ? 6 : \ + (flag & 0x20) ? 5 : \ + (flag & 0x10) ? 4 : \ + (flag & 0x8) ? 3 : \ + (flag & 0x4) ? 2 : \ + (flag & 0x2) ? 1 : \ + (flag & 0x1) ? 0 : \ + 0) + /** * `x` vertex x * `y` vertex y diff --git a/include/z64cutscene.h b/include/z64cutscene.h index 1fc32be28..742398a31 100644 --- a/include/z64cutscene.h +++ b/include/z64cutscene.h @@ -580,17 +580,6 @@ typedef union CutsceneData { s8 b[4]; } CutsceneData; -#define BIT_FLAG_TO_SHIFT(flag) \ - ((flag & 0x80) ? 7 : \ - (flag & 0x40) ? 6 : \ - (flag & 0x20) ? 5 : \ - (flag & 0x10) ? 4 : \ - (flag & 0x8) ? 3 : \ - (flag & 0x4) ? 2 : \ - (flag & 0x2) ? 1 : \ - (flag & 0x1) ? 0 : \ - 0) - // Do not trigger the scripted cutscene upon any spawn #define CS_SPAWN_FLAG_NONE 0xFF // Always trigger the scripted cutscene upon the specified spawn diff --git a/include/z64save.h b/include/z64save.h index 312b18b2e..69b9e7ad8 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -970,7 +970,7 @@ typedef enum { #define WEEKEVENTREG_51_40 PACK_WEEKEVENTREG_FLAG(51, 0x40) #define WEEKEVENTREG_51_80 PACK_WEEKEVENTREG_FLAG(51, 0x80) -// ProtectedCremia +// Protected Cremia #define WEEKEVENTREG_ESCORTED_CREMIA PACK_WEEKEVENTREG_FLAG(52, 0x01) // Lose Milk Run minigame #define WEEKEVENTREG_52_02 PACK_WEEKEVENTREG_FLAG(52, 0x02) diff --git a/src/code/z_sram_NES.c b/src/code/z_sram_NES.c index 21bfaf7ef..fa690758c 100644 --- a/src/code/z_sram_NES.c +++ b/src/code/z_sram_NES.c @@ -11,12 +11,12 @@ void func_80147414(SramContext* sramCtx, s32 fileNum, s32 arg2); ((newf)[0] != 'Z' || (newf)[1] != 'E' || (newf)[2] != 'L' || (newf)[3] != 'D' || (newf)[4] != 'A' || \ (newf)[5] != '3') -typedef struct PersistentCycleFlags { +typedef struct PersistentCycleSceneFlags { /* 0x0 */ u32 switch0; /* 0x4 */ u32 switch1; /* 0x8 */ u32 chest; /* 0xC */ u32 collectible; -} PersistentCycleFlags; // size = 0x10 +} PersistentCycleSceneFlags; // size = 0x10 #define PERSISTENT_CYCLE_FLAGS_SET(switch0, switch1, chest, collectible) { switch0, switch1, chest, collectible }, #define PERSISTENT_CYCLE_FLAGS_NONE PERSISTENT_CYCLE_FLAGS_SET(0, 0, 0, 0) @@ -28,58 +28,105 @@ typedef struct PersistentCycleFlags { /** * Array of bitwise flags which won't be turned off on a cycle reset (will persist between cycles) */ -PersistentCycleFlags sPersistentCycleFlags[SCENE_MAX] = { +PersistentCycleSceneFlags sPersistentCycleSceneFlags[SCENE_MAX] = { #include "tables/scene_table.h" }; #undef DEFINE_SCENE #undef DEFINE_SCENE_UNSET -// TODO: figure out a way to use the WEEKEVENTREG defines here +// Each flag has 2 bits to store persistence over the three-day reset cycle +// Only 1 of these bits need to be set to persist (Values 1, 2, 3). +// Therefore, the final game does not distinguish between these two macros in use +#define PERSISTENT_WEEKEVENTREG(flag) (3 << (2 * BIT_FLAG_TO_SHIFT(flag))) +#define PERSISTENT_WEEKEVENTREG_ALT(flag) (2 << (2 * BIT_FLAG_TO_SHIFT(flag))) + // weekEventReg flags which will be not be cleared on a cycle reset -u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = { - /* 0 */ 0xFFFC, - /* 1 */ 0xFFFF, - /* 2 */ 0xFFFF, - /* 3 */ 0xFFFF, +//! @note The index of the flag in this array must be the same to its index in the WeekeventReg array +//! Only the mask is read from the `PERSISTENT_` macros. +u16 sPersistentCycleWeekEventRegs[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = { + /* 0 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_TERMINA_FIELD) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_IKANA_GRAVEYARD) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_ROMANI_RANCH) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_GORMAN_TRACK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOUNTAIN_VILLAGE_WINTER) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_GORON_SHRINE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_SNOWHEAD), + /* 1 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_SOUTHERN_SWAMP_POISONED) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_DEKU_PALACE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_GREAT_BAY_COAST) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_PIRATES_FORTRESS) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_ZORA_HALL) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WATERFALL_RAPIDS) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_IKANA_CANYON), + /* 2 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_IKANA_CASTLE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER_INVERTED) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_EAST_CLOCK_TOWN) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WEST_CLOCK_TOWN) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_NORTH_CLOCK_TOWN) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_SNOWHEAD_TEMPLE), + /* 3 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_PIRATES_FORTRESS_EXTERIOR) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_STONE_TOWER_TEMPLE_INVERTED) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_THE_MOON) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOON_DEKU_TRIAL) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOON_GORON_TRIAL) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_MOON_ZORA_TRIAL) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_03_80), /* 4 */ 0, /* 5 */ 0, /* 6 */ 0, - /* 7 */ 0xC000, - /* 8 */ 0xC00, + /* 7 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_ENTERED_WOODFALL_TEMPLE_PRISON), + /* 8 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_DOGGY_RACETRACK_HEART_PIECE), /* 9 */ 0, - /* 10 */ 0xC0, + /* 10 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_10_08), /* 11 */ 0, - /* 12 */ 0x300, - /* 13 */ 0x3000, - /* 14 */ 0xC000, - /* 15 */ 0xC00, + /* 12 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_12_10), + /* 13 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_RECEIVED_OCEANSIDE_WALLET_UPGRADE), + /* 14 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_14_80), + /* 15 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_15_20), /* 16 */ 0, /* 17 */ 0, /* 18 */ 0, /* 19 */ 0, /* 20 */ 0, /* 21 */ 0, - /* 22 */ 0xC00C, - /* 23 */ 0xC00C, - /* 24 */ 0xC008, - /* 25 */ 3, - /* 26 */ 0x3000, + /* 22 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_22_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_22_80), + /* 23 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_23_80), + /* 24 */ PERSISTENT_WEEKEVENTREG_ALT(WEEKEVENTREG_24_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_24_80), + /* 25 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_25_01), + /* 26 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_26_40), /* 27 */ 0, /* 28 */ 0, /* 29 */ 0, - /* 30 */ 0xFF00, - /* 31 */ 0xC3F, - /* 32 */ 0x3F, + /* 30 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_20) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_40) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_30_80), + /* 31 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_02) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_31_20), + /* 32 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_32_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_32_02) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_32_04), /* 33 */ 0, /* 34 */ 0, - /* 35 */ 0xCFFF, + /* 35 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_01) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_02) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_08) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_20) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_35_80), /* 36 */ 0, /* 37 */ 0, - /* 38 */ 0xC00, - /* 39 */ 0xC00, + /* 38 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_38_20), + /* 39 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_39_20), /* 40 */ 0, - /* 41 */ 0xC0, + /* 41 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_41_08), /* 42 */ 0, /* 43 */ 0, /* 44 */ 0, @@ -88,50 +135,111 @@ u16 D_801C66D0[ARRAY_COUNT(gSaveContext.save.saveInfo.weekEventReg)] = { /* 47 */ 0, /* 48 */ 0, /* 49 */ 0, - /* 50 */ 0x3C, - /* 51 */ 0x20, + /* 50 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_50_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_50_04), + /* 51 */ PERSISTENT_WEEKEVENTREG_ALT(WEEKEVENTREG_51_04), /* 52 */ 0, - /* 53 */ 0x300C, - /* 54 */ 0x3000, + /* 53 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_53_02) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_53_40), + /* 54 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_54_40), /* 55 */ 0, - /* 56 */ 0xC, - /* 57 */ 0xC0, + /* 56 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_56_02), + /* 57 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_57_08), /* 58 */ 0, - /* 59 */ 0xFF0, - /* 60 */ 0x300, + /* 59 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_08) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_59_20), + /* 60 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_60_10), /* 61 */ 0, /* 62 */ 0, - /* 63 */ 0xC00, + /* 63 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_63_20), /* 64 */ 0, /* 65 */ 0, - /* 66 */ 0xFFFF, - /* 67 */ 0xFFFF, - /* 68 */ 0xFFFF, - /* 69 */ 0xFFFF, - /* 70 */ 0xFFFF, - /* 71 */ 0xFFFF, - /* 72 */ 0xFFFF, - /* 73 */ 0xC0, + /* 66 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJU) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAFEI) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CURIOSITY_SHOP_MAN) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMB_SHOP_LADY) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROMANI) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_CREMIA) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MAYOR_DOTOUR) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_MADAME_AROMA), + /* 67 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOTO) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_POSTMAN) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ROSA_SISTERS) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_TOILET_HAND) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_ANJUS_GRANDMOTHER) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_KAMARO) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GROG), + /* 68 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GORMAN_BROTHERS) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_SHIRO) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_GURU_GURU) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_MET_BOMBERS) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROOM_KEY) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_MIDNIGHT_MEETING) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_MEET_KAFEI) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_LETTER_TO_KAFEI), + /* 69 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEPOSITED_LETTER_TO_KAFEI) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PENDANT_OF_MEMORIES) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PENDANT_OF_MEMORIES) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCAPED_SAKONS_HIDEOUT) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_PROMISED_TO_HELP_WITH_THEM) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DEFENDED_AGAINST_THEM) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MILK_BOTTLE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_ESCORTED_CREMIA), + /* 70 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROMANIS_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KEATON_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_PRIORITY_MAIL) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_DELIVERED_PRIORITY_MAIL) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_LEARNED_SECRET_CODE) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BOMBERS_NOTEBOOK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_MAYOR_HP) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ROSA_SISTERS_HP), + /* 71 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_TOILET_HAND_HP) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_SHORT_STORY_HP) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GRANDMA_LONG_STORY_HP) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMAN_HP) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAFEIS_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_ALL_NIGHT_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BUNNY_HOOD) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_GAROS_MASK), + /* 72 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_CIRCUS_LEADERS_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_POSTMANS_HAT) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_COUPLES_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BLAST_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_KAMAROS_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_STONE_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_BOMBERS_NOTEBOOK_EVENT_RECEIVED_BREMEN_MASK) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_72_80), + /* 73 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_73_08), /* 74 */ 0, - /* 75 */ 0xC000, + /* 75 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_75_80), /* 76 */ 0, - /* 77 */ 3, + /* 77 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_77_01), /* 78 */ 0, - /* 79 */ 0xC000, + /* 79 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_79_80), /* 80 */ 0, - /* 81 */ 0xC0, - /* 82 */ 0x300, + /* 81 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_81_08), + /* 82 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_82_10), /* 83 */ 0, /* 84 */ 0, /* 85 */ 0, - /* 86 */ 0xC000, - /* 87 */ 0xFFF0, + /* 86 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_86_80), + /* 87 */ + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_08) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_10) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_20) | + PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_40) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_87_80), /* 88 */ 0, /* 89 */ 0, - /* 90 */ 0x300, + /* 90 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_90_10), /* 91 */ 0, - /* 92 */ 0xC000, - /* 93 */ 0xF0, + /* 92 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_92_80), + /* 93 */ PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_93_04) | PERSISTENT_WEEKEVENTREG(WEEKEVENTREG_93_08), /* 94 */ 0, /* 95 */ 0, /* 96 */ 0, @@ -266,7 +374,10 @@ s32 gFlashSaveSizes[] = { offsetof(SaveContext, fileNum), // size = 0x3CA0 - File 2 Owl Save Backup }; -u8 D_801C6890[8] = { 1 << 0, 1 << 1, 1 << 2, 1 << 3, 1 << 4, 1 << 5, 1 << 6, 1 << 7 }; +// Bit Flag array in which sBitFlags8[n] is (1 << n) +u8 sBitFlags8[] = { + (1 << 0), (1 << 1), (1 << 2), (1 << 3), (1 << 4), (1 << 5), (1 << 6), (1 << 7), +}; u16 D_801F6AF0; u8 D_801F6AF2; @@ -326,21 +437,21 @@ void Sram_SaveEndOfCycle(PlayState* play) { sceneId = Play_GetOriginalSceneId(play->sceneId); Play_SaveCycleSceneFlags(&play->state); - play->actorCtx.sceneFlags.chest &= sPersistentCycleFlags[sceneId].chest; - play->actorCtx.sceneFlags.switches[0] &= sPersistentCycleFlags[sceneId].switch0; - play->actorCtx.sceneFlags.switches[1] &= sPersistentCycleFlags[sceneId].switch1; - play->actorCtx.sceneFlags.collectible[0] &= sPersistentCycleFlags[sceneId].collectible; + play->actorCtx.sceneFlags.chest &= sPersistentCycleSceneFlags[sceneId].chest; + play->actorCtx.sceneFlags.switches[0] &= sPersistentCycleSceneFlags[sceneId].switch0; + play->actorCtx.sceneFlags.switches[1] &= sPersistentCycleSceneFlags[sceneId].switch1; + play->actorCtx.sceneFlags.collectible[0] &= sPersistentCycleSceneFlags[sceneId].collectible; play->actorCtx.sceneFlags.clearedRoom = 0; for (i = 0; i < SCENE_MAX; i++) { gSaveContext.cycleSceneFlags[i].switch0 = - ((void)0, gSaveContext.cycleSceneFlags[i].switch0) & sPersistentCycleFlags[i].switch0; + ((void)0, gSaveContext.cycleSceneFlags[i].switch0) & sPersistentCycleSceneFlags[i].switch0; gSaveContext.cycleSceneFlags[i].switch1 = - ((void)0, gSaveContext.cycleSceneFlags[i].switch1) & sPersistentCycleFlags[i].switch1; + ((void)0, gSaveContext.cycleSceneFlags[i].switch1) & sPersistentCycleSceneFlags[i].switch1; gSaveContext.cycleSceneFlags[i].chest = - ((void)0, gSaveContext.cycleSceneFlags[i].chest) & sPersistentCycleFlags[i].chest; + ((void)0, gSaveContext.cycleSceneFlags[i].chest) & sPersistentCycleSceneFlags[i].chest; gSaveContext.cycleSceneFlags[i].collectible = - ((void)0, gSaveContext.cycleSceneFlags[i].collectible) & sPersistentCycleFlags[i].collectible; + ((void)0, gSaveContext.cycleSceneFlags[i].collectible) & sPersistentCycleSceneFlags[i].collectible; gSaveContext.cycleSceneFlags[i].clearedRoom = 0; gSaveContext.save.saveInfo.permanentSceneFlags[i].unk_14 = 0; gSaveContext.save.saveInfo.permanentSceneFlags[i].rooms = 0; @@ -362,15 +473,15 @@ void Sram_SaveEndOfCycle(PlayState* play) { Inventory_DeleteItem(ITEM_MASK_FIERCE_DEITY, SLOT(ITEM_MASK_FIERCE_DEITY)); } - for (i = 0; i < ARRAY_COUNT(D_801C66D0); i++) { - u16 phi_v1_3 = D_801C66D0[i]; + for (i = 0; i < ARRAY_COUNT(sPersistentCycleWeekEventRegs); i++) { + u16 isPersistentBits = sPersistentCycleWeekEventRegs[i]; - for (j = 0; j < ARRAY_COUNT(D_801C6890); j++) { - if ((phi_v1_3 & 3) == 0) { + for (j = 0; j < ARRAY_COUNT(sBitFlags8); j++) { + if (!(isPersistentBits & 3)) { gSaveContext.save.saveInfo.weekEventReg[i] = - ((void)0, gSaveContext.save.saveInfo.weekEventReg[i]) & (0xFF ^ D_801C6890[j]); + ((void)0, gSaveContext.save.saveInfo.weekEventReg[i]) & (0xFF ^ sBitFlags8[j]); } - phi_v1_3 >>= 2; + isPersistentBits >>= 2; } } diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index 749ee5878..e4c0138f3 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -1925,8 +1925,8 @@ 0x801C5EB0:("D_801C5EB0","UNK_TYPE4","",0x4), 0x801C5EC4:("D_801C5EC4","UNK_TYPE2","",0x2), 0x801C5F44:("D_801C5F44","UNK_TYPE4","",0x4), - 0x801C5FC0:("sPersistentCycleFlags","u32","[452]",0x710), - 0x801C66D0:("D_801C66D0","UNK_TYPE2","",0x2), + 0x801C5FC0:("sPersistentCycleSceneFlags","u32","[452]",0x710), + 0x801C66D0:("sPersistentCycleWeekEventRegs","UNK_TYPE2","",0x2), 0x801C6798:("gSramSlotOffsets","UNK_TYPE4","",0x4), 0x801C67B0:("gAmmoItems","UNK_TYPE1","",0x1), 0x801C67C8:("gFlashSaveStartPages","s32","[10]",0x28), From e19b1395043baede06bdab4faa2d3df3e93afa79 Mon Sep 17 00:00:00 2001 From: SeDan01 <135468170+SeDan01@users.noreply.github.com> Date: Fri, 9 Jun 2023 20:31:39 -0400 Subject: [PATCH 08/10] Tree Asset Decomp for object_tree (#1278) * Basic Tree Asset Decomp * renamed outnames --------- Co-authored-by: Yoe --- assets/xml/objects/object_tree.xml | 10 +++++----- src/overlays/actors/ovl_Obj_Tree/z_obj_tree.c | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/assets/xml/objects/object_tree.xml b/assets/xml/objects/object_tree.xml index 9d5fb66dd..89e3984c5 100644 --- a/assets/xml/objects/object_tree.xml +++ b/assets/xml/objects/object_tree.xml @@ -1,9 +1,9 @@  - - - - - + + + + + diff --git a/src/overlays/actors/ovl_Obj_Tree/z_obj_tree.c b/src/overlays/actors/ovl_Obj_Tree/z_obj_tree.c index 4c30a763e..3fff091b6 100644 --- a/src/overlays/actors/ovl_Obj_Tree/z_obj_tree.c +++ b/src/overlays/actors/ovl_Obj_Tree/z_obj_tree.c @@ -100,7 +100,7 @@ void ObjTree_Init(Actor* thisx, PlayState* play) { } else { Actor_SetScale(&this->dyna.actor, 0.1f); DynaPolyActor_Init(&this->dyna, DYNA_TRANSFORM_POS); - CollisionHeader_GetVirtual(&object_tree_Colheader_001B2C, &colHeader); + CollisionHeader_GetVirtual(&gTreeTopCol, &colHeader); this->dyna.bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader); } @@ -187,11 +187,11 @@ void ObjTree_Draw(Actor* thisx, PlayState* play) { Gfx_SetupDL25_Opa(play->state.gfxCtx); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, object_tree_DL_000680); + gSPDisplayList(POLY_OPA_DISP++, gTreeBodyDL); Matrix_RotateZYX(xRot, 0, zRot, MTXMODE_APPLY); gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(play->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(POLY_OPA_DISP++, object_tree_DL_0007C8); + gSPDisplayList(POLY_OPA_DISP++, gTreeLeavesDL); CLOSE_DISPS(play->state.gfxCtx); } From 8672dc0a57a7406cf6fd7b18dd8101563c9f63a8 Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Sat, 10 Jun 2023 23:37:43 +1000 Subject: [PATCH 09/10] Misc Cleanup 4 (#1271) * begin next cleanup * more cleanup * climbAnim * more cleanup * more * quick, a few more before anyone looks * PR * another fix * table * another small cleanup * PR Suggestion --- src/audio/lib/heap.c | 10 +- src/code/z_camera.c | 7 +- src/code/z_fireobj.c | 3 +- src/code/z_play.c | 33 +++-- src/code/z_sub_s.c | 2 +- src/libultra/io/contpfs.c | 2 - .../actors/ovl_Dm_Char03/z_dm_char03.c | 4 +- src/overlays/actors/ovl_En_Am/z_en_am.c | 2 +- src/overlays/actors/ovl_En_Arrow/z_en_arrow.c | 2 +- src/overlays/actors/ovl_En_Bb/z_en_bb.c | 8 +- src/overlays/actors/ovl_En_Crow/z_en_crow.c | 2 +- src/overlays/actors/ovl_En_Dno/z_en_dno.c | 14 +- src/overlays/actors/ovl_En_Go/z_en_go.c | 84 +---------- .../ovl_En_Guard_Nuts/z_en_guard_nuts.c | 2 +- src/overlays/actors/ovl_En_Hgo/z_en_hgo.c | 3 +- src/overlays/actors/ovl_En_Ik/z_en_ik.c | 2 +- src/overlays/actors/ovl_En_Nwc/z_en_nwc.c | 4 +- src/overlays/actors/ovl_En_Osk/z_en_osk.c | 2 +- src/overlays/actors/ovl_En_Osn/z_en_osn.c | 6 +- src/overlays/actors/ovl_En_Pp/z_en_pp.c | 4 - .../actors/ovl_En_S_Goro/z_en_s_goro.c | 2 +- src/overlays/actors/ovl_En_Sb/z_en_sb.c | 2 +- src/overlays/actors/ovl_En_Sw/z_en_sw.c | 2 +- .../ovl_En_Syateki_Okuta/z_en_syateki_okuta.c | 7 +- .../actors/ovl_En_Wallmas/z_en_wallmas.c | 2 +- src/overlays/actors/ovl_En_Wiz/z_en_wiz.c | 4 +- src/overlays/actors/ovl_En_Yb/z_en_yb.c | 48 +++--- src/overlays/actors/ovl_En_Zos/z_en_zos.c | 139 +++++++++--------- src/overlays/actors/ovl_En_Zot/z_en_zot.c | 3 +- .../ovl_Obj_Jgame_Light/z_obj_jgame_light.c | 2 +- .../actors/ovl_Obj_Switch/z_obj_switch.c | 2 +- .../actors/ovl_player_actor/z_player.c | 109 +++++++------- 32 files changed, 218 insertions(+), 300 deletions(-) diff --git a/src/audio/lib/heap.c b/src/audio/lib/heap.c index 52533da4d..7a7cd5807 100644 --- a/src/audio/lib/heap.c +++ b/src/audio/lib/heap.c @@ -1305,11 +1305,11 @@ void AudioHeap_DiscardSampleCacheEntry(SampleCacheEntry* entry) { if (((sampleBankId1 != 0xFF) && (entry->sampleBankId == sampleBankId1)) || ((sampleBankId2 != 0xFF) && (entry->sampleBankId == sampleBankId2)) || (entry->sampleBankId == 0) || (entry->sampleBankId == 0xFE)) { - if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, fontId) != NULL) { - if (1) {} - if (AudioLoad_IsFontLoadComplete(fontId) != 0) { - AudioHeap_UnapplySampleCacheForFont(entry, fontId); - } + if (AudioHeap_SearchCaches(FONT_TABLE, CACHE_EITHER, fontId) == NULL) { + continue; + } + if (AudioLoad_IsFontLoadComplete(fontId) != 0) { + AudioHeap_UnapplySampleCacheForFont(entry, fontId); } } } diff --git a/src/code/z_camera.c b/src/code/z_camera.c index ce09f7c4d..acb4af20a 100644 --- a/src/code/z_camera.c +++ b/src/code/z_camera.c @@ -1844,8 +1844,6 @@ void Camera_CalcDefaultSwing(Camera* camera, VecGeo* arg1, VecGeo* arg2, f32 arg if (swing->unk_64 == 1) { if (arg3 < (sp88 = OLib_Vec3fDist(at, &swing->collisionClosePoint))) { - //! FAKE: - dummy:; swing->unk_64 = 0; } else if ((sp88 = Math3D_SignedDistanceFromPlane(swing->eyeAtColChk.norm.x, swing->eyeAtColChk.norm.y, swing->eyeAtColChk.norm.z, swing->eyeAtColChk.poly->dist, @@ -6325,8 +6323,9 @@ s32 Camera_Demo4(Camera* camera) { sCameraInterfaceFlags = roData->interfaceFlags; switch (camera->animState) { - //! FAKE: - if (1) {} + default: + break; + case 0: camera->animState++; rwData->timer = 0; diff --git a/src/code/z_fireobj.c b/src/code/z_fireobj.c index 5565bc876..98d14874b 100644 --- a/src/code/z_fireobj.c +++ b/src/code/z_fireobj.c @@ -67,8 +67,7 @@ void FireObj_StepSize(FireObj* fire) { if (Math_StepToF(&fire->dynamicSize, 1.0f, fire->dynamicSizeStep)) { FireObj_SetState(fire, fire->dynamicSizeStep, FIRE_STATE_FULLY_LIT); } - } else if ((fire->state == FIRE_STATE_SHRINKING) && - (Math_StepToF(&fire->dynamicSize, 0.0f, fire->dynamicSizeStep))) { + } else if ((fire->state == FIRE_STATE_SHRINKING) && Math_StepToF(&fire->dynamicSize, 0.0f, fire->dynamicSizeStep)) { FireObj_SetState(fire, fire->dynamicSizeStep, FIRE_STATE_NOT_LIT); } if (fire->sizeGrowsCos2 == 1) { diff --git a/src/code/z_play.c b/src/code/z_play.c index 6ef734aee..9063c9151 100644 --- a/src/code/z_play.c +++ b/src/code/z_play.c @@ -1117,7 +1117,7 @@ void Play_PostWorldDraw(PlayState* this) { } #ifdef NON_MATCHING -// Stack issues and 1 small issue around Play_PostWorldDraw +// Something weird going on with the stack of the unused arg0 of `Camera_Update` void Play_DrawMain(PlayState* this) { GraphicsContext* gfxCtx = this->state.gfxCtx; Lights* sp268; @@ -1270,7 +1270,7 @@ void Play_DrawMain(PlayState* this) { if (!this->unk_18844) { if (1) { - if ((this->skyboxId != SKYBOX_NONE) && !this->envCtx.skyboxDisabled) { + if (((u32)this->skyboxId != SKYBOX_NONE) && !this->envCtx.skyboxDisabled) { if ((this->skyboxId == SKYBOX_NORMAL_SKY) || (this->skyboxId == SKYBOX_3)) { Environment_UpdateSkybox(this->skyboxId, &this->envCtx, &this->skyboxCtx); Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, this->envCtx.skyboxBlend, @@ -1306,10 +1306,11 @@ void Play_DrawMain(PlayState* this) { if (this->skyboxCtx.skyboxShouldDraw) { Vec3f sp78; - if (1) {} - Camera_GetQuakeOffset(&sp78, GET_ACTIVE_CAM(this)); - Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + sp78.x, - this->view.eye.y + sp78.y, this->view.eye.z + sp78.z); + if (1) { + Camera_GetQuakeOffset(&sp78, GET_ACTIVE_CAM(this)); + Skybox_Draw(&this->skyboxCtx, gfxCtx, this->skyboxId, 0, this->view.eye.x + sp78.x, + this->view.eye.y + sp78.y, this->view.eye.z + sp78.z); + } } // envCtx.precipitation[PRECIP_RAIN_CUR] @@ -1370,9 +1371,8 @@ void Play_DrawMain(PlayState* this) { Play_DrawMotionBlur(this); - if (((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) || - (gTransitionTileState == TRANS_TILE_SETUP)) || - (R_PICTO_PHOTO_STATE == PICTO_PHOTO_STATE_SETUP)) { + if ((R_PAUSE_BG_PRERENDER_STATE == PAUSE_BG_PRERENDER_SETUP) || + (gTransitionTileState == TRANS_TILE_SETUP) || (R_PICTO_PHOTO_STATE == PICTO_PHOTO_STATE_SETUP)) { Gfx* sp74; Gfx* sp70 = POLY_OPA_DISP; @@ -1405,15 +1405,18 @@ void Play_DrawMain(PlayState* this) { POLY_OPA_DISP = sp74; this->unk_18B49 = 2; SREG(33) |= 1; - } else { - PostWorldDraw: - if (1) { - Play_PostWorldDraw(this); - } + goto SkipPostWorldDraw; + } + + PostWorldDraw: + if (1) { + Play_PostWorldDraw(this); } } } +SkipPostWorldDraw: + if ((this->view.unk164 != 0) && !gDbgCamEnabled) { Vec3s sp4C; @@ -1429,7 +1432,7 @@ void Play_DrawMain(PlayState* this) { func_800FE3E0(this); } - CLOSE_DISPS(this->state.gfxCtx); + CLOSE_DISPS(gfxCtx); } #else void Play_DrawMain(PlayState* this); diff --git a/src/code/z_sub_s.c b/src/code/z_sub_s.c index 90d09a4b1..1c3f1ae3a 100644 --- a/src/code/z_sub_s.c +++ b/src/code/z_sub_s.c @@ -188,7 +188,7 @@ s32 SubS_UpdateLimb(s16 newRotZ, s16 newRotY, Vec3f* pos, Vec3s* rot, s32 stepRo Matrix_MultVec3f(&zeroVec, &newPos); Matrix_Get(&curState); - Matrix_MtxFToYXZRot(&curState, &newRot, MTXMODE_NEW); + Matrix_MtxFToYXZRot(&curState, &newRot, false); *pos = newPos; if (!stepRot && !overrideRot) { diff --git a/src/libultra/io/contpfs.c b/src/libultra/io/contpfs.c index e9431a741..e6817c3d0 100644 --- a/src/libultra/io/contpfs.c +++ b/src/libultra/io/contpfs.c @@ -266,8 +266,6 @@ s32 __osGetId(OSPfs* pfs) { bcopy(id, pfs->id, BLOCKSIZE); - if (0) {} - pfs->version = id->version; pfs->banks = id->banks; diff --git a/src/overlays/actors/ovl_Dm_Char03/z_dm_char03.c b/src/overlays/actors/ovl_Dm_Char03/z_dm_char03.c index e348d145a..cb71b8515 100644 --- a/src/overlays/actors/ovl_Dm_Char03/z_dm_char03.c +++ b/src/overlays/actors/ovl_Dm_Char03/z_dm_char03.c @@ -131,8 +131,8 @@ void func_80AAB710(DmChar03* this, PlayState* play) { void func_80AAB838(DmChar03* this, PlayState* play) { if (Animation_OnFrame(&this->skelAnime, 5.0f)) { Actor_PlaySfx(&this->actor, NA_SE_IT_MASK_BOUND_0); - } else if ((Animation_OnFrame(&this->skelAnime, 10.0f)) || (Animation_OnFrame(&this->skelAnime, 18.0f)) || - (Animation_OnFrame(&this->skelAnime, 30.0f)) || (Animation_OnFrame(&this->skelAnime, 38.0f))) { + } else if (Animation_OnFrame(&this->skelAnime, 10.0f) || Animation_OnFrame(&this->skelAnime, 18.0f) || + Animation_OnFrame(&this->skelAnime, 30.0f) || Animation_OnFrame(&this->skelAnime, 38.0f)) { Actor_PlaySfx(&this->actor, NA_SE_IT_MASK_BOUND_1); } } diff --git a/src/overlays/actors/ovl_En_Am/z_en_am.c b/src/overlays/actors/ovl_En_Am/z_en_am.c index 7d1f1e140..30775584b 100644 --- a/src/overlays/actors/ovl_En_Am/z_en_am.c +++ b/src/overlays/actors/ovl_En_Am/z_en_am.c @@ -271,7 +271,7 @@ void func_808B0208(EnAm* this, PlayState* play) { this->actor.world.pos.z += this->actor.speed * Math_CosS(this->actor.world.rot.y); } SkelAnime_Update(&this->skelAnime); - if (Animation_OnFrame(&this->skelAnime, 8.0f) != 0) { + if (Animation_OnFrame(&this->skelAnime, 8.0f)) { this->actor.speed = this->speed; this->actor.velocity.y = 12.0f; } else if (this->skelAnime.curFrame > 11.0f) { diff --git a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c index e47a726a4..75f95cfe6 100644 --- a/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c +++ b/src/overlays/actors/ovl_En_Arrow/z_en_arrow.c @@ -667,7 +667,7 @@ void EnArrow_Draw(Actor* thisx, PlayState* play) { Matrix_Translate(0.0f, 0.0f, 460.0f, MTXMODE_APPLY); if (this->actor.speed == 0.0f) { - func_800B8118(&this->actor, play, MTXMODE_NEW); + func_800B8118(&this->actor, play, 0); gSPDisplayList(POLY_XLU_DISP++, gameplay_keep_DL_06F380); gDPSetRenderMode(POLY_XLU_DISP++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2); diff --git a/src/overlays/actors/ovl_En_Bb/z_en_bb.c b/src/overlays/actors/ovl_En_Bb/z_en_bb.c index c1d13be5a..63fb13292 100644 --- a/src/overlays/actors/ovl_En_Bb/z_en_bb.c +++ b/src/overlays/actors/ovl_En_Bb/z_en_bb.c @@ -256,7 +256,7 @@ void EnBb_FlyIdle(EnBb* this, PlayState* play) { if (Animation_OnFrame(&this->skelAnime, 5.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_WING); - } else if ((Animation_OnFrame(&this->skelAnime, 0.0f)) && (Rand_ZeroOne() < 0.1f)) { + } else if (Animation_OnFrame(&this->skelAnime, 0.0f) && (Rand_ZeroOne() < 0.1f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_LAUGH); } @@ -287,11 +287,11 @@ void EnBb_Attack(EnBb* this, PlayState* play) { this->targetYRotation = this->actor.yawTowardsPlayer; EnBb_UpdateStateForFlying(this); - if ((Animation_OnFrame(&this->skelAnime, 0.0f)) || (Animation_OnFrame(&this->skelAnime, 5.0f))) { + if (Animation_OnFrame(&this->skelAnime, 0.0f) || Animation_OnFrame(&this->skelAnime, 5.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_MOUTH); - } else if ((Animation_OnFrame(&this->skelAnime, 2.0f)) || (Animation_OnFrame(&this->skelAnime, 7.0f))) { + } else if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 7.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_WING); - } else if ((Animation_OnFrame(&this->skelAnime, 0.0f)) && (Rand_ZeroOne() < 0.1f)) { + } else if (Animation_OnFrame(&this->skelAnime, 0.0f) && (Rand_ZeroOne() < 0.1f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_BUBLE_LAUGH); } diff --git a/src/overlays/actors/ovl_En_Crow/z_en_crow.c b/src/overlays/actors/ovl_En_Crow/z_en_crow.c index 4c88b84cb..35e6d8437 100644 --- a/src/overlays/actors/ovl_En_Crow/z_en_crow.c +++ b/src/overlays/actors/ovl_En_Crow/z_en_crow.c @@ -529,7 +529,7 @@ void EnCrow_Update(Actor* thisx, PlayState* play) { Actor_SetFocus(&this->actor, height); - if ((this->actor.colChkInfo.health != 0) && (Animation_OnFrame(&this->skelAnime, 3.0f))) { + if ((this->actor.colChkInfo.health != 0) && Animation_OnFrame(&this->skelAnime, 3.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_KAICHO_FLUTTER); } if (this->drawDmgEffAlpha > 0.0f) { 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 904a18e62..e80bbe019 100644 --- a/src/overlays/actors/ovl_En_Dno/z_en_dno.c +++ b/src/overlays/actors/ovl_En_Dno/z_en_dno.c @@ -943,12 +943,16 @@ void func_80A73408(EnDno* this, PlayState* play) { Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel); } - if ((Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) && - (this->animIndex == EN_DNO_ANIM_SHOCK_START)) { - //! FAKE: - if (1) {} + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { + switch (this->animIndex) { + case EN_DNO_ANIM_SHOCK_START: + SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_SHOCK_LOOP, + &this->animIndex); + break; - SubS_ChangeAnimationBySpeedInfo(&this->skelAnime, sAnimations, EN_DNO_ANIM_SHOCK_LOOP, &this->animIndex); + default: + break; + } } } diff --git a/src/overlays/actors/ovl_En_Go/z_en_go.c b/src/overlays/actors/ovl_En_Go/z_en_go.c index 216d5c301..ec5905594 100644 --- a/src/overlays/actors/ovl_En_Go/z_en_go.c +++ b/src/overlays/actors/ovl_En_Go/z_en_go.c @@ -110,77 +110,6 @@ typedef enum EnGoAnimationIndex { /* 21 */ ENGO_ANIM_LOOK_AROUND_LOOPED } EnGoAnimationIndex; -EnGoEffect* EnGo_InitSteam(EnGoEffect effect[], Vec3f pos, Vec3f accel, Vec3f velocity, f32 scale, f32 deltaScale, - s32 maxFrames); -void EnGo_DrawSteam(EnGoEffect effect[], PlayState* play2); - -void EnGo_InitDust(EnGoEffect effect[], Vec3f pos, Vec3f accel, Vec3f vel, f32 scale, f32 deltaScale, s32 maxFrames, - EnGoEffectType parentEffectType); -void EnGo_DrawDust(EnGoEffect effect[], PlayState* play2); - -void EnGo_InitSnow(EnGoEffect effect[], Vec3f pos); -void EnGo_UpdateSnow(EnGoEffect* effect, f32 dustConversionHeight); -void EnGo_DrawSnow(EnGoEffect effect[], PlayState* play, Gfx* material, Gfx* model, u8 effectType); - -void EnGo_UpdateEffects(EnGo* this); -void EnGo_DrawEffects(EnGo* this, PlayState* play); - -s32 EnGo_CanSnowballHurtPlayer(PlayState* play); -s32 EnGo_IsFallingAsleep(EnGo* this, PlayState* play); - -s32 EnGo_UpdateFocus(EnGo* this); - -void EnGo_UpdateSnowballCollider(EnGo* this, PlayState* play); -void EnGo_UpdateMedigoronCollider(EnGo* this, PlayState* play); -void EnGo_UpdateRolledUpCollider(EnGo* this, PlayState* play); -void EnGo_UpdateFrozenCollider(EnGo* this, PlayState* play); -void EnGo_UpdateStandingCollider(EnGo* this, PlayState* play); -void EnGo_UpdateCollider(EnGo* this, PlayState* play); - -s32 EnGo_UpdateTalking(EnGo* this, PlayState* play); -s32 EnGo_DetectCollisions(EnGo* this, PlayState* play); -s32 EnGo_UpdateSpringArrivalCutscene(EnGo* this, PlayState* play); -s32 EnGo_UpdateAnimationToCurrent(EnGo* this, PlayState* play); -s32 EnGo_UpdateSfx(EnGo* this, PlayState* play); -s32 EnGo_ChangeAnim(EnGo* this, PlayState* play, EnGoAnimationIndex animIndex); -void EnGo_UpdateEyes(EnGo* this); - -void EnGo_UpdateShiverSurprisedAnimation(EnGo* this, PlayState* play); -s32 EnGo_UpdateGraveyardAttentionTargetAndReactions(EnGo* this, PlayState* play); -s32 EnGo_UpdateRotationToTarget(EnGo* this, PlayState* play); -s32 EnGo_UpdateAttentionTargetAndReactions(EnGo* this, PlayState* play); - -void EnGo_GravemakerIdle(EnGo* this, PlayState* play); -void EnGo_FrozenIdle(EnGo* this, PlayState* play); -Actor* EnGo_FindGravemaker(EnGo* this, PlayState* play); - -void EnGo_UpdateMedigoronColliderRadius(EnGo* this, PlayState* play, s32 isGivenPowderKeg); -s32 EnGo_ChangeCutscene(EnGo* this, s16 csId); - -s32 EnGo_HandleGatekeeperPoundCutscene(EnGo* this, f32 initialVelocity, f32 maxDistortion, s32 maxHangtime); -void EnGo_AddGatekeeperPoundQuake(PlayState* play, s16 speed, s16 verticalMag, s16 countdown); -void EnGo_CreateGatekeeperPoundEffects(EnGo* this, PlayState* play); -void EnGo_DrawIceBlockWhenFrozen(EnGo* this, PlayState* play, f32 scale, f32 alpha); -void EnGo_MakeSteam(EnGo* this); - -s32 EnGo_HandleOpenShrineCutscene(Actor* thisx, PlayState* play); -s32 EnGo_HandleGivePowderKegCutscene(Actor* thisx, PlayState* play); - -void EnGo_ChangeToStretchingAnimation(EnGo* this, PlayState* play); -void EnGo_ChangeToSpectatingAnimation(EnGo* this, PlayState* play); -void EnGo_ChangeToFrozenAnimation(EnGo* this, PlayState* play); -void EnGo_ChangeToSnowballAnimation(EnGo* this, PlayState* play); -void EnGo_ChangeToCoveringEarsAnimation(EnGo* this, PlayState* play); -void EnGo_ChangeToShiveringAnimation(EnGo* this, PlayState* play); - -void EnGo_SetupAthletic(EnGo* this, PlayState* play); -void EnGo_SetupSpectator(EnGo* this, PlayState* play); -void EnGo_SetupGatekeeper(EnGo* this, PlayState* play); -void EnGo_SetupGraveyardGoron(EnGo* this, PlayState* play); -void EnGo_SetupShrineGoron(EnGo* this, PlayState* play); -void EnGo_SetupMedigoron(EnGo* this, PlayState* play); -void EnGo_SetupInitialAction(EnGo* this, PlayState* play); - void EnGo_Idle(EnGo* this, PlayState* play); void EnGo_Sleep(EnGo* this, PlayState* play); void EnGo_Frozen(EnGo* this, PlayState* play); @@ -191,8 +120,6 @@ void EnGo_HandleSpringArrivalCutscene(EnGo* this, PlayState* play); void EnGo_Snowball(EnGo* this, PlayState* play); -s32* EnGo_GetMsgEventScript(EnGo* this, PlayState* play); - void EnGo_Talk(EnGo* this, PlayState* play); // MsgEvent script for the Goron who made Darmani's grave in the mountain village. @@ -461,6 +388,7 @@ void EnGo_DrawSteam(EnGoEffect effect[ENGO_EFFECT_COUNT], PlayState* play2) { f32 alpha; OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL25_Xlu(play->state.gfxCtx); for (i = 0; i < ENGO_EFFECT_COUNT; i++, effect++) { if (effect->type != ENGO_EFFECT_STEAM) { @@ -554,6 +482,7 @@ void EnGo_DrawDust(EnGoEffect effect[ENGO_EFFECT_COUNT], PlayState* play2) { f32 alpha; OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL25_Xlu(play->state.gfxCtx); for (i = 0; i < ENGO_EFFECT_COUNT; i++, effect++) { if ((effect->type < ENGO_EFFECT_DUST_MIN) || (effect->type >= ENGO_EFFECT_STEAM_MIN)) { @@ -599,14 +528,13 @@ void EnGo_DrawDust(EnGoEffect effect[ENGO_EFFECT_COUNT], PlayState* play2) { * @param effect The EnGoEffect table * @param pos Position around which the effects appear */ -void EnGo_InitSnow(EnGoEffect effect[ENGO_EFFECT_COUNT], Vec3f pos) { - static u8 effectIndexToSnowEffectTable[] = { +void EnGo_InitSnow(EnGoEffect effect[ENGO_SNOW_EFFECT_COUNT], Vec3f pos) { + static u8 effectIndexToSnowEffectTable[ENGO_SNOW_EFFECT_COUNT] = { ENGO_EFFECT_SNOW3, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW2, ENGO_EFFECT_SNOW3, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW2, ENGO_EFFECT_SNOW3, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW2, ENGO_EFFECT_SNOW3, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW1, ENGO_EFFECT_SNOW2, }; - EnGoEffect* dustEffects = &effect[ENGO_SNOW_EFFECT_COUNT]; s32 i; Vec3f randRelativeToWorldPos; @@ -722,7 +650,9 @@ void EnGo_DrawSnow(EnGoEffect effect[ENGO_SNOW_EFFECT_COUNT], PlayState* play, G u8 isMaterialSet = false; OPEN_DISPS(play->state.gfxCtx); + Gfx_SetupDL25_Opa(play->state.gfxCtx); + for (i = 0; i < ENGO_SNOW_EFFECT_COUNT; i++, effect++) { if (effect->type != effectType) { continue; @@ -1021,7 +951,7 @@ s32 EnGo_UpdateSpringArrivalCutscene(EnGo* this, PlayState* play) { if ((ENGO_GET_TYPE(&this->actor) == ENGO_GRAVEYARD) && (play->csCtx.state != CS_STATE_IDLE) && (this->actor.draw != NULL) && (play->sceneId == SCENE_10YUKIYAMANOMURA2) && (gSaveContext.sceneLayer == 1) && (play->csCtx.scriptIndex == 0)) { - if (this->springArrivalCutsceneActive == false) { + if (!this->springArrivalCutsceneActive) { this->actor.flags &= ~ACTOR_FLAG_1; this->springArrivalCueId = 255; this->springArrivalCutsceneActive = true; diff --git a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c index ea93d617f..e9ba72003 100644 --- a/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c +++ b/src/overlays/actors/ovl_En_Guard_Nuts/z_en_guard_nuts.c @@ -328,7 +328,7 @@ void EnGuardNuts_Update(Actor* thisx, PlayState* play) { } } if ((this->animIndex == WALK_ANIM) && - ((Animation_OnFrame(&this->skelAnime, 1.0f)) || (Animation_OnFrame(&this->skelAnime, 5.0f)))) { + (Animation_OnFrame(&this->skelAnime, 1.0f) || Animation_OnFrame(&this->skelAnime, 5.0f))) { Actor_PlaySfx(&this->actor, NA_SE_EN_NUTS_WALK); } diff --git a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c index f6c90f6b4..02c6d252c 100644 --- a/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c +++ b/src/overlays/actors/ovl_En_Hgo/z_en_hgo.c @@ -317,8 +317,7 @@ s32 EnHgo_HandleCsAction(EnHgo* this, PlayState* play) { } else if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { switch (this->animIndex) { case HGO_ANIM_ASTONISHED: - if ((Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) && - (this->isInCutscene == false)) { + if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame) && !this->isInCutscene) { this->isInCutscene = true; if ((gSaveContext.sceneLayer == 0) && ((play->csCtx.scriptIndex == 2) || (play->csCtx.scriptIndex == 4))) { diff --git a/src/overlays/actors/ovl_En_Ik/z_en_ik.c b/src/overlays/actors/ovl_En_Ik/z_en_ik.c index a116c323a..02e5004f2 100644 --- a/src/overlays/actors/ovl_En_Ik/z_en_ik.c +++ b/src/overlays/actors/ovl_En_Ik/z_en_ik.c @@ -537,7 +537,7 @@ void EnIk_HorizontalDoubleAttack(EnIk* this, PlayState* play) { f32 phi_f2; this->timer++; - if ((Animation_OnFrame(&this->skelAnime, 1.0f)) || (Animation_OnFrame(&this->skelAnime, 13.0f))) { + if (Animation_OnFrame(&this->skelAnime, 1.0f) || Animation_OnFrame(&this->skelAnime, 13.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_IRONNACK_SWING_AXE); } if (((this->skelAnime.curFrame > 1.0f) && (this->skelAnime.curFrame < 9.0f)) || diff --git a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c index 2f8914edc..ab77eb2a3 100644 --- a/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c +++ b/src/overlays/actors/ovl_En_Nwc/z_en_nwc.c @@ -305,8 +305,8 @@ void EnNwc_Follow(EnNwc* this, PlayState* play) { } } - if (this->grog->actor.home.rot.z >= 20 && // all 10 chicks have been found - (this->hasGrownUp & 1) == false) { + if ((this->grog->actor.home.rot.z >= 20) && // all 10 chicks have been found + !(this->hasGrownUp & 1)) { this->transformTimer += 2; if (this->transformTimer >= (s32)(s16)((this->actor.home.rot.z * 0x1E) + 0x1E)) { // it is our turn to transform diff --git a/src/overlays/actors/ovl_En_Osk/z_en_osk.c b/src/overlays/actors/ovl_En_Osk/z_en_osk.c index c1ce34949..9d42424d9 100644 --- a/src/overlays/actors/ovl_En_Osk/z_en_osk.c +++ b/src/overlays/actors/ovl_En_Osk/z_en_osk.c @@ -423,7 +423,7 @@ void func_80BF68E0(EnOsk* this) { break; case 5: - if ((Animation_OnFrame(&this->skelAnime, 6.0f)) || Animation_OnFrame(&this->skelAnime, 11.0f)) { + if (Animation_OnFrame(&this->skelAnime, 6.0f) || Animation_OnFrame(&this->skelAnime, 11.0f)) { Actor_PlaySfx(&this->actor, NA_SE_EN_DEBU_HEAD_UP); } break; diff --git a/src/overlays/actors/ovl_En_Osn/z_en_osn.c b/src/overlays/actors/ovl_En_Osn/z_en_osn.c index 0631922be..f209caa1c 100644 --- a/src/overlays/actors/ovl_En_Osn/z_en_osn.c +++ b/src/overlays/actors/ovl_En_Osn/z_en_osn.c @@ -869,9 +869,9 @@ void EnOsn_HandleCsAction(EnOsn* this, PlayState* play) { } if ((this->animIndex == OSN_ANIM_WALK_AWAY) && - (((Animation_OnFrame(&this->skelAnime, 17.0f))) || (Animation_OnFrame(&this->skelAnime, 27.0f)) || - (Animation_OnFrame(&this->skelAnime, 37.0f)) || (Animation_OnFrame(&this->skelAnime, 47.0f)) || - (Animation_OnFrame(&this->skelAnime, 57.0f)) || (Animation_OnFrame(&this->skelAnime, 67.0f)))) { + (Animation_OnFrame(&this->skelAnime, 17.0f) || Animation_OnFrame(&this->skelAnime, 27.0f) || + Animation_OnFrame(&this->skelAnime, 37.0f) || Animation_OnFrame(&this->skelAnime, 47.0f) || + Animation_OnFrame(&this->skelAnime, 57.0f) || Animation_OnFrame(&this->skelAnime, 67.0f))) { Actor_PlaySfx(&this->actor, NA_SE_EV_OMENYA_WALK); } Cutscene_ActorTranslateAndYaw(&this->actor, play, cueChannel); diff --git a/src/overlays/actors/ovl_En_Pp/z_en_pp.c b/src/overlays/actors/ovl_En_Pp/z_en_pp.c index 48c8cd5ab..2e0aaf0a2 100644 --- a/src/overlays/actors/ovl_En_Pp/z_en_pp.c +++ b/src/overlays/actors/ovl_En_Pp/z_en_pp.c @@ -296,10 +296,6 @@ void EnPp_Init(Actor* thisx, PlayState* play) { this->bodyCollider.elements[0].dim.modelSphere.center.y = -400; this->bodyColliderElements[0].info.bumperFlags |= BUMP_HOOKABLE; this->maskCollider.elements[0].info.toucher.damage = 0x10; - //! FAKE: Needed to fix some regs - //! https://decomp.me/scratch/6Yd1B - if (this->actor.world.rot.z) {} - if (this->actor.world.rot.z) {} } Collider_InitQuad(play, &this->hornCollider); diff --git a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c index 54fe2698d..cd3e1f65f 100644 --- a/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c +++ b/src/overlays/actors/ovl_En_S_Goro/z_en_s_goro.c @@ -1350,7 +1350,7 @@ s32 EnSGoro_UpdateLimb(s16 newRotZ, s16 newRotY, Vec3f* pos, Vec3s* rot, s32 ste Matrix_MultVec3f(&zeroVec, &newPos); Matrix_Get(&curState); - Matrix_MtxFToYXZRot(&curState, &newRot, MTXMODE_NEW); + Matrix_MtxFToYXZRot(&curState, &newRot, false); *pos = newPos; diff --git a/src/overlays/actors/ovl_En_Sb/z_en_sb.c b/src/overlays/actors/ovl_En_Sb/z_en_sb.c index 17ad656a4..38d82ed9a 100644 --- a/src/overlays/actors/ovl_En_Sb/z_en_sb.c +++ b/src/overlays/actors/ovl_En_Sb/z_en_sb.c @@ -337,7 +337,7 @@ void EnSb_UpdateDamage(EnSb* this, PlayState* play) { } if (hitPlayer) { this->unk_252 = 0; - if ((this->actor.draw != NULL) && (this->isDrawn == false)) { + if ((this->actor.draw != NULL) && !this->isDrawn) { this->isDrawn = true; } this->isDead = true; diff --git a/src/overlays/actors/ovl_En_Sw/z_en_sw.c b/src/overlays/actors/ovl_En_Sw/z_en_sw.c index 4937125dc..ca15e4864 100644 --- a/src/overlays/actors/ovl_En_Sw/z_en_sw.c +++ b/src/overlays/actors/ovl_En_Sw/z_en_sw.c @@ -1295,7 +1295,7 @@ void EnSw_Draw(Actor* thisx, PlayState* play) { if (this->unk_410 & 4) { if (ENSW_GET_3(&this->actor)) { - func_800B8050(&this->actor, play, MTXMODE_NEW); + func_800B8050(&this->actor, play, 0); } Gfx_SetupDL25_Opa(play->state.gfxCtx); Matrix_RotateXS(-0x3C72, MTXMODE_APPLY); diff --git a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c index 91ed08140..5711b86fe 100644 --- a/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c +++ b/src/overlays/actors/ovl_En_Syateki_Okuta/z_en_syateki_okuta.c @@ -190,13 +190,12 @@ void func_80A36360(EnSyatekiOkuta* this) { } void func_80A363B4(EnSyatekiOkuta* this, PlayState* play) { - if ((Animation_OnFrame(&this->skelAnime, 2.0f)) || (Animation_OnFrame(&this->skelAnime, 15.0f))) { + if (Animation_OnFrame(&this->skelAnime, 2.0f) || Animation_OnFrame(&this->skelAnime, 15.0f)) { if (func_80A361F4(this)) { return; - } else { - func_80A361B0(this, play); - Actor_PlaySfx(&this->actor, NA_SE_EN_OCTAROCK_JUMP); } + func_80A361B0(this, play); + Actor_PlaySfx(&this->actor, NA_SE_EN_OCTAROCK_JUMP); } if (Animation_OnFrame(&this->skelAnime, this->skelAnime.endFrame)) { diff --git a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c index f4f89d79e..c8ef2638e 100644 --- a/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c +++ b/src/overlays/actors/ovl_En_Wallmas/z_en_wallmas.c @@ -650,7 +650,7 @@ void EnWallmas_Update(Actor* thisx, PlayState* play) { Math_StepToF(&this->drawDmgEffAlpha, 0.0f, 0.05f); this->drawDmgEffScale = (this->drawDmgEffAlpha + 1.0f) * 0.275f; this->drawDmgEffScale = CLAMP_MAX(this->drawDmgEffScale, 0.55f); - } else if (Math_StepToF(&this->drawDmgEffFrozenSteamScale, 0.55f, 0.01375f) == 0) { + } else if (!Math_StepToF(&this->drawDmgEffFrozenSteamScale, 0.55f, 0.01375f)) { func_800B9010(&this->actor, NA_SE_EV_ICE_FREEZE - SFX_FLAG); } } diff --git a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c index 6ce68a0e3..435674539 100644 --- a/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c +++ b/src/overlays/actors/ovl_En_Wiz/z_en_wiz.c @@ -824,7 +824,7 @@ void EnWiz_Dance(EnWiz* this, PlayState* play) { } } - if ((this->animLoopCounter >= 3) && (!this->hasActiveProjectile)) { + if ((this->animLoopCounter >= 3) && !this->hasActiveProjectile) { this->targetPlatformLightAlpha = 0; EnWiz_SetupWindUp(this); } @@ -962,7 +962,7 @@ void EnWiz_Attack(EnWiz* this, PlayState* play) { } if (this->timer == 0) { - if ((Animation_OnFrame(&this->skelAnime, 6.0f)) && (!this->hasActiveProjectile)) { + if (Animation_OnFrame(&this->skelAnime, 6.0f) && !this->hasActiveProjectile) { Player* player = GET_PLAYER(play); Vec3f pos; s32 type = this->type; diff --git a/src/overlays/actors/ovl_En_Yb/z_en_yb.c b/src/overlays/actors/ovl_En_Yb/z_en_yb.c index 9238a166b..94d64903a 100644 --- a/src/overlays/actors/ovl_En_Yb/z_en_yb.c +++ b/src/overlays/actors/ovl_En_Yb/z_en_yb.c @@ -170,31 +170,33 @@ void EnYb_ActorShadowFunc(Actor* thisx, Lights* mapper, PlayState* play) { } void EnYb_ChangeAnim(PlayState* play, EnYb* this, s16 animIndex, u8 animMode, f32 morphFrames) { - if ((animIndex >= 0) && (animIndex < 3)) { - if ((animIndex != this->animIndex) || (animMode != ANIMMODE_LOOP)) { - if (animIndex > 0) { - if (animMode == ANIMMODE_LOOP) { - PlayerAnimation_Change(play, &this->skelAnime, gPlayerAnimations[animIndex - 1], 1.0f, 0.0f, - Animation_GetLastFrame(gPlayerAnimations[animIndex - 1]), ANIMMODE_LOOP, - morphFrames); - } else { - // unused case, (only called once with animMode = ANIMMODE_LOOP) - PlayerAnimation_Change(play, &this->skelAnime, gPlayerAnimations[animIndex - 1], 1.0f, 0.0f, - Animation_GetLastFrame(gPlayerAnimations[animIndex - 1]), ANIMMODE_LOOP, - morphFrames); - } - } else { - // unused case, (only called once with animIndex = 2) - AnimationHeader* animationPtr = gYbUnusedAnimations[animIndex]; + s32 pad; - if (1) {} - - Animation_Change(&this->skelAnime, gYbUnusedAnimations[animIndex], 1.0f, 0.0f, - Animation_GetLastFrame(animationPtr), animMode, morphFrames); - } - this->animIndex = animIndex; - } + if ((animIndex < 0) || (animIndex > 2)) { + return; } + + if ((animIndex == this->animIndex) && (animMode == ANIMMODE_LOOP)) { + return; + } + + if (animIndex > 0) { + if (animMode == ANIMMODE_LOOP) { + PlayerAnimation_Change(play, &this->skelAnime, gPlayerAnimations[animIndex - 1], 1.0f, 0.0f, + Animation_GetLastFrame(gPlayerAnimations[animIndex - 1]), ANIMMODE_LOOP, + morphFrames); + } else { + // unused case, (only called once with animMode = ANIMMODE_LOOP) + PlayerAnimation_Change(play, &this->skelAnime, gPlayerAnimations[animIndex - 1], 1.0f, 0.0f, + Animation_GetLastFrame(gPlayerAnimations[animIndex - 1]), ANIMMODE_LOOP, + morphFrames); + } + } else { + // unused case, (only called once with animIndex = 2) + Animation_Change(&this->skelAnime, gYbUnusedAnimations[animIndex], 1.0f, 0.0f, + Animation_GetLastFrame(gYbUnusedAnimations[animIndex]), animMode, morphFrames); + } + this->animIndex = animIndex; } s32 EnYb_CanTalk(EnYb* this, PlayState* play) { diff --git a/src/overlays/actors/ovl_En_Zos/z_en_zos.c b/src/overlays/actors/ovl_En_Zos/z_en_zos.c index c3192cec1..72c2f9b82 100644 --- a/src/overlays/actors/ovl_En_Zos/z_en_zos.c +++ b/src/overlays/actors/ovl_En_Zos/z_en_zos.c @@ -414,86 +414,85 @@ void func_80BBB8AC(EnZos* this, PlayState* play) { } } - if ((Message_GetState(&play->msgCtx) == TEXT_STATE_5) && Message_ShouldAdvance(play)) { - switch (play->msgCtx.currentTextId) { - case 0x1237: - player->exchangeItemId = PLAYER_IA_NONE; + if ((Message_GetState(&play->msgCtx) != TEXT_STATE_5) || !Message_ShouldAdvance(play)) { + return; + } - case 0x1238: - case 0x123A: - case 0x123B: - case 0x123C: - case 0x123E: - case 0x123F: - Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); - break; + switch (play->msgCtx.currentTextId) { + case 0x1237: + player->exchangeItemId = PLAYER_IA_NONE; + // fallthrough + case 0x1238: + case 0x123A: + case 0x123B: + case 0x123C: + case 0x123E: + case 0x123F: + Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); + break; - case 0x1244: - this->unk_2B6 &= ~0x10; - EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); - Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); - break; + case 0x1244: + this->unk_2B6 &= ~0x10; + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); + Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); + break; - case 0x1232: - case 0x1241: - player->exchangeItemId = PLAYER_IA_NONE; + case 0x1232: + case 0x1241: + player->exchangeItemId = PLAYER_IA_NONE; + // fallthrough + case 0x1239: + case 0x1246: + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); + Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); + break; - case 0x1239: - case 0x1246: - EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_HANDS_ON_HIPS, ANIMMODE_LOOP); - Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); - break; + case 0x1233: + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); + Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); + break; - case 0x1233: - EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_ARMS_OUT, ANIMMODE_LOOP); - Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); - break; + case 0x1245: + case 0x1248: + EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_FOOT_TAP, ANIMMODE_LOOP); + Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); + break; - case 0x1245: - case 0x1248: - EnZos_ChangeAnim(this, EN_ZOS_ANIM_TALK_FOOT_TAP, ANIMMODE_LOOP); - Message_ContinueTextbox(play, play->msgCtx.currentTextId + 1); - break; + case 0x1231: + Message_ContinueTextbox(play, 0xFF); + this->actionFunc = func_80BBB718; + break; - case 0x1231: - Message_ContinueTextbox(play, 0xFF); - this->actionFunc = func_80BBB718; - break; + case 0x1243: + case 0x1249: + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); + Message_CloseTextbox(play); + this->actionFunc = func_80BBBDE0; + this->unk_2B6 |= 1; + break; - case 0x1243: - case 0x1249: - EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); - Message_CloseTextbox(play); - this->actionFunc = func_80BBBDE0; - this->unk_2B6 |= 1; - break; + case 0x1234: + case 0x123D: + case 0x1242: + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); + Actor_ProcessTalkRequest(&this->actor, &play->state); + Message_CloseTextbox(play); + this->actionFunc = func_80BBBDE0; + this->unk_2B6 |= 1; + break; - case 0x1234: - case 0x123D: - case 0x1242: - EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); - Actor_ProcessTalkRequest(&this->actor, &play->state); - Message_CloseTextbox(play); - this->actionFunc = func_80BBBDE0; - this->unk_2B6 |= 1; - break; + case 0x1236: + EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); + Message_CloseTextbox(play); + this->actionFunc = func_80BBBDE0; + this->unk_2B6 |= 1; + break; - case 0x1236: - EnZos_ChangeAnim(this, EN_ZOS_ANIM_HANDS_ON_HIPS, ANIMMODE_LOOP); - Message_CloseTextbox(play); - this->actionFunc = func_80BBBDE0; - this->unk_2B6 |= 1; - break; - - default: - //! FAKE: - if (1) {} - - Message_CloseTextbox(play); - this->actionFunc = func_80BBBDE0; - this->unk_2B6 |= 1; - break; - } + default: + Message_CloseTextbox(play); + this->actionFunc = func_80BBBDE0; + this->unk_2B6 |= 1; + break; } } diff --git a/src/overlays/actors/ovl_En_Zot/z_en_zot.c b/src/overlays/actors/ovl_En_Zot/z_en_zot.c index 1493759a5..98adea93a 100644 --- a/src/overlays/actors/ovl_En_Zot/z_en_zot.c +++ b/src/overlays/actors/ovl_En_Zot/z_en_zot.c @@ -1275,8 +1275,7 @@ void func_80B99160(EnZot* this, PlayState* play) { } void func_80B991E4(EnZot* this, PlayState* play) { - if (1) { - do { } while (0); } + if (1) {} Math_SmoothStepToS(&this->actor.shape.rot.y, this->actor.yawTowardsPlayer, 2, 0x800, 0x100); this->actor.world.rot.y = this->actor.shape.rot.y; diff --git a/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c b/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c index 529d7ec95..608dde82a 100644 --- a/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c +++ b/src/overlays/actors/ovl_Obj_Jgame_Light/z_obj_jgame_light.c @@ -93,7 +93,7 @@ void ObjJgameLight_Destroy(Actor* thisx, PlayState* play) { void func_80C15474(ObjJgameLight* this, PlayState* play) { u8 temp_a1; - if ((this->actor.colChkInfo.health & OBJLUPYGAMELIFT_IGNITE_FIRE) && (this->isOn == false)) { + if ((this->actor.colChkInfo.health & OBJLUPYGAMELIFT_IGNITE_FIRE) && !this->isOn) { if (this->lightRadius < 160) { this->lightRadius += 40; } else { diff --git a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c index 70d6c2619..bf409e7dd 100644 --- a/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c +++ b/src/overlays/actors/ovl_Obj_Switch/z_obj_switch.c @@ -397,7 +397,7 @@ void ObjSwitch_Init(Actor* thisx, PlayState* play) { this->dyna.actor.flags |= 0x80; } if (type == OBJSWITCH_TYPE_EYE) { - if (sIsSegmentTableInit == false) { + if (!sIsSegmentTableInit) { s32 i; s32 j; diff --git a/src/overlays/actors/ovl_player_actor/z_player.c b/src/overlays/actors/ovl_player_actor/z_player.c index 01c732aa2..31d2113ea 100644 --- a/src/overlays/actors/ovl_player_actor/z_player.c +++ b/src/overlays/actors/ovl_player_actor/z_player.c @@ -41,14 +41,14 @@ void Player_Destroy(Actor* thisx, PlayState* play); void Player_Update(Actor* thisx, PlayState* play); void Player_Draw(Actor* thisx, PlayState* play); -s32 Player_GrabPlayer(PlayState* play, Player* player); +s32 Player_GrabPlayer(PlayState* play, Player* this); s32 func_8085B28C(PlayState* play, Player* this, PlayerCsMode csMode); void func_8085B384(Player* this, PlayState* play); s32 Player_InflictDamage(PlayState* play, s32 damage); void Player_TalkWithPlayer(PlayState* play, Actor* actor); void func_8085B74C(PlayState* play); void func_8085B820(PlayState* play, s16 arg1); -PlayerItemAction func_8085B854(PlayState* play, Player* player, ItemId itemId); +PlayerItemAction func_8085B854(PlayState* play, Player* this, ItemId itemId); s32 func_8085B930(PlayState* play, PlayerAnimationHeader* talkAnim, AnimationMode animMode); void Player_UpdateCommon(Player* this, PlayState* play, Input* input); @@ -5495,29 +5495,29 @@ s32 func_80834600(Player* this, PlayState* play) { return false; } else { s32 sp58 = func_808340AC(sPlayerCurrentFloorType); - u32 sp54 = SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); - s32 var_a1 = 0; + u32 isSurfaceWallDamage = SurfaceType_IsWallDamage(&play->colCtx, this->actor.floorPoly, this->actor.floorBgId); + s32 var_a1 = false; s32 var_v1_2; s32 pad48; - if ((sp58 < 0) || - ((sp54 == 0) && (this->transformation == PLAYER_FORM_GORON) && !(this->actor.depthInWater > 0.0f))) { + if ((sp58 < 0) || (!isSurfaceWallDamage && (this->transformation == PLAYER_FORM_GORON) && + !(this->actor.depthInWater > 0.0f))) { var_a1 = (this->actor.wallPoly != NULL) && SurfaceType_IsWallDamage(&play->colCtx, this->actor.wallPoly, this->actor.wallBgId); - if (var_a1 == 0) { + if (!var_a1) { //! FAKE? goto label; } } - var_v1_2 = (var_a1 != 0) ? this->actor.wallBgId : this->actor.floorBgId; + var_v1_2 = var_a1 ? this->actor.wallBgId : this->actor.floorBgId; if (((this->transformation == PLAYER_FORM_DEKU) || (this->transformation == PLAYER_FORM_ZORA)) && - ((sp58 >= 0) && (sp54 == 0) && !(this->stateFlags1 & PLAYER_STATE1_8000000) && + ((sp58 >= 0) && !isSurfaceWallDamage && !(this->stateFlags1 & PLAYER_STATE1_8000000) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && (this->actor.depthInWater < -30.0f))) { func_80834534(play, this); } else { this->actor.colChkInfo.damage = 4; func_80833B18(play, this, (var_v1_2 == BGCHECK_SCENE) ? 0 : 1, 4.0f, 5.0f, - (var_a1 != 0) ? this->actor.wallYaw : this->actor.shape.rot.y, 20); + var_a1 ? this->actor.wallYaw : this->actor.shape.rot.y, 20); return true; } } @@ -7115,7 +7115,7 @@ s32 func_80838A90(Player* this, PlayState* play) { PlayerMask maskId = GET_MASK_FROM_IA(this->itemAction); this->prevMask = this->currentMask; - if (((maskId == this->currentMask) != 0) || (this->itemAction < PLAYER_IA_MASK_GIANT) || + if ((u32)(maskId == this->currentMask) || (this->itemAction < PLAYER_IA_MASK_GIANT) || ((this->itemAction == PLAYER_IA_MASK_GIANT) && (this->transformation != PLAYER_FORM_HUMAN))) { if (maskId == this->currentMask) { this->currentMask = PLAYER_MASK_NONE; @@ -8467,8 +8467,7 @@ void func_8083C85C(Player* this) { } void func_8083C8E8(Player* this, PlayState* play) { - if ((func_800B7128(this) == 0) && (func_8082EF20(this) == 0) && - ((this->linearVelocity > 5.0f) || (D_80862B3C != 0.0f))) { + if (!func_800B7128(this) && !func_8082EF20(this) && ((this->linearVelocity > 5.0f) || (D_80862B3C != 0.0f))) { s16 temp1; s16 temp2; @@ -8511,7 +8510,7 @@ s32 func_8083CBC4(Player* this, f32 arg1, s16 arg2, f32 arg3, f32 arg4, f32 arg5 } if (ABS_ALT(temp_v0) > 0x6000) { - if (Math_StepToF(&this->linearVelocity, 0.0f, arg3) == 0) { + if (!Math_StepToF(&this->linearVelocity, 0.0f, arg3)) { return false; } @@ -9414,7 +9413,7 @@ void func_8083F27C(PlayState* play, Player* this) { } void func_8083F358(Player* this, s32 arg1, PlayState* play) { - PlayerAnimationHeader* var_v0; + PlayerAnimationHeader* climbAnim; f32 var_fv1; s16 var_a1; @@ -9448,18 +9447,18 @@ void func_8083F358(Player* this, s32 arg1, PlayState* play) { } if (var_fv1 < 0.0f) { - var_v0 = &gPlayerAnim_link_normal_climb_down; + climbAnim = &gPlayerAnim_link_normal_climb_down; var_fv1 = -var_fv1; } else { - var_v0 = &gPlayerAnim_link_normal_climb_up; + climbAnim = &gPlayerAnim_link_normal_climb_up; } if (arg1 == 0) { PlayerAnimation_BlendToJoint(play, &this->skelAnime, D_8085BE84[PLAYER_ANIMGROUP_1][this->modelAnimType], - this->unk_B38, var_v0, this->unk_B38, var_fv1, this->blendTableBuffer); + this->unk_B38, climbAnim, this->unk_B38, var_fv1, this->blendTableBuffer); } else { PlayerAnimation_BlendToMorph(play, &this->skelAnime, D_8085BE84[PLAYER_ANIMGROUP_1][this->modelAnimType], - this->unk_B38, var_v0, this->unk_B38, var_fv1, this->blendTableBuffer); + this->unk_B38, climbAnim, this->unk_B38, var_fv1, this->blendTableBuffer); } } @@ -11392,7 +11391,7 @@ void func_80844784(PlayState* play, Player* this) { var_a3 += 0x8000; } - if ((Math_StepToF(&this->actor.speed, var_fv0, 0.35f) != 0) && (var_fv0 == 0.0f)) { + if (Math_StepToF(&this->actor.speed, var_fv0, 0.35f) && (var_fv0 == 0.0f)) { this->actor.world.rot.y = this->currentYaw; } @@ -13853,7 +13852,7 @@ void func_8084B0EC(Player* this, PlayState* play) { func_80832F78(this, &sp2C, &sp2A, 0.0f, play); if (!func_8083A4A4(this, &sp2C, &sp2A, REG(43) / 100.0f)) { - if (((func_80123434(this) != 0) && (sp2C != 0) && (func_8083E514(this, &sp2C, &sp2A, play) <= 0)) || + if ((func_80123434(this) && (sp2C != 0) && (func_8083E514(this, &sp2C, &sp2A, play) <= 0)) || (!func_80123434(this) && (func_8083E404(this, sp2C, sp2A) <= 0))) { func_80836988(this, play); } else { @@ -14007,7 +14006,7 @@ void func_8084B5C0(Player* this, PlayState* play) { this->unk_AE7 = 0; } } else if (!func_8083FE38(this, play)) { - if (func_8083A274(this, play) != 0) { + if (func_8083A274(this, play)) { func_8083FD80(this, play); } else { this->stateFlags1 &= ~PLAYER_STATE1_400000; @@ -14211,7 +14210,7 @@ void func_8084C16C(Player* this, PlayState* play) { s16 sp42; Actor* heldActor; - if (func_80123420(this) != 0) { + if (func_80123420(this)) { this->actor.gravity = -1.2f; } @@ -15020,9 +15019,6 @@ void func_8084E65C(Player* this, PlayState* play) { } void func_8084E724(Player* this, PlayState* play) { - u8 temp_v1; - u32 new_var; - if (this->stateFlags1 & PLAYER_STATE1_8000000) { func_808475B4(this); func_8084748C(this, &this->linearVelocity, 0.0f, this->actor.shape.rot.y); @@ -15036,21 +15032,16 @@ void func_8084E724(Player* this, PlayState* play) { } } - temp_v1 = this->unk_AA5; - new_var = temp_v1; - - if (((temp_v1 == PLAYER_UNKAA5_2) && !(play->actorCtx.flags & ACTORCTX_FLAG_PICTO_BOX_ON)) || - ((temp_v1 != PLAYER_UNKAA5_2) && - (((((((((this->csMode != PLAYER_CSMODE_0) || (new_var == 0)) || (temp_v1 >= PLAYER_UNKAA5_5)) || - (func_8082FB68(this) != 0)) || - (this->targetedActor != NULL)) || - (func_8083868C(play, this) == 0)) || + if (((this->unk_AA5 == PLAYER_UNKAA5_2) && !(play->actorCtx.flags & ACTORCTX_FLAG_PICTO_BOX_ON)) || + ((this->unk_AA5 != PLAYER_UNKAA5_2) && + ((((this->csMode != PLAYER_CSMODE_0) || ((u32)this->unk_AA5 == PLAYER_UNKAA5_0) || + (this->unk_AA5 >= PLAYER_UNKAA5_5) || func_8082FB68(this) || (this->targetedActor != NULL) || + (func_8083868C(play, this) == CAM_MODE_NORMAL) || ((this->unk_AA5 == PLAYER_UNKAA5_3) && - (((((Player_ItemToItemAction(this, Inventory_GetBtnBItem(play)) != this->heldItemAction) && - CHECK_BTN_ANY(sPlayerControlInput->press.button, BTN_B)) || - CHECK_BTN_ANY(sPlayerControlInput->press.button, BTN_R | BTN_A)) || - (func_80123434(this) != 0)) || - (!func_800B7128(this) && (func_8082EF20(this) == 0))))) || + (((Player_ItemToItemAction(this, Inventory_GetBtnBItem(play)) != this->heldItemAction) && + CHECK_BTN_ANY(sPlayerControlInput->press.button, BTN_B)) || + CHECK_BTN_ANY(sPlayerControlInput->press.button, BTN_R | BTN_A) || func_80123434(this) || + (!func_800B7128(this) && !func_8082EF20(this))))) || ((this->unk_AA5 == PLAYER_UNKAA5_1) && CHECK_BTN_ANY(sPlayerControlInput->press.button, BTN_CRIGHT | BTN_CLEFT | BTN_CDOWN | BTN_CUP | BTN_R | BTN_B | BTN_A))) || @@ -18458,7 +18449,7 @@ void func_80857BE8(Player* this, PlayState* play) { if ((this->stateFlags3 & PLAYER_STATE3_80000) && (!CHECK_BTN_ALL(sPlayerControlInput->cur.button, BTN_A) || (gSaveContext.save.saveInfo.playerData.magic == 0) || ((this->unk_AE7 == 4) && (this->unk_B08 < 12.0f)))) { - if (Math_StepToS(&this->unk_B86[1], 0, 1) != 0) { + if (Math_StepToS(&this->unk_B86[1], 0, 1)) { this->stateFlags3 &= ~PLAYER_STATE3_80000; Magic_Reset(play); Player_PlaySfx(this, NA_SE_PL_GORON_BALL_CHARGE_FAILED); @@ -20003,12 +19994,12 @@ void func_8085B170(PlayState* play, Player* this) { Player_AnimSfx_PlayVoice(this, NA_SE_VO_LI_HELD); } -s32 Player_GrabPlayer(PlayState* play, Player* player) { - if (!Player_InBlockingCsMode(play, player) && (player->invincibilityTimer >= 0) && !func_801240DC(player)) { - if (!(player->stateFlags1 & (PLAYER_STATE1_80 | PLAYER_STATE1_2000 | PLAYER_STATE1_4000 | PLAYER_STATE1_100000 | - PLAYER_STATE1_200000 | PLAYER_STATE1_800000))) { - if (!(player->stateFlags2 & PLAYER_STATE2_80) && !(player->stateFlags3 & PLAYER_STATE3_80)) { - func_8085B170(play, player); +s32 Player_GrabPlayer(PlayState* play, Player* this) { + if (!Player_InBlockingCsMode(play, this) && (this->invincibilityTimer >= 0) && !func_801240DC(this)) { + if (!(this->stateFlags1 & (PLAYER_STATE1_80 | PLAYER_STATE1_2000 | PLAYER_STATE1_4000 | PLAYER_STATE1_100000 | + PLAYER_STATE1_200000 | PLAYER_STATE1_800000))) { + if (!(this->stateFlags2 & PLAYER_STATE2_80) && !(this->stateFlags3 & PLAYER_STATE3_80)) { + func_8085B170(play, this); return true; } } @@ -20169,11 +20160,11 @@ void func_8085B820(PlayState* play, s16 arg1) { func_80836D8C(player); } -PlayerItemAction func_8085B854(PlayState* play, Player* player, ItemId itemId) { - PlayerItemAction itemAction = Player_ItemToItemAction(player, itemId); +PlayerItemAction func_8085B854(PlayState* play, Player* this, ItemId itemId) { + PlayerItemAction itemAction = Player_ItemToItemAction(this, itemId); if ((itemAction >= PLAYER_IA_MASK_MIN) && (itemAction <= PLAYER_IA_MASK_MAX) && - (itemAction == GET_IA_FROM_MASK(player->currentMask))) { + (itemAction == GET_IA_FROM_MASK(this->currentMask))) { itemAction = PLAYER_IA_NONE; } @@ -20181,15 +20172,15 @@ PlayerItemAction func_8085B854(PlayState* play, Player* player, ItemId itemId) { return PLAYER_IA_MINUS1; } - player->itemAction = PLAYER_IA_NONE; - player->actionFunc = NULL; - func_80831760(play, player, func_80853A5C, 0); - player->csId = CS_ID_GLOBAL_TALK; - player->itemAction = itemAction; - Player_AnimationPlayOnce(play, player, &gPlayerAnim_link_normal_give_other); - player->stateFlags1 |= (PLAYER_STATE1_40 | PLAYER_STATE1_20000000); - player->getItemDrawIdPlusOne = GID_NONE + 1; - player->exchangeItemId = itemAction; + this->itemAction = PLAYER_IA_NONE; + this->actionFunc = NULL; + func_80831760(play, this, func_80853A5C, 0); + this->csId = CS_ID_GLOBAL_TALK; + this->itemAction = itemAction; + Player_AnimationPlayOnce(play, this, &gPlayerAnim_link_normal_give_other); + this->stateFlags1 |= (PLAYER_STATE1_40 | PLAYER_STATE1_20000000); + this->getItemDrawIdPlusOne = GID_NONE + 1; + this->exchangeItemId = itemAction; return itemAction; } From 47be99fb0cde762466ab8dd7d2471dd278a59040 Mon Sep 17 00:00:00 2001 From: engineer124 <47598039+engineer124@users.noreply.github.com> Date: Sun, 11 Jun 2023 00:31:05 +1000 Subject: [PATCH 10/10] libultra voice OK (#1264) * Import all libultra voice code * Libultra voice cleanup * more cleanup * more cleanup/docs * cleanup variables.h * File: * PR review 1 * adjust comment * more review * More (p) * SWRITEFORMAT * consistent spacing * fix bss --------- Co-authored-by: Derek Hensley Co-authored-by: angie --- include/functions.h | 17 --- include/io/controller.h | 2 + include/os.h | 7 -- include/ultra64.h | 1 + include/ultra64/controller_voice.h | 71 ++++++++++++ include/ultra64/os_voice.h | 42 ++++++++ include/variables.h | 10 +- include/z64audio.h | 5 + spec | 2 - src/code/graph.c | 1 + src/code/z_message.c | 3 +- src/libultra/io/contreaddata.c | 4 +- src/libultra/io/controller.c | 4 +- src/libultra/voice/voicecheckresult.c | 30 +++++- src/libultra/voice/voicecheckword.c | 108 ++++++++++++++++++- src/libultra/voice/voicecleardictionary.c | 52 ++++++++- src/libultra/voice/voicecontread2.c | 75 ++++++++++++- src/libultra/voice/voicecontread36.c | 75 ++++++++++++- src/libultra/voice/voicecontrolgain.c | 42 +++++++- src/libultra/voice/voicecontwrite20.c | 76 ++++++++++++- src/libultra/voice/voicecontwrite4.c | 76 ++++++++++++- src/libultra/voice/voicecrc.c | 2 +- src/libultra/voice/voicegetreaddata.c | 126 +++++++++++++++++++++- src/libultra/voice/voicegetstatus.c | 50 +++++---- src/libultra/voice/voiceinit.c | 70 +++++++++++- src/libultra/voice/voicemaskdictionary.c | 58 +++++++++- src/libultra/voice/voicesetadconverter.c | 71 +++++++++++- src/libultra/voice/voicesetword.c | 70 +++++++++++- src/libultra/voice/voicestartreaddata.c | 50 ++++++++- src/libultra/voice/voicestopread.c | 61 ++++++++++- tools/disasm/variables.txt | 8 +- 31 files changed, 1170 insertions(+), 99 deletions(-) create mode 100644 include/ultra64/controller_voice.h create mode 100644 include/ultra64/os_voice.h diff --git a/include/functions.h b/include/functions.h index 04f6dfb73..6a9ebcf60 100644 --- a/include/functions.h +++ b/include/functions.h @@ -157,7 +157,6 @@ void osStopThread(OSThread* t); s32 osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags); OSIntMask osSetIntMask(OSIntMask im); // OSIntMask osGetIntMask(void); -// void osVoiceSetWord(void); void guScale(Mtx* mtx, f32 x, f32 y, f32 z); f32 sinf(f32 __x); s16 sins(u16 x); @@ -186,7 +185,6 @@ void __osDispatchThread(void); void __osCleanupThread(void); void __osDequeueThread(OSThread** queue, OSThread* t); void osDestroyThread(OSThread* t); -// void __osVoiceCheckResult(void); void bzero(void* begin, s32 length); void __osSiCreateAccessQueue(void); @@ -199,7 +197,6 @@ void osCreateThread(OSThread* t, OSId id, void* entry, void* arg, void* sp, OSPr s32 osContStartReadData(OSMesgQueue* mq); void osContGetReadData(OSContPad* data); void __osPackReadData(void); -// void osVoiceGetReadData(void); uintptr_t osVirtualToPhysical(void* virtualAddress); u32 __osGetSR(void); void __osSetSR(u32 value); @@ -258,11 +255,8 @@ void guLookAtHiliteF(float mf[4][4], LookAt* l, Hilite* h, f32 xEye, f32 yEye, f void guLookAtHilite(Mtx* m, LookAt* l, Hilite* h, f32 xEye, f32 yEye, f32 zEye, f32 xAt, f32 yAt, f32 zAt, f32 xUp, f32 yUp, f32 zUp, f32 xl1, f32 yl1, f32 zl1, f32 xl2, f32 yl2, f32 zl2, s32 hiliteWidth, s32 hiliteHeight); s32 _Printf(PrintCallback pfn, void* arg, const char* fmt, va_list ap); void _Putfld(_Pft* px, va_list* pap, u8 code, u8* ac); -// void osVoiceClearDictionary(void); void osUnmapTLBAll(void); s32 osEPiStartDma(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction); -// void __osVoiceContRead2(void); -u8 __osVoiceContDataCrc(u8* data, size_t numBytes); const char* strchr(const char* s, s32 c); size_t strlen(const char* s); void* memcpy(void* s1, const void* s2, size_t n); @@ -273,7 +267,6 @@ void __osTimerServicesInit(void); void __osTimerInterrupt(void); void __osSetTimerIntr(OSTime tim); OSTime __osInsertTimer(OSTimer* t); -// void __osVoiceContRead36(void); s32 __osSpDeviceBusy(void); s32 __osSiDeviceBusy(void); void guMtxIdent(Mtx* mtx); @@ -291,12 +284,9 @@ OSTime osGetTime(void); void guRotateF(float m[4][4], f32 a, f32 x, f32 y, f32 z); void guRotate(Mtx* m, f32 a, f32 x, f32 y, f32 z); void __osSetGlobalIntMask(u32 mask); -s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* handle, s32 channel); s32 __osContChannelReset(OSMesgQueue* mq, s32 channel); -// void __osVoiceSetADConverter(void); s32 osAiSetFrequency(u32 frequency); s32 __osContRamRead(OSMesgQueue* ctrlrqueue, s32 channel, u16 addr, u8* buffer); -// void __osVoiceContWrite20(void); u8 __osContAddressCrc(u16 addr); u8 __osContDataCrc(u8* data); OSThread* __osGetActiveQueue(void); @@ -321,12 +311,10 @@ s32 osEPiReadIo(OSPiHandle* handle, uintptr_t devAddr, u32* data); void osViSetSpecialFeatures(u32 func); s16 coss(u16 x); void osSetTime(OSTime ticks); -// void osVoiceStopReadData(void); void osViSetEvent(OSMesgQueue* mq, OSMesg m, u32 retraceCount); s32 osPfsIsPlug(OSMesgQueue* mq, u8* pattern); // void __osPfsRequestData(void); // void __osPfsGetInitData(void); -s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 port, u8* status); OSPiHandle* osCartRomInit(void); // void guS2DInitBg(void); s32 __osPfsSelectBank(OSPfs* pfs, u8 bank); @@ -360,7 +348,6 @@ void osCreateViManager(OSPri pri); __OSViContext* __osViGetCurrentContext(void); void osWritebackDCacheAll(void); OSThread* __osGetCurrFaultedThread(void); -// void osVoiceMaskDictionary(void); void guMtxF2L(float mf[4][4], Mtx* m); void osStartThread(OSThread* t); void osViSetYScale(f32 value); @@ -373,12 +360,8 @@ double __ll_to_d(long long s); float __ll_to_f(long long s); double __ull_to_d(unsigned long long u); float __ull_to_f(unsigned long long u); -// void osVoiceCheckWord(void); -// void osVoiceControlGain(void); -// void osVoiceStartReadData(void); u32* osViGetCurrentFramebuffer(void); s32 __osSpSetPc(void* pc); -// void __osVoiceContWrite4(void); void __osGetHWIntrRoutine(s32 idx, OSMesgQueue** outQueue, OSMesg* outMsg); void __osSetHWIntrRoutine(s32 idx, OSMesgQueue* queue, OSMesg msg); u32 __osGetWatchLo(void); diff --git a/include/io/controller.h b/include/io/controller.h index b588b4198..d29c11f1f 100644 --- a/include/io/controller.h +++ b/include/io/controller.h @@ -4,6 +4,8 @@ #include "PR/ultratypes.h" #include "PR/pfs.h" +#define CHNL_ERR(format) (((format).rxsize & CHNL_ERR_MASK) >> 4) + #define SIAccessQueueSize 2 #define BLOCKSIZE 32 #define MAXCONTROLLERS 4 diff --git a/include/os.h b/include/os.h index 6e34bd428..47fed80a0 100644 --- a/include/os.h +++ b/include/os.h @@ -142,11 +142,4 @@ typedef struct { /* 0xC */ u32* text_end; } OSProf; // size = 0x10 -typedef struct { - /* 0x0 */ OSMesgQueue* mq; - /* 0x4 */ s32 port; /* Controller port */ - /* 0x8 */ s32 mode; - /* 0xC */ u8 status; -} OSVoiceHandle; // size = 0x10 - #endif diff --git a/include/ultra64.h b/include/ultra64.h index ad2bc2463..f7baade42 100644 --- a/include/ultra64.h +++ b/include/ultra64.h @@ -6,6 +6,7 @@ #include "unk.h" +#include "ultra64/controller_voice.h" #include "ultra64/hardware.h" #include "ultra64/message.h" #include "ultra64/sptask.h" diff --git a/include/ultra64/controller_voice.h b/include/ultra64/controller_voice.h new file mode 100644 index 000000000..a5480d877 --- /dev/null +++ b/include/ultra64/controller_voice.h @@ -0,0 +1,71 @@ +#ifndef CONTROLLER_VOICE_H +#define CONTROLLER_VOICE_H + +#include "PR/ultratypes.h" +#include "ultra64/os_voice.h" +#include "ultra64/message.h" +#include "libc/stddef.h" + +typedef struct { + /* 0x0 */ u8 dummy; + /* 0x1 */ u8 txsize; + /* 0x2 */ u8 rxsize; + /* 0x3 */ u8 cmd; + /* 0x4 */ u8 addrh; + /* 0x5 */ u8 addrl; + /* 0x6 */ u8 data[2]; + /* 0x8 */ u8 datacrc; +} __OSVoiceRead2Format; // size = 0x9 + +typedef struct { + /* 0x00 */ u8 dummy; + /* 0x01 */ u8 txsize; + /* 0x02 */ u8 rxsize; + /* 0x03 */ u8 cmd; + /* 0x04 */ u8 addrh; + /* 0x05 */ u8 addrl; + /* 0x06 */ u8 data[36]; + /* 0x2A */ u8 datacrc; +} __OSVoiceRead36Format; // size = 0x2B + +typedef struct { + /* 0x0 */ u8 dummy; + /* 0x1 */ u8 txsize; + /* 0x2 */ u8 rxsize; + /* 0x3 */ u8 cmd; + /* 0x4 */ u8 addrh; + /* 0x5 */ u8 addrl; + /* 0x6 */ u8 data[4]; + /* 0xA */ u8 datacrc; +} __OSVoiceWrite4Format; // size = 0xB + +typedef struct { + /* 0x00 */ u8 dummy; + /* 0x01 */ u8 txsize; + /* 0x02 */ u8 rxsize; + /* 0x03 */ u8 cmd; + /* 0x04 */ u8 addrh; + /* 0x05 */ u8 addrl; + /* 0x06 */ u8 data[20]; + /* 0x1A */ u8 datacrc; +} __OSVoiceWrite20Format; // size = 0x1B + +typedef struct { + /* 0x0 */ u8 txsize; + /* 0x1 */ u8 rxsize; + /* 0x2 */ u8 cmd; + /* 0x3 */ u8 data; + /* 0x4 */ u8 scrc; + /* 0x5 */ u8 datacrc; +} __OSVoiceSWriteFormat; // size = 0x6 + +s32 __osVoiceContRead2(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[2]); +s32 __osVoiceContRead36(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[36]); +s32 __osVoiceContWrite4(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[4]); +s32 __osVoiceContWrite20(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[20]); +s32 __osVoiceCheckResult(OSVoiceHandle* hd, u8* status); +s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 channel, u8* status); +s32 __osVoiceSetADConverter(OSMesgQueue* mq, s32 channel, u8 data); +u8 __osVoiceContDataCrc(u8* data, size_t numBytes); + +#endif diff --git a/include/ultra64/os_voice.h b/include/ultra64/os_voice.h new file mode 100644 index 000000000..8452ed45c --- /dev/null +++ b/include/ultra64/os_voice.h @@ -0,0 +1,42 @@ +#ifndef OS_VOICE_H +#define OS_VOICE_H + +#include "PR/ultratypes.h" +#include "ultra64/message.h" + +typedef enum OsVoiceHandleMode { + /* 0 */ VOICE_HANDLE_MODE_0, + /* 1 */ VOICE_HANDLE_MODE_1, + /* 2 */ VOICE_HANDLE_MODE_2, + /* 3 */ VOICE_HANDLE_MODE_3, + /* 4 */ VOICE_HANDLE_MODE_4 +} OsVoiceHandleMode; + +typedef struct { + /* 0x0 */ OSMesgQueue* mq; + /* 0x4 */ s32 channel; // Controller port + /* 0x8 */ OsVoiceHandleMode mode; + /* 0xC */ u8 status; +} OSVoiceHandle; // size = 0x10 + +typedef struct { + /* 0x00 */ u16 warning; // Warning + /* 0x02 */ u16 answerNum; // Candidate number (0~5) + /* 0x04 */ u16 voiceLevel; // Voice input level + /* 0x06 */ u16 voiceRelLevel; // Relative voice level "voice_sn" + /* 0x08 */ u16 voiceTime; // Voice input time + /* 0x0A */ u16 answer[5]; // Candidate word number + /* 0x14 */ u16 distance[5]; // Distance value +} OSVoiceData; // size = 0x20 + +s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* hd, s32 channel); +s32 osVoiceSetWord(OSVoiceHandle* hd, u8* word); +s32 osVoiceCheckWord(u8* word); +s32 osVoiceStartReadData(OSVoiceHandle* hd); +s32 osVoiceStopReadData(OSVoiceHandle* hd); +s32 osVoiceGetReadData(OSVoiceHandle* hd, OSVoiceData* result); +s32 osVoiceClearDictionary(OSVoiceHandle* hd, u8 numWords); +s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, s32 size); +s32 osVoiceControlGain(OSVoiceHandle* hd, s32 analog, s32 digital); + +#endif diff --git a/include/variables.h b/include/variables.h index 108fa5833..7cdf40e31 100644 --- a/include/variables.h +++ b/include/variables.h @@ -72,11 +72,6 @@ extern UNK_TYPE4 D_80097F10; extern char spaces[]; extern char zeroes[]; extern OSTimer* __osTimerList; -// extern UNK_TYPE4 D_80097F80; -extern float D_80097F90; -// extern UNK_TYPE1 D_80097FA0; -// extern UNK_TYPE1 D_80097FA4; -// extern UNK_TYPE1 D_80097FA5; extern s32 __osPfsLastChannel; extern OSViMode osViModeNtscLan1; extern OSViMode osViModeMpalLan1; @@ -89,7 +84,7 @@ extern OSViMode osViModeFpalLan1; // extern u8 udigs[]; // extern OSDevMgr __osViDevMgr; extern u32 __additional_scanline; -// extern UNK_TYPE1 D_80098180; + extern char bootThreadName[]; extern char idleThreadName[]; extern char irqmgrThreadName[]; @@ -308,8 +303,6 @@ extern OSTask tmp_task; extern OSMesg siAccessBuf[1]; extern OSMesgQueue __osSiAccessQueue; -extern UNK_TYPE1 D_8009CF60; -// extern UNK_TYPE4 D_8009CF70; extern OSThread __osThreadSave; extern OSPiHandle D_8009D130; extern OSPiHandle D_8009D1A8; @@ -2516,7 +2509,6 @@ extern s32 D_801FD120; // extern UNK_TYPE1 D_801FD598; // extern UNK_TYPE1 D_801FD5A0; // extern UNK_TYPE1 D_801FD5A4; -extern OSVoiceHandle gVoiceHandle; // extern UNK_TYPE1 D_801FD5C4; // extern UNK_TYPE1 D_801FD5C8; // extern UNK_TYPE1 D_801FD5E8; diff --git a/include/z64audio.h b/include/z64audio.h index 9b077cf1a..c4943c09a 100644 --- a/include/z64audio.h +++ b/include/z64audio.h @@ -1,7 +1,10 @@ #ifndef Z64AUDIO_H #define Z64AUDIO_H +#include "PR/ultratypes.h" +#include "ultra64/os_voice.h" #include "audiothread_cmd.h" +#include "libc/stddef.h" #define NO_LAYER ((SequenceLayer*)(-1)) @@ -1279,4 +1282,6 @@ typedef u32 (*AudioCustomSeqFunction)(s8 value, SequenceChannel* channel); typedef s32 (*AudioCustomReverbFunction)(Sample*, s32, s8, s32); typedef Acmd* (*AudioCustomSynthFunction)(Acmd*, s32, s32); +extern OSVoiceHandle gVoiceHandle; + #endif diff --git a/spec b/spec index e427e6866..b1468144e 100644 --- a/spec +++ b/spec @@ -77,7 +77,6 @@ beginseg include "build/src/libultra/os/createthread.o" include "build/src/libultra/io/contreaddata.o" include "build/src/libultra/voice/voicegetreaddata.o" - include "build/data/boot/voicegetreaddata.bss.o" include "build/src/libultra/os/virtualtophysical.o" include "build/asm/boot/getsr.text.o" include "build/asm/boot/setsr.text.o" @@ -155,7 +154,6 @@ beginseg include "build/src/libultra/gu/rotate.o" include "build/src/libultra/os/setglobalintmask.o" include "build/src/libultra/voice/voiceinit.o" - include "build/data/boot/voiceinit.data.o" include "build/src/libultra/io/contchannelreset.o" include "build/src/libultra/voice/voicesetadconverter.o" include "build/src/libultra/io/aisetfreq.o" diff --git a/src/code/graph.c b/src/code/graph.c index 2e104234e..eca40bbaf 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -1,3 +1,4 @@ +#include "prevent_bss_reordering.h" #include "global.h" #include "buffers.h" #include "system_malloc.h" diff --git a/src/code/z_message.c b/src/code/z_message.c index 38f44d9ec..03fadc9c9 100644 --- a/src/code/z_message.c +++ b/src/code/z_message.c @@ -244,6 +244,7 @@ void Message_LoadChar(PlayState* play, u16 codePointIndex, s32* offset, f32* arg *arg3 = temp2; } +// TODO: SJIS support // Message_LoadRupees JPN ? void func_8014CCB4(PlayState* play, s16* decodedBufPos, s32* offset, f32* arg3) { MessageContext* msgCtx = &play->msgCtx; @@ -259,7 +260,7 @@ void func_8014CCB4(PlayState* play, s16* decodedBufPos, s32* offset, f32* arg3) k += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[t] = 0x8373; t += 1; - Font_LoadChar(play, 0x815C, k); // Ox815C = ― in JISX0213 + Font_LoadChar(play, 0x815C, k); // 0x815C = ― in JISX0213 k += FONT_CHAR_TEX_SIZE; msgCtx->decodedBuffer.wchar[t] = 0x815C; diff --git a/src/libultra/io/contreaddata.c b/src/libultra/io/contreaddata.c index 061c01b0a..27bd0b8ed 100644 --- a/src/libultra/io/contreaddata.c +++ b/src/libultra/io/contreaddata.c @@ -43,11 +43,11 @@ void __osPackReadData() { int i; ptr = (u8*)__osContPifRam.ramarray; - for (i = 0; i < 0xF; i++) { + for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray); i++) { __osContPifRam.ramarray[i] = 0; } - __osContPifRam.status = 1; + __osContPifRam.status = CONT_CMD_READ_BUTTON; readformat.dummy = 255; readformat.txsize = 1; readformat.rxsize = 4; diff --git a/src/libultra/io/controller.c b/src/libultra/io/controller.c index 245183280..19be9281a 100644 --- a/src/libultra/io/controller.c +++ b/src/libultra/io/controller.c @@ -74,11 +74,11 @@ void __osPackRequestData(u8 poll) { __OSContRequestHeader requestHeader; s32 i; - for (i = 0; i < 0xF; i++) { + for (i = 0; i < ARRAY_COUNT(__osContPifRam.ramarray); i++) { __osContPifRam.ramarray[i] = 0; } - __osContPifRam.status = 1; + __osContPifRam.status = CONT_CMD_READ_BUTTON; ptr = (u8*)__osContPifRam.ramarray; requestHeader.align = 255; requestHeader.txsize = 1; diff --git a/src/libultra/voice/voicecheckresult.c b/src/libultra/voice/voicecheckresult.c index 44fb69be5..7d1e5c0a5 100644 --- a/src/libultra/voice/voicecheckresult.c +++ b/src/libultra/voice/voicecheckresult.c @@ -1,3 +1,29 @@ -#include "global.h" +/** + * File: voicecheckresult.c + */ +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecheckresult/__osVoiceCheckResult.s") +s32 __osVoiceCheckResult(OSVoiceHandle* hd, u8* status) { + s32 errorCode = __osVoiceGetStatus(hd->mq, hd->channel, status); + u8 data[2]; + + if (errorCode == 0) { + if (*status & 1) { + errorCode = CONT_ERR_VOICE_NO_RESPONSE; + } else { + errorCode = __osVoiceContRead2(hd->mq, hd->channel, 0, data); + if (errorCode == 0) { + hd->status = data[0] & 7; + + if (data[0] & 0x40) { + errorCode = CONT_ERR_VOICE_NO_RESPONSE; + } else { + errorCode = data[1] << 8; + } + } + } + } + return errorCode; +} diff --git a/src/libultra/voice/voicecheckword.c b/src/libultra/voice/voicecheckword.c index 8b5ac0dfb..1a2695b51 100644 --- a/src/libultra/voice/voicecheckword.c +++ b/src/libultra/voice/voicecheckword.c @@ -1,3 +1,107 @@ -#include "global.h" +/** + * File: voicecheckwork.c + * + * Checks whether or not a word can be registered in the dictionary + */ +#include "io/controller.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecheckword/osVoiceCheckWord.s") +// TODO: SJIS support +s32 osVoiceCheckWord(u8* word) { + s32 i; + s32 errorCode = 0; + u16 curSyllable; + u16 prevSyllable = 0; + + for (i = 0; word[i] != 0; i += 2) { + curSyllable = (word[i] << 8) + word[i + 1]; + if (((curSyllable != 0x815B) && (curSyllable < 0x829F)) || + ((curSyllable >= 0x82F2) && (curSyllable < 0x8340)) || (curSyllable == 0x837F) || (curSyllable >= 0x8397)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if ((i == 0) && ((curSyllable == 0x815B) || (curSyllable == 0x82F1) || (curSyllable == 0x82C1) || + (curSyllable == 0x82EC) || (curSyllable == 0x8393) || (curSyllable == 0x8362) || + (curSyllable == 0x838E) || (curSyllable == 0x8395) || (curSyllable == 0x8396))) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x829F) || (curSyllable == 0x8340)) && (prevSyllable != 0x82D3) && + (prevSyllable != 0x8374) && (prevSyllable != 0x8394)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x82A1) || (curSyllable == 0x8342)) && (prevSyllable != 0x82A4) && + (prevSyllable != 0x82C4) && (prevSyllable != 0x82C5) && (prevSyllable != 0x82D3) && + (prevSyllable != 0x8345) && (prevSyllable != 0x8365) && (prevSyllable != 0x8366) && + (prevSyllable != 0x8374) && (prevSyllable != 0x8394)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x82A3) || (curSyllable == 0x8344)) && (prevSyllable != 0x82C6) && + (prevSyllable != 0x82C7) && (prevSyllable != 0x82D3) && (prevSyllable != 0x8367) && + (prevSyllable != 0x8368) && (prevSyllable != 0x8374) && (prevSyllable != 0x8394)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x82A5) || (curSyllable == 0x8346)) && (prevSyllable != 0x82A4) && + (prevSyllable != 0x82B5) && (prevSyllable != 0x82B6) && (prevSyllable != 0x82BF) && + (prevSyllable != 0x82C0) && (prevSyllable != 0x82C2) && (prevSyllable != 0x82D3) && + (prevSyllable != 0x8345) && (prevSyllable != 0x8356) && (prevSyllable != 0x8357) && + (prevSyllable != 0x8360) && (prevSyllable != 0x8361) && (prevSyllable != 0x8363) && + (prevSyllable != 0x8374) && (prevSyllable != 0x8394)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x82A7) || (curSyllable == 0x8348)) && (prevSyllable != 0x82A4) && + (prevSyllable != 0x82D3) && (prevSyllable != 0x8345) && (prevSyllable != 0x8374) && + (prevSyllable != 0x8394)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x82E1) || (curSyllable == 0x82E3) || (curSyllable == 0x82E5) || + (curSyllable == 0x8383) || (curSyllable == 0x8385) || (curSyllable == 0x8387)) && + (prevSyllable != 0x82AB) && (prevSyllable != 0x82B5) && (prevSyllable != 0x82BF) && + (prevSyllable != 0x82C9) && (prevSyllable != 0x82D0) && (prevSyllable != 0x82DD) && + (prevSyllable != 0x82E8) && (prevSyllable != 0x82AC) && (prevSyllable != 0x82B6) && + (prevSyllable != 0x82C0) && (prevSyllable != 0x82D1) && (prevSyllable != 0x82D2) && + (prevSyllable != 0x834C) && (prevSyllable != 0x8356) && (prevSyllable != 0x8360) && + (prevSyllable != 0x836A) && (prevSyllable != 0x8371) && (prevSyllable != 0x837E) && + (prevSyllable != 0x838A) && (prevSyllable != 0x834D) && (prevSyllable != 0x8357) && + (prevSyllable != 0x8361) && (prevSyllable != 0x8372) && (prevSyllable != 0x8373) && + (prevSyllable != 0x8394)) { + errorCode = CONT_ERR_VOICE_WORD; + } else if ((curSyllable == 0x815B) && ((prevSyllable == 0x82F1) || (prevSyllable == 0x82C1) || + (prevSyllable == 0x8393) || (prevSyllable == 0x8362))) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((curSyllable == 0x82F1) || (curSyllable == 0x8393)) && + ((prevSyllable == 0x82F1) || (prevSyllable == 0x8393))) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (((prevSyllable == 0x82C1) || (prevSyllable == 0x8362)) && + ((curSyllable == 0x815B) || (curSyllable == 0x82A0) || (curSyllable == 0x82A2) || + (curSyllable == 0x82A4) || (curSyllable == 0x82A6) || (curSyllable == 0x82A8) || + (curSyllable == 0x82C8) || (curSyllable == 0x82C9) || (curSyllable == 0x82CA) || + (curSyllable == 0x82CB) || (curSyllable == 0x82CC) || (curSyllable == 0x82DC) || + (curSyllable == 0x82DD) || (curSyllable == 0x82DE) || (curSyllable == 0x82DF) || + (curSyllable == 0x82E0) || (curSyllable == 0x82E2) || (curSyllable == 0x82E4) || + (curSyllable == 0x82E6) || (curSyllable == 0x82E7) || (curSyllable == 0x82E8) || + (curSyllable == 0x82E9) || (curSyllable == 0x82EA) || (curSyllable == 0x82EB) || + (curSyllable == 0x82ED) || (curSyllable == 0x82EE) || (curSyllable == 0x82EF) || + (curSyllable == 0x82F0) || (curSyllable == 0x82F1) || (curSyllable == 0x829F) || + (curSyllable == 0x82A1) || (curSyllable == 0x82A3) || (curSyllable == 0x82A5) || + (curSyllable == 0x82A7) || (curSyllable == 0x82E1) || (curSyllable == 0x82E3) || + (curSyllable == 0x82E5) || (curSyllable == 0x82C1) || (curSyllable == 0x82EC) || + (curSyllable == 0x8341) || (curSyllable == 0x8343) || (curSyllable == 0x8345) || + (curSyllable == 0x8347) || (curSyllable == 0x8349) || (curSyllable == 0x8369) || + (curSyllable == 0x836A) || (curSyllable == 0x836B) || (curSyllable == 0x836C) || + (curSyllable == 0x836D) || (curSyllable == 0x837D) || (curSyllable == 0x837E) || + (curSyllable == 0x8380) || (curSyllable == 0x8381) || (curSyllable == 0x8382) || + (curSyllable == 0x8384) || (curSyllable == 0x8386) || (curSyllable == 0x8388) || + (curSyllable == 0x8389) || (curSyllable == 0x838A) || (curSyllable == 0x838B) || + (curSyllable == 0x838C) || (curSyllable == 0x838D) || (curSyllable == 0x838F) || + (curSyllable == 0x8390) || (curSyllable == 0x8391) || (curSyllable == 0x8392) || + (curSyllable == 0x8393) || (curSyllable == 0x8340) || (curSyllable == 0x8342) || + (curSyllable == 0x8344) || (curSyllable == 0x8346) || (curSyllable == 0x8348) || + (curSyllable == 0x8383) || (curSyllable == 0x8385) || (curSyllable == 0x8387) || + (curSyllable == 0x8362) || (curSyllable == 0x838E))) { + errorCode = CONT_ERR_VOICE_WORD; + } + + if (errorCode != 0) { + return errorCode; + } + + prevSyllable = curSyllable; + } + + if ((curSyllable == 0x82C1) || (curSyllable == 0x8362)) { + errorCode = CONT_ERR_VOICE_WORD; + } + + return errorCode; +} diff --git a/src/libultra/voice/voicecleardictionary.c b/src/libultra/voice/voicecleardictionary.c index 29766bb2a..e474bc2fd 100644 --- a/src/libultra/voice/voicecleardictionary.c +++ b/src/libultra/voice/voicecleardictionary.c @@ -1,3 +1,51 @@ -#include "global.h" +/** + * File: voicecleardictionary.c + * + * Initializes Voice Recognition System word registration dictionary. + * + * The dictionary is initialized so that the specified "numWords" can be + * registered in the dictionary. 1-255 words can be registered in the dictionary. + * + * Words cannot be registered with the osVoiceSetWord before the dictionary + * is initialized with the osVoiceClearDictionary function + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecleardictionary/osVoiceClearDictionary.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" + +s32 osVoiceClearDictionary(OSVoiceHandle* hd, u8 numWords) { + s32 errorCode; + u8 status; + u8 data[4]; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + /** + * data[0] = 2 + * data[1] = 0 + * data[2] = numWords + * data[3] = 0 + */ + *(u32*)data = 0x2000000; + data[2] = numWords; + + errorCode = __osVoiceContWrite4(hd->mq, hd->channel, 0, data); + if (errorCode != 0) { + return errorCode; + } + + errorCode = __osVoiceCheckResult(hd, &status); + if (errorCode & 0xFF00) { + errorCode = CONT_ERR_INVALID; + } + + return errorCode; +} diff --git a/src/libultra/voice/voicecontread2.c b/src/libultra/voice/voicecontread2.c index 38350ee5f..1477e570b 100644 --- a/src/libultra/voice/voicecontread2.c +++ b/src/libultra/voice/voicecontread2.c @@ -1,3 +1,74 @@ -#include "global.h" +/** + * File: voicecontread2.c + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecontread2/__osVoiceContRead2.s") +#include "ultra64/controller_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "variables.h" + +#define READ2FORMAT(ptr) ((__OSVoiceRead2Format*)(ptr)) + +s32 __osVoiceContRead2(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[2]) { + s32 errorCode; + u8 status; + u8* ptr; + s32 retryCount = 2; + s32 i; + + __osSiGetAccess(); + + do { + ptr = (u8*)&__osPfsPifRam.ramarray; + + if ((__osContLastPoll != CONT_CMD_READ2_VOICE) || (channel != __osPfsLastChannel)) { + __osContLastPoll = CONT_CMD_READ2_VOICE; + __osPfsLastChannel = channel; + + for (i = 0; i < channel; i++, *ptr++ = 0) {} + + __osPfsPifRam.status = CONT_CMD_EXE; + + READ2FORMAT(ptr)->dummy = CONT_CMD_NOP; + READ2FORMAT(ptr)->txsize = CONT_CMD_READ2_VOICE_TX; + READ2FORMAT(ptr)->rxsize = CONT_CMD_READ2_VOICE_RX; + READ2FORMAT(ptr)->cmd = CONT_CMD_READ2_VOICE; + READ2FORMAT(ptr)->datacrc = 0xFF; + + ptr[sizeof(__OSVoiceRead2Format)] = CONT_CMD_END; + } else { + ptr += channel; + } + + READ2FORMAT(ptr)->addrh = address >> 3; + READ2FORMAT(ptr)->addrl = (address << 5) | __osContAddressCrc(address); + + __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + __osSiRawStartDma(OS_READ, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + errorCode = CHNL_ERR(*READ2FORMAT(ptr)); + + if (errorCode == 0) { + if (__osVoiceContDataCrc(READ2FORMAT(ptr)->data, ARRAY_COUNT(READ2FORMAT(ptr)->data)) != + READ2FORMAT(ptr)->datacrc) { + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + break; + } + + errorCode = CONT_ERR_CONTRFAIL; + } else { + bcopy(READ2FORMAT(ptr)->data, dst, ARRAY_COUNT(READ2FORMAT(ptr)->data)); + } + } else { + errorCode = CONT_ERR_NO_CONTROLLER; + } + + } while ((errorCode == CONT_ERR_CONTRFAIL) && (retryCount-- >= 0)); + + __osSiRelAccess(); + + return errorCode; +} diff --git a/src/libultra/voice/voicecontread36.c b/src/libultra/voice/voicecontread36.c index 38f3fe2f0..83d0fdf2e 100644 --- a/src/libultra/voice/voicecontread36.c +++ b/src/libultra/voice/voicecontread36.c @@ -1,3 +1,74 @@ -#include "global.h" +/** + * File: voicecontread36.c + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecontread36/__osVoiceContRead36.s") +#include "ultra64/controller_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "variables.h" + +#define READ36FORMAT(ptr) ((__OSVoiceRead36Format*)(ptr)) + +s32 __osVoiceContRead36(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[36]) { + s32 errorCode; + u8 status; + u8* ptr; + s32 retryCount = 2; + s32 i; + + __osSiGetAccess(); + + do { + ptr = (u8*)&__osPfsPifRam.ramarray; + + if ((__osContLastPoll != CONT_CMD_READ36_VOICE) || (channel != __osPfsLastChannel)) { + __osContLastPoll = CONT_CMD_READ36_VOICE; + __osPfsLastChannel = channel; + + for (i = 0; i < channel; i++, *ptr++ = 0) {} + + __osPfsPifRam.status = CONT_CMD_EXE; + + READ36FORMAT(ptr)->dummy = CONT_CMD_NOP; + READ36FORMAT(ptr)->txsize = CONT_CMD_READ36_VOICE_TX; + READ36FORMAT(ptr)->rxsize = CONT_CMD_READ36_VOICE_RX; + READ36FORMAT(ptr)->cmd = CONT_CMD_READ36_VOICE; + READ36FORMAT(ptr)->datacrc = 0xFF; + + ptr[sizeof(__OSVoiceRead36Format)] = CONT_CMD_END; + } else { + ptr += channel; + } + + READ36FORMAT(ptr)->addrh = address >> 3; + READ36FORMAT(ptr)->addrl = (address << 5) | __osContAddressCrc(address); + + __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + __osSiRawStartDma(OS_READ, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + errorCode = CHNL_ERR(*READ36FORMAT(ptr)); + + if (errorCode == 0) { + if (__osVoiceContDataCrc(READ36FORMAT(ptr)->data, ARRAY_COUNT(READ36FORMAT(ptr)->data)) != + READ36FORMAT(ptr)->datacrc) { + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + break; + } + + errorCode = CONT_ERR_CONTRFAIL; + } else { + bcopy(READ36FORMAT(ptr)->data, dst, ARRAY_COUNT(READ36FORMAT(ptr)->data)); + } + } else { + errorCode = CONT_ERR_NO_CONTROLLER; + } + + } while ((errorCode == CONT_ERR_CONTRFAIL) && (retryCount-- >= 0)); + + __osSiRelAccess(); + + return errorCode; +} diff --git a/src/libultra/voice/voicecontrolgain.c b/src/libultra/voice/voicecontrolgain.c index d7ec8ef69..61cccde70 100644 --- a/src/libultra/voice/voicecontrolgain.c +++ b/src/libultra/voice/voicecontrolgain.c @@ -1,5 +1,41 @@ -#include "global.h" +/** + * File: voicecontrolgain.c + * + * Adjusts the input gain of the Voice Recognition System + */ -u8 D_80098180[] = { 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0 }; +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" +#include "macros.h" -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecontrolgain/osVoiceControlGain.s") +u8 sDigitalTable[] = { 0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0 }; + +s32 osVoiceControlGain(OSVoiceHandle* hd, s32 analog, s32 digital) { + s32 errorCode; + u8 cmd; + + if (analog == 0) { + cmd = 0x18; + } else { + cmd = 0x98; + } + + errorCode = __osVoiceSetADConverter(hd->mq, hd->channel, cmd); + if (errorCode != 0) { + return errorCode; + } + + if ((digital < ARRAY_COUNT(sDigitalTable)) && (digital >= 0)) { + cmd = sDigitalTable[digital] + 2; + } else { + return CONT_ERR_INVALID; + } + + errorCode = __osVoiceSetADConverter(hd->mq, hd->channel, cmd); + if (errorCode != 0) { + return errorCode; + } + + return errorCode; +} diff --git a/src/libultra/voice/voicecontwrite20.c b/src/libultra/voice/voicecontwrite20.c index 5ca3560ed..cc3af385e 100644 --- a/src/libultra/voice/voicecontwrite20.c +++ b/src/libultra/voice/voicecontwrite20.c @@ -1,3 +1,75 @@ -#include "global.h" +/** + * File: voicecontwrite20.c + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecontwrite20/__osVoiceContWrite20.s") +#include "ultra64/controller_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "variables.h" + +#define WRITE20FORMAT(ptr) ((__OSVoiceWrite20Format*)(ptr)) + +s32 __osVoiceContWrite20(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[20]) { + s32 errorCode; + u8 status; + u8* ptr; + s32 retryCount = 2; + s32 i; + u8 crc; + + __osSiGetAccess(); + + do { + ptr = (u8*)&__osPfsPifRam.ramarray; + + if ((__osContLastPoll != CONT_CMD_WRITE20_VOICE) || (channel != __osPfsLastChannel)) { + __osContLastPoll = CONT_CMD_WRITE20_VOICE; + __osPfsLastChannel = channel; + + for (i = 0; i < channel; i++, *ptr++ = 0) {} + + __osPfsPifRam.status = CONT_CMD_EXE; + + WRITE20FORMAT(ptr)->dummy = CONT_CMD_NOP; + WRITE20FORMAT(ptr)->txsize = CONT_CMD_WRITE20_VOICE_TX; + WRITE20FORMAT(ptr)->rxsize = CONT_CMD_WRITE20_VOICE_RX; + WRITE20FORMAT(ptr)->cmd = CONT_CMD_WRITE20_VOICE; + WRITE20FORMAT(ptr)->datacrc = 0xFF; + + ptr[sizeof(__OSVoiceWrite20Format)] = CONT_CMD_END; + } else { + ptr += channel; + } + + WRITE20FORMAT(ptr)->addrh = address >> 3; + WRITE20FORMAT(ptr)->addrl = (address << 5) | __osContAddressCrc(address); + + bcopy(dst, WRITE20FORMAT(ptr)->data, ARRAY_COUNT(WRITE20FORMAT(ptr)->data)); + + __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); + crc = __osVoiceContDataCrc(dst, ARRAY_COUNT(WRITE20FORMAT(ptr)->data)); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + __osSiRawStartDma(OS_READ, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + errorCode = CHNL_ERR(*WRITE20FORMAT(ptr)); + + if (errorCode == 0) { + if (crc != WRITE20FORMAT(ptr)->datacrc) { + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + break; + } + + errorCode = CONT_ERR_CONTRFAIL; + } + } else { + errorCode = CONT_ERR_NO_CONTROLLER; + } + + } while ((errorCode == CONT_ERR_CONTRFAIL) && (retryCount-- >= 0)); + + __osSiRelAccess(); + + return errorCode; +} diff --git a/src/libultra/voice/voicecontwrite4.c b/src/libultra/voice/voicecontwrite4.c index c28e2d762..06239219a 100644 --- a/src/libultra/voice/voicecontwrite4.c +++ b/src/libultra/voice/voicecontwrite4.c @@ -1,3 +1,75 @@ -#include "global.h" +/** + * File: voicecontwrite4.c + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicecontwrite4/__osVoiceContWrite4.s") +#include "ultra64/controller_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "variables.h" + +#define WRITE4FORMAT(ptr) ((__OSVoiceWrite4Format*)(ptr)) + +s32 __osVoiceContWrite4(OSMesgQueue* mq, s32 channel, u16 address, u8 dst[4]) { + s32 errorCode; + u8 status; + u8* ptr; + s32 retryCount = 2; + s32 i; + u8 crc; + + __osSiGetAccess(); + + do { + ptr = (u8*)&__osPfsPifRam.ramarray; + + if ((__osContLastPoll != CONT_CMD_WRITE4_VOICE) || (channel != __osPfsLastChannel)) { + __osContLastPoll = CONT_CMD_WRITE4_VOICE; + __osPfsLastChannel = channel; + + for (i = 0; i < channel; i++, *ptr++ = 0) {} + + __osPfsPifRam.status = CONT_CMD_EXE; + + WRITE4FORMAT(ptr)->dummy = CONT_CMD_NOP; + WRITE4FORMAT(ptr)->txsize = CONT_CMD_WRITE4_VOICE_TX; + WRITE4FORMAT(ptr)->rxsize = CONT_CMD_WRITE4_VOICE_RX; + WRITE4FORMAT(ptr)->cmd = CONT_CMD_WRITE4_VOICE; + WRITE4FORMAT(ptr)->datacrc = 0xFF; + + ptr[sizeof(__OSVoiceWrite4Format)] = CONT_CMD_END; + } else { + ptr += channel; + } + + WRITE4FORMAT(ptr)->addrh = address >> 3; + WRITE4FORMAT(ptr)->addrl = (address << 5) | __osContAddressCrc(address); + + bcopy(dst, WRITE4FORMAT(ptr)->data, ARRAY_COUNT(WRITE4FORMAT(ptr)->data)); + + __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); + crc = __osVoiceContDataCrc(dst, ARRAY_COUNT(WRITE4FORMAT(ptr)->data)); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + __osSiRawStartDma(OS_READ, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + errorCode = CHNL_ERR(*WRITE4FORMAT(ptr)); + + if (errorCode == 0) { + if (crc != WRITE4FORMAT(ptr)->datacrc) { + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + break; + } + + errorCode = CONT_ERR_CONTRFAIL; + } + } else { + errorCode = CONT_ERR_NO_CONTROLLER; + } + + } while ((errorCode == CONT_ERR_CONTRFAIL) && (retryCount-- >= 0)); + + __osSiRelAccess(); + + return errorCode; +} diff --git a/src/libultra/voice/voicecrc.c b/src/libultra/voice/voicecrc.c index 35b7b8656..36ffc4373 100644 --- a/src/libultra/voice/voicecrc.c +++ b/src/libultra/voice/voicecrc.c @@ -4,7 +4,7 @@ * * For general information about CRC, see the crc.c file (that's a lot of c's!). */ -#include "global.h" +#include "libc/stddef.h" #define VOICE_CRC_LENGTH 8 #define VOICE_CRC_GENERATOR 0x85 diff --git a/src/libultra/voice/voicegetreaddata.c b/src/libultra/voice/voicegetreaddata.c index 5940a1f8b..d271f71c7 100644 --- a/src/libultra/voice/voicegetreaddata.c +++ b/src/libultra/voice/voicegetreaddata.c @@ -1,3 +1,125 @@ -#include "global.h" +/** + * File: voicegetreaddata.c + * + * Gets voice recognition result from the Voice Recognition System + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicegetreaddata/osVoiceGetReadData.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" + +s32 osVoiceGetReadData(OSVoiceHandle* hd, OSVoiceData* result) { + static u8 sHandleStatus; + s32 errorCode; + s32 i; + u8 status; + u8 data[36]; + + switch (hd->mode) { + case VOICE_HANDLE_MODE_1: + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 1) { + return CONT_ERR_NOT_READY; + } + + errorCode = __osVoiceContRead2(hd->mq, hd->channel, 0, data); + if (errorCode != 0) { + return errorCode; + } + + sHandleStatus = data[0] & 7; + hd->status = sHandleStatus; + if ((sHandleStatus != 0) && (sHandleStatus != 7)) { + return CONT_ERR_NOT_READY; + } + // fallthrough + case VOICE_HANDLE_MODE_2: + hd->mode = VOICE_HANDLE_MODE_2; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + *(u32*)data = 0x600; + errorCode = __osVoiceContWrite4(hd->mq, hd->channel, 0, data); + if (errorCode != 0) { + return errorCode; + } + // fallthrough + case VOICE_HANDLE_MODE_3: + hd->mode = VOICE_HANDLE_MODE_3; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 1) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + errorCode = __osVoiceContRead36(hd->mq, hd->channel, 0, data); + if (errorCode != 0) { + return errorCode; + } + + result->warning = data[4] + (data[5] << 8); + result->answerNum = data[6]; + result->voiceLevel = data[8] + (data[9] << 8); + result->voiceRelLevel = data[10] + (data[11] << 8); + result->voiceTime = data[12] + (data[13] << 8); + + for (i = 0; i < 5; i++) { + result->answer[i] = data[14 + (i << 2)] + (data[15 + (i << 2)] << 8); + result->distance[i] = data[16 + (i << 2)] + (data[17 + (i << 2)] << 8); + } + + if (result->answer[0] == 0x7FFF) { + result->answerNum = 0; + } + + hd->status = data[34] & 7; + if ((sHandleStatus == 0) || (hd->status == 0)) { + break; + } + // fallthrough + case VOICE_HANDLE_MODE_4: + hd->mode = VOICE_HANDLE_MODE_4; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 1) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + errorCode = __osVoiceContRead2(hd->mq, hd->channel, 0, data); + if (errorCode != 0) { + return errorCode; + } + + hd->status = data[0] & 7; + if (data[0] & 7) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + break; + + default: + return CONT_ERR_INVALID; + } + + hd->mode = VOICE_HANDLE_MODE_0; + return errorCode; +} diff --git a/src/libultra/voice/voicegetstatus.c b/src/libultra/voice/voicegetstatus.c index 3840ec62b..444ae6233 100644 --- a/src/libultra/voice/voicegetstatus.c +++ b/src/libultra/voice/voicegetstatus.c @@ -1,56 +1,62 @@ -#include "global.h" -#include "io/controller.h" +/** + * File: voicegetstatus.c + */ -s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 port, u8* status) { +#include "ultra64/controller_voice.h" +#include "io/controller.h" +#include "functions.h" + +s32 __osVoiceGetStatus(OSMesgQueue* mq, s32 channel, u8* status) { __OSContRequestHeaderAligned header; - s32 ret = 0; + s32 errorCode = 0; s32 i; - u8* ptr = (u8*)&__osContPifRam; - s32 var = 2; + u8* ptr = (u8*)&__osContPifRam.ramarray; + s32 retryCount = 2; __osSiGetAccess(); do { - if (ret != CONT_ERR_CONTRFAIL) { + if (errorCode != CONT_ERR_CONTRFAIL) { __osContPifRam.status = CONT_CMD_READ_BUTTON; - for (i = 0; i < port; i++, *ptr++ = 0) {} + for (i = 0; i < channel; i++, *ptr++ = 0) {} - *ptr++ = 1; - *ptr++ = 3; + *ptr++ = CONT_CMD_REQUEST_STATUS_TX; + *ptr++ = CONT_CMD_REQUEST_STATUS_RX; *ptr = CONT_CMD_REQUEST_STATUS; ptr += 4; *ptr = CONT_CMD_END; __osContLastPoll = CONT_CMD_END; - ret = __osSiRawStartDma(OS_WRITE, &__osContPifRam); + errorCode = __osSiRawStartDma(OS_WRITE, &__osContPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); } - ret = __osSiRawStartDma(OS_READ, &__osContPifRam); + errorCode = __osSiRawStartDma(OS_READ, &__osContPifRam); osRecvMesg(mq, NULL, OS_MESG_BLOCK); - ptr = (u8*)&__osContPifRam + port; + ptr = (u8*)&__osContPifRam.ramarray + channel; header = *((__OSContRequestHeaderAligned*)ptr); - ret = (u8)((header.rxsize & 0xC0) >> 4); + errorCode = (u8)CHNL_ERR(header); *status = header.status; - if (ret == 0) { + if (errorCode == 0) { if ((header.typeh == 0) && (header.typel == 1)) { if (header.status & 4) { - ret = CONT_ERR_CONTRFAIL; + errorCode = CONT_ERR_CONTRFAIL; } } else { - ret = CONT_ERR_DEVICE; + errorCode = CONT_ERR_DEVICE; } - } else if (ret & CONT_NO_RESPONSE_ERROR) { - ret = CONT_ERR_NO_CONTROLLER; + } else if (errorCode & CONT_NO_RESPONSE_ERROR) { + errorCode = CONT_ERR_NO_CONTROLLER; } else { - ret = CONT_ERR_CONTRFAIL; + errorCode = CONT_ERR_CONTRFAIL; } - } while ((ret == CONT_ERR_CONTRFAIL) && (var-- >= 0)); + } while ((errorCode == CONT_ERR_CONTRFAIL) && (retryCount-- >= 0)); __osSiRelAccess(); - return (ret); + + return errorCode; } diff --git a/src/libultra/voice/voiceinit.c b/src/libultra/voice/voiceinit.c index 920bc4818..2a777edaf 100644 --- a/src/libultra/voice/voiceinit.c +++ b/src/libultra/voice/voiceinit.c @@ -1,3 +1,69 @@ -#include "global.h" +/** + * File: voiceinit.c + * + * Initializes Voice Recognition System control structure and hardware + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voiceinit/osVoiceInit.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "macros.h" + +static u8 sCmds[] = { + 0x1E, 0x6E, 0x08, 0x56, 0x03, +}; + +s32 osVoiceInit(OSMesgQueue* mq, OSVoiceHandle* hd, s32 channel) { + s32 errorCode; + s32 i; + u8 status = 0; + u8 data[4]; + + hd->channel = channel; + hd->mq = mq; + hd->mode = VOICE_HANDLE_MODE_0; + + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (__osContChannelReset(mq, channel) != 0) { + return CONT_ERR_CONTRFAIL; + } + + for (i = 0; i < ARRAY_COUNT(sCmds); i++) { + errorCode = __osVoiceSetADConverter(mq, channel, sCmds[i]); + if (errorCode != 0) { + return errorCode; + } + } + + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + return errorCode; + } + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + /** + * data[0] = 0 + * data[1] = 0 + * data[2] = 1 + * data[3] = 0 + */ + *(u32*)data = 0x100; + errorCode = __osVoiceContWrite4(mq, channel, 0, data); + if (errorCode != 0) { + return errorCode; + } + + errorCode = __osVoiceCheckResult(hd, &status); + if (errorCode & 0xFF00) { + errorCode = CONT_ERR_INVALID; + } + + return errorCode; +} diff --git a/src/libultra/voice/voicemaskdictionary.c b/src/libultra/voice/voicemaskdictionary.c index 3de841de3..a8f090329 100644 --- a/src/libultra/voice/voicemaskdictionary.c +++ b/src/libultra/voice/voicemaskdictionary.c @@ -1,3 +1,57 @@ -#include "global.h" +/** + * File: voicemaskdictionary.c + * + * Mask words registered in the voice recognition system + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicemaskdictionary/osVoiceMaskDictionary.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "macros.h" + +s32 osVoiceMaskDictionary(OSVoiceHandle* hd, u8* maskPattern, s32 size) { + s32 errorCode; + s32 i; + s32 j; + u8 status; + u8 data[20]; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + if (size & 1) { + j = size + 1; + } else { + j = size; + } + + bzero(&data, ARRAY_COUNT(data)); + + data[ARRAY_COUNT(data) - 2 - j] = 4; + + for (i = 0; i < j; i += 2) { + data[i + ARRAY_COUNT(data) - j] = maskPattern[i]; + data[i + ARRAY_COUNT(data) - j + 1] = maskPattern[i + 1]; + } + + if (size & 1) { + data[ARRAY_COUNT(data) - 1] = 0; + } + + errorCode = __osVoiceContWrite20(hd->mq, hd->channel, 0, data); + if (errorCode == 0) { + errorCode = __osVoiceCheckResult(hd, &status); + if (errorCode & 0xFF00) { + errorCode = CONT_ERR_INVALID; + } + } + + return errorCode; +} diff --git a/src/libultra/voice/voicesetadconverter.c b/src/libultra/voice/voicesetadconverter.c index c1b8fa002..2a6ebfbc7 100644 --- a/src/libultra/voice/voicesetadconverter.c +++ b/src/libultra/voice/voicesetadconverter.c @@ -1,3 +1,70 @@ -#include "global.h" +/** + * File: voicesetadconverter.c + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicesetadconverter/__osVoiceSetADConverter.s") +#include "ultra64/controller_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "variables.h" + +#define SWRITEFORMAT(ptr) ((__OSVoiceSWriteFormat*)(ptr)) + +s32 __osVoiceSetADConverter(OSMesgQueue* mq, s32 channel, u8 data) { + s32 errorCode; + s32 i; + u8* ptr; + u8 status; + s32 retryCount = 2; + + __osSiGetAccess(); + + do { + ptr = (u8*)&__osPfsPifRam.ramarray; + + if ((__osContLastPoll != CONT_CMD_SWRITE_VOICE) || (channel != __osPfsLastChannel)) { + __osContLastPoll = CONT_CMD_SWRITE_VOICE; + __osPfsLastChannel = channel; + + for (i = 0; i < channel; i++, *ptr++ = 0) {} + + __osPfsPifRam.status = CONT_CMD_EXE; + + SWRITEFORMAT(ptr)->txsize = CONT_CMD_SWRITE_VOICE_TX; + SWRITEFORMAT(ptr)->rxsize = CONT_CMD_SWRITE_VOICE_RX; + SWRITEFORMAT(ptr)->cmd = CONT_CMD_SWRITE_VOICE; + SWRITEFORMAT(ptr)->datacrc = 0; + + ptr[sizeof(__OSVoiceSWriteFormat)] = CONT_CMD_END; + } else { + ptr += channel; + } + + SWRITEFORMAT(ptr)->data = data; + SWRITEFORMAT(ptr)->scrc = __osContAddressCrc(data << 3); + + __osSiRawStartDma(OS_WRITE, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + __osSiRawStartDma(OS_READ, &__osPfsPifRam); + osRecvMesg(mq, NULL, OS_MESG_BLOCK); + + errorCode = CHNL_ERR(*SWRITEFORMAT(ptr)); + + if (errorCode == 0) { + if (SWRITEFORMAT(ptr)->datacrc & 1) { + errorCode = __osVoiceGetStatus(mq, channel, &status); + if (errorCode != 0) { + break; + } + + errorCode = CONT_ERR_CONTRFAIL; + } + } else { + errorCode = CONT_ERR_NO_CONTROLLER; + } + + } while ((errorCode == CONT_ERR_CONTRFAIL) && (retryCount-- >= 0)); + + __osSiRelAccess(); + + return errorCode; +} diff --git a/src/libultra/voice/voicesetword.c b/src/libultra/voice/voicesetword.c index e50f26874..2dfe58b94 100644 --- a/src/libultra/voice/voicesetword.c +++ b/src/libultra/voice/voicesetword.c @@ -1,3 +1,69 @@ -#include "global.h" +/** + * File: voicesetword.c + * + * Registers words to the Voice Recognition System dictionary + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicesetword/osVoiceSetWord.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" +#include "functions.h" +#include "macros.h" + +s32 osVoiceSetWord(OSVoiceHandle* hd, u8* word) { + s32 i; + s32 k; + s32 errorCode; + u8 status; + u8 data[40]; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + k = 0; + + while (word[k] != 0) { + k += 2; + } + + bzero(data, ARRAY_COUNT(data)); + + for (i = 0; i < k; i += 2) { + data[ARRAY_COUNT(data) - 1 - k + i] = word[i]; + data[ARRAY_COUNT(data) - 1 - k + i - 1] = word[i + 1]; + } + + data[ARRAY_COUNT(data) - 1 - i - 5] = 3; + + if (k >= 15) { + errorCode = __osVoiceContWrite20(hd->mq, hd->channel, 0, &data[0]); + if (errorCode != 0) { + return errorCode; + } + } + + errorCode = __osVoiceContWrite20(hd->mq, hd->channel, 0, &data[20]); + if (errorCode != 0) { + return errorCode; + } + + errorCode = __osVoiceCheckResult(hd, &status); + + if (errorCode != 0) { + if (errorCode & 0x100) { + errorCode = CONT_ERR_VOICE_MEMORY; + } else if (errorCode & 0x200) { + errorCode = CONT_ERR_VOICE_WORD; + } else if (errorCode & 0xFF00) { + errorCode = CONT_ERR_INVALID; + } + } + + return errorCode; +} diff --git a/src/libultra/voice/voicestartreaddata.c b/src/libultra/voice/voicestartreaddata.c index e7105a7d4..398d10a15 100644 --- a/src/libultra/voice/voicestartreaddata.c +++ b/src/libultra/voice/voicestartreaddata.c @@ -1,3 +1,49 @@ -#include "global.h" +/** + * File: voicestartreaddata.c + * + * Start voice recognition by the Voice Recognition System + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicestartreaddata/osVoiceStartReadData.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" + +s32 osVoiceStartReadData(OSVoiceHandle* hd) { + s32 errorCode; + u8 status; + u8 data[4]; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + if (hd->mode != VOICE_HANDLE_MODE_0) { + return CONT_ERR_INVALID; + } + + /** + * data[0] = 5 + * data[1] = 0 + * data[2] = 0 + * data[3] = 0 + */ + *(u32*)data = 0x5000000; + errorCode = __osVoiceContWrite4(hd->mq, hd->channel, 0, data); + + if (errorCode == 0) { + errorCode = __osVoiceCheckResult(hd, &status); + + if (errorCode & 0xFF00) { + errorCode = CONT_ERR_INVALID; + } else { + hd->mode = VOICE_HANDLE_MODE_1; + } + } + + return errorCode; +} diff --git a/src/libultra/voice/voicestopread.c b/src/libultra/voice/voicestopread.c index f032fc40e..570613428 100644 --- a/src/libultra/voice/voicestopread.c +++ b/src/libultra/voice/voicestopread.c @@ -1,3 +1,60 @@ -#include "global.h" +/** + * File: voicestopread.c + * + * Forcibly stops voice recognition processing by the Voice Recognition System + */ -#pragma GLOBAL_ASM("asm/non_matchings/boot/voicestopread/osVoiceStopReadData.s") +#include "ultra64/controller_voice.h" +#include "ultra64/os_voice.h" +#include "io/controller.h" + +s32 osVoiceStopReadData(OSVoiceHandle* hd) { + s32 errorCode; + s32 i; + u8 status; + u8 data[4]; + + errorCode = __osVoiceGetStatus(hd->mq, hd->channel, &status); + if (errorCode != 0) { + return errorCode; + } + + if (status & 2) { + return CONT_ERR_VOICE_NO_RESPONSE; + } + + if (hd->mode == VOICE_HANDLE_MODE_0) { + return CONT_ERR_INVALID; + } + + /** + * data[0] = 0 + * data[1] = 0 + * data[2] = 7 + * data[3] = 0 + */ + *(u32*)data = 0x700; + errorCode = __osVoiceContWrite4(hd->mq, hd->channel, 0, data); + + if (errorCode == 0) { + i = 0; + do { + errorCode = __osVoiceCheckResult(hd, &status); + if (errorCode & 0xFF00) { + if (((errorCode & 7) == 0) || ((errorCode & 7) == 7)) { + errorCode = 0; + hd->mode = VOICE_HANDLE_MODE_0; + } else { + errorCode = CONT_ERR_INVALID; + } + } else { + hd->mode = VOICE_HANDLE_MODE_0; + } + i++; + } while ((errorCode == CONT_ERR_VOICE_NO_RESPONSE) && (i < 20)); + } + + if (i >= 20) {} + + return errorCode; +} diff --git a/tools/disasm/variables.txt b/tools/disasm/variables.txt index e4c0138f3..b2c82bf7f 100644 --- a/tools/disasm/variables.txt +++ b/tools/disasm/variables.txt @@ -71,9 +71,7 @@ 0x80097F70:("__osTimerList","OSTimer*","",0x4), 0x80097F80:("D_80097F80","f32","",0x4), 0x80097F90:("D_80097F90","f32","",0x4), - 0x80097FA0:("D_80097FA0","UNK_TYPE1","",0x1), - 0x80097FA4:("D_80097FA4","UNK_TYPE1","",0x1), - 0x80097FA5:("D_80097FA5","UNK_TYPE1","",0x1), + 0x80097FA0:("sCmds","UNK_TYPE1","",0x1), 0x80097FB0:("__osPfsLastChannel","s32","",0x4), 0x80097FC0:("osViModeNtscLan1","OSViMode","",0x50), 0x80098010:("osViModeMpalLan1","OSViMode","",0x50), @@ -86,7 +84,7 @@ 0x80098144:("udigs","u8","[]",0x14), 0x80098160:("__osViDevMgr","OSDevMgr","",0x1c), 0x8009817C:("__additional_scanline","UNK_TYPE4","",0x4), - 0x80098180:("D_80098180","UNK_TYPE1","",0x1), + 0x80098180:("sDigitalTable","UNK_TYPE1","",0x1), 0x80098190:("D_80098190","char","[]",0x5), 0x80098198:("D_80098198","char","[]",0x5), 0x800981A0:("D_800981A0","char","[]",0x7), @@ -338,7 +336,7 @@ 0x8009CF18:("__osEepromTimer","OSTimer","",0x20), 0x8009CF38:("D_8009CF38","OSMesgQueue","",0x18), 0x8009CF50:("D_8009CF50","OSMesg","",0x4), - 0x8009CF60:("D_8009CF60","UNK_TYPE1","",0x1), + 0x8009CF60:("sHandleStatus","UNK_TYPE1","",0x1), 0x8009CF70:("D_8009CF70","UNK_TYPE4","",0x4), 0x8009CF80:("__osThreadSave","OSThread","",0x1b0), 0x8009D130:("D_8009D130","OSPiHandle","",0x74),