mirror of https://github.com/zeldaret/mm.git
3105 lines
78 KiB
C
3105 lines
78 KiB
C
#ifndef _STRUCTS_H_
|
|
#define _STRUCTS_H_
|
|
|
|
#include <all_types.h>
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 priority; // Lower means higher priority. -1 means it ignores priority
|
|
/* 0x2 */ s16 length;
|
|
/* 0x4 */ s16 unk4;
|
|
/* 0x6 */ s16 unk6;
|
|
/* 0x8 */ s16 additionalCutscene;
|
|
/* 0xA */ u8 sound;
|
|
/* 0xB */ u8 unkB;
|
|
/* 0xC */ s16 unkC;
|
|
/* 0xE */ u8 unkE;
|
|
/* 0xF */ u8 letterboxSize;
|
|
} ActorCutscene; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 attack[32];
|
|
} ActorDamageChart; // size = 0x20
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s32 unk0;
|
|
/* 0x04 */ s32 unk4;
|
|
/* 0x08 */ f32 unk8;
|
|
/* 0x0C */ f32 unkC;
|
|
/* 0x10 */ f32 unk10;
|
|
/* 0x14 */ f32 unk14;
|
|
/* 0x18 */ f32 unk18;
|
|
/* 0x1C */ f32 unk1C;
|
|
/* 0x20 */ f32 unk20;
|
|
/* 0x24 */ f32 unk24;
|
|
/* 0x28 */ f32 unk28;
|
|
/* 0x2C */ f32 unk2C;
|
|
/* 0x30 */ s16 unk30;
|
|
/* 0x32 */ s16 unk32;
|
|
/* 0x34 */ s16 unk34;
|
|
/* 0x36 */ s16 unk36;
|
|
/* 0x38 */ s16 unk38;
|
|
/* 0x3A */ s16 unk3A;
|
|
} ActorEnTest20C; // size = 0x3C
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 cont : 1;
|
|
/* 0x0 */ u32 type : 4;
|
|
/* 0x0 */ u32 offset : 11;
|
|
/* 0x2 */ s32 value : 16;
|
|
} ActorInitVar; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 polyStartIndex;
|
|
/* 0x2 */ s16 ceilingNodeHead;
|
|
/* 0x4 */ s16 wallNodeHead;
|
|
/* 0x6 */ s16 floorNodeHead;
|
|
} ActorMeshPolyLists; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s8 segment;
|
|
/* 0x2 */ s16 type;
|
|
/* 0x4 */ void* params;
|
|
} AnimatedTexture; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 floorHead;
|
|
/* 0x2 */ u16 wallHead;
|
|
/* 0x4 */ u16 ceilingHead;
|
|
} BgMeshSubdivision; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 attributes[2];
|
|
} BgPolygonAttributes; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 polyIndex;
|
|
/* 0x2 */ u16 next;
|
|
} BgPolygonLinkedListNode; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 maxNodes;
|
|
/* 0x2 */ u16 reservedNodes;
|
|
/* 0x4 */ BgPolygonLinkedListNode* nodes;
|
|
/* 0x8 */ u8* unk8;
|
|
} BgScenePolygonLists; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 sceneNumber;
|
|
/* 0x2 */ UNK_TYPE1 pad2[0x2];
|
|
/* 0x4 */ u32 maxMemory;
|
|
} BgSpecialSceneMaxMemory; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 sceneId;
|
|
/* 0x2 */ s16 maxNodes;
|
|
/* 0x4 */ s16 maxPolygons;
|
|
/* 0x6 */ s16 maxVertices;
|
|
} BgSpecialSceneMaxObjects; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 sceneNumber;
|
|
/* 0x2 */ s16 xSubdivisions;
|
|
/* 0x4 */ s16 ySubdivisions;
|
|
/* 0x6 */ s16 zSubdivisions;
|
|
/* 0x8 */ s32 unk8;
|
|
} BgSpecialSceneMeshSubdivision; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 func;
|
|
/* 0x2 */ UNK_TYPE1 pad2[0x6];
|
|
} CameraModeParams; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 validModes;
|
|
/* 0x4 */ UNK_TYPE1 pad4[0x4];
|
|
/* 0x8 */ CameraModeParams* modes;
|
|
} CameraStateParams; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 unk0;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 unk5;
|
|
} ColBumpInit; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 unk0;
|
|
/* 0x1 */ u8 unk1;
|
|
/* 0x2 */ u8 unk2;
|
|
/* 0x3 */ u8 unk3;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 type;
|
|
} ColCommonInit; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 collidesWith;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 damage;
|
|
} ColTouch; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 unk0;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 unk5;
|
|
} ColTouchInit; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 red;
|
|
/* 0x1 */ u8 green;
|
|
/* 0x2 */ u8 blue;
|
|
/* 0x3 */ u8 alpha;
|
|
} ColorRGBA8; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x2];
|
|
/* 0x02 */ u16 startFrame;
|
|
/* 0x04 */ u16 endFrame;
|
|
/* 0x06 */ UNK_TYPE1 pad6[0x2A];
|
|
} CsCmdActorAction; // size = 0x30
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 base;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
} CsCmdBase; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 unk0;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
/* 0x6 */ u8 hour;
|
|
/* 0x7 */ u8 minute;
|
|
} CsCmdDayTime; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 setting;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
} CsCmdEnvLighting; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 sequence;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
} CsCmdMusicChange; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 type;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
} CsCmdMusicFade; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 base;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
/* 0x6 */ u16 type;
|
|
/* 0x8 */ u16 textId1;
|
|
/* 0xA */ u16 textId2;
|
|
} CsCmdTextbox; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 unk0;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
/* 0x6 */ u8 unk6;
|
|
/* 0x7 */ u8 unk7;
|
|
/* 0x8 */ u8 unk8;
|
|
/* 0x9 */ UNK_TYPE1 pad9[0x3];
|
|
} CsCmdUnk190; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ UNK_TYPE4 unk0;
|
|
/* 0x4 */ UNK_TYPE4 unk4;
|
|
} CsCmdUnk5A; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 unk0;
|
|
/* 0x2 */ u16 startFrame;
|
|
/* 0x4 */ u16 endFrame;
|
|
/* 0x6 */ u8 unk6;
|
|
/* 0x7 */ u8 unk7;
|
|
/* 0x8 */ u8 unk8;
|
|
/* 0x9 */ UNK_TYPE1 pad9[0x3];
|
|
} CsCmdUnk9B; // 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
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 data;
|
|
/* 0x4 */ s16 unk4;
|
|
/* 0x6 */ u8 unk6;
|
|
/* 0x7 */ u8 unk7;
|
|
} CutsceneEntry; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 chestFlags;
|
|
/* 0x04 */ u32 switchFlags[2];
|
|
/* 0x0C */ u32 clearedRooms;
|
|
/* 0x10 */ u32 collectibleFlags;
|
|
} CycleSceneFlags; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 cycleLength;
|
|
/* 0x4 */ Gfx** textureDls;
|
|
/* 0x8 */ u8* textureDlOffsets;
|
|
} CyclingTextureParams; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 size;
|
|
/* 0x4 */ Gfx* buf;
|
|
/* 0x8 */ Gfx* p;
|
|
/* 0xC */ Gfx* d;
|
|
} DispBuf; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 vromStart;
|
|
/* 0x4 */ u32 vromEnd;
|
|
/* 0x8 */ u32 romStart;
|
|
/* 0xC */ u32 romEnd;
|
|
} DmaEntry; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 vromStart; // VROM address (source)
|
|
/* 0x04 */ void* dramAddr; // DRAM address (destination)
|
|
/* 0x08 */ u32 size; // File Transfer size
|
|
/* 0x0C */ char* filename; // Filename for debugging
|
|
/* 0x10 */ s32 line; // Line for debugging
|
|
/* 0x14 */ s32 unk14;
|
|
/* 0x18 */ OSMesgQueue* notifyQueue; // Message queue for the notification message
|
|
/* 0x1C */ OSMesg notifyMsg; // Completion notification message
|
|
} DmaRequest; // size = 0x20
|
|
|
|
typedef struct {
|
|
/* 0x000 */ UNK_TYPE1 pad0[0x184];
|
|
/* 0x184 */ ColorRGBA8 unk184;
|
|
/* 0x188 */ ColorRGBA8 unk188;
|
|
/* 0x18C */ ColorRGBA8 unk18C;
|
|
/* 0x190 */ ColorRGBA8 unk190;
|
|
/* 0x194 */ UNK_TYPE1 pad194[0xC];
|
|
} EffBlureInit1; // size = 0x1A0
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x8];
|
|
/* 0x08 */ ColorRGBA8 unk8;
|
|
/* 0x0C */ ColorRGBA8 unkC;
|
|
/* 0x10 */ ColorRGBA8 unk10;
|
|
/* 0x14 */ ColorRGBA8 unk14;
|
|
/* 0x18 */ UNK_TYPE1 pad18[0xC];
|
|
} EffBlureInit2; // size = 0x24
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x18];
|
|
} EffBlureParticle; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 active;
|
|
/* 0x1 */ u8 unk1;
|
|
/* 0x2 */ u8 unk2;
|
|
/* 0x3 */ UNK_TYPE1 pad3[0x1];
|
|
} EffCommon; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x00 */ f32 startSpeed;
|
|
/* 0x04 */ f32 endXChange;
|
|
/* 0x08 */ f32 endX;
|
|
/* 0x0C */ f32 startXChange;
|
|
/* 0x10 */ f32 startX;
|
|
/* 0x14 */ s16 rotationY;
|
|
/* 0x16 */ s16 rotationZ;
|
|
} EffShieldParticleParticle; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 unk0;
|
|
/* 0x2 */ s16 maxLife;
|
|
/* 0x4 */ ColorRGBA8 color;
|
|
} EffTireMarkInit; // size = 0x8
|
|
|
|
typedef enum EffectSSType {
|
|
EFFECT_SS2_TYPE_DUST = 0x0,
|
|
EFFECT_SS2_TYPE_SPARKLE = 0x1,
|
|
EFFECT_SS2_TYPE_DELETED_2 = 0x2,
|
|
EFFECT_SS2_TYPE_BOMB2 = 0x3,
|
|
EFFECT_SS2_TYPE_BLAST = 0x4,
|
|
EFFECT_SS2_TYPE_G_SPARK = 0x5,
|
|
EFFECT_SS2_TYPE_DODONGO_FIRE = 0x6,
|
|
EFFECT_SS2_TYPE_BUBBLE = 0x7,
|
|
EFFECT_SS2_TYPE_DELETED_8 = 0x8,
|
|
EFFECT_SS2_TYPE_G_RIPPLE = 0x9,
|
|
EFFECT_SS2_TYPE_G_SPLASH = 0xA,
|
|
EFFECT_SS2_TYPE_DELETED_B = 0xB,
|
|
EFFECT_SS2_TYPE_G_FIRE = 0xC,
|
|
EFFECT_SS2_TYPE_LIGHTNING = 0xD,
|
|
EFFECT_SS2_TYPE_BIG_OCTO_BUBBLE = 0xE,
|
|
EFFECT_SS2_TYPE_FRAGMENT = 0xF,
|
|
EFFECT_SS2_TYPE_STICK = 0x10,
|
|
EFFECT_SS2_TYPE_SPLASH = 0x11,
|
|
EFFECT_SS2_TYPE_DELETED_12 = 0x12,
|
|
EFFECT_SS2_TYPE_DELETED_13 = 0x13,
|
|
EFFECT_SS2_TYPE_STONE1 = 0x14,
|
|
EFFECT_SS2_TYPE_HIT_MARK = 0x15,
|
|
EFFECT_SS2_TYPE_PHANTOM_GANON_FLASH = 0x16,
|
|
EFFECT_SS2_TYPE_KAKARIKO_FIRE = 0x17,
|
|
EFFECT_SS2_TYPE_SOLDIER_SEARCH_BALL = 0x18,
|
|
EFFECT_SS2_TYPE_SHARD = 0x19,
|
|
EFFECT_SS2_TYPE_ICE_PIECE = 0x1A,
|
|
EFFECT_SS2_TYPE_ENEMY_ICE = 0x1B,
|
|
EFFECT_SS2_TYPE_FIRE_TAIL = 0x1C,
|
|
EFFECT_SS2_TYPE_ENEMY_FIRE = 0x1D,
|
|
EFFECT_SS2_TYPE_EXTRA = 0x1E,
|
|
EFFECT_SS2_TYPE_DELETED_1F = 0x1F,
|
|
EFFECT_SS2_TYPE_DEAD_DEKU_BABA = 0x20,
|
|
EFFECT_SS2_TYPE_DEAD_DODONGO = 0x21,
|
|
EFFECT_SS2_TYPE_DEAD_DEKU_SCRUB = 0x22,
|
|
EFFECT_SS2_TYPE_DELETED_23 = 0x23,
|
|
EFFECT_SS2_TYPE_ICE_SMOKE = 0x24,
|
|
EFFECT_SS2_TYPE_ICE_BLOCK = 0x25,
|
|
EFFECT_SS2_TYPE_SBN = 0x26,
|
|
EFFECT_SS2_TYPE_LAST_LABEL = 0x27
|
|
} EffectSSType;
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 spawn;
|
|
/* 0x1 */ u8 room;
|
|
} EntranceEntry; // size = 0x2
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s8 scene; // TODO what does it means for this to be neagtive?
|
|
/* 0x1 */ s8 unk1;
|
|
/* 0x2 */ u16 unk2;
|
|
} EntranceRecord; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 x;
|
|
/* 0x2 */ s16 y;
|
|
/* 0x4 */ s16 z;
|
|
/* 0x6 */ s16 reserved;
|
|
/* 0x8 */ s16 s;
|
|
/* 0xA */ s16 t;
|
|
/* 0xC */ s8 r;
|
|
/* 0xD */ s8 g;
|
|
/* 0xE */ s8 b;
|
|
/* 0xF */ s8 a;
|
|
} F3DVertexColor; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 x;
|
|
/* 0x2 */ s16 y;
|
|
/* 0x4 */ s16 z;
|
|
/* 0x6 */ s16 reserved;
|
|
/* 0x8 */ s16 s;
|
|
/* 0xA */ s16 t;
|
|
/* 0xC */ s8 normalX;
|
|
/* 0xD */ s8 normalY;
|
|
/* 0xE */ s8 normalZ;
|
|
/* 0xF */ s8 a;
|
|
} F3DVertexNormal; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ f32 size;
|
|
/* 0x4 */ f32 dynamicSizeStep;
|
|
/* 0x8 */ u8 state;
|
|
/* 0x9 */ u8 sizeGrowsCos2;
|
|
/* 0xA */ u8 unkA;
|
|
/* 0xB */ u8 flags;
|
|
/* 0xC */ u8 unkC;
|
|
} FireObjInitParams; // size = 0xD
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 unk0;
|
|
/* 0x1 */ u8 unk1;
|
|
/* 0x2 */ u8 unk2;
|
|
/* 0x3 */ u8 unk3;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 unk5;
|
|
/* 0x6 */ u8 unk6;
|
|
/* 0x7 */ u8 unk7;
|
|
} FireObjLightParams; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 red;
|
|
/* 0x1 */ u8 green;
|
|
/* 0x2 */ u8 blue;
|
|
/* 0x3 */ u8 alpha;
|
|
/* 0x4 */ u8 lodFrac;
|
|
} FlashingTexturePrimColor; // size = 0x5
|
|
|
|
// Font textures are loaded into here
|
|
typedef struct {
|
|
/* 0x0000 */ u8 unk0[2][120][128];
|
|
/* 0x7800 */ u8 unk7800[93][128];
|
|
} Font; // size = 0xA680
|
|
|
|
typedef struct {
|
|
/* 0x0000 */ u8 unk0;
|
|
/* 0x0001 */ u8 unk1;
|
|
/* 0x0002 */ u8 unk2;
|
|
/* 0x0003 */ u8 unk3;
|
|
/* 0x0004 */ u32 unk4;
|
|
/* 0x0008 */ UNK_TYPE1 pad8[0xC];
|
|
/* 0x0014 */ s16 data[2784]; // Accessed through REG macros
|
|
} GameInfo; // size = 0x15D4
|
|
|
|
typedef struct {
|
|
/* 0x0 */ UNK_TYPE4 size;
|
|
/* 0x4 */ void* heapStart;
|
|
/* 0x8 */ void* heapAppendStart;
|
|
/* 0xC */ void* heapAppendEnd;
|
|
} GameStateHeap; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00000 */ u16 headMagic; // 1234
|
|
/* 0x00008 */ Gfx unk8[96];
|
|
/* 0x00308 */ Gfx polyXluBuffer[2048];
|
|
/* 0x04308 */ Gfx overlayBuffer[1024];
|
|
/* 0x06308 */ Gfx unk6308[64];
|
|
/* 0x06508 */ Gfx unk6508[64];
|
|
/* 0x06708 */ Gfx polyOpaBuffer[13184];
|
|
/* 0x20308 */ u16 tailMagic; // 5678
|
|
} GfxPool; // size = 0x20310
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s32 unk0;
|
|
/* 0x04 */ UNK_TYPE1 pad4[0x40];
|
|
} GlobalContext17D98; // size = 0x44
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Gfx* polyOpaBuffer;
|
|
/* 0x004 */ Gfx* polyXluBuffer;
|
|
/* 0x008 */ UNK_TYPE1 pad8[0x8];
|
|
/* 0x010 */ Gfx* overlayBuffer;
|
|
/* 0x014 */ UNK_TYPE1 pad14[0x24];
|
|
/* 0x038 */ UNK_TYPE4 unk38[8];
|
|
/* 0x058 */ OSMesgQueue* unk58;
|
|
/* 0x05C */ OSMesgQueue unk5C;
|
|
/* 0x074 */ UNK_TYPE1 pad74[0x12C];
|
|
/* 0x1A0 */ Gfx* unk1A0;
|
|
/* 0x1A4 */ DispBuf unk1A4;
|
|
/* 0x1B4 */ Gfx* unk1B4;
|
|
/* 0x1B8 */ DispBuf unk1B8;
|
|
/* 0x1C8 */ UNK_TYPE1 pad1C8[0xAC];
|
|
/* 0x274 */ OSViMode* unk274;
|
|
/* 0x278 */ void* zbuffer;
|
|
/* 0x27C */ UNK_TYPE1 pad27C[0x1C];
|
|
/* 0x298 */ DispBuf overlay;
|
|
/* 0x2A8 */ DispBuf polyOpa;
|
|
/* 0x2B8 */ DispBuf polyXlu;
|
|
/* 0x2C8 */ s32 displaylistCounter;
|
|
/* 0x2CC */ void* framebuffer;
|
|
/* 0x2D0 */ UNK_TYPE1 pad2D0[0xB];
|
|
/* 0x2DB */ u8 framebufferCounter;
|
|
/* 0x2DC */ UNK_TYPE1 pad2DC[0x8];
|
|
/* 0x2E4 */ f32 unk2E4;
|
|
/* 0x2E8 */ f32 unk2E8;
|
|
/* 0x2EC */ UNK_TYPE1 pad2EC[0x4];
|
|
} GraphicsContext; // size = 0x2F0
|
|
|
|
typedef enum IRQ_MSG_TYPE {
|
|
IRQ_VERTICAL_RETRACE_MSG = 0x1,
|
|
IRQ_PRENMI_2_MSG = 0x3,
|
|
IRQ_PRENMI_1_MSG = 0x4
|
|
} IRQ_MSG_TYPE;
|
|
|
|
typedef enum IRQ_TYPE {
|
|
IRQ_VERTICAL_RETRACE = 0x29A,
|
|
IRQ_SP = 0x29B,
|
|
IRQ_DP = 0x29C,
|
|
IRQ_PRENMI_1 = 0x29D,
|
|
IRQ_PRENMI_2 = 0x29F,
|
|
IRQ_PRENMI_3 = 0x2A0,
|
|
IRQ_PRENMI_4 = 0x2A1
|
|
} IRQ_TYPE;
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 buttons;
|
|
/* 0x2 */ s8 xAxis;
|
|
/* 0x3 */ s8 yAxis;
|
|
/* 0x4 */ s8 status;
|
|
/* 0x5 */ UNK_TYPE1 pad5[0x1];
|
|
} InputInfo; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 type;
|
|
/* 0x2 */ u16 params[6];
|
|
} LightInfo; // size = 0xE
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s8 dirX;
|
|
/* 0x1 */ s8 dirY;
|
|
/* 0x2 */ s8 dirZ;
|
|
/* 0x3 */ u8 red;
|
|
/* 0x4 */ u8 green;
|
|
/* 0x5 */ u8 blue;
|
|
/* 0x6 */ u16 pad[3];
|
|
} LightInfoDirectionalParams; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 posX;
|
|
/* 0x2 */ s16 posY;
|
|
/* 0x4 */ s16 posZ;
|
|
/* 0x6 */ u8 red;
|
|
/* 0x7 */ u8 green;
|
|
/* 0x8 */ u8 blue;
|
|
/* 0x9 */ u8 unk9; // func_80102880 sets this only for type 2, func_80102A64 draws something if this is set
|
|
/* 0xA */ s16 radius;
|
|
} LightInfoPositionalParams; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 enablePosLights;
|
|
/* 0x01 */ u8 numLights;
|
|
/* 0x02 */ UNK_TYPE1 pad2[0x6];
|
|
/* 0x08 */ Lights7 lights;
|
|
} LightMapper; // size = 0x80
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 vromStart;
|
|
/* 0x4 */ u32 vromEnd;
|
|
} ObjectFileTableEntry; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 textSize;
|
|
/* 0x04 */ u32 dataSize;
|
|
/* 0x08 */ u32 rodataSize;
|
|
/* 0x0C */ u32 bssSize;
|
|
/* 0x10 */ u32 nRelocations;
|
|
} OverlayRelocationSection; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x1C];
|
|
} PermanentSceneFlags; // size = 0x1C
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 unk0;
|
|
/* 0x2 */ s16 unk2;
|
|
/* 0x4 */ s16 unk4;
|
|
} QuakeRequest14; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 red;
|
|
/* 0x1 */ u8 green;
|
|
/* 0x2 */ u8 blue;
|
|
} RGB; // size = 0x3
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 red;
|
|
/* 0x1 */ u8 green;
|
|
/* 0x2 */ u8 blue;
|
|
/* 0x3 */ u8 alpha;
|
|
} RGBA8; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 intPart[16];
|
|
/* 0x20 */ u16 fracPart[16];
|
|
} RSPMatrix; // size = 0x40
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 vromStart;
|
|
/* 0x4 */ u32 vromEnd;
|
|
} RoomFileLocation; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 opaqueDl;
|
|
/* 0x4 */ u32 translucentDl;
|
|
} RoomMeshType0Params; // size = 0x8
|
|
|
|
// Fields TODO
|
|
typedef struct {
|
|
/* 0x0 */ u8 type;
|
|
/* 0x1 */ u8 format; // 1 = single, 2 = multi
|
|
} RoomMeshType1; // size = 0x2
|
|
|
|
// Size TODO
|
|
typedef struct {
|
|
/* 0x0 */ UNK_TYPE1 pad0[0x10];
|
|
} RoomMeshType1Params; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ UNK_TYPE1 pad0[0x10];
|
|
} RoomMeshType2Params; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ u32 data2;
|
|
} SCmdBase;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdSpawnList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdActorList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdCsCameraList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdColHeader;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdRoomList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x02 */ UNK_TYPE1 pad2[2];
|
|
/* 0x04 */ s8 west;
|
|
/* 0x05 */ s8 vertical;
|
|
/* 0x06 */ s8 south;
|
|
/* 0x07 */ u8 clothIntensity;
|
|
} SCmdWindSettings;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdEntranceList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 cUpElfMsgNum;
|
|
/* 0x04 */ u32 keepObjectId;
|
|
} SCmdSpecialFiles;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 gpFlag1;
|
|
/* 0x04 */ u32 gpFlag2;
|
|
} SCmdRoomBehavior;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdMesh;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdObjectList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdLightList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdPathList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdTransiActorList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdLightSettingList;
|
|
// Cloudmodding has this as Environment Settings
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x02 */ UNK_TYPE1 pad2[2];
|
|
/* 0x04 */ u8 hour;
|
|
/* 0x05 */ u8 min;
|
|
/* 0x06 */ u8 unk6;
|
|
} SCmdTimeSettings;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x02 */ UNK_TYPE1 pad2[2];
|
|
/* 0x04 */ u8 skyboxId;
|
|
/* 0x05 */ u8 unk5;
|
|
/* 0x06 */ u8 unk6;
|
|
} SCmdSkyboxSettings;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x02 */ UNK_TYPE1 pad2[2];
|
|
/* 0x04 */ u8 unk4;
|
|
/* 0x05 */ u8 unk5;
|
|
} SCmdSkyboxDisables;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdExitList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ u32 data2;
|
|
} SCmdEndMarker;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 bgmId;
|
|
/* 0x02 */ UNK_TYPE1 pad2[4];
|
|
/* 0x06 */ u8 nighttimeSFX;
|
|
/* 0x07 */ u8 musicSeq;
|
|
} SCmdSoundSettings;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x02 */ UNK_TYPE1 pad2[5];
|
|
/* 0x07 */ u8 echo;
|
|
} SCmdEchoSettings;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdCutsceneData;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdAltHeaders;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ u32 data2;
|
|
} SCmdWorldMapVisited;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdTextureAnimations;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdCutsceneActorList;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 data1;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdMinimapSettings;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 code;
|
|
/* 0x01 */ u8 num;
|
|
/* 0x04 */ void* segment;
|
|
} SCmdMinimapChests;
|
|
|
|
// Extra information in the save context that is not saved
|
|
typedef struct {
|
|
/* 0x000 */ UNK_TYPE1 pad0[0xC];
|
|
/* 0x00C */ s32 sceneSetupIndex;
|
|
/* 0x010 */ s32 unk10;
|
|
/* 0x014 */ UNK_TYPE1 pad14[0x2E];
|
|
/* 0x042 */ s16 unk42;
|
|
/* 0x044 */ UNK_TYPE1 pad44[0x232];
|
|
/* 0x276 */ u8 unk276;
|
|
/* 0x277 */ UNK_TYPE1 pad277[0x9];
|
|
/* 0x280 */ u16 unk280;
|
|
/* 0x282 */ u16 unk282;
|
|
/* 0x284 */ UNK_TYPE1 pad284[0x28];
|
|
/* 0x2AC */ u8 cutsceneTrigger;
|
|
/* 0x2AD */ UNK_TYPE1 pad2AD[0x5];
|
|
/* 0x2B2 */ u16 environmentTime;
|
|
/* 0x2B4 */ UNK_TYPE1 pad2B4[0x4];
|
|
/* 0x2B8 */ s16 unk2b8;
|
|
/* 0x2BA */ UNK_TYPE1 pad2BA[0xA];
|
|
/* 0x2C4 */ f32 unk2C4;
|
|
/* 0x2C8 */ CycleSceneFlags cycleSceneFlags[120];
|
|
} SaveContextExtra; // size = 0xC28
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 items[24];
|
|
/* 0x18 */ u8 masks[24];
|
|
/* 0x30 */ u8 quantities[24];
|
|
/* 0x48 */ UNK_TYPE1 pad48[0x40];
|
|
} SaveContextInventory; // size = 0x88
|
|
|
|
// Save Context that is only stored in an owl save
|
|
typedef struct {
|
|
/* 0x0000 */ UNK_TYPE1 pad0[0x1];
|
|
/* 0x0001 */ u8 unk1;
|
|
/* 0x0002 */ u8 unk2;
|
|
/* 0x0003 */ UNK_TYPE1 pad3[0x2];
|
|
/* 0x0005 */ u8 unk5;
|
|
/* 0x0006 */ UNK_TYPE1 pad6[0x2C8E];
|
|
} SaveContextOwl; // size = 0x2C94
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 zelda[6]; // Will always be "ZELDA3" for a valid save
|
|
/* 0x06 */ UNK_TYPE1 pad6[0xA];
|
|
/* 0x10 */ s16 maxLife;
|
|
/* 0x12 */ s16 currentLife;
|
|
/* 0x14 */ UNK_TYPE1 pad14[0x1];
|
|
/* 0x15 */ s8 currentMagic;
|
|
/* 0x16 */ UNK_TYPE1 pad16[0x12];
|
|
} SaveContext_struct1; // size = 0x28
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x22];
|
|
} SaveContext_struct2; // size = 0x22
|
|
|
|
typedef union {
|
|
/* Command: N/A */ SCmdBase base;
|
|
/* Command: 0x00 */ SCmdSpawnList spawnList;
|
|
/* Command: 0x01 */ SCmdActorList actorList;
|
|
/* Command: 0x02 */ SCmdCsCameraList csCameraList;
|
|
/* Command: 0x03 */ SCmdColHeader colHeader;
|
|
/* Command: 0x04 */ SCmdRoomList roomList;
|
|
/* Command: 0x05 */ SCmdWindSettings windSettings;
|
|
/* Command: 0x06 */ SCmdEntranceList entranceList;
|
|
/* Command: 0x07 */ SCmdSpecialFiles specialFiles;
|
|
/* Command: 0x08 */ SCmdRoomBehavior roomBehavior;
|
|
/* Command: 0x09 */ // Unused
|
|
/* Command: 0x0A */ SCmdMesh mesh;
|
|
/* Command: 0x0B */ SCmdObjectList objectList;
|
|
/* Command: 0x0C */ SCmdLightList lightList;
|
|
/* Command: 0x0D */ SCmdPathList pathList;
|
|
/* Command: 0x0E */ SCmdTransiActorList transiActorList;
|
|
/* Command: 0x0F */ SCmdLightSettingList lightSettingList;
|
|
/* Command: 0x10 */ SCmdTimeSettings timeSettings;
|
|
/* Command: 0x11 */ SCmdSkyboxSettings skyboxSettings;
|
|
/* Command: 0x12 */ SCmdSkyboxDisables skyboxDisables;
|
|
/* Command: 0x13 */ SCmdExitList exitList;
|
|
/* Command: 0x14 */ SCmdEndMarker endMarker;
|
|
/* Command: 0x15 */ SCmdSoundSettings soundSettings;
|
|
/* Command: 0x16 */ SCmdEchoSettings echoSettings;
|
|
/* Command: 0x17 */ SCmdCutsceneData cutsceneData;
|
|
/* Command: 0x18 */ SCmdAltHeaders altHeaders;
|
|
/* Command: 0x19 */ SCmdWorldMapVisited worldMapVisited;
|
|
/* Command: 0x1A */ SCmdTextureAnimations textureAnimations;
|
|
/* Command: 0x1B */ SCmdCutsceneActorList cutsceneActorList;
|
|
/* Command: 0x1C */ SCmdMinimapSettings minimapSettings;
|
|
/* Command: 0x1D */ // Unused
|
|
/* Command: 0x1E */ SCmdMinimapChests minimapChests;
|
|
} SceneCmd; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 entranceCount;
|
|
/* 0x4 */ EntranceRecord** entrances;
|
|
/* 0x8 */ char* name;
|
|
} SceneEntranceTableEnty; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u16 scenes[27];
|
|
} SceneIdList; // size = 0x36
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 id; // Negative ids mean that the object is unloaded
|
|
/* 0x02 */ UNK_TYPE1 pad2[0x2];
|
|
/* 0x04 */ void* vramAddr;
|
|
/* 0x08 */ DmaRequest dmaReq;
|
|
/* 0x28 */ OSMesgQueue loadQueue;
|
|
/* 0x40 */ OSMesg loadMsg;
|
|
} SceneObject; // size = 0x44
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 romStart;
|
|
/* 0x4 */ u32 romEnd;
|
|
/* 0x8 */ u16 unk8;
|
|
/* 0xA */ UNK_TYPE1 padA[0x1];
|
|
/* 0xB */ u8 sceneConfig; // TODO: This at least controls the behavior of animated textures. Does it do more?
|
|
/* 0xC */ UNK_TYPE1 padC[0x1];
|
|
/* 0xD */ u8 unkD;
|
|
/* 0xE */ UNK_TYPE1 padE[0x2];
|
|
} SceneTableEntry; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s8 xStep;
|
|
/* 0x1 */ s8 yStep;
|
|
/* 0x2 */ u8 width;
|
|
/* 0x3 */ u8 height;
|
|
} ScrollingTextureParams; // size = 0x4
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s8 letterboxTarget;
|
|
/* 0x1 */ s8 letterboxMagnitude;
|
|
/* 0x2 */ s8 pillarboxTarget;
|
|
/* 0x3 */ s8 pillarboxMagnitude;
|
|
} 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
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE4 unk0;
|
|
/* 0x04 */ UNK_TYPE4 unk4;
|
|
/* 0x08 */ UNK_TYPE4 unk8;
|
|
/* 0x0C */ f32 unkC;
|
|
/* 0x10 */ ColorRGBA8 unk10;
|
|
} TargetContextEntry; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 texture;
|
|
/* 0x4 */ s16 unk4;
|
|
/* 0x6 */ s16 unk6;
|
|
/* 0x8 */ u8 unk8;
|
|
/* 0x9 */ u8 unk9;
|
|
/* 0xA */ u8 fadeOutDelay;
|
|
/* 0xB */ u8 fadeInDelay;
|
|
/* 0xC */ s16 alpha;
|
|
/* 0xE */ s16 color;
|
|
} TitleCardContext; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s8 unk0;
|
|
/* 0x1 */ UNK_TYPE1 pad1[0x1];
|
|
/* 0x2 */ s8 unk2;
|
|
/* 0x3 */ UNK_TYPE1 pad3[0x1];
|
|
/* 0x4 */ s16 actorIndex; // negative means already loaded?
|
|
/* 0x6 */ s16 x;
|
|
/* 0x8 */ s16 y;
|
|
/* 0xA */ s16 z;
|
|
/* 0xC */ s16 yRot; // lower 7 bits contain cutscene number
|
|
/* 0xE */ u16 variable;
|
|
} TransitionActorInit; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ f32 x;
|
|
/* 0x4 */ f32 y;
|
|
/* 0x8 */ f32 z;
|
|
} Vec3f; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 x;
|
|
/* 0x2 */ s16 y;
|
|
/* 0x4 */ s16 z;
|
|
} Vec3s; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s32 topY;
|
|
/* 0x4 */ s32 bottomY;
|
|
/* 0x8 */ s32 leftX;
|
|
/* 0xC */ s32 rightX;
|
|
} Viewport; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ void* bufferEnd;
|
|
/* 0x04 */ u32 romReadHead;
|
|
/* 0x08 */ u32 amountLeftToRead;
|
|
/* 0x0C */ u32 loadNextChunkBoundary;
|
|
/* 0x10 */ u32 destBufferEnd;
|
|
} Yaz0DecompState; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x0 */ unsigned int inst1;
|
|
/* 0x4 */ unsigned int inst2;
|
|
/* 0x8 */ unsigned int inst3;
|
|
/* 0xC */ unsigned int inst4;
|
|
} __osExceptionVector; // size = 0x10
|
|
|
|
typedef void(*actor_init_var_func)(u8*, ActorInitVar*);
|
|
|
|
typedef void(*eff_destroy_func)(void* params);
|
|
|
|
typedef void(*eff_draw_func)(void* params, GraphicsContext* gCtxt);
|
|
|
|
typedef void(*eff_init_func)(void* params, void* init);
|
|
|
|
typedef s32(*eff_update_func)(void* params);
|
|
|
|
typedef void*(*fault_address_converter_func)(void* addr, void* arg);
|
|
|
|
typedef void(*fault_client_func)(void* arg1, void* arg2);
|
|
|
|
typedef unsigned long(*func)(void);
|
|
|
|
typedef void(*func_ptr)(void);
|
|
|
|
typedef void(*light_map_directional_func)(LightMapper* mapper, void* params, Vec3f* pos);
|
|
|
|
typedef void(*osCreateThread_func)(void*);
|
|
|
|
typedef void*(*printf_func)(void*, char*, size_t);
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x20];
|
|
} s800E03A0; // size = 0x20
|
|
|
|
typedef struct {
|
|
/* 0x000 */ OSThread unk0;
|
|
/* 0x1B0 */ s8 argCount;
|
|
/* 0x1B1 */ s8 unk1B1;
|
|
/* 0x1B2 */ UNK_TYPE1 pad1B2[0x2];
|
|
/* 0x1B4 */ UNK_TYPE1 func;
|
|
/* 0x1B5 */ UNK_TYPE1 pad1B5[0x3];
|
|
/* 0x1B8 */ s32 arg0;
|
|
/* 0x1BC */ s32 arg1;
|
|
} s8018571C; // size = 0x1C0
|
|
|
|
typedef struct {
|
|
/* 0x00 */ int unk0;
|
|
/* 0x04 */ void* unk4;
|
|
/* 0x08 */ int unk8;
|
|
/* 0x0C */ int unkC;
|
|
/* 0x10 */ int unk10;
|
|
/* 0x14 */ OSMesgQueue unk14;
|
|
} s80185D40; // size = 0x2C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 unk0;
|
|
/* 0x04 */ u8 unk4;
|
|
/* 0x05 */ u8 unk5;
|
|
/* 0x06 */ u8 unk6;
|
|
/* 0x07 */ UNK_TYPE1 pad7[0x2];
|
|
/* 0x09 */ u8 unk9;
|
|
/* 0x0A */ UNK_TYPE1 padA[0x2];
|
|
/* 0x0C */ u32 unkC;
|
|
/* 0x10 */ u16 unk10;
|
|
/* 0x12 */ u16 unk12;
|
|
/* 0x14 */ u16 unk14;
|
|
/* 0x16 */ UNK_TYPE1 pad16[0x2];
|
|
/* 0x18 */ u32 unk18;
|
|
/* 0x1C */ u32 unk1C;
|
|
/* 0x20 */ u32 unk20;
|
|
/* 0x24 */ u32 unk24;
|
|
/* 0x28 */ u32 unk28;
|
|
/* 0x2C */ u32 unk2C;
|
|
/* 0x30 */ u32 unk30;
|
|
/* 0x34 */ u32 unk34;
|
|
} s8018CFAC; // size = 0x38
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 unk0;
|
|
/* 0x1 */ u8 unk1;
|
|
/* 0x2 */ u8 unk2;
|
|
/* 0x3 */ u8 unk3;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 unk5;
|
|
/* 0x6 */ u8 unk6;
|
|
/* 0x7 */ u8 unk7;
|
|
} s801AEC84; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 pad0[0x14];
|
|
} s801FE7C0; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f unk0;
|
|
/* 0x0C */ Vec3f unkC;
|
|
/* 0x18 */ s16 unk18;
|
|
/* 0x1A */ s16 unk1A;
|
|
} s80874650; // size = 0x1C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ f32 x[4];
|
|
/* 0x10 */ f32 y[4];
|
|
/* 0x20 */ f32 z[4];
|
|
/* 0x30 */ f32 w[4];
|
|
} z_Matrix; // size = 0x40
|
|
|
|
// Related to collision?
|
|
typedef struct {
|
|
/* 0x00 */ ActorDamageChart* damageChart;
|
|
/* 0x04 */ Vec3f displacement;
|
|
/* 0x10 */ s16 unk10;
|
|
/* 0x12 */ s16 unk12;
|
|
/* 0x14 */ s16 unk14;
|
|
/* 0x16 */ u8 mass;
|
|
/* 0x17 */ u8 health;
|
|
/* 0x18 */ u8 damage;
|
|
/* 0x19 */ u8 damageEffect;
|
|
/* 0x1A */ u8 impactEffect;
|
|
/* 0x1B */ UNK_TYPE1 pad1B[0x1];
|
|
} ActorA0; // size = 0x1C
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 id;
|
|
/* 0x2 */ Vec3s pos;
|
|
/* 0x8 */ Vec3s rot;
|
|
/* 0xE */ s16 params;
|
|
} ActorEntry; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f scale;
|
|
/* 0x0C */ Vec3s rotation;
|
|
/* 0x14 */ Vec3f pos;
|
|
} ActorMeshParams; // size = 0x20
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 attributeIndex;
|
|
/* 0x2 */ u16 vertA; // upper 3 bits contain flags
|
|
/* 0x4 */ u16 vertB; // upper 3 bits contain flags
|
|
/* 0x6 */ u16 vertC;
|
|
/* 0x8 */ Vec3s normal;
|
|
/* 0xE */ s16 unkE;
|
|
} BgPolygon; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ BgPolygonLinkedListNode* nodes;
|
|
/* 0x4 */ u32 nextFreeNode;
|
|
/* 0x8 */ s32 maxNodes;
|
|
} BgPolygonLinkedList; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ Vec3s pos;
|
|
} BgVertex; // size = 0x6
|
|
|
|
typedef struct {
|
|
/* 0x0 */ Vec3s minPos;
|
|
/* 0x6 */ UNK_TYPE1 xLength; // Created by retype action
|
|
/* 0x7 */ UNK_TYPE1 pad7[0x1];
|
|
/* 0x8 */ UNK_TYPE1 zLength; // Created by retype action
|
|
/* 0x9 */ UNK_TYPE1 pad9[0x3];
|
|
/* 0xC */ u32 properties;
|
|
} BgWaterBox; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x0 */ UNK_TYPE1 pad0[0x4];
|
|
/* 0x4 */ BgWaterBox* boxes;
|
|
} BgWaterboxList; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 unk0;
|
|
/* 0x04 */ ColTouchInit unk4;
|
|
/* 0x0C */ ColBumpInit unkC;
|
|
/* 0x14 */ u8 unk14;
|
|
/* 0x15 */ u8 unk15;
|
|
/* 0x16 */ u8 unk16;
|
|
} ColBodyInfoInit; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u32 collidesWith;
|
|
/* 0x4 */ u8 unk4;
|
|
/* 0x5 */ u8 unk5;
|
|
/* 0x6 */ Vec3s unk6;
|
|
} ColBump; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ s16 radius;
|
|
/* 0x2 */ s16 height;
|
|
/* 0x4 */ s16 yOffset;
|
|
/* 0x6 */ Vec3s loc;
|
|
} ColCylinderParams; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f pointA;
|
|
/* 0x0C */ Vec3f pointB;
|
|
/* 0x18 */ Vec3f pointC;
|
|
/* 0x24 */ Vec3f pointD;
|
|
/* 0x30 */ Vec3s unk30;
|
|
/* 0x36 */ Vec3s unk36;
|
|
/* 0x3C */ f32 unk3C;
|
|
} ColQuadParams; // size = 0x40
|
|
|
|
typedef struct {
|
|
/* 0x0 */ Vec3s loc;
|
|
/* 0x6 */ s16 radius;
|
|
} ColSphereCollisionInfo; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3s unk0;
|
|
/* 0x06 */ s16 unk6;
|
|
/* 0x08 */ ColSphereCollisionInfo colInfo;
|
|
/* 0x10 */ f32 unk10;
|
|
/* 0x14 */ u8 unk14;
|
|
/* 0x15 */ UNK_TYPE1 pad15[0x3];
|
|
} ColSphereParams; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 unk0;
|
|
/* 0x1 */ ColSphereCollisionInfo unk1;
|
|
/* 0xA */ s16 unkA;
|
|
} ColSphereParamsInit; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f pointA;
|
|
/* 0x0C */ Vec3f pointB;
|
|
/* 0x18 */ Vec3f pointC;
|
|
/* 0x24 */ Vec3f unitNormal;
|
|
/* 0x30 */ f32 unk30;
|
|
} ColTriParams; // size = 0x34
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f unk0;
|
|
/* 0x0C */ Vec3f unkC;
|
|
/* 0x18 */ Vec3f unk18;
|
|
} ColTriParamsInit; // size = 0x24
|
|
|
|
typedef struct {
|
|
/* 0x000 */ EffBlureParticle particles[16];
|
|
/* 0x180 */ UNK_TYPE1 pad180[0x4];
|
|
/* 0x184 */ f32 unk184;
|
|
/* 0x188 */ u16 unk188;
|
|
/* 0x18A */ UNK_TYPE1 pad18A[0x4];
|
|
/* 0x18E */ ColorRGBA8 unk18E;
|
|
/* 0x192 */ ColorRGBA8 unk192;
|
|
/* 0x196 */ ColorRGBA8 unk196;
|
|
/* 0x19A */ ColorRGBA8 unk19A;
|
|
/* 0x19E */ u8 unk19E;
|
|
/* 0x19F */ u8 unk19F;
|
|
/* 0x1A0 */ u8 unk1A0;
|
|
/* 0x1A1 */ u8 unk1A1;
|
|
/* 0x1A2 */ UNK_TYPE1 pad1A2[0xA];
|
|
} EffBlureParams; // size = 0x1AC
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 paramsSize;
|
|
/* 0x04 */ eff_init_func init;
|
|
/* 0x08 */ eff_destroy_func destroy;
|
|
/* 0x0C */ eff_update_func update;
|
|
/* 0x10 */ eff_draw_func draw;
|
|
} EffInfo; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 numParticles;
|
|
/* 0x02 */ Vec3s position;
|
|
/* 0x08 */ ColorRGBA8 primColorStart;
|
|
/* 0x0C */ ColorRGBA8 envColorStart;
|
|
/* 0x10 */ ColorRGBA8 primColorMid;
|
|
/* 0x14 */ ColorRGBA8 envColorMid;
|
|
/* 0x18 */ ColorRGBA8 primColorEnd;
|
|
/* 0x1C */ ColorRGBA8 envColorEnd;
|
|
/* 0x20 */ f32 acceleration;
|
|
/* 0x24 */ f32 maxInitialSpeed;
|
|
/* 0x28 */ f32 lengthCutoff;
|
|
/* 0x2C */ u8 duration;
|
|
/* 0x2E */ LightInfoPositionalParams lightParams;
|
|
/* 0x3C */ s32 hasLight;
|
|
} EffShieldParticleInit; // size = 0x40
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f velocity;
|
|
/* 0x0C */ Vec3f position;
|
|
/* 0x18 */ Vec3s unk18;
|
|
/* 0x1E */ Vec3s unk1E;
|
|
} EffSparkParticle; // size = 0x24
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE2 active;
|
|
/* 0x02 */ Vec3s position1;
|
|
/* 0x08 */ Vec3s position2;
|
|
/* 0x0E */ s16 life;
|
|
/* 0x10 */ UNK_TYPE1 pad10[0x4];
|
|
/* 0x14 */ UNK_TYPE4 unk14;
|
|
} EffTireMarkParticle; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f position;
|
|
/* 0x0C */ Vec3f velocity;
|
|
/* 0x18 */ Vec3f acceleration;
|
|
/* 0x24 */ ColorRGBA8 color1;
|
|
/* 0x28 */ ColorRGBA8 color2;
|
|
/* 0x2C */ s16 scale;
|
|
/* 0x2E */ s16 scaleChangePerFrame;
|
|
/* 0x30 */ s16 life;
|
|
/* 0x32 */ u16 flags; // bit0: ? bit1: ? bit2: randomize colors
|
|
/* 0x34 */ u8 type; // type0: start small, get big, fade away type1: start big, fade away
|
|
} EffectDustInit; // size = 0x35
|
|
|
|
typedef union {
|
|
F3DVertexColor color;
|
|
F3DVertexNormal normal;
|
|
} F3DVertex; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u16* fb;
|
|
/* 0x04 */ u16 w;
|
|
/* 0x06 */ u16 h;
|
|
/* 0x08 */ u16 yStart;
|
|
/* 0x0A */ u16 yEnd;
|
|
/* 0x0C */ u16 xStart;
|
|
/* 0x0E */ u16 xEnd;
|
|
/* 0x10 */ u16 foreColor;
|
|
/* 0x12 */ u16 backColor;
|
|
/* 0x14 */ u16 cursorX;
|
|
/* 0x16 */ u16 cursorY;
|
|
/* 0x18 */ u32* font;
|
|
/* 0x1C */ u8 charW;
|
|
/* 0x1D */ u8 charH;
|
|
/* 0x1E */ s8 charWPad;
|
|
/* 0x1F */ s8 charHPad;
|
|
/* 0x20 */ u16 printColors[10];
|
|
/* 0x34 */ u8 escCode;
|
|
/* 0x35 */ u8 osSyncPrintfEnabled;
|
|
/* 0x38 */ func_ptr inputCallback;
|
|
} FaultDrawer; // size = 0x3C
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u16 cycleLength;
|
|
/* 0x2 */ u16 numKeyFrames;
|
|
/* 0x4 */ FlashingTexturePrimColor* primColors;
|
|
/* 0x8 */ RGBA8* envColors;
|
|
/* 0xC */ u16* keyFrames;
|
|
} FlashingTextureParams; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ void* loadedRamAddr;
|
|
/* 0x04 */ u32 vromStart;
|
|
/* 0x08 */ u32 vromEnd;
|
|
/* 0x0C */ void* vramStart;
|
|
/* 0x10 */ void* vramEnd;
|
|
/* 0x14 */ UNK_TYPE4 unk14;
|
|
/* 0x18 */ func_ptr init;
|
|
/* 0x1C */ func_ptr destroy;
|
|
/* 0x20 */ UNK_TYPE4 unk20;
|
|
/* 0x24 */ UNK_TYPE4 unk24;
|
|
/* 0x28 */ UNK_TYPE4 unk28;
|
|
/* 0x2C */ u32 instanceSize;
|
|
} GameStateOverlay; // size = 0x30
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u8 unk0;
|
|
/* 0x01 */ u8 unk1;
|
|
/* 0x02 */ u16 unk2;
|
|
/* 0x04 */ Vec3f unk4;
|
|
/* 0x10 */ Vec3f unk10;
|
|
} GlobalContext1F78; // size = 0x1C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ InputInfo current;
|
|
/* 0x06 */ InputInfo last;
|
|
/* 0x0C */ InputInfo pressEdge;
|
|
/* 0x12 */ InputInfo releaseEdge;
|
|
} Input; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 type;
|
|
/* 0x2 */ LightInfoDirectionalParams params;
|
|
} LightInfoDirectional; // size = 0xE
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 type;
|
|
/* 0x2 */ LightInfoPositionalParams params;
|
|
} LightInfoPositional; // size = 0xE
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f a;
|
|
/* 0x0C */ Vec3f b;
|
|
} LineSegment; // size = 0x18
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f pos;
|
|
/* 0x0C */ Vec3s rot;
|
|
} PosRot; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 type;
|
|
/* 0x1 */ u8 count;
|
|
/* 0x2 */ UNK_TYPE1 pad2[0x2];
|
|
/* 0x4 */ RoomMeshType0Params* paramsStart;
|
|
/* 0x8 */ RoomMeshType0Params* paramsEnd;
|
|
} RoomMeshType0; // size = 0xC
|
|
|
|
typedef struct {
|
|
/* 0x0 */ u8 type;
|
|
/* 0x1 */ u8 count;
|
|
/* 0x2 */ UNK_TYPE1 pad2[0x2];
|
|
/* 0x4 */ RoomMeshType2Params* paramsStart;
|
|
/* 0x8 */ RoomMeshType2Params* paramsEnd;
|
|
} RoomMeshType2; // size = 0xC
|
|
|
|
// Permanent save context, kept in regular save files
|
|
typedef struct {
|
|
/* 0x0000 */ u32 entranceIndex; // bits 0-3 : offset; 4-8: spawn index; 9-15: scene index
|
|
/* 0x0004 */ UNK_TYPE1 pad4[0x4];
|
|
/* 0x0008 */ s32 cutscene;
|
|
/* 0x000C */ u16 time;
|
|
/* 0x000E */ UNK_TYPE1 padE[0xA];
|
|
/* 0x0018 */ u32 day;
|
|
/* 0x001C */ u32 daysElapsed;
|
|
/* 0x0020 */ u8 unk20;
|
|
/* 0x0021 */ UNK_TYPE1 pad21[0x2];
|
|
/* 0x0023 */ u8 owlSave;
|
|
/* 0x0024 */ SaveContext_struct1 unk24;
|
|
/* 0x004C */ SaveContext_struct2 unk4C;
|
|
/* 0x006E */ UNK_TYPE1 pad6E[0x2];
|
|
/* 0x0070 */ SaveContextInventory inv;
|
|
/* 0x00F8 */ PermanentSceneFlags sceneFlags[120];
|
|
/* 0x0E18 */ UNK_TYPE1 padE18[0xE0];
|
|
/* 0x0EF8 */ u8 weekEventReg[100];
|
|
/* 0x0F5C */ u32 mapsVisited;
|
|
/* 0x0F60 */ UNK_TYPE1 padF60[0x8C];
|
|
/* 0x0FEC */ u8 lotteryCodes[9];
|
|
/* 0x0FF5 */ u8 spiderHouseMaskOrder[6];
|
|
/* 0x0FFB */ u8 bomberCode[5];
|
|
/* 0x1000 */ UNK_TYPE1 pad1000[0xA];
|
|
/* 0x100A */ u16 checksum;
|
|
} SaveContextPerm; // size = 0x100C
|
|
|
|
typedef struct {
|
|
/* 0x000 */ void* objectVramStart;
|
|
/* 0x004 */ void* objectVramEnd;
|
|
/* 0x008 */ u8 objectCount;
|
|
/* 0x009 */ u8 spawnedObjectCount;
|
|
/* 0x00A */ u8 mainKeepIndex;
|
|
/* 0x00B */ u8 keepObjectId;
|
|
/* 0x00C */ SceneObject objects[35]; // TODO: OBJECT_EXCHANGE_BANK_MAX array size
|
|
} SceneContext; // size = 0x958
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f focalPointChange;
|
|
/* 0x0C */ Vec3f eyeChange;
|
|
/* 0x18 */ s16 rotZ;
|
|
/* 0x1A */ s16 zoom;
|
|
/* 0x1C */ UNK_TYPE1 pad1C[0x2];
|
|
} ShakeInfo; // size = 0x1E
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3f focalPointChange;
|
|
/* 0x0C */ Vec3f eyeChange;
|
|
/* 0x18 */ s16 unk18;
|
|
/* 0x1A */ s16 unk1A;
|
|
/* 0x1C */ f32 unk1C;
|
|
/* 0x20 */ f32 unk20;
|
|
} UnkQuakeCalcStruct; // size = 0x24
|
|
|
|
typedef struct {
|
|
/* 0x000 */ u32 magic;
|
|
/* 0x004 */ GraphicsContext* gfxCtx;
|
|
/* 0x008 */ Viewport viewport;
|
|
/* 0x018 */ f32 fovy;
|
|
/* 0x01C */ f32 zNear;
|
|
/* 0x020 */ f32 zFar;
|
|
/* 0x024 */ f32 scale;
|
|
/* 0x028 */ Vec3f eye;
|
|
/* 0x034 */ Vec3f focalPoint;
|
|
/* 0x040 */ Vec3f upDir;
|
|
/* 0x04C */ UNK_TYPE1 pad4C[0x4];
|
|
/* 0x050 */ Vp vp;
|
|
/* 0x060 */ Mtx projection;
|
|
/* 0x0A0 */ Mtx viewing;
|
|
/* 0x0E0 */ Mtx unkE0;
|
|
/* 0x120 */ Mtx* projectionPtr;
|
|
/* 0x124 */ Mtx* viewingPtr;
|
|
/* 0x128 */ Vec3f quakeRot;
|
|
/* 0x134 */ Vec3f quakeScale;
|
|
/* 0x140 */ f32 quakeSpeed;
|
|
/* 0x144 */ Vec3f currQuakeRot;
|
|
/* 0x150 */ Vec3f currQuakeScale;
|
|
/* 0x15C */ u16 normal;
|
|
/* 0x15E */ UNK_TYPE1 pad15E[0x2];
|
|
/* 0x160 */ u32 flags; // bit 3: Render to an orthographic perspective
|
|
/* 0x164 */ UNK_TYPE4 unk164;
|
|
} View; // size = 0x168
|
|
|
|
typedef void(*fault_update_input_func)(Input* input);
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Vec3s min;
|
|
/* 0x06 */ Vec3s max;
|
|
/* 0x0C */ u16 numVertices;
|
|
/* 0x10 */ BgVertex* vertices;
|
|
/* 0x14 */ u16 numPolygons;
|
|
/* 0x18 */ BgPolygon* polygons;
|
|
/* 0x1C */ BgPolygonAttributes* attributes;
|
|
/* 0x20 */ UNK_PTR cameraData;
|
|
/* 0x24 */ u16 numWaterBoxes;
|
|
/* 0x28 */ BgWaterBox* waterboxes;
|
|
} BgMeshHeader; // size = 0x2C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColCommonInit base;
|
|
/* 0x08 */ ColBodyInfoInit body;
|
|
/* 0x20 */ ColCylinderParams info;
|
|
} ColCylinderInit; // size = 0x2C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColCommonInit base;
|
|
/* 0x08 */ ColBodyInfoInit body;
|
|
/* 0x20 */ ColQuadParams params;
|
|
} ColQuadInit; // size = 0x60
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColBodyInfoInit body;
|
|
/* 0x18 */ ColSphereParamsInit params;
|
|
} ColSphereGroupElementInit; // size = 0x24
|
|
|
|
typedef struct {
|
|
/* 0x0 */ ColCommonInit base;
|
|
/* 0x6 */ UNK_TYPE1 pad6[0x2];
|
|
/* 0x8 */ u32 count;
|
|
/* 0xC */ ColSphereGroupElementInit* init;
|
|
} ColSphereGroupInit; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColCommonInit base;
|
|
/* 0x08 */ ColBodyInfoInit body;
|
|
/* 0x20 */ ColSphereParamsInit info;
|
|
} ColSphereInit; // size = 0x2C
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColBodyInfoInit body;
|
|
/* 0x18 */ ColTriParamsInit params;
|
|
} ColTriInit; // size = 0x3C
|
|
|
|
typedef struct {
|
|
/* 0x000 */ EffCommon base;
|
|
/* 0x004 */ EffBlureParams params;
|
|
} EffBlure; // size = 0x1B0
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Vec3s position;
|
|
/* 0x008 */ s32 numParticles; // Will be calculated as particleFactor1 * particleFactor2 + 2
|
|
/* 0x00C */ EffSparkParticle particles[32];
|
|
/* 0x48C */ f32 velocity;
|
|
/* 0x490 */ f32 gravity;
|
|
/* 0x494 */ u32 particleFactor1;
|
|
/* 0x498 */ u32 particleFactor2;
|
|
/* 0x49C */ ColorRGBA8 colorStart[4];
|
|
/* 0x4AC */ ColorRGBA8 colorEnd[4];
|
|
/* 0x4BC */ s32 age;
|
|
/* 0x4C0 */ s32 duration;
|
|
} EffSparkParams; // size = 0x4C4
|
|
|
|
typedef struct {
|
|
/* 0x000 */ EffTireMarkParticle particles[64];
|
|
/* 0x600 */ s16 unk600;
|
|
/* 0x602 */ s16 numParticles;
|
|
/* 0x604 */ s16 maxLife;
|
|
/* 0x606 */ ColorRGBA8 color;
|
|
/* 0x60A */ UNK_TYPE1 pad60A[0x2];
|
|
} EffTireMarkParams; // size = 0x60C
|
|
|
|
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];
|
|
} GlobalContext16D30; // size = 0x2D0
|
|
|
|
typedef struct {
|
|
/* 0x000 */ View view;
|
|
/* 0x168 */ UNK_TYPE1 pad168[0xBE];
|
|
/* 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 */ UNK_TYPE1 pad256[0x1A];
|
|
/* 0x270 */ s16 lifeAlpha;
|
|
/* 0x272 */ UNK_TYPE1 pad272[0xD6];
|
|
} InterfaceContext; // size = 0x348
|
|
|
|
typedef struct {
|
|
/* 0x00 */ UNK_TYPE1 unk0;
|
|
/* 0x01 */ UNK_TYPE1 unk1;
|
|
/* 0x02 */ u16 unk2;
|
|
/* 0x04 */ f32 unk4;
|
|
/* 0x08 */ f32 unk8;
|
|
/* 0x0C */ f32 unkC;
|
|
/* 0x10 */ UNK_TYPE1 unk10;
|
|
/* 0x11 */ UNK_TYPE1 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 */ LightInfoDirectional unk28;
|
|
/* 0x36 */ LightInfoDirectional 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 */ RGB unkC4;
|
|
/* 0xC7 */ s8 unkC7;
|
|
/* 0xC8 */ s8 unkC8;
|
|
/* 0xC9 */ s8 unkC9;
|
|
/* 0xCA */ RGB unkCA;
|
|
/* 0xCD */ s8 unkCD;
|
|
/* 0xCE */ s8 unkCE;
|
|
/* 0xCF */ s8 unkCF;
|
|
/* 0xD0 */ RGB unkD0;
|
|
/* 0xD3 */ RGB 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 */ UNK_TYPE1 unkE3;
|
|
/* 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 */ UNK_TYPE1 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;
|
|
} KankyoContext; // size = 0xF4
|
|
|
|
typedef struct {
|
|
/* 0x00000 */ View view;
|
|
/* 0x00168 */ Font font;
|
|
/* 0x0A7E8 */ UNK_TYPE1 padA7E8[0x7708];
|
|
/* 0x11EF0 */ u8 unk11EF0;
|
|
/* 0x11EF1 */ UNK_TYPE1 pad11EF1[0x13];
|
|
/* 0x11F04 */ u16 unk11F04;
|
|
/* 0x11F06 */ UNK_TYPE1 pad11F06[0x4];
|
|
/* 0x11F0A */ u8 unk11F0A;
|
|
/* 0x11F0B */ UNK_TYPE1 pad11F0B[0x17];
|
|
/* 0x11F22 */ u8 unk11F22;
|
|
/* 0x11F23 */ UNK_TYPE1 pad11F23[0xFD];
|
|
/* 0x12020 */ u8 unk12020;
|
|
/* 0x12021 */ UNK_TYPE1 pad12021[0x23];
|
|
/* 0x12044 */ s16 unk12044;
|
|
/* 0x12046 */ UNK_TYPE1 pad12046[0x24];
|
|
/* 0x1206A */ s16 unk1206A;
|
|
/* 0x1206C */ UNK_TYPE1 pad1206C[0x6C];
|
|
} MessageContext; // size = 0x120D8
|
|
|
|
typedef union {
|
|
RoomMeshType0 type0;
|
|
RoomMeshType1 type1;
|
|
RoomMeshType2 type2;
|
|
} RoomMesh; // size = 0xC
|
|
|
|
// Full save context
|
|
typedef struct {
|
|
/* 0x0000 */ SaveContextPerm perm;
|
|
/* 0x100C */ SaveContextOwl owl;
|
|
/* 0x3CA0 */ SaveContextExtra extra;
|
|
} SaveContext; // size = 0x48C8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ BgMeshHeader* sceneMesh;
|
|
/* 0x04 */ Vec3f sceneMin;
|
|
/* 0x10 */ Vec3f sceneMax;
|
|
/* 0x1C */ s32 xSubdivisions;
|
|
/* 0x20 */ s32 ySubdivisions;
|
|
/* 0x24 */ s32 zSubdivisions;
|
|
/* 0x28 */ Vec3f subdivisionSize;
|
|
/* 0x34 */ Vec3f inverseSubdivisionSize;
|
|
/* 0x40 */ BgMeshSubdivision* subdivisions;
|
|
/* 0x44 */ BgScenePolygonLists scenePolyLists;
|
|
} StaticCollisionContext; // size = 0x50
|
|
|
|
typedef struct {
|
|
/* 0x0 */ ColCommonInit base;
|
|
/* 0x8 */ u32 count;
|
|
/* 0xC */ ColTriInit* elemInit;
|
|
} ColTriGroupInit; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x000 */ EffCommon base;
|
|
/* 0x004 */ EffSparkParams params;
|
|
} EffSpark; // size = 0x4C8
|
|
|
|
typedef struct {
|
|
/* 0x000 */ EffCommon base;
|
|
/* 0x004 */ EffTireMarkParams params;
|
|
} EffTireMark; // size = 0x610
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s8 num;
|
|
/* 0x01 */ u8 unk1;
|
|
/* 0x02 */ u8 unk2;
|
|
/* 0x03 */ u8 unk3;
|
|
/* 0x04 */ s8 echo;
|
|
/* 0x05 */ u8 unk5;
|
|
/* 0x06 */ u8 enablePosLights;
|
|
/* 0x07 */ UNK_TYPE1 pad7[0x1];
|
|
/* 0x08 */ RoomMesh* mesh;
|
|
/* 0x0C */ void* segment;
|
|
/* 0x10 */ UNK_TYPE1 pad10[0x4];
|
|
} Room; // size = 0x14
|
|
|
|
typedef struct {
|
|
/* 0x00 */ Room currRoom;
|
|
/* 0x14 */ Room prevRoom;
|
|
/* 0x28 */ void* roomMemPages[2]; // In a scene with transitions, roomMemory is split between two pages that toggle each transition. This is one continuous range, as the second page allocates from the end
|
|
/* 0x30 */ u8 activeMemPage; // 0 - First page in memory, 1 - Second page
|
|
/* 0x31 */ s8 unk31;
|
|
/* 0x32 */ UNK_TYPE1 pad32[0x2];
|
|
/* 0x34 */ void* activeRoomVram;
|
|
/* 0x38 */ DmaRequest dmaRequest;
|
|
/* 0x58 */ OSMesgQueue loadQueue;
|
|
/* 0x70 */ OSMesg loadMsg[1];
|
|
/* 0x74 */ void* unk74;
|
|
/* 0x78 */ s8 unk78;
|
|
/* 0x79 */ s8 unk79;
|
|
/* 0x7A */ UNK_TYPE2 unk7A[3];
|
|
} RoomContext; // size = 0x80
|
|
|
|
typedef struct ActorBgFuKaiten ActorBgFuKaiten;
|
|
|
|
typedef struct ActorBgMbarChair ActorBgMbarChair;
|
|
|
|
typedef struct ActorEnBji01 ActorEnBji01;
|
|
|
|
typedef struct ActorEnTest ActorEnTest;
|
|
|
|
typedef struct ActorInit ActorInit;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 vromStart;
|
|
/* 0x04 */ u32 vromEnd;
|
|
/* 0x08 */ void* vramStart;
|
|
/* 0x0C */ void* vramEnd;
|
|
/* 0x10 */ void* loadedRamAddr; // original name: "allocp"
|
|
/* 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"
|
|
/* 0x1F */ UNK_TYPE1 pad1F[0x1];
|
|
} ActorOverlay; // size = 0x20
|
|
|
|
typedef struct ActorListEntry ActorListEntry;
|
|
|
|
typedef struct ActorMesh ActorMesh;
|
|
|
|
typedef struct DynaCollisionContext DynaCollisionContext;
|
|
|
|
typedef struct CollisionContext CollisionContext;
|
|
|
|
typedef struct ActorPlayer ActorPlayer;
|
|
|
|
typedef struct ActorShape ActorShape;
|
|
|
|
typedef struct Arena Arena;
|
|
|
|
typedef struct ArenaNode ArenaNode;
|
|
|
|
struct Arena {
|
|
/* 0x00 */ ArenaNode* head;
|
|
/* 0x04 */ void* start;
|
|
/* 0x08 */ OSMesgQueue lock;
|
|
/* 0x20 */ u8 unk20;
|
|
/* 0x21 */ u8 isInit;
|
|
/* 0x22 */ u8 flag;
|
|
}; // size = 0x24
|
|
|
|
struct ArenaNode {
|
|
/* 0x0 */ s16 magic; // Should always be 0x7373
|
|
/* 0x2 */ s16 isFree;
|
|
/* 0x4 */ u32 size;
|
|
/* 0x8 */ ArenaNode* next;
|
|
/* 0xC */ ArenaNode* prev;
|
|
}; // size = 0x10
|
|
|
|
typedef struct CameraContext CameraContext;
|
|
|
|
typedef struct ColCommon ColCommon;
|
|
|
|
typedef struct {
|
|
/* 0x000 */ s16 ATgroupLength;
|
|
/* 0x002 */ u16 flags; // bit 0: collision bodies can't be added or removed, only swapped out
|
|
/* 0x004 */ ColCommon* ATgroup[50];
|
|
/* 0x0CC */ s32 ACgroupLength;
|
|
/* 0x0D0 */ ColCommon* ACgroup[60];
|
|
/* 0x1C0 */ s32 OTgroupLength;
|
|
/* 0x1C4 */ ColCommon* OTgroup[50];
|
|
/* 0x28C */ s32 group4Length;
|
|
/* 0x290 */ ColCommon* group4[3];
|
|
} CollisionCheckContext; // size = 0x29C
|
|
|
|
typedef struct ColBodyInfo ColBodyInfo;
|
|
|
|
struct ColBodyInfo {
|
|
/* 0x00 */ ColTouch toucher;
|
|
/* 0x08 */ ColBump bumper;
|
|
/* 0x14 */ u8 unk14;
|
|
/* 0x15 */ u8 unk15; // bit 0: can be toucher in AT-AC collision
|
|
/* 0x16 */ u8 unk16; // bit 0: can be bumper in AT-AC collision
|
|
/* 0x17 */ u8 unk17;
|
|
/* 0x18 */ ColCommon* unk18;
|
|
/* 0x1C */ ColCommon* unk1C;
|
|
/* 0x20 */ ColBodyInfo* unk20;
|
|
/* 0x24 */ ColBodyInfo* unk24;
|
|
}; // size = 0x28
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColBodyInfo body;
|
|
/* 0x28 */ ColSphereParams params;
|
|
} ColSphereGroupElement; // size = 0x40
|
|
|
|
typedef struct {
|
|
/* 0x00 */ ColBodyInfo body;
|
|
/* 0x28 */ ColTriParams params;
|
|
} ColTri; // size = 0x5C
|
|
|
|
typedef struct ColCylinder ColCylinder;
|
|
|
|
typedef struct ColQuad ColQuad;
|
|
|
|
typedef struct ColSphere ColSphere;
|
|
|
|
typedef struct ColSphereGroup ColSphereGroup;
|
|
|
|
typedef struct ColTriGroup ColTriGroup;
|
|
|
|
typedef struct ActorEnBom ActorEnBom;
|
|
|
|
typedef struct ActorEnFirefly ActorEnFirefly;
|
|
|
|
typedef struct ActorObjBell ActorObjBell;
|
|
|
|
typedef struct DaytelopContext DaytelopContext;
|
|
|
|
typedef struct DynaPolyActor DynaPolyActor;
|
|
|
|
struct ActorMesh {
|
|
/* 0x00 */ DynaPolyActor* actor;
|
|
/* 0x04 */ BgMeshHeader* header;
|
|
/* 0x08 */ ActorMeshPolyLists polyLists;
|
|
/* 0x10 */ s16 verticesStartIndex;
|
|
/* 0x12 */ s16 waterboxesStartIndex;
|
|
/* 0x14 */ ActorMeshParams prevParams;
|
|
/* 0x34 */ ActorMeshParams currParams;
|
|
/* 0x54 */ Vec3s averagePos;
|
|
/* 0x5A */ s16 radiusFromAveragePos;
|
|
/* 0x5C */ f32 minY;
|
|
/* 0x60 */ f32 maxY;
|
|
}; // size = 0x64
|
|
|
|
struct DynaCollisionContext {
|
|
/* 0x0000 */ u8 unk0;
|
|
/* 0x0001 */ UNK_TYPE1 pad1[0x3];
|
|
/* 0x0004 */ ActorMesh actorMeshArr[50];
|
|
/* 0x138C */ u16 flags[50]; // bit 0 - Is mesh active
|
|
/* 0x13F0 */ BgPolygon* polygons;
|
|
/* 0x13F4 */ BgVertex* vertices;
|
|
/* 0x13F8 */ BgWaterboxList waterboxes;
|
|
/* 0x1400 */ BgPolygonLinkedList polygonList;
|
|
/* 0x140C */ u32 maxNodes;
|
|
/* 0x1410 */ u32 maxPolygons;
|
|
/* 0x1414 */ u32 maxVertices;
|
|
/* 0x1418 */ u32 maxMemory;
|
|
/* 0x141C */ u32 unk141C;
|
|
}; // size = 0x1420
|
|
|
|
struct CollisionContext {
|
|
/* 0x0000 */ StaticCollisionContext stat;
|
|
/* 0x0050 */ DynaCollisionContext dyna;
|
|
}; // size = 0x1470
|
|
|
|
typedef struct ActorBgIknvObj ActorBgIknvObj;
|
|
|
|
typedef struct EffFootmark EffFootmark;
|
|
|
|
typedef struct EffShieldParticle EffShieldParticle;
|
|
|
|
typedef struct EffShieldParticleParams EffShieldParticleParams;
|
|
|
|
typedef struct EffTables EffTables;
|
|
|
|
typedef struct EffectTableInfo EffectTableInfo;
|
|
|
|
typedef struct FaultAddrConvClient FaultAddrConvClient;
|
|
|
|
struct FaultAddrConvClient {
|
|
/* 0x0 */ FaultAddrConvClient* next;
|
|
/* 0x4 */ fault_address_converter_func callback;
|
|
/* 0x8 */ void* param;
|
|
}; // size = 0xC
|
|
|
|
typedef struct FaultClient FaultClient;
|
|
|
|
struct FaultClient {
|
|
/* 0x0 */ FaultClient* next;
|
|
/* 0x4 */ fault_client_func callback;
|
|
/* 0x8 */ void* param0;
|
|
/* 0xC */ void* param1;
|
|
}; // size = 0x10
|
|
|
|
typedef struct {
|
|
/* 0x000 */ OSThread thread;
|
|
/* 0x1B0 */ u8 stack[1536]; // Seems leftover from an earlier version. The thread actually uses a stack of this size at 0x8009BE60
|
|
/* 0x7B0 */ OSMesgQueue queue;
|
|
/* 0x7C8 */ OSMesg msg[1];
|
|
/* 0x7CC */ u8 exitDebugger;
|
|
/* 0x7CD */ u8 msgId; // 1 - CPU Break; 2 - Fault; 3 - Unknown
|
|
/* 0x7CE */ u8 faultHandlerEnabled;
|
|
/* 0x7CF */ u8 faultActive;
|
|
/* 0x7D0 */ OSThread* faultedThread;
|
|
/* 0x7D4 */ fault_update_input_func padCallback;
|
|
/* 0x7D8 */ FaultClient* clients;
|
|
/* 0x7DC */ FaultAddrConvClient* addrConvClients;
|
|
/* 0x7E0 */ UNK_TYPE1 pad7E0[0x4];
|
|
/* 0x7E4 */ Input padInput[4];
|
|
/* 0x844 */ void* fb;
|
|
} FaultThreadStruct; // size = 0x848
|
|
|
|
typedef struct FileChooseContext FileChooseContext;
|
|
|
|
typedef void(*filechoose_update_func)(FileChooseContext* ctxt);
|
|
|
|
typedef struct FireObj FireObj;
|
|
|
|
typedef struct FireObjLight FireObjLight;
|
|
|
|
typedef struct GameAlloc GameAlloc;
|
|
|
|
typedef struct GameState GameState;
|
|
|
|
typedef struct OpeningContext OpeningContext;
|
|
|
|
typedef struct PreNMIContext PreNMIContext;
|
|
|
|
typedef struct TitleContext TitleContext;
|
|
|
|
typedef struct GameAllocNode GameAllocNode;
|
|
|
|
struct GameAllocNode {
|
|
/* 0x0 */ GameAllocNode* next;
|
|
/* 0x4 */ GameAllocNode* prev;
|
|
/* 0x8 */ u32 size;
|
|
/* 0xC */ UNK_TYPE1 padC[0x4];
|
|
}; // size = 0x10
|
|
|
|
struct GameAlloc {
|
|
/* 0x00 */ GameAllocNode base;
|
|
/* 0x10 */ GameAllocNode* head;
|
|
}; // size = 0x14
|
|
|
|
struct GameState {
|
|
/* 0x00 */ GraphicsContext* gfxCtx;
|
|
/* 0x04 */ func_ptr main;
|
|
/* 0x08 */ func_ptr destroy;
|
|
/* 0x0C */ func_ptr nextGameStateInit;
|
|
/* 0x10 */ u32 nextGameStateSize;
|
|
/* 0x14 */ Input input[4];
|
|
/* 0x74 */ GameStateHeap heap;
|
|
/* 0x84 */ GameAlloc alloc;
|
|
/* 0x98 */ UNK_TYPE1 pad98[0x3];
|
|
/* 0x9B */ u8 running; // If 0, switch to next game state
|
|
/* 0x9C */ u32 frames;
|
|
/* 0xA0 */ UNK_TYPE1 padA0[0x2];
|
|
/* 0xA2 */ u8 framerateDivisor; // game speed?
|
|
/* 0xA3 */ UNK_TYPE1 unkA3;
|
|
}; // size = 0xA4
|
|
|
|
struct OpeningContext {
|
|
/* 0x000 */ GameState common;
|
|
/* 0x0A4 */ UNK_TYPE1 padA4[0x4];
|
|
/* 0x0A8 */ View view;
|
|
}; // size = 0x210
|
|
|
|
struct PreNMIContext {
|
|
/* 0x00 */ GameState state;
|
|
/* 0xA4 */ u32 timer;
|
|
/* 0xA8 */ UNK_TYPE4 unkA8;
|
|
}; // size = 0xAC
|
|
|
|
struct TitleContext {
|
|
/* 0x000 */ GameState state;
|
|
/* 0x0A4 */ u8* nintendo_logo_data;
|
|
/* 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];
|
|
}; // size = 0x248
|
|
|
|
struct DaytelopContext {
|
|
/* 0x000 */ GameState common;
|
|
/* 0x0A4 */ UNK_TYPE1 padA4[0xC];
|
|
/* 0x0B0 */ View view;
|
|
/* 0x218 */ UNK_TYPE1 pad218[0x28];
|
|
/* 0x240 */ s16 transitionCountdown;
|
|
/* 0x242 */ s16 unk242;
|
|
/* 0x244 */ s16 unk244;
|
|
/* 0x246 */ UNK_TYPE1 pad246[0x2];
|
|
}; // size = 0x248
|
|
|
|
struct FileChooseContext {
|
|
/* 0x00000 */ GameState common;
|
|
/* 0x000A4 */ UNK_TYPE1 padA4[0x14];
|
|
/* 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];
|
|
}; // size = 0x24558
|
|
|
|
typedef struct IrqMgr IrqMgr;
|
|
|
|
typedef struct AudioThreadStruct AudioThreadStruct;
|
|
|
|
typedef struct LightingContext LightingContext;
|
|
|
|
typedef struct GlobalContext GlobalContext;
|
|
|
|
typedef struct {
|
|
/* 0x0 */ GlobalContext* ctxt;
|
|
/* 0x4 */ s32 type; // bitfield, highest set bit determines type
|
|
/* 0x8 */ s16 countdown;
|
|
/* 0xA */ s16 state; // 0 - stopped, 1 - active, 2 - setup
|
|
} Quake2Context; // size = 0xC
|
|
|
|
typedef s32(*collision_add_func)(GlobalContext*, ColCommon*);
|
|
|
|
typedef void(*collision_func)(GlobalContext*, CollisionCheckContext*, ColCommon*, ColCommon*);
|
|
|
|
typedef void(*cutscene_update_func)(GlobalContext* ctxt, CutsceneContext* cCtxt);
|
|
|
|
typedef void(*draw_func)(GlobalContext* ctxt, s16 index);
|
|
|
|
typedef void(*global_context_func)(GlobalContext*);
|
|
|
|
typedef void(*light_map_positional_func)(LightMapper* mapper, void* params, GlobalContext* ctxt);
|
|
|
|
typedef void(*room_draw_func)(GlobalContext* ctxt, Room* room, u32 flags);
|
|
|
|
typedef struct {
|
|
/* 0x00 */ draw_func unk0;
|
|
/* 0x04 */ u32 unk4;
|
|
/* 0x08 */ u32 unk8;
|
|
/* 0x0C */ u32 unkC;
|
|
/* 0x10 */ u32 unk10;
|
|
/* 0x14 */ u32 unk14;
|
|
/* 0x18 */ u32 unk18;
|
|
/* 0x1C */ u32 unk1C;
|
|
/* 0x20 */ u32 unk20;
|
|
} s801BB170; // size = 0x24
|
|
|
|
typedef void(*scene_header_func)(GlobalContext* ctxt, SceneCmd* entry);
|
|
|
|
typedef void(*scene_proc_draw_func)(GlobalContext* ctxt, u32 segment, void* params);
|
|
|
|
typedef struct Camera Camera;
|
|
|
|
typedef struct {
|
|
/* 0x00 */ s16 randIdx;
|
|
/* 0x02 */ s16 countdownMax;
|
|
/* 0x04 */ Camera* cam;
|
|
/* 0x08 */ u32 callbackIdx;
|
|
/* 0x0C */ s16 y;
|
|
/* 0x0E */ s16 x;
|
|
/* 0x10 */ s16 zoom;
|
|
/* 0x12 */ s16 rotZ;
|
|
/* 0x14 */ QuakeRequest14 unk14;
|
|
/* 0x1A */ s16 speed;
|
|
/* 0x1C */ s16 unk1C;
|
|
/* 0x1E */ s16 countdown;
|
|
/* 0x20 */ s16 camPtrIdx;
|
|
/* 0x22 */ UNK_TYPE1 pad22[0x2];
|
|
} QuakeRequest; // size = 0x24
|
|
|
|
typedef s32(*camera_update_func)(Camera* camera);
|
|
|
|
typedef s16(*quake_callback_func)(QuakeRequest* req, ShakeInfo* shake);
|
|
|
|
typedef struct LightsList LightsList;
|
|
|
|
typedef struct LoadedParticleEntry LoadedParticleEntry;
|
|
|
|
struct EffectTableInfo {
|
|
/* 0x0 */ LoadedParticleEntry* data_table; // Name from debug assert
|
|
/* 0x4 */ s32 searchIndex;
|
|
/* 0x8 */ s32 size;
|
|
}; // size = 0xC
|
|
|
|
typedef void(*effect_func)(GlobalContext* ctxt, u32 index, LoadedParticleEntry* particle);
|
|
|
|
typedef void(*effect_init_func)(GlobalContext* ctxt, u32 index, LoadedParticleEntry* particle, void* init);
|
|
|
|
struct LoadedParticleEntry {
|
|
/* 0x00 */ Vec3f position;
|
|
/* 0x0C */ Vec3f velocity;
|
|
/* 0x18 */ Vec3f acceleration;
|
|
/* 0x24 */ effect_func update;
|
|
/* 0x28 */ effect_func draw;
|
|
/* 0x2C */ Vec3f unk2C;
|
|
/* 0x38 */ u32 displayList;
|
|
/* 0x3C */ UNK_TYPE4 unk3C;
|
|
/* 0x40 */ s16 regs[13]; // These are particle-specific
|
|
/* 0x5A */ u16 flags; // bit 0: set if this entry is not considered free on a priority tie bit 1: ? bit 2: ?
|
|
/* 0x5C */ s16 life; // -1 means this entry is free
|
|
/* 0x5E */ u8 priority; // Lower number mean higher priority
|
|
/* 0x5F */ u8 type;
|
|
}; // size = 0x60
|
|
|
|
typedef struct {
|
|
/* 0x0 */ UNK_TYPE4 unk0;
|
|
/* 0x4 */ effect_init_func init;
|
|
} ParticleOverlayInfo; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x00 */ u32 vromStart;
|
|
/* 0x04 */ u32 vromEnd;
|
|
/* 0x08 */ void* vramStart;
|
|
/* 0x0C */ void* vramEnd;
|
|
/* 0x10 */ void* loadedRamAddr;
|
|
/* 0x14 */ ParticleOverlayInfo* overlayInfo;
|
|
/* 0x18 */ u32 unk18; // Always 0x01000000?
|
|
} ParticleOverlay; // size = 0x1C
|
|
|
|
typedef struct OSMesgQueueListNode OSMesgQueueListNode;
|
|
|
|
struct IrqMgr {
|
|
/* 0x000 */ OSScMsg verticalRetraceMesg;
|
|
/* 0x020 */ OSScMsg prenmiMsg;
|
|
/* 0x040 */ OSScMsg nmiMsg;
|
|
/* 0x060 */ OSMesgQueue irqQueue;
|
|
/* 0x078 */ OSMesg irqBuffer[8];
|
|
/* 0x098 */ OSThread thread;
|
|
/* 0x248 */ OSMesgQueueListNode* callbacks;
|
|
/* 0x24C */ u8 prenmiStage;
|
|
/* 0x250 */ OSTime lastPrenmiTime;
|
|
/* 0x258 */ OSTimer prenmiTimer;
|
|
/* 0x278 */ OSTime lastFrameTime;
|
|
}; // size = 0x280
|
|
|
|
struct OSMesgQueueListNode {
|
|
/* 0x0 */ OSMesgQueueListNode* next;
|
|
/* 0x4 */ OSMesgQueue* queue;
|
|
}; // size = 0x8
|
|
|
|
typedef struct {
|
|
/* 0x000 */ u8 controllers; // bit 0 is set if controller 1 is plugged in, etc.
|
|
/* 0x001 */ UNK_TYPE1 pad1[0x13];
|
|
/* 0x014 */ OSContStatus statuses[4];
|
|
/* 0x024 */ UNK_TYPE4 unk24;
|
|
/* 0x028 */ OSMesg lockMesg[1];
|
|
/* 0x02C */ OSMesg interrupts[8];
|
|
/* 0x04C */ OSMesgQueue siEventCallbackQueue;
|
|
/* 0x064 */ OSMesgQueue lock;
|
|
/* 0x07C */ OSMesgQueue irqmgrCallbackQueue;
|
|
/* 0x094 */ OSMesgQueueListNode irqmgrCallbackQueueNode;
|
|
/* 0x09C */ IrqMgr* irqmgr;
|
|
/* 0x0A0 */ OSThread thread;
|
|
/* 0x250 */ Input input[4];
|
|
/* 0x2B0 */ OSContPad controllerState1[4];
|
|
/* 0x2C8 */ u8 maxNumControllers;
|
|
/* 0x2C9 */ UNK_TYPE1 pad2C9[0x1B3];
|
|
/* 0x47C */ u8 unk47C;
|
|
/* 0x47D */ u8 unk47D;
|
|
/* 0x47E */ u8 hasStopped;
|
|
/* 0x47F */ UNK_TYPE1 pad47F[0x1];
|
|
} PadmgrThreadStruct; // size = 0x480
|
|
|
|
typedef struct {
|
|
/* 0x000 */ OSMesgQueue unk0;
|
|
/* 0x018 */ UNK_TYPE4 unk18[64];
|
|
/* 0x118 */ OSMesgQueue unk118;
|
|
/* 0x130 */ UNK_TYPE4 unk130[8];
|
|
/* 0x150 */ OSThread thread;
|
|
/* 0x300 */ UNK_TYPE4 unk300;
|
|
/* 0x304 */ UNK_TYPE4 unk304;
|
|
/* 0x308 */ UNK_TYPE4 unk308;
|
|
/* 0x30C */ UNK_TYPE4 unk30C;
|
|
/* 0x310 */ UNK_TYPE4 unk310;
|
|
/* 0x314 */ UNK_TYPE4 unk314;
|
|
/* 0x318 */ s32 unk318;
|
|
/* 0x31C */ UNK_TYPE1 pad31C[0x4];
|
|
/* 0x320 */ UNK_TYPE4 unk320;
|
|
/* 0x324 */ UNK_TYPE4 unk324;
|
|
/* 0x328 */ UNK_TYPE1 pad328[0x7];
|
|
/* 0x32F */ s8 unk32F;
|
|
/* 0x330 */ OSMesgQueueListNode unk330;
|
|
} SchedThreadStruct; // size = 0x338
|
|
|
|
struct AudioThreadStruct {
|
|
/* 0x000 */ IrqMgr* irqmgr;
|
|
/* 0x004 */ SchedThreadStruct* sched;
|
|
/* 0x008 */ UNK_TYPE1 pad8[0x58];
|
|
/* 0x060 */ UNK_TYPE4 unk60;
|
|
/* 0x064 */ OSMesgQueue irqQueue;
|
|
/* 0x07C */ OSMesg irqBuffer[30];
|
|
/* 0x0F4 */ OSMesgQueue unkF4;
|
|
/* 0x10C */ UNK_TYPE4 unk10C;
|
|
/* 0x110 */ OSMesgQueue initDoneCallback;
|
|
/* 0x128 */ OSMesg initDoneCallbackMsgBuffer[1];
|
|
/* 0x12C */ UNK_TYPE1 pad12C[0x4];
|
|
/* 0x130 */ OSThread thread;
|
|
}; // size = 0x2E0
|
|
|
|
typedef struct StackEntry StackEntry;
|
|
|
|
struct StackEntry {
|
|
/* 0x00 */ StackEntry* next;
|
|
/* 0x04 */ StackEntry* prev;
|
|
/* 0x08 */ u32 head;
|
|
/* 0x0C */ u32 tail;
|
|
/* 0x10 */ u32 initValue;
|
|
/* 0x14 */ s32 minSpace;
|
|
/* 0x18 */ const char* name;
|
|
}; // size = 0x1C
|
|
|
|
typedef struct TargetContext TargetContext;
|
|
|
|
typedef struct ActorContext ActorContext;
|
|
|
|
typedef struct s800B948C s800B948C;
|
|
|
|
typedef struct z_Light z_Light;
|
|
|
|
struct EffShieldParticleParams {
|
|
/* 0x000 */ EffShieldParticleParticle particles[16];
|
|
/* 0x180 */ u8 numParticles;
|
|
/* 0x181 */ UNK_TYPE1 pad181[0x1];
|
|
/* 0x182 */ Vec3s position;
|
|
/* 0x188 */ ColorRGBA8 primColorStart;
|
|
/* 0x18C */ ColorRGBA8 envColorStart;
|
|
/* 0x190 */ ColorRGBA8 primColorMid;
|
|
/* 0x194 */ ColorRGBA8 envColorMid;
|
|
/* 0x198 */ ColorRGBA8 primColorEnd;
|
|
/* 0x19C */ ColorRGBA8 envColorEnd;
|
|
/* 0x1A0 */ f32 acceleration;
|
|
/* 0x1A4 */ UNK_TYPE1 pad1A4[0x4];
|
|
/* 0x1A8 */ f32 maxInitialSpeed;
|
|
/* 0x1AC */ f32 lengthCutoff;
|
|
/* 0x1B0 */ u8 duration;
|
|
/* 0x1B1 */ u8 age;
|
|
/* 0x1B2 */ LightInfo lightInfo;
|
|
/* 0x1C0 */ z_Light* light;
|
|
/* 0x1C4 */ s32 hasLight;
|
|
}; // size = 0x1C8
|
|
|
|
struct FireObjLight {
|
|
/* 0x00 */ z_Light* light;
|
|
/* 0x04 */ LightInfoPositional lightInfo;
|
|
/* 0x12 */ u8 unk12;
|
|
}; // size = 0x13
|
|
|
|
struct LightingContext {
|
|
/* 0x0 */ z_Light* lightsHead;
|
|
/* 0x4 */ u8 ambientRed;
|
|
/* 0x5 */ u8 ambientGreen;
|
|
/* 0x6 */ u8 ambientBlue;
|
|
/* 0x7 */ u8 unk7;
|
|
/* 0x8 */ u8 unk8;
|
|
/* 0x9 */ u8 unk9;
|
|
/* 0xA */ s16 unkA;
|
|
/* 0xC */ s16 unkC;
|
|
}; // size = 0x10
|
|
|
|
struct z_Light {
|
|
/* 0x0 */ LightInfo* info;
|
|
/* 0x4 */ z_Light* prev;
|
|
/* 0x8 */ z_Light* next;
|
|
}; // size = 0xC
|
|
|
|
struct EffShieldParticle {
|
|
/* 0x000 */ EffCommon base;
|
|
/* 0x004 */ EffShieldParticleParams params;
|
|
}; // size = 0x1CC
|
|
|
|
struct EffTables {
|
|
/* 0x0000 */ GlobalContext* ctxt;
|
|
/* 0x0004 */ EffSpark sparks[3];
|
|
/* 0x0E5C */ EffBlure blures[25];
|
|
/* 0x388C */ EffShieldParticle shieldParticles[3];
|
|
/* 0x3DF0 */ EffTireMark tireMarks[15];
|
|
}; // size = 0x98E0
|
|
|
|
struct LightsList {
|
|
/* 0x000 */ int numOccupied;
|
|
/* 0x004 */ int nextFree;
|
|
/* 0x008 */ z_Light lights[32];
|
|
}; // size = 0x188
|
|
|
|
typedef struct Actor Actor;
|
|
|
|
struct ActorListEntry {
|
|
/* 0x0 */ s32 length; // number of actors loaded of this type
|
|
/* 0x4 */ Actor* first; // pointer to first actor of this type
|
|
/* 0x8 */ UNK_TYPE1 pad8[0x4];
|
|
}; // size = 0xC
|
|
|
|
struct Camera {
|
|
/* 0x000 */ UNK_TYPE1 pad0[0x4];
|
|
/* 0x004 */ Vec3f unk4;
|
|
/* 0x010 */ UNK_TYPE1 pad10[0x8];
|
|
/* 0x018 */ f32 unk18;
|
|
/* 0x01C */ s16 unk1C;
|
|
/* 0x01E */ s16 unk1E;
|
|
/* 0x020 */ Vec3f unk20;
|
|
/* 0x02C */ UNK_TYPE1 pad2C[0x2];
|
|
/* 0x02E */ s16 unk2E;
|
|
/* 0x030 */ UNK_TYPE1 pad30[0x10];
|
|
/* 0x040 */ s16 unk40;
|
|
/* 0x042 */ s16 unk42;
|
|
/* 0x044 */ UNK_TYPE1 pad44[0x8];
|
|
/* 0x04C */ s16 unk4C;
|
|
/* 0x04E */ UNK_TYPE1 pad4E[0x2];
|
|
/* 0x050 */ Vec3f focalPoint;
|
|
/* 0x05C */ Vec3f eye;
|
|
/* 0x068 */ Vec3f upDir;
|
|
/* 0x074 */ Vec3f unk74;
|
|
/* 0x080 */ f32 unk80;
|
|
/* 0x084 */ f32 unk84;
|
|
/* 0x088 */ f32 unk88;
|
|
/* 0x08C */ GlobalContext* ctxt;
|
|
/* 0x090 */ ActorPlayer* player;
|
|
/* 0x094 */ PosRot unk94;
|
|
/* 0x0A8 */ Actor* unkA8;
|
|
/* 0x0AC */ Vec3f unkAC;
|
|
/* 0x0B8 */ UNK_TYPE1 padB8[0x8];
|
|
/* 0x0C0 */ f32 unkC0;
|
|
/* 0x0C4 */ f32 unkC4;
|
|
/* 0x0C8 */ f32 unkC8;
|
|
/* 0x0CC */ f32 unkCC;
|
|
/* 0x0D0 */ f32 unkD0;
|
|
/* 0x0D4 */ f32 unkD4;
|
|
/* 0x0D8 */ UNK_TYPE1 padD8[0x4];
|
|
/* 0x0DC */ f32 unkDC;
|
|
/* 0x0E0 */ f32 unkE0;
|
|
/* 0x0E4 */ UNK_TYPE1 padE4[0x18];
|
|
/* 0x0FC */ f32 fov;
|
|
/* 0x100 */ f32 unk100;
|
|
/* 0x104 */ UNK_TYPE1 pad104[0x30];
|
|
/* 0x134 */ Vec3s unk134;
|
|
/* 0x13A */ UNK_TYPE1 pad13A[0x4];
|
|
/* 0x13E */ u16 unk13E;
|
|
/* 0x140 */ s16 unk140;
|
|
/* 0x142 */ s16 state;
|
|
/* 0x144 */ s16 mode;
|
|
/* 0x146 */ UNK_TYPE1 pad146[0x2];
|
|
/* 0x148 */ s16 unk148;
|
|
/* 0x14A */ s16 unk14A;
|
|
/* 0x14C */ s16 unk14C;
|
|
/* 0x14E */ UNK_TYPE1 pad14E[0x6];
|
|
/* 0x154 */ s16 unk154;
|
|
/* 0x156 */ UNK_TYPE1 pad156[0x4];
|
|
/* 0x15A */ s16 unk15A;
|
|
/* 0x15C */ s16 unk15C;
|
|
/* 0x15E */ s16 unk15E;
|
|
/* 0x160 */ UNK_TYPE1 pad160[0x4];
|
|
/* 0x164 */ s16 unk164;
|
|
/* 0x166 */ s16 unk166;
|
|
/* 0x168 */ UNK_TYPE1 pad168[0x10];
|
|
}; // size = 0x178
|
|
|
|
struct CameraContext {
|
|
/* 0x000 */ Camera activeCameras[4];
|
|
/* 0x5E0 */ Camera* activeCameraPtrs[4];
|
|
/* 0x5F0 */ s16 activeCamera;
|
|
/* 0x5F2 */ s16 unk5F2;
|
|
}; // size = 0x5F4
|
|
|
|
struct ColCommon {
|
|
/* 0x00 */ Actor* actor;
|
|
/* 0x04 */ Actor* collisionAT;
|
|
/* 0x08 */ Actor* collisionAC;
|
|
/* 0x0C */ Actor* collisionOT;
|
|
/* 0x10 */ u8 flagsAT;
|
|
/* 0x11 */ u8 flagsAC; // bit 1 - collision occured?
|
|
/* 0x12 */ u8 unk12;
|
|
/* 0x13 */ u8 unk13;
|
|
/* 0x14 */ u8 unk14;
|
|
/* 0x15 */ u8 type;
|
|
/* 0x16 */ UNK_TYPE1 pad16[0x2];
|
|
}; // size = 0x18
|
|
|
|
struct ColCylinder {
|
|
/* 0x00 */ ColCommon base;
|
|
/* 0x18 */ ColBodyInfo body;
|
|
/* 0x40 */ ColCylinderParams params;
|
|
}; // size = 0x4C
|
|
|
|
struct ColQuad {
|
|
/* 0x00 */ ColCommon base;
|
|
/* 0x18 */ ColBodyInfo body;
|
|
/* 0x40 */ ColQuadParams params;
|
|
}; // size = 0x80
|
|
|
|
struct ColSphere {
|
|
/* 0x00 */ ColCommon base;
|
|
/* 0x18 */ ColBodyInfo body;
|
|
/* 0x40 */ ColSphereParams params;
|
|
}; // size = 0x58
|
|
|
|
struct ColSphereGroup {
|
|
/* 0x00 */ ColCommon base;
|
|
/* 0x18 */ u32 count;
|
|
/* 0x1C */ ColSphereGroupElement* spheres;
|
|
}; // size = 0x20
|
|
|
|
struct ColTriGroup {
|
|
/* 0x00 */ ColCommon base;
|
|
/* 0x18 */ u32 count;
|
|
/* 0x1C */ ColTri* tris;
|
|
}; // size = 0x20
|
|
|
|
struct EffFootmark {
|
|
/* 0x00 */ z_Matrix displayMatrix;
|
|
/* 0x40 */ Actor* actor;
|
|
/* 0x44 */ Vec3f location;
|
|
/* 0x50 */ u8 flags; // bit 0 - footmark fades out
|
|
/* 0x51 */ u8 id;
|
|
/* 0x52 */ u8 red;
|
|
/* 0x53 */ u8 blue;
|
|
/* 0x54 */ u8 green;
|
|
/* 0x55 */ UNK_TYPE1 pad55[0x1];
|
|
/* 0x56 */ u16 alpha;
|
|
/* 0x58 */ u16 alphaChange;
|
|
/* 0x5A */ u16 size;
|
|
/* 0x5C */ u16 fadeoutDelay;
|
|
/* 0x5E */ u16 age;
|
|
}; // size = 0x60
|
|
|
|
struct FireObj {
|
|
/* 0x00 */ Vec3f position;
|
|
/* 0x0C */ f32 size;
|
|
/* 0x10 */ f32 sizeInv;
|
|
/* 0x14 */ f32 xScale;
|
|
/* 0x18 */ f32 yScale;
|
|
/* 0x1C */ f32 dynamicSize;
|
|
/* 0x20 */ f32 dynamicSizeStep;
|
|
/* 0x24 */ u8 state; // 0 - growing, 1 - shrinking, 2 - fully lit, 3 - not lit
|
|
/* 0x25 */ u8 sizeGrowsCos2;
|
|
/* 0x26 */ u8 unk26;
|
|
/* 0x27 */ u8 unk27;
|
|
/* 0x28 */ u8 flags; // bit 0 - ?, bit 1 - ?
|
|
/* 0x29 */ UNK_TYPE1 pad29[0x1];
|
|
/* 0x2A */ s16 ignitionDelay;
|
|
/* 0x2C */ ColCylinder collision;
|
|
/* 0x78 */ FireObjLight light;
|
|
}; // size = 0x8B
|
|
|
|
struct TargetContext {
|
|
/* 0x00 */ Vec3f unk0;
|
|
/* 0x0C */ Vec3f unkC;
|
|
/* 0x18 */ f32 unk18;
|
|
/* 0x1C */ f32 unk1C;
|
|
/* 0x20 */ f32 unk20;
|
|
/* 0x24 */ f32 unk24;
|
|
/* 0x28 */ f32 unk28;
|
|
/* 0x2C */ f32 unk2C;
|
|
/* 0x30 */ f32 unk30;
|
|
/* 0x34 */ f32 unk34;
|
|
/* 0x38 */ Actor* unk38;
|
|
/* 0x3C */ Actor* unk3C;
|
|
/* 0x40 */ f32 unk40;
|
|
/* 0x44 */ f32 unk44;
|
|
/* 0x48 */ s16 unk48;
|
|
/* 0x4A */ u8 unk4A;
|
|
/* 0x4B */ u8 unk4B;
|
|
/* 0x4C */ s8 unk4C;
|
|
/* 0x4D */ UNK_TYPE1 pad4D[0x3];
|
|
/* 0x50 */ TargetContextEntry unk50[3];
|
|
/* 0x8C */ Actor* unk8C;
|
|
/* 0x90 */ Actor* unk90;
|
|
/* 0x94 */ UNK_TYPE1 pad94[0x4];
|
|
}; // size = 0x98
|
|
|
|
typedef void(*actor_func)(Actor* this, GlobalContext* ctxt);
|
|
|
|
typedef void(*actor_shadow_draw_func)(Actor* actor, LightMapper* mapper, GlobalContext* ctxt);
|
|
|
|
struct s800B948C {
|
|
/* 0x00 */ GlobalContext* ctxt;
|
|
/* 0x04 */ Actor* actor;
|
|
/* 0x08 */ u32 updateActorIfSet;
|
|
/* 0x0C */ u32 unkC;
|
|
/* 0x10 */ Actor* unk10;
|
|
/* 0x14 */ ActorPlayer* player;
|
|
/* 0x18 */ u32 runMainIfSet; // Bitmask of actor flags. The actor will only have main called if it has at least 1 flag set that matches this bitmask
|
|
}; // size = 0x1C
|
|
|
|
struct ActorContext {
|
|
/* 0x000 */ UNK_TYPE1 pad0[0x2];
|
|
/* 0x002 */ u8 unk2;
|
|
/* 0x003 */ u8 unk3;
|
|
/* 0x004 */ s8 unk4;
|
|
/* 0x005 */ u8 unk5;
|
|
/* 0x006 */ UNK_TYPE1 pad6[0x5];
|
|
/* 0x00B */ s8 unkB;
|
|
/* 0x00C */ s16 unkC;
|
|
/* 0x00E */ u8 totalLoadedActors;
|
|
/* 0x00F */ u8 undrawnActorCount;
|
|
/* 0x010 */ ActorListEntry actorList[12];
|
|
/* 0x0A0 */ Actor* undrawnActors[32]; // Records the first 32 actors drawn each frame
|
|
/* 0x120 */ TargetContext targetContext;
|
|
/* 0x1B8 */ u32 switchFlags[4]; // First 0x40 are permanent, second 0x40 are temporary
|
|
/* 0x1C8 */ u32 chestFlags;
|
|
/* 0x1CC */ u32 clearedRooms;
|
|
/* 0x1D0 */ u32 clearedRoomsTemp;
|
|
/* 0x1D4 */ u32 collectibleFlags[4]; // bitfield of 128 bits
|
|
/* 0x1E4 */ TitleCardContext titleCtxt;
|
|
/* 0x1F4 */ u8 unk1F4;
|
|
/* 0x1F5 */ u8 unk1F5;
|
|
/* 0x1F6 */ UNK_TYPE1 pad1F6[0x2];
|
|
/* 0x1F8 */ f32 unk1F8;
|
|
/* 0x1FC */ Vec3f unk1FC;
|
|
/* 0x208 */ UNK_TYPE1 pad208[0x48];
|
|
/* 0x250 */ void* unk250; // allocation of 0x20f0 bytes?
|
|
/* 0x254 */ UNK_TYPE1 pad254[0x14];
|
|
/* 0x268 */ u8 unk268;
|
|
/* 0x269 */ UNK_TYPE1 pad269[0x1B];
|
|
}; // size = 0x284
|
|
|
|
struct ActorInit {
|
|
/* 0x00 */ s16 id;
|
|
/* 0x02 */ u8 type;
|
|
/* 0x03 */ u8 room;
|
|
/* 0x04 */ u32 flags;
|
|
/* 0x08 */ s16 objectId;
|
|
/* 0x0C */ u32 instanceSize;
|
|
/* 0x10 */ actor_func init;
|
|
/* 0x14 */ actor_func destroy;
|
|
/* 0x18 */ actor_func update;
|
|
/* 0x1C */ actor_func draw;
|
|
}; // size = 0x20
|
|
|
|
struct ActorShape {
|
|
/* 0x00 */ Vec3s rot;
|
|
/* 0x08 */ f32 yDisplacement;
|
|
/* 0x0C */ actor_shadow_draw_func shadowDrawFunc;
|
|
/* 0x10 */ f32 scale;
|
|
/* 0x14 */ u8 alphaScale; // 255 means always draw full opacity if visible
|
|
}; // size = 0x18
|
|
|
|
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];
|
|
/* 0x000B8 */ View view;
|
|
/* 0x00220 */ CameraContext cameraCtx;
|
|
/* 0x00814 */ u8 unk814;
|
|
/* 0x00815 */ u8 unk815;
|
|
/* 0x00816 */ UNK_TYPE1 pad816[0x2];
|
|
/* 0x00818 */ LightingContext lightCtx;
|
|
/* 0x00828 */ u32 unk828;
|
|
/* 0x0082C */ UNK_TYPE1 pad82C[0x4];
|
|
/* 0x00830 */ CollisionContext colCtx;
|
|
/* 0x01CA0 */ ActorContext actorCtx;
|
|
/* 0x01F24 */ CutsceneContext csCtx;
|
|
/* 0x01F74 */ CutsceneEntry* cutsceneList;
|
|
/* 0x01F78 */ GlobalContext1F78 unk1F78[16];
|
|
/* 0x02138 */ EffFootmark footmarks[100];
|
|
/* 0x046B8 */ SramContext sram;
|
|
/* 0x046D8 */ UNK_TYPE1 pad46D8[0x230];
|
|
/* 0x04908 */ MessageContext msgCtx;
|
|
/* 0x169E0 */ UNK_TYPE1 pad169E0[0x8];
|
|
/* 0x169E8 */ InterfaceContext interfaceCtx;
|
|
/* 0x16D30 */ GlobalContext16D30 unk16D30;
|
|
/* 0x17000 */ u16 unk17000;
|
|
/* 0x17002 */ UNK_TYPE1 pad17002[0x2];
|
|
/* 0x17004 */ KankyoContext kankyoContext;
|
|
/* 0x170F8 */ UNK_TYPE1 pad170F8[0xC90];
|
|
/* 0x17D88 */ SceneContext sceneContext;
|
|
/* 0x186E0 */ RoomContext roomContext;
|
|
/* 0x18760 */ u8 transitionActorCount;
|
|
/* 0x18761 */ UNK_TYPE1 pad18761[0x3];
|
|
/* 0x18764 */ TransitionActorInit* transitionActorList;
|
|
/* 0x18768 */ UNK_TYPE1 pad18768[0x48];
|
|
/* 0x187B0 */ z_Matrix unk187B0;
|
|
/* 0x187F0 */ UNK_TYPE1 pad187F0[0xC];
|
|
/* 0x187FC */ z_Matrix unk187FC;
|
|
/* 0x1883C */ UNK_TYPE1 pad1883C[0x4];
|
|
/* 0x18840 */ u32 unk18840;
|
|
/* 0x18844 */ u8 unk18844;
|
|
/* 0x18845 */ u8 unk18845;
|
|
/* 0x18846 */ u16 sceneNumActorsToLoad;
|
|
/* 0x18848 */ u8 numRooms;
|
|
/* 0x18849 */ UNK_TYPE1 pad18849[0x3];
|
|
/* 0x1884C */ RoomFileLocation* roomList;
|
|
/* 0x18850 */ ActorEntry* linkActorEntry;
|
|
/* 0x18854 */ ActorEntry* setupActorList;
|
|
/* 0x18858 */ UNK_PTR unk18858;
|
|
/* 0x1885C */ EntranceEntry* setupEntranceList;
|
|
/* 0x18860 */ void* setupExitList;
|
|
/* 0x18864 */ void* setupPathList;
|
|
/* 0x18868 */ UNK_PTR unk18868;
|
|
/* 0x1886C */ AnimatedTexture* sceneTextureAnimations;
|
|
/* 0x18870 */ UNK_TYPE1 pad18870[0x4];
|
|
/* 0x18874 */ u8 unk18874;
|
|
/* 0x18875 */ s8 unk18875;
|
|
/* 0x18876 */ UNK_TYPE1 pad18876[0x4];
|
|
/* 0x1887A */ u16 unk1887A;
|
|
/* 0x1887C */ s8 unk1887C;
|
|
/* 0x1887D */ UNK_TYPE1 pad1887D[0x2];
|
|
/* 0x1887F */ u8 unk1887F;
|
|
/* 0x18880 */ UNK_TYPE1 pad18880[0x4];
|
|
/* 0x18884 */ CollisionCheckContext colCheckCtx;
|
|
/* 0x18B20 */ UNK_TYPE1 pad18B20[0x28];
|
|
/* 0x18B48 */ u8 curSpawn;
|
|
/* 0x18B49 */ UNK_TYPE1 pad18B49[0x1];
|
|
/* 0x18B4A */ u8 unk18B4A;
|
|
/* 0x18B4B */ UNK_TYPE1 pad18B4B[0x309];
|
|
/* 0x18E54 */ SceneTableEntry* currentSceneTableEntry;
|
|
/* 0x18E58 */ UNK_TYPE1 pad18E58[0x400];
|
|
}; // size = 0x19258
|
|
|
|
struct Actor {
|
|
/* 0x000 */ s16 id;
|
|
/* 0x002 */ u8 type;
|
|
/* 0x003 */ s8 room;
|
|
/* 0x004 */ u32 flags; // bit 20: is playing cutscene; bit 22: disable positional lights if bit 28 is not set; bit 28: enable positional lights on actor
|
|
/* 0x008 */ PosRot initPosRot;
|
|
/* 0x01C */ s16 params;
|
|
/* 0x01E */ s8 objBankIndex;
|
|
/* 0x01F */ UNK_TYPE1 unk1F;
|
|
/* 0x020 */ u16 unk20;
|
|
/* 0x022 */ u16 unk22;
|
|
/* 0x024 */ PosRot currPosRot;
|
|
/* 0x038 */ s8 cutscene;
|
|
/* 0x039 */ u8 unk39;
|
|
/* 0x03A */ UNK_TYPE1 pad3A[0x2];
|
|
/* 0x03C */ PosRot topPosRot;
|
|
/* 0x050 */ u16 unk50;
|
|
/* 0x052 */ UNK_TYPE1 pad52[0x2];
|
|
/* 0x054 */ f32 unk54;
|
|
/* 0x058 */ Vec3f scale;
|
|
/* 0x064 */ Vec3f velocity;
|
|
/* 0x070 */ f32 speedXZ;
|
|
/* 0x074 */ f32 gravity;
|
|
/* 0x078 */ f32 minVelocityY;
|
|
/* 0x07C */ BgPolygon* wallPoly;
|
|
/* 0x080 */ BgPolygon* floorPoly;
|
|
/* 0x084 */ u8 wallPolySource;
|
|
/* 0x085 */ u8 floorPolySource;
|
|
/* 0x086 */ UNK_TYPE1 pad86[0x2];
|
|
/* 0x088 */ f32 unk88;
|
|
/* 0x08C */ f32 unk8C;
|
|
/* 0x090 */ u16 unk90;
|
|
/* 0x092 */ s16 rotTowardsLinkY;
|
|
/* 0x094 */ f32 sqrdDistanceFromLink;
|
|
/* 0x098 */ f32 xzDistanceFromLink;
|
|
/* 0x09C */ f32 yDistanceFromLink;
|
|
/* 0x0A0 */ ActorA0 unkA0;
|
|
/* 0x0BC */ ActorShape shape;
|
|
/* 0x0D4 */ UNK_TYPE1 padD4[0x18];
|
|
/* 0x0EC */ Vec3f unkEC;
|
|
/* 0x0F8 */ f32 unkF8;
|
|
/* 0x0FC */ f32 unkFC;
|
|
/* 0x100 */ f32 unk100;
|
|
/* 0x104 */ f32 unk104;
|
|
/* 0x108 */ Vec3f lastPos;
|
|
/* 0x114 */ u8 unk114;
|
|
/* 0x115 */ u8 unk115;
|
|
/* 0x116 */ u16 textId;
|
|
/* 0x118 */ u16 freeze;
|
|
/* 0x11A */ u16 hitEffectParams; // TODO make into bitfield
|
|
/* 0x11C */ u8 hitEffectIntensity;
|
|
/* 0x11D */ u8 hasBeenDrawn;
|
|
/* 0x11E */ UNK_TYPE1 pad11E[0x1];
|
|
/* 0x11F */ u8 naviEnemyId;
|
|
/* 0x120 */ Actor* parent;
|
|
/* 0x124 */ Actor* child;
|
|
/* 0x128 */ Actor* prev;
|
|
/* 0x12C */ Actor* next;
|
|
/* 0x130 */ actor_func init;
|
|
/* 0x134 */ actor_func destroy;
|
|
/* 0x138 */ actor_func update;
|
|
/* 0x13C */ actor_func draw;
|
|
/* 0x140 */ ActorOverlay* overlayEntry;
|
|
}; // size = 0x144
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ ColQuad unk144;
|
|
/* 0x1C4 */ ColQuad unk1C4;
|
|
/* 0x244 */ Vec3f unk244;
|
|
/* 0x250 */ f32 unk250;
|
|
/* 0x254 */ f32 unk254;
|
|
/* 0x258 */ actor_func update;
|
|
/* 0x25C */ s16 unk25C;
|
|
/* 0x25E */ u16 unk25E;
|
|
/* 0x260 */ u8 unk260;
|
|
/* 0x261 */ UNK_TYPE1 pad261[0x3];
|
|
} ActorArrowFire; // size = 0x264
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ ColCylinder collision;
|
|
/* 0x190 */ AnimatedTexture* animatedTextures;
|
|
/* 0x194 */ actor_func update;
|
|
} ActorBgIkanaRay; // size = 0x198
|
|
|
|
struct ActorBgMbarChair {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ UNK_TYPE1 pad144[0x18];
|
|
}; // size = 0x15C
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ actor_func update;
|
|
/* 0x148 */ ColCylinder collision;
|
|
/* 0x194 */ UNK_TYPE1 pad194[0x14];
|
|
} ActorEnAObj; // size = 0x1A8
|
|
|
|
struct ActorEnBji01 {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ UNK_TYPE1 pad144[0x170];
|
|
}; // size = 0x2B4
|
|
|
|
struct ActorEnBom {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ ColCylinder unk144;
|
|
/* 0x190 */ ColSphereGroup unk190;
|
|
/* 0x1B0 */ ColSphereGroupElement unk1B0[1];
|
|
/* 0x1F0 */ s16 unk1F0;
|
|
/* 0x1F2 */ UNK_TYPE1 pad1F2[0x6];
|
|
/* 0x1F8 */ u8 unk1F8;
|
|
/* 0x1F9 */ u8 unk1F9;
|
|
/* 0x1FA */ UNK_TYPE1 pad1FA[0x2];
|
|
/* 0x1FC */ u8 unk1FC;
|
|
/* 0x1FD */ UNK_TYPE1 pad1FD[0x3];
|
|
/* 0x200 */ func_ptr unk200;
|
|
}; // size = 0x204
|
|
|
|
struct ActorEnFirefly {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ UNK_TYPE1 pad144[0x1C];
|
|
/* 0x160 */ f32 unk160;
|
|
/* 0x164 */ UNK_TYPE1 pad164[0x24];
|
|
/* 0x188 */ func_ptr updateFunc;
|
|
/* 0x18C */ UNK_TYPE1 type;
|
|
/* 0x18D */ u8 unk18D;
|
|
/* 0x18E */ u8 unk18E;
|
|
/* 0x18F */ u8 unk18F;
|
|
/* 0x190 */ s16 unk190;
|
|
/* 0x192 */ UNK_TYPE1 pad192[0x152];
|
|
/* 0x2E4 */ f32 unk2E4;
|
|
/* 0x2E8 */ f32 unk2E8;
|
|
/* 0x2EC */ f32 unk2EC;
|
|
/* 0x2F0 */ f32 unk2F0;
|
|
/* 0x2F4 */ UNK_TYPE1 pad2F4[0x28];
|
|
/* 0x31C */ ColSphere collision;
|
|
}; // size = 0x374
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ actor_func update;
|
|
/* 0x148 */ s16 collectibleFlagId;
|
|
/* 0x14A */ s16 unk14A;
|
|
/* 0x14C */ s16 unk14C;
|
|
/* 0x14E */ s16 unk14E;
|
|
/* 0x150 */ s16 unk150;
|
|
/* 0x152 */ s16 unk152;
|
|
/* 0x154 */ f32 unk154;
|
|
/* 0x158 */ ColCylinder collision;
|
|
/* 0x1A4 */ UNK_TYPE1 pad1A4[0x4];
|
|
} ActorEnItem00; // size = 0x1A8
|
|
|
|
struct ActorEnTest {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ UNK_TYPE1 pad144[0x10];
|
|
/* 0x154 */ f32 unk154;
|
|
/* 0x158 */ UNK_TYPE1 pad158[0xB0];
|
|
/* 0x208 */ u8 unk208;
|
|
/* 0x209 */ UNK_TYPE1 pad209[0x1];
|
|
/* 0x20A */ u8 unk20A;
|
|
/* 0x20B */ UNK_TYPE1 pad20B[0x1];
|
|
/* 0x20C */ ActorEnTest20C unk20C[20];
|
|
}; // size = 0x6BC
|
|
|
|
typedef struct {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ s8 unk144;
|
|
/* 0x145 */ u8 unk145;
|
|
/* 0x146 */ u16 unk146;
|
|
/* 0x148 */ u16 unk148;
|
|
/* 0x14A */ u16 unk14A;
|
|
/* 0x14C */ u8 unk14C;
|
|
/* 0x14D */ UNK_TYPE1 pad14D[0x3];
|
|
/* 0x150 */ actor_func unk150;
|
|
} ActorEnTest4; // size = 0x154
|
|
|
|
struct ActorObjBell {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ UNK_TYPE1 pad144[0x18];
|
|
/* 0x15C */ ColSphere unk15C;
|
|
/* 0x1B4 */ ColSphere unk1B4;
|
|
/* 0x20C */ UNK_TYPE1 pad20C[0x2];
|
|
/* 0x20E */ s16 unk20E;
|
|
/* 0x210 */ UNK_TYPE1 pad210[0x4];
|
|
/* 0x214 */ s16 unk214;
|
|
/* 0x216 */ UNK_TYPE1 pad216[0x12];
|
|
}; // size = 0x228
|
|
|
|
struct ActorPlayer {
|
|
/* 0x000 */ Actor base;
|
|
/* 0x144 */ UNK_TYPE1 pad144[0x3];
|
|
/* 0x147 */ s8 unk147;
|
|
/* 0x148 */ UNK_TYPE1 pad148[0x3];
|
|
/* 0x14B */ u8 unk14B;
|
|
/* 0x14C */ UNK_TYPE1 pad14C[0x7];
|
|
/* 0x153 */ u8 unk153;
|
|
/* 0x154 */ UNK_TYPE1 pad154[0x1F8];
|
|
/* 0x34C */ Actor* unk34C;
|
|
/* 0x350 */ UNK_TYPE1 pad350[0x44];
|
|
/* 0x394 */ u8 unk394;
|
|
/* 0x395 */ UNK_TYPE1 pad395[0x37];
|
|
/* 0x3CC */ s16 unk3CC;
|
|
/* 0x3CE */ s8 unk3CE;
|
|
/* 0x3CF */ UNK_TYPE1 pad3CF[0x361];
|
|
/* 0x730 */ Actor* unk730;
|
|
/* 0x734 */ UNK_TYPE1 pad734[0x338];
|
|
/* 0xA6C */ u32 unkA6C;
|
|
/* 0xA70 */ u32 unkA70;
|
|
/* 0xA74 */ u32 unkA74;
|
|
/* 0xA78 */ UNK_TYPE1 padA78[0x8];
|
|
/* 0xA80 */ Actor* unkA80;
|
|
/* 0xA84 */ UNK_TYPE1 padA84[0x4];
|
|
/* 0xA88 */ Actor* unkA88;
|
|
/* 0xA8C */ f32 unkA8C;
|
|
/* 0xA90 */ UNK_TYPE1 padA90[0x44];
|
|
/* 0xAD4 */ s16 unkAD4;
|
|
/* 0xAD6 */ UNK_TYPE1 padAD6[0x8];
|
|
/* 0xADE */ u8 unkADE;
|
|
/* 0xADF */ UNK_TYPE1 padADF[0x4];
|
|
/* 0xAE3 */ s8 unkAE3;
|
|
/* 0xAE4 */ UNK_TYPE1 padAE4[0x44];
|
|
/* 0xB28 */ s16 unkB28;
|
|
/* 0xB2A */ UNK_TYPE1 padB2A[0x72];
|
|
/* 0xB9C */ Vec3f unkB9C;
|
|
/* 0xBA8 */ UNK_TYPE1 padBA8[0x1D0];
|
|
}; // size = 0xD78
|
|
|
|
struct DynaPolyActor {
|
|
/* 0x000 */ Actor actor;
|
|
/* 0x144 */ s32 dynaPolyId;
|
|
/* 0x148 */ f32 unk148;
|
|
/* 0x14C */ f32 unk14C;
|
|
/* 0x150 */ UNK_TYPE4 unk150;
|
|
/* 0x154 */ u32 unk154;
|
|
/* 0x158 */ u8 dynaFlags;
|
|
/* 0x159 */ UNK_TYPE1 pad159[0x3];
|
|
}; // size = 0x15C
|
|
|
|
struct ActorBgFuKaiten {
|
|
/* 0x000 */ DynaPolyActor bg;
|
|
/* 0x15C */ UNK_TYPE1 pad15C[0x4];
|
|
/* 0x160 */ f32 elevation;
|
|
/* 0x164 */ f32 bouceHeight;
|
|
/* 0x168 */ s16 rotationSpeed;
|
|
/* 0x16A */ s16 bounceSpeed;
|
|
/* 0x16C */ s16 bounce;
|
|
/* 0x16E */ UNK_TYPE1 pad16E[0x2];
|
|
}; // size = 0x170
|
|
|
|
struct ActorBgIknvObj {
|
|
/* 0x000 */ DynaPolyActor bg;
|
|
/* 0x15C */ ColCylinder collision;
|
|
/* 0x1A8 */ u32 displayListAddr;
|
|
/* 0x1AC */ actor_func updateFunc;
|
|
}; // size = 0x1B0
|
|
|
|
|
|
#endif
|