1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-17 21:35:11 +00:00

Merge branch 'master' into doc_pause_menu

This commit is contained in:
Dragorn421 2022-11-16 21:23:31 +01:00
commit f752add633
No known key found for this signature in database
GPG key ID: 32B53D2D16FC4118
81 changed files with 1912 additions and 1689 deletions

View file

@ -996,9 +996,9 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
void Magic_Fill(PlayState* play); void Magic_Fill(PlayState* play);
void Magic_Reset(PlayState* play); void Magic_Reset(PlayState* play);
s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type); s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type);
void func_80088AA0(s16 arg0); void Interface_SetSubTimer(s16 seconds);
void func_80088AF0(PlayState* play); void Interface_SetSubTimerToFinalSecond(PlayState* play);
void func_80088B34(s16 arg0); void Interface_SetTimer(s16 seconds);
void Interface_Draw(PlayState* play); void Interface_Draw(PlayState* play);
void Interface_Update(PlayState* play); void Interface_Update(PlayState* play);
Path* Path_GetByIndex(PlayState* play, s16 index, s16 max); Path* Path_GetByIndex(PlayState* play, s16 index, s16 max);
@ -1040,7 +1040,7 @@ s32 Player_GetBottleHeld(Player* this);
s32 Player_ActionToExplosive(Player* this, s32 itemAction); s32 Player_ActionToExplosive(Player* this, s32 itemAction);
s32 Player_GetExplosiveHeld(Player* this); s32 Player_GetExplosiveHeld(Player* this);
s32 func_8008F2BC(Player* this, s32 itemAction); s32 func_8008F2BC(Player* this, s32 itemAction);
s32 func_8008F2F8(PlayState* play); s32 Player_GetEnvironmentalHazard(PlayState* play);
void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic, void Player_DrawImpl(PlayState* play, void** skeleton, Vec3s* jointTable, s32 dListCount, s32 lod, s32 tunic,
s32 boots, s32 face, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw, s32 boots, s32 face, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw,
void* data); void* data);
@ -1395,14 +1395,6 @@ void DbCamera_Reset(Camera* cam, DbCamera* dbCam);
// ? DbCamera_UpdateDemoControl(?); // ? DbCamera_UpdateDemoControl(?);
void func_800BB0A0(f32 u, Vec3f* pos, f32* roll, f32* viewAngle, f32* point0, f32* point1, f32* point2, f32* point3); void func_800BB0A0(f32 u, Vec3f* pos, f32* roll, f32* viewAngle, f32* point0, f32* point1, f32* point2, f32* point3);
s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, CutsceneCameraPoint* point, s16* keyFrame, f32* curFrame); s32 func_800BB2B4(Vec3f* pos, f32* roll, f32* fov, CutsceneCameraPoint* point, s16* keyFrame, f32* curFrame);
s32 Mempak_Init(s32 controllerNb);
s32 Mempak_GetFreeBytes(s32 controllerNb);
s32 Mempak_FindFile(s32 controllerNb, char start, char end);
s32 Mempak_Write(s32 controllerNb, char idx, void* buffer, s32 offset, s32 size);
s32 Mempak_Read(s32 controllerNb, char idx, void* buffer, s32 offset, s32 size);
s32 Mempak_Alloc(s32 controllerNb, char* idx, s32 size);
s32 Mempak_DeleteFile(s32 controllerNb, char idx);
s32 Mempak_GetFileSize(s32 controllerNb, char idx);
void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl); void KaleidoManager_LoadOvl(KaleidoMgrOverlay* ovl);
void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl); void KaleidoManager_ClearOvl(KaleidoMgrOverlay* ovl);
void KaleidoManager_Init(PlayState* play); void KaleidoManager_Init(PlayState* play);

View file

@ -49,7 +49,7 @@
#define SLOT(item) gItemSlots[item] #define SLOT(item) gItemSlots[item]
#define INV_CONTENT(item) gSaveContext.inventory.items[SLOT(item)] #define INV_CONTENT(item) gSaveContext.inventory.items[SLOT(item)]
#define AMMO(item) gSaveContext.inventory.ammo[SLOT(item)] #define AMMO(item) gSaveContext.inventory.ammo[SLOT(item)]
#define BEANS_BOUGHT AMMO(ITEM_BEAN + 1) #define BEANS_BOUGHT AMMO(ITEM_MAGIC_BEAN + 1)
#define ALL_EQUIP_VALUE(equip) ((s32)(gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip]) #define ALL_EQUIP_VALUE(equip) ((s32)(gSaveContext.inventory.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
#define CUR_EQUIP_VALUE(equip) ((s32)(gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip]) #define CUR_EQUIP_VALUE(equip) ((s32)(gSaveContext.equips.equipment & gEquipMasks[equip]) >> gEquipShifts[equip])
@ -92,10 +92,10 @@
#define SET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] |= (1 << ((flag) & 0xF))) #define SET_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] |= (1 << ((flag) & 0xF)))
#define CLEAR_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF))) #define CLEAR_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF)))
#define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \ #define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \
? ITEM_NONE \ ? ITEM_NONE \
: (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) \ : (gSaveContext.equips.buttonItems[0] == ITEM_GIANTS_KNIFE) \
? ITEM_SWORD_BGS \ ? ITEM_SWORD_BIGGORON \
: gSaveContext.equips.buttonItems[0]) : gSaveContext.equips.buttonItems[0])
#define C_BTN_ITEM(button) ((gSaveContext.buttonStatus[(button) + 1] != BTN_DISABLED) \ #define C_BTN_ITEM(button) ((gSaveContext.buttonStatus[(button) + 1] != BTN_DISABLED) \

21
include/mempak.h Normal file
View file

@ -0,0 +1,21 @@
#ifndef MEMPAK_H
#define MEMPAK_H
#include "ultra64.h"
s32 Mempak_Init(s32 controllerNum);
s32 Mempak_GetFreeBytes(s32 controllerNum);
s32 Mempak_FindFiles(s32 controllerNum, char start, char end);
s32 Mempak_Write(s32 controllerNum, char letter, void* buffer, s32 offset, s32 size);
s32 Mempak_Read(s32 controllerNum, char letter, void* buffer, s32 offset, s32 size);
s32 Mempak_CreateFile(s32 controllerNum, char* letter, s32 size);
s32 Mempak_DeleteFile(s32 controllerNum, char letter);
s32 Mempak_GetFileSize(s32 controllerNum, char letter);
// Converts a file letter to its numerical index
#define MEMPAK_LETTER_TO_INDEX(c) ((c) - 'A')
// Converts a numerical index to a file letter
#define MEMPAK_INDEX_TO_LETTER(i) ((i) + 'A')
#endif

View file

@ -38,6 +38,7 @@
#include "fault.h" #include "fault.h"
#include "sched.h" #include "sched.h"
#include "rumble.h" #include "rumble.h"
#include "mempak.h"
#include "tha.h" #include "tha.h"
#include "thga.h" #include "thga.h"

View file

@ -77,8 +77,8 @@ typedef enum {
/* 0x03 */ UPG_SCALE, /* 0x03 */ UPG_SCALE,
/* 0x04 */ UPG_WALLET, /* 0x04 */ UPG_WALLET,
/* 0x05 */ UPG_BULLET_BAG, /* 0x05 */ UPG_BULLET_BAG,
/* 0x06 */ UPG_STICKS, /* 0x06 */ UPG_DEKU_STICKS,
/* 0x07 */ UPG_NUTS, /* 0x07 */ UPG_DEKU_NUTS,
/* 0x08 */ UPG_MAX /* 0x08 */ UPG_MAX
} UpgradeType; } UpgradeType;
@ -105,21 +105,21 @@ typedef enum {
/* 0x13 */ QUEST_GORON_RUBY, /* 0x13 */ QUEST_GORON_RUBY,
/* 0x14 */ QUEST_ZORA_SAPPHIRE, /* 0x14 */ QUEST_ZORA_SAPPHIRE,
/* 0x15 */ QUEST_STONE_OF_AGONY, /* 0x15 */ QUEST_STONE_OF_AGONY,
/* 0x16 */ QUEST_GERUDO_CARD, /* 0x16 */ QUEST_GERUDOS_CARD,
/* 0x17 */ QUEST_SKULL_TOKEN, /* 0x17 */ QUEST_SKULL_TOKEN,
/* 0x18 */ QUEST_HEART_PIECE, // for `pauseCtx->cursorPoint[PAUSE_QUEST]` /* 0x18 */ QUEST_HEART_PIECE, // for `pauseCtx->cursorPoint[PAUSE_QUEST]`
/* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C // for accessing the `Inventory.questItems` bitfield /* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C // for accessing the `Inventory.questItems` bitfield
} QuestItem; } QuestItem;
typedef enum { typedef enum {
/* 0x00 */ DUNGEON_KEY_BOSS, /* 0x00 */ DUNGEON_BOSS_KEY,
/* 0x01 */ DUNGEON_COMPASS, /* 0x01 */ DUNGEON_COMPASS,
/* 0x02 */ DUNGEON_MAP /* 0x02 */ DUNGEON_MAP
} DungeonItem; } DungeonItem;
typedef enum { typedef enum {
/* 0x00 */ SLOT_STICK, /* 0x00 */ SLOT_DEKU_STICK,
/* 0x01 */ SLOT_NUT, /* 0x01 */ SLOT_DEKU_NUT,
/* 0x02 */ SLOT_BOMB, /* 0x02 */ SLOT_BOMB,
/* 0x03 */ SLOT_BOW, /* 0x03 */ SLOT_BOW,
/* 0x04 */ SLOT_ARROW_FIRE, /* 0x04 */ SLOT_ARROW_FIRE,
@ -131,8 +131,8 @@ typedef enum {
/* 0x0A */ SLOT_ARROW_ICE, /* 0x0A */ SLOT_ARROW_ICE,
/* 0x0B */ SLOT_FARORES_WIND, /* 0x0B */ SLOT_FARORES_WIND,
/* 0x0C */ SLOT_BOOMERANG, /* 0x0C */ SLOT_BOOMERANG,
/* 0x0D */ SLOT_LENS, /* 0x0D */ SLOT_LENS_OF_TRUTH,
/* 0x0E */ SLOT_BEAN, /* 0x0E */ SLOT_MAGIC_BEAN,
/* 0x0F */ SLOT_HAMMER, /* 0x0F */ SLOT_HAMMER,
/* 0x10 */ SLOT_ARROW_LIGHT, /* 0x10 */ SLOT_ARROW_LIGHT,
/* 0x11 */ SLOT_NAYRUS_LOVE, /* 0x11 */ SLOT_NAYRUS_LOVE,
@ -146,46 +146,46 @@ typedef enum {
} InventorySlot; } InventorySlot;
typedef enum { typedef enum {
/* 0x00 */ ITEM_STICK, /* 0x00 */ ITEM_DEKU_STICK,
/* 0x01 */ ITEM_NUT, /* 0x01 */ ITEM_DEKU_NUT,
/* 0x02 */ ITEM_BOMB, /* 0x02 */ ITEM_BOMB,
/* 0x03 */ ITEM_BOW, /* 0x03 */ ITEM_BOW,
/* 0x04 */ ITEM_ARROW_FIRE, /* 0x04 */ ITEM_ARROW_FIRE,
/* 0x05 */ ITEM_DINS_FIRE, /* 0x05 */ ITEM_DINS_FIRE,
/* 0x06 */ ITEM_SLINGSHOT, /* 0x06 */ ITEM_SLINGSHOT,
/* 0x07 */ ITEM_OCARINA_FAIRY, /* 0x07 */ ITEM_OCARINA_FAIRY,
/* 0x08 */ ITEM_OCARINA_TIME, /* 0x08 */ ITEM_OCARINA_OF_TIME,
/* 0x09 */ ITEM_BOMBCHU, /* 0x09 */ ITEM_BOMBCHU,
/* 0x0A */ ITEM_HOOKSHOT, /* 0x0A */ ITEM_HOOKSHOT,
/* 0x0B */ ITEM_LONGSHOT, /* 0x0B */ ITEM_LONGSHOT,
/* 0x0C */ ITEM_ARROW_ICE, /* 0x0C */ ITEM_ARROW_ICE,
/* 0x0D */ ITEM_FARORES_WIND, /* 0x0D */ ITEM_FARORES_WIND,
/* 0x0E */ ITEM_BOOMERANG, /* 0x0E */ ITEM_BOOMERANG,
/* 0x0F */ ITEM_LENS, /* 0x0F */ ITEM_LENS_OF_TRUTH,
/* 0x10 */ ITEM_BEAN, /* 0x10 */ ITEM_MAGIC_BEAN,
/* 0x11 */ ITEM_HAMMER, /* 0x11 */ ITEM_HAMMER,
/* 0x12 */ ITEM_ARROW_LIGHT, /* 0x12 */ ITEM_ARROW_LIGHT,
/* 0x13 */ ITEM_NAYRUS_LOVE, /* 0x13 */ ITEM_NAYRUS_LOVE,
/* 0x14 */ ITEM_BOTTLE, /* 0x14 */ ITEM_BOTTLE_EMPTY,
/* 0x15 */ ITEM_POTION_RED, /* 0x15 */ ITEM_BOTTLE_POTION_RED,
/* 0x16 */ ITEM_POTION_GREEN, /* 0x16 */ ITEM_BOTTLE_POTION_GREEN,
/* 0x17 */ ITEM_POTION_BLUE, /* 0x17 */ ITEM_BOTTLE_POTION_BLUE,
/* 0x18 */ ITEM_FAIRY, /* 0x18 */ ITEM_BOTTLE_FAIRY,
/* 0x19 */ ITEM_FISH, /* 0x19 */ ITEM_BOTTLE_FISH,
/* 0x1A */ ITEM_MILK_BOTTLE, /* 0x1A */ ITEM_BOTTLE_MILK_FULL,
/* 0x1B */ ITEM_LETTER_RUTO, /* 0x1B */ ITEM_BOTTLE_RUTOS_LETTER,
/* 0x1C */ ITEM_BLUE_FIRE, /* 0x1C */ ITEM_BOTTLE_BLUE_FIRE,
/* 0x1D */ ITEM_BUG, /* 0x1D */ ITEM_BOTTLE_BUG,
/* 0x1E */ ITEM_BIG_POE, /* 0x1E */ ITEM_BOTTLE_BIG_POE,
/* 0x1F */ ITEM_MILK_HALF, /* 0x1F */ ITEM_BOTTLE_MILK_HALF,
/* 0x20 */ ITEM_POE, /* 0x20 */ ITEM_BOTTLE_POE,
/* 0x21 */ ITEM_WEIRD_EGG, /* 0x21 */ ITEM_WEIRD_EGG,
/* 0x22 */ ITEM_CHICKEN, /* 0x22 */ ITEM_CHICKEN,
/* 0x23 */ ITEM_LETTER_ZELDA, /* 0x23 */ ITEM_ZELDAS_LETTER,
/* 0x24 */ ITEM_MASK_KEATON, /* 0x24 */ ITEM_MASK_KEATON,
/* 0x25 */ ITEM_MASK_SKULL, /* 0x25 */ ITEM_MASK_SKULL,
/* 0x26 */ ITEM_MASK_SPOOKY, /* 0x26 */ ITEM_MASK_SPOOKY,
/* 0x27 */ ITEM_MASK_BUNNY, /* 0x27 */ ITEM_MASK_BUNNY_HOOD,
/* 0x28 */ ITEM_MASK_GORON, /* 0x28 */ ITEM_MASK_GORON,
/* 0x29 */ ITEM_MASK_ZORA, /* 0x29 */ ITEM_MASK_ZORA,
/* 0x2A */ ITEM_MASK_GERUDO, /* 0x2A */ ITEM_MASK_GERUDO,
@ -196,18 +196,18 @@ typedef enum {
/* 0x2F */ ITEM_COJIRO, /* 0x2F */ ITEM_COJIRO,
/* 0x30 */ ITEM_ODD_MUSHROOM, /* 0x30 */ ITEM_ODD_MUSHROOM,
/* 0x31 */ ITEM_ODD_POTION, /* 0x31 */ ITEM_ODD_POTION,
/* 0x32 */ ITEM_SAW, /* 0x32 */ ITEM_POACHERS_SAW,
/* 0x33 */ ITEM_SWORD_BROKEN, /* 0x33 */ ITEM_BROKEN_GORONS_SWORD,
/* 0x34 */ ITEM_PRESCRIPTION, /* 0x34 */ ITEM_PRESCRIPTION,
/* 0x35 */ ITEM_FROG, /* 0x35 */ ITEM_EYEBALL_FROG,
/* 0x36 */ ITEM_EYEDROPS, /* 0x36 */ ITEM_EYE_DROPS,
/* 0x37 */ ITEM_CLAIM_CHECK, /* 0x37 */ ITEM_CLAIM_CHECK,
/* 0x38 */ ITEM_BOW_ARROW_FIRE, /* 0x38 */ ITEM_BOW_FIRE,
/* 0x39 */ ITEM_BOW_ARROW_ICE, /* 0x39 */ ITEM_BOW_ICE,
/* 0x3A */ ITEM_BOW_ARROW_LIGHT, /* 0x3A */ ITEM_BOW_LIGHT,
/* 0x3B */ ITEM_SWORD_KOKIRI, /* 0x3B */ ITEM_SWORD_KOKIRI,
/* 0x3C */ ITEM_SWORD_MASTER, /* 0x3C */ ITEM_SWORD_MASTER,
/* 0x3D */ ITEM_SWORD_BGS, /* 0x3D */ ITEM_SWORD_BIGGORON,
/* 0x3E */ ITEM_SHIELD_DEKU, /* 0x3E */ ITEM_SHIELD_DEKU,
/* 0x3F */ ITEM_SHIELD_HYLIAN, /* 0x3F */ ITEM_SHIELD_HYLIAN,
/* 0x40 */ ITEM_SHIELD_MIRROR, /* 0x40 */ ITEM_SHIELD_MIRROR,
@ -226,15 +226,15 @@ typedef enum {
/* 0x4D */ ITEM_BOMB_BAG_20, /* 0x4D */ ITEM_BOMB_BAG_20,
/* 0x4E */ ITEM_BOMB_BAG_30, /* 0x4E */ ITEM_BOMB_BAG_30,
/* 0x4F */ ITEM_BOMB_BAG_40, /* 0x4F */ ITEM_BOMB_BAG_40,
/* 0x50 */ ITEM_BRACELET, /* 0x50 */ ITEM_STRENGTH_GORONS_BRACELET,
/* 0x51 */ ITEM_GAUNTLETS_SILVER, /* 0x51 */ ITEM_STRENGTH_SILVER_GAUNTLETS,
/* 0x52 */ ITEM_GAUNTLETS_GOLD, /* 0x52 */ ITEM_STRENGTH_GOLD_GAUNTLETS,
/* 0x53 */ ITEM_SCALE_SILVER, /* 0x53 */ ITEM_SCALE_SILVER,
/* 0x54 */ ITEM_SCALE_GOLDEN, /* 0x54 */ ITEM_SCALE_GOLDEN,
/* 0x55 */ ITEM_SWORD_KNIFE, /* 0x55 */ ITEM_GIANTS_KNIFE,
/* 0x56 */ ITEM_WALLET_ADULT, /* 0x56 */ ITEM_ADULTS_WALLET,
/* 0x57 */ ITEM_WALLET_GIANT, /* 0x57 */ ITEM_GIANTS_WALLET,
/* 0x58 */ ITEM_SEEDS, /* 0x58 */ ITEM_DEKU_SEEDS,
/* 0x59 */ ITEM_FISHING_POLE, /* 0x59 */ ITEM_FISHING_POLE,
/* 0x5A */ ITEM_SONG_MINUET, /* 0x5A */ ITEM_SONG_MINUET,
/* 0x5B */ ITEM_SONG_BOLERO, /* 0x5B */ ITEM_SONG_BOLERO,
@ -258,16 +258,16 @@ typedef enum {
/* 0x6D */ ITEM_GORON_RUBY, /* 0x6D */ ITEM_GORON_RUBY,
/* 0x6E */ ITEM_ZORA_SAPPHIRE, /* 0x6E */ ITEM_ZORA_SAPPHIRE,
/* 0x6F */ ITEM_STONE_OF_AGONY, /* 0x6F */ ITEM_STONE_OF_AGONY,
/* 0x70 */ ITEM_GERUDO_CARD, /* 0x70 */ ITEM_GERUDOS_CARD,
/* 0x71 */ ITEM_SKULL_TOKEN, /* 0x71 */ ITEM_SKULL_TOKEN,
/* 0x72 */ ITEM_HEART_CONTAINER, /* 0x72 */ ITEM_HEART_CONTAINER,
/* 0x73 */ ITEM_HEART_PIECE, /* 0x73 */ ITEM_HEART_PIECE,
/* 0x74 */ ITEM_KEY_BOSS, /* 0x74 */ ITEM_DUNGEON_BOSS_KEY,
/* 0x75 */ ITEM_COMPASS, /* 0x75 */ ITEM_DUNGEON_COMPASS,
/* 0x76 */ ITEM_DUNGEON_MAP, /* 0x76 */ ITEM_DUNGEON_MAP,
/* 0x77 */ ITEM_KEY_SMALL, /* 0x77 */ ITEM_SMALL_KEY,
/* 0x78 */ ITEM_MAGIC_SMALL, /* 0x78 */ ITEM_MAGIC_JAR_SMALL,
/* 0x79 */ ITEM_MAGIC_LARGE, /* 0x79 */ ITEM_MAGIC_JAR_BIG,
/* 0x7A */ ITEM_HEART_PIECE_2, /* 0x7A */ ITEM_HEART_PIECE_2,
/* 0x7B */ ITEM_INVALID_1, /* 0x7B */ ITEM_INVALID_1,
/* 0x7C */ ITEM_INVALID_2, /* 0x7C */ ITEM_INVALID_2,
@ -284,24 +284,24 @@ typedef enum {
/* 0x87 */ ITEM_RUPEE_PURPLE, /* 0x87 */ ITEM_RUPEE_PURPLE,
/* 0x88 */ ITEM_RUPEE_GOLD, /* 0x88 */ ITEM_RUPEE_GOLD,
/* 0x89 */ ITEM_INVALID_8, /* 0x89 */ ITEM_INVALID_8,
/* 0x8A */ ITEM_STICKS_5, /* 0x8A */ ITEM_DEKU_STICKS_5,
/* 0x8B */ ITEM_STICKS_10, /* 0x8B */ ITEM_DEKU_STICKS_10,
/* 0x8C */ ITEM_NUTS_5, /* 0x8C */ ITEM_DEKU_NUTS_5,
/* 0x8D */ ITEM_NUTS_10, /* 0x8D */ ITEM_DEKU_NUTS_10,
/* 0x8E */ ITEM_BOMBS_5, /* 0x8E */ ITEM_BOMBS_5,
/* 0x8F */ ITEM_BOMBS_10, /* 0x8F */ ITEM_BOMBS_10,
/* 0x90 */ ITEM_BOMBS_20, /* 0x90 */ ITEM_BOMBS_20,
/* 0x91 */ ITEM_BOMBS_30, /* 0x91 */ ITEM_BOMBS_30,
/* 0x92 */ ITEM_ARROWS_SMALL, /* 0x92 */ ITEM_ARROWS_5,
/* 0x93 */ ITEM_ARROWS_MEDIUM, /* 0x93 */ ITEM_ARROWS_10,
/* 0x94 */ ITEM_ARROWS_LARGE, /* 0x94 */ ITEM_ARROWS_30,
/* 0x95 */ ITEM_SEEDS_30, /* 0x95 */ ITEM_DEKU_SEEDS_30,
/* 0x96 */ ITEM_BOMBCHUS_5, /* 0x96 */ ITEM_BOMBCHUS_5,
/* 0x97 */ ITEM_BOMBCHUS_20, /* 0x97 */ ITEM_BOMBCHUS_20,
/* 0x98 */ ITEM_STICK_UPGRADE_20, /* 0x98 */ ITEM_DEKU_STICK_UPGRADE_20,
/* 0x99 */ ITEM_STICK_UPGRADE_30, /* 0x99 */ ITEM_DEKU_STICK_UPGRADE_30,
/* 0x9A */ ITEM_NUT_UPGRADE_30, /* 0x9A */ ITEM_DEKU_NUT_UPGRADE_30,
/* 0x9B */ ITEM_NUT_UPGRADE_40, /* 0x9B */ ITEM_DEKU_NUT_UPGRADE_40,
/* 0xFC */ ITEM_LAST_USED = 0xFC, /* 0xFC */ ITEM_LAST_USED = 0xFC,
/* 0xFE */ ITEM_NONE_FE = 0xFE, /* 0xFE */ ITEM_NONE_FE = 0xFE,
/* 0xFF */ ITEM_NONE = 0xFF /* 0xFF */ ITEM_NONE = 0xFF
@ -314,42 +314,42 @@ typedef enum {
typedef enum { typedef enum {
/* 0x00 */ GI_NONE, /* 0x00 */ GI_NONE,
/* 0x01 */ GI_BOMBS_5, /* 0x01 */ GI_BOMBS_5,
/* 0x02 */ GI_NUTS_5, /* 0x02 */ GI_DEKU_NUTS_5,
/* 0x03 */ GI_BOMBCHUS_10, /* 0x03 */ GI_BOMBCHUS_10,
/* 0x04 */ GI_BOW, /* 0x04 */ GI_BOW,
/* 0x05 */ GI_SLINGSHOT, /* 0x05 */ GI_SLINGSHOT,
/* 0x06 */ GI_BOOMERANG, /* 0x06 */ GI_BOOMERANG,
/* 0x07 */ GI_STICKS_1, /* 0x07 */ GI_DEKU_STICKS_1,
/* 0x08 */ GI_HOOKSHOT, /* 0x08 */ GI_HOOKSHOT,
/* 0x09 */ GI_LONGSHOT, /* 0x09 */ GI_LONGSHOT,
/* 0x0A */ GI_LENS, /* 0x0A */ GI_LENS_OF_TRUTH,
/* 0x0B */ GI_LETTER_ZELDA, /* 0x0B */ GI_ZELDAS_LETTER,
/* 0x0C */ GI_OCARINA_OOT, /* 0x0C */ GI_OCARINA_OF_TIME,
/* 0x0D */ GI_HAMMER, /* 0x0D */ GI_HAMMER,
/* 0x0E */ GI_COJIRO, /* 0x0E */ GI_COJIRO,
/* 0x0F */ GI_BOTTLE, /* 0x0F */ GI_BOTTLE_EMPTY,
/* 0x10 */ GI_POTION_RED, /* 0x10 */ GI_BOTTLE_POTION_RED,
/* 0x11 */ GI_POTION_GREEN, /* 0x11 */ GI_BOTTLE_POTION_GREEN,
/* 0x12 */ GI_POTION_BLUE, /* 0x12 */ GI_BOTTLE_POTION_BLUE,
/* 0x13 */ GI_FAIRY, /* 0x13 */ GI_BOTTLE_FAIRY,
/* 0x14 */ GI_MILK_BOTTLE, /* 0x14 */ GI_BOTTLE_MILK_FULL,
/* 0x15 */ GI_LETTER_RUTO, /* 0x15 */ GI_BOTTLE_RUTOS_LETTER,
/* 0x16 */ GI_BEAN, /* 0x16 */ GI_MAGIC_BEAN,
/* 0x17 */ GI_MASK_SKULL, /* 0x17 */ GI_MASK_SKULL,
/* 0x18 */ GI_MASK_SPOOKY, /* 0x18 */ GI_MASK_SPOOKY,
/* 0x19 */ GI_CHICKEN, // uses bean message ID /* 0x19 */ GI_CHICKEN, // uses bean message ID
/* 0x1A */ GI_MASK_KEATON, /* 0x1A */ GI_MASK_KEATON,
/* 0x1B */ GI_MASK_BUNNY, /* 0x1B */ GI_MASK_BUNNY_HOOD,
/* 0x1C */ GI_MASK_TRUTH, /* 0x1C */ GI_MASK_TRUTH,
/* 0x1D */ GI_POCKET_EGG, /* 0x1D */ GI_POCKET_EGG,
/* 0x1E */ GI_POCKET_CUCCO, // uses bean message ID /* 0x1E */ GI_POCKET_CUCCO, // uses bean message ID
/* 0x1F */ GI_ODD_MUSHROOM, /* 0x1F */ GI_ODD_MUSHROOM,
/* 0x20 */ GI_ODD_POTION, /* 0x20 */ GI_ODD_POTION,
/* 0x21 */ GI_SAW, /* 0x21 */ GI_POACHERS_SAW,
/* 0x22 */ GI_SWORD_BROKEN, /* 0x22 */ GI_BROKEN_GORONS_SWORD,
/* 0x23 */ GI_PRESCRIPTION, /* 0x23 */ GI_PRESCRIPTION,
/* 0x24 */ GI_FROG, /* 0x24 */ GI_EYEBALL_FROG,
/* 0x25 */ GI_EYEDROPS, /* 0x25 */ GI_EYE_DROPS,
/* 0x26 */ GI_CLAIM_CHECK, /* 0x26 */ GI_CLAIM_CHECK,
/* 0x27 */ GI_SWORD_KOKIRI, /* 0x27 */ GI_SWORD_KOKIRI,
/* 0x28 */ GI_SWORD_KNIFE, /* 0x28 */ GI_SWORD_KNIFE,
@ -365,29 +365,29 @@ typedef enum {
/* 0x32 */ GI_BOMB_BAG_20, /* 0x32 */ GI_BOMB_BAG_20,
/* 0x33 */ GI_BOMB_BAG_30, /* 0x33 */ GI_BOMB_BAG_30,
/* 0x34 */ GI_BOMB_BAG_40, /* 0x34 */ GI_BOMB_BAG_40,
/* 0x35 */ GI_GAUNTLETS_SILVER, /* 0x35 */ GI_SILVER_GAUNTLETS,
/* 0x36 */ GI_GAUNTLETS_GOLD, /* 0x36 */ GI_GOLD_GAUNTLETS,
/* 0x37 */ GI_SCALE_SILVER, /* 0x37 */ GI_SCALE_SILVER,
/* 0x38 */ GI_SCALE_GOLD, /* 0x38 */ GI_SCALE_GOLDEN,
/* 0x39 */ GI_STONE_OF_AGONY, /* 0x39 */ GI_STONE_OF_AGONY,
/* 0x3A */ GI_GERUDO_CARD, /* 0x3A */ GI_GERUDOS_CARD,
/* 0x3B */ GI_OCARINA_FAIRY, // uses Ocarina of Time message ID /* 0x3B */ GI_OCARINA_FAIRY, // uses Ocarina of Time message ID
/* 0x3C */ GI_SEEDS_5, /* 0x3C */ GI_DEKU_SEEDS_5,
/* 0x3D */ GI_HEART_CONTAINER, /* 0x3D */ GI_HEART_CONTAINER,
/* 0x3E */ GI_HEART_PIECE, /* 0x3E */ GI_HEART_PIECE,
/* 0x3F */ GI_KEY_BOSS, /* 0x3F */ GI_BOSS_KEY,
/* 0x40 */ GI_COMPASS, /* 0x40 */ GI_COMPASS,
/* 0x41 */ GI_MAP, /* 0x41 */ GI_DUNGEON_MAP,
/* 0x42 */ GI_KEY_SMALL, /* 0x42 */ GI_SMALL_KEY,
/* 0x43 */ GI_MAGIC_SMALL, // or blue rupee if not from a drop /* 0x43 */ GI_MAGIC_JAR_SMALL, // or blue rupee if not from a drop
/* 0x44 */ GI_MAGIC_LARGE, // or blue rupee if not from a drop /* 0x44 */ GI_MAGIC_JAR_LARGE, // or blue rupee if not from a drop
/* 0x45 */ GI_WALLET_ADULT, /* 0x45 */ GI_WALLET_ADULT,
/* 0x46 */ GI_WALLET_GIANT, /* 0x46 */ GI_WALLET_GIANT,
/* 0x47 */ GI_WEIRD_EGG, /* 0x47 */ GI_WEIRD_EGG,
/* 0x48 */ GI_RECOVERY_HEART, /* 0x48 */ GI_RECOVERY_HEART,
/* 0x49 */ GI_ARROWS_SMALL, // amount changes depending on context /* 0x49 */ GI_ARROWS_5, // amount changes depending on context
/* 0x4A */ GI_ARROWS_MEDIUM, // amount changes depending on context /* 0x4A */ GI_ARROWS_10, // amount changes depending on context
/* 0x4B */ GI_ARROWS_LARGE, // amount changes depending on context /* 0x4B */ GI_ARROWS_30, // amount changes depending on context
/* 0x4C */ GI_RUPEE_GREEN, /* 0x4C */ GI_RUPEE_GREEN,
/* 0x4D */ GI_RUPEE_BLUE, /* 0x4D */ GI_RUPEE_BLUE,
/* 0x4E */ GI_RUPEE_RED, /* 0x4E */ GI_RUPEE_RED,
@ -396,10 +396,10 @@ typedef enum {
/* 0x51 */ GI_MASK_GORON, /* 0x51 */ GI_MASK_GORON,
/* 0x52 */ GI_MASK_ZORA, /* 0x52 */ GI_MASK_ZORA,
/* 0x53 */ GI_MASK_GERUDO, /* 0x53 */ GI_MASK_GERUDO,
/* 0x54 */ GI_BRACELET, /* 0x54 */ GI_GORONS_BRACELET,
/* 0x55 */ GI_RUPEE_PURPLE, /* 0x55 */ GI_RUPEE_PURPLE,
/* 0x56 */ GI_RUPEE_GOLD, /* 0x56 */ GI_RUPEE_GOLD,
/* 0x57 */ GI_SWORD_BGS, /* 0x57 */ GI_SWORD_BIGGORON,
/* 0x58 */ GI_ARROW_FIRE, /* 0x58 */ GI_ARROW_FIRE,
/* 0x59 */ GI_ARROW_ICE, /* 0x59 */ GI_ARROW_ICE,
/* 0x5A */ GI_ARROW_LIGHT, /* 0x5A */ GI_ARROW_LIGHT,
@ -409,32 +409,32 @@ typedef enum {
/* 0x5E */ GI_NAYRUS_LOVE, /* 0x5E */ GI_NAYRUS_LOVE,
/* 0x5F */ GI_BULLET_BAG_30, /* 0x5F */ GI_BULLET_BAG_30,
/* 0x60 */ GI_BULLET_BAG_40, /* 0x60 */ GI_BULLET_BAG_40,
/* 0x61 */ GI_STICKS_5, /* 0x61 */ GI_DEKU_STICKS_5,
/* 0x62 */ GI_STICKS_10, /* 0x62 */ GI_DEKU_STICKS_10,
/* 0x63 */ GI_NUTS_5_2, /* 0x63 */ GI_DEKU_NUTS_5_2,
/* 0x64 */ GI_NUTS_10, /* 0x64 */ GI_DEKU_NUTS_10,
/* 0x65 */ GI_BOMBS_1, /* 0x65 */ GI_BOMBS_1,
/* 0x66 */ GI_BOMBS_10, /* 0x66 */ GI_BOMBS_10,
/* 0x67 */ GI_BOMBS_20, /* 0x67 */ GI_BOMBS_20,
/* 0x68 */ GI_BOMBS_30, /* 0x68 */ GI_BOMBS_30,
/* 0x69 */ GI_SEEDS_30, /* 0x69 */ GI_DEKU_SEEDS_30,
/* 0x6A */ GI_BOMBCHUS_5, /* 0x6A */ GI_BOMBCHUS_5,
/* 0x6B */ GI_BOMBCHUS_20, /* 0x6B */ GI_BOMBCHUS_20,
/* 0x6C */ GI_FISH, /* 0x6C */ GI_BOTTLE_FISH,
/* 0x6D */ GI_BUGS, /* 0x6D */ GI_BOTTLE_BUGS,
/* 0x6E */ GI_BLUE_FIRE, /* 0x6E */ GI_BOTTLE_BLUE_FIRE,
/* 0x6F */ GI_POE, /* 0x6F */ GI_BOTTLE_POE,
/* 0x70 */ GI_BIG_POE, /* 0x70 */ GI_BOTTLE_BIG_POE,
/* 0x71 */ GI_DOOR_KEY, // specific to chest minigame /* 0x71 */ GI_DOOR_KEY, // specific to chest minigame
/* 0x72 */ GI_RUPEE_GREEN_LOSE, // specific to chest minigame /* 0x72 */ GI_RUPEE_GREEN_LOSE, // specific to chest minigame
/* 0x73 */ GI_RUPEE_BLUE_LOSE, // specific to chest minigame /* 0x73 */ GI_RUPEE_BLUE_LOSE, // specific to chest minigame
/* 0x74 */ GI_RUPEE_RED_LOSE, // specific to chest minigame /* 0x74 */ GI_RUPEE_RED_LOSE, // specific to chest minigame
/* 0x75 */ GI_RUPEE_PURPLE_LOSE, // specific to chest minigame /* 0x75 */ GI_RUPEE_PURPLE_LOSE, // specific to chest minigame
/* 0x76 */ GI_HEART_PIECE_WIN, // specific to chest minigame /* 0x76 */ GI_HEART_PIECE_WIN, // specific to chest minigame
/* 0x77 */ GI_STICK_UPGRADE_20, /* 0x77 */ GI_DEKU_STICK_UPGRADE_20,
/* 0x78 */ GI_STICK_UPGRADE_30, /* 0x78 */ GI_DEKU_STICK_UPGRADE_30,
/* 0x79 */ GI_NUT_UPGRADE_30, /* 0x79 */ GI_DEKU_NUT_UPGRADE_30,
/* 0x7A */ GI_NUT_UPGRADE_40, /* 0x7A */ GI_DEKU_NUT_UPGRADE_40,
/* 0x7B */ GI_BULLET_BAG_50, /* 0x7B */ GI_BULLET_BAG_50,
/* 0x7C */ GI_ICE_TRAP, // freezes link when opened from a chest /* 0x7C */ GI_ICE_TRAP, // freezes link when opened from a chest
/* 0x7D */ GI_TEXT_0, // no model appears over Link, shows text id 0 (pocket egg) /* 0x7D */ GI_TEXT_0, // no model appears over Link, shows text id 0 (pocket egg)
@ -442,8 +442,8 @@ typedef enum {
} GetItemID; } GetItemID;
typedef enum { typedef enum {
/* 0x00 */ GID_BOTTLE, /* 0x00 */ GID_BOTTLE_EMPTY,
/* 0x01 */ GID_KEY_SMALL, /* 0x01 */ GID_SMALL_KEY,
/* 0x02 */ GID_SONG_MINUET, /* 0x02 */ GID_SONG_MINUET,
/* 0x03 */ GID_SONG_BOLERO, /* 0x03 */ GID_SONG_BOLERO,
/* 0x04 */ GID_SONG_SERENADE, /* 0x04 */ GID_SONG_SERENADE,
@ -451,7 +451,7 @@ typedef enum {
/* 0x06 */ GID_SONG_NOCTURNE, /* 0x06 */ GID_SONG_NOCTURNE,
/* 0x07 */ GID_SONG_PRELUDE, /* 0x07 */ GID_SONG_PRELUDE,
/* 0x08 */ GID_RECOVERY_HEART, /* 0x08 */ GID_RECOVERY_HEART,
/* 0x09 */ GID_KEY_BOSS, /* 0x09 */ GID_BOSS_KEY,
/* 0x0A */ GID_COMPASS, /* 0x0A */ GID_COMPASS,
/* 0x0B */ GID_MEDALLION_FOREST, /* 0x0B */ GID_MEDALLION_FOREST,
/* 0x0C */ GID_MEDALLION_FIRE, /* 0x0C */ GID_MEDALLION_FIRE,
@ -459,7 +459,7 @@ typedef enum {
/* 0x0E */ GID_MEDALLION_SPIRIT, /* 0x0E */ GID_MEDALLION_SPIRIT,
/* 0x0F */ GID_MEDALLION_SHADOW, /* 0x0F */ GID_MEDALLION_SHADOW,
/* 0x10 */ GID_MEDALLION_LIGHT, /* 0x10 */ GID_MEDALLION_LIGHT,
/* 0x11 */ GID_NUTS, /* 0x11 */ GID_DEKU_NUTS,
/* 0x12 */ GID_HEART_CONTAINER, /* 0x12 */ GID_HEART_CONTAINER,
/* 0x13 */ GID_HEART_PIECE, /* 0x13 */ GID_HEART_PIECE,
/* 0x14 */ GID_QUIVER_30, /* 0x14 */ GID_QUIVER_30,
@ -468,19 +468,19 @@ typedef enum {
/* 0x17 */ GID_BOMB_BAG_20, /* 0x17 */ GID_BOMB_BAG_20,
/* 0x18 */ GID_BOMB_BAG_30, /* 0x18 */ GID_BOMB_BAG_30,
/* 0x19 */ GID_BOMB_BAG_40, /* 0x19 */ GID_BOMB_BAG_40,
/* 0x1A */ GID_STICK, /* 0x1A */ GID_DEKU_STICK,
/* 0x1B */ GID_DUNGEON_MAP, /* 0x1B */ GID_DUNGEON_MAP,
/* 0x1C */ GID_SHIELD_DEKU, /* 0x1C */ GID_SHIELD_DEKU,
/* 0x1D */ GID_MAGIC_SMALL, /* 0x1D */ GID_MAGIC_JAR_SMALL,
/* 0x1E */ GID_MAGIC_LARGE, /* 0x1E */ GID_MAGIC_JAR_LARGE,
/* 0x1F */ GID_BOMB, /* 0x1F */ GID_BOMB,
/* 0x20 */ GID_STONE_OF_AGONY, /* 0x20 */ GID_STONE_OF_AGONY,
/* 0x21 */ GID_WALLET_ADULT, /* 0x21 */ GID_WALLET_ADULT,
/* 0x22 */ GID_WALLET_GIANT, /* 0x22 */ GID_WALLET_GIANT,
/* 0x23 */ GID_GERUDO_CARD, /* 0x23 */ GID_GERUDOS_CARD,
/* 0x24 */ GID_ARROWS_SMALL, /* 0x24 */ GID_ARROWS_5,
/* 0x25 */ GID_ARROWS_MEDIUM, /* 0x25 */ GID_ARROWS_10,
/* 0x26 */ GID_ARROWS_LARGE, /* 0x26 */ GID_ARROWS_30,
/* 0x27 */ GID_BOMBCHU, /* 0x27 */ GID_BOMBCHU,
/* 0x28 */ GID_EGG, /* 0x28 */ GID_EGG,
/* 0x29 */ GID_SCALE_SILVER, /* 0x29 */ GID_SCALE_SILVER,
@ -488,50 +488,50 @@ typedef enum {
/* 0x2B */ GID_SHIELD_HYLIAN, /* 0x2B */ GID_SHIELD_HYLIAN,
/* 0x2C */ GID_HOOKSHOT, /* 0x2C */ GID_HOOKSHOT,
/* 0x2D */ GID_LONGSHOT, /* 0x2D */ GID_LONGSHOT,
/* 0x2E */ GID_OCARINA_TIME, /* 0x2E */ GID_OCARINA_OF_TIME,
/* 0x2F */ GID_MILK, /* 0x2F */ GID_BOTTLE_MILK_FULL,
/* 0x30 */ GID_MASK_KEATON, /* 0x30 */ GID_MASK_KEATON,
/* 0x31 */ GID_MASK_SPOOKY, /* 0x31 */ GID_MASK_SPOOKY,
/* 0x32 */ GID_SLINGSHOT, /* 0x32 */ GID_SLINGSHOT,
/* 0x33 */ GID_BOOMERANG, /* 0x33 */ GID_BOOMERANG,
/* 0x34 */ GID_BOW, /* 0x34 */ GID_BOW,
/* 0x35 */ GID_LENS, /* 0x35 */ GID_LENS_OF_TRUTH,
/* 0x36 */ GID_POTION_GREEN, /* 0x36 */ GID_BOTTLE_POTION_GREEN,
/* 0x37 */ GID_POTION_RED, /* 0x37 */ GID_BOTTLE_POTION_RED,
/* 0x38 */ GID_POTION_BLUE, /* 0x38 */ GID_BOTTLE_POTION_BLUE,
/* 0x39 */ GID_SHIELD_MIRROR, /* 0x39 */ GID_SHIELD_MIRROR,
/* 0x3A */ GID_LETTER_ZELDA, /* 0x3A */ GID_ZELDAS_LETTER,
/* 0x3B */ GID_TUNIC_GORON, /* 0x3B */ GID_TUNIC_GORON,
/* 0x3C */ GID_TUNIC_ZORA, /* 0x3C */ GID_TUNIC_ZORA,
/* 0x3D */ GID_BEAN, /* 0x3D */ GID_MAGIC_BEAN,
/* 0x3E */ GID_FISH, /* 0x3E */ GID_FISH,
/* 0x3F */ GID_SAW, /* 0x3F */ GID_POACHERS_SAW,
/* 0x40 */ GID_HAMMER, /* 0x40 */ GID_HAMMER,
/* 0x41 */ GID_GRASS, /* 0x41 */ GID_GRASS,
/* 0x42 */ GID_SWORD_BGS, /* 0x42 */ GID_SWORD_BIGGORON,
/* 0x43 */ GID_CHICKEN, /* 0x43 */ GID_CUCCO,
/* 0x44 */ GID_LETTER_RUTO, /* 0x44 */ GID_BOTTLE_RUTOS_LETTER,
/* 0x45 */ GID_OCARINA_FAIRY, /* 0x45 */ GID_OCARINA_FAIRY,
/* 0x46 */ GID_BOOTS_IRON, /* 0x46 */ GID_BOOTS_IRON,
/* 0x47 */ GID_SEEDS, /* 0x47 */ GID_DEKU_SEEDS,
/* 0x48 */ GID_GAUNTLETS_SILVER, /* 0x48 */ GID_SILVER_GAUNTLETS,
/* 0x49 */ GID_GAUNTLETS_GOLD, /* 0x49 */ GID_GOLD_GAUNTLETS,
/* 0x4A */ GID_NCOIN_YELLOW, /* 0x4A */ GID_NCOIN_YELLOW,
/* 0x4B */ GID_NCOIN_RED, /* 0x4B */ GID_NCOIN_RED,
/* 0x4C */ GID_NCOIN_GREEN, /* 0x4C */ GID_NCOIN_GREEN,
/* 0x4D */ GID_NCOIN_BLUE, /* 0x4D */ GID_NCOIN_BLUE,
/* 0x4E */ GID_MASK_SKULL, /* 0x4E */ GID_MASK_SKULL,
/* 0x4F */ GID_MASK_BUNNY, /* 0x4F */ GID_MASK_BUNNY_HOOD,
/* 0x50 */ GID_MASK_TRUTH, /* 0x50 */ GID_MASK_TRUTH,
/* 0x51 */ GID_EYEDROPS, /* 0x51 */ GID_EYE_DROPS,
/* 0x52 */ GID_ODD_POTION, /* 0x52 */ GID_ODD_POTION,
/* 0x53 */ GID_ODD_MUSHROOM, /* 0x53 */ GID_ODD_MUSHROOM,
/* 0x54 */ GID_CLAIM_CHECK, /* 0x54 */ GID_CLAIM_CHECK,
/* 0x55 */ GID_SWORD_BROKEN, /* 0x55 */ GID_BROKEN_GORONS_SWORD,
/* 0x56 */ GID_PRESCRIPTION, /* 0x56 */ GID_PRESCRIPTION,
/* 0x57 */ GID_BRACELET, /* 0x57 */ GID_GORONS_BRACELET,
/* 0x58 */ GID_SOLDOUT, /* 0x58 */ GID_SOLDOUT,
/* 0x59 */ GID_FROG, /* 0x59 */ GID_EYEBALL_FROG,
/* 0x5A */ GID_MASK_GORON, /* 0x5A */ GID_MASK_GORON,
/* 0x5B */ GID_MASK_ZORA, /* 0x5B */ GID_MASK_ZORA,
/* 0x5C */ GID_MASK_GERUDO, /* 0x5C */ GID_MASK_GERUDO,
@ -564,35 +564,35 @@ typedef enum {
typedef enum { typedef enum {
/* 0x00 */ EXCH_ITEM_NONE, /* 0x00 */ EXCH_ITEM_NONE,
/* 0x01 */ EXCH_ITEM_LETTER_ZELDA, /* 0x01 */ EXCH_ITEM_ZELDAS_LETTER,
/* 0x02 */ EXCH_ITEM_WEIRD_EGG, /* 0x02 */ EXCH_ITEM_WEIRD_EGG,
/* 0x03 */ EXCH_ITEM_CHICKEN, /* 0x03 */ EXCH_ITEM_CHICKEN,
/* 0x04 */ EXCH_ITEM_BEAN, /* 0x04 */ EXCH_ITEM_MAGIC_BEAN,
/* 0x05 */ EXCH_ITEM_POCKET_EGG, /* 0x05 */ EXCH_ITEM_POCKET_EGG,
/* 0x06 */ EXCH_ITEM_POCKET_CUCCO, /* 0x06 */ EXCH_ITEM_POCKET_CUCCO,
/* 0x07 */ EXCH_ITEM_COJIRO, /* 0x07 */ EXCH_ITEM_COJIRO,
/* 0x08 */ EXCH_ITEM_ODD_MUSHROOM, /* 0x08 */ EXCH_ITEM_ODD_MUSHROOM,
/* 0x09 */ EXCH_ITEM_ODD_POTION, /* 0x09 */ EXCH_ITEM_ODD_POTION,
/* 0x0A */ EXCH_ITEM_SAW, /* 0x0A */ EXCH_ITEM_POACHERS_SAW,
/* 0x0B */ EXCH_ITEM_SWORD_BROKEN, /* 0x0B */ EXCH_ITEM_BROKEN_GORONS_SWORD,
/* 0x0C */ EXCH_ITEM_PRESCRIPTION, /* 0x0C */ EXCH_ITEM_PRESCRIPTION,
/* 0x0D */ EXCH_ITEM_FROG, /* 0x0D */ EXCH_ITEM_EYEBALL_FROG,
/* 0x0E */ EXCH_ITEM_EYEDROPS, /* 0x0E */ EXCH_ITEM_EYE_DROPS,
/* 0x0F */ EXCH_ITEM_CLAIM_CHECK, /* 0x0F */ EXCH_ITEM_CLAIM_CHECK,
/* 0x10 */ EXCH_ITEM_MASK_SKULL, /* 0x10 */ EXCH_ITEM_MASK_SKULL,
/* 0x11 */ EXCH_ITEM_MASK_SPOOKY, /* 0x11 */ EXCH_ITEM_MASK_SPOOKY,
/* 0x12 */ EXCH_ITEM_MASK_KEATON, /* 0x12 */ EXCH_ITEM_MASK_KEATON,
/* 0x13 */ EXCH_ITEM_MASK_BUNNY, /* 0x13 */ EXCH_ITEM_MASK_BUNNY_HOOD,
/* 0x14 */ EXCH_ITEM_MASK_TRUTH, /* 0x14 */ EXCH_ITEM_MASK_TRUTH,
/* 0x15 */ EXCH_ITEM_MASK_GORON, /* 0x15 */ EXCH_ITEM_MASK_GORON,
/* 0x16 */ EXCH_ITEM_MASK_ZORA, /* 0x16 */ EXCH_ITEM_MASK_ZORA,
/* 0x17 */ EXCH_ITEM_MASK_GERUDO, /* 0x17 */ EXCH_ITEM_MASK_GERUDO,
/* 0x18 */ EXCH_ITEM_FISH, /* 0x18 */ EXCH_ITEM_BOTTLE_FISH,
/* 0x19 */ EXCH_ITEM_BLUE_FIRE, /* 0x19 */ EXCH_ITEM_BOTTLE_BLUE_FIRE,
/* 0x1A */ EXCH_ITEM_BUG, /* 0x1A */ EXCH_ITEM_BOTTLE_BUG,
/* 0x1B */ EXCH_ITEM_POE, /* 0x1B */ EXCH_ITEM_BOTTLE_POE,
/* 0x1C */ EXCH_ITEM_BIG_POE, /* 0x1C */ EXCH_ITEM_BOTTLE_BIG_POE,
/* 0x1D */ EXCH_ITEM_LETTER_RUTO, /* 0x1D */ EXCH_ITEM_BOTTLE_RUTOS_LETTER,
/* 0x1E */ EXCH_ITEM_MAX /* 0x1E */ EXCH_ITEM_MAX
} ExchangeItemID; } ExchangeItemID;

View file

@ -61,6 +61,14 @@ typedef enum {
/* 0x09 */ PLAYER_MASK_MAX /* 0x09 */ PLAYER_MASK_MAX
} PlayerMask; } PlayerMask;
typedef enum {
/* 0x0 */ PLAYER_ENV_HAZARD_NONE,
/* 0x1 */ PLAYER_ENV_HAZARD_HOTROOM,
/* 0x2 */ PLAYER_ENV_HAZARD_UNDERWATER_FLOOR,
/* 0x3 */ PLAYER_ENV_HAZARD_SWIMMING,
/* 0x4 */ PLAYER_ENV_HAZARD_UNDERWATER_FREE
} PlayerEnvHazard;
typedef enum { typedef enum {
/* 0x00 */ PLAYER_IA_NONE, /* 0x00 */ PLAYER_IA_NONE,
/* 0x01 */ PLAYER_IA_LAST_USED, /* 0x01 */ PLAYER_IA_LAST_USED,
@ -68,7 +76,7 @@ typedef enum {
/* 0x03 */ PLAYER_IA_SWORD_MASTER, /* 0x03 */ PLAYER_IA_SWORD_MASTER,
/* 0x04 */ PLAYER_IA_SWORD_KOKIRI, /* 0x04 */ PLAYER_IA_SWORD_KOKIRI,
/* 0x05 */ PLAYER_IA_SWORD_BGS, /* 0x05 */ PLAYER_IA_SWORD_BGS,
/* 0x06 */ PLAYER_IA_STICK, /* 0x06 */ PLAYER_IA_DEKU_STICK,
/* 0x07 */ PLAYER_IA_HAMMER, /* 0x07 */ PLAYER_IA_HAMMER,
/* 0x08 */ PLAYER_IA_BOW, /* 0x08 */ PLAYER_IA_BOW,
/* 0x09 */ PLAYER_IA_BOW_FIRE, /* 0x09 */ PLAYER_IA_BOW_FIRE,
@ -89,33 +97,33 @@ typedef enum {
/* 0x18 */ PLAYER_IA_FARORES_WIND, /* 0x18 */ PLAYER_IA_FARORES_WIND,
/* 0x19 */ PLAYER_IA_NAYRUS_LOVE, /* 0x19 */ PLAYER_IA_NAYRUS_LOVE,
/* 0x1A */ PLAYER_IA_DINS_FIRE, /* 0x1A */ PLAYER_IA_DINS_FIRE,
/* 0x1B */ PLAYER_IA_NUT, /* 0x1B */ PLAYER_IA_DEKU_NUT,
/* 0x1C */ PLAYER_IA_OCARINA_FAIRY, /* 0x1C */ PLAYER_IA_OCARINA_FAIRY,
/* 0x1D */ PLAYER_IA_OCARINA_TIME, /* 0x1D */ PLAYER_IA_OCARINA_OF_TIME,
/* 0x1E */ PLAYER_IA_BOTTLE, /* 0x1E */ PLAYER_IA_BOTTLE,
/* 0x1F */ PLAYER_IA_BOTTLE_FISH, /* 0x1F */ PLAYER_IA_BOTTLE_FISH,
/* 0x20 */ PLAYER_IA_BOTTLE_FIRE, /* 0x20 */ PLAYER_IA_BOTTLE_FIRE,
/* 0x21 */ PLAYER_IA_BOTTLE_BUG, /* 0x21 */ PLAYER_IA_BOTTLE_BUG,
/* 0x22 */ PLAYER_IA_BOTTLE_POE, /* 0x22 */ PLAYER_IA_BOTTLE_POE,
/* 0x23 */ PLAYER_IA_BOTTLE_BIG_POE, /* 0x23 */ PLAYER_IA_BOTTLE_BIG_POE,
/* 0x24 */ PLAYER_IA_BOTTLE_LETTER, /* 0x24 */ PLAYER_IA_BOTTLE_RUTOS_LETTER,
/* 0x25 */ PLAYER_IA_BOTTLE_POTION_RED, /* 0x25 */ PLAYER_IA_BOTTLE_POTION_RED,
/* 0x26 */ PLAYER_IA_BOTTLE_POTION_BLUE, /* 0x26 */ PLAYER_IA_BOTTLE_POTION_BLUE,
/* 0x27 */ PLAYER_IA_BOTTLE_POTION_GREEN, /* 0x27 */ PLAYER_IA_BOTTLE_POTION_GREEN,
/* 0x28 */ PLAYER_IA_BOTTLE_MILK, /* 0x28 */ PLAYER_IA_BOTTLE_MILK_FULL,
/* 0x29 */ PLAYER_IA_BOTTLE_MILK_HALF, /* 0x29 */ PLAYER_IA_BOTTLE_MILK_HALF,
/* 0x2A */ PLAYER_IA_BOTTLE_FAIRY, /* 0x2A */ PLAYER_IA_BOTTLE_FAIRY,
/* 0x2B */ PLAYER_IA_LETTER_ZELDA, /* 0x2B */ PLAYER_IA_ZELDAS_LETTER,
/* 0x2C */ PLAYER_IA_WEIRD_EGG, /* 0x2C */ PLAYER_IA_WEIRD_EGG,
/* 0x2D */ PLAYER_IA_CHICKEN, /* 0x2D */ PLAYER_IA_CHICKEN,
/* 0x2E */ PLAYER_IA_BEAN, /* 0x2E */ PLAYER_IA_MAGIC_BEAN,
/* 0x2F */ PLAYER_IA_POCKET_EGG, /* 0x2F */ PLAYER_IA_POCKET_EGG,
/* 0x30 */ PLAYER_IA_POCKET_CUCCO, /* 0x30 */ PLAYER_IA_POCKET_CUCCO,
/* 0x31 */ PLAYER_IA_COJIRO, /* 0x31 */ PLAYER_IA_COJIRO,
/* 0x32 */ PLAYER_IA_ODD_MUSHROOM, /* 0x32 */ PLAYER_IA_ODD_MUSHROOM,
/* 0x33 */ PLAYER_IA_ODD_POTION, /* 0x33 */ PLAYER_IA_ODD_POTION,
/* 0x34 */ PLAYER_IA_SAW, /* 0x34 */ PLAYER_IA_POACHERS_SAW,
/* 0x35 */ PLAYER_IA_SWORD_BROKEN, /* 0x35 */ PLAYER_IA_BROKEN_GORONS_SWORD,
/* 0x36 */ PLAYER_IA_PRESCRIPTION, /* 0x36 */ PLAYER_IA_PRESCRIPTION,
/* 0x37 */ PLAYER_IA_FROG, /* 0x37 */ PLAYER_IA_FROG,
/* 0x38 */ PLAYER_IA_EYEDROPS, /* 0x38 */ PLAYER_IA_EYEDROPS,
@ -123,12 +131,12 @@ typedef enum {
/* 0x3A */ PLAYER_IA_MASK_KEATON, /* 0x3A */ PLAYER_IA_MASK_KEATON,
/* 0x3B */ PLAYER_IA_MASK_SKULL, /* 0x3B */ PLAYER_IA_MASK_SKULL,
/* 0x3C */ PLAYER_IA_MASK_SPOOKY, /* 0x3C */ PLAYER_IA_MASK_SPOOKY,
/* 0x3D */ PLAYER_IA_MASK_BUNNY, /* 0x3D */ PLAYER_IA_MASK_BUNNY_HOOD,
/* 0x3E */ PLAYER_IA_MASK_GORON, /* 0x3E */ PLAYER_IA_MASK_GORON,
/* 0x3F */ PLAYER_IA_MASK_ZORA, /* 0x3F */ PLAYER_IA_MASK_ZORA,
/* 0x40 */ PLAYER_IA_MASK_GERUDO, /* 0x40 */ PLAYER_IA_MASK_GERUDO,
/* 0x41 */ PLAYER_IA_MASK_TRUTH, /* 0x41 */ PLAYER_IA_MASK_TRUTH,
/* 0x42 */ PLAYER_IA_LENS, /* 0x42 */ PLAYER_IA_LENS_OF_TRUTH,
/* 0x43 */ PLAYER_IA_MAX /* 0x43 */ PLAYER_IA_MAX
} PlayerItemAction; } PlayerItemAction;
@ -571,7 +579,7 @@ typedef struct Player {
/* 0x0838 */ f32 linearVelocity; /* 0x0838 */ f32 linearVelocity;
/* 0x083C */ s16 currentYaw; /* 0x083C */ s16 currentYaw;
/* 0x083E */ s16 targetYaw; /* 0x083E */ s16 targetYaw;
/* 0x0840 */ u16 unk_840; /* 0x0840 */ u16 underwaterTimer;
/* 0x0842 */ s8 meleeWeaponAnimation; /* 0x0842 */ s8 meleeWeaponAnimation;
/* 0x0843 */ s8 meleeWeaponState; /* 0x0843 */ s8 meleeWeaponState;
/* 0x0844 */ s8 unk_844; /* 0x0844 */ s8 unk_844;

View file

@ -99,6 +99,49 @@ typedef struct {
/* 0x24 */ s32 tempCollectFlags; /* 0x24 */ s32 tempCollectFlags;
} FaroresWindData; // size = 0x28 } FaroresWindData; // size = 0x28
typedef enum {
/* 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
/* 0x3 */ TIMER_STATE_ENV_HAZARD_MOVE, // Move to top-left corner
/* 0x4 */ TIMER_STATE_ENV_HAZARD_TICK, // Counting down
/* 0x5 */ TIMER_STATE_DOWN_INIT, // Init timer that counts down
/* 0x6 */ TIMER_STATE_DOWN_PREVIEW, // Display initial time, keep it fixed at the screen center
/* 0x7 */ TIMER_STATE_DOWN_MOVE, // Move to top-left corner
/* 0x8 */ TIMER_STATE_DOWN_TICK, // Counting down
/* 0xA */ TIMER_STATE_STOP = 10,
/* 0xB */ TIMER_STATE_UP_INIT, // Init timer that counts up
/* 0xC */ TIMER_STATE_UP_PREVIEW, // Display initial time, keep it fixed at the screen center
/* 0xD */ TIMER_STATE_UP_MOVE, // Move to top-left corner
/* 0xE */ TIMER_STATE_UP_TICK, // Counting up
/* 0xF */ TIMER_STATE_UP_FREEZE // Stop counting the timer
} TimerState;
typedef enum {
/* 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
/* 0x3 */ SUBTIMER_STATE_DOWN_MOVE, // Move to top-left corner
/* 0x4 */ SUBTIMER_STATE_DOWN_TICK, // Counting down
/* 0x5 */ SUBTIMER_STATE_RESPAWN, // Time is up, trigger a transition, reset button items, spoil trade quest items
/* 0x6 */ SUBTIMER_STATE_STOP, // Time is up, stop counting
/* 0x7 */ SUBTIMER_STATE_UP_INIT, // Init timer that counts up
/* 0x8 */ SUBTIMER_STATE_UP_PREVIEW, // Display initial time, keep it fixed at the screen center
/* 0x9 */ SUBTIMER_STATE_UP_MOVE, // Move to top-left corner
/* 0xA */ SUBTIMER_STATE_UP_TICK // Counting up
} SubTimerState;
typedef enum {
/* 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
} TimerId;
#define MARATHON_TIME_LIMIT 240 // 4 minutes
#define ENV_HAZARD_TEXT_TRIGGER_HOTROOM (1 << 0)
#define ENV_HAZARD_TEXT_TRIGGER_UNDERWATER (1 << 1)
typedef enum { typedef enum {
/* 0 */ WORLD_MAP_AREA_HYRULE_FIELD, // hyrule field / default / unset ? /* 0 */ WORLD_MAP_AREA_HYRULE_FIELD, // hyrule field / default / unset ?
/* 1 */ WORLD_MAP_AREA_KAKARIKO_VILLAGE, /* 1 */ WORLD_MAP_AREA_KAKARIKO_VILLAGE,
@ -188,17 +231,17 @@ typedef struct {
/* 0x13C2 */ char unk_13C2[0x0001]; /* 0x13C2 */ char unk_13C2[0x0001];
/* 0x13C3 */ u8 retainWeatherMode; /* 0x13C3 */ u8 retainWeatherMode;
/* 0x13C4 */ s16 dogParams; /* 0x13C4 */ s16 dogParams;
/* 0x13C6 */ u8 textTriggerFlags; /* 0x13C6 */ u8 envHazardTextTriggerFlags;
/* 0x13C7 */ u8 showTitleCard; /* 0x13C7 */ u8 showTitleCard;
/* 0x13C8 */ s16 nayrusLoveTimer; /* 0x13C8 */ s16 nayrusLoveTimer;
/* 0x13CA */ char unk_13CA[0x0002]; /* 0x13CA */ char unk_13CA[0x0002];
/* 0x13CC */ s16 rupeeAccumulator; /* 0x13CC */ s16 rupeeAccumulator;
/* 0x13CE */ s16 timer1State; /* 0x13CE */ s16 timerState; // See `TimerState`
/* 0x13D0 */ s16 timer1Value; /* 0x13D0 */ s16 timerSeconds;
/* 0x13D2 */ s16 timer2State; /* 0x13D2 */ s16 subTimerState; // See `SubTimerState`
/* 0x13D4 */ s16 timer2Value; /* 0x13D4 */ s16 subTimerSeconds;
/* 0x13D6 */ s16 timerX[2]; /* 0x13D6 */ s16 timerX[TIMER_ID_MAX];
/* 0x13DA */ s16 timerY[2]; /* 0x13DA */ s16 timerY[TIMER_ID_MAX];
/* 0x13DE */ char unk_13DE[0x0002]; /* 0x13DE */ char unk_13DE[0x0002];
/* 0x13E0 */ u8 seqId; /* 0x13E0 */ u8 seqId;
/* 0x13E1 */ u8 natureAmbienceId; /* 0x13E1 */ u8 natureAmbienceId;
@ -774,7 +817,8 @@ typedef enum {
(gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~EVENTINF_HORSES_0F_MASK) | ((v) << EVENTINF_HORSES_0F_SHIFT) (gSaveContext.eventInf[EVENTINF_HORSES_INDEX] & ~EVENTINF_HORSES_0F_MASK) | ((v) << EVENTINF_HORSES_0F_SHIFT)
#define EVENTINF_10 0x10 // Is the running man race active
#define EVENTINF_MARATHON_ACTIVE 0x10
// 0x20-0x24 // 0x20-0x24
#define EVENTINF_20_21_22_23_24_INDEX 2 #define EVENTINF_20_21_22_23_24_INDEX 2

View file

@ -31,8 +31,8 @@ u32 gUpgradeMasks[UPG_MAX] = {
0x00000E00, // UPG_SCALE 0x00000E00, // UPG_SCALE
0x00003000, // UPG_WALLET 0x00003000, // UPG_WALLET
0x0001C000, // UPG_BULLET_BAG 0x0001C000, // UPG_BULLET_BAG
0x000E0000, // UPG_STICKS 0x000E0000, // UPG_DEKU_STICKS
0x00700000, // UPG_NUTS 0x00700000, // UPG_DEKU_NUTS
}; };
u32 gUpgradeNegMasks[UPG_MAX] = { u32 gUpgradeNegMasks[UPG_MAX] = {
~0x00000007, // UPG_QUIVER ~0x00000007, // UPG_QUIVER
@ -41,8 +41,8 @@ u32 gUpgradeNegMasks[UPG_MAX] = {
~0x00000E00, // UPG_SCALE ~0x00000E00, // UPG_SCALE
~0x00003000, // UPG_WALLET ~0x00003000, // UPG_WALLET
~0x0001C000, // UPG_BULLET_BAG ~0x0001C000, // UPG_BULLET_BAG
~0x000E0000, // UPG_STICKS ~0x000E0000, // UPG_DEKU_STICKS
~0x00700000, // UPG_NUTS ~0x00700000, // UPG_DEKU_NUTS
}; };
u8 gEquipShifts[EQUIP_TYPE_MAX] = { u8 gEquipShifts[EQUIP_TYPE_MAX] = {
@ -59,8 +59,8 @@ u8 gUpgradeShifts[UPG_MAX] = {
9, // UPG_SCALE 9, // UPG_SCALE
12, // UPG_WALLET 12, // UPG_WALLET
14, // UPG_BULLET_BAG 14, // UPG_BULLET_BAG
17, // UPG_STICKS 17, // UPG_DEKU_STICKS
20, // UPG_NUTS 20, // UPG_DEKU_NUTS
}; };
u16 gUpgradeCapacities[UPG_MAX][4] = { u16 gUpgradeCapacities[UPG_MAX][4] = {
@ -70,8 +70,8 @@ u16 gUpgradeCapacities[UPG_MAX][4] = {
{ 0, 0, 0, 0 }, // UPG_SCALE (unused) { 0, 0, 0, 0 }, // UPG_SCALE (unused)
{ 99, 200, 500, 500 }, // UPG_WALLET { 99, 200, 500, 500 }, // UPG_WALLET
{ 0, 30, 40, 50 }, // UPG_BULLET_BAG { 0, 30, 40, 50 }, // UPG_BULLET_BAG
{ 0, 10, 20, 30 }, // UPG_STICKS { 0, 10, 20, 30 }, // UPG_DEKU_STICKS
{ 0, 20, 30, 40 }, // UPG_NUTS { 0, 20, 30, 40 }, // UPG_DEKU_NUTS
}; };
u32 gGsFlagsMasks[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 }; u32 gGsFlagsMasks[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 };
@ -212,62 +212,62 @@ void* gItemIcons[] = {
// Used to map item IDs to inventory slots // Used to map item IDs to inventory slots
u8 gItemSlots[] = { u8 gItemSlots[] = {
SLOT_STICK, // ITEM_STICK SLOT_DEKU_STICK, // ITEM_DEKU_STICK
SLOT_NUT, // ITEM_NUT SLOT_DEKU_NUT, // ITEM_DEKU_NUT
SLOT_BOMB, // ITEM_BOMB SLOT_BOMB, // ITEM_BOMB
SLOT_BOW, // ITEM_BOW SLOT_BOW, // ITEM_BOW
SLOT_ARROW_FIRE, // ITEM_ARROW_FIRE SLOT_ARROW_FIRE, // ITEM_ARROW_FIRE
SLOT_DINS_FIRE, // ITEM_DINS_FIRE SLOT_DINS_FIRE, // ITEM_DINS_FIRE
SLOT_SLINGSHOT, // ITEM_SLINGSHOT SLOT_SLINGSHOT, // ITEM_SLINGSHOT
SLOT_OCARINA, // ITEM_OCARINA_FAIRY SLOT_OCARINA, // ITEM_OCARINA_FAIRY
SLOT_OCARINA, // ITEM_OCARINA_TIME SLOT_OCARINA, // ITEM_OCARINA_OF_TIME
SLOT_BOMBCHU, // ITEM_BOMBCHU SLOT_BOMBCHU, // ITEM_BOMBCHU
SLOT_HOOKSHOT, // ITEM_HOOKSHOT SLOT_HOOKSHOT, // ITEM_HOOKSHOT
SLOT_HOOKSHOT, // ITEM_LONGSHOT SLOT_HOOKSHOT, // ITEM_LONGSHOT
SLOT_ARROW_ICE, // ITEM_ARROW_ICE SLOT_ARROW_ICE, // ITEM_ARROW_ICE
SLOT_FARORES_WIND, // ITEM_FARORES_WIND SLOT_FARORES_WIND, // ITEM_FARORES_WIND
SLOT_BOOMERANG, // ITEM_BOOMERANG SLOT_BOOMERANG, // ITEM_BOOMERANG
SLOT_LENS, // ITEM_LENS SLOT_LENS_OF_TRUTH, // ITEM_LENS_OF_TRUTH
SLOT_BEAN, // ITEM_BEAN SLOT_MAGIC_BEAN, // ITEM_MAGIC_BEAN
SLOT_HAMMER, // ITEM_HAMMER SLOT_HAMMER, // ITEM_HAMMER
SLOT_ARROW_LIGHT, // ITEM_ARROW_LIGHT SLOT_ARROW_LIGHT, // ITEM_ARROW_LIGHT
SLOT_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE SLOT_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE
SLOT_BOTTLE_1, // ITEM_BOTTLE SLOT_BOTTLE_1, // ITEM_BOTTLE_EMPTY
SLOT_BOTTLE_1, // ITEM_POTION_RED SLOT_BOTTLE_1, // ITEM_BOTTLE_POTION_RED
SLOT_BOTTLE_1, // ITEM_POTION_GREEN SLOT_BOTTLE_1, // ITEM_BOTTLE_POTION_GREEN
SLOT_BOTTLE_1, // ITEM_POTION_BLUE SLOT_BOTTLE_1, // ITEM_BOTTLE_POTION_BLUE
SLOT_BOTTLE_1, // ITEM_FAIRY SLOT_BOTTLE_1, // ITEM_BOTTLE_FAIRY
SLOT_BOTTLE_1, // ITEM_FISH SLOT_BOTTLE_1, // ITEM_BOTTLE_FISH
SLOT_BOTTLE_1, // ITEM_MILK_BOTTLE SLOT_BOTTLE_1, // ITEM_BOTTLE_MILK_FULL
SLOT_BOTTLE_1, // ITEM_LETTER_RUTO SLOT_BOTTLE_1, // ITEM_BOTTLE_RUTOS_LETTER
SLOT_BOTTLE_1, // ITEM_BLUE_FIRE SLOT_BOTTLE_1, // ITEM_BOTTLE_BLUE_FIRE
SLOT_BOTTLE_1, // ITEM_BUG SLOT_BOTTLE_1, // ITEM_BOTTLE_BUG
SLOT_BOTTLE_1, // ITEM_BIG_POE SLOT_BOTTLE_1, // ITEM_BOTTLE_BIG_POE
SLOT_BOTTLE_1, // ITEM_MILK_HALF SLOT_BOTTLE_1, // ITEM_BOTTLE_MILK_HALF
SLOT_BOTTLE_1, // ITEM_POE SLOT_BOTTLE_1, // ITEM_BOTTLE_POE
SLOT_TRADE_CHILD, // ITEM_WEIRD_EGG SLOT_TRADE_CHILD, // ITEM_WEIRD_EGG
SLOT_TRADE_CHILD, // ITEM_CHICKEN SLOT_TRADE_CHILD, // ITEM_CHICKEN
SLOT_TRADE_CHILD, // ITEM_LETTER_ZELDA SLOT_TRADE_CHILD, // ITEM_ZELDAS_LETTER
SLOT_TRADE_CHILD, // ITEM_MASK_KEATON SLOT_TRADE_CHILD, // ITEM_MASK_KEATON
SLOT_TRADE_CHILD, // ITEM_MASK_SKULL SLOT_TRADE_CHILD, // ITEM_MASK_SKULL
SLOT_TRADE_CHILD, // ITEM_MASK_SPOOKY SLOT_TRADE_CHILD, // ITEM_MASK_SPOOKY
SLOT_TRADE_CHILD, // ITEM_MASK_BUNNY SLOT_TRADE_CHILD, // ITEM_MASK_BUNNY_HOOD
SLOT_TRADE_CHILD, // ITEM_MASK_GORON SLOT_TRADE_CHILD, // ITEM_MASK_GORON
SLOT_TRADE_CHILD, // ITEM_MASK_ZORA SLOT_TRADE_CHILD, // ITEM_MASK_ZORA
SLOT_TRADE_CHILD, // ITEM_MASK_GERUDO SLOT_TRADE_CHILD, // ITEM_MASK_GERUDO
SLOT_TRADE_CHILD, // ITEM_MASK_TRUTH SLOT_TRADE_CHILD, // ITEM_MASK_TRUTH
SLOT_TRADE_CHILD, // ITEM_SOLD_OUT SLOT_TRADE_CHILD, // ITEM_SOLD_OUT
SLOT_TRADE_ADULT, // ITEM_POCKET_EGG SLOT_TRADE_ADULT, // ITEM_POCKET_EGG
SLOT_TRADE_ADULT, // ITEM_POCKET_CUCCO SLOT_TRADE_ADULT, // ITEM_POCKET_CUCCO
SLOT_TRADE_ADULT, // ITEM_COJIRO SLOT_TRADE_ADULT, // ITEM_COJIRO
SLOT_TRADE_ADULT, // ITEM_ODD_MUSHROOM SLOT_TRADE_ADULT, // ITEM_ODD_MUSHROOM
SLOT_TRADE_ADULT, // ITEM_ODD_POTION SLOT_TRADE_ADULT, // ITEM_ODD_POTION
SLOT_TRADE_ADULT, // ITEM_SAW SLOT_TRADE_ADULT, // ITEM_POACHERS_SAW
SLOT_TRADE_ADULT, // ITEM_SWORD_BROKEN SLOT_TRADE_ADULT, // ITEM_BROKEN_GORONS_SWORD
SLOT_TRADE_ADULT, // ITEM_PRESCRIPTION SLOT_TRADE_ADULT, // ITEM_PRESCRIPTION
SLOT_TRADE_ADULT, // ITEM_FROG SLOT_TRADE_ADULT, // ITEM_EYEBALL_FROG
SLOT_TRADE_ADULT, // ITEM_EYEDROPS SLOT_TRADE_ADULT, // ITEM_EYE_DROPS
SLOT_TRADE_ADULT, // ITEM_CLAIM_CHECK SLOT_TRADE_ADULT, // ITEM_CLAIM_CHECK
}; };
void Inventory_ChangeEquipment(s16 equipment, u16 value) { void Inventory_ChangeEquipment(s16 equipment, u16 value) {

View file

@ -1,4 +1,3 @@
#include "ultra64.h"
#include "global.h" #include "global.h"
#define DBCAM_CONTROLLER_PORT 2 #define DBCAM_CONTROLLER_PORT 2
@ -1507,15 +1506,15 @@ static s32 sAllocSize;
s32 DbCamera_GetFirstAvailableLetter(void) { s32 DbCamera_GetFirstAvailableLetter(void) {
s32 i; s32 i;
for (i = 0; i < ARRAY_COUNT(sLetters); i++) { for (i = 0; i < ARRAY_COUNT(sLetters); i++) {
switch (sLetters[i]) { switch (sLetters[i]) {
case 'O': case 'O':
break; break;
default: default:
return 'A' + i; return MEMPAK_INDEX_TO_LETTER(i);
} }
} }
return '?'; return '?';
} }
@ -1653,7 +1652,7 @@ s32 DbCamera_SaveCallback(char* c) {
freeSize = Mempak_GetFreeBytes(DBCAM_CONTROLLER_PORT); freeSize = Mempak_GetFreeBytes(DBCAM_CONTROLLER_PORT);
if ((u32)sAllocSize < (freeSize + ret)) { if ((u32)sAllocSize < (freeSize + ret)) {
if (!Mempak_Alloc(DBCAM_CONTROLLER_PORT, c, sAllocSize)) { if (!Mempak_CreateFile(DBCAM_CONTROLLER_PORT, c, sAllocSize)) {
return false; return false;
} }
@ -1867,7 +1866,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
dbCamera->sub.demoCtrlToggleSwitch ^= 1; dbCamera->sub.demoCtrlToggleSwitch ^= 1;
} }
D_8012CEE0[41][9] = sCurFileIdx + 'A'; D_8012CEE0[41][9] = MEMPAK_INDEX_TO_LETTER(sCurFileIdx);
func_8006376C(0xA, 7, 5, D_8012CEE0[41]); func_8006376C(0xA, 7, 5, D_8012CEE0[41]);
func_8006376C(0x10, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlActionIdx]); func_8006376C(0x10, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlActionIdx]);
func_8006376C(0x14, 7, 5, D_8012CF88[0]); func_8006376C(0x14, 7, 5, D_8012CF88[0]);
@ -1891,7 +1890,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
dbCamera->sub.demoCtrlMenu++; dbCamera->sub.demoCtrlMenu++;
} else { } else {
dbCamera->sub.demoCtrlToggleSwitch ^= 1; dbCamera->sub.demoCtrlToggleSwitch ^= 1;
D_8012CF84[9] = sCurFileIdx + 'A'; D_8012CF84[9] = MEMPAK_INDEX_TO_LETTER(sCurFileIdx);
func_8006376C(0xD, 7, 5, D_8012CF88[-1]); // todo: find something better func_8006376C(0xD, 7, 5, D_8012CF88[-1]); // todo: find something better
func_8006376C(0x12, 7, 5, D_8012CF80); func_8006376C(0x12, 7, 5, D_8012CF80);
func_8006376C(0xD, 9, dbCamera->sub.demoCtrlToggleSwitch ? 1 : 6, "PRESS B BUTTON"); func_8006376C(0xD, 9, dbCamera->sub.demoCtrlToggleSwitch ? 1 : 6, "PRESS B BUTTON");
@ -1909,7 +1908,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
case DEMO_CTRL_MENU(ACTION_SAVE, MENU_CALLBACK): case DEMO_CTRL_MENU(ACTION_SAVE, MENU_CALLBACK):
case DEMO_CTRL_MENU(ACTION_LOAD, MENU_CALLBACK): case DEMO_CTRL_MENU(ACTION_LOAD, MENU_CALLBACK):
case DEMO_CTRL_MENU(ACTION_CLEAR, MENU_CALLBACK): { case DEMO_CTRL_MENU(ACTION_CLEAR, MENU_CALLBACK): {
D_8012CEE0[41][9] = sCurFileIdx + 'A'; D_8012CEE0[41][9] = MEMPAK_INDEX_TO_LETTER(sCurFileIdx);
func_8006376C(0xC, 7, 5, D_8012CEE0[41]); func_8006376C(0xC, 7, 5, D_8012CEE0[41]);
func_8006376C(0x12, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlActionIdx]); func_8006376C(0x12, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlActionIdx]);
func_8006376C(0x16, 7, 5, D_8012CF9C[0]); func_8006376C(0x16, 7, 5, D_8012CF9C[0]);
@ -1927,7 +1926,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
case DEMO_CTRL_MENU(ACTION_LOAD, MENU_SUCCESS): case DEMO_CTRL_MENU(ACTION_LOAD, MENU_SUCCESS):
case DEMO_CTRL_MENU(ACTION_CLEAR, MENU_SUCCESS): { case DEMO_CTRL_MENU(ACTION_CLEAR, MENU_SUCCESS): {
dbCamera->sub.demoCtrlToggleSwitch ^= 1; dbCamera->sub.demoCtrlToggleSwitch ^= 1;
D_8012CEE0[41][9] = sCurFileIdx + 'A'; D_8012CEE0[41][9] = MEMPAK_INDEX_TO_LETTER(sCurFileIdx);
func_8006376C(0xD, 7, 5, D_8012CEE0[41]); func_8006376C(0xD, 7, 5, D_8012CEE0[41]);
func_8006376C(0x13, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlMenu / 100]); func_8006376C(0x13, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlMenu / 100]);
func_8006376C(0x17, 7, 5, D_8012CFA4); func_8006376C(0x17, 7, 5, D_8012CFA4);
@ -1950,7 +1949,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
case DEMO_CTRL_MENU(ACTION_LOAD, MENU_ERROR): case DEMO_CTRL_MENU(ACTION_LOAD, MENU_ERROR):
case DEMO_CTRL_MENU(ACTION_CLEAR, MENU_ERROR): { case DEMO_CTRL_MENU(ACTION_CLEAR, MENU_ERROR): {
dbCamera->sub.demoCtrlToggleSwitch ^= 1; dbCamera->sub.demoCtrlToggleSwitch ^= 1;
D_8012CEE0[41][9] = sCurFileIdx + 'A'; D_8012CEE0[41][9] = MEMPAK_INDEX_TO_LETTER(sCurFileIdx);
func_8006376C(0xD, 7, 5, D_8012CEE0[(dbCamera->sub.demoCtrlMenu / 100) + 32]); func_8006376C(0xD, 7, 5, D_8012CEE0[(dbCamera->sub.demoCtrlMenu / 100) + 32]);
func_8006376C(0x11, 7, 5, D_8012CFAC); func_8006376C(0x11, 7, 5, D_8012CFAC);
func_8006376C(0x17, 7, 5, D_8012CFA4); func_8006376C(0x17, 7, 5, D_8012CFA4);
@ -1971,11 +1970,12 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
default: { default: {
if (Mempak_Init(DBCAM_CONTROLLER_PORT)) { if (Mempak_Init(DBCAM_CONTROLLER_PORT)) {
sMempakFiles = Mempak_FindFile(DBCAM_CONTROLLER_PORT, 'A', 'E'); sMempakFiles = Mempak_FindFiles(DBCAM_CONTROLLER_PORT, 'A', 'E');
dbCamera->sub.demoCtrlMenu = DEMO_CTRL_MENU(ACTION_E, MENU_CALLBACK); dbCamera->sub.demoCtrlMenu = DEMO_CTRL_MENU(ACTION_E, MENU_CALLBACK);
DbCamera_CalcMempakAllocSize(); DbCamera_CalcMempakAllocSize();
if ((1 << sCurFileIdx) & sMempakFiles) { if ((1 << sCurFileIdx) & sMempakFiles) {
sMempakFilesize = Mempak_GetFileSize(DBCAM_CONTROLLER_PORT, sCurFileIdx + 'A'); sMempakFilesize =
Mempak_GetFileSize(DBCAM_CONTROLLER_PORT, MEMPAK_INDEX_TO_LETTER(sCurFileIdx));
dbCamera->sub.demoCtrlActionIdx = ACTION_LOAD; dbCamera->sub.demoCtrlActionIdx = ACTION_LOAD;
} else { } else {
sMempakFilesize = 0; sMempakFilesize = 0;
@ -1984,7 +1984,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
block_1: block_1:
idx2 = 1; idx2 = 1;
for (i = 0; i < 5; i++) { for (i = 0; i < 5; i++) {
sp74[i * 2 + 1] = (sMempakFiles & idx2) ? i + 'A' : '?'; sp74[i * 2 + 1] = (sMempakFiles & idx2) ? MEMPAK_INDEX_TO_LETTER(i) : '?';
sp74[i * 2 + 0] = '-'; sp74[i * 2 + 0] = '-';
idx2 <<= 1; idx2 <<= 1;
@ -2002,7 +2002,8 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
} }
if ((1 << sCurFileIdx) & sMempakFiles) { if ((1 << sCurFileIdx) & sMempakFiles) {
sMempakFilesize = Mempak_GetFileSize(DBCAM_CONTROLLER_PORT, sCurFileIdx + 'A'); sMempakFilesize =
Mempak_GetFileSize(DBCAM_CONTROLLER_PORT, MEMPAK_INDEX_TO_LETTER(sCurFileIdx));
dbCamera->sub.demoCtrlActionIdx = ACTION_LOAD; dbCamera->sub.demoCtrlActionIdx = ACTION_LOAD;
} else { } else {
sMempakFilesize = 0; sMempakFilesize = 0;
@ -2019,7 +2020,8 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
} }
if ((1 << sCurFileIdx) & sMempakFiles) { if ((1 << sCurFileIdx) & sMempakFiles) {
sMempakFilesize = Mempak_GetFileSize(DBCAM_CONTROLLER_PORT, sCurFileIdx + 'A'); sMempakFilesize =
Mempak_GetFileSize(DBCAM_CONTROLLER_PORT, MEMPAK_INDEX_TO_LETTER(sCurFileIdx));
dbCamera->sub.demoCtrlActionIdx = ACTION_LOAD; dbCamera->sub.demoCtrlActionIdx = ACTION_LOAD;
} else { } else {
sMempakFilesize = 0; sMempakFilesize = 0;

View file

@ -1,184 +1,271 @@
/**
* @file mempak.c
*
* This file implements an interface for a controller memory pak filesystem (pfs), with operations to create, delete,
* read, write and check the size of files, as well as obtain a listing of which files currently exist.
*
* Each file is assigned an uppercase ASCII letter as an identifier, the game name for each is marked as
* 'ZELDA DEMO TOOL', encoded according to the N64 Font Code described in section 26.3 of the N64 Programming Manual.
*/
#include "global.h" #include "global.h"
#define MEMPAK_MAX_FILES 11
OSPfs sMempakPfsHandle; OSPfs sMempakPfsHandle;
s32 sMempakFreeBytes; s32 sMempakFreeBytes;
s32 sMempakFiles[10]; s32 sMempakFiles[MEMPAK_MAX_FILES];
u16 sMempakCompanyCode = 1; u16 sMempakCompanyCode = 1;
u32 sMempakGameCode = 1; u32 sMempakGameCode = 1;
// "ZELDA DEMO TOOL " // NCH is a heavily abbreviated "N64 font code CHaracter"
u8 sMempakGameName[0x10] = { 0x33, 0x1E, 0x25, 0x1D, 0x1A, 0x0F, 0x1D, 0x1E, // Conversion from A-Z to N64 Font Code
0x26, 0x28, 0x0F, 0x2D, 0x28, 0x28, 0x25, 0x0F }; #define NCH(c) ((c)-0x27)
u8 sMempakExtName[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; // Conversion from spaces to N64 Font Code
#define NCH_SPC (0x0F)
s32 Mempak_Init(s32 controllerNb) { u8 sMempakGameName[PFS_FILE_NAME_LEN] = {
OSMesgQueue* mq; NCH('Z'), NCH('E'), NCH('L'), NCH('D'), NCH('A'), NCH_SPC, NCH('D'), NCH('E'),
NCH('M'), NCH('O'), NCH_SPC, NCH('T'), NCH('O'), NCH('O'), NCH('L'), NCH_SPC,
};
u8 sMempakExtName[PFS_FILE_EXT_LEN] = { 0 };
/**
* Initializes the memory pak filesystem for a memory pak in the controller plugged into the specified port. Subsequent
* memory pak operations will use the same controller port.
*
* @return true if the operation completed successfully, false otherwise
*/
s32 Mempak_Init(s32 controllerNum) {
OSMesgQueue* serialEventQueue;
s32 pad; s32 pad;
s32 ret = false; s32 ret = false;
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
if (!osPfsInitPak(mq, &sMempakPfsHandle, controllerNb)) { if (osPfsInitPak(serialEventQueue, &sMempakPfsHandle, controllerNum) == 0) {
ret = true; ret = true;
} }
osPfsFreeBlocks(&sMempakPfsHandle, &sMempakFreeBytes); osPfsFreeBlocks(&sMempakPfsHandle, &sMempakFreeBytes);
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq); PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
return ret; return ret;
} }
s32 Mempak_GetFreeBytes(s32 controllerNb) { s32 Mempak_GetFreeBytes(s32 controllerNum) {
return sMempakFreeBytes; return sMempakFreeBytes;
} }
s32 Mempak_FindFile(s32 controllerNb, char start, char end) { /**
OSMesgQueue* mq; * Checks if the files identified by letters between `start` and `end` (inclusive) exist on the memory pak.
*
* This must be called before performing any individual file operations.
*
* @param controllerNum Unused, the controller used is that which was last passed to `Mempak_Init`
* @param start Start file letter
* @param end End file letter (inclusive)
* @return a bitfield where set bits indicate that the file exists
*/
s32 Mempak_FindFiles(s32 controllerNum, char start, char end) {
OSMesgQueue* serialEventQueue;
s32 error; s32 error;
char idx; char letter;
u32 bit = 1; u32 bit = 1;
s32 flag = 0; s32 bits = 0;
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
for (idx = start; idx <= end; idx++) { for (letter = start; letter <= end; letter++) {
sMempakExtName[0] = idx - 0x27; sMempakExtName[0] = NCH(letter);
error = osPfsFindFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, sMempakExtName, error = osPfsFindFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, sMempakExtName,
&sMempakFiles[idx - 'A']); &sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)]);
if (error == 0) { if (error == 0) {
flag |= bit; bits |= bit;
} else { } else {
sMempakFiles[idx - 'A'] = -1; sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)] = -1;
} }
bit <<= 1; bit <<= 1;
osSyncPrintf("mempak: find '%c' (%d)\n", idx, error); osSyncPrintf("mempak: find '%c' (%d)\n", letter, error);
} }
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq); PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
osSyncPrintf("mempak: find '%c' - '%c' %02x\n", start, end, flag); osSyncPrintf("mempak: find '%c' - '%c' %02x\n", start, end, bits);
return bits;
return flag;
} }
s32 Mempak_Write(s32 controllerNb, char idx, void* buffer, s32 offset, s32 size) { /**
OSMesgQueue* mq; * Writes data to the file identified with `letter`.
*
* @param controllerNum Unused, the controller used is that which was last passed to `Mempak_Init`
* @param letter Memory pak file letter, in the range 'A' to ('A' + MEMPAK_MAX_FILES)
* @param buffer Buffer containing data to write
* @param offset Offset into the file to write to
* @param size Size in bytes
* @return true if the operation completed successfully, false otherwise
*/
s32 Mempak_Write(s32 controllerNum, char letter, void* buffer, s32 offset, s32 size) {
OSMesgQueue* serialEventQueue;
s32 error; s32 error;
s32 ret = false; s32 ret = false;
s32 pad; s32 pad;
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
if (size < sMempakFreeBytes) { if (size < sMempakFreeBytes) {
error = osPfsReadWriteFile(&sMempakPfsHandle, sMempakFiles[idx - 'A'], 1, offset, size, buffer); error = osPfsReadWriteFile(&sMempakPfsHandle, sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)], PFS_WRITE, offset,
size, buffer);
if (error == 0) { if (error == 0) {
ret = true; ret = true;
} }
osSyncPrintf("mempak: write %d byte '%c' (%d)->%d\n", size, idx, sMempakFiles[idx - 'A'], error); osSyncPrintf("mempak: write %d byte '%c' (%d)->%d\n", size, letter,
sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)], error);
} }
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq); PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
return ret; return ret;
} }
s32 Mempak_Read(s32 controllerNb, char idx, void* buffer, s32 offset, s32 size) { /**
OSMesgQueue* mq; * Reads data from the file identified with `letter`.
*
* @param controllerNum Unused, the controller used is that which was last passed to `Mempak_Init`
* @param letter Memory pak file letter, in the range 'A' to ('A' + MEMPAK_MAX_FILES)
* @param buffer Buffer to read data into
* @param offset Offset into the file to read from
* @param size Size in bytes
* @return true if the operation completed successfully, false otherwise
*/
s32 Mempak_Read(s32 controllerNum, char letter, void* buffer, s32 offset, s32 size) {
OSMesgQueue* serialEventQueue;
s32 error; s32 error;
s32 ret = false; s32 ret = false;
s32 pad; s32 pad;
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
if (size < sMempakFreeBytes) { if (size < sMempakFreeBytes) {
error = osPfsReadWriteFile(&sMempakPfsHandle, sMempakFiles[idx - 'A'], 0, offset, size, buffer); error = osPfsReadWriteFile(&sMempakPfsHandle, sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)], PFS_READ, offset,
size, buffer);
if (error == 0) { if (error == 0) {
ret = true; ret = true;
} }
osSyncPrintf("mempak: read %d byte '%c' (%d)<-%d\n", size, idx, sMempakFiles[idx - 'A'], error); osSyncPrintf("mempak: read %d byte '%c' (%d)<-%d\n", size, letter, sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)],
error);
} }
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq); PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
return ret; return ret;
} }
s32 Mempak_Alloc(s32 controllerNb, char* idx, s32 size) { /**
OSMesgQueue* mq; * Creates a new file on the memory pak.
*
* @param controllerNum Unused, the controller used is that which was last passed to `Mempak_Init`
* @param letter Memory pak file letter, in the range 'A' to ('A' + MEMPAK_MAX_FILES).
* If this points to a valid file letter the new file will be created using that letter, otherwise it will create
* a file using the first free letter and return it through this argument. If no letters are free, the last letter
* ('A' + MEMPAK_MAX_FILES - 1) is used.
* @param size File size
* @return true if the operation completed successfully, false otherwise
*/
s32 Mempak_CreateFile(s32 controllerNum, char* letter, s32 size) {
OSMesgQueue* serialEventQueue;
s32 error; s32 error;
s32 ret = 0; s32 ret = false;
s32 i; s32 i;
s32 pad; s32 pad;
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
if (*letter >= MEMPAK_INDEX_TO_LETTER(0) && *letter < MEMPAK_INDEX_TO_LETTER(MEMPAK_MAX_FILES)) {
// Create file with specific letter
sMempakExtName[0] = NCH(*letter);
if (-1 == sMempakFiles[MEMPAK_LETTER_TO_INDEX(*letter)]) {
// File does not already exist
if (*idx >= 'A' && *idx < 'L') {
sMempakExtName[0] = *idx - 0x27;
if (-1 == sMempakFiles[*idx - 'A']) {
error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
sMempakExtName, size, &sMempakFiles[*idx - 'A']); sMempakExtName, size, &sMempakFiles[MEMPAK_LETTER_TO_INDEX(*letter)]);
if (error == 0) { if (error == 0) {
ret = 1; ret = true;
} }
osSyncPrintf("mempak: alloc %d byte '%c' (%d)\n", size, *idx, error); osSyncPrintf("mempak: alloc %d byte '%c' (%d)\n", size, *letter, error);
} else { } else {
sMempakExtName[0] = *idx - 0x27; // File already exists, delete then alloc
sMempakExtName[0] = NCH(*letter);
if (osPfsDeleteFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, if (osPfsDeleteFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
sMempakExtName) == 0) { sMempakExtName) == 0) {
ret = 1; ret = true;
} }
error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
sMempakExtName, size, &sMempakFiles[*idx - 'A']); sMempakExtName, size, &sMempakFiles[MEMPAK_LETTER_TO_INDEX(*letter)]);
if (error == 0) { if (error == 0) {
ret |= 1; ret |= true;
} }
osSyncPrintf("mempak: resize %d byte '%c' (%d)\n", size, *idx, error); osSyncPrintf("mempak: resize %d byte '%c' (%d)\n", size, *letter, error);
} }
} else { } else {
for (i = 0; i < ARRAY_COUNT(sMempakFiles); i++) { // Find first free letter and create a file identified by it
for (i = 0; i < MEMPAK_MAX_FILES - 1; i++) {
if (sMempakFiles[i] == -1) { if (sMempakFiles[i] == -1) {
break; break;
} }
} }
*letter = MEMPAK_INDEX_TO_LETTER(i);
*idx = i + 'A'; sMempakExtName[0] = NCH(*letter);
sMempakExtName[0] = *idx - 0x27;
error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
sMempakExtName, size, &sMempakFiles[i]); sMempakExtName, size, &sMempakFiles[i]);
osSyncPrintf("mempak: alloc %d byte '%c' (%d) with search\n", size, *idx, error); osSyncPrintf("mempak: alloc %d byte '%c' (%d) with search\n", size, *letter, error);
if (error == 0) { if (error == 0) {
ret = 1; ret = true;
} }
} }
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq); PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
return ret; return ret;
} }
s32 Mempak_DeleteFile(s32 controllerNb, char idx) { /**
OSMesgQueue* mq; * Deletes the file identified with `letter`.
*
* @param controllerNum Unused, the controller used is that which was last passed to `Mempak_Init`
* @param letter Memory pak file letter, in the range 'A' to ('A' + MEMPAK_MAX_FILES)
* @return true if the operation completed successfully, false otherwise
*/
s32 Mempak_DeleteFile(s32 controllerNum, char letter) {
OSMesgQueue* serialEventQueue;
s32 error; s32 error;
s32 ret = false; s32 ret = false;
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
sMempakExtName[0] = idx - 0x27; sMempakExtName[0] = NCH(letter);
error = osPfsDeleteFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, sMempakExtName); error = osPfsDeleteFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, sMempakExtName);
if (error == 0) { if (error == 0) {
ret = true; ret = true;
} }
osSyncPrintf("mempak: delete '%c' (%d)\n", idx, error); osSyncPrintf("mempak: delete '%c' (%d)\n", letter, error);
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq);
PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
return ret; return ret;
} }
s32 Mempak_GetFileSize(s32 controllerNb, char idx) { /**
OSMesgQueue* mq = PadMgr_AcquireSerialEventQueue(&gPadMgr); * Gets the size of the file identified with `letter`.
*
* @param controllerNum Unused, the controller used is that which was last passed to `Mempak_Init`
* @param letter Memory pak file letter, in the range 'A' to ('A' + MEMPAK_MAX_FILES)
* @return the size of the file, or 0 if the operation failed for any reason
*/
s32 Mempak_GetFileSize(s32 controllerNum, char letter) {
OSMesgQueue* serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
OSPfsState state; OSPfsState state;
s32 error = osPfsFileState(&sMempakPfsHandle, sMempakFiles[idx - 'A'], &state); s32 error = osPfsFileState(&sMempakPfsHandle, sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)], &state);
s32 pad; s32 pad;
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq); PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
if (error != 0) { if (error != 0) {
return 0; return 0;

View file

@ -31,13 +31,13 @@
#include "global.h" #include "global.h"
#include "terminal.h" #include "terminal.h"
#define PADMGR_LOG(controllerNo, msg) \ #define PADMGR_LOG(controllerNum, msg) \
if (1) { \ if (1) { \
osSyncPrintf(VT_FGCOL(YELLOW)); \ osSyncPrintf(VT_FGCOL(YELLOW)); \
/* padmgr: Controller %d: %s */ \ /* padmgr: Controller %d: %s */ \
osSyncPrintf("padmgr: %dコン: %s\n", (controllerNo) + 1, (msg)); \ osSyncPrintf("padmgr: %dコン: %s\n", (controllerNum) + 1, (msg)); \
osSyncPrintf(VT_RST); \ osSyncPrintf(VT_RST); \
} \ } \
(void)0 (void)0
#define LOG_SEVERITY_NOLOG 0 #define LOG_SEVERITY_NOLOG 0

View file

@ -8,7 +8,7 @@ void Interface_Init(PlayState* play) {
InterfaceContext* interfaceCtx = &play->interfaceCtx; InterfaceContext* interfaceCtx = &play->interfaceCtx;
u32 parameterSize; u32 parameterSize;
u16 doActionOffset; u16 doActionOffset;
u8 temp; u8 timerId;
gSaveContext.sunsSongState = SUNSSONG_INACTIVE; gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
gSaveContext.unk_13E8 = gSaveContext.unk_13EA = 0; gSaveContext.unk_13E8 = gSaveContext.unk_13EA = 0;
@ -109,39 +109,42 @@ void Interface_Init(PlayState* play) {
0x1000, "../z_construct.c", 219); 0x1000, "../z_construct.c", 219);
} }
osSyncPrintf("%d\n", ((void)0, gSaveContext.timer1State)); osSyncPrintf("%d\n", ((void)0, gSaveContext.timerState));
if ((gSaveContext.timer1State == 4) || (gSaveContext.timer1State == 8) || (gSaveContext.timer2State == 4) || if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) ||
(gSaveContext.timer2State == 10)) { (gSaveContext.timerState == TIMER_STATE_DOWN_TICK) ||
(gSaveContext.subTimerState == SUBTIMER_STATE_DOWN_TICK) ||
(gSaveContext.subTimerState == SUBTIMER_STATE_UP_TICK)) {
osSyncPrintf("restart_flag=%d\n", ((void)0, gSaveContext.respawnFlag)); osSyncPrintf("restart_flag=%d\n", ((void)0, gSaveContext.respawnFlag));
if ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) { if ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) {
if (gSaveContext.timer1State == 4) { if (gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) {
gSaveContext.timer1State = 1; gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_INIT;
gSaveContext.timerX[0] = 140; gSaveContext.timerX[TIMER_ID_MAIN] = 140;
gSaveContext.timerY[0] = 80; gSaveContext.timerY[TIMER_ID_MAIN] = 80;
} }
} }
if ((gSaveContext.timer1State == 4) || (gSaveContext.timer1State == 8)) { if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) ||
temp = 0; (gSaveContext.timerState == TIMER_STATE_DOWN_TICK)) {
timerId = TIMER_ID_MAIN;
} else { } else {
temp = 1; timerId = TIMER_ID_SUB;
} }
gSaveContext.timerX[temp] = 26; gSaveContext.timerX[timerId] = 26;
if (gSaveContext.healthCapacity > 0xA0) { if (gSaveContext.healthCapacity > 0xA0) {
gSaveContext.timerY[temp] = 54; gSaveContext.timerY[timerId] = 54; // two rows of hearts
} else { } else {
gSaveContext.timerY[temp] = 46; gSaveContext.timerY[timerId] = 46; // one row of hearts
} }
} }
if ((gSaveContext.timer1State >= 11) && (gSaveContext.timer1State < 16)) { if ((gSaveContext.timerState >= TIMER_STATE_UP_INIT) && (gSaveContext.timerState <= TIMER_STATE_UP_FREEZE)) {
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
// "Timer Stop!!!!!!!!!!!!!!!!!!!!!!" // "Timer Stop!!!!!!!!!!!!!!!!!!!!!!"
osSyncPrintf("タイマー停止!!!!!!!!!!!!!!!!!!!!! = %d\n", gSaveContext.timer1State); osSyncPrintf("タイマー停止!!!!!!!!!!!!!!!!!!!!! = %d\n", gSaveContext.timerState);
} }
osSyncPrintf("PARAMETER領域=%x\n", parameterSize + 0x5300); // "Parameter Area = %x" osSyncPrintf("PARAMETER領域=%x\n", parameterSize + 0x5300); // "Parameter Area = %x"

View file

@ -39,7 +39,7 @@ u32 QuestHint_CheckCondition(QuestHintCmd* hintCmd) {
case (QUEST_HINT_CONDITION_DUNGEON_ITEM << 1): case (QUEST_HINT_CONDITION_DUNGEON_ITEM << 1):
return ((hintCmd->byte0 & 1) == 1) == return ((hintCmd->byte0 & 1) == 1) ==
(CHECK_DUNGEON_ITEM(hintCmd->byte1 - ITEM_KEY_BOSS, gSaveContext.mapIndex) != 0); (CHECK_DUNGEON_ITEM(hintCmd->byte1 - ITEM_DUNGEON_BOSS_KEY, gSaveContext.mapIndex) != 0);
case (QUEST_HINT_CONDITION_ITEM << 1): case (QUEST_HINT_CONDITION_ITEM << 1):
return ((hintCmd->byte0 & 1) == 1) == (hintCmd->byte3 == INV_CONTENT(hintCmd->byte1)); return ((hintCmd->byte0 & 1) == 1) == (hintCmd->byte3 == INV_CONTENT(hintCmd->byte1));

View file

@ -314,31 +314,31 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
Item_Give(play, ITEM_BOW); Item_Give(play, ITEM_BOW);
break; break;
case ITEM00_ARROWS_SMALL: case ITEM00_ARROWS_SMALL:
Item_Give(play, ITEM_ARROWS_SMALL); Item_Give(play, ITEM_ARROWS_5);
break; break;
case ITEM00_ARROWS_MEDIUM: case ITEM00_ARROWS_MEDIUM:
Item_Give(play, ITEM_ARROWS_MEDIUM); Item_Give(play, ITEM_ARROWS_10);
break; break;
case ITEM00_ARROWS_LARGE: case ITEM00_ARROWS_LARGE:
Item_Give(play, ITEM_ARROWS_LARGE); Item_Give(play, ITEM_ARROWS_30);
break; break;
case ITEM00_MAGIC_LARGE: case ITEM00_MAGIC_LARGE:
getItemId = GI_MAGIC_SMALL; getItemId = GI_MAGIC_JAR_SMALL;
break; break;
case ITEM00_MAGIC_SMALL: case ITEM00_MAGIC_SMALL:
getItemId = GI_MAGIC_LARGE; getItemId = GI_MAGIC_JAR_LARGE;
break; break;
case ITEM00_SMALL_KEY: case ITEM00_SMALL_KEY:
Item_Give(play, ITEM_KEY_SMALL); Item_Give(play, ITEM_SMALL_KEY);
break; break;
case ITEM00_SEEDS: case ITEM00_SEEDS:
getItemId = GI_SEEDS_5; getItemId = GI_DEKU_SEEDS_5;
break; break;
case ITEM00_NUTS: case ITEM00_NUTS:
getItemId = GI_NUTS_5; getItemId = GI_DEKU_NUTS_5;
break; break;
case ITEM00_STICK: case ITEM00_STICK:
getItemId = GI_STICKS_1; getItemId = GI_DEKU_STICKS_1;
break; break;
case ITEM00_HEART_PIECE: case ITEM00_HEART_PIECE:
case ITEM00_HEART_CONTAINER: case ITEM00_HEART_CONTAINER:
@ -632,10 +632,10 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
Item_Give(play, ITEM_RUPEE_GOLD); Item_Give(play, ITEM_RUPEE_GOLD);
break; break;
case ITEM00_STICK: case ITEM00_STICK:
getItemId = GI_STICKS_1; getItemId = GI_DEKU_STICKS_1;
break; break;
case ITEM00_NUTS: case ITEM00_NUTS:
getItemId = GI_NUTS_5; getItemId = GI_DEKU_NUTS_5;
break; break;
case ITEM00_RECOVERY_HEART: case ITEM00_RECOVERY_HEART:
Item_Give(play, ITEM_RECOVERY_HEART); Item_Give(play, ITEM_RECOVERY_HEART);
@ -651,19 +651,19 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
Item_Give(play, ITEM_BOW); Item_Give(play, ITEM_BOW);
break; break;
case ITEM00_ARROWS_SMALL: case ITEM00_ARROWS_SMALL:
Item_Give(play, ITEM_ARROWS_SMALL); Item_Give(play, ITEM_ARROWS_5);
break; break;
case ITEM00_ARROWS_MEDIUM: case ITEM00_ARROWS_MEDIUM:
Item_Give(play, ITEM_ARROWS_MEDIUM); Item_Give(play, ITEM_ARROWS_10);
break; break;
case ITEM00_ARROWS_LARGE: case ITEM00_ARROWS_LARGE:
Item_Give(play, ITEM_ARROWS_LARGE); Item_Give(play, ITEM_ARROWS_30);
break; break;
case ITEM00_SEEDS: case ITEM00_SEEDS:
getItemId = GI_SEEDS_5; getItemId = GI_DEKU_SEEDS_5;
break; break;
case ITEM00_SMALL_KEY: case ITEM00_SMALL_KEY:
getItemId = GI_KEY_SMALL; getItemId = GI_SMALL_KEY;
break; break;
case ITEM00_HEART_PIECE: case ITEM00_HEART_PIECE:
getItemId = GI_HEART_PIECE; getItemId = GI_HEART_PIECE;
@ -672,10 +672,10 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
getItemId = GI_HEART_CONTAINER; getItemId = GI_HEART_CONTAINER;
break; break;
case ITEM00_MAGIC_LARGE: case ITEM00_MAGIC_LARGE:
getItemId = GI_MAGIC_LARGE; getItemId = GI_MAGIC_JAR_LARGE;
break; break;
case ITEM00_MAGIC_SMALL: case ITEM00_MAGIC_SMALL:
getItemId = GI_MAGIC_SMALL; getItemId = GI_MAGIC_JAR_SMALL;
break; break;
case ITEM00_SHIELD_DEKU: case ITEM00_SHIELD_DEKU:
getItemId = GI_SHIELD_DEKU; getItemId = GI_SHIELD_DEKU;

View file

@ -28,9 +28,9 @@ void GameOver_Update(PlayState* play) {
case GAMEOVER_DEATH_START: case GAMEOVER_DEATH_START:
Message_CloseTextbox(play); Message_CloseTextbox(play);
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
CLEAR_EVENTINF(EVENTINF_10); CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
// search inventory for spoiling items and revert if necessary // search inventory for spoiling items and revert if necessary
for (i = 0; i < ARRAY_COUNT(gSpoilingItems); i++) { for (i = 0; i < ARRAY_COUNT(gSpoilingItems); i++) {
@ -50,8 +50,8 @@ void GameOver_Update(PlayState* play) {
// restore "temporary B" to the B Button if not a sword item // restore "temporary B" to the B Button if not a sword item
if (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI && if (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI &&
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER && gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER &&
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BGS && gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON &&
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KNIFE) { gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE) {
if (gSaveContext.buttonStatus[0] != BTN_ENABLED) { if (gSaveContext.buttonStatus[0] != BTN_ENABLED) {
gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0]; gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0];

View file

@ -1283,9 +1283,9 @@ void Message_Decode(PlayState* play) {
osSyncPrintf("\nEVENTタイマー "); osSyncPrintf("\nEVENTタイマー ");
digits[0] = digits[1] = digits[2] = 0; digits[0] = digits[1] = digits[2] = 0;
if (curChar == MESSAGE_RACE_TIME) { if (curChar == MESSAGE_RACE_TIME) {
digits[3] = gSaveContext.timer1Value; digits[3] = gSaveContext.timerSeconds;
} else { } else {
digits[3] = gSaveContext.timer2Value; digits[3] = gSaveContext.subTimerSeconds;
} }
while (digits[3] >= 60) { while (digits[3] >= 60) {

File diff suppressed because it is too large Load diff

View file

@ -3,11 +3,6 @@
#include "assets/objects/object_link_boy/object_link_boy.h" #include "assets/objects/object_link_boy/object_link_boy.h"
#include "assets/objects/object_link_child/object_link_child.h" #include "assets/objects/object_link_child/object_link_child.h"
typedef struct {
/* 0x00 */ u8 flag;
/* 0x02 */ u16 textId;
} TextTriggerEntry; // size = 0x04
typedef struct { typedef struct {
/* 0x00 */ Gfx* dList; /* 0x00 */ Gfx* dList;
/* 0x04 */ Vec3f pos; /* 0x04 */ Vec3f pos;
@ -32,7 +27,7 @@ u8 sActionModelGroups[PLAYER_IA_MAX] = {
PLAYER_MODELGROUP_SWORD, // PLAYER_IA_SWORD_MASTER PLAYER_MODELGROUP_SWORD, // PLAYER_IA_SWORD_MASTER
PLAYER_MODELGROUP_SWORD, // PLAYER_IA_SWORD_KOKIRI PLAYER_MODELGROUP_SWORD, // PLAYER_IA_SWORD_KOKIRI
PLAYER_MODELGROUP_BGS, // PLAYER_IA_SWORD_BGS PLAYER_MODELGROUP_BGS, // PLAYER_IA_SWORD_BGS
PLAYER_MODELGROUP_10, // PLAYER_IA_STICK PLAYER_MODELGROUP_10, // PLAYER_IA_DEKU_STICK
PLAYER_MODELGROUP_HAMMER, // PLAYER_IA_HAMMER PLAYER_MODELGROUP_HAMMER, // PLAYER_IA_HAMMER
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_IA_BOW PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_IA_BOW
PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_IA_BOW_FIRE PLAYER_MODELGROUP_BOW_SLINGSHOT, // PLAYER_IA_BOW_FIRE
@ -53,33 +48,33 @@ u8 sActionModelGroups[PLAYER_IA_MAX] = {
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_FARORES_WIND PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_FARORES_WIND
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_NAYRUS_LOVE PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_NAYRUS_LOVE
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DINS_FIRE PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DINS_FIRE
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_NUT PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_DEKU_NUT
PLAYER_MODELGROUP_OCARINA, // PLAYER_IA_OCARINA_FAIRY PLAYER_MODELGROUP_OCARINA, // PLAYER_IA_OCARINA_FAIRY
PLAYER_MODELGROUP_OOT, // PLAYER_IA_OCARINA_TIME PLAYER_MODELGROUP_OOT, // PLAYER_IA_OCARINA_OF_TIME
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FISH PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FISH
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FIRE PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FIRE
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BUG PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BUG
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POE PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POE
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BIG_POE PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BIG_POE
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_LETTER PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_RUTOS_LETTER
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_RED PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_RED
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_BLUE PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_BLUE
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_GREEN PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_POTION_GREEN
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MILK PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MILK_FULL
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MILK_HALF PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_MILK_HALF
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FAIRY PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FAIRY
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LETTER_ZELDA PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ZELDAS_LETTER
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_WEIRD_EGG PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_WEIRD_EGG
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_CHICKEN PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_CHICKEN
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_BEAN PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MAGIC_BEAN
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_POCKET_EGG PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_POCKET_EGG
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_POCKET_CUCCO PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_POCKET_CUCCO
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_COJIRO PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_COJIRO
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ODD_MUSHROOM PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ODD_MUSHROOM
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ODD_POTION PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ODD_POTION
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_SAW PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_POACHERS_SAW
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_SWORD_BROKEN PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_BROKEN_GORONS_SWORD
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_PRESCRIPTION PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_PRESCRIPTION
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_FROG PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_FROG
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_EYEDROPS PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_EYEDROPS
@ -87,19 +82,24 @@ u8 sActionModelGroups[PLAYER_IA_MAX] = {
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_KEATON PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_KEATON
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_SKULL PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_SKULL
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_SPOOKY PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_SPOOKY
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_BUNNY PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_BUNNY_HOOD
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GORON PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GORON
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_ZORA PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_ZORA
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GERUDO PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GERUDO
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_TRUTH PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_TRUTH
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LENS PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LENS_OF_TRUTH
}; };
TextTriggerEntry sTextTriggers[] = { typedef struct {
{ 1, 0x3040 }, /* 0x0 */ u8 flag;
{ 2, 0x401D }, /* 0x2 */ u16 textId;
{ 0, 0x0000 }, } EnvHazardTextTriggerEntry; // size = 0x4
{ 2, 0x401D },
EnvHazardTextTriggerEntry sEnvHazardTextTriggers[] = {
{ ENV_HAZARD_TEXT_TRIGGER_HOTROOM, 0x3040 }, // PLAYER_ENV_HAZARD_HOTROOM - 1
{ ENV_HAZARD_TEXT_TRIGGER_UNDERWATER, 0x401D }, // PLAYER_ENV_HAZARD_UNDERWATER_FLOOR - 1
{ 0, 0x0000 }, // PLAYER_ENV_HAZARD_SWIMMING - 1
{ ENV_HAZARD_TEXT_TRIGGER_UNDERWATER, 0x401D }, // PLAYER_ENV_HAZARD_UNDERWATER_FREE - 1
}; };
// Used to map model groups to model types for [animation, left hand, right hand, sheath, waist] // Used to map model groups to model types for [animation, left hand, right hand, sheath, waist]
@ -590,7 +590,7 @@ void Player_SetEquipmentData(PlayState* play, Player* this) {
void Player_UpdateBottleHeld(PlayState* play, Player* this, s32 item, s32 itemAction) { void Player_UpdateBottleHeld(PlayState* play, Player* this, s32 item, s32 itemAction) {
Inventory_UpdateBottleItem(play, item, this->heldItemButton); Inventory_UpdateBottleItem(play, item, this->heldItemButton);
if (item != ITEM_BOTTLE) { if (item != ITEM_BOTTLE_EMPTY) {
this->heldItemId = item; this->heldItemId = item;
this->heldItemAction = itemAction; this->heldItemAction = itemAction;
} }
@ -644,7 +644,7 @@ s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 y
Vec3f diff; Vec3f diff;
s32 pad; s32 pad;
if ((this->heldItemAction == PLAYER_IA_STICK) && (this->unk_860 != 0)) { if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) && (this->unk_860 != 0)) {
Math_Vec3f_Diff(&this->meleeWeaponInfo[0].tip, pos, &diff); Math_Vec3f_Diff(&this->meleeWeaponInfo[0].tip, pos, &diff);
return ((SQ(diff.x) + SQ(diff.z)) <= SQ(xzRange)) && (0.0f <= diff.y) && (diff.y <= yRange); return ((SQ(diff.x) + SQ(diff.z)) <= SQ(xzRange)) && (0.0f <= diff.y) && (diff.y <= yRange);
} else { } else {
@ -778,35 +778,37 @@ return_neg:
return -1; return -1;
} }
s32 func_8008F2F8(PlayState* play) { s32 Player_GetEnvironmentalHazard(PlayState* play) {
Player* this = GET_PLAYER(play); Player* this = GET_PLAYER(play);
TextTriggerEntry* triggerEntry; EnvHazardTextTriggerEntry* triggerEntry;
s32 var; s32 envHazard;
if (play->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3) { // Room is hot if (play->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3) { // Room is hot
var = 0; envHazard = PLAYER_ENV_HAZARD_HOTROOM - 1;
} else if ((this->unk_840 > 80) && } else if ((this->underwaterTimer > 80) &&
((this->currentBoots == PLAYER_BOOTS_IRON) || (this->unk_840 >= 300))) { // Deep underwater ((this->currentBoots == PLAYER_BOOTS_IRON) || (this->underwaterTimer >= 300))) {
var = ((this->currentBoots == PLAYER_BOOTS_IRON) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) ? 1 : 3; envHazard = ((this->currentBoots == PLAYER_BOOTS_IRON) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND))
? (PLAYER_ENV_HAZARD_UNDERWATER_FLOOR - 1)
: (PLAYER_ENV_HAZARD_UNDERWATER_FREE - 1);
} else if (this->stateFlags1 & PLAYER_STATE1_27) { // Swimming } else if (this->stateFlags1 & PLAYER_STATE1_27) { // Swimming
var = 2; envHazard = PLAYER_ENV_HAZARD_SWIMMING - 1;
} else { } else {
return 0; return PLAYER_ENV_HAZARD_NONE;
} }
// Trigger general textboxes under certain conditions, like "It's so hot in here!" triggerEntry = &sEnvHazardTextTriggers[envHazard];
triggerEntry = &sTextTriggers[var];
if (!Player_InCsMode(play)) { if (!Player_InCsMode(play)) {
if ((triggerEntry->flag != 0) && !(gSaveContext.textTriggerFlags & triggerEntry->flag) && if ((triggerEntry->flag != 0) && !(gSaveContext.envHazardTextTriggerFlags & triggerEntry->flag) &&
(((var == 0) && (this->currentTunic != PLAYER_TUNIC_GORON)) || (((envHazard == (PLAYER_ENV_HAZARD_HOTROOM - 1)) && (this->currentTunic != PLAYER_TUNIC_GORON)) ||
(((var == 1) || (var == 3)) && (this->currentBoots == PLAYER_BOOTS_IRON) && (((envHazard == (PLAYER_ENV_HAZARD_UNDERWATER_FLOOR - 1)) ||
(this->currentTunic != PLAYER_TUNIC_ZORA)))) { (envHazard == (PLAYER_ENV_HAZARD_UNDERWATER_FREE - 1))) &&
(this->currentBoots == PLAYER_BOOTS_IRON) && (this->currentTunic != PLAYER_TUNIC_ZORA)))) {
Message_StartTextbox(play, triggerEntry->textId, NULL); Message_StartTextbox(play, triggerEntry->textId, NULL);
gSaveContext.textTriggerFlags |= triggerEntry->flag; gSaveContext.envHazardTextTriggerFlags |= triggerEntry->flag;
} }
} }
return var + 1; return envHazard + 1;
} }
u8 sEyeMouthIndices[][2] = { u8 sEyeMouthIndices[][2] = {
@ -1450,7 +1452,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve
Math_Vec3f_Copy(&this->leftHandPos, sCurBodyPartPos); Math_Vec3f_Copy(&this->leftHandPos, sCurBodyPartPos);
if (this->itemAction == PLAYER_IA_STICK) { if (this->itemAction == PLAYER_IA_DEKU_STICK) {
Vec3f sp124[3]; Vec3f sp124[3];
OPEN_DISPS(play->state.gfxCtx, "../z_player_lib.c", 2633); OPEN_DISPS(play->state.gfxCtx, "../z_player_lib.c", 2633);

View file

@ -138,8 +138,8 @@ static ItemEquips sNewSaveEquips = {
static Inventory sNewSaveInventory = { static Inventory sNewSaveInventory = {
// items // items
{ {
ITEM_NONE, // SLOT_STICK ITEM_NONE, // SLOT_DEKU_STICK
ITEM_NONE, // SLOT_NUT ITEM_NONE, // SLOT_DEKU_NUT
ITEM_NONE, // SLOT_BOMB ITEM_NONE, // SLOT_BOMB
ITEM_NONE, // SLOT_BOW ITEM_NONE, // SLOT_BOW
ITEM_NONE, // SLOT_ARROW_FIRE ITEM_NONE, // SLOT_ARROW_FIRE
@ -151,8 +151,8 @@ static Inventory sNewSaveInventory = {
ITEM_NONE, // SLOT_ARROW_ICE ITEM_NONE, // SLOT_ARROW_ICE
ITEM_NONE, // SLOT_FARORES_WIND ITEM_NONE, // SLOT_FARORES_WIND
ITEM_NONE, // SLOT_BOOMERANG ITEM_NONE, // SLOT_BOOMERANG
ITEM_NONE, // SLOT_LENS ITEM_NONE, // SLOT_LENS_OF_TRUTH
ITEM_NONE, // SLOT_BEAN ITEM_NONE, // SLOT_MAGIC_BEAN
ITEM_NONE, // SLOT_HAMMER ITEM_NONE, // SLOT_HAMMER
ITEM_NONE, // SLOT_ARROW_LIGHT ITEM_NONE, // SLOT_ARROW_LIGHT
ITEM_NONE, // SLOT_NAYRUS_LOVE ITEM_NONE, // SLOT_NAYRUS_LOVE
@ -165,8 +165,8 @@ static Inventory sNewSaveInventory = {
}, },
// ammo // ammo
{ {
0, // SLOT_STICK 0, // SLOT_DEKU_STICK
0, // SLOT_NUT 0, // SLOT_DEKU_NUT
0, // SLOT_BOMB 0, // SLOT_BOMB
0, // SLOT_BOW 0, // SLOT_BOW
0, // SLOT_ARROW_FIRE 0, // SLOT_ARROW_FIRE
@ -178,8 +178,8 @@ static Inventory sNewSaveInventory = {
0, // SLOT_ARROW_ICE 0, // SLOT_ARROW_ICE
0, // SLOT_FARORES_WIND 0, // SLOT_FARORES_WIND
0, // SLOT_BOOMERANG 0, // SLOT_BOOMERANG
0, // SLOT_LENS 0, // SLOT_LENS_OF_TRUTH
0, // SLOT_BEAN 0, // SLOT_MAGIC_BEAN
0, // SLOT_HAMMER 0, // SLOT_HAMMER
}, },
// equipment // equipment
@ -268,35 +268,35 @@ static ItemEquips sDebugSaveEquips = {
static Inventory sDebugSaveInventory = { static Inventory sDebugSaveInventory = {
// items // items
{ {
ITEM_STICK, // SLOT_STICK ITEM_DEKU_STICK, // SLOT_DEKU_STICK
ITEM_NUT, // SLOT_NUT ITEM_DEKU_NUT, // SLOT_DEKU_NUT
ITEM_BOMB, // SLOT_BOMB ITEM_BOMB, // SLOT_BOMB
ITEM_BOW, // SLOT_BOW ITEM_BOW, // SLOT_BOW
ITEM_ARROW_FIRE, // SLOT_ARROW_FIRE ITEM_ARROW_FIRE, // SLOT_ARROW_FIRE
ITEM_DINS_FIRE, // SLOT_DINS_FIRE ITEM_DINS_FIRE, // SLOT_DINS_FIRE
ITEM_SLINGSHOT, // SLOT_SLINGSHOT ITEM_SLINGSHOT, // SLOT_SLINGSHOT
ITEM_OCARINA_FAIRY, // SLOT_OCARINA ITEM_OCARINA_FAIRY, // SLOT_OCARINA
ITEM_BOMBCHU, // SLOT_BOMBCHU ITEM_BOMBCHU, // SLOT_BOMBCHU
ITEM_HOOKSHOT, // SLOT_HOOKSHOT ITEM_HOOKSHOT, // SLOT_HOOKSHOT
ITEM_ARROW_ICE, // SLOT_ARROW_ICE ITEM_ARROW_ICE, // SLOT_ARROW_ICE
ITEM_FARORES_WIND, // SLOT_FARORES_WIND ITEM_FARORES_WIND, // SLOT_FARORES_WIND
ITEM_BOOMERANG, // SLOT_BOOMERANG ITEM_BOOMERANG, // SLOT_BOOMERANG
ITEM_LENS, // SLOT_LENS ITEM_LENS_OF_TRUTH, // SLOT_LENS_OF_TRUTH
ITEM_BEAN, // SLOT_BEAN ITEM_MAGIC_BEAN, // SLOT_MAGIC_BEAN
ITEM_HAMMER, // SLOT_HAMMER ITEM_HAMMER, // SLOT_HAMMER
ITEM_ARROW_LIGHT, // SLOT_ARROW_LIGHT ITEM_ARROW_LIGHT, // SLOT_ARROW_LIGHT
ITEM_NAYRUS_LOVE, // SLOT_NAYRUS_LOVE ITEM_NAYRUS_LOVE, // SLOT_NAYRUS_LOVE
ITEM_BOTTLE, // SLOT_BOTTLE_1 ITEM_BOTTLE_EMPTY, // SLOT_BOTTLE_1
ITEM_POTION_RED, // SLOT_BOTTLE_2 ITEM_BOTTLE_POTION_RED, // SLOT_BOTTLE_2
ITEM_POTION_GREEN, // SLOT_BOTTLE_3 ITEM_BOTTLE_POTION_GREEN, // SLOT_BOTTLE_3
ITEM_POTION_BLUE, // SLOT_BOTTLE_4 ITEM_BOTTLE_POTION_BLUE, // SLOT_BOTTLE_4
ITEM_POCKET_EGG, // SLOT_TRADE_ADULT ITEM_POCKET_EGG, // SLOT_TRADE_ADULT
ITEM_WEIRD_EGG, // SLOT_TRADE_CHILD ITEM_WEIRD_EGG, // SLOT_TRADE_CHILD
}, },
// ammo // ammo
{ {
50, // SLOT_STICK 50, // SLOT_DEKU_STICK
50, // SLOT_NUT 50, // SLOT_DEKU_NUT
10, // SLOT_BOMB 10, // SLOT_BOMB
30, // SLOT_BOW 30, // SLOT_BOW
1, // SLOT_ARROW_FIRE 1, // SLOT_ARROW_FIRE
@ -308,8 +308,8 @@ static Inventory sDebugSaveInventory = {
1, // SLOT_ARROW_ICE 1, // SLOT_ARROW_ICE
1, // SLOT_FARORES_WIND 1, // SLOT_FARORES_WIND
1, // SLOT_BOOMERANG 1, // SLOT_BOOMERANG
1, // SLOT_LENS 1, // SLOT_LENS_OF_TRUTH
1, // SLOT_BEAN 1, // SLOT_MAGIC_BEAN
1 // SLOT_HAMMER 1 // SLOT_HAMMER
}, },
// equipment // equipment
@ -534,10 +534,10 @@ void Sram_OpenSave(SramContext* sramCtx) {
i = gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] & ~EVENTCHKINF_40_MASK; i = gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] & ~EVENTCHKINF_40_MASK;
gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] = i; gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] = i;
INV_CONTENT(ITEM_LETTER_ZELDA) = ITEM_CHICKEN; INV_CONTENT(ITEM_ZELDAS_LETTER) = ITEM_CHICKEN;
for (j = 1; j < 4; j++) { for (j = 1; j < 4; j++) {
if (gSaveContext.equips.buttonItems[j] == ITEM_LETTER_ZELDA) { if (gSaveContext.equips.buttonItems[j] == ITEM_ZELDAS_LETTER) {
gSaveContext.equips.buttonItems[j] = ITEM_CHICKEN; gSaveContext.equips.buttonItems[j] = ITEM_CHICKEN;
} }
} }

View file

@ -22,7 +22,7 @@ QuestHintCmd gOverworldNaviQuestHints[] = {
QUEST_HINT_BOOTS(CHECK, ITEM_BOOTS_IRON, false, 0x52), QUEST_HINT_BOOTS(CHECK, ITEM_BOOTS_IRON, false, 0x52),
QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_WATER, false, 0x53), QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_WATER, false, 0x53),
QUEST_HINT_FLAG(CHECK, EVENTCHKINF_AA, false, 0x54), QUEST_HINT_FLAG(CHECK, EVENTCHKINF_AA, false, 0x54),
QUEST_HINT_ITEM(CHECK, ITEM_LENS, ITEM_NONE, true, 0x55), QUEST_HINT_ITEM(CHECK, ITEM_LENS_OF_TRUTH, ITEM_NONE, true, 0x55),
QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_SHADOW, false, 0x57), QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_SHADOW, false, 0x57),
QUEST_HINT_SONG(CHECK, ITEM_SONG_REQUIEM, false, 0x58), QUEST_HINT_SONG(CHECK, ITEM_SONG_REQUIEM, false, 0x58),
QUEST_HINT_STRENGTH_UPG(CHECK, 1, true, 0x56), QUEST_HINT_STRENGTH_UPG(CHECK, 1, true, 0x56),

View file

@ -226,8 +226,8 @@ void BgPoEvent_Destroy(Actor* thisx, PlayState* play) {
Collider_DestroyTris(play, &this->collider); Collider_DestroyTris(play, &this->collider);
} else { } else {
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId); DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
if ((this->type == 1) && (gSaveContext.timer1Value > 0)) { if ((this->type == 1) && (gSaveContext.timerSeconds > 0)) {
gSaveContext.timer1State = 0xA; gSaveContext.timerState = TIMER_STATE_STOP;
} }
} }
} }
@ -316,7 +316,7 @@ void BgPoEvent_BlockFall(BgPoEvent* this, PlayState* play) {
} else { } else {
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_STONE_BOUND); Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_STONE_BOUND);
Actor_RequestQuakeAndRumble(&this->dyna.actor, play, 5, 5); Actor_RequestQuakeAndRumble(&this->dyna.actor, play, 5, 5);
func_80088B34(this->timer); Interface_SetTimer(this->timer);
if (firstFall == 0) { if (firstFall == 0) {
firstFall = 1; firstFall = 1;
} else { } else {
@ -342,10 +342,10 @@ void BgPoEvent_BlockIdle(BgPoEvent* this, PlayState* play) {
OnePointCutscene_Init(play, 3170, 30, amy, CAM_ID_MAIN); OnePointCutscene_Init(play, 3170, 30, amy, CAM_ID_MAIN);
} }
func_80078884(NA_SE_SY_CORRECT_CHIME); func_80078884(NA_SE_SY_CORRECT_CHIME);
gSaveContext.timer1State = 0xA; gSaveContext.timerState = TIMER_STATE_STOP;
} }
} else { } else {
if ((gSaveContext.timer1Value == 0) && (sBlocksAtRest == 5)) { if ((gSaveContext.timerSeconds == 0) && (sBlocksAtRest == 5)) {
player->stateFlags2 &= ~PLAYER_STATE2_4; player->stateFlags2 &= ~PLAYER_STATE2_4;
sPuzzleState = 0x10; sPuzzleState = 0x10;
sBlocksAtRest = 0; sBlocksAtRest = 0;

View file

@ -156,7 +156,7 @@ void func_808A9234(BgRelayObjects* this, PlayState* play) {
Flags_UnsetSwitch(play, this->switchFlag); Flags_UnsetSwitch(play, this->switchFlag);
this->dyna.actor.flags &= ~ACTOR_FLAG_4; this->dyna.actor.flags &= ~ACTOR_FLAG_4;
if (play->roomCtx.curRoom.num == 4) { if (play->roomCtx.curRoom.num == 4) {
gSaveContext.timer1State = 0xF; gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
} }
this->actionFunc = BgRelayObjects_DoNothing; this->actionFunc = BgRelayObjects_DoNothing;
} }

View file

@ -399,7 +399,7 @@ void BgYdanSp_WallWebIdle(BgYdanSp* this, PlayState* play) {
if (Flags_GetSwitch(play, this->burnSwitchFlag) || (this->trisCollider.base.acFlags & AC_HIT)) { if (Flags_GetSwitch(play, this->burnSwitchFlag) || (this->trisCollider.base.acFlags & AC_HIT)) {
this->dyna.actor.home.pos.y = this->dyna.actor.world.pos.y + 80.0f; this->dyna.actor.home.pos.y = this->dyna.actor.world.pos.y + 80.0f;
BgYdanSp_BurnWeb(this, play); BgYdanSp_BurnWeb(this, play);
} else if (player->heldItemAction == PLAYER_IA_STICK && player->unk_860 != 0) { } else if (player->heldItemAction == PLAYER_IA_DEKU_STICK && player->unk_860 != 0) {
func_8002DBD0(&this->dyna.actor, &sp30, &player->meleeWeaponInfo[0].tip); func_8002DBD0(&this->dyna.actor, &sp30, &player->meleeWeaponInfo[0].tip);
if (fabsf(sp30.x) < 100.0f && sp30.z < 1.0f && sp30.y < 200.0f) { if (fabsf(sp30.x) < 100.0f && sp30.z < 1.0f && sp30.y < 200.0f) {
OnePointCutscene_Init(play, 3020, 40, &this->dyna.actor, CAM_ID_MAIN); OnePointCutscene_Init(play, 3020, 40, &this->dyna.actor, CAM_ID_MAIN);

View file

@ -823,7 +823,7 @@ void DemoKankyo_DrawWarpSparkles(Actor* thisx, PlayState* play) {
this->unk_150[i].unk_22++; this->unk_150[i].unk_22++;
} }
} else if (i + 1 == this->sparkleCounter && play->csCtx.state == CS_STATE_IDLE) { } else if (i + 1 == this->sparkleCounter && play->csCtx.state == CS_STATE_IDLE) {
func_80088AF0(play); Interface_SetSubTimerToFinalSecond(play);
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} }
break; break;

View file

@ -577,7 +577,7 @@ void func_80996B0C(DoorShutter* this, PlayState* play) {
if (this->unlockTimer != 0) { if (this->unlockTimer != 0) {
if (this->doorType == SHUTTER_BOSS) { if (this->doorType == SHUTTER_BOSS) {
if (!CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, gSaveContext.mapIndex)) { if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.mapIndex)) {
player->naviTextId = -0x204; player->naviTextId = -0x204;
return; return;
} }

View file

@ -268,7 +268,8 @@ void EnButte_FlyAround(EnButte* this, PlayState* play) {
EnButte_SelectFlightParams(this, &sFlyAroundParams[this->flightParamsIdx]); EnButte_SelectFlightParams(this, &sFlyAroundParams[this->flightParamsIdx]);
} }
if (((this->actor.params & 1) == 1) && (player->heldItemAction == PLAYER_IA_STICK) && (this->swordDownTimer <= 0) && if (((this->actor.params & 1) == 1) && (player->heldItemAction == PLAYER_IA_DEKU_STICK) &&
(this->swordDownTimer <= 0) &&
((Math3D_Dist2DSq(player->actor.world.pos.x, player->actor.world.pos.z, this->actor.home.pos.x, ((Math3D_Dist2DSq(player->actor.world.pos.x, player->actor.world.pos.z, this->actor.home.pos.x,
this->actor.home.pos.z) < SQ(120.0f)) || this->actor.home.pos.z) < SQ(120.0f)) ||
(this->actor.xzDistToPlayer < 60.0f))) { (this->actor.xzDistToPlayer < 60.0f))) {
@ -333,7 +334,7 @@ void EnButte_FollowLink(EnButte* this, PlayState* play) {
distSqFromHome = Math3D_Dist2DSq(this->actor.world.pos.x, this->actor.world.pos.z, this->actor.home.pos.x, distSqFromHome = Math3D_Dist2DSq(this->actor.world.pos.x, this->actor.world.pos.z, this->actor.home.pos.x,
this->actor.home.pos.z); this->actor.home.pos.z);
if (!((player->heldItemAction == PLAYER_IA_STICK) && (fabsf(player->actor.speedXZ) < 1.8f) && if (!((player->heldItemAction == PLAYER_IA_DEKU_STICK) && (fabsf(player->actor.speedXZ) < 1.8f) &&
(this->swordDownTimer <= 0) && (distSqFromHome < SQ(320.0f)))) { (this->swordDownTimer <= 0) && (distSqFromHome < SQ(320.0f)))) {
EnButte_SetupFlyAround(this); EnButte_SetupFlyAround(this);
} else if (distSqFromHome > SQ(240.0f)) { } else if (distSqFromHome > SQ(240.0f)) {

View file

@ -1020,7 +1020,7 @@ void EnDekubaba_DeadStickDrop(EnDekubaba* this, PlayState* play) {
return; return;
} }
func_8002F554(&this->actor, play, GI_STICKS_1); func_8002F554(&this->actor, play, GI_DEKU_STICKS_1);
} }
// Update and associated functions // Update and associated functions

View file

@ -103,7 +103,7 @@ void EnDivingGame_Destroy(Actor* thisx, PlayState* play) {
EnDivingGame* this = (EnDivingGame*)thisx; EnDivingGame* this = (EnDivingGame*)thisx;
if (this->unk_31F == 0) { if (this->unk_31F == 0) {
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} }
Collider_DestroyCylinder(play, &this->collider); Collider_DestroyCylinder(play, &this->collider);
} }
@ -125,9 +125,9 @@ void EnDivingGame_SpawnRuppy(EnDivingGame* this, PlayState* play) {
} }
s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) { s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) {
if (gSaveContext.timer1State == 10 && !Play_InCsMode(play)) { if ((gSaveContext.timerState == TIMER_STATE_STOP) && !Play_InCsMode(play)) {
// Failed. // Failed.
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
func_800F5B58(); func_800F5B58();
func_80078884(NA_SE_SY_FOUND); func_80078884(NA_SE_SY_FOUND);
this->actor.textId = 0x71AD; this->actor.textId = 0x71AD;
@ -145,7 +145,7 @@ s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) {
} }
if (this->grabbedRupeesCounter >= rupeesNeeded) { if (this->grabbedRupeesCounter >= rupeesNeeded) {
// Won. // Won.
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0; this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0;
if (!GET_EVENTCHKINF(EVENTCHKINF_38)) { if (!GET_EVENTCHKINF(EVENTCHKINF_38)) {
this->actor.textId = 0x4055; this->actor.textId = 0x4055;
@ -418,9 +418,9 @@ void func_809EE800(EnDivingGame* this, PlayState* play) {
if (this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play)) { if (this->unk_292 == Message_GetState(&play->msgCtx) && Message_ShouldAdvance(play)) {
Message_CloseTextbox(play); Message_CloseTextbox(play);
if (!GET_EVENTCHKINF(EVENTCHKINF_38)) { if (!GET_EVENTCHKINF(EVENTCHKINF_38)) {
func_80088B34(BREG(2) + 50); Interface_SetTimer(50 + BREG(2));
} else { } else {
func_80088B34(BREG(2) + 50); Interface_SetTimer(50 + BREG(2));
} }
func_800F5ACC(NA_BGM_TIMED_MINI_GAME); func_800F5ACC(NA_BGM_TIMED_MINI_GAME);
func_8002DF54(play, NULL, 7); func_8002DF54(play, NULL, 7);
@ -506,9 +506,10 @@ void EnDivingGame_Update(Actor* thisx, PlayState* play2) {
if (1) {} if (1) {}
if (gSaveContext.timer1Value == 10) { if (gSaveContext.timerSeconds == 10) {
Audio_SetFastTempoForTimedMinigame(); Audio_SetFastTempoForTimedMinigame();
} }
if (this->eyeTimer == 0) { if (this->eyeTimer == 0) {
this->eyeTimer = 2; this->eyeTimer = 2;
this->eyeTexIndex++; this->eyeTexIndex++;

View file

@ -87,27 +87,27 @@ static char* D_809F0424[] = {
"緑のくすり売り ", "デクの棒持てる数を増やす", "デクの実持てる数を増やす", "緑のくすり売り ", "デクの棒持てる数を増やす", "デクの実持てる数を増やす",
}; };
static DnsItemEntry D_809F0450 = { 20, 5, GI_NUTS_5_2, func_809EF5A4, func_809EFA28 }; static DnsItemEntry D_809F0450 = { 20, 5, GI_DEKU_NUTS_5_2, func_809EF5A4, func_809EFA28 };
static DnsItemEntry D_809F0460 = { 15, 1, GI_STICKS_1, func_809EF658, func_809EF9F8 }; static DnsItemEntry D_809F0460 = { 15, 1, GI_DEKU_STICKS_1, func_809EF658, func_809EF9F8 };
static DnsItemEntry D_809F0470 = { 10, 1, GI_HEART_PIECE, func_809EF70C, func_809EFA58 }; static DnsItemEntry D_809F0470 = { 10, 1, GI_HEART_PIECE, func_809EF70C, func_809EFA58 };
static DnsItemEntry D_809F0480 = { 40, 30, GI_SEEDS_30, func_809EF73C, func_809EF9F8 }; static DnsItemEntry D_809F0480 = { 40, 30, GI_DEKU_SEEDS_30, func_809EF73C, func_809EF9F8 };
static DnsItemEntry D_809F0490 = { 50, 1, GI_SHIELD_DEKU, func_809EF800, func_809EF9F8 }; static DnsItemEntry D_809F0490 = { 50, 1, GI_SHIELD_DEKU, func_809EF800, func_809EF9F8 };
static DnsItemEntry D_809F04A0 = { 40, 5, GI_BOMBS_5, func_809EF854, func_809EFA9C }; static DnsItemEntry D_809F04A0 = { 40, 5, GI_BOMBS_5, func_809EF854, func_809EFA9C };
static DnsItemEntry D_809F04B0 = { 70, 20, GI_ARROWS_LARGE, func_809EF8F4, func_809EFACC }; static DnsItemEntry D_809F04B0 = { 70, 20, GI_ARROWS_30, func_809EF8F4, func_809EFACC };
static DnsItemEntry D_809F04C0 = { 40, 1, GI_POTION_RED, func_809EF9A4, func_809EF9F8 }; static DnsItemEntry D_809F04C0 = { 40, 1, GI_BOTTLE_POTION_RED, func_809EF9A4, func_809EF9F8 };
static DnsItemEntry D_809F04D0 = { 40, 1, GI_POTION_GREEN, func_809EF9A4, func_809EF9F8 }; static DnsItemEntry D_809F04D0 = { 40, 1, GI_BOTTLE_POTION_GREEN, func_809EF9A4, func_809EF9F8 };
static DnsItemEntry D_809F04E0 = { 40, 1, GI_STICK_UPGRADE_20, func_809EF70C, func_809EFAFC }; static DnsItemEntry D_809F04E0 = { 40, 1, GI_DEKU_STICK_UPGRADE_20, func_809EF70C, func_809EFAFC };
static DnsItemEntry D_809F04F0 = { 40, 1, GI_NUT_UPGRADE_30, func_809EF70C, func_809EFB40 }; static DnsItemEntry D_809F04F0 = { 40, 1, GI_DEKU_NUT_UPGRADE_30, func_809EF70C, func_809EFB40 };
static DnsItemEntry* sItemEntries[] = { static DnsItemEntry* sItemEntries[] = {
&D_809F0450, &D_809F0460, &D_809F0470, &D_809F0480, &D_809F0490, &D_809F04A0, &D_809F0450, &D_809F0460, &D_809F0470, &D_809F0480, &D_809F0490, &D_809F04A0,
@ -185,26 +185,26 @@ void EnDns_ChangeAnim(EnDns* this, u8 index) {
/* Item give checking functions */ /* Item give checking functions */
u32 func_809EF5A4(EnDns* this) { u32 func_809EF5A4(EnDns* this) {
if ((CUR_CAPACITY(UPG_NUTS) != 0) && (AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS))) { if ((CUR_CAPACITY(UPG_DEKU_NUTS) != 0) && (AMMO(ITEM_DEKU_NUT) >= CUR_CAPACITY(UPG_DEKU_NUTS))) {
return 1; return 1;
} }
if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) { if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) {
return 0; return 0;
} }
if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_DEKU_NUT) == ITEM_NONE) {
return 2; return 2;
} }
return 4; return 4;
} }
u32 func_809EF658(EnDns* this) { u32 func_809EF658(EnDns* this) {
if ((CUR_CAPACITY(UPG_STICKS) != 0) && (AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS))) { if ((CUR_CAPACITY(UPG_DEKU_STICKS) != 0) && (AMMO(ITEM_DEKU_STICK) >= CUR_CAPACITY(UPG_DEKU_STICKS))) {
return 1; return 1;
} }
if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) { if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) {
return 0; return 0;
} }
if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_DEKU_STICK) == ITEM_NONE) {
return 2; return 2;
} }
return 4; return 4;
@ -227,7 +227,7 @@ u32 func_809EF73C(EnDns* this) {
if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) { if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) {
return 0; return 0;
} }
if (Item_CheckObtainability(ITEM_SEEDS) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_DEKU_SEEDS) == ITEM_NONE) {
return 2; return 2;
} }
return 4; return 4;
@ -369,16 +369,16 @@ void EnDns_Talk(EnDns* this, PlayState* play) {
void func_809EFDD0(EnDns* this, PlayState* play) { void func_809EFDD0(EnDns* this, PlayState* play) {
if (this->actor.params == 0x9) { if (this->actor.params == 0x9) {
if (CUR_UPG_VALUE(UPG_STICKS) < 2) { if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < 2) {
func_8002F434(&this->actor, play, GI_STICK_UPGRADE_20, 130.0f, 100.0f); func_8002F434(&this->actor, play, GI_DEKU_STICK_UPGRADE_20, 130.0f, 100.0f);
} else { } else {
func_8002F434(&this->actor, play, GI_STICK_UPGRADE_30, 130.0f, 100.0f); func_8002F434(&this->actor, play, GI_DEKU_STICK_UPGRADE_30, 130.0f, 100.0f);
} }
} else if (this->actor.params == 0xA) { } else if (this->actor.params == 0xA) {
if (CUR_UPG_VALUE(UPG_NUTS) < 2) { if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < 2) {
func_8002F434(&this->actor, play, GI_NUT_UPGRADE_30, 130.0f, 100.0f); func_8002F434(&this->actor, play, GI_DEKU_NUT_UPGRADE_30, 130.0f, 100.0f);
} else { } else {
func_8002F434(&this->actor, play, GI_NUT_UPGRADE_40, 130.0f, 100.0f); func_8002F434(&this->actor, play, GI_DEKU_NUT_UPGRADE_40, 130.0f, 100.0f);
} }
} else { } else {
func_8002F434(&this->actor, play, this->dnsItemEntry->getItemId, 130.0f, 100.0f); func_8002F434(&this->actor, play, this->dnsItemEntry->getItemId, 130.0f, 100.0f);

View file

@ -184,10 +184,10 @@ void EnDntJiji_Walk(EnDntJiji* this, PlayState* play) {
this->actor.speedXZ = 3.0f; this->actor.speedXZ = 3.0f;
} }
if (this->actor.xzDistToPlayer < 100.0f) { if (this->actor.xzDistToPlayer < 100.0f) {
if (CUR_UPG_VALUE(UPG_STICKS) == 1) { if (CUR_UPG_VALUE(UPG_DEKU_STICKS) == 1) {
this->getItemId = GI_STICK_UPGRADE_20; this->getItemId = GI_DEKU_STICK_UPGRADE_20;
} else { } else {
this->getItemId = GI_STICK_UPGRADE_30; this->getItemId = GI_DEKU_STICK_UPGRADE_30;
} }
this->actor.textId = 0x104D; this->actor.textId = 0x104D;
Message_StartTextbox(play, this->actor.textId, NULL); Message_StartTextbox(play, this->actor.textId, NULL);
@ -216,10 +216,10 @@ void EnDntJiji_SetupCower(EnDntJiji* this, PlayState* play) {
EffectSsHahen_SpawnBurst(play, &this->actor.world.pos, 3.0f, 0, 9, 3, 10, HAHEN_OBJECT_DEFAULT, 10, NULL); EffectSsHahen_SpawnBurst(play, &this->actor.world.pos, 3.0f, 0, 9, 3, 10, HAHEN_OBJECT_DEFAULT, 10, NULL);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_NUTS_UP); Audio_PlayActorSfx2(&this->actor, NA_SE_EN_NUTS_UP);
if ((CUR_UPG_VALUE(UPG_NUTS) == 1) || (CUR_UPG_VALUE(UPG_NUTS) == 0)) { if ((CUR_UPG_VALUE(UPG_DEKU_NUTS) == 1) || (CUR_UPG_VALUE(UPG_DEKU_NUTS) == 0)) {
this->getItemId = GI_NUT_UPGRADE_30; this->getItemId = GI_DEKU_NUT_UPGRADE_30;
} else { } else {
this->getItemId = GI_NUT_UPGRADE_40; this->getItemId = GI_DEKU_NUT_UPGRADE_40;
} }
this->actor.flags |= ACTOR_FLAG_0; this->actor.flags |= ACTOR_FLAG_0;
this->actor.textId = 0x10DB; this->actor.textId = 0x10DB;
@ -272,7 +272,7 @@ void EnDntJiji_SetupGivePrize(EnDntJiji* this, PlayState* play) {
void EnDntJiji_GivePrize(EnDntJiji* this, PlayState* play) { void EnDntJiji_GivePrize(EnDntJiji* this, PlayState* play) {
SkelAnime_Update(&this->skelAnime); SkelAnime_Update(&this->skelAnime);
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
if ((this->getItemId == GI_NUT_UPGRADE_30) || (this->getItemId == GI_NUT_UPGRADE_40)) { if ((this->getItemId == GI_DEKU_NUT_UPGRADE_30) || (this->getItemId == GI_DEKU_NUT_UPGRADE_40)) {
// "nut" // "nut"
osSyncPrintf("\n"); osSyncPrintf("\n");
osSyncPrintf("\n"); osSyncPrintf("\n");

View file

@ -88,7 +88,7 @@ void EnDs_GiveOddPotion(EnDs* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) { if (Actor_HasParent(&this->actor, play)) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = EnDs_DisplayOddPotionText; this->actionFunc = EnDs_DisplayOddPotionText;
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
} else { } else {
func_8002F434(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_ODD_POTION, 10000.0f, 50.0f);
} }
@ -170,7 +170,7 @@ void EnDs_GiveBluePotion(EnDs* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = EnDs_Talk; this->actionFunc = EnDs_Talk;
} else { } else {
func_8002F434(&this->actor, play, GI_POTION_BLUE, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_BOTTLE_POTION_BLUE, 10000.0f, 50.0f);
} }
} }
@ -189,7 +189,7 @@ void EnDs_OfferBluePotion(EnDs* this, PlayState* play) {
case 2: // have 100 rupees and empty bottle case 2: // have 100 rupees and empty bottle
Rupees_ChangeBy(-100); Rupees_ChangeBy(-100);
this->actor.flags &= ~ACTOR_FLAG_16; this->actor.flags &= ~ACTOR_FLAG_16;
func_8002F434(&this->actor, play, GI_POTION_BLUE, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_BOTTLE_POTION_BLUE, 10000.0f, 50.0f);
this->actionFunc = EnDs_GiveBluePotion; this->actionFunc = EnDs_GiveBluePotion;
return; return;
} }

View file

@ -522,7 +522,7 @@ void func_809FEC70(EnDu* this, PlayState* play) {
} else { } else {
f32 xzRange = this->actor.xzDistToPlayer + 1.0f; f32 xzRange = this->actor.xzDistToPlayer + 1.0f;
func_8002F434(&this->actor, play, GI_BRACELET, xzRange, fabsf(this->actor.yDistToPlayer) + 1.0f); func_8002F434(&this->actor, play, GI_GORONS_BRACELET, xzRange, fabsf(this->actor.yDistToPlayer) + 1.0f);
} }
} }

View file

@ -48,7 +48,7 @@ void EnEg_Init(Actor* thisx, PlayState* play) {
} }
void func_809FFDC8(EnEg* this, PlayState* play) { void func_809FFDC8(EnEg* this, PlayState* play) {
if (!sVoided && (gSaveContext.timer2Value < 1) && Flags_GetSwitch(play, 0x36) && (kREG(0) == 0)) { if (!sVoided && (gSaveContext.subTimerSeconds <= 0) && Flags_GetSwitch(play, 0x36) && (kREG(0) == 0)) {
// Void the player out // Void the player out
Play_TriggerRespawn(play); Play_TriggerRespawn(play);
gSaveContext.respawnFlag = -2; gSaveContext.respawnFlag = -2;

View file

@ -285,11 +285,11 @@ void func_80A2F83C(EnGb* this, PlayState* play) {
func_80A2F180(this); func_80A2F180(this);
this->actionFunc = func_80A2F94C; this->actionFunc = func_80A2F94C;
break; break;
case EXCH_ITEM_POE: case EXCH_ITEM_BOTTLE_POE:
player->actor.textId = 0x70F6; player->actor.textId = 0x70F6;
this->actionFunc = func_80A2F9C0; this->actionFunc = func_80A2F9C0;
break; break;
case EXCH_ITEM_BIG_POE: case EXCH_ITEM_BOTTLE_BIG_POE:
player->actor.textId = 0x70F7; player->actor.textId = 0x70F7;
this->actionFunc = func_80A2FA50; this->actionFunc = func_80A2FA50;
break; break;
@ -297,7 +297,7 @@ void func_80A2F83C(EnGb* this, PlayState* play) {
return; return;
} }
if (this->dyna.actor.xzDistToPlayer < 100.0f) { if (this->dyna.actor.xzDistToPlayer < 100.0f) {
func_8002F298(&this->dyna.actor, play, 100.0f, EXCH_ITEM_POE); func_8002F298(&this->dyna.actor, play, 100.0f, EXCH_ITEM_BOTTLE_POE);
} }
} }
@ -317,7 +317,7 @@ void func_80A2F9C0(EnGb* this, PlayState* play) {
SET_INFTABLE(INFTABLE_B6); SET_INFTABLE(INFTABLE_B6);
} }
func_80A2F180(this); func_80A2F180(this);
Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
Rupees_ChangeBy(10); Rupees_ChangeBy(10);
this->actionFunc = func_80A2F83C; this->actionFunc = func_80A2F83C;
} }
@ -329,7 +329,7 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
SET_INFTABLE(INFTABLE_B6); SET_INFTABLE(INFTABLE_B6);
} }
func_80A2F180(this); func_80A2F180(this);
Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
Rupees_ChangeBy(50); Rupees_ChangeBy(50);
HIGH_SCORE(HS_POE_POINTS) += 100; HIGH_SCORE(HS_POE_POINTS) += 100;
if (HIGH_SCORE(HS_POE_POINTS) != 1000) { if (HIGH_SCORE(HS_POE_POINTS) != 1000) {
@ -350,7 +350,7 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
void func_80A2FB40(EnGb* this, PlayState* play) { void func_80A2FB40(EnGb* this, PlayState* play) {
if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_DONE && Message_ShouldAdvance(play)) {
func_8002F434(&this->dyna.actor, play, GI_BOTTLE, 100.0f, 10.0f); func_8002F434(&this->dyna.actor, play, GI_BOTTLE_EMPTY, 100.0f, 10.0f);
this->actionFunc = func_80A2FBB0; this->actionFunc = func_80A2FBB0;
} }
} }
@ -360,7 +360,7 @@ void func_80A2FBB0(EnGb* this, PlayState* play) {
this->dyna.actor.parent = NULL; this->dyna.actor.parent = NULL;
this->actionFunc = func_80A2FC0C; this->actionFunc = func_80A2FC0C;
} else { } else {
func_8002F434(&this->dyna.actor, play, GI_BOTTLE, 100.0f, 10.0f); func_8002F434(&this->dyna.actor, play, GI_BOTTLE_EMPTY, 100.0f, 10.0f);
} }
} }

View file

@ -389,7 +389,7 @@ void EnGe1_RefuseOpenNoCard_GTGGuard(EnGe1* this, PlayState* play) {
} }
void EnGe1_CheckForCard_GTGGuard(EnGe1* this, PlayState* play) { void EnGe1_CheckForCard_GTGGuard(EnGe1* this, PlayState* play) {
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) { if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
EnGe1_SetTalkAction(this, play, 0x6014, 100.0f, EnGe1_OfferOpen_GTGGuard); EnGe1_SetTalkAction(this, play, 0x6014, 100.0f, EnGe1_OfferOpen_GTGGuard);
} else { } else {
//! @bug This outcome is inaccessible in normal gameplay since this function it is unreachable without //! @bug This outcome is inaccessible in normal gameplay since this function it is unreachable without

View file

@ -451,7 +451,7 @@ void EnGe2_WaitTillCardGiven(EnGe2* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = EnGe2_SetActionAfterTalk; this->actionFunc = EnGe2_SetActionAfterTalk;
} else { } else {
func_8002F434(&this->actor, play, GI_GERUDO_CARD, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
} }
} }
@ -460,7 +460,7 @@ void EnGe2_GiveCard(EnGe2* this, PlayState* play) {
Message_CloseTextbox(play); Message_CloseTextbox(play);
this->actor.flags &= ~ACTOR_FLAG_16; this->actor.flags &= ~ACTOR_FLAG_16;
this->actionFunc = EnGe2_WaitTillCardGiven; this->actionFunc = EnGe2_WaitTillCardGiven;
func_8002F434(&this->actor, play, GI_GERUDO_CARD, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
} }
} }

View file

@ -141,7 +141,7 @@ void EnGe3_WaitTillCardGiven(EnGe3* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = EnGe3_Wait; this->actionFunc = EnGe3_Wait;
} else { } else {
func_8002F434(&this->actor, play, GI_GERUDO_CARD, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
} }
} }
@ -150,7 +150,7 @@ void EnGe3_GiveCard(EnGe3* this, PlayState* play) {
Message_CloseTextbox(play); Message_CloseTextbox(play);
this->actor.flags &= ~ACTOR_FLAG_16; this->actor.flags &= ~ACTOR_FLAG_16;
this->actionFunc = EnGe3_WaitTillCardGiven; this->actionFunc = EnGe3_WaitTillCardGiven;
func_8002F434(&this->actor, play, GI_GERUDO_CARD, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_GERUDOS_CARD, 10000.0f, 50.0f);
} }
} }

View file

@ -133,7 +133,7 @@ static char* sShopItemDescriptions[] = {
}; };
static s16 sMaskShopItems[8] = { static s16 sMaskShopItems[8] = {
ITEM_MASK_KEATON, ITEM_MASK_SPOOKY, ITEM_MASK_SKULL, ITEM_MASK_BUNNY, ITEM_MASK_KEATON, ITEM_MASK_SPOOKY, ITEM_MASK_SKULL, ITEM_MASK_BUNNY_HOOD,
ITEM_MASK_TRUTH, ITEM_MASK_ZORA, ITEM_MASK_GORON, ITEM_MASK_GERUDO, ITEM_MASK_TRUTH, ITEM_MASK_ZORA, ITEM_MASK_GORON, ITEM_MASK_GERUDO,
}; };
@ -155,40 +155,40 @@ typedef struct {
static ShopItemEntry shopItemEntries[] = { static ShopItemEntry shopItemEntries[] = {
// SI_DEKU_NUTS_5 // SI_DEKU_NUTS_5
{ OBJECT_GI_NUTS, GID_NUTS, func_8002ED80, 15, 5, 0x00B2, 0x007F, GI_NUTS_5_2, EnGirlA_CanBuy_DekuNuts, { OBJECT_GI_NUTS, GID_DEKU_NUTS, func_8002ED80, 15, 5, 0x00B2, 0x007F, GI_DEKU_NUTS_5_2, EnGirlA_CanBuy_DekuNuts,
EnGirlA_ItemGive_DekuNuts, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_DekuNuts, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_ARROWS_30 */ /* SI_ARROWS_30 */
{ OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, func_8002EBCC, 60, 30, 0x00C1, 0x009B, GI_ARROWS_MEDIUM, { OBJECT_GI_ARROW, GID_ARROWS_10, func_8002EBCC, 60, 30, 0x00C1, 0x009B, GI_ARROWS_10, EnGirlA_CanBuy_Arrows,
EnGirlA_CanBuy_Arrows, EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_ARROWS_50 */ /* SI_ARROWS_50 */
{ OBJECT_GI_ARROW, GID_ARROWS_LARGE, func_8002EBCC, 90, 50, 0x00B0, 0x007D, GI_ARROWS_LARGE, EnGirlA_CanBuy_Arrows, { OBJECT_GI_ARROW, GID_ARROWS_30, func_8002EBCC, 90, 50, 0x00B0, 0x007D, GI_ARROWS_30, EnGirlA_CanBuy_Arrows,
EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BOMBS_5_R25 */ /* SI_BOMBS_5_R25 */
{ OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 25, 5, 0x00A3, 0x008B, GI_BOMBS_5, EnGirlA_CanBuy_Bombs, { OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 25, 5, 0x00A3, 0x008B, GI_BOMBS_5, EnGirlA_CanBuy_Bombs,
EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_DEKU_NUTS_10 */ /* SI_DEKU_NUTS_10 */
{ OBJECT_GI_NUTS, GID_NUTS, func_8002ED80, 30, 10, 0x00A2, 0x0087, GI_NUTS_10, EnGirlA_CanBuy_DekuNuts, { OBJECT_GI_NUTS, GID_DEKU_NUTS, func_8002ED80, 30, 10, 0x00A2, 0x0087, GI_DEKU_NUTS_10, EnGirlA_CanBuy_DekuNuts,
EnGirlA_ItemGive_DekuNuts, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_DekuNuts, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_DEKU_STICK */ /* SI_DEKU_STICK */
{ OBJECT_GI_STICK, GID_STICK, NULL, 10, 1, 0x00A1, 0x0088, GI_STICKS_1, EnGirlA_CanBuy_DekuSticks, { OBJECT_GI_STICK, GID_DEKU_STICK, NULL, 10, 1, 0x00A1, 0x0088, GI_DEKU_STICKS_1, EnGirlA_CanBuy_DekuSticks,
EnGirlA_ItemGive_DekuSticks, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_DekuSticks, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BOMBS_10 */ /* SI_BOMBS_10 */
{ OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 50, 10, 0x00B1, 0x007C, GI_BOMBS_10, EnGirlA_CanBuy_Bombs, { OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 50, 10, 0x00B1, 0x007C, GI_BOMBS_10, EnGirlA_CanBuy_Bombs,
EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_FISH */ /* SI_FISH */
{ OBJECT_GI_FISH, GID_FISH, func_8002ED80, 200, 1, 0x00B3, 0x007E, GI_FISH, EnGirlA_CanBuy_Fish, NULL, { OBJECT_GI_FISH, GID_FISH, func_8002ED80, 200, 1, 0x00B3, 0x007E, GI_BOTTLE_FISH, EnGirlA_CanBuy_Fish, NULL,
EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_RED_POTION_R30 */ /* SI_RED_POTION_R30 */
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_8002EBCC, 30, 1, 0x00A5, 0x008E, GI_POTION_RED, EnGirlA_CanBuy_RedPotion, { OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, func_8002EBCC, 30, 1, 0x00A5, 0x008E, GI_BOTTLE_POTION_RED,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_RedPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_GREEN_POTION */ /* SI_GREEN_POTION */
{ OBJECT_GI_LIQUID, GID_POTION_GREEN, func_8002EBCC, 30, 1, 0x00A6, 0x008F, GI_POTION_GREEN, { OBJECT_GI_LIQUID, GID_BOTTLE_POTION_GREEN, func_8002EBCC, 30, 1, 0x00A6, 0x008F, GI_BOTTLE_POTION_GREEN,
EnGirlA_CanBuy_GreenPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_GreenPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BLUE_POTION */ /* SI_BLUE_POTION */
{ OBJECT_GI_LIQUID, GID_POTION_BLUE, func_8002EBCC, 60, 1, 0x00A7, 0x0090, GI_POTION_BLUE, { OBJECT_GI_LIQUID, GID_BOTTLE_POTION_BLUE, func_8002EBCC, 60, 1, 0x00A7, 0x0090, GI_BOTTLE_POTION_BLUE,
EnGirlA_CanBuy_BluePotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_BluePotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_LONGSWORD */ /* SI_LONGSWORD */
{ OBJECT_GI_LONGSWORD, GID_SWORD_BGS, func_8002EBCC, 1000, 1, 0x00A8, 0x0091, GI_SWORD_KNIFE, { OBJECT_GI_LONGSWORD, GID_SWORD_BIGGORON, func_8002EBCC, 1000, 1, 0x00A8, 0x0091, GI_SWORD_KNIFE,
EnGirlA_CanBuy_Longsword, EnGirlA_ItemGive_Longsword, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_Longsword, EnGirlA_ItemGive_Longsword, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_HYLIAN_SHIELD */ /* SI_HYLIAN_SHIELD */
{ OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, func_8002EBCC, 80, 1, 0x00A9, 0x0092, GI_SHIELD_HYLIAN, { OBJECT_GI_SHIELD_2, GID_SHIELD_HYLIAN, func_8002EBCC, 80, 1, 0x00A9, 0x0092, GI_SHIELD_HYLIAN,
@ -206,13 +206,13 @@ static ShopItemEntry shopItemEntries[] = {
{ OBJECT_GI_HEART, GID_RECOVERY_HEART, NULL, 10, 16, 0x00AC, 0x0095, GI_RECOVERY_HEART, { OBJECT_GI_HEART, GID_RECOVERY_HEART, NULL, 10, 16, 0x00AC, 0x0095, GI_RECOVERY_HEART,
EnGirlA_CanBuy_RecoveryHeart, EnGirlA_ItemGive_Health, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_RecoveryHeart, EnGirlA_ItemGive_Health, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_MILK_BOTTLE */ /* SI_MILK_BOTTLE */
{ OBJECT_GI_MILK, GID_MILK, func_80A3C498, 100, 1, 0x00AD, 0x0097, GI_MILK_BOTTLE, EnGirlA_CanBuy_MilkBottle, { OBJECT_GI_MILK, GID_BOTTLE_MILK_FULL, func_80A3C498, 100, 1, 0x00AD, 0x0097, GI_BOTTLE_MILK_FULL,
EnGirlA_ItemGive_MilkBottle, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_MilkBottle, EnGirlA_ItemGive_MilkBottle, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_WEIRD_EGG */ /* SI_WEIRD_EGG */
{ OBJECT_GI_EGG, GID_EGG, func_8002EBCC, 100, 1, 0x00AE, 0x0099, GI_WEIRD_EGG, EnGirlA_CanBuy_WeirdEgg, { OBJECT_GI_EGG, GID_EGG, func_8002EBCC, 100, 1, 0x00AE, 0x0099, GI_WEIRD_EGG, EnGirlA_CanBuy_WeirdEgg,
EnGirlA_ItemGive_WeirdEgg, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_WeirdEgg, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_19 */ /* SI_19 */
{ OBJECT_GI_MILK, GID_MILK, func_80A3C498, 10000, 1, 0x00B4, 0x0085, GI_NONE, EnGirlA_CanBuy_Unk19, { OBJECT_GI_MILK, GID_BOTTLE_MILK_FULL, func_80A3C498, 10000, 1, 0x00B4, 0x0085, GI_NONE, EnGirlA_CanBuy_Unk19,
EnGirlA_ItemGive_Unk19, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Unk19, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_20 */ /* SI_20 */
{ OBJECT_GI_EGG, GID_EGG, func_8002EBCC, 10000, 1, 0x00B5, 0x0085, GI_NONE, EnGirlA_CanBuy_Unk20, { OBJECT_GI_EGG, GID_EGG, func_8002EBCC, 10000, 1, 0x00B5, 0x0085, GI_NONE, EnGirlA_CanBuy_Unk20,
@ -242,7 +242,7 @@ static ShopItemEntry shopItemEntries[] = {
{ OBJECT_GI_BOMB_2, GID_BOMBCHU, func_8002EBCC, 100, 10, 0x00BC, 0x008C, GI_BOMBCHUS_10, EnGirlA_CanBuy_Bombchus, { OBJECT_GI_BOMB_2, GID_BOMBCHU, func_8002EBCC, 100, 10, 0x00BC, 0x008C, GI_BOMBCHUS_10, EnGirlA_CanBuy_Bombchus,
NULL, EnGirlA_BuyEvent_ObtainBombchuPack }, NULL, EnGirlA_BuyEvent_ObtainBombchuPack },
/* SI_DEKU_SEEDS_30 */ /* SI_DEKU_SEEDS_30 */
{ OBJECT_GI_SEED, GID_SEEDS, func_8002EBCC, 30, 30, 0x00DF, 0x00DE, GI_SEEDS_30, EnGirlA_CanBuy_DekuSeeds, { OBJECT_GI_SEED, GID_DEKU_SEEDS, func_8002EBCC, 30, 30, 0x00DF, 0x00DE, GI_DEKU_SEEDS_30, EnGirlA_CanBuy_DekuSeeds,
EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_KEATON_MASK */ /* SI_KEATON_MASK */
{ OBJECT_GI_KI_TAN_MASK, GID_MASK_KEATON, func_8002EBCC, 0, 1, 0x70B2, 0x70BE, GI_MASK_KEATON, { OBJECT_GI_KI_TAN_MASK, GID_MASK_KEATON, func_8002EBCC, 0, 1, 0x70B2, 0x70BE, GI_MASK_KEATON,
@ -254,7 +254,7 @@ static ShopItemEntry shopItemEntries[] = {
{ OBJECT_GI_SKJ_MASK, GID_MASK_SKULL, func_8002EBCC, 0, 1, 0x70B0, 0x70BC, GI_MASK_SKULL, EnGirlA_CanBuy_DekuSeeds, { OBJECT_GI_SKJ_MASK, GID_MASK_SKULL, func_8002EBCC, 0, 1, 0x70B0, 0x70BC, GI_MASK_SKULL, EnGirlA_CanBuy_DekuSeeds,
EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BUNNY_HOOD */ /* SI_BUNNY_HOOD */
{ OBJECT_GI_RABIT_MASK, GID_MASK_BUNNY, func_8002EBCC, 0, 1, 0x70B3, 0x70BF, GI_MASK_BUNNY, { OBJECT_GI_RABIT_MASK, GID_MASK_BUNNY_HOOD, func_8002EBCC, 0, 1, 0x70B3, 0x70BF, GI_MASK_BUNNY_HOOD,
EnGirlA_CanBuy_DekuSeeds, EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_DekuSeeds, EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_MASK_OF_TRUTH */ /* SI_MASK_OF_TRUTH */
{ OBJECT_GI_TRUTH_MASK, GID_MASK_TRUTH, func_80A3C498, 0, 1, 0x70AF, 0x70C3, GI_MASK_TRUTH, { OBJECT_GI_TRUTH_MASK, GID_MASK_TRUTH, func_80A3C498, 0, 1, 0x70AF, 0x70C3, GI_MASK_TRUTH,
@ -272,22 +272,22 @@ static ShopItemEntry shopItemEntries[] = {
{ OBJECT_GI_SOLDOUT, GID_SOLDOUT, func_8002EBCC, 0, 0, 0x00BD, 0x70C2, GI_MASK_GERUDO, EnGirlA_CanBuy_SoldOut, NULL, { OBJECT_GI_SOLDOUT, GID_SOLDOUT, func_8002EBCC, 0, 0, 0x00BD, 0x70C2, GI_MASK_GERUDO, EnGirlA_CanBuy_SoldOut, NULL,
NULL }, NULL },
/* SI_BLUE_FIRE */ /* SI_BLUE_FIRE */
{ OBJECT_GI_FIRE, GID_BLUE_FIRE, func_8002EBCC, 300, 1, 0x00B9, 0x00B8, GI_BLUE_FIRE, EnGirlA_CanBuy_BlueFire, { OBJECT_GI_FIRE, GID_BLUE_FIRE, func_8002EBCC, 300, 1, 0x00B9, 0x00B8, GI_BOTTLE_BLUE_FIRE,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_BlueFire, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BUGS */ /* SI_BUGS */
{ OBJECT_GI_INSECT, GID_BUG, func_80A3C498, 50, 1, 0x00BB, 0x00BA, GI_BUGS, EnGirlA_CanBuy_Bugs, { OBJECT_GI_INSECT, GID_BUG, func_80A3C498, 50, 1, 0x00BB, 0x00BA, GI_BOTTLE_BUGS, EnGirlA_CanBuy_Bugs,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BIG_POE */ /* SI_BIG_POE */
{ OBJECT_GI_GHOST, GID_BIG_POE, func_80A3C498, 50, 1, 0x506F, 0x5070, GI_BIG_POE, EnGirlA_CanBuy_Poe, { OBJECT_GI_GHOST, GID_BIG_POE, func_80A3C498, 50, 1, 0x506F, 0x5070, GI_BOTTLE_BIG_POE, EnGirlA_CanBuy_Poe,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_POE */ /* SI_POE */
{ OBJECT_GI_GHOST, GID_POE, func_80A3C498, 30, 1, 0x506D, 0x506E, GI_POE, EnGirlA_CanBuy_Poe, { OBJECT_GI_GHOST, GID_POE, func_80A3C498, 30, 1, 0x506D, 0x506E, GI_BOTTLE_POE, EnGirlA_CanBuy_Poe,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_FAIRY */ /* SI_FAIRY */
{ OBJECT_GI_SOUL, GID_FAIRY, func_80A3C498, 50, 1, 0x00B7, 0x00B6, GI_FAIRY, EnGirlA_CanBuy_Fairy, { OBJECT_GI_SOUL, GID_FAIRY, func_80A3C498, 50, 1, 0x00B7, 0x00B6, GI_BOTTLE_FAIRY, EnGirlA_CanBuy_Fairy,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_ARROWS_10 */ /* SI_ARROWS_10 */
{ OBJECT_GI_ARROW, GID_ARROWS_SMALL, func_8002EBCC, 20, 10, 0x00A0, 0x008A, GI_ARROWS_SMALL, EnGirlA_CanBuy_Arrows, { OBJECT_GI_ARROW, GID_ARROWS_5, func_8002EBCC, 20, 10, 0x00A0, 0x008A, GI_ARROWS_5, EnGirlA_CanBuy_Arrows,
EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_BOMBS_20 */ /* SI_BOMBS_20 */
{ OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 80, 20, 0x001C, 0x0006, GI_BOMBS_20, EnGirlA_CanBuy_Bombs, { OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 80, 20, 0x001C, 0x0006, GI_BOMBS_20, EnGirlA_CanBuy_Bombs,
@ -299,11 +299,11 @@ static ShopItemEntry shopItemEntries[] = {
{ OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 35, 5, 0x00CB, 0x00CA, GI_BOMBS_5, EnGirlA_CanBuy_Bombs, { OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 35, 5, 0x00CB, 0x00CA, GI_BOMBS_5, EnGirlA_CanBuy_Bombs,
EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_RED_POTION_R40 */ /* SI_RED_POTION_R40 */
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_8002EBCC, 40, 1, 0x0064, 0x0062, GI_POTION_RED, EnGirlA_CanBuy_RedPotion, { OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, func_8002EBCC, 40, 1, 0x0064, 0x0062, GI_BOTTLE_POTION_RED,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }, EnGirlA_CanBuy_RedPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
/* SI_RED_POTION_R50 */ /* SI_RED_POTION_R50 */
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_8002EBCC, 50, 1, 0x0065, 0x0063, GI_POTION_RED, EnGirlA_CanBuy_RedPotion, { OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, func_8002EBCC, 50, 1, 0x0065, 0x0063, GI_BOTTLE_POTION_RED,
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount } EnGirlA_CanBuy_RedPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }
}; };
// Defines the Hylian Shield discount amount // Defines the Hylian Shield discount amount
@ -445,26 +445,26 @@ s32 EnGirlA_CanBuy_Bombs(PlayState* play, EnGirlA* this) {
} }
s32 EnGirlA_CanBuy_DekuNuts(PlayState* play, EnGirlA* this) { s32 EnGirlA_CanBuy_DekuNuts(PlayState* play, EnGirlA* this) {
if ((CUR_CAPACITY(UPG_NUTS) != 0) && (AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS))) { if ((CUR_CAPACITY(UPG_DEKU_NUTS) != 0) && (AMMO(ITEM_DEKU_NUT) >= CUR_CAPACITY(UPG_DEKU_NUTS))) {
return CANBUY_RESULT_CANT_GET_NOW; return CANBUY_RESULT_CANT_GET_NOW;
} }
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_DEKU_NUT) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
} }
s32 EnGirlA_CanBuy_DekuSticks(PlayState* play, EnGirlA* this) { s32 EnGirlA_CanBuy_DekuSticks(PlayState* play, EnGirlA* this) {
if ((CUR_CAPACITY(UPG_STICKS) != 0) && (AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS))) { if ((CUR_CAPACITY(UPG_DEKU_STICKS) != 0) && (AMMO(ITEM_DEKU_STICK) >= CUR_CAPACITY(UPG_DEKU_STICKS))) {
return CANBUY_RESULT_CANT_GET_NOW; return CANBUY_RESULT_CANT_GET_NOW;
} }
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_DEKU_STICK) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -477,7 +477,7 @@ s32 EnGirlA_CanBuy_Fish(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_FISH) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_FISH) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -490,7 +490,7 @@ s32 EnGirlA_CanBuy_RedPotion(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_POTION_RED) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_POTION_RED) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -503,7 +503,7 @@ s32 EnGirlA_CanBuy_GreenPotion(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_POTION_GREEN) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_POTION_GREEN) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -516,7 +516,7 @@ s32 EnGirlA_CanBuy_BluePotion(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_POTION_BLUE) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_POTION_BLUE) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -530,7 +530,7 @@ s32 EnGirlA_CanBuy_Longsword(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_SWORD_BGS) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_SWORD_BIGGORON) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -608,7 +608,7 @@ s32 EnGirlA_CanBuy_MilkBottle(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_MILK_BOTTLE) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_MILK_FULL) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -618,7 +618,7 @@ s32 EnGirlA_CanBuy_WeirdEgg(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_LETTER_ZELDA) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_ZELDAS_LETTER) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -652,7 +652,7 @@ s32 EnGirlA_CanBuy_DekuSeeds(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_SEEDS) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_DEKU_SEEDS) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -669,7 +669,7 @@ s32 EnGirlA_CanBuy_BlueFire(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_BLUE_FIRE) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_BLUE_FIRE) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -682,7 +682,7 @@ s32 EnGirlA_CanBuy_Bugs(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_BUG) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_BUG) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -695,7 +695,7 @@ s32 EnGirlA_CanBuy_Poe(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_POE) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_POE) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -708,7 +708,7 @@ s32 EnGirlA_CanBuy_Fairy(PlayState* play, EnGirlA* this) {
if (gSaveContext.rupees < this->basePrice) { if (gSaveContext.rupees < this->basePrice) {
return CANBUY_RESULT_NEED_RUPEES; return CANBUY_RESULT_NEED_RUPEES;
} }
if (Item_CheckObtainability(ITEM_FAIRY) == ITEM_NONE) { if (Item_CheckObtainability(ITEM_BOTTLE_FAIRY) == ITEM_NONE) {
return CANBUY_RESULT_SUCCESS_FANFARE; return CANBUY_RESULT_SUCCESS_FANFARE;
} }
return CANBUY_RESULT_SUCCESS; return CANBUY_RESULT_SUCCESS;
@ -740,17 +740,17 @@ void EnGirlA_ItemGive_Bombs(PlayState* play, EnGirlA* this) {
void EnGirlA_ItemGive_DekuNuts(PlayState* play, EnGirlA* this) { void EnGirlA_ItemGive_DekuNuts(PlayState* play, EnGirlA* this) {
switch (this->itemCount) { switch (this->itemCount) {
case 5: case 5:
Item_Give(play, ITEM_NUTS_5); Item_Give(play, ITEM_DEKU_NUTS_5);
break; break;
case 10: case 10:
Item_Give(play, ITEM_NUTS_10); Item_Give(play, ITEM_DEKU_NUTS_10);
break; break;
} }
Rupees_ChangeBy(-this->basePrice); Rupees_ChangeBy(-this->basePrice);
} }
void EnGirlA_ItemGive_DekuSticks(PlayState* play, EnGirlA* this) { void EnGirlA_ItemGive_DekuSticks(PlayState* play, EnGirlA* this) {
Item_Give(play, ITEM_STICK); Item_Give(play, ITEM_DEKU_STICK);
Rupees_ChangeBy(-this->basePrice); Rupees_ChangeBy(-this->basePrice);
} }
@ -786,7 +786,7 @@ void EnGirlA_ItemGive_Health(PlayState* play, EnGirlA* this) {
} }
void EnGirlA_ItemGive_MilkBottle(PlayState* play, EnGirlA* this) { void EnGirlA_ItemGive_MilkBottle(PlayState* play, EnGirlA* this) {
Item_Give(play, ITEM_MILK_BOTTLE); Item_Give(play, ITEM_BOTTLE_MILK_FULL);
Rupees_ChangeBy(-this->basePrice); Rupees_ChangeBy(-this->basePrice);
} }
@ -804,38 +804,38 @@ void EnGirlA_ItemGive_Unk20(PlayState* play, EnGirlA* this) {
} }
void EnGirlA_ItemGive_DekuSeeds(PlayState* play, EnGirlA* this) { void EnGirlA_ItemGive_DekuSeeds(PlayState* play, EnGirlA* this) {
Item_Give(play, ITEM_SEEDS_30); Item_Give(play, ITEM_DEKU_SEEDS_30);
Rupees_ChangeBy(-this->basePrice); Rupees_ChangeBy(-this->basePrice);
} }
void EnGirlA_ItemGive_BottledItem(PlayState* play, EnGirlA* this) { void EnGirlA_ItemGive_BottledItem(PlayState* play, EnGirlA* this) {
switch (this->actor.params) { switch (this->actor.params) {
case SI_FISH: case SI_FISH:
Item_Give(play, ITEM_FISH); Item_Give(play, ITEM_BOTTLE_FISH);
break; break;
case SI_RED_POTION_R30: case SI_RED_POTION_R30:
Item_Give(play, ITEM_POTION_RED); Item_Give(play, ITEM_BOTTLE_POTION_RED);
break; break;
case SI_GREEN_POTION: case SI_GREEN_POTION:
Item_Give(play, ITEM_POTION_GREEN); Item_Give(play, ITEM_BOTTLE_POTION_GREEN);
break; break;
case SI_BLUE_POTION: case SI_BLUE_POTION:
Item_Give(play, ITEM_POTION_BLUE); Item_Give(play, ITEM_BOTTLE_POTION_BLUE);
break; break;
case SI_BLUE_FIRE: case SI_BLUE_FIRE:
Item_Give(play, ITEM_BLUE_FIRE); Item_Give(play, ITEM_BOTTLE_BLUE_FIRE);
break; break;
case SI_BUGS: case SI_BUGS:
Item_Give(play, ITEM_BUG); Item_Give(play, ITEM_BOTTLE_BUG);
break; break;
case SI_BIG_POE: case SI_BIG_POE:
Item_Give(play, ITEM_BIG_POE); Item_Give(play, ITEM_BOTTLE_BIG_POE);
break; break;
case SI_POE: case SI_POE:
Item_Give(play, ITEM_POE); Item_Give(play, ITEM_BOTTLE_POE);
break; break;
case SI_FAIRY: case SI_FAIRY:
Item_Give(play, ITEM_FAIRY); Item_Give(play, ITEM_BOTTLE_FAIRY);
break; break;
} }
Rupees_ChangeBy(-this->basePrice); Rupees_ChangeBy(-this->basePrice);

View file

@ -101,13 +101,13 @@ u16 EnGo_GetTextID(PlayState* play, Actor* thisx) {
} else { } else {
return 0x305D; return 0x305D;
} }
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_EYEDROPS) { } else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_EYE_DROPS) {
player->exchangeItemId = EXCH_ITEM_EYEDROPS; player->exchangeItemId = EXCH_ITEM_EYE_DROPS;
return 0x3059; return 0x3059;
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) { } else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) {
return 0x3058; return 0x3058;
} else { } else {
player->exchangeItemId = EXCH_ITEM_SWORD_BROKEN; player->exchangeItemId = EXCH_ITEM_BROKEN_GORONS_SWORD;
return 0x3053; return 0x3053;
} }
case 0x00: case 0x00:
@ -593,8 +593,8 @@ void func_80A3F908(EnGo* this, PlayState* play) {
} }
if (((this->actor.params & 0xF0) == 0x90) && (isUnkCondition == true)) { if (((this->actor.params & 0xF0) == 0x90) && (isUnkCondition == true)) {
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_SWORD_BROKEN) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_BROKEN_GORONS_SWORD) {
if (func_8002F368(play) == EXCH_ITEM_SWORD_BROKEN) { if (func_8002F368(play) == EXCH_ITEM_BROKEN_GORONS_SWORD) {
if (GET_INFTABLE(INFTABLE_B4)) { if (GET_INFTABLE(INFTABLE_B4)) {
this->actor.textId = 0x3055; this->actor.textId = 0x3055;
} else { } else {
@ -606,8 +606,8 @@ void func_80A3F908(EnGo* this, PlayState* play) {
player->actor.textId = this->actor.textId; player->actor.textId = this->actor.textId;
} }
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEDROPS) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYE_DROPS) {
if (func_8002F368(play) == EXCH_ITEM_EYEDROPS) { if (func_8002F368(play) == EXCH_ITEM_EYE_DROPS) {
this->actor.textId = 0x3059; this->actor.textId = 0x3059;
} else { } else {
this->actor.textId = 0x3058; this->actor.textId = 0x3058;
@ -859,13 +859,13 @@ void EnGo_BiggoronActionFunc(EnGo* this, PlayState* play) {
if (gSaveContext.bgsFlag) { if (gSaveContext.bgsFlag) {
this->unk_1E0.unk_00 = 0; this->unk_1E0.unk_00 = 0;
} else { } else {
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEDROPS) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYE_DROPS) {
EnGo_ChangeAnim(this, ENGO_ANIM_2); EnGo_ChangeAnim(this, ENGO_ANIM_2);
this->unk_21E = 100; this->unk_21E = 100;
this->unk_1E0.unk_00 = 0; this->unk_1E0.unk_00 = 0;
EnGo_SetupAction(this, EnGo_Eyedrops); EnGo_SetupAction(this, EnGo_Eyedrops);
play->msgCtx.msgMode = MSGMODE_PAUSED; play->msgCtx.msgMode = MSGMODE_PAUSED;
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
OnePointCutscene_Init(play, 4190, -99, &this->actor, CAM_ID_MAIN); OnePointCutscene_Init(play, 4190, -99, &this->actor, CAM_ID_MAIN);
} else { } else {
this->unk_1E0.unk_00 = 0; this->unk_1E0.unk_00 = 0;
@ -954,13 +954,13 @@ void EnGo_GetItem(EnGo* this, PlayState* play) {
this->unk_20C = 0; this->unk_20C = 0;
if ((this->actor.params & 0xF0) == 0x90) { if ((this->actor.params & 0xF0) == 0x90) {
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_CLAIM_CHECK) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_CLAIM_CHECK) {
getItemId = GI_SWORD_BGS; getItemId = GI_SWORD_BIGGORON;
this->unk_20C = 1; this->unk_20C = 1;
} }
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEDROPS) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYE_DROPS) {
getItemId = GI_CLAIM_CHECK; getItemId = GI_CLAIM_CHECK;
} }
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_SWORD_BROKEN) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_BROKEN_GORONS_SWORD) {
getItemId = GI_PRESCRIPTION; getItemId = GI_PRESCRIPTION;
} }
} }

View file

@ -569,10 +569,10 @@ u16 EnGo2_GetTextIdGoronDmtBiggoron(PlayState* play, EnGo2* this) {
player->exchangeItemId = EXCH_ITEM_CLAIM_CHECK; player->exchangeItemId = EXCH_ITEM_CLAIM_CHECK;
return 0x305E; return 0x305E;
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) { } else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) {
player->exchangeItemId = EXCH_ITEM_EYEDROPS; player->exchangeItemId = EXCH_ITEM_EYE_DROPS;
return 0x3058; return 0x3058;
} else { } else {
player->exchangeItemId = EXCH_ITEM_SWORD_BROKEN; player->exchangeItemId = EXCH_ITEM_BROKEN_GORONS_SWORD;
return 0x3053; return 0x3053;
} }
} }
@ -585,7 +585,7 @@ s16 EnGo2_GetStateGoronDmtBiggoron(PlayState* play, EnGo2* this) {
case TEXT_STATE_DONE: case TEXT_STATE_DONE:
if (this->actor.textId == 0x305E) { if (this->actor.textId == 0x305E) {
if (!gSaveContext.bgsFlag) { if (!gSaveContext.bgsFlag) {
EnGo2_GetItem(this, play, GI_SWORD_BGS); EnGo2_GetItem(this, play, GI_SWORD_BIGGORON);
this->actionFunc = EnGo2_SetupGetItem; this->actionFunc = EnGo2_SetupGetItem;
return 2; return 2;
} else { } else {
@ -1056,18 +1056,18 @@ void EnGo2_BiggoronSetTextId(EnGo2* this, PlayState* play, Player* player) {
} else if ((INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) && } else if ((INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) &&
(INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_CLAIM_CHECK)) { (INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_CLAIM_CHECK)) {
if (func_8002F368(play) == EXCH_ITEM_EYEDROPS) { if (func_8002F368(play) == EXCH_ITEM_EYE_DROPS) {
this->actor.textId = 0x3059; this->actor.textId = 0x3059;
} else { } else {
this->actor.textId = 0x3058; this->actor.textId = 0x3058;
} }
if (this->actor.textId == 0x3059) { if (this->actor.textId == 0x3059) {
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
} }
player->actor.textId = this->actor.textId; player->actor.textId = this->actor.textId;
} else if (INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_SWORD_BROKEN) { } else if (INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_BROKEN_GORONS_SWORD) {
if (func_8002F368(play) == EXCH_ITEM_SWORD_BROKEN) { if (func_8002F368(play) == EXCH_ITEM_BROKEN_GORONS_SWORD) {
if (GET_INFTABLE(INFTABLE_B4)) { if (GET_INFTABLE(INFTABLE_B4)) {
textId = 0x3055; textId = 0x3055;
} else { } else {
@ -1132,7 +1132,8 @@ void func_80A454CC(EnGo2* this) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_9); Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_9);
break; break;
case GORON_DMT_BIGGORON: case GORON_DMT_BIGGORON:
if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_SWORD_BROKEN && INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYEDROPS) { if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_BROKEN_GORONS_SWORD &&
INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYE_DROPS) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_4); Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_4);
break; break;
} }
@ -1498,7 +1499,7 @@ void EnGo2_GoronFireClearCamera(EnGo2* this, PlayState* play) {
} }
void EnGo2_BiggoronAnimation(EnGo2* this) { void EnGo2_BiggoronAnimation(EnGo2* this) {
if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_SWORD_BROKEN && INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYEDROPS && if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_BROKEN_GORONS_SWORD && INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYE_DROPS &&
(this->actor.params & 0x1F) == GORON_DMT_BIGGORON && this->unk_194.unk_00 == 0) { (this->actor.params & 0x1F) == GORON_DMT_BIGGORON && this->unk_194.unk_00 == 0) {
if (DECR(this->animTimer) == 0) { if (DECR(this->animTimer) == 0) {
this->animTimer = Rand_S16Offset(30, 30); this->animTimer = Rand_S16Offset(30, 30);
@ -1597,8 +1598,8 @@ void EnGo2_Init(Actor* thisx, PlayState* play) {
case GORON_DMT_BIGGORON: case GORON_DMT_BIGGORON:
this->actor.shape.shadowDraw = NULL; this->actor.shape.shadowDraw = NULL;
this->actor.flags &= ~ACTOR_FLAG_0; this->actor.flags &= ~ACTOR_FLAG_0;
if ((INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_SWORD_BROKEN) && if ((INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_BROKEN_GORONS_SWORD) &&
(INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYEDROPS)) { (INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_EYE_DROPS)) {
this->eyeMouthTexState = 1; this->eyeMouthTexState = 1;
} }
this->collider.base.acFlags = AC_NONE; this->collider.base.acFlags = AC_NONE;
@ -1805,7 +1806,7 @@ void EnGo2_SetGetItem(EnGo2* this, PlayState* play) {
SET_INFTABLE(INFTABLE_109); SET_INFTABLE(INFTABLE_109);
EnGo2_GetItemAnimation(this, play); EnGo2_GetItemAnimation(this, play);
return; return;
case GI_SWORD_BGS: case GI_SWORD_BIGGORON:
gSaveContext.bgsFlag = true; gSaveContext.bgsFlag = true;
break; break;
case GI_BOMB_BAG_30: case GI_BOMB_BAG_30:

View file

@ -403,7 +403,7 @@ void func_80A53AD4(EnHeishi2* this, PlayState* play) {
this->unk_300 = TEXT_STATE_DONE; this->unk_300 = TEXT_STATE_DONE;
if (Actor_ProcessTalkRequest(&this->actor, play)) { if (Actor_ProcessTalkRequest(&this->actor, play)) {
exchangeItemId = func_8002F368(play); exchangeItemId = func_8002F368(play);
if (exchangeItemId == EXCH_ITEM_LETTER_ZELDA) { if (exchangeItemId == EXCH_ITEM_ZELDAS_LETTER) {
func_80078884(NA_SE_SY_CORRECT_CHIME); func_80078884(NA_SE_SY_CORRECT_CHIME);
player->actor.textId = 0x2010; player->actor.textId = 0x2010;
this->unk_300 = TEXT_STATE_EVENT; this->unk_300 = TEXT_STATE_EVENT;
@ -415,7 +415,7 @@ void func_80A53AD4(EnHeishi2* this, PlayState* play) {
yawDiffTemp = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; yawDiffTemp = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
yawDiff = ABS(yawDiffTemp); yawDiff = ABS(yawDiffTemp);
if (!(120.0f < this->actor.xzDistToPlayer) && (yawDiff < 0x4300)) { if (!(120.0f < this->actor.xzDistToPlayer) && (yawDiff < 0x4300)) {
func_8002F298(&this->actor, play, 100.0f, EXCH_ITEM_LETTER_ZELDA); func_8002F298(&this->actor, play, 100.0f, EXCH_ITEM_ZELDAS_LETTER);
} }
} }
} }

View file

@ -128,7 +128,7 @@ void EnHorseGameCheck_FinishIngoRace(EnHorseGameCheckIngoRace* this, PlayState*
} }
DREG(25) = 0; DREG(25) = 0;
play->transitionTrigger = TRANS_TRIGGER_START; play->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} }
s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play) { s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play) {
@ -140,7 +140,7 @@ s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play)
if ((this->startTimer > 50) && !(this->startFlags & INGORACE_SET_TIMER)) { if ((this->startTimer > 50) && !(this->startFlags & INGORACE_SET_TIMER)) {
this->startFlags |= INGORACE_SET_TIMER; this->startFlags |= INGORACE_SET_TIMER;
func_80088B34(0); Interface_SetTimer(0);
} else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->startFlags & INGORACE_PLAYER_MOVE)) { } else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->startFlags & INGORACE_PLAYER_MOVE)) {
this->startFlags |= INGORACE_PLAYER_MOVE; this->startFlags |= INGORACE_PLAYER_MOVE;
horse = (EnHorse*)player->rideActor; horse = (EnHorse*)player->rideActor;
@ -211,7 +211,7 @@ s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play)
this->result = INGORACE_INGO_WIN; this->result = INGORACE_INGO_WIN;
this->finishTimer = 20; this->finishTimer = 20;
} }
if ((gSaveContext.timer1Value >= 180) && (this->startFlags & 2)) { if ((gSaveContext.timerSeconds >= 180) && (this->startFlags & 2)) {
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_HORSE_GOAL); SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0, 0, NA_BGM_HORSE_GOAL);
this->result = INGORACE_TIME_UP; this->result = INGORACE_TIME_UP;
this->finishTimer = 20; this->finishTimer = 20;
@ -298,8 +298,8 @@ void EnHorseGameCheck_FinishMalonRace(EnHorseGameCheckMalonRace* this, PlayState
play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST); play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
play->transitionTrigger = TRANS_TRIGGER_START; play->transitionTrigger = TRANS_TRIGGER_START;
} else if (this->result == MALONRACE_FAILURE) { } else if (this->result == MALONRACE_FAILURE) {
gSaveContext.timer1Value = 240; gSaveContext.timerSeconds = 240;
gSaveContext.timer1State = 0xF; gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
gSaveContext.cutsceneIndex = 0; gSaveContext.cutsceneIndex = 0;
play->nextEntranceIndex = ENTR_SPOT20_7; play->nextEntranceIndex = ENTR_SPOT20_7;
play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST); play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_WHITE, TCS_FAST);
@ -328,7 +328,7 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
} }
if ((this->startTimer > 50) && !(this->raceFlags & MALONRACE_SET_TIMER)) { if ((this->startTimer > 50) && !(this->raceFlags & MALONRACE_SET_TIMER)) {
this->raceFlags |= MALONRACE_SET_TIMER; this->raceFlags |= MALONRACE_SET_TIMER;
func_80088B34(0); Interface_SetTimer(0);
} else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->raceFlags & MALONRACE_PLAYER_MOVE)) { } else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->raceFlags & MALONRACE_PLAYER_MOVE)) {
this->raceFlags |= MALONRACE_PLAYER_MOVE; this->raceFlags |= MALONRACE_PLAYER_MOVE;
horse = (EnHorse*)player->rideActor; horse = (EnHorse*)player->rideActor;
@ -383,7 +383,7 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
this->result = MALONRACE_SUCCESS; this->result = MALONRACE_SUCCESS;
this->finishTimer = 70; this->finishTimer = 70;
gSaveContext.timer1State = 0xF; gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
} else if ((this->fenceCheck[7] == 1) && !(this->raceFlags & MALONRACE_SECOND_LAP)) { } else if ((this->fenceCheck[7] == 1) && !(this->raceFlags & MALONRACE_SECOND_LAP)) {
this->lapCount = 1; this->lapCount = 1;
this->raceFlags |= MALONRACE_SECOND_LAP; this->raceFlags |= MALONRACE_SECOND_LAP;
@ -400,11 +400,11 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
this->finishTimer = 30; this->finishTimer = 30;
} }
} }
if ((gSaveContext.timer1Value >= 180) && (this->raceFlags & MALONRACE_SET_TIMER)) { if ((gSaveContext.timerSeconds >= 180) && (this->raceFlags & MALONRACE_SET_TIMER)) {
gSaveContext.timer1Value = 240; gSaveContext.timerSeconds = 240;
this->result = MALONRACE_TIME_UP; this->result = MALONRACE_TIME_UP;
this->finishTimer = 30; this->finishTimer = 30;
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} }
} else { } else {
if (this->finishTimer > 0) { if (this->finishTimer > 0) {

View file

@ -14,9 +14,9 @@ void EnHorseZelda_Destroy(Actor* thisx, PlayState* play);
void EnHorseZelda_Update(Actor* thisx, PlayState* play); void EnHorseZelda_Update(Actor* thisx, PlayState* play);
void EnHorseZelda_Draw(Actor* thisx, PlayState* play); void EnHorseZelda_Draw(Actor* thisx, PlayState* play);
void func_80A6DCCC(EnHorseZelda* this, PlayState* play); void EnHorseZelda_Stop(EnHorseZelda* this, PlayState* play);
void func_80A6DDFC(EnHorseZelda* this, PlayState* play); void EnHorseZelda_Gallop(EnHorseZelda* this, PlayState* play);
void func_80A6DC7C(EnHorseZelda* this); void EnHorseZelda_SetupStop(EnHorseZelda* this);
ActorInit En_Horse_Zelda_InitVars = { ActorInit En_Horse_Zelda_InitVars = {
ACTOR_EN_HORSE_ZELDA, ACTOR_EN_HORSE_ZELDA,
@ -83,16 +83,17 @@ static ColliderJntSphInit sJntSphInit = {
static CollisionCheckInfoInit sColChkInfoInit = { 10, 35, 100, MASS_HEAVY }; static CollisionCheckInfoInit sColChkInfoInit = { 10, 35, 100, MASS_HEAVY };
typedef struct { typedef struct {
/* 0x0 */ Vec3s unk_0; /* 0x0 */ Vec3s pos;
/* 0x6 */ u8 unk_6; /* 0x6 */ u8 speed;
} unknownStruct; // size = 0x8 } HorsePosSpeed; // size = 0x8
static unknownStruct D_80A6E240[] = { // these seem to be valid coords on Hyrule field, along with target speeds
{ -1682, -500, 12578, 0x07 }, { -3288, -500, 13013, 0x07 }, { -5142, -417, 11630, 0x07 }, static HorsePosSpeed sHorseFieldPositions[] = {
{ -5794, -473, 9573, 0x07 }, { -6765, -500, 8364, 0x07 }, { -6619, -393, 6919, 0x07 }, { { -1682, -500, 12578 }, 7 }, { { -3288, -500, 13013 }, 7 }, { { -5142, -417, 11630 }, 7 },
{ -5193, 124, 5433, 0x07 }, { -2970, 2, 4537, 0x07 }, { -2949, -35, 4527, 0x07 }, { { -5794, -473, 9573 }, 7 }, { { -6765, -500, 8364 }, 7 }, { { -6619, -393, 6919 }, 7 },
{ -1907, -47, 2978, 0x07 }, { 2488, 294, 3628, 0x07 }, { 3089, 378, 4713, 0x07 }, { { -5193, 124, 5433 }, 7 }, { { -2970, 2, 4537 }, 7 }, { { -2949, -35, 4527 }, 7 },
{ 1614, -261, 7596, 0x07 }, { 754, -187, 9295, 0x07 }, { { -1907, -47, 2978 }, 7 }, { { 2488, 294, 3628 }, 7 }, { { 3089, 378, 4713 }, 7 },
{ { 1614, -261, 7596 }, 7 }, { { 754, -187, 9295 }, 7 },
}; };
static InitChainEntry sInitChain[] = { static InitChainEntry sInitChain[] = {
@ -100,34 +101,34 @@ static InitChainEntry sInitChain[] = {
}; };
static EnHorseZeldaActionFunc sActionFuncs[] = { static EnHorseZeldaActionFunc sActionFuncs[] = {
func_80A6DCCC, EnHorseZelda_Stop,
func_80A6DDFC, EnHorseZelda_Gallop,
}; };
void func_80A6D8D0(unknownStruct* data, s32 index, Vec3f* vec) { void EnHorseZelda_GetFieldPosition(HorsePosSpeed* data, s32 index, Vec3f* fieldPos) {
vec->x = data[index].unk_0.x; fieldPos->x = data[index].pos.x;
vec->y = data[index].unk_0.y; fieldPos->y = data[index].pos.y;
vec->z = data[index].unk_0.z; fieldPos->z = data[index].pos.z;
} }
void func_80A6D918(EnHorseZelda* this, PlayState* play) { void EnHorseZelda_Move(EnHorseZelda* this, PlayState* play) {
s32 pad; s32 pad;
Vec3f sp28; Vec3f fieldPos;
s16 yawDiff; s16 yawDiff;
func_80A6D8D0(D_80A6E240, this->unk_1EC, &sp28); EnHorseZelda_GetFieldPosition(sHorseFieldPositions, this->fieldPosIndex, &fieldPos);
if (Math3D_Vec3f_DistXYZ(&sp28, &this->actor.world.pos) <= 400.0f) { if (Math3D_Vec3f_DistXYZ(&fieldPos, &this->actor.world.pos) <= 400.0f) {
this->unk_1EC++; this->fieldPosIndex++;
if (this->unk_1EC >= 14) { if (this->fieldPosIndex >= ARRAY_COUNT(sHorseFieldPositions)) {
this->unk_1EC = 0; this->fieldPosIndex = 0;
func_80A6D8D0(D_80A6E240, 0, &sp28); EnHorseZelda_GetFieldPosition(sHorseFieldPositions, 0, &fieldPos);
} }
} }
yawDiff = Math_Vec3f_Yaw(&this->actor.world.pos, &sp28) - this->actor.world.rot.y; yawDiff = Math_Vec3f_Yaw(&this->actor.world.pos, &fieldPos) - this->actor.world.rot.y;
if (yawDiff >= 0x12D) { if (yawDiff > 300) {
this->actor.world.rot.y += 0x12C; this->actor.world.rot.y += 300;
} else if (yawDiff < -0x12C) { } else if (yawDiff < -300) {
this->actor.world.rot.y -= 0x12C; this->actor.world.rot.y -= 300;
} else { } else {
this->actor.world.rot.y += yawDiff; this->actor.world.rot.y += yawDiff;
} }
@ -139,7 +140,7 @@ void func_80A6D918(EnHorseZelda* this, PlayState* play) {
} else { } else {
this->actor.speedXZ -= 1.0f; this->actor.speedXZ -= 1.0f;
} }
} else if (this->actor.speedXZ < D_80A6E240[this->unk_1EC].unk_6) { } else if (this->actor.speedXZ < sHorseFieldPositions[this->fieldPosIndex].speed) {
this->actor.speedXZ += 0.5f; this->actor.speedXZ += 0.5f;
} else { } else {
this->actor.speedXZ -= 0.5f; this->actor.speedXZ -= 0.5f;
@ -166,7 +167,7 @@ void EnHorseZelda_Init(Actor* thisx, PlayState* play) {
Collider_SetJntSph(play, &this->colliderSphere, &this->actor, &sJntSphInit, &this->colliderSphereItem); Collider_SetJntSph(play, &this->colliderSphere, &this->actor, &sJntSphInit, &this->colliderSphereItem);
CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit); CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
this->animationIndex = 0; this->animationIndex = 0;
func_80A6DC7C(this); EnHorseZelda_SetupStop(this);
} }
void EnHorseZelda_Destroy(Actor* thisx, PlayState* play) { void EnHorseZelda_Destroy(Actor* thisx, PlayState* play) {
@ -177,7 +178,7 @@ void EnHorseZelda_Destroy(Actor* thisx, PlayState* play) {
Skin_Free(play, &this->skin); Skin_Free(play, &this->skin);
} }
void func_80A6DC7C(EnHorseZelda* this) { void EnHorseZelda_SetupStop(EnHorseZelda* this) {
this->action = 0; this->action = 0;
this->animationIndex++; this->animationIndex++;
if (this->animationIndex > 0) { if (this->animationIndex > 0) {
@ -186,34 +187,34 @@ void func_80A6DC7C(EnHorseZelda* this) {
Animation_PlayOnce(&this->skin.skelAnime, sAnimationHeaders[this->animationIndex]); Animation_PlayOnce(&this->skin.skelAnime, sAnimationHeaders[this->animationIndex]);
} }
void func_80A6DCCC(EnHorseZelda* this, PlayState* play) { void EnHorseZelda_Stop(EnHorseZelda* this, PlayState* play) {
this->actor.speedXZ = 0.0f; this->actor.speedXZ = 0.0f;
if (SkelAnime_Update(&this->skin.skelAnime)) { if (SkelAnime_Update(&this->skin.skelAnime)) {
func_80A6DC7C(this); EnHorseZelda_SetupStop(this);
} }
} }
void func_80A6DD14(EnHorseZelda* this) { void EnHorseZelda_Spur(EnHorseZelda* this) {
f32 sp34; f32 speedMod;
this->action = 1; this->action = 1;
this->animationIndex = 0; this->animationIndex = 0;
sp34 = this->actor.speedXZ / 6.0f; speedMod = this->actor.speedXZ / 6.0f;
Audio_PlaySfxGeneral(NA_SE_EV_HORSE_RUN, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale, Audio_PlaySfxGeneral(NA_SE_EV_HORSE_RUN, &this->actor.projectedPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
Animation_Change(&this->skin.skelAnime, sAnimationHeaders[this->animationIndex], Animation_Change(&this->skin.skelAnime, sAnimationHeaders[this->animationIndex],
splaySpeeds[this->animationIndex] * sp34 * 1.5f, 0.0f, splaySpeeds[this->animationIndex] * speedMod * 1.5f, 0.0f,
Animation_GetLastFrame(sAnimationHeaders[this->animationIndex]), ANIMMODE_ONCE, 0.0f); Animation_GetLastFrame(sAnimationHeaders[this->animationIndex]), ANIMMODE_ONCE, 0.0f);
} }
void func_80A6DDFC(EnHorseZelda* this, PlayState* play) { void EnHorseZelda_Gallop(EnHorseZelda* this, PlayState* play) {
func_80A6D918(this, play); EnHorseZelda_Move(this, play);
if (SkelAnime_Update(&this->skin.skelAnime)) { if (SkelAnime_Update(&this->skin.skelAnime)) {
func_80A6DD14(this); EnHorseZelda_Spur(this);
} }
} }
void func_80A6DE38(EnHorseZelda* this, PlayState* play) { void EnHorseZelda_SetRotate(EnHorseZelda* this, PlayState* play) {
s32 pad; s32 pad;
CollisionPoly* poly; CollisionPoly* poly;
s32 pad2; s32 pad2;
@ -223,8 +224,8 @@ void func_80A6DE38(EnHorseZelda* this, PlayState* play) {
checkPos.x = (Math_SinS(this->actor.shape.rot.y) * 30.0f) + this->actor.world.pos.x; checkPos.x = (Math_SinS(this->actor.shape.rot.y) * 30.0f) + this->actor.world.pos.x;
checkPos.y = this->actor.world.pos.y + 60.0f; checkPos.y = this->actor.world.pos.y + 60.0f;
checkPos.z = (Math_CosS(this->actor.shape.rot.y) * 30.0f) + this->actor.world.pos.z; checkPos.z = (Math_CosS(this->actor.shape.rot.y) * 30.0f) + this->actor.world.pos.z;
this->unk_1F4 = BgCheck_EntityRaycastDown3(&play->colCtx, &poly, &bgId, &checkPos); this->floorYForwards = BgCheck_EntityRaycastDown3(&play->colCtx, &poly, &bgId, &checkPos);
this->actor.shape.rot.x = RAD_TO_BINANG(Math_FAtan2F(this->actor.world.pos.y - this->unk_1F4, 30.0f)); this->actor.shape.rot.x = RAD_TO_BINANG(Math_FAtan2F(this->actor.world.pos.y - this->floorYForwards, 30.0f));
} }
void EnHorseZelda_Update(Actor* thisx, PlayState* play) { void EnHorseZelda_Update(Actor* thisx, PlayState* play) {
@ -244,21 +245,21 @@ void EnHorseZelda_Update(Actor* thisx, PlayState* play) {
} }
void EnHorseZelda_PostDraw(Actor* thisx, PlayState* play, Skin* skin) { void EnHorseZelda_PostDraw(Actor* thisx, PlayState* play, Skin* skin) {
Vec3f sp4C; Vec3f offset;
Vec3f sp40; Vec3f dst;
EnHorseZelda* this = (EnHorseZelda*)thisx; EnHorseZelda* this = (EnHorseZelda*)thisx;
s32 i; s32 i;
for (i = 0; i < this->colliderSphere.count; i++) { for (i = 0; i < this->colliderSphere.count; i++) {
sp4C.x = this->colliderSphere.elements[i].dim.modelSphere.center.x; offset.x = this->colliderSphere.elements[i].dim.modelSphere.center.x;
sp4C.y = this->colliderSphere.elements[i].dim.modelSphere.center.y; offset.y = this->colliderSphere.elements[i].dim.modelSphere.center.y;
sp4C.z = this->colliderSphere.elements[i].dim.modelSphere.center.z; offset.z = this->colliderSphere.elements[i].dim.modelSphere.center.z;
Skin_GetLimbPos(skin, this->colliderSphere.elements[i].dim.limb, &sp4C, &sp40); Skin_GetLimbPos(skin, this->colliderSphere.elements[i].dim.limb, &offset, &dst);
this->colliderSphere.elements[i].dim.worldSphere.center.x = sp40.x; this->colliderSphere.elements[i].dim.worldSphere.center.x = dst.x;
this->colliderSphere.elements[i].dim.worldSphere.center.y = sp40.y; this->colliderSphere.elements[i].dim.worldSphere.center.y = dst.y;
this->colliderSphere.elements[i].dim.worldSphere.center.z = sp40.z; this->colliderSphere.elements[i].dim.worldSphere.center.z = dst.z;
this->colliderSphere.elements[i].dim.worldSphere.radius = this->colliderSphere.elements[i].dim.worldSphere.radius =
this->colliderSphere.elements[i].dim.modelSphere.radius * this->colliderSphere.elements[i].dim.scale; this->colliderSphere.elements[i].dim.modelSphere.radius * this->colliderSphere.elements[i].dim.scale;
@ -271,7 +272,7 @@ void EnHorseZelda_PostDraw(Actor* thisx, PlayState* play, Skin* skin) {
void EnHorseZelda_Draw(Actor* thisx, PlayState* play) { void EnHorseZelda_Draw(Actor* thisx, PlayState* play) {
EnHorseZelda* this = (EnHorseZelda*)thisx; EnHorseZelda* this = (EnHorseZelda*)thisx;
func_80A6DE38(this, play); EnHorseZelda_SetRotate(this, play);
Gfx_SetupDL_25Opa(play->state.gfxCtx); Gfx_SetupDL_25Opa(play->state.gfxCtx);
func_800A6330(&this->actor, play, &this->skin, EnHorseZelda_PostDraw, true); func_800A6330(&this->actor, play, &this->skin, EnHorseZelda_PostDraw, true);
} }

View file

@ -14,9 +14,9 @@ typedef struct EnHorseZelda {
/* 0x0150 */ s32 animationIndex; /* 0x0150 */ s32 animationIndex;
/* 0x0154 */ Skin skin; /* 0x0154 */ Skin skin;
/* 0x01E4 */ char unk_1E4[0x8]; /* 0x01E4 */ char unk_1E4[0x8];
/* 0x01EC */ s32 unk_1EC; /* 0x01EC */ s32 fieldPosIndex;
/* 0x01F0 */ char unk_1F0[0x4]; /* 0x01F0 */ char unk_1F0[0x4];
/* 0x01F4 */ f32 unk_1F4; /* 0x01F4 */ f32 floorYForwards;
/* 0x01F8 */ char unk_1F8[0x4]; /* 0x01F8 */ char unk_1F8[0x4];
/* 0x01FC */ ColliderCylinder colliderCylinder; /* 0x01FC */ ColliderCylinder colliderCylinder;
/* 0x0248 */ ColliderJntSph colliderSphere; /* 0x0248 */ ColliderJntSph colliderSphere;

View file

@ -126,9 +126,9 @@ void func_80A6E5EC(EnHs* this, PlayState* play) {
void func_80A6E630(EnHs* this, PlayState* play) { void func_80A6E630(EnHs* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
func_80088AA0(180); Interface_SetSubTimer(180);
func_80A6E3A0(this, func_80A6E6B0); func_80A6E3A0(this, func_80A6E6B0);
CLEAR_EVENTINF(EVENTINF_10); CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
} }
this->unk_2A8 |= 1; this->unk_2A8 |= 1;

View file

@ -421,7 +421,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
if (textId != 0) { if (textId != 0) {
if ((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_5) { if ((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_5) {
player->exchangeItemId = EXCH_ITEM_BLUE_FIRE; player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE;
} }
return textId; return textId;
} }
@ -473,7 +473,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
case ENHY_TYPE_AHG_4: case ENHY_TYPE_AHG_4:
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704B : (GET_INFTABLE(INFTABLE_C5) ? 0x7024 : 0x7023); return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704B : (GET_INFTABLE(INFTABLE_C5) ? 0x7024 : 0x7023);
case ENHY_TYPE_BOJ_5: case ENHY_TYPE_BOJ_5:
player->exchangeItemId = EXCH_ITEM_BLUE_FIRE; player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE;
return 0x700C; return 0x700C;
case ENHY_TYPE_BBA: case ENHY_TYPE_BBA:
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704A : (GET_INFTABLE(INFTABLE_C6) ? 0x7022 : 0x7021); return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704A : (GET_INFTABLE(INFTABLE_C6) ? 0x7022 : 0x7021);
@ -554,7 +554,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
s16 func_80A70058(PlayState* play, Actor* thisx) { s16 func_80A70058(PlayState* play, Actor* thisx) {
EnHy* this = (EnHy*)thisx; EnHy* this = (EnHy*)thisx;
s16 beggarItems[] = { ITEM_BLUE_FIRE, ITEM_FISH, ITEM_BUG, ITEM_FAIRY }; s16 beggarItems[] = { ITEM_BOTTLE_BLUE_FIRE, ITEM_BOTTLE_FISH, ITEM_BOTTLE_BUG, ITEM_BOTTLE_FAIRY };
s16 beggarRewards[] = { 150, 100, 50, 25 }; s16 beggarRewards[] = { 150, 100, 50, 25 };
switch (Message_GetState(&play->msgCtx)) { switch (Message_GetState(&play->msgCtx)) {
@ -596,7 +596,7 @@ s16 func_80A70058(PlayState* play, Actor* thisx) {
case 0x70F3: case 0x70F3:
Rupees_ChangeBy(beggarRewards[this->actor.textId - 0x70F0]); Rupees_ChangeBy(beggarRewards[this->actor.textId - 0x70F0]);
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_17); Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENHY_ANIM_17);
Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, GET_PLAYER(play), ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
break; break;
case 0x7016: case 0x7016:
SET_INFTABLE(INFTABLE_C0); SET_INFTABLE(INFTABLE_C0);
@ -723,12 +723,12 @@ void func_80A70834(EnHy* this, PlayState* play) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if ((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_5) { if ((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_5) {
if (!Inventory_HasSpecificBottle(ITEM_BLUE_FIRE) && !Inventory_HasSpecificBottle(ITEM_BUG) && if (!Inventory_HasSpecificBottle(ITEM_BOTTLE_BLUE_FIRE) && !Inventory_HasSpecificBottle(ITEM_BOTTLE_BUG) &&
!Inventory_HasSpecificBottle(ITEM_FISH)) { !Inventory_HasSpecificBottle(ITEM_BOTTLE_FISH)) {
switch (func_8002F368(play)) { switch (func_8002F368(play)) {
case EXCH_ITEM_POE: case EXCH_ITEM_BOTTLE_POE:
case EXCH_ITEM_BIG_POE: case EXCH_ITEM_BOTTLE_BIG_POE:
case EXCH_ITEM_LETTER_RUTO: case EXCH_ITEM_BOTTLE_RUTOS_LETTER:
this->actor.textId = 0x70EF; this->actor.textId = 0x70EF;
break; break;
default: default:
@ -739,13 +739,13 @@ void func_80A70834(EnHy* this, PlayState* play) {
} }
} else { } else {
switch (func_8002F368(play)) { switch (func_8002F368(play)) {
case EXCH_ITEM_BLUE_FIRE: case EXCH_ITEM_BOTTLE_BLUE_FIRE:
this->actor.textId = 0x70F0; this->actor.textId = 0x70F0;
break; break;
case EXCH_ITEM_FISH: case EXCH_ITEM_BOTTLE_FISH:
this->actor.textId = 0x70F1; this->actor.textId = 0x70F1;
break; break;
case EXCH_ITEM_BUG: case EXCH_ITEM_BOTTLE_BUG:
this->actor.textId = 0x70F2; this->actor.textId = 0x70F2;
break; break;
default: default:

View file

@ -437,7 +437,7 @@ void func_80A79BAC(EnIn* this, PlayState* play, s32 index, u32 transitionType) {
if (index == 0) { if (index == 0) {
AREG(6) = 0; AREG(6) = 0;
} }
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} }
void func_80A79C78(EnIn* this, PlayState* play) { void func_80A79C78(EnIn* this, PlayState* play) {
@ -580,7 +580,7 @@ void func_80A79FB0(EnIn* this, PlayState* play) {
this->actor.targetMode = 3; this->actor.targetMode = 3;
EnIn_ChangeAnim(this, ENIN_ANIM_2); EnIn_ChangeAnim(this, ENIN_ANIM_2);
this->actionFunc = func_80A7A568; this->actionFunc = func_80A7A568;
func_80088B34(0x3C); Interface_SetTimer(60);
break; break;
case EVENTINF_HORSES_STATE_3: case EVENTINF_HORSES_STATE_3:
EnIn_ChangeAnim(this, ENIN_ANIM_4); EnIn_ChangeAnim(this, ENIN_ANIM_4);
@ -657,12 +657,12 @@ void func_80A7A568(EnIn* this, PlayState* play) {
if (!GET_EVENTCHKINF(EVENTCHKINF_1B) && (player->stateFlags1 & PLAYER_STATE1_23)) { if (!GET_EVENTCHKINF(EVENTCHKINF_1B) && (player->stateFlags1 & PLAYER_STATE1_23)) {
SET_INFTABLE(INFTABLE_AB); SET_INFTABLE(INFTABLE_AB);
} }
if (gSaveContext.timer1State == 10) { if (gSaveContext.timerState == TIMER_STATE_STOP) {
Audio_PlaySfxGeneral(NA_SE_SY_FOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, Audio_PlaySfxGeneral(NA_SE_SY_FOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
func_80A79C78(this, play); func_80A79C78(this, play);
this->actionFunc = func_80A7B024; this->actionFunc = func_80A7B024;
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} else if (this->unk_308.unk_00 == 2) { } else if (this->unk_308.unk_00 == 2) {
if (play->msgCtx.choiceIndex == 0) { if (play->msgCtx.choiceIndex == 0) {
if (gSaveContext.rupees < 50) { if (gSaveContext.rupees < 50) {
@ -929,7 +929,8 @@ void EnIn_Update(Actor* thisx, PlayState* play) {
this->actionFunc(this, play); this->actionFunc(this, play);
if (this->actionFunc != func_80A7A304) { if (this->actionFunc != func_80A7A304) {
func_80A79AB4(this, play); func_80A79AB4(this, play);
if (gSaveContext.timer2Value < 6 && gSaveContext.timer2State != 0 && this->unk_308.unk_00 == 0) { if ((gSaveContext.subTimerSeconds < 6) && (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) &&
(this->unk_308.unk_00 == 0)) {
if (Actor_ProcessTalkRequest(&this->actor, play)) {} if (Actor_ProcessTalkRequest(&this->actor, play)) {}
} else { } else {
func_800343CC(play, &this->actor, &this->unk_308.unk_00, func_800343CC(play, &this->actor, &this->unk_308.unk_00,

View file

@ -362,7 +362,7 @@ void EnKarebaba_DeadItemDrop(EnKarebaba* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play) || this->actor.params == 0) { if (Actor_HasParent(&this->actor, play) || this->actor.params == 0) {
EnKarebaba_SetupDead(this); EnKarebaba_SetupDead(this);
} else { } else {
func_8002F554(&this->actor, play, GI_STICKS_1); func_8002F554(&this->actor, play, GI_DEKU_STICKS_1);
} }
} }

View file

@ -1198,7 +1198,7 @@ void func_80A99504(EnKo* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = func_80A99560; this->actionFunc = func_80A99560;
} else { } else {
func_8002F434(&this->actor, play, GI_SAW, 120.0f, 10.0f); func_8002F434(&this->actor, play, GI_POACHERS_SAW, 120.0f, 10.0f);
} }
} }

View file

@ -76,7 +76,7 @@ u16 EnKz_GetTextNoMaskChild(PlayState* play, EnKz* this) {
} else if (GET_EVENTCHKINF(EVENTCHKINF_33)) { } else if (GET_EVENTCHKINF(EVENTCHKINF_33)) {
return 0x401C; return 0x401C;
} else { } else {
player->exchangeItemId = EXCH_ITEM_LETTER_RUTO; player->exchangeItemId = EXCH_ITEM_BOTTLE_RUTOS_LETTER;
return 0x401A; return 0x401A;
} }
} }
@ -84,7 +84,7 @@ u16 EnKz_GetTextNoMaskChild(PlayState* play, EnKz* this) {
u16 EnKz_GetTextNoMaskAdult(PlayState* play, EnKz* this) { u16 EnKz_GetTextNoMaskAdult(PlayState* play, EnKz* this) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_FROG) { if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_EYEBALL_FROG) {
if (!GET_INFTABLE(INFTABLE_139)) { if (!GET_INFTABLE(INFTABLE_139)) {
if (CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)) { if (CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)) {
return 0x401F; return 0x401F;
@ -237,7 +237,7 @@ void func_80A9CB18(EnKz* this, PlayState* play) {
if (func_80A9C95C(play, this, &this->unk_1E0.unk_00, 340.0f, EnKz_GetText, func_80A9C6C0)) { if (func_80A9C95C(play, this, &this->unk_1E0.unk_00, 340.0f, EnKz_GetText, func_80A9C6C0)) {
if ((this->actor.textId == 0x401A) && !GET_EVENTCHKINF(EVENTCHKINF_33)) { if ((this->actor.textId == 0x401A) && !GET_EVENTCHKINF(EVENTCHKINF_33)) {
if (func_8002F368(play) == EXCH_ITEM_LETTER_RUTO) { if (func_8002F368(play) == EXCH_ITEM_BOTTLE_RUTOS_LETTER) {
this->actor.textId = 0x401B; this->actor.textId = 0x401B;
this->sfxPlayed = false; this->sfxPlayed = false;
} else { } else {
@ -394,7 +394,7 @@ void EnKz_Mweep(EnKz* this, PlayState* play) {
Play_CameraSetAtEye(play, this->subCamId, &subCamAt, &subCamEye); Play_CameraSetAtEye(play, this->subCamId, &subCamAt, &subCamEye);
if ((EnKz_FollowPath(this, play) == 1) && (this->waypoint == 0)) { if ((EnKz_FollowPath(this, play) == 1) && (this->waypoint == 0)) {
Animation_ChangeByInfo(&this->skelanime, sAnimationInfo, ENKZ_ANIM_1); Animation_ChangeByInfo(&this->skelanime, sAnimationInfo, ENKZ_ANIM_1);
Inventory_ReplaceItem(play, ITEM_LETTER_RUTO, ITEM_BOTTLE); Inventory_ReplaceItem(play, ITEM_BOTTLE_RUTOS_LETTER, ITEM_BOTTLE_EMPTY);
EnKz_SetMovedPos(this, play); EnKz_SetMovedPos(this, play);
SET_EVENTCHKINF(EVENTCHKINF_33); SET_EVENTCHKINF(EVENTCHKINF_33);
this->actor.speedXZ = 0.0; this->actor.speedXZ = 0.0;
@ -431,7 +431,7 @@ void EnKz_SetupGetItem(EnKz* this, PlayState* play) {
this->unk_1E0.unk_00 = 1; this->unk_1E0.unk_00 = 1;
this->actionFunc = EnKz_StartTimer; this->actionFunc = EnKz_StartTimer;
} else { } else {
getItemId = this->isTrading == true ? GI_FROG : GI_TUNIC_ZORA; getItemId = this->isTrading == true ? GI_EYEBALL_FROG : GI_TUNIC_ZORA;
yRange = fabsf(this->actor.yDistToPlayer) + 1.0f; yRange = fabsf(this->actor.yDistToPlayer) + 1.0f;
xzRange = this->actor.xzDistToPlayer + 1.0f; xzRange = this->actor.xzDistToPlayer + 1.0f;
func_8002F434(&this->actor, play, getItemId, xzRange, yRange); func_8002F434(&this->actor, play, getItemId, xzRange, yRange);
@ -440,9 +440,9 @@ void EnKz_SetupGetItem(EnKz* this, PlayState* play) {
void EnKz_StartTimer(EnKz* this, PlayState* play) { void EnKz_StartTimer(EnKz* this, PlayState* play) {
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_FROG) { if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEBALL_FROG) {
func_80088AA0(180); // start timer2 with 3 minutes Interface_SetSubTimer(180);
CLEAR_EVENTINF(EVENTINF_10); CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
} }
this->unk_1E0.unk_00 = 0; this->unk_1E0.unk_00 = 0;
this->actionFunc = EnKz_Wait; this->actionFunc = EnKz_Wait;

View file

@ -73,39 +73,44 @@ static AnimationFrameCountInfo sAnimationInfo[] = {
u16 func_80AA2AA0(PlayState* play, Actor* thisx) { u16 func_80AA2AA0(PlayState* play, Actor* thisx) {
Player* player = GET_PLAYER(play); Player* player = GET_PLAYER(play);
s16* timer1ValuePtr; // weirdness with this necessary to match
if (!GET_INFTABLE(INFTABLE_B8)) { if (!GET_INFTABLE(INFTABLE_B8)) {
return 0x2000; return 0x2000;
} }
timer1ValuePtr = &gSaveContext.timer1Value;
if (GET_EVENTINF(EVENTINF_HORSES_0A)) { if (GET_EVENTINF(EVENTINF_HORSES_0A)) {
gSaveContext.timer1Value = gSaveContext.timer1Value; gSaveContext.timerSeconds = gSaveContext.timerSeconds;
thisx->flags |= ACTOR_FLAG_16; thisx->flags |= ACTOR_FLAG_16;
if (gSaveContext.timer1Value >= 0xD3) {
if (((void)0, gSaveContext.timerSeconds) > 210) {
return 0x208E; return 0x208E;
} }
if ((HIGH_SCORE(HS_HORSE_RACE) == 0) || (HIGH_SCORE(HS_HORSE_RACE) >= 0xB4)) {
HIGH_SCORE(HS_HORSE_RACE) = 0xB4; if ((HIGH_SCORE(HS_HORSE_RACE) == 0) || (HIGH_SCORE(HS_HORSE_RACE) >= 180)) {
gSaveContext.timer1Value = *timer1ValuePtr; HIGH_SCORE(HS_HORSE_RACE) = 180;
} }
if (!GET_EVENTCHKINF(EVENTCHKINF_1E) && (gSaveContext.timer1Value < 0x32)) {
if (!GET_EVENTCHKINF(EVENTCHKINF_1E) && (((void)0, gSaveContext.timerSeconds) < 50)) {
return 0x208F; return 0x208F;
} else if (gSaveContext.timer1Value < HIGH_SCORE(HS_HORSE_RACE)) {
return 0x2012;
} else {
return 0x2004;
} }
if (HIGH_SCORE(HS_HORSE_RACE) > ((void)0, gSaveContext.timerSeconds)) {
return 0x2012;
}
return 0x2004;
} }
if (!(player->stateFlags1 & PLAYER_STATE1_23) && if (!(player->stateFlags1 & PLAYER_STATE1_23) &&
(Actor_FindNearby(play, thisx, ACTOR_EN_HORSE, 1, 1200.0f) == NULL)) { (Actor_FindNearby(play, thisx, ACTOR_EN_HORSE, 1, 1200.0f) == NULL)) {
return 0x2001; return 0x2001;
} }
if (!GET_INFTABLE(INFTABLE_B9)) { if (!GET_INFTABLE(INFTABLE_B9)) {
return 0x2002; return 0x2002;
} else {
return 0x2003;
} }
return 0x2003;
} }
s16 func_80AA2BD4(PlayState* play, Actor* thisx) { s16 func_80AA2BD4(PlayState* play, Actor* thisx) {
@ -119,7 +124,7 @@ s16 func_80AA2BD4(PlayState* play, Actor* thisx) {
play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST); play->transitionType = TRANS_TYPE_CIRCLE(TCA_STARBURST, TCC_BLACK, TCS_FAST);
play->transitionTrigger = TRANS_TRIGGER_START; play->transitionTrigger = TRANS_TRIGGER_START;
SET_EVENTINF(EVENTINF_HORSES_0A); SET_EVENTINF(EVENTINF_HORSES_0A);
gSaveContext.timer1State = 0xF; gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
} }
break; break;
case TEXT_STATE_CHOICE: case TEXT_STATE_CHOICE:
@ -147,15 +152,15 @@ s16 func_80AA2BD4(PlayState* play, Actor* thisx) {
FALLTHROUGH; FALLTHROUGH;
case 0x2004: case 0x2004:
case 0x2012: case 0x2012:
if (HIGH_SCORE(HS_HORSE_RACE) > gSaveContext.timer1Value) { if (HIGH_SCORE(HS_HORSE_RACE) > gSaveContext.timerSeconds) {
HIGH_SCORE(HS_HORSE_RACE) = gSaveContext.timer1Value; HIGH_SCORE(HS_HORSE_RACE) = gSaveContext.timerSeconds;
} }
FALLTHROUGH; FALLTHROUGH;
case 0x208E: case 0x208E:
CLEAR_EVENTINF(EVENTINF_HORSES_0A); CLEAR_EVENTINF(EVENTINF_HORSES_0A);
thisx->flags &= ~ACTOR_FLAG_16; thisx->flags &= ~ACTOR_FLAG_16;
ret = 0; ret = 0;
gSaveContext.timer1State = 0xA; gSaveContext.timerState = TIMER_STATE_STOP;
break; break;
case 0x2002: case 0x2002:
SET_INFTABLE(INFTABLE_B9); SET_INFTABLE(INFTABLE_B9);

View file

@ -92,17 +92,17 @@ void func_80AACA94(EnMk* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play) != 0) { if (Actor_HasParent(&this->actor, play) != 0) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = func_80AACA40; this->actionFunc = func_80AACA40;
func_80088AA0(240); Interface_SetSubTimer(240);
CLEAR_EVENTINF(EVENTINF_10); CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
} else { } else {
func_8002F434(&this->actor, play, GI_EYEDROPS, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_EYE_DROPS, 10000.0f, 50.0f);
} }
} }
void func_80AACB14(EnMk* this, PlayState* play) { void func_80AACB14(EnMk* this, PlayState* play) {
if (Actor_TextboxIsClosing(&this->actor, play)) { if (Actor_TextboxIsClosing(&this->actor, play)) {
this->actionFunc = func_80AACA94; this->actionFunc = func_80AACA94;
func_8002F434(&this->actor, play, GI_EYEDROPS, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_EYE_DROPS, 10000.0f, 50.0f);
} }
} }
@ -222,7 +222,7 @@ void EnMk_Wait(EnMk* this, PlayState* play) {
player->actor.textId = this->actor.textId; player->actor.textId = this->actor.textId;
this->actionFunc = func_80AACA40; this->actionFunc = func_80AACA40;
} else { } else {
if (INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYEDROPS) { if (INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYE_DROPS) {
player->actor.textId = 0x4032; player->actor.textId = 0x4032;
this->actionFunc = func_80AACA40; this->actionFunc = func_80AACA40;
} else { } else {
@ -247,13 +247,13 @@ void EnMk_Wait(EnMk* this, PlayState* play) {
} }
} }
break; break;
case EXCH_ITEM_FROG: case EXCH_ITEM_EYEBALL_FROG:
player->actor.textId = 0x4019; player->actor.textId = 0x4019;
this->actionFunc = func_80AACEE8; this->actionFunc = func_80AACEE8;
Animation_Change(&this->skelAnime, &object_mk_Anim_000368, 1.0f, 0.0f, Animation_Change(&this->skelAnime, &object_mk_Anim_000368, 1.0f, 0.0f,
Animation_GetLastFrame(&object_mk_Anim_000368), ANIMMODE_ONCE, -4.0f); Animation_GetLastFrame(&object_mk_Anim_000368), ANIMMODE_ONCE, -4.0f);
this->flags &= ~2; this->flags &= ~2;
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
func_80078884(NA_SE_SY_TRE_BOX_APPEAR); func_80078884(NA_SE_SY_TRE_BOX_APPEAR);
break; break;
default: default:
@ -273,7 +273,7 @@ void EnMk_Wait(EnMk* this, PlayState* play) {
angle = this->actor.yawTowardsPlayer - this->actor.shape.rot.y; angle = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
if ((ABS(angle) < 0x2151) && (this->actor.xzDistToPlayer < 100.0f)) { if ((ABS(angle) < 0x2151) && (this->actor.xzDistToPlayer < 100.0f)) {
func_8002F298(&this->actor, play, 100.0f, EXCH_ITEM_FROG); func_8002F298(&this->actor, play, 100.0f, EXCH_ITEM_EYEBALL_FROG);
this->flags |= 1; this->flags |= 1;
} }
} }

View file

@ -103,20 +103,20 @@ void func_80AAEF70(EnMm2* this, PlayState* play) {
if (!GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) { if (!GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
this->actor.textId = 0x6086; this->actor.textId = 0x6086;
} else if (GET_INFTABLE(INFTABLE_17F)) { } else if (GET_INFTABLE(INFTABLE_17F)) {
if (GET_EVENTINF(EVENTINF_10)) { if (GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) {
this->actor.textId = 0x6082; this->actor.textId = 0x6082;
} else if (gSaveContext.timer2State != 0) { } else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) {
this->actor.textId = 0x6076; this->actor.textId = 0x6076;
} else if (HIGH_SCORE(HS_MARATHON) == 158) { } else if (HIGH_SCORE(HS_MARATHON) == 158) {
this->actor.textId = 0x607E; this->actor.textId = 0x607E;
} else { } else {
this->actor.textId = 0x6081; this->actor.textId = 0x6081;
} }
} else if (gSaveContext.timer2State) { } else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) {
this->actor.textId = 0x6076; this->actor.textId = 0x6076;
} else { } else {
this->actor.textId = 0x607D; this->actor.textId = 0x607D;
CLEAR_EVENTINF(EVENTINF_10); CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
HIGH_SCORE(HS_MARATHON) = 158; HIGH_SCORE(HS_MARATHON) = 158;
} }
} }
@ -149,7 +149,7 @@ void EnMm2_Init(Actor* thisx, PlayState* play2) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} }
if (this->actor.params == 1) { if (this->actor.params == 1) {
if (!GET_INFTABLE(INFTABLE_17F) || !GET_EVENTINF(EVENTINF_10)) { if (!GET_INFTABLE(INFTABLE_17F) || !GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) {
osSyncPrintf(VT_FGCOL(CYAN) " マラソン 開始されていない \n" VT_RST "\n"); osSyncPrintf(VT_FGCOL(CYAN) " マラソン 開始されていない \n" VT_RST "\n");
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} }
@ -193,8 +193,8 @@ void func_80AAF330(EnMm2* this, PlayState* play) {
if (!(this->unk_1F4 & 2)) { if (!(this->unk_1F4 & 2)) {
Message_CloseTextbox(play); Message_CloseTextbox(play);
} }
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
CLEAR_EVENTINF(EVENTINF_10); CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
} }
} }
@ -209,7 +209,7 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) {
case 0: case 0:
Message_ContinueTextbox(play, 0x607F); Message_ContinueTextbox(play, 0x607F);
this->actor.textId = 0x607F; this->actor.textId = 0x607F;
SET_EVENTINF(EVENTINF_10); SET_EVENTINF(EVENTINF_MARATHON_ACTIVE);
break; break;
case 1: case 1:
Message_ContinueTextbox(play, 0x6080); Message_ContinueTextbox(play, 0x6080);
@ -219,14 +219,14 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) {
if (this->unk_1F4 & 4) { if (this->unk_1F4 & 4) {
if (1) {} if (1) {}
this->unk_1F4 &= ~4; this->unk_1F4 &= ~4;
HIGH_SCORE(HS_MARATHON) += 1; HIGH_SCORE(HS_MARATHON)++;
} }
} }
return; return;
case 0x6081: case 0x6081:
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) { if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
this->unk_1F4 |= 4; this->unk_1F4 |= 4;
HIGH_SCORE(HS_MARATHON) -= 1; HIGH_SCORE(HS_MARATHON)--;
Message_ContinueTextbox(play, 0x607E); Message_ContinueTextbox(play, 0x607E);
this->actor.textId = 0x607E; this->actor.textId = 0x607E;
} }
@ -235,7 +235,7 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) {
if (Actor_TextboxIsClosing(&this->actor, play)) { if (Actor_TextboxIsClosing(&this->actor, play)) {
if (this->actor.textId == 0x607F) { if (this->actor.textId == 0x607F) {
func_80088AA0(0); Interface_SetSubTimer(0);
this->actionFunc = func_80AAF57C; this->actionFunc = func_80AAF57C;
} else { } else {
this->actionFunc = func_80AAF57C; this->actionFunc = func_80AAF57C;
@ -266,19 +266,20 @@ void func_80AAF668(EnMm2* this, PlayState* play) {
this->actor.world.rot.y = -0x3E80; this->actor.world.rot.y = -0x3E80;
this->actor.shape.rot.y = this->actor.world.rot.y; this->actor.shape.rot.y = this->actor.world.rot.y;
SkelAnime_Update(&this->skelAnime); SkelAnime_Update(&this->skelAnime);
if (((void)0, gSaveContext.timer2Value) < HIGH_SCORE(HS_MARATHON)) { if (((void)0, gSaveContext.subTimerSeconds) < HIGH_SCORE(HS_MARATHON)) {
this->actor.textId = 0x6085; this->actor.textId = 0x6085;
} else { } else {
this->actor.textId = 0x6084; this->actor.textId = 0x6084;
} }
if (func_80AAF224(this, play, func_80AAF5EC)) { if (func_80AAF224(this, play, func_80AAF5EC)) {
this->unk_1F6 = 0; this->unk_1F6 = 0;
if (((void)0, gSaveContext.timer2Value) < HIGH_SCORE(HS_MARATHON)) { if (((void)0, gSaveContext.subTimerSeconds) < HIGH_SCORE(HS_MARATHON)) {
HIGH_SCORE(HS_MARATHON) = gSaveContext.timer2Value; HIGH_SCORE(HS_MARATHON) = gSaveContext.subTimerSeconds;
} }
} else { } else {
LOG_HEX("((z_common_data.event_inf[1]) & (0x0001))", GET_EVENTINF(EVENTINF_10), "../z_en_mm2.c", 541); LOG_HEX("((z_common_data.event_inf[1]) & (0x0001))", GET_EVENTINF(EVENTINF_MARATHON_ACTIVE), "../z_en_mm2.c",
if (!GET_EVENTINF(EVENTINF_10)) { 541);
if (!GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) {
this->unk_1F4 |= 2; this->unk_1F4 |= 2;
this->unk_1F4 &= ~1; this->unk_1F4 &= ~1;
EnMm2_ChangeAnim(this, RM2_ANIM_STAND, &this->previousAnimation); EnMm2_ChangeAnim(this, RM2_ANIM_STAND, &this->previousAnimation);

View file

@ -128,7 +128,7 @@ void EnMs_Talk(EnMs* this, PlayState* play) {
Message_ContinueTextbox(play, 0x4069); // not enough rupees text Message_ContinueTextbox(play, 0x4069); // not enough rupees text
return; return;
} }
func_8002F434(&this->actor, play, GI_BEAN, 90.0f, 10.0f); func_8002F434(&this->actor, play, GI_MAGIC_BEAN, 90.0f, 10.0f);
this->actionFunc = EnMs_Sell; this->actionFunc = EnMs_Sell;
return; return;
case 1: // no case 1: // no
@ -145,7 +145,7 @@ void EnMs_Sell(EnMs* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->actionFunc = EnMs_TalkAfterPurchase; this->actionFunc = EnMs_TalkAfterPurchase;
} else { } else {
func_8002F434(&this->actor, play, GI_BEAN, 90.0f, 10.0f); func_8002F434(&this->actor, play, GI_MAGIC_BEAN, 90.0f, 10.0f);
} }
} }

View file

@ -308,8 +308,8 @@ void func_80ABA654(EnNiwLady* this, PlayState* play) {
this->unk_26E = 0xB; this->unk_26E = 0xB;
if (!GET_ITEMGETINF(ITEMGETINF_0C)) { if (!GET_ITEMGETINF(ITEMGETINF_0C)) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->getItemId = GI_BOTTLE; this->getItemId = GI_BOTTLE_EMPTY;
func_8002F434(&this->actor, play, GI_BOTTLE, 100.0f, 50.0f); func_8002F434(&this->actor, play, GI_BOTTLE_EMPTY, 100.0f, 50.0f);
this->actionFunc = func_80ABAC00; this->actionFunc = func_80ABAC00;
return; return;
} }

View file

@ -698,11 +698,11 @@ void EnPoField_SoulInteract(EnPoField* this, PlayState* play) {
if (Inventory_HasEmptyBottle()) { if (Inventory_HasEmptyBottle()) {
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_PO_BIG_GET); Audio_PlayActorSfx2(&this->actor, NA_SE_EN_PO_BIG_GET);
if (this->actor.params == 0) { if (this->actor.params == 0) {
Item_Give(play, ITEM_POE); Item_Give(play, ITEM_BOTTLE_POE);
this->actor.textId = 0x5008; this->actor.textId = 0x5008;
} else { } else {
this->actor.textId = 0x508F; this->actor.textId = 0x508F;
Item_Give(play, ITEM_BIG_POE); Item_Give(play, ITEM_BOTTLE_BIG_POE);
Flags_SetSwitch(play, sSpawnSwitchFlags[this->spawnFlagIndex]); Flags_SetSwitch(play, sSpawnSwitchFlags[this->spawnFlagIndex]);
} }
} else { } else {

View file

@ -137,7 +137,7 @@ void EnPoRelay_SetupRace(EnPoRelay* this) {
EnPoRelay_Vec3sToVec3f(&vec, &D_80AD8C30[this->pathIndex]); EnPoRelay_Vec3sToVec3f(&vec, &D_80AD8C30[this->pathIndex]);
this->actionTimer = ((s16)(this->actor.shape.rot.y - this->actor.world.rot.y - 0x8000) >> 0xB) % 32U; this->actionTimer = ((s16)(this->actor.shape.rot.y - this->actor.world.rot.y - 0x8000) >> 0xB) % 32U;
func_80088B34(0); Interface_SetTimer(0);
this->hookshotSlotFull = INV_CONTENT(ITEM_HOOKSHOT) != ITEM_NONE; this->hookshotSlotFull = INV_CONTENT(ITEM_HOOKSHOT) != ITEM_NONE;
this->unk_19A = Actor_WorldYawTowardPoint(&this->actor, &vec); this->unk_19A = Actor_WorldYawTowardPoint(&this->actor, &vec);
this->actor.flags |= ACTOR_FLAG_27; this->actor.flags |= ACTOR_FLAG_27;
@ -258,7 +258,7 @@ void EnPoRelay_EndRace(EnPoRelay* this, PlayState* play) {
this->actionFunc = EnPoRelay_Talk2; this->actionFunc = EnPoRelay_Talk2;
} else if (play->roomCtx.curRoom.num == 5) { } else if (play->roomCtx.curRoom.num == 5) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} else if (Actor_IsFacingAndNearPlayer(&this->actor, 150.0f, 0x3000)) { } else if (Actor_IsFacingAndNearPlayer(&this->actor, 150.0f, 0x3000)) {
this->actor.textId = this->textId; this->actor.textId = this->textId;
func_8002F2CC(&this->actor, play, 250.0f); func_8002F2CC(&this->actor, play, 250.0f);
@ -279,7 +279,7 @@ void EnPoRelay_Talk2(EnPoRelay* this, PlayState* play) {
Message_ContinueTextbox(play, this->actor.textId); Message_ContinueTextbox(play, this->actor.textId);
} }
} else if (Actor_TextboxIsClosing(&this->actor, play)) { } else if (Actor_TextboxIsClosing(&this->actor, play)) {
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
this->actionTimer = 0; this->actionTimer = 0;
this->actionFunc = EnPoRelay_DisappearAndReward; this->actionFunc = EnPoRelay_DisappearAndReward;
} }
@ -326,17 +326,17 @@ void EnPoRelay_DisappearAndReward(EnPoRelay* this, PlayState* play) {
sp60.x = this->actor.world.pos.x; sp60.x = this->actor.world.pos.x;
sp60.y = this->actor.floorHeight; sp60.y = this->actor.floorHeight;
sp60.z = this->actor.world.pos.z; sp60.z = this->actor.world.pos.z;
if (gSaveContext.timer1Value < HIGH_SCORE(HS_DAMPE_RACE)) { if (gSaveContext.timerSeconds < HIGH_SCORE(HS_DAMPE_RACE)) {
HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timer1Value; HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timerSeconds;
} }
if (Flags_GetCollectible(play, this->actor.params) == 0 && gSaveContext.timer1Value <= 60) { if (!Flags_GetCollectible(play, this->actor.params) && (gSaveContext.timerSeconds <= 60)) {
Item_DropCollectible2(play, &sp60, (this->actor.params << 8) + (0x4000 | ITEM00_HEART_PIECE)); Item_DropCollectible2(play, &sp60, (this->actor.params << 8) + (0x4000 | ITEM00_HEART_PIECE));
} else { } else {
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ITEM00, sp60.x, sp60.y, sp60.z, 0, 0, 0, 2); Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ITEM00, sp60.x, sp60.y, sp60.z, 0, 0, 0, 2);
} }
} else { } else {
Flags_SetTempClear(play, 4); Flags_SetTempClear(play, 4);
HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timer1Value; HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timerSeconds;
} }
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} }

View file

@ -816,7 +816,7 @@ void EnPoh_TalkRegular(EnPoh* this, PlayState* play) {
if (play->msgCtx.choiceIndex == 0) { if (play->msgCtx.choiceIndex == 0) {
if (Inventory_HasEmptyBottle()) { if (Inventory_HasEmptyBottle()) {
this->actor.textId = 0x5008; this->actor.textId = 0x5008;
Item_Give(play, ITEM_POE); Item_Give(play, ITEM_BOTTLE_POE);
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_PO_BIG_GET); Audio_PlayActorSfx2(&this->actor, NA_SE_EN_PO_BIG_GET);
} else { } else {
this->actor.textId = 0x5006; this->actor.textId = 0x5006;

View file

@ -397,7 +397,7 @@ void EnSkj_Init(Actor* thisx, PlayState* play2) {
default: default:
this->actor.params = type; this->actor.params = type;
if (((this->actor.params != 0) && (this->actor.params != 1)) && (this->actor.params != 2)) { if (((this->actor.params != 0) && (this->actor.params != 1)) && (this->actor.params != 2)) {
if (INV_CONTENT(ITEM_TRADE_ADULT) < ITEM_SAW) { if (INV_CONTENT(ITEM_TRADE_ADULT) < ITEM_POACHERS_SAW) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
return; return;
} }

View file

@ -489,7 +489,7 @@ void func_80B12460(EnSyatekiNiw* this, PlayState* play) {
void func_80B128D8(EnSyatekiNiw* this, PlayState* play) { void func_80B128D8(EnSyatekiNiw* this, PlayState* play) {
if (this->unk_25E == 1) { if (this->unk_25E == 1) {
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} }
} }

View file

@ -278,7 +278,7 @@ void EnTa_Destroy(Actor* thisx, PlayState* play) {
if (this->actor.params != ENTA_IN_KAKARIKO && this->actor.params != ENTA_RETURNED_FROM_KAKARIKO && if (this->actor.params != ENTA_IN_KAKARIKO && this->actor.params != ENTA_RETURNED_FROM_KAKARIKO &&
play->sceneId == SCENE_SOUKO) { play->sceneId == SCENE_SOUKO) {
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
} }
if (this->stateFlags & TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY) { if (this->stateFlags & TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY) {
@ -756,7 +756,7 @@ void EnTa_RunCuccoGame(EnTa* this, PlayState* play) {
switch (EnTa_GetSuperCuccosCount(this, play)) { switch (EnTa_GetSuperCuccosCount(this, play)) {
case 1: case 1:
// Last cucco found, end the game // Last cucco found, end the game
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
func_8002DF54(play, &this->actor, 1); func_8002DF54(play, &this->actor, 1);
Message_StartTextbox(play, 0x2084, &this->actor); Message_StartTextbox(play, 0x2084, &this->actor);
@ -796,15 +796,15 @@ void EnTa_RunCuccoGame(EnTa* this, PlayState* play) {
} }
} }
if (gSaveContext.timer1Value == 10) { if (gSaveContext.timerSeconds == 10) {
Audio_SetFastTempoForTimedMinigame(); Audio_SetFastTempoForTimedMinigame();
} }
if (gSaveContext.timer1Value == 0 && !Play_InCsMode(play)) { if ((gSaveContext.timerSeconds == 0) && !Play_InCsMode(play)) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0); SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
this->stateFlags &= ~TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY; this->stateFlags &= ~TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY;
func_80078884(NA_SE_SY_FOUND); func_80078884(NA_SE_SY_FOUND);
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
func_8002DF54(play, &this->actor, 1); func_8002DF54(play, &this->actor, 1);
// Time's up text // Time's up text
@ -881,7 +881,7 @@ void EnTa_StartingCuccoGame3(EnTa* this, PlayState* play) {
Animation_GetLastFrame(&gTalonSitHandsUpAnim), ANIMMODE_ONCE, 0.0f); Animation_GetLastFrame(&gTalonSitHandsUpAnim), ANIMMODE_ONCE, 0.0f);
this->timer = 50; this->timer = 50;
func_80088B34(30); Interface_SetTimer(30);
func_800F5ACC(NA_BGM_TIMED_MINI_GAME); func_800F5ACC(NA_BGM_TIMED_MINI_GAME);
this->stateFlags |= TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY; this->stateFlags |= TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY;
Message_CloseTextbox(play); Message_CloseTextbox(play);
@ -947,7 +947,7 @@ void EnTa_GiveItemInLonLonHouse(EnTa* this, PlayState* play) {
} else if (this->stateFlags & TALON_STATE_FLAG_GIVING_MILK_REFILL) { } else if (this->stateFlags & TALON_STATE_FLAG_GIVING_MILK_REFILL) {
func_8002F434(&this->actor, play, GI_MILK, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_MILK, 10000.0f, 50.0f);
} else { } else {
func_8002F434(&this->actor, play, GI_MILK_BOTTLE, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_BOTTLE_MILK_FULL, 10000.0f, 50.0f);
} }
this->stateFlags |= TALON_STATE_FLAG_TRACKING_PLAYER; this->stateFlags |= TALON_STATE_FLAG_TRACKING_PLAYER;
} }
@ -957,7 +957,7 @@ void EnTa_TalkAfterCuccoGameFirstWon(EnTa* this, PlayState* play) {
Message_CloseTextbox(play); Message_CloseTextbox(play);
this->stateFlags &= ~TALON_STATE_FLAG_GIVING_MILK_REFILL; this->stateFlags &= ~TALON_STATE_FLAG_GIVING_MILK_REFILL;
EnTa_SetupAction(this, EnTa_GiveItemInLonLonHouse, EnTa_AnimRunToEnd); EnTa_SetupAction(this, EnTa_GiveItemInLonLonHouse, EnTa_AnimRunToEnd);
func_8002F434(&this->actor, play, GI_MILK_BOTTLE, 10000.0f, 50.0f); func_8002F434(&this->actor, play, GI_BOTTLE_MILK_FULL, 10000.0f, 50.0f);
} }
} }

View file

@ -311,7 +311,7 @@ void func_80B20768(EnToryo* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->unk_1E4 = 5; this->unk_1E4 = 5;
} else { } else {
func_8002F434(&this->actor, play, GI_SWORD_BROKEN, 100.0f, 10.0f); func_8002F434(&this->actor, play, GI_BROKEN_GORONS_SWORD, 100.0f, 10.0f);
} }
return; return;
} }
@ -330,7 +330,7 @@ void func_80B20768(EnToryo* this, PlayState* play) {
Actor_GetScreenPos(play, &this->actor, &sp32, &sp30); Actor_GetScreenPos(play, &this->actor, &sp32, &sp30);
if ((sp32 >= 0) && (sp32 < 0x141) && (sp30 >= 0) && (sp30 < 0xF1)) { if ((sp32 >= 0) && (sp32 < 0x141) && (sp30 >= 0) && (sp30 < 0xF1)) {
this->actor.textId = func_80B206A0(this, play); this->actor.textId = func_80B206A0(this, play);
func_8002F298(&this->actor, play, 100.0f, EXCH_ITEM_SAW); func_8002F298(&this->actor, play, 100.0f, EXCH_ITEM_POACHERS_SAW);
} }
} }
} }

View file

@ -511,7 +511,7 @@ void func_80B4BF2C(EnZl1* this, PlayState* play) {
if ((Message_GetState(msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) { if ((Message_GetState(msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
this->actor.textId = 0xFFFF; this->actor.textId = 0xFFFF;
play->talkWithPlayer(play, &this->actor); play->talkWithPlayer(play, &this->actor);
func_8002F434(&this->actor, play, GI_LETTER_ZELDA, 120.0f, 10.0f); func_8002F434(&this->actor, play, GI_ZELDAS_LETTER, 120.0f, 10.0f);
play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING; play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING;
play->msgCtx.stateTimer = 4; play->msgCtx.stateTimer = 4;
this->unk_1E2++; this->unk_1E2++;
@ -526,7 +526,7 @@ void func_80B4BF2C(EnZl1* this, PlayState* play) {
this->actor.parent = NULL; this->actor.parent = NULL;
this->unk_1E2++; this->unk_1E2++;
} else { } else {
func_8002F434(&this->actor, play, GI_LETTER_ZELDA, 120.0f, 10.0f); func_8002F434(&this->actor, play, GI_ZELDAS_LETTER, 120.0f, 10.0f);
} }
break; break;
case 3: case 3:

View file

@ -1607,7 +1607,7 @@ void EnZl2_Init(Actor* thisx, PlayState* play) {
Audio_SetSfxBanksMute(0x6F); Audio_SetSfxBanksMute(0x6F);
break; break;
case 4: case 4:
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
break; break;
} }
} }

View file

@ -2482,7 +2482,7 @@ s32 func_80B59698(EnZl3* this, PlayState* play) {
u8 spawn = play->spawn; u8 spawn = play->spawn;
if ((func_80B54DB4(this) == 0x20) && (spawn == 0) && if ((func_80B54DB4(this) == 0x20) && (spawn == 0) &&
((gSaveContext.timer2Value <= 0) || (gSaveContext.timer2State == 0))) { ((gSaveContext.subTimerSeconds <= 0) || (gSaveContext.subTimerState == SUBTIMER_STATE_OFF))) {
return 1; return 1;
} }
} }
@ -2497,7 +2497,7 @@ s32 func_80B59768(EnZl3* this, PlayState* play) {
if (cond) { if (cond) {
u8 spawn = play->spawn; u8 spawn = play->spawn;
if ((func_80B54DB4(this) == 0x20) && (spawn == 0) && (gSaveContext.timer2Value <= 0)) { if ((func_80B54DB4(this) == 0x20) && (spawn == 0) && (gSaveContext.subTimerSeconds <= 0)) {
return 1; return 1;
} }
} }
@ -2524,7 +2524,7 @@ void func_80B59828(EnZl3* this, PlayState* play) {
} }
if (func_80B59698(this, play) != 0) { if (func_80B59698(this, play) != 0) {
func_80088AA0(180); Interface_SetSubTimer(180);
func_80B53468(); func_80B53468();
gSaveContext.healthAccumulator = 320; gSaveContext.healthAccumulator = 320;
Magic_Fill(play); Magic_Fill(play);
@ -2569,7 +2569,7 @@ void func_80B59AD0(EnZl3* this, PlayState* play) {
Actor* thisx = &this->actor; // unused, necessary to use 'this' first to fix regalloc Actor* thisx = &this->actor; // unused, necessary to use 'this' first to fix regalloc
Flags_SetSwitch(play, 0x36); Flags_SetSwitch(play, 0x36);
func_80088AA0(180); Interface_SetSubTimer(180);
func_80B54EA4(this, play); func_80B54EA4(this, play);
func_80B53614(this, play); func_80B53614(this, play);
CLEAR_EVENTCHKINF(EVENTCHKINF_C7); CLEAR_EVENTCHKINF(EVENTCHKINF_C7);
@ -2657,7 +2657,7 @@ void EnZl3_Init(Actor* thisx, PlayState* play) {
switch (func_80B54DD4(this)) { switch (func_80B54DD4(this)) {
case 1: case 1:
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
break; break;
case 3: case 3:
func_80B59A80(this, play); func_80B59A80(this, play);

View file

@ -1114,7 +1114,7 @@ s32 EnZl4_CsMakePlan(EnZl4* this, PlayState* play) {
Camera_ChangeSetting(GET_ACTIVE_CAM(play), CAM_SET_NORMAL0); Camera_ChangeSetting(GET_ACTIVE_CAM(play), CAM_SET_NORMAL0);
this->talkState = 7; this->talkState = 7;
play->talkWithPlayer(play, &this->actor); play->talkWithPlayer(play, &this->actor);
func_8002F434(&this->actor, play, GI_LETTER_ZELDA, fabsf(this->actor.xzDistToPlayer) + 1.0f, func_8002F434(&this->actor, play, GI_ZELDAS_LETTER, fabsf(this->actor.xzDistToPlayer) + 1.0f,
fabsf(this->actor.yDistToPlayer) + 1.0f); fabsf(this->actor.yDistToPlayer) + 1.0f);
play->msgCtx.stateTimer = 4; play->msgCtx.stateTimer = 4;
play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING; play->msgCtx.msgMode = MSGMODE_TEXT_CLOSING;
@ -1125,7 +1125,7 @@ s32 EnZl4_CsMakePlan(EnZl4* this, PlayState* play) {
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ZL4_ANIM_0); Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ZL4_ANIM_0);
this->talkState++; this->talkState++;
} else { } else {
func_8002F434(&this->actor, play, GI_LETTER_ZELDA, fabsf(this->actor.xzDistToPlayer) + 1.0f, func_8002F434(&this->actor, play, GI_ZELDAS_LETTER, fabsf(this->actor.xzDistToPlayer) + 1.0f,
fabsf(this->actor.yDistToPlayer) + 1.0f); fabsf(this->actor.yDistToPlayer) + 1.0f);
} }
// no break here is required for matching // no break here is required for matching

View file

@ -4982,7 +4982,7 @@ void Fishing_HandleOwnerDialog(Fishing* this, PlayState* play) {
} else { } else {
if ((D_80B7E078 >= 60.0f) && !(HIGH_SCORE(HS_FISHING) & 0x800)) { if ((D_80B7E078 >= 60.0f) && !(HIGH_SCORE(HS_FISHING) & 0x800)) {
HIGH_SCORE(HS_FISHING) |= 0x800; HIGH_SCORE(HS_FISHING) |= 0x800;
getItemId = GI_SCALE_GOLD; getItemId = GI_SCALE_GOLDEN;
sSinkingLureLocation = (u8)Rand_ZeroFloat(3.999f) + 1; sSinkingLureLocation = (u8)Rand_ZeroFloat(3.999f) + 1;
} }
} }
@ -5043,7 +5043,7 @@ void Fishing_HandleOwnerDialog(Fishing* this, PlayState* play) {
if (Actor_HasParent(&this->actor, play)) { if (Actor_HasParent(&this->actor, play)) {
this->unk_15C = 24; this->unk_15C = 24;
} else { } else {
func_8002F434(&this->actor, play, GI_SCALE_GOLD, 2000.0f, 1000.0f); func_8002F434(&this->actor, play, GI_SCALE_GOLDEN, 2000.0f, 1000.0f);
} }
break; break;

View file

@ -53,37 +53,37 @@ static s16 sObjectIds[] = {
// Indices passed to the item table in z_draw.c // Indices passed to the item table in z_draw.c
static s16 sDrawItemIndices[] = { static s16 sDrawItemIndices[] = {
GID_BOTTLE, // ITEM_ETC_BOTTLE GID_BOTTLE_EMPTY, // ITEM_ETC_BOTTLE
GID_LETTER_RUTO, // ITEM_ETC_LETTER GID_BOTTLE_RUTOS_LETTER, // ITEM_ETC_LETTER
GID_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN GID_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN
GID_QUIVER_40, // ITEM_ETC_QUIVER GID_QUIVER_40, // ITEM_ETC_QUIVER
GID_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER GID_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER
GID_SCALE_GOLDEN, // ITEM_ETC_SCALE_GOLD GID_SCALE_GOLDEN, // ITEM_ETC_SCALE_GOLD
GID_KEY_SMALL, // ITEM_ETC_KEY_SMALL GID_SMALL_KEY, // ITEM_ETC_KEY_SMALL
GID_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE GID_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE
GID_RUPEE_GREEN, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME GID_RUPEE_GREEN, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME
GID_RUPEE_BLUE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME GID_RUPEE_BLUE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME
GID_RUPEE_RED, // ITEM_ETC_RUPEE_RED_CHEST_GAME GID_RUPEE_RED, // ITEM_ETC_RUPEE_RED_CHEST_GAME
GID_RUPEE_PURPLE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME GID_RUPEE_PURPLE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME
GID_HEART_PIECE, // ITEM_ETC_HEART_PIECE_CHEST_GAME GID_HEART_PIECE, // ITEM_ETC_HEART_PIECE_CHEST_GAME
GID_KEY_SMALL, // ITEM_ETC_KEY_SMALL_CHEST_GAME GID_SMALL_KEY, // ITEM_ETC_KEY_SMALL_CHEST_GAME
}; };
static s16 sGetItemIds[] = { static s16 sGetItemIds[] = {
GI_BOTTLE, // ITEM_ETC_BOTTLE GI_BOTTLE_EMPTY, // ITEM_ETC_BOTTLE
GI_LETTER_RUTO, // ITEM_ETC_LETTER GI_BOTTLE_RUTOS_LETTER, // ITEM_ETC_LETTER
GI_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN GI_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN
GI_QUIVER_40, // ITEM_ETC_QUIVER GI_QUIVER_40, // ITEM_ETC_QUIVER
GI_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER GI_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER
GI_SCALE_GOLD, // ITEM_ETC_SCALE_GOLD GI_SCALE_GOLDEN, // ITEM_ETC_SCALE_GOLD
GI_KEY_SMALL, // ITEM_ETC_KEY_SMALL GI_SMALL_KEY, // ITEM_ETC_KEY_SMALL
GI_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE GI_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE
GI_NONE, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME GI_NONE, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME
GI_NONE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME GI_NONE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME
GI_NONE, // ITEM_ETC_RUPEE_RED_CHEST_GAME GI_NONE, // ITEM_ETC_RUPEE_RED_CHEST_GAME
GI_NONE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME GI_NONE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME
GI_NONE, // ITEM_ETC_HEART_PIECE_CHEST_GAME GI_NONE, // ITEM_ETC_HEART_PIECE_CHEST_GAME
GI_NONE, // ITEM_ETC_KEY_SMALL_CHEST_GAME GI_NONE, // ITEM_ETC_KEY_SMALL_CHEST_GAME
}; };
void ItemEtcetera_SetupAction(ItemEtcetera* this, ItemEtceteraActionFunc actionFunc) { void ItemEtcetera_SetupAction(ItemEtcetera* this, ItemEtceteraActionFunc actionFunc) {

View file

@ -180,7 +180,7 @@ void ItemOcarina_WaitInWater(ItemOcarina* this, PlayState* play) {
this->actionFunc = ItemOcarina_StartSoTCutscene; this->actionFunc = ItemOcarina_StartSoTCutscene;
this->actor.draw = NULL; this->actor.draw = NULL;
} else { } else {
func_8002F434(&this->actor, play, GI_OCARINA_OOT, 30.0f, 50.0f); func_8002F434(&this->actor, play, GI_OCARINA_OF_TIME, 30.0f, 50.0f);
if ((play->gameplayFrames & 13) == 0) { if ((play->gameplayFrames & 13) == 0) {
EffectSsBubble_Spawn(play, &this->actor.world.pos, 0.0f, 0.0f, 10.0f, 0.13f); EffectSsBubble_Spawn(play, &this->actor.world.pos, 0.0f, 0.0f, 10.0f, 0.13f);
@ -199,5 +199,5 @@ void ItemOcarina_Draw(Actor* thisx, PlayState* play) {
func_8002EBCC(thisx, play, 0); func_8002EBCC(thisx, play, 0);
func_8002ED80(thisx, play, 0); func_8002ED80(thisx, play, 0);
GetItem_Draw(play, GID_OCARINA_TIME); GetItem_Draw(play, GID_OCARINA_OF_TIME);
} }

View file

@ -538,12 +538,12 @@ void ObjBean_SetupWaitForBean(ObjBean* this) {
void ObjBean_WaitForBean(ObjBean* this, PlayState* play) { void ObjBean_WaitForBean(ObjBean* this, PlayState* play) {
if (Actor_ProcessTalkRequest(&this->dyna.actor, play)) { if (Actor_ProcessTalkRequest(&this->dyna.actor, play)) {
if (func_8002F368(play) == EXCH_ITEM_BEAN) { if (func_8002F368(play) == EXCH_ITEM_MAGIC_BEAN) {
func_80B8FE00(this); func_80B8FE00(this);
Flags_SetSwitch(play, this->dyna.actor.params & 0x3F); Flags_SetSwitch(play, this->dyna.actor.params & 0x3F);
} }
} else { } else {
func_8002F298(&this->dyna.actor, play, 40.0f, EXCH_ITEM_BEAN); func_8002F298(&this->dyna.actor, play, 40.0f, EXCH_ITEM_MAGIC_BEAN);
} }
} }

View file

@ -49,14 +49,14 @@ void ObjRoomtimer_Init(Actor* thisx, PlayState* play) {
void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) { void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) {
ObjRoomtimer* this = (ObjRoomtimer*)thisx; ObjRoomtimer* this = (ObjRoomtimer*)thisx;
if ((this->actor.params != 0x3FF) && (gSaveContext.timer1Value > 0)) { if ((this->actor.params != 0x3FF) && (gSaveContext.timerSeconds > 0)) {
gSaveContext.timer1State = 10; gSaveContext.timerState = TIMER_STATE_STOP;
} }
} }
void func_80B9D054(ObjRoomtimer* this, PlayState* play) { void func_80B9D054(ObjRoomtimer* this, PlayState* play) {
if (this->actor.params != 0x3FF) { if (this->actor.params != 0x3FF) {
func_80088B34(this->actor.params); Interface_SetTimer(this->actor.params);
} }
Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTORCAT_PROP); Actor_ChangeCategory(play, &play->actorCtx, &this->actor, ACTORCAT_PROP);
@ -66,19 +66,20 @@ void func_80B9D054(ObjRoomtimer* this, PlayState* play) {
void func_80B9D0B0(ObjRoomtimer* this, PlayState* play) { void func_80B9D0B0(ObjRoomtimer* this, PlayState* play) {
if (Flags_GetTempClear(play, this->actor.room)) { if (Flags_GetTempClear(play, this->actor.room)) {
if (this->actor.params != 0x3FF) { if (this->actor.params != 0x3FF) {
gSaveContext.timer1State = 10; gSaveContext.timerState = TIMER_STATE_STOP;
} }
Flags_SetClear(play, this->actor.room); Flags_SetClear(play, this->actor.room);
Flags_SetSwitch(play, this->switchFlag); Flags_SetSwitch(play, this->switchFlag);
func_80078884(NA_SE_SY_CORRECT_CHIME); func_80078884(NA_SE_SY_CORRECT_CHIME);
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
} else { return;
if ((this->actor.params != 0x3FF) && (gSaveContext.timer1Value == 0)) { }
Audio_PlaySfxGeneral(NA_SE_OC_ABYSS, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb); if ((this->actor.params != 0x3FF) && (gSaveContext.timerSeconds == 0)) {
Play_TriggerVoidOut(play); Audio_PlaySfxGeneral(NA_SE_OC_ABYSS, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
Actor_Kill(&this->actor); &gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
} Play_TriggerVoidOut(play);
Actor_Kill(&this->actor);
} }
} }

View file

@ -175,7 +175,7 @@ void ObjSyokudai_Update(Actor* thisx, PlayState* play2) {
if (dmgFlags & (DMG_FIRE | DMG_ARROW_NORMAL)) { if (dmgFlags & (DMG_FIRE | DMG_ARROW_NORMAL)) {
interactionType = 1; interactionType = 1;
} }
} else if (player->heldItemAction == PLAYER_IA_STICK) { } else if (player->heldItemAction == PLAYER_IA_DEKU_STICK) {
Math_Vec3f_Diff(&player->meleeWeaponInfo[0].tip, &this->actor.world.pos, &tipToFlame); Math_Vec3f_Diff(&player->meleeWeaponInfo[0].tip, &this->actor.world.pos, &tipToFlame);
tipToFlame.y -= 67.0f; tipToFlame.y -= 67.0f;
if ((SQ(tipToFlame.x) + SQ(tipToFlame.y) + SQ(tipToFlame.z)) < SQ(20.0f)) { if ((SQ(tipToFlame.x) + SQ(tipToFlame.y) + SQ(tipToFlame.z)) < SQ(20.0f)) {

View file

@ -495,8 +495,8 @@ static u16 D_8085361C[] = {
static GetItemEntry sGetItemTable[] = { static GetItemEntry sGetItemTable[] = {
// GI_BOMBS_5 // GI_BOMBS_5
GET_ITEM(ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
// GI_NUTS_5 // GI_DEKU_NUTS_5
GET_ITEM(ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_NUTS_5, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
// GI_BOMBCHUS_10 // GI_BOMBCHUS_10
GET_ITEM(ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT),
// GI_BOW // GI_BOW
@ -505,74 +505,74 @@ static GetItemEntry sGetItemTable[] = {
GET_ITEM(ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG),
// GI_BOOMERANG // GI_BOOMERANG
GET_ITEM(ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG),
// GI_STICKS_1 // GI_DEKU_STICKS_1
GET_ITEM(ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_STICK, OBJECT_GI_STICK, GID_DEKU_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
// GI_HOOKSHOT // GI_HOOKSHOT
GET_ITEM(ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG),
// GI_LONGSHOT // GI_LONGSHOT
GET_ITEM(ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG),
// GI_LENS // GI_LENS_OF_TRUTH
GET_ITEM(ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_LENS_OF_TRUTH, OBJECT_GI_GLASSES, GID_LENS_OF_TRUTH, 0x39, 0x80, CHEST_ANIM_LONG),
// GI_LETTER_ZELDA // GI_ZELDAS_LETTER
GET_ITEM(ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_ZELDAS_LETTER, OBJECT_GI_LETTER, GID_ZELDAS_LETTER, 0x69, 0x80, CHEST_ANIM_LONG),
// GI_OCARINA_OOT // GI_OCARINA_OF_TIME
GET_ITEM(ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_OCARINA_OF_TIME, OBJECT_GI_OCARINA, GID_OCARINA_OF_TIME, 0x3A, 0x80, CHEST_ANIM_LONG),
// GI_HAMMER // GI_HAMMER
GET_ITEM(ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG),
// GI_COJIRO // GI_COJIRO
GET_ITEM(ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG),
// GI_BOTTLE // GI_BOTTLE_EMPTY
GET_ITEM(ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_EMPTY, OBJECT_GI_BOTTLE, GID_BOTTLE_EMPTY, 0x42, 0x80, CHEST_ANIM_LONG),
// GI_POTION_RED // GI_BOTTLE_POTION_RED
GET_ITEM(ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_POTION_RED, OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG),
// GI_POTION_GREEN // GI_BOTTLE_POTION_GREEN
GET_ITEM(ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_POTION_GREEN, OBJECT_GI_LIQUID, GID_BOTTLE_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG),
// GI_POTION_BLUE // GI_BOTTLE_POTION_BLUE
GET_ITEM(ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_POTION_BLUE, OBJECT_GI_LIQUID, GID_BOTTLE_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG),
// GI_FAIRY // GI_BOTTLE_FAIRY
GET_ITEM(ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE_EMPTY, 0x46, 0x80, CHEST_ANIM_LONG),
// GI_MILK_BOTTLE // GI_BOTTLE_MILK_FULL
GET_ITEM(ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_MILK_FULL, OBJECT_GI_MILK, GID_BOTTLE_MILK_FULL, 0x98, 0x80, CHEST_ANIM_LONG),
// GI_LETTER_RUTO // GI_BOTTLE_RUTOS_LETTER
GET_ITEM(ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_RUTOS_LETTER, OBJECT_GI_BOTTLE_LETTER, GID_BOTTLE_RUTOS_LETTER, 0x99, 0x80, CHEST_ANIM_LONG),
// GI_BEAN // GI_MAGIC_BEAN
GET_ITEM(ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_MAGIC_BEAN, OBJECT_GI_BEAN, GID_MAGIC_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT),
// GI_MASK_SKULL // GI_MASK_SKULL
GET_ITEM(ITEM_MASK_SKULL, OBJECT_GI_SKJ_MASK, GID_MASK_SKULL, 0x10, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_SKULL, OBJECT_GI_SKJ_MASK, GID_MASK_SKULL, 0x10, 0x80, CHEST_ANIM_LONG),
// GI_MASK_SPOOKY // GI_MASK_SPOOKY
GET_ITEM(ITEM_MASK_SPOOKY, OBJECT_GI_REDEAD_MASK, GID_MASK_SPOOKY, 0x11, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_SPOOKY, OBJECT_GI_REDEAD_MASK, GID_MASK_SPOOKY, 0x11, 0x80, CHEST_ANIM_LONG),
// GI_CHICKEN // GI_CHICKEN
GET_ITEM(ITEM_CHICKEN, OBJECT_GI_NIWATORI, GID_CHICKEN, 0x48, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_CHICKEN, OBJECT_GI_NIWATORI, GID_CUCCO, 0x48, 0x80, CHEST_ANIM_LONG),
// GI_MASK_KEATON // GI_MASK_KEATON
GET_ITEM(ITEM_MASK_KEATON, OBJECT_GI_KI_TAN_MASK, GID_MASK_KEATON, 0x12, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_KEATON, OBJECT_GI_KI_TAN_MASK, GID_MASK_KEATON, 0x12, 0x80, CHEST_ANIM_LONG),
// GI_MASK_BUNNY // GI_MASK_BUNNY_HOOD
GET_ITEM(ITEM_MASK_BUNNY, OBJECT_GI_RABIT_MASK, GID_MASK_BUNNY, 0x13, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_BUNNY_HOOD, OBJECT_GI_RABIT_MASK, GID_MASK_BUNNY_HOOD, 0x13, 0x80, CHEST_ANIM_LONG),
// GI_MASK_TRUTH // GI_MASK_TRUTH
GET_ITEM(ITEM_MASK_TRUTH, OBJECT_GI_TRUTH_MASK, GID_MASK_TRUTH, 0x17, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_TRUTH, OBJECT_GI_TRUTH_MASK, GID_MASK_TRUTH, 0x17, 0x80, CHEST_ANIM_LONG),
// GI_POCKET_EGG // GI_POCKET_EGG
GET_ITEM(ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG),
// GI_POCKET_CUCCO // GI_POCKET_CUCCO
GET_ITEM(ITEM_POCKET_CUCCO, OBJECT_GI_NIWATORI, GID_CHICKEN, 0x48, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_POCKET_CUCCO, OBJECT_GI_NIWATORI, GID_CUCCO, 0x48, 0x80, CHEST_ANIM_LONG),
// GI_ODD_MUSHROOM // GI_ODD_MUSHROOM
GET_ITEM(ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG),
// GI_ODD_POTION // GI_ODD_POTION
GET_ITEM(ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG),
// GI_SAW // GI_POACHERS_SAW
GET_ITEM(ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_POACHERS_SAW, OBJECT_GI_SAW, GID_POACHERS_SAW, 0x05, 0x80, CHEST_ANIM_LONG),
// GI_SWORD_BROKEN // GI_BROKEN_GORONS_SWORD
GET_ITEM(ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BROKEN_GORONS_SWORD, OBJECT_GI_BROKENSWORD, GID_BROKEN_GORONS_SWORD, 0x08, 0x80, CHEST_ANIM_LONG),
// GI_PRESCRIPTION // GI_PRESCRIPTION
GET_ITEM(ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG),
// GI_FROG // GI_EYEBALL_FROG
GET_ITEM(ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_EYEBALL_FROG, OBJECT_GI_FROG, GID_EYEBALL_FROG, 0x0D, 0x80, CHEST_ANIM_LONG),
// GI_EYEDROPS // GI_EYE_DROPS
GET_ITEM(ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_EYE_DROPS, OBJECT_GI_EYE_LOTION, GID_EYE_DROPS, 0x0E, 0x80, CHEST_ANIM_LONG),
// GI_CLAIM_CHECK // GI_CLAIM_CHECK
GET_ITEM(ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG),
// GI_SWORD_KOKIRI // GI_SWORD_KOKIRI
GET_ITEM(ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG),
// GI_SWORD_KNIFE // GI_SWORD_KNIFE
GET_ITEM(ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x4B, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_SWORD_BIGGORON, OBJECT_GI_LONGSWORD, GID_SWORD_BIGGORON, 0x4B, 0x80, CHEST_ANIM_LONG),
// GI_SHIELD_DEKU // GI_SHIELD_DEKU
GET_ITEM(ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT), GET_ITEM(ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT),
// GI_SHIELD_HYLIAN // GI_SHIELD_HYLIAN
@ -597,52 +597,52 @@ static GetItemEntry sGetItemTable[] = {
GET_ITEM(ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOMB_BAG_30, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_30, 0x59, 0x80, CHEST_ANIM_LONG),
// GI_BOMB_BAG_40 // GI_BOMB_BAG_40
GET_ITEM(ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG),
// GI_GAUNTLETS_SILVER // GI_SILVER_GAUNTLETS
GET_ITEM(ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_STRENGTH_SILVER_GAUNTLETS, OBJECT_GI_GLOVES, GID_SILVER_GAUNTLETS, 0x5B, 0x80, CHEST_ANIM_LONG),
// GI_GAUNTLETS_GOLD // GI_GOLD_GAUNTLETS
GET_ITEM(ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_STRENGTH_GOLD_GAUNTLETS, OBJECT_GI_GLOVES, GID_GOLD_GAUNTLETS, 0x5C, 0x80, CHEST_ANIM_LONG),
// GI_SCALE_SILVER // GI_SCALE_SILVER
GET_ITEM(ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_SCALE_SILVER, OBJECT_GI_SCALE, GID_SCALE_SILVER, 0xCD, 0x80, CHEST_ANIM_LONG),
// GI_SCALE_GOLD // GI_SCALE_GOLDEN
GET_ITEM(ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_SCALE_GOLDEN, OBJECT_GI_SCALE, GID_SCALE_GOLDEN, 0xCE, 0x80, CHEST_ANIM_LONG),
// GI_STONE_OF_AGONY // GI_STONE_OF_AGONY
GET_ITEM(ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG),
// GI_GERUDO_CARD // GI_GERUDOS_CARD
GET_ITEM(ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_GERUDOS_CARD, OBJECT_GI_GERUDO, GID_GERUDOS_CARD, 0x7B, 0x80, CHEST_ANIM_LONG),
// GI_OCARINA_FAIRY // GI_OCARINA_FAIRY
GET_ITEM(ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x3A, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x3A, 0x80, CHEST_ANIM_LONG),
// GI_SEEDS_5 // GI_DEKU_SEEDS_5
GET_ITEM(ITEM_SEEDS, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_SEEDS, OBJECT_GI_SEED, GID_DEKU_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT),
// GI_HEART_CONTAINER // GI_HEART_CONTAINER
GET_ITEM(ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG),
// GI_HEART_PIECE // GI_HEART_PIECE
GET_ITEM(ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG),
// GI_KEY_BOSS // GI_BOSS_KEY
GET_ITEM(ITEM_KEY_BOSS, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, 0xC7, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_DUNGEON_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_BOSS_KEY, 0xC7, 0x80, CHEST_ANIM_LONG),
// GI_COMPASS // GI_COMPASS
GET_ITEM(ITEM_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, 0x67, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_DUNGEON_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, 0x67, 0x80, CHEST_ANIM_LONG),
// GI_MAP // GI_DUNGEON_MAP
GET_ITEM(ITEM_DUNGEON_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, 0x66, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_DUNGEON_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, 0x66, 0x80, CHEST_ANIM_LONG),
// GI_KEY_SMALL // GI_SMALL_KEY
GET_ITEM(ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0x60, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_SMALL_KEY, OBJECT_GI_KEY, GID_SMALL_KEY, 0x60, 0x80, CHEST_ANIM_SHORT),
// GI_MAGIC_SMALL // GI_MAGIC_JAR_SMALL
GET_ITEM(ITEM_MAGIC_SMALL, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0x52, 0x6F, CHEST_ANIM_SHORT), GET_ITEM(ITEM_MAGIC_JAR_SMALL, OBJECT_GI_MAGICPOT, GID_MAGIC_JAR_SMALL, 0x52, 0x6F, CHEST_ANIM_SHORT),
// GI_MAGIC_LARGE // GI_MAGIC_JAR_LARGE
GET_ITEM(ITEM_MAGIC_LARGE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0x52, 0x6E, CHEST_ANIM_SHORT), GET_ITEM(ITEM_MAGIC_JAR_BIG, OBJECT_GI_MAGICPOT, GID_MAGIC_JAR_LARGE, 0x52, 0x6E, CHEST_ANIM_SHORT),
// GI_WALLET_ADULT // GI_WALLET_ADULT
GET_ITEM(ITEM_WALLET_ADULT, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_ADULTS_WALLET, OBJECT_GI_PURSE, GID_WALLET_ADULT, 0x5E, 0x80, CHEST_ANIM_LONG),
// GI_WALLET_GIANT // GI_WALLET_GIANT
GET_ITEM(ITEM_WALLET_GIANT, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_GIANTS_WALLET, OBJECT_GI_PURSE, GID_WALLET_GIANT, 0x5F, 0x80, CHEST_ANIM_LONG),
// GI_WEIRD_EGG // GI_WEIRD_EGG
GET_ITEM(ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG),
// GI_RECOVERY_HEART // GI_RECOVERY_HEART
GET_ITEM(ITEM_RECOVERY_HEART, OBJECT_GI_HEART, GID_RECOVERY_HEART, 0x55, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_RECOVERY_HEART, OBJECT_GI_HEART, GID_RECOVERY_HEART, 0x55, 0x80, CHEST_ANIM_LONG),
// GI_ARROWS_SMALL // GI_ARROWS_5
GET_ITEM(ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT), GET_ITEM(ITEM_ARROWS_5, OBJECT_GI_ARROW, GID_ARROWS_5, 0xE6, 0x48, CHEST_ANIM_SHORT),
// GI_ARROWS_MEDIUM // GI_ARROWS_10
GET_ITEM(ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT), GET_ITEM(ITEM_ARROWS_10, OBJECT_GI_ARROW, GID_ARROWS_10, 0xE6, 0x49, CHEST_ANIM_SHORT),
// GI_ARROWS_LARGE // GI_ARROWS_30
GET_ITEM(ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT), GET_ITEM(ITEM_ARROWS_30, OBJECT_GI_ARROW, GID_ARROWS_30, 0xE6, 0x4A, CHEST_ANIM_SHORT),
// GI_RUPEE_GREEN // GI_RUPEE_GREEN
GET_ITEM(ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT), GET_ITEM(ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT),
// GI_RUPEE_BLUE // GI_RUPEE_BLUE
@ -652,21 +652,21 @@ static GetItemEntry sGetItemTable[] = {
// GI_HEART_CONTAINER_2 // GI_HEART_CONTAINER_2
GET_ITEM(ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG),
// GI_MILK // GI_MILK
GET_ITEM(ITEM_MILK, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MILK, OBJECT_GI_MILK, GID_BOTTLE_MILK_FULL, 0x98, 0x80, CHEST_ANIM_LONG),
// GI_MASK_GORON // GI_MASK_GORON
GET_ITEM(ITEM_MASK_GORON, OBJECT_GI_GOLONMASK, GID_MASK_GORON, 0x14, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_GORON, OBJECT_GI_GOLONMASK, GID_MASK_GORON, 0x14, 0x80, CHEST_ANIM_LONG),
// GI_MASK_ZORA // GI_MASK_ZORA
GET_ITEM(ITEM_MASK_ZORA, OBJECT_GI_ZORAMASK, GID_MASK_ZORA, 0x15, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_ZORA, OBJECT_GI_ZORAMASK, GID_MASK_ZORA, 0x15, 0x80, CHEST_ANIM_LONG),
// GI_MASK_GERUDO // GI_MASK_GERUDO
GET_ITEM(ITEM_MASK_GERUDO, OBJECT_GI_GERUDOMASK, GID_MASK_GERUDO, 0x16, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_MASK_GERUDO, OBJECT_GI_GERUDOMASK, GID_MASK_GERUDO, 0x16, 0x80, CHEST_ANIM_LONG),
// GI_BRACELET // GI_GORONS_BRACELET
GET_ITEM(ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_STRENGTH_GORONS_BRACELET, OBJECT_GI_BRACELET, GID_GORONS_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG),
// GI_RUPEE_PURPLE // GI_RUPEE_PURPLE
GET_ITEM(ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT), GET_ITEM(ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT),
// GI_RUPEE_GOLD // GI_RUPEE_GOLD
GET_ITEM(ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT), GET_ITEM(ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT),
// GI_SWORD_BGS // GI_SWORD_BIGGORON
GET_ITEM(ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_SWORD_BIGGORON, OBJECT_GI_LONGSWORD, GID_SWORD_BIGGORON, 0x0C, 0x80, CHEST_ANIM_LONG),
// GI_ARROW_FIRE // GI_ARROW_FIRE
GET_ITEM(ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG),
// GI_ARROW_ICE // GI_ARROW_ICE
@ -685,14 +685,14 @@ static GetItemEntry sGetItemTable[] = {
GET_ITEM(ITEM_BULLET_BAG_30, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BULLET_BAG_30, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG),
// GI_BULLET_BAG_40 // GI_BULLET_BAG_40
GET_ITEM(ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG),
// GI_STICKS_5 // GI_DEKU_STICKS_5
GET_ITEM(ITEM_STICKS_5, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_STICKS_5, OBJECT_GI_STICK, GID_DEKU_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
// GI_STICKS_10 // GI_DEKU_STICKS_10
GET_ITEM(ITEM_STICKS_10, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_STICKS_10, OBJECT_GI_STICK, GID_DEKU_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
// GI_NUTS_5_2 // GI_DEKU_NUTS_5_2
GET_ITEM(ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_NUTS_5, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
// GI_NUTS_10 // GI_DEKU_NUTS_10
GET_ITEM(ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_NUTS_10, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
// GI_BOMBS_1 // GI_BOMBS_1
GET_ITEM(ITEM_BOMB, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMB, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
// GI_BOMBS_10 // GI_BOMBS_10
@ -701,24 +701,24 @@ static GetItemEntry sGetItemTable[] = {
GET_ITEM(ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMBS_20, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
// GI_BOMBS_30 // GI_BOMBS_30
GET_ITEM(ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
// GI_SEEDS_30 // GI_DEKU_SEEDS_30
GET_ITEM(ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_SEEDS_30, OBJECT_GI_SEED, GID_DEKU_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT),
// GI_BOMBCHUS_5 // GI_BOMBCHUS_5
GET_ITEM(ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT),
// GI_BOMBCHUS_20 // GI_BOMBCHUS_20
GET_ITEM(ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT),
// GI_FISH // GI_BOTTLE_FISH
GET_ITEM(ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG),
// GI_BUGS // GI_BOTTLE_BUGS
GET_ITEM(ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG),
// GI_BLUE_FIRE // GI_BOTTLE_BLUE_FIRE
GET_ITEM(ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG),
// GI_POE // GI_BOTTLE_POE
GET_ITEM(ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG),
// GI_BIG_POE // GI_BOTTLE_BIG_POE
GET_ITEM(ITEM_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, 0xF9, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BOTTLE_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, 0xF9, 0x80, CHEST_ANIM_LONG),
// GI_DOOR_KEY // GI_DOOR_KEY
GET_ITEM(ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0xF3, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_SMALL_KEY, OBJECT_GI_KEY, GID_SMALL_KEY, 0xF3, 0x80, CHEST_ANIM_SHORT),
// GI_RUPEE_GREEN_LOSE // GI_RUPEE_GREEN_LOSE
GET_ITEM(ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT), GET_ITEM(ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT),
// GI_RUPEE_BLUE_LOSE // GI_RUPEE_BLUE_LOSE
@ -729,14 +729,14 @@ static GetItemEntry sGetItemTable[] = {
GET_ITEM(ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF7, 0x14, CHEST_ANIM_SHORT), GET_ITEM(ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF7, 0x14, CHEST_ANIM_SHORT),
// GI_HEART_PIECE_WIN // GI_HEART_PIECE_WIN
GET_ITEM(ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG),
// GI_STICK_UPGRADE_20 // GI_DEKU_STICK_UPGRADE_20
GET_ITEM(ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_DEKU_STICK, 0x90, 0x80, CHEST_ANIM_SHORT),
// GI_STICK_UPGRADE_30 // GI_DEKU_STICK_UPGRADE_30
GET_ITEM(ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_DEKU_STICK, 0x91, 0x80, CHEST_ANIM_SHORT),
// GI_NUT_UPGRADE_30 // GI_DEKU_NUT_UPGRADE_30
GET_ITEM(ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT),
// GI_NUT_UPGRADE_40 // GI_DEKU_NUT_UPGRADE_40
GET_ITEM(ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT), GET_ITEM(ITEM_DEKU_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT),
// GI_BULLET_BAG_50 // GI_BULLET_BAG_50
GET_ITEM(ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG_50, 0x6C, 0x80, CHEST_ANIM_LONG), GET_ITEM(ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG_50, 0x6C, 0x80, CHEST_ANIM_LONG),
// GI_ICE_TRAP // GI_ICE_TRAP
@ -1151,46 +1151,46 @@ static u8 D_80853E7C[] = {
// Used to map item IDs to item actions // Used to map item IDs to item actions
static s8 sItemActions[] = { static s8 sItemActions[] = {
PLAYER_IA_STICK, // ITEM_STICK PLAYER_IA_DEKU_STICK, // ITEM_DEKU_STICK
PLAYER_IA_NUT, // ITEM_NUT PLAYER_IA_DEKU_NUT, // ITEM_DEKU_NUT
PLAYER_IA_BOMB, // ITEM_BOMB PLAYER_IA_BOMB, // ITEM_BOMB
PLAYER_IA_BOW, // ITEM_BOW PLAYER_IA_BOW, // ITEM_BOW
PLAYER_IA_BOW_FIRE, // ITEM_ARROW_FIRE PLAYER_IA_BOW_FIRE, // ITEM_ARROW_FIRE
PLAYER_IA_DINS_FIRE, // ITEM_DINS_FIRE PLAYER_IA_DINS_FIRE, // ITEM_DINS_FIRE
PLAYER_IA_SLINGSHOT, // ITEM_SLINGSHOT PLAYER_IA_SLINGSHOT, // ITEM_SLINGSHOT
PLAYER_IA_OCARINA_FAIRY, // ITEM_OCARINA_FAIRY PLAYER_IA_OCARINA_FAIRY, // ITEM_OCARINA_FAIRY
PLAYER_IA_OCARINA_TIME, // ITEM_OCARINA_TIME PLAYER_IA_OCARINA_OF_TIME, // ITEM_OCARINA_OF_TIME
PLAYER_IA_BOMBCHU, // ITEM_BOMBCHU PLAYER_IA_BOMBCHU, // ITEM_BOMBCHU
PLAYER_IA_HOOKSHOT, // ITEM_HOOKSHOT PLAYER_IA_HOOKSHOT, // ITEM_HOOKSHOT
PLAYER_IA_LONGSHOT, // ITEM_LONGSHOT PLAYER_IA_LONGSHOT, // ITEM_LONGSHOT
PLAYER_IA_BOW_ICE, // ITEM_ARROW_ICE PLAYER_IA_BOW_ICE, // ITEM_ARROW_ICE
PLAYER_IA_FARORES_WIND, // ITEM_FARORES_WIND PLAYER_IA_FARORES_WIND, // ITEM_FARORES_WIND
PLAYER_IA_BOOMERANG, // ITEM_BOOMERANG PLAYER_IA_BOOMERANG, // ITEM_BOOMERANG
PLAYER_IA_LENS, // ITEM_LENS PLAYER_IA_LENS_OF_TRUTH, // ITEM_LENS_OF_TRUTH
PLAYER_IA_BEAN, // ITEM_BEAN PLAYER_IA_MAGIC_BEAN, // ITEM_MAGIC_BEAN
PLAYER_IA_HAMMER, // ITEM_HAMMER PLAYER_IA_HAMMER, // ITEM_HAMMER
PLAYER_IA_BOW_LIGHT, // ITEM_ARROW_LIGHT PLAYER_IA_BOW_LIGHT, // ITEM_ARROW_LIGHT
PLAYER_IA_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE PLAYER_IA_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE
PLAYER_IA_BOTTLE, // ITEM_BOTTLE PLAYER_IA_BOTTLE, // ITEM_BOTTLE_EMPTY
PLAYER_IA_BOTTLE_POTION_RED, // ITEM_POTION_RED PLAYER_IA_BOTTLE_POTION_RED, // ITEM_BOTTLE_POTION_RED
PLAYER_IA_BOTTLE_POTION_GREEN, // ITEM_POTION_GREEN PLAYER_IA_BOTTLE_POTION_GREEN, // ITEM_BOTTLE_POTION_GREEN
PLAYER_IA_BOTTLE_POTION_BLUE, // ITEM_POTION_BLUE PLAYER_IA_BOTTLE_POTION_BLUE, // ITEM_BOTTLE_POTION_BLUE
PLAYER_IA_BOTTLE_FAIRY, // ITEM_FAIRY PLAYER_IA_BOTTLE_FAIRY, // ITEM_BOTTLE_FAIRY
PLAYER_IA_BOTTLE_FISH, // ITEM_FISH PLAYER_IA_BOTTLE_FISH, // ITEM_BOTTLE_FISH
PLAYER_IA_BOTTLE_MILK, // ITEM_MILK_BOTTLE PLAYER_IA_BOTTLE_MILK_FULL, // ITEM_BOTTLE_MILK_FULL
PLAYER_IA_BOTTLE_LETTER, // ITEM_LETTER_RUTO PLAYER_IA_BOTTLE_RUTOS_LETTER, // ITEM_BOTTLE_RUTOS_LETTER
PLAYER_IA_BOTTLE_FIRE, // ITEM_BLUE_FIRE PLAYER_IA_BOTTLE_FIRE, // ITEM_BOTTLE_BLUE_FIRE
PLAYER_IA_BOTTLE_BUG, // ITEM_BUG PLAYER_IA_BOTTLE_BUG, // ITEM_BOTTLE_BUG
PLAYER_IA_BOTTLE_BIG_POE, // ITEM_BIG_POE PLAYER_IA_BOTTLE_BIG_POE, // ITEM_BOTTLE_BIG_POE
PLAYER_IA_BOTTLE_MILK_HALF, // ITEM_MILK_HALF PLAYER_IA_BOTTLE_MILK_HALF, // ITEM_BOTTLE_MILK_HALF
PLAYER_IA_BOTTLE_POE, // ITEM_POE PLAYER_IA_BOTTLE_POE, // ITEM_BOTTLE_POE
PLAYER_IA_WEIRD_EGG, // ITEM_WEIRD_EGG PLAYER_IA_WEIRD_EGG, // ITEM_WEIRD_EGG
PLAYER_IA_CHICKEN, // ITEM_CHICKEN PLAYER_IA_CHICKEN, // ITEM_CHICKEN
PLAYER_IA_LETTER_ZELDA, // ITEM_LETTER_ZELDA PLAYER_IA_ZELDAS_LETTER, // ITEM_ZELDAS_LETTER
PLAYER_IA_MASK_KEATON, // ITEM_MASK_KEATON PLAYER_IA_MASK_KEATON, // ITEM_MASK_KEATON
PLAYER_IA_MASK_SKULL, // ITEM_MASK_SKULL PLAYER_IA_MASK_SKULL, // ITEM_MASK_SKULL
PLAYER_IA_MASK_SPOOKY, // ITEM_MASK_SPOOKY PLAYER_IA_MASK_SPOOKY, // ITEM_MASK_SPOOKY
PLAYER_IA_MASK_BUNNY, // ITEM_MASK_BUNNY PLAYER_IA_MASK_BUNNY_HOOD, // ITEM_MASK_BUNNY_HOOD
PLAYER_IA_MASK_GORON, // ITEM_MASK_GORON PLAYER_IA_MASK_GORON, // ITEM_MASK_GORON
PLAYER_IA_MASK_ZORA, // ITEM_MASK_ZORA PLAYER_IA_MASK_ZORA, // ITEM_MASK_ZORA
PLAYER_IA_MASK_GERUDO, // ITEM_MASK_GERUDO PLAYER_IA_MASK_GERUDO, // ITEM_MASK_GERUDO
@ -1201,18 +1201,18 @@ static s8 sItemActions[] = {
PLAYER_IA_COJIRO, // ITEM_COJIRO PLAYER_IA_COJIRO, // ITEM_COJIRO
PLAYER_IA_ODD_MUSHROOM, // ITEM_ODD_MUSHROOM PLAYER_IA_ODD_MUSHROOM, // ITEM_ODD_MUSHROOM
PLAYER_IA_ODD_POTION, // ITEM_ODD_POTION PLAYER_IA_ODD_POTION, // ITEM_ODD_POTION
PLAYER_IA_SAW, // ITEM_SAW PLAYER_IA_POACHERS_SAW, // ITEM_POACHERS_SAW
PLAYER_IA_SWORD_BROKEN, // ITEM_SWORD_BROKEN PLAYER_IA_BROKEN_GORONS_SWORD, // ITEM_BROKEN_GORONS_SWORD
PLAYER_IA_PRESCRIPTION, // ITEM_PRESCRIPTION PLAYER_IA_PRESCRIPTION, // ITEM_PRESCRIPTION
PLAYER_IA_FROG, // ITEM_FROG PLAYER_IA_FROG, // ITEM_EYEBALL_FROG
PLAYER_IA_EYEDROPS, // ITEM_EYEDROPS PLAYER_IA_EYEDROPS, // ITEM_EYE_DROPS
PLAYER_IA_CLAIM_CHECK, // ITEM_CLAIM_CHECK PLAYER_IA_CLAIM_CHECK, // ITEM_CLAIM_CHECK
PLAYER_IA_BOW_FIRE, // ITEM_BOW_ARROW_FIRE PLAYER_IA_BOW_FIRE, // ITEM_BOW_FIRE
PLAYER_IA_BOW_ICE, // ITEM_BOW_ARROW_ICE PLAYER_IA_BOW_ICE, // ITEM_BOW_ICE
PLAYER_IA_BOW_LIGHT, // ITEM_BOW_ARROW_LIGHT PLAYER_IA_BOW_LIGHT, // ITEM_BOW_LIGHT
PLAYER_IA_SWORD_KOKIRI, // ITEM_SWORD_KOKIRI PLAYER_IA_SWORD_KOKIRI, // ITEM_SWORD_KOKIRI
PLAYER_IA_SWORD_MASTER, // ITEM_SWORD_MASTER PLAYER_IA_SWORD_MASTER, // ITEM_SWORD_MASTER
PLAYER_IA_SWORD_BGS, // ITEM_SWORD_BGS PLAYER_IA_SWORD_BGS, // ITEM_SWORD_BIGGORON
}; };
static s32 (*D_80853EDC[])(Player* this, PlayState* play) = { static s32 (*D_80853EDC[])(Player* this, PlayState* play) = {
@ -1222,7 +1222,7 @@ static s32 (*D_80853EDC[])(Player* this, PlayState* play) = {
func_808349DC, // PLAYER_IA_SWORD_MASTER func_808349DC, // PLAYER_IA_SWORD_MASTER
func_808349DC, // PLAYER_IA_SWORD_KOKIRI func_808349DC, // PLAYER_IA_SWORD_KOKIRI
func_808349DC, // PLAYER_IA_SWORD_BGS func_808349DC, // PLAYER_IA_SWORD_BGS
func_8083485C, // PLAYER_IA_STICK func_8083485C, // PLAYER_IA_DEKU_STICK
func_8083485C, // PLAYER_IA_HAMMER func_8083485C, // PLAYER_IA_HAMMER
func_8083501C, // PLAYER_IA_BOW func_8083501C, // PLAYER_IA_BOW
func_8083501C, // PLAYER_IA_BOW_FIRE func_8083501C, // PLAYER_IA_BOW_FIRE
@ -1243,33 +1243,33 @@ static s32 (*D_80853EDC[])(Player* this, PlayState* play) = {
func_8083485C, // PLAYER_IA_FARORES_WIND func_8083485C, // PLAYER_IA_FARORES_WIND
func_8083485C, // PLAYER_IA_NAYRUS_LOVE func_8083485C, // PLAYER_IA_NAYRUS_LOVE
func_8083485C, // PLAYER_IA_DINS_FIRE func_8083485C, // PLAYER_IA_DINS_FIRE
func_8083485C, // PLAYER_IA_NUT func_8083485C, // PLAYER_IA_DEKU_NUT
func_8083485C, // PLAYER_IA_OCARINA_FAIRY func_8083485C, // PLAYER_IA_OCARINA_FAIRY
func_8083485C, // PLAYER_IA_OCARINA_TIME func_8083485C, // PLAYER_IA_OCARINA_OF_TIME
func_8083485C, // PLAYER_IA_BOTTLE func_8083485C, // PLAYER_IA_BOTTLE
func_8083485C, // PLAYER_IA_BOTTLE_FISH func_8083485C, // PLAYER_IA_BOTTLE_FISH
func_8083485C, // PLAYER_IA_BOTTLE_FIRE func_8083485C, // PLAYER_IA_BOTTLE_FIRE
func_8083485C, // PLAYER_IA_BOTTLE_BUG func_8083485C, // PLAYER_IA_BOTTLE_BUG
func_8083485C, // PLAYER_IA_BOTTLE_POE func_8083485C, // PLAYER_IA_BOTTLE_POE
func_8083485C, // PLAYER_IA_BOTTLE_BIG_POE func_8083485C, // PLAYER_IA_BOTTLE_BIG_POE
func_8083485C, // PLAYER_IA_BOTTLE_LETTER func_8083485C, // PLAYER_IA_BOTTLE_RUTOS_LETTER
func_8083485C, // PLAYER_IA_BOTTLE_POTION_RED func_8083485C, // PLAYER_IA_BOTTLE_POTION_RED
func_8083485C, // PLAYER_IA_BOTTLE_POTION_BLUE func_8083485C, // PLAYER_IA_BOTTLE_POTION_BLUE
func_8083485C, // PLAYER_IA_BOTTLE_POTION_GREEN func_8083485C, // PLAYER_IA_BOTTLE_POTION_GREEN
func_8083485C, // PLAYER_IA_BOTTLE_MILK func_8083485C, // PLAYER_IA_BOTTLE_MILK_FULL
func_8083485C, // PLAYER_IA_BOTTLE_MILK_HALF func_8083485C, // PLAYER_IA_BOTTLE_MILK_HALF
func_8083485C, // PLAYER_IA_BOTTLE_FAIRY func_8083485C, // PLAYER_IA_BOTTLE_FAIRY
func_8083485C, // PLAYER_IA_LETTER_ZELDA func_8083485C, // PLAYER_IA_ZELDAS_LETTER
func_8083485C, // PLAYER_IA_WEIRD_EGG func_8083485C, // PLAYER_IA_WEIRD_EGG
func_8083485C, // PLAYER_IA_CHICKEN func_8083485C, // PLAYER_IA_CHICKEN
func_8083485C, // PLAYER_IA_BEAN func_8083485C, // PLAYER_IA_MAGIC_BEAN
func_8083485C, // PLAYER_IA_POCKET_EGG func_8083485C, // PLAYER_IA_POCKET_EGG
func_8083485C, // PLAYER_IA_POCKET_CUCCO func_8083485C, // PLAYER_IA_POCKET_CUCCO
func_8083485C, // PLAYER_IA_COJIRO func_8083485C, // PLAYER_IA_COJIRO
func_8083485C, // PLAYER_IA_ODD_MUSHROOM func_8083485C, // PLAYER_IA_ODD_MUSHROOM
func_8083485C, // PLAYER_IA_ODD_POTION func_8083485C, // PLAYER_IA_ODD_POTION
func_8083485C, // PLAYER_IA_SAW func_8083485C, // PLAYER_IA_POACHERS_SAW
func_8083485C, // PLAYER_IA_SWORD_BROKEN func_8083485C, // PLAYER_IA_BROKEN_GORONS_SWORD
func_8083485C, // PLAYER_IA_PRESCRIPTION func_8083485C, // PLAYER_IA_PRESCRIPTION
func_8083485C, // PLAYER_IA_FROG func_8083485C, // PLAYER_IA_FROG
func_8083485C, // PLAYER_IA_EYEDROPS func_8083485C, // PLAYER_IA_EYEDROPS
@ -1277,12 +1277,12 @@ static s32 (*D_80853EDC[])(Player* this, PlayState* play) = {
func_8083485C, // PLAYER_IA_MASK_KEATON func_8083485C, // PLAYER_IA_MASK_KEATON
func_8083485C, // PLAYER_IA_MASK_SKULL func_8083485C, // PLAYER_IA_MASK_SKULL
func_8083485C, // PLAYER_IA_MASK_SPOOKY func_8083485C, // PLAYER_IA_MASK_SPOOKY
func_8083485C, // PLAYER_IA_MASK_BUNNY func_8083485C, // PLAYER_IA_MASK_BUNNY_HOOD
func_8083485C, // PLAYER_IA_MASK_GORON func_8083485C, // PLAYER_IA_MASK_GORON
func_8083485C, // PLAYER_IA_MASK_ZORA func_8083485C, // PLAYER_IA_MASK_ZORA
func_8083485C, // PLAYER_IA_MASK_GERUDO func_8083485C, // PLAYER_IA_MASK_GERUDO
func_8083485C, // PLAYER_IA_MASK_TRUTH func_8083485C, // PLAYER_IA_MASK_TRUTH
func_8083485C, // PLAYER_IA_LENS func_8083485C, // PLAYER_IA_LENS_OF_TRUTH
}; };
static void (*D_80853FE8[])(PlayState* play, Player* this) = { static void (*D_80853FE8[])(PlayState* play, Player* this) = {
@ -1292,7 +1292,7 @@ static void (*D_80853FE8[])(PlayState* play, Player* this) = {
func_80833770, // PLAYER_IA_SWORD_MASTER func_80833770, // PLAYER_IA_SWORD_MASTER
func_80833770, // PLAYER_IA_SWORD_KOKIRI func_80833770, // PLAYER_IA_SWORD_KOKIRI
func_80833770, // PLAYER_IA_SWORD_BGS func_80833770, // PLAYER_IA_SWORD_BGS
func_8083377C, // PLAYER_IA_STICK func_8083377C, // PLAYER_IA_DEKU_STICK
func_80833790, // PLAYER_IA_HAMMER func_80833790, // PLAYER_IA_HAMMER
func_8083379C, // PLAYER_IA_BOW func_8083379C, // PLAYER_IA_BOW
func_8083379C, // PLAYER_IA_BOW_FIRE func_8083379C, // PLAYER_IA_BOW_FIRE
@ -1313,33 +1313,33 @@ static void (*D_80853FE8[])(PlayState* play, Player* this) = {
func_80833770, // PLAYER_IA_FARORES_WIND func_80833770, // PLAYER_IA_FARORES_WIND
func_80833770, // PLAYER_IA_NAYRUS_LOVE func_80833770, // PLAYER_IA_NAYRUS_LOVE
func_80833770, // PLAYER_IA_DINS_FIRE func_80833770, // PLAYER_IA_DINS_FIRE
func_80833770, // PLAYER_IA_NUT func_80833770, // PLAYER_IA_DEKU_NUT
func_80833770, // PLAYER_IA_OCARINA_FAIRY func_80833770, // PLAYER_IA_OCARINA_FAIRY
func_80833770, // PLAYER_IA_OCARINA_TIME func_80833770, // PLAYER_IA_OCARINA_OF_TIME
func_80833770, // PLAYER_IA_BOTTLE func_80833770, // PLAYER_IA_BOTTLE
func_80833770, // PLAYER_IA_BOTTLE_FISH func_80833770, // PLAYER_IA_BOTTLE_FISH
func_80833770, // PLAYER_IA_BOTTLE_FIRE func_80833770, // PLAYER_IA_BOTTLE_FIRE
func_80833770, // PLAYER_IA_BOTTLE_BUG func_80833770, // PLAYER_IA_BOTTLE_BUG
func_80833770, // PLAYER_IA_BOTTLE_POE func_80833770, // PLAYER_IA_BOTTLE_POE
func_80833770, // PLAYER_IA_BOTTLE_BIG_POE func_80833770, // PLAYER_IA_BOTTLE_BIG_POE
func_80833770, // PLAYER_IA_BOTTLE_LETTER func_80833770, // PLAYER_IA_BOTTLE_RUTOS_LETTER
func_80833770, // PLAYER_IA_BOTTLE_POTION_RED func_80833770, // PLAYER_IA_BOTTLE_POTION_RED
func_80833770, // PLAYER_IA_BOTTLE_POTION_BLUE func_80833770, // PLAYER_IA_BOTTLE_POTION_BLUE
func_80833770, // PLAYER_IA_BOTTLE_POTION_GREEN func_80833770, // PLAYER_IA_BOTTLE_POTION_GREEN
func_80833770, // PLAYER_IA_BOTTLE_MILK func_80833770, // PLAYER_IA_BOTTLE_MILK_FULL
func_80833770, // PLAYER_IA_BOTTLE_MILK_HALF func_80833770, // PLAYER_IA_BOTTLE_MILK_HALF
func_80833770, // PLAYER_IA_BOTTLE_FAIRY func_80833770, // PLAYER_IA_BOTTLE_FAIRY
func_80833770, // PLAYER_IA_LETTER_ZELDA func_80833770, // PLAYER_IA_ZELDAS_LETTER
func_80833770, // PLAYER_IA_WEIRD_EGG func_80833770, // PLAYER_IA_WEIRD_EGG
func_80833770, // PLAYER_IA_CHICKEN func_80833770, // PLAYER_IA_CHICKEN
func_80833770, // PLAYER_IA_BEAN func_80833770, // PLAYER_IA_MAGIC_BEAN
func_80833770, // PLAYER_IA_POCKET_EGG func_80833770, // PLAYER_IA_POCKET_EGG
func_80833770, // PLAYER_IA_POCKET_CUCCO func_80833770, // PLAYER_IA_POCKET_CUCCO
func_80833770, // PLAYER_IA_COJIRO func_80833770, // PLAYER_IA_COJIRO
func_80833770, // PLAYER_IA_ODD_MUSHROOM func_80833770, // PLAYER_IA_ODD_MUSHROOM
func_80833770, // PLAYER_IA_ODD_POTION func_80833770, // PLAYER_IA_ODD_POTION
func_80833770, // PLAYER_IA_SAW func_80833770, // PLAYER_IA_POACHERS_SAW
func_80833770, // PLAYER_IA_SWORD_BROKEN func_80833770, // PLAYER_IA_BROKEN_GORONS_SWORD
func_80833770, // PLAYER_IA_PRESCRIPTION func_80833770, // PLAYER_IA_PRESCRIPTION
func_80833770, // PLAYER_IA_FROG func_80833770, // PLAYER_IA_FROG
func_80833770, // PLAYER_IA_EYEDROPS func_80833770, // PLAYER_IA_EYEDROPS
@ -1347,12 +1347,12 @@ static void (*D_80853FE8[])(PlayState* play, Player* this) = {
func_80833770, // PLAYER_IA_MASK_KEATON func_80833770, // PLAYER_IA_MASK_KEATON
func_80833770, // PLAYER_IA_MASK_SKULL func_80833770, // PLAYER_IA_MASK_SKULL
func_80833770, // PLAYER_IA_MASK_SPOOKY func_80833770, // PLAYER_IA_MASK_SPOOKY
func_80833770, // PLAYER_IA_MASK_BUNNY func_80833770, // PLAYER_IA_MASK_BUNNY_HOOD
func_80833770, // PLAYER_IA_MASK_GORON func_80833770, // PLAYER_IA_MASK_GORON
func_80833770, // PLAYER_IA_MASK_ZORA func_80833770, // PLAYER_IA_MASK_ZORA
func_80833770, // PLAYER_IA_MASK_GERUDO func_80833770, // PLAYER_IA_MASK_GERUDO
func_80833770, // PLAYER_IA_MASK_TRUTH func_80833770, // PLAYER_IA_MASK_TRUTH
func_80833770, // PLAYER_IA_LENS func_80833770, // PLAYER_IA_LENS_OF_TRUTH
}; };
typedef enum { typedef enum {
@ -2411,7 +2411,7 @@ void func_80834298(Player* this, PlayState* play) {
((this->heldItemAction == this->itemAction) || (this->stateFlags1 & PLAYER_STATE1_22)) && ((this->heldItemAction == this->itemAction) || (this->stateFlags1 & PLAYER_STATE1_22)) &&
(gSaveContext.health != 0) && (play->csCtx.state == CS_STATE_IDLE) && (this->csMode == 0) && (gSaveContext.health != 0) && (play->csCtx.state == CS_STATE_IDLE) && (this->csMode == 0) &&
(play->shootingGalleryStatus == 0) && (play->activeCamId == CAM_ID_MAIN) && (play->shootingGalleryStatus == 0) && (play->activeCamId == CAM_ID_MAIN) &&
(play->transitionTrigger != TRANS_TRIGGER_START) && (gSaveContext.timer1State != 10)) { (play->transitionTrigger != TRANS_TRIGGER_START) && (gSaveContext.timerState != TIMER_STATE_STOP)) {
func_80833DF8(this, play); func_80833DF8(this, play);
} }
@ -3147,13 +3147,13 @@ void func_80835F44(PlayState* play, Player* this, s32 item) {
((itemAction == PLAYER_IA_HOOKSHOT) || (itemAction == PLAYER_IA_LONGSHOT)))) { ((itemAction == PLAYER_IA_HOOKSHOT) || (itemAction == PLAYER_IA_LONGSHOT)))) {
if ((play->bombchuBowlingStatus == 0) && if ((play->bombchuBowlingStatus == 0) &&
(((itemAction == PLAYER_IA_STICK) && (AMMO(ITEM_STICK) == 0)) || (((itemAction == PLAYER_IA_DEKU_STICK) && (AMMO(ITEM_DEKU_STICK) == 0)) ||
((itemAction == PLAYER_IA_BEAN) && (AMMO(ITEM_BEAN) == 0)) || ((itemAction == PLAYER_IA_MAGIC_BEAN) && (AMMO(ITEM_MAGIC_BEAN) == 0)) ||
(temp = Player_ActionToExplosive(this, itemAction), (temp = Player_ActionToExplosive(this, itemAction),
((temp >= 0) && ((AMMO(sExplosiveInfos[temp].itemId) == 0) || ((temp >= 0) && ((AMMO(sExplosiveInfos[temp].itemId) == 0) ||
(play->actorCtx.actorLists[ACTORCAT_EXPLOSIVE].length >= 3)))))) { (play->actorCtx.actorLists[ACTORCAT_EXPLOSIVE].length >= 3)))))) {
func_80078884(NA_SE_SY_ERROR); func_80078884(NA_SE_SY_ERROR);
} else if (itemAction == PLAYER_IA_LENS) { } else if (itemAction == PLAYER_IA_LENS_OF_TRUTH) {
if (Magic_RequestChange(play, 0, MAGIC_CONSUME_LENS)) { if (Magic_RequestChange(play, 0, MAGIC_CONSUME_LENS)) {
if (play->actorCtx.lensActive) { if (play->actorCtx.lensActive) {
Actor_DisableLens(play); Actor_DisableLens(play);
@ -3165,8 +3165,8 @@ void func_80835F44(PlayState* play, Player* this, s32 item) {
} else { } else {
func_80078884(NA_SE_SY_ERROR); func_80078884(NA_SE_SY_ERROR);
} }
} else if (itemAction == PLAYER_IA_NUT) { } else if (itemAction == PLAYER_IA_DEKU_NUT) {
if (AMMO(ITEM_NUT) != 0) { if (AMMO(ITEM_DEKU_NUT) != 0) {
func_8083C61C(play, this); func_8083C61C(play, this);
} else { } else {
func_80078884(NA_SE_SY_ERROR); func_80078884(NA_SE_SY_ERROR);
@ -3188,7 +3188,7 @@ void func_80835F44(PlayState* play, Player* this, s32 item) {
} }
func_808328EC(this, NA_SE_PL_CHANGE_ARMS); func_808328EC(this, NA_SE_PL_CHANGE_ARMS);
} else if (((itemAction >= PLAYER_IA_OCARINA_FAIRY) && (itemAction <= PLAYER_IA_OCARINA_TIME)) || } else if (((itemAction >= PLAYER_IA_OCARINA_FAIRY) && (itemAction <= PLAYER_IA_OCARINA_OF_TIME)) ||
(itemAction >= PLAYER_IA_BOTTLE_FISH)) { (itemAction >= PLAYER_IA_BOTTLE_FISH)) {
if (!func_8008E9C4(this) || if (!func_8008E9C4(this) ||
((itemAction >= PLAYER_IA_BOTTLE_POTION_RED) && (itemAction <= PLAYER_IA_BOTTLE_FAIRY))) { ((itemAction >= PLAYER_IA_BOTTLE_POTION_RED) && (itemAction <= PLAYER_IA_BOTTLE_FAIRY))) {
@ -3644,7 +3644,7 @@ s32 func_808375D8(Player* this) {
s8 temp2; s8 temp2;
s32 i; s32 i;
if ((this->heldItemAction == PLAYER_IA_STICK) || Player_HoldsBrokenKnife(this)) { if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) || Player_HoldsBrokenKnife(this)) {
return 0; return 0;
} }
@ -3735,7 +3735,7 @@ s32 func_80837818(Player* this) {
} }
} }
} }
if (this->heldItemAction == PLAYER_IA_STICK) { if (this->heldItemAction == PLAYER_IA_DEKU_STICK) {
sp18 = PLAYER_MWA_FORWARD_SLASH_1H; sp18 = PLAYER_MWA_FORWARD_SLASH_1H;
} }
} }
@ -5167,35 +5167,35 @@ void func_8083B010(Player* this) {
} }
static u8 D_80854528[] = { static u8 D_80854528[] = {
GI_LETTER_ZELDA, // EXCH_ITEM_LETTER_ZELDA GI_ZELDAS_LETTER, // EXCH_ITEM_ZELDAS_LETTER
GI_WEIRD_EGG, // EXCH_ITEM_WEIRD_EGG GI_WEIRD_EGG, // EXCH_ITEM_WEIRD_EGG
GI_CHICKEN, // EXCH_ITEM_CHICKEN GI_CHICKEN, // EXCH_ITEM_CHICKEN
GI_BEAN, // EXCH_ITEM_BEAN GI_MAGIC_BEAN, // EXCH_ITEM_MAGIC_BEAN
GI_POCKET_EGG, // EXCH_ITEM_POCKET_EGG GI_POCKET_EGG, // EXCH_ITEM_POCKET_EGG
GI_POCKET_CUCCO, // EXCH_ITEM_POCKET_CUCCO GI_POCKET_CUCCO, // EXCH_ITEM_POCKET_CUCCO
GI_COJIRO, // EXCH_ITEM_COJIRO GI_COJIRO, // EXCH_ITEM_COJIRO
GI_ODD_MUSHROOM, // EXCH_ITEM_ODD_MUSHROOM GI_ODD_MUSHROOM, // EXCH_ITEM_ODD_MUSHROOM
GI_ODD_POTION, // EXCH_ITEM_ODD_POTION GI_ODD_POTION, // EXCH_ITEM_ODD_POTION
GI_SAW, // EXCH_ITEM_SAW GI_POACHERS_SAW, // EXCH_ITEM_POACHERS_SAW
GI_SWORD_BROKEN, // EXCH_ITEM_SWORD_BROKEN GI_BROKEN_GORONS_SWORD, // EXCH_ITEM_BROKEN_GORONS_SWORD
GI_PRESCRIPTION, // EXCH_ITEM_PRESCRIPTION GI_PRESCRIPTION, // EXCH_ITEM_PRESCRIPTION
GI_FROG, // EXCH_ITEM_FROG GI_EYEBALL_FROG, // EXCH_ITEM_EYEBALL_FROG
GI_EYEDROPS, // EXCH_ITEM_EYEDROPS GI_EYE_DROPS, // EXCH_ITEM_EYE_DROPS
GI_CLAIM_CHECK, // EXCH_ITEM_CLAIM_CHECK GI_CLAIM_CHECK, // EXCH_ITEM_CLAIM_CHECK
GI_MASK_SKULL, // EXCH_ITEM_MASK_SKULL GI_MASK_SKULL, // EXCH_ITEM_MASK_SKULL
GI_MASK_SPOOKY, // EXCH_ITEM_MASK_SPOOKY GI_MASK_SPOOKY, // EXCH_ITEM_MASK_SPOOKY
GI_MASK_KEATON, // EXCH_ITEM_MASK_KEATON GI_MASK_KEATON, // EXCH_ITEM_MASK_KEATON
GI_MASK_BUNNY, // EXCH_ITEM_MASK_BUNNY GI_MASK_BUNNY_HOOD, // EXCH_ITEM_MASK_BUNNY_HOOD
GI_MASK_TRUTH, // EXCH_ITEM_MASK_TRUTH GI_MASK_TRUTH, // EXCH_ITEM_MASK_TRUTH
GI_MASK_GORON, // EXCH_ITEM_MASK_GORON GI_MASK_GORON, // EXCH_ITEM_MASK_GORON
GI_MASK_ZORA, // EXCH_ITEM_MASK_ZORA GI_MASK_ZORA, // EXCH_ITEM_MASK_ZORA
GI_MASK_GERUDO, // EXCH_ITEM_MASK_GERUDO GI_MASK_GERUDO, // EXCH_ITEM_MASK_GERUDO
GI_LETTER_RUTO, // EXCH_ITEM_FISH GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_FISH
GI_LETTER_RUTO, // EXCH_ITEM_BLUE_FIRE GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_BLUE_FIRE
GI_LETTER_RUTO, // EXCH_ITEM_BUG GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_BUG
GI_LETTER_RUTO, // EXCH_ITEM_POE GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_POE
GI_LETTER_RUTO, // EXCH_ITEM_BIG_POE GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_BIG_POE
GI_LETTER_RUTO, // EXCH_ITEM_LETTER_RUTO GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_RUTOS_LETTER
}; };
static LinkAnimationHeader* D_80854548[] = { static LinkAnimationHeader* D_80854548[] = {
@ -5230,14 +5230,14 @@ s32 func_8083B040(Player* this, PlayState* play) {
return 1; return 1;
} }
sp2C = this->itemAction - PLAYER_IA_LETTER_ZELDA; sp2C = this->itemAction - PLAYER_IA_ZELDAS_LETTER;
if ((sp2C >= 0) || if ((sp2C >= 0) ||
(sp28 = Player_ActionToBottle(this, this->itemAction) - 1, (sp28 = Player_ActionToBottle(this, this->itemAction) - 1,
((sp28 >= 0) && (sp28 < 6) && ((sp28 >= 0) && (sp28 < 6) &&
((this->itemAction > PLAYER_IA_BOTTLE_POE) || ((this->itemAction > PLAYER_IA_BOTTLE_POE) ||
((this->targetActor != NULL) && ((this->targetActor != NULL) && (((this->itemAction == PLAYER_IA_BOTTLE_POE) &&
(((this->itemAction == PLAYER_IA_BOTTLE_POE) && (this->exchangeItemId == EXCH_ITEM_POE)) || (this->exchangeItemId == EXCH_ITEM_BOTTLE_POE)) ||
(this->exchangeItemId == EXCH_ITEM_BLUE_FIRE))))))) { (this->exchangeItemId == EXCH_ITEM_BOTTLE_BLUE_FIRE))))))) {
if ((play->actorCtx.titleCtx.delayTimer == 0) && (play->actorCtx.titleCtx.alpha == 0)) { if ((play->actorCtx.titleCtx.delayTimer == 0) && (play->actorCtx.titleCtx.alpha == 0)) {
func_80835DE4(play, this, func_8084F104, 0); func_80835DE4(play, this, func_8084F104, 0);
@ -5258,14 +5258,15 @@ s32 func_8083B040(Player* this, PlayState* play) {
targetActor = this->targetActor; targetActor = this->targetActor;
if ((targetActor != NULL) && if ((targetActor != NULL) &&
((this->exchangeItemId == sp2C) || (this->exchangeItemId == EXCH_ITEM_BLUE_FIRE) || ((this->exchangeItemId == sp2C) || (this->exchangeItemId == EXCH_ITEM_BOTTLE_BLUE_FIRE) ||
((this->exchangeItemId == EXCH_ITEM_POE) && ((this->exchangeItemId == EXCH_ITEM_BOTTLE_POE) &&
(this->itemAction == PLAYER_IA_BOTTLE_BIG_POE)) || (this->itemAction == PLAYER_IA_BOTTLE_BIG_POE)) ||
((this->exchangeItemId == EXCH_ITEM_BEAN) && ((this->exchangeItemId == EXCH_ITEM_MAGIC_BEAN) &&
(this->itemAction == PLAYER_IA_BOTTLE_BUG))) && (this->itemAction == PLAYER_IA_BOTTLE_BUG))) &&
((this->exchangeItemId != EXCH_ITEM_BEAN) || (this->itemAction == PLAYER_IA_BEAN))) { ((this->exchangeItemId != EXCH_ITEM_MAGIC_BEAN) ||
if (this->exchangeItemId == EXCH_ITEM_BEAN) { (this->itemAction == PLAYER_IA_MAGIC_BEAN))) {
Inventory_ChangeAmmo(ITEM_BEAN, -1); if (this->exchangeItemId == EXCH_ITEM_MAGIC_BEAN) {
Inventory_ChangeAmmo(ITEM_MAGIC_BEAN, -1);
func_80835DE4(play, this, func_8084279C, 0); func_80835DE4(play, this, func_8084279C, 0);
this->stateFlags1 |= PLAYER_STATE1_29; this->stateFlags1 |= PLAYER_STATE1_29;
this->unk_850 = 0x50; this->unk_850 = 0x50;
@ -5273,7 +5274,7 @@ s32 func_8083B040(Player* this, PlayState* play) {
} }
targetActor->flags |= ACTOR_FLAG_8; targetActor->flags |= ACTOR_FLAG_8;
this->unk_664 = this->targetActor; this->unk_664 = this->targetActor;
} else if (sp2C == EXCH_ITEM_LETTER_RUTO) { } else if (sp2C == EXCH_ITEM_BOTTLE_RUTOS_LETTER) {
this->unk_84F = 1; this->unk_84F = 1;
this->actor.textId = 0x4005; this->actor.textId = 0x4005;
func_80835EA4(play, 1); func_80835EA4(play, 1);
@ -5697,7 +5698,7 @@ void func_8083C50C(Player* this) {
s32 func_8083C544(Player* this, PlayState* play) { s32 func_8083C544(Player* this, PlayState* play) {
if (CHECK_BTN_ALL(sControlInput->cur.button, BTN_B)) { if (CHECK_BTN_ALL(sControlInput->cur.button, BTN_B)) {
if (!(this->stateFlags1 & PLAYER_STATE1_22) && (Player_GetMeleeWeaponHeld(this) != 0) && (this->unk_844 == 1) && if (!(this->stateFlags1 & PLAYER_STATE1_22) && (Player_GetMeleeWeaponHeld(this) != 0) && (this->unk_844 == 1) &&
(this->heldItemAction != PLAYER_IA_STICK)) { (this->heldItemAction != PLAYER_IA_DEKU_STICK)) {
if ((this->heldItemAction != PLAYER_IA_SWORD_BGS) || (gSaveContext.swordHealth > 0.0f)) { if ((this->heldItemAction != PLAYER_IA_SWORD_BGS) || (gSaveContext.swordHealth > 0.0f)) {
func_808377DC(play, this); func_808377DC(play, this);
return 1; return 1;
@ -5712,7 +5713,7 @@ s32 func_8083C544(Player* this, PlayState* play) {
s32 func_8083C61C(PlayState* play, Player* this) { s32 func_8083C61C(PlayState* play, Player* this) {
if ((play->roomCtx.curRoom.behaviorType1 != ROOM_BEHAVIOR_TYPE1_2) && if ((play->roomCtx.curRoom.behaviorType1 != ROOM_BEHAVIOR_TYPE1_2) &&
(this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && (AMMO(ITEM_NUT) != 0)) { (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND) && (AMMO(ITEM_DEKU_NUT) != 0)) {
func_80835C58(play, this, func_8084E604, 0); func_80835C58(play, this, func_8084E604, 0);
func_80832264(play, this, &gPlayerAnim_link_normal_light_bom); func_80832264(play, this, &gPlayerAnim_link_normal_light_bom);
this->unk_6AD = 0; this->unk_6AD = 0;
@ -6055,11 +6056,11 @@ void func_8083D36C(PlayState* play, Player* this) {
void func_8083D53C(PlayState* play, Player* this) { void func_8083D53C(PlayState* play, Player* this) {
if (this->actor.yDistToWater < this->ageProperties->unk_2C) { if (this->actor.yDistToWater < this->ageProperties->unk_2C) {
Audio_SetBaseFilter(0); Audio_SetBaseFilter(0);
this->unk_840 = 0; this->underwaterTimer = 0;
} else { } else {
Audio_SetBaseFilter(0x20); Audio_SetBaseFilter(0x20);
if (this->unk_840 < 300) { if (this->underwaterTimer < 300) {
this->unk_840++; this->underwaterTimer++;
} }
} }
@ -7989,13 +7990,13 @@ void func_80842A28(PlayState* play, Player* this) {
} }
void func_80842A88(PlayState* play, Player* this) { void func_80842A88(PlayState* play, Player* this) {
Inventory_ChangeAmmo(ITEM_STICK, -1); Inventory_ChangeAmmo(ITEM_DEKU_STICK, -1);
func_80835F44(play, this, ITEM_NONE); func_80835F44(play, this, ITEM_NONE);
} }
s32 func_80842AC4(PlayState* play, Player* this) { s32 func_80842AC4(PlayState* play, Player* this) {
if ((this->heldItemAction == PLAYER_IA_STICK) && (this->unk_85C > 0.5f)) { if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) && (this->unk_85C > 0.5f)) {
if (AMMO(ITEM_STICK) != 0) { if (AMMO(ITEM_DEKU_STICK) != 0) {
EffectSsStick_Spawn(play, &this->bodyPartsPos[PLAYER_BODYPART_R_HAND], this->actor.shape.rot.y + 0x8000); EffectSsStick_Spawn(play, &this->bodyPartsPos[PLAYER_BODYPART_R_HAND], this->actor.shape.rot.y + 0x8000);
this->unk_85C = 0.5f; this->unk_85C = 0.5f;
func_80842A88(play, this); func_80842A88(play, this);
@ -10317,7 +10318,7 @@ void func_80848A04(PlayState* play, Player* this) {
temp = 1.0f; temp = 1.0f;
if (DECR(this->unk_860) == 0) { if (DECR(this->unk_860) == 0) {
Inventory_ChangeAmmo(ITEM_STICK, -1); Inventory_ChangeAmmo(ITEM_DEKU_STICK, -1);
this->unk_860 = 1; this->unk_860 = 1;
temp = 0.0f; temp = 0.0f;
this->unk_85C = temp; this->unk_85C = temp;
@ -10500,7 +10501,7 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
func_808473D4(play, this); func_808473D4(play, this);
func_80836BEC(this, play); func_80836BEC(this, play);
if ((this->heldItemAction == PLAYER_IA_STICK) && (this->unk_860 != 0)) { if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) && (this->unk_860 != 0)) {
func_80848A04(play, this); func_80848A04(play, this);
} else if ((this->heldItemAction == PLAYER_IA_FISHING_POLE) && (this->unk_860 < 0)) { } else if ((this->heldItemAction == PLAYER_IA_FISHING_POLE) && (this->unk_860 < 0)) {
this->unk_860++; this->unk_860++;
@ -11284,7 +11285,7 @@ s32 func_8084B3CC(PlayState* play, Player* this) {
void func_8084B498(Player* this) { void func_8084B498(Player* this) {
this->itemAction = this->itemAction =
(INV_CONTENT(ITEM_OCARINA_FAIRY) == ITEM_OCARINA_FAIRY) ? PLAYER_IA_OCARINA_FAIRY : PLAYER_IA_OCARINA_TIME; (INV_CONTENT(ITEM_OCARINA_FAIRY) == ITEM_OCARINA_FAIRY) ? PLAYER_IA_OCARINA_FAIRY : PLAYER_IA_OCARINA_OF_TIME;
} }
s32 func_8084B4D4(PlayState* play, Player* this) { s32 func_8084B4D4(PlayState* play, Player* this) {
@ -12435,7 +12436,7 @@ s32 func_8084DFF4(PlayState* play, Player* this) {
} }
} else { } else {
if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) { if (Message_GetState(&play->msgCtx) == TEXT_STATE_CLOSING) {
if (this->getItemId == GI_GAUNTLETS_SILVER) { if (this->getItemId == GI_SILVER_GAUNTLETS) {
play->nextEntranceIndex = ENTR_SPOT11_0; play->nextEntranceIndex = ENTR_SPOT11_0;
play->transitionTrigger = TRANS_TRIGGER_START; play->transitionTrigger = TRANS_TRIGGER_START;
gSaveContext.nextCutsceneIndex = 0xFFF1; gSaveContext.nextCutsceneIndex = 0xFFF1;
@ -12556,7 +12557,7 @@ void func_8084E604(Player* this, PlayState* play) {
if (LinkAnimation_Update(play, &this->skelAnime)) { if (LinkAnimation_Update(play, &this->skelAnime)) {
func_8083A098(this, &gPlayerAnim_link_normal_light_bom_end, play); func_8083A098(this, &gPlayerAnim_link_normal_light_bom_end, play);
} else if (LinkAnimation_OnFrame(&this->skelAnime, 3.0f)) { } else if (LinkAnimation_OnFrame(&this->skelAnime, 3.0f)) {
Inventory_ChangeAmmo(ITEM_NUT, -1); Inventory_ChangeAmmo(ITEM_DEKU_NUT, -1);
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ARROW, this->bodyPartsPos[PLAYER_BODYPART_R_HAND].x, Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ARROW, this->bodyPartsPos[PLAYER_BODYPART_R_HAND].x,
this->bodyPartsPos[PLAYER_BODYPART_R_HAND].y, this->bodyPartsPos[PLAYER_BODYPART_R_HAND].z, 4000, this->bodyPartsPos[PLAYER_BODYPART_R_HAND].y, this->bodyPartsPos[PLAYER_BODYPART_R_HAND].z, 4000,
this->actor.shape.rot.y, 0, ARROW_NUT); this->actor.shape.rot.y, 0, ARROW_NUT);
@ -12730,7 +12731,7 @@ void func_8084EAC0(Player* this, PlayState* play) {
if ((gSaveContext.healthAccumulator == 0) && (gSaveContext.magicState != MAGIC_STATE_FILL)) { if ((gSaveContext.healthAccumulator == 0) && (gSaveContext.magicState != MAGIC_STATE_FILL)) {
func_80832B78(play, this, &gPlayerAnim_link_bottle_drink_demo_end); func_80832B78(play, this, &gPlayerAnim_link_bottle_drink_demo_end);
this->unk_850 = 2; this->unk_850 = 2;
Player_UpdateBottleHeld(play, this, ITEM_BOTTLE, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, this, ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
} }
func_80832698(this, NA_SE_VO_LI_DRINK - SFX_FLAG); func_80832698(this, NA_SE_VO_LI_DRINK - SFX_FLAG);
} else if ((this->unk_850 == 2) && LinkAnimation_OnFrame(&this->skelAnime, 29.0f)) { } else if ((this->unk_850 == 2) && LinkAnimation_OnFrame(&this->skelAnime, 29.0f)) {
@ -12739,10 +12740,10 @@ void func_8084EAC0(Player* this, PlayState* play) {
} }
static BottleCatchInfo sBottleCatchInfos[] = { static BottleCatchInfo sBottleCatchInfos[] = {
{ ACTOR_EN_ELF, ITEM_FAIRY, PLAYER_IA_BOTTLE_FAIRY, 0x46 }, { ACTOR_EN_ELF, ITEM_BOTTLE_FAIRY, PLAYER_IA_BOTTLE_FAIRY, 0x46 },
{ ACTOR_EN_FISH, ITEM_FISH, PLAYER_IA_BOTTLE_FISH, 0x47 }, { ACTOR_EN_FISH, ITEM_BOTTLE_FISH, PLAYER_IA_BOTTLE_FISH, 0x47 },
{ ACTOR_EN_ICE_HONO, ITEM_BLUE_FIRE, PLAYER_IA_BOTTLE_FIRE, 0x5D }, { ACTOR_EN_ICE_HONO, ITEM_BOTTLE_BLUE_FIRE, PLAYER_IA_BOTTLE_FIRE, 0x5D },
{ ACTOR_EN_INSECT, ITEM_BUG, PLAYER_IA_BOTTLE_BUG, 0x7A }, { ACTOR_EN_INSECT, ITEM_BOTTLE_BUG, PLAYER_IA_BOTTLE_BUG, 0x7A },
}; };
void func_8084ECA4(Player* this, PlayState* play) { void func_8084ECA4(Player* this, PlayState* play) {
@ -12821,7 +12822,7 @@ void func_8084EED8(Player* this, PlayState* play) {
if (LinkAnimation_OnFrame(&this->skelAnime, 37.0f)) { if (LinkAnimation_OnFrame(&this->skelAnime, 37.0f)) {
Player_SpawnFairy(play, this, &this->leftHandPos, &D_80854A1C, FAIRY_REVIVE_BOTTLE); Player_SpawnFairy(play, this, &this->leftHandPos, &D_80854A1C, FAIRY_REVIVE_BOTTLE);
Player_UpdateBottleHeld(play, this, ITEM_BOTTLE, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, this, ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
func_8002F7DC(&this->actor, NA_SE_EV_BOTTLE_CAP_OPEN); func_8002F7DC(&this->actor, NA_SE_EV_BOTTLE_CAP_OPEN);
func_8002F7DC(&this->actor, NA_SE_EV_FIATY_HEAL - SFX_FLAG); func_8002F7DC(&this->actor, NA_SE_EV_FIATY_HEAL - SFX_FLAG);
} else if (LinkAnimation_OnFrame(&this->skelAnime, 47.0f)) { } else if (LinkAnimation_OnFrame(&this->skelAnime, 47.0f)) {
@ -12857,7 +12858,7 @@ void func_8084EFC0(Player* this, PlayState* play) {
(Math_CosS(this->actor.shape.rot.y) * 5.0f) + this->leftHandPos.z, 0x4000, this->actor.shape.rot.y, (Math_CosS(this->actor.shape.rot.y) * 5.0f) + this->leftHandPos.z, 0x4000, this->actor.shape.rot.y,
0, dropInfo->actorParams); 0, dropInfo->actorParams);
Player_UpdateBottleHeld(play, this, ITEM_BOTTLE, PLAYER_IA_BOTTLE); Player_UpdateBottleHeld(play, this, ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
return; return;
} }
@ -12886,7 +12887,7 @@ void func_8084F104(Player* this, PlayState* play) {
} else { } else {
GetItemEntry* giEntry = &sGetItemTable[D_80854528[this->exchangeItemId - 1] - 1]; GetItemEntry* giEntry = &sGetItemTable[D_80854528[this->exchangeItemId - 1] - 1];
if (this->itemAction >= PLAYER_IA_LETTER_ZELDA) { if (this->itemAction >= PLAYER_IA_ZELDAS_LETTER) {
this->unk_862 = ABS(giEntry->gi); this->unk_862 = ABS(giEntry->gi);
} }
@ -13393,7 +13394,7 @@ void func_8085063C(Player* this, PlayState* play) {
play->transitionTrigger = TRANS_TRIGGER_START; play->transitionTrigger = TRANS_TRIGGER_START;
play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_TOP].entranceIndex; play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_TOP].entranceIndex;
play->transitionType = TRANS_TYPE_FADE_WHITE_FAST; play->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
func_80088AF0(play); Interface_SetSubTimerToFinalSecond(play);
return; return;
} }

View file

@ -1466,8 +1466,8 @@ void FileSelect_LoadGame(GameState* thisx) {
gSaveContext.natureAmbienceId = 0xFF; gSaveContext.natureAmbienceId = 0xFF;
gSaveContext.showTitleCard = true; gSaveContext.showTitleCard = true;
gSaveContext.dogParams = 0; gSaveContext.dogParams = 0;
gSaveContext.timer1State = 0; gSaveContext.timerState = TIMER_STATE_OFF;
gSaveContext.timer2State = 0; gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
gSaveContext.eventInf[0] = 0; gSaveContext.eventInf[0] = 0;
gSaveContext.eventInf[1] = 0; gSaveContext.eventInf[1] = 0;
gSaveContext.eventInf[2] = 0; gSaveContext.eventInf[2] = 0;
@ -1506,8 +1506,8 @@ void FileSelect_LoadGame(GameState* thisx) {
if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) && if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) &&
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) && (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) &&
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BGS) && (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) &&
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KNIFE)) { (gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) {
gSaveContext.equips.buttonItems[0] = ITEM_NONE; gSaveContext.equips.buttonItems[0] = ITEM_NONE;
swordEquipValue = (gEquipMasks[EQUIP_TYPE_SWORD] & gSaveContext.equips.equipment) >> (EQUIP_TYPE_SWORD * 4); swordEquipValue = (gEquipMasks[EQUIP_TYPE_SWORD] & gSaveContext.equips.equipment) >> (EQUIP_TYPE_SWORD * 4);

View file

@ -135,10 +135,10 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
/* QUEST_KOKIRI_EMERALD */ { QUEST_MEDALLION_WATER, CURSOR_NONE, QUEST_SONG_PRELUDE, QUEST_GORON_RUBY }, /* QUEST_KOKIRI_EMERALD */ { QUEST_MEDALLION_WATER, CURSOR_NONE, QUEST_SONG_PRELUDE, QUEST_GORON_RUBY },
/* QUEST_GORON_RUBY */ { QUEST_MEDALLION_WATER, CURSOR_NONE, QUEST_KOKIRI_EMERALD, QUEST_ZORA_SAPPHIRE }, /* QUEST_GORON_RUBY */ { QUEST_MEDALLION_WATER, CURSOR_NONE, QUEST_KOKIRI_EMERALD, QUEST_ZORA_SAPPHIRE },
/* QUEST_ZORA_SAPPHIRE */ { QUEST_MEDALLION_WATER, CURSOR_NONE, QUEST_GORON_RUBY, CURSOR_TO_RIGHT }, /* QUEST_ZORA_SAPPHIRE */ { QUEST_MEDALLION_WATER, CURSOR_NONE, QUEST_GORON_RUBY, CURSOR_TO_RIGHT },
/* QUEST_STONE_OF_AGONY */ { CURSOR_NONE, QUEST_SKULL_TOKEN, CURSOR_TO_LEFT, QUEST_GERUDO_CARD }, /* QUEST_STONE_OF_AGONY */ { CURSOR_NONE, QUEST_SKULL_TOKEN, CURSOR_TO_LEFT, QUEST_GERUDOS_CARD },
/* QUEST_GERUDO_CARD */ { CURSOR_NONE, QUEST_SKULL_TOKEN, QUEST_STONE_OF_AGONY, QUEST_HEART_PIECE }, /* QUEST_GERUDOS_CARD */ { CURSOR_NONE, QUEST_SKULL_TOKEN, QUEST_STONE_OF_AGONY, QUEST_HEART_PIECE },
/* QUEST_SKULL_TOKEN */ { QUEST_STONE_OF_AGONY, QUEST_SONG_LULLABY, CURSOR_TO_LEFT, QUEST_HEART_PIECE }, /* QUEST_SKULL_TOKEN */ { QUEST_STONE_OF_AGONY, QUEST_SONG_LULLABY, CURSOR_TO_LEFT, QUEST_HEART_PIECE },
/* QUEST_HEART_PIECE */ { CURSOR_NONE, QUEST_SONG_TIME, QUEST_GERUDO_CARD, QUEST_MEDALLION_SHADOW }, /* QUEST_HEART_PIECE */ { CURSOR_NONE, QUEST_SONG_TIME, QUEST_GERUDOS_CARD, QUEST_MEDALLION_SHADOW },
}; };
static s32 sUnused3 = 0; static s32 sUnused3 = 0;
@ -377,7 +377,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
cursorItem = ITEM_SCALE_GOLDEN - QUEST_SONG_MINUET + pauseCtx->cursorPoint[PAUSE_QUEST]; cursorItem = ITEM_SCALE_GOLDEN - QUEST_SONG_MINUET + pauseCtx->cursorPoint[PAUSE_QUEST];
} else { } else {
//! @bug this would result in the wrong item //! @bug this would result in the wrong item
cursorItem = ITEM_COMPASS - QUEST_SONG_LULLABY + pauseCtx->cursorPoint[PAUSE_QUEST]; cursorItem = ITEM_DUNGEON_COMPASS - QUEST_SONG_LULLABY + pauseCtx->cursorPoint[PAUSE_QUEST];
} }
} else { } else {
cursorItem = PAUSE_ITEM_NONE; cursorItem = PAUSE_ITEM_NONE;
@ -532,7 +532,7 @@ void KaleidoScope_DrawQuestStatus(PlayState* play, GraphicsContext* gfxCtx) {
} }
} }
// Draw QUEST_STONE_OF_AGONY, QUEST_GERUDO_CARD, QUEST_SKULL_TOKEN // Draw QUEST_STONE_OF_AGONY, QUEST_GERUDOS_CARD, QUEST_SKULL_TOKEN
gDPPipeSync(POLY_OPA_DISP++); gDPPipeSync(POLY_OPA_DISP++);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);

View file

@ -29,9 +29,9 @@ static u8 sMaxUpgradeValues[] = {
// Item ID corresponding to each slot, aside from bottles and trade items // Item ID corresponding to each slot, aside from bottles and trade items
static s16 sSlotItems[] = { static s16 sSlotItems[] = {
ITEM_STICK, ITEM_NUT, ITEM_BOMB, ITEM_BOW, ITEM_ARROW_FIRE, ITEM_DINS_FIRE, ITEM_DEKU_STICK, ITEM_DEKU_NUT, ITEM_BOMB, ITEM_BOW, ITEM_ARROW_FIRE, ITEM_DINS_FIRE,
ITEM_SLINGSHOT, ITEM_OCARINA_FAIRY, ITEM_BOMBCHU, ITEM_HOOKSHOT, ITEM_ARROW_ICE, ITEM_FARORES_WIND, ITEM_SLINGSHOT, ITEM_OCARINA_FAIRY, ITEM_BOMBCHU, ITEM_HOOKSHOT, ITEM_ARROW_ICE, ITEM_FARORES_WIND,
ITEM_BOOMERANG, ITEM_LENS, ITEM_BEAN, ITEM_HAMMER, ITEM_ARROW_LIGHT, ITEM_NAYRUS_LOVE, ITEM_BOOMERANG, ITEM_LENS_OF_TRUTH, ITEM_MAGIC_BEAN, ITEM_HAMMER, ITEM_ARROW_LIGHT, ITEM_NAYRUS_LOVE,
}; };
void KaleidoScope_DrawDebugEditorText(Gfx** gfxp) { void KaleidoScope_DrawDebugEditorText(Gfx** gfxp) {
@ -192,7 +192,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
for (j = 0, x = 78; j < 6; j++, slot++, x += 26) { for (j = 0, x = 78; j < 6; j++, slot++, x += 26) {
spD8[2] = 0; spD8[2] = 0;
if ((slot <= SLOT_BOW) || (slot == SLOT_SLINGSHOT) || (slot == SLOT_BOMBCHU) || (slot == SLOT_BEAN)) { if ((slot <= SLOT_BOW) || (slot == SLOT_SLINGSHOT) || (slot == SLOT_BOMBCHU) || (slot == SLOT_MAGIC_BEAN)) {
spD8[3] = AMMO(gAmmoItems[slot]); spD8[3] = AMMO(gAmmoItems[slot]);
} else if (slot == SLOT_OCARINA) { } else if (slot == SLOT_OCARINA) {
spD8[3] = gSaveContext.inventory.items[slot]; spD8[3] = gSaveContext.inventory.items[slot];
@ -408,7 +408,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
default: default:
if (curSection < 0x1B) { if (curSection < 0x1B) {
i = curSection - 3; i = curSection - 3;
if ((i <= SLOT_BOW) || (i == SLOT_SLINGSHOT) || (i == SLOT_BOMBCHU) || (i == SLOT_BEAN)) { if ((i <= SLOT_BOW) || (i == SLOT_SLINGSHOT) || (i == SLOT_BOMBCHU) || (i == SLOT_MAGIC_BEAN)) {
if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) { if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) {
Inventory_DeleteItem(gAmmoItems[i], SLOT(gAmmoItems[i])); Inventory_DeleteItem(gAmmoItems[i], SLOT(gAmmoItems[i]));
AMMO(gAmmoItems[i]) = 0; AMMO(gAmmoItems[i]) = 0;
@ -435,14 +435,14 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
if (gSaveContext.inventory.items[i] == ITEM_NONE) { if (gSaveContext.inventory.items[i] == ITEM_NONE) {
gSaveContext.inventory.items[i] = ITEM_OCARINA_FAIRY; gSaveContext.inventory.items[i] = ITEM_OCARINA_FAIRY;
} else if ((gSaveContext.inventory.items[i] >= ITEM_OCARINA_FAIRY) && } else if ((gSaveContext.inventory.items[i] >= ITEM_OCARINA_FAIRY) &&
(gSaveContext.inventory.items[i] < ITEM_OCARINA_TIME)) { (gSaveContext.inventory.items[i] < ITEM_OCARINA_OF_TIME)) {
gSaveContext.inventory.items[i]++; gSaveContext.inventory.items[i]++;
} }
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { } else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
if (gSaveContext.inventory.items[i] == ITEM_NONE) { if (gSaveContext.inventory.items[i] == ITEM_NONE) {
gSaveContext.inventory.items[i] = ITEM_OCARINA_TIME; gSaveContext.inventory.items[i] = ITEM_OCARINA_OF_TIME;
} else if ((gSaveContext.inventory.items[i] > ITEM_OCARINA_FAIRY) && } else if ((gSaveContext.inventory.items[i] > ITEM_OCARINA_FAIRY) &&
(gSaveContext.inventory.items[i] <= ITEM_OCARINA_TIME)) { (gSaveContext.inventory.items[i] <= ITEM_OCARINA_OF_TIME)) {
gSaveContext.inventory.items[i]--; gSaveContext.inventory.items[i]--;
} }
} }
@ -502,19 +502,20 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
} }
} else if ((i >= SLOT_BOTTLE_1) && (i <= SLOT_BOTTLE_4)) { } else if ((i >= SLOT_BOTTLE_1) && (i <= SLOT_BOTTLE_4)) {
if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) { if (CHECK_BTN_ALL(input->press.button, BTN_CUP)) {
Inventory_DeleteItem(ITEM_BOTTLE + i - SLOT_BOTTLE_1, SLOT(ITEM_BOTTLE) + i - SLOT_BOTTLE_1); Inventory_DeleteItem(ITEM_BOTTLE_EMPTY + i - SLOT_BOTTLE_1,
SLOT(ITEM_BOTTLE_EMPTY) + i - SLOT_BOTTLE_1);
} else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) { } else if (CHECK_BTN_ALL(input->press.button, BTN_CLEFT)) {
if (gSaveContext.inventory.items[i] == ITEM_NONE) { if (gSaveContext.inventory.items[i] == ITEM_NONE) {
gSaveContext.inventory.items[i] = ITEM_BOTTLE; gSaveContext.inventory.items[i] = ITEM_BOTTLE_EMPTY;
} else if ((gSaveContext.inventory.items[i] >= ITEM_BOTTLE) && } else if ((gSaveContext.inventory.items[i] >= ITEM_BOTTLE_EMPTY) &&
(gSaveContext.inventory.items[i] <= ITEM_MILK_HALF)) { (gSaveContext.inventory.items[i] <= ITEM_BOTTLE_MILK_HALF)) {
gSaveContext.inventory.items[i]++; gSaveContext.inventory.items[i]++;
} }
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { } else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
if (gSaveContext.inventory.items[i] == ITEM_NONE) { if (gSaveContext.inventory.items[i] == ITEM_NONE) {
gSaveContext.inventory.items[i] = ITEM_POE; gSaveContext.inventory.items[i] = ITEM_BOTTLE_POE;
} else if ((gSaveContext.inventory.items[i] >= ITEM_POTION_RED) && } else if ((gSaveContext.inventory.items[i] >= ITEM_BOTTLE_POTION_RED) &&
(gSaveContext.inventory.items[i] <= ITEM_POE)) { (gSaveContext.inventory.items[i] <= ITEM_BOTTLE_POE)) {
gSaveContext.inventory.items[i]--; gSaveContext.inventory.items[i]--;
} }
} }
@ -524,9 +525,9 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) { CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
if (i == SLOT_TRADE_ADULT) { if (i == SLOT_TRADE_ADULT) {
if (gSaveContext.inventory.items[i] == ITEM_NONE) { if (gSaveContext.inventory.items[i] == ITEM_NONE) {
gSaveContext.inventory.items[i] = ITEM_BEAN; gSaveContext.inventory.items[i] = ITEM_MAGIC_BEAN;
} else { } else {
Inventory_DeleteItem(ITEM_BEAN, SLOT(ITEM_BEAN)); Inventory_DeleteItem(ITEM_MAGIC_BEAN, SLOT(ITEM_MAGIC_BEAN));
} }
} else { } else {
j = sSlotItems[i]; j = sSlotItems[i];

View file

@ -16,31 +16,31 @@ static u8 sAdultUpgrades[] = {
}; };
static u8 sChildUpgradeItemBases[] = { static u8 sChildUpgradeItemBases[] = {
ITEM_BULLET_BAG_30, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER ITEM_BULLET_BAG_30, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER
ITEM_BOMB_BAG_20, // QUAD_EQUIP_UPG_BOMB_BAG ITEM_BOMB_BAG_20, // QUAD_EQUIP_UPG_BOMB_BAG
ITEM_BRACELET, // QUAD_EQUIP_UPG_STRENGTH ITEM_STRENGTH_GORONS_BRACELET, // QUAD_EQUIP_UPG_STRENGTH
ITEM_SCALE_SILVER, // QUAD_EQUIP_UPG_SCALE ITEM_SCALE_SILVER, // QUAD_EQUIP_UPG_SCALE
}; };
static u8 sAdultUpgradeItemBases[] = { static u8 sAdultUpgradeItemBases[] = {
ITEM_QUIVER_30, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER ITEM_QUIVER_30, // QUAD_EQUIP_UPG_BULLETBAG_QUIVER
ITEM_BOMB_BAG_20, // QUAD_EQUIP_UPG_BOMB_BAG ITEM_BOMB_BAG_20, // QUAD_EQUIP_UPG_BOMB_BAG
ITEM_BRACELET, // QUAD_EQUIP_UPG_STRENGTH ITEM_STRENGTH_GORONS_BRACELET, // QUAD_EQUIP_UPG_STRENGTH
ITEM_SCALE_SILVER, // QUAD_EQUIP_UPG_SCALE ITEM_SCALE_SILVER, // QUAD_EQUIP_UPG_SCALE
}; };
static u8 sUpgradeItemOffsets[] = { static u8 sUpgradeItemOffsets[] = {
0, // unused 0, // unused
ITEM_BOMB_BAG_20 - ITEM_QUIVER_30, // UPG_BOMB_BAG ITEM_BOMB_BAG_20 - ITEM_QUIVER_30, // UPG_BOMB_BAG
ITEM_BRACELET - ITEM_QUIVER_30, // UPG_STRENGTH ITEM_STRENGTH_GORONS_BRACELET - ITEM_QUIVER_30, // UPG_STRENGTH
ITEM_SCALE_SILVER - ITEM_QUIVER_30, // UPG_SCALE ITEM_SCALE_SILVER - ITEM_QUIVER_30, // UPG_SCALE
}; };
static u8 sEquipmentItemOffsets[] = { static u8 sEquipmentItemOffsets[] = {
// EQUIP_TYPE_SWORD // EQUIP_TYPE_SWORD
0, // unused 0, // unused
ITEM_SWORD_KOKIRI - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_KOKIRI ITEM_SWORD_KOKIRI - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_KOKIRI
ITEM_SWORD_MASTER - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_MASTER ITEM_SWORD_MASTER - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_MASTER
ITEM_SWORD_BGS - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_BGS ITEM_SWORD_BIGGORON - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SWORD_BGS
// EQUIP_TYPE_SHIELD // EQUIP_TYPE_SHIELD
0, // unused 0, // unused
ITEM_SHIELD_DEKU - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SHIELD_DEKU ITEM_SHIELD_DEKU - ITEM_SWORD_KOKIRI, // EQUIP_VALUE_SHIELD_DEKU
@ -491,7 +491,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
if (gSaveContext.bgsFlag) { if (gSaveContext.bgsFlag) {
cursorItem = ITEM_HEART_PIECE_2; cursorItem = ITEM_HEART_PIECE_2;
} else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) { } else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
cursorItem = ITEM_SWORD_KNIFE; cursorItem = ITEM_GIANTS_KNIFE;
} }
} }
@ -508,7 +508,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
pauseCtx->nameColorSet = 1; pauseCtx->nameColorSet = 1;
} }
if (pauseCtx->cursorItem[PAUSE_EQUIP] == ITEM_BRACELET) { if (pauseCtx->cursorItem[PAUSE_EQUIP] == ITEM_STRENGTH_GORONS_BRACELET) {
if (LINK_AGE_IN_YEARS == YEARS_CHILD) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
pauseCtx->nameColorSet = 0; pauseCtx->nameColorSet = 0;
} else { } else {
@ -547,15 +547,15 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
gSaveContext.equips.buttonItems[0] = cursorItem; gSaveContext.equips.buttonItems[0] = cursorItem;
if ((pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_VALUE_SWORD_BGS) && gSaveContext.bgsFlag) { if ((pauseCtx->cursorX[PAUSE_EQUIP] == EQUIP_VALUE_SWORD_BGS) && gSaveContext.bgsFlag) {
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS; gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BIGGORON;
gSaveContext.swordHealth = 8; gSaveContext.swordHealth = 8;
} else { } else {
if (gSaveContext.equips.buttonItems[0] == ITEM_HEART_PIECE_2) { if (gSaveContext.equips.buttonItems[0] == ITEM_HEART_PIECE_2) {
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS; gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BIGGORON;
} }
if ((gSaveContext.equips.buttonItems[0] == ITEM_SWORD_BGS) && !gSaveContext.bgsFlag && if ((gSaveContext.equips.buttonItems[0] == ITEM_SWORD_BIGGORON) && !gSaveContext.bgsFlag &&
CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) { CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_KNIFE; gSaveContext.equips.buttonItems[0] = ITEM_GIANTS_KNIFE;
} }
} }

View file

@ -2,21 +2,21 @@
#include "assets/textures/parameter_static/parameter_static.h" #include "assets/textures/parameter_static/parameter_static.h"
u8 gAmmoItems[] = { u8 gAmmoItems[] = {
ITEM_STICK, // SLOT_STICK ITEM_DEKU_STICK, // SLOT_DEKU_STICK
ITEM_NUT, // SLOT_NUT ITEM_DEKU_NUT, // SLOT_DEKU_NUT
ITEM_BOMB, // SLOT_BOMB ITEM_BOMB, // SLOT_BOMB
ITEM_BOW, // SLOT_BOW ITEM_BOW, // SLOT_BOW
ITEM_NONE, // SLOT_ARROW_FIRE ITEM_NONE, // SLOT_ARROW_FIRE
ITEM_NONE, // SLOT_DINS_FIRE ITEM_NONE, // SLOT_DINS_FIRE
ITEM_SLINGSHOT, // SLOT_SLINGSHOT ITEM_SLINGSHOT, // SLOT_SLINGSHOT
ITEM_NONE, // SLOT_OCARINA ITEM_NONE, // SLOT_OCARINA
ITEM_BOMBCHU, // SLOT_BOMBCHU ITEM_BOMBCHU, // SLOT_BOMBCHU
ITEM_NONE, // SLOT_HOOKSHOT ITEM_NONE, // SLOT_HOOKSHOT
ITEM_NONE, // SLOT_ARROW_ICE ITEM_NONE, // SLOT_ARROW_ICE
ITEM_NONE, // SLOT_FARORES_WIND ITEM_NONE, // SLOT_FARORES_WIND
ITEM_NONE, // SLOT_BOOMERANG ITEM_NONE, // SLOT_BOOMERANG
ITEM_NONE, // SLOT_LENS ITEM_NONE, // SLOT_LENS_OF_TRUTH
ITEM_BEAN, // SLOT_BEAN ITEM_MAGIC_BEAN, // SLOT_MAGIC_BEAN
ITEM_NONE, ITEM_NONE,
}; };
@ -32,15 +32,15 @@ static s16 sEquipAnimTimer = 0;
static s16 sEquipMoveTimer = 10; static s16 sEquipMoveTimer = 10;
static s16 sAmmoVtxOffset[] = { static s16 sAmmoVtxOffset[] = {
QUAD_ITEM_AMMO_STICK_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_STICK QUAD_ITEM_AMMO_STICK_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_DEKU_STICK
QUAD_ITEM_AMMO_NUT_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_NUT QUAD_ITEM_AMMO_NUT_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_DEKU_NUT
QUAD_ITEM_AMMO_BOMB_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BOMB QUAD_ITEM_AMMO_BOMB_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BOMB
QUAD_ITEM_AMMO_BOW_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BOW QUAD_ITEM_AMMO_BOW_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BOW
99, // (ITEM_ARROW_FIRE) 99, // (ITEM_ARROW_FIRE)
99, // (ITEM_DINS_FIRE) 99, // (ITEM_DINS_FIRE)
QUAD_ITEM_AMMO_SLINGSHOT_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_SLINGSHOT QUAD_ITEM_AMMO_SLINGSHOT_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_SLINGSHOT
99, // (ITEM_OCARINA_FAIRY) 99, // (ITEM_OCARINA_FAIRY)
99, // (ITEM_OCARINA_TIME) 99, // (ITEM_OCARINA_OF_TIME)
QUAD_ITEM_AMMO_BOMBCHU_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BOMBCHU QUAD_ITEM_AMMO_BOMBCHU_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BOMBCHU
99, // (ITEM_HOOKSHOT) 99, // (ITEM_HOOKSHOT)
99, // (ITEM_LONGSHOT) 99, // (ITEM_LONGSHOT)
@ -48,7 +48,7 @@ static s16 sAmmoVtxOffset[] = {
99, // (ITEM_FARORES_WIND) 99, // (ITEM_FARORES_WIND)
99, // (ITEM_BOOMERANG) 99, // (ITEM_BOOMERANG)
99, // (ITEM_LENS) 99, // (ITEM_LENS)
QUAD_ITEM_AMMO_BEAN_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_BEAN QUAD_ITEM_AMMO_BEAN_TENS - QUAD_ITEM_AMMO_FIRST, // ITEM_MAGIC_BEAN
}; };
void KaleidoScope_DrawAmmoCount(PauseContext* pauseCtx, GraphicsContext* gfxCtx, s16 item) { void KaleidoScope_DrawAmmoCount(PauseContext* pauseCtx, GraphicsContext* gfxCtx, s16 item) {
@ -71,9 +71,9 @@ void KaleidoScope_DrawAmmoCount(PauseContext* pauseCtx, GraphicsContext* gfxCtx,
} else if ((item == ITEM_BOMB && AMMO(item) == CUR_CAPACITY(UPG_BOMB_BAG)) || } else if ((item == ITEM_BOMB && AMMO(item) == CUR_CAPACITY(UPG_BOMB_BAG)) ||
(item == ITEM_BOW && AMMO(item) == CUR_CAPACITY(UPG_QUIVER)) || (item == ITEM_BOW && AMMO(item) == CUR_CAPACITY(UPG_QUIVER)) ||
(item == ITEM_SLINGSHOT && AMMO(item) == CUR_CAPACITY(UPG_BULLET_BAG)) || (item == ITEM_SLINGSHOT && AMMO(item) == CUR_CAPACITY(UPG_BULLET_BAG)) ||
(item == ITEM_STICK && AMMO(item) == CUR_CAPACITY(UPG_STICKS)) || (item == ITEM_DEKU_STICK && AMMO(item) == CUR_CAPACITY(UPG_DEKU_STICKS)) ||
(item == ITEM_NUT && AMMO(item) == CUR_CAPACITY(UPG_NUTS)) || (item == ITEM_BOMBCHU && ammo == 50) || (item == ITEM_DEKU_NUT && AMMO(item) == CUR_CAPACITY(UPG_DEKU_NUTS)) ||
(item == ITEM_BEAN && ammo == 15)) { (item == ITEM_BOMBCHU && ammo == 50) || (item == ITEM_MAGIC_BEAN && ammo == 15)) {
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 120, 255, 0, pauseCtx->alpha); gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 120, 255, 0, pauseCtx->alpha);
} }
} }
@ -576,7 +576,7 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
sItemEquipState2Timer_8082A488--; sItemEquipState2Timer_8082A488--;
if (sItemEquipState2Timer_8082A488 == 0) { if (sItemEquipState2Timer_8082A488 == 0) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
sEquipMoveTimer = 6; sEquipMoveTimer = 6;
WREG(90) = 320; WREG(90) = 320;
@ -653,9 +653,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if (gSaveContext.equips.buttonItems[1] != ITEM_NONE) { if (gSaveContext.equips.buttonItems[1] != ITEM_NONE) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) && if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
((gSaveContext.equips.buttonItems[1] == ITEM_BOW) || ((gSaveContext.equips.buttonItems[1] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)))) { (gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} else { } else {
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[1]; gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[1];
@ -670,9 +670,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if (gSaveContext.equips.buttonItems[1] != ITEM_NONE) { if (gSaveContext.equips.buttonItems[1] != ITEM_NONE) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) && if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
((gSaveContext.equips.buttonItems[1] == ITEM_BOW) || ((gSaveContext.equips.buttonItems[1] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)))) { (gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} else { } else {
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[1]; gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[1];
@ -687,19 +687,19 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) { if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) {
if ((gSaveContext.equips.buttonItems[1] == ITEM_BOW) || if ((gSaveContext.equips.buttonItems[1] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT))) { (gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} }
} else if (pauseCtx->equipTargetItem == ITEM_BOW) { } else if (pauseCtx->equipTargetItem == ITEM_BOW) {
if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) && if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)) { (gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)) {
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[1]; gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[1];
gSaveContext.equips.cButtonSlots[1] = gSaveContext.equips.cButtonSlots[0]; gSaveContext.equips.cButtonSlots[1] = gSaveContext.equips.cButtonSlots[0];
Interface_LoadItemIcon2(play, 2); Interface_LoadItemIcon2(play, 2);
} else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) && } else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)) { (gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)) {
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[1]; gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[1];
gSaveContext.equips.cButtonSlots[2] = gSaveContext.equips.cButtonSlots[0]; gSaveContext.equips.cButtonSlots[2] = gSaveContext.equips.cButtonSlots[0];
Interface_LoadItemIcon2(play, 3); Interface_LoadItemIcon2(play, 3);
@ -728,9 +728,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if (gSaveContext.equips.buttonItems[2] != ITEM_NONE) { if (gSaveContext.equips.buttonItems[2] != ITEM_NONE) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) && if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
((gSaveContext.equips.buttonItems[2] == ITEM_BOW) || ((gSaveContext.equips.buttonItems[2] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)))) { (gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} else { } else {
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[2]; gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[2];
@ -745,9 +745,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if (gSaveContext.equips.buttonItems[2] != ITEM_NONE) { if (gSaveContext.equips.buttonItems[2] != ITEM_NONE) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) && if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
((gSaveContext.equips.buttonItems[2] == ITEM_BOW) || ((gSaveContext.equips.buttonItems[2] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)))) { (gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} else { } else {
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[2]; gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[2];
@ -762,18 +762,18 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) { if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) {
if ((gSaveContext.equips.buttonItems[2] == ITEM_BOW) || if ((gSaveContext.equips.buttonItems[2] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT))) { (gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} }
} else if (pauseCtx->equipTargetItem == ITEM_BOW) { } else if (pauseCtx->equipTargetItem == ITEM_BOW) {
if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) && if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)) { (gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)) {
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[2]; gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[2];
Interface_LoadItemIcon2(play, 1); Interface_LoadItemIcon2(play, 1);
} else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) && } else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)) { (gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)) {
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[2]; gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[2];
Interface_LoadItemIcon2(play, 3); Interface_LoadItemIcon2(play, 3);
} }
@ -801,9 +801,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if (gSaveContext.equips.buttonItems[3] != ITEM_NONE) { if (gSaveContext.equips.buttonItems[3] != ITEM_NONE) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) && if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
((gSaveContext.equips.buttonItems[3] == ITEM_BOW) || ((gSaveContext.equips.buttonItems[3] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)))) { (gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} else { } else {
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[3]; gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[3];
@ -818,9 +818,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if (gSaveContext.equips.buttonItems[3] != ITEM_NONE) { if (gSaveContext.equips.buttonItems[3] != ITEM_NONE) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) && if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
((gSaveContext.equips.buttonItems[3] == ITEM_BOW) || ((gSaveContext.equips.buttonItems[3] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)))) { (gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} else { } else {
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[3]; gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[3];
@ -835,18 +835,18 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) { if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) {
if ((gSaveContext.equips.buttonItems[3] == ITEM_BOW) || if ((gSaveContext.equips.buttonItems[3] == ITEM_BOW) ||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) && ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT))) { (gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT))) {
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE; pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
pauseCtx->equipTargetSlot = SLOT_BOW; pauseCtx->equipTargetSlot = SLOT_BOW;
} }
} else if (pauseCtx->equipTargetItem == ITEM_BOW) { } else if (pauseCtx->equipTargetItem == ITEM_BOW) {
if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) && if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)) { (gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)) {
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[3]; gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[3];
Interface_LoadItemIcon2(play, 1); Interface_LoadItemIcon2(play, 1);
} else if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) && } else if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)) { (gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)) {
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[3]; gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[3];
Interface_LoadItemIcon2(play, 2); Interface_LoadItemIcon2(play, 2);
} }

View file

@ -58,7 +58,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
} else { } else {
pauseCtx->cursorX[PAUSE_MAP] = 1; pauseCtx->cursorX[PAUSE_MAP] = 1;
pauseCtx->cursorPoint[PAUSE_MAP] = 0; pauseCtx->cursorPoint[PAUSE_MAP] = 0;
if (!CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, gSaveContext.mapIndex)) { if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.mapIndex)) {
pauseCtx->cursorPoint[PAUSE_MAP]++; pauseCtx->cursorPoint[PAUSE_MAP]++;
if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) { if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) {
pauseCtx->cursorPoint[PAUSE_MAP]++; pauseCtx->cursorPoint[PAUSE_MAP]++;
@ -155,7 +155,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
pauseCtx->cursorSpecialPos = 0; pauseCtx->cursorSpecialPos = 0;
pauseCtx->cursorX[PAUSE_MAP] = 1; pauseCtx->cursorX[PAUSE_MAP] = 1;
pauseCtx->cursorPoint[PAUSE_MAP] = 0; pauseCtx->cursorPoint[PAUSE_MAP] = 0;
if (!CHECK_DUNGEON_ITEM(DUNGEON_KEY_BOSS, gSaveContext.mapIndex)) { if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.mapIndex)) {
pauseCtx->cursorPoint[PAUSE_MAP]++; pauseCtx->cursorPoint[PAUSE_MAP]++;
if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) { if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) {
pauseCtx->cursorPoint[PAUSE_MAP]++; pauseCtx->cursorPoint[PAUSE_MAP]++;
@ -190,7 +190,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
if (pauseCtx->cursorSpecialPos == 0) { if (pauseCtx->cursorSpecialPos == 0) {
if (pauseCtx->cursorPoint[PAUSE_MAP] < 3) { if (pauseCtx->cursorPoint[PAUSE_MAP] < 3) {
pauseCtx->cursorItem[PAUSE_MAP] = ITEM_KEY_BOSS + pauseCtx->cursorPoint[PAUSE_MAP]; pauseCtx->cursorItem[PAUSE_MAP] = ITEM_DUNGEON_BOSS_KEY + pauseCtx->cursorPoint[PAUSE_MAP];
} else { } else {
pauseCtx->cursorItem[PAUSE_MAP] = PAUSE_ITEM_NONE; pauseCtx->cursorItem[PAUSE_MAP] = PAUSE_ITEM_NONE;
} }

View file

@ -526,8 +526,8 @@ static u16 sPageSwitchNextPageIndex[] = {
}; };
u8 gSlotAgeReqs[] = { u8 gSlotAgeReqs[] = {
AGE_REQ_CHILD, // SLOT_STICK AGE_REQ_CHILD, // SLOT_DEKU_STICK
AGE_REQ_NONE, // SLOT_NUT AGE_REQ_NONE, // SLOT_DEKU_NUT
AGE_REQ_NONE, // SLOT_BOMB AGE_REQ_NONE, // SLOT_BOMB
AGE_REQ_ADULT, // SLOT_BOW AGE_REQ_ADULT, // SLOT_BOW
AGE_REQ_ADULT, // SLOT_ARROW_FIRE AGE_REQ_ADULT, // SLOT_ARROW_FIRE
@ -539,8 +539,8 @@ u8 gSlotAgeReqs[] = {
AGE_REQ_ADULT, // SLOT_ARROW_ICE AGE_REQ_ADULT, // SLOT_ARROW_ICE
AGE_REQ_NONE, // SLOT_FARORES_WIND AGE_REQ_NONE, // SLOT_FARORES_WIND
AGE_REQ_CHILD, // SLOT_BOOMERANG AGE_REQ_CHILD, // SLOT_BOOMERANG
AGE_REQ_NONE, // SLOT_LENS AGE_REQ_NONE, // SLOT_LENS_OF_TRUTH
AGE_REQ_CHILD, // SLOT_BEAN AGE_REQ_CHILD, // SLOT_MAGIC_BEAN
AGE_REQ_ADULT, // SLOT_HAMMER AGE_REQ_ADULT, // SLOT_HAMMER
AGE_REQ_ADULT, // SLOT_ARROW_LIGHT AGE_REQ_ADULT, // SLOT_ARROW_LIGHT
AGE_REQ_NONE, // SLOT_NAYRUS_LOVE AGE_REQ_NONE, // SLOT_NAYRUS_LOVE
@ -580,15 +580,15 @@ u8 gEquipAgeReqs[4][4] = {
}; };
u8 gItemAgeReqs[] = { u8 gItemAgeReqs[] = {
AGE_REQ_CHILD, // ITEM_STICK AGE_REQ_CHILD, // ITEM_DEKU_STICK
AGE_REQ_NONE, // ITEM_NUT AGE_REQ_NONE, // ITEM_DEKU_NUT
AGE_REQ_NONE, // ITEM_BOMB AGE_REQ_NONE, // ITEM_BOMB
AGE_REQ_ADULT, // ITEM_BOW AGE_REQ_ADULT, // ITEM_BOW
AGE_REQ_ADULT, // ITEM_ARROW_FIRE AGE_REQ_ADULT, // ITEM_ARROW_FIRE
AGE_REQ_NONE, // ITEM_DINS_FIRE AGE_REQ_NONE, // ITEM_DINS_FIRE
AGE_REQ_CHILD, // ITEM_SLINGSHOT AGE_REQ_CHILD, // ITEM_SLINGSHOT
AGE_REQ_NONE, // ITEM_OCARINA_FAIRY AGE_REQ_NONE, // ITEM_OCARINA_FAIRY
AGE_REQ_NONE, // ITEM_OCARINA_TIME AGE_REQ_NONE, // ITEM_OCARINA_OF_TIME
AGE_REQ_NONE, // ITEM_BOMBCHU AGE_REQ_NONE, // ITEM_BOMBCHU
AGE_REQ_ADULT, // ITEM_HOOKSHOT AGE_REQ_ADULT, // ITEM_HOOKSHOT
AGE_REQ_ADULT, // ITEM_LONGSHOT AGE_REQ_ADULT, // ITEM_LONGSHOT
@ -596,7 +596,7 @@ u8 gItemAgeReqs[] = {
AGE_REQ_NONE, // ITEM_FARORES_WIND AGE_REQ_NONE, // ITEM_FARORES_WIND
AGE_REQ_CHILD, // ITEM_BOOMERANG AGE_REQ_CHILD, // ITEM_BOOMERANG
AGE_REQ_NONE, // ITEM_LENS AGE_REQ_NONE, // ITEM_LENS
AGE_REQ_CHILD, // ITEM_BEAN AGE_REQ_CHILD, // ITEM_MAGIC_BEAN
AGE_REQ_ADULT, // ITEM_HAMMER AGE_REQ_ADULT, // ITEM_HAMMER
AGE_REQ_ADULT, // ITEM_ARROW_LIGHT AGE_REQ_ADULT, // ITEM_ARROW_LIGHT
AGE_REQ_NONE, // ITEM_NAYRUS_LOVE AGE_REQ_NONE, // ITEM_NAYRUS_LOVE
@ -630,18 +630,18 @@ u8 gItemAgeReqs[] = {
AGE_REQ_ADULT, // ITEM_COJIRO AGE_REQ_ADULT, // ITEM_COJIRO
AGE_REQ_ADULT, // ITEM_ODD_MUSHROOM AGE_REQ_ADULT, // ITEM_ODD_MUSHROOM
AGE_REQ_ADULT, // ITEM_ODD_POTION AGE_REQ_ADULT, // ITEM_ODD_POTION
AGE_REQ_ADULT, // ITEM_SAW AGE_REQ_ADULT, // ITEM_POACHERS_SAW
AGE_REQ_ADULT, // ITEM_SWORD_BROKEN AGE_REQ_ADULT, // ITEM_BROKEN_GORONS_SWORD
AGE_REQ_ADULT, // ITEM_PRESCRIPTION AGE_REQ_ADULT, // ITEM_PRESCRIPTION
AGE_REQ_ADULT, // ITEM_FROG AGE_REQ_ADULT, // ITEM_EYEBALL_FROG
AGE_REQ_ADULT, // ITEM_EYEDROPS AGE_REQ_ADULT, // ITEM_EYE_DROPS
AGE_REQ_ADULT, // ITEM_CLAIM_CHECK AGE_REQ_ADULT, // ITEM_CLAIM_CHECK
AGE_REQ_ADULT, // ITEM_BOW_ARROW_FIRE AGE_REQ_ADULT, // ITEM_BOW_FIRE
AGE_REQ_ADULT, // ITEM_BOW_ARROW_ICE AGE_REQ_ADULT, // ITEM_BOW_ARROW_ICE
AGE_REQ_ADULT, // ITEM_BOW_ARROW_LIGHT AGE_REQ_ADULT, // ITEM_BOW_ARROW_LIGHT
AGE_REQ_CHILD, // ITEM_SWORD_KOKIRI AGE_REQ_CHILD, // ITEM_SWORD_KOKIRI
AGE_REQ_ADULT, // ITEM_SWORD_MASTER AGE_REQ_ADULT, // ITEM_SWORD_MASTER
AGE_REQ_ADULT, // ITEM_SWORD_BGS AGE_REQ_ADULT, // ITEM_SWORD_BIGGORON
AGE_REQ_CHILD, // ITEM_SHIELD_DEKU AGE_REQ_CHILD, // ITEM_SHIELD_DEKU
AGE_REQ_NONE, // ITEM_SHIELD_HYLIAN AGE_REQ_NONE, // ITEM_SHIELD_HYLIAN
AGE_REQ_ADULT, // ITEM_SHIELD_MIRROR AGE_REQ_ADULT, // ITEM_SHIELD_MIRROR
@ -660,7 +660,7 @@ u8 gItemAgeReqs[] = {
AGE_REQ_NONE, // ITEM_BOMB_BAG_20 AGE_REQ_NONE, // ITEM_BOMB_BAG_20
AGE_REQ_NONE, // ITEM_BOMB_BAG_30 AGE_REQ_NONE, // ITEM_BOMB_BAG_30
AGE_REQ_NONE, // ITEM_BOMB_BAG_40 AGE_REQ_NONE, // ITEM_BOMB_BAG_40
AGE_REQ_CHILD, // ITEM_BRACELET AGE_REQ_CHILD, // ITEM_STRENGTH_GORONS_BRACELET
AGE_REQ_ADULT, // ITEM_GAUNTLETS_SILVER AGE_REQ_ADULT, // ITEM_GAUNTLETS_SILVER
AGE_REQ_ADULT, // ITEM_GAUNTLETS_GOLD AGE_REQ_ADULT, // ITEM_GAUNTLETS_GOLD
AGE_REQ_NONE, // ITEM_SCALE_SILVER AGE_REQ_NONE, // ITEM_SCALE_SILVER
@ -2516,13 +2516,13 @@ s16 KaleidoScope_SetPageVertices(PlayState* play, Vtx* vtx, s16 vtxPage, s16 num
} }
static s16 sItemVtxQuadsWithAmmo[] = { static s16 sItemVtxQuadsWithAmmo[] = {
SLOT_STICK * 4, // QUAD_ITEM_AMMO_STICK_ SLOT_DEKU_STICK * 4, // QUAD_ITEM_AMMO_STICK_
SLOT_NUT * 4, // QUAD_ITEM_AMMO_NUT_ SLOT_DEKU_NUT * 4, // QUAD_ITEM_AMMO_NUT_
SLOT_BOMB * 4, // QUAD_ITEM_AMMO_BOMB_ SLOT_BOMB * 4, // QUAD_ITEM_AMMO_BOMB_
SLOT_BOW * 4, // QUAD_ITEM_AMMO_BOW_ SLOT_BOW * 4, // QUAD_ITEM_AMMO_BOW_
SLOT_SLINGSHOT * 4, // QUAD_ITEM_AMMO_SLINGSHOT_ SLOT_SLINGSHOT * 4, // QUAD_ITEM_AMMO_SLINGSHOT_
SLOT_BOMBCHU * 4, // QUAD_ITEM_AMMO_BOMBCHU_ SLOT_BOMBCHU * 4, // QUAD_ITEM_AMMO_BOMBCHU_
SLOT_BEAN * 4, // QUAD_ITEM_AMMO_BEAN_ SLOT_MAGIC_BEAN * 4, // QUAD_ITEM_AMMO_BEAN_
}; };
static s16 sEquipColumnsX[] = { -114, 12, 44, 76 }; static s16 sEquipColumnsX[] = { -114, 12, 44, 76 };
@ -2557,7 +2557,7 @@ static s16 sQuestQuadsX[] = {
46, // QUEST_GORON_RUBY 46, // QUEST_GORON_RUBY
72, // QUEST_ZORA_SAPPHIRE 72, // QUEST_ZORA_SAPPHIRE
-110, // QUEST_STONE_OF_AGONY -110, // QUEST_STONE_OF_AGONY
-86, // QUEST_GERUDO_CARD -86, // QUEST_GERUDOS_CARD
-110, // QUEST_SKULL_TOKEN -110, // QUEST_SKULL_TOKEN
-54, // QUEST_HEART_PIECE -54, // QUEST_HEART_PIECE
-98, // QUAD_QUEST_SONG_NOTE_A1 -98, // QUAD_QUEST_SONG_NOTE_A1
@ -2607,7 +2607,7 @@ static s16 sQuestQuadsY[] = {
-46, // QUEST_GORON_RUBY -46, // QUEST_GORON_RUBY
-46, // QUEST_ZORA_SAPPHIRE -46, // QUEST_ZORA_SAPPHIRE
58, // QUEST_STONE_OF_AGONY 58, // QUEST_STONE_OF_AGONY
58, // QUEST_GERUDO_CARD 58, // QUEST_GERUDOS_CARD
34, // QUEST_SKULL_TOKEN 34, // QUEST_SKULL_TOKEN
58, // QUEST_HEART_PIECE 58, // QUEST_HEART_PIECE
-52, // QUAD_QUEST_SONG_NOTE_A1 -52, // QUAD_QUEST_SONG_NOTE_A1
@ -2657,7 +2657,7 @@ static s16 sQuestQuadsSize[] = {
24, // QUEST_GORON_RUBY 24, // QUEST_GORON_RUBY
24, // QUEST_ZORA_SAPPHIRE 24, // QUEST_ZORA_SAPPHIRE
24, // QUEST_STONE_OF_AGONY 24, // QUEST_STONE_OF_AGONY
24, // QUEST_GERUDO_CARD 24, // QUEST_GERUDOS_CARD
24, // QUEST_SKULL_TOKEN 24, // QUEST_SKULL_TOKEN
48, // QUEST_HEART_PIECE 48, // QUEST_HEART_PIECE
16, // QUAD_QUEST_SONG_NOTE_A1 16, // QUAD_QUEST_SONG_NOTE_A1
@ -3652,7 +3652,7 @@ void KaleidoScope_Update(PlayState* play) {
pauseCtx->worldMapPoints[i] = WORLD_MAP_POINT_STATE_HIDE; pauseCtx->worldMapPoints[i] = WORLD_MAP_POINT_STATE_HIDE;
} }
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) { if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_HAUNTED_WASTELAND] = WORLD_MAP_POINT_STATE_HIGHLIGHT; pauseCtx->worldMapPoints[WORLD_MAP_POINT_HAUNTED_WASTELAND] = WORLD_MAP_POINT_STATE_HIGHLIGHT;
} }
if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) { if (CHECK_QUEST_ITEM(QUEST_MEDALLION_SPIRIT)) {
@ -3662,7 +3662,7 @@ void KaleidoScope_Update(PlayState* play) {
if (INV_CONTENT(ITEM_LONGSHOT) == ITEM_LONGSHOT) { if (INV_CONTENT(ITEM_LONGSHOT) == ITEM_LONGSHOT) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDOS_FORTRESS] = WORLD_MAP_POINT_STATE_HIGHLIGHT; pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDOS_FORTRESS] = WORLD_MAP_POINT_STATE_HIGHLIGHT;
} }
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) { if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDOS_FORTRESS] = WORLD_MAP_POINT_STATE_SHOW; pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDOS_FORTRESS] = WORLD_MAP_POINT_STATE_SHOW;
} }
@ -3672,7 +3672,7 @@ void KaleidoScope_Update(PlayState* play) {
if (INV_CONTENT(ITEM_LONGSHOT) == ITEM_LONGSHOT) { if (INV_CONTENT(ITEM_LONGSHOT) == ITEM_LONGSHOT) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDO_VALLEY] = WORLD_MAP_POINT_STATE_HIGHLIGHT; pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDO_VALLEY] = WORLD_MAP_POINT_STATE_HIGHLIGHT;
} }
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) { if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDO_VALLEY] = WORLD_MAP_POINT_STATE_SHOW; pauseCtx->worldMapPoints[WORLD_MAP_POINT_GERUDO_VALLEY] = WORLD_MAP_POINT_STATE_SHOW;
} }
@ -3708,7 +3708,7 @@ void KaleidoScope_Update(PlayState* play) {
if (GET_EVENTCHKINF(EVENTCHKINF_40)) { if (GET_EVENTCHKINF(EVENTCHKINF_40)) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_MARKET] = WORLD_MAP_POINT_STATE_SHOW; pauseCtx->worldMapPoints[WORLD_MAP_POINT_MARKET] = WORLD_MAP_POINT_STATE_SHOW;
} }
if (INV_CONTENT(ITEM_OCARINA_TIME) == ITEM_OCARINA_TIME) { if (INV_CONTENT(ITEM_OCARINA_OF_TIME) == ITEM_OCARINA_OF_TIME) {
pauseCtx->worldMapPoints[WORLD_MAP_POINT_MARKET] = WORLD_MAP_POINT_STATE_HIGHLIGHT; pauseCtx->worldMapPoints[WORLD_MAP_POINT_MARKET] = WORLD_MAP_POINT_STATE_HIGHLIGHT;
} }
if (GET_EVENTCHKINF(EVENTCHKINF_45)) { if (GET_EVENTCHKINF(EVENTCHKINF_45)) {
@ -3818,16 +3818,16 @@ void KaleidoScope_Update(PlayState* play) {
if ((i == ITEM_COJIRO) || (i == ITEM_ODD_POTION)) { if ((i == ITEM_COJIRO) || (i == ITEM_ODD_POTION)) {
pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_LOST_WOODS; pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_LOST_WOODS;
} }
if (i == ITEM_SAW) { if (i == ITEM_POACHERS_SAW) {
pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_GERUDO_VALLEY; pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_GERUDO_VALLEY;
} }
if ((i == ITEM_SWORD_BROKEN) || (i == ITEM_EYEDROPS)) { if ((i == ITEM_BROKEN_GORONS_SWORD) || (i == ITEM_EYE_DROPS)) {
pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_DEATH_MOUNTAIN; pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_DEATH_MOUNTAIN;
} }
if (i == ITEM_PRESCRIPTION) { if (i == ITEM_PRESCRIPTION) {
pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_ZORAS_DOMAIN; pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_ZORAS_DOMAIN;
} }
if (i == ITEM_FROG) { if (i == ITEM_EYEBALL_FROG) {
pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_HYLIA_LAKESIDE; pauseCtx->tradeQuestLocation = WORLD_MAP_POINT_HYLIA_LAKESIDE;
} }
if ((i == ITEM_CLAIM_CHECK) && !gSaveContext.bgsFlag) { if ((i == ITEM_CLAIM_CHECK) && !gSaveContext.bgsFlag) {

View file

@ -3,46 +3,46 @@
import struct, sys import struct, sys
item_ids = { item_ids = {
0x00 : "ITEM_STICK", 0x00 : "ITEM_DEKU_STICK",
0x01 : "ITEM_NUT", 0x01 : "ITEM_DEKU_NUT",
0x02 : "ITEM_BOMB", 0x02 : "ITEM_BOMB",
0x03 : "ITEM_BOW", 0x03 : "ITEM_BOW",
0x04 : "ITEM_ARROW_FIRE", 0x04 : "ITEM_ARROW_FIRE",
0x05 : "ITEM_DINS_FIRE", 0x05 : "ITEM_DINS_FIRE",
0x06 : "ITEM_SLINGSHOT", 0x06 : "ITEM_SLINGSHOT",
0x07 : "ITEM_OCARINA_FAIRY", 0x07 : "ITEM_OCARINA_FAIRY",
0x08 : "ITEM_OCARINA_TIME", 0x08 : "ITEM_OCARINA_OF_TIME",
0x09 : "ITEM_BOMBCHU", 0x09 : "ITEM_BOMBCHU",
0x0A : "ITEM_HOOKSHOT", 0x0A : "ITEM_HOOKSHOT",
0x0B : "ITEM_LONGSHOT", 0x0B : "ITEM_LONGSHOT",
0x0C : "ITEM_ARROW_ICE", 0x0C : "ITEM_ARROW_ICE",
0x0D : "ITEM_FARORES_WIND", 0x0D : "ITEM_FARORES_WIND",
0x0E : "ITEM_BOOMERANG", 0x0E : "ITEM_BOOMERANG",
0x0F : "ITEM_LENS", 0x0F : "ITEM_LENS_OF_TRUTH",
0x10 : "ITEM_BEAN", 0x10 : "ITEM_MAGIC_BEAN",
0x11 : "ITEM_HAMMER", 0x11 : "ITEM_HAMMER",
0x12 : "ITEM_ARROW_LIGHT", 0x12 : "ITEM_ARROW_LIGHT",
0x13 : "ITEM_NAYRUS_LOVE", 0x13 : "ITEM_NAYRUS_LOVE",
0x14 : "ITEM_BOTTLE", 0x14 : "ITEM_BOTTLE_EMPTY",
0x15 : "ITEM_POTION_RED", 0x15 : "ITEM_BOTTLE_POTION_RED",
0x16 : "ITEM_POTION_GREEN", 0x16 : "ITEM_BOTTLE_POTION_GREEN",
0x17 : "ITEM_POTION_BLUE", 0x17 : "ITEM_BOTTLE_POTION_BLUE",
0x18 : "ITEM_FAIRY", 0x18 : "ITEM_BOTTLE_FAIRY",
0x19 : "ITEM_FISH", 0x19 : "ITEM_BOTTLE_FISH",
0x1A : "ITEM_MILK_BOTTLE", 0x1A : "ITEM_BOTTLE_MILK_FULL",
0x1B : "ITEM_LETTER_RUTO", 0x1B : "ITEM_BOTTLE_RUTOS_LETTER",
0x1C : "ITEM_BLUE_FIRE", 0x1C : "ITEM_BOTTLE_BLUE_FIRE",
0x1D : "ITEM_BUG", 0x1D : "ITEM_BOTTLE_BUG",
0x1E : "ITEM_BIG_POE", 0x1E : "ITEM_BOTTLE_BIG_POE",
0x1F : "ITEM_MILK_HALF", 0x1F : "ITEM_BOTTLE_MILK_HALF",
0x20 : "ITEM_POE", 0x20 : "ITEM_BOTTLE_POE",
0x21 : "ITEM_WEIRD_EGG", 0x21 : "ITEM_WEIRD_EGG",
0x22 : "ITEM_CHICKEN", 0x22 : "ITEM_CHICKEN",
0x23 : "ITEM_LETTER_ZELDA", 0x23 : "ITEM_ZELDAS_LETTER",
0x24 : "ITEM_MASK_KEATON", 0x24 : "ITEM_MASK_KEATON",
0x25 : "ITEM_MASK_SKULL", 0x25 : "ITEM_MASK_SKULL",
0x26 : "ITEM_MASK_SPOOKY", 0x26 : "ITEM_MASK_SPOOKY",
0x27 : "ITEM_MASK_BUNNY", 0x27 : "ITEM_MASK_BUNNY_HOOD",
0x28 : "ITEM_MASK_GORON", 0x28 : "ITEM_MASK_GORON",
0x29 : "ITEM_MASK_ZORA", 0x29 : "ITEM_MASK_ZORA",
0x2A : "ITEM_MASK_GERUDO", 0x2A : "ITEM_MASK_GERUDO",
@ -53,18 +53,18 @@ item_ids = {
0x2F : "ITEM_COJIRO", 0x2F : "ITEM_COJIRO",
0x30 : "ITEM_ODD_MUSHROOM", 0x30 : "ITEM_ODD_MUSHROOM",
0x31 : "ITEM_ODD_POTION", 0x31 : "ITEM_ODD_POTION",
0x32 : "ITEM_SAW", 0x32 : "ITEM_POACHERS_SAW",
0x33 : "ITEM_SWORD_BROKEN", 0x33 : "ITEM_BROKEN_GORONS_SWORD",
0x34 : "ITEM_PRESCRIPTION", 0x34 : "ITEM_PRESCRIPTION",
0x35 : "ITEM_FROG", 0x35 : "ITEM_EYEBALL_FROG",
0x36 : "ITEM_EYEDROPS", 0x36 : "ITEM_EYE_DROPS",
0x37 : "ITEM_CLAIM_CHECK", 0x37 : "ITEM_CLAIM_CHECK",
0x38 : "ITEM_BOW_ARROW_FIRE", 0x38 : "ITEM_BOW_FIRE",
0x39 : "ITEM_BOW_ARROW_ICE", 0x39 : "ITEM_BOW_ICE",
0x3A : "ITEM_BOW_ARROW_LIGHT", 0x3A : "ITEM_BOW_LIGHT",
0x3B : "ITEM_SWORD_KOKIRI", 0x3B : "ITEM_SWORD_KOKIRI",
0x3C : "ITEM_SWORD_MASTER", 0x3C : "ITEM_SWORD_MASTER",
0x3D : "ITEM_SWORD_BGS", 0x3D : "ITEM_SWORD_BIGGORON",
0x3E : "ITEM_SHIELD_DEKU", 0x3E : "ITEM_SHIELD_DEKU",
0x3F : "ITEM_SHIELD_HYLIAN", 0x3F : "ITEM_SHIELD_HYLIAN",
0x40 : "ITEM_SHIELD_MIRROR", 0x40 : "ITEM_SHIELD_MIRROR",
@ -83,15 +83,15 @@ item_ids = {
0x4D : "ITEM_BOMB_BAG_20", 0x4D : "ITEM_BOMB_BAG_20",
0x4E : "ITEM_BOMB_BAG_30", 0x4E : "ITEM_BOMB_BAG_30",
0x4F : "ITEM_BOMB_BAG_40", 0x4F : "ITEM_BOMB_BAG_40",
0x50 : "ITEM_BRACELET", 0x50 : "ITEM_STRENGTH_GORONS_BRACELET",
0x51 : "ITEM_GAUNTLETS_SILVER", 0x51 : "ITEM_STRENGTH_SILVER_GAUNTLETS",
0x52 : "ITEM_GAUNTLETS_GOLD", 0x52 : "ITEM_STRENGTH_GOLD_GAUNTLETS",
0x53 : "ITEM_SCALE_SILVER", 0x53 : "ITEM_SCALE_SILVER",
0x54 : "ITEM_SCALE_GOLDEN", 0x54 : "ITEM_SCALE_GOLDEN",
0x55 : "ITEM_SWORD_KNIFE", 0x55 : "ITEM_GIANTS_KNIFE",
0x56 : "ITEM_WALLET_ADULT", 0x56 : "ITEM_ADULTS_WALLET",
0x57 : "ITEM_WALLET_GIANT", 0x57 : "ITEM_GIANTS_WALLET",
0x58 : "ITEM_SEEDS", 0x58 : "ITEM_DEKU_SEEDS",
0x59 : "ITEM_FISHING_POLE", 0x59 : "ITEM_FISHING_POLE",
0x5A : "ITEM_SONG_MINUET", 0x5A : "ITEM_SONG_MINUET",
0x5B : "ITEM_SONG_BOLERO", 0x5B : "ITEM_SONG_BOLERO",
@ -115,16 +115,16 @@ item_ids = {
0x6D : "ITEM_GORON_RUBY", 0x6D : "ITEM_GORON_RUBY",
0x6E : "ITEM_ZORA_SAPPHIRE", 0x6E : "ITEM_ZORA_SAPPHIRE",
0x6F : "ITEM_STONE_OF_AGONY", 0x6F : "ITEM_STONE_OF_AGONY",
0x70 : "ITEM_GERUDO_CARD", 0x70 : "ITEM_GERUDOS_CARD",
0x71 : "ITEM_SKULL_TOKEN", 0x71 : "ITEM_SKULL_TOKEN",
0x72 : "ITEM_HEART_CONTAINER", 0x72 : "ITEM_HEART_CONTAINER",
0x73 : "ITEM_HEART_PIECE", 0x73 : "ITEM_HEART_PIECE",
0x74 : "ITEM_KEY_BOSS", 0x74 : "ITEM_DUNGEON_BOSS_KEY",
0x75 : "ITEM_COMPASS", 0x75 : "ITEM_DUNGEON_COMPASS",
0x76 : "ITEM_DUNGEON_MAP", 0x76 : "ITEM_DUNGEON_MAP",
0x77 : "ITEM_KEY_SMALL", 0x77 : "ITEM_SMALL_KEY",
0x78 : "ITEM_MAGIC_SMALL", 0x78 : "ITEM_MAGIC_JAR_SMALL",
0x79 : "ITEM_MAGIC_LARGE", 0x79 : "ITEM_MAGIC_JAR_BIG",
0x7A : "ITEM_HEART_PIECE_2", 0x7A : "ITEM_HEART_PIECE_2",
0x7B : "ITEM_INVALID_1", 0x7B : "ITEM_INVALID_1",
0x7C : "ITEM_INVALID_2", 0x7C : "ITEM_INVALID_2",
@ -141,24 +141,24 @@ item_ids = {
0x87 : "ITEM_RUPEE_PURPLE", 0x87 : "ITEM_RUPEE_PURPLE",
0x88 : "ITEM_RUPEE_GOLD", 0x88 : "ITEM_RUPEE_GOLD",
0x89 : "ITEM_INVALID_8", 0x89 : "ITEM_INVALID_8",
0x8A : "ITEM_STICKS_5", 0x8A : "ITEM_DEKU_STICKS_5",
0x8B : "ITEM_STICKS_10", 0x8B : "ITEM_DEKU_STICKS_10",
0x8C : "ITEM_NUTS_5", 0x8C : "ITEM_DEKU_NUTS_5",
0x8D : "ITEM_NUTS_10", 0x8D : "ITEM_DEKU_NUTS_10",
0x8E : "ITEM_BOMBS_5", 0x8E : "ITEM_BOMBS_5",
0x8F : "ITEM_BOMBS_10", 0x8F : "ITEM_BOMBS_10",
0x90 : "ITEM_BOMBS_20", 0x90 : "ITEM_BOMBS_20",
0x91 : "ITEM_BOMBS_30", 0x91 : "ITEM_BOMBS_30",
0x92 : "ITEM_ARROWS_SMALL", 0x92 : "ITEM_ARROWS_5",
0x93 : "ITEM_ARROWS_MEDIUM", 0x93 : "ITEM_ARROWS_10",
0x94 : "ITEM_ARROWS_LARGE", 0x94 : "ITEM_ARROWS_30",
0x95 : "ITEM_SEEDS_30", 0x95 : "ITEM_DEKU_SEEDS_30",
0x96 : "ITEM_BOMBCHUS_5", 0x96 : "ITEM_BOMBCHUS_5",
0x97 : "ITEM_BOMBCHUS_20", 0x97 : "ITEM_BOMBCHUS_20",
0x98 : "ITEM_STICK_UPGRADE_20", 0x98 : "ITEM_DEKU_STICK_UPGRADE_20",
0x99 : "ITEM_STICK_UPGRADE_30", 0x99 : "ITEM_DEKU_STICK_UPGRADE_30",
0x9A : "ITEM_NUT_UPGRADE_30", 0x9A : "ITEM_DEKU_NUT_UPGRADE_30",
0x9B : "ITEM_NUT_UPGRADE_40", 0x9B : "ITEM_DEKU_NUT_UPGRADE_40",
0xFC : "ITEM_LAST_USED", 0xFC : "ITEM_LAST_USED",
0xFE : "ITEM_NONE_FE", 0xFE : "ITEM_NONE_FE",
0xFF : "ITEM_NONE", 0xFF : "ITEM_NONE",