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 <elliptic.ellipsis@gmail.com>
Co-authored-by: Synray <31429825+Synray@users.noreply.github.com>
This commit is contained in:
engineer124 2023-06-06 05:03:02 +10:00 committed by GitHub
parent cd53dd317f
commit 8cabbb1a2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 5951 additions and 792 deletions

View File

@ -0,0 +1,126 @@
<Root>
<File Name="title_static" Segment="1">
<Texture Name="gFileSelNoFileToCopyENGTex" OutName="no_file_to_copy_eng" Format="ia8" Width="128" Height="16" Offset="0x0"/>
<Texture Name="gFileSelNoFileToEraseENGTex" OutName="no_file_to_erase_eng" Format="ia8" Width="128" Height="16" Offset="0x800"/>
<Texture Name="gFileSelNoEmptyFileENGTex" OutName="no_empty_file_eng" Format="ia8" Width="128" Height="16" Offset="0x1000"/>
<Texture Name="gFileSelFileEmptyENGTex" OutName="file_empty_eng" Format="ia8" Width="128" Height="16" Offset="0x1800"/>
<Texture Name="gFileSelFileInUseENGTex" OutName="file_in_use_eng" Format="ia8" Width="128" Height="16" Offset="0x2000"/>
<Texture Name="gFileSelConnectorTex" OutName="connector" Format="ia8" Width="24" Height="16" Offset="0x2800"/>
<Texture Name="gFileSelCopyWhichFileENGTex" OutName="copy_which_file_eng" Format="ia8" Width="128" Height="16" Offset="0x2980"/>
<Texture Name="gFileSelCopyToWhichFileENGTex" OutName="copy_to_which_file_eng" Format="ia8" Width="128" Height="16" Offset="0x3180"/>
<Texture Name="gFileSelAreYouSureCopyENGTex" OutName="are_you_sure_copy_eng" Format="ia8" Width="128" Height="16" Offset="0x3980"/>
<Texture Name="gFileSelFileCopiedENGTex" OutName="file_copied_eng" Format="ia8" Width="128" Height="16" Offset="0x4180"/>
<Texture Name="gFileSelPleaseSelectAFileENGTex" OutName="please_select_a_file_eng" Format="ia8" Width="128" Height="16" Offset="0x4980"/>
<Texture Name="gFileSelOpenThisFileENGTex" OutName="open_this_file_eng" Format="ia8" Width="128" Height="16" Offset="0x5180"/>
<Texture Name="gFileSelEraseWhichFileENGTex" OutName="erase_which_file_eng" Format="ia8" Width="128" Height="16" Offset="0x5980"/>
<Texture Name="gFileSelAreYouSureEraseENGTex" OutName="are_you_sure_erase_eng" Format="ia8" Width="128" Height="16" Offset="0x6180"/>
<Texture Name="gFileSelFileErasedENGTex" OutName="file_erased_eng" Format="ia8" Width="128" Height="16" Offset="0x6980"/>
<Texture Name="gFileSelOptionsENGTex" OutName="options_eng" Format="ia8" Width="128" Height="16" Offset="0x7180"/>
<Texture Name="gFileSelNameENGTex" OutName="name_eng" Format="ia8" Width="56" Height="16" Offset="0x7980"/>
<Texture Name="gFileSelSurroundENGTex" OutName="surround_eng" Format="ia8" Width="48" Height="16" Offset="0x7D00"/>
<Texture Name="gFileSelHeadsetENGTex" OutName="headset_eng" Format="ia8" Width="48" Height="16" Offset="0x8000"/>
<Texture Name="gFileSelMonoENGTex" OutName="mono_eng" Format="ia8" Width="48" Height="16" Offset="0x8300"/>
<Texture Name="gFileSelSoundENGTex" OutName="sound_eng" Format="ia8" Width="64" Height="16" Offset="0x8600"/>
<Texture Name="gFileSelStereoENGTex" OutName="stereo_eng" Format="ia8" Width="48" Height="16" Offset="0x8A00"/>
<Texture Name="gFileSelTargetingENGTex" OutName="targeting_eng" Format="ia8" Width="64" Height="16" Offset="0x8D00"/>
<Texture Name="gFileSelSwitchENGTex" OutName="switch_eng" Format="ia8" Width="48" Height="16" Offset="0x9100"/>
<Texture Name="gFileSelHoldENGTex" OutName="hold_eng" Format="ia8" Width="48" Height="16" Offset="0x9400"/>
<Texture Name="gFileSelCheckBrightnessENGTex" OutName="check_brightness_eng" Format="ia8" Width="96" Height="16" Offset="0x9700"/>
<Texture Name="gFileSelDolbySurroundLogoENGTex" OutName="dolby_surround_logo_eng" Format="i8" Width="48" Height="17" Offset="0x9D00"/>
<Texture Name="gFileSelDecideCancelENGTex" OutName="decide_cancel_eng" Format="ia8" Width="144" Height="16" Offset="0xA030"/>
<Texture Name="gFileSelDecideSaveENGTex" OutName="decide_save_eng" Format="ia8" Width="152" Height="16" Offset="0xA930"/>
<Texture Name="gFileSelPleaseWaitENGTex" OutName="please_wait_eng" Format="ia8" Width="144" Height="16" Offset="0xB2B0"/>
<Texture Name="gFileSelWindow00Tex" OutName="window_00" Format="ia16" Width="64" Height="32" Offset="0xBBB0"/>
<Texture Name="gFileSelWindow01Tex" OutName="window_01" Format="ia16" Width="64" Height="32" Offset="0xCBB0"/>
<Texture Name="gFileSelWindow02Tex" OutName="window_02" Format="ia16" Width="64" Height="32" Offset="0xDBB0"/>
<Texture Name="gFileSelWindow03Tex" OutName="window_03" Format="ia16" Width="48" Height="32" Offset="0xEBB0"/>
<Texture Name="gFileSelWindow10Tex" OutName="window_10" Format="ia16" Width="64" Height="32" Offset="0xF7B0"/>
<Texture Name="gFileSelWindow11Tex" OutName="window_11" Format="ia16" Width="64" Height="32" Offset="0x107B0"/>
<Texture Name="gFileSelWindow12Tex" OutName="window_12" Format="ia16" Width="64" Height="32" Offset="0x117B0"/>
<Texture Name="gFileSelWindow13Tex" OutName="window_13" Format="ia16" Width="48" Height="32" Offset="0x127B0"/>
<Texture Name="gFileSelWindow20Tex" OutName="window_20" Format="ia16" Width="64" Height="32" Offset="0x133B0"/>
<Texture Name="gFileSelWindow21Tex" OutName="window_21" Format="ia16" Width="64" Height="32" Offset="0x143B0"/>
<Texture Name="gFileSelWindow22Tex" OutName="window_22" Format="ia16" Width="64" Height="32" Offset="0x153B0"/>
<Texture Name="gFileSelWindow23Tex" OutName="window_23" Format="ia16" Width="48" Height="32" Offset="0x163B0"/>
<Texture Name="gFileSelWindow30Tex" OutName="window_30" Format="ia16" Width="64" Height="32" Offset="0x16FB0"/>
<Texture Name="gFileSelWindow31Tex" OutName="window_31" Format="ia16" Width="64" Height="32" Offset="0x17FB0"/>
<Texture Name="gFileSelWindow32Tex" OutName="window_32" Format="ia16" Width="64" Height="32" Offset="0x18FB0"/>
<Texture Name="gFileSelWindow33Tex" OutName="window_33" Format="ia16" Width="48" Height="32" Offset="0x19FB0"/>
<Texture Name="gFileSelWindow40Tex" OutName="window_40" Format="ia16" Width="64" Height="32" Offset="0x1ABB0"/>
<Texture Name="gFileSelWindow41Tex" OutName="window_41" Format="ia16" Width="64" Height="32" Offset="0x1BBB0"/>
<Texture Name="gFileSelWindow42Tex" OutName="window_42" Format="ia16" Width="64" Height="32" Offset="0x1CBB0"/>
<Texture Name="gFileSelWindow43Tex" OutName="window_43" Format="ia16" Width="48" Height="32" Offset="0x1DBB0"/>
<Texture Name="gFileSelCopyButtonENGTex" OutName="copy_button_eng" Format="ia16" Width="64" Height="16" Offset="0x1E7B0"/>
<Texture Name="gFileSelFile1ButtonENGTex" OutName="file_1_button_eng" Format="ia16" Width="64" Height="16" Offset="0x1EFB0"/>
<Texture Name="gFileSelFile2ButtonENGTex" OutName="file_2_button_eng" Format="ia16" Width="64" Height="16" Offset="0x1F7B0"/>
<Texture Name="gFileSelFile3ButtonENGTex" OutName="file_3_button_eng" Format="ia16" Width="64" Height="16" Offset="0x1FFB0"/>
<Texture Name="gFileSelYesButtonENGTex" OutName="yes_button_eng" Format="ia16" Width="64" Height="16" Offset="0x207B0"/>
<Texture Name="gFileSelEraseButtonENGTex" OutName="erase_button_eng" Format="ia16" Width="64" Height="16" Offset="0x20FB0"/>
<Texture Name="gFileSelENDButtonENGTex" OutName="end_button_eng" Format="ia16" Width="44" Height="16" Offset="0x217B0"/>
<Texture Name="gFileSelBackspaceButtonTex" OutName="backspace_button" Format="ia16" Width="28" Height="16" Offset="0x21D30"/>
<Texture Name="gFileSelFileNameBoxTex" OutName="file_name_box" Format="ia16" Width="108" Height="16" Offset="0x220B0"/>
<Texture Name="gFileSelFileInfoBox0Tex" OutName="file_info_box_0" Format="ia16" Width="36" Height="56" Offset="0x22E30"/>
<Texture Name="gFileSelFileInfoBox1Tex" OutName="file_info_box_1" Format="ia16" Width="36" Height="56" Offset="0x23DF0"/>
<Texture Name="gFileSelFileInfoBox2Tex" OutName="file_info_box_2" Format="ia16" Width="36" Height="56" Offset="0x24DB0"/>
<Texture Name="gFileSelFileInfoBox3Tex" OutName="file_info_box_3" Format="ia16" Width="36" Height="56" Offset="0x25D70"/>
<Texture Name="gFileSelFileInfoBox4Tex" OutName="file_info_box_4" Format="ia16" Width="24" Height="56" Offset="0x26D30"/>
<Texture Name="gFileSelOptionsButtonENGTex" OutName="options_button_eng" Format="ia16" Width="64" Height="16" Offset="0x277B0"/>
<Texture Name="gFileSelQuitButtonENGTex" OutName="quit_button_eng" Format="ia16" Width="64" Height="16" Offset="0x27FB0"/>
<!-- Extension for owl save information -->
<Texture Name="gFileSelFileExtraInfoBox0Tex" OutName="file_extra_info_box_0" Format="ia16" Width="28" Height="56" Offset="0x287B0"/>
<Texture Name="gFileSelFileExtraInfoBox1Tex" OutName="file_extra_info_box_1" Format="ia16" Width="28" Height="56" Offset="0x293F0"/>
<!-- Used for closed owl save file -->
<Texture Name="gFileSelBlankButtonTex" OutName="file_blank_button" Format="ia16" Width="52" Height="16" Offset="0x2A030"/>
<Texture Name="gFileSelOptionsDividerTex" OutName="options_divider" Format="ia4" Width="256" Height="2" Offset="0x2A6B0"/>
<Texture Name="gFileSelBrightnessCheckTex" OutName="brightness_check" Format="ia4" Width="96" Height="16" Offset="0x2A7B0"/>
<Texture Name="gFileSelBigButtonHighlightTex" OutName="big_button_highlight" Format="i8" Width="72" Height="24" Offset="0x2AAB0"/>
<Texture Name="gFileSelCharHighlightTex" OutName="char_highlight" Format="i8" Width="24" Height="24" Offset="0x2B170"/>
<Texture Name="gFileSelMediumButtonHighlightTex" OutName="medium_button_highlight" Format="i8" Width="56" Height="24" Offset="0x2B3B0"/>
<Texture Name="gFileSelSmallButtonHighlightTex" OutName="small_button_highlight" Format="i8" Width="40" Height="24" Offset="0x2B8F0"/>
<!-- Boss remains textures -->
<Texture Name="gFileSelOdolwasRemainsTex" OutName="odolwas_remains" Format="rgba32" Width="32" Height="32" Offset="0x2BCB0"/>
<Texture Name="gFileSelGohtsRemainsTex" OutName="gohts_remains" Format="rgba32" Width="32" Height="32" Offset="0x2CCB0"/>
<Texture Name="gFileSelGyorgsRemainsTex" OutName="gyorgs_remains" Format="rgba32" Width="32" Height="32" Offset="0x2DCB0"/>
<Texture Name="gFileSelTwinmoldsRemainsTex" OutName="twinmolds_remains" Format="rgba32" Width="32" Height="32" Offset="0x2ECB0"/>
<Texture Name="gFileSelOwlSaveIconTex" OutName="owl_save_icon" Format="rgba32" Width="24" Height="12" Offset="0x2FCB0"/>
<Texture Name="gFileSelFirstDayENGTex" OutName="first_day_eng" Format="i4" Width="48" Height="24" Offset="0x30130"/>
<Texture Name="gFileSelSecondDayENGTex" OutName="second_day_eng" Format="i4" Width="48" Height="24" Offset="0x30370"/>
<Texture Name="gFileSelFinalDayENGTex" OutName="final_day_eng" Format="i4" Width="48" Height="24" Offset="0x305B0"/>
<Texture Name="gFileSelSaveXJPNTex" OutName="save_x_jpn" Format="i4" Width="32" Height="16" Offset="0x307F0"/>
<Texture Name="gFileSelMASKSENGTex" OutName="masks_eng" Format="i4" Width="64" Height="16" Offset="0x308F0"/>
<Texture Name="gFileSel0QuarterHeartENGTex" OutName="0_quarter_heart" Format="ia8" Width="24" Height="16" Offset="0x30AF0"/>
<Texture Name="gFileSel1QuarterHeartENGTex" OutName="1_quarter_heart" Format="ia8" Width="24" Height="16" Offset="0x30C70"/>
<Texture Name="gFileSel2QuarterHeartENGTex" OutName="2_quarter_heart" Format="ia8" Width="24" Height="16" Offset="0x30DF0"/>
<Texture Name="gFileSel3QuarterHeartENGTex" OutName="3_quarter_heart" Format="ia8" Width="24" Height="16" Offset="0x30F70"/>
<Texture Name="gFileSelRupeeTex" OutName="rupee" Format="ia8" Width="16" Height="16" Offset="0x310F0"/>
<DList Name="gFileSelWindow1DL" Offset="0x311F0"/>
<DList Name="gFileSelWindow2DL" Offset="0x31408"/>
<DList Name="gFileSelWindow3DL" Offset="0x31618"/>
</File>
</Root>

View File

@ -0,0 +1,19 @@
<Root>
<File Name="ovl_file_choose" BaseAddress="0x80804010" RangeStart="0xFDE0" RangeEnd="0x101E0">
<Array Name="D_80813DF0" Count="20" Offset="0xFDE0" Static="Off">
<Vtx/>
</Array>
<Array Name="D_80813F30" Count="32" Offset="0xFF20" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerTopVtx" Count="4" Offset="0x10120" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerMiddleVtx" Count="4" Offset="0x10160" Static="Off">
<Vtx/>
</Array>
<Array Name="gOptionsDividerBottomVtx" Count="4" Offset="0x101A0" Static="Off">
<Vtx/>
</Array>
</File>
</Root>

View File

@ -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);

View File

@ -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;

View File

@ -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

View File

@ -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`

14
spec
View File

@ -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

View File

@ -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"

View File

@ -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;
}

View File

@ -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;

View File

@ -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"

View File

@ -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;

View File

@ -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,

View File

@ -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),

View File

@ -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;

View File

@ -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);
}

File diff suppressed because it is too large Load Diff

View File

@ -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);

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;
}
}
}

View File

@ -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"

View File

@ -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);

View File

@ -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

View File

@ -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")

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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
};

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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",),

View File

@ -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),

View File

@ -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

1 asm/non_matchings/code/z_en_a_keep/EnAObj_Init.s EnAObj_Init 0x800A5AC0 0x2B
2316 asm/non_matchings/code/z_sram_NES/func_8014546C.s func_8014546C 0x8014546C 0x8B
2317 asm/non_matchings/code/z_sram_NES/func_80145698.s func_80145698 0x80145698 0x4D
2318 asm/non_matchings/code/z_sram_NES/func_801457CC.s func_801457CC 0x801457CC 0x36D
2319 asm/non_matchings/code/z_sram_NES/func_80146580.s asm/non_matchings/code/z_sram_NES/Sram_EraseSave.s func_80146580 Sram_EraseSave 0x80146580 0x2A
2320 asm/non_matchings/code/z_sram_NES/func_80146628.s asm/non_matchings/code/z_sram_NES/Sram_CopySave.s func_80146628 Sram_CopySave 0x80146628 0x11E
2321 asm/non_matchings/code/z_sram_NES/Sram_InitSave.s Sram_InitSave 0x80146AA0 0xD6
2322 asm/non_matchings/code/z_sram_NES/func_80146DF8.s asm/non_matchings/code/z_sram_NES/Sram_WriteSaveOptionsToBuffer.s func_80146DF8 Sram_WriteSaveOptionsToBuffer 0x80146DF8 0x12
2323 asm/non_matchings/code/z_sram_NES/Sram_InitSram.s Sram_InitSram 0x80146E40 0xC
2324 asm/non_matchings/code/z_sram_NES/Sram_Alloc.s Sram_Alloc 0x80146E70 0x13
2325 asm/non_matchings/code/z_sram_NES/func_80146EBC.s asm/non_matchings/code/z_sram_NES/Sram_SyncWriteToFlash.s func_80146EBC Sram_SyncWriteToFlash 0x80146EBC 0xB
2326 asm/non_matchings/code/z_sram_NES/Sram_SaveSpecialEnterClockTown.s Sram_SaveSpecialEnterClockTown 0x80146EE8 0x1D
2327 asm/non_matchings/code/z_sram_NES/Sram_SaveSpecialNewDay.s Sram_SaveSpecialNewDay 0x80146F5C 0x2B
2328 asm/non_matchings/code/z_sram_NES/func_80147008.s asm/non_matchings/code/z_sram_NES/Sram_SetFlashPagesDefault.s func_80147008 Sram_SetFlashPagesDefault 0x80147008 0x6
2329 asm/non_matchings/code/z_sram_NES/func_80147020.s asm/non_matchings/code/z_sram_NES/Sram_StartWriteToFlashDefault.s func_80147020 Sram_StartWriteToFlashDefault 0x80147020 0x12
2330 asm/non_matchings/code/z_sram_NES/func_80147068.s asm/non_matchings/code/z_sram_NES/Sram_UpdateWriteToFlashDefault.s func_80147068 Sram_UpdateWriteToFlashDefault 0x80147068 0x34
2331 asm/non_matchings/code/z_sram_NES/func_80147138.s asm/non_matchings/code/z_sram_NES/Sram_SetFlashPagesOwlSave.s func_80147138 Sram_SetFlashPagesOwlSave 0x80147138 0x6
2332 asm/non_matchings/code/z_sram_NES/func_80147150.s asm/non_matchings/code/z_sram_NES/Sram_StartWriteToFlashOwlSave.s func_80147150 Sram_StartWriteToFlashOwlSave 0x80147150 0x12
2333 asm/non_matchings/code/z_sram_NES/func_80147198.s asm/non_matchings/code/z_sram_NES/Sram_UpdateWriteToFlashOwlSave.s func_80147198 Sram_UpdateWriteToFlashOwlSave 0x80147198 0x5F
2334 asm/non_matchings/code/z_sram_NES/func_80147314.s func_80147314 0x80147314 0x40
2335 asm/non_matchings/code/z_sram_NES/func_80147414.s func_80147414 0x80147414 0x3E
2336 asm/non_matchings/code/z_sram_NES/Sram_nop8014750C.s Sram_nop8014750C 0x8014750C 0x5