1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-25 01:34:18 +00:00

Add names to all typedef'd structs, unions, and enums (#2028)

* Add names to all typedef'd structs, unions, and enums

* wtf vs code

* Use a better regex
This commit is contained in:
cadmic 2024-08-12 00:07:48 -07:00 committed by GitHub
parent 672728455d
commit e6bc4bd8cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
426 changed files with 1417 additions and 1417 deletions

View file

@ -4,13 +4,13 @@
#include "sched.h"
#include "z64audio.h"
typedef enum {
typedef enum AudioMgrDebugLevel {
/* 0 */ AUDIOMGR_DEBUG_LEVEL_NONE,
/* 1 */ AUDIOMGR_DEBUG_LEVEL_NO_RSP,
/* 2 */ AUDIOMGR_DEBUG_LEVEL_NO_UPDATE
} AudioMgrDebugLevel;
typedef struct {
typedef struct AudioMgr {
/* 0x0000 */ IrqMgr* irqMgr;
/* 0x0004 */ Scheduler* sched;
/* 0x0008 */ OSScTask audioTask;

View file

@ -6,7 +6,7 @@
* from the external graph thread to the internal audio thread
*/
typedef enum {
typedef enum AudioThreadCmdOp {
// Channel Commands
/* 0x00 */ AUDIOCMD_OP_NOOP,
/* 0x01 */ AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE,

View file

@ -1,11 +1,11 @@
#ifndef COLOR_H
#define COLOR_H
typedef struct {
typedef struct Color_RGB8 {
u8 r, g, b;
} Color_RGB8;
typedef struct {
typedef struct Color_RGBA8 {
u8 r, g, b, a;
} Color_RGBA8;
@ -17,11 +17,11 @@ typedef union Color_RGBA8_u32 {
u32 rgba;
} Color_RGBA8_u32;
typedef struct {
typedef struct Color_RGBAf {
f32 r, g, b, a;
} Color_RGBAf;
typedef union {
typedef union Color_RGBA16 {
struct {
u16 r : 5;
u16 g : 5;

View file

@ -1,7 +1,7 @@
#ifndef FACE_CHANGE_H
#define FACE_CHANGE_H
typedef struct {
typedef struct FaceChange {
/* 0x00 */ s16 face;
/* 0x02 */ s16 timer;
} FaceChange; // size = 0x4

View file

@ -9,7 +9,7 @@
// Texture memory size, 4 KiB
#define TMEM_SIZE 0x1000
typedef struct {
typedef struct GfxPool {
/* 0x00000 */ u16 headMagic; // GFXPOOL_HEAD_MAGIC
/* 0x00008 */ Gfx polyOpaBuffer[0x17E0];
/* 0x0BF08 */ Gfx polyXluBuffer[0x800];
@ -51,7 +51,7 @@ typedef struct GraphicsContext {
/* 0x02FC */ char unk_2FC[0x04];
} GraphicsContext; // size = 0x300
typedef enum {
typedef enum SetupDL {
/* 0 */ SETUPDL_0,
/* 1 */ SETUPDL_1,
/* 2 */ SETUPDL_2,
@ -131,12 +131,12 @@ typedef enum {
#define UCODE_UNK 2
#define UCODE_S2DEX 3
typedef struct {
typedef struct UCodeInfo {
/* 0x00 */ u32 type;
/* 0x04 */ void* ptr;
} UCodeInfo; // size = 0x8
typedef struct {
typedef struct UCodeDisas {
/* 0x00 */ uintptr_t segments[NUM_SEGMENTS];
/* 0x40 */ Gfx* dlStack[18];
/* 0x88 */ s32 dlDepth;

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "color.h"
typedef struct {
typedef struct GfxPrint {
/* 0x00 */ PrintCallback callback;
/* 0x04 */ Gfx* dList;
/* 0x08 */ u16 posX;

View file

@ -5,14 +5,14 @@
struct Actor;
typedef struct {
typedef struct InitChainEntry {
u32 cont: 1;
u32 type: 4;
u32 offset: 11;
s32 value: 16;
} InitChainEntry;
typedef enum {
typedef enum InitChainType {
/* 0x0 */ ICHAINTYPE_U8, // sets byte
/* 0x1 */ ICHAINTYPE_S8,
/* 0x2 */ ICHAINTYPE_U16, // sets short

View file

@ -8,13 +8,13 @@
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
#define OS_SC_PRE_NMI_MSG 4
typedef enum {
typedef enum IrqResetStatus {
IRQ_RESET_STATUS_IDLE,
IRQ_RESET_STATUS_PRENMI,
IRQ_RESET_STATUS_NMI
} IrqResetStatus;
typedef struct {
typedef struct OSScMsg {
/* 0x00 */ s16 type;
/* 0x02 */ char misc[0x1E];
} OSScMsg; // size = 0x20
@ -24,7 +24,7 @@ typedef struct IrqMgrClient {
/* 0x04 */ OSMesgQueue* queue;
} IrqMgrClient;
typedef struct {
typedef struct IrqMgr {
/* 0x000 */ OSScMsg retraceMsg;
/* 0x020 */ OSScMsg prenmiMsg;
/* 0x040 */ OSScMsg nmiMsg;

View file

@ -4,11 +4,11 @@
#include "ultra64.h"
#include "sched.h"
typedef struct {
typedef struct JpegQuantizationTable {
/* 0x00 */ u16 table[8*8];
} JpegQuantizationTable; // size = 0x80
typedef struct {
typedef struct JpegHuffmanTable {
/* 0x00 */ u8 codeOffs[16];
/* 0x10 */ u16 codesA[16];
/* 0x30 */ u16 codesB[16];
@ -16,13 +16,13 @@ typedef struct {
} JpegHuffmanTable; // size = 0x54
// this struct might be inaccurate but it's not used outside jpegutils.c anyways
typedef struct {
typedef struct JpegHuffmanTableOld {
/* 0x000 */ u8 codeOffs[16];
/* 0x010 */ u16 dcCodes[120];
/* 0x100 */ u16 acCodes[256];
} JpegHuffmanTableOld; // size = 0x300
typedef union {
typedef union JpegTaskData {
struct {
/* 0x00 */ u32 address;
/* 0x04 */ u32 mbCount;
@ -35,7 +35,7 @@ typedef union {
long long int force_structure_alignment;
} JpegTaskData; // size = 0x20
typedef struct {
typedef struct JpegWork {
/* 0x000 */ JpegTaskData taskData;
/* 0x020 */ u64 yieldData[0x200 / sizeof(u64)];
/* 0x220 */ JpegQuantizationTable qTableY;
@ -46,7 +46,7 @@ typedef struct {
/* 0x6C0 */ u16 data[4][0x180];
} JpegWork; // size = 0x12C0
typedef struct {
typedef struct JpegDecoder {
/* 0x00 */ void* imageData;
/* 0x04 */ u8 mode;
/* 0x05 */ u8 unk_05;
@ -54,7 +54,7 @@ typedef struct {
/* 0x18 */ u8 unk_18;
} JpegDecoder; // size = 0x1C
typedef struct {
typedef struct JpegContext {
/* 0x00 */ u8 dqtCount;
/* 0x04 */ u8* dqtPtr[3];
/* 0x10 */ u8 dhtCount;
@ -67,7 +67,7 @@ typedef struct {
/* 0xB4 */ JpegWork* workBuf;
} JpegContext; // size = 0xB8
typedef struct {
typedef struct JpegDecoderState {
/* 0x00 */ u32 byteIdx;
/* 0x04 */ u8 bitIdx;
/* 0x05 */ u8 dontSkip;

View file

@ -111,7 +111,7 @@
* Colors
*/
typedef enum {
typedef enum TextColor {
TEXT_COLOR_DEFAULT,
TEXT_COLOR_RED,
TEXT_COLOR_ADJUSTABLE,
@ -126,12 +126,12 @@ typedef enum {
* Background
*/
typedef enum {
typedef enum TextboxBackgroundIndex {
TEXTBOX_BG_X_LEFT,
TEXTBOX_BG_X_RIGHT
} TextboxBackgroundIndex;
typedef enum {
typedef enum TextboxBackgroundForegroundColor {
TEXTBOX_BG_FGCOL_WHITE,
TEXTBOX_BG_FGCOL_DARK_RED,
TEXTBOX_BG_FGCOL_ORANGE,
@ -142,14 +142,14 @@ typedef enum {
TEXTBOX_BG_FGCOL_WHITE_7
} TextboxBackgroundForegroundColor;
typedef enum {
typedef enum TextboxBackgroundBackgroundColor {
TEXTBOX_BG_BGCOL_BLACK,
TEXTBOX_BG_BGCOL_GOLD,
TEXTBOX_BG_BGCOL_BLACK_2,
TEXTBOX_BG_BGCOL_BLACK_3
} TextboxBackgroundBackgroundColor;
typedef enum {
typedef enum TextboxBackgroundYOffsetIndex {
TEXTBOX_BG_Y_OFFSET_1,
TEXTBOX_BG_Y_OFFSET_2
} TextboxBackgroundYOffsetIndex;

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "message_data_fmt.h"
typedef enum {
typedef enum TextBoxType {
/* 0 */ TEXTBOX_TYPE_BLACK,
/* 1 */ TEXTBOX_TYPE_WOODEN,
/* 2 */ TEXTBOX_TYPE_BLUE,
@ -14,18 +14,18 @@ typedef enum {
/* 11 */ TEXTBOX_TYPE_CREDITS = 11
} TextBoxType;
typedef enum {
typedef enum TextBoxBackground {
/* 0 */ TEXTBOX_BG_CROSS
} TextBoxBackground;
typedef enum {
typedef enum TextBoxPosition {
/* 0 */ TEXTBOX_POS_VARIABLE,
/* 1 */ TEXTBOX_POS_TOP,
/* 2 */ TEXTBOX_POS_MIDDLE,
/* 3 */ TEXTBOX_POS_BOTTOM
} TextBoxPosition;
typedef struct {
typedef struct MessageTableEntry {
u16 textId;
u8 typePos;
const char* segment;

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "irqmgr.h"
typedef enum {
typedef enum ControllerPakType {
CONT_PAK_NONE,
CONT_PAK_RUMBLE,
CONT_PAK_OTHER

View file

@ -8,7 +8,7 @@ typedef struct ListAlloc {
/* 0x04 */ struct ListAlloc* next;
} ListAlloc; // size = 0x8
typedef struct {
typedef struct PreRender {
/* 0x00 */ s32 width;
/* 0x04 */ s32 height;
/* 0x08 */ s32 widthSave;

View file

@ -4,7 +4,7 @@
#include "z64camera.h"
#include "z64math.h"
typedef struct {
typedef struct ShakeInfo {
/* 0x00 */ Vec3f atOffset;
/* 0x0C */ Vec3f eyeOffset;
/* 0x18 */ s16 upPitchOffset; // gives a "roll" effect by offsetting the Up vector
@ -13,7 +13,7 @@ typedef struct {
/* 0x20 */ f32 maxOffset;
} ShakeInfo; // size = 0x24
typedef enum {
typedef enum QuakeType {
/* 0 */ QUAKE_TYPE_NONE,
/* 1 */ QUAKE_TYPE_1, // Periodic, sustaining, random X perturbations
/* 2 */ QUAKE_TYPE_2, // Aperiodic, sustaining, random X perturbations

View file

@ -243,7 +243,7 @@
#define R_HREG_MODE HREG(80) // see `HRegMode` for mode options
typedef enum {
typedef enum HRegMode {
/* 6 */ HREG_MODE_PRINT_HILITE_INFO = 6, // print hilite information
/* 7 */ HREG_MODE_UCODE_DISAS, // various controls for the ucode disas system
/* 8 */ HREG_MODE_PRINT_MEMORY, // print memory at a specified address
@ -386,7 +386,7 @@ typedef enum {
#define R_VI_CUR_ADDI_SCAN_LINES HREG(83)
#define R_VI_CUR_Y_SCALE_MODE HREG(84)
typedef struct {
typedef struct RegEditor {
/* 0x00 */ s32 regPage; // 0: no page selected (reg editor is not active); 1: first page; `REG_PAGES`: last page
/* 0x04 */ s32 regGroup; // Indexed from 0 to `REG_GROUPS`-1. Each group has its own character to identify it.
/* 0x08 */ s32 regCur; // Selected reg, indexed from 0 as the page start

View file

@ -3,7 +3,7 @@
#include "ultra64.h"
typedef struct {
typedef struct RomFile {
/* 0x00 */ uintptr_t vromStart;
/* 0x04 */ uintptr_t vromEnd;
} RomFile; // size = 0x8

View file

@ -5,13 +5,13 @@
#define RUMBLE_MAX_REQUESTS 64
typedef enum {
typedef enum RumbleState {
RUMBLE_STATE_CLEAR,
RUMBLE_STATE_RUNNING,
RUMBLE_STATE_RESET
} RumbleState;
typedef struct {
typedef struct RumbleMgr {
/* 0x000 */ u8 rumbleEnable[MAXCONTROLLERS];
/* 0x004 */ u8 reqStrengths[RUMBLE_MAX_REQUESTS]; // Source strength modulated by distance to the source
/* 0x044 */ u8 reqDurations[RUMBLE_MAX_REQUESTS]; // Duration until decreaseRate kicks in

View file

@ -19,7 +19,7 @@
#define OS_SC_RCP_MASK (OS_SC_NEEDS_RDP | OS_SC_NEEDS_RSP)
#define OS_SC_TYPE_MASK (OS_SC_NEEDS_RDP | OS_SC_NEEDS_RSP | OS_SC_DRAM_DLIST)
typedef struct {
typedef struct CfbInfo {
/* 0x00 */ u16* framebuffer; // current framebuffer
/* 0x04 */ u16* swapBuffer; // framebuffer to swap to
/* 0x08 */ OSViMode* viMode;
@ -43,7 +43,7 @@ typedef struct OSScTask {
/* 0x60 */ OSTime totalTime;
} OSScTask; // size = 0x68
typedef struct {
typedef struct Scheduler {
/* 0x0000 */ OSMesgQueue interruptQueue;
/* 0x0018 */ OSMesg interruptMsgBuf[8];
/* 0x0038 */ OSMesgQueue cmdQueue; // queue for receiving OSScTask pointers

View file

@ -5,7 +5,7 @@
#define SEQCMD_OP_MASK 0xF0000000
typedef enum {
typedef enum SeqCmdOp {
/* 0x0 */ SEQCMD_OP_PLAY_SEQUENCE,
/* 0x1 */ SEQCMD_OP_STOP_SEQUENCE,
/* 0x2 */ SEQCMD_OP_QUEUE_SEQUENCE,
@ -27,7 +27,7 @@ typedef enum {
// ==== Secondary commands ====
// Subset of `SEQCMD_OP_TEMPO_CMD`
typedef enum {
typedef enum SeqCmdTempoCmdOp {
/* 0x0 */ SEQCMD_SUB_OP_TEMPO_SET,
/* 0x1 */ SEQCMD_SUB_OP_TEMPO_SPEED_UP,
/* 0x2 */ SEQCMD_SUB_OP_TEMPO_SLOW_DOWN,
@ -36,7 +36,7 @@ typedef enum {
} SeqCmdTempoCmdOp;
// Subset of `SEQCMD_OP_SETUP_CMD`
typedef enum {
typedef enum SeqCmdSetupCmdOp {
/* 0x0 */ SEQCMD_SUB_OP_SETUP_RESTORE_SEQPLAYER_VOLUME,
/* 0x1 */ SEQCMD_SUB_OP_SETUP_SEQ_UNQUEUE,
/* 0x2 */ SEQCMD_SUB_OP_SETUP_RESTART_SEQ,
@ -53,7 +53,7 @@ typedef enum {
} SeqCmdSetupCmdOp;
// Subset of `SEQCMD_OP_GLOBAL_CMD`
typedef enum {
typedef enum SeqCmdSubCmdOp {
/* 0x0 */ SEQCMD_SUB_OP_GLOBAL_SET_SOUND_MODE,
/* 0x1 */ SEQCMD_SUB_OP_GLOBAL_DISABLE_NEW_SEQUENCES
} SeqCmdSubCmdOp;

View file

@ -1,7 +1,7 @@
#ifndef SEQUENCE_H
#define SEQUENCE_H
typedef enum {
typedef enum SeqId {
/* 0x00 */ NA_BGM_GENERAL_SFX, // General Sound Effects
/* 0x01 */ NA_BGM_NATURE_AMBIENCE, // Environmental nature background sounds
/* 0x02 */ NA_BGM_FIELD_LOGIC, // Hyrule Field
@ -117,21 +117,21 @@ typedef enum {
/* 0xFFFF */ NA_BGM_DISABLED = 0xFFFF
} SeqId;
typedef enum {
typedef enum SequencePlayerId {
/* 0 */ SEQ_PLAYER_BGM_MAIN,
/* 1 */ SEQ_PLAYER_FANFARE,
/* 2 */ SEQ_PLAYER_SFX,
/* 3 */ SEQ_PLAYER_BGM_SUB
} SequencePlayerId;
typedef enum {
typedef enum SequenceMode {
/* 0 */ SEQ_MODE_DEFAULT,
/* 1 */ SEQ_MODE_ENEMY,
/* 2 */ SEQ_MODE_STILL, // Not moving or first-person view
/* 3 */ SEQ_MODE_IGNORE
} SequenceMode;
typedef enum {
typedef enum SequenceCutsceneEffects {
/* 0x0 */ SEQ_CS_EFFECTS_SWORD_GLOW, // Master sword glow
/* 0x1 */ SEQ_CS_EFFECTS_SHEIK_TRANSFORM, // Sheik's transformation to Zelda
/* 0x2 */ SEQ_CS_EFFECTS_SAGE_SEAL, // Sages accumulating their power
@ -150,7 +150,7 @@ typedef enum {
/* 0xF */ SEQ_CS_EFFECTS_RAINFALL // Rain with thunder effects
} SequenceCutsceneEffects;
typedef enum {
typedef enum ChannelIOPort {
/* 0x0 */ CHANNEL_IO_PORT_0,
/* 0x1 */ CHANNEL_IO_PORT_1,
/* 0x2 */ CHANNEL_IO_PORT_2,
@ -161,7 +161,7 @@ typedef enum {
/* 0x7 */ CHANNEL_IO_PORT_7
} ChannelIOPort;
typedef enum {
typedef enum VolumeScaleIndex {
/* 0 */ VOL_SCALE_INDEX_BGM_MAIN,
/* 1 */ VOL_SCALE_INDEX_FANFARE,
/* 2 */ VOL_SCALE_INDEX_SFX,
@ -169,7 +169,7 @@ typedef enum {
/* 4 */ VOL_SCALE_INDEX_MAX
} VolumeScaleIndex; // May be worth using SequencePlayerId instead
typedef struct {
typedef struct ActiveSequenceChannelData {
/* 0x00 */ f32 volCur;
/* 0x04 */ f32 volTarget;
/* 0x08 */ f32 volStep;
@ -180,7 +180,7 @@ typedef struct {
/* 0x1C */ u16 freqScaleTimer;
} ActiveSequenceChannelData; // size = 0x20
typedef struct {
typedef struct ActiveSequence {
/* 0x000 */ f32 volCur;
/* 0x004 */ f32 volTarget;
/* 0x008 */ f32 volStep;
@ -208,7 +208,7 @@ typedef struct {
/* 0x260 */ u8 isWaitingForFonts; // This name comes from MM
} ActiveSequence; // size = 0x264
typedef enum {
typedef enum NatureChannelIndex {
/* 0x0 */ NATURE_CHANNEL_STREAM_0,
/* 0x1 */ NATURE_CHANNEL_CRITTER_0,
/* 0x2 */ NATURE_CHANNEL_CRITTER_1,
@ -224,7 +224,7 @@ typedef enum {
/* 0xF */ NATURE_CHANNEL_LIGHTNING
} NatureChannelIndex; // seqPlayerIndex = 0 (Overlaps with main bgm)
typedef enum {
typedef enum NatureAmbienceId {
/* 0x00 */ NATURE_ID_GENERAL_NIGHT,
/* 0x01 */ NATURE_ID_MARKET_ENTRANCE,
/* 0x02 */ NATURE_ID_KAKARIKO_REGION,
@ -248,14 +248,14 @@ typedef enum {
/* 0xFF */ NATURE_ID_DISABLED = 0xFF
} NatureAmbienceId;
typedef enum {
typedef enum NatureStreamId {
/* 0x00 */ NATURE_STREAM_RUSHING_WATER,
/* 0x01 */ NATURE_STREAM_HOWLING_WIND,
/* 0x02 */ NATURE_STREAM_SCREECHING_WIND,
/* 0x03 */ NATURE_STREAM_SCREECHING_WIND_ALT1
} NatureStreamId;
typedef enum {
typedef enum NatureAmimalId {
/* 0x00 */ NATURE_CRITTER_BIRD_CHIRP_1,
/* 0x01 */ NATURE_CRITTER_TAP,
/* 0x02 */ NATURE_CRITTER_BIRD_CHIRP_2,

View file

@ -1,7 +1,7 @@
#ifndef SFX_H
#define SFX_H
typedef enum {
typedef enum SfxBankType {
/* 0 */ BANK_PLAYER,
/* 1 */ BANK_ITEM,
/* 2 */ BANK_ENV,
@ -11,7 +11,7 @@ typedef enum {
/* 6 */ BANK_VOICE
} SfxBankType;
typedef enum {
typedef enum SfxState {
/* 0 */ SFX_STATE_EMPTY,
/* 1 */ SFX_STATE_QUEUED,
/* 2 */ SFX_STATE_READY,
@ -20,7 +20,7 @@ typedef enum {
/* 5 */ SFX_STATE_PLAYING_2
} SfxState;
typedef struct {
typedef struct SfxBankEntry {
/* 0x00 */ f32* posX;
/* 0x04 */ f32* posY;
/* 0x08 */ f32* posZ;
@ -57,7 +57,7 @@ typedef struct {
#define DEFINE_SFX(enum, _1, _2, _3, _4) enum,
typedef enum {
typedef enum SfxId {
NA_SE_NONE, // Requesting a sfx with this id will play no sound
NA_SE_PL_BASE = 0x7FF,
#include "tables/sfx/playerbank_table.h"
@ -87,7 +87,7 @@ typedef enum {
#define SFX_FLAG 0x800
typedef struct {
typedef struct ActiveSfx {
u32 priority; // lower is more prioritized
u8 entryIndex;
} ActiveSfx;
@ -114,7 +114,7 @@ typedef struct {
#define SFX_FLAG_14 (1 << 14)
#define SFX_FLAG_15 (1 << 15)
typedef struct {
typedef struct SfxParams {
u8 importance;
u16 params;
} SfxParams;

View file

@ -6,7 +6,7 @@
struct GraphicsContext;
struct GameState;
typedef struct {
typedef struct SpeedMeter {
/* 0x00 */ char unk_00[0x18];
/* 0x18 */ s32 x; // Unused
/* 0x1C */ s32 y;

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "alignment.h"
typedef struct {
typedef struct TwoHeadArena {
/* 0x00 */ size_t size;
/* 0x04 */ void* start;
/* 0x08 */ void* head;

View file

@ -3,7 +3,7 @@
#include "tha.h"
typedef union {
typedef union TwoHeadGfxArena {
/* 0x00 */ TwoHeadArena tha;
struct { // Same as TwoHeadArena, with different types and field names for the head and tail pointers
/* 0x00 */ size_t size;

View file

@ -49,28 +49,28 @@
* Data Structures.
*/
typedef struct {
typedef struct Aadpcm {
u32 cmd : 8;
u32 flags : 8;
u32 gain : 16;
u32 addr;
} Aadpcm;
typedef struct {
typedef struct Apolef {
u32 cmd : 8;
u32 flags : 8;
u32 gain : 16;
u32 addr;
} Apolef;
typedef struct {
typedef struct Aenvelope {
u32 cmd : 8;
u32 flags : 8;
u32 pad1 : 16;
u32 addr;
} Aenvelope;
typedef struct {
typedef struct Aclearbuff {
u32 cmd : 8;
u32 pad1 : 8;
u32 dmem : 16;
@ -78,7 +78,7 @@ typedef struct {
u32 count : 16;
} Aclearbuff;
typedef struct {
typedef struct Ainterleave {
u32 cmd : 8;
u32 pad1 : 8;
u32 pad2 : 16;
@ -86,20 +86,20 @@ typedef struct {
u32 inR : 16;
} Ainterleave;
typedef struct {
typedef struct Aloadbuff {
u32 cmd : 8;
u32 pad1 : 24;
u32 addr;
} Aloadbuff;
typedef struct {
typedef struct Aenvmixer {
u32 cmd : 8;
u32 flags : 8;
u32 pad1 : 16;
u32 addr;
} Aenvmixer;
typedef struct {
typedef struct Amixer {
u32 cmd : 8;
u32 flags : 8;
u32 gain : 16;
@ -107,34 +107,34 @@ typedef struct {
u32 dmemo : 16;
} Amixer;
typedef struct {
typedef struct Apan {
u32 cmd : 8;
u32 flags : 8;
u32 dmem2 : 16;
u32 addr;
} Apan;
typedef struct {
typedef struct Aresample {
u32 cmd : 8;
u32 flags : 8;
u32 pitch : 16;
u32 addr;
} Aresample;
typedef struct {
typedef struct Areverb {
u32 cmd : 8;
u32 flags : 8;
u32 pad1 : 16;
u32 addr;
} Areverb;
typedef struct {
typedef struct Asavebuff {
u32 cmd : 8;
u32 pad1 : 24;
u32 addr;
} Asavebuff;
typedef struct {
typedef struct Asegment {
u32 cmd : 8;
u32 pad1 : 24;
u32 pad2 : 2;
@ -142,7 +142,7 @@ typedef struct {
u32 base : 24;
} Asegment;
typedef struct {
typedef struct Asetbuff {
u32 cmd : 8;
u32 flags : 8;
u32 dmemin : 16;
@ -150,7 +150,7 @@ typedef struct {
u32 count : 16;
} Asetbuff;
typedef struct {
typedef struct Asetvol {
u32 cmd : 8;
u32 flags : 8;
u32 vol : 16;
@ -158,7 +158,7 @@ typedef struct {
u32 volrate : 16;
} Asetvol;
typedef struct {
typedef struct Admemmove {
u32 cmd : 8;
u32 pad1 : 8;
u32 dmemin : 16;
@ -166,14 +166,14 @@ typedef struct {
u32 count : 16;
} Admemmove;
typedef struct {
typedef struct Aloadadpcm {
u32 cmd : 8;
u32 pad1 : 8;
u32 count : 16;
u32 addr;
} Aloadadpcm;
typedef struct {
typedef struct Asetloop {
u32 cmd : 8;
u32 pad1 : 8;
u32 pad2 : 16;
@ -184,12 +184,12 @@ typedef struct {
* Generic Acmd Packet
*/
typedef struct {
typedef struct Awords {
u32 w0;
u32 w1;
} Awords;
typedef union {
typedef union Acmd {
Awords words;
Aadpcm adpcm;
Apolef polef;

View file

@ -125,7 +125,7 @@
// however file alignment should not be relied on in general.
__attribute__((aligned(0x10)))
#endif
typedef union {
typedef union OSPifRam {
struct {
/* 0x00 */ u32 ram[15];
/* 0x3C */ u32 status;
@ -133,20 +133,20 @@ typedef union {
u64 force_structure_alignment;
} OSPifRam; // size = 0x40
typedef struct {
typedef struct OSContStatus {
/* 0x00 */ u16 type;
/* 0x02 */ u8 status;
/* 0x03 */ u8 errno;
} OSContStatus; // size = 0x04
typedef struct {
typedef struct OSContPad {
/* 0x00 */ u16 button;
/* 0x02 */ s8 stick_x;
/* 0x03 */ s8 stick_y;
/* 0x04 */ u8 errno;
} OSContPad; // size = 0x06
typedef struct {
typedef struct OSContRamIo {
/* 0x00 */ void* address;
/* 0x04 */ u8 databuffer[32];
/* 0x24 */ u8 addressCrc;
@ -154,7 +154,7 @@ typedef struct {
/* 0x26 */ u8 errno;
} OSContRamIo; // size = 0x28
typedef struct {
typedef struct __OSContRequesFormat {
/* 0x00 */ u8 align;
/* 0x01 */ u8 txsize;
/* 0x02 */ u8 rxsize;
@ -165,7 +165,7 @@ typedef struct {
/* 0x07 */ u8 align1;
} __OSContRequesFormat; // size = 0x8
typedef struct {
typedef struct __OSContRequesFormatShort {
/* 0x00 */ u8 txsize;
/* 0x01 */ u8 rxsize;
/* 0x02 */ u8 cmd;
@ -174,7 +174,7 @@ typedef struct {
/* 0x05 */ u8 status;
} __OSContRequesFormatShort; // size = 0x6
typedef struct {
typedef struct __OSContRamReadFormat {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 txsize;
/* 0x02 */ u8 rxsize;
@ -187,7 +187,7 @@ typedef struct {
#define READFORMAT(ptr) ((__OSContRamReadFormat*)(ptr))
typedef struct {
typedef struct __OSContReadFormat {
/* 0x00 */ u8 align;
/* 0x01 */ u8 txsize;
/* 0x02 */ u8 rxsize;

View file

@ -1005,7 +1005,7 @@
/*
* Vertex (set up for use with colors)
*/
typedef struct {
typedef struct Vtx_t {
short ob[3]; /* x, y, z */
unsigned short flag;
short tc[2]; /* texture coord */
@ -1015,7 +1015,7 @@ typedef struct {
/*
* Vertex (set up for use with normals)
*/
typedef struct {
typedef struct Vtx_tn {
short ob[3]; /* x, y, z */
unsigned short flag;
short tc[2]; /* texture coord */
@ -1023,7 +1023,7 @@ typedef struct {
unsigned char a; /* alpha */
} Vtx_tn;
typedef union {
typedef union Vtx {
Vtx_t v; /* Use this one for colors */
Vtx_tn n; /* Use this one for normals */
long long int force_structure_alignment;
@ -1033,7 +1033,7 @@ typedef union {
* Sprite structure
*/
typedef struct {
typedef struct uSprite_t {
void* SourceImagePointer;
void* TlutPointer;
short Stride;
@ -1049,7 +1049,7 @@ typedef struct {
char dummy[4];
} uSprite_t;
typedef union {
typedef union uSprite {
uSprite_t s;
/* Need to make sure this is 64 bit aligned */
@ -1059,7 +1059,7 @@ typedef union {
/*
* Triangle face
*/
typedef struct {
typedef struct Tri {
unsigned char flag;
unsigned char v[3];
} Tri;
@ -1070,7 +1070,7 @@ typedef struct {
* Last 8 words are the fraction portion of the 4x4 matrix
*/
typedef long int Mtx_t[4][4];
typedef union {
typedef union Mtx {
Mtx_t m;
struct {
u16 intPart[4][4];
@ -1140,13 +1140,13 @@ typedef union {
* (SCREEN_WD/2)*4, (SCREEN_HT/2)*4, G_MAXZ, 0,
* (SCREEN_WD/2)*4, (SCREEN_HT/2)*4, 0, 0,
*/
typedef struct {
typedef struct Vp_t {
short vscale[4]; /* scale, 2 bits fraction */
short vtrans[4]; /* translate, 2 bits fraction */
/* both the above arrays are padded to 64-bit boundary */
} Vp_t;
typedef union {
typedef union Vp {
Vp_t vp;
long long int force_structure_alignment;
} Vp;
@ -1306,7 +1306,7 @@ typedef union {
*
*/
typedef struct {
typedef struct Light_t {
unsigned char col[3]; /* diffuse light value (rgba) */
char pad1;
unsigned char colc[3]; /* copy of diffuse light value (rgba) */
@ -1316,7 +1316,7 @@ typedef struct {
} Light_t;
#ifdef F3DEX_GBI_PL
typedef struct {
typedef struct PointLight_t {
unsigned char col[3]; /* point light value (rgba) */
unsigned char kc; /* constant attenuation (> 0 indicates point light) */
unsigned char colc[3]; /* copy of point light value (rgba) */
@ -1326,14 +1326,14 @@ typedef struct {
} PointLight_t;
#endif
typedef struct {
typedef struct Ambient_t {
unsigned char col[3]; /* ambient light value (rgba) */
char pad1;
unsigned char colc[3]; /* copy of ambient light value (rgba) */
char pad2;
} Ambient_t;
typedef struct {
typedef struct Hilite_t {
/* texture offsets for highlight 1/2 */
int x1;
int y1;
@ -1341,7 +1341,7 @@ typedef struct {
int y2;
} Hilite_t;
typedef union {
typedef union Light {
Light_t l;
#ifdef F3DEX_GBI_PL
PointLight_t p;
@ -1349,61 +1349,61 @@ typedef union {
long long int force_structure_alignment[2];
} Light;
typedef union {
typedef union Ambient {
Ambient_t l;
long long int force_structure_alignment[1];
} Ambient;
typedef struct {
typedef struct Lightsn {
Ambient a;
Light l[7];
} Lightsn;
typedef struct {
typedef struct Lights0 {
Ambient a;
Light l[1];
} Lights0;
typedef struct {
typedef struct Lights1 {
Ambient a;
Light l[1];
} Lights1;
typedef struct {
typedef struct Lights2 {
Ambient a;
Light l[2];
} Lights2;
typedef struct {
typedef struct Lights3 {
Ambient a;
Light l[3];
} Lights3;
typedef struct {
typedef struct Lights4 {
Ambient a;
Light l[4];
} Lights4;
typedef struct {
typedef struct Lights5 {
Ambient a;
Light l[5];
} Lights5;
typedef struct {
typedef struct Lights6 {
Ambient a;
Light l[6];
} Lights6;
typedef struct {
typedef struct Lights7 {
Ambient a;
Light l[7];
} Lights7;
typedef struct {
typedef struct LookAt {
Light l[2];
} LookAt;
typedef union {
typedef union Hilite {
Hilite_t h;
long int force_structure_alignment;
} Hilite;
@ -1672,7 +1672,7 @@ typedef union {
}}, \
}}
typedef struct {
typedef struct Gnoop {
int cmd : 8;
unsigned int type : 8;
unsigned int len : 16;
@ -1690,7 +1690,7 @@ typedef struct {
/*
* Graphics DMA Packet
*/
typedef struct {
typedef struct Gdma {
int cmd : 8;
unsigned int par : 8;
unsigned int len : 16;
@ -1698,7 +1698,7 @@ typedef struct {
} Gdma;
#ifdef F3DEX_GBI_2
typedef struct {
typedef struct Gdma2 {
int cmd : 8;
unsigned int len : 8;
unsigned int ofs : 8;
@ -1711,7 +1711,7 @@ typedef struct {
* Graphics Moveword Packet
*/
// Inaccurate for F3DEX2, offset and index are swapped
typedef struct {
typedef struct Gmovewd {
int cmd : 8;
unsigned int offset : 16;
unsigned int index : 8;
@ -1721,7 +1721,7 @@ typedef struct {
/*
* Graphics Movemem Packet
*/
typedef struct {
typedef struct Gmovemem {
int cmd : 8;
unsigned int size : 8;
unsigned int offset : 8;
@ -1732,24 +1732,24 @@ typedef struct {
/*
* Graphics Immediate Mode Packet types
*/
typedef struct {
typedef struct Gtri {
int cmd : 8;
int pad : 24;
Tri tri;
} Gtri;
#if (defined(F3DLP_GBI) || defined(F3DEX_GBI))
typedef struct {
typedef struct Gtri2 {
Tri tri1; /* flag is the command byte */
Tri tri2;
} Gtri2;
typedef struct {
typedef struct Gquad {
Tri tri1; /* flag is the command byte */
Tri tri2;
} Gquad;
typedef struct {
typedef struct Gcull {
int cmd : 8;
unsigned int pad : 8;
unsigned short vstart_x2;
@ -1758,14 +1758,14 @@ typedef struct {
} Gcull;
#endif
typedef struct {
typedef struct Gsetprimdepth {
int cmd : 8;
unsigned int pad : 24;
unsigned short z;
unsigned short dz;
} Gsetprimdepth;
typedef struct {
typedef struct Gpopmtx {
int cmd : 8;
int pad1 : 24;
#ifdef F3DEX_GBI_2
@ -1777,7 +1777,7 @@ typedef struct {
} Gpopmtx;
/*
* typedef struct {
* typedef struct Gsegment {
* int cmd:8;
* int pad0:24;
* int pad1:4;
@ -1785,7 +1785,7 @@ typedef struct {
* int base:24;
* } Gsegment;
*/
typedef struct {
typedef struct Gsegment {
int cmd : 8;
int pad0 : 8;
int mw_index : 8;
@ -1794,7 +1794,7 @@ typedef struct {
int base : 24;
} Gsegment;
typedef struct {
typedef struct GsetothermodeL {
int cmd : 8;
int pad0 : 8;
unsigned int sft : 8;
@ -1802,7 +1802,7 @@ typedef struct {
unsigned int data : 32;
} GsetothermodeL;
typedef struct {
typedef struct GsetothermodeH {
int cmd : 8;
int pad0 : 8;
unsigned int sft : 8;
@ -1810,7 +1810,7 @@ typedef struct {
unsigned int data : 32;
} GsetothermodeH;
typedef struct {
typedef struct Gtexture {
unsigned char cmd;
unsigned char lodscale;
#ifdef F3DEX_GBI_2
@ -1825,7 +1825,7 @@ typedef struct {
unsigned short t;
} Gtexture;
typedef struct {
typedef struct Gline3D {
int cmd : 8;
#ifdef F3DEX_GBI_2
unsigned char v0;
@ -1838,7 +1838,7 @@ typedef struct {
#endif
} Gline3D;
typedef struct {
typedef struct Gperspnorm {
int cmd : 8;
int pad1 : 24;
short int pad2;
@ -1849,7 +1849,7 @@ typedef struct {
/*
* RDP Packet types
*/
typedef struct {
typedef struct Gsetimg {
int cmd : 8;
unsigned int fmt : 3;
unsigned int siz : 2;
@ -1858,7 +1858,7 @@ typedef struct {
unsigned int dram; /* to account for 1024 */
} Gsetimg;
typedef struct {
typedef struct Gsetcombine {
int cmd : 8;
// muxs0
unsigned int a0 : 4;
@ -1880,7 +1880,7 @@ typedef struct {
unsigned int Ad1 : 3;
} Gsetcombine;
typedef struct {
typedef struct Gsetcolor {
int cmd : 8;
unsigned char pad;
unsigned char prim_min_level;
@ -1896,7 +1896,7 @@ typedef struct {
};
} Gsetcolor;
typedef struct {
typedef struct Gfillrect {
int cmd : 8;
int x0 : 10;
int x0frac : 2;
@ -1909,7 +1909,7 @@ typedef struct {
int y1frac : 2;
} Gfillrect;
typedef struct {
typedef struct Gsettile {
int cmd : 8;
unsigned int fmt : 3;
unsigned int siz : 2;
@ -1929,7 +1929,7 @@ typedef struct {
unsigned int shifts : 4;
} Gsettile;
typedef struct {
typedef struct Gloadtile {
int cmd : 8;
unsigned int sl : 12;
unsigned int tl : 12;
@ -1945,7 +1945,7 @@ typedef Gloadtile Gsettilesize;
typedef Gloadtile Gloadtlut;
typedef struct {
typedef struct Gtexrect {
unsigned int cmd : 8; /* command */
unsigned int xl : 12; /* X coordinate of upper left */
unsigned int yl : 12; /* Y coordinate of upper left */
@ -1965,7 +1965,7 @@ typedef struct {
/*
* Textured rectangles are 128 bits not 64 bits
*/
typedef struct {
typedef struct TexRect {
unsigned long w0;
unsigned long w1;
unsigned long w2;
@ -1973,7 +1973,7 @@ typedef struct {
} TexRect;
#ifdef F3DEX_GBI_2
typedef struct {
typedef struct Gvtx {
int cmd : 8;
unsigned int pad : 4;
unsigned int len : 8; // n
@ -1988,7 +1988,7 @@ typedef Gdma Gvtx;
/*
* Generic Gfx Packet
*/
typedef struct {
typedef struct Gwords {
unsigned int w0;
unsigned int w1;
} Gwords;
@ -1997,7 +1997,7 @@ typedef struct {
* This union is the fundamental type of the display list.
* It is, by law, exactly 64 bits in size.
*/
typedef union {
typedef union Gfx {
Gwords words;
Gnoop noop;
Gdma dma;

View file

@ -91,7 +91,7 @@ typedef struct {
} uObjScaleBg_t; /* 40 bytes */
typedef union {
typedef union uObjBg {
uObjBg_t b;
uObjScaleBg_t s;
long long int force_structure_alignment;
@ -103,7 +103,7 @@ typedef union {
#define G_OBJ_FLAG_FLIPS 1<<0 /* inversion to S-direction */
#define G_OBJ_FLAG_FLIPT 1<<4 /* nversion to T-direction */
typedef struct {
typedef struct uObjSprite_t {
s16 objX; /* s10.2 OBJ x-coordinate of upper-left end */
u16 scaleW; /* u5.10 Scaling of u5.10 width direction */
u16 imageW; /* u10.5 width of u10.5 texture (length of S-direction) */
@ -120,7 +120,7 @@ typedef struct {
u8 imageFlags; /* The display flag - G_OBJ_FLAG_FLIP* */
} uObjSprite_t; /* 24 bytes */
typedef union {
typedef union uObjSprite {
uObjSprite_t s;
long long int force_structure_alignment;
} uObjSprite;
@ -128,25 +128,25 @@ typedef union {
/*---------------------------------------------------------------------------*
* 2D Matrix
*---------------------------------------------------------------------------*/
typedef struct {
typedef struct uObjMtx_t {
s32 A, B, C, D; /* s15.16 */
s16 X, Y; /* s10.2 */
u16 BaseScaleX; /* u5.10 */
u16 BaseScaleY; /* u5.10 */
} uObjMtx_t; /* 24 bytes */
typedef union {
typedef union uObjMtx {
uObjMtx_t m;
long long int force_structure_alignment;
} uObjMtx;
typedef struct {
typedef struct uObjSubMtx_t {
s16 X, Y; /* s10.2 */
u16 BaseScaleX; /* u5.10 */
u16 BaseScaleY; /* u5.10 */
} uObjSubMtx_t; /* 8 bytes */
typedef union {
typedef union uObjSubMtx {
uObjSubMtx_t m;
long long int force_structure_alignment;
} uObjSubMtx;
@ -200,7 +200,7 @@ typedef struct {
u32 mask; /* STATE mask */
} uObjTxtrTLUT_t; /* 24 bytes */
typedef union {
typedef union uObjTxtr {
uObjTxtrBlock_t block;
uObjTxtrTile_t tile;
uObjTxtrTLUT_t tlut;

View file

@ -7,7 +7,7 @@
#define ROUND(x) (s32)(((x) >= 0.0) ? ((x) + 0.5) : ((x) - 0.5))
typedef union {
typedef union du {
struct {
u32 hi;
u32 lo;
@ -16,7 +16,7 @@ typedef union {
f64 d;
} du;
typedef union {
typedef union fu {
u32 i;
f32 f;
} fu;

View file

@ -3,7 +3,7 @@
#include "pi.h"
typedef struct {
typedef struct OSDevMgr {
/* 0x00 */ u32 active;
/* 0x04 */ OSThread* thread;
/* 0x08 */ OSMesgQueue* cmdQueue;

View file

@ -69,7 +69,7 @@
#define PFS_INODE_DIST_MAP (PFS_BANK_LAPPED_BY * PFS_SECTOR_PER_BANK)
#define PFS_SECTOR_SIZE (PFS_INODE_SIZE_PER_PAGE/PFS_SECTOR_PER_BANK)
typedef struct {
typedef struct OSPfs {
/* 0x00 */ s32 status;
/* 0x04 */ OSMesgQueue* queue;
/* 0x08 */ s32 channel;
@ -85,7 +85,7 @@ typedef struct {
/* 0x65 */ u8 activebank;
} OSPfs; // size = 0x68
typedef struct {
typedef struct OSPfsState {
/* 0x00 */ u32 file_size; /* bytes */
/* 0x04 */ u32 game_code;
/* 0x08 */ u16 company_code;
@ -93,7 +93,7 @@ typedef struct {
/* 0x10 */ char game_name[16];
} OSPfsState; // size = 0x20
typedef union {
typedef union __OSInodeUnit {
struct {
/* 0x00 */ u8 bank;
/* 0x01 */ u8 page;
@ -101,11 +101,11 @@ typedef union {
/* 0x00 */ u16 ipage;
} __OSInodeUnit; // size = 0x02
typedef struct {
typedef struct __OSInode {
/* 0x00 */ __OSInodeUnit inodePage[128];
} __OSInode; // size = 0x100
typedef struct {
typedef struct __OSDir {
/* 0x00 */ u32 game_code;
/* 0x04 */ u16 company_code;
/* 0x06 */ __OSInodeUnit start_page;
@ -116,7 +116,7 @@ typedef struct {
/* 0x10 */ u8 game_name[PFS_FILE_NAME_LEN];
} __OSDir; // size = 0x20
typedef struct {
typedef struct __OSPackId {
/* 0x00 */ u32 repaired;
/* 0x04 */ u32 random;
/* 0x08 */ u64 serialMid;
@ -128,7 +128,7 @@ typedef struct {
/* 0x1E */ u16 invertedChecksum;
} __OSPackId; // size = 0x20
typedef struct {
typedef struct __OSInodeCache {
/* 0x000 */ __OSInode inode;
/* 0x100 */ u8 bank;
/* 0x101 */ u8 map[PFS_INODE_DIST_MAP];

View file

@ -3,7 +3,7 @@
#include "message.h"
typedef struct {
typedef struct __OSBlockInfo {
/* 0x00 */ u32 errStatus;
/* 0x04 */ void* dramAddr;
/* 0x08 */ void* C2Addr;
@ -12,7 +12,7 @@ typedef struct {
/* 0x14 */ u32 C1ErrSector[4];
} __OSBlockInfo; // size = 0x24
typedef struct {
typedef struct __OSTranxInfo {
/* 0x00 */ u32 cmdType;
/* 0x04 */ u16 transferMode;
/* 0x06 */ u16 blockNum;
@ -36,19 +36,19 @@ typedef struct OSPiHandle {
/* 0x14 */ __OSTranxInfo transferInfo;
} OSPiHandle; // size = 0x74
typedef struct {
typedef struct OSPiInfo {
/* 0x00 */ u8 type;
/* 0x04 */ u32 address;
} OSPiInfo; // size = 0x08
typedef struct {
typedef struct OSIoMesgHdr {
/* 0x00 */ u16 type;
/* 0x02 */ u8 pri;
/* 0x03 */ u8 status;
/* 0x04 */ OSMesgQueue* retQueue;
} OSIoMesgHdr; // size = 0x08
typedef struct {
typedef struct OSIoMesg {
/* 0x00 */ OSIoMesgHdr hdr;
/* 0x08 */ void* dramAddr;
/* 0x0C */ u32 devAddr;

View file

@ -71,7 +71,7 @@
#include "ultratypes.h"
/* Structure for debug port */
typedef struct {
typedef struct rdbPacket {
u32 type : 6; /* 0: invalid, 1: print, 2: debug */
u32 length : 2; /* 1, 2, or 3 */
char buf[3]; /* character buffer */

View file

@ -28,7 +28,7 @@
#define OS_YIELD_DATA_SIZE 0xC00
typedef struct {
typedef struct OSTask_t {
/* 0x00 */ u32 type;
/* 0x04 */ u32 flags;
@ -54,7 +54,7 @@ typedef struct {
/* 0x3C */ u32 yield_data_size;
} OSTask_t; // size = 0x40
typedef union {
typedef union OSTask {
OSTask_t t;
long long int force_structure_alignment;
} OSTask;

View file

@ -27,7 +27,7 @@
typedef s32 OSPri;
typedef s32 OSId;
typedef union {
typedef union __OSfp {
struct {
/* 0x00 */ f32 f_odd;
/* 0x04 */ f32 f_even;
@ -35,7 +35,7 @@ typedef union {
f64 d;
} __OSfp; // size = 0x08
typedef struct {
typedef struct __OSThreadContext {
/* 0x000 */ u64 at, v0, v1, a0, a1, a2, a3;
/* 0x038 */ u64 t0, t1, t2, t3, t4, t5, t6, t7;
/* 0x078 */ u64 s0, s1, s2, s3, s4, s5, s6, s7;
@ -47,7 +47,7 @@ typedef struct {
/* 0x150 */ __OSfp fp16, fp18, fp20, fp22, fp24, fp26, fp28, fp30;
} __OSThreadContext; // size = 0x190
typedef struct {
typedef struct __OSThreadprofile {
/* 0x00 */ u32 flag;
/* 0x04 */ u32 count;
/* 0x08 */ u64 time;
@ -66,7 +66,7 @@ typedef struct OSThread {
/* 0x20 */ __OSThreadContext context;
} OSThread; // size = 0x1B0
typedef struct {
typedef struct __OSThreadTail {
OSThread* next;
OSPri priority;
} __OSThreadTail; // size = 0x8

View file

@ -26,7 +26,7 @@ typedef double f64;
typedef float MtxF_t[4][4];
typedef union {
typedef union MtxF {
MtxF_t mf;
struct {
// Note: The order displayed here is the transpose of the order in which matrices are typically written.

View file

@ -13,7 +13,7 @@
#define OS_VI_DITHER_FILTER_ON 0x0040
#define OS_VI_DITHER_FILTER_OFF 0x0080
typedef struct {
typedef struct OSViCommonRegs {
/* 0x00 */ u32 ctrl;
/* 0x04 */ u32 width;
/* 0x08 */ u32 burst;
@ -25,7 +25,7 @@ typedef struct {
/* 0x20 */ u32 vCurrent;
} OSViCommonRegs; // size = 0x20
typedef struct {
typedef struct OSViFieldRegs {
/* 0x00 */ u32 origin;
/* 0x04 */ u32 yScale;
/* 0x08 */ u32 vStart;
@ -33,19 +33,19 @@ typedef struct {
/* 0x10 */ u32 vIntr;
} OSViFieldRegs; // size = 0x14
typedef struct {
typedef struct OSViMode {
/* 0x00 */ u8 type;
/* 0x04 */ OSViCommonRegs comRegs;
/* 0x24 */ OSViFieldRegs fldRegs[2];
} OSViMode; // size = 0x4C
typedef struct {
typedef struct __OSViScale {
/* 0x0 */ f32 factor;
/* 0x4 */ u16 offset;
/* 0x8 */ u32 scale;
} __OSViScale; // size = 0x0C
typedef struct {
typedef struct OSViContext {
/* 0x00 */ u16 state;
/* 0x02 */ u16 retraceCount;
/* 0x04 */ void* framep;

View file

@ -10,7 +10,7 @@
#define LONG_DOUBLE_TYPE long double
#endif
typedef struct {
typedef struct _Pft {
/* 0x00 */ union {
long long ll;
LONG_DOUBLE_TYPE ld;

View file

@ -99,7 +99,7 @@
#define STACK_TOP(stack) \
((u8*)(stack) + sizeof(stack))
typedef struct {
typedef struct KaleidoMgrOverlay {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ RomFile file;
/* 0x0C */ void* vramStart;
@ -108,22 +108,22 @@ typedef struct {
/* 0x18 */ const char* name;
} KaleidoMgrOverlay; // size = 0x1C
typedef enum {
typedef enum KaleidoOverlayType {
/* 0 */ KALEIDO_OVL_KALEIDO_SCOPE,
/* 1 */ KALEIDO_OVL_PLAYER_ACTOR,
/* 2 */ KALEIDO_OVL_MAX
} KaleidoOverlayType;
typedef enum {
typedef enum LensMode {
/* 0 */ LENS_MODE_SHOW_ACTORS, // lens actors are invisible by default, and shown by using lens (for example, invisible enemies)
/* 1 */ LENS_MODE_HIDE_ACTORS // lens actors are visible by default, and hidden by using lens (for example, fake walls)
} LensMode;
typedef struct {
typedef struct SetupState {
/* 0x00 */ GameState state;
} SetupState; // size = 0xA4
typedef struct {
typedef struct ConsoleLogoState {
/* 0x0000 */ GameState state;
/* 0x00A4 */ u8* staticSegment;
/* 0x00A8 */ View view;
@ -141,7 +141,7 @@ typedef struct {
struct MapSelectState;
typedef struct {
typedef struct SceneSelectEntry {
/* 0x00 */ char* name;
/* 0x04 */ void (*loadFunc)(struct MapSelectState*, s32);
/* 0x08 */ s32 entranceIndex;
@ -169,7 +169,7 @@ typedef struct MapSelectState {
/* 0x0238 */ u8* staticSegment;
} MapSelectState; // size = 0x240
typedef struct {
typedef struct SampleState {
/* 0x0000 */ GameState state;
/* 0x00A4 */ u8* staticSegment;
/* 0x00A8 */ View view;
@ -182,7 +182,7 @@ typedef struct QuestHintCmd {
/* 0x03 */ u8 byte3;
} QuestHintCmd; // size = 0x4
typedef enum {
typedef enum PauseBgPreRenderState {
/* 0 */ PAUSE_BG_PRERENDER_OFF, // Inactive, do nothing.
/* 1 */ PAUSE_BG_PRERENDER_SETUP, // The current frame is only drawn for the purpose of serving as the pause background.
/* 2 */ PAUSE_BG_PRERENDER_PROCESS, // The previous frame was PAUSE_BG_PRERENDER_SETUP, now apply prerender filters.
@ -190,19 +190,19 @@ typedef enum {
/* 4 */ PAUSE_BG_PRERENDER_MAX
} PauseBgPreRenderState;
typedef enum {
typedef enum TransitionTileState {
/* 0 */ TRANS_TILE_OFF, // Inactive, do nothing
/* 1 */ TRANS_TILE_SETUP, // Save the necessary buffers
/* 2 */ TRANS_TILE_PROCESS, // Initialize the transition
/* 3 */ TRANS_TILE_READY // The transition is ready, so will update and draw each frame
} TransitionTileState;
typedef struct {
typedef struct TitleSetupState {
/* 0x0000 */ GameState state;
/* 0x00A8 */ View view;
} TitleSetupState; // size = 0x1D0
typedef struct {
typedef struct FileSelectState {
/* 0x00000 */ GameState state;
/* 0x000A4 */ Vtx* windowVtx;
/* 0x000A8 */ u8* staticSegment;
@ -299,13 +299,13 @@ typedef struct {
(((field) >> ENTRANCE_INFO_START_TRANS_TYPE_SHIFT) \
& (ENTRANCE_INFO_START_TRANS_TYPE_MASK >> ENTRANCE_INFO_START_TRANS_TYPE_SHIFT))
typedef struct {
typedef struct EntranceInfo {
/* 0x00 */ s8 sceneId;
/* 0x01 */ s8 spawn;
/* 0x02 */ u16 field;
} EntranceInfo; // size = 0x4
typedef struct {
typedef struct GameStateOverlay {
/* 0x00 */ void* loadedRamAddr;
/* 0x04 */ RomFile file; // if applicable
/* 0x0C */ void* vramStart; // if applicable
@ -319,13 +319,13 @@ typedef struct {
/* 0x2C */ u32 instanceSize;
} GameStateOverlay; // size = 0x30
typedef struct {
typedef struct PreNMIState {
/* 0x00 */ GameState state;
/* 0xA4 */ u32 timer;
/* 0xA8 */ UNK_TYPE4 unk_A8;
} PreNMIState; // size = 0xAC
typedef enum {
typedef enum FloorID {
/* 1 */ F_8F = 1,
/* 2 */ F_7F,
/* 3 */ F_6F,
@ -347,7 +347,7 @@ typedef enum {
// All arrays pointed in this struct are indexed by "map indices"
// In dungeons, the map index corresponds to the dungeon index (which also indexes keys, items, etc)
// In overworld areas, the map index corresponds to the overworld area index (spot 00, 01, etc)
typedef struct {
typedef struct MapData {
/* 0x00 */ s16 (*floorTexIndexOffset)[8]; // dungeon texture index offset by floor
/* 0x04 */ s16* bossFloor; // floor the boss is on
/* 0x08 */ s16 (*roomPalette)[32]; // map palette by room
@ -396,7 +396,7 @@ typedef struct DebugDispObject {
/* 0x28 */ struct DebugDispObject* next;
} DebugDispObject; // size = 0x2C
typedef enum {
typedef enum MatrixMode {
/* 0 */ MTXMODE_NEW, // generates a new matrix
/* 1 */ MTXMODE_APPLY // applies transformation to the current matrix
} MatrixMode;
@ -411,13 +411,13 @@ typedef struct StackEntry {
/* 0x18 */ const char* name;
} StackEntry;
typedef enum {
typedef enum StackStatus {
/* 0 */ STACK_STATUS_OK,
/* 1 */ STACK_STATUS_WARNING,
/* 2 */ STACK_STATUS_OVERFLOW
} StackStatus;
typedef struct {
typedef struct ISVDbg {
/* 0x00 */ u32 magic; // IS64
/* 0x04 */ u32 get;
/* 0x08 */ u8 unk_08[0x14-0x08];
@ -426,7 +426,7 @@ typedef struct {
/* 0x20 */ u8 data[0x10000-0x20];
} ISVDbg;
typedef struct {
typedef struct LocaleCartInfo {
/* 0x00 */ char name[0x18];
/* 0x18 */ u32 mediaFormat;
/* 0x1C */ union {
@ -439,7 +439,7 @@ typedef struct {
};
} LocaleCartInfo; // size = 0x20
typedef struct {
typedef struct Yaz0Header {
/* 0x00 */ char magic[4]; // Yaz0
/* 0x04 */ u32 decSize;
/* 0x08 */ u32 compInfoOffset; // only used in mio0
@ -486,7 +486,7 @@ typedef struct ArenaNode {
#define R_MIPS_LO16 6
/* Reloc section id, must fit in 2 bits otherwise the relocation format must be modified */
typedef enum {
typedef enum RelocSectionId {
/* 0 */ RELOC_SECTION_NULL,
/* 1 */ RELOC_SECTION_TEXT,
/* 2 */ RELOC_SECTION_DATA,
@ -508,21 +508,21 @@ typedef struct OverlayRelocationSection {
// where 64-bit load/store instructions are emulated with 2x 32-bit load/store instructions. The alignment attribute
// conveys that this structure will not always be 8-bytes aligned, allowing a modern compiler to generate non-crashing
// code for accessing these. This is not an issue in the original compiler as it only output O32 ABI code.
ALIGNED(4) typedef struct {
ALIGNED(4) typedef struct PreNmiBuff {
/* 0x00 */ u32 resetting;
/* 0x04 */ u32 resetCount;
/* 0x08 */ OSTime duration;
/* 0x10 */ OSTime resetTime;
} PreNmiBuff; // size = 0x18 (actually osAppNMIBuffer is 0x40 bytes large but the rest is unused)
typedef enum {
typedef enum ViModeEditState {
/* 0 */ VI_MODE_EDIT_STATE_INACTIVE,
/* 1 */ VI_MODE_EDIT_STATE_ACTIVE,
/* 2 */ VI_MODE_EDIT_STATE_2, // active, more adjustments
/* 3 */ VI_MODE_EDIT_STATE_3 // active, more adjustments, print comparison with NTSC LAN1 mode
} ViModeEditState;
typedef struct {
typedef struct ViMode {
/* 0x00 */ OSViMode customViMode;
/* 0x50 */ s32 viHeight;
/* 0x54 */ s32 viWidth;

View file

@ -24,7 +24,7 @@ typedef void (*ActorShadowFunc)(struct Actor*, struct Lights*, struct PlayState*
typedef u16 (*NpcGetTextIdFunc)(struct PlayState*, struct Actor*);
typedef s16 (*NpcUpdateTalkStateFunc)(struct PlayState*, struct Actor*);
typedef struct {
typedef struct ActorProfile {
/* 0x00 */ s16 id;
/* 0x02 */ u8 category; // Classifies actor and determines when it will update or draw
/* 0x04 */ u32 flags;
@ -85,7 +85,7 @@ typedef struct {
*/
#define ACTOROVL_ALLOC_PERSISTENT (1 << 1)
typedef struct {
typedef struct ActorOverlay {
/* 0x00 */ RomFile file;
/* 0x08 */ void* vramStart;
/* 0x0C */ void* vramEnd;
@ -96,18 +96,18 @@ typedef struct {
/* 0x1E */ s8 numLoaded; // original name: "clients"
} ActorOverlay; // size = 0x20
typedef struct {
typedef struct DamageTable {
u8 table[32];
} DamageTable;
typedef struct {
typedef struct CollisionCheckInfoInit {
/* 0x00 */ u8 health;
/* 0x02 */ s16 cylRadius;
/* 0x04 */ s16 cylHeight;
/* 0x06 */ u8 mass;
} CollisionCheckInfoInit;
typedef struct {
typedef struct CollisionCheckInfoInit2 {
/* 0x00 */ u8 health;
/* 0x02 */ s16 cylRadius;
/* 0x04 */ s16 cylHeight;
@ -115,7 +115,7 @@ typedef struct {
/* 0x08 */ u8 mass;
} CollisionCheckInfoInit2;
typedef struct {
typedef struct CollisionCheckInfo {
/* 0x00 */ DamageTable* damageTable;
/* 0x04 */ Vec3f displacement; // Amount to correct actor velocity by when colliding into a body
/* 0x10 */ s16 cylRadius; // Used for various purposes
@ -129,7 +129,7 @@ typedef struct {
/* 0x1B */ u8 acHitEffect; // Stores what effect should occur when AC is touched by an AT
} CollisionCheckInfo; // size = 0x1C
typedef struct {
typedef struct ActorShape {
/* 0x00 */ Vec3s rot; // Current actor shape rotation
/* 0x06 */ s16 face; // Used to index eyes and mouth textures. Only used by player
/* 0x08 */ f32 yOffset; // Model y axis offset. Represents model space units
@ -310,7 +310,7 @@ typedef struct Actor {
#endif
} Actor; // size = 0x14C
typedef enum {
typedef enum ActorFootIndex {
/* 0 */ FOOT_LEFT,
/* 1 */ FOOT_RIGHT
} ActorFootIndex;
@ -344,7 +344,7 @@ typedef struct DynaPolyActor {
/* 0x162 */ s16 unk_162;
} DynaPolyActor; // size = 0x164
typedef struct {
typedef struct BodyBreak {
/* 0x00 */ MtxF* matrices;
/* 0x04 */ s16* objectSlots;
/* 0x08 */ s16 count;
@ -357,7 +357,7 @@ typedef struct {
#define BODYBREAK_STATUS_READY -1
#define BODYBREAK_STATUS_FINISHED 0
typedef enum {
typedef enum Item00Type {
/* 0x00 */ ITEM00_RUPEE_GREEN,
/* 0x01 */ ITEM00_RUPEE_BLUE,
/* 0x02 */ ITEM00_RUPEE_RED,
@ -406,7 +406,7 @@ typedef struct EnItem00 {
} EnItem00; // size = 0x1AC
// Only A_OBJ_SIGNPOST_OBLONG and A_OBJ_SIGNPOST_ARROW are used in room files.
typedef enum {
typedef enum AObjType {
/* 0x00 */ A_OBJ_BLOCK_SMALL,
/* 0x01 */ A_OBJ_BLOCK_LARGE,
/* 0x02 */ A_OBJ_BLOCK_HUGE,
@ -439,7 +439,7 @@ typedef struct EnAObj {
/* 0x17C */ ColliderCylinder collider;
} EnAObj; // size = 0x1C8
typedef enum {
typedef enum ActorCategory {
/* 0x00 */ ACTORCAT_SWITCH,
/* 0x01 */ ACTORCAT_BG,
/* 0x02 */ ACTORCAT_PLAYER,
@ -459,7 +459,7 @@ typedef enum {
#define DEFINE_ACTOR_INTERNAL(_0, enum, _2, _3) enum,
#define DEFINE_ACTOR_UNSET(enum) enum,
typedef enum {
typedef enum ActorID {
#include "tables/actor_table.h"
/* 0x0192 */ ACTOR_ID_MAX // originally "ACTOR_DLF_MAX"
} ActorID;
@ -468,13 +468,13 @@ typedef enum {
#undef DEFINE_ACTOR_INTERNAL
#undef DEFINE_ACTOR_UNSET
typedef enum {
typedef enum DoorLockType {
DOORLOCK_NORMAL,
DOORLOCK_BOSS,
DOORLOCK_NORMAL_SPIRIT
} DoorLockType;
typedef enum {
typedef enum NaviEnemy {
/* 0x00 */ NAVI_ENEMY_DEFAULT,
/* 0x01 */ NAVI_ENEMY_GOHMA,
/* 0x02 */ NAVI_ENEMY_GOHMA_EGG,
@ -666,7 +666,7 @@ typedef struct SlidingDoorActorBase {
/* 0x0000 */ SLIDING_DOOR_ACTOR_BASE;
} SlidingDoorActorBase;
typedef enum {
typedef enum DoorOpenAnim {
/* 0x00 */ DOOR_OPEN_ANIM_ADULT_L,
/* 0x01 */ DOOR_OPEN_ANIM_CHILD_L,
/* 0x02 */ DOOR_OPEN_ANIM_ADULT_R,
@ -683,14 +683,14 @@ typedef enum {
#define UPDBGCHECKINFO_FLAG_6 (1 << 6) // disable water ripples
#define UPDBGCHECKINFO_FLAG_7 (1 << 7) // alternate wall check?
typedef enum {
typedef enum NpcTalkState {
/* 0x0 */ NPC_TALK_STATE_IDLE, // NPC not currently talking to player
/* 0x1 */ NPC_TALK_STATE_TALKING, // NPC is currently talking to player
/* 0x2 */ NPC_TALK_STATE_ACTION, // An NPC-defined action triggered in the conversation
/* 0x3 */ NPC_TALK_STATE_ITEM_GIVEN // NPC finished giving an item and text box is done
} NpcTalkState;
typedef enum {
typedef enum NpcTrackingMode {
/* 0x0 */ NPC_TRACKING_PLAYER_AUTO_TURN, // Determine tracking mode based on player position, see Npc_UpdateAutoTurn
/* 0x1 */ NPC_TRACKING_NONE, // Don't track the target (usually the player)
/* 0x2 */ NPC_TRACKING_HEAD_AND_TORSO, // Track target by turning the head and the torso
@ -698,7 +698,7 @@ typedef enum {
/* 0x4 */ NPC_TRACKING_FULL_BODY // Track target by turning the body, torso and head
} NpcTrackingMode;
typedef struct {
typedef struct NpcInteractInfo {
/* 0x00 */ s16 talkState;
/* 0x02 */ s16 trackingMode;
/* 0x04 */ s16 autoTurnTimer;

View file

@ -16,14 +16,14 @@ struct SkelAnime;
#define LIMB_DONE 0xFF
typedef struct {
typedef struct StandardLimb {
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
/* 0x08 */ Gfx* dList;
} StandardLimb; // size = 0xC
typedef struct {
typedef struct LodLimb {
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
@ -31,13 +31,13 @@ typedef struct {
} LodLimb; // size = 0x10
// Model has limbs with only rigid meshes
typedef struct {
typedef struct SkeletonHeader {
/* 0x00 */ void** segment;
/* 0x04 */ u8 limbCount;
} SkeletonHeader; // size = 0x8
// Model has limbs with flexible meshes
typedef struct {
typedef struct FlexSkeletonHeader {
/* 0x00 */ SkeletonHeader sh;
/* 0x08 */ u8 dListCount;
} FlexSkeletonHeader; // size = 0xC
@ -47,22 +47,22 @@ typedef struct {
*/
// Index into the frame data table.
typedef struct {
typedef struct JointIndex {
/* 0x00 */ u16 x;
/* 0x02 */ u16 y;
/* 0x04 */ u16 z;
} JointIndex; // size = 0x06
typedef struct {
typedef struct AnimationHeaderCommon {
/* 0x00 */ s16 frameCount;
} AnimationHeaderCommon;
typedef struct {
typedef struct LinkAnimationHeader {
/* 0x00 */ AnimationHeaderCommon common;
/* 0x04 */ void* segment;
} LinkAnimationHeader; // size = 0x8
typedef struct {
typedef struct AnimationHeader {
/* 0x00 */ AnimationHeaderCommon common;
/* 0x04 */ s16* frameData; // "tbl"
/* 0x08 */ JointIndex* jointIndices; // "ref_tbl"
@ -73,7 +73,7 @@ typedef struct {
* SkelAnime
*/
typedef enum {
typedef enum AnimationMode {
/* 0 */ ANIMMODE_LOOP,
/* 1 */ ANIMMODE_LOOP_INTERP,
/* 2 */ ANIMMODE_ONCE,
@ -82,7 +82,7 @@ typedef enum {
/* 5 */ ANIMMODE_LOOP_PARTIAL_INTERP
} AnimationMode;
typedef enum {
typedef enum AnimationTapers {
/* -1 */ ANIMTAPER_DECEL = -1,
/* 0 */ ANIMTAPER_NONE,
/* 1 */ ANIMTAPER_ACCEL
@ -253,7 +253,7 @@ void Animation_EndLoop(SkelAnime* skelAnime);
void Animation_Reverse(SkelAnime* skelAnime);
void Animation_SetMorph(struct PlayState* play, SkelAnime* skelAnime, f32 morphFrames);
typedef struct {
typedef struct AnimationInfo {
/* 0x00 */ AnimationHeader* animation;
/* 0x04 */ f32 playSpeed;
/* 0x08 */ f32 startFrame;
@ -264,21 +264,21 @@ typedef struct {
void Animation_ChangeByInfo(SkelAnime* skelAnime, AnimationInfo* animationInfo, s32 index);
typedef struct {
typedef struct AnimationFrameCountInfo {
/* 0x00 */ AnimationHeader* animation;
/* 0x04 */ f32 frameCount;
/* 0x08 */ u8 mode;
/* 0x0C */ f32 morphFrames;
} AnimationFrameCountInfo; // size = 0x10
typedef struct {
typedef struct AnimationSpeedInfo {
/* 0x00 */ AnimationHeader* animation;
/* 0x04 */ f32 playSpeed;
/* 0x08 */ u8 mode;
/* 0x0C */ f32 morphFrames;
} AnimationSpeedInfo; // size = 0x10
typedef struct {
typedef struct AnimationMinimalInfo {
/* 0x00 */ AnimationHeader* animation;
/* 0x04 */ u8 mode;
/* 0x08 */ f32 morphFrames;
@ -296,7 +296,7 @@ s16 Animation_GetLastFrame(void* animation);
* Animation Task Queue
*/
typedef enum {
typedef enum AnimTaskType {
/* 0 */ ANIMTASK_LOAD_PLAYER_FRAME,
/* 1 */ ANIMTASK_COPY,
/* 2 */ ANIMTASK_INTERP,
@ -305,20 +305,20 @@ typedef enum {
/* 5 */ ANIMTASK_ACTOR_MOVE
} AnimTaskType;
typedef struct {
typedef struct AnimTaskLoadPlayerFrame {
/* 0x00 */ DmaRequest req;
/* 0x20 */ OSMesgQueue msgQueue;
/* 0x38 */ OSMesg msg;
} AnimTaskLoadPlayerFrame; // size = 0x3C
typedef struct {
typedef struct AnimTaskCopy {
/* 0x00 */ u8 group;
/* 0x01 */ u8 vecCount;
/* 0x04 */ Vec3s* dest;
/* 0x08 */ Vec3s* src;
} AnimTaskCopy; // size = 0xC
typedef struct {
typedef struct AnimTaskInterp {
/* 0x00 */ u8 group;
/* 0x01 */ u8 vecCount;
/* 0x04 */ Vec3s* base;
@ -326,7 +326,7 @@ typedef struct {
/* 0x0C */ f32 weight;
} AnimTaskInterp; // size = 0x10
typedef struct {
typedef struct AnimTaskCopyUsingMap {
/* 0x00 */ u8 group;
/* 0x01 */ u8 vecCount;
/* 0x04 */ Vec3s* dest;
@ -334,7 +334,7 @@ typedef struct {
/* 0x0C */ u8* limbCopyMap;
} AnimTaskCopyUsingMap; // size = 0x10
typedef struct {
typedef struct AnimTaskCopyUsingMapInverted {
/* 0x00 */ u8 group;
/* 0x01 */ u8 vecCount;
/* 0x04 */ Vec3s* dest;
@ -342,13 +342,13 @@ typedef struct {
/* 0x0C */ u8* limbCopyMap;
} AnimTaskCopyUsingMapInverted; // size = 0x10
typedef struct {
typedef struct AnimTaskActorMove {
/* 0x00 */ struct Actor* actor;
/* 0x04 */ struct SkelAnime* skelAnime;
/* 0x08 */ f32 diffScaleY;
} AnimTaskActorMove; // size = 0xC
typedef union {
typedef union AnimTaskData {
AnimTaskLoadPlayerFrame loadPlayerFrame;
AnimTaskCopy copy;
AnimTaskInterp interp;
@ -357,7 +357,7 @@ typedef union {
AnimTaskActorMove actorMove;
} AnimTaskData; // size = 0x3C
typedef struct {
typedef struct AnimTask {
/* 0x00 */ u8 type;
/* 0x04 */ AnimTaskData data;
} AnimTask; // size = 0x40

View file

@ -12,7 +12,7 @@ typedef struct LegacyLimb {
/* 0x01C */ struct LegacyLimb* child;
} LegacyLimb; // size = 0x20
typedef struct {
typedef struct LegacyJointKey {
/* 0x00 */ s16 xMax;
/* 0x02 */ s16 x;
/* 0x04 */ s16 yMax;
@ -21,7 +21,7 @@ typedef struct {
/* 0x0A */ s16 z;
} LegacyJointKey; // size = 0x0C
typedef struct {
typedef struct LegacyAnimationHeader {
/* 0x00 */ s16 frameCount;
/* 0x02 */ s16 limbCount;
/* 0x04 */ s16* frameData;

View file

@ -62,14 +62,14 @@ typedef void (*AudioCustomUpdateFunction)(void);
#define AUDIO_RELOCATED_ADDRESS_START K0BASE
typedef enum {
typedef enum SoundMode {
/* 0 */ SOUNDMODE_STEREO,
/* 1 */ SOUNDMODE_HEADSET,
/* 2 */ SOUNDMODE_SURROUND,
/* 3 */ SOUNDMODE_MONO
} SoundMode;
typedef enum {
typedef enum AdsrStatus {
/* 0 */ ADSR_STATE_DISABLED,
/* 1 */ ADSR_STATE_INITIAL,
/* 2 */ ADSR_STATE_START_LOOP,
@ -81,14 +81,14 @@ typedef enum {
/* 8 */ ADSR_STATE_SUSTAIN
} AdsrStatus;
typedef enum {
typedef enum SampleMedium {
/* 0 */ MEDIUM_RAM,
/* 1 */ MEDIUM_UNK,
/* 2 */ MEDIUM_CART,
/* 3 */ MEDIUM_DISK_DRIVE
} SampleMedium;
typedef enum {
typedef enum SampleCodec {
/* 0 */ CODEC_ADPCM, // 16 2-byte samples (32 bytes) compressed into 4-bit samples (8 bytes) + 1 header byte
/* 1 */ CODEC_S8, // 16 2-byte samples (32 bytes) compressed into 8-bit samples (16 bytes)
/* 2 */ CODEC_S16_INMEMORY,
@ -97,20 +97,20 @@ typedef enum {
/* 5 */ CODEC_S16
} SampleCodec;
typedef enum {
typedef enum SampleBankTableType {
/* 0 */ SEQUENCE_TABLE,
/* 1 */ FONT_TABLE,
/* 2 */ SAMPLE_TABLE
} SampleBankTableType;
typedef enum {
typedef enum AudioCacheType {
/* 0 */ CACHE_TEMPORARY,
/* 1 */ CACHE_PERSISTENT,
/* 2 */ CACHE_EITHER,
/* 3 */ CACHE_PERMANENT
} AudioCacheType;
typedef enum {
typedef enum AudioLoadStatus {
/* 0 */ LOAD_STATUS_NOT_LOADED, // the entry data is not loaded
/* 1 */ LOAD_STATUS_IN_PROGRESS, // the entry data is being loaded asynchronously
/* 2 */ LOAD_STATUS_COMPLETE, // the entry data is loaded, it may be discarded if not stored persistently, and either no longer in use, or the memory is needed for something else
@ -154,19 +154,19 @@ typedef struct NotePool {
// direction is "supported" by setting extent to be negative. The code
// exterpolates exponentially in the wrong direction in that case, but that
// doesn't prevent seqplayer from doing it, AFAICT.
typedef struct {
typedef struct Portamento {
/* 0x00 */ u8 mode; // bit 0x80 denotes something; the rest are an index 0-5
/* 0x02 */ u16 cur;
/* 0x04 */ u16 speed;
/* 0x08 */ f32 extent;
} Portamento; // size = 0xC
typedef struct {
typedef struct EnvelopePoint {
/* 0x0 */ s16 delay;
/* 0x2 */ s16 arg;
} EnvelopePoint; // size = 0x4
typedef struct {
typedef struct AdpcmLoop {
/* 0x00 */ u32 start;
/* 0x04 */ u32 end;
/* 0x08 */ u32 count;
@ -174,13 +174,13 @@ typedef struct {
/* 0x10 */ s16 predictorState[16]; // only exists if count != 0. 8-byte aligned
} AdpcmLoop; // size = 0x30 (or 0x10)
typedef struct {
typedef struct AdpcmBook {
/* 0x00 */ s32 order;
/* 0x04 */ s32 numPredictors;
/* 0x08 */ s16 book[1]; // size 8 * order * numPredictors. 8-byte aligned
} AdpcmBook; // size >= 0x8
typedef struct {
typedef struct Sample {
/* 0x00 */ u32 codec : 4; // The state of compression or decompression
/* 0x00 */ u32 medium : 2; // Medium where sample is currently stored
/* 0x00 */ u32 unk_bit26 : 1;
@ -191,12 +191,12 @@ typedef struct {
/* 0x0C */ AdpcmBook* book; // Adpcm book parameters used by the sample. Offset from the start of the sound font / pointer to ram
} Sample; // size = 0x10
typedef struct {
typedef struct TunedSample {
/* 0x00 */ Sample* sample;
/* 0x04 */ f32 tuning; // frequency scale factor
} TunedSample; // size = 0x8
typedef struct {
typedef struct Instrument {
/* 0x00 */ u8 isRelocated; // have the envelope and all samples been relocated (offsets to pointers)
/* 0x01 */ u8 normalRangeLo;
/* 0x02 */ u8 normalRangeHi;
@ -207,7 +207,7 @@ typedef struct {
/* 0x18 */ TunedSample highPitchTunedSample;
} Instrument; // size = 0x20
typedef struct {
typedef struct Drum {
/* 0x00 */ u8 adsrDecayIndex; // index used to obtain adsr decay rate from adsrDecayTable
/* 0x01 */ u8 pan;
/* 0x02 */ u8 isRelocated; // have tunedSample.sample and envelope been relocated (offsets to pointers)
@ -215,14 +215,14 @@ typedef struct {
/* 0x0C */ EnvelopePoint* envelope;
} Drum; // size = 0x10
typedef struct {
typedef struct SoundEffect {
/* 0x00 */ TunedSample tunedSample;
} SoundEffect; // size = 0x08
/**
* Stores parsed information from soundfont data
*/
typedef struct {
typedef struct SoundFont {
/* 0x00 */ u8 numInstruments;
/* 0x01 */ u8 numDrums;
/* 0x02 */ u8 sampleBankId1;
@ -233,7 +233,7 @@ typedef struct {
/* 0x10 */ SoundEffect* soundEffects;
} SoundFont; // size = 0x14
typedef struct {
typedef struct ReverbRingBufferItem {
/* 0x00 */ s16 numSamplesAfterDownsampling; // never read
/* 0x02 */ s16 chunkLen; // never read
/* 0x04 */ s16* toDownsampleLeft;
@ -246,7 +246,7 @@ typedef struct {
/* 0x18 */ u16 unk_18;
} ReverbRingBufferItem; // size = 0x1C
typedef struct {
typedef struct SynthesisReverb {
/* 0x000 */ u8 resampleFlags;
/* 0x001 */ u8 useReverb;
/* 0x002 */ u8 framesToIgnore;
@ -286,7 +286,7 @@ typedef struct {
/* 0x298 */ AdpcmLoop loop;
} SynthesisReverb; // size = 0x2C8
typedef struct {
typedef struct SeqScriptState {
/* 0x00 */ u8* pc; // program counter
/* 0x04 */ u8* stack[4];
/* 0x14 */ u8 remLoopIters[4]; // remaining loop iterations
@ -295,7 +295,7 @@ typedef struct {
} SeqScriptState; // size = 0x1C
// Also known as a Group, according to debug strings.
typedef struct {
typedef struct SequencePlayer {
/* 0x000 */ u8 enabled : 1;
/* 0x000 */ u8 finished : 1;
/* 0x000 */ u8 muted : 1;
@ -337,13 +337,13 @@ typedef struct {
/* 0x158 */ s8 seqScriptIO[8];
} SequencePlayer; // size = 0x160
typedef struct {
typedef struct AdsrSettings {
/* 0x0 */ u8 decayIndex; // index used to obtain adsr decay rate from adsrDecayTable
/* 0x1 */ u8 sustain;
/* 0x4 */ EnvelopePoint* envelope;
} AdsrSettings; // size = 0x8
typedef struct {
typedef struct AdsrState {
/* 0x00 */ union {
struct A {
/* 0x00 */ u8 unused : 1;
@ -365,7 +365,7 @@ typedef struct {
/* 0x1C */ EnvelopePoint* envelope;
} AdsrState; // size = 0x20
typedef struct {
typedef struct StereoData {
/* 0x00 */ u8 unused : 2;
/* 0x00 */ u8 bit2 : 2;
/* 0x00 */ u8 strongRight : 1;
@ -374,12 +374,12 @@ typedef struct {
/* 0x00 */ u8 usesHeadsetPanEffects : 1;
} StereoData; // size = 0x1
typedef union {
typedef union Stereo {
/* 0x00 */ StereoData s;
/* 0x00 */ u8 asByte;
} Stereo; // size = 0x1
typedef struct {
typedef struct NoteAttributes {
/* 0x00 */ u8 reverb;
/* 0x01 */ u8 gain; // Increases volume by a multiplicative scaling factor. Represented as a UQ4.4 number
/* 0x02 */ u8 pan;
@ -498,7 +498,7 @@ typedef struct SequenceLayer {
/* 0x70 */ AudioListItem listItem;
} SequenceLayer; // size = 0x80
typedef struct {
typedef struct NoteSynthesisBuffers {
/* 0x000 */ s16 adpcmdecState[16];
/* 0x020 */ s16 finalResampleState[16];
/* 0x040 */ s16 mixEnvelopeState[32];
@ -507,7 +507,7 @@ typedef struct {
/* 0x0E0 */ s16 combFilterState[128];
} NoteSynthesisBuffers; // size = 0x1E0
typedef struct {
typedef struct NoteSynthesisState {
/* 0x00 */ u8 restart;
/* 0x01 */ u8 sampleDmaIndex;
/* 0x02 */ u8 prevHaasEffectLeftDelaySize;
@ -524,7 +524,7 @@ typedef struct {
/* 0x1C */ char unk_1C[0x4];
} NoteSynthesisState; // size = 0x20
typedef struct {
typedef struct VibratoState {
/* 0x00 */ struct SequenceChannel* channel;
/* 0x04 */ u32 time;
/* 0x08 */ s16* curve; // sineWave
@ -536,7 +536,7 @@ typedef struct {
/* 0x1A */ u16 delay;
} VibratoState; // size = 0x1C
typedef struct {
typedef struct NotePlaybackState {
/* 0x00 */ u8 priority;
/* 0x01 */ u8 waveId;
/* 0x02 */ u8 harmonicIndex; // the harmonic index for the synthetic wave contained in gWaveSamples (also matches the base 2 logarithm of the harmonic order)
@ -555,7 +555,7 @@ typedef struct {
/* 0x6C */ VibratoState vibratoState;
} NotePlaybackState; // size = 0x88
typedef struct {
typedef struct NoteSubEu {
struct {
/* 0x00 */ volatile u8 enabled : 1;
/* 0x00 */ u8 needsInit : 1;
@ -600,7 +600,7 @@ typedef struct Note {
/* 0xC0 */ NoteSubEu noteSubEu;
} Note; // size = 0xE0
typedef struct {
typedef struct ReverbSettings {
/* 0x00 */ u8 downsampleRate;
/* 0x02 */ u16 windowSize;
/* 0x04 */ u16 decayRatio; // determines how much reverb persists
@ -619,7 +619,7 @@ typedef struct {
* The high-level audio specifications requested when initializing or resetting the audio heap.
* The audio heap can be reset on various occasions, including on most scene transitions.
*/
typedef struct {
typedef struct AudioSpec {
/* 0x00 */ u32 samplingFrequency; // Target sampling rate in Hz
/* 0x04 */ u8 unk_04;
/* 0x05 */ u8 numNotes;
@ -646,7 +646,7 @@ typedef struct {
* digital-analog converter (DAC), then to play on the speakers. The audio buffer is written to by the rsp after
* processing audio commands. This struct parameterizes that buffer.
*/
typedef struct {
typedef struct AudioBufferParameters {
/* 0x00 */ s16 specUnk4;
/* 0x02 */ u16 samplingFrequency; // Target sampling rate in Hz
/* 0x04 */ u16 aiSamplingFrequency; // True sampling rate of the audio interface (AI), see `osAiSetFrequency`
@ -667,7 +667,7 @@ typedef struct {
/**
* Meta-data associated with a pool (contained within the Audio Heap)
*/
typedef struct {
typedef struct AudioAllocPool {
/* 0x0 */ u8* startRamAddr; // start addr of the pool
/* 0x4 */ u8* curRamAddr; // address of the next available memory for allocation
/* 0x8 */ s32 size; // size of the pool
@ -677,7 +677,7 @@ typedef struct {
/**
* Audio cache entry data to store a single entry containing either a sequence, soundfont, or entire sample banks
*/
typedef struct {
typedef struct AudioCacheEntry {
/* 0x0 */ u8* ramAddr;
/* 0x4 */ u32 size;
/* 0x8 */ s16 tableType;
@ -687,7 +687,7 @@ typedef struct {
/**
* Audio cache entry data to store a single entry containing an individual sample
*/
typedef struct {
typedef struct SampleCacheEntry {
/* 0x00 */ s8 inUse;
/* 0x01 */ s8 origMedium;
/* 0x02 */ s8 sampleBankId;
@ -700,48 +700,48 @@ typedef struct {
/**
* Audio cache entry data to store individual samples
*/
typedef struct {
typedef struct AudioSampleCache {
/* 0x000 */ AudioAllocPool pool;
/* 0x010 */ SampleCacheEntry entries[32];
/* 0x290 */ s32 numEntries;
} AudioSampleCache; // size = 0x294
typedef struct {
typedef struct AudioPersistentCache {
/* 0x00*/ u32 numEntries;
/* 0x04*/ AudioAllocPool pool;
/* 0x14*/ AudioCacheEntry entries[16];
} AudioPersistentCache; // size = 0xD4
typedef struct {
typedef struct AudioTemporaryCache {
/* 0x00*/ u32 nextSide;
/* 0x04*/ AudioAllocPool pool;
/* 0x14*/ AudioCacheEntry entries[2];
} AudioTemporaryCache; // size = 0x3C
typedef struct {
typedef struct AudioCache {
/* 0x000*/ AudioPersistentCache persistent;
/* 0x0D4*/ AudioTemporaryCache temporary;
/* 0x100*/ u8 unk_100[0x10];
} AudioCache; // size = 0x110
typedef struct {
typedef struct AudioCachePoolSplit {
/* 0x0 */ u32 persistentCommonPoolSize;
/* 0x4 */ u32 temporaryCommonPoolSize;
} AudioCachePoolSplit; // size = 0x8
typedef struct {
typedef struct AudioCommonPoolSplit {
/* 0x0 */ u32 seqCacheSize;
/* 0x4 */ u32 fontCacheSize;
/* 0x8 */ u32 sampleBankCacheSize;
} AudioCommonPoolSplit; // size = 0xC
typedef struct {
typedef struct AudioSessionPoolSplit {
/* 0x0 */ u32 miscPoolSize;
/* 0x4 */ u32 unkSizes[2];
/* 0xC */ u32 cachePoolSize;
} AudioSessionPoolSplit; // size = 0x10
typedef struct {
typedef struct AudioPreloadReq {
/* 0x00 */ u32 endAndMediumKey;
/* 0x04 */ Sample* sample;
/* 0x08 */ u8* ramAddr;
@ -752,7 +752,7 @@ typedef struct {
/**
* Audio commands used to transfer audio requests from the graph thread to the audio thread
*/
typedef struct {
typedef struct AudioCmd {
/* 0x0 */ union{
u32 opArgs;
struct {
@ -773,7 +773,7 @@ typedef struct {
};
} AudioCmd; // size = 0x8
typedef struct {
typedef struct AudioAsyncLoad {
/* 0x00 */ s8 status;
/* 0x01 */ s8 delay;
/* 0x02 */ s8 medium;
@ -790,7 +790,7 @@ typedef struct {
/* 0x40 */ OSIoMesg ioMesg;
} AudioAsyncLoad; // size = 0x58
typedef struct {
typedef struct AudioSlowLoad {
/* 0x00 */ u8 medium;
/* 0x01 */ u8 seqOrFontId;
/* 0x02 */ u16 instId;
@ -807,7 +807,7 @@ typedef struct {
/* 0x4C */ OSIoMesg ioMesg;
} AudioSlowLoad; // size = 0x64
typedef struct {
typedef struct AudioTableEntry {
/* 0x00 */ u32 romAddr;
/* 0x04 */ u32 size;
/* 0x08 */ s8 medium;
@ -817,7 +817,7 @@ typedef struct {
/* 0x0E */ s16 shortData3;
} AudioTableEntry; // size = 0x10
typedef struct {
typedef struct AudioTable {
/* 0x00 */ s16 numEntries;
/* 0x02 */ s16 unkMediumParam;
/* 0x04 */ u32 romAddr;
@ -825,7 +825,7 @@ typedef struct {
/* 0x10 */ AudioTableEntry entries[1]; // (dynamic size)
} AudioTable; // size >= 0x20
typedef struct {
typedef struct SampleDma {
/* 0x00 */ u8* ramAddr;
/* 0x04 */ u32 devAddr;
/* 0x08 */ u16 sizeUnused;
@ -835,14 +835,14 @@ typedef struct {
/* 0x0E */ u8 ttl; // duration after which the DMA can be discarded
} SampleDma; // size = 0x10
typedef struct {
typedef struct AudioTask {
/* 0x00 */ OSTask task;
/* 0x40 */ OSMesgQueue* msgQueue;
/* 0x44 */ void* unk_44; // probably a message that gets unused.
/* 0x48 */ char unk_48[0x8];
} AudioTask; // size = 0x50
typedef struct {
typedef struct AudioContext {
/* 0x0000 */ char unk_0000;
/* 0x0001 */ s8 numSynthesisReverbs;
/* 0x0002 */ u16 unk_2; // reads from audio spec unk_14, never used, always set to 0x7FFF
@ -968,7 +968,7 @@ typedef struct {
/* 0x5C50 */ AudioCmd threadCmdBuf[0x100]; // Audio thread commands used to transfer audio requests from the graph thread to the audio thread
} AudioContext; // size = 0x6450
typedef struct {
typedef struct NoteSubAttributes {
/* 0x00 */ u8 reverbVol;
/* 0x01 */ u8 gain; // Increases volume by a multiplicative scaling factor. Represented as a UQ4.4 number
/* 0x02 */ u8 pan;
@ -981,12 +981,12 @@ typedef struct {
/* 0x16 */ u16 combFilterGain;
} NoteSubAttributes; // size = 0x18
typedef struct {
typedef struct TempoData {
/* 0x0 */ s16 unk_00; // set to 0x1C00, unused
/* 0x2 */ s16 seqTicksPerBeat;
} TempoData; // size = 0x4
typedef struct {
typedef struct AudioHeapInitSizes {
/* 0x00 */ u32 heapSize; // total number of bytes allocated to the audio heap. Must be <= the size of `gAudioHeap` (ideally about the same size)
/* 0x04 */ u32 initPoolSize; // The entire audio heap is split into two pools.
/* 0x08 */ u32 permanentPoolSize;

View file

@ -23,7 +23,7 @@ struct DynaPolyActor;
#define FUNC_80041EA4_STOP 8
#define FUNC_80041EA4_VOID_OUT 12
typedef struct {
typedef struct ScaleRotPos {
/* 0x00 */ Vec3f scale;
/* 0x0C */ Vec3s rot;
/* 0x14 */ Vec3f pos;
@ -66,7 +66,7 @@ typedef struct CollisionPoly {
/* 0x0E */ s16 dist; // Plane distance from origin along the normal
} CollisionPoly; // size = 0x10
typedef struct {
typedef struct BgCamInfo {
/* 0x0 */ u16 setting; // camera setting described by CameraSettingType enum
/* 0x2 */ s16 count; // only used when `bgCamFuncData` is a list of points used for crawlspaces
/* 0x4 */ Vec3s* bgCamFuncData; // s16 data grouped in threes (ex. Vec3s), is usually of type `BgCamFuncData`, but can be a list of points of type `Vec3s` for crawlspaces
@ -74,7 +74,7 @@ typedef struct {
// The structure used for all instances of s16 data from `BgCamInfo` with the exception of crawlspaces.
// See `Camera_Subj4` for Vec3s data usage in crawlspaces
typedef struct {
typedef struct BgCamFuncData {
/* 0x00 */ Vec3s pos;
/* 0x06 */ Vec3s rot;
/* 0x0C */ s16 fov;
@ -101,7 +101,7 @@ typedef struct {
(((room) & 0x3F) << 13) | \
(((setFlag19) & 1) << 19))
typedef struct {
typedef struct WaterBox {
/* 0x00 */ s16 xMin;
/* 0x02 */ s16 ySurface;
/* 0x04 */ s16 zMin;
@ -110,7 +110,7 @@ typedef struct {
/* 0x0C */ u32 properties;
} WaterBox; // size = 0x10
typedef enum {
typedef enum FloorType {
/* 0 */ FLOOR_TYPE_0,
/* 1 */ FLOOR_TYPE_1,
/* 2 */ FLOOR_TYPE_2,
@ -126,7 +126,7 @@ typedef enum {
/* 12 */ FLOOR_TYPE_12
} FloorType;
typedef enum {
typedef enum WallType {
/* 0 */ WALL_TYPE_0,
/* 1 */ WALL_TYPE_1,
/* 2 */ WALL_TYPE_2,
@ -152,7 +152,7 @@ typedef enum {
#define WALL_FLAG_6 (1 << 6)
#define WALL_FLAG_CRAWLSPACE (WALL_FLAG_CRAWLSPACE_1 | WALL_FLAG_CRAWLSPACE_2)
typedef enum {
typedef enum FloorProperty {
/* 0 */ FLOOR_PROPERTY_0,
/* 5 */ FLOOR_PROPERTY_5 = 5,
/* 6 */ FLOOR_PROPERTY_6,
@ -163,7 +163,7 @@ typedef enum {
/* 12 */ FLOOR_PROPERTY_12
} FloorProperty;
typedef enum {
typedef enum SurfaceSfxOffset {
/* 0 */ SURFACE_SFX_OFFSET_DIRT,
/* 1 */ SURFACE_SFX_OFFSET_SAND,
/* 2 */ SURFACE_SFX_OFFSET_STONE,
@ -182,7 +182,7 @@ typedef enum {
/* 15 */ SURFACE_SFX_OFFSET_ICE
} SurfaceSfxOffset;
typedef enum {
typedef enum SurfaceMaterial {
/* 0 */ SURFACE_MATERIAL_DIRT,
/* 1 */ SURFACE_MATERIAL_SAND,
/* 2 */ SURFACE_MATERIAL_STONE,
@ -200,13 +200,13 @@ typedef enum {
/* 14 */ SURFACE_MATERIAL_MAX
} SurfaceMaterial;
typedef enum {
typedef enum FloorEffect {
/* 0 */ FLOOR_EFFECT_0,
/* 1 */ FLOOR_EFFECT_1,
/* 2 */ FLOOR_EFFECT_2
} FloorEffect;
typedef enum {
typedef enum ConveyorSpeed {
/* 0 */ CONVEYOR_SPEED_DISABLED,
/* 1 */ CONVEYOR_SPEED_SLOW,
/* 2 */ CONVEYOR_SPEED_MEDIUM,
@ -237,11 +237,11 @@ typedef enum {
(((conveyorDirection) & 0x3F) << 21) | \
(((unk27) & 1) << 27))
typedef struct {
typedef struct SurfaceType {
u32 data[2];
} SurfaceType;
typedef struct {
typedef struct CollisionHeader {
/* 0x00 */ Vec3s minBounds; // minimum coordinates of poly bounding box
/* 0x06 */ Vec3s maxBounds; // maximum coordinates of poly bounding box
/* 0x0C */ u16 numVertices;
@ -254,16 +254,16 @@ typedef struct {
/* 0x28 */ WaterBox* waterBoxes;
} CollisionHeader; // original name: BGDataInfo
typedef struct {
typedef struct SSNode {
s16 polyId;
u16 next; // next SSNode index
} SSNode;
typedef struct {
typedef struct SSList {
u16 head; // first SSNode index
} SSList;
typedef struct {
typedef struct SSNodeList {
/* 0x00 */ u16 max; // original name: short_slist_node_size
/* 0x02 */ u16 count; // original name: short_slist_node_last_index
/* 0x04 */ SSNode* tbl; // original name: short_slist_node_tbl
@ -271,26 +271,26 @@ typedef struct {
// bg check, and set to 1 if that poly has already been tested.
} SSNodeList;
typedef struct {
typedef struct DynaSSNodeList {
SSNode* tbl;
s32 count;
s32 max;
} DynaSSNodeList;
typedef struct {
typedef struct StaticLookup {
SSList floor;
SSList wall;
SSList ceiling;
} StaticLookup;
typedef struct {
typedef struct DynaLookup {
u16 polyStartIndex;
SSList ceiling;
SSList wall;
SSList floor;
} DynaLookup;
typedef struct {
typedef struct BgActor {
/* 0x00 */ struct Actor* actor;
/* 0x04 */ CollisionHeader* colHeader;
/* 0x08 */ DynaLookup dynaLookup;
@ -307,7 +307,7 @@ typedef struct {
#define BGACTOR_COLLISION_DISABLED (1 << 2) // The collision of the bgActor is disabled
#define BGACTOR_CEILING_COLLISION_DISABLED (1 << 3) // The ceilings in the collision of the bgActor are ignored
typedef struct {
typedef struct DynaCollisionContext {
/* 0x0000 */ u8 bitFlag;
/* 0x0004 */ BgActor bgActors[BG_ACTOR_MAX];
/* 0x138C */ u16 bgActorFlags[BG_ACTOR_MAX];
@ -332,7 +332,7 @@ typedef struct CollisionContext {
/* 0x1460 */ u32 memSize; // Size of all allocated memory plus CollisionContext
} CollisionContext; // size = 0x1464
typedef struct {
typedef struct DynaRaycastDown {
/* 0x00 */ struct PlayState* play;
/* 0x04 */ struct CollisionContext* colCtx;
/* 0x08 */ u16 xpFlags;
@ -347,7 +347,7 @@ typedef struct {
/* 0x2C */ SSList* ssList;
} DynaRaycastDown;
typedef struct {
typedef struct DynaLineTest {
/* 0x00 */ struct CollisionContext* colCtx;
/* 0x04 */ u16 xpFlags;
/* 0x08 */ DynaCollisionContext* dyna;

View file

@ -133,7 +133,7 @@
struct Actor;
struct CollisionPoly;
typedef enum {
typedef enum CameraSettingType {
/* 0x00 */ CAM_SET_NONE,
/* 0x01 */ CAM_SET_NORMAL0,
/* 0x02 */ CAM_SET_NORMAL1,
@ -203,7 +203,7 @@ typedef enum {
/* 0x42 */ CAM_SET_MAX
} CameraSettingType;
typedef enum {
typedef enum CameraModeType {
/* 0x00 */ CAM_MODE_NORMAL,
/* 0x01 */ CAM_MODE_Z_PARALLEL, // Holding Z but with no target, keeps the camera aligned
/* 0x02 */ CAM_MODE_Z_TARGET_FRIENDLY,
@ -228,7 +228,7 @@ typedef enum {
/* 0x15 */ CAM_MODE_MAX
} CameraModeType;
typedef enum {
typedef enum CameraFuncType {
/* 0x00 */ CAM_FUNC_NONE,
/* 0x01 */ CAM_FUNC_NORM0,
/* 0x02 */ CAM_FUNC_NORM1,
@ -303,7 +303,7 @@ typedef enum {
/* 0x47 */ CAM_FUNC_MAX
} CameraFuncType;
typedef enum {
typedef enum CameraDataType {
/* 0x00 */ CAM_DATA_Y_OFFSET,
/* 0x01 */ CAM_DATA_EYE_DIST,
/* 0x02 */ CAM_DATA_EYE_DIST_NEXT,
@ -337,7 +337,7 @@ typedef enum {
#define CAM_FUNCDATA_INTERFACE_FIELD(interfaceField) \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct SwingAnimation {
/* 0x00 */ Vec3f collisionClosePoint;
/* 0x0C */ struct CollisionPoly* atEyePoly;
/* 0x10 */ f32 swingUpdateRate;
@ -347,7 +347,7 @@ typedef struct {
/* 0x1A */ s16 swingUpdateRateTimer;
} SwingAnimation; // size = 0x1C
typedef struct {
typedef struct Normal1ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distMin;
/* 0x08 */ f32 distMax;
@ -360,7 +360,7 @@ typedef struct {
/* 0x22 */ s16 interfaceField;
} Normal1ReadOnlyData; // size = 0x24
typedef struct {
typedef struct Normal1ReadWriteData {
/* 0x00 */ SwingAnimation swing;
/* 0x1C */ f32 yOffset;
/* 0x20 */ f32 unk_20;
@ -370,7 +370,7 @@ typedef struct {
/* 0x2A */ s16 startSwingTimer;
} Normal1ReadWriteData; // size = 0x2C
typedef struct {
typedef struct Normal1 {
/* 0x00 */ Normal1ReadOnlyData roData;
/* 0x24 */ Normal1ReadWriteData rwData;
} Normal1; // size = 0x50
@ -406,7 +406,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Normal2ReadOnlyData {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
@ -418,7 +418,7 @@ typedef struct {
/* 0x1E */ s16 interfaceField;
} Normal2ReadOnlyData; // size = 0x20
typedef struct {
typedef struct Normal2ReadWriteData {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ Vec3f unk_0C;
/* 0x18 */ f32 unk_18;
@ -429,7 +429,7 @@ typedef struct {
/* 0x28 */ s16 unk_28;
} Normal2ReadWriteData; // size = 0x2C
typedef struct {
typedef struct Normal2 {
/* 0x00 */ Normal2ReadOnlyData roData;
/* 0x20 */ Normal2ReadWriteData rwData;
} Normal2; // size = 0x4C
@ -450,7 +450,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Normal3ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distMin;
/* 0x08 */ f32 distMax;
@ -462,7 +462,7 @@ typedef struct {
/* 0x1E */ s16 interfaceField;
} Normal3ReadOnlyData; // size = 0x20
typedef struct {
typedef struct Normal3ReadWriteData {
/* 0x00 */ SwingAnimation swing;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
@ -472,7 +472,7 @@ typedef struct {
/* 0x2A */ s16 distTimer;
} Normal3ReadWriteData; // size = 0x2C
typedef struct {
typedef struct Normal3 {
/* 0x00 */ Normal3ReadOnlyData roData;
/* 0x20 */ Normal3ReadWriteData rwData;
} Normal3; // size = 0x4C
@ -488,7 +488,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Parallel1ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distTarget;
/* 0x08 */ f32 unk_08;
@ -502,7 +502,7 @@ typedef struct {
/* 0x24 */ s16 interfaceField;
} Parallel1ReadOnlyData; // size = 0x28
typedef struct {
typedef struct Parallel1ReadWriteData {
/* 0x00 */ Vec3f unk_00;
/* 0x0C */ f32 yTarget;
/* 0x10 */ s16 unk_10;
@ -512,7 +512,7 @@ typedef struct {
/* 0x18 */ s16 animTimer;
} Parallel1ReadWriteData; // size = 0x1C
typedef struct {
typedef struct Parallel1 {
/* 0x00 */ Parallel1ReadOnlyData roData;
/* 0x28 */ Parallel1ReadWriteData rwData;
} Parallel1; // size = 0x44
@ -542,7 +542,7 @@ typedef struct {
#define PARALLEL3_FLAG_0 (1 << 0)
#define PARALLEL3_FLAG_1 (1 << 1)
typedef struct {
typedef struct Jump1ReadOnlyData {
/* 0x00 */ f32 atYOffset;
/* 0x04 */ f32 distMin;
/* 0x08 */ f32 distMax;
@ -553,7 +553,7 @@ typedef struct {
/* 0x1C */ s16 interfaceField;
} Jump1ReadOnlyData; // size = 0x20
typedef struct {
typedef struct Jump1ReadWriteData {
/* 0x00 */ SwingAnimation swing;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ f32 unk_20;
@ -561,7 +561,7 @@ typedef struct {
/* 0x26 */ s16 unk_26;
} Jump1ReadWriteData; // size = 0x28
typedef struct {
typedef struct Jump1 {
/* 0x00 */ Jump1ReadOnlyData roData;
/* 0x20 */ Jump1ReadWriteData rwData;
} Jump1; // size = 0x48
@ -579,7 +579,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Jump2ReadOnlyData {
/* 0x00 */ f32 atYOffset;
/* 0x04 */ f32 minDist;
/* 0x08 */ f32 maxDist;
@ -591,7 +591,7 @@ typedef struct {
/* 0x20 */ s16 interfaceField;
} Jump2ReadOnlyData; // size = 0x24
typedef struct {
typedef struct Jump2ReadWriteData {
/* 0x0 */ f32 floorY;
/* 0x4 */ s16 yawTarget;
/* 0x6 */ s16 initYawDiff; // unused, set but not read.
@ -600,7 +600,7 @@ typedef struct {
/* 0xC */ s16 animTimer;
} Jump2ReadWriteData; // size = 0x10
typedef struct {
typedef struct Jump2 {
/* 0x00 */ Jump2ReadOnlyData roData;
/* 0x24 */ Jump2ReadWriteData rwData;
} Jump2; // size = 0x34
@ -619,7 +619,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Jump3ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distMin;
/* 0x08 */ f32 distMax;
@ -632,14 +632,14 @@ typedef struct {
/* 0x22 */ s16 interfaceField;
} Jump3ReadOnlyData; // size = 0x24
typedef struct {
typedef struct Jump3ReadWriteData {
/* 0x00 */ SwingAnimation swing;
/* 0x1C */ f32 unk_1C;
/* 0x20 */ s16 animTimer;
/* 0x22 */ s16 mode;
} Jump3ReadWriteData; // size = 0x24
typedef struct {
typedef struct Jump3 {
/* 0x00 */ Jump3ReadOnlyData roData;
/* 0x24 */ Jump3ReadWriteData rwData;
} Jump3; // size = 0x48
@ -660,7 +660,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Battle1ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distance;
/* 0x08 */ f32 swingYawInitial;
@ -675,7 +675,7 @@ typedef struct {
/* 0x2C */ s16 interfaceField;
} Battle1ReadOnlyData; // size = 0x30
typedef struct {
typedef struct Battle1ReadWriteData {
/* 0x00 */ f32 initialEyeToAtDist;
/* 0x04 */ f32 roll;
/* 0x08 */ f32 yPosOffset;
@ -688,7 +688,7 @@ typedef struct {
/* 0x1C */ s16 chargeTimer;
} Battle1ReadWriteData; // size = 0x20
typedef struct {
typedef struct Battle1 {
/* 0x00 */ Battle1ReadOnlyData roData;
/* 0x30 */ Battle1ReadWriteData rwData;
} Battle1; // size = 0x50
@ -711,7 +711,7 @@ typedef struct {
{ groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \
{ groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE }
typedef struct {
typedef struct Battle4ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 rTarget;
/* 0x08 */ s16 pitchTarget;
@ -722,11 +722,11 @@ typedef struct {
/* 0x1A */ s16 unk_1A;
} Battle4ReadOnlyData; // size = 0x1C
typedef struct {
typedef struct Battle4ReadWriteData {
/* 0x0 */ s16 animTimer;
} Battle4ReadWriteData; // size = 0x4
typedef struct {
typedef struct Battle4 {
/* 0x00 */ Battle4ReadOnlyData roData;
/* 0x1C */ Battle4ReadWriteData rwData;
} Battle4; // size = 0x20
@ -740,7 +740,7 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct KeepOn1ReadOnlyData {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
@ -756,7 +756,7 @@ typedef struct {
/* 0x30 */ s16 interfaceField;
} KeepOn1ReadOnlyData; // size = 0x34
typedef struct {
typedef struct KeepOn1ReadWriteData {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
@ -767,7 +767,7 @@ typedef struct {
/* 0x16 */ s16 unk_16;
} KeepOn1ReadWriteData; // size = 0x18
typedef struct {
typedef struct KeepOn1 {
/* 0x00 */ KeepOn1ReadOnlyData roData;
/* 0x34 */ KeepOn1ReadWriteData rwData;
} KeepOn1; // size = 0x4C
@ -790,7 +790,7 @@ typedef struct {
{ groundYOffset, CAM_DATA_GROUND_Y_OFFSET }, \
{ groundAtLerpStepScale, CAM_DATA_GROUND_AT_LERP_STEP_SCALE }
typedef struct {
typedef struct KeepOn3ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 minDist;
/* 0x08 */ f32 maxDist;
@ -805,7 +805,7 @@ typedef struct {
/* 0x2A */ s16 interfaceField;
} KeepOn3ReadOnlyData; // size = 0x2C
typedef struct {
typedef struct KeepOn3ReadWriteData {
/* 0x00 */ f32 eyeToAtTargetR;
/* 0x08 */ f32 eyeToAtTargetYaw;
/* 0x04 */ f32 eyeToAtTargetPitch;
@ -814,7 +814,7 @@ typedef struct {
/* 0x1C */ s16 animTimer;
} KeepOn3ReadWriteData; // size = 0x20
typedef struct {
typedef struct KeepOn3 {
/* 0x00 */ KeepOn3ReadOnlyData roData;
/* 0x2C */ KeepOn3ReadWriteData rwData;
} KeepOn3; // size = 0x4C
@ -837,7 +837,7 @@ typedef struct {
{ yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct KeepOn4ReadOnlyData {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
@ -849,7 +849,7 @@ typedef struct {
/* 0x1E */ s16 unk_1E;
} KeepOn4ReadOnlyData; // size = 0x20
typedef struct {
typedef struct KeepOn4ReadWriteData {
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
@ -860,7 +860,7 @@ typedef struct {
/* 0x14 */ s16 unk_14;
} KeepOn4ReadWriteData; // size = 0x18
typedef struct {
typedef struct KeepOn4 {
/* 0x00 */ KeepOn4ReadOnlyData roData;
/* 0x20 */ KeepOn4ReadWriteData rwData;
} KeepOn4; // size = 0x38
@ -885,19 +885,19 @@ typedef struct {
{ yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \
{ unk_22, CAM_DATA_UNK_22 }
typedef struct {
typedef struct KeepOn0ReadOnlyData {
/* 0x00 */ f32 fovScale;
/* 0x04 */ f32 yawScale;
/* 0x08 */ s16 timerInit;
/* 0x0A */ s16 interfaceField;
} KeepOn0ReadOnlyData; // size = 0x0C
typedef struct {
typedef struct KeepOn0ReadWriteData {
/* 0x0 */ f32 fovTarget;
/* 0x4 */ s16 animTimer;
} KeepOn0ReadWriteData; // size = 0x8
typedef struct {
typedef struct KeepOn0 {
/* 0x00 */ KeepOn0ReadOnlyData roData;
/* 0x0C */ KeepOn0ReadWriteData rwData;
} KeepOn0; // size = 0x14
@ -908,19 +908,19 @@ typedef struct {
{ yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Fixed1ReadOnlyData {
/* 0x00 */ f32 unk_00; // seems to be unused?
/* 0x04 */ f32 lerpStep;
/* 0x08 */ f32 fov;
/* 0x0C */ s16 interfaceField;
} Fixed1ReadOnlyData; // size = 0x10
typedef struct {
typedef struct Fixed1ReadWriteData {
/* 0x00 */ PosRot eyePosRotTarget;
/* 0x14 */ s16 fov;
} Fixed1ReadWriteData; // size = 0x18
typedef struct {
typedef struct Fixed1 {
/* 0x00 */ Fixed1ReadOnlyData roData;
/* 0x10 */ Fixed1ReadWriteData rwData;
} Fixed1; // size = 0x28
@ -931,7 +931,7 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Fixed2ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 eyeStepScale;
/* 0x08 */ f32 posStepScale;
@ -939,12 +939,12 @@ typedef struct {
/* 0x10 */ s16 interfaceField;
} Fixed2ReadOnlyData; // size = 0x14
typedef struct {
typedef struct Fixed2ReadWriteData {
/* 0x0 */ Vec3f eye;
/* 0xC */ s16 fov;
} Fixed2ReadWriteData; // size = 0x10
typedef struct {
typedef struct Fixed2 {
/* 0x00 */ Fixed2ReadOnlyData roData;
/* 0x14 */ Fixed2ReadWriteData rwData;
} Fixed2; // size = 0x24
@ -959,23 +959,23 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Fixed3ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Fixed3ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Fixed3ReadWriteData {
/* 0x0 */ Vec3s rot;
/* 0x6 */ s16 fov;
/* 0x8 */ s16 updDirTimer;
/* 0xA */ s16 roomImageOverrideBgCamIndex;
} Fixed3ReadWriteData; // size = 0xC
typedef struct {
typedef struct Fixed3 {
/* 0x0 */ Fixed3ReadOnlyData roData;
/* 0x4 */ Fixed3ReadWriteData rwData;
} Fixed3; // size = 0x10
typedef struct {
typedef struct Fixed4ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 speedToEyePos;
/* 0x08 */ f32 followSpeed;
@ -983,12 +983,12 @@ typedef struct {
/* 0x10 */ s16 interfaceField;
} Fixed4ReadOnlyData; // size = 0x14
typedef struct {
typedef struct Fixed4ReadWriteData {
/* 0x0 */ Vec3f eyeTarget;
/* 0xC */ f32 followSpeed;
} Fixed4ReadWriteData; // size = 0x10
typedef struct {
typedef struct Fixed4 {
/* 0x00 */ Fixed4ReadOnlyData roData;
/* 0x14 */ Fixed4ReadWriteData rwData;
} Fixed4; // size = 0x24
@ -1002,7 +1002,7 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Subj3ReadOnlyData {
/* 0x00 */ f32 eyeNextYOffset;
/* 0x04 */ f32 eyeDist;
/* 0x08 */ f32 eyeNextDist;
@ -1012,14 +1012,14 @@ typedef struct {
/* 0x20 */ s16 interfaceField;
} Subj3ReadOnlyData; // size = 0x24
typedef struct {
typedef struct Subj3ReadWriteData {
/* 0x0 */ f32 r;
/* 0x4 */ s16 yaw;
/* 0x6 */ s16 pitch;
/* 0x8 */ s16 animTimer;
} Subj3ReadWriteData; // size = 0xC
typedef struct {
typedef struct Subj3 {
/* 0x00 */ Subj3ReadOnlyData roData;
/* 0x24 */ Subj3ReadWriteData rwData;
} Subj3; // size = 0x30
@ -1035,11 +1035,11 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Subj4ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Subj4ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Subj4ReadWriteData {
/* 0x00 */ InfiniteLine crawlspaceLine;
/* 0x18 */ Vec3f unk_18; // unused
/* 0x24 */ f32 xzSpeed;
@ -1050,7 +1050,7 @@ typedef struct {
/* 0x32 */ s16 zoomTimer;
} Subj4ReadWriteData; // size = 0x34
typedef struct {
typedef struct Subj4 {
/* 0x00 */ Subj4ReadOnlyData roData;
/* 0x04 */ Subj4ReadWriteData rwData;
} Subj4; // size = 0x38
@ -1063,20 +1063,20 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Data4ReadOnlyData {
/* 0x0 */ f32 yOffset;
/* 0x4 */ f32 fov;
/* 0x8 */ s16 interfaceField;
} Data4ReadOnlyData; // size = 0xC
typedef struct {
typedef struct Data4ReadWriteData {
/* 0x00 */ PosRot eyePosRot;
/* 0x14 */ char unk_14[0x8];
/* 0x1C */ s16 fov;
/* 0x1E */ s16 flags;
} Data4ReadWriteData; // size = 0x20
typedef struct {
typedef struct Data4 {
/* 0x00 */ Data4ReadOnlyData roData;
/* 0x0C */ Data4ReadWriteData rwData;
} Data4; // size = 0x2C
@ -1086,7 +1086,7 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Unique1ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distMin;
/* 0x08 */ f32 distMax;
@ -1097,14 +1097,14 @@ typedef struct {
/* 0x1A */ s16 interfaceField;
} Unique1ReadOnlyData; // size = 0x1C
typedef struct {
typedef struct Unique1ReadWriteData {
/* 0x0 */ f32 unk_00; // unused
/* 0x4 */ s16 yawTarget;
/* 0x6 */ s16 yawTargetAdj;
/* 0x8 */ s16 timer;
} Unique1ReadWriteData; // size = 0xC
typedef struct {
typedef struct Unique1 {
/* 0x00 */ Unique1ReadOnlyData roData;
/* 0x1C */ Unique1ReadWriteData rwData;
} Unique1; // size = 0x28
@ -1118,19 +1118,19 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Unique2ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 distTarget;
/* 0x08 */ f32 fovTarget;
/* 0x0C */ s16 interfaceField;
} Unique2ReadOnlyData; // size = 0x10
typedef struct {
typedef struct Unique2ReadWriteData {
/* 0x0 */ f32 unk_00;
/* 0x4 */ s16 unk_04;
} Unique2ReadWriteData; // size = 0x8
typedef struct {
typedef struct Unique2 {
/* 0x00 */ Unique2ReadOnlyData roData;
/* 0x10 */ Unique2ReadWriteData rwData;
} Unique2; // size = 0x18
@ -1145,7 +1145,7 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct DoorParams {
/* 0x0 */ struct Actor* doorActor;
/* 0x4 */ s16 bgCamIndex;
/* 0x6 */ s16 timer1;
@ -1153,18 +1153,18 @@ typedef struct {
/* 0xA */ s16 timer3;
} DoorParams; // size = 0xC
typedef struct {
typedef struct Unique3ReadOnlyData {
/* 0x0 */ f32 yOffset;
/* 0x4 */ f32 fov;
/* 0x8 */ s16 interfaceField;
} Unique3ReadOnlyData; // size = 0xC
typedef struct {
typedef struct Unique3ReadWriteData {
/* 0x0 */ f32 initialFov;
/* 0x4 */ f32 initialDist;
} Unique3ReadWriteData; // size = 0x8
typedef struct {
typedef struct Unique3 {
/* 0x00 */ Unique3ReadOnlyData roData;
/* 0x0C */ Unique3ReadWriteData rwData;
} Unique3; // size = 0x14
@ -1177,44 +1177,44 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Unique0ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Unique0ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Unique0ReadWriteData {
/* 0x00 */ Vec3f initalPos;
/* 0x0C */ s16 animTimer;
/* 0x10 */ InfiniteLine eyeAndDirection;
} Unique0ReadWriteData; // size = 0x28
typedef struct {
typedef struct Unique0 {
/* 0x00 */ Unique0ReadOnlyData roData;
/* 0x04 */ Unique0ReadWriteData rwData;
} Unique0; // size = 0x2C
#define UNIQUE0_FLAG_0 (1 << 0)
typedef struct {
typedef struct Unique6ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Unique6ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Unique6 {
/* 0x0 */ Unique6ReadOnlyData roData;
} Unique6; // size = 0x4
#define UNIQUE6_FLAG_0 (1 << 0)
typedef struct {
typedef struct Unique7ReadOnlyData {
/* 0x0 */ f32 fov;
/* 0x4 */ s16 interfaceField;
/* 0x6 */ s16 align;
} Unique7ReadOnlyData; // size = 0x8
typedef struct {
typedef struct Unique7ReadWriteData {
/* 0x0 */ Vec3s unk_00;
} Unique7ReadWriteData; // size = 0x8
typedef struct {
typedef struct Unique7 {
/* 0x00 */ Unique7ReadOnlyData roData;
/* 0x08 */ Unique7ReadWriteData rwData;
} Unique7; // size = 0x10
@ -1223,7 +1223,7 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef enum {
typedef enum OnePointCsAction {
/* 0x1 */ ONEPOINT_CS_ACTION_ID_1 = 1,
/* 0x2 */ ONEPOINT_CS_ACTION_ID_2,
/* 0x3 */ ONEPOINT_CS_ACTION_ID_3,
@ -1272,7 +1272,7 @@ typedef enum {
* 0x10: ? unused
* 0x20: focus on player
*/
typedef struct {
typedef struct OnePointCsFull {
/* 0x00 */ u8 actionFlags;
/* 0x01 */ u8 initField;
/* 0x02 */ s16 viewFlags;
@ -1284,16 +1284,16 @@ typedef struct {
/* 0x1C */ Vec3f eyeTargetInit;
} OnePointCsFull; // size = 0x28
typedef struct {
typedef struct OnePointCsInfo {
/* 0x0 */ s32 keyFrameCount;
/* 0x4 */ OnePointCsFull* keyFrames;
} OnePointCsInfo; // size = 0x8
typedef struct {
typedef struct Unique9ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Unique9ReadOnlyData; // size = 0x40
typedef struct {
typedef struct Unique9ReadWriteData {
/* 0x00 */ OnePointCsFull* curKeyFrame;
/* 0x04 */ Vec3f atTarget;
/* 0x10 */ Vec3f eyeTarget;
@ -1307,40 +1307,40 @@ typedef struct {
/* 0x3C */ s16 keyFrameTimer;
} Unique9ReadWriteData; // size = 0x40
typedef struct {
typedef struct Unique9 {
/* 0x00 */ OnePointCsInfo csInfo;
/* 0x08 */ Unique9ReadOnlyData roData;
/* 0x0C */ Unique9ReadWriteData rwData;
} Unique9; // size = 0x4C
typedef struct {
typedef struct Demo1ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Demo1ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Demo1ReadWriteData {
/* 0x0 */ f32 curFrame;
/* 0x4 */ s16 keyframe;
} Demo1ReadWriteData; // size = 0x14
typedef struct {
typedef struct Demo1 {
/* 0x00 */ Demo1ReadOnlyData roData;
/* 0x04 */ Demo1ReadWriteData rwData;
} Demo1; // size = 0x18
typedef struct {
typedef struct Demo3ReadOnlyData {
/* 0x0 */ f32 fov;
/* 0x4 */ f32 unk_04; // unused
/* 0x8 */ s16 interfaceField;
} Demo3ReadOnlyData; // size = 0xC
typedef struct {
typedef struct Demo3ReadWriteData {
/* 0x00 */ Vec3f initialAt;
/* 0x0C */ f32 unk_0C;
/* 0x10 */ s16 animFrame;
/* 0x12 */ s16 yawDir;
} Demo3ReadWriteData; // size = 0x14
typedef struct {
typedef struct Demo3 {
/* 0x00 */ Demo3ReadOnlyData roData;
/* 0x0C */ Demo3ReadWriteData rwData;
} Demo3; // size = 0x20
@ -1350,33 +1350,33 @@ typedef struct {
{ atLerpStepScale, CAM_DATA_AT_LERP_STEP_SCALE }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Demo6ReadOnlyData {
/* 0x0 */ s16 interfaceField;
/* 0x2 */ s16 unk_02;
} Demo6ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Demo6ReadWriteData {
/* 0x0 */ s16 animTimer;
/* 0x4 */ Vec3f atTarget;
} Demo6ReadWriteData; // size = 0x10
typedef struct {
typedef struct Demo6 {
/* 0x00 */ Demo6ReadOnlyData roData;
/* 0x04 */ Demo6ReadWriteData rwData;
} Demo6; // size = 0x14
typedef struct {
typedef struct OnePointCamData {
/* 0x0 */ CutsceneCameraPoint* atPoints;
/* 0x4 */ CutsceneCameraPoint* eyePoints;
/* 0x8 */ s16 actionParameters;
/* 0xA */ s16 initTimer;
} OnePointCamData; // size = 0xC
typedef struct {
typedef struct Demo9ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Demo9ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Demo9ReadWriteData {
/* 0x0 */ f32 curFrame;
/* 0x4 */ s16 keyframe;
/* 0x6 */ s16 doLERPAt;
@ -1384,7 +1384,7 @@ typedef struct {
/* 0xA */ s16 animTimer;
} Demo9ReadWriteData; // size = 0xC
typedef struct {
typedef struct Demo9 {
/* 0x00 */ OnePointCamData onePointCamData;
/* 0x0C */ Demo9ReadOnlyData roData;
/* 0x10 */ Demo9ReadWriteData rwData;
@ -1393,12 +1393,12 @@ typedef struct {
#define DEMO9_FLAG_1 (1 << 1)
#define DEMO9_FLAG_4 (1 << 4)
typedef struct {
typedef struct Special0ReadOnlyData {
/* 0x0 */ f32 lerpAtScale;
/* 0x4 */ s16 interfaceField;
} Special0ReadOnlyData; // size = 0x8
typedef struct {
typedef struct Special0 {
/* 0x0 */ Special0ReadOnlyData roData;
} Special0; // size = 0x8
@ -1406,15 +1406,15 @@ typedef struct {
{ yawUpdateRateTarget, CAM_DATA_YAW_UPDATE_RATE_TARGET }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Special4ReadWriteData {
/* 0x0 */ s16 initalTimer;
} Special4ReadWriteData; // size = 0x4
typedef struct {
typedef struct Special4 {
/* 0x0 */ Special4ReadWriteData rwData;
} Special4; // size = 0x4
typedef struct {
typedef struct Special5ReadOnlyData {
/* 0x00 */ f32 yOffset;
/* 0x04 */ f32 eyeDist;
/* 0x08 */ f32 minDistForRot;
@ -1426,11 +1426,11 @@ typedef struct {
/* 0x1A */ s16 unk_1A;
} Special5ReadOnlyData; // size = 0x1C
typedef struct {
typedef struct Special5ReadWriteData {
/* 0x0 */ s16 animTimer;
} Special5ReadWriteData; // size = 0x4
typedef struct {
typedef struct Special5 {
/* 0x00 */ Special5ReadOnlyData roData;
/* 0x1C */ Special5ReadWriteData rwData;
} Special5; // size = 0x20
@ -1456,40 +1456,40 @@ typedef struct {
{ unk_22, CAM_DATA_UNK_22 }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef struct {
typedef struct Special7ReadWriteData {
/* 0x0 */ s16 index; // See `CamElevatorPlatform`
} Special7ReadWriteData; // size = 0x4
typedef struct {
typedef struct Special7 {
/* 0x0 */ Special7ReadWriteData rwData;
} Special7; // size = 0x4
typedef struct {
typedef struct Special6ReadOnlyData {
/* 0x0 */ s16 interfaceField;
} Special6ReadOnlyData; // size = 0x4
typedef struct {
typedef struct Special6ReadWriteData {
/* 0x0 */ f32 initalPlayerY;
/* 0x4 */ s16 animTimer;
} Special6ReadWriteData; // size = 0x8
typedef struct {
typedef struct Special6 {
/* 0x0 */ Special6ReadOnlyData roData;
/* 0x4 */ Special6ReadWriteData rwData;
} Special6; // size = 0xC
typedef struct {
typedef struct Special9ReadOnlyData {
/* 0x0 */ f32 yOffset;
/* 0x4 */ f32 unk_04;
/* 0x8 */ s16 interfaceField;
/* 0xA */ s16 unk_0A;
} Special9ReadOnlyData; // size = 0xC
typedef struct {
typedef struct Special9ReadWriteData {
/* 0x0 */ s16 targetYaw;
} Special9ReadWriteData; // size = 0x4
typedef struct {
typedef struct Special9 {
/* 0x00 */ Special9ReadOnlyData roData;
/* 0x0C */ Special9ReadWriteData rwData;
} Special9; // size = 0x10
@ -1503,7 +1503,7 @@ typedef struct {
{ fov, CAM_DATA_FOV }, \
{ interfaceField, CAM_DATA_INTERFACE_FIELD }
typedef union {
typedef union CamParamData {
Normal1 norm1;
Normal2 norm2;
Normal3 norm3;
@ -1548,7 +1548,7 @@ typedef union {
};
} CamParamData; // size = 0x50
typedef struct {
typedef struct CamColChk {
/* 0x00 */ Vec3f pos;
/* 0x0C */ Vec3f norm;
/* 0x18 */ struct CollisionPoly* poly;
@ -1623,7 +1623,7 @@ typedef struct Camera {
* Debug Camera
*/
typedef struct {
typedef struct DebugCamSub {
/* 0x0000 */ s16 mode;
/* 0x0002 */ s16 nFrames;
/* 0x0004 */ s16 nPoints;
@ -1640,7 +1640,7 @@ typedef struct {
/* 0x104A */ Vec3s unk_104A;
} DebugCamSub; // size = 0x1050
typedef struct {
typedef struct DebugCam {
/* 0x00 */ s32 unk_00;
/* 0x04 */ Vec3f at;
/* 0x10 */ Vec3f eye;
@ -1663,7 +1663,7 @@ typedef struct {
/* 0x7C */ DebugCamSub sub;
} DebugCam; // size = 0x10CC
typedef struct {
typedef struct DebugCamCut {
/* 0x00 */ char letter;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 mode;
@ -1673,7 +1673,7 @@ typedef struct {
/* 0x0E */ s16 nPoints;
} DebugCamCut; // size = 0x10
typedef struct {
typedef struct DebugCamAnim {
/* 0x00 */ f32 curFrame;
/* 0x04 */ f32 unk_04; // frame count?
/* 0x08 */ s16 keyframe;
@ -1685,7 +1685,7 @@ typedef struct {
/* 0x2C */ f32 fov;
} DebugCamAnim; // size = 0x30
typedef enum {
typedef enum DebugCamTextColor {
/* 0 */ DEBUG_CAM_TEXT_YELLOW,
/* 1 */ DEBUG_CAM_TEXT_PEACH,
/* 2 */ DEBUG_CAM_TEXT_BROWN,

View file

@ -12,7 +12,7 @@ struct Actor;
* Bases for all shapes of colliders
*/
typedef enum {
typedef enum ColliderType {
/* 0 */ COLTYPE_HIT0, // Blue blood, white hitmark
/* 1 */ COLTYPE_HIT1, // No blood, dust hitmark
/* 2 */ COLTYPE_HIT2, // Green blood, dust hitmark
@ -29,7 +29,7 @@ typedef enum {
/* 13 */ COLTYPE_TREE
} ColliderType;
typedef enum {
typedef enum ColliderShape {
/* 0 */ COLSHAPE_JNTSPH,
/* 1 */ COLSHAPE_CYLINDER,
/* 2 */ COLSHAPE_TRIS,
@ -37,7 +37,7 @@ typedef enum {
/* 4 */ COLSHAPE_MAX
} ColliderShape;
typedef struct {
typedef struct Collider {
/* 0x00 */ struct Actor* actor; // Attached actor
/* 0x04 */ struct Actor* at; // Actor attached to what it collided with as an AT collider.
/* 0x08 */ struct Actor* ac; // Actor attached to what it collided with as an AC collider.
@ -50,7 +50,7 @@ typedef struct {
/* 0x15 */ u8 shape; // See `ColliderShape` enum
} Collider; // size = 0x18
typedef struct {
typedef struct ColliderInit {
/* 0x00 */ u8 colType;
/* 0x01 */ u8 atFlags;
/* 0x02 */ u8 acFlags;
@ -59,7 +59,7 @@ typedef struct {
/* 0x05 */ u8 shape;
} ColliderInit; // size = 0x06
typedef struct {
typedef struct ColliderInitType1 {
/* 0x00 */ u8 colType;
/* 0x01 */ u8 atFlags;
/* 0x02 */ u8 acFlags;
@ -67,7 +67,7 @@ typedef struct {
/* 0x04 */ u8 shape;
} ColliderInitType1; // size = 0x05
typedef struct {
typedef struct ColliderInitToActor {
/* 0x00 */ struct Actor* actor;
/* 0x04 */ u8 atFlags;
/* 0x05 */ u8 acFlags;
@ -75,20 +75,20 @@ typedef struct {
/* 0x07 */ u8 shape;
} ColliderInitToActor; // size = 0x08
typedef struct {
typedef struct ColliderElementDamageInfoAT {
/* 0x00 */ u32 dmgFlags; // Damage types dealt by this collider element as AT.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 damage; // Damage
} ColliderElementDamageInfoAT; // size = 0x08
typedef struct {
typedef struct ColliderElementDamageInfoAC {
/* 0x00 */ u32 dmgFlags; // Damage types that may affect this collider element as AC.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
/* 0x06 */ Vec3s hitPos; // Point of contact
} ColliderElementDamageInfoAC; // size = 0x0C
typedef struct {
typedef struct ColliderElementDamageInfoACInit {
/* 0x00 */ u32 dmgFlags; // Damage types that may affect this collider element as AC.
/* 0x04 */ u8 effect; // Damage Effect (Knockback, Fire, etc.)
/* 0x05 */ u8 defense; // Damage Resistance
@ -100,7 +100,7 @@ typedef struct {
* are == or !=. Will probably need more actors decomped to truly
* understand what this is.
*/
typedef enum {
typedef enum ElementType {
/* 0 */ ELEMTYPE_UNK0,
/* 1 */ ELEMTYPE_UNK1,
/* 2 */ ELEMTYPE_UNK2,
@ -124,7 +124,7 @@ typedef struct ColliderElement {
/* 0x24 */ struct ColliderElement* acHitElem; // element that hit the AC collider
} ColliderElement; // size = 0x28
typedef struct {
typedef struct ColliderElementInit {
/* 0x00 */ u8 elemType; // Affects sfx reaction when attacked by Link and hookability. Full purpose unknown.
/* 0x04 */ ColliderElementDamageInfoAT atDmgInfo; // Damage properties when acting as an AT collider
/* 0x0C */ ColliderElementDamageInfoACInit acDmgInfo; // Damage properties when acting as an AC collider
@ -139,19 +139,19 @@ typedef struct {
// collider structs
typedef struct {
typedef struct ColliderJntSphElementDim {
/* 0x00 */ Sphere16 modelSphere; // model space sphere
/* 0x08 */ Sphere16 worldSphere; // world space sphere
/* 0x10 */ f32 scale; // world space sphere = model * scale * 0.01
/* 0x14 */ u8 limb; // attached limb
} ColliderJntSphElementDim; // size = 0x18
typedef struct {
typedef struct ColliderJntSphElement {
/* 0x00 */ ColliderElement base;
/* 0x28 */ ColliderJntSphElementDim dim;
} ColliderJntSphElement; // size = 0x40
typedef struct {
typedef struct ColliderJntSph {
/* 0x00 */ Collider base;
/* 0x18 */ s32 count;
/* 0x1C */ ColliderJntSphElement* elements;
@ -159,30 +159,30 @@ typedef struct {
// init data structs
typedef struct {
typedef struct ColliderJntSphElementDimInit {
/* 0x00 */ u8 limb; // attached limb
/* 0x02 */ Sphere16 modelSphere; // model space sphere
/* 0x0A */ s16 scale; // world space sphere = model * scale * 0.01
} ColliderJntSphElementDimInit; // size = 0x0C
typedef struct {
typedef struct ColliderJntSphElementInit {
/* 0x00 */ ColliderElementInit base;
/* 0x18 */ ColliderJntSphElementDimInit dim;
} ColliderJntSphElementInit; // size = 0x24
typedef struct {
typedef struct ColliderJntSphInit {
/* 0x00 */ ColliderInit base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderJntSphElementInit* elements;
} ColliderJntSphInit; // size = 0x10
typedef struct {
typedef struct ColliderJntSphInitType1 {
/* 0x00 */ ColliderInitType1 base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderJntSphElementInit* elements;
} ColliderJntSphInitType1; // size = 0x10
typedef struct {
typedef struct ColliderJntSphInitToActor {
/* 0x00 */ ColliderInitToActor base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderJntSphElementInit* elements;
@ -194,7 +194,7 @@ typedef struct {
// collider structs
typedef struct {
typedef struct ColliderCylinder {
/* 0x00 */ Collider base;
/* 0x18 */ ColliderElement elem;
/* 0x40 */ Cylinder16 dim;
@ -202,19 +202,19 @@ typedef struct {
// init data structs
typedef struct {
typedef struct ColliderCylinderInit {
/* 0x00 */ ColliderInit base;
/* 0x08 */ ColliderElementInit elem;
/* 0x20 */ Cylinder16 dim;
} ColliderCylinderInit; // size = 0x2C
typedef struct {
typedef struct ColliderCylinderInitType1 {
/* 0x00 */ ColliderInitType1 base;
/* 0x08 */ ColliderElementInit elem;
/* 0x20 */ Cylinder16 dim;
} ColliderCylinderInitType1; // size = 0x2C
typedef struct {
typedef struct ColliderCylinderInitToActor {
/* 0x00 */ ColliderInitToActor base;
/* 0x08 */ ColliderElementInit elem;
/* 0x20 */ Cylinder16 dim;
@ -226,12 +226,12 @@ typedef struct {
// collider structs
typedef struct {
typedef struct ColliderTrisElement {
/* 0x00 */ ColliderElement base;
/* 0x28 */ TriNorm dim;
} ColliderTrisElement; // size = 0x5C
typedef struct {
typedef struct ColliderTris {
/* 0x00 */ Collider base;
/* 0x18 */ s32 count;
/* 0x1C */ ColliderTrisElement* elements;
@ -239,22 +239,22 @@ typedef struct {
// init data structs
typedef struct {
typedef struct ColliderTrisElementDimInit {
/* 0x00 */ Vec3f vtx[3];
} ColliderTrisElementDimInit; // size = 0x24
typedef struct {
typedef struct ColliderTrisElementInit {
/* 0x00 */ ColliderElementInit base;
/* 0x18 */ ColliderTrisElementDimInit dim;
} ColliderTrisElementInit; // size = 0x3C
typedef struct {
typedef struct ColliderTrisInit {
/* 0x00 */ ColliderInit base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderTrisElementInit* elements;
} ColliderTrisInit; // size = 0x10
typedef struct {
typedef struct ColliderTrisInitType1 {
/* 0x00 */ ColliderInitType1 base;
/* 0x08 */ s32 count;
/* 0x0C */ ColliderTrisElementInit* elements;
@ -266,14 +266,14 @@ typedef struct {
// collider structs
typedef struct {
typedef struct ColliderQuadDim {
/* 0x00 */ Vec3f quad[4];
/* 0x30 */ Vec3s dcMid; // midpoint of vectors d, c
/* 0x36 */ Vec3s baMid; // midpoint of vectors b, a
/* 0x3C */ f32 acDistSq; // distance to nearest AC collision this frame, squared.
} ColliderQuadDim; // size = 0x40
typedef struct {
typedef struct ColliderQuad {
/* 0x00 */ Collider base;
/* 0x18 */ ColliderElement elem;
/* 0x40 */ ColliderQuadDim dim;
@ -281,17 +281,17 @@ typedef struct {
// init data structs
typedef struct {
typedef struct ColliderQuadDimInit {
/* 0x00 */ Vec3f quad[4];
} ColliderQuadDimInit; // size = 0x30
typedef struct {
typedef struct ColliderQuadInit {
/* 0x00 */ ColliderInit base;
/* 0x08 */ ColliderElementInit elem;
/* 0x20 */ ColliderQuadDimInit dim;
} ColliderQuadInit; // size = 0x50
typedef struct {
typedef struct ColliderQuadInitType1 {
/* 0x00 */ ColliderInitType1 base;
/* 0x08 */ ColliderElementInit elem;
/* 0x20 */ ColliderQuadDimInit dim;
@ -301,7 +301,7 @@ typedef struct {
* Line collider
*/
typedef struct {
typedef struct OcLine {
/* 0x00 */ Linef line;
/* 0x18 */ u16 ocFlags;
} OcLine; // size = 0x1C

View file

@ -6,7 +6,7 @@
struct PlayState;
typedef struct {
typedef struct CurveInterpKnot {
/* 0x0 */ u16 flags; // Only the bottom two bits are used, although others are set in objects
/* 0x2 */ s16 abscissa; // knot input value
/* 0x4 */ s16 leftGradient; // left derivative at the point
@ -14,7 +14,7 @@ typedef struct {
/* 0x8 */ f32 ordinate; // output value
} CurveInterpKnot; // size = 0xC
typedef struct {
typedef struct CurveAnimationHeader {
/* 0x0 */ u8* knotCounts;
/* 0x4 */ CurveInterpKnot* interpolationData;
/* 0x8 */ s16* constantData;
@ -22,18 +22,18 @@ typedef struct {
/* 0xE */ s16 frameCount; // Not used, inferred from use in objects
} CurveAnimationHeader; // size = 0x10
typedef struct {
typedef struct SkelCurveLimb {
/* 0x0 */ u8 child;
/* 0x1 */ u8 sibling;
/* 0x4 */ Gfx* dList[2];
} SkelCurveLimb; // size = 0xC
typedef struct {
typedef struct CurveSkeletonHeader {
/* 0x0 */ SkelCurveLimb** limbs;
/* 0x4 */ u8 limbCount;
} CurveSkeletonHeader; // size = 0x8
typedef struct {
typedef struct SkelCurve {
/* 0x00 */ u8 limbCount;
/* 0x04 */ SkelCurveLimb** skeleton;
/* 0x08 */ CurveAnimationHeader* animation;

View file

@ -11,7 +11,7 @@ typedef union CutsceneData {
s8 b[4];
} CutsceneData;
typedef enum {
typedef enum CutsceneState {
/* 0 */ CS_STATE_IDLE,
/* 1 */ CS_STATE_START,
/* 2 */ CS_STATE_RUN,
@ -19,7 +19,7 @@ typedef enum {
/* 4 */ CS_STATE_RUN_UNSTOPPABLE
} CutsceneState;
typedef enum {
typedef enum CutsceneCmd {
/* 0x0001 */ CS_CMD_CAM_EYE_SPLINE = 0x01,
/* 0x0002 */ CS_CMD_CAM_AT_SPLINE,
/* 0x0003 */ CS_CMD_MISC,
@ -151,7 +151,7 @@ typedef enum {
/* 0xFFFF */ CS_CMD_END = 0xFFFF
} CutsceneCmd;
typedef enum {
typedef enum CutsceneMiscType {
/* 0x00 */ CS_MISC_UNIMPLEMENTED_0,
/* 0x01 */ CS_MISC_RAIN,
/* 0x02 */ CS_MISC_LIGHTNING,
@ -190,7 +190,7 @@ typedef enum {
/* 0x23 */ CS_MISC_LONG_SCARECROW_SONG
} CutsceneMiscType;
typedef enum {
typedef enum CutsceneTextType {
/* 0x00 */ CS_TEXT_NORMAL,
/* 0x01 */ CS_TEXT_CHOICE,
/* 0x02 */ CS_TEXT_OCARINA_ACTION,
@ -198,12 +198,12 @@ typedef enum {
/* 0x04 */ CS_TEXT_ZORA_SAPPHIRE // use `altTextId1` in the sapphire cutscene if ruby is already obtained
} CutsceneTextType;
typedef enum {
typedef enum CutsceneFadeOutSeqPlayer {
/* 0x03 */ CS_FADE_OUT_FANFARE = 3,
/* 0x04 */ CS_FADE_OUT_BGM_MAIN
} CutsceneFadeOutSeqPlayer;
typedef enum {
typedef enum CutsceneTransitionType {
/* 0x01 */ CS_TRANS_GRAY_FILL_IN = 1, // has hardcoded sounds for some scenes
/* 0x02 */ CS_TRANS_BLUE_FILL_IN,
/* 0x03 */ CS_TRANS_RED_FILL_OUT,
@ -219,7 +219,7 @@ typedef enum {
/* 0x0D */ CS_TRANS_BLACK_FILL_IN_FROM_HALF
} CutsceneTransitionType;
typedef enum {
typedef enum CutsceneDestination {
/* 0x00 */ CS_DEST_UNIMPLEMENTED_0,
/* 0x01 */ CS_DEST_CUTSCENE_MAP_GANON_HORSE,
/* 0x02 */ CS_DEST_CUTSCENE_MAP_THREE_GODDESSES,
@ -342,7 +342,7 @@ typedef enum {
/* 0x77 */ CS_DEST_ZELDAS_COURTYARD_RECEIVE_LETTER
} CutsceneDestination;
typedef union {
typedef union CsCmdCam {
struct {
/* 0x00 */ u16 unused0;
/* 0x02 */ u16 startFrame;
@ -352,7 +352,7 @@ typedef union {
} CsCmdCam; // size = 0x8
typedef union {
typedef union CsCmdMisc {
struct {
/* 0x00 */ u16 type;
/* 0x02 */ u16 startFrame;
@ -361,7 +361,7 @@ typedef union {
s32 _words[12];
} CsCmdMisc; // size = 0x30
typedef union {
typedef union CsCmdLightSetting {
struct {
/* 0x00 */ u8 unused0;
/* 0x01 */ u8 settingPlusOne;
@ -371,7 +371,7 @@ typedef union {
s32 _words[12];
} CsCmdLightSetting; // size = 0x30
typedef union {
typedef union CsCmdStartSeq {
struct {
/* 0x00 */ u8 unused0;
/* 0x01 */ u8 seqIdPlusOne;
@ -381,7 +381,7 @@ typedef union {
s32 _words[12];
} CsCmdStartSeq; // size = 0x30
typedef union {
typedef union CsCmdStopSeq {
struct {
/* 0x00 */ u8 unused0;
/* 0x01 */ u8 seqIdPlusOne;
@ -391,7 +391,7 @@ typedef union {
s32 _words[12];
} CsCmdStopSeq; // size = 0x30
typedef union {
typedef union CsCmdFadeOutSeq {
struct {
/* 0x00 */ u16 seqPlayer;
/* 0x02 */ u16 startFrame;
@ -400,7 +400,7 @@ typedef union {
s32 _words[12];
} CsCmdFadeOutSeq; // size = 0x30
typedef union {
typedef union CsCmdRumble {
struct {
/* 0x00 */ u16 unused0;
/* 0x02 */ u16 startFrame;
@ -412,7 +412,7 @@ typedef union {
s32 _words[3];
} CsCmdRumble; // size = 0xC
typedef union {
typedef union CsCmdTime {
struct {
/* 0x00 */ u16 unused0;
/* 0x02 */ u16 startFrame;
@ -423,7 +423,7 @@ typedef union {
s32 _words[3];
} CsCmdTime; // size = 0xC
typedef union {
typedef union CsCmdDestination {
struct {
/* 0x00 */ u16 destination;
/* 0x02 */ u16 startFrame;
@ -432,7 +432,7 @@ typedef union {
s32 _words[2];
} CsCmdDestination; // size = 0x8
typedef union {
typedef union CsCmdText {
struct {
/* 0x00 */ u16 textId; // can also be an ocarina action for `CS_TEXT_OCARINA_ACTION`
/* 0x02 */ u16 startFrame;
@ -446,7 +446,7 @@ typedef union {
#define CS_TEXT_ID_NONE 0xFFFF
typedef union {
typedef union CsCmdTransition {
struct {
/* 0x00 */ u16 type;
/* 0x02 */ u16 startFrame;
@ -455,7 +455,7 @@ typedef union {
s32 _words[2];
} CsCmdTransition; // size = 0x8
typedef union {
typedef union CsCmdActorCue {
struct {
/* 0x00 */ u16 id; // "dousa"
/* 0x02 */ u16 startFrame;
@ -467,7 +467,7 @@ typedef union {
s32 _words[12];
} CsCmdActorCue; // size = 0x30
typedef union {
typedef union CutsceneCameraPoint {
struct {
/* 0x00 */ s8 continueFlag;
/* 0x01 */ s8 cameraRoll;
@ -483,20 +483,20 @@ typedef union {
#define CS_CAM_DATA_NOT_APPLIED 0xFFFF
typedef struct {
typedef struct CutsceneCameraDirection {
/* 0x00 */ Vec3f at;
/* 0x0C */ Vec3f eye;
/* 0x18 */ s16 roll;
/* 0x1A */ s16 fov;
} CutsceneCameraDirection; // size = 0x1C
typedef struct {
typedef struct CutsceneCameraMove {
/* 0x0 */ CutsceneCameraPoint* atPoints;
/* 0x4 */ CutsceneCameraPoint* eyePoints;
/* 0x8 */ s16 relativeToPlayer;
} CutsceneCameraMove; // size = 0xC
typedef struct {
typedef struct CutsceneContext {
/* 0x00 */ char unk_00[0x4];
/* 0x04 */ void* script;
/* 0x08 */ u8 state;

View file

@ -5,7 +5,7 @@
#include "alignment.h"
#include "romfile.h"
typedef struct {
typedef struct DmaRequest {
/* 0x00 */ uintptr_t vromAddr; // VROM address (source)
/* 0x04 */ void* dramAddr; // DRAM address (destination)
/* 0x08 */ size_t size; // File Transfer size
@ -16,7 +16,7 @@ typedef struct {
/* 0x1C */ OSMesg notifyMsg; // Completion notification message
} DmaRequest; // size = 0x20
typedef struct {
typedef struct DmaEntry {
/* 0x00 */ RomFile file;
/* 0x08 */ uintptr_t romStart;
/* 0x0C */ uintptr_t romEnd;

View file

@ -14,20 +14,20 @@ struct PlayState;
#define TOTAL_EFFECT_COUNT SPARK_COUNT + BLURE_COUNT + SHIELD_PARTICLE_COUNT
typedef struct {
typedef struct EffectStatus {
/* 0x00 */ u8 active;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
} EffectStatus; // size = 0x03
typedef struct {
typedef struct EffectSparkElement {
/* 0x00 */ Vec3f velocity;
/* 0x0C */ Vec3f position;
/* 0x18 */ Vec3s unkVelocity;
/* 0x1E */ Vec3s unkPosition;
} EffectSparkElement; // size = 0x24
typedef struct {
typedef struct EffectSparkInit {
/* 0x000 */ Vec3s position;
/* 0x008 */ s32 numElements; // "table_size"; calculated as uDiv * vDiv + 2
/* 0x00C */ EffectSparkElement elements[32];
@ -41,7 +41,7 @@ typedef struct {
/* 0x4C0 */ s32 duration;
} EffectSparkInit; // size = 0x4C4
typedef struct {
typedef struct EffectSpark {
/* 0x000 */ Vec3s position;
/* 0x008 */ s32 numElements; // "table_size"; calculated as uDiv * vDiv + 2
/* 0x00C */ EffectSparkElement elements[32];
@ -55,7 +55,7 @@ typedef struct {
/* 0x4C0 */ s32 duration;
} EffectSpark; // size = 0x4C4
typedef struct {
typedef struct EffectBlureElement {
/* 0x00 */ s32 state;
/* 0x04 */ s32 timer;
/* 0x08 */ Vec3s p1;
@ -63,7 +63,7 @@ typedef struct {
/* 0x14 */ u16 flags;
} EffectBlureElement; // size = 0x18
typedef struct {
typedef struct EffectBlureInit1 {
/* 0x000 */ char unk_00[0x184];
/* 0x184 */ u8 p1StartColor[4];
/* 0x188 */ u8 p2StartColor[4];
@ -74,7 +74,7 @@ typedef struct {
/* 0x19C */ s32 calcMode;
} EffectBlureInit1; // size = 0x1A0
typedef struct {
typedef struct EffectBlureInit2 {
/* 0x00 */ s32 calcMode;
/* 0x04 */ u16 flags;
/* 0x06 */ s16 addAngleChange;
@ -90,7 +90,7 @@ typedef struct {
/* 0x20 */ Color_RGBA8 altEnvColor; // used with drawMode 1
} EffectBlureInit2; // size = 0x24
typedef struct {
typedef struct EffectBlure {
/* 0x000 */ EffectBlureElement elements[16];
/* 0x180 */ s32 calcMode;
/* 0x184 */ f32 mode4Param;
@ -109,7 +109,7 @@ typedef struct {
/* 0x1A6 */ Color_RGBA8 altEnvColor; // used with drawMode 1
} EffectBlure; // size = 0x1AC
typedef struct {
typedef struct EffectShieldParticleElement {
/* 0x00 */ f32 initialSpeed;
/* 0x04 */ f32 endXChange;
/* 0x08 */ f32 endX;
@ -119,7 +119,7 @@ typedef struct {
/* 0x16 */ s16 pitch;
} EffectShieldParticleElement; // size = 0x18
typedef struct {
typedef struct EffectShieldParticleInit {
/* 0x00 */ u8 numElements;
/* 0x02 */ Vec3s position;
/* 0x08 */ Color_RGBA8 primColorStart;
@ -136,7 +136,7 @@ typedef struct {
/* 0x3C */ s32 lightDecay; // halves light radius every frame when set to 1
} EffectShieldParticleInit; // size = 0x40
typedef struct {
typedef struct EffectShieldParticle {
/* 0x000 */ EffectShieldParticleElement elements[16];
/* 0x180 */ u8 numElements;
/* 0x182 */ Vec3s position;
@ -157,7 +157,7 @@ typedef struct {
/* 0x1C4 */ s32 lightDecay; // halves light radius every frame when set to 1
} EffectShieldParticle; // size = 0x1C8
typedef struct {
typedef struct EffectContext {
/* 0x0000 */ struct PlayState* play;
struct {
EffectStatus status;
@ -173,7 +173,7 @@ typedef struct {
} /* 0x388C */ shieldParticles[SHIELD_PARTICLE_COUNT];
} EffectContext; // size = 0x3DF0
typedef struct {
typedef struct EffectInfo {
/* 0x00 */ u32 size;
/* 0x04 */ void (*init)(void* effect, void* initParams);
/* 0x08 */ void (*destroy)(void* effect);
@ -181,7 +181,7 @@ typedef struct {
/* 0x10 */ void (*draw)(void* effect, struct GraphicsContext* gfxCtx);
} EffectInfo; // size = 0x14
typedef enum {
typedef enum EffectType {
/* 0x00 */ EFFECT_SPARK,
/* 0x01 */ EFFECT_BLURE1,
/* 0x02 */ EFFECT_BLURE2,
@ -196,12 +196,12 @@ typedef u32 (*EffectSsInitFunc)(struct PlayState* play, u32 index, struct Effect
typedef void (*EffectSsUpdateFunc)(struct PlayState* play, u32 index, struct EffectSs* effectSs);
typedef void (*EffectSsDrawFunc)(struct PlayState* play, u32 index, struct EffectSs* effectSs);
typedef struct {
typedef struct EffectSsProfile {
/* 0x00 */ u32 type;
/* 0x04 */ EffectSsInitFunc init;
} EffectSsProfile; // size = 0x08
typedef struct {
typedef struct EffectSsOverlay {
/* 0x00 */ RomFile file;
/* 0x08 */ void* vramStart;
/* 0x0C */ void* vramEnd;
@ -226,7 +226,7 @@ typedef struct EffectSs {
/* 0x5F */ u8 type;
} EffectSs; // size = 0x60
typedef struct {
typedef struct EffectSsInfo {
/* 0x00 */ EffectSs* table; // "data_table"
/* 0x04 */ s32 searchStartIndex;
/* 0x08 */ s32 tableSize;
@ -250,7 +250,7 @@ typedef struct {
#define DEFINE_EFFECT_SS(_0, enum) enum,
#define DEFINE_EFFECT_SS_UNSET(enum) enum,
typedef enum {
typedef enum EffectSsType {
#include "tables/effect_ss_table.h"
/* 0x25 */ EFFECT_SS_TYPE_MAX // originally "EFFECT_SS2_TYPE_LAST_LABEL"
} EffectSsType;

View file

@ -34,12 +34,12 @@ struct SkyboxContext;
// This is a bit of a hack used only by bosses in the original game.
#define LIGHT_BLEND_OVERRIDE_FULL_CONTROL 2
typedef enum {
typedef enum LightMode {
/* 0 */ LIGHT_MODE_TIME, // environment lights use `lightConfig` and change based on time of day
/* 1 */ LIGHT_MODE_SETTINGS // environment lights use `lightSetting`
} LightMode;
typedef enum {
typedef enum SkyboxDmaState {
/* 0 */ SKYBOX_DMA_INACTIVE,
/* 1 */ SKYBOX_DMA_TEXTURE1_START,
/* 2 */ SKYBOX_DMA_TEXTURE1_DONE,
@ -49,19 +49,19 @@ typedef enum {
/* 13 */ SKYBOX_DMA_TLUT2_START
} SkyboxDmaState;
typedef enum {
typedef enum LightningState {
/* 0 */ LIGHTNING_OFF, // no lightning
/* 1 */ LIGHTNING_ON, // request lightning strikes at random intervals
/* 2 */ LIGHTNING_LAST // request one lightning strike before turning off
} LightningState;
typedef enum {
typedef enum LightningStrikeState {
/* 0 */ LIGHTNING_STRIKE_WAIT, // wait between lightning strikes. request bolts when timer hits 0
/* 1 */ LIGHTNING_STRIKE_START, // fade in the flash. note: bolts are requested in the previous state
/* 2 */ LIGHTNING_STRIKE_END // fade out the flash and go back to wait
} LightningStrikeState;
typedef enum {
typedef enum WeatherMode {
/* 0 */ WEATHER_MODE_CLEAR,
/* 1 */ WEATHER_MODE_CLOUDY_CONFIG3, // scene must define settings for light config 3
/* 2 */ WEATHER_MODE_CLOUDY_CONFIG2, // scene must define settings for light config 2
@ -70,14 +70,14 @@ typedef enum {
/* 5 */ WEATHER_MODE_HEAVY_RAIN // scene must define settings for light config 4
} WeatherMode;
typedef enum {
typedef enum ChangeSkyboxState {
/* 0 */ CHANGE_SKYBOX_INACTIVE,
/* 1 */ CHANGE_SKYBOX_REQUESTED,
/* 2 */ CHANGE_SKYBOX_WAIT,
/* 3 */ CHANGE_SKYBOX_ACTIVE
} ChangeSkyboxState;
typedef enum {
typedef enum PrecipitationData {
/* 0 */ PRECIP_RAIN_MAX, // max number of raindrops that can draw; uses this or SOS_MAX, whichever is larger
/* 1 */ PRECIP_RAIN_CUR, // current number of rain drops being drawn on screen
/* 2 */ PRECIP_SNOW_CUR, // current number of snowflakes being drawn on screen
@ -86,18 +86,18 @@ typedef enum {
/* 5 */ PRECIP_MAX
} PrecipitationData;
typedef enum {
typedef enum StormRequest {
/* 0 */ STORM_REQUEST_NONE,
/* 1 */ STORM_REQUEST_START,
/* 2 */ STORM_REQUEST_STOP
} StormRequest;
typedef enum {
typedef enum StormState {
/* 0 */ STORM_STATE_OFF,
/* 1 */ STORM_STATE_ON
} StormState;
typedef enum {
typedef enum TimeBasedSeqState {
/* 0x00 */ TIMESEQ_DAY_BGM,
/* 0x01 */ TIMESEQ_FADE_DAY_BGM,
/* 0x02 */ TIMESEQ_NIGHT_BEGIN_SFX,
@ -110,7 +110,7 @@ typedef enum {
/* 0xFF */ TIMESEQ_DISABLED = 0xFF
} TimeBasedSeqState;
typedef enum {
typedef enum SandstormState {
/* 0 */ SANDSTORM_OFF,
/* 1 */ SANDSTORM_FILL,
/* 2 */ SANDSTORM_UNFILL,
@ -118,7 +118,7 @@ typedef enum {
/* 4 */ SANDSTORM_DISSIPATE
} SandstormState;
typedef struct {
typedef struct LightningStrike {
/* 0x00 */ u8 state;
/* 0x01 */ u8 flashRed;
/* 0x02 */ u8 flashGreen;
@ -127,7 +127,7 @@ typedef struct {
/* 0x08 */ f32 delayTimer;
} LightningStrike; // size = 0xC
typedef struct {
typedef struct TimeBasedSkyboxEntry {
/* 0x00 */ u16 startTime;
/* 0x02 */ u16 endTime;
/* 0x04 */ u8 changeSkybox;
@ -135,7 +135,7 @@ typedef struct {
/* 0x06 */ u8 skybox2Index;
} TimeBasedSkyboxEntry; // size = 0x8
typedef struct {
typedef struct CurrentEnvLightSettings {
/* 0x00 */ u8 ambientColor[3];
/* 0x03 */ s8 light1Dir[3];
/* 0x06 */ u8 light1Color[3];
@ -155,7 +155,7 @@ typedef struct {
#define ENV_LIGHT_SETTINGS_BLEND_RATE_U8(blendRateAndFogNear) (((blendRateAndFogNear) >> 10) * 4)
#define ENV_LIGHT_SETTINGS_FOG_NEAR(blendRateAndFogNear) ((blendRateAndFogNear) & 0x3FF)
typedef struct {
typedef struct EnvLightSettings {
/* 0x00 */ u8 ambientColor[3];
/* 0x03 */ s8 light1Dir[3];
/* 0x06 */ u8 light1Color[3];
@ -166,7 +166,7 @@ typedef struct {
/* 0x14 */ s16 zFar;
} EnvLightSettings; // size = 0x16
typedef struct {
typedef struct EnvironmentContext {
/* 0x00 */ char unk_00[0x02];
/* 0x02 */ u16 sceneTimeSpeed; // time speed value from the scene file
/* 0x04 */ Vec3f sunPos; // moon position can be found by negating the sun position

View file

@ -6,7 +6,7 @@
struct Input;
struct PlayState;
typedef struct {
typedef struct FrameAdvanceContext {
/* 0x0 */ s32 enabled;
/* 0x4 */ s32 timer;
} FrameAdvanceContext; // size = 0x8

View file

@ -15,7 +15,7 @@ typedef struct GameAllocEntry {
/* 0x0C */ u32 unk_0C;
} GameAllocEntry; // size = 0x10
typedef struct {
typedef struct GameAlloc {
/* 0x00 */ GameAllocEntry base;
/* 0x10 */ GameAllocEntry* head;
} GameAlloc; // size = 0x14
@ -23,7 +23,7 @@ typedef struct {
// Used in Graph_GetNextGameState in graph.c
#define DEFINE_GAMESTATE_INTERNAL(typeName, enumName) enumName,
#define DEFINE_GAMESTATE(typeName, enumName, name) DEFINE_GAMESTATE_INTERNAL(typeName, enumName)
typedef enum {
typedef enum GameStateId {
#include "tables/gamestate_table.h"
GAMESTATE_ID_MAX
} GameStateId;

View file

@ -29,7 +29,7 @@ extern u8 _icon_item_24_staticSegmentRomStart[];
#define GET_QUEST_ICON_VROM(itemId) \
((uintptr_t)_icon_item_24_staticSegmentRomStart + (((itemId)-ITEM_MEDALLION_FOREST) * QUEST_ICON_SIZE))
typedef enum {
typedef enum DoAction {
/* 0x00 */ DO_ACTION_ATTACK,
/* 0x01 */ DO_ACTION_CHECK,
/* 0x02 */ DO_ACTION_ENTER,
@ -67,7 +67,7 @@ typedef enum {
#define DO_ACTION_TEX_HEIGHT 16
#define DO_ACTION_TEX_SIZE ((DO_ACTION_TEX_WIDTH * DO_ACTION_TEX_HEIGHT) / 2) // (sizeof(gCheckDoActionENGTex))
typedef struct {
typedef struct InterfaceContext {
/* 0x0000 */ View view;
/* 0x0128 */ Vtx* actionVtx;
/* 0x012C */ Vtx* beatingHeartVtx;

View file

@ -7,7 +7,7 @@
#define ITEM_NAME_TEX_HEIGHT 16
#define ITEM_NAME_TEX_SIZE ((ITEM_NAME_TEX_WIDTH * ITEM_NAME_TEX_HEIGHT) / 2) // 128x16 IA4 texture
typedef enum {
typedef enum EquipmentType {
/* 0 */ EQUIP_TYPE_SWORD,
/* 1 */ EQUIP_TYPE_SHIELD,
/* 2 */ EQUIP_TYPE_TUNIC,
@ -17,26 +17,26 @@ typedef enum {
// `EquipInv*` enums are for Inventory.equipment (for example used in the `CHECK_OWNED_EQUIP` macro)
typedef enum {
typedef enum EquipInvSword {
/* 0 */ EQUIP_INV_SWORD_KOKIRI,
/* 1 */ EQUIP_INV_SWORD_MASTER,
/* 2 */ EQUIP_INV_SWORD_BIGGORON,
/* 3 */ EQUIP_INV_SWORD_BROKENGIANTKNIFE
} EquipInvSword;
typedef enum {
typedef enum EquipInvShield {
/* 0 */ EQUIP_INV_SHIELD_DEKU,
/* 1 */ EQUIP_INV_SHIELD_HYLIAN,
/* 2 */ EQUIP_INV_SHIELD_MIRROR
} EquipInvShield;
typedef enum {
typedef enum EquipInvTunic {
/* 0 */ EQUIP_INV_TUNIC_KOKIRI,
/* 1 */ EQUIP_INV_TUNIC_GORON,
/* 2 */ EQUIP_INV_TUNIC_ZORA
} EquipInvTunic;
typedef enum {
typedef enum EquipInvBoots {
/* 0 */ EQUIP_INV_BOOTS_KOKIRI,
/* 1 */ EQUIP_INV_BOOTS_IRON,
/* 2 */ EQUIP_INV_BOOTS_HOVER
@ -44,7 +44,7 @@ typedef enum {
// `EquipValue*` enums are for ItemEquips.equipment (for example used in the `CUR_EQUIP_VALUE` macro)
typedef enum {
typedef enum EquipValueSword {
/* 0 */ EQUIP_VALUE_SWORD_NONE,
/* 1 */ EQUIP_VALUE_SWORD_KOKIRI,
/* 2 */ EQUIP_VALUE_SWORD_MASTER,
@ -52,7 +52,7 @@ typedef enum {
/* 4 */ EQUIP_VALUE_SWORD_MAX
} EquipValueSword;
typedef enum {
typedef enum EquipValueShield {
/* 0 */ EQUIP_VALUE_SHIELD_NONE,
/* 1 */ EQUIP_VALUE_SHIELD_DEKU,
/* 2 */ EQUIP_VALUE_SHIELD_HYLIAN,
@ -60,7 +60,7 @@ typedef enum {
/* 4 */ EQUIP_VALUE_SHIELD_MAX
} EquipValueShield;
typedef enum {
typedef enum EquipValueTunic {
/* 0 */ EQUIP_VALUE_TUNIC_NONE,
/* 1 */ EQUIP_VALUE_TUNIC_KOKIRI,
/* 2 */ EQUIP_VALUE_TUNIC_GORON,
@ -68,7 +68,7 @@ typedef enum {
/* 4 */ EQUIP_VALUE_TUNIC_MAX
} EquipValueTunic;
typedef enum {
typedef enum EquipValueBoots {
/* 0 */ EQUIP_VALUE_BOOTS_NONE,
/* 1 */ EQUIP_VALUE_BOOTS_KOKIRI,
/* 2 */ EQUIP_VALUE_BOOTS_IRON,
@ -76,7 +76,7 @@ typedef enum {
/* 4 */ EQUIP_VALUE_BOOTS_MAX
} EquipValueBoots;
typedef enum {
typedef enum UpgradeType {
/* 0x00 */ UPG_QUIVER,
/* 0x01 */ UPG_BOMB_BAG,
/* 0x02 */ UPG_STRENGTH,
@ -88,7 +88,7 @@ typedef enum {
/* 0x08 */ UPG_MAX
} UpgradeType;
typedef enum {
typedef enum QuestItem {
/* 0x00 */ QUEST_MEDALLION_FOREST,
/* 0x01 */ QUEST_MEDALLION_FIRE,
/* 0x02 */ QUEST_MEDALLION_WATER,
@ -116,13 +116,13 @@ typedef enum {
/* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C
} QuestItem;
typedef enum {
typedef enum DungeonItem {
/* 0x00 */ DUNGEON_BOSS_KEY,
/* 0x01 */ DUNGEON_COMPASS,
/* 0x02 */ DUNGEON_MAP
} DungeonItem;
typedef enum {
typedef enum InventorySlot {
/* 0x00 */ SLOT_DEKU_STICK,
/* 0x01 */ SLOT_DEKU_NUT,
/* 0x02 */ SLOT_BOMB,
@ -150,7 +150,7 @@ typedef enum {
/* 0xFF */ SLOT_NONE = 0xFF
} InventorySlot;
typedef enum {
typedef enum ItemID {
/* 0x00 */ ITEM_DEKU_STICK,
/* 0x01 */ ITEM_DEKU_NUT,
/* 0x02 */ ITEM_BOMB,
@ -316,7 +316,7 @@ typedef enum {
#define ITEM_TRADE_ADULT ITEM_POCKET_EGG
// Get Item result may vary depending on context (chest/shop/scrub/drop)
typedef enum {
typedef enum GetItemID {
/* 0x00 */ GI_NONE,
/* 0x01 */ GI_BOMBS_5,
/* 0x02 */ GI_DEKU_NUTS_5,
@ -446,7 +446,7 @@ typedef enum {
/* 0x7E */ GI_MAX
} GetItemID;
typedef enum {
typedef enum GetItemDrawID {
/* 0x00 */ GID_BOTTLE_EMPTY,
/* 0x01 */ GID_SMALL_KEY,
/* 0x02 */ GID_SONG_MINUET,
@ -567,7 +567,7 @@ typedef enum {
/* 0x75 */ GID_MAX
} GetItemDrawID;
typedef enum {
typedef enum ExchangeItemID {
/* 0x00 */ EXCH_ITEM_NONE,
/* 0x01 */ EXCH_ITEM_ZELDAS_LETTER,
/* 0x02 */ EXCH_ITEM_WEIRD_EGG,

View file

@ -6,7 +6,7 @@
#include "z64math.h"
#include "color.h"
typedef struct {
typedef struct LightPoint {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
/* 0x4 */ s16 z;
@ -15,19 +15,19 @@ typedef struct {
/* 0xA */ s16 radius;
} LightPoint; // size = 0xC
typedef struct {
typedef struct LightDirectional {
/* 0x0 */ s8 x;
/* 0x1 */ s8 y;
/* 0x2 */ s8 z;
/* 0x3 */ u8 color[3];
} LightDirectional; // size = 0x6
typedef union {
typedef union LightParams {
LightPoint point;
LightDirectional dir;
} LightParams; // size = 0xC
typedef struct {
typedef struct LightInfo {
/* 0x0 */ u8 type;
/* 0x2 */ LightParams params;
} LightInfo; // size = 0xE
@ -46,7 +46,7 @@ typedef struct LightNode {
#define ENV_FOGNEAR_MAX 996
#define ENV_ZFAR_MAX 12800
typedef struct {
typedef struct LightContext {
/* 0x0 */ LightNode* listHead;
/* 0x4 */ u8 ambientColor[3];
/* 0x7 */ u8 fogColor[3];
@ -54,7 +54,7 @@ typedef struct {
/* 0xC */ s16 zFar; // draw distance. range 0 - ENV_ZFAR_MAX
} LightContext; // size = 0x10
typedef enum {
typedef enum LightType {
/* 0x00 */ LIGHT_POINT_NOGLOW,
/* 0x01 */ LIGHT_DIRECTIONAL,
/* 0x02 */ LIGHT_POINT_GLOW

View file

@ -7,12 +7,12 @@
#define MAP_MARK_CHEST 0
#define MAP_MARK_BOSS 1
typedef struct {
typedef struct MapMarkPoint {
/* 0x00 */ s8 chestFlag; // chest icon is only displayed if this flag is not set for the current room
/* 0x01 */ u8 x, y; // coordinates to place the icon (top-left corner), relative to the minimap texture
} MapMarkPoint; // size = 0x3
typedef struct {
typedef struct MapMarkIconData {
/* 0x00 */ s8 markType; // 0 for the chest icon, 1 for the boss skull icon, -1 for none
/* 0x01 */ u8 count; // number of icons to display
/* 0x02 */ MapMarkPoint points[12];

View file

@ -7,76 +7,76 @@
#define SQ(x) ((x)*(x))
#define VEC_SET(V,X,Y,Z) (V).x=(X);(V).y=(Y);(V).z=(Z)
typedef struct {
typedef struct Vec2f {
f32 x, y;
} Vec2f; // size = 0x08
typedef struct {
typedef struct Vec3f {
f32 x, y, z;
} Vec3f; // size = 0x0C
typedef struct {
typedef struct Vec3us {
u16 x, y, z;
} Vec3us; // size = 0x06
typedef struct {
typedef struct Vec3s {
s16 x, y, z;
} Vec3s; // size = 0x06
typedef struct {
typedef struct Vec3i {
s32 x, y, z;
} Vec3i; // size = 0x0C
typedef struct {
typedef struct Sphere16 {
Vec3s center;
s16 radius;
} Sphere16; // size = 0x08
typedef struct {
typedef struct Spheref {
Vec3f center;
f32 radius;
} Spheref; // size = 0x10
typedef struct {
typedef struct PosRot {
/* 0x00 */ Vec3f pos;
/* 0x0C */ Vec3s rot;
} PosRot; // size = 0x14
typedef struct {
typedef struct Plane {
Vec3f normal;
f32 originDist;
} Plane; // size = 0x10
typedef struct {
typedef struct TriNorm {
Vec3f vtx[3];
Plane plane;
} TriNorm; // size = 0x34
typedef struct {
typedef struct Cylinder16 {
/* 0x0000 */ s16 radius;
/* 0x0002 */ s16 height;
/* 0x0004 */ s16 yShift;
/* 0x0006 */ Vec3s pos;
} Cylinder16; // size = 0x0C
typedef struct {
typedef struct Cylinderf {
/* 0x00 */ f32 radius;
/* 0x04 */ f32 height;
/* 0x08 */ f32 yShift;
/* 0x0C */ Vec3f pos;
} Cylinderf; // size = 0x18
typedef struct {
typedef struct InfiniteLine {
/* 0x0000 */ Vec3f point;
/* 0x000C */ Vec3f dir;
} InfiniteLine; // size = 0x18
typedef struct {
typedef struct Linef {
/* 0x0000 */ Vec3f a;
/* 0x000C */ Vec3f b;
} Linef; // size = 0x18
typedef struct {
typedef struct VecSphGeo {
/* 0x0 */ f32 r; // radius
/* 0x4 */ s16 pitch; // depends on coordinate system. See below.
/* 0x6 */ s16 yaw; // azimuthal angle

View file

@ -6,7 +6,7 @@
struct OcarinaStaff;
struct Actor;
typedef enum {
typedef enum TextBoxIcon {
/* 0 */ TEXTBOX_ICON_TRIANGLE,
/* 1 */ TEXTBOX_ICON_SQUARE,
/* 2 */ TEXTBOX_ICON_ARROW
@ -54,7 +54,7 @@ typedef enum {
#define FILENAME_PERIOD 0x40
#endif
typedef enum {
typedef enum MessageMode {
/* 0x00 */ MSGMODE_NONE,
/* 0x01 */ MSGMODE_TEXT_START,
/* 0x02 */ MSGMODE_TEXT_BOX_GROWING,
@ -177,7 +177,7 @@ typedef enum MaskReactionSet {
/* 0x3C */ MASK_REACTION_SET_MAX
} MaskReactionSet;
typedef enum {
typedef enum TextState {
/* 0 */ TEXT_STATE_NONE,
/* 1 */ TEXT_STATE_DONE_HAS_NEXT,
/* 2 */ TEXT_STATE_CLOSING,
@ -191,7 +191,7 @@ typedef enum {
/* 10 */ TEXT_STATE_AWAITING_NEXT
} TextState;
typedef struct {
typedef struct Font {
/* 0x0000 */ u32 msgOffset;
/* 0x0004 */ u32 msgLength;
union {
@ -221,7 +221,7 @@ typedef struct {
#define TEXTBOX_ENDTYPE_EVENT 0x50
#define TEXTBOX_ENDTYPE_FADING 0x60
typedef struct {
typedef struct MessageContext {
/* 0x0000 */ View view;
/* 0x0128 */ Font font;
/* 0xE2B0 */ u8* textboxSegment; // original name: "fukidashiSegment"

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "z64dma.h"
typedef struct {
typedef struct ObjectEntry {
/* 0x00 */ s16 id;
/* 0x04 */ void* segment;
/* 0x08 */ DmaRequest dmaRequest;
@ -12,7 +12,7 @@ typedef struct {
/* 0x40 */ OSMesg loadMsg;
} ObjectEntry; // size = 0x44
typedef struct {
typedef struct ObjectContext {
/* 0x0000 */ void* spaceStart;
/* 0x0004 */ void* spaceEnd; // original name: "endSegment"
/* 0x0008 */ u8 numEntries; // total amount of used entries
@ -26,7 +26,7 @@ typedef struct {
#define DEFINE_OBJECT_EMPTY(_0, enum) enum,
#define DEFINE_OBJECT_UNSET(enum) enum,
typedef enum {
typedef enum ObjectId {
#include "tables/object_table.h"
/* 0x0192 */ OBJECT_ID_MAX
} ObjectId;

View file

@ -3,7 +3,7 @@
#include "ultra64.h"
typedef enum {
typedef enum OcarinaSongId {
/* 0 */ OCARINA_SONG_MINUET,
/* 1 */ OCARINA_SONG_BOLERO,
/* 2 */ OCARINA_SONG_SERENADE,
@ -22,7 +22,7 @@ typedef enum {
/* 14 */ OCARINA_SONG_SCARECROW_LONG = OCARINA_SONG_MAX // anything larger than 13 is considered the long scarecrow's song
} OcarinaSongId;
typedef enum {
typedef enum OcarinaSongActionId {
/* 0x00 */ OCARINA_ACTION_UNK_0, // acts like free play but never set
/* 0x01 */ OCARINA_ACTION_FREE_PLAY,
/* 0x02 */ OCARINA_ACTION_TEACH_MINUET, // Song demonstrations by teachers
@ -75,7 +75,7 @@ typedef enum {
/* 0x31 */ OCARINA_ACTION_CHECK_NOWARP_DONE
} OcarinaSongActionId;
typedef enum {
typedef enum OcarinaMode {
/* 0x00 */ OCARINA_MODE_00,
/* 0x01 */ OCARINA_MODE_01,
/* 0x02 */ OCARINA_MODE_02,
@ -94,7 +94,7 @@ typedef enum {
/* 0x0F */ OCARINA_MODE_0F
} OcarinaMode;
typedef enum {
typedef enum OcarinaButtonIndex {
/* 0 */ OCARINA_BTN_A,
/* 1 */ OCARINA_BTN_C_DOWN,
/* 2 */ OCARINA_BTN_C_RIGHT,
@ -106,7 +106,7 @@ typedef enum {
// Uses scientific pitch notation relative to middle C
// https://en.wikipedia.org/wiki/Scientific_pitch_notation
typedef enum {
typedef enum OcarinaPitch {
/* 0x0 */ OCARINA_PITCH_C4,
/* 0x1 */ OCARINA_PITCH_DFLAT4,
/* 0x2 */ OCARINA_PITCH_D4,
@ -126,7 +126,7 @@ typedef enum {
/* 0xFF */ OCARINA_PITCH_NONE = 0xFF
} OcarinaPitch;
typedef enum {
typedef enum OcarinaInstrumentId {
/* 0 */ OCARINA_INSTRUMENT_OFF,
/* 1 */ OCARINA_INSTRUMENT_DEFAULT,
/* 2 */ OCARINA_INSTRUMENT_MALON,
@ -139,7 +139,7 @@ typedef enum {
/* 8 */ OCARINA_INSTRUMENT_DEFAULT_COPY2 = OCARINA_INSTRUMENT_MAX + 1 // Unused but present in Sequence 0 table
} OcarinaInstrumentId;
typedef enum {
typedef enum OcarinaRecordingState {
/* 0 */ OCARINA_RECORD_OFF,
/* 1 */ OCARINA_RECORD_SCARECROW_LONG,
/* 2 */ OCARINA_RECORD_SCARECROW_SPAWN,
@ -157,7 +157,7 @@ typedef enum {
* 0x80 - BTN_R is pressed to raise note by a semitone
*/
typedef struct {
typedef struct OcarinaNote {
/* 0x0 */ u8 pitch; // number of semitones above middle C
/* 0x2 */ u16 length; // number of frames the note is sustained
/* 0x4 */ u8 volume;
@ -166,7 +166,7 @@ typedef struct {
/* 0x7 */ u8 bFlat4Flag; // See note above
} OcarinaNote; // size = 0x8
typedef struct {
typedef struct OcarinaSongButtons {
/* 0x0 */ u8 numButtons;
/* 0x1 */ u8 buttonsIndex[8];
} OcarinaSongButtons; // size = 0x9

View file

@ -12,7 +12,7 @@ struct OcarinaStaff;
#define PAUSE_CURSOR_PAGE_LEFT 10
#define PAUSE_CURSOR_PAGE_RIGHT 11
typedef enum {
typedef enum PauseMenuPage {
/* 0x00 */ PAUSE_ITEM,
/* 0x01 */ PAUSE_MAP,
/* 0x02 */ PAUSE_QUEST,
@ -53,7 +53,7 @@ typedef enum {
#define PAUSE_EQUIP_BUFFER_SIZE sizeof(u16[PAUSE_EQUIP_PLAYER_HEIGHT][PAUSE_EQUIP_PLAYER_WIDTH])
#define PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE 0x5000
typedef enum {
typedef enum PauseState {
/* 0 */ PAUSE_STATE_OFF,
/* 1 */ PAUSE_STATE_WAIT_LETTERBOX, // Request no letterboxing and wait for it.
/* 2 */ PAUSE_STATE_WAIT_BG_PRERENDER, // Wait for the pause background prerender to be done.
@ -83,7 +83,7 @@ typedef enum {
(((pauseCtx)->state != PAUSE_STATE_OFF) || ((pauseCtx)->debugState != 0))
// Sub-states of PAUSE_STATE_MAIN
typedef enum {
typedef enum PauseMainState {
/* 0 */ PAUSE_MAIN_STATE_IDLE,
/* 1 */ PAUSE_MAIN_STATE_SWITCHING_PAGE,
/* 2 */ PAUSE_MAIN_STATE_2,
@ -96,7 +96,7 @@ typedef enum {
/* 9 */ PAUSE_MAIN_STATE_9
} PauseMainState;
typedef struct {
typedef struct PauseContext {
/* 0x0000 */ View view;
/* 0x0128 */ u8* iconItemSegment;
/* 0x012C */ u8* iconItem24Segment;
@ -180,12 +180,12 @@ typedef struct {
#define PAUSE_MAP_MARK_CHEST 0
#define PAUSE_MAP_MARK_BOSS 1
typedef struct {
typedef struct PauseMapMarkPoint {
/* 0x00 */ s16 chestFlag; // chest icon is only displayed if this flag is not set for the current room, -1 for no flag
/* 0x04 */ f32 x, y; // coordinates to place the icon (top-left corner)
} PauseMapMarkPoint; // size = 0x0C
typedef struct {
typedef struct PauseMapMarkData {
/* 0x00 */ s16 markType; // 0 for the chest icon, 1 for the boss skull icon, -1 for none
/* 0x04 */ s32 unk_04;
/* 0x08 */ const Vtx* vtx;

View file

@ -7,7 +7,7 @@
struct Player;
typedef enum {
typedef enum PlayerSword {
/* 0 */ PLAYER_SWORD_NONE,
/* 1 */ PLAYER_SWORD_KOKIRI,
/* 2 */ PLAYER_SWORD_MASTER,
@ -15,7 +15,7 @@ typedef enum {
/* 4 */ PLAYER_SWORD_MAX
} PlayerSword;
typedef enum {
typedef enum PlayerShield {
/* 0x00 */ PLAYER_SHIELD_NONE,
/* 0x01 */ PLAYER_SHIELD_DEKU,
/* 0x02 */ PLAYER_SHIELD_HYLIAN,
@ -23,14 +23,14 @@ typedef enum {
/* 0x04 */ PLAYER_SHIELD_MAX
} PlayerShield;
typedef enum {
typedef enum PlayerTunic {
/* 0x00 */ PLAYER_TUNIC_KOKIRI,
/* 0x01 */ PLAYER_TUNIC_GORON,
/* 0x02 */ PLAYER_TUNIC_ZORA,
/* 0x03 */ PLAYER_TUNIC_MAX
} PlayerTunic;
typedef enum {
typedef enum PlayerBoots {
/* 0x00 */ PLAYER_BOOTS_KOKIRI,
/* 0x01 */ PLAYER_BOOTS_IRON,
/* 0x02 */ PLAYER_BOOTS_HOVER,
@ -41,7 +41,7 @@ typedef enum {
/* 0x06 */ PLAYER_BOOTS_MAX
} PlayerBoots;
typedef enum {
typedef enum PlayerStrength {
/* 0x00 */ PLAYER_STR_NONE,
/* 0x01 */ PLAYER_STR_BRACELET,
/* 0x02 */ PLAYER_STR_SILVER_G,
@ -49,7 +49,7 @@ typedef enum {
/* 0x04 */ PLAYER_STR_MAX
} PlayerStrength;
typedef enum {
typedef enum PlayerMask {
/* 0x00 */ PLAYER_MASK_NONE,
/* 0x01 */ PLAYER_MASK_KEATON,
/* 0x02 */ PLAYER_MASK_SKULL,
@ -62,7 +62,7 @@ typedef enum {
/* 0x09 */ PLAYER_MASK_MAX
} PlayerMask;
typedef enum {
typedef enum PlayerEnvHazard {
/* 0x0 */ PLAYER_ENV_HAZARD_NONE,
/* 0x1 */ PLAYER_ENV_HAZARD_HOTROOM,
/* 0x2 */ PLAYER_ENV_HAZARD_UNDERWATER_FLOOR,
@ -70,7 +70,7 @@ typedef enum {
/* 0x4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE
} PlayerEnvHazard;
typedef enum {
typedef enum PlayerItemAction {
/* 0x00 */ PLAYER_IA_NONE,
/* 0x01 */ PLAYER_IA_SWORD_CS, // Hold sword without shield in hand. The sword is not useable.
/* 0x02 */ PLAYER_IA_FISHING_POLE,
@ -141,7 +141,7 @@ typedef enum {
/* 0x43 */ PLAYER_IA_MAX
} PlayerItemAction;
typedef enum {
typedef enum PlayerLimb {
/* 0x00 */ PLAYER_LIMB_NONE,
/* 0x01 */ PLAYER_LIMB_ROOT,
/* 0x02 */ PLAYER_LIMB_WAIST,
@ -167,7 +167,7 @@ typedef enum {
/* 0x16 */ PLAYER_LIMB_MAX
} PlayerLimb;
typedef enum {
typedef enum PlayerBodyPart {
/* 0x00 */ PLAYER_BODYPART_WAIST, // PLAYER_LIMB_WAIST
/* 0x01 */ PLAYER_BODYPART_R_THIGH, // PLAYER_LIMB_R_THIGH
/* 0x02 */ PLAYER_BODYPART_R_SHIN, // PLAYER_LIMB_R_SHIN
@ -189,7 +189,7 @@ typedef enum {
/* 0x12 */ PLAYER_BODYPART_MAX
} PlayerBodyPart;
typedef enum {
typedef enum PlayerMeleeWeaponAnimation {
/* 0 */ PLAYER_MWA_FORWARD_SLASH_1H,
/* 1 */ PLAYER_MWA_FORWARD_SLASH_2H,
/* 2 */ PLAYER_MWA_FORWARD_COMBO_1H,
@ -221,7 +221,7 @@ typedef enum {
/* 28 */ PLAYER_MWA_MAX
} PlayerMeleeWeaponAnimation;
typedef enum {
typedef enum PlayerDoorType {
/* -1 */ PLAYER_DOORTYPE_AJAR = -1,
/* 0 */ PLAYER_DOORTYPE_NONE,
/* 1 */ PLAYER_DOORTYPE_HANDLE,
@ -229,13 +229,13 @@ typedef enum {
/* 3 */ PLAYER_DOORTYPE_FAKE
} PlayerDoorType;
typedef enum {
typedef enum PlayerFacePart {
/* 0 */ PLAYER_FACEPART_EYES,
/* 1 */ PLAYER_FACEPART_MOUTH,
/* 2 */ PLAYER_FACEPART_MAX
} PlayerFacePart;
typedef enum {
typedef enum PlayerEyes {
/* 0 */ PLAYER_EYES_OPEN,
/* 1 */ PLAYER_EYES_HALF,
/* 2 */ PLAYER_EYES_CLOSED,
@ -247,7 +247,7 @@ typedef enum {
/* 8 */ PLAYER_EYES_MAX
} PlayerEyes;
typedef enum {
typedef enum PlayerMouth {
/* 0 */ PLAYER_MOUTH_CLOSED,
/* 1 */ PLAYER_MOUTH_HALF,
/* 2 */ PLAYER_MOUTH_OPEN,
@ -255,7 +255,7 @@ typedef enum {
/* 4 */ PLAYER_MOUTH_MAX
} PlayerMouth;
typedef enum {
typedef enum PlayerFace {
/* 0 */ PLAYER_FACE_NEUTRAL, // eyes open and mouth closed
/* 1 */ PLAYER_FACE_NEUTRAL_BLINKING_HALF, // eyes half open and mouth closed
/* 2 */ PLAYER_FACE_NEUTRAL_BLINKING_CLOSED, // eyes and mouth closed
@ -275,7 +275,7 @@ typedef enum {
/* 16 */ PLAYER_FACE_MAX
} PlayerFace;
typedef enum {
typedef enum PlayerModelGroup {
/* 0x00 */ PLAYER_MODELGROUP_0, // unused (except for a bug in `Player_OverrideLimbDrawPause`)
/* 0x01 */ PLAYER_MODELGROUP_CHILD_HYLIAN_SHIELD, //hold sword only. used for holding sword only as child link with hylian shield equipped
/* 0x02 */ PLAYER_MODELGROUP_SWORD_AND_SHIELD, // hold sword and shield or just sword if no shield is equipped
@ -295,7 +295,7 @@ typedef enum {
/* 0x10 */ PLAYER_MODELGROUP_MAX
} PlayerModelGroup;
typedef enum {
typedef enum PlayerModelGroupEntry {
/* 0x00 */ PLAYER_MODELGROUPENTRY_ANIM,
/* 0x01 */ PLAYER_MODELGROUPENTRY_LEFT_HAND,
/* 0x02 */ PLAYER_MODELGROUPENTRY_RIGHT_HAND,
@ -304,7 +304,7 @@ typedef enum {
/* 0x05 */ PLAYER_MODELGROUPENTRY_MAX
} PlayerModelGroupEntry;
typedef enum {
typedef enum PlayerModelType {
// left hand
/* 0x00 */ PLAYER_MODELTYPE_LH_OPEN, // empty open hand
/* 0x01 */ PLAYER_MODELTYPE_LH_CLOSED, // empty closed hand
@ -334,7 +334,7 @@ typedef enum {
/* 0xFF */ PLAYER_MODELTYPE_RH_FF = 0xFF // disable shield collider, cutscene-specific
} PlayerModelType;
typedef enum {
typedef enum PlayerAnimType {
/* 0x00 */ PLAYER_ANIMTYPE_0,
/* 0x01 */ PLAYER_ANIMTYPE_1,
/* 0x02 */ PLAYER_ANIMTYPE_2,
@ -347,7 +347,7 @@ typedef enum {
/**
* Temporary names, derived from original animation names in `D_80853914`
*/
typedef enum {
typedef enum PlayerAnimGroup {
/* 0x00 */ PLAYER_ANIMGROUP_wait,
/* 0x01 */ PLAYER_ANIMGROUP_walk,
/* 0x02 */ PLAYER_ANIMGROUP_run,
@ -399,7 +399,7 @@ typedef enum {
#define LIMB_BUF_COUNT(limbCount) ((ALIGN16((limbCount) * sizeof(Vec3s)) + sizeof(Vec3s) - 1) / sizeof(Vec3s))
#define PLAYER_LIMB_BUF_COUNT LIMB_BUF_COUNT(PLAYER_LIMB_MAX)
typedef enum {
typedef enum PlayerCsAction {
/* 0x00 */ PLAYER_CSACTION_NONE,
/* 0x01 */ PLAYER_CSACTION_1,
/* 0x02 */ PLAYER_CSACTION_2,
@ -506,7 +506,7 @@ typedef enum {
/* 0x67 */ PLAYER_CSACTION_MAX
} PlayerCsAction;
typedef enum {
typedef enum PlayerCueId {
/* 0x00 */ PLAYER_CUEID_NONE,
/* 0x01 */ PLAYER_CUEID_1,
/* 0x02 */ PLAYER_CUEID_2,
@ -588,7 +588,7 @@ typedef enum {
/* 0x4E */ PLAYER_CUEID_MAX
} PlayerCueId;
typedef enum {
typedef enum PlayerLedgeClimbType {
/* 0 */ PLAYER_LEDGE_CLIMB_NONE,
/* 1 */ PLAYER_LEDGE_CLIMB_1,
/* 2 */ PLAYER_LEDGE_CLIMB_2,
@ -596,7 +596,7 @@ typedef enum {
/* 4 */ PLAYER_LEDGE_CLIMB_4
} PlayerLedgeClimbType;
typedef enum {
typedef enum PlayerStickDirection {
/* -1 */ PLAYER_STICK_DIR_NONE = -1,
/* 0 */ PLAYER_STICK_DIR_FORWARD,
/* 1 */ PLAYER_STICK_DIR_LEFT,
@ -604,7 +604,7 @@ typedef enum {
/* 3 */ PLAYER_STICK_DIR_RIGHT
} PlayerStickDirection;
typedef struct {
typedef struct PlayerAgeProperties {
/* 0x00 */ f32 ceilingCheckHeight;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
@ -640,7 +640,7 @@ typedef struct {
/* 0xCC */ LinkAnimationHeader* unk_CC[2];
} PlayerAgeProperties; // size = 0xD4
typedef struct {
typedef struct WeaponInfo {
/* 0x00 */ s32 active;
/* 0x04 */ Vec3f tip;
/* 0x10 */ Vec3f base;

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "z64math.h"
typedef enum {
typedef enum Language {
#if OOT_NTSC
/* 0 */ LANGUAGE_JPN,
/* 1 */ LANGUAGE_ENG,
@ -19,7 +19,7 @@ typedef enum {
// `_FORCE` means that this request will respond to `forceRisingButtonAlphas`.
// If set, the buttons will also raise alphas but will also account for disabled buttons
typedef enum {
typedef enum HudVisibilityMode {
/* 0 */ HUD_VISIBILITY_NO_CHANGE,
/* 1 */ HUD_VISIBILITY_NOTHING,
/* 2 */ HUD_VISIBILITY_NOTHING_ALT, // Identical to HUD_VISIBILITY_NOTHING
@ -38,7 +38,7 @@ typedef enum {
/* 52 */ HUD_VISIBILITY_NOTHING_INSTANT = 52
} HudVisibilityMode;
typedef enum {
typedef enum MagicState {
/* 0x0 */ MAGIC_STATE_IDLE, // Regular gameplay
/* 0x1 */ MAGIC_STATE_CONSUME_SETUP, // Sets the speed at which magic border flashes
/* 0x2 */ MAGIC_STATE_CONSUME, // Consume magic until target is reached or no more magic is available
@ -52,7 +52,7 @@ typedef enum {
/* 0xA */ MAGIC_STATE_ADD // Add requested magic
} MagicState;
typedef enum {
typedef enum MagicChangeType {
/* 0 */ MAGIC_CONSUME_NOW, // Consume Magic immediately without preview
/* 1 */ MAGIC_CONSUME_WAIT_NO_PREVIEW, // Sets consume target but waits to consume. No yellow magic preview to target consumption. Unused
/* 2 */ MAGIC_CONSUME_NOW_ALT, // Identical behaviour to MAGIC_CONSUME_NOW. Unused
@ -64,13 +64,13 @@ typedef enum {
#define MAGIC_NORMAL_METER 0x30
#define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER)
typedef struct {
typedef struct ItemEquips {
/* 0x00 */ u8 buttonItems[4];
/* 0x04 */ u8 cButtonSlots[3];
/* 0x08 */ u16 equipment; // a mask where each nibble corresponds to a type of equipment `EquipmentType`, and each nibble is a piece `EquipValue*`
} ItemEquips; // size = 0x0A
typedef struct {
typedef struct Inventory {
/* 0x00 */ u8 items[24];
/* 0x18 */ s8 ammo[16];
/* 0x28 */ u16 equipment; // a mask where each nibble corresponds to a type of equipment `EquipmentType`, and each bit to an owned piece `EquipInv*`
@ -82,7 +82,7 @@ typedef struct {
/* 0x5C */ s16 gsTokens;
} Inventory; // size = 0x5E
typedef struct {
typedef struct SavedSceneFlags {
/* 0x00 */ u32 chest;
/* 0x04 */ u32 swch;
/* 0x08 */ u32 clear;
@ -92,7 +92,7 @@ typedef struct {
/* 0x18 */ u32 floors;
} SavedSceneFlags; // size = 0x1C
typedef struct {
typedef struct HorseData {
/* 0x00 */ s16 sceneId;
/* 0x02 */ Vec3s pos;
/* 0x08 */ s16 angle;
@ -104,14 +104,14 @@ typedef struct {
* "return": coming from the ground
* "top": coming from the air
*/
typedef enum {
typedef enum RespawnMode {
/* 0x00 */ RESPAWN_MODE_DOWN, /* Normal Void Outs */
/* 0x01 */ RESPAWN_MODE_RETURN, /* Grotto Returnpoints */
/* 0x02 */ RESPAWN_MODE_TOP, /* Farore's Wind */
/* 0x03 */ RESPAWN_MODE_MAX
} RespawnMode;
typedef struct {
typedef struct RespawnData {
/* 0x00 */ Vec3f pos;
/* 0x0C */ s16 yaw;
/* 0x0E */ s16 playerParams;
@ -122,7 +122,7 @@ typedef struct {
/* 0x18 */ u32 tempCollectFlags;
} RespawnData; // size = 0x1C
typedef struct {
typedef struct FaroresWindData {
/* 0x00 */ Vec3i pos;
/* 0x0C */ s32 yaw;
/* 0x10 */ s32 playerParams;
@ -133,7 +133,7 @@ typedef struct {
/* 0x24 */ s32 tempCollectFlags;
} FaroresWindData; // size = 0x28
typedef enum {
typedef enum TimerState {
/* 0x0 */ TIMER_STATE_OFF,
/* 0x1 */ TIMER_STATE_ENV_HAZARD_INIT, // Init env timer that counts down, total time based on health, resets on void-out, kills at 0
/* 0x2 */ TIMER_STATE_ENV_HAZARD_PREVIEW, // Display initial time, keep it fixed at the screen center
@ -151,7 +151,7 @@ typedef enum {
/* 0xF */ TIMER_STATE_UP_FREEZE // Stop counting the timer
} TimerState;
typedef enum {
typedef enum SubTimerState {
/* 0x0 */ SUBTIMER_STATE_OFF,
/* 0x1 */ SUBTIMER_STATE_DOWN_INIT, // Init timer that counts down
/* 0x2 */ SUBTIMER_STATE_DOWN_PREVIEW, // Display initial time, keep it fixed at the screen center
@ -165,7 +165,7 @@ typedef enum {
/* 0xA */ SUBTIMER_STATE_UP_TICK // Counting up
} SubTimerState;
typedef enum {
typedef enum TimerId {
/* 0 */ TIMER_ID_MAIN, // Takes priority in both counting and drawing. See `timerState` and `timerSeconds`
/* 1 */ TIMER_ID_SUB, // See `subTimerState` and `subTimerSeconds`
/* 2 */ TIMER_ID_MAX
@ -177,7 +177,7 @@ typedef enum {
#define ENV_HAZARD_TEXT_TRIGGER_UNDERWATER (1 << 1)
// offsets in SavePlayerData and SaveContext/Save
typedef struct {
typedef struct SavePlayerData {
/* 0x00 0x001C */ char newf[6]; // string "ZELDAZ"
/* 0x06 0x0022 */ u16 deaths;
/* 0x08 0x0024 */ char playerName[8];
@ -203,7 +203,7 @@ typedef struct {
} SavePlayerData;
// offsets in SaveInfo and SaveContext/Save
typedef struct {
typedef struct SaveInfo {
/* 0x0000 0x001C */ SavePlayerData playerData; // "S_Private"
/* 0x004C 0x0068 */ ItemEquips equips;
/* 0x0058 0x0074 */ Inventory inventory;
@ -229,7 +229,7 @@ typedef struct {
/* 0x1336 0x1352 */ u16 checksum; // "check_sum"
} SaveInfo;
typedef struct {
typedef struct Save {
/* 0x00 */ s32 entranceIndex;
/* 0x04 */ s32 linkAge; // 0: Adult; 1: Child (see enum `LinkAge`)
/* 0x08 */ s32 cutsceneIndex;
@ -240,7 +240,7 @@ typedef struct {
/* 0x1C */ SaveInfo info; // "information"
} Save;
typedef struct {
typedef struct SaveContext {
/* 0x0000 */ Save save; // "memory"
/* 0x1354 */ s32 fileNum; // "file_no"
/* 0x1358 */ char unk_1358[0x0004];
@ -305,12 +305,12 @@ typedef struct {
/* 0x1424 */ s16 healthAccumulator;
} SaveContext; // size = 0x1428
typedef enum {
typedef enum ButtonStatus {
/* 0x00 */ BTN_ENABLED,
/* 0xFF */ BTN_DISABLED = 0xFF
} ButtonStatus;
typedef enum {
typedef enum ChamberCutsceneNum {
/* 0 */ CHAMBER_CS_FOREST,
/* 1 */ CHAMBER_CS_FIRE,
/* 2 */ CHAMBER_CS_WATER,
@ -319,7 +319,7 @@ typedef enum {
/* 5 */ CHAMBER_CS_LIGHT
} ChamberCutsceneNum;
typedef enum {
typedef enum HighScores {
/* 0x00 */ HS_HBA, // horseback archery
/* 0x01 */ HS_POE_POINTS,
/* 0x02 */ HS_FISHING,
@ -341,21 +341,21 @@ typedef enum {
#define HS_FISH_CHEAT_ADULT 0x80000000 // used Sinking Lure as adult to catch record fish
#define HS_FISH_PLAYED 0x10000 // incremented for every play. controls weather.
typedef enum {
typedef enum SunsSongState {
/* 0 */ SUNSSONG_INACTIVE,
/* 1 */ SUNSSONG_START, // the suns ocarina effect signals that the song has finished playing
/* 2 */ SUNSSONG_SPEED_TIME, // suns was played where time passes, speed up the advancement of time
/* 3 */ SUNSSONG_SPECIAL // time does not advance, but signals the song was played. used for freezing redeads
} SunsSongState;
typedef enum {
typedef enum GameMode {
/* 0 */ GAMEMODE_NORMAL,
/* 1 */ GAMEMODE_TITLE_SCREEN,
/* 2 */ GAMEMODE_FILE_SELECT, // Note: only instance type transitions swap to file select
/* 3 */ GAMEMODE_END_CREDITS
} GameMode;
typedef enum {
typedef enum SceneLayer {
/* 0 */ SCENE_LAYER_CHILD_DAY,
/* 1 */ SCENE_LAYER_CHILD_NIGHT,
/* 2 */ SCENE_LAYER_ADULT_DAY,
@ -365,7 +365,7 @@ typedef enum {
#define IS_CUTSCENE_LAYER (gSaveContext.sceneLayer >= SCENE_LAYER_CUTSCENE_FIRST)
typedef enum {
typedef enum LinkAge {
/* 0 */ LINK_AGE_ADULT,
/* 1 */ LINK_AGE_CHILD
} LinkAge;
@ -820,7 +820,7 @@ typedef enum {
#define EVENTINF_HORSES_0A ((EVENTINF_HORSES_INDEX << 4) | EVENTINF_HORSES_0A_SHIFT)
#define EVENTINF_CUCCO_GAME_FINISHED EVENTINF_HORSES_0A
typedef enum {
typedef enum EventInfHorsesState {
/* 0 */ EVENTINF_HORSES_STATE_0,
/* 1 */ EVENTINF_HORSES_STATE_1,
/* 2 */ EVENTINF_HORSES_STATE_2,

View file

@ -6,7 +6,7 @@
#include "command_macros_base.h"
typedef struct {
typedef struct SceneTableEntry {
/* 0x00 */ RomFile sceneFile;
/* 0x08 */ RomFile titleFile;
/* 0x10 */ u8 unk_10;
@ -15,14 +15,14 @@ typedef struct {
/* 0x13 */ u8 unk_13;
} SceneTableEntry; // size = 0x14
typedef struct {
typedef struct ActorEntry {
/* 0x00 */ s16 id;
/* 0x02 */ Vec3s pos;
/* 0x08 */ Vec3s rot;
/* 0x0E */ s16 params;
} ActorEntry; // size = 0x10
typedef struct {
typedef struct TransitionActorEntry {
struct {
s8 room; // Room to switch to
s8 bgCamIndex; // How the camera reacts during the transition. See `Camera_ChangeDoorCam`
@ -38,53 +38,53 @@ typedef struct TransitionActorContext {
/* 0x04 */ TransitionActorEntry* list;
} TransitionActorContext; // size = 0x8
typedef struct {
typedef struct Spawn {
/* 0x00 */ u8 playerEntryIndex;
/* 0x01 */ u8 room;
} Spawn;
typedef struct {
typedef struct Path {
/* 0x00 */ u8 count; // number of points in the path
/* 0x04 */ Vec3s* points; // Segment Address to the array of points
} Path; // size = 0x8
// Room shapes
typedef enum {
typedef enum RoomShapeType {
/* 0 */ ROOM_SHAPE_TYPE_NORMAL,
/* 1 */ ROOM_SHAPE_TYPE_IMAGE,
/* 2 */ ROOM_SHAPE_TYPE_CULLABLE,
/* 3 */ ROOM_SHAPE_TYPE_MAX
} RoomShapeType;
typedef struct {
typedef struct RoomShapeBase {
/* 0x00 */ u8 type;
} RoomShapeBase; // size = 0x01
typedef struct {
typedef struct RoomShapeDListsEntry {
/* 0x00 */ Gfx* opa;
/* 0x04 */ Gfx* xlu;
} RoomShapeDListsEntry; // size = 0x08
typedef struct {
typedef struct RoomShapeNormal {
/* 0x00 */ RoomShapeBase base;
/* 0x01 */ u8 numEntries;
/* 0x04 */ RoomShapeDListsEntry* entries;
/* 0x08 */ RoomShapeDListsEntry* entriesEnd;
} RoomShapeNormal; // size = 0x0C
typedef enum {
typedef enum RoomShapeImageAmountType {
/* 1 */ ROOM_SHAPE_IMAGE_AMOUNT_SINGLE = 1,
/* 2 */ ROOM_SHAPE_IMAGE_AMOUNT_MULTI
} RoomShapeImageAmountType;
typedef struct {
typedef struct RoomShapeImageBase {
/* 0x00 */ RoomShapeBase base;
/* 0x01 */ u8 amountType; // RoomShapeImageAmountType
/* 0x04 */ RoomShapeDListsEntry* entry;
} RoomShapeImageBase; // size = 0x08
typedef struct {
typedef struct RoomShapeImageSingle {
/* 0x00 */ RoomShapeImageBase base;
/* 0x08 */ void* source;
/* 0x0C */ u32 unk_0C;
@ -97,7 +97,7 @@ typedef struct {
/* 0x1C */ u16 tlutCount;
} RoomShapeImageSingle; // size = 0x20
typedef struct {
typedef struct RoomShapeImageMultiBgEntry {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u8 bgCamIndex; // for which bg cam index is this entry for
/* 0x04 */ void* source;
@ -111,13 +111,13 @@ typedef struct {
/* 0x18 */ u16 tlutCount;
} RoomShapeImageMultiBgEntry; // size = 0x1C
typedef struct {
typedef struct RoomShapeImageMulti {
/* 0x00 */ RoomShapeImageBase base;
/* 0x08 */ u8 numBackgrounds;
/* 0x0C */ RoomShapeImageMultiBgEntry* backgrounds;
} RoomShapeImageMulti; // size = 0x10
typedef struct {
typedef struct RoomShapeCullableEntry {
/* 0x00 */ Vec3s boundsSphereCenter;
/* 0x06 */ s16 boundsSphereRadius;
/* 0x08 */ Gfx* opa;
@ -126,14 +126,14 @@ typedef struct {
#define ROOM_SHAPE_CULLABLE_MAX_ENTRIES 64
typedef struct {
typedef struct RoomShapeCullable {
/* 0x00 */ RoomShapeBase base;
/* 0x01 */ u8 numEntries;
/* 0x04 */ RoomShapeCullableEntry* entries;
/* 0x08 */ RoomShapeCullableEntry* entriesEnd;
} RoomShapeCullable; // size = 0x0C
typedef union {
typedef union RoomShape {
RoomShapeBase base;
RoomShapeNormal normal;
union {
@ -193,43 +193,43 @@ typedef struct RoomContext {
// Scene commands
typedef struct {
typedef struct SCmdBase {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdBase;
typedef struct {
typedef struct SCmdPlayerEntryList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ ActorEntry* data;
} SCmdPlayerEntryList;
typedef struct {
typedef struct SCmdActorEntryList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ ActorEntry* data;
} SCmdActorEntryList;
typedef struct {
typedef struct SCmdUnused02 {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* segment;
} SCmdUnused02;
typedef struct {
typedef struct SCmdColHeader {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ CollisionHeader* data;
} SCmdColHeader;
typedef struct {
typedef struct SCmdRoomList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ RomFile* data;
} SCmdRoomList;
typedef struct {
typedef struct SCmdWindSettings {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ char pad[2];
@ -239,61 +239,61 @@ typedef struct {
/* 0x07 */ u8 unk_07;
} SCmdWindSettings;
typedef struct {
typedef struct SCmdSpawnList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ Spawn* data;
} SCmdSpawnList;
typedef struct {
typedef struct SCmdSpecialFiles {
/* 0x00 */ u8 code;
/* 0x01 */ u8 naviQuestHintFileId;
/* 0x04 */ u32 keepObjectId;
} SCmdSpecialFiles;
typedef struct {
typedef struct SCmdRoomBehavior {
/* 0x00 */ u8 code;
/* 0x01 */ u8 gpFlag1;
/* 0x04 */ u32 gpFlag2;
} SCmdRoomBehavior;
typedef struct {
typedef struct SCmdMesh {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ RoomShapeBase* data;
} SCmdMesh;
typedef struct {
typedef struct SCmdObjectList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ s16* data;
} SCmdObjectList;
typedef struct {
typedef struct SCmdLightList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ LightInfo* data;
} SCmdLightList;
typedef struct {
typedef struct SCmdPathList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ Path* data;
} SCmdPathList;
typedef struct {
typedef struct SCmdTransiActorList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ TransitionActorEntry* data;
} SCmdTransiActorList;
typedef struct {
typedef struct SCmdLightSettingList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 length;
/* 0x04 */ EnvLightSettings* data;
} SCmdLightSettingList;
typedef struct {
typedef struct SCmdTimeSettings {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ char pad[2];
@ -302,7 +302,7 @@ typedef struct {
/* 0x06 */ u8 timeSpeed;
} SCmdTimeSettings;
typedef struct {
typedef struct SCmdSkyboxSettings {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ char pad[2];
@ -311,7 +311,7 @@ typedef struct {
/* 0x06 */ u8 envLightMode;
} SCmdSkyboxSettings;
typedef struct {
typedef struct SCmdSkyboxDisables {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ char pad[2];
@ -319,19 +319,19 @@ typedef struct {
/* 0x05 */ u8 sunMoonDisabled;
} SCmdSkyboxDisables;
typedef struct {
typedef struct SCmdEndMarker {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ u32 data2;
} SCmdEndMarker;
typedef struct {
typedef struct SCmdExitList {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ s16* data;
} SCmdExitList;
typedef struct {
typedef struct SCmdSoundSettings {
/* 0x00 */ u8 code;
/* 0x01 */ u8 specId;
/* 0x02 */ char pad[4];
@ -339,32 +339,32 @@ typedef struct {
/* 0x07 */ u8 seqId;
} SCmdSoundSettings;
typedef struct {
typedef struct SCmdEchoSettings {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x02 */ char pad[5];
/* 0x07 */ u8 echo;
} SCmdEchoSettings;
typedef struct {
typedef struct SCmdCutsceneData {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* data;
} SCmdCutsceneData;
typedef struct {
typedef struct SCmdAltHeaders {
/* 0x00 */ u8 code;
/* 0x01 */ u8 data1;
/* 0x04 */ void* data;
} SCmdAltHeaders;
typedef struct {
typedef struct SCmdMiscSettings {
/* 0x00 */ u8 code;
/* 0x01 */ u8 sceneCamType;
/* 0x04 */ u32 area;
} SCmdMiscSettings;
typedef union {
typedef union SceneCmd {
SCmdBase base;
SCmdPlayerEntryList playerEntryList;
SCmdActorEntryList actorEntryList;
@ -397,7 +397,7 @@ typedef BAD_RETURN(s32) (*SceneCmdHandlerFunc)(struct PlayState*, SceneCmd*);
#define DEFINE_SCENE(_0, _1, enum, _3, _4, _5) enum,
typedef enum {
typedef enum SceneID {
#include "tables/scene_table.h"
/* 0x6E */ SCENE_ID_MAX
} SceneID;
@ -423,7 +423,7 @@ typedef enum {
// Entrance Index Enum
#define DEFINE_ENTRANCE(enum, _1, _2, _3, _4, _5, _6) enum,
typedef enum {
typedef enum EntranceIndex {
#include "tables/entrance_table.h"
/* 0x614 */ ENTR_MAX
} EntranceIndex;
@ -432,7 +432,7 @@ typedef enum {
#define ENTR_LOAD_OPENING -1
typedef enum {
typedef enum ReturnEntranceIndex {
/* 0x7FF9 */ ENTR_RETURN_GREAT_FAIRYS_FOUNTAIN_SPELLS = 0x7FF9,
/* 0x7FFA */ ENTR_RETURN_SHOOTING_GALLERY,
/* 0x7FFB */ ENTR_RETURN_2, // unused
@ -442,7 +442,7 @@ typedef enum {
/* 0x7FFF */ ENTR_RETURN_GROTTO // Grottos and normal Fairy Fountain
} ReturnEntranceIndex;
typedef enum {
typedef enum SceneDrawConfig {
/* 0 */ SDC_DEFAULT,
/* 1 */ SDC_HYRULE_FIELD,
/* 2 */ SDC_KAKARIKO_VILLAGE,
@ -508,7 +508,7 @@ typedef enum {
#define SCENE_CAM_TYPE_SHOOTING_GALLERY 0x50 // Unreferenced in code, and used only by the main layer of the shooting gallery scene
// navi hints
typedef enum {
typedef enum NaviQuestHintFileId {
NAVI_QUEST_HINTS_NONE,
NAVI_QUEST_HINTS_OVERWORLD,
NAVI_QUEST_HINTS_DUNGEON
@ -516,7 +516,7 @@ typedef enum {
// Scene commands
typedef enum {
typedef enum SceneCommandTypeID {
/* 0x00 */ SCENE_CMD_ID_SPAWN_LIST,
/* 0x01 */ SCENE_CMD_ID_ACTOR_LIST,
/* 0x02 */ SCENE_CMD_ID_UNUSED_2,

View file

@ -7,7 +7,7 @@
* Holds a compact version of a vertex used in the Skin system
* It is used to initialise the Vtx used by an animated limb
*/
typedef struct {
typedef struct SkinVertex {
/* 0x00 */ u16 index;
/* 0x02 */ s16 s; // s and t are texture coordinates (also known as u and v)
/* 0x04 */ s16 t;
@ -20,7 +20,7 @@ typedef struct {
/**
* Describes a position displacement and a scale to be applied to a limb at index `limbIndex`
*/
typedef struct {
typedef struct SkinTransformation {
/* 0x00 */ u8 limbIndex;
/* 0x02 */ s16 x;
/* 0x04 */ s16 y;
@ -28,7 +28,7 @@ typedef struct {
/* 0x08 */ u8 scale;
} SkinTransformation; // size = 0xA
typedef struct {
typedef struct SkinLimbModif {
/* 0x00 */ u16 vtxCount; // number of vertices in this modif entry
/* 0x02 */ u16 transformCount;
/* 0x04 */ u16 unk_4; // index of limbTransformations?
@ -36,7 +36,7 @@ typedef struct {
/* 0x0C */ SkinTransformation* limbTransformations;
} SkinLimbModif; // size = 0x10
typedef struct {
typedef struct SkinAnimatedLimbData {
/* 0x00 */ u16 totalVtxCount; // total vertex count for all modif entries
/* 0x02 */ u16 limbModifCount;
/* 0x04 */ SkinLimbModif* limbModifications;
@ -46,7 +46,7 @@ typedef struct {
#define SKIN_LIMB_TYPE_ANIMATED 4
#define SKIN_LIMB_TYPE_NORMAL 11
typedef struct {
typedef struct SkinLimb {
/* 0x00 */ Vec3s jointPos; // Root is position in model space, children are relative to parent
/* 0x06 */ u8 child;
/* 0x07 */ u8 sibling;
@ -54,12 +54,12 @@ typedef struct {
/* 0x0C */ void* segment; // Gfx* if segmentType is SKIN_LIMB_TYPE_NORMAL, SkinAnimatedLimbData* if segmentType is SKIN_LIMB_TYPE_ANIMATED, NULL otherwise
} SkinLimb; // size = 0x10
typedef struct {
typedef struct SkinLimbVtx {
/* 0x000 */ u8 index; // alternates every draw cycle
/* 0x004 */ Vtx* buf[2]; // number of vertices in buffer determined by `totalVtxCount`
} SkinLimbVtx; // size = 0xC
typedef struct {
typedef struct Skin {
/* 0x000 */ SkeletonHeader* skeletonHeader;
/* 0x004 */ MtxF mtx;
/* 0x044 */ s32 limbCount;

View file

@ -10,7 +10,7 @@
struct GameState;
struct GraphicsContext;
typedef enum {
typedef enum SkyboxId {
/* 0x00 */ SKYBOX_NONE,
/* 0x01 */ SKYBOX_NORMAL_SKY,
/* 0x02 */ SKYBOX_BAZAAR,
@ -41,7 +41,7 @@ typedef enum {
/* 0x27 */ SKYBOX_UNSET_27 = 39
} SkyboxId;
typedef enum {
typedef enum SkyboxDrawType {
/* 0 */ SKYBOX_DRAW_128, // 128x128 top/bottom faces, 128x64 side faces
/* 1 */ SKYBOX_DRAW_256_4FACE, // 256x256 all side faces with per-face palettes
/* 2 */ SKYBOX_DRAW_256_3FACE // 256x256 3/4 side faces with per-face palettes
@ -59,7 +59,7 @@ typedef struct SkyboxContext {
/* 0x150 */ char unk_150[0x10];
} SkyboxContext; // size = 0x160
typedef struct {
typedef struct SkyboxFile {
/* 0x00 */ RomFile file;
/* 0x08 */ RomFile palette;
} SkyboxFile; // size = 0x10

View file

@ -3,14 +3,14 @@
#include "ultra64/ultratypes.h"
typedef struct {
typedef struct SramContext {
/* 0x00 */ u8* readBuff;
} SramContext; // size = 0x4
#define SRAM_SIZE 0x8000
#define SRAM_HEADER_SIZE 0x10
typedef enum {
typedef enum SramHeaderField {
/* 0x00 */ SRAM_HEADER_SOUND,
/* 0x01 */ SRAM_HEADER_ZTARGET,
/* 0x02 */ SRAM_HEADER_LANGUAGE,

View file

@ -9,7 +9,7 @@
#define TRANS_TRIGGER_START 20 // start transition (exiting an area)
#define TRANS_TRIGGER_END -20 // transition is ending (arriving in a new area)
typedef enum {
typedef enum TransitionMode {
/* 0 */ TRANS_MODE_OFF,
/* 1 */ TRANS_MODE_SETUP,
/* 2 */ TRANS_MODE_INSTANCE_INIT,
@ -30,7 +30,7 @@ typedef enum {
/* 17 */ TRANS_MODE_CS_BLACK_FILL
} TransitionMode;
typedef enum {
typedef enum TransitionType {
/* 0 */ TRANS_TYPE_WIPE,
/* 1 */ TRANS_TYPE_TRIFORCE,
/* 2 */ TRANS_TYPE_FADE_BLACK,
@ -62,7 +62,7 @@ typedef enum {
#define TRANS_TYPE_CIRCLE(appearance, color, speed) ((1 << 5) | ((color & 3) << 3) | ((appearance & 3) << 1) | (speed & 1))
typedef struct {
typedef struct TransitionContext {
union {
TransitionFade fade;
TransitionCircle circle;

View file

@ -4,12 +4,12 @@
#include "ultra64.h"
#include "color.h"
typedef struct {
typedef struct TransitionTileVtxData {
/* 0x0 */ f32 x;
/* 0x4 */ f32 y;
} TransitionTileVtxData; // size = 0x8
typedef struct {
typedef struct TransitionTile {
/* 0x00 */ s32 cols;
/* 0x04 */ s32 rows;
/* 0x08 */ s32 frame;
@ -23,12 +23,12 @@ typedef struct {
/* 0xDC */ u16* zBuffer;
} TransitionTile; // size = 0xE0
typedef enum {
typedef enum TransitionInstanceType {
/* 1 */ TRANS_INSTANCE_TYPE_FILL_OUT = 1,
/* 2 */ TRANS_INSTANCE_TYPE_FILL_IN
} TransitionInstanceType;
typedef struct {
typedef struct TransitionWipe {
/* 0x000 */ Color_RGBA8_u32 color;
/* 0x004 */ Color_RGBA8_u32 unkColor;
/* 0x008 */ u8 direction;
@ -44,7 +44,7 @@ typedef struct {
#define TRANS_INSTANCE_TYPE_FADE_FLASH 3
typedef struct {
typedef struct TransitionFade {
/* 0x000 */ u8 type;
/* 0x001 */ u8 isDone;
/* 0x002 */ u8 direction;
@ -52,26 +52,26 @@ typedef struct {
/* 0x008 */ u16 timer;
} TransitionFade; // size = 0xC
typedef enum {
typedef enum TransitionCircleAppearance {
/* 0 */ TCA_NORMAL,
/* 1 */ TCA_WAVE,
/* 2 */ TCA_RIPPLE,
/* 3 */ TCA_STARBURST
} TransitionCircleAppearance;
typedef enum {
typedef enum TransitionCircleColor {
/* 0 */ TCC_BLACK,
/* 1 */ TCC_WHITE,
/* 2 */ TCC_GRAY,
/* 3 */ TCC_SPECIAL // color varies depending on appearance. unused and appears broken
} TransitionCircleColor;
typedef enum {
typedef enum TransitionCircleSpeed {
/* 0 */ TCS_FAST,
/* 1 */ TCS_SLOW
} TransitionCircleSpeed;
typedef struct {
typedef struct TransitionCircle {
/* 0x000 */ Color_RGBA8_u32 color;
/* 0x004 */ Color_RGBA8_u32 unkColor;
/* 0x008 */ s32 texX;
@ -90,7 +90,7 @@ typedef struct {
/* 0x0A8 */ Mtx modelView[2][3];
} TransitionCircle; // size = 0x228
typedef struct {
typedef struct TransitionTriforce {
/* 0x000 */ Color_RGBA8_u32 color;
/* 0x004 */ f32 transPos;
/* 0x008 */ f32 step;

View file

@ -5,14 +5,14 @@
struct GraphicsContext;
typedef struct {
typedef struct Viewport {
/* 0x0 */ s32 topY; // uly (upper left y)
/* 0x4 */ s32 bottomY; // lry (lower right y)
/* 0x8 */ s32 leftX; // ulx (upper left x)
/* 0xC */ s32 rightX; // lrx (lower right x)
} Viewport; // size = 0x10
typedef struct {
typedef struct View {
/* 0x000 */ s32 magic; // string literal "VIEW" / 0x56494557
/* 0x004 */ struct GraphicsContext* gfxCtx;
/* 0x008 */ Viewport viewport;

View file

@ -4,7 +4,7 @@
#include "ultra64.h"
#include "color.h"
typedef enum {
typedef enum FramebufferFilterType {
/* 0 */ FB_FILTER_NONE,
/* 1 */ FB_FILTER_CVG_RGB,
/* 2 */ FB_FILTER_CVG_RGB_UNIFORM,
@ -15,12 +15,12 @@ typedef enum {
/* 7 */ FB_FILTER_MONO
} FramebufferFilterType;
typedef enum {
typedef enum VisScissorType {
/* 0 */ VIS_NO_SETSCISSOR,
/* 1 */ VIS_SETSCISSOR
} VisScissorType;
typedef struct {
typedef struct Vis {
/* 0x00 */ u32 type;
/* 0x04 */ u32 scissorType;
/* 0x08 */ Color_RGBA8_u32 primColor;
@ -33,7 +33,7 @@ typedef struct {
#define FB_FILTER_TO_CVG_TYPE(filter) (filter)
typedef enum {
typedef enum VisCvgType {
/* 0 */ VIS_CVG_TYPE_NONE = FB_FILTER_TO_CVG_TYPE(FB_FILTER_NONE),
/* 1 */ VIS_CVG_TYPE_CVG_RGB = FB_FILTER_TO_CVG_TYPE(FB_FILTER_CVG_RGB),
/* 2 */ VIS_CVG_TYPE_CVG_RGB_UNIFORM = FB_FILTER_TO_CVG_TYPE(FB_FILTER_CVG_RGB_UNIFORM),
@ -41,7 +41,7 @@ typedef enum {
/* 4 */ VIS_CVG_TYPE_CVG_RGB_FOG = FB_FILTER_TO_CVG_TYPE(FB_FILTER_CVG_RGB_FOG)
} VisCvgType;
typedef struct {
typedef struct VisCvg {
/* 0x00 */ Vis vis;
} VisCvg; // size = 0x10
@ -71,12 +71,12 @@ void VisMono_Draw(VisMono* this, Gfx** gfxP);
#define FB_FILTER_TO_ZBUF_TYPE(filter) ((filter) - FB_FILTER_ZBUF_IA)
typedef enum {
typedef enum VisZBufType {
/* 0 */ VIS_ZBUF_TYPE_IA = FB_FILTER_TO_ZBUF_TYPE(FB_FILTER_ZBUF_IA),
/* 1 */ VIS_ZBUF_TYPE_RGBA = FB_FILTER_TO_ZBUF_TYPE(FB_FILTER_ZBUF_RGBA)
} VisZBufType;
typedef struct {
typedef struct VisZBuf {
/* 0x00 */ Vis vis;
} VisZBuf; // size = 0x10

View file

@ -3,7 +3,7 @@
#define ABS_ALT(x) ((x) < 0 ? -(x) : (x))
typedef struct {
typedef struct SfxPlayerState {
/* 0x0 */ f32 vol;
/* 0x4 */ f32 freqScale;
/* 0x8 */ s8 reverb;
@ -13,7 +13,7 @@ typedef struct {
/* 0xC */ u8 combFilterGain;
} SfxPlayerState;
typedef enum {
typedef enum SfxChannelIndex {
/* 0x0 */ SFX_CHANNEL_PLAYER0, // SfxPlayerBank
/* 0x1 */ SFX_CHANNEL_PLAYER1,
/* 0x2 */ SFX_CHANNEL_PLAYER2,
@ -32,20 +32,20 @@ typedef enum {
/* 0xF */ SFX_CHANNEL_VOICE1
} SfxChannelIndex; // playerIdx = 2
typedef struct {
typedef struct FreqLerp {
/* 0x0 */ f32 value;
/* 0x4 */ f32 target;
/* 0x8 */ f32 step;
/* 0xC */ s32 remainingFrames;
} FreqLerp;
typedef struct {
typedef struct NatureAmbienceDataIO {
/* 0x0 */ u16 playerIO;
/* 0x2 */ u16 channelMask;
/* 0x4 */ u8 channelIO[3 * 33 + 1];
} NatureAmbienceDataIO; // size = 0x68
typedef enum {
typedef enum AudioDebugPage {
/* 0x0 */ PAGE_NON,
/* 0x1 */ PAGE_SOUND_CONTROL,
/* 0x2 */ PAGE_SPEC_INFO, // unused
@ -66,7 +66,7 @@ typedef enum {
#define SCROLL_PRINT_BUF_SIZE 25
typedef struct {
typedef struct OcarinaStick {
s8 x;
s8 y;
} OcarinaStick;

View file

@ -1345,7 +1345,7 @@ void AudioHeap_DiscardSampleCaches(void) {
}
}
typedef struct {
typedef struct StorageChange {
u32 oldAddr;
u32 newAddr;
u32 size;

View file

@ -7,14 +7,14 @@
#define ASYNC_ID(v) ((u8)(v >> 8))
#define ASYNC_LOAD_STATUS(v) ((u8)(v >> 0))
typedef enum {
typedef enum SlowLoadState {
/* 0 */ SLOW_LOAD_STATE_WAITING,
/* 1 */ SLOW_LOAD_STATE_START,
/* 2 */ SLOW_LOAD_STATE_LOADING,
/* 3 */ SLOW_LOAD_STATE_DONE
} SlowLoadState;
typedef struct {
typedef struct SampleBankRelocInfo {
/* 0x00 */ s32 sampleBankId1;
/* 0x04 */ s32 sampleBankId2;
/* 0x08 */ s32 baseAddr1;

View file

@ -21,7 +21,7 @@
#define PROCESS_SCRIPT_END -1
typedef enum {
typedef enum PortamentoMode {
/* 0 */ PORTAMENTO_MODE_OFF,
/* 1 */ PORTAMENTO_MODE_1,
/* 2 */ PORTAMENTO_MODE_2,

View file

@ -14,7 +14,7 @@
#define DMEM_WET_LEFT_CH 0xC80
#define DMEM_WET_RIGHT_CH 0xE20 // = DMEM_WET_LEFT_CH + DMEM_1CH_SIZE
typedef enum {
typedef enum HaasEffectDelaySide {
/* 0 */ HAAS_EFFECT_DELAY_NONE,
/* 1 */ HAAS_EFFECT_DELAY_LEFT, // Delay left channel so that right channel is heard first
/* 2 */ HAAS_EFFECT_DELAY_RIGHT // Delay right channel so that left channel is heard first

View file

@ -26,7 +26,7 @@
Audio_ProcessSeqCmd((SEQCMD_OP_SET_SEQPLAYER_VOLUME << 28) | ((u8)(seqPlayerIndex) << 24) | \
((u8)(duration) << 16) | ((u8)((volume)*127.0f)));
typedef struct {
typedef struct SeqRequest {
/* 0x0 */ u8 seqId;
/* 0x1 */ u8 priority; // higher values have higher priority
} SeqRequest; // size = 0x2

View file

@ -2,7 +2,7 @@
#include "global.h"
#include "terminal.h"
typedef struct {
typedef struct SfxRequest {
/* 0x00 */ u16 sfxId;
/* 0x04 */ Vec3f* pos;
/* 0x08 */ u8 token;
@ -11,7 +11,7 @@ typedef struct {
/* 0x14 */ s8* reverbAdd;
} SfxRequest; // size = 0x18
typedef struct {
typedef struct UnusedBankLerp {
/* 0x00 */ f32 value;
/* 0x04 */ f32 target;
/* 0x08 */ f32 step;

View file

@ -85,7 +85,7 @@ STACK(sFaultStack, 0x600);
StackEntry sFaultThreadInfo;
FaultMgr gFaultMgr;
typedef struct {
typedef struct FaultClientTask {
/* 0x00 */ s32 (*callback)(void*, void*);
/* 0x04 */ void* arg0;
/* 0x08 */ void* arg1;

View file

@ -7,7 +7,7 @@
#include "global.h"
#include "terminal.h"
typedef struct {
typedef struct FaultDrawer {
/* 0x00 */ u16* fb;
/* 0x04 */ u16 w;
/* 0x06 */ u16 h;

View file

@ -1,6 +1,6 @@
#include "global.h"
typedef struct {
typedef struct FlagSetEntry {
/* 0x00 */ u16* value;
/* 0x04 */ const char* name;
} FlagSetEntry; // size = 0x08

View file

@ -1,6 +1,6 @@
#include "global.h"
typedef enum {
typedef enum LetterboxState {
/* 0 */ LETTERBOX_STATE_IDLE,
/* 1 */ LETTERBOX_STATE_GROWING,
/* 2 */ LETTERBOX_STATE_SHRINKING

View file

@ -56,7 +56,7 @@ volatile OSTime D_8016A578;
// Accumulator for `gRDPTimeTotal`
volatile OSTime gRDPTimeAcc;
typedef struct {
typedef struct SpeedMeterTimeEntry {
/* 0x00 */ volatile OSTime* time;
/* 0x04 */ u8 x;
/* 0x05 */ u8 y;
@ -74,7 +74,7 @@ SpeedMeterTimeEntry sSpeedMeterTimeEntryArray[] = {
{ &gGraphUpdatePeriod, 0, 10, GPACK_RGBA5551(255, 0, 255, 1) },
};
typedef struct {
typedef struct SpeedMeterAllocEntry {
/* 0x00 */ s32 maxval;
/* 0x04 */ s32 val;
/* 0x08 */ u16 backColor;

View file

@ -1,28 +1,28 @@
#include "global.h"
typedef struct {
typedef struct F3dzexConst {
/* 0x00 */ u32 value;
/* 0x04 */ const char* name;
} F3dzexConst; // size = 0x8
typedef struct {
typedef struct F3dzexFlag {
/* 0x00 */ u32 value;
/* 0x04 */ const char* setName;
/* 0x08 */ const char* unsetName;
} F3dzexFlag; // size = 0x0C
typedef struct {
typedef struct F3dzexRenderMode {
/* 0x00 */ const char* name;
/* 0x04 */ u32 value;
/* 0x08 */ u32 mask;
} F3dzexRenderMode; // size = 0x0C
typedef struct {
typedef struct F3dzexSetModeMacroValue {
/* 0x00 */ const char* name;
/* 0x04 */ u32 value;
} F3dzexSetModeMacroValue; // size = 0x8
typedef struct {
typedef struct F3dzexSetModeMacro {
/* 0x00 */ const char* name;
/* 0x04 */ u32 shift;
/* 0x08 */ u32 len;
@ -69,7 +69,7 @@ F3dzexFlag sUCodeDisasMtxFlags[] = {
F3DZEX_FLAG(G_MTX_PUSH, G_MTX_NOPUSH),
};
typedef enum {
typedef enum CombinerArg {
COMBINER_A = 1,
COMBINER_B,
COMBINER_C,

View file

@ -235,7 +235,7 @@ void Actor_ProjectPos(PlayState* play, Vec3f* src, Vec3f* xyzDest, f32* cappedIn
*cappedInvWDest = (*cappedInvWDest < 1.0f) ? 1.0f : (1.0f / *cappedInvWDest);
}
typedef struct {
typedef struct NaviColor {
/* 0x00 */ Color_RGBA8 inner;
/* 0x04 */ Color_RGBA8 outer;
} NaviColor; // size = 0x8
@ -1540,7 +1540,7 @@ f32 func_8002EFC0(Actor* actor, Player* player, s16 arg2) {
return actor->xyzDistToPlayerSq;
}
typedef struct {
typedef struct TargetRangeParams {
/* 0x0 */ f32 rangeSq;
/* 0x4 */ f32 leashScale;
} TargetRangeParams; // size = 0x8
@ -3745,7 +3745,7 @@ f32 Rand_CenteredFloat(f32 f) {
return (Rand_ZeroOne() - 0.5f) * f;
}
typedef struct {
typedef struct DoorLockInfo {
/* 0x00 */ f32 chainAngle;
/* 0x04 */ f32 chainLength;
/* 0x08 */ f32 yShift;
@ -3900,7 +3900,7 @@ s32 Npc_UpdateTalking(PlayState* play, Actor* actor, s16* talkState, f32 interac
return false;
}
typedef struct {
typedef struct NpcTrackingRotLimits {
/* 0x00 */ s16 maxHeadYaw;
/* 0x02 */ s16 minHeadPitch;
/* 0x04 */ s16 maxHeadPitch;
@ -3910,7 +3910,7 @@ typedef struct {
/* 0x0C */ u8 rotateYaw;
} NpcTrackingRotLimits; // size = 0x10
typedef struct {
typedef struct NpcTrackingParams {
/* 0x00 */ NpcTrackingRotLimits rotLimits;
// Fields specific to NPC_TRACKING_PLAYER_AUTO_TURN mode
/* 0x10 */ f32 autoTurnDistanceRange; // Max distance to player to enable tracking and auto-turn

View file

@ -1484,7 +1484,7 @@ s32 BgCheck_IsSpotScene(PlayState* play) {
return false;
}
typedef struct {
typedef struct BgCheckSceneMemEntry {
s16 sceneId;
u32 memSize;
} BgCheckSceneMemEntry;
@ -1523,7 +1523,7 @@ void BgCheck_SetSubdivisionDimension(f32 min, s32 subdivAmount, f32* max, f32* s
*max = *subdivLength * subdivAmount + min;
}
typedef struct {
typedef struct BgCheckSceneSubdivisionEntry {
s16 sceneId;
Vec3s subdivAmount;
s32 nodeListMax; // if -1, dynamically compute max nodes

View file

@ -7041,7 +7041,7 @@ s32 Camera_Special5(Camera* camera) {
return true;
}
typedef enum {
typedef enum CamElevatorPlatform {
/* 0 */ CAM_ELEVATOR_PLATFORM_FIRE_TEMPLE_LOWER_FLOOR, // ACTOR_BG_HIDAN_ROCK
/* 1 */ CAM_ELEVATOR_PLATFORM_FIRE_TEMPLE_EAST_TOWER, // ACTOR_BG_HIDAN_FSLIFT
/* 2 */ CAM_ELEVATOR_PLATFORM_FIRE_TEMPLE_WEST_TOWER, // ACTOR_BG_HIDAN_SYOKU

View file

@ -1,18 +1,18 @@
#include "ultra64.h"
#include "global.h"
typedef struct {
typedef struct CameraModeValue {
s16 val;
s16 dataType;
} CameraModeValue;
typedef struct {
typedef struct CameraMode {
s16 funcIdx;
s16 valueCnt;
CameraModeValue* values;
} CameraMode;
typedef struct {
typedef struct CameraSetting {
union {
u32 unk_00;
struct {

View file

@ -1602,12 +1602,12 @@ s32 CollisionCheck_SwordHitAudio(Collider* atCol, ColliderElement* acElem) {
return true;
}
typedef struct {
typedef struct HitInfo {
/* 0x0 */ u8 blood;
/* 0x1 */ u8 effect;
} HitInfo; // size = 0x2
typedef enum {
typedef enum ColChkBloodType {
/* 0 */ BLOOD_NONE,
/* 1 */ BLOOD_BLUE,
/* 2 */ BLOOD_GREEN,
@ -1616,7 +1616,7 @@ typedef enum {
/* 5 */ BLOOD_RED2
} ColChkBloodType;
typedef enum {
typedef enum ColChkHitType {
/* 0 */ HIT_WHITE,
/* 1 */ HIT_DUST,
/* 2 */ HIT_RED,
@ -2687,7 +2687,7 @@ void CollisionCheck_AT(PlayState* play, CollisionCheckContext* colChkCtx) {
CollisionCheck_SetHitEffects(play, colChkCtx);
}
typedef enum {
typedef enum ColChkMassType {
/* 0 */ MASSTYPE_IMMOVABLE,
/* 1 */ MASSTYPE_HEAVY,
/* 2 */ MASSTYPE_NORMAL

View file

@ -1,13 +1,13 @@
#include "global.h"
typedef struct {
typedef struct DebugCamTextBufferEntry {
/* 0x0 */ u8 x;
/* 0x1 */ u8 y;
/* 0x2 */ u8 colorIndex;
/* 0x3 */ char text[21];
} DebugCamTextBufferEntry; // size = 0x18
typedef struct {
typedef struct InputCombo {
/* 0x0 */ u16 hold;
/* 0x2 */ u16 press;
} InputCombo; // size = 0x4

View file

@ -1,7 +1,7 @@
#include "global.h"
#include "assets/objects/gameplay_keep/gameplay_keep.h"
typedef struct {
typedef struct DebugDispObjectInfo {
/* 0x00 */ s16 drawType; // indicates which draw function to use when displaying the object
/* 0x04 */ void* drawArg; // segment address (display list or texture) passed to the draw function when called
} DebugDispObjectInfo; // size = 0x8

View file

@ -59,7 +59,7 @@ CutsceneHandler sScriptedCutsceneHandlers[] = {
CutsceneHandler_RunScript, // CS_STATE_RUN_UNSTOPPABLE
};
typedef enum {
typedef enum TitleDemoDestination {
/* 0 */ TITLE_DEMO_SPIRIT_TEMPLE,
/* 1 */ TITLE_DEMO_DEATH_MOUNTAIN_CRATER,
/* 2 */ TITLE_DEMO_GANONDORF_HORSE
@ -67,7 +67,7 @@ typedef enum {
u8 sTitleDemoDestination = TITLE_DEMO_SPIRIT_TEMPLE;
typedef struct {
typedef struct EntranceCutscene {
/* 0x00 */ u16 entrance; // entrance index upon which the cutscene should trigger
/* 0x02 */ u8 ageRestriction; // 0 for adult only, 1 for child only, 2 for both ages
/* 0x03 */ u8 flag; // eventChkInf flag bound to the entrance cutscene

View file

@ -106,7 +106,7 @@ void GetItem_DrawScale(PlayState* play, s16 drawId);
void GetItem_DrawBulletBag(PlayState* play, s16 drawId);
void GetItem_DrawWallet(PlayState* play, s16 drawId);
typedef struct {
typedef struct DrawItemTableEntry {
/* 0x00 */ void (*drawFunc)(PlayState*, s16);
/* 0x04 */ Gfx* dlists[8];
} DrawItemTableEntry; // size = 0x24

View file

@ -1,6 +1,6 @@
#include "global.h"
typedef enum {
typedef enum TransitionCircleDirection {
/* 0 */ TRANS_CIRCLE_DIR_IN,
/* 1 */ TRANS_CIRCLE_DIR_OUT
} TransitionCircleDirection;

View file

@ -1,12 +1,12 @@
#include "global.h"
#include "terminal.h"
typedef enum {
typedef enum TransitionFadeDirection {
/* 0 */ TRANS_FADE_DIR_IN,
/* 1 */ TRANS_FADE_DIR_OUT
} TransitionFadeDirection;
typedef enum {
typedef enum TransitionFadeType {
/* 0 */ TRANS_FADE_TYPE_NONE,
/* 1 */ TRANS_FADE_TYPE_ONE_WAY,
/* 2 */ TRANS_FADE_TYPE_FLASH

View file

@ -1,6 +1,6 @@
#include "global.h"
typedef enum {
typedef enum TransitionWipeDirection {
/* 0 */ TRANS_WIPE_DIR_IN,
/* 1 */ TRANS_WIPE_DIR_OUT
} TransitionWipeDirection;

View file

@ -77,7 +77,7 @@ void SkelCurve_SetAnim(SkelCurve* skelCurve, CurveAnimationHeader* animation, f3
skelCurve->animation = animation;
}
typedef enum {
typedef enum SkelCurveVecType {
/* 0 */ SKELCURVE_VEC_TYPE_SCALE,
/* 1 */ SKELCURVE_VEC_TYPE_ROTATION,
/* 2 */ SKELCURVE_VEC_TYPE_POSIITON,

View file

@ -34,7 +34,7 @@ void func_8006D0AC(PlayState* play) {
}
}
typedef struct {
typedef struct HorseSpawn {
/* 0x00 */ s16 sceneId;
/* 0x02 */ Vec3s pos;
/* 0x08 */ s16 angle;
@ -121,7 +121,7 @@ void func_8006D0EC(PlayState* play, Player* player) {
}
}
typedef struct {
typedef struct struct_8011F9B8 {
/* 0x00 */ s16 sceneId;
/* 0x04 */ s32 cutsceneIndex;
/* 0x08 */ Vec3s pos;

View file

@ -9,14 +9,14 @@
#pragma increment_block_number "gc-eu:128 gc-eu-mq:128 gc-jp:128 gc-jp-ce:128 gc-jp-mq:128 gc-us:128 gc-us-mq:128"
typedef enum {
typedef enum LightningBoltState {
/* 0x00 */ LIGHTNING_BOLT_START,
/* 0x01 */ LIGHTNING_BOLT_WAIT,
/* 0x02 */ LIGHTNING_BOLT_DRAW,
/* 0xFF */ LIGHTNING_BOLT_INACTIVE = 0xFF
} LightningBoltState;
typedef struct {
typedef struct ZBufValConversionEntry {
/* 0x00 */ s32 mantissaShift; // shift applied to the mantissa of the z buffer value
/* 0x04 */ s32 base; // 15.3 fixed-point base value for the exponent
} ZBufValConversionEntry; // size = 0x8
@ -41,7 +41,7 @@ u16 gTimeSpeed = 0;
u16 sSunScreenDepth = GPACK_ZDZ(G_MAXFBZ, 0);
typedef struct {
typedef struct TimeBasedLightEntry {
/* 0x00 */ u16 startTime;
/* 0x02 */ u16 endTime;
/* 0x04 */ u8 lightSetting;
@ -193,7 +193,7 @@ s16 gLensFlareScale;
f32 gLensFlareColorIntensity;
s16 gLensFlareGlareStrength;
typedef struct {
typedef struct LightningBolt {
/* 0x00 */ u8 state;
/* 0x04 */ Vec3f offset;
/* 0x10 */ Vec3f pos;
@ -1485,7 +1485,7 @@ void Environment_DrawSunLensFlare(PlayState* play, EnvironmentContext* envCtx, V
f32 sLensFlareScales[] = { 23.0f, 12.0f, 7.0f, 5.0f, 3.0f, 10.0f, 6.0f, 2.0f, 3.0f, 1.0f };
typedef enum {
typedef enum LensFlareType {
/* 0 */ LENS_FLARE_CIRCLE0,
/* 1 */ LENS_FLARE_CIRCLE1,
/* 2 */ LENS_FLARE_RING

Some files were not shown because too many files have changed in this diff Show more