merge master

This commit is contained in:
engineer124
2022-09-30 10:09:44 -04:00
174 changed files with 7049 additions and 2742 deletions
+19 -29
View File
@@ -1654,7 +1654,7 @@ s16 func_80105318(void);
void func_8010549C(PlayState* play, void* segmentAddress);
void func_8010565C(PlayState* play, u8 num, void* segmentAddress);
void func_80105818(PlayState* play, u32 uParm2, TransitionActorEntry* puParm3);
void func_80105A40(void);
void func_80105A40(PlayState* play);
void func_80105B34(PlayState* play);
void func_80105C40(s16 arg0);
// void func_80105FE0(void);
@@ -1731,7 +1731,7 @@ s32 func_8010A0A4(PlayState* play);
// void func_8010A2AC(PlayState* play);
void Minimap_SavePlayerRoomInitInfo(PlayState* play);
void Map_InitRoomData(PlayState* play, s16 room);
// void Map_Destroy(void);
void Map_Destroy(PlayState* play);
// void Map_Init(PlayState* play);
// void Minimap_Draw(PlayState* play);
// void Map_Update(PlayState* play);
@@ -1810,26 +1810,19 @@ Vec3s* OLib_Vec3fDiffBinAng(Vec3s* dest, Vec3f* a, Vec3f* b);
void OLib_DbCameraVec3fDiff(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode);
void OLib_DbCameraVec3fSum(PosRot* a, Vec3f* b, Vec3f* dest, s16 mode);
// void func_8010CB80(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10);
// void func_8010CD98(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10);
Gfx* func_8010CD98(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
// void func_8010CFBC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14);
// void func_8010D2D4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11);
// void func_8010D480(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10, UNK_TYPE2 param_11, UNK_TYPE2 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14, UNK_TYPE4 param_15, UNK_TYPE4 param_16);
// void func_8010D7D0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE2 param_10);
Gfx* func_8010D7D0(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, s16 rectLeft, s16 rectTop, s16 rectWidth, s16 rectHeight, u16 dsdx, u16 dtdy);
// void func_8010D9F4(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6, UNK_TYPE2 param_7, UNK_TYPE2 param_8, UNK_TYPE2 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE2 param_13, UNK_TYPE2 param_14);
// void func_8010DC58(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5);
Gfx* func_8010DC58(Gfx* displayListHead, void* texture, s16 textureWidth, s16 textureHeight, u16 i);
// void func_8010DE38(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE2 param_5, UNK_TYPE2 param_6);
// void func_8010E028(void);
// void func_8010E968(void);
void func_8010E9F0(s16 arg0, s16 arg1);
void func_8010EA9C(s32 arg0, s32 arg1);
// void func_8010EB50(void);
// void func_8010EBA0(void);
// void func_8010EC54(void);
void Interface_StartTimer(s16 timerId, s16 seconds);
void Interface_StartPostmanTimer(s16 seconds, s16 bunnyHoodState);
void func_8010EE74(PlayState* play, s32 day);
void Interface_ChangeAlpha(u16 param_1);
// void func_8010EF9C(void);
// void func_8010F0D4(void);
// void func_8010F1A8(void);
void Interface_SetHudVisibility(u16 hudVisibility);
// void func_80110038(void);
// void func_80111CB4(void);
void func_801129E4(PlayState* play);
@@ -1876,17 +1869,14 @@ void func_8011B4E0(PlayState* play, s32 arg1);
// void func_8011B9E0(void);
// void func_8011BF70(void);
// void func_8011C4C4(void);
void func_8011C808(PlayState* play);
// void func_8011C898(void);
// void func_8011CA64(void);
// void func_8011E3B4(void);
void Interface_StartMoonCrash(PlayState* play);
// void func_8011E730(void);
void Interface_Draw(PlayState* play);
// void func_80120F90(void);
// void func_80121000(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE1 param_8, UNK_TYPE1 param_9, UNK_TYPE1 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12, UNK_TYPE4 param_13, UNK_TYPE4 param_14);
// void func_80121064(void);
void Interface_Update(PlayState* play);
void func_80121F94(PlayState* play);
void Interface_Destroy(PlayState* play);
void func_80121FC4(PlayState* play);
Path* Path_GetByIndex(PlayState* play, s16 index, s16 max);
f32 Path_OrientAndGetDistSq(Actor* actor, Path* path, s16 waypoint, s16* yaw);
@@ -1906,7 +1896,7 @@ void func_80122BA4(PlayState* play, struct_80122D44_arg1* arg1, s32 arg2, s32 al
void func_80122C20(PlayState* play, struct_80122D44_arg1* arg1);
void func_80122D44(PlayState* play, struct_80122D44_arg1* arg1);
u8 Player_MaskIdToItemId(s32 maskIdMinusOne);
u8 Player_GetCurMaskItemId(PlayState* play);
s32 Player_GetCurMaskItemId(PlayState* play);
void func_80122F28(Player* player);
s32 func_80122F9C(PlayState* play);
s32 func_80122FCC(PlayState* play);
@@ -1953,7 +1943,7 @@ s32 Player_ActionToExplosive(Player* player, s32 actionParam);
s32 Player_GetExplosiveHeld(Player* player);
s32 func_80124278(Actor* actor, s32 arg1);
s32 func_801242B4(Player* player);
s32 func_801242DC(PlayState* play);
s32 Player_GetEnvTimerType(PlayState* play);
void func_80124420(Player* player);
void func_80124618(struct_80124618 arg0[], f32 curFrame, Vec3f* arg2);
void func_801246F4(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic, s32 boots, s32 face, OverrideLimbDrawFlex overrideLimbDraw, PostLimbDrawFlex postLimbDraw, Actor* actor);
@@ -2100,7 +2090,7 @@ s32 Inventory_GetBtnBItem(PlayState* play);
void Inventory_ChangeEquipment(s16 value);
u8 Inventory_DeleteEquipment(PlayState* play, s16 equipment);
void Inventory_ChangeUpgrade(s16 upgrade, u32 value);
s32 Inventory_IsMapVisible(s16 sceneNum);
s32 Inventory_IsMapVisible(s16 sceneId);
void Inventory_SetMapVisibility(s16 tingleIndex);
void Inventory_SaveDekuPlaygroundHighScore(s16 timerId);
void Inventory_IncrementSkullTokenCount(s16 sceneIndex);
@@ -2186,8 +2176,8 @@ void Scene_DrawConfig5(PlayState* play);
void Scene_DrawConfigMatAnimManualStep(PlayState* play);
void Scene_DrawConfigGreatBayTemple(PlayState* play);
EntranceTableEntry* Entrance_GetTableEntry(u16 entrance);
s32 Entrance_GetSceneNum(u16 entrance);
s32 Entrance_GetSceneNumAbsolute(u16 entrance);
s32 Entrance_GetSceneId(u16 entrance);
s32 Entrance_GetSceneIdAbsolute(u16 entrance);
s32 Entrance_GetSpawnNum(u16 entrance);
s32 Entrance_GetTransitionFlags(u16 entrance);
s32 Schedule_RunScript(PlayState* play, u8* script, ScheduleOutput* output);
@@ -2405,7 +2395,7 @@ void func_8014D304(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_
// void func_8014D7B4(void);
void func_80150A84(PlayState* play);
void func_80150D08(PlayState* play, u32 uParm2);
// void func_801514B0(void);
void func_801514B0(PlayState* play, u16 arg1, u8 arg2);
void Message_StartTextbox(PlayState* play, u16 textId, Actor* Actor);
void func_80151938(PlayState* play, u16 textId);
void func_80151A68(PlayState* play, u16 textId);
@@ -2571,7 +2561,7 @@ s32 Play_ChangeCameraSetting(PlayState* play, s16 camId, s16 setting);
void func_80169AFC(PlayState* play, s16 camId, s16 arg2);
u16 Play_GetActorCsCamSetting(PlayState* play, s32 csCamDataIndex);
Vec3s* Play_GetActorCsCamFuncData(PlayState* play, s32 csCamDataIndex);
s16 Play_GetOriginalSceneNumber(s16 sceneNum);
s16 Play_GetOriginalSceneId(s16 sceneId);
void Play_SaveCycleSceneFlags(GameState* gameState);
void Play_SetRespawnData(GameState* gameState, s32 respawnNumber, u16 sceneSetup, s32 roomIndex, s32 playerParams, Vec3f* pos, s16 yaw);
void Play_SetupRespawnPoint(GameState* gameState, s32 respawnNumber, s32 playerParams);
@@ -2710,8 +2700,8 @@ void Main(void* arg);
u32 Padmgr_GetControllerBitmask(void);
void func_80174F24(void (*arg0)(void*), void* arg1);
void func_80174F44(void (*arg0)(void*), void* arg1);
// void func_80174F7C(void);
// void func_80174F9C(void);
void func_80174F7C(void (*arg0)(s32), void* arg1);
void func_80174F9C(void (*arg0)(s32), void* arg1);
// OSMesgQueue* Padmgr_GetEventCallback(void);
// void func_80175008(void);
void Padmgr_SetEventCallback(OSMesg pvParm1);
+2
View File
@@ -71,6 +71,8 @@
#define R_A_ICON_X XREG(20)
#define R_A_BTN_COLOR(i) XREG(22 + i)
#define R_MAGIC_CONSUME_TIMER_GIANTS_MASK XREG(41)
#define R_MOON_CRASH_TIMER_Y XREG(80)
#define R_MOON_CRASH_TIMER_X XREG(81)
#define R_MINIMAP_DISABLED XREG(95)
#define R_B_LABEL_DD WREG(0)
#define R_OW_MINIMAP_X WREG(29)
+3 -3
View File
@@ -922,7 +922,7 @@ DECLARE_ROM_SEGMENT(object_driftice)
DECLARE_ROM_SEGMENT(object_fall)
DECLARE_ROM_SEGMENT(object_hanareyama_obj)
DECLARE_ROM_SEGMENT(object_crace_object)
DECLARE_ROM_SEGMENT(object_dnq)
DECLARE_ROM_SEGMENT(object_dno)
DECLARE_ROM_SEGMENT(object_obj_tokeidai)
DECLARE_ROM_SEGMENT(object_eg)
DECLARE_ROM_SEGMENT(object_tru)
@@ -993,7 +993,7 @@ DECLARE_ROM_SEGMENT(object_gg)
DECLARE_ROM_SEGMENT(object_maruta)
DECLARE_ROM_SEGMENT(object_ghaka)
DECLARE_ROM_SEGMENT(object_oyu)
DECLARE_ROM_SEGMENT(object_dnp)
DECLARE_ROM_SEGMENT(object_dnq)
DECLARE_ROM_SEGMENT(object_dai)
DECLARE_ROM_SEGMENT(object_kgy)
DECLARE_ROM_SEGMENT(object_fb)
@@ -1014,7 +1014,7 @@ DECLARE_ROM_SEGMENT(object_gi_loach)
DECLARE_ROM_SEGMENT(object_gi_seahorse)
DECLARE_ROM_SEGMENT(object_bigpo)
DECLARE_ROM_SEGMENT(object_hariko)
DECLARE_ROM_SEGMENT(object_dno)
DECLARE_ROM_SEGMENT(object_dnj)
DECLARE_ROM_SEGMENT(object_sinkai_kabe)
DECLARE_ROM_SEGMENT(object_kin2_obj)
DECLARE_ROM_SEGMENT(object_ishi)
+14 -14
View File
@@ -1031,21 +1031,21 @@ extern UNK_PTR D_801BF5C0;
// extern UNK_TYPE2 sMagicMeterOutlinePrimBlue;
// extern UNK_TYPE2 sMagicBorderRatio;
// extern UNK_TYPE2 sMagicBorderStep;
// extern UNK_TYPE2 D_801BF8DC;
// extern UNK_TYPE2 D_801BF8E0;
// extern UNK_TYPE2 D_801BF8E4;
// extern UNK_TYPE4 D_801BF8E8;
// extern UNK_TYPE4 D_801BF8F0;
// 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 D_801BF968;
// extern UNK_TYPE1 sIsTimerPaused;
// extern UNK_TYPE1 D_801BF96A;
// extern UNK_TYPE1 D_801BF96C;
// extern UNK_TYPE1 sIsBottleTimerPaused;
// extern UNK_TYPE1 D_801BF96E;
// extern UNK_TYPE2 D_801BF970;
// extern UNK_TYPE2 sTimerId;
// extern UNK_TYPE1 D_801BF972;
// extern UNK_TYPE2 D_801BF974;
// extern UNK_TYPE2 D_801BF978;
@@ -1083,7 +1083,7 @@ extern UNK_PTR D_801BF5C0;
// extern UNK_TYPE2 D_801BFA4C;
// extern UNK_TYPE2 D_801BFA64;
// extern UNK_TYPE2 D_801BFA74;
// extern UNK_TYPE4 D_801BFA84;
// extern UNK_TYPE4 sPostmanTimerInputBtnAPressed;
// extern UNK_TYPE1 D_801BFAB0;
// extern UNK_TYPE1 D_801BFAB8;
// extern UNK_TYPE1 D_801BFAC4;
@@ -1135,15 +1135,15 @@ extern UNK_PTR D_801BF5C0;
// extern UNK_TYPE2 D_801BFCA8;
// extern UNK_TYPE1 D_801BFCB8;
// extern UNK_TYPE4 D_801BFCC4;
// extern UNK_TYPE2 D_801BFCE4;
// extern UNK_TYPE2 D_801BFCE8;
// 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 D_801BFCF8;
// extern UNK_TYPE2 sTimerBeepSfxSeconds;
// extern UNK_TYPE2 D_801BFCFC;
// extern UNK_TYPE2 D_801BFD0C;
// extern UNK_TYPE1 D_801BFD1C;
@@ -1312,7 +1312,7 @@ extern u32 gGsFlagsShift[];
extern void* gItemIcons[];
extern u8 gItemSlots[];
extern s16 gItemPrices[];
extern u16 gScenesPerRegion[11][27];
extern u16 gSceneIdsPerRegion[11][27];
extern u32 D_801C2410[];
extern s16 gPlayerFormObjectIndices[8];
extern RomFile gObjectTable[643];
@@ -3151,7 +3151,7 @@ extern s16 D_801F4E7A;
// extern UNK_TYPE1 D_801F57B4;
// extern UNK_TYPE1 D_801F5834;
// extern NmiBuff* gNMIBuffer;
// extern UNK_TYPE1 D_801F5850;
// extern UNK_TYPE1 sPostmanTimerInput;
// extern UNK_TYPE1 D_801F58B0;
// extern UNK_TYPE1 D_801F59AC;
// extern UNK_TYPE1 D_801F59B0;
+12 -12
View File
@@ -444,15 +444,15 @@ typedef struct {
/* 0x22C */ s32 unk_22C;
/* 0x230 */ s32 stickRelX;
/* 0x234 */ s32 stickRelY;
/* 0x238 */ s16 unk_238[5];
/* 0x242 */ s16 unk_242[5];
/* 0x24C */ s16 unk_24C[5];
/* 0x238 */ s16 cursorPoint[5];
/* 0x242 */ s16 cursorX[5];
/* 0x24C */ s16 cursorY[5];
/* 0x256 */ s16 unk_256;
/* 0x258 */ s16 unk_258;
/* 0x25A */ s16 unk_25A;
/* 0x258 */ s16 cursorSpecialPos;
/* 0x25A */ s16 pageSwitchTimer;
/* 0x25C */ u16 unk_25C;
/* 0x25E */ u16 cursorItem[5];
/* 0x268 */ u16 unk_268[5];
/* 0x268 */ u16 cursorSlot[5];
/* 0x272 */ u16 equipTargetItem;
/* 0x274 */ u16 equipTargetSlot;
/* 0x276 */ u16 equipTargetCBtn;
@@ -461,8 +461,8 @@ typedef struct {
/* 0x27C */ s16 equipAnimAlpha;
/* 0x27E */ s16 unk_27E;
/* 0x280 */ u16 unk_280;
/* 0x282 */ u16 unk_282;
/* 0x284 */ s16 unk_284;
/* 0x282 */ u16 nameColorSet;
/* 0x284 */ s16 cursorColorSet;
/* 0x286 */ s16 unk_286;
/* 0x288 */ f32 unk_288;
/* 0x28C */ f32 unk_28C;
@@ -476,9 +476,9 @@ typedef struct {
/* 0x2B6 */ u8 unk_2B6;
/* 0x2B7 */ u8 unk_2B7;
/* 0x2B8 */ u8 unk_2B8;
/* 0x2B9 */ u8 unk_2B9;
/* 0x2BA */ s16 unk_2BA;
/* 0x2BC */ s16 unk_2BC;
/* 0x2B9 */ u8 itemDescriptionOn; // helpful description of item given through a message box
/* 0x2BA */ s16 equipAnimScale; // scale of item icon while moving being equipped to c-button
/* 0x2BC */ s16 equipAnimShrinkRate; // rate the scale is shrinking for the item icon while moving being equipped to c-button
/* 0x2BE */ s16 unk_2BE[5];
/* 0x2C8 */ u16 unk_2C8;
/* 0x2CA */ s16 unk_2CA;
@@ -1121,7 +1121,7 @@ typedef struct {
struct PlayState {
/* 0x00000 */ GameState state;
/* 0x000A4 */ s16 sceneNum;
/* 0x000A4 */ s16 sceneId;
/* 0x000A6 */ u8 sceneConfig;
/* 0x000A7 */ char unk_A7[0x9];
/* 0x000B0 */ void* sceneSegment;
+2 -2
View File
@@ -285,7 +285,7 @@ typedef enum {
/* 0xF2 */ ITEM_F2,
/* 0xFD */ ITEM_FD = 0xFD,
/* 0xFF */ ITEM_NONE = 0xFF
} ItemID;
} ItemId;
#define BOTTLE_FIRST 0
#define BOTTLE_MAX 6
@@ -428,7 +428,7 @@ typedef enum {
/* 0xB8 */ GI_TINGLE_MAP_GREAT_BAY,
/* 0xB9 */ GI_TINGLE_MAP_STONE_TOWER,
/* 0xBA */ GI_MAX
} GetItemID;
} GetItemId;
typedef enum {
/* 0x00 */ GID_BOTTLE,
+3 -3
View File
@@ -404,7 +404,7 @@ typedef enum {
/* 0x188 */ OBJECT_FALL,
/* 0x189 */ OBJECT_HANAREYAMA_OBJ,
/* 0x18A */ OBJECT_CRACE_OBJECT,
/* 0x18B */ OBJECT_DNQ,
/* 0x18B */ OBJECT_DNO,
/* 0x18C */ OBJECT_OBJ_TOKEIDAI,
/* 0x18D */ OBJECT_EG,
/* 0x18E */ OBJECT_TRU,
@@ -477,7 +477,7 @@ typedef enum {
/* 0x1D1 */ OBJECT_MARUTA,
/* 0x1D2 */ OBJECT_GHAKA,
/* 0x1D3 */ OBJECT_OYU,
/* 0x1D4 */ OBJECT_DNP,
/* 0x1D4 */ OBJECT_DNQ,
/* 0x1D5 */ OBJECT_DAI,
/* 0x1D6 */ OBJECT_KGY,
/* 0x1D7 */ OBJECT_FB,
@@ -508,7 +508,7 @@ typedef enum {
/* 0x1F0 */ OBJECT_GI_SEAHORSE,
/* 0x1F1 */ OBJECT_BIGPO,
/* 0x1F2 */ OBJECT_HARIKO,
/* 0x1F3 */ OBJECT_DNO,
/* 0x1F3 */ OBJECT_DNJ,
/* 0x1F4 */ OBJECT_SINKAI_KABE,
/* 0x1F5 */ OBJECT_KIN2_OBJ,
/* 0x1F6 */ OBJECT_ISHI,
+9 -1
View File
@@ -70,6 +70,14 @@ typedef enum {
/* 0x19 */ PLAYER_MASK_MAX
} 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;
typedef enum PlayerActionParam {
/* -1 */ PLAYER_AP_MINUS1 = -1,
/* 0x00 */ PLAYER_AP_NONE,
@@ -594,7 +602,7 @@ typedef struct Player {
/* 0xAD0 */ f32 linearVelocity;
/* 0xAD4 */ s16 currentYaw;
/* 0xAD6 */ s16 targetYaw;
/* 0xAD8 */ u16 unk_AD8;
/* 0xAD8 */ u16 underwaterTimer;
/* 0xADA */ s8 meleeWeaponAnimation;
/* 0xADB */ s8 meleeWeaponState;
/* 0xADC */ s8 unk_ADC;
+101 -22
View File
@@ -2,6 +2,7 @@
#define Z64SAVE_H
#include "ultra64.h"
#include "z64item.h"
#include "z64math.h"
#include "os.h"
@@ -54,6 +55,84 @@ typedef enum {
#define MAGIC_NORMAL_METER 0x30
#define MAGIC_DOUBLE_METER (2 * MAGIC_NORMAL_METER)
#define SECONDS_TO_TIMER(seconds) ((seconds) * 100)
#define OSTIME_TO_TIMER(osTime) ((osTime) * 64 / 3000 / 10000)
#define OSTIME_TO_TIMER_ALT(osTime) ((osTime) / 10000 * 64 / 3000)
// 1 centisecond = 10 milliseconds = 1/100 seconds
#define SECONDS_TO_TIMER_PRECISE(seconds, centiSeconds) ((seconds) * 100 + (centiSeconds))
typedef enum {
/* 0 */ TIMER_ID_POSTMAN, // postman's counting minigame
/* 1 */ TIMER_ID_MINIGAME_1, // minigame timer
/* 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)
/* 6 */ TIMER_ID_GORON_RACE_UNUSED,
/* 7 */ TIMER_ID_MAX,
/* 99 */ TIMER_ID_NONE = 99,
} TimerId;
typedef enum {
/* 0 */ TIMER_COUNT_DOWN,
/* 1 */ TIMER_COUNT_UP
} TimerDirection;
typedef enum {
/* 0 */ TIMER_STATE_OFF,
/* 1 */ TIMER_STATE_START,
/* 2 */ TIMER_STATE_HOLD_TIMER, // Hold timer frozen at the screen center
/* 3 */ TIMER_STATE_MOVING_TIMER, // Move timer to a target location
/* 4 */ TIMER_STATE_COUNTING,
/* 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,
/* 9 */ TIMER_STATE_ALT_START,
/* 10 */ TIMER_STATE_10, // precursor to `TIMER_STATE_ALT_COUNTING`
/* 11 */ TIMER_STATE_ALT_COUNTING,
/* 12 */ TIMER_STATE_12, // Updated paused time?
/* 13 */ TIMER_STATE_POSTMAN_START,
/* 14 */ TIMER_STATE_POSTMAN_COUNTING,
/* 15 */ TIMER_STATE_POSTMAN_STOP,
/* 16 */ TIMER_STATE_POSTMAN_END
} TimerState;
typedef enum {
/* 0 */ BOTTLE_TIMER_STATE_OFF,
/* 1 */ BOTTLE_TIMER_STATE_COUNTING
} BottleTimerState;
typedef enum {
/* 0 */ HUD_VISIBILITY_IDLE,
/* 1 */ HUD_VISIBILITY_NONE,
/* 2 */ HUD_VISIBILITY_NONE_ALT, // Identical to HUD_VISIBILITY_NONE
/* 3 */ HUD_VISIBILITY_HEARTS_WITH_OVERWRITE, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons
/* 4 */ HUD_VISIBILITY_A,
/* 5 */ HUD_VISIBILITY_A_HEARTS_MAGIC_WITH_OVERWRITE, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons
/* 6 */ HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP_WITH_OVERWRITE, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons
/* 7 */ HUD_VISIBILITY_ALL_NO_MINIMAP_W_DISABLED, // Only raises button alphas if not disabled
/* 8 */ HUD_VISIBILITY_B,
/* 9 */ HUD_VISIBILITY_HEARTS_MAGIC,
/* 10 */ HUD_VISIBILITY_B_ALT,
/* 11 */ HUD_VISIBILITY_HEARTS,
/* 12 */ HUD_VISIBILITY_A_B_MINIMAP,
/* 13 */ HUD_VISIBILITY_HEARTS_MAGIC_WITH_OVERWRITE, // Uses Interface_UpdateButtonAlphas so gives the opportunity to dim only disabled buttons
/* 14 */ HUD_VISIBILITY_HEARTS_MAGIC_C,
/* 15 */ HUD_VISIBILITY_ALL_NO_MINIMAP,
/* 16 */ HUD_VISIBILITY_A_B_C,
/* 17 */ HUD_VISIBILITY_B_MINIMAP,
/* 18 */ HUD_VISIBILITY_HEARTS_MAGIC_MINIMAP,
/* 19 */ HUD_VISIBILITY_A_HEARTS_MAGIC_MINIMAP,
/* 20 */ HUD_VISIBILITY_B_MAGIC,
/* 21 */ HUD_VISIBILITY_A_B,
/* 22 */ HUD_VISIBILITY_A_B_HEARTS_MAGIC_MINIMAP,
/* 50 */ HUD_VISIBILITY_ALL = 50,
/* 52 */ HUD_VISIBILITY_NONE_INSTANT = 52
} HudVisibility;
typedef struct SramContext {
/* 0x00 */ u8* readBuff;
/* 0x04 */ u8 *saveBuf;
@@ -86,7 +165,7 @@ typedef struct Inventory {
} Inventory; // size = 0x88
typedef struct HorseData {
/* 0x0 */ s16 scene; // "spot_no"
/* 0x0 */ s16 sceneId; // "spot_no"
/* 0x2 */ Vec3s pos; // "horse_x", "horse_y" and "horse_z"
/* 0x8 */ s16 yaw; // "horse_a"
} HorseData; // size = 0xA
@@ -147,7 +226,7 @@ typedef struct SavePlayerData {
/* 0x20 */ u8 unk_20; // "first_memory"
/* 0x22 */ u16 owlActivationFlags; // "memory_warp_point"
/* 0x24 */ u8 unk_24; // "last_warp_pt"
/* 0x26 */ s16 savedSceneNum; // "scene_data_ID"
/* 0x26 */ s16 savedSceneId; // "scene_data_ID"
} SavePlayerData; // size = 0x28
typedef struct Save {
@@ -214,11 +293,11 @@ typedef struct SaveContext {
/* 0x1015 */ u8 unk_1015;
/* 0x1016 */ u16 jinxTimer;
/* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct"
/* 0x101A */ u8 unk_101A[6]; // "bottle_status", one entry for each bottle
/* 0x1020 */ OSTime unk_1020[6]; // "bottle_ostime", one entry for each bottle
/* 0x1050 */ OSTime unk_1050[6]; // "bottle_sub", one entry for each bottle
/* 0x1080 */ OSTime unk_1080[6]; // "bottle_time", one entry for each bottle
/* 0x10B0 */ OSTime unk_10B0[6]; // "bottle_stop_time", one entry for each bottle
/* 0x101A */ u8 bottleTimerStates[BOTTLE_MAX]; // See the `BottleTimerState` enum. "bottle_status"
/* 0x1020 */ OSTime bottleTimerStartOsTimes[BOTTLE_MAX]; // The osTime when the timer starts. "bottle_ostime"
/* 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
/* 0x3CA0 */ s32 fileNum; // "file_no"
/* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer"
@@ -237,25 +316,25 @@ typedef struct SaveContext {
/* 0x3DBF */ u8 showTitleCard; // "name_display"
/* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer"
/* 0x3DC2 */ u8 unk_3DC2; // "pad1"
/* 0x3DC8 */ OSTime unk_3DC8; // "get_time"
/* 0x3DD0 */ u8 unk_3DD0[7]; // "event_fg"
/* 0x3DD7 */ u8 unk_3DD7[7]; // "calc_flag"
/* 0x3DE0 */ OSTime unk_3DE0[7]; // "event_ostime"
/* 0x3E18 */ OSTime unk_3E18[7]; // "event_sub"
/* 0x3E50 */ OSTime unk_3E50[7]; // "func_time"
/* 0x3E88 */ OSTime unk_3E88[7]; // "func_end_time"
/* 0x3EC0 */ OSTime unk_3EC0[7]; // "func_stop_time"
/* 0x3EF8 */ s16 timerX[7]; // "event_xp"
/* 0x3F06 */ s16 timerY[7]; // "event_yp"
/* 0x3DC8 */ OSTime postmanTimerStopOsTime; // The osTime when the timer stops for the postman minigame. "get_time"
/* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // See the `TimerState` enum. "event_fg"
/* 0x3DD7 */ u8 timerDirections[TIMER_ID_MAX]; // See the `TimerDirection` enum. "calc_flag"
/* 0x3DE0 */ u64 timerCurTimes[TIMER_ID_MAX]; // For countdown, the remaining time left. For countup, the time since the start. In centiseconds (1/100th sec). "event_ostime"
/* 0x3E18 */ u64 timerTimeLimits[TIMER_ID_MAX]; // The original total time given for the timer to count from, in centiseconds (1/100th sec). "event_sub"
/* 0x3E50 */ OSTime timerStartOsTimes[TIMER_ID_MAX]; // The osTime when the timer starts. "func_time"
/* 0x3E88 */ u64 timerStopTimes[TIMER_ID_MAX]; // The total amount of time taken between the start and end of the timer, in centiseconds (1/100th sec). "func_end_time"
/* 0x3EC0 */ OSTime timerPausedOsTimes[TIMER_ID_MAX]; // The cumulative osTime spent with the timer paused. "func_stop_time"
/* 0x3EF8 */ s16 timerX[TIMER_ID_MAX]; // "event_xp"
/* 0x3F06 */ s16 timerY[TIMER_ID_MAX]; // "event_yp"
/* 0x3F14 */ s16 unk_3F14; // "character_change"
/* 0x3F16 */ u8 seqIndex; // "old_bgm"
/* 0x3F17 */ u8 nightSeqIndex; // "old_env"
/* 0x3F18 */ u8 buttonStatus[6]; // "button_item"
/* 0x3F1E */ u8 unk_3F1E; // "ck_fg"
/* 0x3F20 */ u16 unk_3F20; // "alpha_type"
/* 0x3F22 */ u16 unk_3F22; // "prev_alpha_type"
/* 0x3F24 */ u16 unk_3F24; // "alpha_count"
/* 0x3F26 */ u16 unk_3F26; // "last_time_type"
/* 0x3F1E */ u8 hudVisibilityForceButtonAlphasByStatus; // if btn alphas are updated through Interface_UpdateButtonAlphas, instead update them through Interface_UpdateButtonAlphasByStatus "ck_fg"
/* 0x3F20 */ u16 nextHudVisibility; // triggers the hud to change visibility to the requested value. Reset to HUD_VISIBILITY_IDLE when target is reached "alpha_type"
/* 0x3F22 */ u16 hudVisibility; // current hud visibility "prev_alpha_type"
/* 0x3F24 */ u16 hudVisibilityTimer; // number of frames in the transition to a new hud visibility. Used to step alpha "alpha_count"
/* 0x3F26 */ u16 prevHudVisibility; // used to store and recover hud visibility for pause menu and text boxes "last_time_type"
/* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag"
/* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag"
/* 0x3F2C */ s16 magicFlag; // Set to 0 in func_80812D94(), otherwise unused "keep_magic_flag"
+107 -107
View File
@@ -271,7 +271,7 @@ typedef struct {
} Room; // size = 0x14
typedef struct {
/* 0x00 */ Room currRoom;
/* 0x00 */ Room curRoom;
/* 0x14 */ Room prevRoom;
/* 0x28 */ void* roomMemPages[2]; // In a scene with transitions, roomMemory is split between two pages that toggle each transition. This is one continuous range, as the second page allocates from the end
/* 0x30 */ u8 activeMemPage; // 0 - First page in memory, 1 - Second page
@@ -316,7 +316,7 @@ typedef struct {
} EntranceEntry; // size = 0x2
typedef struct {
/* 0x0 */ s8 sceneNum;
/* 0x0 */ s8 sceneId;
/* 0x1 */ s8 spawnNum;
/* 0x2 */ u16 flags;
} EntranceTableEntry; // size = 0x4
@@ -535,119 +535,119 @@ typedef union {
} SceneCmd; // size = 0x8
typedef enum {
/* 0x00 */ SCENE_20SICHITAI2,
/* 0x00 */ SCENE_20SICHITAI2, // Southern Swamp (Clear)
/* 0x01 */ SCENE_UNSET_1,
/* 0x02 */ SCENE_UNSET_2,
/* 0x03 */ SCENE_UNSET_3,
/* 0x04 */ SCENE_UNSET_4,
/* 0x05 */ SCENE_UNSET_5,
/* 0x06 */ SCENE_UNSET_6,
/* 0x07 */ SCENE_KAKUSIANA,
/* 0x08 */ SCENE_SPOT00,
/* 0x07 */ SCENE_KAKUSIANA, // Lone Peak Shrine & Grottos
/* 0x08 */ SCENE_SPOT00, // Cutscene Scene
/* 0x09 */ SCENE_UNSET_9,
/* 0x0A */ SCENE_WITCH_SHOP,
/* 0x0B */ SCENE_LAST_BS,
/* 0x0C */ SCENE_HAKASHITA,
/* 0x0D */ SCENE_AYASHIISHOP,
/* 0x0A */ SCENE_WITCH_SHOP, // Magic Hags' Potion Shop
/* 0x0B */ SCENE_LAST_BS, // Majora's Lair
/* 0x0C */ SCENE_HAKASHITA, // Beneath the Graveyard
/* 0x0D */ SCENE_AYASHIISHOP, // Curiosity Shop
/* 0x0E */ SCENE_UNSET_E,
/* 0x0F */ SCENE_UNSET_F,
/* 0x10 */ SCENE_OMOYA,
/* 0x11 */ SCENE_BOWLING,
/* 0x12 */ SCENE_SONCHONOIE,
/* 0x13 */ SCENE_IKANA,
/* 0x14 */ SCENE_KAIZOKU,
/* 0x15 */ SCENE_MILK_BAR,
/* 0x16 */ SCENE_INISIE_N,
/* 0x17 */ SCENE_TAKARAYA,
/* 0x18 */ SCENE_INISIE_R,
/* 0x19 */ SCENE_OKUJOU,
/* 0x1A */ SCENE_OPENINGDAN,
/* 0x1B */ SCENE_MITURIN,
/* 0x1C */ SCENE_13HUBUKINOMITI,
/* 0x1D */ SCENE_CASTLE,
/* 0x1E */ SCENE_DEKUTES,
/* 0x1F */ SCENE_MITURIN_BS,
/* 0x20 */ SCENE_SYATEKI_MIZU,
/* 0x21 */ SCENE_HAKUGIN,
/* 0x22 */ SCENE_ROMANYMAE,
/* 0x23 */ SCENE_PIRATE,
/* 0x24 */ SCENE_SYATEKI_MORI,
/* 0x25 */ SCENE_SINKAI,
/* 0x26 */ SCENE_YOUSEI_IZUMI,
/* 0x27 */ SCENE_KINSTA1,
/* 0x28 */ SCENE_KINDAN2,
/* 0x29 */ SCENE_TENMON_DAI,
/* 0x2A */ SCENE_LAST_DEKU,
/* 0x2B */ SCENE_22DEKUCITY,
/* 0x2C */ SCENE_KAJIYA,
/* 0x2D */ SCENE_00KEIKOKU,
/* 0x2E */ SCENE_POSTHOUSE,
/* 0x2F */ SCENE_LABO,
/* 0x30 */ SCENE_DANPEI2TEST,
/* 0x10 */ SCENE_OMOYA, // Mama's House (Ranch House in PAL) & Barn
/* 0x11 */ SCENE_BOWLING, // Honey & Darling's Shop
/* 0x12 */ SCENE_SONCHONOIE, // The Mayor's Residence
/* 0x13 */ SCENE_IKANA, // Ikana Canyon
/* 0x14 */ SCENE_KAIZOKU, // Pirates' Fortress
/* 0x15 */ SCENE_MILK_BAR, // Milk Bar
/* 0x16 */ SCENE_INISIE_N, // Stone Tower Temple
/* 0x17 */ SCENE_TAKARAYA, // Treasure Chest Shop
/* 0x18 */ SCENE_INISIE_R, // Inverted Stone Tower Temple
/* 0x19 */ SCENE_OKUJOU, // Clock Tower Rooftop
/* 0x1A */ SCENE_OPENINGDAN, // Before Clock Town
/* 0x1B */ SCENE_MITURIN, // Woodfall Temple
/* 0x1C */ SCENE_13HUBUKINOMITI, // Path to Mountain Village
/* 0x1D */ SCENE_CASTLE, // Ancient Castle of Ikana
/* 0x1E */ SCENE_DEKUTES, // Deku Scrub Playground
/* 0x1F */ SCENE_MITURIN_BS, // Odolwa's Lair
/* 0x20 */ SCENE_SYATEKI_MIZU, // Town Shooting Gallery
/* 0x21 */ SCENE_HAKUGIN, // Snowhead Temple
/* 0x22 */ SCENE_ROMANYMAE, // Milk Road
/* 0x23 */ SCENE_PIRATE, // Pirates' Fortress Interior
/* 0x24 */ SCENE_SYATEKI_MORI, // Swamp Shooting Gallery
/* 0x25 */ SCENE_SINKAI, // Pinnacle Rock
/* 0x26 */ SCENE_YOUSEI_IZUMI, // Fairy's Fountain
/* 0x27 */ SCENE_KINSTA1, // Swamp Spider House
/* 0x28 */ SCENE_KINDAN2, // Oceanside Spider House
/* 0x29 */ SCENE_TENMON_DAI, // Astral Observatory
/* 0x2A */ SCENE_LAST_DEKU, // Moon Deku Trial
/* 0x2B */ SCENE_22DEKUCITY, // Deku Palace
/* 0x2C */ SCENE_KAJIYA, // Mountain Smithy
/* 0x2D */ SCENE_00KEIKOKU, // Termina Field
/* 0x2E */ SCENE_POSTHOUSE, // Post Office
/* 0x2F */ SCENE_LABO, // Marine Research Lab
/* 0x30 */ SCENE_DANPEI2TEST, // Beneath the Graveyard (Day 3) and Dampe's House
/* 0x31 */ SCENE_UNSET_31,
/* 0x32 */ SCENE_16GORON_HOUSE,
/* 0x33 */ SCENE_33ZORACITY,
/* 0x34 */ SCENE_8ITEMSHOP,
/* 0x35 */ SCENE_F01,
/* 0x36 */ SCENE_INISIE_BS,
/* 0x37 */ SCENE_30GYOSON,
/* 0x38 */ SCENE_31MISAKI,
/* 0x39 */ SCENE_TAKARAKUJI,
/* 0x32 */ SCENE_16GORON_HOUSE, // Goron Shrine
/* 0x33 */ SCENE_33ZORACITY, // Zora Hall
/* 0x34 */ SCENE_8ITEMSHOP, // Trading Post
/* 0x35 */ SCENE_F01, // Romani Ranch
/* 0x36 */ SCENE_INISIE_BS, // Twinmold's Lair
/* 0x37 */ SCENE_30GYOSON, // Great Bay Coast
/* 0x38 */ SCENE_31MISAKI, // Zora Cape
/* 0x39 */ SCENE_TAKARAKUJI, // Lottery Shop
/* 0x3A */ SCENE_UNSET_3A,
/* 0x3B */ SCENE_TORIDE,
/* 0x3C */ SCENE_FISHERMAN,
/* 0x3D */ SCENE_GORONSHOP,
/* 0x3E */ SCENE_DEKU_KING,
/* 0x3F */ SCENE_LAST_GORON,
/* 0x40 */ SCENE_24KEMONOMITI,
/* 0x41 */ SCENE_F01_B,
/* 0x42 */ SCENE_F01C,
/* 0x43 */ SCENE_BOTI,
/* 0x44 */ SCENE_HAKUGIN_BS,
/* 0x45 */ SCENE_20SICHITAI,
/* 0x46 */ SCENE_21MITURINMAE,
/* 0x47 */ SCENE_LAST_ZORA,
/* 0x48 */ SCENE_11GORONNOSATO2,
/* 0x49 */ SCENE_SEA,
/* 0x4A */ SCENE_35TAKI,
/* 0x4B */ SCENE_REDEAD,
/* 0x4C */ SCENE_BANDROOM,
/* 0x4D */ SCENE_11GORONNOSATO,
/* 0x4E */ SCENE_GORON_HAKA,
/* 0x4F */ SCENE_SECOM,
/* 0x50 */ SCENE_10YUKIYAMANOMURA,
/* 0x51 */ SCENE_TOUGITES,
/* 0x52 */ SCENE_DANPEI,
/* 0x53 */ SCENE_IKANAMAE,
/* 0x54 */ SCENE_DOUJOU,
/* 0x55 */ SCENE_MUSICHOUSE,
/* 0x56 */ SCENE_IKNINSIDE,
/* 0x57 */ SCENE_MAP_SHOP,
/* 0x58 */ SCENE_F40,
/* 0x59 */ SCENE_F41,
/* 0x5A */ SCENE_10YUKIYAMANOMURA2,
/* 0x5B */ SCENE_14YUKIDAMANOMITI,
/* 0x5C */ SCENE_12HAKUGINMAE,
/* 0x5D */ SCENE_17SETUGEN,
/* 0x5E */ SCENE_17SETUGEN2,
/* 0x5F */ SCENE_SEA_BS,
/* 0x60 */ SCENE_RANDOM,
/* 0x61 */ SCENE_YADOYA,
/* 0x62 */ SCENE_KONPEKI_ENT,
/* 0x63 */ SCENE_INSIDETOWER,
/* 0x64 */ SCENE_26SARUNOMORI,
/* 0x65 */ SCENE_LOST_WOODS,
/* 0x66 */ SCENE_LAST_LINK,
/* 0x67 */ SCENE_SOUGEN,
/* 0x68 */ SCENE_BOMYA,
/* 0x69 */ SCENE_KYOJINNOMA,
/* 0x6A */ SCENE_KOEPONARACE,
/* 0x6B */ SCENE_GORONRACE,
/* 0x6C */ SCENE_TOWN,
/* 0x6D */ SCENE_ICHIBA,
/* 0x6E */ SCENE_BACKTOWN,
/* 0x6F */ SCENE_CLOCKTOWER,
/* 0x70 */ SCENE_ALLEY,
/* 0x3B */ SCENE_TORIDE, // Pirates' Fortress Moat
/* 0x3C */ SCENE_FISHERMAN, // Fisherman's Hut
/* 0x3D */ SCENE_GORONSHOP, // Goron Shop
/* 0x3E */ SCENE_DEKU_KING, // Deku King's Chamber
/* 0x3F */ SCENE_LAST_GORON, // Moon Goron Trial
/* 0x40 */ SCENE_24KEMONOMITI, // Road to Southern Swamp
/* 0x41 */ SCENE_F01_B, // Doggy Racetrack
/* 0x42 */ SCENE_F01C, // Cucco Shack
/* 0x43 */ SCENE_BOTI, // Ikana Graveyard
/* 0x44 */ SCENE_HAKUGIN_BS, // Goht's Lair
/* 0x45 */ SCENE_20SICHITAI, // Southern Swamp (poison)
/* 0x46 */ SCENE_21MITURINMAE, // Woodfall
/* 0x47 */ SCENE_LAST_ZORA, // Moon Zora Trial
/* 0x48 */ SCENE_11GORONNOSATO2, // Goron Village (spring)
/* 0x49 */ SCENE_SEA, // Great Bay Temple
/* 0x4A */ SCENE_35TAKI, // Waterfall Rapids
/* 0x4B */ SCENE_REDEAD, // Beneath the Well
/* 0x4C */ SCENE_BANDROOM, // Zora Hall Rooms
/* 0x4D */ SCENE_11GORONNOSATO, // Goron Village (winter)
/* 0x4E */ SCENE_GORON_HAKA, // Goron Graveyard
/* 0x4F */ SCENE_SECOM, // Sakon's Hideout
/* 0x50 */ SCENE_10YUKIYAMANOMURA, // Mountain Village (winter)
/* 0x51 */ SCENE_TOUGITES, // Ghost Hut
/* 0x52 */ SCENE_DANPEI, // Deku Shrine
/* 0x53 */ SCENE_IKANAMAE, // Road to Ikana
/* 0x54 */ SCENE_DOUJOU, // Swordsman's School
/* 0x55 */ SCENE_MUSICHOUSE, // Music Box House
/* 0x56 */ SCENE_IKNINSIDE, // Igos du Ikana's Lair
/* 0x57 */ SCENE_MAP_SHOP, // Tourist Information
/* 0x58 */ SCENE_F40, // Stone Tower
/* 0x59 */ SCENE_F41, // Inverted Stone Tower
/* 0x5A */ SCENE_10YUKIYAMANOMURA2, // Mountain Village (spring)
/* 0x5B */ SCENE_14YUKIDAMANOMITI, // Path to Snowhead
/* 0x5C */ SCENE_12HAKUGINMAE, // Snowhead
/* 0x5D */ SCENE_17SETUGEN, // Path to Goron Village (winter)
/* 0x5E */ SCENE_17SETUGEN2, // Path to Goron Village (spring)
/* 0x5F */ SCENE_SEA_BS, // Gyorg's Lair
/* 0x60 */ SCENE_RANDOM, // Secret Shrine
/* 0x61 */ SCENE_YADOYA, // Stock Pot Inn
/* 0x62 */ SCENE_KONPEKI_ENT, // Great Bay Cutscene
/* 0x63 */ SCENE_INSIDETOWER, // Clock Tower Interior
/* 0x64 */ SCENE_26SARUNOMORI, // Woods of Mystery
/* 0x65 */ SCENE_LOST_WOODS, // Lost Woods (Intro)
/* 0x66 */ SCENE_LAST_LINK, // Moon Link Trial
/* 0x67 */ SCENE_SOUGEN, // The Moon
/* 0x68 */ SCENE_BOMYA, // Bomb Shop
/* 0x69 */ SCENE_KYOJINNOMA, // Giants' Chamber
/* 0x6A */ SCENE_KOEPONARACE, // Gorman Track
/* 0x6B */ SCENE_GORONRACE, // Goron Racetrack
/* 0x6C */ SCENE_TOWN, // East Clock Town
/* 0x6D */ SCENE_ICHIBA, // West Clock Town
/* 0x6E */ SCENE_BACKTOWN, // North Clock Town
/* 0x6F */ SCENE_CLOCKTOWER, // South Clock Town
/* 0x70 */ SCENE_ALLEY, // Laundry Pool
/* 0x71 */ SCENE_MAX
} SceneId;
@@ -844,11 +844,11 @@ typedef enum {
#define SCENE_CMD_SPECIAL_FILES(elfMessageFile, keepObjectId) \
{ SCENE_CMD_ID_SPECIAL_FILES, elfMessageFile, CMD_W(keepObjectId) }
#define SCENE_CMD_ROOM_BEHAVIOR(currRoomUnk3, currRoomUnk2, currRoomUnk5, msgCtxunk12044, enablePosLights, \
#define SCENE_CMD_ROOM_BEHAVIOR(curRoomUnk3, curRoomUnk2, curRoomUnk5, msgCtxunk12044, enablePosLights, \
kankyoContextUnkE2) \
{ \
SCENE_CMD_ID_ROOM_BEHAVIOR, currRoomUnk3, \
currRoomUnk2 | _SHIFTL(currRoomUnk5, 8, 1) | _SHIFTL(msgCtxunk12044, 10, 1) | \
SCENE_CMD_ID_ROOM_BEHAVIOR, curRoomUnk3, \
curRoomUnk2 | _SHIFTL(curRoomUnk5, 8, 1) | _SHIFTL(msgCtxunk12044, 10, 1) | \
_SHIFTL(enablePosLights, 11, 1) | _SHIFTL(kankyoContextUnkE2, 12, 1) \
}
+6 -6
View File
@@ -42,8 +42,8 @@ typedef enum {
/* 0x07 */ SCHEDULE_CMD_ID_NOP, // No-Op
/* 0x08 */ SCHEDULE_CMD_ID_CHECK_MISC_S, // Special check based on items or masks and branches if check passes, short range branch
/* 0x09 */ SCHEDULE_CMD_ID_RET_VAL_S, // Ends script and returns byte value
/* 0x0A */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneNum and branches if so, short range branch
/* 0x0B */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneNum and branches if so, long range branch
/* 0x0A */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_S, // Checks if the current scene is not SceneId and branches if so, short range branch
/* 0x0B */ SCHEDULE_CMD_ID_CHECK_NOT_IN_SCENE_L, // Checks if the current scene is not SceneId and branches if so, long range branch
/* 0x0C */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_S, // Checks if the current day is not Day and branches if so, short range branch
/* 0x0D */ SCHEDULE_CMD_ID_CHECK_NOT_IN_DAY_L, // Checks if the current day is not Day and branches if so, long range branch
/* 0x0E */ SCHEDULE_CMD_ID_RET_TIME, // Returns 2 time values
@@ -130,15 +130,15 @@ typedef struct {
typedef struct {
/* 0x0 */ ScheduleCmdBase base;
/* 0x1 */ u8 sceneH;
/* 0x2 */ u8 sceneL;
/* 0x1 */ u8 sceneIdH;
/* 0x2 */ u8 sceneIdL;
/* 0x3 */ s8 offset;
} ScheduleCmdCheckNotInSceneS; // size = 0x4
typedef struct {
/* 0x0 */ ScheduleCmdBase base;
/* 0x1 */ u8 sceneH;
/* 0x2 */ u8 sceneL;
/* 0x1 */ u8 sceneIdH;
/* 0x2 */ u8 sceneIdL;
/* 0x3 */ u8 offsetH;
/* 0x4 */ u8 offsetL;
} ScheduleCmdCheckNotInSceneL; // size = 0x5