mirror of
https://github.com/zeldaret/oot
synced 2026-05-26 15:45:46 -04:00
Merge branch 'master' into cleanup_colchk_1
This commit is contained in:
+5
-27
@@ -21,24 +21,10 @@ void Main_ThreadEntry(void* arg);
|
||||
void Idle_ThreadEntry(void* arg);
|
||||
void ViConfig_UpdateVi(u32 black);
|
||||
void ViConfig_UpdateBlack(void);
|
||||
s32 DmaMgr_CompareName(const char* name1, const char* name2);
|
||||
s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, u32 size);
|
||||
s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction);
|
||||
void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, const char* errorDesc);
|
||||
const char* DmaMgr_GetFileNameImpl(uintptr_t vrom);
|
||||
const char* DmaMgr_GetFileName(uintptr_t vrom);
|
||||
void DmaMgr_ProcessMsg(DmaRequest* req);
|
||||
void DmaMgr_ThreadEntry(void* arg);
|
||||
s32 DmaMgr_SendRequestImpl(DmaRequest* req, void* ram, uintptr_t vrom, u32 size, u32 unk, OSMesgQueue* queue, OSMesg msg);
|
||||
s32 DmaMgr_SendRequest0(void* ram, uintptr_t vrom, u32 size);
|
||||
void DmaMgr_Init(void);
|
||||
s32 DmaMgr_SendRequest2(DmaRequest* req, void* ram, uintptr_t vrom, u32 size, u32 unk5, OSMesgQueue* queue, OSMesg msg,
|
||||
const char* file, s32 line);
|
||||
s32 DmaMgr_SendRequest1(void* ram, uintptr_t vrom, u32 size, const char* file, s32 line);
|
||||
void* Yaz0_FirstDMA(void);
|
||||
void* Yaz0_NextDMA(u8* curSrcPos);
|
||||
void Yaz0_DecompressImpl(Yaz0Header* hdr, u8* dst);
|
||||
void Yaz0_Decompress(uintptr_t romStart, u8* dst, u32 size);
|
||||
void Yaz0_Decompress(uintptr_t romStart, u8* dst, size_t size);
|
||||
void Locale_Init(void);
|
||||
void Locale_ResetRegion(void);
|
||||
u32 func_80001F48(void);
|
||||
@@ -995,9 +981,9 @@ void Inventory_ChangeAmmo(s16 item, s16 ammoChange);
|
||||
void Magic_Fill(PlayState* play);
|
||||
void Magic_Reset(PlayState* play);
|
||||
s32 Magic_RequestChange(PlayState* play, s16 amount, s16 type);
|
||||
void func_80088AA0(s16 arg0);
|
||||
void func_80088AF0(PlayState* play);
|
||||
void func_80088B34(s16 arg0);
|
||||
void Interface_SetSubTimer(s16 seconds);
|
||||
void Interface_SetSubTimerToFinalSecond(PlayState* play);
|
||||
void Interface_SetTimer(s16 seconds);
|
||||
void Interface_Draw(PlayState* play);
|
||||
void Interface_Update(PlayState* play);
|
||||
Path* Path_GetByIndex(PlayState* play, s16 index, s16 max);
|
||||
@@ -1039,7 +1025,7 @@ s32 Player_GetBottleHeld(Player* this);
|
||||
s32 Player_ActionToExplosive(Player* this, s32 itemAction);
|
||||
s32 Player_GetExplosiveHeld(Player* this);
|
||||
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,
|
||||
s32 boots, s32 face, OverrideLimbDrawOpa overrideLimbDraw, PostLimbDrawOpa postLimbDraw,
|
||||
void* data);
|
||||
@@ -1394,14 +1380,6 @@ void DbCamera_Reset(Camera* cam, DbCamera* dbCam);
|
||||
// ? DbCamera_UpdateDemoControl(?);
|
||||
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 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_ClearOvl(KaleidoMgrOverlay* ovl);
|
||||
void KaleidoManager_Init(PlayState* play);
|
||||
|
||||
+5
-5
@@ -49,7 +49,7 @@
|
||||
#define SLOT(item) gItemSlots[item]
|
||||
#define INV_CONTENT(item) gSaveContext.inventory.items[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 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 CLEAR_EVENTINF(flag) (gSaveContext.eventInf[(flag) >> 4] &= ~(1 << ((flag) & 0xF)))
|
||||
|
||||
#define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \
|
||||
? ITEM_NONE \
|
||||
: (gSaveContext.equips.buttonItems[0] == ITEM_SWORD_KNIFE) \
|
||||
? ITEM_SWORD_BGS \
|
||||
#define B_BTN_ITEM ((gSaveContext.buttonStatus[0] == ITEM_NONE) \
|
||||
? ITEM_NONE \
|
||||
: (gSaveContext.equips.buttonItems[0] == ITEM_GIANTS_KNIFE) \
|
||||
? ITEM_SWORD_BIGGORON \
|
||||
: gSaveContext.equips.buttonItems[0])
|
||||
|
||||
#define C_BTN_ITEM(button) ((gSaveContext.buttonStatus[(button) + 1] != BTN_DISABLED) \
|
||||
|
||||
@@ -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
|
||||
@@ -13,8 +13,6 @@ extern u32 osMemSize;
|
||||
extern u8 osAppNMIBuffer[0x40];
|
||||
|
||||
extern s8 D_80009430;
|
||||
extern u32 gDmaMgrVerbose;
|
||||
extern u32 gDmaMgrDmaBuffSize;
|
||||
extern vu8 gViConfigBlack;
|
||||
extern u8 gViConfigAdditionalScanLines;
|
||||
extern u32 gViConfigFeatures;
|
||||
@@ -53,7 +51,6 @@ extern OSTime __osCurrentTime;
|
||||
extern u32 __osBaseCounter;
|
||||
extern u32 __osViIntrCount;
|
||||
extern u32 __osTimerCounter;
|
||||
extern DmaEntry gDmaDataTable[0x60C];
|
||||
extern EffectSsOverlay gEffectSsOverlayTable[EFFECT_SS_TYPE_MAX];
|
||||
extern Gfx D_80116280[];
|
||||
extern ActorOverlay gActorOverlayTable[ACTOR_ID_MAX]; // original name: "actor_dlftbls" 801162A0
|
||||
|
||||
+29
-1
@@ -38,6 +38,7 @@
|
||||
#include "fault.h"
|
||||
#include "sched.h"
|
||||
#include "rumble.h"
|
||||
#include "mempak.h"
|
||||
#include "tha.h"
|
||||
#include "thga.h"
|
||||
|
||||
@@ -419,11 +420,14 @@ typedef enum {
|
||||
// TODO get these properties from the textures themselves
|
||||
#define FONT_CHAR_TEX_WIDTH 16
|
||||
#define FONT_CHAR_TEX_HEIGHT 16
|
||||
#define FONT_CHAR_TEX_SIZE ((16 * 16) / 2) // 16x16 I4 texture
|
||||
#define FONT_CHAR_TEX_SIZE ((FONT_CHAR_TEX_WIDTH * FONT_CHAR_TEX_HEIGHT) / 2) // 16x16 I4 texture
|
||||
|
||||
// TODO get these properties from the textures themselves
|
||||
#define MESSAGE_STATIC_TEX_SIZE 0x1000
|
||||
|
||||
// TODO get these properties from the textures themselves
|
||||
#define MESSAGE_TEXTURE_STATIC_TEX_SIZE 0x900
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ MSGMODE_NONE,
|
||||
/* 0x01 */ MSGMODE_TEXT_START,
|
||||
@@ -615,6 +619,11 @@ typedef enum {
|
||||
/* 0x1D */ DO_ACTION_MAX
|
||||
} DoAction;
|
||||
|
||||
// TODO extract this information from the texture definitions themselves
|
||||
#define DO_ACTION_TEX_WIDTH 48
|
||||
#define DO_ACTION_TEX_HEIGHT 16
|
||||
#define DO_ACTION_TEX_SIZE ((DO_ACTION_TEX_WIDTH * DO_ACTION_TEX_HEIGHT) / 2) // (sizeof(gCheckDoActionENGTex))
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ View view;
|
||||
/* 0x0128 */ Vtx* actionVtx;
|
||||
@@ -1428,6 +1437,25 @@ typedef struct {
|
||||
/* 0x6C */ s16* skullFloorIconY; // dungeon big skull icon Y pos
|
||||
} MapData; // size = 0x70
|
||||
|
||||
// TODO get these properties from the textures themselves
|
||||
#define MAP_I_TEX_WIDTH 96
|
||||
#define MAP_I_TEX_HEIGHT 85
|
||||
#define MAP_I_TEX_SIZE ((MAP_I_TEX_WIDTH * MAP_I_TEX_HEIGHT) / 2) // 96x85 I4 texture
|
||||
|
||||
#define MAP_48x85_TEX_WIDTH 48
|
||||
#define MAP_48x85_TEX_HEIGHT 85
|
||||
#define MAP_48x85_TEX_SIZE ((MAP_48x85_TEX_WIDTH * MAP_48x85_TEX_HEIGHT) / 2) // 48x85 CI4 texture
|
||||
|
||||
// Note that z_kaleido_scope_PAL.c assumes that the dimensions and texture format here also matches the dimensions and
|
||||
// texture format for ITEM_NAME_TEX_*
|
||||
#define MAP_NAME_TEX1_WIDTH 128
|
||||
#define MAP_NAME_TEX1_HEIGHT 16
|
||||
#define MAP_NAME_TEX1_SIZE ((MAP_NAME_TEX1_WIDTH * MAP_NAME_TEX1_HEIGHT) / 2) // 128x16 IA4 texture
|
||||
|
||||
#define MAP_NAME_TEX2_WIDTH 80
|
||||
#define MAP_NAME_TEX2_HEIGHT 32
|
||||
#define MAP_NAME_TEX2_SIZE (MAP_NAME_TEX2_WIDTH * MAP_NAME_TEX2_HEIGHT) // 80x32 IA8 texture
|
||||
|
||||
#define PAUSE_MAP_MARK_NONE -1
|
||||
#define PAUSE_MAP_MARK_CHEST 0
|
||||
#define PAUSE_MAP_MARK_BOSS 1
|
||||
|
||||
@@ -10,7 +10,7 @@ struct Actor;
|
||||
struct SkelAnime;
|
||||
|
||||
#define LINK_ANIMATION_OFFSET(addr, offset) \
|
||||
(((u32)_link_animetionSegmentRomStart) + ((u32)addr) - ((u32)_link_animetionSegmentStart) + ((u32)offset))
|
||||
(((uintptr_t)_link_animetionSegmentRomStart) + ((uintptr_t)(addr)) - ((uintptr_t)_link_animetionSegmentStart) + (offset))
|
||||
#define LIMB_DONE 0xFF
|
||||
#define ANIMATION_ENTRY_MAX 50
|
||||
#define ANIM_FLAG_UPDATEY (1 << 1)
|
||||
|
||||
+26
-1
@@ -2,11 +2,12 @@
|
||||
#define Z64_DMA_H
|
||||
|
||||
#include "ultra64.h"
|
||||
#include "alignment.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ uintptr_t vromAddr; // VROM address (source)
|
||||
/* 0x04 */ void* dramAddr; // DRAM address (destination)
|
||||
/* 0x08 */ u32 size; // File Transfer size
|
||||
/* 0x08 */ size_t size; // File Transfer size
|
||||
/* 0x0C */ const char* filename; // Filename for debugging
|
||||
/* 0x10 */ s32 line; // Line for debugging
|
||||
/* 0x14 */ s32 unk_14;
|
||||
@@ -21,4 +22,28 @@ typedef struct {
|
||||
/* 0x0C */ uintptr_t romEnd;
|
||||
} DmaEntry;
|
||||
|
||||
extern DmaEntry gDmaDataTable[];
|
||||
|
||||
extern u32 gDmaMgrVerbose;
|
||||
extern size_t gDmaMgrDmaBuffSize;
|
||||
|
||||
#define DMAMGR_DEFAULT_BUFSIZE ALIGN16(0x2000)
|
||||
|
||||
// Standard DMA Requests
|
||||
|
||||
s32 DmaMgr_RequestSync(void* ram, uintptr_t vrom, size_t size);
|
||||
s32 DmaMgr_RequestSyncDebug(void* ram, uintptr_t vrom, size_t size, const char* file, s32 line);
|
||||
s32 DmaMgr_RequestAsync(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, u32 unk5, OSMesgQueue* queue,
|
||||
OSMesg msg, const char* file, s32 line);
|
||||
|
||||
// Special-purpose DMA Requests
|
||||
|
||||
s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size);
|
||||
void DmaMgr_DmaFromDriveRom(void* ram, uintptr_t rom, size_t size);
|
||||
s32 DmaMgr_AudioDmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction);
|
||||
|
||||
// Initialization
|
||||
|
||||
void DmaMgr_Init(void);
|
||||
|
||||
#endif
|
||||
|
||||
+166
-152
@@ -1,6 +1,20 @@
|
||||
#ifndef Z64ITEM_H
|
||||
#define Z64ITEM_H
|
||||
|
||||
#define ICON_ITEM_TEX_WIDTH 32
|
||||
#define ICON_ITEM_TEX_HEIGHT 32
|
||||
#define ICON_ITEM_TEX_SIZE ((ICON_ITEM_TEX_WIDTH * ICON_ITEM_TEX_HEIGHT) * 4) // 32x32 RGBA32 texture
|
||||
|
||||
#define ICON_ITEM_24_TEX_WIDTH 24
|
||||
#define ICON_ITEM_24_TEX_HEIGHT 24
|
||||
#define ICON_ITEM_24_TEX_SIZE ((ICON_ITEM_24_TEX_WIDTH * ICON_ITEM_24_TEX_HEIGHT) * 4) // 24x24 RGBA32 texture
|
||||
|
||||
// Note that z_kaleido_scope_PAL.c assumes that the dimensions and texture format here also matches the dimensions and
|
||||
// texture format for MAP_NAME_TEX1_*
|
||||
#define ITEM_NAME_TEX_WIDTH 128
|
||||
#define ITEM_NAME_TEX_HEIGHT 16
|
||||
#define ITEM_NAME_TEX_SIZE ((ITEM_NAME_TEX_WIDTH * ITEM_NAME_TEX_HEIGHT) / 2) // 128x16 IA4 texture
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ EQUIP_TYPE_SWORD,
|
||||
/* 1 */ EQUIP_TYPE_SHIELD,
|
||||
@@ -77,8 +91,8 @@ typedef enum {
|
||||
/* 0x03 */ UPG_SCALE,
|
||||
/* 0x04 */ UPG_WALLET,
|
||||
/* 0x05 */ UPG_BULLET_BAG,
|
||||
/* 0x06 */ UPG_STICKS,
|
||||
/* 0x07 */ UPG_NUTS,
|
||||
/* 0x06 */ UPG_DEKU_STICKS,
|
||||
/* 0x07 */ UPG_DEKU_NUTS,
|
||||
/* 0x08 */ UPG_MAX
|
||||
} UpgradeType;
|
||||
|
||||
@@ -105,20 +119,20 @@ typedef enum {
|
||||
/* 0x13 */ QUEST_GORON_RUBY,
|
||||
/* 0x14 */ QUEST_ZORA_SAPPHIRE,
|
||||
/* 0x15 */ QUEST_STONE_OF_AGONY,
|
||||
/* 0x16 */ QUEST_GERUDO_CARD,
|
||||
/* 0x16 */ QUEST_GERUDOS_CARD,
|
||||
/* 0x17 */ QUEST_SKULL_TOKEN,
|
||||
/* 0x1C */ QUEST_HEART_PIECE_COUNT = 0x1C
|
||||
} QuestItem;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ DUNGEON_KEY_BOSS,
|
||||
/* 0x00 */ DUNGEON_BOSS_KEY,
|
||||
/* 0x01 */ DUNGEON_COMPASS,
|
||||
/* 0x02 */ DUNGEON_MAP
|
||||
} DungeonItem;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ SLOT_STICK,
|
||||
/* 0x01 */ SLOT_NUT,
|
||||
/* 0x00 */ SLOT_DEKU_STICK,
|
||||
/* 0x01 */ SLOT_DEKU_NUT,
|
||||
/* 0x02 */ SLOT_BOMB,
|
||||
/* 0x03 */ SLOT_BOW,
|
||||
/* 0x04 */ SLOT_ARROW_FIRE,
|
||||
@@ -130,8 +144,8 @@ typedef enum {
|
||||
/* 0x0A */ SLOT_ARROW_ICE,
|
||||
/* 0x0B */ SLOT_FARORES_WIND,
|
||||
/* 0x0C */ SLOT_BOOMERANG,
|
||||
/* 0x0D */ SLOT_LENS,
|
||||
/* 0x0E */ SLOT_BEAN,
|
||||
/* 0x0D */ SLOT_LENS_OF_TRUTH,
|
||||
/* 0x0E */ SLOT_MAGIC_BEAN,
|
||||
/* 0x0F */ SLOT_HAMMER,
|
||||
/* 0x10 */ SLOT_ARROW_LIGHT,
|
||||
/* 0x11 */ SLOT_NAYRUS_LOVE,
|
||||
@@ -145,46 +159,46 @@ typedef enum {
|
||||
} InventorySlot;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ ITEM_STICK,
|
||||
/* 0x01 */ ITEM_NUT,
|
||||
/* 0x00 */ ITEM_DEKU_STICK,
|
||||
/* 0x01 */ ITEM_DEKU_NUT,
|
||||
/* 0x02 */ ITEM_BOMB,
|
||||
/* 0x03 */ ITEM_BOW,
|
||||
/* 0x04 */ ITEM_ARROW_FIRE,
|
||||
/* 0x05 */ ITEM_DINS_FIRE,
|
||||
/* 0x06 */ ITEM_SLINGSHOT,
|
||||
/* 0x07 */ ITEM_OCARINA_FAIRY,
|
||||
/* 0x08 */ ITEM_OCARINA_TIME,
|
||||
/* 0x08 */ ITEM_OCARINA_OF_TIME,
|
||||
/* 0x09 */ ITEM_BOMBCHU,
|
||||
/* 0x0A */ ITEM_HOOKSHOT,
|
||||
/* 0x0B */ ITEM_LONGSHOT,
|
||||
/* 0x0C */ ITEM_ARROW_ICE,
|
||||
/* 0x0D */ ITEM_FARORES_WIND,
|
||||
/* 0x0E */ ITEM_BOOMERANG,
|
||||
/* 0x0F */ ITEM_LENS,
|
||||
/* 0x10 */ ITEM_BEAN,
|
||||
/* 0x0F */ ITEM_LENS_OF_TRUTH,
|
||||
/* 0x10 */ ITEM_MAGIC_BEAN,
|
||||
/* 0x11 */ ITEM_HAMMER,
|
||||
/* 0x12 */ ITEM_ARROW_LIGHT,
|
||||
/* 0x13 */ ITEM_NAYRUS_LOVE,
|
||||
/* 0x14 */ ITEM_BOTTLE,
|
||||
/* 0x15 */ ITEM_POTION_RED,
|
||||
/* 0x16 */ ITEM_POTION_GREEN,
|
||||
/* 0x17 */ ITEM_POTION_BLUE,
|
||||
/* 0x18 */ ITEM_FAIRY,
|
||||
/* 0x19 */ ITEM_FISH,
|
||||
/* 0x1A */ ITEM_MILK_BOTTLE,
|
||||
/* 0x1B */ ITEM_LETTER_RUTO,
|
||||
/* 0x1C */ ITEM_BLUE_FIRE,
|
||||
/* 0x1D */ ITEM_BUG,
|
||||
/* 0x1E */ ITEM_BIG_POE,
|
||||
/* 0x1F */ ITEM_MILK_HALF,
|
||||
/* 0x20 */ ITEM_POE,
|
||||
/* 0x14 */ ITEM_BOTTLE_EMPTY,
|
||||
/* 0x15 */ ITEM_BOTTLE_POTION_RED,
|
||||
/* 0x16 */ ITEM_BOTTLE_POTION_GREEN,
|
||||
/* 0x17 */ ITEM_BOTTLE_POTION_BLUE,
|
||||
/* 0x18 */ ITEM_BOTTLE_FAIRY,
|
||||
/* 0x19 */ ITEM_BOTTLE_FISH,
|
||||
/* 0x1A */ ITEM_BOTTLE_MILK_FULL,
|
||||
/* 0x1B */ ITEM_BOTTLE_RUTOS_LETTER,
|
||||
/* 0x1C */ ITEM_BOTTLE_BLUE_FIRE,
|
||||
/* 0x1D */ ITEM_BOTTLE_BUG,
|
||||
/* 0x1E */ ITEM_BOTTLE_BIG_POE,
|
||||
/* 0x1F */ ITEM_BOTTLE_MILK_HALF,
|
||||
/* 0x20 */ ITEM_BOTTLE_POE,
|
||||
/* 0x21 */ ITEM_WEIRD_EGG,
|
||||
/* 0x22 */ ITEM_CHICKEN,
|
||||
/* 0x23 */ ITEM_LETTER_ZELDA,
|
||||
/* 0x23 */ ITEM_ZELDAS_LETTER,
|
||||
/* 0x24 */ ITEM_MASK_KEATON,
|
||||
/* 0x25 */ ITEM_MASK_SKULL,
|
||||
/* 0x26 */ ITEM_MASK_SPOOKY,
|
||||
/* 0x27 */ ITEM_MASK_BUNNY,
|
||||
/* 0x27 */ ITEM_MASK_BUNNY_HOOD,
|
||||
/* 0x28 */ ITEM_MASK_GORON,
|
||||
/* 0x29 */ ITEM_MASK_ZORA,
|
||||
/* 0x2A */ ITEM_MASK_GERUDO,
|
||||
@@ -195,18 +209,18 @@ typedef enum {
|
||||
/* 0x2F */ ITEM_COJIRO,
|
||||
/* 0x30 */ ITEM_ODD_MUSHROOM,
|
||||
/* 0x31 */ ITEM_ODD_POTION,
|
||||
/* 0x32 */ ITEM_SAW,
|
||||
/* 0x33 */ ITEM_SWORD_BROKEN,
|
||||
/* 0x32 */ ITEM_POACHERS_SAW,
|
||||
/* 0x33 */ ITEM_BROKEN_GORONS_SWORD,
|
||||
/* 0x34 */ ITEM_PRESCRIPTION,
|
||||
/* 0x35 */ ITEM_FROG,
|
||||
/* 0x36 */ ITEM_EYEDROPS,
|
||||
/* 0x35 */ ITEM_EYEBALL_FROG,
|
||||
/* 0x36 */ ITEM_EYE_DROPS,
|
||||
/* 0x37 */ ITEM_CLAIM_CHECK,
|
||||
/* 0x38 */ ITEM_BOW_ARROW_FIRE,
|
||||
/* 0x39 */ ITEM_BOW_ARROW_ICE,
|
||||
/* 0x3A */ ITEM_BOW_ARROW_LIGHT,
|
||||
/* 0x38 */ ITEM_BOW_FIRE,
|
||||
/* 0x39 */ ITEM_BOW_ICE,
|
||||
/* 0x3A */ ITEM_BOW_LIGHT,
|
||||
/* 0x3B */ ITEM_SWORD_KOKIRI,
|
||||
/* 0x3C */ ITEM_SWORD_MASTER,
|
||||
/* 0x3D */ ITEM_SWORD_BGS,
|
||||
/* 0x3D */ ITEM_SWORD_BIGGORON,
|
||||
/* 0x3E */ ITEM_SHIELD_DEKU,
|
||||
/* 0x3F */ ITEM_SHIELD_HYLIAN,
|
||||
/* 0x40 */ ITEM_SHIELD_MIRROR,
|
||||
@@ -225,15 +239,15 @@ typedef enum {
|
||||
/* 0x4D */ ITEM_BOMB_BAG_20,
|
||||
/* 0x4E */ ITEM_BOMB_BAG_30,
|
||||
/* 0x4F */ ITEM_BOMB_BAG_40,
|
||||
/* 0x50 */ ITEM_BRACELET,
|
||||
/* 0x51 */ ITEM_GAUNTLETS_SILVER,
|
||||
/* 0x52 */ ITEM_GAUNTLETS_GOLD,
|
||||
/* 0x50 */ ITEM_STRENGTH_GORONS_BRACELET,
|
||||
/* 0x51 */ ITEM_STRENGTH_SILVER_GAUNTLETS,
|
||||
/* 0x52 */ ITEM_STRENGTH_GOLD_GAUNTLETS,
|
||||
/* 0x53 */ ITEM_SCALE_SILVER,
|
||||
/* 0x54 */ ITEM_SCALE_GOLDEN,
|
||||
/* 0x55 */ ITEM_SWORD_KNIFE,
|
||||
/* 0x56 */ ITEM_WALLET_ADULT,
|
||||
/* 0x57 */ ITEM_WALLET_GIANT,
|
||||
/* 0x58 */ ITEM_SEEDS,
|
||||
/* 0x55 */ ITEM_GIANTS_KNIFE,
|
||||
/* 0x56 */ ITEM_ADULTS_WALLET,
|
||||
/* 0x57 */ ITEM_GIANTS_WALLET,
|
||||
/* 0x58 */ ITEM_DEKU_SEEDS,
|
||||
/* 0x59 */ ITEM_FISHING_POLE,
|
||||
/* 0x5A */ ITEM_SONG_MINUET,
|
||||
/* 0x5B */ ITEM_SONG_BOLERO,
|
||||
@@ -257,16 +271,16 @@ typedef enum {
|
||||
/* 0x6D */ ITEM_GORON_RUBY,
|
||||
/* 0x6E */ ITEM_ZORA_SAPPHIRE,
|
||||
/* 0x6F */ ITEM_STONE_OF_AGONY,
|
||||
/* 0x70 */ ITEM_GERUDO_CARD,
|
||||
/* 0x70 */ ITEM_GERUDOS_CARD,
|
||||
/* 0x71 */ ITEM_SKULL_TOKEN,
|
||||
/* 0x72 */ ITEM_HEART_CONTAINER,
|
||||
/* 0x73 */ ITEM_HEART_PIECE,
|
||||
/* 0x74 */ ITEM_KEY_BOSS,
|
||||
/* 0x75 */ ITEM_COMPASS,
|
||||
/* 0x74 */ ITEM_DUNGEON_BOSS_KEY,
|
||||
/* 0x75 */ ITEM_DUNGEON_COMPASS,
|
||||
/* 0x76 */ ITEM_DUNGEON_MAP,
|
||||
/* 0x77 */ ITEM_KEY_SMALL,
|
||||
/* 0x78 */ ITEM_MAGIC_SMALL,
|
||||
/* 0x79 */ ITEM_MAGIC_LARGE,
|
||||
/* 0x77 */ ITEM_SMALL_KEY,
|
||||
/* 0x78 */ ITEM_MAGIC_JAR_SMALL,
|
||||
/* 0x79 */ ITEM_MAGIC_JAR_BIG,
|
||||
/* 0x7A */ ITEM_HEART_PIECE_2,
|
||||
/* 0x7B */ ITEM_INVALID_1,
|
||||
/* 0x7C */ ITEM_INVALID_2,
|
||||
@@ -283,24 +297,24 @@ typedef enum {
|
||||
/* 0x87 */ ITEM_RUPEE_PURPLE,
|
||||
/* 0x88 */ ITEM_RUPEE_GOLD,
|
||||
/* 0x89 */ ITEM_INVALID_8,
|
||||
/* 0x8A */ ITEM_STICKS_5,
|
||||
/* 0x8B */ ITEM_STICKS_10,
|
||||
/* 0x8C */ ITEM_NUTS_5,
|
||||
/* 0x8D */ ITEM_NUTS_10,
|
||||
/* 0x8A */ ITEM_DEKU_STICKS_5,
|
||||
/* 0x8B */ ITEM_DEKU_STICKS_10,
|
||||
/* 0x8C */ ITEM_DEKU_NUTS_5,
|
||||
/* 0x8D */ ITEM_DEKU_NUTS_10,
|
||||
/* 0x8E */ ITEM_BOMBS_5,
|
||||
/* 0x8F */ ITEM_BOMBS_10,
|
||||
/* 0x90 */ ITEM_BOMBS_20,
|
||||
/* 0x91 */ ITEM_BOMBS_30,
|
||||
/* 0x92 */ ITEM_ARROWS_SMALL,
|
||||
/* 0x93 */ ITEM_ARROWS_MEDIUM,
|
||||
/* 0x94 */ ITEM_ARROWS_LARGE,
|
||||
/* 0x95 */ ITEM_SEEDS_30,
|
||||
/* 0x92 */ ITEM_ARROWS_5,
|
||||
/* 0x93 */ ITEM_ARROWS_10,
|
||||
/* 0x94 */ ITEM_ARROWS_30,
|
||||
/* 0x95 */ ITEM_DEKU_SEEDS_30,
|
||||
/* 0x96 */ ITEM_BOMBCHUS_5,
|
||||
/* 0x97 */ ITEM_BOMBCHUS_20,
|
||||
/* 0x98 */ ITEM_STICK_UPGRADE_20,
|
||||
/* 0x99 */ ITEM_STICK_UPGRADE_30,
|
||||
/* 0x9A */ ITEM_NUT_UPGRADE_30,
|
||||
/* 0x9B */ ITEM_NUT_UPGRADE_40,
|
||||
/* 0x98 */ ITEM_DEKU_STICK_UPGRADE_20,
|
||||
/* 0x99 */ ITEM_DEKU_STICK_UPGRADE_30,
|
||||
/* 0x9A */ ITEM_DEKU_NUT_UPGRADE_30,
|
||||
/* 0x9B */ ITEM_DEKU_NUT_UPGRADE_40,
|
||||
/* 0xFC */ ITEM_LAST_USED = 0xFC,
|
||||
/* 0xFE */ ITEM_NONE_FE = 0xFE,
|
||||
/* 0xFF */ ITEM_NONE = 0xFF
|
||||
@@ -313,42 +327,42 @@ typedef enum {
|
||||
typedef enum {
|
||||
/* 0x00 */ GI_NONE,
|
||||
/* 0x01 */ GI_BOMBS_5,
|
||||
/* 0x02 */ GI_NUTS_5,
|
||||
/* 0x02 */ GI_DEKU_NUTS_5,
|
||||
/* 0x03 */ GI_BOMBCHUS_10,
|
||||
/* 0x04 */ GI_BOW,
|
||||
/* 0x05 */ GI_SLINGSHOT,
|
||||
/* 0x06 */ GI_BOOMERANG,
|
||||
/* 0x07 */ GI_STICKS_1,
|
||||
/* 0x07 */ GI_DEKU_STICKS_1,
|
||||
/* 0x08 */ GI_HOOKSHOT,
|
||||
/* 0x09 */ GI_LONGSHOT,
|
||||
/* 0x0A */ GI_LENS,
|
||||
/* 0x0B */ GI_LETTER_ZELDA,
|
||||
/* 0x0C */ GI_OCARINA_OOT,
|
||||
/* 0x0A */ GI_LENS_OF_TRUTH,
|
||||
/* 0x0B */ GI_ZELDAS_LETTER,
|
||||
/* 0x0C */ GI_OCARINA_OF_TIME,
|
||||
/* 0x0D */ GI_HAMMER,
|
||||
/* 0x0E */ GI_COJIRO,
|
||||
/* 0x0F */ GI_BOTTLE,
|
||||
/* 0x10 */ GI_POTION_RED,
|
||||
/* 0x11 */ GI_POTION_GREEN,
|
||||
/* 0x12 */ GI_POTION_BLUE,
|
||||
/* 0x13 */ GI_FAIRY,
|
||||
/* 0x14 */ GI_MILK_BOTTLE,
|
||||
/* 0x15 */ GI_LETTER_RUTO,
|
||||
/* 0x16 */ GI_BEAN,
|
||||
/* 0x0F */ GI_BOTTLE_EMPTY,
|
||||
/* 0x10 */ GI_BOTTLE_POTION_RED,
|
||||
/* 0x11 */ GI_BOTTLE_POTION_GREEN,
|
||||
/* 0x12 */ GI_BOTTLE_POTION_BLUE,
|
||||
/* 0x13 */ GI_BOTTLE_FAIRY,
|
||||
/* 0x14 */ GI_BOTTLE_MILK_FULL,
|
||||
/* 0x15 */ GI_BOTTLE_RUTOS_LETTER,
|
||||
/* 0x16 */ GI_MAGIC_BEAN,
|
||||
/* 0x17 */ GI_MASK_SKULL,
|
||||
/* 0x18 */ GI_MASK_SPOOKY,
|
||||
/* 0x19 */ GI_CHICKEN, // uses bean message ID
|
||||
/* 0x1A */ GI_MASK_KEATON,
|
||||
/* 0x1B */ GI_MASK_BUNNY,
|
||||
/* 0x1B */ GI_MASK_BUNNY_HOOD,
|
||||
/* 0x1C */ GI_MASK_TRUTH,
|
||||
/* 0x1D */ GI_POCKET_EGG,
|
||||
/* 0x1E */ GI_POCKET_CUCCO, // uses bean message ID
|
||||
/* 0x1F */ GI_ODD_MUSHROOM,
|
||||
/* 0x20 */ GI_ODD_POTION,
|
||||
/* 0x21 */ GI_SAW,
|
||||
/* 0x22 */ GI_SWORD_BROKEN,
|
||||
/* 0x21 */ GI_POACHERS_SAW,
|
||||
/* 0x22 */ GI_BROKEN_GORONS_SWORD,
|
||||
/* 0x23 */ GI_PRESCRIPTION,
|
||||
/* 0x24 */ GI_FROG,
|
||||
/* 0x25 */ GI_EYEDROPS,
|
||||
/* 0x24 */ GI_EYEBALL_FROG,
|
||||
/* 0x25 */ GI_EYE_DROPS,
|
||||
/* 0x26 */ GI_CLAIM_CHECK,
|
||||
/* 0x27 */ GI_SWORD_KOKIRI,
|
||||
/* 0x28 */ GI_SWORD_KNIFE,
|
||||
@@ -364,29 +378,29 @@ typedef enum {
|
||||
/* 0x32 */ GI_BOMB_BAG_20,
|
||||
/* 0x33 */ GI_BOMB_BAG_30,
|
||||
/* 0x34 */ GI_BOMB_BAG_40,
|
||||
/* 0x35 */ GI_GAUNTLETS_SILVER,
|
||||
/* 0x36 */ GI_GAUNTLETS_GOLD,
|
||||
/* 0x35 */ GI_SILVER_GAUNTLETS,
|
||||
/* 0x36 */ GI_GOLD_GAUNTLETS,
|
||||
/* 0x37 */ GI_SCALE_SILVER,
|
||||
/* 0x38 */ GI_SCALE_GOLD,
|
||||
/* 0x38 */ GI_SCALE_GOLDEN,
|
||||
/* 0x39 */ GI_STONE_OF_AGONY,
|
||||
/* 0x3A */ GI_GERUDO_CARD,
|
||||
/* 0x3A */ GI_GERUDOS_CARD,
|
||||
/* 0x3B */ GI_OCARINA_FAIRY, // uses Ocarina of Time message ID
|
||||
/* 0x3C */ GI_SEEDS_5,
|
||||
/* 0x3C */ GI_DEKU_SEEDS_5,
|
||||
/* 0x3D */ GI_HEART_CONTAINER,
|
||||
/* 0x3E */ GI_HEART_PIECE,
|
||||
/* 0x3F */ GI_KEY_BOSS,
|
||||
/* 0x3F */ GI_BOSS_KEY,
|
||||
/* 0x40 */ GI_COMPASS,
|
||||
/* 0x41 */ GI_MAP,
|
||||
/* 0x42 */ GI_KEY_SMALL,
|
||||
/* 0x43 */ GI_MAGIC_SMALL, // or blue rupee if not from a drop
|
||||
/* 0x44 */ GI_MAGIC_LARGE, // or blue rupee if not from a drop
|
||||
/* 0x41 */ GI_DUNGEON_MAP,
|
||||
/* 0x42 */ GI_SMALL_KEY,
|
||||
/* 0x43 */ GI_MAGIC_JAR_SMALL, // 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,
|
||||
/* 0x46 */ GI_WALLET_GIANT,
|
||||
/* 0x47 */ GI_WEIRD_EGG,
|
||||
/* 0x48 */ GI_RECOVERY_HEART,
|
||||
/* 0x49 */ GI_ARROWS_SMALL, // amount changes depending on context
|
||||
/* 0x4A */ GI_ARROWS_MEDIUM, // amount changes depending on context
|
||||
/* 0x4B */ GI_ARROWS_LARGE, // amount changes depending on context
|
||||
/* 0x49 */ GI_ARROWS_5, // amount changes depending on context
|
||||
/* 0x4A */ GI_ARROWS_10, // amount changes depending on context
|
||||
/* 0x4B */ GI_ARROWS_30, // amount changes depending on context
|
||||
/* 0x4C */ GI_RUPEE_GREEN,
|
||||
/* 0x4D */ GI_RUPEE_BLUE,
|
||||
/* 0x4E */ GI_RUPEE_RED,
|
||||
@@ -395,10 +409,10 @@ typedef enum {
|
||||
/* 0x51 */ GI_MASK_GORON,
|
||||
/* 0x52 */ GI_MASK_ZORA,
|
||||
/* 0x53 */ GI_MASK_GERUDO,
|
||||
/* 0x54 */ GI_BRACELET,
|
||||
/* 0x54 */ GI_GORONS_BRACELET,
|
||||
/* 0x55 */ GI_RUPEE_PURPLE,
|
||||
/* 0x56 */ GI_RUPEE_GOLD,
|
||||
/* 0x57 */ GI_SWORD_BGS,
|
||||
/* 0x57 */ GI_SWORD_BIGGORON,
|
||||
/* 0x58 */ GI_ARROW_FIRE,
|
||||
/* 0x59 */ GI_ARROW_ICE,
|
||||
/* 0x5A */ GI_ARROW_LIGHT,
|
||||
@@ -408,32 +422,32 @@ typedef enum {
|
||||
/* 0x5E */ GI_NAYRUS_LOVE,
|
||||
/* 0x5F */ GI_BULLET_BAG_30,
|
||||
/* 0x60 */ GI_BULLET_BAG_40,
|
||||
/* 0x61 */ GI_STICKS_5,
|
||||
/* 0x62 */ GI_STICKS_10,
|
||||
/* 0x63 */ GI_NUTS_5_2,
|
||||
/* 0x64 */ GI_NUTS_10,
|
||||
/* 0x61 */ GI_DEKU_STICKS_5,
|
||||
/* 0x62 */ GI_DEKU_STICKS_10,
|
||||
/* 0x63 */ GI_DEKU_NUTS_5_2,
|
||||
/* 0x64 */ GI_DEKU_NUTS_10,
|
||||
/* 0x65 */ GI_BOMBS_1,
|
||||
/* 0x66 */ GI_BOMBS_10,
|
||||
/* 0x67 */ GI_BOMBS_20,
|
||||
/* 0x68 */ GI_BOMBS_30,
|
||||
/* 0x69 */ GI_SEEDS_30,
|
||||
/* 0x69 */ GI_DEKU_SEEDS_30,
|
||||
/* 0x6A */ GI_BOMBCHUS_5,
|
||||
/* 0x6B */ GI_BOMBCHUS_20,
|
||||
/* 0x6C */ GI_FISH,
|
||||
/* 0x6D */ GI_BUGS,
|
||||
/* 0x6E */ GI_BLUE_FIRE,
|
||||
/* 0x6F */ GI_POE,
|
||||
/* 0x70 */ GI_BIG_POE,
|
||||
/* 0x6C */ GI_BOTTLE_FISH,
|
||||
/* 0x6D */ GI_BOTTLE_BUGS,
|
||||
/* 0x6E */ GI_BOTTLE_BLUE_FIRE,
|
||||
/* 0x6F */ GI_BOTTLE_POE,
|
||||
/* 0x70 */ GI_BOTTLE_BIG_POE,
|
||||
/* 0x71 */ GI_DOOR_KEY, // specific to chest minigame
|
||||
/* 0x72 */ GI_RUPEE_GREEN_LOSE, // specific to chest minigame
|
||||
/* 0x73 */ GI_RUPEE_BLUE_LOSE, // specific to chest minigame
|
||||
/* 0x74 */ GI_RUPEE_RED_LOSE, // specific to chest minigame
|
||||
/* 0x75 */ GI_RUPEE_PURPLE_LOSE, // specific to chest minigame
|
||||
/* 0x76 */ GI_HEART_PIECE_WIN, // specific to chest minigame
|
||||
/* 0x77 */ GI_STICK_UPGRADE_20,
|
||||
/* 0x78 */ GI_STICK_UPGRADE_30,
|
||||
/* 0x79 */ GI_NUT_UPGRADE_30,
|
||||
/* 0x7A */ GI_NUT_UPGRADE_40,
|
||||
/* 0x77 */ GI_DEKU_STICK_UPGRADE_20,
|
||||
/* 0x78 */ GI_DEKU_STICK_UPGRADE_30,
|
||||
/* 0x79 */ GI_DEKU_NUT_UPGRADE_30,
|
||||
/* 0x7A */ GI_DEKU_NUT_UPGRADE_40,
|
||||
/* 0x7B */ GI_BULLET_BAG_50,
|
||||
/* 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)
|
||||
@@ -441,8 +455,8 @@ typedef enum {
|
||||
} GetItemID;
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ GID_BOTTLE,
|
||||
/* 0x01 */ GID_KEY_SMALL,
|
||||
/* 0x00 */ GID_BOTTLE_EMPTY,
|
||||
/* 0x01 */ GID_SMALL_KEY,
|
||||
/* 0x02 */ GID_SONG_MINUET,
|
||||
/* 0x03 */ GID_SONG_BOLERO,
|
||||
/* 0x04 */ GID_SONG_SERENADE,
|
||||
@@ -450,7 +464,7 @@ typedef enum {
|
||||
/* 0x06 */ GID_SONG_NOCTURNE,
|
||||
/* 0x07 */ GID_SONG_PRELUDE,
|
||||
/* 0x08 */ GID_RECOVERY_HEART,
|
||||
/* 0x09 */ GID_KEY_BOSS,
|
||||
/* 0x09 */ GID_BOSS_KEY,
|
||||
/* 0x0A */ GID_COMPASS,
|
||||
/* 0x0B */ GID_MEDALLION_FOREST,
|
||||
/* 0x0C */ GID_MEDALLION_FIRE,
|
||||
@@ -458,7 +472,7 @@ typedef enum {
|
||||
/* 0x0E */ GID_MEDALLION_SPIRIT,
|
||||
/* 0x0F */ GID_MEDALLION_SHADOW,
|
||||
/* 0x10 */ GID_MEDALLION_LIGHT,
|
||||
/* 0x11 */ GID_NUTS,
|
||||
/* 0x11 */ GID_DEKU_NUTS,
|
||||
/* 0x12 */ GID_HEART_CONTAINER,
|
||||
/* 0x13 */ GID_HEART_PIECE,
|
||||
/* 0x14 */ GID_QUIVER_30,
|
||||
@@ -467,19 +481,19 @@ typedef enum {
|
||||
/* 0x17 */ GID_BOMB_BAG_20,
|
||||
/* 0x18 */ GID_BOMB_BAG_30,
|
||||
/* 0x19 */ GID_BOMB_BAG_40,
|
||||
/* 0x1A */ GID_STICK,
|
||||
/* 0x1A */ GID_DEKU_STICK,
|
||||
/* 0x1B */ GID_DUNGEON_MAP,
|
||||
/* 0x1C */ GID_SHIELD_DEKU,
|
||||
/* 0x1D */ GID_MAGIC_SMALL,
|
||||
/* 0x1E */ GID_MAGIC_LARGE,
|
||||
/* 0x1D */ GID_MAGIC_JAR_SMALL,
|
||||
/* 0x1E */ GID_MAGIC_JAR_LARGE,
|
||||
/* 0x1F */ GID_BOMB,
|
||||
/* 0x20 */ GID_STONE_OF_AGONY,
|
||||
/* 0x21 */ GID_WALLET_ADULT,
|
||||
/* 0x22 */ GID_WALLET_GIANT,
|
||||
/* 0x23 */ GID_GERUDO_CARD,
|
||||
/* 0x24 */ GID_ARROWS_SMALL,
|
||||
/* 0x25 */ GID_ARROWS_MEDIUM,
|
||||
/* 0x26 */ GID_ARROWS_LARGE,
|
||||
/* 0x23 */ GID_GERUDOS_CARD,
|
||||
/* 0x24 */ GID_ARROWS_5,
|
||||
/* 0x25 */ GID_ARROWS_10,
|
||||
/* 0x26 */ GID_ARROWS_30,
|
||||
/* 0x27 */ GID_BOMBCHU,
|
||||
/* 0x28 */ GID_EGG,
|
||||
/* 0x29 */ GID_SCALE_SILVER,
|
||||
@@ -487,50 +501,50 @@ typedef enum {
|
||||
/* 0x2B */ GID_SHIELD_HYLIAN,
|
||||
/* 0x2C */ GID_HOOKSHOT,
|
||||
/* 0x2D */ GID_LONGSHOT,
|
||||
/* 0x2E */ GID_OCARINA_TIME,
|
||||
/* 0x2F */ GID_MILK,
|
||||
/* 0x2E */ GID_OCARINA_OF_TIME,
|
||||
/* 0x2F */ GID_BOTTLE_MILK_FULL,
|
||||
/* 0x30 */ GID_MASK_KEATON,
|
||||
/* 0x31 */ GID_MASK_SPOOKY,
|
||||
/* 0x32 */ GID_SLINGSHOT,
|
||||
/* 0x33 */ GID_BOOMERANG,
|
||||
/* 0x34 */ GID_BOW,
|
||||
/* 0x35 */ GID_LENS,
|
||||
/* 0x36 */ GID_POTION_GREEN,
|
||||
/* 0x37 */ GID_POTION_RED,
|
||||
/* 0x38 */ GID_POTION_BLUE,
|
||||
/* 0x35 */ GID_LENS_OF_TRUTH,
|
||||
/* 0x36 */ GID_BOTTLE_POTION_GREEN,
|
||||
/* 0x37 */ GID_BOTTLE_POTION_RED,
|
||||
/* 0x38 */ GID_BOTTLE_POTION_BLUE,
|
||||
/* 0x39 */ GID_SHIELD_MIRROR,
|
||||
/* 0x3A */ GID_LETTER_ZELDA,
|
||||
/* 0x3A */ GID_ZELDAS_LETTER,
|
||||
/* 0x3B */ GID_TUNIC_GORON,
|
||||
/* 0x3C */ GID_TUNIC_ZORA,
|
||||
/* 0x3D */ GID_BEAN,
|
||||
/* 0x3D */ GID_MAGIC_BEAN,
|
||||
/* 0x3E */ GID_FISH,
|
||||
/* 0x3F */ GID_SAW,
|
||||
/* 0x3F */ GID_POACHERS_SAW,
|
||||
/* 0x40 */ GID_HAMMER,
|
||||
/* 0x41 */ GID_GRASS,
|
||||
/* 0x42 */ GID_SWORD_BGS,
|
||||
/* 0x43 */ GID_CHICKEN,
|
||||
/* 0x44 */ GID_LETTER_RUTO,
|
||||
/* 0x42 */ GID_SWORD_BIGGORON,
|
||||
/* 0x43 */ GID_CUCCO,
|
||||
/* 0x44 */ GID_BOTTLE_RUTOS_LETTER,
|
||||
/* 0x45 */ GID_OCARINA_FAIRY,
|
||||
/* 0x46 */ GID_BOOTS_IRON,
|
||||
/* 0x47 */ GID_SEEDS,
|
||||
/* 0x48 */ GID_GAUNTLETS_SILVER,
|
||||
/* 0x49 */ GID_GAUNTLETS_GOLD,
|
||||
/* 0x47 */ GID_DEKU_SEEDS,
|
||||
/* 0x48 */ GID_SILVER_GAUNTLETS,
|
||||
/* 0x49 */ GID_GOLD_GAUNTLETS,
|
||||
/* 0x4A */ GID_NCOIN_YELLOW,
|
||||
/* 0x4B */ GID_NCOIN_RED,
|
||||
/* 0x4C */ GID_NCOIN_GREEN,
|
||||
/* 0x4D */ GID_NCOIN_BLUE,
|
||||
/* 0x4E */ GID_MASK_SKULL,
|
||||
/* 0x4F */ GID_MASK_BUNNY,
|
||||
/* 0x4F */ GID_MASK_BUNNY_HOOD,
|
||||
/* 0x50 */ GID_MASK_TRUTH,
|
||||
/* 0x51 */ GID_EYEDROPS,
|
||||
/* 0x51 */ GID_EYE_DROPS,
|
||||
/* 0x52 */ GID_ODD_POTION,
|
||||
/* 0x53 */ GID_ODD_MUSHROOM,
|
||||
/* 0x54 */ GID_CLAIM_CHECK,
|
||||
/* 0x55 */ GID_SWORD_BROKEN,
|
||||
/* 0x55 */ GID_BROKEN_GORONS_SWORD,
|
||||
/* 0x56 */ GID_PRESCRIPTION,
|
||||
/* 0x57 */ GID_BRACELET,
|
||||
/* 0x57 */ GID_GORONS_BRACELET,
|
||||
/* 0x58 */ GID_SOLDOUT,
|
||||
/* 0x59 */ GID_FROG,
|
||||
/* 0x59 */ GID_EYEBALL_FROG,
|
||||
/* 0x5A */ GID_MASK_GORON,
|
||||
/* 0x5B */ GID_MASK_ZORA,
|
||||
/* 0x5C */ GID_MASK_GERUDO,
|
||||
@@ -563,35 +577,35 @@ typedef enum {
|
||||
|
||||
typedef enum {
|
||||
/* 0x00 */ EXCH_ITEM_NONE,
|
||||
/* 0x01 */ EXCH_ITEM_LETTER_ZELDA,
|
||||
/* 0x01 */ EXCH_ITEM_ZELDAS_LETTER,
|
||||
/* 0x02 */ EXCH_ITEM_WEIRD_EGG,
|
||||
/* 0x03 */ EXCH_ITEM_CHICKEN,
|
||||
/* 0x04 */ EXCH_ITEM_BEAN,
|
||||
/* 0x04 */ EXCH_ITEM_MAGIC_BEAN,
|
||||
/* 0x05 */ EXCH_ITEM_POCKET_EGG,
|
||||
/* 0x06 */ EXCH_ITEM_POCKET_CUCCO,
|
||||
/* 0x07 */ EXCH_ITEM_COJIRO,
|
||||
/* 0x08 */ EXCH_ITEM_ODD_MUSHROOM,
|
||||
/* 0x09 */ EXCH_ITEM_ODD_POTION,
|
||||
/* 0x0A */ EXCH_ITEM_SAW,
|
||||
/* 0x0B */ EXCH_ITEM_SWORD_BROKEN,
|
||||
/* 0x0A */ EXCH_ITEM_POACHERS_SAW,
|
||||
/* 0x0B */ EXCH_ITEM_BROKEN_GORONS_SWORD,
|
||||
/* 0x0C */ EXCH_ITEM_PRESCRIPTION,
|
||||
/* 0x0D */ EXCH_ITEM_FROG,
|
||||
/* 0x0E */ EXCH_ITEM_EYEDROPS,
|
||||
/* 0x0D */ EXCH_ITEM_EYEBALL_FROG,
|
||||
/* 0x0E */ EXCH_ITEM_EYE_DROPS,
|
||||
/* 0x0F */ EXCH_ITEM_CLAIM_CHECK,
|
||||
/* 0x10 */ EXCH_ITEM_MASK_SKULL,
|
||||
/* 0x11 */ EXCH_ITEM_MASK_SPOOKY,
|
||||
/* 0x12 */ EXCH_ITEM_MASK_KEATON,
|
||||
/* 0x13 */ EXCH_ITEM_MASK_BUNNY,
|
||||
/* 0x13 */ EXCH_ITEM_MASK_BUNNY_HOOD,
|
||||
/* 0x14 */ EXCH_ITEM_MASK_TRUTH,
|
||||
/* 0x15 */ EXCH_ITEM_MASK_GORON,
|
||||
/* 0x16 */ EXCH_ITEM_MASK_ZORA,
|
||||
/* 0x17 */ EXCH_ITEM_MASK_GERUDO,
|
||||
/* 0x18 */ EXCH_ITEM_FISH,
|
||||
/* 0x19 */ EXCH_ITEM_BLUE_FIRE,
|
||||
/* 0x1A */ EXCH_ITEM_BUG,
|
||||
/* 0x1B */ EXCH_ITEM_POE,
|
||||
/* 0x1C */ EXCH_ITEM_BIG_POE,
|
||||
/* 0x1D */ EXCH_ITEM_LETTER_RUTO,
|
||||
/* 0x18 */ EXCH_ITEM_BOTTLE_FISH,
|
||||
/* 0x19 */ EXCH_ITEM_BOTTLE_BLUE_FIRE,
|
||||
/* 0x1A */ EXCH_ITEM_BOTTLE_BUG,
|
||||
/* 0x1B */ EXCH_ITEM_BOTTLE_POE,
|
||||
/* 0x1C */ EXCH_ITEM_BOTTLE_BIG_POE,
|
||||
/* 0x1D */ EXCH_ITEM_BOTTLE_RUTOS_LETTER,
|
||||
/* 0x1E */ EXCH_ITEM_MAX
|
||||
} ExchangeItemID;
|
||||
|
||||
|
||||
+20
-12
@@ -61,6 +61,14 @@ typedef enum {
|
||||
/* 0x09 */ PLAYER_MASK_MAX
|
||||
} 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 {
|
||||
/* 0x00 */ PLAYER_IA_NONE,
|
||||
/* 0x01 */ PLAYER_IA_LAST_USED,
|
||||
@@ -68,7 +76,7 @@ typedef enum {
|
||||
/* 0x03 */ PLAYER_IA_SWORD_MASTER,
|
||||
/* 0x04 */ PLAYER_IA_SWORD_KOKIRI,
|
||||
/* 0x05 */ PLAYER_IA_SWORD_BGS,
|
||||
/* 0x06 */ PLAYER_IA_STICK,
|
||||
/* 0x06 */ PLAYER_IA_DEKU_STICK,
|
||||
/* 0x07 */ PLAYER_IA_HAMMER,
|
||||
/* 0x08 */ PLAYER_IA_BOW,
|
||||
/* 0x09 */ PLAYER_IA_BOW_FIRE,
|
||||
@@ -89,33 +97,33 @@ typedef enum {
|
||||
/* 0x18 */ PLAYER_IA_FARORES_WIND,
|
||||
/* 0x19 */ PLAYER_IA_NAYRUS_LOVE,
|
||||
/* 0x1A */ PLAYER_IA_DINS_FIRE,
|
||||
/* 0x1B */ PLAYER_IA_NUT,
|
||||
/* 0x1B */ PLAYER_IA_DEKU_NUT,
|
||||
/* 0x1C */ PLAYER_IA_OCARINA_FAIRY,
|
||||
/* 0x1D */ PLAYER_IA_OCARINA_TIME,
|
||||
/* 0x1D */ PLAYER_IA_OCARINA_OF_TIME,
|
||||
/* 0x1E */ PLAYER_IA_BOTTLE,
|
||||
/* 0x1F */ PLAYER_IA_BOTTLE_FISH,
|
||||
/* 0x20 */ PLAYER_IA_BOTTLE_FIRE,
|
||||
/* 0x21 */ PLAYER_IA_BOTTLE_BUG,
|
||||
/* 0x22 */ PLAYER_IA_BOTTLE_POE,
|
||||
/* 0x23 */ PLAYER_IA_BOTTLE_BIG_POE,
|
||||
/* 0x24 */ PLAYER_IA_BOTTLE_LETTER,
|
||||
/* 0x24 */ PLAYER_IA_BOTTLE_RUTOS_LETTER,
|
||||
/* 0x25 */ PLAYER_IA_BOTTLE_POTION_RED,
|
||||
/* 0x26 */ PLAYER_IA_BOTTLE_POTION_BLUE,
|
||||
/* 0x27 */ PLAYER_IA_BOTTLE_POTION_GREEN,
|
||||
/* 0x28 */ PLAYER_IA_BOTTLE_MILK,
|
||||
/* 0x28 */ PLAYER_IA_BOTTLE_MILK_FULL,
|
||||
/* 0x29 */ PLAYER_IA_BOTTLE_MILK_HALF,
|
||||
/* 0x2A */ PLAYER_IA_BOTTLE_FAIRY,
|
||||
/* 0x2B */ PLAYER_IA_LETTER_ZELDA,
|
||||
/* 0x2B */ PLAYER_IA_ZELDAS_LETTER,
|
||||
/* 0x2C */ PLAYER_IA_WEIRD_EGG,
|
||||
/* 0x2D */ PLAYER_IA_CHICKEN,
|
||||
/* 0x2E */ PLAYER_IA_BEAN,
|
||||
/* 0x2E */ PLAYER_IA_MAGIC_BEAN,
|
||||
/* 0x2F */ PLAYER_IA_POCKET_EGG,
|
||||
/* 0x30 */ PLAYER_IA_POCKET_CUCCO,
|
||||
/* 0x31 */ PLAYER_IA_COJIRO,
|
||||
/* 0x32 */ PLAYER_IA_ODD_MUSHROOM,
|
||||
/* 0x33 */ PLAYER_IA_ODD_POTION,
|
||||
/* 0x34 */ PLAYER_IA_SAW,
|
||||
/* 0x35 */ PLAYER_IA_SWORD_BROKEN,
|
||||
/* 0x34 */ PLAYER_IA_POACHERS_SAW,
|
||||
/* 0x35 */ PLAYER_IA_BROKEN_GORONS_SWORD,
|
||||
/* 0x36 */ PLAYER_IA_PRESCRIPTION,
|
||||
/* 0x37 */ PLAYER_IA_FROG,
|
||||
/* 0x38 */ PLAYER_IA_EYEDROPS,
|
||||
@@ -123,12 +131,12 @@ typedef enum {
|
||||
/* 0x3A */ PLAYER_IA_MASK_KEATON,
|
||||
/* 0x3B */ PLAYER_IA_MASK_SKULL,
|
||||
/* 0x3C */ PLAYER_IA_MASK_SPOOKY,
|
||||
/* 0x3D */ PLAYER_IA_MASK_BUNNY,
|
||||
/* 0x3D */ PLAYER_IA_MASK_BUNNY_HOOD,
|
||||
/* 0x3E */ PLAYER_IA_MASK_GORON,
|
||||
/* 0x3F */ PLAYER_IA_MASK_ZORA,
|
||||
/* 0x40 */ PLAYER_IA_MASK_GERUDO,
|
||||
/* 0x41 */ PLAYER_IA_MASK_TRUTH,
|
||||
/* 0x42 */ PLAYER_IA_LENS,
|
||||
/* 0x42 */ PLAYER_IA_LENS_OF_TRUTH,
|
||||
/* 0x43 */ PLAYER_IA_MAX
|
||||
} PlayerItemAction;
|
||||
|
||||
@@ -571,7 +579,7 @@ typedef struct Player {
|
||||
/* 0x0838 */ f32 linearVelocity;
|
||||
/* 0x083C */ s16 currentYaw;
|
||||
/* 0x083E */ s16 targetYaw;
|
||||
/* 0x0840 */ u16 unk_840;
|
||||
/* 0x0840 */ u16 underwaterTimer;
|
||||
/* 0x0842 */ s8 meleeWeaponAnimation;
|
||||
/* 0x0843 */ s8 meleeWeaponState;
|
||||
/* 0x0844 */ s8 unk_844;
|
||||
|
||||
+52
-8
@@ -99,6 +99,49 @@ typedef struct {
|
||||
/* 0x24 */ s32 tempCollectFlags;
|
||||
} 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 struct {
|
||||
/* 0x0000 */ s32 entranceIndex; // start of `save` substruct, originally called "memory"
|
||||
/* 0x0004 */ s32 linkAge; // 0: Adult; 1: Child (see enum `LinkAge`)
|
||||
@@ -162,17 +205,17 @@ typedef struct {
|
||||
/* 0x13C2 */ char unk_13C2[0x0001];
|
||||
/* 0x13C3 */ u8 retainWeatherMode;
|
||||
/* 0x13C4 */ s16 dogParams;
|
||||
/* 0x13C6 */ u8 textTriggerFlags;
|
||||
/* 0x13C6 */ u8 envHazardTextTriggerFlags;
|
||||
/* 0x13C7 */ u8 showTitleCard;
|
||||
/* 0x13C8 */ s16 nayrusLoveTimer;
|
||||
/* 0x13CA */ char unk_13CA[0x0002];
|
||||
/* 0x13CC */ s16 rupeeAccumulator;
|
||||
/* 0x13CE */ s16 timer1State;
|
||||
/* 0x13D0 */ s16 timer1Value;
|
||||
/* 0x13D2 */ s16 timer2State;
|
||||
/* 0x13D4 */ s16 timer2Value;
|
||||
/* 0x13D6 */ s16 timerX[2];
|
||||
/* 0x13DA */ s16 timerY[2];
|
||||
/* 0x13CE */ s16 timerState; // See `TimerState`
|
||||
/* 0x13D0 */ s16 timerSeconds;
|
||||
/* 0x13D2 */ s16 subTimerState; // See `SubTimerState`
|
||||
/* 0x13D4 */ s16 subTimerSeconds;
|
||||
/* 0x13D6 */ s16 timerX[TIMER_ID_MAX];
|
||||
/* 0x13DA */ s16 timerY[TIMER_ID_MAX];
|
||||
/* 0x13DE */ char unk_13DE[0x0002];
|
||||
/* 0x13E0 */ u8 seqId;
|
||||
/* 0x13E1 */ u8 natureAmbienceId;
|
||||
@@ -748,7 +791,8 @@ typedef enum {
|
||||
(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
|
||||
#define EVENTINF_20_21_22_23_24_INDEX 2
|
||||
|
||||
+2
-2
@@ -23,8 +23,8 @@ void Main_ThreadEntry(void* arg) {
|
||||
DmaMgr_Init();
|
||||
osSyncPrintf("codeセグメントロード中...");
|
||||
time = osGetTime();
|
||||
DmaMgr_SendRequest1(_codeSegmentStart, (uintptr_t)_codeSegmentRomStart, _codeSegmentRomEnd - _codeSegmentRomStart,
|
||||
"../idle.c", 238);
|
||||
DmaMgr_RequestSyncDebug(_codeSegmentStart, (uintptr_t)_codeSegmentRomStart,
|
||||
_codeSegmentRomEnd - _codeSegmentRomStart, "../idle.c", 238);
|
||||
time -= osGetTime();
|
||||
osSyncPrintf("\rcodeセグメントロード中...完了\n");
|
||||
osSyncPrintf("転送時間 %6.3f\n");
|
||||
|
||||
+6
-6
@@ -3,13 +3,13 @@
|
||||
u8 sYaz0DataBuffer[0x400];
|
||||
u8* sYaz0DataBufferEnd;
|
||||
uintptr_t sYaz0CurRomStart;
|
||||
u32 sYaz0CurSize;
|
||||
size_t sYaz0CurSize;
|
||||
u8* sYaz0MaxPtr;
|
||||
|
||||
void* Yaz0_FirstDMA(void) {
|
||||
s32 pad[2];
|
||||
u32 dmaSize;
|
||||
u32 bufferSize;
|
||||
size_t dmaSize;
|
||||
size_t bufferSize;
|
||||
|
||||
sYaz0MaxPtr = sYaz0DataBufferEnd - 0x19;
|
||||
|
||||
@@ -24,8 +24,8 @@ void* Yaz0_FirstDMA(void) {
|
||||
|
||||
void* Yaz0_NextDMA(u8* curSrcPos) {
|
||||
u8* dst;
|
||||
u32 restSize;
|
||||
u32 dmaSize;
|
||||
size_t restSize;
|
||||
size_t dmaSize;
|
||||
|
||||
restSize = sYaz0DataBufferEnd - curSrcPos;
|
||||
dst = (restSize & 7) ? (sYaz0DataBuffer - (restSize & 7)) + 8 : sYaz0DataBuffer;
|
||||
@@ -92,7 +92,7 @@ void Yaz0_DecompressImpl(Yaz0Header* hdr, u8* dst) {
|
||||
} while (dst != dstEnd);
|
||||
}
|
||||
|
||||
void Yaz0_Decompress(uintptr_t romStart, u8* dst, u32 size) {
|
||||
void Yaz0_Decompress(uintptr_t romStart, u8* dst, size_t size) {
|
||||
sYaz0CurRomStart = romStart;
|
||||
sYaz0CurSize = size;
|
||||
sYaz0DataBufferEnd = sYaz0DataBuffer + sizeof(sYaz0DataBuffer);
|
||||
|
||||
+202
-47
@@ -1,3 +1,23 @@
|
||||
/**
|
||||
* @file z_std_dma.c
|
||||
*
|
||||
* This file implements a system for structuring the ROM image and retrieving data. It is designed to have the same
|
||||
* external interface regardless of whether the ROM segments are compressed or not.
|
||||
*
|
||||
* The ROM image is partitioned into regions that are entered into the DMA data table `gDmaDataTable`. External code
|
||||
* does not directly address locations on the ROM image directly, instead a "Virtual ROM" addressing is used. Virtual
|
||||
* ROM is defined to be the ROM address of a segment in a totally uncompressed ROM. For uncompressed ROMs, "physical"
|
||||
* ROM and VROM addresses coincide. The DMA data table converts VROM to ROM addresses so that code may exclusively use
|
||||
* VROM addresses even if the ROM is compressed.
|
||||
*
|
||||
* External code typically submits requests to the DMA Manager asking for a transfer in terms of Virtual ROM; the DMA
|
||||
* Manager translates this to the physical ROM address, performs the transfer to RAM and decompresses the data if
|
||||
* required.
|
||||
* Requests are processed in the order they are received and may be submitted both synchronously and asynchronously.
|
||||
*
|
||||
* There are some additional provisions to ensure that audio DMA is particularly high-speed, the audio data is assumed
|
||||
* to be uncompressed and the request queue and address translation is skipped.
|
||||
*/
|
||||
#include "global.h"
|
||||
#include "terminal.h"
|
||||
|
||||
@@ -10,7 +30,7 @@ const char* sDmaMgrCurFileName;
|
||||
s32 sDmaMgrCurFileLine;
|
||||
|
||||
u32 gDmaMgrVerbose = 0;
|
||||
u32 gDmaMgrDmaBuffSize = 0x2000;
|
||||
size_t gDmaMgrDmaBuffSize = DMAMGR_DEFAULT_BUFSIZE;
|
||||
u32 sDmaMgrIsRomCompressed = false;
|
||||
|
||||
// dmadata filenames
|
||||
@@ -22,37 +42,54 @@ const char* sDmaMgrFileNames[] = {
|
||||
|
||||
#undef DEFINE_DMA_ENTRY
|
||||
|
||||
s32 DmaMgr_CompareName(const char* name1, const char* name2) {
|
||||
while (*name1 != '\0') {
|
||||
if (*name1 > *name2) {
|
||||
/**
|
||||
* Compares `str1` and `str2`.
|
||||
*
|
||||
* @return
|
||||
* 0 if str1 and str2 are the same,
|
||||
* -1 if the first character that does not match has a smaller value in str1 than str2,
|
||||
* +1 if the first character that does not match has a greater value in str1 than str2
|
||||
*/
|
||||
s32 DmaMgr_StrCmp(const char* str1, const char* str2) {
|
||||
while (*str1 != '\0') {
|
||||
if (*str1 > *str2) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (*name1 < *name2) {
|
||||
if (*str1 < *str2) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
name1++;
|
||||
name2++;
|
||||
str1++;
|
||||
str2++;
|
||||
}
|
||||
|
||||
if (*name2 > '\0') {
|
||||
if (*str2 > '\0') {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, u32 size) {
|
||||
/**
|
||||
* Transfer `size` bytes from physical ROM address `rom` to `ram`.
|
||||
*
|
||||
* This function is intended for internal use only, however it is possible to use this function externally in which
|
||||
* case it behaves as a synchronous transfer, data is available as soon as this function returns.
|
||||
*
|
||||
* Transfers are divided into chunks based on the current value of `gDmaMgrDmaBuffSize` to avoid congestion of the PI
|
||||
* so that higher priority transfers can still be carried out in a timely manner. The transfers are sent in a queue to
|
||||
* the OS PI Manager which performs the transfer.
|
||||
*
|
||||
* @return 0 if successful, -1 if the DMA could not be queued with the PI Manager.
|
||||
*/
|
||||
s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, size_t size) {
|
||||
OSIoMesg ioMsg;
|
||||
OSMesgQueue queue;
|
||||
OSMesg msg;
|
||||
s32 ret;
|
||||
u32 buffSize = gDmaMgrDmaBuffSize;
|
||||
size_t buffSize = gDmaMgrDmaBuffSize;
|
||||
s32 pad[2];
|
||||
|
||||
if (buffSize == 0) {
|
||||
buffSize = 0x2000;
|
||||
buffSize = DMAMGR_DEFAULT_BUFSIZE;
|
||||
}
|
||||
|
||||
osInvalICache(ram, size);
|
||||
@@ -60,6 +97,9 @@ s32 DmaMgr_DmaRomToRam(uintptr_t rom, void* ram, u32 size) {
|
||||
osCreateMesgQueue(&queue, &msg, 1);
|
||||
|
||||
while (size > buffSize) {
|
||||
// The system avoids large DMAs as these would stall the PI for too long, potentially causing issues with
|
||||
// audio. To allow audio to continue to DMA whenever it needs to, other DMAs are split into manageable chunks.
|
||||
|
||||
if (1) {} // Necessary to match
|
||||
|
||||
ioMsg.hdr.pri = OS_MESG_PRI_NORMAL;
|
||||
@@ -124,7 +164,17 @@ end:
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
|
||||
/**
|
||||
* Callback function to facilitate audio DMA. Audio DMA does not use the request queue as audio data is often needed
|
||||
* very soon after the request is sent, requiring a higher priority method for enqueueing a DMA on the OS PI command
|
||||
* queue.
|
||||
*
|
||||
* @param pihandle Cartridge ROM PI Handle.
|
||||
* @param mb IO Message describing the transfer.
|
||||
* @param direction Read or write. (Only read is allowed)
|
||||
* @return 0 if the IO Message was successfully put on the OS PI command queue, < 0 otherwise
|
||||
*/
|
||||
s32 DmaMgr_AudioDmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
|
||||
s32 ret;
|
||||
|
||||
ASSERT(pihandle == gCartHandle, "pihandle == carthandle", "../z_std_dma.c", 530);
|
||||
@@ -143,7 +193,14 @@ s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void DmaMgr_DmaFromDriveRom(void* ram, uintptr_t rom, u32 size) {
|
||||
/**
|
||||
* DMA read from disk drive. Blocks the current thread until DMA completes.
|
||||
*
|
||||
* @param ram RAM address to write data to.
|
||||
* @param rom ROM address to read from.
|
||||
* @param size Size of transfer.
|
||||
*/
|
||||
void DmaMgr_DmaFromDriveRom(void* ram, uintptr_t rom, size_t size) {
|
||||
OSPiHandle* handle = osDriveRomInit();
|
||||
OSMesgQueue queue;
|
||||
OSMesg msg;
|
||||
@@ -164,20 +221,31 @@ void DmaMgr_DmaFromDriveRom(void* ram, uintptr_t rom, u32 size) {
|
||||
osRecvMesg(&queue, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
/**
|
||||
* DMA error encountered, print error messages and bring up the crash screen.
|
||||
*
|
||||
* @param req DMA Request causing the error.
|
||||
* @param file DMA data filename associated with the operation that errored.
|
||||
* @param errorName Error name string.
|
||||
* @param errorDesc Error description string.
|
||||
*
|
||||
* This function does not return.
|
||||
*/
|
||||
void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, const char* errorDesc) {
|
||||
uintptr_t vrom = req->vromAddr;
|
||||
void* ram = req->dramAddr;
|
||||
u32 size = req->size;
|
||||
size_t size = req->size;
|
||||
char buff1[80];
|
||||
char buff2[80];
|
||||
|
||||
osSyncPrintf("%c", BEL);
|
||||
osSyncPrintf(VT_FGCOL(RED));
|
||||
// "DMA Fatal Error"
|
||||
osSyncPrintf("DMA致命的エラー(%s)\nROM:%X RAM:%X SIZE:%X %s\n",
|
||||
errorDesc != NULL ? errorDesc : (errorName != NULL ? errorName : "???"), vrom, ram, size,
|
||||
file != NULL ? file : "???");
|
||||
|
||||
if (req->filename != NULL) {
|
||||
if (req->filename != NULL) { // Source file name that issued the DMA request
|
||||
osSyncPrintf("DMA ERROR: %s %d", req->filename, req->line);
|
||||
} else if (sDmaMgrCurFileName != NULL) {
|
||||
osSyncPrintf("DMA ERROR: %s %d", sDmaMgrCurFileName, sDmaMgrCurFileLine);
|
||||
@@ -197,7 +265,14 @@ void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, cons
|
||||
Fault_AddHungupAndCrashImpl(buff1, buff2);
|
||||
}
|
||||
|
||||
const char* DmaMgr_GetFileNameImpl(uintptr_t vrom) {
|
||||
/**
|
||||
* Searches the filesystem for the entry containing the address `vrom`. Retrieves the name of this entry from
|
||||
* the array of file names.
|
||||
*
|
||||
* @param vrom Virtual ROM location
|
||||
* @return Pointer to associated filename
|
||||
*/
|
||||
const char* DmaMgr_FindFileName(uintptr_t vrom) {
|
||||
DmaEntry* iter = gDmaDataTable;
|
||||
const char** name = sDmaMgrFileNames;
|
||||
|
||||
@@ -217,46 +292,56 @@ const char* DmaMgr_GetFileNameImpl(uintptr_t vrom) {
|
||||
}
|
||||
|
||||
const char* DmaMgr_GetFileName(uintptr_t vrom) {
|
||||
const char* ret = DmaMgr_GetFileNameImpl(vrom);
|
||||
const char* ret = DmaMgr_FindFileName(vrom);
|
||||
|
||||
if (ret == NULL) {
|
||||
return "(unknown)";
|
||||
}
|
||||
|
||||
if (DmaMgr_CompareName(ret, "kanji") == 0 || DmaMgr_CompareName(ret, "link_animetion") == 0) {
|
||||
if (DmaMgr_StrCmp(ret, "kanji") == 0 || DmaMgr_StrCmp(ret, "link_animetion") == 0) {
|
||||
// This check may be related to these files being too large to be loaded all at once, however a NULL filename
|
||||
// does not prevent them from being loaded.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void DmaMgr_ProcessMsg(DmaRequest* req) {
|
||||
void DmaMgr_ProcessRequest(DmaRequest* req) {
|
||||
uintptr_t vrom = req->vromAddr;
|
||||
void* ram = req->dramAddr;
|
||||
u32 size = req->size;
|
||||
size_t size = req->size;
|
||||
uintptr_t romStart;
|
||||
u32 romSize;
|
||||
size_t romSize;
|
||||
u8 found = false;
|
||||
DmaEntry* iter;
|
||||
const char* filename;
|
||||
|
||||
if (0) {
|
||||
// the string is defined in .rodata but not used, suggesting
|
||||
// a debug print is here but optimized out in some way
|
||||
// The string is defined in .rodata but not used, suggesting a debug print is here but was optimized out in
|
||||
// some way. The last arg of this print looks like it may be filename, but filename above this block does not
|
||||
// match.
|
||||
osSyncPrintf("DMA ROM:%08X RAM:%08X SIZE:%08X %s\n");
|
||||
// the last arg of this print looks like it may be filename, but
|
||||
// filename above this block does not match
|
||||
}
|
||||
|
||||
// Get the filename (for debugging)
|
||||
filename = DmaMgr_GetFileName(vrom);
|
||||
iter = gDmaDataTable;
|
||||
|
||||
// Iterate through the DMA data table until the region containing the vrom address for this request is found
|
||||
iter = gDmaDataTable;
|
||||
while (iter->vromEnd != 0) {
|
||||
if (vrom >= iter->vromStart && vrom < iter->vromEnd) {
|
||||
// Found the region this request falls into
|
||||
|
||||
if (1) {} // Necessary to match
|
||||
|
||||
if (iter->romEnd == 0) {
|
||||
// romEnd of 0 indicates that the file is uncompressed. Files that are stored uncompressed can have
|
||||
// only part of their content loaded into RAM, so DMA only the requested region.
|
||||
|
||||
if (iter->vromEnd < vrom + size) {
|
||||
// Error, vrom + size ends up in a different file than it started in
|
||||
|
||||
// "DMA transfers cannot cross segment boundaries"
|
||||
DmaMgr_Error(req, filename, "Segment Alignment Error",
|
||||
"セグメント境界をまたがってDMA転送することはできません");
|
||||
}
|
||||
@@ -268,19 +353,29 @@ void DmaMgr_ProcessMsg(DmaRequest* req) {
|
||||
osSyncPrintf("No Press ROM:%08X RAM:%08X SIZE:%08X\n", vrom, ram, size);
|
||||
}
|
||||
} else {
|
||||
// File is compressed. Files that are stored compressed must be loaded into RAM all at once.
|
||||
|
||||
romStart = iter->romStart;
|
||||
romSize = iter->romEnd - iter->romStart;
|
||||
|
||||
if (vrom != iter->vromStart) {
|
||||
// Error, requested vrom is not the start of a file
|
||||
|
||||
// "DMA transfer cannot be performed from the middle of a compressed segment"
|
||||
DmaMgr_Error(req, filename, "Can't Transfer Segment",
|
||||
"圧縮されたセグメントの途中からはDMA転送することはできません");
|
||||
}
|
||||
|
||||
if (size != iter->vromEnd - iter->vromStart) {
|
||||
// Error, only part of the file was requested
|
||||
|
||||
// "It is not possible to DMA only part of a compressed segment"
|
||||
DmaMgr_Error(req, filename, "Can't Transfer Segment",
|
||||
"圧縮されたセグメントの一部だけをDMA転送することはできません");
|
||||
}
|
||||
|
||||
// Reduce the thread priority and decompress the file, the decompression routine handles the DMA
|
||||
// in chunks. Restores the thread priority when done.
|
||||
osSetThreadPri(NULL, THREAD_PRI_DMAMGR_LOW);
|
||||
Yaz0_Decompress(romStart, ram, romSize);
|
||||
osSetThreadPri(NULL, THREAD_PRI_DMAMGR);
|
||||
@@ -296,15 +391,21 @@ void DmaMgr_ProcessMsg(DmaRequest* req) {
|
||||
}
|
||||
|
||||
if (!found) {
|
||||
// Requested region was not found in the filesystem
|
||||
|
||||
if (sDmaMgrIsRomCompressed) {
|
||||
// Error, rom is compressed so DMA may only be requested within the filesystem bounds
|
||||
|
||||
// "Corresponding data does not exist"
|
||||
DmaMgr_Error(req, NULL, "DATA DON'T EXIST", "該当するデータが存在しません");
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// ROM is uncompressed, allow arbitrary DMA even if the region is not marked in the filesystem
|
||||
DmaMgr_DmaRomToRam(vrom, ram, size);
|
||||
|
||||
DmaMgr_DmaRomToRam(vrom, ram, size);
|
||||
|
||||
if (0) {
|
||||
osSyncPrintf("No Press ROM:%08X RAM:%08X SIZE:%08X (非公式)\n", vrom, ram, size);
|
||||
if (0) {
|
||||
osSyncPrintf("No Press ROM:%08X RAM:%08X SIZE:%08X (非公式)\n", vrom, ram, size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -313,8 +414,11 @@ void DmaMgr_ThreadEntry(void* arg) {
|
||||
OSMesg msg;
|
||||
DmaRequest* req;
|
||||
|
||||
// "DMA manager thread execution start"
|
||||
osSyncPrintf("DMAマネージャスレッド実行開始\n");
|
||||
|
||||
while (true) {
|
||||
// Wait for DMA Requests to arrive from other threads
|
||||
osRecvMesg(&sDmaMgrMsgQueue, &msg, OS_MESG_BLOCK);
|
||||
req = (DmaRequest*)msg;
|
||||
if (req == NULL) {
|
||||
@@ -325,7 +429,10 @@ void DmaMgr_ThreadEntry(void* arg) {
|
||||
osSyncPrintf("DMA登録受付 dmap=%08x\n", req);
|
||||
}
|
||||
|
||||
DmaMgr_ProcessMsg(req);
|
||||
// Process the DMA request
|
||||
DmaMgr_ProcessRequest(req);
|
||||
|
||||
// Notify the sender that the request has been processed
|
||||
if (req->notifyQueue != NULL) {
|
||||
osSendMesg(req->notifyQueue, req->notifyMsg, OS_MESG_NOBLOCK);
|
||||
if (0) {
|
||||
@@ -333,11 +440,24 @@ void DmaMgr_ThreadEntry(void* arg) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// "DMA manager thread execution end"
|
||||
osSyncPrintf("DMAマネージャスレッド実行終了\n");
|
||||
}
|
||||
|
||||
s32 DmaMgr_SendRequestImpl(DmaRequest* req, void* ram, uintptr_t vrom, u32 size, u32 unk, OSMesgQueue* queue,
|
||||
OSMesg msg) {
|
||||
/**
|
||||
* Submits a DMA request to the DMA manager. For internal use only.
|
||||
*
|
||||
* @param req DMA request, filled out internally.
|
||||
* @param ram Location in DRAM for data to be written.
|
||||
* @param vrom Virtual ROM location for data to be read.
|
||||
* @param size Transfer size.
|
||||
* @param queue Message queue to notify with `msg` once the transfer is complete.
|
||||
* @param msg Message to send to `queue` once the transfer is complete.
|
||||
* @return 0
|
||||
*/
|
||||
s32 DmaMgr_SendRequest(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, u32 unk, OSMesgQueue* queue,
|
||||
OSMesg msg) {
|
||||
static s32 sDmaMgrQueueFullLogged = 0;
|
||||
|
||||
if ((1 && (ram == NULL)) || (osMemSize < OS_K0_TO_PHYSICAL(ram) + size) || (vrom & 1) || (vrom > 0x4000000) ||
|
||||
@@ -357,6 +477,7 @@ s32 DmaMgr_SendRequestImpl(DmaRequest* req, void* ram, uintptr_t vrom, u32 size,
|
||||
sDmaMgrQueueFullLogged++;
|
||||
osSyncPrintf("%c", BEL);
|
||||
osSyncPrintf(VT_FGCOL(RED));
|
||||
// "dmaEntryMsgQ is full. Reconsider your queue size."
|
||||
osSyncPrintf("dmaEntryMsgQが一杯です。キューサイズの再検討をおすすめします。");
|
||||
LOG_NUM("(sizeof(dmaEntryMsgBufs) / sizeof(dmaEntryMsgBufs[0]))", ARRAY_COUNT(sDmaMgrMsgBuf), "../z_std_dma.c",
|
||||
952);
|
||||
@@ -367,15 +488,24 @@ s32 DmaMgr_SendRequestImpl(DmaRequest* req, void* ram, uintptr_t vrom, u32 size,
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 DmaMgr_SendRequest0(void* ram, uintptr_t vrom, u32 size) {
|
||||
/**
|
||||
* Submit a synchronous DMA request. This will block the current thread until the requested transfer is complete. Data
|
||||
* is immediately available as soon as this function returns.
|
||||
*
|
||||
* @param ram Location in DRAM for data to be written.
|
||||
* @param vrom Virtual ROM location for data to be read.
|
||||
* @param size Transfer size.
|
||||
* @return 0
|
||||
*/
|
||||
s32 DmaMgr_RequestSync(void* ram, uintptr_t vrom, size_t size) {
|
||||
DmaRequest req;
|
||||
OSMesgQueue queue;
|
||||
OSMesg msg;
|
||||
s32 ret;
|
||||
|
||||
osCreateMesgQueue(&queue, &msg, 1);
|
||||
ret = DmaMgr_SendRequestImpl(&req, ram, vrom, size, 0, &queue, NULL);
|
||||
if (ret == -1) {
|
||||
ret = DmaMgr_SendRequest(&req, ram, vrom, size, 0, &queue, NULL);
|
||||
if (ret == -1) { // DmaMgr_SendRequest only returns 0
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -388,6 +518,7 @@ void DmaMgr_Init(void) {
|
||||
s32 idx;
|
||||
DmaEntry* iter;
|
||||
|
||||
// DMA the dma data table to RAM
|
||||
DmaMgr_DmaRomToRam((uintptr_t)_dmadataSegmentRomStart, _dmadataSegmentStart,
|
||||
(u32)(_dmadataSegmentRomEnd - _dmadataSegmentRomStart));
|
||||
osSyncPrintf("dma_rom_ad[]\n");
|
||||
@@ -397,6 +528,7 @@ void DmaMgr_Init(void) {
|
||||
iter = gDmaDataTable;
|
||||
idx = 0;
|
||||
|
||||
// Check if the ROM is compressed (romEnd not 0)
|
||||
while (iter->vromEnd != 0) {
|
||||
if (iter->romEnd != 0) {
|
||||
sDmaMgrIsRomCompressed = true;
|
||||
@@ -415,12 +547,15 @@ void DmaMgr_Init(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// Ensure that the boot segment always follows after the makerom segment.
|
||||
if ((uintptr_t)_bootSegmentRomStart != gDmaDataTable[0].vromEnd) {
|
||||
osSyncPrintf("_bootSegmentRomStart(%08x) != dma_rom_ad[0].rom_b(%08x)\n", _bootSegmentRomStart,
|
||||
gDmaDataTable[0].vromEnd);
|
||||
//! @bug The main code file where fault.c resides is not yet loaded
|
||||
Fault_AddHungupAndCrash("../z_std_dma.c", 1055);
|
||||
}
|
||||
|
||||
// Start the DMA manager
|
||||
osCreateMesgQueue(&sDmaMgrMsgQueue, sDmaMgrMsgBuf, ARRAY_COUNT(sDmaMgrMsgBuf));
|
||||
StackCheck_Init(&sDmaMgrStackInfo, sDmaMgrStack, STACK_TOP(sDmaMgrStack), 0, 0x100, "dmamgr");
|
||||
osCreateThread(&sDmaMgrThread, THREAD_ID_DMAMGR, DmaMgr_ThreadEntry, NULL, STACK_TOP(sDmaMgrStack),
|
||||
@@ -428,14 +563,34 @@ void DmaMgr_Init(void) {
|
||||
osStartThread(&sDmaMgrThread);
|
||||
}
|
||||
|
||||
s32 DmaMgr_SendRequest2(DmaRequest* req, void* ram, uintptr_t vrom, u32 size, u32 unk5, OSMesgQueue* queue, OSMesg msg,
|
||||
const char* file, s32 line) {
|
||||
/**
|
||||
* Submit an asynchronous DMA request. Unlike other DMA requests, this will not block the current thread. Data arrival
|
||||
* is not immediate however, ensure that the request has completed by awaiting a message sent to `queue` when the DMA
|
||||
* operation has completed.
|
||||
*
|
||||
* @param req DMA request structure, filled out internally.
|
||||
* @param ram Location in DRAM for data to be written.
|
||||
* @param vrom Virtual ROM location for data to be read.
|
||||
* @param size Transfer size.
|
||||
* @param queue Message queue to notify with `msg` once the transfer is complete.
|
||||
* @param msg Message to send to `queue` once the transfer is complete.
|
||||
* @param file Debug filename of caller.
|
||||
* @param line Debug line number of caller.
|
||||
* @return 0
|
||||
*/
|
||||
s32 DmaMgr_RequestAsync(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, u32 unk5, OSMesgQueue* queue,
|
||||
OSMesg msg, const char* file, s32 line) {
|
||||
req->filename = file;
|
||||
req->line = line;
|
||||
return DmaMgr_SendRequestImpl(req, ram, vrom, size, unk5, queue, msg);
|
||||
return DmaMgr_SendRequest(req, ram, vrom, size, unk5, queue, msg);
|
||||
}
|
||||
|
||||
s32 DmaMgr_SendRequest1(void* ram, uintptr_t vrom, u32 size, const char* file, s32 line) {
|
||||
/**
|
||||
* Synchronous DMA Request with source file and line info for debugging.
|
||||
*
|
||||
* @see DmaMgr_RequestSync
|
||||
*/
|
||||
s32 DmaMgr_RequestSyncDebug(void* ram, uintptr_t vrom, size_t size, const char* file, s32 line) {
|
||||
DmaRequest req;
|
||||
s32 ret;
|
||||
OSMesgQueue queue;
|
||||
@@ -445,8 +600,8 @@ s32 DmaMgr_SendRequest1(void* ram, uintptr_t vrom, u32 size, const char* file, s
|
||||
req.filename = file;
|
||||
req.line = line;
|
||||
osCreateMesgQueue(&queue, &msg, 1);
|
||||
ret = DmaMgr_SendRequestImpl(&req, ram, vrom, size, 0, &queue, NULL);
|
||||
if (ret == -1) {
|
||||
ret = DmaMgr_SendRequest(&req, ram, vrom, size, 0, &queue, NULL);
|
||||
if (ret == -1) { // DmaMgr_SendRequest only returns 0
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -56,7 +56,7 @@ void AudioMgr_ThreadEntry(void* arg0) {
|
||||
|
||||
osSyncPrintf("オーディオマネージャスレッド実行開始\n"); // "Start running audio manager thread"
|
||||
Audio_Init();
|
||||
AudioLoad_SetDmaHandler(DmaMgr_DmaHandler);
|
||||
AudioLoad_SetDmaHandler(DmaMgr_AudioDmaHandler);
|
||||
Audio_InitSound();
|
||||
osSendMesg(&audioMgr->lockQueue, NULL, OS_MESG_BLOCK);
|
||||
IrqMgr_AddClient(audioMgr->irqMgr, &irqClient, &audioMgr->interruptQueue);
|
||||
|
||||
+64
-64
@@ -31,8 +31,8 @@ u32 gUpgradeMasks[UPG_MAX] = {
|
||||
0x00000E00, // UPG_SCALE
|
||||
0x00003000, // UPG_WALLET
|
||||
0x0001C000, // UPG_BULLET_BAG
|
||||
0x000E0000, // UPG_STICKS
|
||||
0x00700000, // UPG_NUTS
|
||||
0x000E0000, // UPG_DEKU_STICKS
|
||||
0x00700000, // UPG_DEKU_NUTS
|
||||
};
|
||||
u32 gUpgradeNegMasks[UPG_MAX] = {
|
||||
~0x00000007, // UPG_QUIVER
|
||||
@@ -41,8 +41,8 @@ u32 gUpgradeNegMasks[UPG_MAX] = {
|
||||
~0x00000E00, // UPG_SCALE
|
||||
~0x00003000, // UPG_WALLET
|
||||
~0x0001C000, // UPG_BULLET_BAG
|
||||
~0x000E0000, // UPG_STICKS
|
||||
~0x00700000, // UPG_NUTS
|
||||
~0x000E0000, // UPG_DEKU_STICKS
|
||||
~0x00700000, // UPG_DEKU_NUTS
|
||||
};
|
||||
|
||||
u8 gEquipShifts[EQUIP_TYPE_MAX] = {
|
||||
@@ -59,8 +59,8 @@ u8 gUpgradeShifts[UPG_MAX] = {
|
||||
9, // UPG_SCALE
|
||||
12, // UPG_WALLET
|
||||
14, // UPG_BULLET_BAG
|
||||
17, // UPG_STICKS
|
||||
20, // UPG_NUTS
|
||||
17, // UPG_DEKU_STICKS
|
||||
20, // UPG_DEKU_NUTS
|
||||
};
|
||||
|
||||
u16 gUpgradeCapacities[UPG_MAX][4] = {
|
||||
@@ -70,8 +70,8 @@ u16 gUpgradeCapacities[UPG_MAX][4] = {
|
||||
{ 0, 0, 0, 0 }, // UPG_SCALE (unused)
|
||||
{ 99, 200, 500, 500 }, // UPG_WALLET
|
||||
{ 0, 30, 40, 50 }, // UPG_BULLET_BAG
|
||||
{ 0, 10, 20, 30 }, // UPG_STICKS
|
||||
{ 0, 20, 30, 40 }, // UPG_NUTS
|
||||
{ 0, 10, 20, 30 }, // UPG_DEKU_STICKS
|
||||
{ 0, 20, 30, 40 }, // UPG_DEKU_NUTS
|
||||
};
|
||||
|
||||
u32 gGsFlagsMasks[] = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 };
|
||||
@@ -212,62 +212,62 @@ void* gItemIcons[] = {
|
||||
|
||||
// Used to map item IDs to inventory slots
|
||||
u8 gItemSlots[] = {
|
||||
SLOT_STICK, // ITEM_STICK
|
||||
SLOT_NUT, // ITEM_NUT
|
||||
SLOT_BOMB, // ITEM_BOMB
|
||||
SLOT_BOW, // ITEM_BOW
|
||||
SLOT_ARROW_FIRE, // ITEM_ARROW_FIRE
|
||||
SLOT_DINS_FIRE, // ITEM_DINS_FIRE
|
||||
SLOT_SLINGSHOT, // ITEM_SLINGSHOT
|
||||
SLOT_OCARINA, // ITEM_OCARINA_FAIRY
|
||||
SLOT_OCARINA, // ITEM_OCARINA_TIME
|
||||
SLOT_BOMBCHU, // ITEM_BOMBCHU
|
||||
SLOT_HOOKSHOT, // ITEM_HOOKSHOT
|
||||
SLOT_HOOKSHOT, // ITEM_LONGSHOT
|
||||
SLOT_ARROW_ICE, // ITEM_ARROW_ICE
|
||||
SLOT_FARORES_WIND, // ITEM_FARORES_WIND
|
||||
SLOT_BOOMERANG, // ITEM_BOOMERANG
|
||||
SLOT_LENS, // ITEM_LENS
|
||||
SLOT_BEAN, // ITEM_BEAN
|
||||
SLOT_HAMMER, // ITEM_HAMMER
|
||||
SLOT_ARROW_LIGHT, // ITEM_ARROW_LIGHT
|
||||
SLOT_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE
|
||||
SLOT_BOTTLE_1, // ITEM_POTION_RED
|
||||
SLOT_BOTTLE_1, // ITEM_POTION_GREEN
|
||||
SLOT_BOTTLE_1, // ITEM_POTION_BLUE
|
||||
SLOT_BOTTLE_1, // ITEM_FAIRY
|
||||
SLOT_BOTTLE_1, // ITEM_FISH
|
||||
SLOT_BOTTLE_1, // ITEM_MILK_BOTTLE
|
||||
SLOT_BOTTLE_1, // ITEM_LETTER_RUTO
|
||||
SLOT_BOTTLE_1, // ITEM_BLUE_FIRE
|
||||
SLOT_BOTTLE_1, // ITEM_BUG
|
||||
SLOT_BOTTLE_1, // ITEM_BIG_POE
|
||||
SLOT_BOTTLE_1, // ITEM_MILK_HALF
|
||||
SLOT_BOTTLE_1, // ITEM_POE
|
||||
SLOT_TRADE_CHILD, // ITEM_WEIRD_EGG
|
||||
SLOT_TRADE_CHILD, // ITEM_CHICKEN
|
||||
SLOT_TRADE_CHILD, // ITEM_LETTER_ZELDA
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_KEATON
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_SKULL
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_SPOOKY
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_BUNNY
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_GORON
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_ZORA
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_GERUDO
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_TRUTH
|
||||
SLOT_TRADE_CHILD, // ITEM_SOLD_OUT
|
||||
SLOT_TRADE_ADULT, // ITEM_POCKET_EGG
|
||||
SLOT_TRADE_ADULT, // ITEM_POCKET_CUCCO
|
||||
SLOT_TRADE_ADULT, // ITEM_COJIRO
|
||||
SLOT_TRADE_ADULT, // ITEM_ODD_MUSHROOM
|
||||
SLOT_TRADE_ADULT, // ITEM_ODD_POTION
|
||||
SLOT_TRADE_ADULT, // ITEM_SAW
|
||||
SLOT_TRADE_ADULT, // ITEM_SWORD_BROKEN
|
||||
SLOT_TRADE_ADULT, // ITEM_PRESCRIPTION
|
||||
SLOT_TRADE_ADULT, // ITEM_FROG
|
||||
SLOT_TRADE_ADULT, // ITEM_EYEDROPS
|
||||
SLOT_TRADE_ADULT, // ITEM_CLAIM_CHECK
|
||||
SLOT_DEKU_STICK, // ITEM_DEKU_STICK
|
||||
SLOT_DEKU_NUT, // ITEM_DEKU_NUT
|
||||
SLOT_BOMB, // ITEM_BOMB
|
||||
SLOT_BOW, // ITEM_BOW
|
||||
SLOT_ARROW_FIRE, // ITEM_ARROW_FIRE
|
||||
SLOT_DINS_FIRE, // ITEM_DINS_FIRE
|
||||
SLOT_SLINGSHOT, // ITEM_SLINGSHOT
|
||||
SLOT_OCARINA, // ITEM_OCARINA_FAIRY
|
||||
SLOT_OCARINA, // ITEM_OCARINA_OF_TIME
|
||||
SLOT_BOMBCHU, // ITEM_BOMBCHU
|
||||
SLOT_HOOKSHOT, // ITEM_HOOKSHOT
|
||||
SLOT_HOOKSHOT, // ITEM_LONGSHOT
|
||||
SLOT_ARROW_ICE, // ITEM_ARROW_ICE
|
||||
SLOT_FARORES_WIND, // ITEM_FARORES_WIND
|
||||
SLOT_BOOMERANG, // ITEM_BOOMERANG
|
||||
SLOT_LENS_OF_TRUTH, // ITEM_LENS_OF_TRUTH
|
||||
SLOT_MAGIC_BEAN, // ITEM_MAGIC_BEAN
|
||||
SLOT_HAMMER, // ITEM_HAMMER
|
||||
SLOT_ARROW_LIGHT, // ITEM_ARROW_LIGHT
|
||||
SLOT_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_EMPTY
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_POTION_RED
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_POTION_GREEN
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_POTION_BLUE
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_FAIRY
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_FISH
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_MILK_FULL
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_RUTOS_LETTER
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_BLUE_FIRE
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_BUG
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_BIG_POE
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_MILK_HALF
|
||||
SLOT_BOTTLE_1, // ITEM_BOTTLE_POE
|
||||
SLOT_TRADE_CHILD, // ITEM_WEIRD_EGG
|
||||
SLOT_TRADE_CHILD, // ITEM_CHICKEN
|
||||
SLOT_TRADE_CHILD, // ITEM_ZELDAS_LETTER
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_KEATON
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_SKULL
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_SPOOKY
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_BUNNY_HOOD
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_GORON
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_ZORA
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_GERUDO
|
||||
SLOT_TRADE_CHILD, // ITEM_MASK_TRUTH
|
||||
SLOT_TRADE_CHILD, // ITEM_SOLD_OUT
|
||||
SLOT_TRADE_ADULT, // ITEM_POCKET_EGG
|
||||
SLOT_TRADE_ADULT, // ITEM_POCKET_CUCCO
|
||||
SLOT_TRADE_ADULT, // ITEM_COJIRO
|
||||
SLOT_TRADE_ADULT, // ITEM_ODD_MUSHROOM
|
||||
SLOT_TRADE_ADULT, // ITEM_ODD_POTION
|
||||
SLOT_TRADE_ADULT, // ITEM_POACHERS_SAW
|
||||
SLOT_TRADE_ADULT, // ITEM_BROKEN_GORONS_SWORD
|
||||
SLOT_TRADE_ADULT, // ITEM_PRESCRIPTION
|
||||
SLOT_TRADE_ADULT, // ITEM_EYEBALL_FROG
|
||||
SLOT_TRADE_ADULT, // ITEM_EYE_DROPS
|
||||
SLOT_TRADE_ADULT, // ITEM_CLAIM_CHECK
|
||||
};
|
||||
|
||||
void Inventory_ChangeEquipment(s16 equipment, u16 value) {
|
||||
|
||||
+16
-14
@@ -1,4 +1,3 @@
|
||||
#include "ultra64.h"
|
||||
#include "global.h"
|
||||
|
||||
#define DBCAM_CONTROLLER_PORT 2
|
||||
@@ -1507,15 +1506,15 @@ static s32 sAllocSize;
|
||||
|
||||
s32 DbCamera_GetFirstAvailableLetter(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(sLetters); i++) {
|
||||
switch (sLetters[i]) {
|
||||
case 'O':
|
||||
break;
|
||||
default:
|
||||
return 'A' + i;
|
||||
return MEMPAK_INDEX_TO_LETTER(i);
|
||||
}
|
||||
}
|
||||
|
||||
return '?';
|
||||
}
|
||||
|
||||
@@ -1653,7 +1652,7 @@ s32 DbCamera_SaveCallback(char* c) {
|
||||
freeSize = Mempak_GetFreeBytes(DBCAM_CONTROLLER_PORT);
|
||||
|
||||
if ((u32)sAllocSize < (freeSize + ret)) {
|
||||
if (!Mempak_Alloc(DBCAM_CONTROLLER_PORT, c, sAllocSize)) {
|
||||
if (!Mempak_CreateFile(DBCAM_CONTROLLER_PORT, c, sAllocSize)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1867,7 +1866,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
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(0x10, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlActionIdx]);
|
||||
func_8006376C(0x14, 7, 5, D_8012CF88[0]);
|
||||
@@ -1891,7 +1890,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
|
||||
dbCamera->sub.demoCtrlMenu++;
|
||||
} else {
|
||||
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(0x12, 7, 5, D_8012CF80);
|
||||
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_LOAD, 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(0x12, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlActionIdx]);
|
||||
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_CLEAR, MENU_SUCCESS): {
|
||||
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(0x13, 7, 5, D_8012CF60[dbCamera->sub.demoCtrlMenu / 100]);
|
||||
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_CLEAR, MENU_ERROR): {
|
||||
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(0x11, 7, 5, D_8012CFAC);
|
||||
func_8006376C(0x17, 7, 5, D_8012CFA4);
|
||||
@@ -1971,11 +1970,12 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
|
||||
|
||||
default: {
|
||||
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_CalcMempakAllocSize();
|
||||
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;
|
||||
} else {
|
||||
sMempakFilesize = 0;
|
||||
@@ -1984,7 +1984,7 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
|
||||
block_1:
|
||||
idx2 = 1;
|
||||
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] = '-';
|
||||
|
||||
idx2 <<= 1;
|
||||
@@ -2002,7 +2002,8 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
|
||||
}
|
||||
|
||||
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;
|
||||
} else {
|
||||
sMempakFilesize = 0;
|
||||
@@ -2019,7 +2020,8 @@ s32 DbCamera_UpdateDemoControl(DbCamera* dbCamera, Camera* cam) {
|
||||
}
|
||||
|
||||
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;
|
||||
} else {
|
||||
sMempakFilesize = 0;
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ void func_800C4344(GameState* gameState) {
|
||||
}
|
||||
|
||||
gDmaMgrVerbose = HREG(60);
|
||||
gDmaMgrDmaBuffSize = SREG(21) != 0 ? ALIGN16(SREG(21)) : 0x2000;
|
||||
gDmaMgrDmaBuffSize = SREG(21) != 0 ? ALIGN16(SREG(21)) : DMAMGR_DEFAULT_BUFSIZE;
|
||||
gSystemArenaLogSeverity = HREG(61);
|
||||
gZeldaArenaLogSeverity = HREG(62);
|
||||
if (HREG(80) == 8) {
|
||||
|
||||
+1
-1
@@ -20,7 +20,7 @@ s32 Overlay_Load(uintptr_t vRomStart, uintptr_t vRomEnd, void* vRamStart, void*
|
||||
osSyncPrintf("TEXT,DATA,RODATA+relをDMA転送します(%08x-%08x)\n", allocatedVRamAddr, end);
|
||||
}
|
||||
|
||||
DmaMgr_SendRequest0(allocatedVRamAddr, vRomStart, size);
|
||||
DmaMgr_RequestSync(allocatedVRamAddr, vRomStart, size);
|
||||
|
||||
ovlOffset = ((s32*)end)[-1];
|
||||
|
||||
|
||||
+159
-72
@@ -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"
|
||||
|
||||
#define MEMPAK_MAX_FILES 11
|
||||
|
||||
OSPfs sMempakPfsHandle;
|
||||
s32 sMempakFreeBytes;
|
||||
s32 sMempakFiles[10];
|
||||
s32 sMempakFiles[MEMPAK_MAX_FILES];
|
||||
|
||||
u16 sMempakCompanyCode = 1;
|
||||
u32 sMempakGameCode = 1;
|
||||
|
||||
// "ZELDA DEMO TOOL "
|
||||
u8 sMempakGameName[0x10] = { 0x33, 0x1E, 0x25, 0x1D, 0x1A, 0x0F, 0x1D, 0x1E,
|
||||
0x26, 0x28, 0x0F, 0x2D, 0x28, 0x28, 0x25, 0x0F };
|
||||
u8 sMempakExtName[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
// NCH is a heavily abbreviated "N64 font code CHaracter"
|
||||
// Conversion from A-Z to N64 Font Code
|
||||
#define NCH(c) ((c)-0x27)
|
||||
// Conversion from spaces to N64 Font Code
|
||||
#define NCH_SPC (0x0F)
|
||||
|
||||
s32 Mempak_Init(s32 controllerNb) {
|
||||
OSMesgQueue* mq;
|
||||
u8 sMempakGameName[PFS_FILE_NAME_LEN] = {
|
||||
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 ret = false;
|
||||
|
||||
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
|
||||
if (!osPfsInitPak(mq, &sMempakPfsHandle, controllerNb)) {
|
||||
if (osPfsInitPak(serialEventQueue, &sMempakPfsHandle, controllerNum) == 0) {
|
||||
ret = true;
|
||||
}
|
||||
|
||||
osPfsFreeBlocks(&sMempakPfsHandle, &sMempakFreeBytes);
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq);
|
||||
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
|
||||
return ret;
|
||||
}
|
||||
|
||||
s32 Mempak_GetFreeBytes(s32 controllerNb) {
|
||||
s32 Mempak_GetFreeBytes(s32 controllerNum) {
|
||||
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;
|
||||
char idx;
|
||||
char letter;
|
||||
u32 bit = 1;
|
||||
s32 flag = 0;
|
||||
s32 bits = 0;
|
||||
|
||||
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
|
||||
for (idx = start; idx <= end; idx++) {
|
||||
sMempakExtName[0] = idx - 0x27;
|
||||
for (letter = start; letter <= end; letter++) {
|
||||
sMempakExtName[0] = NCH(letter);
|
||||
|
||||
error = osPfsFindFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName, sMempakExtName,
|
||||
&sMempakFiles[idx - 'A']);
|
||||
&sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)]);
|
||||
if (error == 0) {
|
||||
flag |= bit;
|
||||
bits |= bit;
|
||||
} else {
|
||||
sMempakFiles[idx - 'A'] = -1;
|
||||
sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)] = -1;
|
||||
}
|
||||
|
||||
bit <<= 1;
|
||||
osSyncPrintf("mempak: find '%c' (%d)\n", idx, error);
|
||||
osSyncPrintf("mempak: find '%c' (%d)\n", letter, error);
|
||||
}
|
||||
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq);
|
||||
osSyncPrintf("mempak: find '%c' - '%c' %02x\n", start, end, flag);
|
||||
|
||||
return flag;
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
|
||||
osSyncPrintf("mempak: find '%c' - '%c' %02x\n", start, end, bits);
|
||||
return bits;
|
||||
}
|
||||
|
||||
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 ret = false;
|
||||
s32 pad;
|
||||
|
||||
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
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 ret = false;
|
||||
s32 pad;
|
||||
|
||||
mq = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
serialEventQueue = PadMgr_AcquireSerialEventQueue(&gPadMgr);
|
||||
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
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 ret = 0;
|
||||
s32 ret = false;
|
||||
s32 i;
|
||||
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,
|
||||
sMempakExtName, size, &sMempakFiles[*idx - 'A']);
|
||||
sMempakExtName, size, &sMempakFiles[MEMPAK_LETTER_TO_INDEX(*letter)]);
|
||||
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 {
|
||||
sMempakExtName[0] = *idx - 0x27;
|
||||
// File already exists, delete then alloc
|
||||
|
||||
sMempakExtName[0] = NCH(*letter);
|
||||
if (osPfsDeleteFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
|
||||
sMempakExtName) == 0) {
|
||||
ret = 1;
|
||||
ret = true;
|
||||
}
|
||||
error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
|
||||
sMempakExtName, size, &sMempakFiles[*idx - 'A']);
|
||||
sMempakExtName, size, &sMempakFiles[MEMPAK_LETTER_TO_INDEX(*letter)]);
|
||||
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 {
|
||||
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) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
*letter = MEMPAK_INDEX_TO_LETTER(i);
|
||||
|
||||
*idx = i + 'A';
|
||||
sMempakExtName[0] = *idx - 0x27;
|
||||
sMempakExtName[0] = NCH(*letter);
|
||||
error = osPfsAllocateFile(&sMempakPfsHandle, sMempakCompanyCode, sMempakGameCode, sMempakGameName,
|
||||
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) {
|
||||
ret = 1;
|
||||
ret = true;
|
||||
}
|
||||
}
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq);
|
||||
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
|
||||
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 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);
|
||||
if (error == 0) {
|
||||
ret = true;
|
||||
}
|
||||
osSyncPrintf("mempak: delete '%c' (%d)\n", idx, error);
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq);
|
||||
osSyncPrintf("mempak: delete '%c' (%d)\n", letter, error);
|
||||
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
|
||||
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;
|
||||
s32 error = osPfsFileState(&sMempakPfsHandle, sMempakFiles[idx - 'A'], &state);
|
||||
s32 error = osPfsFileState(&sMempakPfsHandle, sMempakFiles[MEMPAK_LETTER_TO_INDEX(letter)], &state);
|
||||
s32 pad;
|
||||
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, mq);
|
||||
PadMgr_ReleaseSerialEventQueue(&gPadMgr, serialEventQueue);
|
||||
|
||||
if (error != 0) {
|
||||
return 0;
|
||||
|
||||
+7
-7
@@ -31,13 +31,13 @@
|
||||
#include "global.h"
|
||||
#include "terminal.h"
|
||||
|
||||
#define PADMGR_LOG(controllerNo, msg) \
|
||||
if (1) { \
|
||||
osSyncPrintf(VT_FGCOL(YELLOW)); \
|
||||
/* padmgr: Controller %d: %s */ \
|
||||
osSyncPrintf("padmgr: %dコン: %s\n", (controllerNo) + 1, (msg)); \
|
||||
osSyncPrintf(VT_RST); \
|
||||
} \
|
||||
#define PADMGR_LOG(controllerNum, msg) \
|
||||
if (1) { \
|
||||
osSyncPrintf(VT_FGCOL(YELLOW)); \
|
||||
/* padmgr: Controller %d: %s */ \
|
||||
osSyncPrintf("padmgr: %dコン: %s\n", (controllerNum) + 1, (msg)); \
|
||||
osSyncPrintf(VT_RST); \
|
||||
} \
|
||||
(void)0
|
||||
|
||||
#define LOG_SEVERITY_NOLOG 0
|
||||
|
||||
+1
-1
@@ -679,7 +679,7 @@ void TitleCard_InitPlaceName(PlayState* play, TitleCardContext* titleCtx, void*
|
||||
u32 size = loadedScene->titleFile.vromEnd - loadedScene->titleFile.vromStart;
|
||||
|
||||
if ((size != 0) && (size <= 0x3000)) {
|
||||
DmaMgr_SendRequest1(texture, loadedScene->titleFile.vromStart, size, "../z_actor.c", 2765);
|
||||
DmaMgr_RequestSyncDebug(texture, loadedScene->titleFile.vromStart, size, "../z_actor.c", 2765);
|
||||
}
|
||||
|
||||
titleCtx->texture = texture;
|
||||
|
||||
+62
-49
@@ -8,7 +8,7 @@ void Interface_Init(PlayState* play) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
u32 parameterSize;
|
||||
u16 doActionOffset;
|
||||
u8 temp;
|
||||
u8 timerId;
|
||||
|
||||
gSaveContext.sunsSongState = SUNSSONG_INACTIVE;
|
||||
gSaveContext.unk_13E8 = gSaveContext.unk_13EA = 0;
|
||||
@@ -37,42 +37,43 @@ void Interface_Init(PlayState* play) {
|
||||
osSyncPrintf("parameter->parameterSegment=%x\n", interfaceCtx->parameterSegment);
|
||||
|
||||
ASSERT(interfaceCtx->parameterSegment != NULL, "parameter->parameterSegment != NULL", "../z_construct.c", 161);
|
||||
DmaMgr_SendRequest1(interfaceCtx->parameterSegment, (uintptr_t)_parameter_staticSegmentRomStart, parameterSize,
|
||||
"../z_construct.c", 162);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->parameterSegment, (uintptr_t)_parameter_staticSegmentRomStart, parameterSize,
|
||||
"../z_construct.c", 162);
|
||||
|
||||
interfaceCtx->doActionSegment = GameState_Alloc(&play->state, 0x480, "../z_construct.c", 166);
|
||||
interfaceCtx->doActionSegment = GameState_Alloc(&play->state, 3 * DO_ACTION_TEX_SIZE, "../z_construct.c", 166);
|
||||
|
||||
osSyncPrintf("DOアクション テクスチャ初期=%x\n", 0x480); // "DO Action Texture Initialization"
|
||||
osSyncPrintf("DOアクション テクスチャ初期=%x\n", 3 * DO_ACTION_TEX_SIZE); // "DO Action Texture Initialization"
|
||||
osSyncPrintf("parameter->do_actionSegment=%x\n", interfaceCtx->doActionSegment);
|
||||
|
||||
ASSERT(interfaceCtx->doActionSegment != NULL, "parameter->do_actionSegment != NULL", "../z_construct.c", 169);
|
||||
|
||||
if (gSaveContext.language == LANGUAGE_ENG) {
|
||||
doActionOffset = 0;
|
||||
doActionOffset = LANGUAGE_ENG * DO_ACTION_MAX * DO_ACTION_TEX_SIZE;
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
doActionOffset = 0x2B80;
|
||||
doActionOffset = LANGUAGE_GER * DO_ACTION_MAX * DO_ACTION_TEX_SIZE;
|
||||
} else {
|
||||
doActionOffset = 0x5700;
|
||||
doActionOffset = LANGUAGE_FRA * DO_ACTION_MAX * DO_ACTION_TEX_SIZE;
|
||||
}
|
||||
|
||||
DmaMgr_SendRequest1(interfaceCtx->doActionSegment, (uintptr_t)_do_action_staticSegmentRomStart + doActionOffset,
|
||||
0x300, "../z_construct.c", 174);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->doActionSegment, (uintptr_t)_do_action_staticSegmentRomStart + doActionOffset,
|
||||
2 * DO_ACTION_TEX_SIZE, "../z_construct.c", 174);
|
||||
|
||||
if (gSaveContext.language == LANGUAGE_ENG) {
|
||||
doActionOffset = 0x480;
|
||||
doActionOffset = 3 * DO_ACTION_TEX_SIZE + LANGUAGE_ENG * DO_ACTION_MAX * DO_ACTION_TEX_SIZE;
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
doActionOffset = 0x3000;
|
||||
doActionOffset = 3 * DO_ACTION_TEX_SIZE + LANGUAGE_GER * DO_ACTION_MAX * DO_ACTION_TEX_SIZE;
|
||||
} else {
|
||||
doActionOffset = 0x5B80;
|
||||
doActionOffset = 3 * DO_ACTION_TEX_SIZE + LANGUAGE_FRA * DO_ACTION_MAX * DO_ACTION_TEX_SIZE;
|
||||
}
|
||||
|
||||
DmaMgr_SendRequest1(interfaceCtx->doActionSegment + 0x300,
|
||||
(uintptr_t)_do_action_staticSegmentRomStart + doActionOffset, 0x180, "../z_construct.c", 178);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->doActionSegment + 2 * DO_ACTION_TEX_SIZE,
|
||||
(uintptr_t)_do_action_staticSegmentRomStart + doActionOffset, DO_ACTION_TEX_SIZE,
|
||||
"../z_construct.c", 178);
|
||||
|
||||
interfaceCtx->iconItemSegment = GameState_Alloc(&play->state, 0x4000, "../z_construct.c", 190);
|
||||
interfaceCtx->iconItemSegment = GameState_Alloc(&play->state, 4 * ICON_ITEM_TEX_SIZE, "../z_construct.c", 190);
|
||||
|
||||
// "Icon Item Texture Initialization = %x"
|
||||
osSyncPrintf("アイコンアイテム テクスチャ初期=%x\n", 0x4000);
|
||||
osSyncPrintf("アイコンアイテム テクスチャ初期=%x\n", 4 * ICON_ITEM_TEX_SIZE);
|
||||
osSyncPrintf("parameter->icon_itemSegment=%x\n", interfaceCtx->iconItemSegment);
|
||||
|
||||
ASSERT(interfaceCtx->iconItemSegment != NULL, "parameter->icon_itemSegment != NULL", "../z_construct.c", 193);
|
||||
@@ -82,66 +83,74 @@ void Interface_Init(PlayState* play) {
|
||||
gSaveContext.equips.buttonItems[3]);
|
||||
|
||||
if (gSaveContext.equips.buttonItems[0] < 0xF0) {
|
||||
DmaMgr_SendRequest1(interfaceCtx->iconItemSegment,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + gSaveContext.equips.buttonItems[0] * 0x1000,
|
||||
0x1000, "../z_construct.c", 198);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart +
|
||||
gSaveContext.equips.buttonItems[0] * ICON_ITEM_TEX_SIZE,
|
||||
ICON_ITEM_TEX_SIZE, "../z_construct.c", 198);
|
||||
} else if (gSaveContext.equips.buttonItems[0] != 0xFF) {
|
||||
DmaMgr_SendRequest1(interfaceCtx->iconItemSegment,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + gSaveContext.equips.buttonItems[0] * 0x1000,
|
||||
0x1000, "../z_construct.c", 203);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart +
|
||||
gSaveContext.equips.buttonItems[0] * ICON_ITEM_TEX_SIZE,
|
||||
ICON_ITEM_TEX_SIZE, "../z_construct.c", 203);
|
||||
}
|
||||
|
||||
if (gSaveContext.equips.buttonItems[1] < 0xF0) {
|
||||
DmaMgr_SendRequest1(interfaceCtx->iconItemSegment + 0x1000,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + gSaveContext.equips.buttonItems[1] * 0x1000,
|
||||
0x1000, "../z_construct.c", 209);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + ICON_ITEM_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart +
|
||||
gSaveContext.equips.buttonItems[1] * ICON_ITEM_TEX_SIZE,
|
||||
ICON_ITEM_TEX_SIZE, "../z_construct.c", 209);
|
||||
}
|
||||
|
||||
if (gSaveContext.equips.buttonItems[2] < 0xF0) {
|
||||
DmaMgr_SendRequest1(interfaceCtx->iconItemSegment + 0x2000,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + gSaveContext.equips.buttonItems[2] * 0x1000,
|
||||
0x1000, "../z_construct.c", 214);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + 2 * ICON_ITEM_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart +
|
||||
gSaveContext.equips.buttonItems[2] * ICON_ITEM_TEX_SIZE,
|
||||
ICON_ITEM_TEX_SIZE, "../z_construct.c", 214);
|
||||
}
|
||||
|
||||
if (gSaveContext.equips.buttonItems[3] < 0xF0) {
|
||||
DmaMgr_SendRequest1(interfaceCtx->iconItemSegment + 0x3000,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + gSaveContext.equips.buttonItems[3] * 0x1000,
|
||||
0x1000, "../z_construct.c", 219);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->iconItemSegment + 3 * ICON_ITEM_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart +
|
||||
gSaveContext.equips.buttonItems[3] * ICON_ITEM_TEX_SIZE,
|
||||
ICON_ITEM_TEX_SIZE, "../z_construct.c", 219);
|
||||
}
|
||||
|
||||
osSyncPrintf("EVENT=%d\n", ((void)0, gSaveContext.timer1State));
|
||||
osSyncPrintf("EVENT=%d\n", ((void)0, gSaveContext.timerState));
|
||||
|
||||
if ((gSaveContext.timer1State == 4) || (gSaveContext.timer1State == 8) || (gSaveContext.timer2State == 4) ||
|
||||
(gSaveContext.timer2State == 10)) {
|
||||
if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) ||
|
||||
(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));
|
||||
|
||||
if ((gSaveContext.respawnFlag == -1) || (gSaveContext.respawnFlag == 1)) {
|
||||
if (gSaveContext.timer1State == 4) {
|
||||
gSaveContext.timer1State = 1;
|
||||
gSaveContext.timerX[0] = 140;
|
||||
gSaveContext.timerY[0] = 80;
|
||||
if (gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) {
|
||||
gSaveContext.timerState = TIMER_STATE_ENV_HAZARD_INIT;
|
||||
gSaveContext.timerX[TIMER_ID_MAIN] = 140;
|
||||
gSaveContext.timerY[TIMER_ID_MAIN] = 80;
|
||||
}
|
||||
}
|
||||
|
||||
if ((gSaveContext.timer1State == 4) || (gSaveContext.timer1State == 8)) {
|
||||
temp = 0;
|
||||
if ((gSaveContext.timerState == TIMER_STATE_ENV_HAZARD_TICK) ||
|
||||
(gSaveContext.timerState == TIMER_STATE_DOWN_TICK)) {
|
||||
timerId = TIMER_ID_MAIN;
|
||||
} else {
|
||||
temp = 1;
|
||||
timerId = TIMER_ID_SUB;
|
||||
}
|
||||
|
||||
gSaveContext.timerX[temp] = 26;
|
||||
gSaveContext.timerX[timerId] = 26;
|
||||
|
||||
if (gSaveContext.healthCapacity > 0xA0) {
|
||||
gSaveContext.timerY[temp] = 54;
|
||||
gSaveContext.timerY[timerId] = 54; // two rows of hearts
|
||||
} else {
|
||||
gSaveContext.timerY[temp] = 46;
|
||||
gSaveContext.timerY[timerId] = 46; // one row of hearts
|
||||
}
|
||||
}
|
||||
|
||||
if ((gSaveContext.timer1State >= 11) && (gSaveContext.timer1State < 16)) {
|
||||
gSaveContext.timer1State = 0;
|
||||
if ((gSaveContext.timerState >= TIMER_STATE_UP_INIT) && (gSaveContext.timerState <= TIMER_STATE_UP_FREEZE)) {
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
// "Timer Stop!!!!!!!!!!!!!!!!!!!!!!"
|
||||
osSyncPrintf("タイマー停止!!!!!!!!!!!!!!!!!!!!! = %d\n", gSaveContext.timer1State);
|
||||
osSyncPrintf("タイマー停止!!!!!!!!!!!!!!!!!!!!! = %d\n", gSaveContext.timerState);
|
||||
}
|
||||
|
||||
osSyncPrintf("PARAMETER領域=%x\n", parameterSize + 0x5300); // "Parameter Area = %x"
|
||||
@@ -179,7 +188,11 @@ void Message_Init(PlayState* play) {
|
||||
|
||||
View_Init(&msgCtx->view, play->state.gfxCtx);
|
||||
|
||||
msgCtx->textboxSegment = GameState_Alloc(&play->state, 0x2200, "../z_construct.c", 349);
|
||||
msgCtx->textboxSegment =
|
||||
GameState_Alloc(&play->state,
|
||||
MESSAGE_STATIC_TEX_SIZE +
|
||||
MAX(MAX(ICON_ITEM_TEX_SIZE, ICON_ITEM_24_TEX_SIZE), 2 * MESSAGE_TEXTURE_STATIC_TEX_SIZE),
|
||||
"../z_construct.c", 349);
|
||||
|
||||
osSyncPrintf("message->fukidashiSegment=%x\n", msgCtx->textboxSegment);
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ u32 QuestHint_CheckCondition(QuestHintCmd* hintCmd) {
|
||||
|
||||
case (QUEST_HINT_CONDITION_DUNGEON_ITEM << 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):
|
||||
return ((hintCmd->byte0 & 1) == 1) == (hintCmd->byte3 == INV_CONTENT(hintCmd->byte1));
|
||||
|
||||
+18
-18
@@ -314,31 +314,31 @@ void EnItem00_Init(Actor* thisx, PlayState* play) {
|
||||
Item_Give(play, ITEM_BOW);
|
||||
break;
|
||||
case ITEM00_ARROWS_SMALL:
|
||||
Item_Give(play, ITEM_ARROWS_SMALL);
|
||||
Item_Give(play, ITEM_ARROWS_5);
|
||||
break;
|
||||
case ITEM00_ARROWS_MEDIUM:
|
||||
Item_Give(play, ITEM_ARROWS_MEDIUM);
|
||||
Item_Give(play, ITEM_ARROWS_10);
|
||||
break;
|
||||
case ITEM00_ARROWS_LARGE:
|
||||
Item_Give(play, ITEM_ARROWS_LARGE);
|
||||
Item_Give(play, ITEM_ARROWS_30);
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
getItemId = GI_MAGIC_SMALL;
|
||||
getItemId = GI_MAGIC_JAR_SMALL;
|
||||
break;
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
getItemId = GI_MAGIC_LARGE;
|
||||
getItemId = GI_MAGIC_JAR_LARGE;
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
Item_Give(play, ITEM_KEY_SMALL);
|
||||
Item_Give(play, ITEM_SMALL_KEY);
|
||||
break;
|
||||
case ITEM00_SEEDS:
|
||||
getItemId = GI_SEEDS_5;
|
||||
getItemId = GI_DEKU_SEEDS_5;
|
||||
break;
|
||||
case ITEM00_NUTS:
|
||||
getItemId = GI_NUTS_5;
|
||||
getItemId = GI_DEKU_NUTS_5;
|
||||
break;
|
||||
case ITEM00_STICK:
|
||||
getItemId = GI_STICKS_1;
|
||||
getItemId = GI_DEKU_STICKS_1;
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
@@ -632,10 +632,10 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
|
||||
Item_Give(play, ITEM_RUPEE_GOLD);
|
||||
break;
|
||||
case ITEM00_STICK:
|
||||
getItemId = GI_STICKS_1;
|
||||
getItemId = GI_DEKU_STICKS_1;
|
||||
break;
|
||||
case ITEM00_NUTS:
|
||||
getItemId = GI_NUTS_5;
|
||||
getItemId = GI_DEKU_NUTS_5;
|
||||
break;
|
||||
case ITEM00_RECOVERY_HEART:
|
||||
Item_Give(play, ITEM_RECOVERY_HEART);
|
||||
@@ -651,19 +651,19 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
|
||||
Item_Give(play, ITEM_BOW);
|
||||
break;
|
||||
case ITEM00_ARROWS_SMALL:
|
||||
Item_Give(play, ITEM_ARROWS_SMALL);
|
||||
Item_Give(play, ITEM_ARROWS_5);
|
||||
break;
|
||||
case ITEM00_ARROWS_MEDIUM:
|
||||
Item_Give(play, ITEM_ARROWS_MEDIUM);
|
||||
Item_Give(play, ITEM_ARROWS_10);
|
||||
break;
|
||||
case ITEM00_ARROWS_LARGE:
|
||||
Item_Give(play, ITEM_ARROWS_LARGE);
|
||||
Item_Give(play, ITEM_ARROWS_30);
|
||||
break;
|
||||
case ITEM00_SEEDS:
|
||||
getItemId = GI_SEEDS_5;
|
||||
getItemId = GI_DEKU_SEEDS_5;
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
getItemId = GI_KEY_SMALL;
|
||||
getItemId = GI_SMALL_KEY;
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
getItemId = GI_HEART_PIECE;
|
||||
@@ -672,10 +672,10 @@ void EnItem00_Update(Actor* thisx, PlayState* play) {
|
||||
getItemId = GI_HEART_CONTAINER;
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
getItemId = GI_MAGIC_LARGE;
|
||||
getItemId = GI_MAGIC_JAR_LARGE;
|
||||
break;
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
getItemId = GI_MAGIC_SMALL;
|
||||
getItemId = GI_MAGIC_JAR_SMALL;
|
||||
break;
|
||||
case ITEM00_SHIELD_DEKU:
|
||||
getItemId = GI_SHIELD_DEKU;
|
||||
|
||||
@@ -28,9 +28,9 @@ void GameOver_Update(PlayState* play) {
|
||||
case GAMEOVER_DEATH_START:
|
||||
Message_CloseTextbox(play);
|
||||
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timer2State = 0;
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
|
||||
// search inventory for spoiling items and revert if necessary
|
||||
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
|
||||
if (gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI &&
|
||||
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER &&
|
||||
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BGS &&
|
||||
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KNIFE) {
|
||||
gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON &&
|
||||
gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE) {
|
||||
|
||||
if (gSaveContext.buttonStatus[0] != BTN_ENABLED) {
|
||||
gSaveContext.equips.buttonItems[0] = gSaveContext.buttonStatus[0];
|
||||
|
||||
+14
-13
@@ -9,9 +9,9 @@ void func_8006EE50(Font* font, u16 arg1, u16 arg2) {
|
||||
* at `codePointIndex`. The value of `character` is the ASCII codepoint subtract ' '/0x20.
|
||||
*/
|
||||
void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) {
|
||||
DmaMgr_SendRequest1(&font->charTexBuf[codePointIndex],
|
||||
(u32)&_nes_font_staticSegmentRomStart[character * FONT_CHAR_TEX_SIZE], FONT_CHAR_TEX_SIZE,
|
||||
"../z_kanfont.c", 93);
|
||||
DmaMgr_RequestSyncDebug(&font->charTexBuf[codePointIndex],
|
||||
(uintptr_t)_nes_font_staticSegmentRomStart + character * FONT_CHAR_TEX_SIZE,
|
||||
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 93);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -20,9 +20,10 @@ void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) {
|
||||
* The different icons are given in the MessageBoxIcon enum.
|
||||
*/
|
||||
void Font_LoadMessageBoxIcon(Font* font, u16 icon) {
|
||||
DmaMgr_SendRequest1(font->iconBuf,
|
||||
(u32)&_message_staticSegmentRomStart[4 * MESSAGE_STATIC_TEX_SIZE + icon * FONT_CHAR_TEX_SIZE],
|
||||
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 100);
|
||||
DmaMgr_RequestSyncDebug(font->iconBuf,
|
||||
(uintptr_t)_message_staticSegmentRomStart + 4 * MESSAGE_STATIC_TEX_SIZE +
|
||||
icon * FONT_CHAR_TEX_SIZE,
|
||||
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 100);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -31,18 +32,18 @@ void Font_LoadMessageBoxIcon(Font* font, u16 icon) {
|
||||
*/
|
||||
void Font_LoadOrderedFont(Font* font) {
|
||||
u8* fontBuf;
|
||||
u32 fontStatic;
|
||||
uintptr_t fontStatic;
|
||||
s32 len;
|
||||
s32 jj;
|
||||
s32 codePointIndex;
|
||||
s32 fontBufIndex;
|
||||
u32 offset;
|
||||
size_t offset;
|
||||
|
||||
font->msgOffset = _message_0xFFFC_nes - (const char*)_nes_message_data_staticSegmentStart;
|
||||
len = font->msgLength = _message_0xFFFD_nes - _message_0xFFFC_nes;
|
||||
|
||||
DmaMgr_SendRequest1(font->msgBuf, (u32)&_nes_message_data_staticSegmentRomStart[font->msgOffset], len,
|
||||
"../z_kanfont.c", 122);
|
||||
DmaMgr_RequestSyncDebug(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, len,
|
||||
"../z_kanfont.c", 122);
|
||||
osSyncPrintf("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, jj = len);
|
||||
|
||||
len = jj;
|
||||
@@ -54,12 +55,12 @@ void Font_LoadOrderedFont(Font* font) {
|
||||
|
||||
if (font->msgBuf[codePointIndex] != MESSAGE_NEWLINE) {
|
||||
fontBuf = font->fontBuf + fontBufIndex * 8;
|
||||
fontStatic = (u32)_nes_font_staticSegmentRomStart;
|
||||
fontStatic = (uintptr_t)_nes_font_staticSegmentRomStart;
|
||||
|
||||
osSyncPrintf("nes_mes_buf[%d]=%d\n", codePointIndex, font->msgBuf[codePointIndex]);
|
||||
|
||||
offset = (font->msgBuf[codePointIndex] - '\x20') * FONT_CHAR_TEX_SIZE;
|
||||
DmaMgr_SendRequest1(fontBuf, fontStatic + offset, FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 134);
|
||||
offset = (font->msgBuf[codePointIndex] - ' ') * FONT_CHAR_TEX_SIZE;
|
||||
DmaMgr_RequestSyncDebug(fontBuf, fontStatic + offset, FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 134);
|
||||
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -708,7 +708,7 @@ void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxCon
|
||||
size = gNormalSkyFiles[newSkybox1Index].file.vromEnd - gNormalSkyFiles[newSkybox1Index].file.vromStart;
|
||||
|
||||
osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&envCtx->dmaRequest, skyboxCtx->staticSegments[0],
|
||||
DmaMgr_RequestAsync(&envCtx->dmaRequest, skyboxCtx->staticSegments[0],
|
||||
gNormalSkyFiles[newSkybox1Index].file.vromStart, size, 0, &envCtx->loadQueue, NULL,
|
||||
"../z_kankyo.c", 1264);
|
||||
envCtx->skybox1Index = newSkybox1Index;
|
||||
@@ -719,7 +719,7 @@ void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxCon
|
||||
size = gNormalSkyFiles[newSkybox2Index].file.vromEnd - gNormalSkyFiles[newSkybox2Index].file.vromStart;
|
||||
|
||||
osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&envCtx->dmaRequest, skyboxCtx->staticSegments[1],
|
||||
DmaMgr_RequestAsync(&envCtx->dmaRequest, skyboxCtx->staticSegments[1],
|
||||
gNormalSkyFiles[newSkybox2Index].file.vromStart, size, 0, &envCtx->loadQueue, NULL,
|
||||
"../z_kankyo.c", 1281);
|
||||
envCtx->skybox2Index = newSkybox2Index;
|
||||
@@ -733,14 +733,14 @@ void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxCon
|
||||
gNormalSkyFiles[newSkybox1Index].palette.vromStart;
|
||||
|
||||
osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&envCtx->dmaRequest, skyboxCtx->palettes,
|
||||
DmaMgr_RequestAsync(&envCtx->dmaRequest, skyboxCtx->palettes,
|
||||
gNormalSkyFiles[newSkybox1Index].palette.vromStart, size, 0, &envCtx->loadQueue,
|
||||
NULL, "../z_kankyo.c", 1307);
|
||||
} else {
|
||||
size = gNormalSkyFiles[newSkybox1Index].palette.vromEnd -
|
||||
gNormalSkyFiles[newSkybox1Index].palette.vromStart;
|
||||
osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&envCtx->dmaRequest, (u8*)skyboxCtx->palettes + size,
|
||||
DmaMgr_RequestAsync(&envCtx->dmaRequest, (u8*)skyboxCtx->palettes + size,
|
||||
gNormalSkyFiles[newSkybox1Index].palette.vromStart, size, 0, &envCtx->loadQueue,
|
||||
NULL, "../z_kankyo.c", 1320);
|
||||
}
|
||||
@@ -754,14 +754,14 @@ void Environment_UpdateSkybox(u8 skyboxId, EnvironmentContext* envCtx, SkyboxCon
|
||||
gNormalSkyFiles[newSkybox2Index].palette.vromStart;
|
||||
|
||||
osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&envCtx->dmaRequest, skyboxCtx->palettes,
|
||||
DmaMgr_RequestAsync(&envCtx->dmaRequest, skyboxCtx->palettes,
|
||||
gNormalSkyFiles[newSkybox2Index].palette.vromStart, size, 0, &envCtx->loadQueue,
|
||||
NULL, "../z_kankyo.c", 1342);
|
||||
} else {
|
||||
size = gNormalSkyFiles[newSkybox2Index].palette.vromEnd -
|
||||
gNormalSkyFiles[newSkybox2Index].palette.vromStart;
|
||||
osCreateMesgQueue(&envCtx->loadQueue, &envCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&envCtx->dmaRequest, (u8*)skyboxCtx->palettes + size,
|
||||
DmaMgr_RequestAsync(&envCtx->dmaRequest, (u8*)skyboxCtx->palettes + size,
|
||||
gNormalSkyFiles[newSkybox2Index].palette.vromStart, size, 0, &envCtx->loadQueue,
|
||||
NULL, "../z_kankyo.c", 1355);
|
||||
}
|
||||
|
||||
+15
-13
@@ -130,10 +130,10 @@ void Map_InitData(PlayState* play, s16 room) {
|
||||
osSyncPrintf("KKK=%d\n", extendedMapIndex);
|
||||
osSyncPrintf(VT_RST);
|
||||
sEntranceIconMapIndex = extendedMapIndex;
|
||||
DmaMgr_SendRequest1(interfaceCtx->mapSegment,
|
||||
(uintptr_t)_map_grand_staticSegmentRomStart +
|
||||
gMapData->owMinimapTexOffset[extendedMapIndex],
|
||||
gMapData->owMinimapTexSize[mapIndex], "../z_map_exp.c", 309);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->mapSegment,
|
||||
(uintptr_t)_map_grand_staticSegmentRomStart +
|
||||
gMapData->owMinimapTexOffset[extendedMapIndex],
|
||||
gMapData->owMinimapTexSize[mapIndex], "../z_map_exp.c", 309);
|
||||
interfaceCtx->unk_258 = mapIndex;
|
||||
break;
|
||||
case SCENE_YDAN:
|
||||
@@ -159,10 +159,10 @@ void Map_InitData(PlayState* play, s16 room) {
|
||||
osSyncPrintf("デクの樹ダンジョンMAP テクスチャDMA(%x) scene_id_offset=%d VREG(30)=%d\n", room,
|
||||
mapIndex, VREG(30));
|
||||
osSyncPrintf(VT_RST);
|
||||
DmaMgr_SendRequest1(play->interfaceCtx.mapSegment,
|
||||
(uintptr_t)_map_i_staticSegmentRomStart +
|
||||
((gMapData->dgnMinimapTexIndexOffset[mapIndex] + room) * 0xFF0),
|
||||
0xFF0, "../z_map_exp.c", 346);
|
||||
DmaMgr_RequestSyncDebug(play->interfaceCtx.mapSegment,
|
||||
(uintptr_t)_map_i_staticSegmentRomStart +
|
||||
((gMapData->dgnMinimapTexIndexOffset[mapIndex] + room) * MAP_I_TEX_SIZE),
|
||||
MAP_I_TEX_SIZE, "../z_map_exp.c", 346);
|
||||
R_COMPASS_OFFSET_X = gMapData->roomCompassOffsetX[mapIndex][room];
|
||||
R_COMPASS_OFFSET_Y = gMapData->roomCompassOffsetY[mapIndex][room];
|
||||
Map_SetFloorPalettesData(play, VREG(30));
|
||||
@@ -385,13 +385,15 @@ void Minimap_Draw(PlayState* play) {
|
||||
if (CHECK_DUNGEON_ITEM(DUNGEON_MAP, mapIndex)) {
|
||||
gDPSetPrimColor(OVERLAY_DISP++, 0, 0, 100, 255, 255, interfaceCtx->minimapAlpha);
|
||||
|
||||
gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->mapSegment, G_IM_FMT_I, 96, 85, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->mapSegment, G_IM_FMT_I, MAP_I_TEX_WIDTH,
|
||||
MAP_I_TEX_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_NOLOD);
|
||||
|
||||
gSPTextureRectangle(OVERLAY_DISP++, R_DGN_MINIMAP_X << 2, R_DGN_MINIMAP_Y << 2,
|
||||
(R_DGN_MINIMAP_X + 96) << 2, (R_DGN_MINIMAP_Y + 85) << 2, G_TX_RENDERTILE,
|
||||
0, 0, 1 << 10, 1 << 10);
|
||||
(R_DGN_MINIMAP_X + MAP_I_TEX_WIDTH) << 2,
|
||||
(R_DGN_MINIMAP_Y + MAP_I_TEX_HEIGHT) << 2, G_TX_RENDERTILE, 0, 0, 1 << 10,
|
||||
1 << 10);
|
||||
}
|
||||
|
||||
if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, mapIndex)) {
|
||||
|
||||
+29
-28
@@ -1166,18 +1166,19 @@ void Message_LoadItemIcon(PlayState* play, u16 itemId, s16 y) {
|
||||
R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem32XOffsets[gSaveContext.language];
|
||||
R_TEXTBOX_ICON_YPOS = y + 6;
|
||||
R_TEXTBOX_ICON_SIZE = 32;
|
||||
DmaMgr_SendRequest1(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + (itemId * 0x1000), 0x1000,
|
||||
"../z_message_PAL.c", 1473);
|
||||
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_staticSegmentRomStart + (itemId * ICON_ITEM_TEX_SIZE),
|
||||
ICON_ITEM_TEX_SIZE, "../z_message_PAL.c", 1473);
|
||||
// "Item 32-0"
|
||||
osSyncPrintf("アイテム32-0\n");
|
||||
} else {
|
||||
R_TEXTBOX_ICON_XPOS = R_TEXT_INIT_XPOS - sIconItem24XOffsets[gSaveContext.language];
|
||||
R_TEXTBOX_ICON_YPOS = y + 10;
|
||||
R_TEXTBOX_ICON_SIZE = 24;
|
||||
DmaMgr_SendRequest1(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_24_staticSegmentRomStart + (itemId - ITEM_MEDALLION_FOREST) * 0x900,
|
||||
0x900, "../z_message_PAL.c", 1482);
|
||||
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_icon_item_24_staticSegmentRomStart +
|
||||
(itemId - ITEM_MEDALLION_FOREST) * ICON_ITEM_24_TEX_SIZE,
|
||||
ICON_ITEM_24_TEX_SIZE, "../z_message_PAL.c", 1482);
|
||||
// "Item 24"
|
||||
osSyncPrintf("アイテム24=%d (%d) {%d}\n", itemId, itemId - ITEM_KOKIRI_EMERALD, 84);
|
||||
}
|
||||
@@ -1283,9 +1284,9 @@ void Message_Decode(PlayState* play) {
|
||||
osSyncPrintf("\nEVENTタイマー = ");
|
||||
digits[0] = digits[1] = digits[2] = 0;
|
||||
if (curChar == MESSAGE_RACE_TIME) {
|
||||
digits[3] = gSaveContext.timer1Value;
|
||||
digits[3] = gSaveContext.timerSeconds;
|
||||
} else {
|
||||
digits[3] = gSaveContext.timer2Value;
|
||||
digits[3] = gSaveContext.subTimerSeconds;
|
||||
}
|
||||
|
||||
while (digits[3] >= 60) {
|
||||
@@ -1534,14 +1535,14 @@ void Message_Decode(PlayState* play) {
|
||||
msgCtx->textboxBackgroundBackColorIdx = font->msgBuf[msgCtx->msgBufPos + 2] & 0xF;
|
||||
msgCtx->textboxBackgroundYOffsetIdx = (font->msgBuf[msgCtx->msgBufPos + 3] & 0xF0) >> 4;
|
||||
msgCtx->textboxBackgroundUnkArg = font->msgBuf[msgCtx->msgBufPos + 3] & 0xF;
|
||||
DmaMgr_SendRequest1(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_message_texture_staticSegmentRomStart +
|
||||
msgCtx->textboxBackgroundIdx * 0x900,
|
||||
0x900, "../z_message_PAL.c", 1830);
|
||||
DmaMgr_SendRequest1(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + 0x900,
|
||||
(uintptr_t)_message_texture_staticSegmentRomStart +
|
||||
(msgCtx->textboxBackgroundIdx + 1) * 0x900,
|
||||
0x900, "../z_message_PAL.c", 1834);
|
||||
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_message_texture_staticSegmentRomStart +
|
||||
msgCtx->textboxBackgroundIdx * MESSAGE_TEXTURE_STATIC_TEX_SIZE,
|
||||
MESSAGE_TEXTURE_STATIC_TEX_SIZE, "../z_message_PAL.c", 1830);
|
||||
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment + MESSAGE_STATIC_TEX_SIZE + MESSAGE_TEXTURE_STATIC_TEX_SIZE,
|
||||
(uintptr_t)_message_texture_staticSegmentRomStart +
|
||||
(msgCtx->textboxBackgroundIdx + 1) * MESSAGE_TEXTURE_STATIC_TEX_SIZE,
|
||||
MESSAGE_TEXTURE_STATIC_TEX_SIZE, "../z_message_PAL.c", 1834);
|
||||
msgCtx->msgBufPos += 3;
|
||||
R_TEXTBOX_BG_YPOS = R_TEXTBOX_Y + 8;
|
||||
numLines = 2;
|
||||
@@ -1636,24 +1637,24 @@ void Message_OpenText(PlayState* play, u16 textId) {
|
||||
if (sTextIsCredits) {
|
||||
Message_FindCreditsMessage(play, textId);
|
||||
msgCtx->msgLength = font->msgLength;
|
||||
DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)_staff_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1954);
|
||||
DmaMgr_RequestSyncDebug(font->msgBuf, (uintptr_t)_staff_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1954);
|
||||
} else {
|
||||
if (gSaveContext.language == LANGUAGE_ENG) {
|
||||
Message_FindMessage(play, textId);
|
||||
msgCtx->msgLength = font->msgLength;
|
||||
DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1966);
|
||||
DmaMgr_RequestSyncDebug(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1966);
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
Message_FindMessage(play, textId);
|
||||
msgCtx->msgLength = font->msgLength;
|
||||
DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)_ger_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1978);
|
||||
DmaMgr_RequestSyncDebug(font->msgBuf, (uintptr_t)_ger_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1978);
|
||||
} else {
|
||||
Message_FindMessage(play, textId);
|
||||
msgCtx->msgLength = font->msgLength;
|
||||
DmaMgr_SendRequest1(font->msgBuf, (uintptr_t)_fra_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1990);
|
||||
DmaMgr_RequestSyncDebug(font->msgBuf, (uintptr_t)_fra_message_data_staticSegmentRomStart + font->msgOffset,
|
||||
font->msgLength, "../z_message_PAL.c", 1990);
|
||||
}
|
||||
}
|
||||
msgCtx->textBoxProperties = font->charTexBuf[0];
|
||||
@@ -1663,10 +1664,10 @@ void Message_OpenText(PlayState* play, u16 textId) {
|
||||
// "Text Box Type"
|
||||
osSyncPrintf("吹き出し種類=%d\n", msgCtx->textBoxType);
|
||||
if (textBoxType < TEXTBOX_TYPE_NONE_BOTTOM) {
|
||||
DmaMgr_SendRequest1(msgCtx->textboxSegment,
|
||||
(uintptr_t)_message_staticSegmentRomStart +
|
||||
(messageStaticIndices[textBoxType] * MESSAGE_STATIC_TEX_SIZE),
|
||||
MESSAGE_STATIC_TEX_SIZE, "../z_message_PAL.c", 2006);
|
||||
DmaMgr_RequestSyncDebug(msgCtx->textboxSegment,
|
||||
(uintptr_t)_message_staticSegmentRomStart +
|
||||
(messageStaticIndices[textBoxType] * MESSAGE_STATIC_TEX_SIZE),
|
||||
MESSAGE_STATIC_TEX_SIZE, "../z_message_PAL.c", 2006);
|
||||
if (textBoxType == TEXTBOX_TYPE_BLACK) {
|
||||
msgCtx->textboxColorRed = 0;
|
||||
msgCtx->textboxColorGreen = 0;
|
||||
|
||||
+493
-449
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1388,7 +1388,7 @@ void* Play_LoadFile(PlayState* this, RomFile* file) {
|
||||
|
||||
size = file->vromEnd - file->vromStart;
|
||||
allocp = GameState_Alloc(&this->state, size, "../z_play.c", 4692);
|
||||
DmaMgr_SendRequest1(allocp, file->vromStart, size, "../z_play.c", 4694);
|
||||
DmaMgr_RequestSyncDebug(allocp, file->vromStart, size, "../z_play.c", 4694);
|
||||
|
||||
return allocp;
|
||||
}
|
||||
|
||||
+45
-43
@@ -3,11 +3,6 @@
|
||||
#include "assets/objects/object_link_boy/object_link_boy.h"
|
||||
#include "assets/objects/object_link_child/object_link_child.h"
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 flag;
|
||||
/* 0x02 */ u16 textId;
|
||||
} TextTriggerEntry; // size = 0x04
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ Gfx* dList;
|
||||
/* 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_KOKIRI
|
||||
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_BOW_SLINGSHOT, // PLAYER_IA_BOW
|
||||
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_NAYRUS_LOVE
|
||||
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_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_FISH
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_FIRE
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_BUG
|
||||
PLAYER_MODELGROUP_BOTTLE, // PLAYER_IA_BOTTLE_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_BLUE
|
||||
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_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_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_CUCCO
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_COJIRO
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ODD_MUSHROOM
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_ODD_POTION
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_SAW
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_SWORD_BROKEN
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_POACHERS_SAW
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_BROKEN_GORONS_SWORD
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_PRESCRIPTION
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_FROG
|
||||
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_SKULL
|
||||
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_ZORA
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_GERUDO
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_MASK_TRUTH
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LENS
|
||||
PLAYER_MODELGROUP_DEFAULT, // PLAYER_IA_LENS_OF_TRUTH
|
||||
};
|
||||
|
||||
TextTriggerEntry sTextTriggers[] = {
|
||||
{ 1, 0x3040 },
|
||||
{ 2, 0x401D },
|
||||
{ 0, 0x0000 },
|
||||
{ 2, 0x401D },
|
||||
typedef struct {
|
||||
/* 0x0 */ u8 flag;
|
||||
/* 0x2 */ u16 textId;
|
||||
} EnvHazardTextTriggerEntry; // size = 0x4
|
||||
|
||||
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]
|
||||
@@ -590,7 +590,7 @@ void Player_SetEquipmentData(PlayState* play, Player* this) {
|
||||
void Player_UpdateBottleHeld(PlayState* play, Player* this, s32 item, s32 itemAction) {
|
||||
Inventory_UpdateBottleItem(play, item, this->heldItemButton);
|
||||
|
||||
if (item != ITEM_BOTTLE) {
|
||||
if (item != ITEM_BOTTLE_EMPTY) {
|
||||
this->heldItemId = item;
|
||||
this->heldItemAction = itemAction;
|
||||
}
|
||||
@@ -644,7 +644,7 @@ s32 Player_IsBurningStickInRange(PlayState* play, Vec3f* pos, f32 xzRange, f32 y
|
||||
Vec3f diff;
|
||||
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);
|
||||
return ((SQ(diff.x) + SQ(diff.z)) <= SQ(xzRange)) && (0.0f <= diff.y) && (diff.y <= yRange);
|
||||
} else {
|
||||
@@ -778,35 +778,37 @@ return_neg:
|
||||
return -1;
|
||||
}
|
||||
|
||||
s32 func_8008F2F8(PlayState* play) {
|
||||
s32 Player_GetEnvironmentalHazard(PlayState* play) {
|
||||
Player* this = GET_PLAYER(play);
|
||||
TextTriggerEntry* triggerEntry;
|
||||
s32 var;
|
||||
EnvHazardTextTriggerEntry* triggerEntry;
|
||||
s32 envHazard;
|
||||
|
||||
if (play->roomCtx.curRoom.behaviorType2 == ROOM_BEHAVIOR_TYPE2_3) { // Room is hot
|
||||
var = 0;
|
||||
} else if ((this->unk_840 > 80) &&
|
||||
((this->currentBoots == PLAYER_BOOTS_IRON) || (this->unk_840 >= 300))) { // Deep underwater
|
||||
var = ((this->currentBoots == PLAYER_BOOTS_IRON) && (this->actor.bgCheckFlags & BGCHECKFLAG_GROUND)) ? 1 : 3;
|
||||
envHazard = PLAYER_ENV_HAZARD_HOTROOM - 1;
|
||||
} else if ((this->underwaterTimer > 80) &&
|
||||
((this->currentBoots == PLAYER_BOOTS_IRON) || (this->underwaterTimer >= 300))) {
|
||||
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
|
||||
var = 2;
|
||||
envHazard = PLAYER_ENV_HAZARD_SWIMMING - 1;
|
||||
} else {
|
||||
return 0;
|
||||
return PLAYER_ENV_HAZARD_NONE;
|
||||
}
|
||||
|
||||
// Trigger general textboxes under certain conditions, like "It's so hot in here!"
|
||||
triggerEntry = &sTextTriggers[var];
|
||||
triggerEntry = &sEnvHazardTextTriggers[envHazard];
|
||||
if (!Player_InCsMode(play)) {
|
||||
if ((triggerEntry->flag != 0) && !(gSaveContext.textTriggerFlags & triggerEntry->flag) &&
|
||||
(((var == 0) && (this->currentTunic != PLAYER_TUNIC_GORON)) ||
|
||||
(((var == 1) || (var == 3)) && (this->currentBoots == PLAYER_BOOTS_IRON) &&
|
||||
(this->currentTunic != PLAYER_TUNIC_ZORA)))) {
|
||||
if ((triggerEntry->flag != 0) && !(gSaveContext.envHazardTextTriggerFlags & triggerEntry->flag) &&
|
||||
(((envHazard == (PLAYER_ENV_HAZARD_HOTROOM - 1)) && (this->currentTunic != PLAYER_TUNIC_GORON)) ||
|
||||
(((envHazard == (PLAYER_ENV_HAZARD_UNDERWATER_FLOOR - 1)) ||
|
||||
(envHazard == (PLAYER_ENV_HAZARD_UNDERWATER_FREE - 1))) &&
|
||||
(this->currentBoots == PLAYER_BOOTS_IRON) && (this->currentTunic != PLAYER_TUNIC_ZORA)))) {
|
||||
Message_StartTextbox(play, triggerEntry->textId, NULL);
|
||||
gSaveContext.textTriggerFlags |= triggerEntry->flag;
|
||||
gSaveContext.envHazardTextTriggerFlags |= triggerEntry->flag;
|
||||
}
|
||||
}
|
||||
|
||||
return var + 1;
|
||||
return envHazard + 1;
|
||||
}
|
||||
|
||||
u8 sEyeMouthIndices[][2] = {
|
||||
@@ -1450,7 +1452,7 @@ void Player_PostLimbDrawGameplay(PlayState* play, s32 limbIndex, Gfx** dList, Ve
|
||||
|
||||
Math_Vec3f_Copy(&this->leftHandPos, sCurBodyPartPos);
|
||||
|
||||
if (this->itemAction == PLAYER_IA_STICK) {
|
||||
if (this->itemAction == PLAYER_IA_DEKU_STICK) {
|
||||
Vec3f sp124[3];
|
||||
|
||||
OPEN_DISPS(play->state.gfxCtx, "../z_player_lib.c", 2633);
|
||||
@@ -1642,11 +1644,11 @@ u32 func_80091738(PlayState* play, u8* segment, SkelAnime* skelAnime) {
|
||||
|
||||
size = gObjectTable[OBJECT_GAMEPLAY_KEEP].vromEnd - gObjectTable[OBJECT_GAMEPLAY_KEEP].vromStart;
|
||||
ptr = segment + PAUSE_EQUIP_BUFFER_SIZE;
|
||||
DmaMgr_SendRequest1(ptr, gObjectTable[OBJECT_GAMEPLAY_KEEP].vromStart, size, "../z_player_lib.c", 2982);
|
||||
DmaMgr_RequestSyncDebug(ptr, gObjectTable[OBJECT_GAMEPLAY_KEEP].vromStart, size, "../z_player_lib.c", 2982);
|
||||
|
||||
size = gObjectTable[linkObjectId].vromEnd - gObjectTable[linkObjectId].vromStart;
|
||||
ptr = segment + PAUSE_EQUIP_BUFFER_SIZE + PAUSE_PLAYER_SEGMENT_GAMEPLAY_KEEP_BUFFER_SIZE;
|
||||
DmaMgr_SendRequest1(ptr, gObjectTable[linkObjectId].vromStart, size, "../z_player_lib.c", 2988);
|
||||
DmaMgr_RequestSyncDebug(ptr, gObjectTable[linkObjectId].vromStart, size, "../z_player_lib.c", 2988);
|
||||
|
||||
ptr = (void*)ALIGN16((u32)ptr + size);
|
||||
|
||||
|
||||
+1
-1
@@ -603,7 +603,7 @@ s32 func_8009728C(PlayState* play, RoomContext* roomCtx, s32 roomNum) {
|
||||
roomCtx->unk_34 = (void*)ALIGN16((u32)roomCtx->bufPtrs[roomCtx->unk_30] - ((size + 8) * roomCtx->unk_30 + 7));
|
||||
|
||||
osCreateMesgQueue(&roomCtx->loadQueue, &roomCtx->loadMsg, 1);
|
||||
DmaMgr_SendRequest2(&roomCtx->dmaRequest, roomCtx->unk_34, play->roomList[roomNum].vromStart, size, 0,
|
||||
DmaMgr_RequestAsync(&roomCtx->dmaRequest, roomCtx->unk_34, play->roomList[roomNum].vromStart, size, 0,
|
||||
&roomCtx->loadQueue, NULL, "../z_room.c", 1036);
|
||||
roomCtx->unk_30 ^= 1;
|
||||
|
||||
|
||||
+1
-1
@@ -80,7 +80,7 @@ void Sample_LoadTitleStatic(SampleState* this) {
|
||||
u32 size = _title_staticSegmentRomEnd - _title_staticSegmentRomStart;
|
||||
|
||||
this->staticSegment = GameState_Alloc(&this->state, size, "../z_sample.c", 163);
|
||||
DmaMgr_SendRequest1(this->staticSegment, (uintptr_t)_title_staticSegmentRomStart, size, "../z_sample.c", 164);
|
||||
DmaMgr_RequestSyncDebug(this->staticSegment, (uintptr_t)_title_staticSegmentRomStart, size, "../z_sample.c", 164);
|
||||
}
|
||||
|
||||
void Sample_Init(GameState* thisx) {
|
||||
|
||||
+4
-4
@@ -19,8 +19,8 @@ s32 Object_Spawn(ObjectContext* objectCtx, s16 objectId) {
|
||||
"this->num < OBJECT_EXCHANGE_BANK_MAX && (this->status[this->num].Segment + size) < this->endSegment",
|
||||
"../z_scene.c", 142);
|
||||
|
||||
DmaMgr_SendRequest1(objectCtx->status[objectCtx->num].segment, gObjectTable[objectId].vromStart, size,
|
||||
"../z_scene.c", 145);
|
||||
DmaMgr_RequestSyncDebug(objectCtx->status[objectCtx->num].segment, gObjectTable[objectId].vromStart, size,
|
||||
"../z_scene.c", 145);
|
||||
|
||||
if (objectCtx->num < OBJECT_EXCHANGE_BANK_MAX - 1) {
|
||||
objectCtx->status[objectCtx->num + 1].segment =
|
||||
@@ -89,7 +89,7 @@ void Object_UpdateBank(ObjectContext* objectCtx) {
|
||||
objectFile = &gObjectTable[-status->id];
|
||||
size = objectFile->vromEnd - objectFile->vromStart;
|
||||
osSyncPrintf("OBJECT EXCHANGE BANK-%2d SIZE %8.3fK SEG=%08x\n", i, size / 1024.0f, status->segment);
|
||||
DmaMgr_SendRequest2(&status->dmaRequest, status->segment, objectFile->vromStart, size, 0,
|
||||
DmaMgr_RequestAsync(&status->dmaRequest, status->segment, objectFile->vromStart, size, 0,
|
||||
&status->loadQueue, NULL, "../z_scene.c", 266);
|
||||
} else if (osRecvMesg(&status->loadQueue, NULL, OS_MESG_NOBLOCK) == 0) {
|
||||
status->id = -status->id;
|
||||
@@ -131,7 +131,7 @@ void func_800981B8(ObjectContext* objectCtx) {
|
||||
objectCtx->status[i].segment);
|
||||
osSyncPrintf("num=%d adrs=%x end=%x\n", objectCtx->num, (s32)objectCtx->status[i].segment + size,
|
||||
objectCtx->spaceEnd);
|
||||
DmaMgr_SendRequest1(objectCtx->status[i].segment, gObjectTable[id].vromStart, size, "../z_scene.c", 342);
|
||||
DmaMgr_RequestSyncDebug(objectCtx->status[i].segment, gObjectTable[id].vromStart, size, "../z_scene.c", 342);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -841,7 +841,7 @@ void AnimationContext_SetLoadFrame(PlayState* play, LinkAnimationHeader* animati
|
||||
s32 pad;
|
||||
|
||||
osCreateMesgQueue(&entry->data.load.msgQueue, &entry->data.load.msg, 1);
|
||||
DmaMgr_SendRequest2(&entry->data.load.req, frameTable,
|
||||
DmaMgr_RequestAsync(&entry->data.load.req, frameTable,
|
||||
LINK_ANIMATION_OFFSET(linkAnimHeader->segment, ((sizeof(Vec3s) * limbCount + 2) * frame)),
|
||||
sizeof(Vec3s) * limbCount + 2, 0, &entry->data.load.msgQueue, NULL, "../z_skelanime.c",
|
||||
2004);
|
||||
|
||||
+38
-38
@@ -138,8 +138,8 @@ static ItemEquips sNewSaveEquips = {
|
||||
static Inventory sNewSaveInventory = {
|
||||
// items
|
||||
{
|
||||
ITEM_NONE, // SLOT_STICK
|
||||
ITEM_NONE, // SLOT_NUT
|
||||
ITEM_NONE, // SLOT_DEKU_STICK
|
||||
ITEM_NONE, // SLOT_DEKU_NUT
|
||||
ITEM_NONE, // SLOT_BOMB
|
||||
ITEM_NONE, // SLOT_BOW
|
||||
ITEM_NONE, // SLOT_ARROW_FIRE
|
||||
@@ -151,8 +151,8 @@ static Inventory sNewSaveInventory = {
|
||||
ITEM_NONE, // SLOT_ARROW_ICE
|
||||
ITEM_NONE, // SLOT_FARORES_WIND
|
||||
ITEM_NONE, // SLOT_BOOMERANG
|
||||
ITEM_NONE, // SLOT_LENS
|
||||
ITEM_NONE, // SLOT_BEAN
|
||||
ITEM_NONE, // SLOT_LENS_OF_TRUTH
|
||||
ITEM_NONE, // SLOT_MAGIC_BEAN
|
||||
ITEM_NONE, // SLOT_HAMMER
|
||||
ITEM_NONE, // SLOT_ARROW_LIGHT
|
||||
ITEM_NONE, // SLOT_NAYRUS_LOVE
|
||||
@@ -165,8 +165,8 @@ static Inventory sNewSaveInventory = {
|
||||
},
|
||||
// ammo
|
||||
{
|
||||
0, // SLOT_STICK
|
||||
0, // SLOT_NUT
|
||||
0, // SLOT_DEKU_STICK
|
||||
0, // SLOT_DEKU_NUT
|
||||
0, // SLOT_BOMB
|
||||
0, // SLOT_BOW
|
||||
0, // SLOT_ARROW_FIRE
|
||||
@@ -178,8 +178,8 @@ static Inventory sNewSaveInventory = {
|
||||
0, // SLOT_ARROW_ICE
|
||||
0, // SLOT_FARORES_WIND
|
||||
0, // SLOT_BOOMERANG
|
||||
0, // SLOT_LENS
|
||||
0, // SLOT_BEAN
|
||||
0, // SLOT_LENS_OF_TRUTH
|
||||
0, // SLOT_MAGIC_BEAN
|
||||
0, // SLOT_HAMMER
|
||||
},
|
||||
// equipment
|
||||
@@ -268,35 +268,35 @@ static ItemEquips sDebugSaveEquips = {
|
||||
static Inventory sDebugSaveInventory = {
|
||||
// items
|
||||
{
|
||||
ITEM_STICK, // SLOT_STICK
|
||||
ITEM_NUT, // SLOT_NUT
|
||||
ITEM_BOMB, // SLOT_BOMB
|
||||
ITEM_BOW, // SLOT_BOW
|
||||
ITEM_ARROW_FIRE, // SLOT_ARROW_FIRE
|
||||
ITEM_DINS_FIRE, // SLOT_DINS_FIRE
|
||||
ITEM_SLINGSHOT, // SLOT_SLINGSHOT
|
||||
ITEM_OCARINA_FAIRY, // SLOT_OCARINA
|
||||
ITEM_BOMBCHU, // SLOT_BOMBCHU
|
||||
ITEM_HOOKSHOT, // SLOT_HOOKSHOT
|
||||
ITEM_ARROW_ICE, // SLOT_ARROW_ICE
|
||||
ITEM_FARORES_WIND, // SLOT_FARORES_WIND
|
||||
ITEM_BOOMERANG, // SLOT_BOOMERANG
|
||||
ITEM_LENS, // SLOT_LENS
|
||||
ITEM_BEAN, // SLOT_BEAN
|
||||
ITEM_HAMMER, // SLOT_HAMMER
|
||||
ITEM_ARROW_LIGHT, // SLOT_ARROW_LIGHT
|
||||
ITEM_NAYRUS_LOVE, // SLOT_NAYRUS_LOVE
|
||||
ITEM_BOTTLE, // SLOT_BOTTLE_1
|
||||
ITEM_POTION_RED, // SLOT_BOTTLE_2
|
||||
ITEM_POTION_GREEN, // SLOT_BOTTLE_3
|
||||
ITEM_POTION_BLUE, // SLOT_BOTTLE_4
|
||||
ITEM_POCKET_EGG, // SLOT_TRADE_ADULT
|
||||
ITEM_WEIRD_EGG, // SLOT_TRADE_CHILD
|
||||
ITEM_DEKU_STICK, // SLOT_DEKU_STICK
|
||||
ITEM_DEKU_NUT, // SLOT_DEKU_NUT
|
||||
ITEM_BOMB, // SLOT_BOMB
|
||||
ITEM_BOW, // SLOT_BOW
|
||||
ITEM_ARROW_FIRE, // SLOT_ARROW_FIRE
|
||||
ITEM_DINS_FIRE, // SLOT_DINS_FIRE
|
||||
ITEM_SLINGSHOT, // SLOT_SLINGSHOT
|
||||
ITEM_OCARINA_FAIRY, // SLOT_OCARINA
|
||||
ITEM_BOMBCHU, // SLOT_BOMBCHU
|
||||
ITEM_HOOKSHOT, // SLOT_HOOKSHOT
|
||||
ITEM_ARROW_ICE, // SLOT_ARROW_ICE
|
||||
ITEM_FARORES_WIND, // SLOT_FARORES_WIND
|
||||
ITEM_BOOMERANG, // SLOT_BOOMERANG
|
||||
ITEM_LENS_OF_TRUTH, // SLOT_LENS_OF_TRUTH
|
||||
ITEM_MAGIC_BEAN, // SLOT_MAGIC_BEAN
|
||||
ITEM_HAMMER, // SLOT_HAMMER
|
||||
ITEM_ARROW_LIGHT, // SLOT_ARROW_LIGHT
|
||||
ITEM_NAYRUS_LOVE, // SLOT_NAYRUS_LOVE
|
||||
ITEM_BOTTLE_EMPTY, // SLOT_BOTTLE_1
|
||||
ITEM_BOTTLE_POTION_RED, // SLOT_BOTTLE_2
|
||||
ITEM_BOTTLE_POTION_GREEN, // SLOT_BOTTLE_3
|
||||
ITEM_BOTTLE_POTION_BLUE, // SLOT_BOTTLE_4
|
||||
ITEM_POCKET_EGG, // SLOT_TRADE_ADULT
|
||||
ITEM_WEIRD_EGG, // SLOT_TRADE_CHILD
|
||||
},
|
||||
// ammo
|
||||
{
|
||||
50, // SLOT_STICK
|
||||
50, // SLOT_NUT
|
||||
50, // SLOT_DEKU_STICK
|
||||
50, // SLOT_DEKU_NUT
|
||||
10, // SLOT_BOMB
|
||||
30, // SLOT_BOW
|
||||
1, // SLOT_ARROW_FIRE
|
||||
@@ -308,8 +308,8 @@ static Inventory sDebugSaveInventory = {
|
||||
1, // SLOT_ARROW_ICE
|
||||
1, // SLOT_FARORES_WIND
|
||||
1, // SLOT_BOOMERANG
|
||||
1, // SLOT_LENS
|
||||
1, // SLOT_BEAN
|
||||
1, // SLOT_LENS_OF_TRUTH
|
||||
1, // SLOT_MAGIC_BEAN
|
||||
1 // SLOT_HAMMER
|
||||
},
|
||||
// equipment
|
||||
@@ -534,10 +534,10 @@ void Sram_OpenSave(SramContext* sramCtx) {
|
||||
i = gSaveContext.eventChkInf[EVENTCHKINF_40_INDEX] & ~EVENTCHKINF_40_MASK;
|
||||
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++) {
|
||||
if (gSaveContext.equips.buttonItems[j] == ITEM_LETTER_ZELDA) {
|
||||
if (gSaveContext.equips.buttonItems[j] == ITEM_ZELDAS_LETTER) {
|
||||
gSaveContext.equips.buttonItems[j] = ITEM_CHICKEN;
|
||||
}
|
||||
}
|
||||
|
||||
+65
-65
@@ -410,16 +410,16 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1055);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], gNormalSkyFiles[skybox1Index].file.vromStart, size,
|
||||
"../z_vr_box.c", 1058);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], gNormalSkyFiles[skybox1Index].file.vromStart, size,
|
||||
"../z_vr_box.c", 1058);
|
||||
|
||||
size = gNormalSkyFiles[skybox2Index].file.vromEnd - gNormalSkyFiles[skybox2Index].file.vromStart;
|
||||
skyboxCtx->staticSegments[1] = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1060);
|
||||
ASSERT(skyboxCtx->staticSegments[1] != NULL, "vr_box->vr_box_staticSegment[1] != NULL", "../z_vr_box.c",
|
||||
1061);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[1], gNormalSkyFiles[skybox2Index].file.vromStart, size,
|
||||
"../z_vr_box.c", 1064);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[1], gNormalSkyFiles[skybox2Index].file.vromStart, size,
|
||||
"../z_vr_box.c", 1064);
|
||||
|
||||
if ((skybox1Index & 1) ^ ((skybox1Index & 4) >> 2)) {
|
||||
size = gNormalSkyFiles[skybox1Index].palette.vromEnd - gNormalSkyFiles[skybox1Index].palette.vromStart;
|
||||
@@ -428,10 +428,10 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1073);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, gNormalSkyFiles[skybox1Index].palette.vromStart, size,
|
||||
"../z_vr_box.c", 1075);
|
||||
DmaMgr_SendRequest1((u8*)skyboxCtx->palettes + size, gNormalSkyFiles[skybox2Index].palette.vromStart,
|
||||
size, "../z_vr_box.c", 1077);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, gNormalSkyFiles[skybox1Index].palette.vromStart, size,
|
||||
"../z_vr_box.c", 1075);
|
||||
DmaMgr_RequestSyncDebug((u8*)skyboxCtx->palettes + size,
|
||||
gNormalSkyFiles[skybox2Index].palette.vromStart, size, "../z_vr_box.c", 1077);
|
||||
} else {
|
||||
size = gNormalSkyFiles[skybox1Index].palette.vromEnd - gNormalSkyFiles[skybox1Index].palette.vromStart;
|
||||
|
||||
@@ -439,10 +439,10 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1086);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, gNormalSkyFiles[skybox2Index].palette.vromStart, size,
|
||||
"../z_vr_box.c", 1088);
|
||||
DmaMgr_SendRequest1((u8*)skyboxCtx->palettes + size, gNormalSkyFiles[skybox1Index].palette.vromStart,
|
||||
size, "../z_vr_box.c", 1090);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, gNormalSkyFiles[skybox2Index].palette.vromStart, size,
|
||||
"../z_vr_box.c", 1088);
|
||||
DmaMgr_RequestSyncDebug((u8*)skyboxCtx->palettes + size,
|
||||
gNormalSkyFiles[skybox1Index].palette.vromStart, size, "../z_vr_box.c", 1090);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -455,14 +455,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1128);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1129);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1129);
|
||||
|
||||
start = (uintptr_t)_vr_SP1a_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_SP1a_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1132);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1133);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1134);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1134);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_OVERCAST_SUNSET:
|
||||
@@ -472,21 +472,21 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1156);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1159);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1159);
|
||||
|
||||
skyboxCtx->staticSegments[1] = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1162);
|
||||
ASSERT(skyboxCtx->staticSegments[1] != NULL, "vr_box->vr_box_staticSegment[1] != NULL", "../z_vr_box.c",
|
||||
1163);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[1], start, size, "../z_vr_box.c", 1166);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[1], start, size, "../z_vr_box.c", 1166);
|
||||
|
||||
start = (uintptr_t)_vr_cloud2_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_cloud2_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size * 2, "../z_vr_box.c", 1170);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1171);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1173);
|
||||
DmaMgr_SendRequest1((u8*)skyboxCtx->palettes + size, start, size, "../z_vr_box.c", 1175);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1173);
|
||||
DmaMgr_RequestSyncDebug((u8*)skyboxCtx->palettes + size, start, size, "../z_vr_box.c", 1175);
|
||||
break;
|
||||
case SKYBOX_MARKET_ADULT:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -497,7 +497,7 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1183);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1184);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1184);
|
||||
|
||||
start = (uintptr_t)_vr_RUVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_RUVR_pal_staticSegmentRomEnd - start;
|
||||
@@ -506,7 +506,7 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1188);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1189);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1190);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1190);
|
||||
break;
|
||||
case SKYBOX_CUTSCENE_MAP:
|
||||
start = (uintptr_t)_vr_holy0_staticSegmentRomStart;
|
||||
@@ -515,7 +515,7 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1197);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1200);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1200);
|
||||
|
||||
start = (uintptr_t)_vr_holy1_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_holy1_staticSegmentRomEnd - start;
|
||||
@@ -523,16 +523,16 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[1] != NULL, "vr_box->vr_box_staticSegment[1] != NULL", "../z_vr_box.c",
|
||||
1204);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[1], start, size, "../z_vr_box.c", 1207);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[1], start, size, "../z_vr_box.c", 1207);
|
||||
|
||||
start = (uintptr_t)_vr_holy0_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_holy0_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size * 2, "../z_vr_box.c", 1211);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1212);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1214);
|
||||
DmaMgr_SendRequest1((u8*)skyboxCtx->palettes + size, (uintptr_t)_vr_holy1_pal_staticSegmentRomStart, size,
|
||||
"../z_vr_box.c", 1216);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1214);
|
||||
DmaMgr_RequestSyncDebug((u8*)skyboxCtx->palettes + size, (uintptr_t)_vr_holy1_pal_staticSegmentRomStart,
|
||||
size, "../z_vr_box.c", 1216);
|
||||
break;
|
||||
case SKYBOX_HOUSE_LINK:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -543,14 +543,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1227);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1228);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1228);
|
||||
|
||||
start = (uintptr_t)_vr_LHVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_LHVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1231);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1232);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1233);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1233);
|
||||
break;
|
||||
case SKYBOX_MARKET_CHILD_DAY:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -561,14 +561,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1258);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1259);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1259);
|
||||
|
||||
start = (uintptr_t)_vr_MDVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_MDVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1262);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1263);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1264);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1264);
|
||||
break;
|
||||
case SKYBOX_MARKET_CHILD_NIGHT:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -579,7 +579,7 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1272);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1273);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1273);
|
||||
|
||||
start = (uintptr_t)_vr_MNVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_MNVR_pal_staticSegmentRomEnd - start;
|
||||
@@ -588,7 +588,7 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1277);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1278);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1279);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1279);
|
||||
break;
|
||||
case SKYBOX_HAPPY_MASK_SHOP:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -599,14 +599,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1287);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1288);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1288);
|
||||
|
||||
start = (uintptr_t)_vr_FCVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_FCVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1291);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1292);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1293);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1293);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_HOUSE_KNOW_IT_ALL_BROTHERS:
|
||||
@@ -618,14 +618,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1302);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1303);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1303);
|
||||
|
||||
start = (uintptr_t)_vr_KHVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_KHVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1306);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1307);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1308);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1308);
|
||||
break;
|
||||
case SKYBOX_HOUSE_OF_TWINS:
|
||||
skyboxCtx->unk_140 = 2;
|
||||
@@ -636,14 +636,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1332);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1333);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1333);
|
||||
|
||||
start = (uintptr_t)_vr_K3VR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_K3VR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1336);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1337);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1338);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1338);
|
||||
break;
|
||||
case SKYBOX_STABLES:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -654,14 +654,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1346);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1347);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1347);
|
||||
|
||||
start = (uintptr_t)_vr_MLVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_MLVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1350);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1351);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1352);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1352);
|
||||
break;
|
||||
case SKYBOX_HOUSE_KAKARIKO:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -672,14 +672,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1360);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1361);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1361);
|
||||
|
||||
start = (uintptr_t)_vr_KKRVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_KKRVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1364);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1365);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1366);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1366);
|
||||
break;
|
||||
case SKYBOX_KOKIRI_SHOP:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -690,14 +690,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1374);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1375);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1375);
|
||||
|
||||
start = (uintptr_t)_vr_KSVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_KSVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1378);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1379);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1380);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1380);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_GORON_SHOP:
|
||||
@@ -709,14 +709,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1406);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1407);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1407);
|
||||
|
||||
start = (uintptr_t)_vr_GLVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_GLVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1410);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1411);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1412);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1412);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_ZORA_SHOP:
|
||||
@@ -728,14 +728,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1421);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1422);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1422);
|
||||
|
||||
start = (uintptr_t)_vr_ZRVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_ZRVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1425);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1426);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1427);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1427);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_POTION_SHOP_KAKARIKO:
|
||||
@@ -747,14 +747,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1452);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1453);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1453);
|
||||
|
||||
start = (uintptr_t)_vr_DGVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_DGVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1456);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1457);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1458);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1458);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_POTION_SHOP_MARKET:
|
||||
@@ -766,14 +766,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1467);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1468);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1468);
|
||||
|
||||
start = (uintptr_t)_vr_ALVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_ALVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1471);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1472);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1473);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1473);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_BOMBCHU_SHOP:
|
||||
@@ -785,14 +785,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1482);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1483);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1483);
|
||||
|
||||
start = (uintptr_t)_vr_NSVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_NSVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1486);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1487);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1488);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1488);
|
||||
skyboxCtx->rot.y = 0.8f;
|
||||
break;
|
||||
case SKYBOX_HOUSE_RICHARD:
|
||||
@@ -804,14 +804,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1513);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1514);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1514);
|
||||
|
||||
start = (uintptr_t)_vr_IPVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_IPVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1517);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1518);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1519);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1519);
|
||||
break;
|
||||
case SKYBOX_HOUSE_IMPA:
|
||||
skyboxCtx->unk_140 = 1;
|
||||
@@ -822,14 +822,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1527);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1528);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1528);
|
||||
|
||||
start = (uintptr_t)_vr_LBVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_LBVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1531);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1532);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1533);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1533);
|
||||
break;
|
||||
case SKYBOX_TENT:
|
||||
skyboxCtx->unk_140 = 2;
|
||||
@@ -840,14 +840,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1541);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1542);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1542);
|
||||
|
||||
start = (uintptr_t)_vr_TTVR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_TTVR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1545);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1546);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1547);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1547);
|
||||
break;
|
||||
case SKYBOX_HOUSE_MIDO:
|
||||
skyboxCtx->unk_140 = 2;
|
||||
@@ -858,14 +858,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1561);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1562);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1562);
|
||||
|
||||
start = (uintptr_t)_vr_K4VR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_K4VR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1565);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1566);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1567);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1567);
|
||||
break;
|
||||
case SKYBOX_HOUSE_SARIA:
|
||||
skyboxCtx->unk_140 = 2;
|
||||
@@ -876,14 +876,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1575);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1576);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1576);
|
||||
|
||||
start = (uintptr_t)_vr_K5VR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_K5VR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1579);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1580);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1581);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1581);
|
||||
break;
|
||||
case SKYBOX_HOUSE_ALLEY:
|
||||
skyboxCtx->unk_140 = 2;
|
||||
@@ -894,14 +894,14 @@ void Skybox_Setup(PlayState* play, SkyboxContext* skyboxCtx, s16 skyboxId) {
|
||||
ASSERT(skyboxCtx->staticSegments[0] != NULL, "vr_box->vr_box_staticSegment[0] != NULL", "../z_vr_box.c",
|
||||
1589);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1590);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->staticSegments[0], start, size, "../z_vr_box.c", 1590);
|
||||
|
||||
start = (uintptr_t)_vr_KR3VR_pal_staticSegmentRomStart;
|
||||
size = (uintptr_t)_vr_KR3VR_pal_staticSegmentRomEnd - start;
|
||||
skyboxCtx->palettes = GameState_Alloc(&play->state, size, "../z_vr_box.c", 1593);
|
||||
ASSERT(skyboxCtx->palettes != NULL, "vr_box->vr_box_staticSegment[2] != NULL", "../z_vr_box.c", 1594);
|
||||
|
||||
DmaMgr_SendRequest1(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1595);
|
||||
DmaMgr_RequestSyncDebug(skyboxCtx->palettes, start, size, "../z_vr_box.c", 1595);
|
||||
break;
|
||||
case SKYBOX_UNSET_27:
|
||||
break;
|
||||
|
||||
@@ -22,7 +22,7 @@ QuestHintCmd gOverworldNaviQuestHints[] = {
|
||||
QUEST_HINT_BOOTS(CHECK, ITEM_BOOTS_IRON, false, 0x52),
|
||||
QUEST_HINT_MEDALLION(CHECK, ITEM_MEDALLION_WATER, false, 0x53),
|
||||
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_SONG(CHECK, ITEM_SONG_REQUIEM, false, 0x58),
|
||||
QUEST_HINT_STRENGTH_UPG(CHECK, 1, true, 0x56),
|
||||
|
||||
@@ -226,8 +226,8 @@ void BgPoEvent_Destroy(Actor* thisx, PlayState* play) {
|
||||
Collider_DestroyTris(play, &this->collider);
|
||||
} else {
|
||||
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->dyna.bgId);
|
||||
if ((this->type == 1) && (gSaveContext.timer1Value > 0)) {
|
||||
gSaveContext.timer1State = 0xA;
|
||||
if ((this->type == 1) && (gSaveContext.timerSeconds > 0)) {
|
||||
gSaveContext.timerState = TIMER_STATE_STOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -316,7 +316,7 @@ void BgPoEvent_BlockFall(BgPoEvent* this, PlayState* play) {
|
||||
} else {
|
||||
Audio_PlayActorSfx2(&this->dyna.actor, NA_SE_EV_STONE_BOUND);
|
||||
Actor_RequestQuakeAndRumble(&this->dyna.actor, play, 5, 5);
|
||||
func_80088B34(this->timer);
|
||||
Interface_SetTimer(this->timer);
|
||||
if (firstFall == 0) {
|
||||
firstFall = 1;
|
||||
} else {
|
||||
@@ -342,10 +342,10 @@ void BgPoEvent_BlockIdle(BgPoEvent* this, PlayState* play) {
|
||||
OnePointCutscene_Init(play, 3170, 30, amy, CAM_ID_MAIN);
|
||||
}
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
gSaveContext.timer1State = 0xA;
|
||||
gSaveContext.timerState = TIMER_STATE_STOP;
|
||||
}
|
||||
} else {
|
||||
if ((gSaveContext.timer1Value == 0) && (sBlocksAtRest == 5)) {
|
||||
if ((gSaveContext.timerSeconds == 0) && (sBlocksAtRest == 5)) {
|
||||
player->stateFlags2 &= ~PLAYER_STATE2_4;
|
||||
sPuzzleState = 0x10;
|
||||
sBlocksAtRest = 0;
|
||||
|
||||
@@ -156,7 +156,7 @@ void func_808A9234(BgRelayObjects* this, PlayState* play) {
|
||||
Flags_UnsetSwitch(play, this->switchFlag);
|
||||
this->dyna.actor.flags &= ~ACTOR_FLAG_4;
|
||||
if (play->roomCtx.curRoom.num == 4) {
|
||||
gSaveContext.timer1State = 0xF;
|
||||
gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
|
||||
}
|
||||
this->actionFunc = BgRelayObjects_DoNothing;
|
||||
}
|
||||
|
||||
@@ -399,7 +399,7 @@ void BgYdanSp_WallWebIdle(BgYdanSp* this, PlayState* play) {
|
||||
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;
|
||||
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);
|
||||
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);
|
||||
|
||||
@@ -823,7 +823,7 @@ void DemoKankyo_DrawWarpSparkles(Actor* thisx, PlayState* play) {
|
||||
this->unk_150[i].unk_22++;
|
||||
}
|
||||
} else if (i + 1 == this->sparkleCounter && play->csCtx.state == CS_STATE_IDLE) {
|
||||
func_80088AF0(play);
|
||||
Interface_SetSubTimerToFinalSecond(play);
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -577,7 +577,7 @@ void func_80996B0C(DoorShutter* this, PlayState* play) {
|
||||
|
||||
if (this->unlockTimer != 0) {
|
||||
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;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -268,7 +268,8 @@ void EnButte_FlyAround(EnButte* this, PlayState* play) {
|
||||
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,
|
||||
this->actor.home.pos.z) < SQ(120.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,
|
||||
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)))) {
|
||||
EnButte_SetupFlyAround(this);
|
||||
} else if (distSqFromHome > SQ(240.0f)) {
|
||||
|
||||
@@ -1020,7 +1020,7 @@ void EnDekubaba_DeadStickDrop(EnDekubaba* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
|
||||
func_8002F554(&this->actor, play, GI_STICKS_1);
|
||||
func_8002F554(&this->actor, play, GI_DEKU_STICKS_1);
|
||||
}
|
||||
|
||||
// Update and associated functions
|
||||
|
||||
@@ -103,7 +103,7 @@ void EnDivingGame_Destroy(Actor* thisx, PlayState* play) {
|
||||
EnDivingGame* this = (EnDivingGame*)thisx;
|
||||
|
||||
if (this->unk_31F == 0) {
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
}
|
||||
Collider_DestroyCylinder(play, &this->collider);
|
||||
}
|
||||
@@ -125,9 +125,9 @@ void EnDivingGame_SpawnRuppy(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.
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
func_800F5B58();
|
||||
func_80078884(NA_SE_SY_FOUND);
|
||||
this->actor.textId = 0x71AD;
|
||||
@@ -145,7 +145,7 @@ s32 EnDivingGame_HasMinigameFinished(EnDivingGame* this, PlayState* play) {
|
||||
}
|
||||
if (this->grabbedRupeesCounter >= rupeesNeeded) {
|
||||
// Won.
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
this->allRupeesThrown = this->state = this->phase = this->unk_2A2 = this->grabbedRupeesCounter = 0;
|
||||
if (!GET_EVENTCHKINF(EVENTCHKINF_38)) {
|
||||
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)) {
|
||||
Message_CloseTextbox(play);
|
||||
if (!GET_EVENTCHKINF(EVENTCHKINF_38)) {
|
||||
func_80088B34(BREG(2) + 50);
|
||||
Interface_SetTimer(50 + BREG(2));
|
||||
} else {
|
||||
func_80088B34(BREG(2) + 50);
|
||||
Interface_SetTimer(50 + BREG(2));
|
||||
}
|
||||
func_800F5ACC(NA_BGM_TIMED_MINI_GAME);
|
||||
func_8002DF54(play, NULL, 7);
|
||||
@@ -506,9 +506,10 @@ void EnDivingGame_Update(Actor* thisx, PlayState* play2) {
|
||||
|
||||
if (1) {}
|
||||
|
||||
if (gSaveContext.timer1Value == 10) {
|
||||
if (gSaveContext.timerSeconds == 10) {
|
||||
Audio_SetFastTempoForTimedMinigame();
|
||||
}
|
||||
|
||||
if (this->eyeTimer == 0) {
|
||||
this->eyeTimer = 2;
|
||||
this->eyeTexIndex++;
|
||||
|
||||
@@ -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_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_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[] = {
|
||||
&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 */
|
||||
|
||||
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;
|
||||
}
|
||||
if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) {
|
||||
return 0;
|
||||
}
|
||||
if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) {
|
||||
if (Item_CheckObtainability(ITEM_DEKU_NUT) == ITEM_NONE) {
|
||||
return 2;
|
||||
}
|
||||
return 4;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) {
|
||||
return 0;
|
||||
}
|
||||
if (Item_CheckObtainability(ITEM_STICK) == ITEM_NONE) {
|
||||
if (Item_CheckObtainability(ITEM_DEKU_STICK) == ITEM_NONE) {
|
||||
return 2;
|
||||
}
|
||||
return 4;
|
||||
@@ -227,7 +227,7 @@ u32 func_809EF73C(EnDns* this) {
|
||||
if (gSaveContext.rupees < this->dnsItemEntry->itemPrice) {
|
||||
return 0;
|
||||
}
|
||||
if (Item_CheckObtainability(ITEM_SEEDS) == ITEM_NONE) {
|
||||
if (Item_CheckObtainability(ITEM_DEKU_SEEDS) == ITEM_NONE) {
|
||||
return 2;
|
||||
}
|
||||
return 4;
|
||||
@@ -369,16 +369,16 @@ void EnDns_Talk(EnDns* this, PlayState* play) {
|
||||
|
||||
void func_809EFDD0(EnDns* this, PlayState* play) {
|
||||
if (this->actor.params == 0x9) {
|
||||
if (CUR_UPG_VALUE(UPG_STICKS) < 2) {
|
||||
func_8002F434(&this->actor, play, GI_STICK_UPGRADE_20, 130.0f, 100.0f);
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) < 2) {
|
||||
func_8002F434(&this->actor, play, GI_DEKU_STICK_UPGRADE_20, 130.0f, 100.0f);
|
||||
} 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) {
|
||||
if (CUR_UPG_VALUE(UPG_NUTS) < 2) {
|
||||
func_8002F434(&this->actor, play, GI_NUT_UPGRADE_30, 130.0f, 100.0f);
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_NUTS) < 2) {
|
||||
func_8002F434(&this->actor, play, GI_DEKU_NUT_UPGRADE_30, 130.0f, 100.0f);
|
||||
} 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 {
|
||||
func_8002F434(&this->actor, play, this->dnsItemEntry->getItemId, 130.0f, 100.0f);
|
||||
|
||||
@@ -184,10 +184,10 @@ void EnDntJiji_Walk(EnDntJiji* this, PlayState* play) {
|
||||
this->actor.speedXZ = 3.0f;
|
||||
}
|
||||
if (this->actor.xzDistToPlayer < 100.0f) {
|
||||
if (CUR_UPG_VALUE(UPG_STICKS) == 1) {
|
||||
this->getItemId = GI_STICK_UPGRADE_20;
|
||||
if (CUR_UPG_VALUE(UPG_DEKU_STICKS) == 1) {
|
||||
this->getItemId = GI_DEKU_STICK_UPGRADE_20;
|
||||
} else {
|
||||
this->getItemId = GI_STICK_UPGRADE_30;
|
||||
this->getItemId = GI_DEKU_STICK_UPGRADE_30;
|
||||
}
|
||||
this->actor.textId = 0x104D;
|
||||
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);
|
||||
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_NUTS_UP);
|
||||
|
||||
if ((CUR_UPG_VALUE(UPG_NUTS) == 1) || (CUR_UPG_VALUE(UPG_NUTS) == 0)) {
|
||||
this->getItemId = GI_NUT_UPGRADE_30;
|
||||
if ((CUR_UPG_VALUE(UPG_DEKU_NUTS) == 1) || (CUR_UPG_VALUE(UPG_DEKU_NUTS) == 0)) {
|
||||
this->getItemId = GI_DEKU_NUT_UPGRADE_30;
|
||||
} else {
|
||||
this->getItemId = GI_NUT_UPGRADE_40;
|
||||
this->getItemId = GI_DEKU_NUT_UPGRADE_40;
|
||||
}
|
||||
this->actor.flags |= ACTOR_FLAG_0;
|
||||
this->actor.textId = 0x10DB;
|
||||
@@ -272,7 +272,7 @@ void EnDntJiji_SetupGivePrize(EnDntJiji* this, PlayState* play) {
|
||||
void EnDntJiji_GivePrize(EnDntJiji* this, PlayState* play) {
|
||||
SkelAnime_Update(&this->skelAnime);
|
||||
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"
|
||||
osSyncPrintf("実 \n");
|
||||
osSyncPrintf("実 \n");
|
||||
|
||||
@@ -88,7 +88,7 @@ void EnDs_GiveOddPotion(EnDs* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play)) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnDs_DisplayOddPotionText;
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
} else {
|
||||
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->actionFunc = EnDs_Talk;
|
||||
} 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
|
||||
Rupees_ChangeBy(-100);
|
||||
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;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -522,7 +522,7 @@ void func_809FEC70(EnDu* this, PlayState* play) {
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ void EnEg_Init(Actor* thisx, 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
|
||||
Play_TriggerRespawn(play);
|
||||
gSaveContext.respawnFlag = -2;
|
||||
|
||||
@@ -285,11 +285,11 @@ void func_80A2F83C(EnGb* this, PlayState* play) {
|
||||
func_80A2F180(this);
|
||||
this->actionFunc = func_80A2F94C;
|
||||
break;
|
||||
case EXCH_ITEM_POE:
|
||||
case EXCH_ITEM_BOTTLE_POE:
|
||||
player->actor.textId = 0x70F6;
|
||||
this->actionFunc = func_80A2F9C0;
|
||||
break;
|
||||
case EXCH_ITEM_BIG_POE:
|
||||
case EXCH_ITEM_BOTTLE_BIG_POE:
|
||||
player->actor.textId = 0x70F7;
|
||||
this->actionFunc = func_80A2FA50;
|
||||
break;
|
||||
@@ -297,7 +297,7 @@ void func_80A2F83C(EnGb* this, PlayState* play) {
|
||||
return;
|
||||
}
|
||||
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);
|
||||
}
|
||||
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);
|
||||
this->actionFunc = func_80A2F83C;
|
||||
}
|
||||
@@ -329,7 +329,7 @@ void func_80A2FA50(EnGb* this, PlayState* play) {
|
||||
SET_INFTABLE(INFTABLE_B6);
|
||||
}
|
||||
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);
|
||||
HIGH_SCORE(HS_POE_POINTS) += 100;
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -360,7 +360,7 @@ void func_80A2FBB0(EnGb* this, PlayState* play) {
|
||||
this->dyna.actor.parent = NULL;
|
||||
this->actionFunc = func_80A2FC0C;
|
||||
} 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -389,7 +389,7 @@ void EnGe1_RefuseOpenNoCard_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);
|
||||
} else {
|
||||
//! @bug This outcome is inaccessible in normal gameplay since this function it is unreachable without
|
||||
|
||||
@@ -451,7 +451,7 @@ void EnGe2_WaitTillCardGiven(EnGe2* this, PlayState* play) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnGe2_SetActionAfterTalk;
|
||||
} 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);
|
||||
this->actor.flags &= ~ACTOR_FLAG_16;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ void EnGe3_WaitTillCardGiven(EnGe3* this, PlayState* play) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnGe3_Wait;
|
||||
} 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);
|
||||
this->actor.flags &= ~ACTOR_FLAG_16;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ static char* sShopItemDescriptions[] = {
|
||||
};
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
@@ -155,40 +155,40 @@ typedef struct {
|
||||
|
||||
static ShopItemEntry shopItemEntries[] = {
|
||||
// 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 },
|
||||
/* SI_ARROWS_30 */
|
||||
{ OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, func_8002EBCC, 60, 30, 0x00C1, 0x009B, GI_ARROWS_MEDIUM,
|
||||
EnGirlA_CanBuy_Arrows, EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
{ OBJECT_GI_ARROW, GID_ARROWS_10, func_8002EBCC, 60, 30, 0x00C1, 0x009B, GI_ARROWS_10, EnGirlA_CanBuy_Arrows,
|
||||
EnGirlA_ItemGive_Arrows, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* SI_BOMBS_5_R25 */
|
||||
{ OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 25, 5, 0x00A3, 0x008B, GI_BOMBS_5, EnGirlA_CanBuy_Bombs,
|
||||
EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* SI_BOMBS_10 */
|
||||
{ OBJECT_GI_BOMB_1, GID_BOMB, func_8002EBCC, 50, 10, 0x00B1, 0x007C, GI_BOMBS_10, EnGirlA_CanBuy_Bombs,
|
||||
EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* SI_RED_POTION_R30 */
|
||||
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_8002EBCC, 30, 1, 0x00A5, 0x008E, GI_POTION_RED, EnGirlA_CanBuy_RedPotion,
|
||||
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
{ OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, func_8002EBCC, 30, 1, 0x00A5, 0x008E, GI_BOTTLE_POTION_RED,
|
||||
EnGirlA_CanBuy_RedPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* SI_HYLIAN_SHIELD */
|
||||
{ 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,
|
||||
EnGirlA_CanBuy_RecoveryHeart, EnGirlA_ItemGive_Health, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* SI_MILK_BOTTLE */
|
||||
{ OBJECT_GI_MILK, GID_MILK, func_80A3C498, 100, 1, 0x00AD, 0x0097, GI_MILK_BOTTLE, EnGirlA_CanBuy_MilkBottle,
|
||||
EnGirlA_ItemGive_MilkBottle, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
{ OBJECT_GI_MILK, GID_BOTTLE_MILK_FULL, func_80A3C498, 100, 1, 0x00AD, 0x0097, GI_BOTTLE_MILK_FULL,
|
||||
EnGirlA_CanBuy_MilkBottle, EnGirlA_ItemGive_MilkBottle, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* SI_WEIRD_EGG */
|
||||
{ OBJECT_GI_EGG, GID_EGG, func_8002EBCC, 100, 1, 0x00AE, 0x0099, GI_WEIRD_EGG, EnGirlA_CanBuy_WeirdEgg,
|
||||
EnGirlA_ItemGive_WeirdEgg, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* SI_20 */
|
||||
{ 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,
|
||||
NULL, EnGirlA_BuyEvent_ObtainBombchuPack },
|
||||
/* 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 },
|
||||
/* SI_KEATON_MASK */
|
||||
{ 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,
|
||||
EnGirlA_ItemGive_DekuSeeds, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* SI_MASK_OF_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,
|
||||
NULL },
|
||||
/* SI_BLUE_FIRE */
|
||||
{ OBJECT_GI_FIRE, GID_BLUE_FIRE, func_8002EBCC, 300, 1, 0x00B9, 0x00B8, GI_BLUE_FIRE, EnGirlA_CanBuy_BlueFire,
|
||||
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
{ OBJECT_GI_FIRE, GID_BLUE_FIRE, func_8002EBCC, 300, 1, 0x00B9, 0x00B8, GI_BOTTLE_BLUE_FIRE,
|
||||
EnGirlA_CanBuy_BlueFire, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* 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 },
|
||||
/* SI_BOMBS_20 */
|
||||
{ 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,
|
||||
EnGirlA_ItemGive_Bombs, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* SI_RED_POTION_R40 */
|
||||
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_8002EBCC, 40, 1, 0x0064, 0x0062, GI_POTION_RED, EnGirlA_CanBuy_RedPotion,
|
||||
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
{ OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, func_8002EBCC, 40, 1, 0x0064, 0x0062, GI_BOTTLE_POTION_RED,
|
||||
EnGirlA_CanBuy_RedPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount },
|
||||
/* SI_RED_POTION_R50 */
|
||||
{ OBJECT_GI_LIQUID, GID_POTION_RED, func_8002EBCC, 50, 1, 0x0065, 0x0063, GI_POTION_RED, EnGirlA_CanBuy_RedPotion,
|
||||
EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }
|
||||
{ OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, func_8002EBCC, 50, 1, 0x0065, 0x0063, GI_BOTTLE_POTION_RED,
|
||||
EnGirlA_CanBuy_RedPotion, EnGirlA_ItemGive_BottledItem, EnGirlA_BuyEvent_ShieldDiscount }
|
||||
};
|
||||
|
||||
// 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) {
|
||||
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;
|
||||
}
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -477,7 +477,7 @@ s32 EnGirlA_CanBuy_Fish(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -490,7 +490,7 @@ s32 EnGirlA_CanBuy_RedPotion(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -503,7 +503,7 @@ s32 EnGirlA_CanBuy_GreenPotion(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -516,7 +516,7 @@ s32 EnGirlA_CanBuy_BluePotion(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -530,7 +530,7 @@ s32 EnGirlA_CanBuy_Longsword(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -608,7 +608,7 @@ s32 EnGirlA_CanBuy_MilkBottle(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -618,7 +618,7 @@ s32 EnGirlA_CanBuy_WeirdEgg(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -652,7 +652,7 @@ s32 EnGirlA_CanBuy_DekuSeeds(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -669,7 +669,7 @@ s32 EnGirlA_CanBuy_BlueFire(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -682,7 +682,7 @@ s32 EnGirlA_CanBuy_Bugs(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -695,7 +695,7 @@ s32 EnGirlA_CanBuy_Poe(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -708,7 +708,7 @@ s32 EnGirlA_CanBuy_Fairy(PlayState* play, EnGirlA* this) {
|
||||
if (gSaveContext.rupees < this->basePrice) {
|
||||
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;
|
||||
@@ -740,17 +740,17 @@ void EnGirlA_ItemGive_Bombs(PlayState* play, EnGirlA* this) {
|
||||
void EnGirlA_ItemGive_DekuNuts(PlayState* play, EnGirlA* this) {
|
||||
switch (this->itemCount) {
|
||||
case 5:
|
||||
Item_Give(play, ITEM_NUTS_5);
|
||||
Item_Give(play, ITEM_DEKU_NUTS_5);
|
||||
break;
|
||||
case 10:
|
||||
Item_Give(play, ITEM_NUTS_10);
|
||||
Item_Give(play, ITEM_DEKU_NUTS_10);
|
||||
break;
|
||||
}
|
||||
Rupees_ChangeBy(-this->basePrice);
|
||||
}
|
||||
|
||||
void EnGirlA_ItemGive_DekuSticks(PlayState* play, EnGirlA* this) {
|
||||
Item_Give(play, ITEM_STICK);
|
||||
Item_Give(play, ITEM_DEKU_STICK);
|
||||
Rupees_ChangeBy(-this->basePrice);
|
||||
}
|
||||
|
||||
@@ -786,7 +786,7 @@ void EnGirlA_ItemGive_Health(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);
|
||||
}
|
||||
|
||||
@@ -804,38 +804,38 @@ void EnGirlA_ItemGive_Unk20(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);
|
||||
}
|
||||
|
||||
void EnGirlA_ItemGive_BottledItem(PlayState* play, EnGirlA* this) {
|
||||
switch (this->actor.params) {
|
||||
case SI_FISH:
|
||||
Item_Give(play, ITEM_FISH);
|
||||
Item_Give(play, ITEM_BOTTLE_FISH);
|
||||
break;
|
||||
case SI_RED_POTION_R30:
|
||||
Item_Give(play, ITEM_POTION_RED);
|
||||
Item_Give(play, ITEM_BOTTLE_POTION_RED);
|
||||
break;
|
||||
case SI_GREEN_POTION:
|
||||
Item_Give(play, ITEM_POTION_GREEN);
|
||||
Item_Give(play, ITEM_BOTTLE_POTION_GREEN);
|
||||
break;
|
||||
case SI_BLUE_POTION:
|
||||
Item_Give(play, ITEM_POTION_BLUE);
|
||||
Item_Give(play, ITEM_BOTTLE_POTION_BLUE);
|
||||
break;
|
||||
case SI_BLUE_FIRE:
|
||||
Item_Give(play, ITEM_BLUE_FIRE);
|
||||
Item_Give(play, ITEM_BOTTLE_BLUE_FIRE);
|
||||
break;
|
||||
case SI_BUGS:
|
||||
Item_Give(play, ITEM_BUG);
|
||||
Item_Give(play, ITEM_BOTTLE_BUG);
|
||||
break;
|
||||
case SI_BIG_POE:
|
||||
Item_Give(play, ITEM_BIG_POE);
|
||||
Item_Give(play, ITEM_BOTTLE_BIG_POE);
|
||||
break;
|
||||
case SI_POE:
|
||||
Item_Give(play, ITEM_POE);
|
||||
Item_Give(play, ITEM_BOTTLE_POE);
|
||||
break;
|
||||
case SI_FAIRY:
|
||||
Item_Give(play, ITEM_FAIRY);
|
||||
Item_Give(play, ITEM_BOTTLE_FAIRY);
|
||||
break;
|
||||
}
|
||||
Rupees_ChangeBy(-this->basePrice);
|
||||
|
||||
@@ -101,13 +101,13 @@ u16 EnGo_GetTextID(PlayState* play, Actor* thisx) {
|
||||
} else {
|
||||
return 0x305D;
|
||||
}
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_EYEDROPS) {
|
||||
player->exchangeItemId = EXCH_ITEM_EYEDROPS;
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_EYE_DROPS) {
|
||||
player->exchangeItemId = EXCH_ITEM_EYE_DROPS;
|
||||
return 0x3059;
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) {
|
||||
return 0x3058;
|
||||
} else {
|
||||
player->exchangeItemId = EXCH_ITEM_SWORD_BROKEN;
|
||||
player->exchangeItemId = EXCH_ITEM_BROKEN_GORONS_SWORD;
|
||||
return 0x3053;
|
||||
}
|
||||
case 0x00:
|
||||
@@ -593,8 +593,8 @@ void func_80A3F908(EnGo* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (((this->actor.params & 0xF0) == 0x90) && (isUnkCondition == true)) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_SWORD_BROKEN) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_SWORD_BROKEN) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_BROKEN_GORONS_SWORD) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_BROKEN_GORONS_SWORD) {
|
||||
if (GET_INFTABLE(INFTABLE_B4)) {
|
||||
this->actor.textId = 0x3055;
|
||||
} else {
|
||||
@@ -606,8 +606,8 @@ void func_80A3F908(EnGo* this, PlayState* play) {
|
||||
player->actor.textId = this->actor.textId;
|
||||
}
|
||||
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEDROPS) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_EYEDROPS) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYE_DROPS) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_EYE_DROPS) {
|
||||
this->actor.textId = 0x3059;
|
||||
} else {
|
||||
this->actor.textId = 0x3058;
|
||||
@@ -859,13 +859,13 @@ void EnGo_BiggoronActionFunc(EnGo* this, PlayState* play) {
|
||||
if (gSaveContext.bgsFlag) {
|
||||
this->unk_1E0.unk_00 = 0;
|
||||
} else {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEDROPS) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYE_DROPS) {
|
||||
EnGo_ChangeAnim(this, ENGO_ANIM_2);
|
||||
this->unk_21E = 100;
|
||||
this->unk_1E0.unk_00 = 0;
|
||||
EnGo_SetupAction(this, EnGo_Eyedrops);
|
||||
play->msgCtx.msgMode = MSGMODE_PAUSED;
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
OnePointCutscene_Init(play, 4190, -99, &this->actor, CAM_ID_MAIN);
|
||||
} else {
|
||||
this->unk_1E0.unk_00 = 0;
|
||||
@@ -954,13 +954,13 @@ void EnGo_GetItem(EnGo* this, PlayState* play) {
|
||||
this->unk_20C = 0;
|
||||
if ((this->actor.params & 0xF0) == 0x90) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_CLAIM_CHECK) {
|
||||
getItemId = GI_SWORD_BGS;
|
||||
getItemId = GI_SWORD_BIGGORON;
|
||||
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;
|
||||
}
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_SWORD_BROKEN) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_BROKEN_GORONS_SWORD) {
|
||||
getItemId = GI_PRESCRIPTION;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -569,10 +569,10 @@ u16 EnGo2_GetTextIdGoronDmtBiggoron(PlayState* play, EnGo2* this) {
|
||||
player->exchangeItemId = EXCH_ITEM_CLAIM_CHECK;
|
||||
return 0x305E;
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) {
|
||||
player->exchangeItemId = EXCH_ITEM_EYEDROPS;
|
||||
player->exchangeItemId = EXCH_ITEM_EYE_DROPS;
|
||||
return 0x3058;
|
||||
} else {
|
||||
player->exchangeItemId = EXCH_ITEM_SWORD_BROKEN;
|
||||
player->exchangeItemId = EXCH_ITEM_BROKEN_GORONS_SWORD;
|
||||
return 0x3053;
|
||||
}
|
||||
}
|
||||
@@ -585,7 +585,7 @@ s16 EnGo2_GetStateGoronDmtBiggoron(PlayState* play, EnGo2* this) {
|
||||
case TEXT_STATE_DONE:
|
||||
if (this->actor.textId == 0x305E) {
|
||||
if (!gSaveContext.bgsFlag) {
|
||||
EnGo2_GetItem(this, play, GI_SWORD_BGS);
|
||||
EnGo2_GetItem(this, play, GI_SWORD_BIGGORON);
|
||||
this->actionFunc = EnGo2_SetupGetItem;
|
||||
return 2;
|
||||
} else {
|
||||
@@ -1056,18 +1056,18 @@ void EnGo2_BiggoronSetTextId(EnGo2* this, PlayState* play, Player* player) {
|
||||
|
||||
} else if ((INV_CONTENT(ITEM_TRADE_ADULT) >= ITEM_PRESCRIPTION) &&
|
||||
(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;
|
||||
} else {
|
||||
this->actor.textId = 0x3058;
|
||||
}
|
||||
if (this->actor.textId == 0x3059) {
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
}
|
||||
player->actor.textId = this->actor.textId;
|
||||
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_SWORD_BROKEN) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_SWORD_BROKEN) {
|
||||
} else if (INV_CONTENT(ITEM_TRADE_ADULT) <= ITEM_BROKEN_GORONS_SWORD) {
|
||||
if (func_8002F368(play) == EXCH_ITEM_BROKEN_GORONS_SWORD) {
|
||||
if (GET_INFTABLE(INFTABLE_B4)) {
|
||||
textId = 0x3055;
|
||||
} else {
|
||||
@@ -1132,7 +1132,8 @@ void func_80A454CC(EnGo2* this) {
|
||||
Animation_ChangeByInfo(&this->skelAnime, sAnimationInfo, ENGO2_ANIM_9);
|
||||
break;
|
||||
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);
|
||||
break;
|
||||
}
|
||||
@@ -1498,7 +1499,7 @@ void EnGo2_GoronFireClearCamera(EnGo2* this, PlayState* play) {
|
||||
}
|
||||
|
||||
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) {
|
||||
if (DECR(this->animTimer) == 0) {
|
||||
this->animTimer = Rand_S16Offset(30, 30);
|
||||
@@ -1597,8 +1598,8 @@ void EnGo2_Init(Actor* thisx, PlayState* play) {
|
||||
case GORON_DMT_BIGGORON:
|
||||
this->actor.shape.shadowDraw = NULL;
|
||||
this->actor.flags &= ~ACTOR_FLAG_0;
|
||||
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->eyeMouthTexState = 1;
|
||||
}
|
||||
this->collider.base.acFlags = AC_NONE;
|
||||
@@ -1805,7 +1806,7 @@ void EnGo2_SetGetItem(EnGo2* this, PlayState* play) {
|
||||
SET_INFTABLE(INFTABLE_109);
|
||||
EnGo2_GetItemAnimation(this, play);
|
||||
return;
|
||||
case GI_SWORD_BGS:
|
||||
case GI_SWORD_BIGGORON:
|
||||
gSaveContext.bgsFlag = true;
|
||||
break;
|
||||
case GI_BOMB_BAG_30:
|
||||
|
||||
@@ -403,7 +403,7 @@ void func_80A53AD4(EnHeishi2* this, PlayState* play) {
|
||||
this->unk_300 = TEXT_STATE_DONE;
|
||||
if (Actor_ProcessTalkRequest(&this->actor, play)) {
|
||||
exchangeItemId = func_8002F368(play);
|
||||
if (exchangeItemId == EXCH_ITEM_LETTER_ZELDA) {
|
||||
if (exchangeItemId == EXCH_ITEM_ZELDAS_LETTER) {
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
player->actor.textId = 0x2010;
|
||||
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;
|
||||
yawDiff = ABS(yawDiffTemp);
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ void EnHorseGameCheck_FinishIngoRace(EnHorseGameCheckIngoRace* this, PlayState*
|
||||
}
|
||||
DREG(25) = 0;
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
}
|
||||
|
||||
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)) {
|
||||
this->startFlags |= INGORACE_SET_TIMER;
|
||||
func_80088B34(0);
|
||||
Interface_SetTimer(0);
|
||||
} else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->startFlags & INGORACE_PLAYER_MOVE)) {
|
||||
this->startFlags |= INGORACE_PLAYER_MOVE;
|
||||
horse = (EnHorse*)player->rideActor;
|
||||
@@ -211,7 +211,7 @@ s32 EnHorseGameCheck_UpdateIngoRace(EnHorseGameCheckBase* base, PlayState* play)
|
||||
this->result = INGORACE_INGO_WIN;
|
||||
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);
|
||||
this->result = INGORACE_TIME_UP;
|
||||
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->transitionTrigger = TRANS_TRIGGER_START;
|
||||
} else if (this->result == MALONRACE_FAILURE) {
|
||||
gSaveContext.timer1Value = 240;
|
||||
gSaveContext.timer1State = 0xF;
|
||||
gSaveContext.timerSeconds = 240;
|
||||
gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
|
||||
gSaveContext.cutsceneIndex = 0;
|
||||
play->nextEntranceIndex = ENTR_SPOT20_7;
|
||||
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)) {
|
||||
this->raceFlags |= MALONRACE_SET_TIMER;
|
||||
func_80088B34(0);
|
||||
Interface_SetTimer(0);
|
||||
} else if ((this->startTimer > 80) && (player->rideActor != NULL) && !(this->raceFlags & MALONRACE_PLAYER_MOVE)) {
|
||||
this->raceFlags |= MALONRACE_PLAYER_MOVE;
|
||||
horse = (EnHorse*)player->rideActor;
|
||||
@@ -383,7 +383,7 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
this->result = MALONRACE_SUCCESS;
|
||||
this->finishTimer = 70;
|
||||
gSaveContext.timer1State = 0xF;
|
||||
gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
|
||||
} else if ((this->fenceCheck[7] == 1) && !(this->raceFlags & MALONRACE_SECOND_LAP)) {
|
||||
this->lapCount = 1;
|
||||
this->raceFlags |= MALONRACE_SECOND_LAP;
|
||||
@@ -400,11 +400,11 @@ s32 EnHorseGameCheck_UpdateMalonRace(EnHorseGameCheckBase* base, PlayState* play
|
||||
this->finishTimer = 30;
|
||||
}
|
||||
}
|
||||
if ((gSaveContext.timer1Value >= 180) && (this->raceFlags & MALONRACE_SET_TIMER)) {
|
||||
gSaveContext.timer1Value = 240;
|
||||
if ((gSaveContext.timerSeconds >= 180) && (this->raceFlags & MALONRACE_SET_TIMER)) {
|
||||
gSaveContext.timerSeconds = 240;
|
||||
this->result = MALONRACE_TIME_UP;
|
||||
this->finishTimer = 30;
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
}
|
||||
} else {
|
||||
if (this->finishTimer > 0) {
|
||||
|
||||
@@ -14,9 +14,9 @@ void EnHorseZelda_Destroy(Actor* thisx, PlayState* play);
|
||||
void EnHorseZelda_Update(Actor* thisx, PlayState* play);
|
||||
void EnHorseZelda_Draw(Actor* thisx, PlayState* play);
|
||||
|
||||
void func_80A6DCCC(EnHorseZelda* this, PlayState* play);
|
||||
void func_80A6DDFC(EnHorseZelda* this, PlayState* play);
|
||||
void func_80A6DC7C(EnHorseZelda* this);
|
||||
void EnHorseZelda_Stop(EnHorseZelda* this, PlayState* play);
|
||||
void EnHorseZelda_Gallop(EnHorseZelda* this, PlayState* play);
|
||||
void EnHorseZelda_SetupStop(EnHorseZelda* this);
|
||||
|
||||
ActorInit En_Horse_Zelda_InitVars = {
|
||||
ACTOR_EN_HORSE_ZELDA,
|
||||
@@ -83,16 +83,17 @@ static ColliderJntSphInit sJntSphInit = {
|
||||
static CollisionCheckInfoInit sColChkInfoInit = { 10, 35, 100, MASS_HEAVY };
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ Vec3s unk_0;
|
||||
/* 0x6 */ u8 unk_6;
|
||||
} unknownStruct; // size = 0x8
|
||||
/* 0x0 */ Vec3s pos;
|
||||
/* 0x6 */ u8 speed;
|
||||
} HorsePosSpeed; // size = 0x8
|
||||
|
||||
static unknownStruct D_80A6E240[] = {
|
||||
{ -1682, -500, 12578, 0x07 }, { -3288, -500, 13013, 0x07 }, { -5142, -417, 11630, 0x07 },
|
||||
{ -5794, -473, 9573, 0x07 }, { -6765, -500, 8364, 0x07 }, { -6619, -393, 6919, 0x07 },
|
||||
{ -5193, 124, 5433, 0x07 }, { -2970, 2, 4537, 0x07 }, { -2949, -35, 4527, 0x07 },
|
||||
{ -1907, -47, 2978, 0x07 }, { 2488, 294, 3628, 0x07 }, { 3089, 378, 4713, 0x07 },
|
||||
{ 1614, -261, 7596, 0x07 }, { 754, -187, 9295, 0x07 },
|
||||
// these seem to be valid coords on Hyrule field, along with target speeds
|
||||
static HorsePosSpeed sHorseFieldPositions[] = {
|
||||
{ { -1682, -500, 12578 }, 7 }, { { -3288, -500, 13013 }, 7 }, { { -5142, -417, 11630 }, 7 },
|
||||
{ { -5794, -473, 9573 }, 7 }, { { -6765, -500, 8364 }, 7 }, { { -6619, -393, 6919 }, 7 },
|
||||
{ { -5193, 124, 5433 }, 7 }, { { -2970, 2, 4537 }, 7 }, { { -2949, -35, 4527 }, 7 },
|
||||
{ { -1907, -47, 2978 }, 7 }, { { 2488, 294, 3628 }, 7 }, { { 3089, 378, 4713 }, 7 },
|
||||
{ { 1614, -261, 7596 }, 7 }, { { 754, -187, 9295 }, 7 },
|
||||
};
|
||||
|
||||
static InitChainEntry sInitChain[] = {
|
||||
@@ -100,34 +101,34 @@ static InitChainEntry sInitChain[] = {
|
||||
};
|
||||
|
||||
static EnHorseZeldaActionFunc sActionFuncs[] = {
|
||||
func_80A6DCCC,
|
||||
func_80A6DDFC,
|
||||
EnHorseZelda_Stop,
|
||||
EnHorseZelda_Gallop,
|
||||
};
|
||||
|
||||
void func_80A6D8D0(unknownStruct* data, s32 index, Vec3f* vec) {
|
||||
vec->x = data[index].unk_0.x;
|
||||
vec->y = data[index].unk_0.y;
|
||||
vec->z = data[index].unk_0.z;
|
||||
void EnHorseZelda_GetFieldPosition(HorsePosSpeed* data, s32 index, Vec3f* fieldPos) {
|
||||
fieldPos->x = data[index].pos.x;
|
||||
fieldPos->y = data[index].pos.y;
|
||||
fieldPos->z = data[index].pos.z;
|
||||
}
|
||||
|
||||
void func_80A6D918(EnHorseZelda* this, PlayState* play) {
|
||||
void EnHorseZelda_Move(EnHorseZelda* this, PlayState* play) {
|
||||
s32 pad;
|
||||
Vec3f sp28;
|
||||
Vec3f fieldPos;
|
||||
s16 yawDiff;
|
||||
|
||||
func_80A6D8D0(D_80A6E240, this->unk_1EC, &sp28);
|
||||
if (Math3D_Vec3f_DistXYZ(&sp28, &this->actor.world.pos) <= 400.0f) {
|
||||
this->unk_1EC++;
|
||||
if (this->unk_1EC >= 14) {
|
||||
this->unk_1EC = 0;
|
||||
func_80A6D8D0(D_80A6E240, 0, &sp28);
|
||||
EnHorseZelda_GetFieldPosition(sHorseFieldPositions, this->fieldPosIndex, &fieldPos);
|
||||
if (Math3D_Vec3f_DistXYZ(&fieldPos, &this->actor.world.pos) <= 400.0f) {
|
||||
this->fieldPosIndex++;
|
||||
if (this->fieldPosIndex >= ARRAY_COUNT(sHorseFieldPositions)) {
|
||||
this->fieldPosIndex = 0;
|
||||
EnHorseZelda_GetFieldPosition(sHorseFieldPositions, 0, &fieldPos);
|
||||
}
|
||||
}
|
||||
yawDiff = Math_Vec3f_Yaw(&this->actor.world.pos, &sp28) - this->actor.world.rot.y;
|
||||
if (yawDiff >= 0x12D) {
|
||||
this->actor.world.rot.y += 0x12C;
|
||||
} else if (yawDiff < -0x12C) {
|
||||
this->actor.world.rot.y -= 0x12C;
|
||||
yawDiff = Math_Vec3f_Yaw(&this->actor.world.pos, &fieldPos) - this->actor.world.rot.y;
|
||||
if (yawDiff > 300) {
|
||||
this->actor.world.rot.y += 300;
|
||||
} else if (yawDiff < -300) {
|
||||
this->actor.world.rot.y -= 300;
|
||||
} else {
|
||||
this->actor.world.rot.y += yawDiff;
|
||||
}
|
||||
@@ -139,7 +140,7 @@ void func_80A6D918(EnHorseZelda* this, PlayState* play) {
|
||||
} else {
|
||||
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;
|
||||
} else {
|
||||
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);
|
||||
CollisionCheck_SetInfo(&this->actor.colChkInfo, NULL, &sColChkInfoInit);
|
||||
this->animationIndex = 0;
|
||||
func_80A6DC7C(this);
|
||||
EnHorseZelda_SetupStop(this);
|
||||
}
|
||||
|
||||
void EnHorseZelda_Destroy(Actor* thisx, PlayState* play) {
|
||||
@@ -177,7 +178,7 @@ void EnHorseZelda_Destroy(Actor* thisx, PlayState* play) {
|
||||
Skin_Free(play, &this->skin);
|
||||
}
|
||||
|
||||
void func_80A6DC7C(EnHorseZelda* this) {
|
||||
void EnHorseZelda_SetupStop(EnHorseZelda* this) {
|
||||
this->action = 0;
|
||||
this->animationIndex++;
|
||||
if (this->animationIndex > 0) {
|
||||
@@ -186,34 +187,34 @@ void func_80A6DC7C(EnHorseZelda* this) {
|
||||
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;
|
||||
if (SkelAnime_Update(&this->skin.skelAnime)) {
|
||||
func_80A6DC7C(this);
|
||||
EnHorseZelda_SetupStop(this);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80A6DD14(EnHorseZelda* this) {
|
||||
f32 sp34;
|
||||
void EnHorseZelda_Spur(EnHorseZelda* this) {
|
||||
f32 speedMod;
|
||||
|
||||
this->action = 1;
|
||||
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,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
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);
|
||||
}
|
||||
|
||||
void func_80A6DDFC(EnHorseZelda* this, PlayState* play) {
|
||||
func_80A6D918(this, play);
|
||||
void EnHorseZelda_Gallop(EnHorseZelda* this, PlayState* play) {
|
||||
EnHorseZelda_Move(this, play);
|
||||
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;
|
||||
CollisionPoly* poly;
|
||||
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.y = this->actor.world.pos.y + 60.0f;
|
||||
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->actor.shape.rot.x = RAD_TO_BINANG(Math_FAtan2F(this->actor.world.pos.y - this->unk_1F4, 30.0f));
|
||||
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->floorYForwards, 30.0f));
|
||||
}
|
||||
|
||||
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) {
|
||||
Vec3f sp4C;
|
||||
Vec3f sp40;
|
||||
Vec3f offset;
|
||||
Vec3f dst;
|
||||
EnHorseZelda* this = (EnHorseZelda*)thisx;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < this->colliderSphere.count; i++) {
|
||||
sp4C.x = this->colliderSphere.elements[i].dim.modelSphere.center.x;
|
||||
sp4C.y = this->colliderSphere.elements[i].dim.modelSphere.center.y;
|
||||
sp4C.z = this->colliderSphere.elements[i].dim.modelSphere.center.z;
|
||||
offset.x = this->colliderSphere.elements[i].dim.modelSphere.center.x;
|
||||
offset.y = this->colliderSphere.elements[i].dim.modelSphere.center.y;
|
||||
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.y = sp40.y;
|
||||
this->colliderSphere.elements[i].dim.worldSphere.center.z = sp40.z;
|
||||
this->colliderSphere.elements[i].dim.worldSphere.center.x = dst.x;
|
||||
this->colliderSphere.elements[i].dim.worldSphere.center.y = dst.y;
|
||||
this->colliderSphere.elements[i].dim.worldSphere.center.z = dst.z;
|
||||
|
||||
this->colliderSphere.elements[i].dim.worldSphere.radius =
|
||||
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) {
|
||||
EnHorseZelda* this = (EnHorseZelda*)thisx;
|
||||
|
||||
func_80A6DE38(this, play);
|
||||
EnHorseZelda_SetRotate(this, play);
|
||||
Gfx_SetupDL_25Opa(play->state.gfxCtx);
|
||||
func_800A6330(&this->actor, play, &this->skin, EnHorseZelda_PostDraw, true);
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@ typedef struct EnHorseZelda {
|
||||
/* 0x0150 */ s32 animationIndex;
|
||||
/* 0x0154 */ Skin skin;
|
||||
/* 0x01E4 */ char unk_1E4[0x8];
|
||||
/* 0x01EC */ s32 unk_1EC;
|
||||
/* 0x01EC */ s32 fieldPosIndex;
|
||||
/* 0x01F0 */ char unk_1F0[0x4];
|
||||
/* 0x01F4 */ f32 unk_1F4;
|
||||
/* 0x01F4 */ f32 floorYForwards;
|
||||
/* 0x01F8 */ char unk_1F8[0x4];
|
||||
/* 0x01FC */ ColliderCylinder colliderCylinder;
|
||||
/* 0x0248 */ ColliderJntSph colliderSphere;
|
||||
|
||||
@@ -126,9 +126,9 @@ void func_80A6E5EC(EnHs* this, PlayState* play) {
|
||||
|
||||
void func_80A6E630(EnHs* this, PlayState* play) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
|
||||
func_80088AA0(180);
|
||||
Interface_SetSubTimer(180);
|
||||
func_80A6E3A0(this, func_80A6E6B0);
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
}
|
||||
|
||||
this->unk_2A8 |= 1;
|
||||
|
||||
@@ -421,7 +421,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
|
||||
if (textId != 0) {
|
||||
if ((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_5) {
|
||||
player->exchangeItemId = EXCH_ITEM_BLUE_FIRE;
|
||||
player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE;
|
||||
}
|
||||
return textId;
|
||||
}
|
||||
@@ -473,7 +473,7 @@ u16 func_80A6F810(PlayState* play, Actor* thisx) {
|
||||
case ENHY_TYPE_AHG_4:
|
||||
return GET_EVENTCHKINF(EVENTCHKINF_80) ? 0x704B : (GET_INFTABLE(INFTABLE_C5) ? 0x7024 : 0x7023);
|
||||
case ENHY_TYPE_BOJ_5:
|
||||
player->exchangeItemId = EXCH_ITEM_BLUE_FIRE;
|
||||
player->exchangeItemId = EXCH_ITEM_BOTTLE_BLUE_FIRE;
|
||||
return 0x700C;
|
||||
case ENHY_TYPE_BBA:
|
||||
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) {
|
||||
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 };
|
||||
|
||||
switch (Message_GetState(&play->msgCtx)) {
|
||||
@@ -596,7 +596,7 @@ s16 func_80A70058(PlayState* play, Actor* thisx) {
|
||||
case 0x70F3:
|
||||
Rupees_ChangeBy(beggarRewards[this->actor.textId - 0x70F0]);
|
||||
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;
|
||||
case 0x7016:
|
||||
SET_INFTABLE(INFTABLE_C0);
|
||||
@@ -723,12 +723,12 @@ void func_80A70834(EnHy* this, PlayState* play) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
|
||||
if ((this->actor.params & 0x7F) == ENHY_TYPE_BOJ_5) {
|
||||
if (!Inventory_HasSpecificBottle(ITEM_BLUE_FIRE) && !Inventory_HasSpecificBottle(ITEM_BUG) &&
|
||||
!Inventory_HasSpecificBottle(ITEM_FISH)) {
|
||||
if (!Inventory_HasSpecificBottle(ITEM_BOTTLE_BLUE_FIRE) && !Inventory_HasSpecificBottle(ITEM_BOTTLE_BUG) &&
|
||||
!Inventory_HasSpecificBottle(ITEM_BOTTLE_FISH)) {
|
||||
switch (func_8002F368(play)) {
|
||||
case EXCH_ITEM_POE:
|
||||
case EXCH_ITEM_BIG_POE:
|
||||
case EXCH_ITEM_LETTER_RUTO:
|
||||
case EXCH_ITEM_BOTTLE_POE:
|
||||
case EXCH_ITEM_BOTTLE_BIG_POE:
|
||||
case EXCH_ITEM_BOTTLE_RUTOS_LETTER:
|
||||
this->actor.textId = 0x70EF;
|
||||
break;
|
||||
default:
|
||||
@@ -739,13 +739,13 @@ void func_80A70834(EnHy* this, PlayState* play) {
|
||||
}
|
||||
} else {
|
||||
switch (func_8002F368(play)) {
|
||||
case EXCH_ITEM_BLUE_FIRE:
|
||||
case EXCH_ITEM_BOTTLE_BLUE_FIRE:
|
||||
this->actor.textId = 0x70F0;
|
||||
break;
|
||||
case EXCH_ITEM_FISH:
|
||||
case EXCH_ITEM_BOTTLE_FISH:
|
||||
this->actor.textId = 0x70F1;
|
||||
break;
|
||||
case EXCH_ITEM_BUG:
|
||||
case EXCH_ITEM_BOTTLE_BUG:
|
||||
this->actor.textId = 0x70F2;
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -437,7 +437,7 @@ void func_80A79BAC(EnIn* this, PlayState* play, s32 index, u32 transitionType) {
|
||||
if (index == 0) {
|
||||
AREG(6) = 0;
|
||||
}
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
}
|
||||
|
||||
void func_80A79C78(EnIn* this, PlayState* play) {
|
||||
@@ -580,7 +580,7 @@ void func_80A79FB0(EnIn* this, PlayState* play) {
|
||||
this->actor.targetMode = 3;
|
||||
EnIn_ChangeAnim(this, ENIN_ANIM_2);
|
||||
this->actionFunc = func_80A7A568;
|
||||
func_80088B34(0x3C);
|
||||
Interface_SetTimer(60);
|
||||
break;
|
||||
case EVENTINF_HORSES_STATE_3:
|
||||
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)) {
|
||||
SET_INFTABLE(INFTABLE_AB);
|
||||
}
|
||||
if (gSaveContext.timer1State == 10) {
|
||||
if (gSaveContext.timerState == TIMER_STATE_STOP) {
|
||||
Audio_PlaySfxGeneral(NA_SE_SY_FOUND, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
func_80A79C78(this, play);
|
||||
this->actionFunc = func_80A7B024;
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
} else if (this->unk_308.unk_00 == 2) {
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (gSaveContext.rupees < 50) {
|
||||
@@ -929,7 +929,8 @@ void EnIn_Update(Actor* thisx, PlayState* play) {
|
||||
this->actionFunc(this, play);
|
||||
if (this->actionFunc != func_80A7A304) {
|
||||
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)) {}
|
||||
} else {
|
||||
func_800343CC(play, &this->actor, &this->unk_308.unk_00,
|
||||
|
||||
@@ -362,7 +362,7 @@ void EnKarebaba_DeadItemDrop(EnKarebaba* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) || this->actor.params == 0) {
|
||||
EnKarebaba_SetupDead(this);
|
||||
} else {
|
||||
func_8002F554(&this->actor, play, GI_STICKS_1);
|
||||
func_8002F554(&this->actor, play, GI_DEKU_STICKS_1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1198,7 +1198,7 @@ void func_80A99504(EnKo* this, PlayState* play) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80A99560;
|
||||
} else {
|
||||
func_8002F434(&this->actor, play, GI_SAW, 120.0f, 10.0f);
|
||||
func_8002F434(&this->actor, play, GI_POACHERS_SAW, 120.0f, 10.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ u16 EnKz_GetTextNoMaskChild(PlayState* play, EnKz* this) {
|
||||
} else if (GET_EVENTCHKINF(EVENTCHKINF_33)) {
|
||||
return 0x401C;
|
||||
} else {
|
||||
player->exchangeItemId = EXCH_ITEM_LETTER_RUTO;
|
||||
player->exchangeItemId = EXCH_ITEM_BOTTLE_RUTOS_LETTER;
|
||||
return 0x401A;
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,7 @@ u16 EnKz_GetTextNoMaskChild(PlayState* play, EnKz* this) {
|
||||
u16 EnKz_GetTextNoMaskAdult(PlayState* play, EnKz* this) {
|
||||
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 (CHECK_OWNED_EQUIP(EQUIP_TYPE_TUNIC, EQUIP_INV_TUNIC_ZORA)) {
|
||||
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 ((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->sfxPlayed = false;
|
||||
} else {
|
||||
@@ -394,7 +394,7 @@ void EnKz_Mweep(EnKz* this, PlayState* play) {
|
||||
Play_CameraSetAtEye(play, this->subCamId, &subCamAt, &subCamEye);
|
||||
if ((EnKz_FollowPath(this, play) == 1) && (this->waypoint == 0)) {
|
||||
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);
|
||||
SET_EVENTCHKINF(EVENTCHKINF_33);
|
||||
this->actor.speedXZ = 0.0;
|
||||
@@ -431,7 +431,7 @@ void EnKz_SetupGetItem(EnKz* this, PlayState* play) {
|
||||
this->unk_1E0.unk_00 = 1;
|
||||
this->actionFunc = EnKz_StartTimer;
|
||||
} 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;
|
||||
xzRange = this->actor.xzDistToPlayer + 1.0f;
|
||||
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) {
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_DONE) && Message_ShouldAdvance(play)) {
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_FROG) {
|
||||
func_80088AA0(180); // start timer2 with 3 minutes
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
if (INV_CONTENT(ITEM_TRADE_ADULT) == ITEM_EYEBALL_FROG) {
|
||||
Interface_SetSubTimer(180);
|
||||
CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
}
|
||||
this->unk_1E0.unk_00 = 0;
|
||||
this->actionFunc = EnKz_Wait;
|
||||
|
||||
@@ -73,39 +73,44 @@ static AnimationFrameCountInfo sAnimationInfo[] = {
|
||||
|
||||
u16 func_80AA2AA0(PlayState* play, Actor* thisx) {
|
||||
Player* player = GET_PLAYER(play);
|
||||
s16* timer1ValuePtr; // weirdness with this necessary to match
|
||||
|
||||
if (!GET_INFTABLE(INFTABLE_B8)) {
|
||||
return 0x2000;
|
||||
}
|
||||
timer1ValuePtr = &gSaveContext.timer1Value;
|
||||
|
||||
if (GET_EVENTINF(EVENTINF_HORSES_0A)) {
|
||||
gSaveContext.timer1Value = gSaveContext.timer1Value;
|
||||
gSaveContext.timerSeconds = gSaveContext.timerSeconds;
|
||||
thisx->flags |= ACTOR_FLAG_16;
|
||||
if (gSaveContext.timer1Value >= 0xD3) {
|
||||
|
||||
if (((void)0, gSaveContext.timerSeconds) > 210) {
|
||||
return 0x208E;
|
||||
}
|
||||
if ((HIGH_SCORE(HS_HORSE_RACE) == 0) || (HIGH_SCORE(HS_HORSE_RACE) >= 0xB4)) {
|
||||
HIGH_SCORE(HS_HORSE_RACE) = 0xB4;
|
||||
gSaveContext.timer1Value = *timer1ValuePtr;
|
||||
|
||||
if ((HIGH_SCORE(HS_HORSE_RACE) == 0) || (HIGH_SCORE(HS_HORSE_RACE) >= 180)) {
|
||||
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;
|
||||
} 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) &&
|
||||
(Actor_FindNearby(play, thisx, ACTOR_EN_HORSE, 1, 1200.0f) == NULL)) {
|
||||
return 0x2001;
|
||||
}
|
||||
|
||||
if (!GET_INFTABLE(INFTABLE_B9)) {
|
||||
return 0x2002;
|
||||
} else {
|
||||
return 0x2003;
|
||||
}
|
||||
|
||||
return 0x2003;
|
||||
}
|
||||
|
||||
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->transitionTrigger = TRANS_TRIGGER_START;
|
||||
SET_EVENTINF(EVENTINF_HORSES_0A);
|
||||
gSaveContext.timer1State = 0xF;
|
||||
gSaveContext.timerState = TIMER_STATE_UP_FREEZE;
|
||||
}
|
||||
break;
|
||||
case TEXT_STATE_CHOICE:
|
||||
@@ -147,15 +152,15 @@ s16 func_80AA2BD4(PlayState* play, Actor* thisx) {
|
||||
FALLTHROUGH;
|
||||
case 0x2004:
|
||||
case 0x2012:
|
||||
if (HIGH_SCORE(HS_HORSE_RACE) > gSaveContext.timer1Value) {
|
||||
HIGH_SCORE(HS_HORSE_RACE) = gSaveContext.timer1Value;
|
||||
if (HIGH_SCORE(HS_HORSE_RACE) > gSaveContext.timerSeconds) {
|
||||
HIGH_SCORE(HS_HORSE_RACE) = gSaveContext.timerSeconds;
|
||||
}
|
||||
FALLTHROUGH;
|
||||
case 0x208E:
|
||||
CLEAR_EVENTINF(EVENTINF_HORSES_0A);
|
||||
thisx->flags &= ~ACTOR_FLAG_16;
|
||||
ret = 0;
|
||||
gSaveContext.timer1State = 0xA;
|
||||
gSaveContext.timerState = TIMER_STATE_STOP;
|
||||
break;
|
||||
case 0x2002:
|
||||
SET_INFTABLE(INFTABLE_B9);
|
||||
|
||||
@@ -92,17 +92,17 @@ void func_80AACA94(EnMk* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play) != 0) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = func_80AACA40;
|
||||
func_80088AA0(240);
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
Interface_SetSubTimer(240);
|
||||
CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
} 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) {
|
||||
if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
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;
|
||||
this->actionFunc = func_80AACA40;
|
||||
} else {
|
||||
if (INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYEDROPS) {
|
||||
if (INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_EYE_DROPS) {
|
||||
player->actor.textId = 0x4032;
|
||||
this->actionFunc = func_80AACA40;
|
||||
} else {
|
||||
@@ -247,13 +247,13 @@ void EnMk_Wait(EnMk* this, PlayState* play) {
|
||||
}
|
||||
}
|
||||
break;
|
||||
case EXCH_ITEM_FROG:
|
||||
case EXCH_ITEM_EYEBALL_FROG:
|
||||
player->actor.textId = 0x4019;
|
||||
this->actionFunc = func_80AACEE8;
|
||||
Animation_Change(&this->skelAnime, &object_mk_Anim_000368, 1.0f, 0.0f,
|
||||
Animation_GetLastFrame(&object_mk_Anim_000368), ANIMMODE_ONCE, -4.0f);
|
||||
this->flags &= ~2;
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
func_80078884(NA_SE_SY_TRE_BOX_APPEAR);
|
||||
break;
|
||||
default:
|
||||
@@ -273,7 +273,7 @@ void EnMk_Wait(EnMk* this, PlayState* play) {
|
||||
angle = this->actor.yawTowardsPlayer - this->actor.shape.rot.y;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -103,20 +103,20 @@ void func_80AAEF70(EnMm2* this, PlayState* play) {
|
||||
if (!GET_EVENTCHKINF_CARPENTERS_FREE_ALL()) {
|
||||
this->actor.textId = 0x6086;
|
||||
} else if (GET_INFTABLE(INFTABLE_17F)) {
|
||||
if (GET_EVENTINF(EVENTINF_10)) {
|
||||
if (GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) {
|
||||
this->actor.textId = 0x6082;
|
||||
} else if (gSaveContext.timer2State != 0) {
|
||||
} else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) {
|
||||
this->actor.textId = 0x6076;
|
||||
} else if (HIGH_SCORE(HS_MARATHON) == 158) {
|
||||
this->actor.textId = 0x607E;
|
||||
} else {
|
||||
this->actor.textId = 0x6081;
|
||||
}
|
||||
} else if (gSaveContext.timer2State) {
|
||||
} else if (gSaveContext.subTimerState != SUBTIMER_STATE_OFF) {
|
||||
this->actor.textId = 0x6076;
|
||||
} else {
|
||||
this->actor.textId = 0x607D;
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
HIGH_SCORE(HS_MARATHON) = 158;
|
||||
}
|
||||
}
|
||||
@@ -149,7 +149,7 @@ void EnMm2_Init(Actor* thisx, PlayState* play2) {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
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");
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
@@ -193,8 +193,8 @@ void func_80AAF330(EnMm2* this, PlayState* play) {
|
||||
if (!(this->unk_1F4 & 2)) {
|
||||
Message_CloseTextbox(play);
|
||||
}
|
||||
gSaveContext.timer2State = 0;
|
||||
CLEAR_EVENTINF(EVENTINF_10);
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
CLEAR_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -209,7 +209,7 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) {
|
||||
case 0:
|
||||
Message_ContinueTextbox(play, 0x607F);
|
||||
this->actor.textId = 0x607F;
|
||||
SET_EVENTINF(EVENTINF_10);
|
||||
SET_EVENTINF(EVENTINF_MARATHON_ACTIVE);
|
||||
break;
|
||||
case 1:
|
||||
Message_ContinueTextbox(play, 0x6080);
|
||||
@@ -219,14 +219,14 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) {
|
||||
if (this->unk_1F4 & 4) {
|
||||
if (1) {}
|
||||
this->unk_1F4 &= ~4;
|
||||
HIGH_SCORE(HS_MARATHON) += 1;
|
||||
HIGH_SCORE(HS_MARATHON)++;
|
||||
}
|
||||
}
|
||||
return;
|
||||
case 0x6081:
|
||||
if ((Message_GetState(&play->msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
|
||||
this->unk_1F4 |= 4;
|
||||
HIGH_SCORE(HS_MARATHON) -= 1;
|
||||
HIGH_SCORE(HS_MARATHON)--;
|
||||
Message_ContinueTextbox(play, 0x607E);
|
||||
this->actor.textId = 0x607E;
|
||||
}
|
||||
@@ -235,7 +235,7 @@ void func_80AAF3C0(EnMm2* this, PlayState* play) {
|
||||
|
||||
if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
if (this->actor.textId == 0x607F) {
|
||||
func_80088AA0(0);
|
||||
Interface_SetSubTimer(0);
|
||||
this->actionFunc = func_80AAF57C;
|
||||
} else {
|
||||
this->actionFunc = func_80AAF57C;
|
||||
@@ -266,19 +266,20 @@ void func_80AAF668(EnMm2* this, PlayState* play) {
|
||||
this->actor.world.rot.y = -0x3E80;
|
||||
this->actor.shape.rot.y = this->actor.world.rot.y;
|
||||
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;
|
||||
} else {
|
||||
this->actor.textId = 0x6084;
|
||||
}
|
||||
if (func_80AAF224(this, play, func_80AAF5EC)) {
|
||||
this->unk_1F6 = 0;
|
||||
if (((void)0, gSaveContext.timer2Value) < HIGH_SCORE(HS_MARATHON)) {
|
||||
HIGH_SCORE(HS_MARATHON) = gSaveContext.timer2Value;
|
||||
if (((void)0, gSaveContext.subTimerSeconds) < HIGH_SCORE(HS_MARATHON)) {
|
||||
HIGH_SCORE(HS_MARATHON) = gSaveContext.subTimerSeconds;
|
||||
}
|
||||
} else {
|
||||
LOG_HEX("((z_common_data.event_inf[1]) & (0x0001))", GET_EVENTINF(EVENTINF_10), "../z_en_mm2.c", 541);
|
||||
if (!GET_EVENTINF(EVENTINF_10)) {
|
||||
LOG_HEX("((z_common_data.event_inf[1]) & (0x0001))", GET_EVENTINF(EVENTINF_MARATHON_ACTIVE), "../z_en_mm2.c",
|
||||
541);
|
||||
if (!GET_EVENTINF(EVENTINF_MARATHON_ACTIVE)) {
|
||||
this->unk_1F4 |= 2;
|
||||
this->unk_1F4 &= ~1;
|
||||
EnMm2_ChangeAnim(this, RM2_ANIM_STAND, &this->previousAnimation);
|
||||
|
||||
@@ -128,7 +128,7 @@ void EnMs_Talk(EnMs* this, PlayState* play) {
|
||||
Message_ContinueTextbox(play, 0x4069); // not enough rupees text
|
||||
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;
|
||||
return;
|
||||
case 1: // no
|
||||
@@ -145,7 +145,7 @@ void EnMs_Sell(EnMs* this, PlayState* play) {
|
||||
this->actor.parent = NULL;
|
||||
this->actionFunc = EnMs_TalkAfterPurchase;
|
||||
} else {
|
||||
func_8002F434(&this->actor, play, GI_BEAN, 90.0f, 10.0f);
|
||||
func_8002F434(&this->actor, play, GI_MAGIC_BEAN, 90.0f, 10.0f);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -308,8 +308,8 @@ void func_80ABA654(EnNiwLady* this, PlayState* play) {
|
||||
this->unk_26E = 0xB;
|
||||
if (!GET_ITEMGETINF(ITEMGETINF_0C)) {
|
||||
this->actor.parent = NULL;
|
||||
this->getItemId = GI_BOTTLE;
|
||||
func_8002F434(&this->actor, play, GI_BOTTLE, 100.0f, 50.0f);
|
||||
this->getItemId = GI_BOTTLE_EMPTY;
|
||||
func_8002F434(&this->actor, play, GI_BOTTLE_EMPTY, 100.0f, 50.0f);
|
||||
this->actionFunc = func_80ABAC00;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -698,11 +698,11 @@ void EnPoField_SoulInteract(EnPoField* this, PlayState* play) {
|
||||
if (Inventory_HasEmptyBottle()) {
|
||||
Audio_PlayActorSfx2(&this->actor, NA_SE_EN_PO_BIG_GET);
|
||||
if (this->actor.params == 0) {
|
||||
Item_Give(play, ITEM_POE);
|
||||
Item_Give(play, ITEM_BOTTLE_POE);
|
||||
this->actor.textId = 0x5008;
|
||||
} else {
|
||||
this->actor.textId = 0x508F;
|
||||
Item_Give(play, ITEM_BIG_POE);
|
||||
Item_Give(play, ITEM_BOTTLE_BIG_POE);
|
||||
Flags_SetSwitch(play, sSpawnSwitchFlags[this->spawnFlagIndex]);
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -137,7 +137,7 @@ void EnPoRelay_SetupRace(EnPoRelay* this) {
|
||||
|
||||
EnPoRelay_Vec3sToVec3f(&vec, &D_80AD8C30[this->pathIndex]);
|
||||
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->unk_19A = Actor_WorldYawTowardPoint(&this->actor, &vec);
|
||||
this->actor.flags |= ACTOR_FLAG_27;
|
||||
@@ -258,7 +258,7 @@ void EnPoRelay_EndRace(EnPoRelay* this, PlayState* play) {
|
||||
this->actionFunc = EnPoRelay_Talk2;
|
||||
} else if (play->roomCtx.curRoom.num == 5) {
|
||||
Actor_Kill(&this->actor);
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
} else if (Actor_IsFacingAndNearPlayer(&this->actor, 150.0f, 0x3000)) {
|
||||
this->actor.textId = this->textId;
|
||||
func_8002F2CC(&this->actor, play, 250.0f);
|
||||
@@ -279,7 +279,7 @@ void EnPoRelay_Talk2(EnPoRelay* this, PlayState* play) {
|
||||
Message_ContinueTextbox(play, this->actor.textId);
|
||||
}
|
||||
} else if (Actor_TextboxIsClosing(&this->actor, play)) {
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
this->actionTimer = 0;
|
||||
this->actionFunc = EnPoRelay_DisappearAndReward;
|
||||
}
|
||||
@@ -326,17 +326,17 @@ void EnPoRelay_DisappearAndReward(EnPoRelay* this, PlayState* play) {
|
||||
sp60.x = this->actor.world.pos.x;
|
||||
sp60.y = this->actor.floorHeight;
|
||||
sp60.z = this->actor.world.pos.z;
|
||||
if (gSaveContext.timer1Value < HIGH_SCORE(HS_DAMPE_RACE)) {
|
||||
HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timer1Value;
|
||||
if (gSaveContext.timerSeconds < HIGH_SCORE(HS_DAMPE_RACE)) {
|
||||
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));
|
||||
} else {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_ITEM00, sp60.x, sp60.y, sp60.z, 0, 0, 0, 2);
|
||||
}
|
||||
} else {
|
||||
Flags_SetTempClear(play, 4);
|
||||
HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timer1Value;
|
||||
HIGH_SCORE(HS_DAMPE_RACE) = gSaveContext.timerSeconds;
|
||||
}
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
|
||||
@@ -816,7 +816,7 @@ void EnPoh_TalkRegular(EnPoh* this, PlayState* play) {
|
||||
if (play->msgCtx.choiceIndex == 0) {
|
||||
if (Inventory_HasEmptyBottle()) {
|
||||
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);
|
||||
} else {
|
||||
this->actor.textId = 0x5006;
|
||||
|
||||
@@ -397,7 +397,7 @@ void EnSkj_Init(Actor* thisx, PlayState* play2) {
|
||||
default:
|
||||
this->actor.params = type;
|
||||
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);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -489,7 +489,7 @@ void func_80B12460(EnSyatekiNiw* this, PlayState* play) {
|
||||
|
||||
void func_80B128D8(EnSyatekiNiw* this, PlayState* play) {
|
||||
if (this->unk_25E == 1) {
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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 &&
|
||||
play->sceneId == SCENE_SOUKO) {
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
}
|
||||
|
||||
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)) {
|
||||
case 1:
|
||||
// Last cucco found, end the game
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
func_8002DF54(play, &this->actor, 1);
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
if (gSaveContext.timer1Value == 0 && !Play_InCsMode(play)) {
|
||||
if ((gSaveContext.timerSeconds == 0) && !Play_InCsMode(play)) {
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
|
||||
this->stateFlags &= ~TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY;
|
||||
func_80078884(NA_SE_SY_FOUND);
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
func_8002DF54(play, &this->actor, 1);
|
||||
|
||||
// Time's up text
|
||||
@@ -881,7 +881,7 @@ void EnTa_StartingCuccoGame3(EnTa* this, PlayState* play) {
|
||||
Animation_GetLastFrame(&gTalonSitHandsUpAnim), ANIMMODE_ONCE, 0.0f);
|
||||
this->timer = 50;
|
||||
|
||||
func_80088B34(30);
|
||||
Interface_SetTimer(30);
|
||||
func_800F5ACC(NA_BGM_TIMED_MINI_GAME);
|
||||
this->stateFlags |= TALON_STATE_FLAG_RESTORE_BGM_ON_DESTROY;
|
||||
Message_CloseTextbox(play);
|
||||
@@ -947,7 +947,7 @@ void EnTa_GiveItemInLonLonHouse(EnTa* this, PlayState* play) {
|
||||
} else if (this->stateFlags & TALON_STATE_FLAG_GIVING_MILK_REFILL) {
|
||||
func_8002F434(&this->actor, play, GI_MILK, 10000.0f, 50.0f);
|
||||
} 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;
|
||||
}
|
||||
@@ -957,7 +957,7 @@ void EnTa_TalkAfterCuccoGameFirstWon(EnTa* this, PlayState* play) {
|
||||
Message_CloseTextbox(play);
|
||||
this->stateFlags &= ~TALON_STATE_FLAG_GIVING_MILK_REFILL;
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -311,7 +311,7 @@ void func_80B20768(EnToryo* this, PlayState* play) {
|
||||
this->actor.parent = NULL;
|
||||
this->unk_1E4 = 5;
|
||||
} 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;
|
||||
}
|
||||
@@ -330,7 +330,7 @@ void func_80B20768(EnToryo* this, PlayState* play) {
|
||||
Actor_GetScreenPos(play, &this->actor, &sp32, &sp30);
|
||||
if ((sp32 >= 0) && (sp32 < 0x141) && (sp30 >= 0) && (sp30 < 0xF1)) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -511,7 +511,7 @@ void func_80B4BF2C(EnZl1* this, PlayState* play) {
|
||||
if ((Message_GetState(msgCtx) == TEXT_STATE_EVENT) && Message_ShouldAdvance(play)) {
|
||||
this->actor.textId = 0xFFFF;
|
||||
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.stateTimer = 4;
|
||||
this->unk_1E2++;
|
||||
@@ -526,7 +526,7 @@ void func_80B4BF2C(EnZl1* this, PlayState* play) {
|
||||
this->actor.parent = NULL;
|
||||
this->unk_1E2++;
|
||||
} 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;
|
||||
case 3:
|
||||
|
||||
@@ -1607,7 +1607,7 @@ void EnZl2_Init(Actor* thisx, PlayState* play) {
|
||||
Audio_SetSfxBanksMute(0x6F);
|
||||
break;
|
||||
case 4:
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2482,7 +2482,7 @@ s32 func_80B59698(EnZl3* this, PlayState* play) {
|
||||
u8 spawn = play->spawn;
|
||||
|
||||
if ((func_80B54DB4(this) == 0x20) && (spawn == 0) &&
|
||||
((gSaveContext.timer2Value <= 0) || (gSaveContext.timer2State == 0))) {
|
||||
((gSaveContext.subTimerSeconds <= 0) || (gSaveContext.subTimerState == SUBTIMER_STATE_OFF))) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -2497,7 +2497,7 @@ s32 func_80B59768(EnZl3* this, PlayState* play) {
|
||||
if (cond) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -2524,7 +2524,7 @@ void func_80B59828(EnZl3* this, PlayState* play) {
|
||||
}
|
||||
|
||||
if (func_80B59698(this, play) != 0) {
|
||||
func_80088AA0(180);
|
||||
Interface_SetSubTimer(180);
|
||||
func_80B53468();
|
||||
gSaveContext.healthAccumulator = 320;
|
||||
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
|
||||
|
||||
Flags_SetSwitch(play, 0x36);
|
||||
func_80088AA0(180);
|
||||
Interface_SetSubTimer(180);
|
||||
func_80B54EA4(this, play);
|
||||
func_80B53614(this, play);
|
||||
CLEAR_EVENTCHKINF(EVENTCHKINF_C7);
|
||||
@@ -2657,7 +2657,7 @@ void EnZl3_Init(Actor* thisx, PlayState* play) {
|
||||
|
||||
switch (func_80B54DD4(this)) {
|
||||
case 1:
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
break;
|
||||
case 3:
|
||||
func_80B59A80(this, play);
|
||||
|
||||
@@ -1114,7 +1114,7 @@ s32 EnZl4_CsMakePlan(EnZl4* this, PlayState* play) {
|
||||
Camera_ChangeSetting(GET_ACTIVE_CAM(play), CAM_SET_NORMAL0);
|
||||
this->talkState = 7;
|
||||
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);
|
||||
play->msgCtx.stateTimer = 4;
|
||||
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);
|
||||
this->talkState++;
|
||||
} 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);
|
||||
}
|
||||
// no break here is required for matching
|
||||
|
||||
@@ -4982,7 +4982,7 @@ void Fishing_HandleOwnerDialog(Fishing* this, PlayState* play) {
|
||||
} else {
|
||||
if ((D_80B7E078 >= 60.0f) && !(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;
|
||||
}
|
||||
}
|
||||
@@ -5043,7 +5043,7 @@ void Fishing_HandleOwnerDialog(Fishing* this, PlayState* play) {
|
||||
if (Actor_HasParent(&this->actor, play)) {
|
||||
this->unk_15C = 24;
|
||||
} 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;
|
||||
|
||||
|
||||
@@ -53,37 +53,37 @@ static s16 sObjectIds[] = {
|
||||
|
||||
// Indices passed to the item table in z_draw.c
|
||||
static s16 sDrawItemIndices[] = {
|
||||
GID_BOTTLE, // ITEM_ETC_BOTTLE
|
||||
GID_LETTER_RUTO, // ITEM_ETC_LETTER
|
||||
GID_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN
|
||||
GID_QUIVER_40, // ITEM_ETC_QUIVER
|
||||
GID_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER
|
||||
GID_SCALE_GOLDEN, // ITEM_ETC_SCALE_GOLD
|
||||
GID_KEY_SMALL, // ITEM_ETC_KEY_SMALL
|
||||
GID_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE
|
||||
GID_RUPEE_GREEN, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME
|
||||
GID_RUPEE_BLUE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME
|
||||
GID_RUPEE_RED, // ITEM_ETC_RUPEE_RED_CHEST_GAME
|
||||
GID_RUPEE_PURPLE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME
|
||||
GID_HEART_PIECE, // ITEM_ETC_HEART_PIECE_CHEST_GAME
|
||||
GID_KEY_SMALL, // ITEM_ETC_KEY_SMALL_CHEST_GAME
|
||||
GID_BOTTLE_EMPTY, // ITEM_ETC_BOTTLE
|
||||
GID_BOTTLE_RUTOS_LETTER, // ITEM_ETC_LETTER
|
||||
GID_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN
|
||||
GID_QUIVER_40, // ITEM_ETC_QUIVER
|
||||
GID_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER
|
||||
GID_SCALE_GOLDEN, // ITEM_ETC_SCALE_GOLD
|
||||
GID_SMALL_KEY, // ITEM_ETC_KEY_SMALL
|
||||
GID_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE
|
||||
GID_RUPEE_GREEN, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME
|
||||
GID_RUPEE_BLUE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME
|
||||
GID_RUPEE_RED, // ITEM_ETC_RUPEE_RED_CHEST_GAME
|
||||
GID_RUPEE_PURPLE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME
|
||||
GID_HEART_PIECE, // ITEM_ETC_HEART_PIECE_CHEST_GAME
|
||||
GID_SMALL_KEY, // ITEM_ETC_KEY_SMALL_CHEST_GAME
|
||||
};
|
||||
|
||||
static s16 sGetItemIds[] = {
|
||||
GI_BOTTLE, // ITEM_ETC_BOTTLE
|
||||
GI_LETTER_RUTO, // ITEM_ETC_LETTER
|
||||
GI_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN
|
||||
GI_QUIVER_40, // ITEM_ETC_QUIVER
|
||||
GI_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER
|
||||
GI_SCALE_GOLD, // ITEM_ETC_SCALE_GOLD
|
||||
GI_KEY_SMALL, // ITEM_ETC_KEY_SMALL
|
||||
GI_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE
|
||||
GI_NONE, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_RUPEE_RED_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_HEART_PIECE_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_KEY_SMALL_CHEST_GAME
|
||||
GI_BOTTLE_EMPTY, // ITEM_ETC_BOTTLE
|
||||
GI_BOTTLE_RUTOS_LETTER, // ITEM_ETC_LETTER
|
||||
GI_SHIELD_HYLIAN, // ITEM_ETC_SHIELD_HYLIAN
|
||||
GI_QUIVER_40, // ITEM_ETC_QUIVER
|
||||
GI_SCALE_SILVER, // ITEM_ETC_SCALE_SILVER
|
||||
GI_SCALE_GOLDEN, // ITEM_ETC_SCALE_GOLD
|
||||
GI_SMALL_KEY, // ITEM_ETC_KEY_SMALL
|
||||
GI_ARROW_FIRE, // ITEM_ETC_ARROW_FIRE
|
||||
GI_NONE, // ITEM_ETC_RUPEE_GREEN_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_RUPEE_BLUE_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_RUPEE_RED_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_RUPEE_PURPLE_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_HEART_PIECE_CHEST_GAME
|
||||
GI_NONE, // ITEM_ETC_KEY_SMALL_CHEST_GAME
|
||||
};
|
||||
|
||||
void ItemEtcetera_SetupAction(ItemEtcetera* this, ItemEtceteraActionFunc actionFunc) {
|
||||
|
||||
@@ -180,7 +180,7 @@ void ItemOcarina_WaitInWater(ItemOcarina* this, PlayState* play) {
|
||||
this->actionFunc = ItemOcarina_StartSoTCutscene;
|
||||
this->actor.draw = NULL;
|
||||
} 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) {
|
||||
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_8002ED80(thisx, play, 0);
|
||||
GetItem_Draw(play, GID_OCARINA_TIME);
|
||||
GetItem_Draw(play, GID_OCARINA_OF_TIME);
|
||||
}
|
||||
|
||||
@@ -538,12 +538,12 @@ void ObjBean_SetupWaitForBean(ObjBean* this) {
|
||||
|
||||
void ObjBean_WaitForBean(ObjBean* this, PlayState* 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);
|
||||
Flags_SetSwitch(play, this->dyna.actor.params & 0x3F);
|
||||
}
|
||||
} else {
|
||||
func_8002F298(&this->dyna.actor, play, 40.0f, EXCH_ITEM_BEAN);
|
||||
func_8002F298(&this->dyna.actor, play, 40.0f, EXCH_ITEM_MAGIC_BEAN);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -49,14 +49,14 @@ void ObjRoomtimer_Init(Actor* thisx, PlayState* play) {
|
||||
void ObjRoomtimer_Destroy(Actor* thisx, PlayState* play) {
|
||||
ObjRoomtimer* this = (ObjRoomtimer*)thisx;
|
||||
|
||||
if ((this->actor.params != 0x3FF) && (gSaveContext.timer1Value > 0)) {
|
||||
gSaveContext.timer1State = 10;
|
||||
if ((this->actor.params != 0x3FF) && (gSaveContext.timerSeconds > 0)) {
|
||||
gSaveContext.timerState = TIMER_STATE_STOP;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80B9D054(ObjRoomtimer* this, PlayState* play) {
|
||||
if (this->actor.params != 0x3FF) {
|
||||
func_80088B34(this->actor.params);
|
||||
Interface_SetTimer(this->actor.params);
|
||||
}
|
||||
|
||||
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) {
|
||||
if (Flags_GetTempClear(play, this->actor.room)) {
|
||||
if (this->actor.params != 0x3FF) {
|
||||
gSaveContext.timer1State = 10;
|
||||
gSaveContext.timerState = TIMER_STATE_STOP;
|
||||
}
|
||||
Flags_SetClear(play, this->actor.room);
|
||||
Flags_SetSwitch(play, this->switchFlag);
|
||||
func_80078884(NA_SE_SY_CORRECT_CHIME);
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
if ((this->actor.params != 0x3FF) && (gSaveContext.timer1Value == 0)) {
|
||||
Audio_PlaySfxGeneral(NA_SE_OC_ABYSS, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
Play_TriggerVoidOut(play);
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if ((this->actor.params != 0x3FF) && (gSaveContext.timerSeconds == 0)) {
|
||||
Audio_PlaySfxGeneral(NA_SE_OC_ABYSS, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
Play_TriggerVoidOut(play);
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -175,7 +175,7 @@ void ObjSyokudai_Update(Actor* thisx, PlayState* play2) {
|
||||
if (dmgFlags & (DMG_FIRE | DMG_ARROW_NORMAL)) {
|
||||
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);
|
||||
tipToFlame.y -= 67.0f;
|
||||
if ((SQ(tipToFlame.x) + SQ(tipToFlame.y) + SQ(tipToFlame.z)) < SQ(20.0f)) {
|
||||
|
||||
@@ -495,8 +495,8 @@ static u16 D_8085361C[] = {
|
||||
static GetItemEntry sGetItemTable[] = {
|
||||
// GI_BOMBS_5
|
||||
GET_ITEM(ITEM_BOMBS_5, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
|
||||
// GI_NUTS_5
|
||||
GET_ITEM(ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_NUTS_5
|
||||
GET_ITEM(ITEM_DEKU_NUTS_5, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
|
||||
// GI_BOMBCHUS_10
|
||||
GET_ITEM(ITEM_BOMBCHU, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_BOW
|
||||
@@ -505,74 +505,74 @@ static GetItemEntry sGetItemTable[] = {
|
||||
GET_ITEM(ITEM_SLINGSHOT, OBJECT_GI_PACHINKO, GID_SLINGSHOT, 0x30, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOOMERANG
|
||||
GET_ITEM(ITEM_BOOMERANG, OBJECT_GI_BOOMERANG, GID_BOOMERANG, 0x35, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_STICKS_1
|
||||
GET_ITEM(ITEM_STICK, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_STICKS_1
|
||||
GET_ITEM(ITEM_DEKU_STICK, OBJECT_GI_STICK, GID_DEKU_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
|
||||
// GI_HOOKSHOT
|
||||
GET_ITEM(ITEM_HOOKSHOT, OBJECT_GI_HOOKSHOT, GID_HOOKSHOT, 0x36, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_LONGSHOT
|
||||
GET_ITEM(ITEM_LONGSHOT, OBJECT_GI_HOOKSHOT, GID_LONGSHOT, 0x4F, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_LENS
|
||||
GET_ITEM(ITEM_LENS, OBJECT_GI_GLASSES, GID_LENS, 0x39, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_LETTER_ZELDA
|
||||
GET_ITEM(ITEM_LETTER_ZELDA, OBJECT_GI_LETTER, GID_LETTER_ZELDA, 0x69, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_OCARINA_OOT
|
||||
GET_ITEM(ITEM_OCARINA_TIME, OBJECT_GI_OCARINA, GID_OCARINA_TIME, 0x3A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_LENS_OF_TRUTH
|
||||
GET_ITEM(ITEM_LENS_OF_TRUTH, OBJECT_GI_GLASSES, GID_LENS_OF_TRUTH, 0x39, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_ZELDAS_LETTER
|
||||
GET_ITEM(ITEM_ZELDAS_LETTER, OBJECT_GI_LETTER, GID_ZELDAS_LETTER, 0x69, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_OCARINA_OF_TIME
|
||||
GET_ITEM(ITEM_OCARINA_OF_TIME, OBJECT_GI_OCARINA, GID_OCARINA_OF_TIME, 0x3A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_HAMMER
|
||||
GET_ITEM(ITEM_HAMMER, OBJECT_GI_HAMMER, GID_HAMMER, 0x38, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_COJIRO
|
||||
GET_ITEM(ITEM_COJIRO, OBJECT_GI_NIWATORI, GID_COJIRO, 0x02, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE
|
||||
GET_ITEM(ITEM_BOTTLE, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x42, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_POTION_RED
|
||||
GET_ITEM(ITEM_POTION_RED, OBJECT_GI_LIQUID, GID_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_POTION_GREEN
|
||||
GET_ITEM(ITEM_POTION_GREEN, OBJECT_GI_LIQUID, GID_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_POTION_BLUE
|
||||
GET_ITEM(ITEM_POTION_BLUE, OBJECT_GI_LIQUID, GID_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_FAIRY
|
||||
GET_ITEM(ITEM_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE, 0x46, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MILK_BOTTLE
|
||||
GET_ITEM(ITEM_MILK_BOTTLE, OBJECT_GI_MILK, GID_MILK, 0x98, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_LETTER_RUTO
|
||||
GET_ITEM(ITEM_LETTER_RUTO, OBJECT_GI_BOTTLE_LETTER, GID_LETTER_RUTO, 0x99, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BEAN
|
||||
GET_ITEM(ITEM_BEAN, OBJECT_GI_BEAN, GID_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_BOTTLE_EMPTY
|
||||
GET_ITEM(ITEM_BOTTLE_EMPTY, OBJECT_GI_BOTTLE, GID_BOTTLE_EMPTY, 0x42, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_POTION_RED
|
||||
GET_ITEM(ITEM_BOTTLE_POTION_RED, OBJECT_GI_LIQUID, GID_BOTTLE_POTION_RED, 0x43, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_POTION_GREEN
|
||||
GET_ITEM(ITEM_BOTTLE_POTION_GREEN, OBJECT_GI_LIQUID, GID_BOTTLE_POTION_GREEN, 0x44, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_POTION_BLUE
|
||||
GET_ITEM(ITEM_BOTTLE_POTION_BLUE, OBJECT_GI_LIQUID, GID_BOTTLE_POTION_BLUE, 0x45, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_FAIRY
|
||||
GET_ITEM(ITEM_BOTTLE_FAIRY, OBJECT_GI_BOTTLE, GID_BOTTLE_EMPTY, 0x46, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_MILK_FULL
|
||||
GET_ITEM(ITEM_BOTTLE_MILK_FULL, OBJECT_GI_MILK, GID_BOTTLE_MILK_FULL, 0x98, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_RUTOS_LETTER
|
||||
GET_ITEM(ITEM_BOTTLE_RUTOS_LETTER, OBJECT_GI_BOTTLE_LETTER, GID_BOTTLE_RUTOS_LETTER, 0x99, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MAGIC_BEAN
|
||||
GET_ITEM(ITEM_MAGIC_BEAN, OBJECT_GI_BEAN, GID_MAGIC_BEAN, 0x48, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_MASK_SKULL
|
||||
GET_ITEM(ITEM_MASK_SKULL, OBJECT_GI_SKJ_MASK, GID_MASK_SKULL, 0x10, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MASK_SPOOKY
|
||||
GET_ITEM(ITEM_MASK_SPOOKY, OBJECT_GI_REDEAD_MASK, GID_MASK_SPOOKY, 0x11, 0x80, CHEST_ANIM_LONG),
|
||||
// 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
|
||||
GET_ITEM(ITEM_MASK_KEATON, OBJECT_GI_KI_TAN_MASK, GID_MASK_KEATON, 0x12, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MASK_BUNNY
|
||||
GET_ITEM(ITEM_MASK_BUNNY, OBJECT_GI_RABIT_MASK, GID_MASK_BUNNY, 0x13, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MASK_BUNNY_HOOD
|
||||
GET_ITEM(ITEM_MASK_BUNNY_HOOD, OBJECT_GI_RABIT_MASK, GID_MASK_BUNNY_HOOD, 0x13, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MASK_TRUTH
|
||||
GET_ITEM(ITEM_MASK_TRUTH, OBJECT_GI_TRUTH_MASK, GID_MASK_TRUTH, 0x17, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_POCKET_EGG
|
||||
GET_ITEM(ITEM_POCKET_EGG, OBJECT_GI_EGG, GID_EGG, 0x01, 0x80, CHEST_ANIM_LONG),
|
||||
// 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
|
||||
GET_ITEM(ITEM_ODD_MUSHROOM, OBJECT_GI_MUSHROOM, GID_ODD_MUSHROOM, 0x03, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_ODD_POTION
|
||||
GET_ITEM(ITEM_ODD_POTION, OBJECT_GI_POWDER, GID_ODD_POTION, 0x04, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SAW
|
||||
GET_ITEM(ITEM_SAW, OBJECT_GI_SAW, GID_SAW, 0x05, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SWORD_BROKEN
|
||||
GET_ITEM(ITEM_SWORD_BROKEN, OBJECT_GI_BROKENSWORD, GID_SWORD_BROKEN, 0x08, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_POACHERS_SAW
|
||||
GET_ITEM(ITEM_POACHERS_SAW, OBJECT_GI_SAW, GID_POACHERS_SAW, 0x05, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BROKEN_GORONS_SWORD
|
||||
GET_ITEM(ITEM_BROKEN_GORONS_SWORD, OBJECT_GI_BROKENSWORD, GID_BROKEN_GORONS_SWORD, 0x08, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_PRESCRIPTION
|
||||
GET_ITEM(ITEM_PRESCRIPTION, OBJECT_GI_PRESCRIPTION, GID_PRESCRIPTION, 0x09, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_FROG
|
||||
GET_ITEM(ITEM_FROG, OBJECT_GI_FROG, GID_FROG, 0x0D, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_EYEDROPS
|
||||
GET_ITEM(ITEM_EYEDROPS, OBJECT_GI_EYE_LOTION, GID_EYEDROPS, 0x0E, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_EYEBALL_FROG
|
||||
GET_ITEM(ITEM_EYEBALL_FROG, OBJECT_GI_FROG, GID_EYEBALL_FROG, 0x0D, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_EYE_DROPS
|
||||
GET_ITEM(ITEM_EYE_DROPS, OBJECT_GI_EYE_LOTION, GID_EYE_DROPS, 0x0E, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_CLAIM_CHECK
|
||||
GET_ITEM(ITEM_CLAIM_CHECK, OBJECT_GI_TICKETSTONE, GID_CLAIM_CHECK, 0x0A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SWORD_KOKIRI
|
||||
GET_ITEM(ITEM_SWORD_KOKIRI, OBJECT_GI_SWORD_1, GID_SWORD_KOKIRI, 0xA4, 0x80, CHEST_ANIM_LONG),
|
||||
// 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
|
||||
GET_ITEM(ITEM_SHIELD_DEKU, OBJECT_GI_SHIELD_1, GID_SHIELD_DEKU, 0x4C, 0xA0, CHEST_ANIM_SHORT),
|
||||
// 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),
|
||||
// GI_BOMB_BAG_40
|
||||
GET_ITEM(ITEM_BOMB_BAG_40, OBJECT_GI_BOMBPOUCH, GID_BOMB_BAG_40, 0x5A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_GAUNTLETS_SILVER
|
||||
GET_ITEM(ITEM_GAUNTLETS_SILVER, OBJECT_GI_GLOVES, GID_GAUNTLETS_SILVER, 0x5B, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_GAUNTLETS_GOLD
|
||||
GET_ITEM(ITEM_GAUNTLETS_GOLD, OBJECT_GI_GLOVES, GID_GAUNTLETS_GOLD, 0x5C, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SILVER_GAUNTLETS
|
||||
GET_ITEM(ITEM_STRENGTH_SILVER_GAUNTLETS, OBJECT_GI_GLOVES, GID_SILVER_GAUNTLETS, 0x5B, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_GOLD_GAUNTLETS
|
||||
GET_ITEM(ITEM_STRENGTH_GOLD_GAUNTLETS, OBJECT_GI_GLOVES, GID_GOLD_GAUNTLETS, 0x5C, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SCALE_SILVER
|
||||
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),
|
||||
// GI_STONE_OF_AGONY
|
||||
GET_ITEM(ITEM_STONE_OF_AGONY, OBJECT_GI_MAP, GID_STONE_OF_AGONY, 0x68, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_GERUDO_CARD
|
||||
GET_ITEM(ITEM_GERUDO_CARD, OBJECT_GI_GERUDO, GID_GERUDO_CARD, 0x7B, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_GERUDOS_CARD
|
||||
GET_ITEM(ITEM_GERUDOS_CARD, OBJECT_GI_GERUDO, GID_GERUDOS_CARD, 0x7B, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_OCARINA_FAIRY
|
||||
GET_ITEM(ITEM_OCARINA_FAIRY, OBJECT_GI_OCARINA_0, GID_OCARINA_FAIRY, 0x3A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SEEDS_5
|
||||
GET_ITEM(ITEM_SEEDS, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_SEEDS_5
|
||||
GET_ITEM(ITEM_DEKU_SEEDS, OBJECT_GI_SEED, GID_DEKU_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT),
|
||||
// GI_HEART_CONTAINER
|
||||
GET_ITEM(ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_HEART_PIECE
|
||||
GET_ITEM(ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xC2, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_KEY_BOSS
|
||||
GET_ITEM(ITEM_KEY_BOSS, OBJECT_GI_BOSSKEY, GID_KEY_BOSS, 0xC7, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOSS_KEY
|
||||
GET_ITEM(ITEM_DUNGEON_BOSS_KEY, OBJECT_GI_BOSSKEY, GID_BOSS_KEY, 0xC7, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_COMPASS
|
||||
GET_ITEM(ITEM_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, 0x67, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MAP
|
||||
GET_ITEM(ITEM_DUNGEON_COMPASS, OBJECT_GI_COMPASS, GID_COMPASS, 0x67, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_DUNGEON_MAP
|
||||
GET_ITEM(ITEM_DUNGEON_MAP, OBJECT_GI_MAP, GID_DUNGEON_MAP, 0x66, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_KEY_SMALL
|
||||
GET_ITEM(ITEM_KEY_SMALL, OBJECT_GI_KEY, GID_KEY_SMALL, 0x60, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_MAGIC_SMALL
|
||||
GET_ITEM(ITEM_MAGIC_SMALL, OBJECT_GI_MAGICPOT, GID_MAGIC_SMALL, 0x52, 0x6F, CHEST_ANIM_SHORT),
|
||||
// GI_MAGIC_LARGE
|
||||
GET_ITEM(ITEM_MAGIC_LARGE, OBJECT_GI_MAGICPOT, GID_MAGIC_LARGE, 0x52, 0x6E, CHEST_ANIM_SHORT),
|
||||
// GI_SMALL_KEY
|
||||
GET_ITEM(ITEM_SMALL_KEY, OBJECT_GI_KEY, GID_SMALL_KEY, 0x60, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_MAGIC_JAR_SMALL
|
||||
GET_ITEM(ITEM_MAGIC_JAR_SMALL, OBJECT_GI_MAGICPOT, GID_MAGIC_JAR_SMALL, 0x52, 0x6F, CHEST_ANIM_SHORT),
|
||||
// GI_MAGIC_JAR_LARGE
|
||||
GET_ITEM(ITEM_MAGIC_JAR_BIG, OBJECT_GI_MAGICPOT, GID_MAGIC_JAR_LARGE, 0x52, 0x6E, CHEST_ANIM_SHORT),
|
||||
// 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
|
||||
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
|
||||
GET_ITEM(ITEM_WEIRD_EGG, OBJECT_GI_EGG, GID_EGG, 0x9A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_RECOVERY_HEART
|
||||
GET_ITEM(ITEM_RECOVERY_HEART, OBJECT_GI_HEART, GID_RECOVERY_HEART, 0x55, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_ARROWS_SMALL
|
||||
GET_ITEM(ITEM_ARROWS_SMALL, OBJECT_GI_ARROW, GID_ARROWS_SMALL, 0xE6, 0x48, CHEST_ANIM_SHORT),
|
||||
// GI_ARROWS_MEDIUM
|
||||
GET_ITEM(ITEM_ARROWS_MEDIUM, OBJECT_GI_ARROW, GID_ARROWS_MEDIUM, 0xE6, 0x49, CHEST_ANIM_SHORT),
|
||||
// GI_ARROWS_LARGE
|
||||
GET_ITEM(ITEM_ARROWS_LARGE, OBJECT_GI_ARROW, GID_ARROWS_LARGE, 0xE6, 0x4A, CHEST_ANIM_SHORT),
|
||||
// GI_ARROWS_5
|
||||
GET_ITEM(ITEM_ARROWS_5, OBJECT_GI_ARROW, GID_ARROWS_5, 0xE6, 0x48, CHEST_ANIM_SHORT),
|
||||
// GI_ARROWS_10
|
||||
GET_ITEM(ITEM_ARROWS_10, OBJECT_GI_ARROW, GID_ARROWS_10, 0xE6, 0x49, CHEST_ANIM_SHORT),
|
||||
// GI_ARROWS_30
|
||||
GET_ITEM(ITEM_ARROWS_30, OBJECT_GI_ARROW, GID_ARROWS_30, 0xE6, 0x4A, CHEST_ANIM_SHORT),
|
||||
// GI_RUPEE_GREEN
|
||||
GET_ITEM(ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0x6F, 0x00, CHEST_ANIM_SHORT),
|
||||
// GI_RUPEE_BLUE
|
||||
@@ -652,21 +652,21 @@ static GetItemEntry sGetItemTable[] = {
|
||||
// GI_HEART_CONTAINER_2
|
||||
GET_ITEM(ITEM_HEART_CONTAINER, OBJECT_GI_HEARTS, GID_HEART_CONTAINER, 0xC6, 0x80, CHEST_ANIM_LONG),
|
||||
// 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
|
||||
GET_ITEM(ITEM_MASK_GORON, OBJECT_GI_GOLONMASK, GID_MASK_GORON, 0x14, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MASK_ZORA
|
||||
GET_ITEM(ITEM_MASK_ZORA, OBJECT_GI_ZORAMASK, GID_MASK_ZORA, 0x15, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_MASK_GERUDO
|
||||
GET_ITEM(ITEM_MASK_GERUDO, OBJECT_GI_GERUDOMASK, GID_MASK_GERUDO, 0x16, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BRACELET
|
||||
GET_ITEM(ITEM_BRACELET, OBJECT_GI_BRACELET, GID_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_GORONS_BRACELET
|
||||
GET_ITEM(ITEM_STRENGTH_GORONS_BRACELET, OBJECT_GI_BRACELET, GID_GORONS_BRACELET, 0x79, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_RUPEE_PURPLE
|
||||
GET_ITEM(ITEM_RUPEE_PURPLE, OBJECT_GI_RUPY, GID_RUPEE_PURPLE, 0xF1, 0x14, CHEST_ANIM_SHORT),
|
||||
// GI_RUPEE_GOLD
|
||||
GET_ITEM(ITEM_RUPEE_GOLD, OBJECT_GI_RUPY, GID_RUPEE_GOLD, 0xF2, 0x13, CHEST_ANIM_SHORT),
|
||||
// GI_SWORD_BGS
|
||||
GET_ITEM(ITEM_SWORD_BGS, OBJECT_GI_LONGSWORD, GID_SWORD_BGS, 0x0C, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_SWORD_BIGGORON
|
||||
GET_ITEM(ITEM_SWORD_BIGGORON, OBJECT_GI_LONGSWORD, GID_SWORD_BIGGORON, 0x0C, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_ARROW_FIRE
|
||||
GET_ITEM(ITEM_ARROW_FIRE, OBJECT_GI_M_ARROW, GID_ARROW_FIRE, 0x70, 0x80, CHEST_ANIM_LONG),
|
||||
// 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),
|
||||
// GI_BULLET_BAG_40
|
||||
GET_ITEM(ITEM_BULLET_BAG_40, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG, 0x07, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_STICKS_5
|
||||
GET_ITEM(ITEM_STICKS_5, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
|
||||
// GI_STICKS_10
|
||||
GET_ITEM(ITEM_STICKS_10, OBJECT_GI_STICK, GID_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
|
||||
// GI_NUTS_5_2
|
||||
GET_ITEM(ITEM_NUTS_5, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
|
||||
// GI_NUTS_10
|
||||
GET_ITEM(ITEM_NUTS_10, OBJECT_GI_NUTS, GID_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_STICKS_5
|
||||
GET_ITEM(ITEM_DEKU_STICKS_5, OBJECT_GI_STICK, GID_DEKU_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_STICKS_10
|
||||
GET_ITEM(ITEM_DEKU_STICKS_10, OBJECT_GI_STICK, GID_DEKU_STICK, 0x37, 0x0D, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_NUTS_5_2
|
||||
GET_ITEM(ITEM_DEKU_NUTS_5, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_NUTS_10
|
||||
GET_ITEM(ITEM_DEKU_NUTS_10, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0x34, 0x0C, CHEST_ANIM_SHORT),
|
||||
// GI_BOMBS_1
|
||||
GET_ITEM(ITEM_BOMB, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
|
||||
// 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),
|
||||
// GI_BOMBS_30
|
||||
GET_ITEM(ITEM_BOMBS_30, OBJECT_GI_BOMB_1, GID_BOMB, 0x32, 0x59, CHEST_ANIM_SHORT),
|
||||
// GI_SEEDS_30
|
||||
GET_ITEM(ITEM_SEEDS_30, OBJECT_GI_SEED, GID_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_SEEDS_30
|
||||
GET_ITEM(ITEM_DEKU_SEEDS_30, OBJECT_GI_SEED, GID_DEKU_SEEDS, 0xDC, 0x50, CHEST_ANIM_SHORT),
|
||||
// GI_BOMBCHUS_5
|
||||
GET_ITEM(ITEM_BOMBCHUS_5, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_BOMBCHUS_20
|
||||
GET_ITEM(ITEM_BOMBCHUS_20, OBJECT_GI_BOMB_2, GID_BOMBCHU, 0x33, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_FISH
|
||||
GET_ITEM(ITEM_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BUGS
|
||||
GET_ITEM(ITEM_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BLUE_FIRE
|
||||
GET_ITEM(ITEM_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_POE
|
||||
GET_ITEM(ITEM_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BIG_POE
|
||||
GET_ITEM(ITEM_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, 0xF9, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_FISH
|
||||
GET_ITEM(ITEM_BOTTLE_FISH, OBJECT_GI_FISH, GID_FISH, 0x47, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_BUGS
|
||||
GET_ITEM(ITEM_BOTTLE_BUG, OBJECT_GI_INSECT, GID_BUG, 0x7A, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_BLUE_FIRE
|
||||
GET_ITEM(ITEM_BOTTLE_BLUE_FIRE, OBJECT_GI_FIRE, GID_BLUE_FIRE, 0x5D, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_POE
|
||||
GET_ITEM(ITEM_BOTTLE_POE, OBJECT_GI_GHOST, GID_POE, 0x97, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_BOTTLE_BIG_POE
|
||||
GET_ITEM(ITEM_BOTTLE_BIG_POE, OBJECT_GI_GHOST, GID_BIG_POE, 0xF9, 0x80, CHEST_ANIM_LONG),
|
||||
// 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
|
||||
GET_ITEM(ITEM_RUPEE_GREEN, OBJECT_GI_RUPY, GID_RUPEE_GREEN, 0xF4, 0x00, CHEST_ANIM_SHORT),
|
||||
// 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),
|
||||
// GI_HEART_PIECE_WIN
|
||||
GET_ITEM(ITEM_HEART_PIECE_2, OBJECT_GI_HEARTS, GID_HEART_PIECE, 0xFA, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_STICK_UPGRADE_20
|
||||
GET_ITEM(ITEM_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_STICK, 0x90, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_STICK_UPGRADE_30
|
||||
GET_ITEM(ITEM_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_STICK, 0x91, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_NUT_UPGRADE_30
|
||||
GET_ITEM(ITEM_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_NUT_UPGRADE_40
|
||||
GET_ITEM(ITEM_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_STICK_UPGRADE_20
|
||||
GET_ITEM(ITEM_DEKU_STICK_UPGRADE_20, OBJECT_GI_STICK, GID_DEKU_STICK, 0x90, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_STICK_UPGRADE_30
|
||||
GET_ITEM(ITEM_DEKU_STICK_UPGRADE_30, OBJECT_GI_STICK, GID_DEKU_STICK, 0x91, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_NUT_UPGRADE_30
|
||||
GET_ITEM(ITEM_DEKU_NUT_UPGRADE_30, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0xA7, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_DEKU_NUT_UPGRADE_40
|
||||
GET_ITEM(ITEM_DEKU_NUT_UPGRADE_40, OBJECT_GI_NUTS, GID_DEKU_NUTS, 0xA8, 0x80, CHEST_ANIM_SHORT),
|
||||
// GI_BULLET_BAG_50
|
||||
GET_ITEM(ITEM_BULLET_BAG_50, OBJECT_GI_DEKUPOUCH, GID_BULLET_BAG_50, 0x6C, 0x80, CHEST_ANIM_LONG),
|
||||
// GI_ICE_TRAP
|
||||
@@ -1151,46 +1151,46 @@ static u8 D_80853E7C[] = {
|
||||
|
||||
// Used to map item IDs to item actions
|
||||
static s8 sItemActions[] = {
|
||||
PLAYER_IA_STICK, // ITEM_STICK
|
||||
PLAYER_IA_NUT, // ITEM_NUT
|
||||
PLAYER_IA_DEKU_STICK, // ITEM_DEKU_STICK
|
||||
PLAYER_IA_DEKU_NUT, // ITEM_DEKU_NUT
|
||||
PLAYER_IA_BOMB, // ITEM_BOMB
|
||||
PLAYER_IA_BOW, // ITEM_BOW
|
||||
PLAYER_IA_BOW_FIRE, // ITEM_ARROW_FIRE
|
||||
PLAYER_IA_DINS_FIRE, // ITEM_DINS_FIRE
|
||||
PLAYER_IA_SLINGSHOT, // ITEM_SLINGSHOT
|
||||
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_HOOKSHOT, // ITEM_HOOKSHOT
|
||||
PLAYER_IA_LONGSHOT, // ITEM_LONGSHOT
|
||||
PLAYER_IA_BOW_ICE, // ITEM_ARROW_ICE
|
||||
PLAYER_IA_FARORES_WIND, // ITEM_FARORES_WIND
|
||||
PLAYER_IA_BOOMERANG, // ITEM_BOOMERANG
|
||||
PLAYER_IA_LENS, // ITEM_LENS
|
||||
PLAYER_IA_BEAN, // ITEM_BEAN
|
||||
PLAYER_IA_LENS_OF_TRUTH, // ITEM_LENS_OF_TRUTH
|
||||
PLAYER_IA_MAGIC_BEAN, // ITEM_MAGIC_BEAN
|
||||
PLAYER_IA_HAMMER, // ITEM_HAMMER
|
||||
PLAYER_IA_BOW_LIGHT, // ITEM_ARROW_LIGHT
|
||||
PLAYER_IA_NAYRUS_LOVE, // ITEM_NAYRUS_LOVE
|
||||
PLAYER_IA_BOTTLE, // ITEM_BOTTLE
|
||||
PLAYER_IA_BOTTLE_POTION_RED, // ITEM_POTION_RED
|
||||
PLAYER_IA_BOTTLE_POTION_GREEN, // ITEM_POTION_GREEN
|
||||
PLAYER_IA_BOTTLE_POTION_BLUE, // ITEM_POTION_BLUE
|
||||
PLAYER_IA_BOTTLE_FAIRY, // ITEM_FAIRY
|
||||
PLAYER_IA_BOTTLE_FISH, // ITEM_FISH
|
||||
PLAYER_IA_BOTTLE_MILK, // ITEM_MILK_BOTTLE
|
||||
PLAYER_IA_BOTTLE_LETTER, // ITEM_LETTER_RUTO
|
||||
PLAYER_IA_BOTTLE_FIRE, // ITEM_BLUE_FIRE
|
||||
PLAYER_IA_BOTTLE_BUG, // ITEM_BUG
|
||||
PLAYER_IA_BOTTLE_BIG_POE, // ITEM_BIG_POE
|
||||
PLAYER_IA_BOTTLE_MILK_HALF, // ITEM_MILK_HALF
|
||||
PLAYER_IA_BOTTLE_POE, // ITEM_POE
|
||||
PLAYER_IA_BOTTLE, // ITEM_BOTTLE_EMPTY
|
||||
PLAYER_IA_BOTTLE_POTION_RED, // ITEM_BOTTLE_POTION_RED
|
||||
PLAYER_IA_BOTTLE_POTION_GREEN, // ITEM_BOTTLE_POTION_GREEN
|
||||
PLAYER_IA_BOTTLE_POTION_BLUE, // ITEM_BOTTLE_POTION_BLUE
|
||||
PLAYER_IA_BOTTLE_FAIRY, // ITEM_BOTTLE_FAIRY
|
||||
PLAYER_IA_BOTTLE_FISH, // ITEM_BOTTLE_FISH
|
||||
PLAYER_IA_BOTTLE_MILK_FULL, // ITEM_BOTTLE_MILK_FULL
|
||||
PLAYER_IA_BOTTLE_RUTOS_LETTER, // ITEM_BOTTLE_RUTOS_LETTER
|
||||
PLAYER_IA_BOTTLE_FIRE, // ITEM_BOTTLE_BLUE_FIRE
|
||||
PLAYER_IA_BOTTLE_BUG, // ITEM_BOTTLE_BUG
|
||||
PLAYER_IA_BOTTLE_BIG_POE, // ITEM_BOTTLE_BIG_POE
|
||||
PLAYER_IA_BOTTLE_MILK_HALF, // ITEM_BOTTLE_MILK_HALF
|
||||
PLAYER_IA_BOTTLE_POE, // ITEM_BOTTLE_POE
|
||||
PLAYER_IA_WEIRD_EGG, // ITEM_WEIRD_EGG
|
||||
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_SKULL, // ITEM_MASK_SKULL
|
||||
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_ZORA, // ITEM_MASK_ZORA
|
||||
PLAYER_IA_MASK_GERUDO, // ITEM_MASK_GERUDO
|
||||
@@ -1201,18 +1201,18 @@ static s8 sItemActions[] = {
|
||||
PLAYER_IA_COJIRO, // ITEM_COJIRO
|
||||
PLAYER_IA_ODD_MUSHROOM, // ITEM_ODD_MUSHROOM
|
||||
PLAYER_IA_ODD_POTION, // ITEM_ODD_POTION
|
||||
PLAYER_IA_SAW, // ITEM_SAW
|
||||
PLAYER_IA_SWORD_BROKEN, // ITEM_SWORD_BROKEN
|
||||
PLAYER_IA_POACHERS_SAW, // ITEM_POACHERS_SAW
|
||||
PLAYER_IA_BROKEN_GORONS_SWORD, // ITEM_BROKEN_GORONS_SWORD
|
||||
PLAYER_IA_PRESCRIPTION, // ITEM_PRESCRIPTION
|
||||
PLAYER_IA_FROG, // ITEM_FROG
|
||||
PLAYER_IA_EYEDROPS, // ITEM_EYEDROPS
|
||||
PLAYER_IA_FROG, // ITEM_EYEBALL_FROG
|
||||
PLAYER_IA_EYEDROPS, // ITEM_EYE_DROPS
|
||||
PLAYER_IA_CLAIM_CHECK, // ITEM_CLAIM_CHECK
|
||||
PLAYER_IA_BOW_FIRE, // ITEM_BOW_ARROW_FIRE
|
||||
PLAYER_IA_BOW_ICE, // ITEM_BOW_ARROW_ICE
|
||||
PLAYER_IA_BOW_LIGHT, // ITEM_BOW_ARROW_LIGHT
|
||||
PLAYER_IA_BOW_FIRE, // ITEM_BOW_FIRE
|
||||
PLAYER_IA_BOW_ICE, // ITEM_BOW_ICE
|
||||
PLAYER_IA_BOW_LIGHT, // ITEM_BOW_LIGHT
|
||||
PLAYER_IA_SWORD_KOKIRI, // ITEM_SWORD_KOKIRI
|
||||
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) = {
|
||||
@@ -1222,7 +1222,7 @@ static s32 (*D_80853EDC[])(Player* this, PlayState* play) = {
|
||||
func_808349DC, // PLAYER_IA_SWORD_MASTER
|
||||
func_808349DC, // PLAYER_IA_SWORD_KOKIRI
|
||||
func_808349DC, // PLAYER_IA_SWORD_BGS
|
||||
func_8083485C, // PLAYER_IA_STICK
|
||||
func_8083485C, // PLAYER_IA_DEKU_STICK
|
||||
func_8083485C, // PLAYER_IA_HAMMER
|
||||
func_8083501C, // PLAYER_IA_BOW
|
||||
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_NAYRUS_LOVE
|
||||
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_TIME
|
||||
func_8083485C, // PLAYER_IA_OCARINA_OF_TIME
|
||||
func_8083485C, // PLAYER_IA_BOTTLE
|
||||
func_8083485C, // PLAYER_IA_BOTTLE_FISH
|
||||
func_8083485C, // PLAYER_IA_BOTTLE_FIRE
|
||||
func_8083485C, // PLAYER_IA_BOTTLE_BUG
|
||||
func_8083485C, // PLAYER_IA_BOTTLE_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_BLUE
|
||||
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_FAIRY
|
||||
func_8083485C, // PLAYER_IA_LETTER_ZELDA
|
||||
func_8083485C, // PLAYER_IA_ZELDAS_LETTER
|
||||
func_8083485C, // PLAYER_IA_WEIRD_EGG
|
||||
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_CUCCO
|
||||
func_8083485C, // PLAYER_IA_COJIRO
|
||||
func_8083485C, // PLAYER_IA_ODD_MUSHROOM
|
||||
func_8083485C, // PLAYER_IA_ODD_POTION
|
||||
func_8083485C, // PLAYER_IA_SAW
|
||||
func_8083485C, // PLAYER_IA_SWORD_BROKEN
|
||||
func_8083485C, // PLAYER_IA_POACHERS_SAW
|
||||
func_8083485C, // PLAYER_IA_BROKEN_GORONS_SWORD
|
||||
func_8083485C, // PLAYER_IA_PRESCRIPTION
|
||||
func_8083485C, // PLAYER_IA_FROG
|
||||
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_SKULL
|
||||
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_ZORA
|
||||
func_8083485C, // PLAYER_IA_MASK_GERUDO
|
||||
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) = {
|
||||
@@ -1292,7 +1292,7 @@ static void (*D_80853FE8[])(PlayState* play, Player* this) = {
|
||||
func_80833770, // PLAYER_IA_SWORD_MASTER
|
||||
func_80833770, // PLAYER_IA_SWORD_KOKIRI
|
||||
func_80833770, // PLAYER_IA_SWORD_BGS
|
||||
func_8083377C, // PLAYER_IA_STICK
|
||||
func_8083377C, // PLAYER_IA_DEKU_STICK
|
||||
func_80833790, // PLAYER_IA_HAMMER
|
||||
func_8083379C, // PLAYER_IA_BOW
|
||||
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_NAYRUS_LOVE
|
||||
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_TIME
|
||||
func_80833770, // PLAYER_IA_OCARINA_OF_TIME
|
||||
func_80833770, // PLAYER_IA_BOTTLE
|
||||
func_80833770, // PLAYER_IA_BOTTLE_FISH
|
||||
func_80833770, // PLAYER_IA_BOTTLE_FIRE
|
||||
func_80833770, // PLAYER_IA_BOTTLE_BUG
|
||||
func_80833770, // PLAYER_IA_BOTTLE_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_BLUE
|
||||
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_FAIRY
|
||||
func_80833770, // PLAYER_IA_LETTER_ZELDA
|
||||
func_80833770, // PLAYER_IA_ZELDAS_LETTER
|
||||
func_80833770, // PLAYER_IA_WEIRD_EGG
|
||||
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_CUCCO
|
||||
func_80833770, // PLAYER_IA_COJIRO
|
||||
func_80833770, // PLAYER_IA_ODD_MUSHROOM
|
||||
func_80833770, // PLAYER_IA_ODD_POTION
|
||||
func_80833770, // PLAYER_IA_SAW
|
||||
func_80833770, // PLAYER_IA_SWORD_BROKEN
|
||||
func_80833770, // PLAYER_IA_POACHERS_SAW
|
||||
func_80833770, // PLAYER_IA_BROKEN_GORONS_SWORD
|
||||
func_80833770, // PLAYER_IA_PRESCRIPTION
|
||||
func_80833770, // PLAYER_IA_FROG
|
||||
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_SKULL
|
||||
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_ZORA
|
||||
func_80833770, // PLAYER_IA_MASK_GERUDO
|
||||
func_80833770, // PLAYER_IA_MASK_TRUTH
|
||||
func_80833770, // PLAYER_IA_LENS
|
||||
func_80833770, // PLAYER_IA_LENS_OF_TRUTH
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@@ -2411,7 +2411,7 @@ void func_80834298(Player* this, PlayState* play) {
|
||||
((this->heldItemAction == this->itemAction) || (this->stateFlags1 & PLAYER_STATE1_22)) &&
|
||||
(gSaveContext.health != 0) && (play->csCtx.state == CS_STATE_IDLE) && (this->csMode == 0) &&
|
||||
(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);
|
||||
}
|
||||
|
||||
@@ -3147,13 +3147,13 @@ void func_80835F44(PlayState* play, Player* this, s32 item) {
|
||||
((itemAction == PLAYER_IA_HOOKSHOT) || (itemAction == PLAYER_IA_LONGSHOT)))) {
|
||||
|
||||
if ((play->bombchuBowlingStatus == 0) &&
|
||||
(((itemAction == PLAYER_IA_STICK) && (AMMO(ITEM_STICK) == 0)) ||
|
||||
((itemAction == PLAYER_IA_BEAN) && (AMMO(ITEM_BEAN) == 0)) ||
|
||||
(((itemAction == PLAYER_IA_DEKU_STICK) && (AMMO(ITEM_DEKU_STICK) == 0)) ||
|
||||
((itemAction == PLAYER_IA_MAGIC_BEAN) && (AMMO(ITEM_MAGIC_BEAN) == 0)) ||
|
||||
(temp = Player_ActionToExplosive(this, itemAction),
|
||||
((temp >= 0) && ((AMMO(sExplosiveInfos[temp].itemId) == 0) ||
|
||||
(play->actorCtx.actorLists[ACTORCAT_EXPLOSIVE].length >= 3)))))) {
|
||||
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 (play->actorCtx.lensActive) {
|
||||
Actor_DisableLens(play);
|
||||
@@ -3165,8 +3165,8 @@ void func_80835F44(PlayState* play, Player* this, s32 item) {
|
||||
} else {
|
||||
func_80078884(NA_SE_SY_ERROR);
|
||||
}
|
||||
} else if (itemAction == PLAYER_IA_NUT) {
|
||||
if (AMMO(ITEM_NUT) != 0) {
|
||||
} else if (itemAction == PLAYER_IA_DEKU_NUT) {
|
||||
if (AMMO(ITEM_DEKU_NUT) != 0) {
|
||||
func_8083C61C(play, this);
|
||||
} else {
|
||||
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);
|
||||
} 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)) {
|
||||
if (!func_8008E9C4(this) ||
|
||||
((itemAction >= PLAYER_IA_BOTTLE_POTION_RED) && (itemAction <= PLAYER_IA_BOTTLE_FAIRY))) {
|
||||
@@ -3644,7 +3644,7 @@ s32 func_808375D8(Player* this) {
|
||||
s8 temp2;
|
||||
s32 i;
|
||||
|
||||
if ((this->heldItemAction == PLAYER_IA_STICK) || Player_HoldsBrokenKnife(this)) {
|
||||
if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) || Player_HoldsBrokenKnife(this)) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -5139,7 +5139,7 @@ void func_8083AE40(Player* this, s16 objectId) {
|
||||
LOG_HEX("size", size, "../z_player.c", 9090);
|
||||
ASSERT(size <= 1024 * 8, "size <= 1024 * 8", "../z_player.c", 9091);
|
||||
|
||||
DmaMgr_SendRequest2(&this->giObjectDmaRequest, this->giObjectSegment, gObjectTable[objectId].vromStart, size, 0,
|
||||
DmaMgr_RequestAsync(&this->giObjectDmaRequest, this->giObjectSegment, gObjectTable[objectId].vromStart, size, 0,
|
||||
&this->giObjectLoadQueue, NULL, "../z_player.c", 9099);
|
||||
}
|
||||
}
|
||||
@@ -5167,35 +5167,35 @@ void func_8083B010(Player* this) {
|
||||
}
|
||||
|
||||
static u8 D_80854528[] = {
|
||||
GI_LETTER_ZELDA, // EXCH_ITEM_LETTER_ZELDA
|
||||
GI_WEIRD_EGG, // EXCH_ITEM_WEIRD_EGG
|
||||
GI_CHICKEN, // EXCH_ITEM_CHICKEN
|
||||
GI_BEAN, // EXCH_ITEM_BEAN
|
||||
GI_POCKET_EGG, // EXCH_ITEM_POCKET_EGG
|
||||
GI_POCKET_CUCCO, // EXCH_ITEM_POCKET_CUCCO
|
||||
GI_COJIRO, // EXCH_ITEM_COJIRO
|
||||
GI_ODD_MUSHROOM, // EXCH_ITEM_ODD_MUSHROOM
|
||||
GI_ODD_POTION, // EXCH_ITEM_ODD_POTION
|
||||
GI_SAW, // EXCH_ITEM_SAW
|
||||
GI_SWORD_BROKEN, // EXCH_ITEM_SWORD_BROKEN
|
||||
GI_PRESCRIPTION, // EXCH_ITEM_PRESCRIPTION
|
||||
GI_FROG, // EXCH_ITEM_FROG
|
||||
GI_EYEDROPS, // EXCH_ITEM_EYEDROPS
|
||||
GI_CLAIM_CHECK, // EXCH_ITEM_CLAIM_CHECK
|
||||
GI_MASK_SKULL, // EXCH_ITEM_MASK_SKULL
|
||||
GI_MASK_SPOOKY, // EXCH_ITEM_MASK_SPOOKY
|
||||
GI_MASK_KEATON, // EXCH_ITEM_MASK_KEATON
|
||||
GI_MASK_BUNNY, // EXCH_ITEM_MASK_BUNNY
|
||||
GI_MASK_TRUTH, // EXCH_ITEM_MASK_TRUTH
|
||||
GI_MASK_GORON, // EXCH_ITEM_MASK_GORON
|
||||
GI_MASK_ZORA, // EXCH_ITEM_MASK_ZORA
|
||||
GI_MASK_GERUDO, // EXCH_ITEM_MASK_GERUDO
|
||||
GI_LETTER_RUTO, // EXCH_ITEM_FISH
|
||||
GI_LETTER_RUTO, // EXCH_ITEM_BLUE_FIRE
|
||||
GI_LETTER_RUTO, // EXCH_ITEM_BUG
|
||||
GI_LETTER_RUTO, // EXCH_ITEM_POE
|
||||
GI_LETTER_RUTO, // EXCH_ITEM_BIG_POE
|
||||
GI_LETTER_RUTO, // EXCH_ITEM_LETTER_RUTO
|
||||
GI_ZELDAS_LETTER, // EXCH_ITEM_ZELDAS_LETTER
|
||||
GI_WEIRD_EGG, // EXCH_ITEM_WEIRD_EGG
|
||||
GI_CHICKEN, // EXCH_ITEM_CHICKEN
|
||||
GI_MAGIC_BEAN, // EXCH_ITEM_MAGIC_BEAN
|
||||
GI_POCKET_EGG, // EXCH_ITEM_POCKET_EGG
|
||||
GI_POCKET_CUCCO, // EXCH_ITEM_POCKET_CUCCO
|
||||
GI_COJIRO, // EXCH_ITEM_COJIRO
|
||||
GI_ODD_MUSHROOM, // EXCH_ITEM_ODD_MUSHROOM
|
||||
GI_ODD_POTION, // EXCH_ITEM_ODD_POTION
|
||||
GI_POACHERS_SAW, // EXCH_ITEM_POACHERS_SAW
|
||||
GI_BROKEN_GORONS_SWORD, // EXCH_ITEM_BROKEN_GORONS_SWORD
|
||||
GI_PRESCRIPTION, // EXCH_ITEM_PRESCRIPTION
|
||||
GI_EYEBALL_FROG, // EXCH_ITEM_EYEBALL_FROG
|
||||
GI_EYE_DROPS, // EXCH_ITEM_EYE_DROPS
|
||||
GI_CLAIM_CHECK, // EXCH_ITEM_CLAIM_CHECK
|
||||
GI_MASK_SKULL, // EXCH_ITEM_MASK_SKULL
|
||||
GI_MASK_SPOOKY, // EXCH_ITEM_MASK_SPOOKY
|
||||
GI_MASK_KEATON, // EXCH_ITEM_MASK_KEATON
|
||||
GI_MASK_BUNNY_HOOD, // EXCH_ITEM_MASK_BUNNY_HOOD
|
||||
GI_MASK_TRUTH, // EXCH_ITEM_MASK_TRUTH
|
||||
GI_MASK_GORON, // EXCH_ITEM_MASK_GORON
|
||||
GI_MASK_ZORA, // EXCH_ITEM_MASK_ZORA
|
||||
GI_MASK_GERUDO, // EXCH_ITEM_MASK_GERUDO
|
||||
GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_FISH
|
||||
GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_BLUE_FIRE
|
||||
GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_BUG
|
||||
GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_POE
|
||||
GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_BIG_POE
|
||||
GI_BOTTLE_RUTOS_LETTER, // EXCH_ITEM_BOTTLE_RUTOS_LETTER
|
||||
};
|
||||
|
||||
static LinkAnimationHeader* D_80854548[] = {
|
||||
@@ -5230,14 +5230,14 @@ s32 func_8083B040(Player* this, PlayState* play) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
sp2C = this->itemAction - PLAYER_IA_LETTER_ZELDA;
|
||||
sp2C = this->itemAction - PLAYER_IA_ZELDAS_LETTER;
|
||||
if ((sp2C >= 0) ||
|
||||
(sp28 = Player_ActionToBottle(this, this->itemAction) - 1,
|
||||
((sp28 >= 0) && (sp28 < 6) &&
|
||||
((this->itemAction > PLAYER_IA_BOTTLE_POE) ||
|
||||
((this->targetActor != NULL) &&
|
||||
(((this->itemAction == PLAYER_IA_BOTTLE_POE) && (this->exchangeItemId == EXCH_ITEM_POE)) ||
|
||||
(this->exchangeItemId == EXCH_ITEM_BLUE_FIRE))))))) {
|
||||
((this->targetActor != NULL) && (((this->itemAction == PLAYER_IA_BOTTLE_POE) &&
|
||||
(this->exchangeItemId == EXCH_ITEM_BOTTLE_POE)) ||
|
||||
(this->exchangeItemId == EXCH_ITEM_BOTTLE_BLUE_FIRE))))))) {
|
||||
|
||||
if ((play->actorCtx.titleCtx.delayTimer == 0) && (play->actorCtx.titleCtx.alpha == 0)) {
|
||||
func_80835DE4(play, this, func_8084F104, 0);
|
||||
@@ -5258,14 +5258,15 @@ s32 func_8083B040(Player* this, PlayState* play) {
|
||||
targetActor = this->targetActor;
|
||||
|
||||
if ((targetActor != NULL) &&
|
||||
((this->exchangeItemId == sp2C) || (this->exchangeItemId == EXCH_ITEM_BLUE_FIRE) ||
|
||||
((this->exchangeItemId == EXCH_ITEM_POE) &&
|
||||
((this->exchangeItemId == sp2C) || (this->exchangeItemId == EXCH_ITEM_BOTTLE_BLUE_FIRE) ||
|
||||
((this->exchangeItemId == EXCH_ITEM_BOTTLE_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->exchangeItemId != EXCH_ITEM_BEAN) || (this->itemAction == PLAYER_IA_BEAN))) {
|
||||
if (this->exchangeItemId == EXCH_ITEM_BEAN) {
|
||||
Inventory_ChangeAmmo(ITEM_BEAN, -1);
|
||||
((this->exchangeItemId != EXCH_ITEM_MAGIC_BEAN) ||
|
||||
(this->itemAction == PLAYER_IA_MAGIC_BEAN))) {
|
||||
if (this->exchangeItemId == EXCH_ITEM_MAGIC_BEAN) {
|
||||
Inventory_ChangeAmmo(ITEM_MAGIC_BEAN, -1);
|
||||
func_80835DE4(play, this, func_8084279C, 0);
|
||||
this->stateFlags1 |= PLAYER_STATE1_29;
|
||||
this->unk_850 = 0x50;
|
||||
@@ -5273,7 +5274,7 @@ s32 func_8083B040(Player* this, PlayState* play) {
|
||||
}
|
||||
targetActor->flags |= ACTOR_FLAG_8;
|
||||
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->actor.textId = 0x4005;
|
||||
func_80835EA4(play, 1);
|
||||
@@ -5697,7 +5698,7 @@ void func_8083C50C(Player* this) {
|
||||
s32 func_8083C544(Player* this, PlayState* play) {
|
||||
if (CHECK_BTN_ALL(sControlInput->cur.button, BTN_B)) {
|
||||
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)) {
|
||||
func_808377DC(play, this);
|
||||
return 1;
|
||||
@@ -5712,7 +5713,7 @@ s32 func_8083C544(Player* this, PlayState* play) {
|
||||
|
||||
s32 func_8083C61C(PlayState* play, Player* this) {
|
||||
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_80832264(play, this, &gPlayerAnim_link_normal_light_bom);
|
||||
this->unk_6AD = 0;
|
||||
@@ -6055,11 +6056,11 @@ void func_8083D36C(PlayState* play, Player* this) {
|
||||
void func_8083D53C(PlayState* play, Player* this) {
|
||||
if (this->actor.yDistToWater < this->ageProperties->unk_2C) {
|
||||
Audio_SetBaseFilter(0);
|
||||
this->unk_840 = 0;
|
||||
this->underwaterTimer = 0;
|
||||
} else {
|
||||
Audio_SetBaseFilter(0x20);
|
||||
if (this->unk_840 < 300) {
|
||||
this->unk_840++;
|
||||
if (this->underwaterTimer < 300) {
|
||||
this->underwaterTimer++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7989,13 +7990,13 @@ void func_80842A28(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);
|
||||
}
|
||||
|
||||
s32 func_80842AC4(PlayState* play, Player* this) {
|
||||
if ((this->heldItemAction == PLAYER_IA_STICK) && (this->unk_85C > 0.5f)) {
|
||||
if (AMMO(ITEM_STICK) != 0) {
|
||||
if ((this->heldItemAction == PLAYER_IA_DEKU_STICK) && (this->unk_85C > 0.5f)) {
|
||||
if (AMMO(ITEM_DEKU_STICK) != 0) {
|
||||
EffectSsStick_Spawn(play, &this->bodyPartsPos[PLAYER_BODYPART_R_HAND], this->actor.shape.rot.y + 0x8000);
|
||||
this->unk_85C = 0.5f;
|
||||
func_80842A88(play, this);
|
||||
@@ -10317,7 +10318,7 @@ void func_80848A04(PlayState* play, Player* this) {
|
||||
|
||||
temp = 1.0f;
|
||||
if (DECR(this->unk_860) == 0) {
|
||||
Inventory_ChangeAmmo(ITEM_STICK, -1);
|
||||
Inventory_ChangeAmmo(ITEM_DEKU_STICK, -1);
|
||||
this->unk_860 = 1;
|
||||
temp = 0.0f;
|
||||
this->unk_85C = temp;
|
||||
@@ -10500,7 +10501,7 @@ void Player_UpdateCommon(Player* this, PlayState* play, Input* input) {
|
||||
func_808473D4(play, this);
|
||||
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);
|
||||
} else if ((this->heldItemAction == PLAYER_IA_FISHING_POLE) && (this->unk_860 < 0)) {
|
||||
this->unk_860++;
|
||||
@@ -11284,7 +11285,7 @@ s32 func_8084B3CC(PlayState* play, Player* this) {
|
||||
|
||||
void func_8084B498(Player* this) {
|
||||
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) {
|
||||
@@ -12435,7 +12436,7 @@ s32 func_8084DFF4(PlayState* play, Player* this) {
|
||||
}
|
||||
} else {
|
||||
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->transitionTrigger = TRANS_TRIGGER_START;
|
||||
gSaveContext.nextCutsceneIndex = 0xFFF1;
|
||||
@@ -12556,7 +12557,7 @@ void func_8084E604(Player* this, PlayState* play) {
|
||||
if (LinkAnimation_Update(play, &this->skelAnime)) {
|
||||
func_8083A098(this, &gPlayerAnim_link_normal_light_bom_end, play);
|
||||
} 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,
|
||||
this->bodyPartsPos[PLAYER_BODYPART_R_HAND].y, this->bodyPartsPos[PLAYER_BODYPART_R_HAND].z, 4000,
|
||||
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)) {
|
||||
func_80832B78(play, this, &gPlayerAnim_link_bottle_drink_demo_end);
|
||||
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);
|
||||
} 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[] = {
|
||||
{ ACTOR_EN_ELF, ITEM_FAIRY, PLAYER_IA_BOTTLE_FAIRY, 0x46 },
|
||||
{ ACTOR_EN_FISH, ITEM_FISH, PLAYER_IA_BOTTLE_FISH, 0x47 },
|
||||
{ ACTOR_EN_ICE_HONO, ITEM_BLUE_FIRE, PLAYER_IA_BOTTLE_FIRE, 0x5D },
|
||||
{ ACTOR_EN_INSECT, ITEM_BUG, PLAYER_IA_BOTTLE_BUG, 0x7A },
|
||||
{ ACTOR_EN_ELF, ITEM_BOTTLE_FAIRY, PLAYER_IA_BOTTLE_FAIRY, 0x46 },
|
||||
{ ACTOR_EN_FISH, ITEM_BOTTLE_FISH, PLAYER_IA_BOTTLE_FISH, 0x47 },
|
||||
{ ACTOR_EN_ICE_HONO, ITEM_BOTTLE_BLUE_FIRE, PLAYER_IA_BOTTLE_FIRE, 0x5D },
|
||||
{ ACTOR_EN_INSECT, ITEM_BOTTLE_BUG, PLAYER_IA_BOTTLE_BUG, 0x7A },
|
||||
};
|
||||
|
||||
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)) {
|
||||
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_FIATY_HEAL - SFX_FLAG);
|
||||
} 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,
|
||||
0, dropInfo->actorParams);
|
||||
|
||||
Player_UpdateBottleHeld(play, this, ITEM_BOTTLE, PLAYER_IA_BOTTLE);
|
||||
Player_UpdateBottleHeld(play, this, ITEM_BOTTLE_EMPTY, PLAYER_IA_BOTTLE);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -12886,7 +12887,7 @@ void func_8084F104(Player* this, PlayState* play) {
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -13393,7 +13394,7 @@ void func_8085063C(Player* this, PlayState* play) {
|
||||
play->transitionTrigger = TRANS_TRIGGER_START;
|
||||
play->nextEntranceIndex = gSaveContext.respawn[RESPAWN_MODE_TOP].entranceIndex;
|
||||
play->transitionType = TRANS_TYPE_FADE_WHITE_FAST;
|
||||
func_80088AF0(play);
|
||||
Interface_SetSubTimerToFinalSecond(play);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -1463,8 +1463,8 @@ void FileSelect_LoadGame(GameState* thisx) {
|
||||
gSaveContext.natureAmbienceId = 0xFF;
|
||||
gSaveContext.showTitleCard = true;
|
||||
gSaveContext.dogParams = 0;
|
||||
gSaveContext.timer1State = 0;
|
||||
gSaveContext.timer2State = 0;
|
||||
gSaveContext.timerState = TIMER_STATE_OFF;
|
||||
gSaveContext.subTimerState = SUBTIMER_STATE_OFF;
|
||||
gSaveContext.eventInf[0] = 0;
|
||||
gSaveContext.eventInf[1] = 0;
|
||||
gSaveContext.eventInf[2] = 0;
|
||||
@@ -1503,8 +1503,8 @@ void FileSelect_LoadGame(GameState* thisx) {
|
||||
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BGS) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KNIFE)) {
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) {
|
||||
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_NONE;
|
||||
swordEquipValue = (gEquipMasks[EQUIP_TYPE_SWORD] & gSaveContext.equips.equipment) >> (EQUIP_TYPE_SWORD * 4);
|
||||
@@ -1879,13 +1879,14 @@ void FileSelect_Init(GameState* thisx) {
|
||||
|
||||
this->staticSegment = GameState_Alloc(&this->state, size, "../z_file_choose.c", 3392);
|
||||
ASSERT(this->staticSegment != NULL, "this->staticSegment != NULL", "../z_file_choose.c", 3393);
|
||||
DmaMgr_SendRequest1(this->staticSegment, (uintptr_t)_title_staticSegmentRomStart, size, "../z_file_choose.c", 3394);
|
||||
DmaMgr_RequestSyncDebug(this->staticSegment, (uintptr_t)_title_staticSegmentRomStart, size, "../z_file_choose.c",
|
||||
3394);
|
||||
|
||||
size = (uintptr_t)_parameter_staticSegmentRomEnd - (uintptr_t)_parameter_staticSegmentRomStart;
|
||||
this->parameterSegment = GameState_Alloc(&this->state, size, "../z_file_choose.c", 3398);
|
||||
ASSERT(this->parameterSegment != NULL, "this->parameterSegment != NULL", "../z_file_choose.c", 3399);
|
||||
DmaMgr_SendRequest1(this->parameterSegment, (uintptr_t)_parameter_staticSegmentRomStart, size, "../z_file_choose.c",
|
||||
3400);
|
||||
DmaMgr_RequestSyncDebug(this->parameterSegment, (uintptr_t)_parameter_staticSegmentRomStart, size,
|
||||
"../z_file_choose.c", 3400);
|
||||
|
||||
Matrix_Init(&this->state);
|
||||
View_Init(&this->view, this->state.gfxCtx);
|
||||
|
||||
@@ -761,7 +761,8 @@ void MapSelect_Init(GameState* thisx) {
|
||||
R_UPDATE_RATE = 1;
|
||||
|
||||
this->staticSegment = GameState_Alloc(&this->state, size, "../z_select.c", 1114);
|
||||
DmaMgr_SendRequest1(this->staticSegment, (uintptr_t)_z_select_staticSegmentRomStart, size, "../z_select.c", 1115);
|
||||
DmaMgr_RequestSyncDebug(this->staticSegment, (uintptr_t)_z_select_staticSegmentRomStart, size, "../z_select.c",
|
||||
1115);
|
||||
gSaveContext.cutsceneIndex = 0x8000;
|
||||
gSaveContext.linkAge = LINK_AGE_CHILD;
|
||||
}
|
||||
|
||||
@@ -160,8 +160,8 @@ void ConsoleLogo_Init(GameState* thisx) {
|
||||
this->staticSegment = GameState_Alloc(&this->state, size, "../z_title.c", 611);
|
||||
osSyncPrintf("z_title.c\n");
|
||||
ASSERT(this->staticSegment != NULL, "this->staticSegment != NULL", "../z_title.c", 614);
|
||||
DmaMgr_SendRequest1(this->staticSegment, (uintptr_t)_nintendo_rogo_staticSegmentRomStart, size, "../z_title.c",
|
||||
615);
|
||||
DmaMgr_RequestSyncDebug(this->staticSegment, (uintptr_t)_nintendo_rogo_staticSegmentRomStart, size, "../z_title.c",
|
||||
615);
|
||||
R_UPDATE_RATE = 1;
|
||||
Matrix_Init(&this->state);
|
||||
View_Init(&this->view, this->state.gfxCtx);
|
||||
|
||||
@@ -29,9 +29,9 @@ static u8 sMaxUpgradeValues[] = {
|
||||
|
||||
// Item ID corresponding to each slot, aside from bottles and trade items
|
||||
static s16 sSlotItems[] = {
|
||||
ITEM_STICK, ITEM_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_BOOMERANG, ITEM_LENS, ITEM_BEAN, ITEM_HAMMER, ITEM_ARROW_LIGHT, ITEM_NAYRUS_LOVE,
|
||||
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_BOOMERANG, ITEM_LENS_OF_TRUTH, ITEM_MAGIC_BEAN, ITEM_HAMMER, ITEM_ARROW_LIGHT, ITEM_NAYRUS_LOVE,
|
||||
};
|
||||
|
||||
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) {
|
||||
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]);
|
||||
} else if (slot == SLOT_OCARINA) {
|
||||
spD8[3] = gSaveContext.inventory.items[slot];
|
||||
@@ -408,7 +408,7 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
|
||||
default:
|
||||
if (curSection < 0x1B) {
|
||||
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)) {
|
||||
Inventory_DeleteItem(gAmmoItems[i], SLOT(gAmmoItems[i]));
|
||||
AMMO(gAmmoItems[i]) = 0;
|
||||
@@ -435,14 +435,14 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
|
||||
if (gSaveContext.inventory.items[i] == ITEM_NONE) {
|
||||
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]++;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
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) &&
|
||||
(gSaveContext.inventory.items[i] <= ITEM_OCARINA_TIME)) {
|
||||
(gSaveContext.inventory.items[i] <= ITEM_OCARINA_OF_TIME)) {
|
||||
gSaveContext.inventory.items[i]--;
|
||||
}
|
||||
}
|
||||
@@ -502,19 +502,20 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
|
||||
}
|
||||
} else if ((i >= SLOT_BOTTLE_1) && (i <= SLOT_BOTTLE_4)) {
|
||||
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)) {
|
||||
if (gSaveContext.inventory.items[i] == ITEM_NONE) {
|
||||
gSaveContext.inventory.items[i] = ITEM_BOTTLE;
|
||||
} else if ((gSaveContext.inventory.items[i] >= ITEM_BOTTLE) &&
|
||||
(gSaveContext.inventory.items[i] <= ITEM_MILK_HALF)) {
|
||||
gSaveContext.inventory.items[i] = ITEM_BOTTLE_EMPTY;
|
||||
} else if ((gSaveContext.inventory.items[i] >= ITEM_BOTTLE_EMPTY) &&
|
||||
(gSaveContext.inventory.items[i] <= ITEM_BOTTLE_MILK_HALF)) {
|
||||
gSaveContext.inventory.items[i]++;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
if (gSaveContext.inventory.items[i] == ITEM_NONE) {
|
||||
gSaveContext.inventory.items[i] = ITEM_POE;
|
||||
} else if ((gSaveContext.inventory.items[i] >= ITEM_POTION_RED) &&
|
||||
(gSaveContext.inventory.items[i] <= ITEM_POE)) {
|
||||
gSaveContext.inventory.items[i] = ITEM_BOTTLE_POE;
|
||||
} else if ((gSaveContext.inventory.items[i] >= ITEM_BOTTLE_POTION_RED) &&
|
||||
(gSaveContext.inventory.items[i] <= ITEM_BOTTLE_POE)) {
|
||||
gSaveContext.inventory.items[i]--;
|
||||
}
|
||||
}
|
||||
@@ -524,9 +525,9 @@ void KaleidoScope_DrawDebugEditor(PlayState* play) {
|
||||
CHECK_BTN_ALL(input->press.button, BTN_CRIGHT)) {
|
||||
if (i == SLOT_TRADE_ADULT) {
|
||||
if (gSaveContext.inventory.items[i] == ITEM_NONE) {
|
||||
gSaveContext.inventory.items[i] = ITEM_BEAN;
|
||||
gSaveContext.inventory.items[i] = ITEM_MAGIC_BEAN;
|
||||
} else {
|
||||
Inventory_DeleteItem(ITEM_BEAN, SLOT(ITEM_BEAN));
|
||||
Inventory_DeleteItem(ITEM_MAGIC_BEAN, SLOT(ITEM_MAGIC_BEAN));
|
||||
}
|
||||
} else {
|
||||
j = sSlotItems[i];
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
static u8 sChildUpgrades[] = { UPG_BULLET_BAG, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE };
|
||||
static u8 sAdultUpgrades[] = { UPG_QUIVER, UPG_BOMB_BAG, UPG_STRENGTH, UPG_SCALE };
|
||||
|
||||
static u8 sChildUpgradeItemBases[] = { ITEM_BULLET_BAG_30, ITEM_BOMB_BAG_20, ITEM_BRACELET, ITEM_SCALE_SILVER };
|
||||
static u8 sAdultUpgradeItemBases[] = { ITEM_QUIVER_30, ITEM_BOMB_BAG_20, ITEM_BRACELET, ITEM_SCALE_SILVER };
|
||||
static u8 sChildUpgradeItemBases[] = { ITEM_BULLET_BAG_30, ITEM_BOMB_BAG_20, ITEM_STRENGTH_GORONS_BRACELET,
|
||||
ITEM_SCALE_SILVER };
|
||||
static u8 sAdultUpgradeItemBases[] = { ITEM_QUIVER_30, ITEM_BOMB_BAG_20, ITEM_STRENGTH_GORONS_BRACELET,
|
||||
ITEM_SCALE_SILVER };
|
||||
|
||||
static u8 sUpgradeItemOffsets[] = { 0x00, 0x03, 0x06, 0x09 };
|
||||
|
||||
@@ -426,7 +428,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
||||
if (gSaveContext.bgsFlag != 0) {
|
||||
cursorItem = ITEM_HEART_PIECE_2;
|
||||
} else if (CHECK_OWNED_EQUIP_ALT(EQUIP_TYPE_SWORD, EQUIP_INV_SWORD_BROKENGIANTKNIFE)) {
|
||||
cursorItem = ITEM_SWORD_KNIFE;
|
||||
cursorItem = ITEM_GIANTS_KNIFE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -443,7 +445,7 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
||||
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) {
|
||||
pauseCtx->nameColorSet = 0;
|
||||
} else {
|
||||
@@ -479,15 +481,16 @@ void KaleidoScope_DrawEquipment(PlayState* play) {
|
||||
gSaveContext.equips.buttonItems[0] = cursorItem;
|
||||
|
||||
if ((pauseCtx->cursorX[PAUSE_EQUIP] == 3) && (gSaveContext.bgsFlag != 0)) {
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BGS;
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_SWORD_BIGGORON;
|
||||
gSaveContext.swordHealth = 8;
|
||||
} else {
|
||||
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 == 0) &&
|
||||
if ((gSaveContext.equips.buttonItems[0] == ITEM_SWORD_BIGGORON) &&
|
||||
(gSaveContext.bgsFlag == 0) &&
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
#include "assets/textures/parameter_static/parameter_static.h"
|
||||
|
||||
u8 gAmmoItems[] = {
|
||||
ITEM_STICK, ITEM_NUT, ITEM_BOMB, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_SLINGSHOT, ITEM_NONE,
|
||||
ITEM_BOMBCHU, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_BEAN, ITEM_NONE,
|
||||
ITEM_DEKU_STICK, ITEM_DEKU_NUT, ITEM_BOMB, ITEM_BOW, ITEM_NONE, ITEM_NONE, ITEM_SLINGSHOT, ITEM_NONE,
|
||||
ITEM_BOMBCHU, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_NONE, ITEM_MAGIC_BEAN, ITEM_NONE,
|
||||
};
|
||||
|
||||
static s16 sEquipState = 0;
|
||||
@@ -34,9 +34,9 @@ void KaleidoScope_DrawAmmoCount(PauseContext* pauseCtx, GraphicsContext* gfxCtx,
|
||||
} else if ((item == ITEM_BOMB && AMMO(item) == CUR_CAPACITY(UPG_BOMB_BAG)) ||
|
||||
(item == ITEM_BOW && AMMO(item) == CUR_CAPACITY(UPG_QUIVER)) ||
|
||||
(item == ITEM_SLINGSHOT && AMMO(item) == CUR_CAPACITY(UPG_BULLET_BAG)) ||
|
||||
(item == ITEM_STICK && AMMO(item) == CUR_CAPACITY(UPG_STICKS)) ||
|
||||
(item == ITEM_NUT && AMMO(item) == CUR_CAPACITY(UPG_NUTS)) || (item == ITEM_BOMBCHU && ammo == 50) ||
|
||||
(item == ITEM_BEAN && ammo == 15)) {
|
||||
(item == ITEM_DEKU_STICK && AMMO(item) == CUR_CAPACITY(UPG_DEKU_STICKS)) ||
|
||||
(item == ITEM_DEKU_NUT && AMMO(item) == CUR_CAPACITY(UPG_DEKU_NUTS)) ||
|
||||
(item == ITEM_BOMBCHU && ammo == 50) || (item == ITEM_MAGIC_BEAN && ammo == 15)) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 120, 255, 0, pauseCtx->alpha);
|
||||
}
|
||||
}
|
||||
@@ -513,7 +513,7 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
D_8082A488--;
|
||||
|
||||
if (D_8082A488 == 0) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
sEquipMoveTimer = 6;
|
||||
WREG(90) = 320;
|
||||
@@ -590,9 +590,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
if (gSaveContext.equips.buttonItems[1] != ITEM_NONE) {
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
|
||||
((gSaveContext.equips.buttonItems[1] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
} else {
|
||||
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[1];
|
||||
@@ -607,9 +607,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
if (gSaveContext.equips.buttonItems[1] != ITEM_NONE) {
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
|
||||
((gSaveContext.equips.buttonItems[1] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
} else {
|
||||
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[1];
|
||||
@@ -624,19 +624,19 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) {
|
||||
if ((gSaveContext.equips.buttonItems[1] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
}
|
||||
} else if (pauseCtx->equipTargetItem == ITEM_BOW) {
|
||||
if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)) {
|
||||
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[1];
|
||||
gSaveContext.equips.cButtonSlots[1] = gSaveContext.equips.cButtonSlots[0];
|
||||
Interface_LoadItemIcon2(play, 2);
|
||||
} else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
} else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)) {
|
||||
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[1];
|
||||
gSaveContext.equips.cButtonSlots[2] = gSaveContext.equips.cButtonSlots[0];
|
||||
Interface_LoadItemIcon2(play, 3);
|
||||
@@ -665,9 +665,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
if (gSaveContext.equips.buttonItems[2] != ITEM_NONE) {
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
|
||||
((gSaveContext.equips.buttonItems[2] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
} else {
|
||||
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[2];
|
||||
@@ -682,9 +682,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
if (gSaveContext.equips.buttonItems[2] != ITEM_NONE) {
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
|
||||
((gSaveContext.equips.buttonItems[2] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
} else {
|
||||
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[2];
|
||||
@@ -699,18 +699,18 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) {
|
||||
if ((gSaveContext.equips.buttonItems[2] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
}
|
||||
} else if (pauseCtx->equipTargetItem == ITEM_BOW) {
|
||||
if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)) {
|
||||
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[2];
|
||||
Interface_LoadItemIcon2(play, 1);
|
||||
} else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
} else if ((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)) {
|
||||
gSaveContext.equips.buttonItems[3] = gSaveContext.equips.buttonItems[2];
|
||||
Interface_LoadItemIcon2(play, 3);
|
||||
}
|
||||
@@ -738,9 +738,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
if (gSaveContext.equips.buttonItems[3] != ITEM_NONE) {
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
|
||||
((gSaveContext.equips.buttonItems[3] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
} else {
|
||||
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[3];
|
||||
@@ -755,9 +755,9 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
if (gSaveContext.equips.buttonItems[3] != ITEM_NONE) {
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1) &&
|
||||
((gSaveContext.equips.buttonItems[3] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT)))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
} else {
|
||||
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[3];
|
||||
@@ -772,18 +772,18 @@ void KaleidoScope_UpdateItemEquip(PlayState* play) {
|
||||
|
||||
if ((pauseCtx->equipTargetItem >= 0xBF) && (pauseCtx->equipTargetItem <= 0xC1)) {
|
||||
if ((gSaveContext.equips.buttonItems[3] == ITEM_BOW) ||
|
||||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_ARROW_LIGHT))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_ARROW_FIRE;
|
||||
((gSaveContext.equips.buttonItems[3] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[3] <= ITEM_BOW_LIGHT))) {
|
||||
pauseCtx->equipTargetItem -= 0xBF - ITEM_BOW_FIRE;
|
||||
pauseCtx->equipTargetSlot = SLOT_BOW;
|
||||
}
|
||||
} else if (pauseCtx->equipTargetItem == ITEM_BOW) {
|
||||
if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
if ((gSaveContext.equips.buttonItems[1] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[1] <= ITEM_BOW_LIGHT)) {
|
||||
gSaveContext.equips.buttonItems[1] = gSaveContext.equips.buttonItems[3];
|
||||
Interface_LoadItemIcon2(play, 1);
|
||||
} else if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_ARROW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_ARROW_LIGHT)) {
|
||||
} else if ((gSaveContext.equips.buttonItems[2] >= ITEM_BOW_FIRE) &&
|
||||
(gSaveContext.equips.buttonItems[2] <= ITEM_BOW_LIGHT)) {
|
||||
gSaveContext.equips.buttonItems[2] = gSaveContext.equips.buttonItems[3];
|
||||
Interface_LoadItemIcon2(play, 2);
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
} else {
|
||||
pauseCtx->cursorX[PAUSE_MAP] = 1;
|
||||
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]++;
|
||||
if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) {
|
||||
pauseCtx->cursorPoint[PAUSE_MAP]++;
|
||||
@@ -154,7 +154,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
pauseCtx->cursorSpecialPos = 0;
|
||||
pauseCtx->cursorX[PAUSE_MAP] = 1;
|
||||
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]++;
|
||||
if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.mapIndex)) {
|
||||
pauseCtx->cursorPoint[PAUSE_MAP]++;
|
||||
@@ -189,7 +189,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
|
||||
if (pauseCtx->cursorSpecialPos == 0) {
|
||||
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 {
|
||||
pauseCtx->cursorItem[PAUSE_MAP] = PAUSE_ITEM_NONE;
|
||||
}
|
||||
@@ -710,7 +710,9 @@ void KaleidoScope_DrawWorldMap(PlayState* play, GraphicsContext* gfxCtx) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 150, 255, 255, pauseCtx->alpha);
|
||||
gDPSetEnvColor(POLY_OPA_DISP++, 0, 0, 0, 0);
|
||||
|
||||
POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP, pauseCtx->nameSegment + 0x400, 80, 32, 4);
|
||||
POLY_OPA_DISP = KaleidoScope_QuadTextureIA8(POLY_OPA_DISP,
|
||||
pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE),
|
||||
MAP_NAME_TEX2_WIDTH, MAP_NAME_TEX2_HEIGHT, 4);
|
||||
}
|
||||
|
||||
gDPPipeSync(POLY_OPA_DISP++);
|
||||
|
||||
@@ -1140,7 +1140,10 @@ void KaleidoScope_DrawInfoPanel(PlayState* play) {
|
||||
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, 255);
|
||||
}
|
||||
|
||||
POLY_OPA_DISP = KaleidoScope_QuadTextureIA4(POLY_OPA_DISP, pauseCtx->nameSegment, 128, 16, 0);
|
||||
// Note that this is used to draw both item name and map name textures, it expects that the dimensions and
|
||||
// format for both sets of textures are identical.
|
||||
POLY_OPA_DISP = KaleidoScope_QuadTextureIA4(POLY_OPA_DISP, pauseCtx->nameSegment, ITEM_NAME_TEX_WIDTH,
|
||||
ITEM_NAME_TEX_HEIGHT, 0);
|
||||
}
|
||||
|
||||
if (pauseCtx->pageIndex == PAUSE_MAP) {
|
||||
@@ -1352,12 +1355,13 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) {
|
||||
sp2A += 12;
|
||||
}
|
||||
|
||||
DmaMgr_SendRequest1(pauseCtx->nameSegment, (uintptr_t)_map_name_staticSegmentRomStart + (sp2A * 0x400),
|
||||
0x400, "../z_kaleido_scope_PAL.c", 2093);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->nameSegment,
|
||||
(uintptr_t)_map_name_staticSegmentRomStart + (sp2A * MAP_NAME_TEX1_SIZE),
|
||||
MAP_NAME_TEX1_SIZE, "../z_kaleido_scope_PAL.c", 2093);
|
||||
} else {
|
||||
osSyncPrintf("zoom_name=%d\n", pauseCtx->namedItem);
|
||||
|
||||
if (gSaveContext.language) {
|
||||
if (gSaveContext.language) { // != LANGUAGE_ENG
|
||||
sp2A += 123;
|
||||
}
|
||||
if (gSaveContext.language == LANGUAGE_FRA) {
|
||||
@@ -1366,8 +1370,9 @@ void KaleidoScope_UpdateNamePanel(PlayState* play) {
|
||||
|
||||
osSyncPrintf("J_N=%d point=%d\n", gSaveContext.language, sp2A);
|
||||
|
||||
DmaMgr_SendRequest1(pauseCtx->nameSegment, (uintptr_t)_item_name_staticSegmentRomStart + (sp2A * 0x400),
|
||||
0x400, "../z_kaleido_scope_PAL.c", 2120);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->nameSegment,
|
||||
(uintptr_t)_item_name_staticSegmentRomStart + (sp2A * ITEM_NAME_TEX_SIZE),
|
||||
ITEM_NAME_TEX_SIZE, "../z_kaleido_scope_PAL.c", 2120);
|
||||
}
|
||||
|
||||
pauseCtx->nameDisplayTimer = 0;
|
||||
@@ -2441,13 +2446,13 @@ void KaleidoScope_LoadDungeonMap(PlayState* play) {
|
||||
InterfaceContext* interfaceCtx = &play->interfaceCtx;
|
||||
s32 pad;
|
||||
|
||||
DmaMgr_SendRequest1(interfaceCtx->mapSegment,
|
||||
(uintptr_t)_map_48x85_staticSegmentRomStart + (R_MAP_TEX_INDEX * 2040), 2040,
|
||||
"../z_kaleido_scope_PAL.c", 3467);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->mapSegment,
|
||||
(uintptr_t)_map_48x85_staticSegmentRomStart + ((R_MAP_TEX_INDEX + 0) * MAP_48x85_TEX_SIZE),
|
||||
MAP_48x85_TEX_SIZE, "../z_kaleido_scope_PAL.c", 3467);
|
||||
|
||||
DmaMgr_SendRequest1(interfaceCtx->mapSegment + 0x800,
|
||||
(uintptr_t)_map_48x85_staticSegmentRomStart + ((R_MAP_TEX_INDEX + 1) * 2040), 2040,
|
||||
"../z_kaleido_scope_PAL.c", 3471);
|
||||
DmaMgr_RequestSyncDebug(interfaceCtx->mapSegment + ALIGN16(MAP_48x85_TEX_SIZE),
|
||||
(uintptr_t)_map_48x85_staticSegmentRomStart + ((R_MAP_TEX_INDEX + 1) * MAP_48x85_TEX_SIZE),
|
||||
MAP_48x85_TEX_SIZE, "../z_kaleido_scope_PAL.c", 3471);
|
||||
}
|
||||
|
||||
void KaleidoScope_UpdateDungeonMap(PlayState* play) {
|
||||
@@ -2461,13 +2466,15 @@ void KaleidoScope_UpdateDungeonMap(PlayState* play) {
|
||||
|
||||
if ((play->sceneId >= SCENE_YDAN) && (play->sceneId <= SCENE_TAKARAYA)) {
|
||||
if ((VREG(30) + 3) == pauseCtx->cursorPoint[PAUSE_MAP]) {
|
||||
KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment, 2040, interfaceCtx->mapPaletteIndex, 14);
|
||||
KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment, MAP_48x85_TEX_SIZE,
|
||||
interfaceCtx->mapPaletteIndex, 14);
|
||||
}
|
||||
}
|
||||
|
||||
if ((play->sceneId >= SCENE_YDAN) && (play->sceneId <= SCENE_TAKARAYA)) {
|
||||
if ((VREG(30) + 3) == pauseCtx->cursorPoint[PAUSE_MAP]) {
|
||||
KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment + 0x800, 2040, interfaceCtx->mapPaletteIndex, 14);
|
||||
KaleidoScope_OverridePalIndexCI4(interfaceCtx->mapSegment + ALIGN16(MAP_48x85_TEX_SIZE), MAP_48x85_TEX_SIZE,
|
||||
interfaceCtx->mapPaletteIndex, 14);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2536,8 +2543,8 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
|
||||
size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item size0=%x\n", size0);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0,
|
||||
"../z_kaleido_scope_PAL.c", 3662);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0,
|
||||
"../z_kaleido_scope_PAL.c", 3662);
|
||||
|
||||
gSegments[8] = VIRTUAL_TO_PHYSICAL(pauseCtx->iconItemSegment);
|
||||
|
||||
@@ -2551,8 +2558,8 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
|
||||
size = (uintptr_t)_icon_item_24_staticSegmentRomEnd - (uintptr_t)_icon_item_24_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item24 size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItem24Segment, (uintptr_t)_icon_item_24_staticSegmentRomStart, size,
|
||||
"../z_kaleido_scope_PAL.c", 3675);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItem24Segment, (uintptr_t)_icon_item_24_staticSegmentRomStart, size,
|
||||
"../z_kaleido_scope_PAL.c", 3675);
|
||||
|
||||
pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size);
|
||||
|
||||
@@ -2579,9 +2586,9 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
size2 = (uintptr_t)_icon_item_dungeon_staticSegmentRomEnd -
|
||||
(uintptr_t)_icon_item_dungeon_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size2=%x\n", size2);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemAltSegment,
|
||||
(uintptr_t)_icon_item_dungeon_staticSegmentRomStart, size2,
|
||||
"../z_kaleido_scope_PAL.c", 3712);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemAltSegment,
|
||||
(uintptr_t)_icon_item_dungeon_staticSegmentRomStart, size2,
|
||||
"../z_kaleido_scope_PAL.c", 3712);
|
||||
|
||||
interfaceCtx->mapPalette[28] = 6;
|
||||
interfaceCtx->mapPalette[29] = 99;
|
||||
@@ -2593,8 +2600,9 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
size2 = (uintptr_t)_icon_item_field_staticSegmentRomEnd -
|
||||
(uintptr_t)_icon_item_field_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_field field-size2=%x\n", size2);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemAltSegment, (uintptr_t)_icon_item_field_staticSegmentRomStart,
|
||||
size2, "../z_kaleido_scope_PAL.c", 3726);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemAltSegment,
|
||||
(uintptr_t)_icon_item_field_staticSegmentRomStart, size2,
|
||||
"../z_kaleido_scope_PAL.c", 3726);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2603,18 +2611,18 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
if (gSaveContext.language == LANGUAGE_ENG) {
|
||||
size = (uintptr_t)_icon_item_nes_staticSegmentRomEnd - (uintptr_t)_icon_item_nes_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_nes_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 3739);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_nes_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 3739);
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
size = (uintptr_t)_icon_item_ger_staticSegmentRomEnd - (uintptr_t)_icon_item_ger_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_ger_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 3746);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_ger_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 3746);
|
||||
} else {
|
||||
size = (uintptr_t)_icon_item_fra_staticSegmentRomEnd - (uintptr_t)_icon_item_fra_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_fra_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 3753);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_fra_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 3753);
|
||||
}
|
||||
|
||||
pauseCtx->nameSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemLangSegment + size);
|
||||
@@ -2626,24 +2634,28 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
|
||||
if (((void)0, gSaveContext.worldMapArea) < 22) {
|
||||
if (gSaveContext.language == LANGUAGE_ENG) {
|
||||
DmaMgr_SendRequest1(pauseCtx->nameSegment + 0x400,
|
||||
(uintptr_t)_map_name_staticSegmentRomStart +
|
||||
(((void)0, gSaveContext.worldMapArea) * 0xA00) + 0x9000,
|
||||
0xA00, "../z_kaleido_scope_PAL.c", 3776);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE),
|
||||
(uintptr_t)_map_name_staticSegmentRomStart +
|
||||
(((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) +
|
||||
36 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_ENG * MAP_NAME_TEX2_SIZE,
|
||||
MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3776);
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
DmaMgr_SendRequest1(pauseCtx->nameSegment + 0x400,
|
||||
(uintptr_t)_map_name_staticSegmentRomStart +
|
||||
(((void)0, gSaveContext.worldMapArea) * 0xA00) + 0x16C00,
|
||||
0xA00, "../z_kaleido_scope_PAL.c", 3780);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE),
|
||||
(uintptr_t)_map_name_staticSegmentRomStart +
|
||||
(((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) +
|
||||
36 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_GER * MAP_NAME_TEX2_SIZE,
|
||||
MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3780);
|
||||
} else {
|
||||
DmaMgr_SendRequest1(pauseCtx->nameSegment + 0x400,
|
||||
(uintptr_t)_map_name_staticSegmentRomStart +
|
||||
(((void)0, gSaveContext.worldMapArea) * 0xA00) + 0x24800,
|
||||
0xA00, "../z_kaleido_scope_PAL.c", 3784);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->nameSegment + MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE),
|
||||
(uintptr_t)_map_name_staticSegmentRomStart +
|
||||
(((void)0, gSaveContext.worldMapArea) * MAP_NAME_TEX2_SIZE) +
|
||||
36 * MAP_NAME_TEX1_SIZE + 22 * LANGUAGE_FRA * MAP_NAME_TEX2_SIZE,
|
||||
MAP_NAME_TEX2_SIZE, "../z_kaleido_scope_PAL.c", 3784);
|
||||
}
|
||||
}
|
||||
|
||||
sPreRenderCvg = (void*)ALIGN16((uintptr_t)pauseCtx->nameSegment + 0x400 + 0xA00);
|
||||
sPreRenderCvg = (void*)ALIGN16((uintptr_t)pauseCtx->nameSegment +
|
||||
MAX(MAP_NAME_TEX1_SIZE, ITEM_NAME_TEX_SIZE) + MAP_NAME_TEX2_SIZE);
|
||||
|
||||
PreRender_Init(&sPlayerPreRender);
|
||||
PreRender_SetValuesSave(&sPlayerPreRender, PAUSE_EQUIP_PLAYER_WIDTH, PAUSE_EQUIP_PLAYER_HEIGHT,
|
||||
@@ -2656,7 +2668,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
pauseCtx->worldMapPoints[i] = 0;
|
||||
}
|
||||
|
||||
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
|
||||
pauseCtx->worldMapPoints[0] = 2;
|
||||
}
|
||||
|
||||
@@ -2668,7 +2680,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
pauseCtx->worldMapPoints[1] = 2;
|
||||
}
|
||||
|
||||
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
|
||||
pauseCtx->worldMapPoints[1] = 1;
|
||||
}
|
||||
|
||||
@@ -2680,7 +2692,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
pauseCtx->worldMapPoints[2] = 2;
|
||||
}
|
||||
|
||||
if (CHECK_QUEST_ITEM(QUEST_GERUDO_CARD)) {
|
||||
if (CHECK_QUEST_ITEM(QUEST_GERUDOS_CARD)) {
|
||||
pauseCtx->worldMapPoints[2] = 1;
|
||||
}
|
||||
|
||||
@@ -2724,7 +2736,7 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
pauseCtx->worldMapPoints[5] = 1;
|
||||
}
|
||||
|
||||
if (INV_CONTENT(ITEM_OCARINA_TIME) == ITEM_OCARINA_TIME) {
|
||||
if (INV_CONTENT(ITEM_OCARINA_OF_TIME) == ITEM_OCARINA_OF_TIME) {
|
||||
pauseCtx->worldMapPoints[5] = 2;
|
||||
}
|
||||
|
||||
@@ -2856,16 +2868,16 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
if ((i == ITEM_COJIRO) || (i == ITEM_ODD_POTION)) {
|
||||
pauseCtx->tradeQuestLocation = 9;
|
||||
}
|
||||
if (i == ITEM_SAW) {
|
||||
if (i == ITEM_POACHERS_SAW) {
|
||||
pauseCtx->tradeQuestLocation = 2;
|
||||
}
|
||||
if ((i == ITEM_SWORD_BROKEN) || (i == ITEM_EYEDROPS)) {
|
||||
if ((i == ITEM_BROKEN_GORONS_SWORD) || (i == ITEM_EYE_DROPS)) {
|
||||
pauseCtx->tradeQuestLocation = 7;
|
||||
}
|
||||
if (i == ITEM_PRESCRIPTION) {
|
||||
pauseCtx->tradeQuestLocation = 11;
|
||||
}
|
||||
if (i == ITEM_FROG) {
|
||||
if (i == ITEM_EYEBALL_FROG) {
|
||||
pauseCtx->tradeQuestLocation = 3;
|
||||
}
|
||||
if ((i == ITEM_CLAIM_CHECK) && (gSaveContext.bgsFlag == 0)) {
|
||||
@@ -3150,39 +3162,39 @@ void KaleidoScope_Update(PlayState* play) {
|
||||
pauseCtx->iconItemSegment = (void*)(((uintptr_t)play->objectCtx.spaceStart + 0x30) & ~0x3F);
|
||||
size0 = (uintptr_t)_icon_item_staticSegmentRomEnd - (uintptr_t)_icon_item_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item size0=%x\n", size0);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0,
|
||||
"../z_kaleido_scope_PAL.c", 4356);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemSegment, (uintptr_t)_icon_item_staticSegmentRomStart, size0,
|
||||
"../z_kaleido_scope_PAL.c", 4356);
|
||||
|
||||
pauseCtx->iconItem24Segment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemSegment + size0);
|
||||
size = (uintptr_t)_icon_item_24_staticSegmentRomEnd - (uintptr_t)_icon_item_24_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item24 size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItem24Segment, (uintptr_t)_icon_item_24_staticSegmentRomStart, size,
|
||||
"../z_kaleido_scope_PAL.c", 4363);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItem24Segment, (uintptr_t)_icon_item_24_staticSegmentRomStart, size,
|
||||
"../z_kaleido_scope_PAL.c", 4363);
|
||||
|
||||
pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size);
|
||||
size2 = (uintptr_t)_icon_item_gameover_staticSegmentRomEnd -
|
||||
(uintptr_t)_icon_item_gameover_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon gameover-size2=%x\n", size2);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemAltSegment, (uintptr_t)_icon_item_gameover_staticSegmentRomStart,
|
||||
size2, "../z_kaleido_scope_PAL.c", 4370);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemAltSegment, (uintptr_t)_icon_item_gameover_staticSegmentRomStart,
|
||||
size2, "../z_kaleido_scope_PAL.c", 4370);
|
||||
|
||||
pauseCtx->iconItemLangSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size2);
|
||||
|
||||
if (gSaveContext.language == LANGUAGE_ENG) {
|
||||
size = (uintptr_t)_icon_item_nes_staticSegmentRomEnd - (uintptr_t)_icon_item_nes_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_nes_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 4379);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_nes_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 4379);
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
size = (uintptr_t)_icon_item_ger_staticSegmentRomEnd - (uintptr_t)_icon_item_ger_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_ger_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 4386);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_ger_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 4386);
|
||||
} else {
|
||||
size = (uintptr_t)_icon_item_fra_staticSegmentRomEnd - (uintptr_t)_icon_item_fra_staticSegmentRomStart;
|
||||
osSyncPrintf("icon_item_dungeon dungeon-size=%x\n", size);
|
||||
DmaMgr_SendRequest1(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_fra_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 4393);
|
||||
DmaMgr_RequestSyncDebug(pauseCtx->iconItemLangSegment, (uintptr_t)_icon_item_fra_staticSegmentRomStart,
|
||||
size, "../z_kaleido_scope_PAL.c", 4393);
|
||||
}
|
||||
|
||||
D_8082AB8C = 255;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user