diff options
| author | engineer124 <47598039+engineer124@users.noreply.github.com> | 2022-12-08 13:54:38 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-08 15:54:38 -0300 |
| commit | b73d18b1541b39f99fcbc085f3119b73777fea89 (patch) | |
| tree | 2efa387b8cb98049327614f6ad9cf6318fb49fa7 /include | |
| parent | ea83e49e6e2790b6cd7477110c8d1c535420b64e (diff) | |
`z_parameter`: Main (#1157)
* main docs
* formatting and bss issues
* PR Suggestions
* missed enums
* better macros/enums
* restrictions improvement, still wip
* fix name, more common restriction patterns
* more restrictions cleanup
* rm comment
Diffstat (limited to 'include')
| -rw-r--r-- | include/functions.h | 19 | ||||
| -rw-r--r-- | include/regs.h | 28 | ||||
| -rw-r--r-- | include/variables.h | 123 | ||||
| -rw-r--r-- | include/z64.h | 4 | ||||
| -rw-r--r-- | include/z64actor.h | 2 | ||||
| -rw-r--r-- | include/z64interface.h | 118 | ||||
| -rw-r--r-- | include/z64item.h | 11 | ||||
| -rw-r--r-- | include/z64player.h | 12 | ||||
| -rw-r--r-- | include/z64save.h | 27 |
9 files changed, 167 insertions, 177 deletions
diff --git a/include/functions.h b/include/functions.h index 77c3fa371..27c11bbe7 100644 --- a/include/functions.h +++ b/include/functions.h @@ -1621,9 +1621,9 @@ s32 func_8010A0A4(PlayState* play); void Minimap_SavePlayerRoomInitInfo(PlayState* play); void Map_InitRoomData(PlayState* play, s16 room); void Map_Destroy(PlayState* play); -// void Map_Init(PlayState* play); -// void Minimap_Draw(PlayState* play); -// void Map_Update(PlayState* play); +void Map_Init(PlayState* play); +void Minimap_Draw(PlayState* play); +void Map_Update(PlayState* play); // void func_8010A760(void); // void func_8010A7CC(void); // void func_8010A814(void); @@ -1710,8 +1710,7 @@ void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState); void Interface_NewDay(PlayState* play, s32 day); void Interface_SetHudVisibility(u16 hudVisibility); void func_80110038(PlayState* play); -// void func_80111CB4(void); -// void func_801129E4(void); +void Interface_SetSceneRestrictions(PlayState* play); void Interface_InitMinigame(PlayState* play); void Interface_LoadItemIconImpl(PlayState* play, u8 btn); void Interface_LoadItemIcon(PlayState* play, u8 btn); @@ -1727,12 +1726,10 @@ s32 Inventory_HasItemInBottle(u8 item); void Inventory_UpdateBottleItem(PlayState* play, u8 item, u8 btn); s32 Inventory_ConsumeFairy(PlayState* play); void Inventory_UpdateItem(PlayState* play, s16 slot, s16 item); -// void func_801153C8(void); -// void func_80115428(void); void func_8011552C(PlayState* play, u16 arg1); void func_801155B4(PlayState* play, s16 arg1); void func_80115764(PlayState* play, UNK_TYPE arg1); -void func_80115844(PlayState* play, s16 param_2); +void func_80115844(PlayState* play, s16 doAction); s32 Health_ChangeBy(PlayState* play, s16 healthChange); void Health_GiveHearts(s16 hearts); void Rupees_ChangeBy(s16 rupeeChange); @@ -1812,7 +1809,7 @@ s32 Player_ActionToExplosive(Player* player, PlayerItemAction itemAction); s32 Player_GetExplosiveHeld(Player* player); s32 Player_ActionToSword(Actor* actor, PlayerItemAction itemAction); s32 func_801242B4(Player* player); -s32 Player_GetEnvTimerType(PlayState* play); +s32 Player_GetEnvironmentalHazard(PlayState* play); void func_80124420(Player* player); void func_80124618(struct_80124618 arg0[], f32 curFrame, Vec3f* arg2); void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, PlayerTransformation playerForm, s32 boots, s32 face, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor); @@ -2327,8 +2324,8 @@ void func_80165DF0(void); // void func_80166060(void); Gfx* func_801660B8(PlayState* play, Gfx* gfx); void Play_Destroy(GameState* thisx); -// void func_801663C4(void); -// void func_80166644(void); +void Play_CompressI8ToI5(void* srcI8, void* destI5, size_t size); +void Play_DecompressI5ToI8(void* srcI5, void* destI8, size_t size); // void func_801668B4(void); void func_80166968(PlayState* play, Camera* camera); void func_80166B30(PlayState* play); diff --git a/include/regs.h b/include/regs.h index 41ba0c291..b19131748 100644 --- a/include/regs.h +++ b/include/regs.h @@ -60,14 +60,24 @@ #define R_PLAY_FILL_SCREEN_B MREG(67) #define R_PLAY_FILL_SCREEN_ALPHA MREG(68) -#define R_PAUSE_WORLD_MAP_YAW YREG(24) -#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25) -#define R_PAUSE_WORLD_MAP_DEPTH YREG(26) -#define R_PAUSE_DBG_QUEST_CURSOR_ON YREG(69) -#define R_PAUSE_DBG_QUEST_CURSOR_X YREG(70) -#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71) -#define R_C_UP_ICON_X YREG(88) -#define R_C_UP_ICON_Y YREG(89) +#define R_PAUSE_WORLD_MAP_YAW YREG(24) +#define R_PAUSE_WORLD_MAP_Y_OFFSET YREG(25) +#define R_PAUSE_WORLD_MAP_DEPTH YREG(26) +#define R_PICTO_FOCUS_BORDER_TOPLEFT_X YREG(32) +#define R_PICTO_FOCUS_BORDER_TOPLEFT_Y YREG(33) +#define R_PICTO_FOCUS_BORDER_TOPRIGHT_X YREG(34) +#define R_PICTO_FOCUS_BORDER_TOPRIGHT_Y YREG(35) +#define R_PICTO_FOCUS_BORDER_BOTTOMLEFT_X YREG(36) +#define R_PICTO_FOCUS_BORDER_BOTTOMLEFT_Y YREG(37) +#define R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_X YREG(38) +#define R_PICTO_FOCUS_BORDER_BOTTOMRIGHT_Y YREG(39) +#define R_PICTO_FOCUS_ICON_X YREG(40) +#define R_PICTO_FOCUS_ICON_Y YREG(41) +#define R_PICTO_FOCUS_TEXT_X YREG(42) +#define R_PICTO_FOCUS_TEXT_Y YREG(43) +#define R_PAUSE_DBG_QUEST_CURSOR_ON YREG(69) +#define R_PAUSE_DBG_QUEST_CURSOR_X YREG(70) +#define R_PAUSE_DBG_QUEST_CURSOR_Y YREG(71) #define R_MAGIC_FILL_COLOR(i) ZREG(0 + i) #define R_C_BTN_COLOR(i) ZREG(39 + i) @@ -86,11 +96,13 @@ #define R_ITEM_ICON_Y(i) ZREG(86 + i) #define R_ITEM_ICON_DD(i) ZREG(90 + i) +#define R_MAGIC_DBG_SET_UPGRADE XREG(4) #define R_A_BTN_Y XREG(16) #define R_A_BTN_X XREG(17) #define R_A_ICON_Y XREG(19) #define R_A_ICON_X XREG(20) #define R_A_BTN_COLOR(i) XREG(22 + i) +#define R_A_BTN_Y_OFFSET XREG(31) #define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41) #define R_THREE_DAY_CLOCK_Y_POS XREG(43) #define R_THREE_DAY_CLOCK_SUN_MOON_CUTOFF XREG(44) diff --git a/include/variables.h b/include/variables.h index fc156ff31..70874a1ec 100644 --- a/include/variables.h +++ b/include/variables.h @@ -631,127 +631,6 @@ extern UNK_PTR D_801BEC14; // extern UNK_TYPE2 D_801BF5B0; extern UNK_PTR D_801BF5C0; // extern UNK_TYPE1 D_801BF68C; -// extern UNK_TYPE1 D_801BF6C0; -// extern UNK_TYPE1 D_801BF79E; -// extern UNK_TYPE2 D_801BF884; -// extern UNK_TYPE2 D_801BF888; -// extern UNK_TYPE2 D_801BF88C; -// extern UNK_TYPE2 D_801BF890; -// extern UNK_TYPE2 D_801BF898; -// extern UNK_TYPE2 D_801BF89C; -// extern UNK_TYPE2 sMagicMeterOutlinePrimRed; -// extern UNK_TYPE2 sMagicMeterOutlinePrimGreen; -// extern UNK_TYPE2 sMagicMeterOutlinePrimBlue; -// extern UNK_TYPE2 sMagicBorderRatio; -// extern UNK_TYPE2 sMagicBorderStep; -// extern UNK_TYPE2 sEnvTimerType; -// extern UNK_TYPE2 sEnvTimerActive; -// extern UNK_TYPE2 sPostmanBunnyHoodState; -// extern UNK_TYPE4 sTimerPausedOsTime; -// extern UNK_TYPE4 sBottleTimerPausedOsTime; -// extern UNK_TYPE4 D_801BF8F4; -// extern UNK_TYPE4 D_801BF8F8; -// extern UNK_TYPE4 D_801BF8FC; -// extern UNK_TYPE4 D_801BF930; -// extern UNK_TYPE4 D_801BF934; -// extern UNK_TYPE1 sIsTimerPaused; -// extern UNK_TYPE1 D_801BF96A; -// extern UNK_TYPE1 sIsBottleTimerPaused; -// extern UNK_TYPE1 D_801BF96E; -// extern UNK_TYPE2 sTimerId; -// extern UNK_TYPE1 D_801BF972; -// extern UNK_TYPE2 D_801BF974; -// extern UNK_TYPE2 D_801BF978; -// extern UNK_TYPE2 D_801BF97C; -// extern UNK_TYPE4 D_801BF980; -// extern UNK_TYPE1 D_801BF988; -// extern UNK_TYPE1 D_801BF998; -// extern UNK_TYPE2 D_801BF9B0; -// extern UNK_TYPE1 D_801BF9B4; -// extern UNK_TYPE1 D_801BF9BC; -// extern UNK_TYPE1 D_801BF9C4; -// extern UNK_TYPE1 D_801BF9C8; -// extern UNK_TYPE1 D_801BF9CC; -// extern UNK_TYPE2 D_801BF9D4; -// extern UNK_TYPE2 D_801BF9D6; -// extern UNK_TYPE2 D_801BF9D8; -// extern UNK_TYPE2 D_801BF9DA; -// extern UNK_TYPE2 D_801BF9DC; -// extern UNK_TYPE2 D_801BF9DE; -// extern UNK_TYPE2 D_801BF9E0; -// extern UNK_TYPE2 D_801BF9E2; -// extern UNK_TYPE2 D_801BF9E4; -// extern UNK_TYPE2 D_801BF9E6; -// extern UNK_TYPE2 D_801BF9E8; -// extern UNK_TYPE2 D_801BF9EA; -// extern UNK_TYPE2 D_801BF9EC; -// extern UNK_TYPE2 D_801BF9F0; -// extern UNK_TYPE2 D_801BF9F4; -// extern UNK_TYPE2 D_801BF9F8; -// extern UNK_TYPE2 D_801BF9FC; -// extern UNK_TYPE2 D_801BFA00; -// extern UNK_TYPE1 D_801BFAB0; -// extern UNK_TYPE1 D_801BFAB8; -// extern UNK_TYPE1 D_801BFAC4; -// extern UNK_TYPE1 D_801BFACC; -// extern UNK_TYPE1 D_801BFAD4; -// extern UNK_TYPE2 D_801BFAF4; -// extern UNK_TYPE2 D_801BFAF6; -// extern UNK_TYPE2 D_801BFAF8; -// extern UNK_TYPE2 D_801BFAFA; -// extern UNK_TYPE1 D_801BFAFC; -// extern UNK_TYPE1 D_801BFB04; -// extern UNK_TYPE1 D_801BFB0C; -// extern UNK_TYPE1 D_801BFB14; -// extern UNK_TYPE1 D_801BFB1C; -// extern UNK_TYPE1 D_801BFB24; -// extern UNK_TYPE2 sThreeDayClockAlpha; -// extern UNK_TYPE2 D_801BFB30; -// extern UNK_TYPE2 D_801BFB34; -// extern UNK_TYPE1 sThreeDayClockHours; -// extern UNK_TYPE1 sThreeDayClockHourTextures; -// extern UNK_TYPE2 D_801BFBCC; -// extern UNK_TYPE2 D_801BFBD0; -// extern UNK_TYPE2 D_801BFBD4; -// extern UNK_TYPE2 D_801BFBD8; -// extern UNK_TYPE2 D_801BFBDC; -// extern UNK_TYPE2 D_801BFBE0; -// extern UNK_TYPE2 D_801BFBE4; -// extern UNK_TYPE2 D_801BFBE8; -// extern UNK_TYPE1 D_801BFBEC; -// extern UNK_TYPE1 D_801BFBF0; -// extern UNK_TYPE1 D_801BFBF4; -// extern UNK_TYPE1 D_801BFBF8; -// extern UNK_TYPE1 D_801BFBFC; -// extern UNK_TYPE1 D_801BFC00; -// extern UNK_TYPE1 D_801BFC04; -// extern UNK_TYPE1 D_801BFC08; -// extern UNK_TYPE1 D_801BFC0C; -// extern UNK_TYPE1 D_801BFC10; -// extern UNK_TYPE1 sFinalHoursDigitTextures; -// extern UNK_TYPE1 D_801BFC40; -// extern UNK_TYPE2 sTimerStateTimer; -// extern UNK_TYPE2 sTimerDigits; -// extern UNK_TYPE2 D_801BFCEA; -// extern UNK_TYPE2 D_801BFCEC; -// extern UNK_TYPE2 D_801BFCEE; -// extern UNK_TYPE2 D_801BFCF0; -// extern UNK_TYPE2 D_801BFCF2; -// extern UNK_TYPE2 D_801BFCF4; -// extern UNK_TYPE2 sTimerBeepSfxSeconds; -// extern UNK_TYPE2 D_801BFCFC; -// extern UNK_TYPE2 D_801BFD0C; -// extern UNK_TYPE1 D_801BFD1C; -// extern UNK_TYPE1 D_801BFD24; -// extern UNK_TYPE1 D_801BFD2C; -// extern UNK_TYPE1 D_801BFD40; -// extern UNK_TYPE1 D_801BFD54; -// extern UNK_TYPE1 D_801BFD64; -// extern UNK_TYPE2 D_801BFD6C; -// extern UNK_TYPE1 D_801BFD84; -// extern UNK_TYPE1 D_801BFD8C; -// extern UNK_TYPE1 D_801BFD94; -// extern UNK_TYPE2 D_801BFD98; extern FlexSkeletonHeader* gPlayerSkeletons[PLAYER_FORM_MAX]; extern PlayerModelIndices gPlayerModelTypes[]; @@ -2926,7 +2805,7 @@ extern GfxPool gGfxPools[2]; extern u8 gAudioHeap[0x138000]; extern u8 gSystemHeap[UNK_SIZE]; -extern u8 D_80780000[0x4600]; +extern u8 gPictoPhotoI8[PICTO_PHOTO_SIZE]; extern u8 D_80784600[0x56200]; extern u16 gFramebuffer0[SCREEN_HEIGHT][SCREEN_WIDTH]; diff --git a/include/z64.h b/include/z64.h index edc8e5bbf..b8a3ac01e 100644 --- a/include/z64.h +++ b/include/z64.h @@ -987,7 +987,9 @@ struct PlayState { /* 0x18B4C */ PreRender pauseBgPreRender; /* 0x18B9C */ char unk_18B9C[0x2B8]; /* 0x18E54 */ SceneTableEntry* loadedScene; - /* 0x18E58 */ char unk_18E58[0x10]; + /* 0x18E58 */ char unk_18E58[0x4]; + /* 0x18E5C */ TexturePtr pictoPhotoI8; + /* 0x18E60 */ char unk_18E60[0x8]; /* 0x18E68 */ void* unk_18E68; /* 0x18E6C */ char unk_18E6C[0x3EC]; }; // size = 0x19258 diff --git a/include/z64actor.h b/include/z64actor.h index 3af22c4e9..ce6cfe321 100644 --- a/include/z64actor.h +++ b/include/z64actor.h @@ -310,7 +310,7 @@ typedef enum { #define ACTORCTX_FLAG_0 (1 << 0) #define ACTORCTX_FLAG_1 (1 << 1) -#define ACTORCTX_FLAG_2 (1 << 2) +#define ACTORCTX_FLAG_PICTO_BOX_ON (1 << 2) #define ACTORCTX_FLAG_3 (1 << 3) #define ACTORCTX_FLAG_4 (1 << 4) #define ACTORCTX_FLAG_5 (1 << 5) diff --git a/include/z64interface.h b/include/z64interface.h index cd17b1267..385f80835 100644 --- a/include/z64interface.h +++ b/include/z64interface.h @@ -5,6 +5,60 @@ #include "z64view.h" typedef enum { + /* 0 */ A_BTN_STATE_0, + /* 1 */ A_BTN_STATE_1, + /* 2 */ A_BTN_STATE_2, + /* 3 */ A_BTN_STATE_3, + /* 4 */ A_BTN_STATE_4 +} AButtonState; + +typedef enum { + /* 0x00 */ DO_ACTION_ATTACK, + /* 0x01 */ DO_ACTION_CHECK, + /* 0x02 */ DO_ACTION_ENTER, + /* 0x03 */ DO_ACTION_RETURN, + /* 0x04 */ DO_ACTION_OPEN, + /* 0x05 */ DO_ACTION_JUMP, + /* 0x06 */ DO_ACTION_DECIDE, + /* 0x07 */ DO_ACTION_DIVE, + /* 0x08 */ DO_ACTION_FASTER, + /* 0x09 */ DO_ACTION_THROW, + /* 0x0A */ DO_ACTION_NONE, // in do_action_static, the texture at this position is NAVI, however this value is in practice the "No Action" value + /* 0x0B */ DO_ACTION_CLIMB, + /* 0x0C */ DO_ACTION_DROP, + /* 0x0D */ DO_ACTION_DOWN, + /* 0x0E */ DO_ACTION_QUIT, + /* 0x0F */ DO_ACTION_SPEAK, + /* 0x10 */ DO_ACTION_NEXT, + /* 0x11 */ DO_ACTION_GRAB, + /* 0x12 */ DO_ACTION_STOP, + /* 0x13 */ DO_ACTION_PUTAWAY, + /* 0x14 */ DO_ACTION_REEL, + /* 0x15 */ DO_ACTION_INFO, + /* 0x16 */ DO_ACTION_WARP, + /* 0x17 */ DO_ACTION_SNAP, + /* 0x18 */ DO_ACTION_EXPLODE, + /* 0x19 */ DO_ACTION_DANCE, + /* 0x1A */ DO_ACTION_MARCH, + /* 0x1B */ DO_ACTION_1, + /* 0x1C */ DO_ACTION_2, + /* 0x1D */ DO_ACTION_3, + /* 0x1E */ DO_ACTION_4, + /* 0x1F */ DO_ACTION_5, + /* 0x20 */ DO_ACTION_6, + /* 0x21 */ DO_ACTION_7, + /* 0x22 */ DO_ACTION_8, + /* 0x23 */ DO_ACTION_CURL, + /* 0x24 */ DO_ACTION_SURFACE, + /* 0x25 */ DO_ACTION_SWIM, + /* 0x26 */ DO_ACTION_PUNCH, + /* 0x27 */ DO_ACTION_POUND, + /* 0x28 */ DO_ACTION_HOOK, + /* 0x29 */ DO_ACTION_SHOOT, + /* 0x2A */ DO_ACTION_MAX +} DoAction; + +typedef enum { /* 0 */ MINIGAME_STATE_NONE, /* 1 */ MINIGAME_STATE_COUNTDOWN_SETUP_3, /* 2 */ MINIGAME_STATE_COUNTDOWN_3, @@ -39,6 +93,27 @@ typedef enum { #define PERFECT_LETTERS_NUM_LETTERS 8 #define PERFECT_LETTERS_ANGLE_PER_LETTER (0x10000 / PERFECT_LETTERS_NUM_LETTERS) +typedef enum { + /* 0 */ STORY_DMA_IDLE, + /* 1 */ STORY_DMA_LOADING, + /* 2 */ STORY_DMA_DONE +} StoryLoadStatus; + +typedef enum { + /* 0 */ STORY_STATE_OFF, + /* 1 */ STORY_STATE_INIT, + /* 2 */ STORY_STATE_IDLE, + /* 3 */ STORY_STATE_DESTROY, + /* 4 */ STORY_STATE_SETUP_IDLE, + /* 5 */ STORY_STATE_FADE_OUT, + /* 6 */ STORY_STATE_FADE_IN +} StoryState; + +typedef enum { + /* 0 */ STORY_TYPE_MASK_FESTIVAL, + /* 1 */ STORY_TYPE_GIANTS_LEAVING +} StoryType; + typedef struct { /* 0x000 */ View view; /* 0x168 */ Vtx* actionVtx; @@ -47,17 +122,16 @@ typedef struct { /* 0x174 */ u8* doActionSegment; /* 0x178 */ u8* iconItemSegment; /* 0x17C */ u8* mapSegment; - /* 0x180 */ u8* unk_180; - /* 0x184 */ DmaRequest dmaRequest_184; - /* 0x1A4 */ DmaRequest dmaRequest_1A4; - /* 0x1C4 */ DmaRequest dmaRequest_1C4; + /* 0x180 */ u8* unk_180; // unused segment? + /* 0x184 */ DmaRequest dmaRequest; + /* 0x1A4 */ UNK_TYPE1 unk_1A4[0x40]; // likely 2 DmaRequest /* 0x1E4 */ OSMesgQueue loadQueue; /* 0x1FC */ OSMesg loadMsg; /* 0x200 */ Viewport viewport; - /* 0x210 */ s16 unk_210; + /* 0x210 */ s16 aButtonState; /* 0x212 */ u16 unk_212; - /* 0x214 */ u16 unk_214; - /* 0x218 */ f32 unk_218; + /* 0x214 */ u16 aButtonDoAction; + /* 0x218 */ f32 aButtonRoll; /* 0x21C */ s16 unk_21C; /* 0x21E */ s16 bButtonDoAction; /* 0x220 */ s16 unk_220; @@ -74,7 +148,7 @@ typedef struct { /* 0x246 */ s16 heartsEnvG[2]; /* 0x24A */ s16 heartsEnvB[2]; /* 0x24E */ s16 health; - /* 0x250 */ s16 unkTimer; + /* 0x250 */ s16 healthTimer; /* 0x252 */ s16 lifeSizeChange; /* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing /* 0x256 */ s16 unk_256; @@ -84,7 +158,7 @@ typedef struct { /* 0x25E */ u16 minigameHiddenPoints; // Points to add to the secondary set of minigame points not displayed. Reset to 0 every frame. /* 0x260 */ u16 minigameAmmo; /* 0x262 */ u16 minigameUnusedPoints; // Associated with other minigame points, unused - /* 0x264 */ s16 unk_264; + /* 0x264 */ s16 screenFillAlpha; /* 0x266 */ s16 aAlpha; /* 0x268 */ s16 bAlpha; /* 0x26A */ s16 cLeftAlpha; @@ -116,27 +190,27 @@ typedef struct { /* 0x30A */ s16 perfectLettersColorTimer; /* 0x30C */ s16 perfectLettersTimer; struct { - /* 0x30E */ u8 unk_30E; // "h_gauge" + /* 0x30E */ u8 hGauge; /* 0x30F */ u8 bButton; /* 0x310 */ u8 aButton; - /* 0x311 */ u8 tradeItems; - /* 0x312 */ u8 unk_312; - /* 0x313 */ u8 unk_313; - /* 0x314 */ u8 unk_314; + /* 0x311 */ u8 tradeItems; // Includes deed trade quest, anju/kafei trade quest, bottles, and ocarina + /* 0x312 */ u8 songOfTime; + /* 0x313 */ u8 songOfDoubleTime; + /* 0x314 */ u8 invSongOfTime; /* 0x315 */ u8 songOfSoaring; /* 0x316 */ u8 songOfStorms; - /* 0x317 */ u8 unk_317; - /* 0x318 */ u8 pictographBox; + /* 0x317 */ u8 masks; + /* 0x318 */ u8 pictoBox; /* 0x319 */ u8 all; // "another"; enables all item restrictions } restrictions; // size = 0xC /* 0x31A */ u8 storyState; /* 0x31B */ u8 storyType; - /* 0x31C */ u8 unk_31C; - /* 0x320 */ OSMesgQueue unk_320; - /* 0x338 */ OSMesg unk_338; - /* 0x33C */ void* unk_33C; - /* 0x340 */ u32 unk_340; - /* 0x344 */ u32 unk_344; + /* 0x31C */ u8 storyDmaStatus; + /* 0x320 */ OSMesgQueue storyMsgQueue; + /* 0x338 */ OSMesg storyMsgBuf; + /* 0x33C */ u8* storySegment; + /* 0x340 */ uintptr_t storyAddr; + /* 0x344 */ size_t storySize; } InterfaceContext; // size = 0x348 #endif diff --git a/include/z64item.h b/include/z64item.h index 8110a3dd4..d1d36ebba 100644 --- a/include/z64item.h +++ b/include/z64item.h @@ -9,7 +9,8 @@ typedef enum { /* 0 */ EQUIP_TYPE_SWORD, /* 1 */ EQUIP_TYPE_SHIELD, - /* 2 */ EQUIP_TYPE_MAX + /* 2 */ EQUIP_TYPE_TUNIC, // Remnant of OoT + /* 3 */ EQUIP_TYPE_MAX } EquipmentType; typedef enum { @@ -29,6 +30,14 @@ typedef enum { } EquipValueShield; typedef enum { + /* 0 */ EQUIP_VALUE_TUNIC_NONE, + /* 1 */ EQUIP_VALUE_TUNIC_KOKIRI, + /* 2 */ EQUIP_VALUE_TUNIC_GORON, + /* 3 */ EQUIP_VALUE_TUNIC_ZORA, + /* 4 */ EQUIP_VALUE_TUNIC_MAX +} EquipValueTunic; // Remnant of OoT + +typedef enum { /* 0 */ UPG_QUIVER, /* 1 */ UPG_BOMB_BAG, /* 2 */ UPG_STRENGTH, diff --git a/include/z64player.h b/include/z64player.h index 21a1c0ca4..e99b261ce 100644 --- a/include/z64player.h +++ b/include/z64player.h @@ -72,12 +72,12 @@ typedef enum PlayerMask { } PlayerMask; typedef enum { - /* 0 */ PLAYER_ENV_TIMER_NONE, - /* 1 */ PLAYER_ENV_TIMER_HOTROOM, - /* 2 */ PLAYER_ENV_TIMER_UNDERWATER_FLOOR, - /* 3 */ PLAYER_ENV_TIMER_SWIMMING, - /* 4 */ PLAYER_ENV_TIMER_UNDERWATER_FREE -} PlayerEnvTimerType; + /* 0 */ PLAYER_ENV_HAZARD_NONE, + /* 1 */ PLAYER_ENV_HAZARD_HOTROOM, + /* 2 */ PLAYER_ENV_HAZARD_UNDERWATER_FLOOR, + /* 3 */ PLAYER_ENV_HAZARD_SWIMMING, + /* 4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE +} PlayerEnvHazard; typedef enum PlayerItemAction { /* -1 */ PLAYER_IA_MINUS1 = -1, diff --git a/include/z64save.h b/include/z64save.h index d694327ff..f9083144d 100644 --- a/include/z64save.h +++ b/include/z64save.h @@ -55,6 +55,14 @@ typedef enum { #define MAGIC_NORMAL_METER 0x30 #define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER) +// See `R_MAGIC_DBG_SET_UPGRADE` +#define MAGIC_DBG_SET_UPGRADE_NO_ACTION 0 +#define MAGIC_DBG_SET_UPGRADE_NORMAL_METER -1 +#define MAGIC_DBG_SET_UPGRADE_DOUBLE_METER 1 + +#define ENV_HAZARD_TEXT_TRIGGER_HOTROOM (1 << 0) +#define ENV_HAZARD_TEXT_TRIGGER_UNDERWATER (1 << 1) + #define SECONDS_TO_TIMER(seconds) ((seconds) * 100) #define OSTIME_TO_TIMER(osTime) ((osTime) * 64 / 3000 / 10000) @@ -69,7 +77,7 @@ typedef enum { /* 2 */ TIMER_ID_2, /* 3 */ TIMER_ID_MOON_CRASH, // timer used for mooncrash on the clocktower roof /* 4 */ TIMER_ID_MINIGAME_2, // minigame timer - /* 5 */ TIMER_ID_ENV, // environmental timer (underwater or hot room) + /* 5 */ TIMER_ID_ENV_HAZARD, // environmental hazard timer (underwater or hot room) /* 6 */ TIMER_ID_GORON_RACE_UNUSED, /* 7 */ TIMER_ID_MAX, /* 99 */ TIMER_ID_NONE = 99, @@ -89,7 +97,7 @@ typedef enum { /* 5 */ TIMER_STATE_STOP, /* 6 */ TIMER_STATE_6, // like `TIMER_STATE_STOP` but with extra minigame checks /* 7 */ TIMER_STATE_7, // stopped but still update `timerCurTimes` - /* 8 */ TIMER_STATE_ENV_START, + /* 8 */ TIMER_STATE_ENV_HAZARD_START, /* 9 */ TIMER_STATE_ALT_START, /* 10 */ TIMER_STATE_10, // precursor to `TIMER_STATE_ALT_COUNTING` /* 11 */ TIMER_STATE_ALT_COUNTING, @@ -139,6 +147,15 @@ typedef enum { /* 52 */ HUD_VISIBILITY_NONE_INSTANT = 52 } HudVisibility; +#define PICTO_PHOTO_WIDTH 160 +#define PICTO_PHOTO_HEIGHT 112 + +#define PICTO_PHOTO_TOPLEFT_X ((SCREEN_WIDTH - PICTO_PHOTO_WIDTH) / 2) +#define PICTO_PHOTO_TOPLEFT_Y ((SCREEN_HEIGHT - PICTO_PHOTO_HEIGHT) / 2) + +#define PICTO_PHOTO_SIZE (PICTO_PHOTO_WIDTH * PICTO_PHOTO_HEIGHT) +#define PICTO_PHOTO_COMPRESSED_SIZE (PICTO_PHOTO_SIZE * 5 / 8) + typedef struct SramContext { /* 0x00 */ u8* readBuff; /* 0x04 */ u8 *saveBuf; @@ -304,7 +321,7 @@ typedef struct SaveContext { /* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub" /* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time" /* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time" - /* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo + /* 0x10E0 */ u8 pictoPhotoI5[PICTO_PHOTO_COMPRESSED_SIZE]; // buffer containing the pictograph photo, compressed to I5 from I8 /* 0x3CA0 */ s32 fileNum; // "file_no" /* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer" /* 0x3CA6 */ u8 unk_3CA6; @@ -318,7 +335,7 @@ typedef struct SaveContext { /* 0x3DBA */ u8 unk_3DBA; // "player_wipe_item" /* 0x3DBB */ u8 unk_3DBB; // "next_walk" /* 0x3DBC */ s16 dogParams; // "dog_flag" - /* 0x3DBE */ u8 textTriggerFlags; // "guide_status" + /* 0x3DBE */ u8 envHazardTextTriggerFlags; // "guide_status" /* 0x3DBF */ u8 showTitleCard; // "name_display" /* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer" /* 0x3DC2 */ u8 unk_3DC2; // "pad1" @@ -607,7 +624,7 @@ typedef enum SunsSongState { #define WEEKEVENTREG_14_02 PACK_WEEKEVENTREG_FLAG(14, 0x02) #define WEEKEVENTREG_14_04 PACK_WEEKEVENTREG_FLAG(14, 0x04) -#define WEEKEVENTREG_14_08 PACK_WEEKEVENTREG_FLAG(14, 0x08) +#define WEEKEVENTREG_DRANK_CHATEAU_ROMANI PACK_WEEKEVENTREG_FLAG(14, 0x08) #define WEEKEVENTREG_14_10 PACK_WEEKEVENTREG_FLAG(14, 0x10) #define WEEKEVENTREG_14_20 PACK_WEEKEVENTREG_FLAG(14, 0x20) #define WEEKEVENTREG_14_40 PACK_WEEKEVENTREG_FLAG(14, 0x40) |
