Document most of global context (#198)

* doesn't build for some reason..?

* some formatting fixes

* windows calculator is trash

* fix!

* fix2

* most of global context documented

* interfacectx

* hopefully fix interface

* document restrictions

* envCtx done

* revert accidental change

* fix

* pause ctx done

* fixxxxxxxxxxxxxxx

* remove unintended zapd change

* fix..?

* format files

* Update include/z64.h

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* ocarinstaff

* Update include/z64.h

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* Update include/z64.h

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>

* suggestions

* fix mistake in pausectx

* typo

* door context

* renames

* all nb removed

* Update include/z64.h

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* Update include/functions.h

Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>

* fix kanfont, new docs

* format files, merge master

* fix typo in linker script

* extract asm properly

* door context rename

* fixes in door context

Co-authored-by: Tharo <17233964+Thar0@users.noreply.github.com>
Co-authored-by: engineer124 <47598039+engineer124@users.noreply.github.com>
This commit is contained in:
Zelllll
2021-07-05 18:14:27 -07:00
committed by GitHub
parent 0e51bf35a1
commit 6db3fc7b32
65 changed files with 870 additions and 739 deletions
+33 -33
View File
@@ -1741,13 +1741,13 @@ void func_800F4A10(GlobalContext* globalCtx);
void func_800F4C0C(GlobalContext* globalCtx);
void func_800F4E20(GlobalContext* globalCtx);
void func_800F4F28(GlobalContext* globalCtx);
void Kanfont_Nop800F4F40(GlobalContext* globalCtx, UNK_TYPE4 param_2, UNK_TYPE4 param_3);
void Kanfont_LoadAsciiChar(GlobalContext* globalCtx, u8 character, s32 iParm3);
void Kanfont_LoadMessageBoxEnd(Font* font, u16 type);
void Kanfont_LoadOrderedFont(Font* font);
void Font_LoadChar(GlobalContext* globalCtx, u16 codePointIndex, s32 offset);
void Font_LoadCharNES(GlobalContext* globalCtx, u8 codePointIndex, s32 offset);
void Font_LoadMessageBoxEndIcon(Font* font, u16 icon);
void Font_LoadOrderedFont(Font* font);
// void func_800F5090(void);
// void func_800F50D4(void);
void Kankyo_Init(GlobalContext* globalCtx, KankyoContext* envCtx);
void Kankyo_Init(GlobalContext* globalCtx, EnvironmentContext* envCtx);
u32 func_800F5954(u8* param_1, u32 param_2, u32 param_3, u8 param_4, u8 param_5);
// void func_800F5A8C(void);
// void func_800F5B10(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
@@ -1757,16 +1757,16 @@ u32 func_800F5954(u8* param_1, u32 param_2, u32 param_3, u8 param_4, u8 param_5)
// void func_800F6A04(void);
// void func_800F6A40(void);
// void func_800F6AB8(void);
void func_800F6B44(GlobalContext* globalCtx, KankyoContext* envCtx, s32 iParm3, s32 iParm4, s16* param_5);
void func_800F6B44(GlobalContext* globalCtx, EnvironmentContext* envCtx, s32 iParm3, s32 iParm4, s16* param_5);
// void func_800F6CEC(void);
// void func_800F6EA4(void);
// UNK_TYPE4 Kankyo_IsSceneUpsideDown(GlobalContext* globalCtx);
void func_800F6FF8(GlobalContext* globalCtx, KankyoContext* envCtx, LightContext* lightCtx);
void func_800F6FF8(GlobalContext* globalCtx, EnvironmentContext* envCtx, LightContext* lightCtx);
// void func_800F8554(void);
// void func_800F88C4(void);
// void func_800F8970(void);
// void func_800F8A9C(void);
// void func_800F8CD4(GlobalContext* globalCtx, KankyoContext* envCtx, LightContext* lightCtx, s32 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_800F8CD4(GlobalContext* globalCtx, EnvironmentContext* envCtx, LightContext* lightCtx, s32 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_800F8D84(void);
// void func_800F9728(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);
// void func_800F9824(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_TYPE2 param_10, UNK_TYPE1 param_11);
@@ -2472,7 +2472,7 @@ void Scene_HeaderCmdObjectList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdLightList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdPathList(GlobalContext* globalCtx, SceneCmd* cmd);
void Scene_HeaderCmdTransiActorList(GlobalContext* globalCtx, SceneCmd* cmd);
void Transition_Init(GameState* gamestate, TransitionContext* transitionCtx);
void Door_InitContext(GameState* gamestate, DoorContext* doorCtx);
void Scene_HeaderCmdEnvLightSettings(GlobalContext* globalCtx, SceneCmd* cmd);
s32 Scene_LoadAreaTextures(GlobalContext* globalCtx, s32 fileIndex);
void Scene_HeaderCmdSkyboxSettings(GlobalContext* globalCtx, SceneCmd* cmd);
@@ -3086,31 +3086,31 @@ void Play_Init(GlobalContext* globalCtx);
void func_8016F5A8(GlobalContext* globalCtx, s8* pcParm2, Input* iParm3);
// void func_8016FC78(void);
// void func_8016FC98(void);
void PreRender_SetValuesSave(PreRenderContext* this, u32 width, u32 height, void* fbuf, void* zbuf, void* cvg);
void PreRender_Init(PreRenderContext* this);
void PreRender_SetValues(PreRenderContext* this, u32 width, u32 height, void* fbuf, void* zbuf);
void PreRender_Destroy(PreRenderContext* this);
void func_8016FDB8(PreRenderContext* this, Gfx** gfxp, void* buf, void* bufSave, u32 arg4);
void func_8016FF70(PreRenderContext* this, Gfx** gfxp, void* buf, void* bufSave);
void func_8016FF90(PreRenderContext* this, Gfx** gfxp, void* buf, void* bufSave, s32 envR, s32 envG, s32 envB, s32 envA);
void func_80170200(PreRenderContext* this, Gfx** gfxp, void* buf, void* bufSave);
void func_8017023C(PreRenderContext* this, Gfx** gfxp, void* buf, void* bufSave);
void func_8017057C(PreRenderContext* this, Gfx** gfxp);
void func_801705B4(PreRenderContext* this, Gfx** gfxp);
void func_801705EC(PreRenderContext* this, Gfx** gfxp);
void func_80170730(PreRenderContext* this, Gfx** gfxp);
void func_80170774(PreRenderContext* this, Gfx** gfxp);
void func_80170798(PreRenderContext* this, Gfx** gfxp);
void func_80170AE0(PreRenderContext* this, Gfx** gfxp, s32 alpha);
void func_80170B28(PreRenderContext* this, Gfx** gfxp);
void PreRender_AntiAliasAlgorithm(PreRenderContext* this, s32 x, s32 y);
void PreRender_ApplyAntiAliasingFilter(PreRenderContext* 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);
void PreRender_Destroy(PreRender* this);
void func_8016FDB8(PreRender* this, Gfx** gfxp, void* buf, void* bufSave, u32 arg4);
void func_8016FF70(PreRender* this, Gfx** gfxp, void* buf, void* bufSave);
void func_8016FF90(PreRender* this, Gfx** gfxp, void* buf, void* bufSave, s32 envR, s32 envG, s32 envB, s32 envA);
void func_80170200(PreRender* this, Gfx** gfxp, void* buf, void* bufSave);
void func_8017023C(PreRender* this, Gfx** gfxp, void* buf, void* bufSave);
void func_8017057C(PreRender* this, Gfx** gfxp);
void func_801705B4(PreRender* this, Gfx** gfxp);
void func_801705EC(PreRender* this, Gfx** gfxp);
void func_80170730(PreRender* this, Gfx** gfxp);
void func_80170774(PreRender* this, Gfx** gfxp);
void func_80170798(PreRender* this, Gfx** gfxp);
void func_80170AE0(PreRender* this, Gfx** gfxp, s32 alpha);
void func_80170B28(PreRender* this, Gfx** gfxp);
void PreRender_AntiAliasAlgorithm(PreRender* this, s32 x, s32 y);
void PreRender_ApplyAntiAliasingFilter(PreRender* this);
u32 func_801716C4(u8* arg0, u8* arg1, u8* arg2);
void func_801717F8(PreRenderContext* this);
void PreRender_ApplyFilters(PreRenderContext* this);
void PreRender_ApplyFiltersSlowlyInit(PreRenderContext* this);
void PreRender_ApplyFiltersSlowlyDestroy(PreRenderContext* this);
void func_801720C4(PreRenderContext* this);
void func_801717F8(PreRender* this);
void PreRender_ApplyFilters(PreRender* this);
void PreRender_ApplyFiltersSlowlyInit(PreRender* this);
void PreRender_ApplyFiltersSlowlyDestroy(PreRender* this);
void func_801720C4(PreRender* this);
void func_801720FC(PreRenderParams* params, Gfx** gfxp);
void func_80172758(Gfx** gfxp, void* timg, void* tlut, u16 width, u16 height, u8 fmt, u8 siz, u16 tt, u16 arg8, f32 x, f32 y, f32 xScale, f32 yScale, u32 flags);
void THGA_Ct(TwoHeadGfxArena* thga, Gfx* start, u32 size);
+450 -347
View File
@@ -150,17 +150,22 @@ typedef struct {
} CameraStateParams; // size = 0xC
typedef struct {
/* 0x00 */ u8 cutsceneCount;
/* 0x01 */ UNK_TYPE1 pad1[0x3];
/* 0x04 */ u8* segment;
/* 0x08 */ u8 state;
/* 0x09 */ UNK_TYPE1 pad9[0x3];
/* 0x0C */ f32 unkC;
/* 0x10 */ u16 frames;
/* 0x12 */ u16 unk12;
/* 0x14 */ UNK_TYPE1 pad14[0x14];
/* 0x28 */ CsCmdActorAction* actorActions[10];
} CutsceneContext; // size = 0x50
/* 0x00 */ u8 sceneCsCount;
/* 0x04 */ void* segment;
/* 0x08 */ u8 state;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ u16 frames;
/* 0x12 */ u16 unk_12;
/* 0x14 */ s32 unk_14;
/* 0x18 */ u16 unk_18;
/* 0x1A */ u8 unk_1A;
/* 0x1B */ u8 unk_1B;
/* 0x1C */ CutsceneCameraPoint* cameraFocus;
/* 0x20 */ CutsceneCameraPoint* cameraPosition;
/* 0x24 */ CsCmdActorAction* linkAction;
/* 0x28 */ CsCmdActorAction* npcActions[10]; // "npcdemopnt"
/* 0x50 */ CutsceneEntry* sceneCsList;
} CutsceneContext; // size = 0x54
typedef struct {
/* 0x0 */ s16 x;
@@ -209,11 +214,22 @@ typedef struct {
/* 0x7 */ u8 unk7;
} FireObjLightParams; // size = 0x8
//! @TODO: Make this use `sizeof(AnyFontTextureSymbol)`
#define FONT_CHAR_TEX_SIZE ((16 * 16) / 2)
// Font textures are loaded into here
typedef struct {
/* 0x0000 */ u8 unk0[2][120][128];
/* 0x7800 */ u8 unk7800[93][128];
} Font; // size = 0xA680
/* 0x00000 */ u8 charBuf[2][FONT_CHAR_TEX_SIZE * 120];
/* 0x07800 */ u8 iconBuf[FONT_CHAR_TEX_SIZE];
/* 0x07880 */ u8 fontBuf[FONT_CHAR_TEX_SIZE * 320];
/* 0x11880 */ union {
u8 schar[640];
u16 wchar[640];
} msgBuf;
/* 0x11D80 */ u8* messageStart;
/* 0x11D84 */ u8* messageEnd;
/* 0x11D88 */ u8 unk_11D88;
} Font; // size = 0x11D8C
typedef struct {
/* 0x0000 */ u8 unk0;
@@ -326,13 +342,17 @@ typedef struct {
} ShrinkWindowContext; // size = 0x4
typedef struct {
/* 0x00 */ UNK_TYPE1 pad0[0x4];
/* 0x04 */ void* savefile;
/* 0x08 */ UNK_TYPE1 pad8[0x4];
/* 0x0C */ s16 unkC;
/* 0x0E */ UNK_TYPE1 padE[0xA];
/* 0x18 */ OSTime unk18;
} SramContext; // size = 0x20
/* 0x00 */ u8* readBuff;
/* 0x04 */ u32* flashReadBuff;
/* 0x08 */ char unk_08[4];
/* 0x0C */ s16 status;
/* 0x10 */ u32 curPage;
/* 0x14 */ u32 numPages;
/* 0x18 */ OSTime unk_18;
/* 0x20 */ s16 unk_20;
/* 0x22 */ s16 unk_22;
/* 0x24 */ s16 unk_24;
} SramContext; // size = 0x28
typedef struct {
/* 0x00 */ UNK_TYPE4 unk0;
@@ -615,227 +635,257 @@ typedef struct {
typedef void(*fault_update_input_func)(Input* input);
typedef struct {
/* 0x00 */ u8 noteIdx;
/* 0x01 */ u8 state;
/* 0x02 */ u8 pos;
} OcarinaStaff; // size = 0x3;
typedef struct {
/* 0x000 */ View view;
/* 0x168 */ UNK_TYPE1 pad168[0x84];
/* 0x1EC */ u16 unk1EC;
/* 0x1EE */ u16 unk1EE;
/* 0x1F0 */ u8 unk1F0;
/* 0x1F1 */ UNK_TYPE1 pad1F1[0x3];
/* 0x1F4 */ f32 unk1F4;
/* 0x1F8 */ UNK_TYPE1 pad1F8[0xC];
/* 0x204 */ u16 unk204;
/* 0x206 */ UNK_TYPE1 pad206[0x6];
/* 0x20C */ f32 unk20C;
/* 0x210 */ f32 unk210;
/* 0x214 */ f32 unk214;
/* 0x218 */ f32 unk218;
/* 0x21C */ f32 unk21C;
/* 0x220 */ f32 unk220;
/* 0x224 */ UNK_TYPE1 pad224[0xAC];
/* 0x168 */ u8* iconItemSegment;
/* 0x16C */ u8* iconItem24Segment;
/* 0x170 */ u8* unk_170;
/* 0x174 */ u8* unk_174;
/* 0x178 */ u8* unk_178;
/* 0x17C */ u8* unk_17C;
/* 0x180 */ Vtx* itemPageVtx;
/* 0x184 */ Vtx* mapPageVtx;
/* 0x188 */ Vtx* questPageVtx;
/* 0x18C */ Vtx* maskPageVtx;
/* 0x190 */ Vtx* itemVtx;
/* 0x194 */ Vtx* mapVtx;
/* 0x198 */ Vtx* questVtx;
/* 0x19C */ Vtx* maskVtx;
/* 0x1A0 */ Vtx* unk_1A0;
/* 0x1A4 */ Vtx* unk_1A4;
/* 0x1A8 */ Vtx* cursorVtx;
/* 0x1AC */ OcarinaStaff* ocarinaStaff;
/* 0x1B0 */ DmaRequest unk_1B0;
/* 0x1D0 */ OSMesgQueue loadQueue;
/* 0x1E8 */ OSMesg loadMsg;
/* 0x1EC */ u16 state;
/* 0x1EE */ u16 debugState;
/* 0x1F0 */ u8 unk_1F0;
/* 0x1F4 */ Vec3f eye;
/* 0x200 */ u16 unk_200;
/* 0x202 */ u16 mode;
/* 0x204 */ u16 pageIndex;
/* 0x206 */ u16 unk_206;
/* 0x208 */ u16 unk_208;
/* 0x20C */ f32 unk_20C;
/* 0x210 */ f32 unk_210;
/* 0x214 */ f32 unk_214;
/* 0x218 */ f32 unk_218;
/* 0x21C */ f32 unk_21C;
/* 0x220 */ f32 unk_220;
/* 0x224 */ u16 alpha;
/* 0x226 */ s16 offsetY;
/* 0x228 */ s32 unk_228;
/* 0x22C */ s32 unk_22C;
/* 0x230 */ s32 unk_230;
/* 0x234 */ s32 unk_234;
/* 0x238 */ s16 unk_238[5];
/* 0x242 */ s16 unk_242[5];
/* 0x24C */ s16 unk_24C[5];
/* 0x256 */ s16 unk_256;
/* 0x258 */ s16 unk_258;
/* 0x25A */ s16 unk_25A;
/* 0x25C */ u16 unk_25C;
/* 0x25E */ u16 unk_25E[5];
/* 0x268 */ u16 unk_268[5];
/* 0x272 */ u16 equipTargetItem;
/* 0x274 */ u16 equipTargetSlot;
/* 0x276 */ u16 equipTargetCBtn;
/* 0x278 */ s16 equipAnimX;
/* 0x27A */ s16 equipAnimY;
/* 0x27C */ s16 equipAnimAlpha;
/* 0x27E */ s16 unk_27E;
/* 0x280 */ u16 unk_280;
/* 0x282 */ u16 unk_282;
/* 0x284 */ s16 unk_284;
/* 0x286 */ s16 unk_286;
/* 0x288 */ f32 unk_288;
/* 0x28C */ f32 unk_28C;
/* 0x290 */ f32 unk_290;
/* 0x294 */ f32 unk_294;
/* 0x298 */ f32 unk_298;
/* 0x29C */ s16 unk_29C;
/* 0x29E */ s16 unk_29E;
/* 0x2A0 */ s16 unk_2A0;
/* 0x2A2 */ u8 worldMapPoints[20];
/* 0x2B6 */ u8 unk_2B6;
/* 0x2B7 */ u8 unk_2B7;
/* 0x2B8 */ u8 unk_2B8;
/* 0x2B9 */ u8 unk_2B9;
/* 0x2BA */ s16 unk_2BA;
/* 0x2BC */ s16 unk_2BC;
/* 0x2BE */ s16 unk_2BE[5];
/* 0x2C8 */ u16 unk_2C8;
/* 0x2CA */ s16 unk_2CA;
} PauseContext; // size = 0x2D0
typedef struct {
/* 0x000 */ View view;
/* 0x168 */ char unk_168[0xB4];
/* 0x168 */ Vtx* actionVtx;
/* 0x16C */ Vtx* beatingHeartVtx;
/* 0x170 */ u8* parameterSegment;
/* 0x174 */ u8* doActionSegment;
/* 0x178 */ u8* iconItemSegment;
/* 0x17C */ u8* mapSegment;
/* 0x180 */ u8* unk_180;
/* 0x184 */ DmaRequest dmaRequest_184;
/* 0x1A4 */ DmaRequest dmaRequest_1A4;
/* 0x1C4 */ DmaRequest dmaRequest_1C4;
/* 0x1E4 */ OSMesgQueue loadQueue;
/* 0x1FC */ OSMesg loadMsg;
/* 0x200 */ Viewport viewport;
/* 0x210 */ s16 unk_210;
/* 0x212 */ u16 unk_212;
/* 0x214 */ u16 unk_214;
/* 0x218 */ f32 unk_218;
/* 0x21C */ s16 unk_21C;
/* 0x21E */ s16 unk_21E;
/* 0x220 */ char unk_220[6];
/* 0x226 */ s16 lifeColorChange;
/* 0x228 */ s16 lifeColorChangeDirection;
/* 0x22A */ s16 unk22A;
/* 0x22C */ s16 unk22C;
/* 0x22E */ s16 unk22E;
/* 0x230 */ s16 unk230;
/* 0x232 */ s16 unk232;
/* 0x234 */ s16 unk234;
/* 0x236 */ s16 unk236;
/* 0x238 */ s16 unk238;
/* 0x23A */ s16 unk23A;
/* 0x23C */ s16 unk23C;
/* 0x23E */ s16 unk23E;
/* 0x240 */ s16 unk240;
/* 0x242 */ s16 unk242;
/* 0x244 */ s16 unk244;
/* 0x246 */ s16 unk246;
/* 0x248 */ s16 unk248;
/* 0x24A */ s16 unk24A;
/* 0x24C */ s16 unk24C;
/* 0x24E */ s16 unk24E;
/* 0x250 */ s16 unk250;
/* 0x252 */ s16 lifeSizeChange;
/* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing
/* 0x256 */ char unk_256[0x06];
/* 0x25C */ u16 unk25C;
/* 0x25E */ char unk_25E[0x12];
/* 0x270 */ s16 lifeAlpha;
/* 0x272 */ char unk_272[0xD6];
/* 0x220 */ s16 unk_220;
/* 0x222 */ s16 unk_222;
/* 0x224 */ s16 unk_224;
/* 0x226 */ s16 unk_226;
/* 0x228 */ s16 unk_228;
/* 0x22A */ s16 beatingHeartPrim[3];
/* 0x230 */ s16 beatingHeartEnv[3];
/* 0x236 */ s16 heartsPrimR[2];
/* 0x23A */ s16 heartsPrimG[2];
/* 0x23E */ s16 heartsPrimB[2];
/* 0x242 */ s16 heartsEnvR[2];
/* 0x246 */ s16 heartsEnvG[2];
/* 0x24A */ s16 heartsEnvB[2];
/* 0x24E */ s16 unk_24E;
/* 0x250 */ s16 unk_250;
/* 0x252 */ s16 unk_252;
/* 0x254 */ s16 beatingHeartState; // 1 means shrinking, 0 growing
/* 0x256 */ s16 unk_256;
/* 0x258 */ s16 unk_258;
/* 0x25A */ u8 numHorseBoosts;
/* 0x25C */ u16 unk_25C;
/* 0x25E */ u16 unk_25E;
/* 0x260 */ u16 hbaAmmo;
/* 0x262 */ u16 unk_262;
/* 0x264 */ s16 unk_264;
/* 0x266 */ s16 aAlpha;
/* 0x268 */ s16 bAlpha;
/* 0x26A */ s16 cLeftAlpha;
/* 0x26C */ s16 cDownAlpha;
/* 0x26E */ s16 cRightAlpha;
/* 0x270 */ s16 healthAlpha;
/* 0x272 */ s16 magicAlpha;
/* 0x274 */ s16 minimapAlpha;
/* 0x276 */ s16 startAlpha;
/* 0x278 */ s16 unk_278;
/* 0x27A */ s16 unk_27A;
/* 0x27C */ s16 mapRoomNum;
/* 0x27E */ u8 unk_27E;
/* 0x27F */ u8 unk_27F;
/* 0x280 */ u8 unk_280;
/* 0x282 */ s16 unk_282;
/* 0x284 */ s16 unk_284;
/* 0x286 */ s16 unk_286;
/* 0x288 */ s16 unk_288;
/* 0x28A */ s16 unk_28A[8];
/* 0x29A */ u16 unk_29A[8];
/* 0x2AA */ s16 unk_2AA[8];
/* 0x2BC */ f32 unk_2BC[8];
/* 0x2DC */ f32 unk_2DC[8];
/* 0x2FC */ s16 unk_2FC[4];
/* 0x304 */ s16 unk_304;
/* 0x306 */ s16 unk_306;
/* 0x308 */ s16 unk_308;
/* 0x30A */ s16 unk_30A;
/* 0x30C */ s16 unk_30C;
struct {
/* 0x30E */ u8 unk_30E; // "h_gauge"
/* 0x30F */ u8 bButton;
/* 0x310 */ u8 aButton;
/* 0x311 */ u8 tradeItems;
/* 0x312 */ u8 unk_312;
/* 0x313 */ u8 unk_313;
/* 0x314 */ u8 unk_314;
/* 0x315 */ u8 songOfSoaring;
/* 0x316 */ u8 songOfStorms;
/* 0x317 */ u8 unk_317;
/* 0x318 */ u8 pictographBox;
/* 0x319 */ u8 all; // "another"; enables all item restrictions
} restrictions; // size = 0xC
/* 0x31A */ u8 unk_31A;
/* 0x31B */ u8 unk_31B;
/* 0x31C */ u8 unk_31C;
/* 0x320 */ OSMesgQueue unk_320;
/* 0x338 */ OSMesg unk_338;
/* 0x33C */ void* unk_33C;
/* 0x340 */ u32 unk_340;
/* 0x344 */ u32 unk_344;
} InterfaceContext; // size = 0x348
// us rev 1: 803FDB24
typedef struct KankyoContext {
/* 0x00 */ UNK_TYPE1 unk0;
/* 0x01 */ UNK_TYPE1 unk1;
/* 0x02 */ u16 unk2;
/* 0x04 */ f32 unk4;
/* 0x08 */ f32 unk8;
/* 0x0C */ f32 unkC;
/* 0x10 */ u8 unk10;
/* 0x11 */ u8 unk11;
/* 0x12 */ UNK_TYPE1 unk12;
/* 0x13 */ UNK_TYPE1 unk13;
/* 0x14 */ UNK_TYPE1 unk14;
/* 0x15 */ u8 unk15;
/* 0x16 */ u8 unk16;
/* 0x17 */ u8 unk17;
/* 0x18 */ u8 unk18;
/* 0x19 */ UNK_TYPE1 unk19;
/* 0x1A */ UNK_TYPE1 unk1A;
/* 0x1B */ UNK_TYPE1 unk1B;
/* 0x1C */ UNK_TYPE1 unk1C;
/* 0x1D */ UNK_TYPE1 unk1D;
/* 0x1E */ u8 unk1E;
/* 0x1F */ u8 unk1F;
/* 0x20 */ u8 unk20;
/* 0x21 */ u8 unk21;
/* 0x22 */ u16 unk22;
/* 0x24 */ u16 unk24;
/* 0x26 */ UNK_TYPE1 unk26;
/* 0x27 */ UNK_TYPE1 unk27;
/* 0x28 */ LightInfo unk28;
/* 0x36 */ LightInfo unk36;
/* 0x44 */ UNK_TYPE1 unk44;
/* 0x45 */ UNK_TYPE1 unk45;
/* 0x46 */ UNK_TYPE1 unk46;
/* 0x47 */ UNK_TYPE1 unk47;
/* 0x48 */ UNK_TYPE1 unk48;
/* 0x49 */ UNK_TYPE1 unk49;
/* 0x4A */ UNK_TYPE1 unk4A;
/* 0x4B */ UNK_TYPE1 unk4B;
/* 0x4C */ UNK_TYPE1 unk4C;
/* 0x4D */ UNK_TYPE1 unk4D;
/* 0x4E */ UNK_TYPE1 unk4E;
/* 0x4F */ UNK_TYPE1 unk4F;
/* 0x50 */ UNK_TYPE1 unk50;
/* 0x51 */ UNK_TYPE1 unk51;
/* 0x52 */ UNK_TYPE1 unk52;
/* 0x53 */ UNK_TYPE1 unk53;
/* 0x54 */ UNK_TYPE1 unk54;
/* 0x55 */ UNK_TYPE1 unk55;
/* 0x56 */ UNK_TYPE1 unk56;
/* 0x57 */ UNK_TYPE1 unk57;
/* 0x58 */ UNK_TYPE1 unk58;
/* 0x59 */ UNK_TYPE1 unk59;
/* 0x5A */ UNK_TYPE1 unk5A;
/* 0x5B */ UNK_TYPE1 unk5B;
/* 0x5C */ UNK_TYPE1 unk5C;
/* 0x5D */ UNK_TYPE1 unk5D;
/* 0x5E */ UNK_TYPE1 unk5E;
/* 0x5F */ UNK_TYPE1 unk5F;
/* 0x60 */ UNK_TYPE1 unk60;
/* 0x61 */ UNK_TYPE1 unk61;
/* 0x62 */ UNK_TYPE1 unk62;
/* 0x63 */ UNK_TYPE1 unk63;
/* 0x64 */ UNK_TYPE1 unk64;
/* 0x65 */ UNK_TYPE1 unk65;
/* 0x66 */ UNK_TYPE1 unk66;
/* 0x67 */ UNK_TYPE1 unk67;
/* 0x68 */ UNK_TYPE1 unk68;
/* 0x69 */ UNK_TYPE1 unk69;
/* 0x6A */ UNK_TYPE1 unk6A;
/* 0x6B */ UNK_TYPE1 unk6B;
/* 0x6C */ UNK_TYPE1 unk6C;
/* 0x6D */ UNK_TYPE1 unk6D;
/* 0x6E */ UNK_TYPE1 unk6E;
/* 0x6F */ UNK_TYPE1 unk6F;
/* 0x70 */ UNK_TYPE1 unk70;
/* 0x71 */ UNK_TYPE1 unk71;
/* 0x72 */ UNK_TYPE1 unk72;
/* 0x73 */ UNK_TYPE1 unk73;
/* 0x74 */ UNK_TYPE1 unk74;
/* 0x75 */ UNK_TYPE1 unk75;
/* 0x76 */ UNK_TYPE1 unk76;
/* 0x77 */ UNK_TYPE1 unk77;
/* 0x78 */ UNK_TYPE1 unk78;
/* 0x79 */ UNK_TYPE1 unk79;
/* 0x7A */ UNK_TYPE1 unk7A;
/* 0x7B */ UNK_TYPE1 unk7B;
/* 0x7C */ UNK_TYPE1 unk7C;
/* 0x7D */ UNK_TYPE1 unk7D;
/* 0x7E */ UNK_TYPE1 unk7E;
/* 0x7F */ UNK_TYPE1 unk7F;
/* 0x80 */ UNK_TYPE1 unk80;
/* 0x81 */ UNK_TYPE1 unk81;
/* 0x82 */ UNK_TYPE1 unk82;
/* 0x83 */ UNK_TYPE1 unk83;
/* 0x84 */ UNK_TYPE1 unk84;
/* 0x85 */ UNK_TYPE1 unk85;
/* 0x86 */ UNK_TYPE1 unk86;
/* 0x87 */ UNK_TYPE1 unk87;
/* 0x88 */ UNK_TYPE1 unk88;
/* 0x89 */ UNK_TYPE1 unk89;
/* 0x8A */ UNK_TYPE1 unk8A;
/* 0x8B */ UNK_TYPE1 unk8B;
/* 0x8C */ Vec3s unk8C;
/* 0x92 */ Vec3s unk92;
/* 0x98 */ Vec3s unk98;
/* 0x9E */ Vec3s unk9E;
/* 0xA4 */ s16 unkA4;
/* 0xA6 */ s16 unkA6;
/* 0xA8 */ UNK_TYPE1 unkA8;
/* 0xA9 */ UNK_TYPE1 unkA9;
/* 0xAA */ UNK_TYPE1 unkAA;
/* 0xAB */ UNK_TYPE1 unkAB;
/* 0xAC */ s16 windWest;
/* 0xAE */ s16 windVertical;
/* 0xB0 */ s16 windSouth;
/* 0xB2 */ UNK_TYPE1 unkB2;
/* 0xB3 */ UNK_TYPE1 unkB3;
/* 0xB4 */ f32 windClothIntensity;
/* 0xB8 */ u8 environmentSettingsCount;
/* 0xB9 */ UNK_TYPE1 unkB9;
/* 0xBA */ UNK_TYPE1 unkBA;
/* 0xBB */ UNK_TYPE1 unkBB;
/* 0xBC */ void* environmentSettingsList;
/* 0xC0 */ UNK_TYPE1 unkC0;
/* 0xC1 */ u8 unkC1;
/* 0xC2 */ u8 unkC2;
/* 0xC3 */ u8 unkC3;
/* 0xC4 */ Color_RGB8 unkC4;
/* 0xC7 */ s8 unkC7;
/* 0xC8 */ s8 unkC8;
/* 0xC9 */ s8 unkC9;
/* 0xCA */ Color_RGB8 unkCA;
/* 0xCD */ s8 unkCD;
/* 0xCE */ s8 unkCE;
/* 0xCF */ s8 unkCF;
/* 0xD0 */ Color_RGB8 unkD0;
/* 0xD3 */ Color_RGB8 unkD3;
/* 0xD6 */ s16 unkD6;
/* 0xD8 */ s16 unkD8;
/* 0xDA */ UNK_TYPE1 unkDA;
/* 0xDB */ UNK_TYPE1 unkDB;
/* 0xDC */ f32 unkDC;
/* 0xE0 */ u8 unkE0;
/* 0xE1 */ UNK_TYPE1 unkE1;
/* 0xE2 */ s8 unkE2;
/* 0xE3 */ u8 unkE3; // modified by unused func in EnWeatherTag
/* 0xE4 */ UNK_TYPE1 unkE4;
/* 0xE5 */ UNK_TYPE1 unkE5;
/* 0xE6 */ UNK_TYPE1 unkE6;
/* 0xE7 */ UNK_TYPE1 unkE7;
/* 0xE8 */ UNK_TYPE1 unkE8;
/* 0xE9 */ UNK_TYPE1 unkE9;
/* 0xEA */ u8 unkEA;
/* 0xEB */ UNK_TYPE1 unkEB;
/* 0xEC */ UNK_TYPE1 unkEC;
/* 0xED */ UNK_TYPE1 unkED;
/* 0xEE */ UNK_TYPE1 unkEE;
/* 0xEF */ UNK_TYPE1 unkEF;
/* 0xF0 */ UNK_TYPE1 unkF0;
/* 0xF1 */ UNK_TYPE1 unkF1;
/* 0xF2 */ u8 unkF2[0xC]; // F2-F6 are used by weather tag
} KankyoContext; // size = 0xFE
typedef struct {
/* 0x00 */ u16 unk_0;
/* 0x02 */ u16 unk_2;
/* 0x04 */ f32 unk_4;
/* 0x08 */ f32 unk_8;
/* 0x0C */ f32 unk_C;
/* 0x10 */ u8 unk_10;
/* 0x11 */ u8 unk_11;
/* 0x12 */ u8 unk_12;
/* 0x13 */ u8 unk_13;
/* 0x14 */ u8 unk_14;
/* 0x15 */ u8 unk_15;
/* 0x16 */ u8 unk_16;
/* 0x17 */ u8 unk_17;
/* 0x18 */ u8 unk_18;
/* 0x19 */ u8 unk_19;
/* 0x1A */ u16 unk_1A;
/* 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;
/* 0x26 */ u8 unk_26;
/* 0x28 */ LightInfo unk_28; // 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;
/* 0x8C */ LightSettings2 unk_8C;
/* 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;
/* 0xC3 */ u8 unk_C3;
/* 0xC4 */ LightSettings unk_C4;
/* 0xDA */ u16 unk_DA;
/* 0xDC */ f32 unk_DC;
/* 0xE0 */ u8 unk_E0;
/* 0xE1 */ u8 unk_E1;
/* 0xE2 */ s8 unk_E2;
/* 0xE3 */ u8 unk_E3; // modified by unused func in EnWeatherTag
/* 0xE4 */ u8 unk_E4;
/* 0xE5 */ u8 unk_E5;
/* 0xE6 */ u8 unk_E6[4];
/* 0xEA */ u8 unk_EA;
/* 0xEB */ u8 unk_EB;
/* 0xEC */ u8 unk_EC;
/* 0xED */ u8 unk_ED;
/* 0xEE */ u8 unk_EE[4];
/* 0xF2 */ u8 unk_F2[8];
/* 0xFA */ u8 unk_FA[4];
} EnvironmentContext; // size = 0x100
typedef struct {
/* 0x00000 */ View view;
@@ -893,7 +943,7 @@ typedef struct {
/* 0x4C */ u8 unk_4C;
/* 0x4D */ u8 unk_4D;
/* 0x4E */ char unk_4E[2];
} PreRenderContext; // size = 0x50
} PreRender; // size = 0x50
typedef struct {
/* 0x00 */ void* timg;
@@ -914,9 +964,7 @@ typedef struct {
typedef struct {
/* 0x00000 */ View view;
/* 0x00168 */ Font font;
/* 0x0A7E8 */ UNK_TYPE1 padA7E8[0x7708];
/* 0x11EF0 */ u8 unk11EF0;
/* 0x11EF1 */ UNK_TYPE1 pad11EF1[0x13];
/* 0x11EF4 */ char unk_11EF4[0x10];
/* 0x11F04 */ u16 unk11F04;
/* 0x11F06 */ UNK_TYPE1 pad11F06[0x4];
/* 0x11F0A */ u8 unk11F0A;
@@ -938,8 +986,8 @@ typedef struct {
/* 0x12070 */ UNK_TYPE1 pad12070[0x8];
/* 0x12078 */ s32 bankRupeesSelected;
/* 0x1207C */ s32 bankRupees;
/* 0x12080 */ UNK_TYPE1 pad12080[0x58];
} MessageContext; // size = 0x120D8
/* 0x12080 */ UNK_TYPE1 pad12080[0x60];
} MessageContext; // size = 0x120E0
typedef struct ActorBgMbarChair ActorBgMbarChair;
@@ -1076,18 +1124,17 @@ struct PreNMIContext {
struct TitleContext {
/* 0x000 */ GameState state;
/* 0x0A4 */ u8* nintendo_logo_data;
/* 0x0A4 */ u8* staticSegment;
/* 0x0A8 */ View view;
/* 0x210 */ SramContext sram;
/* 0x230 */ UNK_TYPE1 pad230[0x8];
/* 0x238 */ s16 unk238;
/* 0x23A */ s16 logoCoverAlpha;
/* 0x23C */ s16 logoCoverAlphaChangePerFrame;
/* 0x23E */ s16 logoFullVisibilityDuration;
/* 0x240 */ s16 frameCounter;
/* 0x242 */ UNK_TYPE2 frameCounterMod0x80;
/* 0x244 */ u8 switchToNextGameState;
/* 0x245 */ UNK_TYPE1 pad245[0x3];
/* 0x210 */ SramContext sramCtx;
/* 0x238 */ s16 mode;
/* 0x23A */ s16 timer;
/* 0x23C */ s16 coverAlpha;
/* 0x23E */ s16 addAlpha;
/* 0x240 */ s16 visibleDuration;
/* 0x242 */ s16 ult;
/* 0x244 */ s16 uls;
/* 0x246 */ u8 exit;
}; // size = 0x248
struct DaytelopContext {
@@ -1102,52 +1149,96 @@ struct DaytelopContext {
}; // size = 0x248
struct FileChooseContext {
/* 0x00000 */ GameState common;
/* 0x000A4 */ UNK_TYPE1 padA4[0x14];
/* 0x00000 */ GameState state;
/* 0x000A8 */ u8* staticSegment;
/* 0x000AC */ u8* parameterSegment;
/* 0x000B0 */ u8* titleSegment;
/* 0x000B8 */ View view;
/* 0x00220 */ SramContext sram;
/* 0x00240 */ UNK_TYPE1 pad240[0x12310];
/* 0x12550 */ Font unk12550;
/* 0x1CBD0 */ UNK_TYPE1 pad1CBD0[0x78B0];
/* 0x24480 */ s16 unk24480;
/* 0x24482 */ UNK_TYPE1 pad24482[0x2];
/* 0x24484 */ s16 unk24484;
/* 0x24486 */ s16 unk24486;
/* 0x24488 */ UNK_TYPE1 pad24488[0x4];
/* 0x2448C */ s16 unk2448C;
/* 0x2448E */ UNK_TYPE1 pad2448E[0x1A];
/* 0x244A8 */ s16 unk244A8;
/* 0x244AA */ UNK_TYPE1 pad244AA[0x2];
/* 0x244AC */ s16 unk244AC;
/* 0x244AE */ s16 unk244AE;
/* 0x244B0 */ s16 unk244B0;
/* 0x244B2 */ s16 unk244B2;
/* 0x244B4 */ s16 unk244B4;
/* 0x244B6 */ s16 unk244B6;
/* 0x244B8 */ s16 unk244B8;
/* 0x244BA */ s16 unk244BA;
/* 0x244BC */ UNK_TYPE1 pad244BC[0x18];
/* 0x244D4 */ s16 unk244D4;
/* 0x244D6 */ UNK_TYPE1 pad244D6[0x4];
/* 0x244DA */ s16 unk244DA;
/* 0x244DC */ UNK_TYPE1 pad244DC[0xA];
/* 0x244E6 */ s16 unk244E6;
/* 0x244E8 */ UNK_TYPE1 pad244E8[0x8];
/* 0x244F0 */ s16 unk244F0;
/* 0x244F2 */ s16 unk244F2;
/* 0x244F4 */ UNK_TYPE1 pad244F4[0x6];
/* 0x244FA */ s16 inputXChangeCooldown;
/* 0x244FC */ s16 inputYChangeCooldown;
/* 0x244FE */ s16 inputXDir;
/* 0x24500 */ s16 inputYDir;
/* 0x24502 */ s16 inputX;
/* 0x24504 */ s16 inputY;
/* 0x24506 */ UNK_TYPE1 pad24506[0x2];
/* 0x24508 */ s16 unk24508;
/* 0x2450A */ s16 unk2450A;
/* 0x2450C */ UNK_TYPE1 pad2450C[0x1C];
/* 0x24528 */ s16 unk24528;
/* 0x2452A */ UNK_TYPE1 pad2452A[0x2E];
/* 0x00220 */ SramContext sramCtx;
/* 0x00248 */ SkyboxContext skyboxCtx;
/* 0x00470 */ MessageContext msgCtx;
/* 0x12550 */ Font font;
/* 0x242E0 */ EnvironmentContext envCtx;
/* 0x243E0 */ Vtx* unk_243E0;
/* 0x243E4 */ Vtx* unk_243E4;
/* 0x243E8 */ Vtx* unk_243E8;
/* 0x243EC */ Vtx* unk_243EC;
/* 0x243F0 */ Vtx* unk_243F0;
/* 0x243F4 */ u8 newf[6][4];
/* 0x2440C */ u16 unk_2440C[4];
/* 0x24414 */ u8 unk_24414[8][4];
/* 0x24434 */ s16 healthCapacity[4];
/* 0x2443C */ s16 health[4];
/* 0x24444 */ u32 unk_24444[4];
/* 0x24454 */ s8 unk_24454[4];
/* 0x24458 */ u16 unk_24458[4];
/* 0x24460 */ s16 unk_24460[4];
/* 0x24468 */ u8 unk_24468[4];
/* 0x2446C */ s16 rupees[4];
/* 0x24474 */ u8 unk_24474[4];
/* 0x24478 */ u8 unk_24478[4];
/* 0x2447C */ u8 unk_2447C[4];
/* 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 unk_244A6;
/* 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;
}; // size = 0x24558
typedef struct AudioThreadStruct AudioThreadStruct;
@@ -1488,93 +1579,105 @@ struct ActorContext {
/* 0x269 */ UNK_TYPE1 pad269[0x1B];
}; // size = 0x284
typedef struct {
/* 0x00 */ u8 seqIndex;
/* 0x01 */ u8 nightSeqIndex;
/* 0x02 */ u8 unk_02;
} SoundContext; // size = 0x3
typedef struct {
/* 0x00 */ s32 enabled;
/* 0x04 */ s32 timer;
} FrameAdvanceContext; // size = 0x8
typedef struct {
/* 0x00 */ u16 state;
} GameOverContext; // size = 0x02
struct GlobalContext {
/* 0x00000 */ GameState state;
/* 0x000A4 */ s16 sceneNum;
/* 0x000A6 */ u8 sceneConfig; // TODO: This at least controls the behavior of animated textures. Does it do more?
/* 0x000A7 */ UNK_TYPE1 padA7[0x9];
/* 0x000B0 */ SceneCmd* currentSceneVram;
/* 0x000B4 */ UNK_TYPE1 padB4[0x4];
/* 0x000A6 */ u8 sceneConfig;
/* 0x000A7 */ char unk_A7[0x9];
/* 0x000B0 */ void* sceneSegment;
/* 0x000B4 */ char unk_B4[0x4];
/* 0x000B8 */ View view;
/* 0x00220 */ Camera activeCameras[4];
/* 0x00220 */ Camera mainCamera;
/* 0x00398 */ Camera subCameras[3];
/* 0x00800 */ Camera* cameraPtrs[4];
/* 0x00810 */ s16 activeCamera;
/* 0x00812 */ s16 unk812;
/* 0x00814 */ u8 unk814;
/* 0x00815 */ u8 unk815;
/* 0x00816 */ UNK_TYPE1 pad816[0x2];
/* 0x00812 */ s16 nextCamera;
/* 0x00814 */ SoundContext soundCtx;
/* 0x00818 */ LightContext lightCtx;
/* 0x00828 */ u32 unk828;
/* 0x0082C */ UNK_TYPE1 pad82C[0x4];
/* 0x00828 */ FrameAdvanceContext frameAdvCtx;
/* 0x00830 */ CollisionContext colCtx;
/* 0x01CA0 */ ActorContext actorCtx;
/* 0x01F24 */ CutsceneContext csCtx;
/* 0x01F74 */ CutsceneEntry* cutsceneList;
/* 0x01F78 */ SoundSource soundSources[16];
/* 0x02138 */ EffFootmark footmarks[100];
/* 0x046B8 */ SramContext sram;
/* 0x046D8 */ UNK_TYPE1 pad46D8[0x8];
/* 0x02138 */ EffFootmark footprintInfo[100];
/* 0x046B8 */ SramContext sramCtx;
/* 0x046E0 */ SkyboxContext skyboxCtx;
/* 0x04908 */ MessageContext msgCtx;
/* 0x169E0 */ UNK_TYPE1 pad169E0[0x8];
/* 0x169E8 */ InterfaceContext interfaceCtx;
/* 0x16D30 */ PauseContext pauseCtx;
/* 0x17000 */ u16 unk17000;
/* 0x17002 */ UNK_TYPE1 pad17002[0x2];
/* 0x17004 */ KankyoContext kankyoContext;
/* 0x17000 */ GameOverContext gameOverCtx;
/* 0x17004 */ EnvironmentContext envCtx;
/* 0x17104 */ AnimationContext animationCtx;
/* 0x17D88 */ ObjectContext objectCtx;
/* 0x186E0 */ RoomContext roomContext;
/* 0x18760 */ TransitionContext transitionCtx;
/* 0x186E0 */ RoomContext roomCtx;
/* 0x18760 */ DoorContext doorCtx;
/* 0x18768 */ void (*playerInit)(Player* player, struct GlobalContext* globalCtx, FlexSkeletonHeader* skelHeader);
/* 0x1876C */ void (*playerUpdate)(Player* player, struct GlobalContext* globalCtx, Input* input);
/* 0x18770 */ UNK_TYPE1 pad18770[0x8];
/* 0x18770 */ void* unk_18770; //! @TODO: Determine function prototype
/* 0x18774 */ s32 (*startPlayerFishing)(struct GlobalContext* globalCtx);
/* 0x18778 */ s32 (*grabPlayer)(struct GlobalContext* globalCtx, Player* player);
/* 0x1877C */ s32 (*func_1877C)(struct GlobalContext* globalCtx, Player* player, s32 arg2);
/* 0x1877C */ s32 (*startPlayerCutscene)(struct GlobalContext* globalCtx, Player* player, s32 mode);
/* 0x18780 */ void (*func_18780)(Player* player, struct GlobalContext* globalCtx);
/* 0x18784 */ s32 (*damagePlayer)(struct GlobalContext* globalCtx, s32 damage);
/* 0x18788 */ UNK_TYPE1 pad18788[0x10];
/* 0x18798 */ void (*func_18798)(struct GlobalContext* globalCtx, void* arg1, s32 arg2);
/* 0x1879C */ UNK_TYPE1 pad1879C[0x14];
/* 0x187B0 */ MtxF unk187B0;
/* 0x187F0 */ UNK_TYPE1 pad187F0[0xC];
/* 0x187FC */ MtxF unk187FC;
/* 0x1883C */ UNK_TYPE1 pad1883C[0x4];
/* 0x18788 */ void (*talkWithPlayer)(struct GlobalContext* globalCtx, Actor* actor);
/* 0x1878C */ void* unk_1878C; //! @TODO: Determine function prototype
/* 0x18790 */ void* unk_18790; //! @TODO: Determine function prototype
/* 0x18794 */ void* unk_18794; //! @TODO: Determine function prototype
/* 0x18798 */ s32 (*setPlayerTalkAnim)(struct GlobalContext* globalCtx, void* talkAnim, s32 arg2);
/* 0x1879C */ s16 unk_1879C[10];
/* 0x187B0 */ MtxF projectionMatrix;
/* 0x187F0 */ Vec3f unk_187F0;
/* 0x187FC */ MtxF mf_187FC;
/* 0x1883C */ Mtx* unk_1883C;
/* 0x18840 */ u32 gameplayFrames;
/* 0x18844 */ u8 unk18844;
/* 0x18845 */ u8 unk18845;
/* 0x18846 */ u16 sceneNumActorsToLoad;
/* 0x18844 */ u8 unk_18844;
/* 0x18845 */ u8 unk_18845;
/* 0x18846 */ s16 numSetupActors;
/* 0x18848 */ u8 numRooms;
/* 0x18849 */ UNK_TYPE1 pad18849;
/* 0x1884A */ s16 unk1884A;
/* 0x1884C */ RomFile* roomList;
/* 0x18850 */ ActorEntry* linkActorEntry;
/* 0x18854 */ ActorEntry* setupActorList;
/* 0x18858 */ UNK_PTR unk18858;
/* 0x18858 */ void* unk_18858;
/* 0x1885C */ EntranceEntry* setupEntranceList;
/* 0x18860 */ u16* setupExitList;
/* 0x18864 */ Path* setupPathList;
/* 0x18868 */ UNK_PTR unk18868;
/* 0x18868 */ void* unk_18868;
/* 0x1886C */ AnimatedMaterial* sceneMaterialAnims;
/* 0x18870 */ UNK_TYPE1 pad18870[0x4];
/* 0x18874 */ u8 unk18874;
/* 0x18875 */ s8 unk18875;
/* 0x18876 */ UNK_TYPE1 pad18876[0x4];
/* 0x18870 */ void* specialEffects;
/* 0x18874 */ u8 skyboxId;
/* 0x18875 */ s8 sceneLoadFlag; // "fade_direction"
/* 0x18876 */ s16 unk_18876;
/* 0x18878 */ s16 unk_18878;
/* 0x1887A */ u16 nextEntranceIndex;
/* 0x1887C */ s8 unk1887C;
/* 0x1887D */ UNK_TYPE1 pad1887D[0x2];
/* 0x1887F */ u8 unk1887F;
/* 0x18880 */ UNK_TYPE1 pad18880[0x4];
/* 0x18884 */ CollisionCheckContext colCheckCtx;
/* 0x18B20 */ UNK_TYPE1 pad18B20[0x28];
/* 0x1887C */ s8 unk_1887C;
/* 0x1887D */ s8 unk_1887D;
/* 0x1887E */ s8 unk_1887E;
/* 0x1887F */ u8 unk_1887F;
/* 0x18880 */ u8 unk_18880;
/* 0x18884 */ CollisionCheckContext colChkCtx;
/* 0x18B20 */ u16 envFlags[20];
/* 0x18B48 */ u8 curSpawn;
/* 0x18B49 */ UNK_TYPE1 pad18B49[0x1];
/* 0x18B4A */ u8 unk18B4A;
/* 0x18B4B */ char pad18B4B[1];
/* 0x18B4C */ PreRenderContext preRenderCtx;
/* 0x18B49 */ u8 unk_18B49;
/* 0x18B4A */ u8 unk_18B4A;
/* 0x18B4C */ PreRender pauseBgPreRender;
/* 0x18B9C */ char unk_18B9C[0x2B8];
/* 0x18E54 */ SceneTableEntry* currentSceneTableEntry;
/* 0x18E58 */ UNK_TYPE1 pad18E58[0x400];
/* 0x18E54 */ SceneTableEntry* loadedScene;
/* 0x18E58 */ char unk_18E58[0x400];
}; // size = 0x19258
typedef struct {
+1 -1
View File
@@ -103,7 +103,7 @@ typedef struct {
/* 0x14 */ ActorInit* initInfo;
/* 0x18 */ char* name;
/* 0x1C */ u16 allocType; // bit 0: don't allocate memory, use actorContext->0x250? bit 1: Always keep loaded?
/* 0x1E */ s8 nbLoaded; // original name: "clients"
/* 0x1E */ s8 numLoaded; // original name: "clients"
/* 0x1F */ UNK_TYPE1 pad1F[0x1];
} ActorOverlay; // size = 0x20
+3 -3
View File
@@ -81,13 +81,13 @@ typedef struct {
typedef struct {
/* 0x00 */ Vec3s minBounds; // minimum coordinates of poly bounding box
/* 0x06 */ Vec3s maxBounds; // maximum coordinates of poly bounding box
/* 0x0C */ u16 nbVertices;
/* 0x0C */ u16 numVertices;
/* 0x10 */ Vec3s* vtxList;
/* 0x14 */ u16 nbPolygons;
/* 0x14 */ u16 numPolygons;
/* 0x18 */ CollisionPoly* polyList;
/* 0x1C */ SurfaceType* surfaceTypeList;
/* 0x20 */ CamData* cameraDataList;
/* 0x24 */ u16 nbWaterBoxes;
/* 0x24 */ u16 numWaterBoxes;
/* 0x28 */ WaterBox* waterBoxes;
} CollisionHeader; // original name: BGDataInfo
+21
View File
@@ -4,6 +4,27 @@
#include <ultra64.h>
#include <unk.h>
typedef struct {
/* 0x00 */ s8 continueFlag;
/* 0x01 */ s8 cameraRoll;
/* 0x02 */ u16 nextPointFrame;
/* 0x04 */ f32 viewAngle; // in degrees
/* 0x08 */ Vec3s pos;
} CutsceneCameraPoint; // size = 0x10
typedef struct {
/* 0x00 */ Vec3f at;
/* 0x0C */ Vec3f eye;
/* 0x18 */ s16 roll;
/* 0x1A */ s16 fov;
} CutsceneCameraAngle; // size = 0x1C
typedef struct {
/* 0x0 */ CutsceneCameraPoint* atPoints;
/* 0x4 */ CutsceneCameraPoint* eyePoints;
/* 0x8 */ s16 relativeToPlayer;
} CutsceneCameraMove; // size = 0xC
typedef struct {
/* 0x00 */ u16 unk0; // action; // "dousa"
/* 0x02 */ u16 startFrame;
+20
View File
@@ -5,6 +5,26 @@
#include <PR/gbi.h>
#include <color.h>
typedef struct {
/* 0x00 */ u8 ambientColor[3];
/* 0x03 */ s8 diffuseDir1[3];
/* 0x06 */ u8 diffuseColor1[3];
/* 0x09 */ s8 diffusePos2[3];
/* 0x0C */ u8 diffuseColor[3];
/* 0x0F */ u8 fogColor[3];
/* 0x12 */ u16 fogNear;
/* 0x14 */ u16 fogFar;
} LightSettings; // size = 0x16
typedef struct {
/* 0x00 */ s16 ambientColor[3];
/* 0x06 */ s16 diffuseColor1[3];
/* 0x0C */ s16 diffuseColor2[3];
/* 0x12 */ s16 fogColor[3];
/* 0x18 */ s16 fogNear;
/* 0x1A */ s16 fogFar;
} LightSettings2; // size = 0x1C
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
+6 -17
View File
@@ -299,9 +299,9 @@ typedef struct {
} TransitionActorEntry; // size = 0x10
typedef struct {
/* 0x00 */ u8 nbTransitionActors;
/* 0x00 */ u8 numTransitionActors;
/* 0x04 */ TransitionActorEntry* transitionActorList;
} TransitionContext;
} DoorContext;
typedef struct {
/* 0x0 */ s16 id;
@@ -468,17 +468,6 @@ typedef struct {
u32 dListEnd;
} MeshHeader2;
typedef struct {
u8 ambientClrR, ambientClrG, ambientClrB;
u8 diffuseClrA_R, diffuseClrA_G, diffuseClrA_B;
u8 diffuseDirA_X, diffuseDirA_Y, diffuseDirA_Z;
u8 diffuseClrB_R, diffuseClrB_G, diffuseClrB_B;
u8 diffuseDirB_X, diffuseDirB_Y, diffuseDirB_Z;
u8 fogClrR, fogClrG, fogClrB;
u16 unk;
u16 drawDistance;
} LightSettings;
typedef struct {
/* 0x00 */ u8 count; // number of points in the path
/* 0x01 */ s8 unk1;
@@ -664,7 +653,7 @@ typedef enum {
/* 0x70 */ SCENE_ALLEY
} SceneID;
// Scene draw configs
// SceneTableEntry draw configs
typedef enum {
/* 0 */ SCENE_DRAW_CFG_DEFAULT,
/* 1 */ SCENE_DRAW_CFG_MAT_ANIM,
@@ -676,7 +665,7 @@ typedef enum {
/* 7 */ SCENE_DRAW_CFG_MAT_ANIM_MANUAL_STEP
} SceneDrawConfigIds;
// Scene commands
// SceneTableEntry commands
typedef enum {
/* 0x00 */ SCENE_CMD_ID_SPAWN_LIST,
/* 0x01 */ SCENE_CMD_ID_ACTOR_LIST,
@@ -759,8 +748,8 @@ typedef enum {
#define SCENE_CMD_PATH_LIST(pathList) \
{ SCENE_CMD_ID_PATH_LIST, 0, CMD_PTR(pathList) }
#define SCENE_CMD_TRANSITION_ACTOR_LIST(numTransitionActors, transitionActorList) \
{ SCENE_CMD_ID_TRANSI_ACTOR_LIST, numTransitionActors, CMD_PTR(transitionActorList) }
#define SCENE_CMD_TRANSITION_ACTOR_LIST(numTransitionActors, actorList) \
{ SCENE_CMD_ID_TRANSI_ACTOR_LIST, numTransitionActors, CMD_PTR(actorList) }
#define SCENE_CMD_ENV_LIGHT_SETTINGS(numLightSettings, lightSettingsList) \
{ SCENE_CMD_ID_ENV_LIGHT_SETTINGS, numLightSettings, CMD_PTR(lightSettingsList) }