#pragma once #include "z64game.h" #include "view.h" #include "z64environment.h" #include "z64message.h" #include "z64render.h" #include "z64sram.h" struct FileChooseContext { /* 0x00000 */ GameState state; /* 0x000A4 */ Vtx* windowVtx; /* 0x000B0 */ char unk_B0[0x8]; /* 0x000B8 */ View view; /* 0x001E0 */ SramContext sramCtx; /* 0x001E4 */ char unk_1E4[0x4]; /* 0x001E8 */ SkyboxContext skyboxCtx; /* 0x00348 */ MessageContext msgCtx; /* 0x0E760 */ Font font; /* 0x1C8E8 */ EnvironmentContext envCtx; /* 0x1C9E4 */ char unk_1C9E4[0x4]; /* 0x1C9E8 */ Vtx* windowContentVtx; /* 0x1C9EC */ Vtx* keyboardVtx; /* 0x1C9F0 */ Vtx* nameEntryVtx; /* 0x1C9F4 */ u8 n64ddFlag; /* 0x1C9F6 */ u16 deaths[3]; /* 0x1C9FC */ u8 fileNames[3][8]; /* 0x1CA14 */ u16 healthCapacities[3]; /* 0x1CA1C */ u32 questItems[3]; /* 0x1CA28 */ s16 n64ddFlags[3]; /* 0x1CA2E */ s8 defense[3]; /* 0x1CA32 */ u16 health[3]; /* 0x1CA38 */ s16 buttonIndex; /* 0x1CA3A */ s16 confirmButtonIndex; // 0: yes, 1: quit /* 0x1CA3C */ s16 menuMode; /* 0x1CA3E */ s16 configMode; /* 0x1CA40 */ s16 prevConfigMode; /* 0x1CA42 */ s16 nextConfigMode; /* 0x1CA44 */ s16 selectMode; /* 0x1CA46 */ s16 selectedFileIndex; /* 0x1CA48 */ char unk_1CA48[0x2]; /* 0x1CA4A */ s16 fileNamesY[3]; /* 0x1CA50 */ s16 actionTimer; /* 0x1CA52 */ s16 buttonYOffsets[6]; /* 0x1CA5E */ s16 copyDestFileIndex; /* 0x1CA60 */ s16 warningLabel; /* 0x1CA62 */ s16 warningButtonIndex; /* 0x1CA64 */ s16 titleLabel; /* 0x1CA66 */ s16 nextTitleLabel; /* 0x1CA68 */ s16 windowColor[3]; /* 0x1CA6E */ s16 titleAlpha[2]; /* 0x1CA72 */ s16 windowAlpha; /* 0x1CA74 */ s16 fileButtonAlpha[3]; /* 0x1CA7A */ s16 nameBoxAlpha[3]; /* 0x1CA80 */ s16 nameAlpha[3]; /* 0x1CA86 */ s16 connectorAlpha[3]; /* 0x1CA8C */ s16 fileInfoAlpha[3]; /* 0x1CA92 */ s16 actionButtonAlpha[2]; /* 0x1CA96 */ s16 confirmButtonAlpha[2]; /* 0x1CA9A */ s16 optionButtonAlpha; /* 0x1CA9C */ s16 nameEntryBoxAlpha; /* 0x1CA9E */ s16 controlsAlpha; /* 0x1CAA0 */ s16 emptyFileTextAlpha; /* 0x1CAA2 */ s16 highlightColor[4]; /* 0x1CAAA */ s16 highlightPulseDir; // 0 fade out, 1 fade in /* 0x1CAAC */ s16 unk_1CAAC; // initialized but never used /* 0x1CAAE */ s16 confirmButtonTexIndices[2]; /* 0x1CAB2 */ s16 inputTimerX; /* 0x1CAB4 */ s16 inputTimerY; /* 0x1CAB6 */ s16 stickXDir; /* 0x1CAB8 */ s16 stickYDir; /* 0x1CABA */ s16 stickRelX; /* 0x1CABC */ s16 stickRelY; /* 0x1CABE */ s16 nameEntryBoxPosX; /* 0x1CAC0 */ s16 windowPosX; /* 0x1CAC4 */ f32 windowRot; /* 0x1CAC8 */ s16 kbdButton; // only for buttons, not characters /* 0x1CACA */ s16 charPage; // 0: hiragana, 1: katakana, 2: alphabet /* 0x1CACC */ s16 charBgAlpha; // square shape the letter sits in /* 0x1CACE */ s16 charIndex; // 0 - 64, top left to bottom right /* 0x1CAD0 */ s16 kbdX; // (0, 0) is top left character /* 0x1CAD2 */ s16 kbdY; /* 0x1CAD4 */ s16 newFileNameCharCount; /* 0x1CAD6 */ s16 unk_1CAD6[5]; }; // size = 0x1CAE0 void FileChoose_Init(GameState* thissx); void FileChoose_Destroy(GameState* thissx);