z_map decompiled (#1032)

* First batch of functions

* more ok

* z_map_data OK

* More OKs, MinimapList ZAPD breaking change

* func_80103A58 improvements, more OK

* func_80106D5C and func_801091F0 decomped

* func_801031D0 decomped and some fixes

* house cleaning, more OKs more decomp

* Even more OKs

* func_80105C40 almost OK, more OKs

* func_80108AF8 OK and more

* All functions attempted

* func_8010534C OK

* Start documentation, rename DoorCtx

* More OKs, split map_data.data, more doc

* incremental clean-up, more function names

* more function names

* func_801068FC OK

* old uncommitted changes

* minor tweaks

* implement easy fixes

* more fixes

* z_map_disp OK, implement more suggestions

* delete utility program

* migrate data

* TransiActor ->TransitionActor

* Major documentation pass

* first pass of changes

* warning fix attempt, revert ZFile.cpp

* Fix FAKE match

* Easy fixes

* implement gDPLoadTextureBlock_Runtime

* z_demo bss patch

* Extract white square texture

* Implement more suggestions

* rework MapIndex/DungeonIndex

* revert dungeonSceneIndex -> mapIndex in some spots, implement suggestions

* more suggestions

* minor nits

* fix #include
This commit is contained in:
mzxrules 2024-06-20 21:21:37 -04:00 committed by GitHub
parent b55f8ffe6e
commit 2c680efa91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
46 changed files with 3309 additions and 880 deletions

View File

@ -0,0 +1,5 @@
<Root>
<File Name="code" OutName="z_map_disp" BaseAddress="0x800A5AC0" RangeStart="0x119078" RangeEnd="0x1190F8" >
<Texture Name="sWhiteSquareTex" OutName="white_square" Format="i4" Width="16" Height="16" Offset="0x119078"/>
</File>
</Root>

View File

@ -5,7 +5,11 @@
<Texture Name="gDoorLockTex" OutName="door_lock" Format="rgba16" Width="32" Height="32" Offset="0x2C0" />
<Texture Name="gBossDoorLockTex" OutName="boss_door_lock" Format="rgba16" Width="32" Height="32" Offset="0xAC0" />
<Texture Name="gDoorChainTex" OutName="door_chain" Format="rgba16" Width="16" Height="128" Offset="0x12C0" />
<Blob Name="gameplay_dangeon_keep_Blob_0022C0" Size="0x5000" Offset="0x22C0" />
<Texture Name="gameplay_dangeon_keep_Tex_0022C8" OutName="tex_0022C8" Format="i4" Width="96" Height="85" Offset="0x22C8" />
<Texture Name="gameplay_dangeon_keep_Tex_0032C8" OutName="tex_0032C8" Format="i4" Width="96" Height="85" Offset="0x32C8" />
<Texture Name="gameplay_dangeon_keep_Tex_0042C8" OutName="tex_0042C8" Format="i4" Width="96" Height="85" Offset="0x42C8" />
<Texture Name="gameplay_dangeon_keep_Tex_0052C8" OutName="tex_0052C8" Format="i4" Width="96" Height="85" Offset="0x52C8" />
<Texture Name="gameplay_dangeon_keep_Tex_0062C8" OutName="tex_0062C8" Format="i4" Width="96" Height="85" Offset="0x62C8" />
<DList Name="gameplay_dangeon_keep_DL_007300" Offset="0x7300" />
<Collision Name="gameplay_dangeon_keep_Colheader_007498" Offset="0x7498" />
<DList Name="gameplay_dangeon_keep_DL_007650" Offset="0x7650" />

View File

@ -880,7 +880,7 @@
<!-- Bombchu -->
<Texture Name="gBombchuBodyTex" OutName="bombchu_body" Format="rgba16" Width="8" Height="8" Offset="0x16060" />
<DList Name="gBombchuDL" Offset="0x16360" />
<Texture Name="gEffBombExplosion1Tex" OutName="eff_bomb_explosion_1" Format="ia16" Width="32" Height="32" Offset="0x164D0" />
<Texture Name="gEffBombExplosion2Tex" OutName="eff_bomb_explosion_2" Format="ia16" Width="32" Height="32" Offset="0x16CD0" />
<Texture Name="gEffBombExplosion3Tex" OutName="eff_bomb_explosion_3" Format="ia16" Width="32" Height="32" Offset="0x174D0" />
@ -908,7 +908,7 @@
<Texture Name="gElegyShellBeltAndTunicTex" OutName="elegy_shell_human_belt_and_tunic" Format="rgba16" Width="32" Height="16" Offset="0x1E6F8" />
<Texture Name="gElegyShellHumanHairTex" OutName="elegy_shell_human_hair" Format="rgba16" Width="16" Height="16" Offset="0x1EAF8" />
<DList Name="gameplay_keep_DL_01ED00" Offset="0x1ED00" />
<DList Name="gCompassArrowDL" Offset="0x1ED00" />
<DList Name="gameplay_keep_DL_01ED90" Offset="0x1ED90" />
<DList Name="gZTargetArrowDL" Offset="0x1F0F0" />
<Texture Name="gameplay_keep_Tex_01F200" OutName="tex_01F200" Format="i8" Width="8" Height="8" Offset="0x1F200" />
@ -1296,7 +1296,7 @@
<Texture Name="gDropDekuNutTex" OutName="drop_deku_nut" Format="rgba16" Width="32" Height="32" Offset="0x607C0" />
<Texture Name="gDropDekuStickTex" OutName="drop_deku_stick" Format="rgba16" Width="32" Height="32" Offset="0x60FC0" />
<Texture Name="gDropMagicLargeTex" OutName="drop_magic_large" Format="rgba16" Width="32" Height="32" Offset="0x617C0" />
<!-- Rupees -->
<Texture Name="gRupeeGreenTex" OutName="rupee_green" Format="rgba16" Width="4" Height="4" Offset="0x61FC0" />
<Texture Name="gRupeeBlueTex" OutName="rupee_blue" Format="rgba16" Width="4" Height="4" Offset="0x61FE0" />
@ -1312,7 +1312,7 @@
<Texture Name="gRupeeLightRedTex" OutName="rupee_light_red" Format="rgba16" Width="4" Height="4" Offset="0x63B90" />
<Texture Name="gRupeeLightBlueTex" OutName="rupee_light_blue" Format="rgba16" Width="4" Height="4" Offset="0x63BB0" />
<Texture Name="gHeartContainerTex" OutName="heart_container" Format="rgba16" Width="32" Height="32" Offset="0x63BD0" />
<Texture Name="gameplay_keep_Tex_0643D0" OutName="tex_0643D0" Format="rgba16" Width="32" Height="32" Offset="0x643D0" />
<Texture Name="gameplay_keep_Tex_064BD0" OutName="tex_064BD0" Format="rgba16" Width="32" Height="32" Offset="0x64BD0" />
<Texture Name="gameplay_keep_Tex_0653D0" OutName="tex_0653D0" Format="rgba16" Width="32" Height="32" Offset="0x653D0" />

View File

@ -1,7 +1,7 @@
<Root>
<File Name="ovl_En_Mm2" BaseAddress="0x809A2030" RangeStart="0x240" RangeEnd="0xAD0">
<Texture Name="sEnMm2EnvelopeTex" OutName="mm2_envelope" Format="i8" Width="32" Height="32" Offset="0x240"/>
<Texture Name="sEnMm2LetterTex" OutName="mm2_letter" Format="i8" Width="16" Height="16" Offset="0x640"/>
<Texture Name="sEnMm2LetterTex" OutName="mm2_letter" Format="rgba16" Width="16" Height="16" Offset="0x640"/>
<Array Name="sEnMm21Vtx" Count="10" Offset="0x840">
<Vtx/>
</Array>

View File

@ -1,6 +1,6 @@
<Root>
<File Name="ovl_Oceff_Wipe7" BaseAddress="0x80BCDCB0" RangeStart="0x330" RangeEnd="0xDB8">
<Texture Name="sSongofHealingEffectTex" OutName="song_of_healing_effect" Format="i8" Width="32" Height="32" Offset="0x330"/>
<Texture Name="sSongofHealingEffectTex" OutName="song_of_healing_effect" Format="i8" Width="32" Height="64" Offset="0x330"/>
<TextureAnimation Name="sSongofHealingEffectTexAnim" Offset="0xB38" />
<Array Name="sSongofHealingEffectFrustrumVtx" Count="22" Offset="0xB40">
<Vtx/>

View File

@ -226,114 +226,6 @@ void GetItem_Draw(PlayState* play, s16 drawId);
u16 QuestHint_GetTatlTextId(PlayState* play);
// void func_80102E40(void);
// void func_80102E90(void);
// void func_80102EA4(void);
void func_80102EB4(u32 param_1);
void func_80102ED0(u32 param_1);
s32 func_80102EF0(PlayState* play);
// void func_80102F9C(void);
// void func_80103090(void);
// void func_801030B4(void);
// void func_801030F4(void);
// void func_801031D0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_801039EC(void);
// void func_80103A10(void);
// void func_80103A58(void);
// void func_8010439C(void);
// void func_801045AC(void);
// void func_80104AE8(void);
// void func_80104C80(void);
void func_80104CF4(PlayState* play);
// void func_80104F34(void);
s32 func_80105294(void);
s16 func_80105318(void);
// void func_80105328(void);
// void func_8010534C(void);
void func_8010549C(PlayState* play, void* segmentAddress);
void func_8010565C(PlayState* play, u8 num, void* segmentAddress);
void func_80105818(PlayState* play, u32 uParm2, TransitionActorEntry* puParm3);
void func_80105A40(PlayState* play);
void func_80105B34(PlayState* play);
void func_80105C40(s16 arg0);
// void func_80105FE0(void);
// void func_80106408(void);
// void func_80106450(void);
// void func_801064CC(void);
s32 func_80106530(PlayState* play);
// void func_8010657C(void);
void func_80106644(PlayState* play, s16 arg1, s16 arg2, s16 arg3);
// void func_8010683C(void);
// void func_801068B4(void);
// void func_801068D8(void);
void* func_801068FC(PlayState* play, void* arg1, size_t size);
// void func_80106BEC(void);
// void func_80106D08(void);
// void func_80106D5C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_80107B78(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_80108124(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_80108558(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_80108A10(void);
// void func_80108A64(void);
void func_80108AF8(PlayState* play);
s32 func_801090B0(s32 arg0);
s32 func_80109124(s16 arg0);
void func_801091F0(PlayState* play);
void func_80109428(PlayState* play);
// void func_801094A0(void);
// void func_801094C8(void);
// void func_801094F8(void);
// void func_80109528(void);
// void func_8010954C(void);
// void func_8010956C(void);
// void func_8010958C(void);
// void func_801095AC(void);
// void func_801095DC(void);
// void func_8010960C(void);
// void func_80109630(void);
// void func_80109650(void);
// void func_80109670(void);
// void func_801096D4(void);
// void func_80109714(void);
// void func_80109754(void);
// void func_801097C8(void);
// void func_8010983C(void);
// void func_801098A0(void);
// void func_80109908(void);
// UNK_TYPE4 func_80109964(s32 param_1);
// void func_8010997C(void);
// void func_801099AC(void);
// void func_801099DC(void);
// void func_80109A00(void);
// void func_80109A20(void);
// void func_80109A40(void);
// void func_80109A98(void);
// void func_80109AD8(void);
// void func_80109B38(void);
// void func_80109BA0(void);
// void func_80109BF4(void);
// void func_80109C38(void);
// void func_80109CBC(void);
// void func_80109D40(void);
// void func_80109DD8(void);
// void func_80109E70(void);
// void func_80109EF8(void);
// void func_80109F78(void);
s32 Map_GetDungeonOrBossAreaIndex(PlayState* play);
s32 Map_IsInDungeonOrBossArea(PlayState* play);
s32 func_8010A0A4(PlayState* play);
// void Map_GetDungeonAreaIndex(PlayState* play);
// void Map_IsInDungeonArea(PlayState* play);
// void Map_GetBossAreaIndex(PlayState* play);
// void Map_IsInBossArea(PlayState* play);
// void func_8010A238(PlayState* play);
// void func_8010A2AC(PlayState* play);
void Minimap_SavePlayerRoomInitInfo(PlayState* play);
void Map_InitRoomData(PlayState* play, s16 room);
void Map_Destroy(PlayState* play);
void Map_Init(PlayState* play);
void Minimap_Draw(PlayState* play);
void Map_Update(PlayState* play);
f32 OLib_Vec3fDist(Vec3f* a, Vec3f* b);
f32 OLib_Vec3fDistOutDiff(Vec3f* a, Vec3f* b, Vec3f* dest);
f32 OLib_Vec3fDistXZ(Vec3f* a, Vec3f* b);

View File

@ -146,7 +146,7 @@ extern RegEditor* gRegEditor;
#define R_MOON_CRASH_TIMER_X XREG(81)
#define R_PAUSE_OWL_WARP_ALPHA XREG(87)
#define R_STORY_FILL_SCREEN_ALPHA XREG(91)
#define R_REVERSE_FLOOR_INDEX XREG(94)
#define R_PLAYER_FLOOR_REVERSE_INDEX XREG(94) // stores what floor the player is on
#define R_MINIMAP_DISABLED XREG(95)
#define R_ENV_LIGHT1_DIR(i) cREG(3 + (i))

View File

@ -110,7 +110,7 @@ typedef struct PlayState {
/* 0x17104 */ AnimationContext animationCtx;
/* 0x17D88 */ ObjectContext objectCtx;
/* 0x186E0 */ RoomContext roomCtx;
/* 0x18760 */ DoorContext doorCtx;
/* 0x18760 */ TransitionActorList transitionActors;
/* 0x18768 */ void (*playerInit)(Player* player, struct PlayState* play, FlexSkeletonHeader* skelHeader);
/* 0x1876C */ void (*playerUpdate)(Player* player, struct PlayState* play, Input* input);
/* 0x18770 */ void (*unk_18770)(struct PlayState* play, Player* player);

View File

@ -178,7 +178,7 @@ typedef struct {
/* 0x274 */ s16 minimapAlpha;
/* 0x276 */ s16 startAlpha;
/* 0x278 */ s16 unk_278;
/* 0x27A */ s16 dungeonOrBossAreaMapIndex;
/* 0x27A */ s16 dungeonSceneIndex;
/* 0x27C */ s16 mapRoomNum;
/* 0x27E */ u8 unk_27E;
/* 0x27F */ u8 unk_27F;

View File

@ -1,6 +1,143 @@
#ifndef Z64MAP_H
#define Z64MAP_H
#include "ultra64.h"
#include "z64scene.h"
struct PlayState;
/*
Handles the minimap and pause screen dungeon map system.
z_map_data.c stores MapSpriteInfo and helper functions to "simplify" accessing this data
Two separate Id systems are used to access data
mapId
0x000-0x004 fetches minimap sprite data from gameplay_dangeon_keep
0x005-0x039 fetches dungeon map sprite data from map_i_static
0x100-0x161 fetches minimap sprite data from map_grand_static
mapCompactId
0x000-0x039 fetches dungeon map sprite data from map_i_static
0x03A-0x09B fetches minimap sprite data from map_grand_static
*/
#define FLOOR_INDEX_MAX 4
#define FLOOR_MIN_Y -32767
/* z_map_data */
#define MAPDATA_GAMEPLAY_DANGEON_KEEP_MAX 5
#define MAPDATA_MAP_I_MAX 0x3A
#define MAPDATA_MAP_GRAND 0x100
#define MAPDATA_MAP_GRAND_MAX 0x162
#define MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(id) ((id) + (MAPDATA_MAP_GRAND - MAPDATA_MAP_I_MAX))
#define MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId) ((mapId) - MAPDATA_MAP_GRAND)
#define MAPDATA_MID_GAMEPLAY_DANGEON_KEEP 0
#define MAPDATA_MID_MAP_GRAND_STATIC 1
#define MAPDATA_MID_MAP_I_STATIC 2
#define MAPDATA_CPID_MAP_GRAND_STATIC 0
#define MAPDATA_CPID_MAP_I_STATIC 1
#define MAPDATA_CPID_2 2
#define MAPDATA_DRAW_0 0
#define MAPDATA_DRAW_1 1
#define MAPDATA_DRAW_2 2
#define MAPDATA_DRAW_3 3
/* z_map_disp */
typedef struct {
/* 0x00 */ MapDataScene* mapDataScene;
/* 0x04 */ s32 curRoom;
/* 0x08 */ s16 minimapBaseX;
/* 0x0A */ s16 minimapBaseY;
/* 0x0C */ s16 minimapCurX;
/* 0x0E */ s16 minimapCurY;
/* 0x10 */ TexturePtr minimapCurTex; // gameplay cur minimap room
/* 0x14 */ s32 prevRoom;
/* 0x18 */ TexturePtr minimapPrevTex;
/* 0x1C */ s16 minimapPrevX; // for room swap animation
/* 0x1E */ s16 minimapPrevY; // for room swap animation
/* 0x20 */ s32 unk20;
/* 0x24 */ s32 swapAnimTimer;
/* 0x28 */ void* texBuff0;
/* 0x2C */ void* texBuff1;
/* 0x30 */ s16 sceneMinX; //scene minBounds.x
/* 0x32 */ s16 sceneMinZ; //scene minBounds.z
/* 0x34 */ s16 sceneWidth; //scene boundsWidth.x
/* 0x36 */ s16 sceneHeight; //scene boundsWidth.z
/* 0x38 */ s16 sceneMidX; //scene boundsMidpoint.x
/* 0x3A */ s16 sceneMidZ; //scene boundsMidpoint.z
/* 0x3C */ s16* roomStoreyList; // list of lowest storey each room crosses
/* 0x40 */ s16 numStoreys; // number of distinct storeys
/* 0x42 */ s16 pauseMapCurStorey;
/* 0x44 */ s16 bottomStorey; // configures what storey 0 is displayed as
/* 0x48 */ s16* storeyYList; // list of min Ys for each storey
/* 0x4C */ s16 timer;
/* 0x50 */ s32 numChests;
/* 0x54 */ MapDataChest* mapDataChests;
/* 0x58 */ s16 bossRoomStorey;
/* 0x5A */ s16 unk5A;
} MapDisp; // size = 0x5C
typedef struct {
/* 0x000 */ s32 textureCount;
/* 0x004 */ s32 mapI_mapCompactId[ROOM_MAX];
/* 0x084 */ void* mapI_roomTextures[ROOM_MAX];
/* 0x104 */ void* roomSprite[ROOM_MAX];
/* 0x184 */ s32 animTimer;
} PauseDungeonMap; // size = 0x188
/* z_map_disp */
void func_80102EB4(u32 flag);
void func_80102ED0(u32 flag);
s32 MapDisp_CurRoomHasMapI(struct PlayState* play);
void MapDisp_Init(struct PlayState* play);
s32 MapDisp_GetBossIconY(void);
s16 MapDisp_GetBossRoomStorey(void);
void MapDisp_InitMapData(struct PlayState* play, void* segmentAddress);
void MapDisp_InitChestData(struct PlayState* play, s32 num, void* segmentAddress);
void MapDisp_InitTransitionActorData(struct PlayState* play, s32 num, TransitionActorEntry* transitionActorList);
void MapDisp_Destroy(struct PlayState* play);
void MapDisp_Update(struct PlayState* play);
void MapDisp_SwapRooms(s16 nextRoom);
s32 MapDisp_IsMinimapToggleBlocked(struct PlayState* play);
void MapDisp_DrawMinimap(struct PlayState* play, s32 playerInitX, s32 playerInitZ, s32 playerInitDir);
void* MapDisp_AllocDungeonMap(struct PlayState* play, void* heap);
void MapDisp_DrawDungeonFloorSelect(struct PlayState* play);
s32 MapDisp_IsValidStorey(s32 storey);
s32 MapDisp_GetPlayerStorey(s16 checkY);
void MapDisp_DrawDungeonMap(struct PlayState* play);
void MapDisp_UpdateDungeonMap(struct PlayState* play);
/* z_map_data */
void MapData_GetMapColor(s32 colorIndex, Color_RGBA8* color);
TexturePtr MapData_GetMapTexGameplayDangeonKeep(s32);
s32 MapData_GetMapCompactId(s32);
s32 MapData_MID_GetType(s32);
s32 MapData_CPID_GetSizeOfMapTex(s32);
void MapData_GetDrawType(s32, s32*);
s32 MapData_GetMapColorIndex(s32);
s32 MapDisp_GetSizeOfMapITex(s32 mapCompactId);
s32 MapData_GetMapIId(s32);
s32 MapData_GetSizeOfMapGrandTex(s32 mapId);
void MapData_GetMapTexDim(s32 mapId, s32* width, s32* height);
void MapData_GetMapTexOffset(s32 mapId, s32* offsetX, s32* offsetY);
void MapData_GetMapScale(s32 mapId, s32 *scale);
void MapData_CPID_GetTexDim(s32 mapCompactId, s32* width, s32* height);
void MapData_CPID_GetTexOffset(s32 mapCompactId, s32* offsetX, s32* offsetY);
s16 MapData_CPID_GetMapScale(s32 mapCompactId);
/* z_map_exp */
s32 Map_IsInDungeonOrBossScene(struct PlayState* play);
s32 Map_CurRoomHasMapI(struct PlayState* play);
s32 Map_IsInBossScene(struct PlayState* play);
void Map_SetAreaEntrypoint(struct PlayState* play);
void Map_InitRoomData(struct PlayState* play, s16 room);
void Map_Destroy(struct PlayState* play);
void Map_Init(struct PlayState* play);
void Map_DrawMinimap(struct PlayState* play);
void Map_Update(struct PlayState* play);
#endif

View File

@ -139,7 +139,7 @@ typedef struct PauseContext {
/* 0x238 */ s16 cursorPoint[PAUSE_PAGE_MAX]; // indexed by PauseMenuPage enum
/* 0x242 */ s16 cursorXIndex[PAUSE_PAGE_MAX]; // indexed by PauseMenuPage enum
/* 0x24C */ s16 cursorYIndex[PAUSE_PAGE_MAX]; // indexed by PauseMenuPage enum
/* 0x256 */ s16 unk_256; // Uses DungeonItem enum
/* 0x256 */ s16 cursorMapDungeonItem; // Uses DungeonItem enum
/* 0x258 */ s16 cursorSpecialPos;
/* 0x25A */ s16 pageSwitchInputTimer; // Used to introduce a delay before switching page when arriving on the "scroll left/right" positions while holding stick left/right.
/* 0x25C */ u16 namedItem;

View File

@ -317,36 +317,36 @@ typedef struct SaveInfo {
} SaveInfo; // size = 0xFE8
typedef struct Save {
/* 0x00 */ s32 entrance; // "scene_no"
/* 0x04 */ u8 equippedMask; // "player_mask"
/* 0x05 */ u8 isFirstCycle; // "opening_flag"
/* 0x00 */ s32 entrance; // "scene_no"
/* 0x04 */ u8 equippedMask; // "player_mask"
/* 0x05 */ u8 isFirstCycle; // "opening_flag"
/* 0x06 */ u8 unk_06;
/* 0x07 */ u8 linkAge; // "link_age"
/* 0x08 */ s32 cutsceneIndex; // "day_time"
/* 0x0C */ u16 time; // "zelda_time"
/* 0x0E */ u16 owlWarpId; // See `OwlWarpId` enum
/* 0x10 */ s32 isNight; // "asahiru_fg"
/* 0x14 */ s32 timeSpeedOffset; // "change_zelda_time"
/* 0x18 */ s32 day; // "totalday"
/* 0x1C */ s32 eventDayCount; // "eventday"
/* 0x20 */ u8 playerForm; // "player_character"
/* 0x21 */ u8 snowheadCleared; // "spring_flag"
/* 0x22 */ u8 hasTatl; // "bell_flag"
/* 0x07 */ u8 linkAge; // "link_age"
/* 0x08 */ s32 cutsceneIndex; // "day_time"
/* 0x0C */ u16 time; // "zelda_time"
/* 0x0E */ u16 owlWarpId; // See `OwlWarpId` enum
/* 0x10 */ s32 isNight; // "asahiru_fg"
/* 0x14 */ s32 timeSpeedOffset; // "change_zelda_time"
/* 0x18 */ s32 day; // "totalday"
/* 0x1C */ s32 eventDayCount; // "eventday"
/* 0x20 */ u8 playerForm; // "player_character"
/* 0x21 */ u8 snowheadCleared; // "spring_flag"
/* 0x22 */ u8 hasTatl; // "bell_flag"
/* 0x23 */ u8 isOwlSave;
/* 0x24 */ SaveInfo saveInfo;
} Save; // size = 0x100C
typedef struct SaveContext {
/* 0x0000 */ Save save;
/* 0x100C */ u8 eventInf[8]; // "event_inf"
/* 0x1014 */ u8 unk_1014; // "stone_set_flag"
/* 0x100C */ u8 eventInf[8]; // "event_inf"
/* 0x1014 */ u8 unk_1014; // "stone_set_flag"
/* 0x1015 */ u8 bButtonStatus;
/* 0x1016 */ u16 jinxTimer;
/* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct"
/* 0x101A */ u8 bottleTimerStates[BOTTLE_MAX]; // See the `BottleTimerState` enum. "bottle_status"
/* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct"
/* 0x101A */ u8 bottleTimerStates[BOTTLE_MAX]; // See the `BottleTimerState` enum. "bottle_status"
/* 0x1020 */ OSTime bottleTimerStartOsTimes[BOTTLE_MAX]; // The osTime when the timer starts. "bottle_ostime"
/* 0x1050 */ u64 bottleTimerTimeLimits[BOTTLE_MAX]; // The original total time given before the timer expires, in centiseconds (1/100th sec). "bottle_sub"
/* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time"
/* 0x1080 */ u64 bottleTimerCurTimes[BOTTLE_MAX]; // The remaining time left before the timer expires, in centiseconds (1/100th sec). "bottle_time"
/* 0x10B0 */ OSTime bottleTimerPausedOsTimes[BOTTLE_MAX]; // The cumulative osTime spent with the timer paused. "bottle_stop_time"
/* 0x10E0 */ u8 pictoPhotoI5[PICTO_PHOTO_COMPRESSED_SIZE]; // buffer containing the pictograph photo, compressed to I5 from I8
/* 0x3CA0 */ s32 fileNum; // "file_no"
@ -367,58 +367,58 @@ typedef struct SaveContext {
/* 0x3DC0 */ s16 nayrusLoveTimer; // remnant of OoT, "shield_magic_timer"
/* 0x3DC2 */ u8 unk_3DC2; // "pad1"
/* 0x3DC8 */ OSTime postmanTimerStopOsTime; // The osTime when the timer stops for the postman minigame. "get_time"
/* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // See the `TimerState` enum. "event_fg"
/* 0x3DD0 */ u8 timerStates[TIMER_ID_MAX]; // See the `TimerState` enum. "event_fg"
/* 0x3DD7 */ u8 timerDirections[TIMER_ID_MAX]; // See the `TimerDirection` enum. "calc_flag"
/* 0x3DE0 */ u64 timerCurTimes[TIMER_ID_MAX]; // For countdown, the remaining time left. For countup, the time since the start. In centiseconds (1/100th sec). "event_ostime"
/* 0x3E18 */ u64 timerTimeLimits[TIMER_ID_MAX]; // The original total time given for the timer to count from, in centiseconds (1/100th sec). "event_sub"
/* 0x3E50 */ OSTime timerStartOsTimes[TIMER_ID_MAX]; // The osTime when the timer starts. "func_time"
/* 0x3E88 */ u64 timerStopTimes[TIMER_ID_MAX]; // The total amount of time taken between the start and end of the timer, in centiseconds (1/100th sec). "func_end_time"
/* 0x3EC0 */ OSTime timerPausedOsTimes[TIMER_ID_MAX]; // The cumulative osTime spent with the timer paused. "func_stop_time"
/* 0x3EF8 */ s16 timerX[TIMER_ID_MAX]; // "event_xp"
/* 0x3F06 */ s16 timerY[TIMER_ID_MAX]; // "event_yp"
/* 0x3F14 */ s16 unk_3F14; // "character_change"
/* 0x3F16 */ u8 seqId; // "old_bgm"
/* 0x3F17 */ u8 ambienceId; // "old_env"
/* 0x3F18 */ u8 buttonStatus[6]; // "button_item"
/* 0x3EF8 */ s16 timerX[TIMER_ID_MAX]; // "event_xp"
/* 0x3F06 */ s16 timerY[TIMER_ID_MAX]; // "event_yp"
/* 0x3F14 */ s16 unk_3F14; // "character_change"
/* 0x3F16 */ u8 seqId; // "old_bgm"
/* 0x3F17 */ u8 ambienceId; // "old_env"
/* 0x3F18 */ u8 buttonStatus[6]; // "button_item"
/* 0x3F1E */ u8 hudVisibilityForceButtonAlphasByStatus; // if btn alphas are updated through Interface_UpdateButtonAlphas, instead update them through Interface_UpdateButtonAlphasByStatus "ck_fg"
/* 0x3F20 */ u16 nextHudVisibility; // triggers the hud to change visibility to the requested value. Reset to HUD_VISIBILITY_IDLE when target is reached "alpha_type"
/* 0x3F22 */ u16 hudVisibility; // current hud visibility "prev_alpha_type"
/* 0x3F20 */ u16 nextHudVisibility; // triggers the hud to change visibility to the requested value. Reset to HUD_VISIBILITY_IDLE when target is reached "alpha_type"
/* 0x3F22 */ u16 hudVisibility; // current hud visibility "prev_alpha_type"
/* 0x3F24 */ u16 hudVisibilityTimer; // number of frames in the transition to a new hud visibility. Used to step alpha "alpha_count"
/* 0x3F26 */ u16 prevHudVisibility; // used to store and recover hud visibility for pause menu and text boxes "last_time_type"
/* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag"
/* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag"
/* 0x3F2C */ s16 magicFlag; // Set to 0 in func_80812D94(), otherwise unused "keep_magic_flag"
/* 0x3F2E */ s16 magicCapacity; // maximum magic available "magic_now_max"
/* 0x3F30 */ s16 magicFillTarget; // target used to fill magic "magic_now_now"
/* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used"
/* 0x3F34 */ s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery"
/* 0x3F36 */ u16 mapIndex; // "scene_ID"
/* 0x3F38 */ u16 minigameStatus; // "yabusame_mode"
/* 0x3F3A */ u16 minigameScore; // "yabusame_total"
/* 0x3F3C */ u16 minigameHiddenScore; // "yabusame_out_ct"
/* 0x3F3E */ u8 unk_3F3E; // "no_save"
/* 0x3F3F */ u8 flashSaveAvailable; // "flash_flag"
/* 0x3F28 */ s16 magicState; // determines magic meter behavior on each frame "magic_flag"
/* 0x3F2A */ s16 isMagicRequested; // a request to add magic has been given "recovery_magic_flag"
/* 0x3F2C */ s16 magicFlag; // Set to 0 in func_80812D94(), otherwise unused "keep_magic_flag"
/* 0x3F2E */ s16 magicCapacity; // maximum magic available "magic_now_max"
/* 0x3F30 */ s16 magicFillTarget; // target used to fill magic "magic_now_now"
/* 0x3F32 */ s16 magicToConsume; // accumulated magic that is requested to be consumed "magic_used"
/* 0x3F34 */ s16 magicToAdd; // accumulated magic that is requested to be added "magic_recovery"
/* 0x3F36 */ u16 mapIndex; // set to enum DungeonSceneIndex when entering a dungeon related scene, or Map_GetMapIndexForOverworld on certain overworld scenes "scene_ID"
/* 0x3F38 */ u16 minigameStatus; // "yabusame_mode"
/* 0x3F3A */ u16 minigameScore; // "yabusame_total"
/* 0x3F3C */ u16 minigameHiddenScore; // "yabusame_out_ct"
/* 0x3F3E */ u8 unk_3F3E; // "no_save"
/* 0x3F3F */ u8 flashSaveAvailable; // "flash_flag"
/* 0x3F40 */ SaveOptions options;
/* 0x3F46 */ u16 forcedSeqId; // "NottoriBgm"
/* 0x3F48 */ u8 cutsceneTransitionControl; // "fade_go"
/* 0x3F4A */ u16 nextCutsceneIndex; // "next_daytime"
/* 0x3F4C */ u8 cutsceneTrigger; // "doukidemo"
/* 0x3F4D */ u8 chamberCutsceneNum; // remnant of OoT "Kenjya_no"
/* 0x3F4E */ u16 nextDayTime; // "next_zelda_time"
/* 0x3F50 */ u8 transFadeDuration; // "fade_speed"
/* 0x3F51 */ u8 transWipeSpeed; // "wipe_speed" transition related
/* 0x3F52 */ u16 skyboxTime; // "kankyo_time"
/* 0x3F54 */ u8 dogIsLost; // "dog_event_flag"
/* 0x3F55 */ u8 nextTransitionType; // "next_wipe"
/* 0x3F56 */ s16 worldMapArea; // "area_type"
/* 0x3F58 */ s16 sunsSongState; // "sunmoon_flag"
/* 0x3F5A */ s16 healthAccumulator; // "life_mode"
/* 0x3F5C */ s32 unk_3F5C; // "bet_rupees"
/* 0x3F60 */ u8 screenScaleFlag; // "framescale_flag"
/* 0x3F64 */ f32 screenScale; // "framescale_scale"
/* 0x3F68 */ CycleSceneFlags cycleSceneFlags[120]; // Scene flags that are temporarily stored over the duration of a single 3-day cycle
/* 0x48C8 */ u16 dungeonIndex; // "scene_id_mix"
/* 0x48CA */ u8 masksGivenOnMoon[27]; // bit-packed, masks given away on the Moon. "mask_mask_bit"
/* 0x3F46 */ u16 forcedSeqId; // "NottoriBgm"
/* 0x3F48 */ u8 cutsceneTransitionControl; // "fade_go"
/* 0x3F4A */ u16 nextCutsceneIndex; // "next_daytime"
/* 0x3F4C */ u8 cutsceneTrigger; // "doukidemo"
/* 0x3F4D */ u8 chamberCutsceneNum; // remnant of OoT "Kenjya_no"
/* 0x3F4E */ u16 nextDayTime; // "next_zelda_time"
/* 0x3F50 */ u8 transFadeDuration; // "fade_speed"
/* 0x3F51 */ u8 transWipeSpeed; // "wipe_speed" transition related
/* 0x3F52 */ u16 skyboxTime; // "kankyo_time"
/* 0x3F54 */ u8 dogIsLost; // "dog_event_flag"
/* 0x3F55 */ u8 nextTransitionType; // "next_wipe"
/* 0x3F56 */ s16 worldMapArea; // "area_type"
/* 0x3F58 */ s16 sunsSongState; // "sunmoon_flag"
/* 0x3F5A */ s16 healthAccumulator; // "life_mode"
/* 0x3F5C */ s32 unk_3F5C; // "bet_rupees"
/* 0x3F60 */ u8 screenScaleFlag; // "framescale_flag"
/* 0x3F64 */ f32 screenScale; // "framescale_scale"
/* 0x3F68 */ CycleSceneFlags cycleSceneFlags[120]; // Scene flags that are temporarily stored over the duration of a single 3-day cycle
/* 0x48C8 */ u16 dungeonSceneSharedIndex; // similar to mapIndex, except values correspond to one of the four dungeons "scene_id_mix"
/* 0x48CA */ u8 masksGivenOnMoon[27]; // bit-packed, masks given away on the Moon. "mask_mask_bit"
} SaveContext; // size = 0x48C8
typedef enum ButtonStatus {
@ -497,9 +497,16 @@ typedef enum {
#define DECREMENT_QUEST_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems -= (1 << QUEST_HEART_PIECE_COUNT))
#define RESET_HEART_PIECE_COUNT (gSaveContext.save.saveInfo.inventory.questItems ^= (4 << QUEST_HEART_PIECE_COUNT))
#define CHECK_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonIndex] & gBitFlags[item])
#define SET_DUNGEON_ITEM(item, dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonIndex] |= (u8)gBitFlags[item])
#define DUNGEON_KEY_COUNT(dungeonIndex) (gSaveContext.save.saveInfo.inventory.dungeonKeys[(void)0, dungeonIndex])
#define CHECK_DUNGEON_ITEM(item, dungeonSceneIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonSceneIndex] & gBitFlags[item])
#define CHECK_DUNGEON_ITEM_ALT(item, dungeonSceneIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[dungeonSceneIndex] & gBitFlags[item])
#define SET_DUNGEON_ITEM(item, dungeonSceneIndex) (gSaveContext.save.saveInfo.inventory.dungeonItems[(void)0, dungeonSceneIndex] |= (u8)gBitFlags[item])
#define DUNGEON_KEY_COUNT(dungeonSceneIndex) (gSaveContext.save.saveInfo.inventory.dungeonKeys[(void)0, dungeonSceneIndex])
#define GET_DUNGEON_FLOOR_VISITED(sceneId, floor) (gSaveContext.save.saveInfo.permanentSceneFlags[(sceneId)].unk_14 & gBitFlags[floor])
#define SET_DUNGEON_FLOOR_VISITED(sceneId, floor) (gSaveContext.save.saveInfo.permanentSceneFlags[(sceneId)].unk_14 |= gBitFlags[floor])
#define GET_ROOM_VISITED(sceneId, room) (((void)0, gSaveContext.save.saveInfo.permanentSceneFlags[(sceneId)].rooms) & (1 << (room)))
#define SET_ROOM_VISITED(sceneId, room) (gSaveContext.save.saveInfo.permanentSceneFlags[(sceneId)].rooms |= gBitFlags[room])
#define GET_CYCLE_CHEST_OPENED(sceneId, chestFlagId) ((void)0, gSaveContext.cycleSceneFlags[(sceneId)].chest) & (1 << (chestFlagId));
#define GET_CUR_FORM_BTN_ITEM(btn) ((u8)((btn) == EQUIP_SLOT_B ? BUTTON_ITEM_EQUIP(CUR_FORM, btn) : BUTTON_ITEM_EQUIP(0, btn)))
#define GET_CUR_FORM_BTN_SLOT(btn) ((u8)((btn) == EQUIP_SLOT_B ? C_SLOT_EQUIP(CUR_FORM, btn) : C_SLOT_EQUIP(0, btn)))
@ -1673,11 +1680,18 @@ typedef enum {
gSaveContext.eventInf[7] = (temp)
typedef enum {
/* 0 */ DUNGEON_INDEX_WOODFALL_TEMPLE,
/* 1 */ DUNGEON_INDEX_SNOWHEAD_TEMPLE,
/* 2 */ DUNGEON_INDEX_GREAT_BAY_TEMPLE,
/* 3 */ DUNGEON_INDEX_STONE_TOWER_TEMPLE // Also applies to Inverted Stone Tower Temple
} DungeonIndex;
// These first 4 values are also used represent the index of the temple the player is currently in
/* 0 */ DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE,
/* 1 */ DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE,
/* 2 */ DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE,
/* 3 */ DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE,
/* 4 */ DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE_INVERTED,
/* 5 */ DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE_BOSS,
/* 6 */ DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE_BOSS,
/* 7 */ DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE_BOSS,
/* 8 */ DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE_BOSS
} DungeonSceneIndex;
#define STRAY_FAIRY_TOTAL 25 // total number of stray fairies, including those already in the Great Fairy Fountain
#define STRAY_FAIRY_SCATTERED_TOTAL 15 // original number of stray fairies in one dungeon area

View File

@ -10,6 +10,9 @@
struct GameState;
struct PlayState;
#define ROOM_MAX 32 // maximum number of rooms in a scene
#define ROOM_TRANSITION_MAX 48 // maximum number of transition actors in a scene
#define SPAWN_ROT_FLAGS(rotation, flags) (((rotation) << 7) | (flags))
#define ROOM_DRAW_OPA (1 << 0)
@ -107,7 +110,7 @@ typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdTransiActorList; // size = 0x8
} SCmdTransitionActorList; // size = 0x8
typedef struct {
/* 0x0 */ u8 code;
@ -207,13 +210,13 @@ typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 data1;
/* 0x4 */ void* segment;
} SCmdMinimapSettings; // size = 0x8
} SCmdMapData; // size = 0x8
typedef struct {
/* 0x0 */ u8 code;
/* 0x1 */ u8 num;
/* 0x4 */ void* segment;
} SCmdMinimapChests; // size = 0x8
} SCmdMapDataChests; // size = 0x8
typedef enum {
/* 0 */ ROOM_SHAPE_TYPE_NORMAL,
@ -373,9 +376,9 @@ typedef struct TransitionActorEntry {
} TransitionActorEntry; // size = 0x10
typedef struct {
/* 0x0 */ u8 numTransitionActors;
/* 0x4 */ TransitionActorEntry* transitionActorList;
} DoorContext; // size = 0x8
/* 0x0 */ u8 count;
/* 0x4 */ TransitionActorEntry* list;
} TransitionActorList; // size = 0x8
typedef struct {
/* 0x0 */ s16 id;
@ -474,25 +477,38 @@ typedef struct {
} ObjectContext; // size = 0x958
typedef struct {
/* 0x0 */ UNK_TYPE2 unk0;
/* 0x2 */ UNK_TYPE2 unk2;
/* 0x4 */ UNK_TYPE2 unk4;
/* 0x6 */ UNK_TYPE2 unk6;
/* 0x8 */ UNK_TYPE2 unk8;
} MinimapEntry; // size = 0xA
/* 0x0 */ u16 mapId;
/* 0x2 */ s16 centerX;
/* 0x4 */ s16 floorY;
/* 0x6 */ s16 centerZ;
/* 0x8 */ u16 flags;
} MapDataRoom; // size = 0xA
#define MAP_DATA_NO_MAP 0xFFFF
#define MAP_DATA_ROOM_FLIP_X 1
#define MAP_DATA_ROOM_FLIP_Y 2
#define MAP_DATA_ROOM_GET_EXTRA_STOREYS(mapDataRoom) ((((mapDataRoom)->flags) >> 2) & 7)
typedef struct {
/* 0x0 */ MinimapEntry* entry;
/* 0x4 */ s16 unk4;
} MinimapList; // size = 0x8
/* 0x0 */ MapDataRoom* rooms;
/* 0x4 */ s16 scale;
} MapDataScene; // size = 0x8
typedef struct {
/* 0x0 */ UNK_TYPE2 unk0;
/* 0x2 */ UNK_TYPE2 unk2;
/* 0x4 */ UNK_TYPE2 unk4;
/* 0x6 */ UNK_TYPE2 unk6;
/* 0x8 */ UNK_TYPE2 unk8;
} MinimapChest; // size = 0xA
/* 0x0 */ s16 room;
/* 0x2 */ s16 chestFlagId;
/* 0x4 */ s16 x;
/* 0x6 */ s16 y;
/* 0x8 */ s16 z;
} MapDataChest; // size = 0xA
// TODO: ZAPD updates
typedef SCmdMapData SCmdMinimapSettings;
typedef SCmdMapDataChests SCmdMinimapChests;
typedef MapDataRoom MinimapEntry;
typedef MapDataScene MinimapList;
typedef MapDataChest MinimapChest;
typedef SCmdTransitionActorList SCmdTransiActorList;
// TODO: consider merging with bgCamInfo?
typedef struct {
@ -502,38 +518,38 @@ typedef struct {
} ActorCsCamInfo; // size = 0x8
typedef union {
/* Command: N/A */ SCmdBase base;
/* Command: 0x00 */ SCmdSpawnList spawnList;
/* Command: 0x01 */ SCmdActorList actorList;
/* Command: 0x02 */ SCmdCsCameraList actorCsCamList;
/* Command: 0x03 */ SCmdColHeader colHeader;
/* Command: 0x04 */ SCmdRoomList roomList;
/* Command: 0x05 */ SCmdWindSettings windSettings;
/* Command: 0x06 */ SCmdEntranceList entranceList;
/* Command: 0x07 */ SCmdSpecialFiles specialFiles;
/* Command: 0x08 */ SCmdRoomBehavior roomBehavior;
/* Command: N/A */ SCmdBase base;
/* Command: 0x00 */ SCmdSpawnList spawnList;
/* Command: 0x01 */ SCmdActorList actorList;
/* Command: 0x02 */ SCmdCsCameraList actorCsCamList;
/* Command: 0x03 */ SCmdColHeader colHeader;
/* Command: 0x04 */ SCmdRoomList roomList;
/* Command: 0x05 */ SCmdWindSettings windSettings;
/* Command: 0x06 */ SCmdEntranceList entranceList;
/* Command: 0x07 */ SCmdSpecialFiles specialFiles;
/* Command: 0x08 */ SCmdRoomBehavior roomBehavior;
/* Command: 0x09 */ // Unused
/* Command: 0x0A */ SCmdMesh mesh;
/* Command: 0x0B */ SCmdObjectList objectList;
/* Command: 0x0C */ SCmdLightList lightList;
/* Command: 0x0D */ SCmdPathList pathList;
/* Command: 0x0E */ SCmdTransiActorList transiActorList;
/* Command: 0x0F */ SCmdLightSettingList lightSettingList;
/* Command: 0x10 */ SCmdTimeSettings timeSettings;
/* Command: 0x11 */ SCmdSkyboxSettings skyboxSettings;
/* Command: 0x12 */ SCmdSkyboxDisables skyboxDisables;
/* Command: 0x13 */ SCmdExitList exitList;
/* Command: 0x14 */ SCmdEndMarker endMarker;
/* Command: 0x15 */ SCmdSoundSettings soundSettings;
/* Command: 0x16 */ SCmdEchoSettings echoSettings;
/* Command: 0x17 */ SCmdCsScriptList scriptList;
/* Command: 0x18 */ SCmdAltHeaders altHeaders;
/* Command: 0x19 */ SCmdRegionVisited regionVisited;
/* Command: 0x1A */ SCmdTextureAnimations textureAnimations;
/* Command: 0x1B */ SCmdCutsceneList cutsceneList;
/* Command: 0x1C */ SCmdMinimapSettings minimapSettings;
/* Command: 0x0A */ SCmdMesh mesh;
/* Command: 0x0B */ SCmdObjectList objectList;
/* Command: 0x0C */ SCmdLightList lightList;
/* Command: 0x0D */ SCmdPathList pathList;
/* Command: 0x0E */ SCmdTransitionActorList transitionActorList;
/* Command: 0x0F */ SCmdLightSettingList lightSettingList;
/* Command: 0x10 */ SCmdTimeSettings timeSettings;
/* Command: 0x11 */ SCmdSkyboxSettings skyboxSettings;
/* Command: 0x12 */ SCmdSkyboxDisables skyboxDisables;
/* Command: 0x13 */ SCmdExitList exitList;
/* Command: 0x14 */ SCmdEndMarker endMarker;
/* Command: 0x15 */ SCmdSoundSettings soundSettings;
/* Command: 0x16 */ SCmdEchoSettings echoSettings;
/* Command: 0x17 */ SCmdCsScriptList scriptList;
/* Command: 0x18 */ SCmdAltHeaders altHeaders;
/* Command: 0x19 */ SCmdRegionVisited regionVisited;
/* Command: 0x1A */ SCmdTextureAnimations textureAnimations;
/* Command: 0x1B */ SCmdCutsceneList cutsceneList;
/* Command: 0x1C */ SCmdMapData mapData;
/* Command: 0x1D */ // Unused
/* Command: 0x1E */ SCmdMinimapChests minimapChests;
/* Command: 0x1E */ SCmdMapDataChests mapDataChests;
} SceneCmd; // size = 0x8
// Sets cursor point options on the world map
@ -774,9 +790,9 @@ typedef enum {
/* 0x19 */ SCENE_CMD_ID_SET_REGION_VISITED,
/* 0x1A */ SCENE_CMD_ID_ANIMATED_MATERIAL_LIST,
/* 0x1B */ SCENE_CMD_ID_ACTOR_CUTSCENE_LIST,
/* 0x1C */ SCENE_CMD_ID_MINIMAP_INFO,
/* 0x1C */ SCENE_CMD_ID_MAP_DATA,
/* 0x1D */ SCENE_CMD_ID_UNUSED_1D,
/* 0x1E */ SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO,
/* 0x1E */ SCENE_CMD_ID_MAP_DATA_CHESTS,
/* 0x1F */ SCENE_CMD_MAX
} SceneCommandTypeId;
@ -822,13 +838,13 @@ typedef enum {
{ SCENE_CMD_ID_OBJECT_LIST, numObjects, CMD_PTR(objectList) }
#define SCENE_CMD_LIGHT_LIST(numLights, lightList) \
{ SCENE_CMD_ID_LIGHT_LIST, numLights, CMD_PTR(lightList) }
{ SCENE_CMD_ID_LIGHT_LIST, numLights, CMD_PTR(lightList) }
#define SCENE_CMD_PATH_LIST(pathList) \
{ SCENE_CMD_ID_PATH_LIST, 0, CMD_PTR(pathList) }
#define SCENE_CMD_TRANSITION_ACTOR_LIST(numTransitionActors, actorList) \
{ SCENE_CMD_ID_TRANSI_ACTOR_LIST, numTransitionActors, CMD_PTR(actorList) }
{ SCENE_CMD_ID_TRANSI_ACTOR_LIST, numTransitionActors, CMD_PTR(actorList) }
#define SCENE_CMD_ENV_LIGHT_SETTINGS(numLightSettings, lightSettingsList) \
{ SCENE_CMD_ID_ENV_LIGHT_SETTINGS, numLightSettings, CMD_PTR(lightSettingsList) }
@ -869,12 +885,14 @@ typedef enum {
#define SCENE_CMD_ACTOR_CUTSCENE_LIST(numEntries, actorCutsceneList) \
{ SCENE_CMD_ID_ACTOR_CUTSCENE_LIST, numEntries, CMD_PTR(actorCutsceneList) }
#define SCENE_CMD_MINIMAP_INFO(minimapInfo) \
{ SCENE_CMD_ID_MINIMAP_INFO, 0, CMD_PTR(minimapInfo) }
#define SCENE_CMD_MAP_DATA(mapData) \
{ SCENE_CMD_ID_MAP_DATA, 0, CMD_PTR(mapData) }
#define SCENE_CMD_MINIMAP_COMPASS_ICON_INFO(compassIconCount, compassIconInfo) \
{ SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO, compassIconCount, CMD_PTR(compassIconInfo) }
#define SCENE_CMD_MAP_DATA_CHESTS(chestCount, chestInfo) \
{ SCENE_CMD_ID_MAP_DATA_CHESTS, chestCount, CMD_PTR(chestInfo) }
#define SCENE_CMD_MINIMAP_INFO SCENE_CMD_MAP_DATA
#define SCENE_CMD_MINIMAP_COMPASS_ICON_INFO SCENE_CMD_MAP_DATA_CHESTS
s32 Object_SpawnPersistent(ObjectContext* objectCtx, s16 id);
void Object_InitContext(struct GameState* gameState, ObjectContext* objectCtx);
@ -895,8 +913,8 @@ void Scene_CommandMesh(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandObjectList(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandLightList(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandPathList(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandTransiActorList(struct PlayState* play, SceneCmd* cmd);
void Door_InitContext(struct GameState* gameState, DoorContext* doorCtx);
void Scene_CommandTransitionActorList(struct PlayState* play, SceneCmd* cmd);
void Scene_ResetTransitionActorList(GameState* gameState, TransitionActorList* transitionActors);
void Scene_CommandEnvLightSettings(struct PlayState* play, SceneCmd* cmd);
void Scene_LoadAreaTextures(struct PlayState* play, s32 fileIndex);
void Scene_CommandSkyboxSettings(struct PlayState* play, SceneCmd* cmd);
@ -910,9 +928,9 @@ void Scene_CommandEchoSetting(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandAltHeaderList(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandCutsceneScriptList(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandCutsceneList(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandMiniMap(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandMapData(struct PlayState* play, SceneCmd* cmd);
void Scene_Command1D(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandMiniMapCompassInfo(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandMapDataChests(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandSetRegionVisitedFlag(struct PlayState* play, SceneCmd* cmd);
void Scene_CommandAnimatedMaterials(struct PlayState* play, SceneCmd* cmd);
void Scene_SetExitFade(struct PlayState* play);

2
spec
View File

@ -495,8 +495,6 @@ beginseg
include "$(BUILD_DIR)/src/code/z_lights.o"
include "$(BUILD_DIR)/src/code/z_malloc.o"
include "$(BUILD_DIR)/src/code/z_map_disp.o"
include "$(BUILD_DIR)/data/code/z_map_disp.data.o"
include "$(BUILD_DIR)/data/code/z_map_disp.bss.o"
include "$(BUILD_DIR)/src/code/z_map_data.o"
include "$(BUILD_DIR)/src/code/z_map_exp.o"
include "$(BUILD_DIR)/src/code/z_msgevent.o"

View File

@ -0,0 +1,62 @@
#ifndef GDP_LOADTEXTUREBLOCK_RUNTIME_INC_C
#define GDP_LOADTEXTUREBLOCK_RUNTIME_INC_C
#include "gfx.h"
static u32 sLoadTextureBlock_siz[] = {
G_IM_SIZ_4b,
G_IM_SIZ_8b,
G_IM_SIZ_16b,
G_IM_SIZ_32b,
};
static u32 sLoadTextureBlock_siz_LOAD_BLOCK[] = {
G_IM_SIZ_4b_LOAD_BLOCK,
G_IM_SIZ_8b_LOAD_BLOCK,
G_IM_SIZ_16b_LOAD_BLOCK,
G_IM_SIZ_32b_LOAD_BLOCK,
};
static u32 sLoadTextureBlock_siz_INCR[] = {
G_IM_SIZ_4b_INCR,
G_IM_SIZ_8b_INCR,
G_IM_SIZ_16b_INCR,
G_IM_SIZ_32b_INCR,
};
static u32 sLoadTextureBlock_siz_SHIFT[] = {
G_IM_SIZ_4b_SHIFT,
G_IM_SIZ_8b_SHIFT,
G_IM_SIZ_16b_SHIFT,
G_IM_SIZ_32b_SHIFT,
};
static u32 sLoadTextureBlock_siz_BYTES[] = {
G_IM_SIZ_4b_BYTES,
G_IM_SIZ_8b_BYTES,
G_IM_SIZ_16b_BYTES,
G_IM_SIZ_32b_BYTES,
};
static u32 sLoadTextureBlock_siz_LINE_BYTES[] = {
G_IM_SIZ_4b_LINE_BYTES,
G_IM_SIZ_8b_LINE_BYTES,
G_IM_SIZ_16b_LINE_BYTES,
G_IM_SIZ_32b_LINE_BYTES,
};
/**
* Implements a version of gDPLoadTextureBlock using table lookups instead of token pasting, to allow values to be
* passed into `siz` during runtime.
*/
#define gDPLoadTextureBlock_Runtime(pkt, timg, fmt, siz, width, height, pal, cms, cmt, masks, maskt, shifts, shiftt) \
_DW({ \
gDPSetTextureImage(pkt, fmt, sLoadTextureBlock_siz_LOAD_BLOCK[siz], 1, timg); \
gDPSetTile(pkt, fmt, sLoadTextureBlock_siz_LOAD_BLOCK[siz], 0, 0, G_TX_LOADTILE, 0, cmt, maskt, shiftt, cms, \
masks, shifts); \
gDPLoadSync(pkt); \
gDPLoadBlock(pkt, G_TX_LOADTILE, 0, 0, \
(((width) * (height) + sLoadTextureBlock_siz_INCR[siz]) >> sLoadTextureBlock_siz_SHIFT[siz]) - 1, \
CALC_DXT(width, sLoadTextureBlock_siz_BYTES[siz])); \
gDPPipeSync(pkt); \
gDPSetTile(pkt, fmt, sLoadTextureBlock_siz[siz], (((width)*sLoadTextureBlock_siz_LINE_BYTES[siz]) + 7) >> 3, \
0, G_TX_RENDERTILE, pal, cmt, maskt, shiftt, cms, masks, shifts); \
gDPSetTileSize(pkt, G_TX_RENDERTILE, 0, 0, ((width)-1) << G_TEXTURE_IMAGE_FRAC, \
((height)-1) << G_TEXTURE_IMAGE_FRAC); \
})
#endif

View File

@ -32,7 +32,7 @@ void Setup_InitRegs(void) {
XREG(90) = 0x1C2;
R_STORY_FILL_SCREEN_ALPHA = 0;
R_REVERSE_FLOOR_INDEX = 0;
R_PLAYER_FLOOR_REVERSE_INDEX = 0;
R_MINIMAP_DISABLED = false;
R_PICTO_FOCUS_BORDER_TOPLEFT_X = 80;

View File

@ -3413,9 +3413,9 @@ Actor* Actor_SpawnAsChild(ActorContext* actorCtx, Actor* parent, PlayState* play
}
void Actor_SpawnTransitionActors(PlayState* play, ActorContext* actorCtx) {
TransitionActorEntry* transitionActorList = play->doorCtx.transitionActorList;
TransitionActorEntry* transitionActorList = play->transitionActors.list;
s32 i;
s16 numTransitionActors = play->doorCtx.numTransitionActors;
s16 numTransitionActors = play->transitionActors.count;
for (i = 0; i < numTransitionActors; transitionActorList++, i++) {
if (transitionActorList->id >= 0) {
@ -3434,7 +3434,7 @@ void Actor_SpawnTransitionActors(PlayState* play, ActorContext* actorCtx) {
transitionActorList->rotY & 0x7F, HALFDAYBIT_ALL, 0) != NULL) {
transitionActorList->id = -transitionActorList->id;
}
numTransitionActors = play->doorCtx.numTransitionActors;
numTransitionActors = play->transitionActors.count;
}
}
}

View File

@ -160,18 +160,18 @@ void KaleidoSetup_Init(PlayState* play) {
pauseCtx->unk_20C = 936.0f;
pauseCtx->roll = -314.0f;
pauseCtx->cursorPoint[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1);
pauseCtx->cursorPoint[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1);
pauseCtx->cursorSpecialPos = PAUSE_CURSOR_PAGE_RIGHT;
pauseCtx->pageSwitchInputTimer = 0;
pauseCtx->cursorItem[PAUSE_ITEM] = PAUSE_ITEM_NONE;
pauseCtx->cursorItem[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1);
pauseCtx->cursorItem[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1);
pauseCtx->cursorItem[PAUSE_QUEST] = PAUSE_ITEM_NONE;
pauseCtx->cursorItem[PAUSE_MASK] = PAUSE_ITEM_NONE;
pauseCtx->cursorSlot[PAUSE_ITEM] = 0;
pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1);
pauseCtx->cursorSlot[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + (DUNGEON_FLOOR_INDEX_4 - 1);
pauseCtx->cursorColorSet = PAUSE_CURSOR_COLOR_SET_YELLOW;
pauseCtx->ocarinaSongIndex = -1;

View File

@ -1,79 +1,622 @@
#include "global.h"
#include "z64map.h"
#include "assets/objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801094A0.s")
typedef struct {
/* 0x0 */ u8 texWidth;
/* 0x1 */ u8 texHeight;
/* 0x2 */ s16 offsetX;
/* 0x4 */ s16 offsetY;
/* 0x6 */ u8 drawType;
/* 0x7 */ u8 colorIndex;
/* 0x8 */ s16 scale;
} MapSpriteInfo; // size = 0xA
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801094C8.s")
typedef struct {
/* 0x0 */ TexturePtr spriteTex;
/* 0x4 */ u8 width;
/* 0x5 */ u8 height;
/* 0x6 */ u8 offsetX;
/* 0x7 */ u8 offsetY;
/* 0x8 */ u8 drawType;
/* 0x9 */ u8 colorIndex;
/* 0xA */ s16 scale;
} MapSpriteInfo2; // size = 0xC
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801094F8.s")
static Color_RGBA8 sMapColorTable[] = {
{ 255, 255, 255, 255 },
{ 0, 255, 255, 160 }, // Blue
{ 100, 255, 255, 255 },
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109528.s")
static MapSpriteInfo2 sGameplayDangeonKeepInfo[5] = {
{ gameplay_dangeon_keep_Tex_0022C8, 96, 85, 48, 42, MAPDATA_DRAW_0, 0, 20 },
{ gameplay_dangeon_keep_Tex_0042C8, 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 },
{ gameplay_dangeon_keep_Tex_0052C8, 96, 85, 68, 42, MAPDATA_DRAW_0, 0, 20 },
{ gameplay_dangeon_keep_Tex_0032C8, 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 },
{ gameplay_dangeon_keep_Tex_0062C8, 96, 85, 68, 62, MAPDATA_DRAW_0, 0, 20 },
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010954C.s")
static MapSpriteInfo sMapGrandStaticInfo[98] = {
{ 96, 85, 48, 42, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 },
{ 96, 85, 68, 42, MAPDATA_DRAW_0, 0, 20 }, { 96, 85, 48, 62, MAPDATA_DRAW_0, 0, 20 },
{ 96, 85, 68, 62, MAPDATA_DRAW_0, 0, 20 }, { 80, 72, 40, 35, MAPDATA_DRAW_1, 1, 52 },
{ 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 },
{ 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 49, MAPDATA_DRAW_3, 2, 20 },
{ 48, 44, 25, 23, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 },
{ 48, 46, 25, 24, MAPDATA_DRAW_3, 2, 20 }, { 64, 61, 32, 31, MAPDATA_DRAW_3, 2, 20 },
{ 96, 85, 49, 50, MAPDATA_DRAW_3, 2, 20 }, { 96, 85, 49, 62, MAPDATA_DRAW_3, 2, 20 },
{ 96, 85, 49, 43, MAPDATA_DRAW_3, 2, 20 }, { 48, 80, 21, 41, MAPDATA_DRAW_1, 1, 198 },
{ 32, 128, 17, 87, MAPDATA_DRAW_1, 1, 138 }, { 80, 53, 40, 27, MAPDATA_DRAW_1, 1, 54 },
{ 32, 81, 16, 15, MAPDATA_DRAW_3, 2, 20 }, { 80, 45, 35, 23, MAPDATA_DRAW_3, 2, 20 },
{ 64, 87, 36, 44, MAPDATA_DRAW_3, 2, 20 }, { 64, 51, 31, 23, MAPDATA_DRAW_3, 2, 20 },
{ 80, 79, 40, 40, MAPDATA_DRAW_3, 2, 20 }, { 96, 75, 36, 26, MAPDATA_DRAW_3, 2, 20 },
{ 48, 41, 24, 20, MAPDATA_DRAW_3, 2, 20 }, { 64, 45, 31, 20, MAPDATA_DRAW_3, 2, 20 },
{ 80, 52, 38, 28, MAPDATA_DRAW_3, 2, 20 }, { 48, 45, 23, 20, MAPDATA_DRAW_3, 2, 20 },
{ 48, 59, 25, 37, MAPDATA_DRAW_3, 2, 20 }, { 48, 60, 21, 38, MAPDATA_DRAW_3, 2, 20 },
{ 48, 81, 24, 40, MAPDATA_DRAW_3, 2, 20 }, { 48, 81, 24, 40, MAPDATA_DRAW_3, 2, 20 },
{ 80, 89, 41, 26, MAPDATA_DRAW_3, 2, 20 }, { 80, 53, 39, 26, MAPDATA_DRAW_3, 2, 20 },
{ 64, 78, 37, 36, MAPDATA_DRAW_3, 2, 20 }, { 64, 68, 33, 33, MAPDATA_DRAW_3, 2, 20 },
{ 48, 68, 23, 35, MAPDATA_DRAW_3, 2, 20 }, { 48, 36, 25, 17, MAPDATA_DRAW_3, 2, 20 },
{ 48, 25, 24, 12, MAPDATA_DRAW_3, 2, 20 }, { 64, 75, 24, 37, MAPDATA_DRAW_3, 2, 20 },
{ 32, 53, 17, 26, MAPDATA_DRAW_3, 2, 20 }, { 80, 62, 35, 27, MAPDATA_DRAW_1, 1, 105 },
{ 64, 76, 31, 31, MAPDATA_DRAW_1, 1, 133 }, { 96, 85, 47, 43, MAPDATA_DRAW_3, 2, 20 },
{ 80, 71, 48, 33, MAPDATA_DRAW_1, 1, 180 }, { 80, 87, 44, 44, MAPDATA_DRAW_1, 1, 72 },
{ 64, 65, 31, 36, MAPDATA_DRAW_1, 1, 57 }, { 48, 41, 28, 20, MAPDATA_DRAW_1, 1, 60 },
{ 64, 76, 17, 36, MAPDATA_DRAW_1, 1, 58 }, { 80, 60, 27, 22, MAPDATA_DRAW_1, 1, 83 },
{ 80, 47, 38, 23, MAPDATA_DRAW_1, 1, 69 }, { 80, 60, 40, 38, MAPDATA_DRAW_1, 1, 29 },
{ 48, 19, 17, 8, MAPDATA_DRAW_1, 1, 25 }, { 32, 99, 17, 16, MAPDATA_DRAW_1, 1, 88 },
{ 48, 69, 19, 28, MAPDATA_DRAW_1, 1, 76 }, { 48, 83, 34, 47, MAPDATA_DRAW_1, 1, 104 },
{ 80, 54, 45, 27, MAPDATA_DRAW_1, 1, 61 }, { 80, 92, 35, 50, MAPDATA_DRAW_1, 1, 60 },
{ 48, 75, 24, 37, MAPDATA_DRAW_3, 2, 20 }, { 64, 49, 32, 23, MAPDATA_DRAW_3, 2, 20 },
{ 64, 49, 25, 24, MAPDATA_DRAW_3, 2, 20 }, { 64, 52, 32, 24, MAPDATA_DRAW_3, 2, 34 },
{ 64, 49, 31, 24, MAPDATA_DRAW_3, 2, 34 }, { 32, 33, 18, 14, MAPDATA_DRAW_3, 2, 34 },
{ 48, 50, 25, 25, MAPDATA_DRAW_3, 2, 34 }, { 64, 52, 32, 25, MAPDATA_DRAW_3, 2, 34 },
{ 48, 35, 24, 18, MAPDATA_DRAW_3, 2, 34 }, { 64, 51, 32, 26, MAPDATA_DRAW_3, 2, 34 },
{ 48, 35, 24, 18, MAPDATA_DRAW_3, 2, 34 }, { 48, 53, 24, 28, MAPDATA_DRAW_3, 2, 34 },
{ 64, 53, 33, 25, MAPDATA_DRAW_3, 2, 34 }, { 64, 47, 31, 24, MAPDATA_DRAW_3, 2, 34 },
{ 64, 52, 32, 35, MAPDATA_DRAW_3, 2, 34 }, { 48, 48, 24, 23, MAPDATA_DRAW_3, 2, 34 },
{ 64, 87, 32, 26, MAPDATA_DRAW_3, 2, 34 }, { 48, 30, 24, 14, MAPDATA_DRAW_3, 2, 34 },
{ 80, 74, 40, 36, MAPDATA_DRAW_1, 1, 50 }, { 80, 87, 6, 41, MAPDATA_DRAW_1, 1, 42 },
{ 80, 56, 19, 27, MAPDATA_DRAW_1, 1, 40 }, { 80, 65, 25, 33, MAPDATA_DRAW_1, 1, 40 },
{ 16, 38, 8, 12, MAPDATA_DRAW_1, 1, 47 }, { 80, 78, 46, 33, MAPDATA_DRAW_1, 1, 142 },
{ 80, 55, 32, 29, MAPDATA_DRAW_1, 1, 155 }, { 80, 98, 67, 48, MAPDATA_DRAW_1, 1, 51 },
{ 80, 62, 47, 19, MAPDATA_DRAW_1, 1, 55 }, { 32, 123, 15, 83, MAPDATA_DRAW_1, 1, 140 },
{ 80, 60, 47, 14, MAPDATA_DRAW_1, 1, 170 }, { 48, 77, 18, 59, MAPDATA_DRAW_1, 1, 79 },
{ 80, 64, 35, 30, MAPDATA_DRAW_1, 1, 33 }, { 64, 50, 29, 22, MAPDATA_DRAW_1, 1, 40 },
{ 80, 65, 39, 5, MAPDATA_DRAW_1, 1, 37 }, { 32, 61, 8, 56, MAPDATA_DRAW_1, 1, 35 },
{ 80, 83, 37, 42, MAPDATA_DRAW_1, 1, 95 }, { 80, 27, 30, 21, MAPDATA_DRAW_1, 1, 134 },
{ 80, 23, 122, -18, MAPDATA_DRAW_1, 1, 53 }, { 80, 60, 27, 22, MAPDATA_DRAW_1, 1, 83 },
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010956C.s")
static s32 D_801BF15C[5] = {
0x50, 0x50, 0x8D, 0x50, 0x50,
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010958C.s")
static MapSpriteInfo sMapIStaticInfo[MAPDATA_MAP_I_MAX] = {
{ 96, 85, 73, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 73, 74, MAPDATA_DRAW_0, 0, 60 },
{ 96, 85, 80, 67, MAPDATA_DRAW_0, 0, 60 }, { 96, 85, 73, 67, MAPDATA_DRAW_0, 0, 60 },
{ 96, 85, 80, 74, MAPDATA_DRAW_0, 0, 60 }, { 32, 29, 17, 14, MAPDATA_DRAW_2, 0, 50 },
{ 32, 27, 16, 13, MAPDATA_DRAW_2, 0, 50 }, { 32, 30, 16, 15, MAPDATA_DRAW_2, 0, 50 },
{ 16, 32, 8, 20, MAPDATA_DRAW_2, 0, 50 }, { 16, 12, 8, 6, MAPDATA_DRAW_2, 0, 50 },
{ 32, 27, 16, 13, MAPDATA_DRAW_2, 0, 50 }, { 16, 14, 8, 7, MAPDATA_DRAW_2, 0, 50 },
{ 32, 19, 16, 9, MAPDATA_DRAW_2, 0, 50 }, { 32, 26, 16, 16, MAPDATA_DRAW_2, 0, 50 },
{ 16, 32, 8, 22, MAPDATA_DRAW_2, 0, 50 }, { 32, 27, 16, 13, MAPDATA_DRAW_2, 0, 50 },
{ 16, 35, 9, 5, MAPDATA_DRAW_2, 0, 45 }, { 32, 18, 14, 9, MAPDATA_DRAW_2, 0, 45 },
{ 32, 38, 18, 19, MAPDATA_DRAW_2, 0, 45 }, { 32, 21, 16, 9, MAPDATA_DRAW_2, 0, 45 },
{ 32, 34, 16, 17, MAPDATA_DRAW_2, 0, 45 }, { 48, 32, 19, 11, MAPDATA_DRAW_2, 0, 45 },
{ 32, 17, 16, 8, MAPDATA_DRAW_2, 0, 45 }, { 32, 17, 16, 7, MAPDATA_DRAW_2, 0, 45 },
{ 32, 21, 16, 11, MAPDATA_DRAW_2, 0, 45 }, { 32, 18, 16, 8, MAPDATA_DRAW_2, 0, 45 },
{ 16, 24, 9, 15, MAPDATA_DRAW_2, 0, 45 }, { 16, 25, 7, 16, MAPDATA_DRAW_2, 0, 45 },
{ 32, 35, 16, 17, MAPDATA_DRAW_2, 0, 45 }, { 16, 19, 5, 9, MAPDATA_DRAW_2, 0, 80 },
{ 32, 28, 17, 7, MAPDATA_DRAW_2, 0, 66 }, { 32, 16, 16, 8, MAPDATA_DRAW_2, 0, 66 },
{ 32, 24, 18, 11, MAPDATA_DRAW_2, 0, 66 }, { 32, 21, 16, 10, MAPDATA_DRAW_2, 0, 66 },
{ 16, 21, 8, 11, MAPDATA_DRAW_2, 0, 66 }, { 16, 10, 8, 4, MAPDATA_DRAW_2, 0, 66 },
{ 16, 7, 8, 3, MAPDATA_DRAW_2, 0, 66 }, { 32, 23, 13, 11, MAPDATA_DRAW_2, 0, 66 },
{ 16, 16, 8, 8, MAPDATA_DRAW_2, 0, 66 }, { 16, 17, 8, 7, MAPDATA_DRAW_2, 0, 50 },
{ 16, 23, 9, 10, MAPDATA_DRAW_2, 0, 66 }, { 16, 15, 8, 7, MAPDATA_DRAW_2, 0, 66 },
{ 32, 15, 15, 7, MAPDATA_DRAW_2, 0, 66 }, { 32, 17, 16, 8, MAPDATA_DRAW_2, 0, 90 },
{ 32, 16, 16, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 10, 8, 5, MAPDATA_DRAW_2, 0, 90 },
{ 16, 17, 8, 8, MAPDATA_DRAW_2, 0, 90 }, { 32, 17, 17, 8, MAPDATA_DRAW_2, 0, 90 },
{ 16, 11, 8, 5, MAPDATA_DRAW_2, 0, 90 }, { 32, 17, 15, 9, MAPDATA_DRAW_2, 0, 90 },
{ 16, 12, 8, 6, MAPDATA_DRAW_2, 0, 90 }, { 16, 18, 9, 9, MAPDATA_DRAW_2, 0, 90 },
{ 32, 17, 17, 8, MAPDATA_DRAW_2, 0, 90 }, { 32, 15, 16, 8, MAPDATA_DRAW_2, 0, 90 },
{ 16, 18, 9, 13, MAPDATA_DRAW_2, 0, 90 }, { 16, 16, 8, 7, MAPDATA_DRAW_2, 0, 90 },
{ 16, 30, 9, 8, MAPDATA_DRAW_2, 0, 90 }, { 16, 9, 9, 4, MAPDATA_DRAW_2, 0, 90 },
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801095AC.s")
static s32 sMapIForGameplayDangeonKeep[5] = {
0x00, 0x01, 0x02, 0x03, 0x04,
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801095DC.s")
static s32 sMapIForMapGrand[98] = {
MAPDATA_MAP_I_MAX,
0x01,
0x02,
0x03,
0x04,
MAPDATA_MAP_I_MAX,
0x05,
0x06,
0x07,
0x08,
0x09,
0x0A,
0x0B,
0x0C,
0x0D,
0x0E,
0x0F,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
0x10,
0x11,
0x12,
0x13,
0x14,
0x15,
0x16,
0x17,
0x18,
0x19,
0x1A,
0x1B,
0x1C,
MAPDATA_MAP_I_MAX,
0x1E,
0x1F,
0x20,
0x21,
0x22,
0x23,
0x24,
0x25,
0x26,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
0x27,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
0x28,
0x29,
0x2A,
0x2B,
0x2C,
0x2D,
0x2E,
0x2F,
0x30,
0x31,
0x32,
0x33,
0x34,
0x35,
0x36,
0x37,
0x38,
0x39,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
MAPDATA_MAP_I_MAX,
};
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010960C.s")
void MapData_GetMapColor(s32 colorIndex, Color_RGBA8* color) {
*color = sMapColorTable[colorIndex];
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109630.s")
void MapData_GetMapTexDimGameplayDangeonKeep(s32 mapId, s32* width, s32* height) {
*width = sGameplayDangeonKeepInfo[mapId].width;
*height = sGameplayDangeonKeepInfo[mapId].height;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109650.s")
void MapData_GetMapTexOffsetGameplayDangeonKeep(s32 mapId, s32* offsetX, s32* offsetY) {
*offsetX = sGameplayDangeonKeepInfo[mapId].offsetX;
*offsetY = sGameplayDangeonKeepInfo[mapId].offsetY;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109670.s")
void MapData_GetMapDrawTypeGameplayDangeonKeep(s32 mapId, s32* drawType) {
*drawType = sGameplayDangeonKeepInfo[mapId].drawType;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801096D4.s")
u8 MapData_GetMapColorIndexGameplayDangeonKeep(s32 mapId) {
return sGameplayDangeonKeepInfo[mapId].colorIndex;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109714.s")
s16 MapData_GetMapGameplayDangeonKeepScale(s32 mapId) {
return sGameplayDangeonKeepInfo[mapId].scale;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109754.s")
TexturePtr MapData_GetMapTexGameplayDangeonKeep(s32 mapId) {
return sGameplayDangeonKeepInfo[mapId].spriteTex;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801097C8.s")
void MapData_GetMapTexGameplayDangeonKeepDim(s32 mapId, s32* width, s32* height) {
*width = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth;
*height = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010983C.s")
void MapData_GetMapTexGameplayDangeonKeepOffset(s32 mapId, s32* offsetX, s32* offsetY) {
*offsetX = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetX;
*offsetY = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].offsetY;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801098A0.s")
void MapData_GetMapGrandDrawType(s32 mapId, s32* drawType) {
*drawType = sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].drawType;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109908.s")
u8 MapData_GetMapGrandColorIndex(s32 mapId) {
return sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].colorIndex;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109964.s")
s16 MapData_GetMapGrandScale(s32 mapId) {
return sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].scale;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_8010997C.s")
s32 MapData_MapGrandTexSizeTest(s32 mapId) {
s32 endMap = mapId - MAPDATA_MAP_GRAND;
s32 size = 0;
s32 i;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801099AC.s")
for (i = 1; i < endMap + 1; i++) {
size += MapData_GetSizeOfMapGrandTex((i - 1) + MAPDATA_MAP_GRAND);
}
return size;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_801099DC.s")
s32 MapData_GetSizeOfMapGrandTex(s32 mapId) {
return (sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texWidth *
sMapGrandStaticInfo[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)].texHeight) /
2;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A00.s")
s32 MapData_MID_GetType(s32 mapId) {
if ((mapId >= 0) && (mapId < 5)) {
return MAPDATA_MID_GAMEPLAY_DANGEON_KEEP;
}
if ((mapId >= 0x100) && (mapId < 0x162)) {
return MAPDATA_MID_MAP_GRAND_STATIC;
}
return MAPDATA_MID_MAP_I_STATIC;
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A20.s")
void MapData_GetMapTexDim(s32 mapId, s32* width, s32* height) {
switch (MapData_MID_GetType(mapId)) {
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
MapData_GetMapTexDimGameplayDangeonKeep(mapId, width, height);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A40.s")
case MAPDATA_MID_MAP_GRAND_STATIC:
MapData_GetMapTexGameplayDangeonKeepDim(mapId, width, height);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109A98.s")
default:
*width = *height = 0;
return;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109AD8.s")
void MapData_GetMapTexOffset(s32 mapId, s32* offsetX, s32* offsetY) {
switch (MapData_MID_GetType(mapId)) {
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
MapData_GetMapTexOffsetGameplayDangeonKeep(mapId, offsetX, offsetY);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109B38.s")
case MAPDATA_MID_MAP_GRAND_STATIC:
MapData_GetMapTexGameplayDangeonKeepOffset(mapId, offsetX, offsetY);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109BA0.s")
default:
*offsetX = *offsetY = 0;
return;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109BF4.s")
void MapData_GetMapScale(s32 mapId, s32* scale) {
switch (MapData_MID_GetType(mapId)) {
default:
*scale = 0;
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109C38.s")
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
*scale = MapData_GetMapGameplayDangeonKeepScale(mapId);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109CBC.s")
case MAPDATA_MID_MAP_GRAND_STATIC:
*scale = MapData_GetMapGrandScale(mapId);
return;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109D40.s")
void MapData_GetDrawType(s32 mapId, s32* drawType) {
switch (MapData_MID_GetType(mapId)) {
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
MapData_GetMapDrawTypeGameplayDangeonKeep(mapId, drawType);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109DD8.s")
case MAPDATA_MID_MAP_GRAND_STATIC:
MapData_GetMapGrandDrawType(mapId, drawType);
return;
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109E70.s")
default:
*drawType = 0;
return;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109EF8.s")
s32 MapData_GetMapColorIndex(s32 mapId) {
switch (MapData_MID_GetType(mapId)) {
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
return MapData_GetMapColorIndexGameplayDangeonKeep(mapId);
#pragma GLOBAL_ASM("asm/non_matchings/code/z_map_data/func_80109F78.s")
case MAPDATA_MID_MAP_GRAND_STATIC:
return MapData_GetMapGrandColorIndex(mapId);
default:
return 0;
}
}
s32 func_80109964(s32 arg0) {
return D_801BF15C[arg0];
}
void MapData_GetMapITexDim(s32 mapId, s32* width, s32* height) {
*width = sMapIStaticInfo[mapId].texWidth;
*height = sMapIStaticInfo[mapId].texHeight;
}
void MapData_GetMapITexOffset(s32 mapId, s32* offsetX, s32* offsetY) {
*offsetX = sMapIStaticInfo[mapId].offsetX;
*offsetY = sMapIStaticInfo[mapId].offsetY;
}
void MapData_GetMapIDrawType(s32 mapId, s32* drawType) {
*drawType = sMapIStaticInfo[mapId].drawType;
}
u8 MapData_GetMapIColorIndex(s32 mapId) {
return sMapIStaticInfo[mapId].colorIndex;
}
s16 MapData_GetMapIScale(s32 mapId) {
return sMapIStaticInfo[mapId].scale;
}
s32 MapData_MapITexSizeTest(s32 mapId) {
s32 i;
s32 size = 0;
for (i = 1; i < mapId + 1; i++) {
size += MapDisp_GetSizeOfMapITex(i - 1);
}
return size;
}
s32 MapDisp_GetSizeOfMapITex(s32 mapCompactId) {
return (sMapIStaticInfo[mapCompactId].texWidth * sMapIStaticInfo[mapCompactId].texHeight) / 2;
}
s32 MapData_GetMapIId(s32 mapId) {
switch (MapData_MID_GetType(mapId)) {
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
return sMapIForGameplayDangeonKeep[mapId];
case MAPDATA_MID_MAP_GRAND_STATIC:
return sMapIForMapGrand[MAPDATA_GET_MAP_GRAND_ID_FROM_MAP_ID(mapId)];
default:
return 0;
}
}
s32 func_80109B38(s32 mapId) {
if (MapData_GetMapIId(mapId) != MAPDATA_MAP_I_MAX) {
return 1;
}
switch (MapData_MID_GetType(mapId)) {
case MAPDATA_MID_GAMEPLAY_DANGEON_KEEP:
return 2;
case MAPDATA_MID_MAP_GRAND_STATIC:
return 0;
default:
return 0;
}
}
s32 MapData_GetMapCompactId(s32 mapId) {
s32 mapI = MapData_GetMapIId(mapId);
if (mapI != MAPDATA_MAP_I_MAX) {
return mapI;
}
if ((mapId >= 0x100) && (mapId < 0x162)) {
return mapId - 0xC6;
}
return -1;
}
s32 MapData_CPID_GetType(s32 mapCompactId) {
if (mapCompactId == -1) {
return MAPDATA_CPID_2;
}
if (mapCompactId < MAPDATA_MAP_I_MAX) {
return MAPDATA_CPID_MAP_I_STATIC;
}
if (mapCompactId >= MAPDATA_MAP_I_MAX) {
return MAPDATA_CPID_MAP_GRAND_STATIC;
}
return MAPDATA_CPID_2;
}
// Unused
s32 func_80109C38(s32 mapCompactId) {
if (mapCompactId == -1) {
return 0;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
return MapData_MapGrandTexSizeTest(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId));
case MAPDATA_CPID_MAP_I_STATIC:
return MapData_MapITexSizeTest(mapCompactId);
case MAPDATA_CPID_2:
return 0;
default:
return 0;
}
}
s32 MapData_CPID_GetSizeOfMapTex(s32 mapCompactId) {
if (mapCompactId == -1) {
return 0;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
return MapData_GetSizeOfMapGrandTex(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId));
case MAPDATA_CPID_MAP_I_STATIC:
return MapDisp_GetSizeOfMapITex(mapCompactId);
case MAPDATA_CPID_2:
return 0;
default:
return 0;
}
}
void MapData_CPID_GetTexDim(s32 mapCompactId, s32* width, s32* height) {
if (mapCompactId == -1) {
*width = *height = 0;
return;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
MapData_GetMapTexGameplayDangeonKeepDim(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), width,
height);
return;
case MAPDATA_CPID_MAP_I_STATIC:
MapData_GetMapITexDim(mapCompactId, width, height);
return;
case MAPDATA_CPID_2:
default:
*width = *height = 0;
return;
}
}
void MapData_CPID_GetTexOffset(s32 mapCompactId, s32* offsetX, s32* offsetY) {
if (mapCompactId == -1) {
*offsetX = *offsetY = 0;
return;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
MapData_GetMapTexGameplayDangeonKeepOffset(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), offsetX,
offsetY);
return;
case MAPDATA_CPID_MAP_I_STATIC:
MapData_GetMapITexOffset(mapCompactId, offsetX, offsetY);
return;
case MAPDATA_CPID_2:
default:
*offsetX = *offsetY = 0;
return;
}
}
// Unused
void MapData_CPID_GetDrawType(s32 mapCompactId, s32* drawType) {
if (mapCompactId == -1) {
*drawType = MAPDATA_DRAW_0;
return;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
MapData_GetMapGrandDrawType(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId), drawType);
return;
case MAPDATA_CPID_MAP_I_STATIC:
MapData_GetMapIDrawType(mapCompactId, drawType);
return;
case MAPDATA_CPID_2:
default:
*drawType = MAPDATA_DRAW_0;
return;
}
}
// Unused
u8 MapData_CPID_GetMapColorIndex(s32 mapCompactId) {
if (mapCompactId == -1) {
return 0;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
return MapData_GetMapGrandColorIndex(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId));
case MAPDATA_CPID_MAP_I_STATIC:
return MapData_GetMapIColorIndex(mapCompactId);
case MAPDATA_CPID_2:
default:
return 0;
}
}
s16 MapData_CPID_GetMapScale(s32 mapCompactId) {
if (mapCompactId == -1) {
return 0;
}
switch (MapData_CPID_GetType(mapCompactId)) {
case MAPDATA_CPID_MAP_GRAND_STATIC:
return MapData_GetMapGrandScale(MAPDATA_GET_MAP_GRAND_ID_FROM_COMPACT_ID(mapCompactId));
case MAPDATA_CPID_MAP_I_STATIC:
return MapData_GetMapIScale(mapCompactId);
case MAPDATA_CPID_2:
default:
return 0;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,19 +1,26 @@
#include "global.h"
s16 sMinimapInitPosX = 0;
s16 sMinimapInitPosZ = 0;
s16 sMinimapInitDir = 0;
s32 sDungeonAndBossSceneIds[] = {
SCENE_MITURIN, SCENE_HAKUGIN, SCENE_SEA, SCENE_INISIE_N, SCENE_INISIE_R,
SCENE_MITURIN_BS, SCENE_HAKUGIN_BS, SCENE_SEA_BS, SCENE_INISIE_BS,
};
s16 sPlayerInitPosX = 0;
s16 sPlayerInitPosZ = 0;
s16 sPlayerInitDir = 0;
/**
* If the current scene is a dungeon or boss scene, this function returns an index
* indicating which one it is. Otherwise, it returns -1.
* Gets the mapIndex for the current dungeon scene
* @return the current scene's DungeonSceneIndex, or -1 if it isn't a dungeon or boss scene.
*/
s32 Map_GetDungeonOrBossAreaIndex(PlayState* play) {
s32 Map_GetDungeonSceneIndex(PlayState* play) {
static s32 sDungeonAndBossSceneIds[] = {
SCENE_MITURIN, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
SCENE_HAKUGIN, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
SCENE_SEA, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
SCENE_INISIE_N, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
SCENE_INISIE_R, // Play_GetOriginalSceneId converts play->sceneId to SCENE_INISIE_N, returning
// DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
SCENE_MITURIN_BS, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE_BOSS
SCENE_HAKUGIN_BS, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE_BOSS
SCENE_SEA_BS, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE_BOSS
SCENE_INISIE_BS, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE_BOSS
};
s32 i;
for (i = 0; i < ARRAY_COUNT(sDungeonAndBossSceneIds); i++) {
@ -26,33 +33,38 @@ s32 Map_GetDungeonOrBossAreaIndex(PlayState* play) {
}
/**
* Returns true if the current scene is a dungeon or boss scene, false otherwise.
* Tests if the current scene is in a dungeon or boss scene.
* @return true if the current scene is a dungeon or boss scene, false otherwise.
*/
s32 Map_IsInDungeonOrBossArea(PlayState* play) {
if (Map_GetDungeonOrBossAreaIndex(play) == -1) {
s32 Map_IsInDungeonOrBossScene(PlayState* play) {
if (Map_GetDungeonSceneIndex(play) == -1) {
return false;
}
return true;
}
s32 func_8010A0A4(PlayState* play) {
if ((Map_GetDungeonOrBossAreaIndex(play) == -1) || !func_80102EF0(play)) {
s32 Map_CurRoomHasMapI(PlayState* play) {
if ((Map_GetDungeonSceneIndex(play) == -1) || !MapDisp_CurRoomHasMapI(play)) {
return false;
}
return true;
}
s32 sDungeonSceneIds[] = {
SCENE_MITURIN, SCENE_HAKUGIN, SCENE_SEA, SCENE_INISIE_N, SCENE_INISIE_R,
};
/**
* If the current scene is a dungeon scene, this function returns an index
* indicating which one it is. Otherwise, it returns -1.
* Tests if the current scene is a dungeon scene, excluding boss scenes.
* @return -1 if not a dungeon scene, else returns the DungeonSceneIndex of the dungeon scene
*/
s32 Map_GetDungeonAreaIndex(PlayState* play) {
s32 Map_GetDungeonSceneIndexForDungeon(PlayState* play) {
static s32 sDungeonSceneIds[] = {
SCENE_MITURIN, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
SCENE_HAKUGIN, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
SCENE_SEA, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
SCENE_INISIE_N, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
SCENE_INISIE_R, // Play_GetOriginalSceneId converts play->sceneId to SCENE_INISIE_N, returning
// DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
};
s32 i;
for (i = 0; i < ARRAY_COUNT(sDungeonSceneIds); i++) {
@ -65,28 +77,29 @@ s32 Map_GetDungeonAreaIndex(PlayState* play) {
}
/**
* Returns true if the current scene is a dungeon scene, false otherwise.
* Test if the current scene is a dungeon scene, excluding boss rooms
* @return true if the current scene is a dungeon scene, false otherwise.
*/
s32 Map_IsInDungeonArea(PlayState* play) {
if (Map_GetDungeonAreaIndex(play) == -1) {
s32 Map_IsInDungeonScene(PlayState* play) {
if (Map_GetDungeonSceneIndexForDungeon(play) == -1) {
return false;
}
return true;
}
s32 sBossSceneIds[] = {
SCENE_MITURIN_BS, // DUNGEON_INDEX_WOODFALL_TEMPLE
SCENE_HAKUGIN_BS, // DUNGEON_INDEX_SNOWHEAD_TEMPLE
SCENE_SEA_BS, // DUNGEON_INDEX_GREAT_BAY_TEMPLE
SCENE_INISIE_BS, // DUNGEON_INDEX_STONE_TOWER_TEMPLE
};
/**
* If the current scene is a boss scene, this function returns an index
* indicating which one it is. Otherwise, it returns -1.
* Tests if the current scene is a boss scene.
* @return -1 if not a boss scene, else returns the DungeonSceneIndex corresponding to that boss scene's primary dungeon
* scene
*/
s32 Map_GetBossAreaIndex(PlayState* play) {
s32 Map_GetDungeonSceneIndexForBoss(PlayState* play) {
static s32 sBossSceneIds[] = {
SCENE_MITURIN_BS, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
SCENE_HAKUGIN_BS, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
SCENE_SEA_BS, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
SCENE_INISIE_BS, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
};
s32 i;
for (i = 0; i < ARRAY_COUNT(sBossSceneIds); i++) {
@ -99,36 +112,11 @@ s32 Map_GetBossAreaIndex(PlayState* play) {
}
/**
* Returns true if the current scene is a boss scene, false otherwise.
* Checks if the current scene is a boss scene.
* @return true if the current scene is a boss scene, false otherwise.
*/
s32 Map_IsInBossArea(PlayState* play) {
if (Map_GetBossAreaIndex(play) == -1) {
return false;
}
return true;
}
s32 D_801BF5A4[] = {
SCENE_22DEKUCITY,
SCENE_KOEPONARACE,
SCENE_F01,
};
s32 func_8010A238(PlayState* play) {
s32 i;
for (i = 0; i < ARRAY_COUNT(D_801BF5A4); i++) {
if (Play_GetOriginalSceneId(play->sceneId) == D_801BF5A4[i]) {
return i;
}
}
return -1;
}
s32 func_8010A2AC(PlayState* play) {
if (func_8010A238(play) == -1) {
s32 Map_IsInBossScene(PlayState* play) {
if (Map_GetDungeonSceneIndexForBoss(play) == -1) {
return false;
}
@ -136,29 +124,65 @@ s32 func_8010A2AC(PlayState* play) {
}
/**
* When a room is loaded, this function is used to save the player's position and rotation
* so that the red arrow on the minimap can be drawn correctly.
* Intended to check if the current scene is an overworld scene with a minimap.
* The implementation is incomplete due to a complete rewrite of z_map_exp.c and other map systems, making the function
* obsolete.
* @return -1 if not in the list, else returns the MapIndex for the overworld scene
*/
void Minimap_SavePlayerRoomInitInfo(PlayState* play) {
s32 Map_GetMapIndexForOverworld(PlayState* play) {
static s32 sSceneIds[] = {
SCENE_22DEKUCITY,
SCENE_KOEPONARACE,
SCENE_F01,
};
s32 i;
for (i = 0; i < ARRAY_COUNT(sSceneIds); i++) {
if (Play_GetOriginalSceneId(play->sceneId) == sSceneIds[i]) {
return i;
}
}
return -1;
}
/**
* Intended to check if the current scene is an overworld scene with a minimap.
* The implementation is incomplete due to a complete rewrite of z_map_exp.c and other map systems, making the function
* obsolete.
* @return true if the current scene is in the set, false otherwise.
*/
s32 Map_IsInOverworldSceneWithMapIndex(PlayState* play) {
if (Map_GetMapIndexForOverworld(play) == -1) {
return false;
}
return true;
}
/**
* Sets the position and rotation of where the player has entered the area.
* Used to draw the red marker on the minimap.
*/
void Map_SetAreaEntrypoint(PlayState* play) {
Player* player = GET_PLAYER(play);
sMinimapInitPosX = player->actor.world.pos.x;
sMinimapInitPosZ = player->actor.world.pos.z;
sMinimapInitDir = (0x7FFF - player->actor.shape.rot.y) / 0x400;
sPlayerInitPosX = player->actor.world.pos.x;
sPlayerInitPosZ = player->actor.world.pos.z;
sPlayerInitDir = (0x7FFF - player->actor.shape.rot.y) / 0x400;
}
void Map_InitRoomData(PlayState* play, s16 room) {
s32 mapIndex = gSaveContext.mapIndex;
InterfaceContext* interfaceCtx = &play->interfaceCtx;
func_80105C40(room);
MapDisp_SwapRooms(room);
if (room >= 0) {
if (Map_IsInDungeonOrBossArea(play)) {
gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].rooms |=
gBitFlags[room];
if (Map_IsInDungeonOrBossScene(play)) {
SET_ROOM_VISITED(Play_GetOriginalSceneId(play->sceneId), room);
interfaceCtx->mapRoomNum = room;
interfaceCtx->dungeonOrBossAreaMapIndex = mapIndex;
interfaceCtx->dungeonSceneIndex = mapIndex;
}
} else {
interfaceCtx->mapRoomNum = 0;
@ -170,50 +194,52 @@ void Map_InitRoomData(PlayState* play, s16 room) {
}
void Map_Destroy(PlayState* play) {
func_80105A40(play);
MapDisp_Destroy(play);
}
void Map_Init(PlayState* play) {
InterfaceContext* interfaceCtx = &play->interfaceCtx;
s32 dungeonIndex;
s32 dungeonSceneSharedIndex;
func_80105C40(play->roomCtx.curRoom.num);
MapDisp_SwapRooms(play->roomCtx.curRoom.num);
interfaceCtx->unk_278 = -1;
interfaceCtx->dungeonOrBossAreaMapIndex = -1;
interfaceCtx->dungeonSceneIndex = -1;
interfaceCtx->mapSegment = THA_AllocTailAlign16(&play->state.tha, 0x1000);
if (func_8010A2AC(play)) {
gSaveContext.mapIndex = func_8010A238(play);
//! This block does pretty much nothing, as z_map_exp.c and other map systems were heavily rewritten after OoT to no
//! longer need mapIndex to retrieve minimap data.
if (Map_IsInOverworldSceneWithMapIndex(play)) {
gSaveContext.mapIndex = Map_GetMapIndexForOverworld(play);
return;
}
if (Map_IsInDungeonOrBossArea(play)) {
dungeonIndex = Map_GetDungeonOrBossAreaIndex(play);
gSaveContext.mapIndex = dungeonIndex;
if (Map_IsInDungeonOrBossScene(play)) {
gSaveContext.mapIndex = dungeonSceneSharedIndex = Map_GetDungeonSceneIndex(play);
switch (play->sceneId) {
case SCENE_MITURIN_BS:
dungeonIndex = DUNGEON_INDEX_WOODFALL_TEMPLE;
dungeonSceneSharedIndex = DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE;
break;
case SCENE_HAKUGIN_BS:
dungeonIndex = DUNGEON_INDEX_SNOWHEAD_TEMPLE;
dungeonSceneSharedIndex = DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE;
break;
case SCENE_SEA_BS:
dungeonIndex = DUNGEON_INDEX_GREAT_BAY_TEMPLE;
dungeonSceneSharedIndex = DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE;
break;
case SCENE_INISIE_BS:
dungeonIndex = DUNGEON_INDEX_STONE_TOWER_TEMPLE;
dungeonSceneSharedIndex = DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE;
break;
}
gSaveContext.dungeonIndex = dungeonIndex;
gSaveContext.dungeonSceneSharedIndex = dungeonSceneSharedIndex;
Map_InitRoomData(play, play->roomCtx.curRoom.num);
}
}
void Minimap_Draw(PlayState* play) {
func_80106644(play, sMinimapInitPosX, sMinimapInitPosZ, sMinimapInitDir);
void Map_DrawMinimap(PlayState* play) {
MapDisp_DrawMinimap(play, sPlayerInitPosX, sPlayerInitPosZ, sPlayerInitDir);
}
s16 sLastRoomNum = 99;
@ -227,7 +253,7 @@ void Map_Update(PlayState* play) {
s32 pad2;
if ((play->pauseCtx.state <= PAUSE_STATE_OPENING_2) && (CHECK_BTN_ALL(controller->press.button, BTN_L)) &&
!Play_InCsMode(play) && !func_80106530(play)) {
!Play_InCsMode(play) && !MapDisp_IsMinimapToggleBlocked(play)) {
if (!R_MINIMAP_DISABLED) {
Audio_PlaySfx(NA_SE_SY_CAMERA_ZOOM_UP);
} else {
@ -237,22 +263,21 @@ void Map_Update(PlayState* play) {
R_MINIMAP_DISABLED ^= 1;
}
func_80105B34(play);
MapDisp_Update(play);
if (!IS_PAUSED(&play->pauseCtx)) {
if (Map_IsInDungeonArea(play)) {
floor = func_80109124(player->actor.world.pos.y);
if (Map_IsInDungeonScene(play)) {
floor = MapDisp_GetPlayerStorey(player->actor.world.pos.y);
if (floor != -1) {
gSaveContext.save.saveInfo.permanentSceneFlags[Play_GetOriginalSceneId(play->sceneId)].unk_14 |=
gBitFlags[FLOOR_INDEX_MAX - floor];
R_REVERSE_FLOOR_INDEX = FLOOR_INDEX_MAX - floor;
SET_DUNGEON_FLOOR_VISITED(Play_GetOriginalSceneId(play->sceneId), FLOOR_INDEX_MAX - floor);
R_PLAYER_FLOOR_REVERSE_INDEX = FLOOR_INDEX_MAX - floor;
if (interfaceCtx->mapRoomNum != sLastRoomNum) {
sLastRoomNum = interfaceCtx->mapRoomNum;
}
}
} else if (Map_IsInBossArea(play)) {
func_80105294();
R_REVERSE_FLOOR_INDEX = FLOOR_INDEX_MAX - func_80105318();
} else if (Map_IsInBossScene(play)) {
MapDisp_GetBossIconY();
R_PLAYER_FLOOR_REVERSE_INDEX = FLOOR_INDEX_MAX - MapDisp_GetBossRoomStorey();
}
}
}

View File

@ -930,21 +930,22 @@ void Message_DrawItemIcon(PlayState* play, Gfx** gfxP) {
} else if (msgCtx->itemId == ITEM_STRAY_FAIRIES) {
msgCtx->unk12016 = 0x18;
gDPPipeSync(gfx++);
gDPSetPrimColor(gfx++, 0, 0, sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonIndex)].r,
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonIndex)].g,
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonIndex)].b, msgCtx->textColorAlpha);
gDPSetEnvColor(gfx++, sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonIndex)].r,
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonIndex)].g,
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonIndex)].b, 0);
gDPSetPrimColor(gfx++, 0, 0, sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonSceneSharedIndex)].r,
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonSceneSharedIndex)].g,
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonSceneSharedIndex)].b,
msgCtx->textColorAlpha);
gDPSetEnvColor(gfx++, sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonSceneSharedIndex)].r,
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonSceneSharedIndex)].g,
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonSceneSharedIndex)].b, 0);
gDPLoadTextureBlock_4b(gfx++, gStrayFairyGlowingCircleIconTex, G_IM_FMT_I, 32, 24, 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(gfx++, msgCtx->unk12010 << 2, msgCtx->unk12012 << 2,
(msgCtx->unk12010 + msgCtx->unk12014) << 2, (msgCtx->unk12012 + msgCtx->unk12016) << 2,
G_TX_RENDERTILE, 0, 0, 1 << 10, 1 << 10);
gDPSetPrimColor(gfx++, 0, 0, 255, 255, 255, msgCtx->textColorAlpha);
gDPLoadTextureBlock(gfx++, sStrayFairyIconTextures[((void)0, gSaveContext.dungeonIndex)], G_IM_FMT_RGBA,
G_IM_SIZ_32b, 32, 24, 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(gfx++, sStrayFairyIconTextures[((void)0, gSaveContext.dungeonSceneSharedIndex)],
G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 24, 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);
} else if ((msgCtx->itemId >= ITEM_SONG_SONATA) && (msgCtx->itemId <= ITEM_SONG_SUN)) {
index = msgCtx->itemId - ITEM_SONG_SONATA;
gDPSetPrimColor(gfx++, 0, 0, D_801CFE04[index], D_801CFE1C[index], D_801CFE34[index], msgCtx->textColorAlpha);
@ -2134,7 +2135,7 @@ void Message_LoadOwlWarpText(PlayState* play, s32* offset, f32* arg2, s16* decod
s16 owlWarpId;
s16 i;
if (func_8010A0A4(play) || (play->sceneId == SCENE_SECOM)) {
if (Map_CurRoomHasMapI(play) || (play->sceneId == SCENE_SECOM)) {
owlWarpId = OWL_WARP_ENTRANCE;
} else {
owlWarpId = pauseCtx->cursorPoint[PAUSE_WORLD_MAP];
@ -2463,7 +2464,8 @@ void Message_Decode(PlayState* play) {
Message_LoadTime(play, curChar, &charTexIndex, &spC0, &decodedBufPos);
} else if (curChar == 0x21C) {
digits[0] = digits[1] = 0;
digits[2] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
digits[2] =
gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex];
while (digits[2] >= 100) {
digits[0]++;
@ -3121,7 +3123,7 @@ void Message_OpenText(PlayState* play, u16 textId) {
if (msgCtx) {}
textId = 0xC9;
} else if (textId == 0x11) {
if (gSaveContext.save.saveInfo.inventory.strayFairies[((void)0, gSaveContext.dungeonIndex)] == 0xF) {
if (gSaveContext.save.saveInfo.inventory.strayFairies[((void)0, gSaveContext.dungeonSceneSharedIndex)] == 0xF) {
textId = 0xF3;
}
} else if ((textId == 0x92) && (play->sceneId == SCENE_KOEPONARACE)) {
@ -5687,7 +5689,7 @@ void Message_Update(PlayState* play) {
if (sLastPlayedSong == OCARINA_SONG_SOARING) {
if (interfaceCtx->restrictions.songOfSoaring == 0) {
if (func_8010A0A4(play) || (play->sceneId == SCENE_SECOM)) {
if (Map_CurRoomHasMapI(play) || (play->sceneId == SCENE_SECOM)) {
Message_StartTextbox(play, 0x1B93, NULL);
play->msgCtx.ocarinaMode = OCARINA_MODE_1B;
sLastPlayedSong = 0xFF;

View File

@ -280,7 +280,7 @@ void Message_LoadOwlWarpTextNES(PlayState* play, s32* offset, f32* arg2, s16* de
s16 owlWarpId;
s16 stringLimit;
if (func_8010A0A4(play) || (play->sceneId == SCENE_SECOM)) {
if (Map_CurRoomHasMapI(play) || (play->sceneId == SCENE_SECOM)) {
owlWarpId = OWL_WARP_ENTRANCE;
} else {
owlWarpId = play->pauseCtx.cursorPoint[PAUSE_WORLD_MAP];
@ -1310,7 +1310,8 @@ void Message_DecodeNES(PlayState* play) {
Message_LoadTimeNES(play, curChar, &charTexIndex, &spA4, &decodedBufPos);
} else if (curChar == MESSAGE_STRAY_FAIRIES) {
digits[0] = digits[1] = 0;
digits[2] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
digits[2] =
gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex];
while (digits[2] >= 100) {
digits[0]++;
@ -1332,18 +1333,24 @@ void Message_DecodeNES(PlayState* play) {
}
}
if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 1) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 21)) {
if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] ==
1) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] ==
21)) {
Message_LoadCharNES(play, 's', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 't', &charTexIndex, &spA4, decodedBufPos);
} else if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 2) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 22)) {
} else if ((gSaveContext.save.saveInfo.inventory
.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] == 2) ||
(gSaveContext.save.saveInfo.inventory
.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] == 22)) {
Message_LoadCharNES(play, 'n', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos);
} else if ((gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 3) ||
(gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] == 23)) {
} else if ((gSaveContext.save.saveInfo.inventory
.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] == 3) ||
(gSaveContext.save.saveInfo.inventory
.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] == 23)) {
Message_LoadCharNES(play, 'r', &charTexIndex, &spA4, decodedBufPos);
decodedBufPos++;
Message_LoadCharNES(play, 'd', &charTexIndex, &spA4, decodedBufPos);

View File

@ -6428,7 +6428,7 @@ void Interface_Draw(PlayState* play) {
}
Magic_DrawMeter(play);
Minimap_Draw(play);
Map_DrawMinimap(play);
if ((R_PAUSE_BG_PRERENDER_STATE != 2) && (R_PAUSE_BG_PRERENDER_STATE != 3)) {
Target_Draw(&play->actorCtx.targetCtx, play);

View File

@ -1575,7 +1575,7 @@ void Play_InitScene(PlayState* this, s32 spawn) {
this->numSetupActors = 0;
Object_InitContext(&this->state, &this->objectCtx);
LightContext_Init(this, &this->lightCtx);
Door_InitContext(&this->state, &this->doorCtx);
Scene_ResetTransitionActorList(&this->state, &this->transitionActors);
Room_Init(this, &this->roomCtx);
gSaveContext.worldMapArea = 0;
Scene_ExecuteCommands(this, this->sceneSegment);
@ -1975,7 +1975,7 @@ s32 func_8016A02C(GameState* thisx, Actor* actor, s16* yaw) {
return false;
}
transitionActor = &this->doorCtx.transitionActorList[(u16)actor->params >> 10];
transitionActor = &this->transitionActors.list[(u16)actor->params >> 10];
frontRoom = transitionActor->sides[0].room;
if (frontRoom == transitionActor->sides[1].room) {
return false;

View File

@ -502,11 +502,11 @@ size_t Room_AllocateAndLoad(PlayState* play, RoomContext* roomCtx) {
}
}
if ((u32)play->doorCtx.numTransitionActors != 0) {
if ((u32)play->transitionActors.count != 0) {
RomFile* roomList = play->roomList;
TransitionActorEntry* transitionActor = &play->doorCtx.transitionActorList[0];
TransitionActorEntry* transitionActor = &play->transitionActors.list[0];
for (j = 0; j < play->doorCtx.numTransitionActors; j++) {
for (j = 0; j < play->transitionActors.count; j++) {
frontRoom = transitionActor->sides[0].room;
backRoom = transitionActor->sides[1].room;
frontRoomSize = (frontRoom < 0) ? 0 : roomList[frontRoom].vromEnd - roomList[frontRoom].vromStart;
@ -620,7 +620,7 @@ void func_8012EBF8(PlayState* play, RoomContext* roomCtx) {
Actor_SpawnTransitionActors(play, &play->actorCtx);
if (roomCtx->curRoom.num > -1) {
Map_InitRoomData(play, roomCtx->curRoom.num);
Minimap_SavePlayerRoomInitInfo(play);
Map_SetAreaEntrypoint(play);
}
Audio_SetEnvReverb(play->roomCtx.curRoom.echo);
}

View File

@ -334,15 +334,15 @@ void Scene_CommandPathList(PlayState* play, SceneCmd* cmd) {
}
// SceneTableEntry Header Command 0x0E: Transition Actor List
void Scene_CommandTransiActorList(PlayState* play, SceneCmd* cmd) {
play->doorCtx.numTransitionActors = cmd->transiActorList.num;
play->doorCtx.transitionActorList = Lib_SegmentedToVirtual(cmd->transiActorList.segment);
func_80105818(play, play->doorCtx.numTransitionActors, play->doorCtx.transitionActorList);
void Scene_CommandTransitionActorList(PlayState* play, SceneCmd* cmd) {
play->transitionActors.count = cmd->transitionActorList.num;
play->transitionActors.list = Lib_SegmentedToVirtual(cmd->transitionActorList.segment);
MapDisp_InitTransitionActorData(play, play->transitionActors.count, play->transitionActors.list);
}
// Init function for the transition system.
void Door_InitContext(GameState* state, DoorContext* doorCtx) {
doorCtx->numTransitionActors = 0;
void Scene_ResetTransitionActorList(GameState* state, TransitionActorList* transitionActors) {
transitionActors->count = 0;
}
// SceneTableEntry Header Command 0x0F: Environment Light Settings List
@ -495,19 +495,19 @@ void Scene_CommandCutsceneList(PlayState* play, SceneCmd* cmd) {
CutsceneManager_Init(play, Lib_SegmentedToVirtual(cmd->cutsceneList.segment), cmd->cutsceneList.num);
}
// SceneTableEntry Header Command 0x1C: Mini Maps
void Scene_CommandMiniMap(PlayState* play, SceneCmd* cmd) {
func_80104CF4(play);
func_8010549C(play, cmd->minimapSettings.segment);
// SceneTableEntry Header Command 0x1C: Map Data
void Scene_CommandMapData(PlayState* play, SceneCmd* cmd) {
MapDisp_Init(play);
MapDisp_InitMapData(play, cmd->mapData.segment);
}
// SceneTableEntry Header Command 0x1D: Undefined
void Scene_Command1D(PlayState* play, SceneCmd* cmd) {
}
// SceneTableEntry Header Command 0x1E: Minimap Compass Icon Info
void Scene_CommandMiniMapCompassInfo(PlayState* play, SceneCmd* cmd) {
func_8010565C(play, cmd->minimapChests.num, cmd->minimapChests.segment);
// SceneTableEntry Header Command 0x1E: Map Data Chests
void Scene_CommandMapDataChests(PlayState* play, SceneCmd* cmd) {
MapDisp_InitChestData(play, cmd->mapDataChests.num, cmd->mapDataChests.segment);
}
// SceneTableEntry Header Command 0x19: Sets Region Visited Flag
@ -565,7 +565,7 @@ void (*sSceneCmdHandlers[SCENE_CMD_MAX])(PlayState*, SceneCmd*) = {
Scene_CommandObjectList, // SCENE_CMD_ID_OBJECT_LIST
Scene_CommandLightList, // SCENE_CMD_ID_LIGHT_LIST
Scene_CommandPathList, // SCENE_CMD_ID_PATH_LIST
Scene_CommandTransiActorList, // SCENE_CMD_ID_TRANSI_ACTOR_LIST
Scene_CommandTransitionActorList, // SCENE_CMD_ID_TRANSI_ACTOR_LIST
Scene_CommandEnvLightSettings, // SCENE_CMD_ID_ENV_LIGHT_SETTINGS
Scene_CommandTimeSettings, // SCENE_CMD_ID_TIME_SETTINGS
Scene_CommandSkyboxSettings, // SCENE_CMD_ID_SKYBOX_SETTINGS
@ -579,9 +579,9 @@ void (*sSceneCmdHandlers[SCENE_CMD_MAX])(PlayState*, SceneCmd*) = {
Scene_CommandSetRegionVisitedFlag, // SCENE_CMD_ID_SET_REGION_VISITED
Scene_CommandAnimatedMaterials, // SCENE_CMD_ID_ANIMATED_MATERIAL_LIST
Scene_CommandCutsceneList, // SCENE_CMD_ID_ACTOR_CUTSCENE_LIST
Scene_CommandMiniMap, // SCENE_CMD_ID_MINIMAP_INFO
Scene_CommandMapData, // SCENE_CMD_ID_MAP_DATA
Scene_Command1D, // SCENE_CMD_ID_UNUSED_1D
Scene_CommandMiniMapCompassInfo, // SCENE_CMD_ID_MINIMAP_COMPASS_ICON_INFO
Scene_CommandMapDataChests, // SCENE_CMD_ID_MAP_DATA_CHESTS
};
/**

View File

@ -101,7 +101,7 @@ void BgOpenShutter_Destroy(Actor* thisx, PlayState* play) {
BgOpenShutter* this = THIS;
s32 transition = DOOR_GET_TRANSITION_ID(thisx);
play->doorCtx.transitionActorList[transition].id = -play->doorCtx.transitionActorList[transition].id;
play->transitionActors.list[transition].id = -play->transitionActors.list[transition].id;
DynaPoly_DeleteBgActor(play, &play->colCtx.dyna, this->slidingDoor.dyna.bgId);
}

View File

@ -140,7 +140,7 @@ void DoorShutter_SetupAction(DoorShutter* this, DoorShutterActionFunc actionFunc
s32 func_808A0900(DoorShutter* this, PlayState* play) {
TransitionActorEntry* transitionEntry =
&play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor)];
&play->transitionActors.list[DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor)];
s8 frontRoom = transitionEntry->sides[0].room;
if (frontRoom == transitionEntry->sides[1].room) {
@ -156,31 +156,31 @@ s32 DoorShutter_SetupDoor(DoorShutter* this, PlayState* play) {
ShutterObjectInfo* sp24 = &D_808A2180[this->unk_163];
s32 doorType = this->doorType;
if (doorType != 4) {
if (doorType != DOORSHUTTER_TYPE_4) {
if (func_808A0900(this, play)) {
if ((doorType == 7) || (doorType == 6)) {
doorType = 1;
} else if (doorType == 5) {
doorType = 3;
if ((doorType == DOORSHUTTER_TYPE_7) || (doorType == DOORSHUTTER_TYPE_6)) {
doorType = DOORSHUTTER_TYPE_1;
} else if (doorType == DOORSHUTTER_TYPE_BOSS_DOOR) {
doorType = DOORSHUTTER_TYPE_3;
} else {
doorType = 0;
doorType = DOORSHUTTER_TYPE_0;
}
}
}
if (doorType == 0) {
if (doorType == DOORSHUTTER_TYPE_0) {
this->unk_164 = sp24->index1;
} else {
this->unk_164 = sp24->index2;
}
if (doorType == 1) {
if (doorType == DOORSHUTTER_TYPE_1) {
if (!Flags_GetClear(play, this->slidingDoor.dyna.actor.room)) {
DoorShutter_SetupAction(this, func_808A0F88);
this->unk_168 = 1.0f;
return true;
}
} else if ((doorType == 2) || (doorType == 7)) {
} else if ((doorType == DOORSHUTTER_TYPE_2) || (doorType == DOORSHUTTER_TYPE_7)) {
if (!Flags_GetSwitch(play, DOORSHUTTER_GET_SWITCH_FLAG(&this->slidingDoor.dyna.actor))) {
DoorShutter_SetupAction(this, func_808A1548);
this->unk_168 = 1.0f;
@ -188,7 +188,7 @@ s32 DoorShutter_SetupDoor(DoorShutter* this, PlayState* play) {
}
DoorShutter_SetupAction(this, func_808A1618);
return false;
} else if (doorType == 3) {
} else if (doorType == DOORSHUTTER_TYPE_3) {
DoorShutter_SetupAction(this, func_808A1080);
this->unk_168 = 1.0f;
return false;
@ -204,7 +204,7 @@ void DoorShutter_Init(Actor* thisx, PlayState* play2) {
s32 i;
Actor_ProcessInitChain(&this->slidingDoor.dyna.actor, sInitChain);
this->doorType = DOORSHUTTER_GET_380(&this->slidingDoor.dyna.actor);
this->doorType = DOORSHUTTER_GET_TYPE(&this->slidingDoor.dyna.actor);
sp24 = D_808A2240[this->doorType];
if (sp24 < 0) {
@ -242,7 +242,7 @@ void DoorShutter_Init(Actor* thisx, PlayState* play2) {
DoorShutter_SetupAction(this, DoorShutter_SetupType);
this->unk_163 = sp24;
if ((this->doorType == 4) || (this->doorType == 5)) {
if ((this->doorType == DOORSHUTTER_TYPE_4) || (this->doorType == DOORSHUTTER_TYPE_BOSS_DOOR)) {
if (!Flags_GetSwitch(play, DOORSHUTTER_GET_SWITCH_FLAG(&this->slidingDoor.dyna.actor))) {
this->unk_166 = 10;
}
@ -257,8 +257,7 @@ void DoorShutter_Destroy(Actor* thisx, PlayState* play) {
if (this->slidingDoor.dyna.actor.room >= 0) {
s32 transitionActorId = DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor);
play->doorCtx.transitionActorList[transitionActorId].id =
-play->doorCtx.transitionActorList[transitionActorId].id;
play->transitionActors.list[transitionActorId].id = -play->transitionActors.list[transitionActorId].id;
}
}
@ -314,7 +313,7 @@ void func_808A0F88(DoorShutter* this, PlayState* play) {
if (Flags_GetClear(play, this->slidingDoor.dyna.actor.room) ||
Flags_GetClearTemp(play, this->slidingDoor.dyna.actor.room)) {
this->csId = this->slidingDoor.dyna.actor.csId;
if (this->doorType == 7) {
if (this->doorType == DOORSHUTTER_TYPE_7) {
if (this->csId != CS_ID_NONE) {
this->csId = CutsceneManager_GetAdditionalCsId(this->csId);
}
@ -347,7 +346,7 @@ void func_808A1090(DoorShutter* this, PlayState* play) {
this->slidingDoor.dyna.actor.velocity.y = 0.0f;
if (this->unk_166 != 0) {
Flags_SetSwitch(play, DOORSHUTTER_GET_SWITCH_FLAG(&this->slidingDoor.dyna.actor));
if (this->doorType != 5) {
if (this->doorType != DOORSHUTTER_TYPE_BOSS_DOOR) {
DUNGEON_KEY_COUNT(gSaveContext.mapIndex) = DUNGEON_KEY_COUNT(gSaveContext.mapIndex) - 1;
Actor_PlaySfx(&this->slidingDoor.dyna.actor, NA_SE_EV_CHAIN_KEY_UNLOCK);
} else {
@ -370,14 +369,14 @@ void func_808A1090(DoorShutter* this, PlayState* play) {
player->doorTimer = 0;
}
if (this->doorType == 6) {
if (this->doorType == DOORSHUTTER_TYPE_6) {
if (gSaveContext.save.saveInfo.playerData.healthCapacity <
(DOORSHUTTER_GET_1F(&this->slidingDoor.dyna.actor) * 0x10)) {
player->doorType = PLAYER_DOORTYPE_TALKING;
this->slidingDoor.dyna.actor.textId = 0x14FC;
}
} else if (this->unk_166 != 0) {
if (this->doorType == 5) {
if (this->doorType == DOORSHUTTER_TYPE_BOSS_DOOR) {
if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.mapIndex)) {
player->doorType = PLAYER_DOORTYPE_TALKING;
this->slidingDoor.dyna.actor.textId = 0x1803;
@ -507,7 +506,7 @@ void func_808A1684(DoorShutter* this, PlayState* play) {
f32 phi_f0;
if ((DECR(this->unk_166) == 0) && (play->roomCtx.status == 0) && func_808A1340(this, play)) {
if (this->doorType == 5) {
if (this->doorType == DOORSHUTTER_TYPE_BOSS_DOOR) {
phi_f0 = 20.0f;
} else {
phi_f0 = 50.0f;
@ -541,8 +540,8 @@ void func_808A1784(DoorShutter* this, PlayState* play) {
} else if (func_808A1478(this, play, 0.0f)) {
u8 doorType = this->doorType;
if ((doorType != 0) && (doorType != 1) &&
(((doorType != 7) && (doorType != 6)) || !func_808A0900(this, play))) {
if ((doorType != DOORSHUTTER_TYPE_0) && (doorType != DOORSHUTTER_TYPE_1) &&
(((doorType != DOORSHUTTER_TYPE_7) && (doorType != DOORSHUTTER_TYPE_6)) || !func_808A0900(this, play))) {
DoorShutter_SetupAction(this, func_808A1618);
} else {
DoorShutter_SetupAction(this, func_808A1090);
@ -560,7 +559,7 @@ void func_808A1884(DoorShutter* this, PlayState* play) {
Actor_OffsetOfPointInActorCoords(&this->slidingDoor.dyna.actor, &sp44, &player->actor.world.pos);
this->slidingDoor.dyna.actor.room =
play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor)]
play->transitionActors.list[DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor)]
.sides[(sp44.z < 0.0f) ? 0 : 1]
.room;
@ -700,7 +699,7 @@ void DoorShutter_Draw(Actor* thisx, PlayState* play) {
if (sp44->unk_04 != 0) {
TransitionActorEntry* transitionEntry =
&play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor)];
&play->transitionActors.list[DOOR_GET_TRANSITION_ID(&this->slidingDoor.dyna.actor)];
if ((play->roomCtx.prevRoom.num >= 0) ||
(transitionEntry->sides[0].room == transitionEntry->sides[1].room)) {
@ -713,7 +712,7 @@ void DoorShutter_Draw(Actor* thisx, PlayState* play) {
} else if (this->slidingDoor.dyna.actor.room == transitionEntry->sides[0].room) {
Matrix_RotateYF(M_PIf, MTXMODE_APPLY);
}
} else if (this->doorType == 5) {
} else if (this->doorType == DOORSHUTTER_TYPE_BOSS_DOOR) {
gSPSegment(POLY_OPA_DISP++, 0x08, Lib_SegmentedToVirtual(D_808A22DC[this->slidingDoor.unk_15E]));
}
@ -729,7 +728,8 @@ void DoorShutter_Draw(Actor* thisx, PlayState* play) {
if (this->unk_166 != 0) {
Matrix_Scale(0.01f, 0.01f, 0.025f, MTXMODE_APPLY);
Actor_DrawDoorLock(play, this->unk_166, (this->doorType == 5) ? DOORLOCK_BOSS : DOORLOCK_NORMAL);
Actor_DrawDoorLock(play, this->unk_166,
(this->doorType == DOORSHUTTER_TYPE_BOSS_DOOR) ? DOORLOCK_BOSS : DOORLOCK_NORMAL);
}
CLOSE_DISPS(play->state.gfxCtx);

View File

@ -8,9 +8,21 @@ struct DoorShutter;
typedef void (*DoorShutterActionFunc)(struct DoorShutter*, PlayState*);
typedef enum DoorShutterType {
/* 0 */ DOORSHUTTER_TYPE_0,
/* 1 */ DOORSHUTTER_TYPE_1,
/* 2 */ DOORSHUTTER_TYPE_2,
/* 3 */ DOORSHUTTER_TYPE_3,
/* 4 */ DOORSHUTTER_TYPE_4,
/* 5 */ DOORSHUTTER_TYPE_BOSS_DOOR,
/* 6 */ DOORSHUTTER_TYPE_6,
/* 7 */ DOORSHUTTER_TYPE_7
} DoorShutterType;
#define DOORSHUTTER_GET_1F(thisx) ((thisx)->params & 0x1F)
#define DOORSHUTTER_GET_SWITCH_FLAG(thisx) ((thisx)->params & 0x7F)
#define DOORSHUTTER_GET_380(thisx) (((thisx)->params >> 7) & 7)
#define DOORSHUTTER_GET_TYPE(thisx) (((thisx)->params >> 7) & 7)
#define DOORSHUTTER_PARAMS_GET_TYPE(params) (((params) >> 7) & 7)
typedef struct DoorShutter {
/* 0x000 */ SlidingDoorActor slidingDoor;

View File

@ -133,7 +133,7 @@ void DoorSpiral_Init(Actor* thisx, PlayState* play) {
s32 transitionId = DOOR_GET_TRANSITION_ID(thisx);
s8 objectSlot;
if (this->actor.room != play->doorCtx.transitionActorList[transitionId].sides[0].room) {
if (this->actor.room != play->transitionActors.list[transitionId].sides[0].room) {
Actor_Kill(&this->actor);
return;
}
@ -154,7 +154,7 @@ void DoorSpiral_Init(Actor* thisx, PlayState* play) {
void DoorSpiral_Destroy(Actor* thisx, PlayState* play) {
s32 transitionId = DOOR_GET_TRANSITION_ID(thisx);
play->doorCtx.transitionActorList[transitionId].id = -play->doorCtx.transitionActorList[transitionId].id;
play->transitionActors.list[transitionId].id = -play->transitionActors.list[transitionId].id;
}
void func_809A2DB0(DoorSpiral* this, PlayState* play) {
@ -215,7 +215,7 @@ void func_809A2FF8(DoorSpiral* this, PlayState* play) {
player->doorDirection = this->direction;
player->doorActor = &this->actor;
transitionId = DOOR_GET_TRANSITION_ID(&this->actor);
player->doorNext = (play->doorCtx.transitionActorList[transitionId].params >> 0xA);
player->doorNext = (play->transitionActors.list[transitionId].params >> 0xA);
func_80122F28(player);
}
}

View File

@ -397,7 +397,7 @@ void EnDoor_Destroy(Actor* thisx, PlayState* play) {
if (this->doorType != ENDOOR_TYPE_FRAMED) {
TransitionActorEntry* transitionEntry =
&play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&this->knobDoor.dyna.actor)];
&play->transitionActors.list[DOOR_GET_TRANSITION_ID(&this->knobDoor.dyna.actor)];
if (transitionEntry->id < 0) {
transitionEntry->id = -transitionEntry->id;
@ -646,7 +646,7 @@ s32 EnDoor_OverrideLimbDraw(PlayState* play, s32 limbIndex, Gfx** dList, Vec3f*
transitionEntry = NULL;
if (this->doorType != ENDOOR_TYPE_FRAMED) {
transitionEntry = &play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&this->knobDoor.dyna.actor)];
transitionEntry = &play->transitionActors.list[DOOR_GET_TRANSITION_ID(&this->knobDoor.dyna.actor)];
}
rot->z += this->knobDoor.dyna.actor.world.rot.y;

View File

@ -25,7 +25,7 @@
* | |
* | Text offset | Half day bit index
* |-------------|--------------------
* | 0 0 0 0 | 0 0 0
* | 0 0 0 0 | 0 0 0
* | 4 | 3
* |
*

View File

@ -107,8 +107,8 @@ void EnElforg_Init(Actor* thisx, PlayState* play) {
break;
}
if (Map_IsInDungeonOrBossArea(play)) {
this->area = gSaveContext.dungeonIndex + STRAY_FAIRY_AREA_WOODFALL;
if (Map_IsInDungeonOrBossScene(play)) {
this->area = gSaveContext.dungeonSceneSharedIndex + STRAY_FAIRY_AREA_WOODFALL;
} else {
this->area = STRAY_FAIRY_GET_NON_DUNGEON_AREA(thisx);
}
@ -497,11 +497,11 @@ void EnElforg_FreeFloating(EnElforg* this, PlayState* play) {
return;
}
if (Map_IsInDungeonOrBossArea(play)) {
gSaveContext.save.saveInfo.inventory.strayFairies[gSaveContext.dungeonIndex]++;
if (Map_IsInDungeonOrBossScene(play)) {
gSaveContext.save.saveInfo.inventory.strayFairies[gSaveContext.dungeonSceneSharedIndex]++;
// You found a Stray Fairy!
Message_StartTextbox(play, 0x11, NULL);
if (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex] >=
if (gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex] >=
STRAY_FAIRY_SCATTERED_TOTAL) {
Audio_PlayFanfare(NA_BGM_GET_ITEM | 0x900);
}

View File

@ -130,7 +130,7 @@ void EnHoll_Destroy(Actor* thisx, PlayState* play) {
if (!EN_HOLL_IS_SCENE_CHANGER(this)) {
u32 enHollId = EN_HOLL_GET_ID(&this->actor);
play->doorCtx.transitionActorList[enHollId].id = -play->doorCtx.transitionActorList[enHollId].id;
play->transitionActors.list[enHollId].id = -play->transitionActors.list[enHollId].id;
if (this == sInstancePlayingSound) {
sInstancePlayingSound = NULL;
}
@ -183,7 +183,7 @@ void EnHoll_VisibleIdle(EnHoll* this, PlayState* play) {
if (sLoadingPlaneDistance < playerDistFromCentralPlane) {
if ((play->roomCtx.prevRoom.num >= 0) && (play->roomCtx.status == 0)) {
this->actor.room = play->doorCtx.transitionActorList[enHollId].sides[this->playerSide].room;
this->actor.room = play->transitionActors.list[enHollId].sides[this->playerSide].room;
if (play->roomCtx.prevRoom.num == this->actor.room) {
EnHoll_ChangeRooms(play);
}
@ -196,7 +196,7 @@ void EnHoll_VisibleIdle(EnHoll* this, PlayState* play) {
play->transitionTrigger = TRANS_TRIGGER_START;
play->unk_1878C(play);
} else {
this->actor.room = play->doorCtx.transitionActorList[enHollId].sides[this->playerSide ^ 1].room;
this->actor.room = play->transitionActors.list[enHollId].sides[this->playerSide ^ 1].room;
if (play->roomCtx.prevRoom.num < 0) {
Room_StartRoomTransition(play, &play->roomCtx, this->actor.room);
if (this == sInstancePlayingSound) {
@ -236,7 +236,7 @@ void EnHoll_TransparentIdle(EnHoll* this, PlayState* play) {
playerDistFromCentralPlane > EN_HOLL_LOADING_PLANE_DISTANCE) {
s32 enHollId = EN_HOLL_GET_ID(&this->actor);
s32 playerSide = (transformedPlayerPos.z < 0.0f) ? EN_HOLL_BEHIND : EN_HOLL_BEFORE;
TransitionActorEntry* transitionActorEntry = &play->doorCtx.transitionActorList[enHollId];
TransitionActorEntry* transitionActorEntry = &play->transitionActors.list[enHollId];
s8 room = transitionActorEntry->sides[playerSide].room;
this->actor.room = room;
@ -264,7 +264,7 @@ void EnHoll_VerticalBgCoverIdle(EnHoll* this, PlayState* play) {
s32 enHollId = EN_HOLL_GET_ID(&this->actor);
s32 playerSide = (this->actor.playerHeightRel > 0.0f) ? EN_HOLL_ABOVE : EN_HOLL_BELOW;
this->actor.room = play->doorCtx.transitionActorList[enHollId].sides[playerSide].room;
this->actor.room = play->transitionActors.list[enHollId].sides[playerSide].room;
if ((this->actor.room != play->roomCtx.curRoom.num) &&
Room_StartRoomTransition(play, &play->roomCtx, this->actor.room)) {
@ -288,7 +288,7 @@ void EnHoll_VerticalIdle(EnHoll* this, PlayState* play) {
s32 enHollId = EN_HOLL_GET_ID(&this->actor);
s32 playerSide = (this->actor.playerHeightRel > 0.0f) ? EN_HOLL_ABOVE : EN_HOLL_BELOW;
this->actor.room = play->doorCtx.transitionActorList[enHollId].sides[playerSide].room;
this->actor.room = play->transitionActors.list[enHollId].sides[playerSide].room;
if ((this->actor.room != play->roomCtx.curRoom.num) &&
Room_StartRoomTransition(play, &play->roomCtx, this->actor.room)) {
this->actionFunc = EnHoll_RoomTransitionIdle;

View File

@ -3,6 +3,7 @@
* Overlay: ovl_En_Kusa
* Description: Grass / Bush
*/
#include "prevent_bss_reordering.h"
#include "z_en_kusa.h"
#include "objects/object_kusa/object_kusa.h"

View File

@ -4,7 +4,6 @@
* Description: Switch-Activated Geyser
*/
#include "prevent_bss_reordering.h"
#include "z_obj_hunsui.h"
#include "objects/object_hunsui/object_hunsui.h"

View File

@ -6336,7 +6336,7 @@ void Player_Door_Staircase(PlayState* play, Player* this, Actor* door) {
Camera_ChangeSetting(Play_GetCamera(play, CAM_ID_MAIN), CAM_SET_SCENE0);
this->cv.doorBgCamIndex =
play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&doorStaircase->actor)].sides[0].bgCamIndex;
play->transitionActors.list[DOOR_GET_TRANSITION_ID(&doorStaircase->actor)].sides[0].bgCamIndex;
Actor_DeactivateLens(play);
this->floorSfxOffset = NA_SE_PL_WALK_CONCRETE - SFX_FLAG;
}
@ -6382,7 +6382,7 @@ void Player_Door_Sliding(PlayState* play, Player* this, Actor* door) {
}
if (doorSliding->dyna.actor.category == ACTORCAT_DOOR) {
this->cv.doorBgCamIndex = play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&doorSliding->dyna.actor)]
this->cv.doorBgCamIndex = play->transitionActors.list[DOOR_GET_TRANSITION_ID(&doorSliding->dyna.actor)]
.sides[this->doorDirection > 0 ? 0 : 1]
.bgCamIndex;
Actor_DeactivateLens(play);
@ -6481,7 +6481,7 @@ void Player_Door_Knob(PlayState* play, Player* this, Actor* door) {
mainCam = Play_GetCamera(play, CAM_ID_MAIN);
Camera_ChangeDoorCam(mainCam, &knobDoor->dyna.actor,
play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(&knobDoor->dyna.actor)]
play->transitionActors.list[DOOR_GET_TRANSITION_ID(&knobDoor->dyna.actor)]
.sides[(this->doorDirection > 0) ? 0 : 1]
.bgCamIndex,
0.0f, this->av1.actionVar1, 26.0f * D_8085C3E8, 10.0f * D_8085C3E8);
@ -6529,7 +6529,7 @@ s32 Player_ActionChange_1(Player* this, PlayState* play) {
if ((this->doorType < PLAYER_DOORTYPE_FAKE) && (doorActor->category == ACTORCAT_DOOR) &&
((this->doorType != PLAYER_DOORTYPE_HANDLE) ||
(ENDOOR_GET_TYPE(doorActor) != ENDOOR_TYPE_FRAMED))) {
s8 roomNum = play->doorCtx.transitionActorList[DOOR_GET_TRANSITION_ID(doorActor)]
s8 roomNum = play->transitionActors.list[DOOR_GET_TRANSITION_ID(doorActor)]
.sides[(this->doorDirection > 0) ? 0 : 1]
.room;
@ -10904,7 +10904,7 @@ void Player_Init(Actor* thisx, PlayState* play) {
}
}
Minimap_SavePlayerRoomInitInfo(play);
Map_SetAreaEntrypoint(play);
func_80841A50(play, this);
this->unk_3CF = 0;
R_PLAY_FILL_SCREEN_ON = 0;
@ -13747,7 +13747,7 @@ void Player_Action_1(Player* this, PlayState* play) {
} else if (this->av2.actionVar2 < 0) {
if (Room_StartRoomTransition(play, &play->roomCtx, this->av1.actionVar1)) {
Map_InitRoomData(play, play->roomCtx.curRoom.num);
Minimap_SavePlayerRoomInitInfo(play);
Map_SetAreaEntrypoint(play);
this->av2.actionVar2 = 5;
}
} else if (this->av2.actionVar2 > 0) {
@ -15211,7 +15211,7 @@ void Player_Action_35(Player* this, PlayState* play) {
TransitionActorEntry* temp_v1_4; // sp50
s32 roomNum;
temp_v1_4 = &play->doorCtx.transitionActorList[this->doorNext];
temp_v1_4 = &play->transitionActors.list[this->doorNext];
roomNum = temp_v1_4->sides[0].room;
R_PLAY_FILL_SCREEN_ALPHA = 255;
@ -15279,7 +15279,7 @@ void Player_Action_35(Player* this, PlayState* play) {
(Play_GetCamera(play, CAM_ID_MAIN)->stateFlags & CAM_STATE_4))) {
if (this->unk_397 == 4) {
Map_InitRoomData(play, play->roomCtx.curRoom.num);
Minimap_SavePlayerRoomInitInfo(play);
Map_SetAreaEntrypoint(play);
}
R_PLAY_FILL_SCREEN_ON = 0;

View File

@ -4,6 +4,7 @@
* Description: Entering name on a new file, selecting options from the options menu
*/
#include "prevent_bss_reordering.h"
#include "z_file_select.h"
#include "z64rumble.h"
#include "misc/title_static/title_static.h"

View File

@ -52,7 +52,7 @@ void KaleidoScope_DrawDungeonStrayFairyCount(PlayState* play) {
1 << 10);
// Get digits for current number of stray fairies collected
counterDigits[1] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonIndex];
counterDigits[1] = gSaveContext.save.saveInfo.inventory.strayFairies[(void)0, gSaveContext.dungeonSceneSharedIndex];
counterDigits[0] = counterDigits[1] / 10;
counterDigits[1] -= (s16)(counterDigits[0] * 10);
@ -81,10 +81,10 @@ TexturePtr sDungeonItemTextures[] = {
};
TexturePtr sDungeonTitleTextures[] = {
gPauseWoodfallTitleENGTex, // DUNGEON_INDEX_WOODFALL_TEMPLE
gPauseSnowheadTitleENGTex, // DUNGEON_INDEX_SNOWHEAD_TEMPLE
gPauseGreatBayTitleENGTex, // DUNGEON_INDEX_GREAT_BAY_TEMPLE
gPauseStoneTowerTitleENGTex, // DUNGEON_INDEX_STONE_TOWER_TEMPLE
gPauseWoodfallTitleENGTex, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
gPauseSnowheadTitleENGTex, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
gPauseGreatBayTitleENGTex, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
gPauseStoneTowerTitleENGTex, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
};
s16 sDungeonMapFloorIconPosY[] = { 67, 81, 95, 109, 123 };
@ -97,30 +97,30 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
static s16 sStrayFairyIconAlpha = 255;
static f32 sStrayFairyIconScale = 100.0f;
static TexturePtr sStrayFairyIconTextures[][4] = {
// DUNGEON_INDEX_WOODFALL_TEMPLE
// DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
{ gStrayFairyWoodfallIconTex, gDungeonStrayFairyWoodfallIconTex, gStrayFairyWoodfallIconTex,
gDungeonStrayFairyWoodfallIconTex },
// DUNGEON_INDEX_SNOWHEAD_TEMPLE
// DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
{ gStrayFairySnowheadIconTex, gDungeonStrayFairySnowheadIconTex, gStrayFairySnowheadIconTex,
gDungeonStrayFairySnowheadIconTex },
// DUNGEON_INDEX_GREAT_BAY_TEMPLE
// DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
{ gStrayFairyGreatBayIconTex, gDungeonStrayFairyGreatBayIconTex, gStrayFairyGreatBayIconTex,
gDungeonStrayFairyGreatBayIconTex },
// DUNGEON_INDEX_STONE_TOWER_TEMPLE
// DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
{ gStrayFairyStoneTowerIconTex, gDungeonStrayFairyStoneTowerIconTex, gStrayFairyStoneTowerIconTex,
gDungeonStrayFairyStoneTowerIconTex },
};
static u8 sStrayFairyIconPrimColors[][3] = {
{ 255, 110, 160 }, // DUNGEON_INDEX_WOODFALL_TEMPLE
{ 90, 255, 100 }, // DUNGEON_INDEX_SNOWHEAD_TEMPLE
{ 120, 255, 255 }, // DUNGEON_INDEX_GREAT_BAY_TEMPLE
{ 245, 245, 90 }, // DUNGEON_INDEX_STONE_TOWER_TEMPLE
{ 255, 110, 160 }, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
{ 90, 255, 100 }, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
{ 120, 255, 255 }, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
{ 245, 245, 90 }, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
};
static u8 sStrayFairyIconEnvColors[][3] = {
{ 255, 255, 255 }, // DUNGEON_INDEX_WOODFALL_TEMPLE
{ 255, 255, 255 }, // DUNGEON_INDEX_SNOWHEAD_TEMPLE
{ 255, 255, 255 }, // DUNGEON_INDEX_GREAT_BAY_TEMPLE
{ 225, 170, 0 }, // DUNGEON_INDEX_STONE_TOWER_TEMPLE
{ 255, 255, 255 }, // DUNGEON_SCENE_INDEX_WOODFALL_TEMPLE
{ 255, 255, 255 }, // DUNGEON_SCENE_INDEX_SNOWHEAD_TEMPLE
{ 255, 255, 255 }, // DUNGEON_SCENE_INDEX_GREAT_BAY_TEMPLE
{ 225, 170, 0 }, // DUNGEON_SCENE_INDEX_STONE_TOWER_TEMPLE
};
static s32 sStrayFairyIconRectS[] = {
1 << 10, // mirror texture horizontally
@ -159,8 +159,8 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA, G_CC_MODULATEIA);
// QUAD_MAP_PAGE_DUNGEON_TITLE
POLY_OPA_DISP =
Gfx_DrawTexQuadIA8(POLY_OPA_DISP, sDungeonTitleTextures[((void)0, gSaveContext.dungeonIndex)], 128, 16, 0);
POLY_OPA_DISP = Gfx_DrawTexQuadIA8(
POLY_OPA_DISP, sDungeonTitleTextures[((void)0, gSaveContext.dungeonSceneSharedIndex)], 128, 16, 0);
gDPPipeSync(POLY_OPA_DISP++);
@ -196,13 +196,15 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE,
0);
gDPSetPrimColor(
POLY_OPA_DISP++, 0, 0, sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonIndex)][0],
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonIndex)][1],
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonIndex)][2], sStrayFairyIconAlpha);
gDPSetEnvColor(POLY_OPA_DISP++, sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonIndex)][0],
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonIndex)][1],
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonIndex)][2], 0);
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0,
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonSceneSharedIndex)][0],
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonSceneSharedIndex)][1],
sStrayFairyIconPrimColors[((void)0, gSaveContext.dungeonSceneSharedIndex)][2],
sStrayFairyIconAlpha);
gDPSetEnvColor(POLY_OPA_DISP++,
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonSceneSharedIndex)][0],
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonSceneSharedIndex)][1],
sStrayFairyIconEnvColors[((void)0, gSaveContext.dungeonSceneSharedIndex)][2], 0);
scale = sStrayFairyIconScale / 100.0f;
@ -246,7 +248,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
gDPLoadTextureBlock(
POLY_OPA_DISP++,
sStrayFairyIconTextures[((void)0, gSaveContext.dungeonIndex)][sStrayFairyIconIndex],
sStrayFairyIconTextures[((void)0, gSaveContext.dungeonSceneSharedIndex)][sStrayFairyIconIndex],
G_IM_FMT_RGBA, G_IM_SIZ_32b, 32, 24, 0, G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5,
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
gSPTextureRectangle(POLY_OPA_DISP++, 54 << 2, 140 << 2, 86 << 2, 164 << 2, G_TX_RENDERTILE,
@ -256,7 +258,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
Gfx_SetupDL42_Opa(play->state.gfxCtx);
}
}
} else if (CHECK_DUNGEON_ITEM(i, gSaveContext.dungeonIndex)) {
} else if (CHECK_DUNGEON_ITEM(i, gSaveContext.dungeonSceneSharedIndex)) {
gDPLoadTextureBlock(POLY_OPA_DISP++, sDungeonItemTextures[i], G_IM_FMT_RGBA, G_IM_SIZ_32b, 24, 24, 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);
@ -268,7 +270,7 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
}
}
func_80108AF8(play);
MapDisp_DrawDungeonFloorSelect(play);
if ((pauseCtx->pageIndex == PAUSE_MAP) && (pauseCtx->mainState == PAUSE_MAIN_STATE_IDLE)) {
// If (pauseCtx->state == PAUSE_STATE_MAIN), then the other conditions are redundant and always return
@ -283,12 +285,13 @@ void KaleidoScope_DrawDungeonMap(PlayState* play) {
// Draw Player's face next to the dungeon floor icon currently in.
POLY_OPA_DISP =
Gfx_DrawTexRectRGBA16(POLY_OPA_DISP, gQuestIconLinkHumanFaceTex, 16, 16, 62,
sDungeonMapFloorIconPosY[R_REVERSE_FLOOR_INDEX], 16, 16, 1 << 10, 1 << 10);
sDungeonMapFloorIconPosY[R_PLAYER_FLOOR_REVERSE_INDEX], 16, 16, 1 << 10, 1 << 10);
if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.dungeonIndex)) {
POLY_OPA_DISP = Gfx_DrawTexRectRGBA16(POLY_OPA_DISP, gDungeonMapSkullTex, 16, 16, 108,
sDungeonMapFloorIconPosY[FLOOR_INDEX_MAX - func_80105318()], 16,
16, 1 << 10, 1 << 10);
// Draw skull face next to the dungeon floor icon the boss is located at.
if (CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.dungeonSceneSharedIndex)) {
POLY_OPA_DISP = Gfx_DrawTexRectRGBA16(
POLY_OPA_DISP, gDungeonMapSkullTex, 16, 16, 108,
sDungeonMapFloorIconPosY[FLOOR_INDEX_MAX - MapDisp_GetBossRoomStorey()], 16, 16, 1 << 10, 1 << 10);
}
gDPSetPrimColor(POLY_OPA_DISP++, 0, 0, 255, 255, 255, pauseCtx->alpha);
@ -320,8 +323,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
if (pauseCtx->cursorSpecialPos == PAUSE_CURSOR_PAGE_LEFT) {
KaleidoScope_MoveCursorFromSpecialPos(play);
pauseCtx->cursorXIndex[PAUSE_MAP] = 0;
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->unk_256;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256;
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem;
} else if (pauseCtx->cursorSpecialPos == 0) {
if (pauseCtx->cursorXIndex[PAUSE_MAP] == 0) {
pauseCtx->cursorXIndex[PAUSE_MAP] = 1;
@ -337,7 +340,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
KaleidoScope_MoveCursorToSpecialPos(play, PAUSE_CURSOR_PAGE_RIGHT);
break;
}
if (CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP], gSaveContext.dungeonIndex)) {
if (CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP],
gSaveContext.dungeonSceneSharedIndex)) {
break;
}
}
@ -349,11 +353,11 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
KaleidoScope_MoveCursorFromSpecialPos(play);
pauseCtx->cursorXIndex[PAUSE_MAP] = 1;
pauseCtx->cursorPoint[PAUSE_MAP] = DUNGEON_MAP;
if (!CHECK_DUNGEON_ITEM(DUNGEON_MAP, gSaveContext.dungeonIndex)) {
if (!CHECK_DUNGEON_ITEM(DUNGEON_MAP, gSaveContext.dungeonSceneSharedIndex)) {
pauseCtx->cursorPoint[PAUSE_MAP]--; // DUNGEON_COMPASS
if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.dungeonIndex)) {
if (!CHECK_DUNGEON_ITEM(DUNGEON_COMPASS, gSaveContext.dungeonSceneSharedIndex)) {
pauseCtx->cursorPoint[PAUSE_MAP]--; // DUNGEON_BOSS_KEY
if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.dungeonIndex)) {
if (!CHECK_DUNGEON_ITEM(DUNGEON_BOSS_KEY, gSaveContext.dungeonSceneSharedIndex)) {
pauseCtx->cursorSlot[PAUSE_MAP] = DUNGEON_STRAY_FAIRIES;
pauseCtx->cursorPoint[PAUSE_MAP] = DUNGEON_STRAY_FAIRIES;
}
@ -366,8 +370,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
KaleidoScope_MoveCursorToSpecialPos(play, PAUSE_CURSOR_PAGE_LEFT);
} else if (pauseCtx->cursorPoint[PAUSE_MAP] == DUNGEON_STRAY_FAIRIES) {
pauseCtx->cursorXIndex[PAUSE_MAP] = 0;
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->unk_256;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256;
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem;
} else {
while (true) {
pauseCtx->cursorPoint[PAUSE_MAP]--;
@ -376,7 +380,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
pauseCtx->cursorPoint[PAUSE_MAP] = DUNGEON_STRAY_FAIRIES;
break;
}
if (CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP], gSaveContext.dungeonIndex)) {
if (CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP],
gSaveContext.dungeonSceneSharedIndex)) {
break;
}
}
@ -385,9 +390,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
} else if ((pauseCtx->cursorSpecialPos == 0) && (pauseCtx->stickAdjY > 30)) {
if (pauseCtx->cursorPoint[PAUSE_MAP] >= DUNGEON_FLOOR_INDEX_4) {
for (i = pauseCtx->cursorPoint[PAUSE_MAP] - (DUNGEON_FLOOR_INDEX_4 + 1); i >= 0; i--) {
if ((gSaveContext.save.saveInfo.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 &
gBitFlags[i]) ||
func_801090B0(FLOOR_INDEX_MAX - i)) {
if (GET_DUNGEON_FLOOR_VISITED(((void)0, gSaveContext.dungeonSceneSharedIndex), i) ||
MapDisp_IsValidStorey(FLOOR_INDEX_MAX - i)) {
pauseCtx->cursorPoint[PAUSE_MAP] = i + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorShrinkRate = 4.0f;
break;
@ -395,8 +399,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
}
} else if (pauseCtx->cursorPoint[PAUSE_MAP] == DUNGEON_STRAY_FAIRIES) {
pauseCtx->cursorXIndex[PAUSE_MAP] = 0;
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->unk_256;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256;
pauseCtx->cursorSlot[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem;
} else {
pauseCtx->cursorSlot[PAUSE_MAP] = DUNGEON_STRAY_FAIRIES;
pauseCtx->cursorPoint[PAUSE_MAP] = DUNGEON_STRAY_FAIRIES;
@ -406,9 +410,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
(pauseCtx->cursorPoint[PAUSE_MAP] <= DUNGEON_FLOOR_INDEX_1)) {
for (i = pauseCtx->cursorPoint[PAUSE_MAP] - (DUNGEON_FLOOR_INDEX_4 - 1); i <= DUNGEON_FLOOR_INDEX_0;
i++) {
if ((gSaveContext.save.saveInfo.permanentSceneFlags[(void)0, gSaveContext.dungeonIndex].unk_14 &
gBitFlags[i]) ||
func_801090B0(FLOOR_INDEX_MAX - i)) {
if (GET_DUNGEON_FLOOR_VISITED(((void)0, gSaveContext.dungeonSceneSharedIndex), i) ||
MapDisp_IsValidStorey(FLOOR_INDEX_MAX - i)) {
pauseCtx->cursorPoint[PAUSE_MAP] = i + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorShrinkRate = 4.0f;
break;
@ -429,7 +432,8 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
KaleidoScope_MoveCursorToSpecialPos(play, PAUSE_CURSOR_PAGE_RIGHT);
break;
}
if (CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP], gSaveContext.dungeonIndex)) {
if (CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP],
gSaveContext.dungeonSceneSharedIndex)) {
break;
}
}
@ -448,7 +452,7 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
}
if ((pauseCtx->cursorXIndex[PAUSE_MAP] == 0) && (pauseCtx->cursorSpecialPos == 0)) {
pauseCtx->unk_256 = pauseCtx->cursorPoint[PAUSE_MAP];
pauseCtx->cursorMapDungeonItem = pauseCtx->cursorPoint[PAUSE_MAP];
}
if (pauseCtx->cursorSpecialPos == 0) {
@ -457,7 +461,7 @@ void KaleidoScope_UpdateDungeonCursor(PlayState* play) {
pauseCtx->itemDescriptionOn = true;
func_801514B0(play, 0x17AF, 1);
} else if (CHECK_BTN_ALL(CONTROLLER1(&play->state)->press.button, BTN_A) && (msgCtx->msgLength == 0) &&
CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP], gSaveContext.dungeonIndex)) {
CHECK_DUNGEON_ITEM(pauseCtx->cursorPoint[PAUSE_MAP], gSaveContext.dungeonSceneSharedIndex)) {
pauseCtx->itemDescriptionOn = true;
func_801514B0(play, 0x17AC + pauseCtx->cursorPoint[PAUSE_MAP], 1);
}

View File

@ -7,6 +7,7 @@
#include "z_kaleido_scope.h"
#include "sys_cmpdma.h"
#include "z64map.h"
#include "z64skybox.h"
#include "z64view.h"
@ -565,7 +566,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
KaleidoScope_DrawDungeonMap(play);
Gfx_SetupDL42_Opa(gfxCtx);
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
func_801091F0(play);
MapDisp_DrawDungeonMap(play);
} else {
KaleidoScope_DrawWorldMap(play);
}
@ -662,7 +663,7 @@ void KaleidoScope_DrawPages(PlayState* play, GraphicsContext* gfxCtx) {
gDPSetCombineMode(POLY_OPA_DISP++, G_CC_MODULATEIA_PRIM, G_CC_MODULATEIA_PRIM);
func_801091F0(play);
MapDisp_DrawDungeonMap(play);
} else {
Matrix_RotateYF(R_PAUSE_WORLD_MAP_YAW / 1000.0f, MTXMODE_NEW);
@ -2837,7 +2838,7 @@ void KaleidoScope_Update(PlayState* play) {
s16 stepA;
s16 stickAdjX = input->rel.stick_x;
func_80109428(play);
MapDisp_UpdateDungeonMap(play);
pauseCtx->stickAdjX = input->rel.stick_x;
pauseCtx->stickAdjY = input->rel.stick_y;
@ -2854,8 +2855,9 @@ void KaleidoScope_Update(PlayState* play) {
sUnpausedButtonStatus[EQUIP_SLOT_A] = gSaveContext.buttonStatus[EQUIP_SLOT_A];
pauseCtx->cursorXIndex[PAUSE_MAP] = 0;
pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256 = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorSlot[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem =
R_PLAYER_FLOOR_REVERSE_INDEX + DUNGEON_FLOOR_INDEX_4;
sPauseCursorLeftX = -175;
sPauseCursorRightX = 155;
@ -2878,12 +2880,12 @@ void KaleidoScope_Update(PlayState* play) {
CmpDma_LoadAllFiles(SEGMENT_ROM_START(icon_item_24_static_yar), pauseCtx->iconItem24Segment, size1);
pauseCtx->iconItemAltSegment = (void*)ALIGN16((uintptr_t)pauseCtx->iconItem24Segment + size1);
if (func_8010A0A4(play)) {
if (Map_CurRoomHasMapI(play)) {
size_t size = SEGMENT_ROM_SIZE(icon_item_dungeon_static);
DmaMgr_RequestSync(pauseCtx->iconItemAltSegment, SEGMENT_ROM_START(icon_item_dungeon_static), size);
iconItemLangSegment =
func_801068FC(play, (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size), size);
MapDisp_AllocDungeonMap(play, (void*)ALIGN16((uintptr_t)pauseCtx->iconItemAltSegment + size));
sInDungeonScene = true;
} else {
size_t size;
@ -3181,8 +3183,8 @@ void KaleidoScope_Update(PlayState* play) {
break;
case PAUSE_STATE_GAMEOVER_2:
pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorPoint[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorSlot[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorPoint[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + DUNGEON_FLOOR_INDEX_4;
sPauseCursorLeftX = -175;
sPauseCursorRightX = 155;
pauseCtx->roll = -434.0f;
@ -3431,8 +3433,9 @@ void KaleidoScope_Update(PlayState* play) {
sUnpausedButtonStatus[EQUIP_SLOT_A] = gSaveContext.buttonStatus[EQUIP_SLOT_A];
pauseCtx->cursorXIndex[PAUSE_MAP] = 0;
pauseCtx->cursorSlot[PAUSE_MAP] = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->unk_256 = R_REVERSE_FLOOR_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorSlot[PAUSE_MAP] = R_PLAYER_FLOOR_REVERSE_INDEX + DUNGEON_FLOOR_INDEX_4;
pauseCtx->cursorPoint[PAUSE_MAP] = pauseCtx->cursorMapDungeonItem =
R_PLAYER_FLOOR_REVERSE_INDEX + DUNGEON_FLOOR_INDEX_4;
sPauseCursorLeftX = -175;
sPauseCursorRightX = 155;

View File

@ -545,7 +545,8 @@
0x801BE960 : "z_lib",
0x801BE990 : "z_lifemeter",
0x801BEAB0 : "z_lights",
0x801BEAD0 : "z_map_disp", # z_map_data is somewhere in here
0x801BEAD0 : "z_map_disp",
0x801BED40 : "z_map_data",
0x801BF550 : "z_map_exp",
0x801BF5C0 : "z_msgevent",
0x801BF6C0 : "z_parameter",

View File

@ -1901,113 +1901,113 @@
0x80102DBC:("ZeldaArena_Init",),
0x80102DEC:("ZeldaArena_Cleanup",),
0x80102E10:("ZeldaArena_IsInitialized",),
0x80102E40:("func_80102E40",),
0x80102E90:("func_80102E90",),
0x80102EA4:("func_80102EA4",),
0x80102E40:("MapDisp_GetMapITexture",),
0x80102E90:("MapDisp_InitRoomStoreyRecord",),
0x80102EA4:("MapDisp_DestroyRoomStoreyRecord",),
0x80102EB4:("func_80102EB4",),
0x80102ED0:("func_80102ED0",),
0x80102EF0:("func_80102EF0",),
0x80102F9C:("func_80102F9C",),
0x80103090:("func_80103090",),
0x801030B4:("func_801030B4",),
0x801030F4:("func_801030F4",),
0x801031D0:("func_801031D0",),
0x801039EC:("func_801039EC",),
0x80103A10:("func_80103A10",),
0x80103A58:("func_80103A58",),
0x8010439C:("func_8010439C",),
0x801045AC:("func_801045AC",),
0x80104AE8:("func_80104AE8",),
0x80104C80:("func_80104C80",),
0x80104CF4:("func_80104CF4",),
0x80104F34:("func_80104F34",),
0x80105294:("func_80105294",),
0x80105318:("func_80105318",),
0x80105328:("func_80105328",),
0x8010534C:("func_8010534C",),
0x8010549C:("func_8010549C",),
0x8010565C:("func_8010565C",),
0x80105818:("func_80105818",),
0x80105A40:("func_80105A40",),
0x80105B34:("func_80105B34",),
0x80105C40:("func_80105C40",),
0x80105FE0:("func_80105FE0",),
0x80106408:("func_80106408",),
0x80106450:("func_80106450",),
0x801064CC:("func_801064CC",),
0x80106530:("func_80106530",),
0x8010657C:("func_8010657C",),
0x80106644:("func_80106644",),
0x8010683C:("func_8010683C",),
0x801068B4:("func_801068B4",),
0x801068D8:("func_801068D8",),
0x801068FC:("func_801068FC",),
0x80106BEC:("func_80106BEC",),
0x80106D08:("func_80106D08",),
0x80106D5C:("func_80106D5C",),
0x80107B78:("func_80107B78",),
0x80108124:("func_80108124",),
0x80108558:("func_80108558",),
0x80108A10:("func_80108A10",),
0x80108A64:("func_80108A64",),
0x80108AF8:("func_80108AF8",),
0x801090B0:("func_801090B0",),
0x80109124:("func_80109124",),
0x801091F0:("func_801091F0",),
0x80109428:("func_80109428",),
0x801094A0:("func_801094A0",),
0x80102EF0:("MapDisp_CurRoomHasMapI",),
0x80102F9C:("MapDisp_GetStoreyY",),
0x80103090:("MapDisp_GetMapTexDim",),
0x801030B4:("MapDisp_GetMapScale",),
0x801030F4:("MapDisp_GetMapOffset",),
0x801031D0:("MapDisp_DrawMinimapRoom",),
0x801039EC:("MapDisp_IsDataRotated",),
0x80103A10:("MapDisp_CanDrawDoors",),
0x80103A58:("MapDisp_Minimap_DrawActorIcon",),
0x8010439C:("MapDisp_Minimap_DrawActors",),
0x801045AC:("MapDisp_Minimap_DrawDoorActor",),
0x80104AE8:("MapDisp_Minimap_DrawDoorActors",),
0x80104C80:("MapDisp_AwaitGameplayDangeonKeep",),
0x80104CF4:("MapDisp_Init",),
0x80104F34:("MapDisp_InitSceneFloorData",),
0x80105294:("MapDisp_GetBossIconY",),
0x80105318:("MapDisp_GetBossRoomStorey",),
0x80105328:("MapDisp_IsBossDoor",),
0x8010534C:("MapDisp_InitBossRoomStorey",),
0x8010549C:("MapDisp_InitMapData",),
0x8010565C:("MapDisp_InitChestData",),
0x80105818:("MapDisp_InitTransitionActorData",),
0x80105A40:("MapDisp_Destroy",),
0x80105B34:("MapDisp_Update",),
0x80105C40:("MapDisp_SwapRooms",),
0x80105FE0:("MapDisp_Minimap_DrawRedCompassIcon",),
0x80106408:("MapDisp_IsLocationRomaniRanchAltScene",),
0x80106450:("MapDisp_CanDisplayMinimap",),
0x801064CC:("MapDisp_IsLocationMinimapBlocked",),
0x80106530:("MapDisp_IsMinimapToggleBlocked",),
0x8010657C:("MapDisp_AreRoomsSameStorey",),
0x80106644:("MapDisp_DrawMinimap",),
0x8010683C:("MapDisp_ResetMapI",),
0x801068B4:("MapDisp_InitMapI",),
0x801068D8:("MapDisp_DestroyMapI",),
0x801068FC:("MapDisp_AllocDungeonMap",),
0x80106BEC:("MapDisp_IsOnStorey",),
0x80106D08:("MapDisp_ConvertBossSceneToDungeonScene",),
0x80106D5C:("MapDisp_DrawRooms",),
0x80107B78:("MapDisp_DrawChests",),
0x80108124:("MapDisp_DrawRoomExits",),
0x80108558:("MapDisp_DrawBossIcon",),
0x80108A10:("MapDisp_GetDungeonMapFloorTexture",),
0x80108A64:("MapDisp_SkipDrawDungeonMap",),
0x80108AF8:("MapDisp_DrawDungeonFloorSelect",),
0x801090B0:("MapDisp_IsValidStorey",),
0x80109124:("MapDisp_GetPlayerStorey",),
0x801091F0:("MapDisp_DrawDungeonMap",),
0x80109428:("MapDisp_UpdateDungeonMap",),
0x801094A0:("MapData_GetMapColor",),
0x801094C8:("func_801094C8",),
0x801094F8:("func_801094F8",),
0x80109528:("func_80109528",),
0x8010954C:("func_8010954C",),
0x801094F8:("MapData_GetMapTexOffsetGameplayDangeonKeep",),
0x80109528:("MapData_GetMapDrawTypeGameplayDangeonKeep",),
0x8010954C:("MapData_GetMapColorIndexGameplayDangeonKeep",),
0x8010956C:("func_8010956C",),
0x8010958C:("func_8010958C",),
0x801095AC:("func_801095AC",),
0x801095DC:("func_801095DC",),
0x8010960C:("func_8010960C",),
0x80109630:("func_80109630",),
0x80109650:("func_80109650",),
0x80109670:("func_80109670",),
0x801096D4:("func_801096D4",),
0x80109714:("func_80109714",),
0x80109754:("func_80109754",),
0x801097C8:("func_801097C8",),
0x8010983C:("func_8010983C",),
0x801098A0:("func_801098A0",),
0x80109908:("func_80109908",),
0x8010958C:("MapData_GetMapTexGameplayDangeonKeep",),
0x801095AC:("MapData_GetMapTexGameplayDangeonKeepDim",),
0x801095DC:("MapData_GetMapTexGameplayDangeonKeepOffset",),
0x8010960C:("MapData_GetMapGrandDrawType",),
0x80109630:("MapData_GetMapGrandColorIndex",),
0x80109650:("MapData_GetMapGrandScale",),
0x80109670:("MapData_MapGrandTexSizeTest",),
0x801096D4:("MapData_GetSizeOfMapGrandTex",),
0x80109714:("MapData_MID_GetType",),
0x80109754:("MapData_GetMapTexDim",),
0x801097C8:("MapData_GetMapTexOffset",),
0x8010983C:("MapData_GetMapScale",),
0x801098A0:("MapData_GetDrawType",),
0x80109908:("MapData_GetMapColorIndex",),
0x80109964:("func_80109964",),
0x8010997C:("func_8010997C",),
0x801099AC:("func_801099AC",),
0x801099DC:("func_801099DC",),
0x80109A00:("func_80109A00",),
0x80109A20:("func_80109A20",),
0x80109A40:("func_80109A40",),
0x80109A98:("func_80109A98",),
0x80109AD8:("func_80109AD8",),
0x8010997C:("MapData_GetMapITexDim",),
0x801099AC:("MapData_GetMapITexOffset",),
0x801099DC:("MapData_GetMapIDrawType",),
0x80109A00:("MapData_GetMapIColorIndex",),
0x80109A20:("MapData_GetMapIScale",),
0x80109A40:("MapData_MapITexSizeTest",),
0x80109A98:("MapDisp_GetSizeOfMapITex",),
0x80109AD8:("MapData_GetMapIId",),
0x80109B38:("func_80109B38",),
0x80109BA0:("func_80109BA0",),
0x80109BF4:("func_80109BF4",),
0x80109BA0:("MapData_GetMapCompactId",),
0x80109BF4:("MapData_CPID_GetType",),
0x80109C38:("func_80109C38",),
0x80109CBC:("func_80109CBC",),
0x80109D40:("func_80109D40",),
0x80109DD8:("func_80109DD8",),
0x80109E70:("func_80109E70",),
0x80109EF8:("func_80109EF8",),
0x80109F78:("func_80109F78",),
0x8010A000:("Map_GetDungeonOrBossAreaIndex",),
0x8010A074:("Map_IsInDungeonOrBossAreaArea",),
0x8010A0A4:("func_8010A0A4",),
0x8010A0F0:("Map_GetDungeonAreaIndex",),
0x8010A164:("Map_IsInDungeonArea",),
0x8010A194:("Map_GetBossAreaIndex",),
0x8010A208:("Map_IsInBossArea",),
0x8010A238:("func_8010A238",),
0x8010A2AC:("func_8010A2AC",),
0x8010A2DC:("Minimap_SavePlayerRoomInitInfo",),
0x80109CBC:("MapData_CPID_GetSizeOfMapTex",),
0x80109D40:("MapData_CPID_GetTexDim",),
0x80109DD8:("MapData_CPID_GetTexOffset",),
0x80109E70:("MapData_CPID_GetDrawType",),
0x80109EF8:("MapData_CPID_GetMapColorIndex",),
0x80109F78:("MapData_CPID_GetMapScale",),
0x8010A000:("Map_GetDungeonSceneIndex",),
0x8010A074:("Map_IsInDungeonOrBossSceneArea",),
0x8010A0A4:("Map_CurRoomHasMapI",),
0x8010A0F0:("Map_GetDungeonSceneIndexForDungeon",),
0x8010A164:("Map_IsInDungeonScene",),
0x8010A194:("Map_GetDungeonSceneIndexForBoss",),
0x8010A208:("Map_IsInBossScene",),
0x8010A238:("Map_GetMapIndexForOverworld",),
0x8010A2AC:("Map_IsInOverworldSceneWithMapIndex",),
0x8010A2DC:("Map_SetAreaEntrypoint",),
0x8010A33C:("Map_InitRoomData",),
0x8010A410:("Map_Destroy",),
0x8010A430:("Map_Init",),
0x8010A54C:("Minimap_Draw",),
0x8010A54C:("Map_DrawMinimap",),
0x8010A580:("Map_Update",),
0x8010A760:("MsgEvent_CheckWeekEventReg",),
0x8010A7CC:("MsgEvent_CheckGoron",),
@ -2434,8 +2434,8 @@
0x8012FC18:("Scene_CommandObjectList",),
0x8012FDA4:("Scene_CommandLightList",),
0x8012FE2C:("Scene_CommandPathList",),
0x8012FE5C:("Scene_CommandTransiActorList",),
0x8012FEBC:("Door_InitContext",),
0x8012FE5C:("Scene_CommandTransitionActorList",),
0x8012FEBC:("Scene_ResetTransitionActorList",),
0x8012FECC:("Scene_CommandEnvLightSettings",),
0x8012FF10:("Scene_LoadAreaTextures",),
0x8012FF8C:("Scene_CommandSkyboxSettings",),
@ -2449,9 +2449,9 @@
0x80130454:("Scene_CommandAltHeaderList",),
0x801304CC:("Scene_CommandCutsceneScriptList",),
0x80130500:("Scene_CommandCutsceneList",),
0x80130540:("Scene_CommandMiniMap",),
0x80130540:("Scene_CommandMapData",),
0x80130578:("Scene_Command1D",),
0x80130588:("Scene_CommandMiniMapCompassInfo",),
0x80130588:("Scene_CommandMapDataChests",),
0x801305B0:("Scene_CommandSetRegionVisitedFlag",),
0x80130674:("Scene_CommandAnimatedMaterials",),
0x801306A4:("Scene_SetExitFade",),

View File

@ -979,52 +979,34 @@
0x801BEA70:("sHeartDDTextures","UNK_TYPE1","",0x1),
0x801BEAB0:("sPosBindFuncs","LightsPosBindFunc","[3]",0xc),
0x801BEABC:("sDirBindFuncs","LightsBindFunc","[3]",0xc),
0x801BEAD4:("D_801BEAD4","UNK_TYPE4","",0x4),
0x801BEAD8:("D_801BEAD8","UNK_TYPE4","",0x4),
0x801BEAE0:("D_801BEAE0","UNK_TYPE1","",0x1),
0x801BEAF4:("D_801BEAF4","UNK_TYPE4","",0x4),
0x801BEAF8:("D_801BEAF8","UNK_TYPE4","",0x4),
0x801BEB04:("D_801BEB04","UNK_TYPE4","",0x4),
0x801BEB08:("D_801BEB08","UNK_TYPE4","",0x4),
0x801BEB14:("D_801BEB14","UNK_TYPE4","",0x4),
0x801BEB18:("D_801BEB18","UNK_TYPE4","",0x4),
0x801BEB24:("D_801BEB24","UNK_TYPE4","",0x4),
0x801BEB28:("D_801BEB28","UNK_TYPE4","",0x4),
0x801BEB38:("D_801BEB38","UNK_TYPE1","",0x1),
0x801BEBB8:("D_801BEBB8","UNK_TYPE4","",0x4),
0x801BEBD8:("D_801BEBD8","UNK_TYPE4","",0x4),
0x801BEBF8:("D_801BEBF8","UNK_TYPE2","",0x2),
0x801BEBFA:("D_801BEBFA","UNK_TYPE2","",0x2),
0x801BEBFC:("D_801BEBFC","UNK_TYPE2","",0x2),
0x801BEC10:("D_801BEC10","UNK_TYPE2","",0x2),
0x801BEC14:("D_801BEC14","UNK_PTR","",0x4),
0x801BEC1C:("D_801BEC1C","UNK_TYPE4","",0x4),
0x801BEC20:("D_801BEC20","UNK_TYPE4","",0x4),
0x801BEC24:("D_801BEC24","UNK_TYPE1","",0x1),
0x801BEC2C:("D_801BEC2C","UNK_TYPE1","",0x1),
0x801BEC5C:("D_801BEC5C","UNK_TYPE2","",0x2),
0x801BEC5E:("D_801BEC5E","UNK_TYPE2","",0x2),
0x801BEC70:("D_801BEC70","UNK_TYPE4","",0x4),
0x801BEC84:("D_801BEC84","UNK_TYPE1","",0x1),
0x801BECA4:("D_801BECA4","UNK_TYPE1","",0x1),
0x801BECC4:("D_801BECC4","UNK_TYPE1","",0x1),
0x801BECE4:("D_801BECE4","UNK_TYPE1","",0x1),
0x801BED00:("D_801BED00","UNK_TYPE1","",0x1),
0x801BED24:("D_801BED24","UNK_TYPE2","",0x2),
0x801BED3C:("D_801BED3C","UNK_TYPE1","",0x1),
0x801BED40:("D_801BED40","UNK_TYPE1","",0x1),
0x801BED4C:("D_801BED4C","UNK_TYPE1","",0x1),
0x801BED54:("D_801BED54","UNK_TYPE1","",0x1),
0x801BED55:("D_801BED55","UNK_TYPE1","",0x1),
0x801BED56:("D_801BED56","UNK_TYPE1","",0x1),
0x801BED88:("D_801BED88","UNK_TYPE1","",0x1),
0x801BEFC8:("D_801BEFC8","UNK_TYPE1","",0x1),
0x801BF15C:("D_801BF15C","UNK_TYPE1","",0x1),
0x801BF170:("D_801BF170","UNK_TYPE1","",0x1),
0x801BF176:("D_801BF176","UNK_TYPE1","",0x1),
0x801BF177:("D_801BF177","UNK_TYPE1","",0x1),
0x801BF178:("D_801BF178","UNK_TYPE1","",0x1),
0x801BF3B4:("D_801BF3B4","UNK_TYPE1","",0x1),
0x801BEAD0:("D_801BEAD0","s32","[4]",0x10),
0x801BEAE0:("D_801BEAE0","s32","[4]",0x10),
0x801BEAF0:("D_801BEAF0","u32","[4]",0x10),
0x801BEB00:("D_801BEB00","s32","[4]",0x10),
0x801BEB10:("D_801BEB10","u32","[4]",0x10),
0x801BEB20:("D_801BEB20","u32","[4]",0x10),
0x801BEB38:("sWhiteSquareTex","UNK_TYPE1","",0x1),
0x801BEBB8:("sMapDisp","MapDisp","",0x5C),
0x801BEC14:("sMapDataScene","MinimapList","",0x8),
0x801BEC1C:("sSceneNumRooms","s32","",0x4),
0x801BEC20:("sNumChests","s32","",0x4),
0x801BEC24:("D_801BEC24","UNK_TYPE1","",0x8),
0x801BEC2C:("D_801BEC2C","Color_RGBA8","[12]",0x30),
0x801BEC5C:("sCustomLowestFloor","MapCustomLowestFloor","[5]",0x14),
0x801BEC70:("D_801BEC70","UNK_TYPE4","",0x14),
0x801BEC84:("D_801BEC84","u16","[16]",0x10),
0x801BECA4:("D_801BECA4","u16","[16]",0x10),
0x801BECC4:("D_801BECC4","u16","[16]",0x10),
0x801BECE4:("D_801BECE4","UNK_TYPE1","",0x1C),
0x801BED00:("D_801BED00","UNK_TYPE1","",0x24),
0x801BED24:("D_801BED24","UNK_TYPE2","",0x18),
0x801BED40:("sMapColorTable","Color_RGBA8","",0xC),
0x801BED4C:("sGameplayDangeonKeepInfo","MapSpriteInfo2","",0x3C),
0x801BED88:("sMapGrandStaticInfo","MapSpriteInfo","",0x3D4),
0x801BF15C:("D_801BF15C","s32","",0x14),
0x801BF170:("sMapIStaticInfo","MapSpriteInfo","",0x244),
0x801BF3B4:("sMapIForGameplayDangeonKeep","s32","",0x14),
0x801BF3C8:("sMapIForMapGrand","s32","",0x188),
0x801BF550:("D_801BF550","UNK_TYPE2","",0x2),
0x801BF554:("D_801BF554","UNK_TYPE2","",0x2),
0x801BF558:("D_801BF558","UNK_TYPE2","",0x2),
@ -3908,14 +3890,10 @@
0x801F4F6A:("D_801F4F6A","UNK_TYPE1","",0x1),
0x801F4F70:("sLightsBuffer","LightsBuffer","",0x188),
0x801F5100:("sZeldaArena","Arena","",0x24),
0x801F5130:("D_801F5130","UNK_TYPE1","",0x1),
0x801F5270:("D_801F5270","UNK_TYPE1","",0x1),
0x801F528E:("D_801F528E","UNK_TYPE1","",0x1),
0x801F53B0:("D_801F53B0","UNK_TYPE1","",0x1),
0x801F56B0:("D_801F56B0","UNK_TYPE1","",0x1),
0x801F5730:("D_801F5730","UNK_TYPE1","",0x1),
0x801F57B4:("D_801F57B4","UNK_TYPE1","",0x1),
0x801F5834:("D_801F5834","UNK_TYPE1","",0x1),
0x801F5130:("sMapDataRooms","UNK_TYPE1","",0x1),
0x801F5270:("sMapDataChests","UNK_TYPE1","",0x140),
0x801F53B0:("sTransitionActors","UNK_TYPE1","",0x1),
0x801F56B0:("sPauseDungeonMap","PauseDungeonMap","",0x188),
0x801F5840:("gNMIBuffer","s32*","",0x4),
0x801F5850:("sPostmanTimerInput","UNK_TYPE1","",0x1),
0x801F58B0:("D_801F58B0","struct_801F58B0","[3][3]",0xFC),

View File

@ -13,8 +13,8 @@ simpleReplace = {
# if the occurence is the whole word
# for example, if there is a space before and an open parenthesis after,
# like for a function call: ` func_8002E4B4(`
#
# Custom behaviour can be enabled by using a tuple as the value (see
#
# Custom behaviour can be enabled by using a tuple as the value (see
# explanation in replace_single below)
wordReplace = {
# Functions
@ -936,17 +936,20 @@ wordReplace = {
"func_800E8EA0": "Actor_ContinueText",
"func_800B90F4": "Actor_DeactivateLens",
"func_8010A000": "Map_GetDungeonOrBossAreaIndex",
"func_8010A074": "Map_IsInDungeonOrBossArea",
"func_8010A0F0": "Map_GetDungeonAreaIndex",
"func_8010A164": "Map_IsInDungeonArea",
"func_8010A194": "Map_GetBossAreaIndex",
"func_8010A208": "Map_IsInBossArea",
"func_8010A000": "Map_GetDungeonSceneIndex",
"func_8010A074": "Map_IsInDungeonOrBossScene",
"func_8010A0F0": "Map_GetDungeonSceneIndexForDungeon",
"func_8010A164": "Map_IsInDungeonScene",
"Map_IsInDungeonArea": "Map_IsInDungeonScene",
"func_8010A194": "Map_GetDungeonSceneIndexForBoss",
"func_8010A208": "Map_IsInBossScene",
"Map_IsInBossArea": "Map_IsInBossScene",
"func_8010A2DC": "Minimap_SavePlayerRoomInitInfo",
"func_8010A33C": "Map_InitRoomData",
"func_8010A410": "Map_Destroy",
"func_8010A430": "Map_Init",
"func_8010A54C": "Minimap_Draw",
"func_8010A54C": "Map_DrawMinimap",
"Minimap_Draw": "Map_DrawMinimap",
"func_8010A580": "Map_Update",
"Entrance_CreateIndex": "Entrance_Create",
@ -1047,7 +1050,7 @@ wordReplace = {
"func_8012CA38": "Gfx_SetupDL59_Opa",
"Game_SetFramerateDivisor": "GameState_SetFramerateDivisor",
"DmaMgr_SendRequestImpl": "DmaMgr_RequestAsync",
"DmaMgr_SendRequest0": "DmaMgr_RequestSync",
@ -1300,6 +1303,7 @@ wordReplace = {
"play->actorCtx.targetCtx.unk4C": "play->actorCtx.targetCtx.lockOnIndex",
"play->actorCtx.targetCtx.unk50": "play->actorCtx.targetCtx.lockOnTriangleSets",
"play->actorCtx.targetCtx.unk8C": "play->actorCtx.targetCtx.nextTarget",
"play->doorCtx.transitionActorList": "play->transitionActors.list",
"play->nextEntranceIndex": "play->nextEntrance",
"play->sceneNum": "play->sceneId",
"play->pauseCtx.unk_1F0": "play->pauseCtx.bombersNotebookOpen",

View File

@ -1415,113 +1415,113 @@ asm/non_matchings/code/z_malloc/ZeldaArena_Check.s,ZeldaArena_Check,0x80102D98,0
asm/non_matchings/code/z_malloc/ZeldaArena_Init.s,ZeldaArena_Init,0x80102DBC,0xC
asm/non_matchings/code/z_malloc/ZeldaArena_Cleanup.s,ZeldaArena_Cleanup,0x80102DEC,0x9
asm/non_matchings/code/z_malloc/ZeldaArena_IsInitialized.s,ZeldaArena_IsInitialized,0x80102E10,0xC
asm/non_matchings/code/z_map_disp/func_80102E40.s,func_80102E40,0x80102E40,0x14
asm/non_matchings/code/z_map_disp/func_80102E90.s,func_80102E90,0x80102E90,0x5
asm/non_matchings/code/z_map_disp/func_80102EA4.s,func_80102EA4,0x80102EA4,0x4
asm/non_matchings/code/z_map_disp/MapDisp_GetMapITexture.s,MapDisp_GetMapITexture,0x80102E40,0x14
asm/non_matchings/code/z_map_disp/MapDisp_InitRoomStoreyRecord.s,MapDisp_InitRoomStoreyRecord,0x80102E90,0x5
asm/non_matchings/code/z_map_disp/MapDisp_DestroyRoomStoreyRecord.s,MapDisp_DestroyRoomStoreyRecord,0x80102EA4,0x4
asm/non_matchings/code/z_map_disp/func_80102EB4.s,func_80102EB4,0x80102EB4,0x7
asm/non_matchings/code/z_map_disp/func_80102ED0.s,func_80102ED0,0x80102ED0,0x8
asm/non_matchings/code/z_map_disp/func_80102EF0.s,func_80102EF0,0x80102EF0,0x2B
asm/non_matchings/code/z_map_disp/func_80102F9C.s,func_80102F9C,0x80102F9C,0x3D
asm/non_matchings/code/z_map_disp/func_80103090.s,func_80103090,0x80103090,0x9
asm/non_matchings/code/z_map_disp/func_801030B4.s,func_801030B4,0x801030B4,0x10
asm/non_matchings/code/z_map_disp/func_801030F4.s,func_801030F4,0x801030F4,0x37
asm/non_matchings/code/z_map_disp/func_801031D0.s,func_801031D0,0x801031D0,0x207
asm/non_matchings/code/z_map_disp/func_801039EC.s,func_801039EC,0x801039EC,0x9
asm/non_matchings/code/z_map_disp/func_80103A10.s,func_80103A10,0x80103A10,0x12
asm/non_matchings/code/z_map_disp/func_80103A58.s,func_80103A58,0x80103A58,0x251
asm/non_matchings/code/z_map_disp/func_8010439C.s,func_8010439C,0x8010439C,0x84
asm/non_matchings/code/z_map_disp/func_801045AC.s,func_801045AC,0x801045AC,0x14F
asm/non_matchings/code/z_map_disp/func_80104AE8.s,func_80104AE8,0x80104AE8,0x66
asm/non_matchings/code/z_map_disp/func_80104C80.s,func_80104C80,0x80104C80,0x1D
asm/non_matchings/code/z_map_disp/func_80104CF4.s,func_80104CF4,0x80104CF4,0x90
asm/non_matchings/code/z_map_disp/func_80104F34.s,func_80104F34,0x80104F34,0xD8
asm/non_matchings/code/z_map_disp/func_80105294.s,func_80105294,0x80105294,0x21
asm/non_matchings/code/z_map_disp/func_80105318.s,func_80105318,0x80105318,0x4
asm/non_matchings/code/z_map_disp/func_80105328.s,func_80105328,0x80105328,0x9
asm/non_matchings/code/z_map_disp/func_8010534C.s,func_8010534C,0x8010534C,0x54
asm/non_matchings/code/z_map_disp/func_8010549C.s,func_8010549C,0x8010549C,0x70
asm/non_matchings/code/z_map_disp/func_8010565C.s,func_8010565C,0x8010565C,0x6F
asm/non_matchings/code/z_map_disp/func_80105818.s,func_80105818,0x80105818,0x8A
asm/non_matchings/code/z_map_disp/func_80105A40.s,func_80105A40,0x80105A40,0x3D
asm/non_matchings/code/z_map_disp/func_80105B34.s,func_80105B34,0x80105B34,0x43
asm/non_matchings/code/z_map_disp/func_80105C40.s,func_80105C40,0x80105C40,0xE8
asm/non_matchings/code/z_map_disp/func_80105FE0.s,func_80105FE0,0x80105FE0,0x10A
asm/non_matchings/code/z_map_disp/func_80106408.s,func_80106408,0x80106408,0x12
asm/non_matchings/code/z_map_disp/func_80106450.s,func_80106450,0x80106450,0x1F
asm/non_matchings/code/z_map_disp/func_801064CC.s,func_801064CC,0x801064CC,0x19
asm/non_matchings/code/z_map_disp/func_80106530.s,func_80106530,0x80106530,0x13
asm/non_matchings/code/z_map_disp/func_8010657C.s,func_8010657C,0x8010657C,0x32
asm/non_matchings/code/z_map_disp/func_80106644.s,func_80106644,0x80106644,0x7E
asm/non_matchings/code/z_map_disp/func_8010683C.s,func_8010683C,0x8010683C,0x1E
asm/non_matchings/code/z_map_disp/func_801068B4.s,func_801068B4,0x801068B4,0x9
asm/non_matchings/code/z_map_disp/func_801068D8.s,func_801068D8,0x801068D8,0x9
asm/non_matchings/code/z_map_disp/func_801068FC.s,func_801068FC,0x801068FC,0xBC
asm/non_matchings/code/z_map_disp/func_80106BEC.s,func_80106BEC,0x80106BEC,0x47
asm/non_matchings/code/z_map_disp/func_80106D08.s,func_80106D08,0x80106D08,0x15
asm/non_matchings/code/z_map_disp/func_80106D5C.s,func_80106D5C,0x80106D5C,0x387
asm/non_matchings/code/z_map_disp/func_80107B78.s,func_80107B78,0x80107B78,0x16B
asm/non_matchings/code/z_map_disp/func_80108124.s,func_80108124,0x80108124,0x10D
asm/non_matchings/code/z_map_disp/func_80108558.s,func_80108558,0x80108558,0x12E
asm/non_matchings/code/z_map_disp/func_80108A10.s,func_80108A10,0x80108A10,0x15
asm/non_matchings/code/z_map_disp/func_80108A64.s,func_80108A64,0x80108A64,0x25
asm/non_matchings/code/z_map_disp/func_80108AF8.s,func_80108AF8,0x80108AF8,0x16E
asm/non_matchings/code/z_map_disp/func_801090B0.s,func_801090B0,0x801090B0,0x1D
asm/non_matchings/code/z_map_disp/func_80109124.s,func_80109124,0x80109124,0x33
asm/non_matchings/code/z_map_disp/func_801091F0.s,func_801091F0,0x801091F0,0x8E
asm/non_matchings/code/z_map_disp/func_80109428.s,func_80109428,0x80109428,0x1E
asm/non_matchings/code/z_map_data/func_801094A0.s,func_801094A0,0x801094A0,0xA
asm/non_matchings/code/z_map_disp/MapDisp_CurRoomHasMapI.s,MapDisp_CurRoomHasMapI,0x80102EF0,0x2B
asm/non_matchings/code/z_map_disp/MapDisp_GetStoreyY.s,MapDisp_GetStoreyY,0x80102F9C,0x3D
asm/non_matchings/code/z_map_disp/MapDisp_GetMapTexDim.s,MapDisp_GetMapTexDim,0x80103090,0x9
asm/non_matchings/code/z_map_disp/MapDisp_GetMapScale.s,MapDisp_GetMapScale,0x801030B4,0x10
asm/non_matchings/code/z_map_disp/MapDisp_GetMapOffset.s,MapDisp_GetMapOffset,0x801030F4,0x37
asm/non_matchings/code/z_map_disp/MapDisp_DrawMinimapRoom.s,MapDisp_DrawMinimapRoom,0x801031D0,0x207
asm/non_matchings/code/z_map_disp/MapDisp_IsDataRotated.s,MapDisp_IsDataRotated,0x801039EC,0x9
asm/non_matchings/code/z_map_disp/MapDisp_CanDrawDoors.s,MapDisp_CanDrawDoors,0x80103A10,0x12
asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawActorIcon.s,MapDisp_Minimap_DrawActorIcon,0x80103A58,0x251
asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawActors.s,MapDisp_Minimap_DrawActors,0x8010439C,0x84
asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawDoorActor.s,MapDisp_Minimap_DrawDoorActor,0x801045AC,0x14F
asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawDoorActors.s,MapDisp_Minimap_DrawDoorActors,0x80104AE8,0x66
asm/non_matchings/code/z_map_disp/MapDisp_AwaitGameplayDangeonKeep.s,MapDisp_AwaitGameplayDangeonKeep,0x80104C80,0x1D
asm/non_matchings/code/z_map_disp/MapDisp_Init.s,MapDisp_Init,0x80104CF4,0x90
asm/non_matchings/code/z_map_disp/MapDisp_InitSceneFloorData.s,MapDisp_InitSceneFloorData,0x80104F34,0xD8
asm/non_matchings/code/z_map_disp/MapDisp_GetBossIconY.s,MapDisp_GetBossIconY,0x80105294,0x21
asm/non_matchings/code/z_map_disp/MapDisp_GetBossRoomStorey.s,MapDisp_GetBossRoomStorey,0x80105318,0x4
asm/non_matchings/code/z_map_disp/MapDisp_IsBossDoor.s,MapDisp_IsBossDoor,0x80105328,0x9
asm/non_matchings/code/z_map_disp/MapDisp_InitBossRoomStorey.s,MapDisp_InitBossRoomStorey,0x8010534C,0x54
asm/non_matchings/code/z_map_disp/MapDisp_InitMapData.s,MapDisp_InitMapData,0x8010549C,0x70
asm/non_matchings/code/z_map_disp/MapDisp_InitChestData.s,MapDisp_InitChestData,0x8010565C,0x6F
asm/non_matchings/code/z_map_disp/MapDisp_InitTransitionActorData.s,MapDisp_InitTransitionActorData,0x80105818,0x8A
asm/non_matchings/code/z_map_disp/MapDisp_Destroy.s,MapDisp_Destroy,0x80105A40,0x3D
asm/non_matchings/code/z_map_disp/MapDisp_Update.s,MapDisp_Update,0x80105B34,0x43
asm/non_matchings/code/z_map_disp/MapDisp_SwapRooms.s,MapDisp_SwapRooms,0x80105C40,0xE8
asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawRedCompassIcon.s,MapDisp_Minimap_DrawRedCompassIcon,0x80105FE0,0x10A
asm/non_matchings/code/z_map_disp/MapDisp_IsLocationRomaniRanchAltScene.s,MapDisp_IsLocationRomaniRanchAltScene,0x80106408,0x12
asm/non_matchings/code/z_map_disp/MapDisp_CanDisplayMinimap.s,MapDisp_CanDisplayMinimap,0x80106450,0x1F
asm/non_matchings/code/z_map_disp/MapDisp_IsLocationMinimapBlocked.s,MapDisp_IsLocationMinimapBlocked,0x801064CC,0x19
asm/non_matchings/code/z_map_disp/MapDisp_IsMinimapToggleBlocked.s,MapDisp_IsMinimapToggleBlocked,0x80106530,0x13
asm/non_matchings/code/z_map_disp/MapDisp_AreRoomsSameStorey.s,MapDisp_AreRoomsSameStorey,0x8010657C,0x32
asm/non_matchings/code/z_map_disp/MapDisp_DrawMinimap.s,MapDisp_DrawMinimap,0x80106644,0x7E
asm/non_matchings/code/z_map_disp/MapDisp_ResetMapI.s,MapDisp_ResetMapI,0x8010683C,0x1E
asm/non_matchings/code/z_map_disp/MapDisp_InitMapI.s,MapDisp_InitMapI,0x801068B4,0x9
asm/non_matchings/code/z_map_disp/MapDisp_DestroyMapI.s,MapDisp_DestroyMapI,0x801068D8,0x9
asm/non_matchings/code/z_map_disp/MapDisp_AllocDungeonMap.s,MapDisp_AllocDungeonMap,0x801068FC,0xBC
asm/non_matchings/code/z_map_disp/MapDisp_IsOnStorey.s,MapDisp_IsOnStorey,0x80106BEC,0x47
asm/non_matchings/code/z_map_disp/MapDisp_ConvertBossSceneToDungeonScene.s,MapDisp_ConvertBossSceneToDungeonScene,0x80106D08,0x15
asm/non_matchings/code/z_map_disp/MapDisp_DrawRooms.s,MapDisp_DrawRooms,0x80106D5C,0x387
asm/non_matchings/code/z_map_disp/MapDisp_DrawChests.s,MapDisp_DrawChests,0x80107B78,0x16B
asm/non_matchings/code/z_map_disp/MapDisp_DrawRoomExits.s,MapDisp_DrawRoomExits,0x80108124,0x10D
asm/non_matchings/code/z_map_disp/MapDisp_DrawBossIcon.s,MapDisp_DrawBossIcon,0x80108558,0x12E
asm/non_matchings/code/z_map_disp/MapDisp_GetDungeonMapFloorTexture.s,MapDisp_GetDungeonMapFloorTexture,0x80108A10,0x15
asm/non_matchings/code/z_map_disp/MapDisp_SkipDrawDungeonMap.s,MapDisp_SkipDrawDungeonMap,0x80108A64,0x25
asm/non_matchings/code/z_map_disp/MapDisp_DrawDungeonFloorSelect.s,MapDisp_DrawDungeonFloorSelect,0x80108AF8,0x16E
asm/non_matchings/code/z_map_disp/MapDisp_IsValidStorey.s,MapDisp_IsValidStorey,0x801090B0,0x1D
asm/non_matchings/code/z_map_disp/MapDisp_GetPlayerStorey.s,MapDisp_GetPlayerStorey,0x80109124,0x33
asm/non_matchings/code/z_map_disp/MapDisp_DrawDungeonMap.s,MapDisp_DrawDungeonMap,0x801091F0,0x8E
asm/non_matchings/code/z_map_disp/MapDisp_UpdateDungeonMap.s,MapDisp_UpdateDungeonMap,0x80109428,0x1E
asm/non_matchings/code/z_map_data/MapData_GetMapColor.s,MapData_GetMapColor,0x801094A0,0xA
asm/non_matchings/code/z_map_data/func_801094C8.s,func_801094C8,0x801094C8,0xC
asm/non_matchings/code/z_map_data/func_801094F8.s,func_801094F8,0x801094F8,0xC
asm/non_matchings/code/z_map_data/func_80109528.s,func_80109528,0x80109528,0x9
asm/non_matchings/code/z_map_data/func_8010954C.s,func_8010954C,0x8010954C,0x8
asm/non_matchings/code/z_map_data/MapData_GetMapTexOffsetGameplayDangeonKeep.s,MapData_GetMapTexOffsetGameplayDangeonKeep,0x801094F8,0xC
asm/non_matchings/code/z_map_data/MapData_GetMapDrawTypeGameplayDangeonKeep.s,MapData_GetMapDrawTypeGameplayDangeonKeep,0x80109528,0x9
asm/non_matchings/code/z_map_data/MapData_GetMapColorIndexGameplayDangeonKeep.s,MapData_GetMapColorIndexGameplayDangeonKeep,0x8010954C,0x8
asm/non_matchings/code/z_map_data/func_8010956C.s,func_8010956C,0x8010956C,0x8
asm/non_matchings/code/z_map_data/func_8010958C.s,func_8010958C,0x8010958C,0x8
asm/non_matchings/code/z_map_data/MapData_GetMapTexGameplayDangeonKeep.s,MapData_GetMapTexGameplayDangeonKeep,0x8010958C,0x8
asm/non_matchings/code/z_map_data/func_801095AC.s,func_801095AC,0x801095AC,0xC
asm/non_matchings/code/z_map_data/func_801095DC.s,func_801095DC,0x801095DC,0xC
asm/non_matchings/code/z_map_data/func_8010960C.s,func_8010960C,0x8010960C,0x9
asm/non_matchings/code/z_map_data/func_80109630.s,func_80109630,0x80109630,0x8
asm/non_matchings/code/z_map_data/func_80109650.s,func_80109650,0x80109650,0x8
asm/non_matchings/code/z_map_data/func_80109670.s,func_80109670,0x80109670,0x19
asm/non_matchings/code/z_map_data/func_801096D4.s,func_801096D4,0x801096D4,0x10
asm/non_matchings/code/z_map_data/func_80109714.s,func_80109714,0x80109714,0x10
asm/non_matchings/code/z_map_data/MapData_GetMapTexGameplayDangeonKeepOffset.s,MapData_GetMapTexGameplayDangeonKeepOffset,0x801095DC,0xC
asm/non_matchings/code/z_map_data/MapData_GetMapGrandDrawType.s,MapData_GetMapGrandDrawType,0x8010960C,0x9
asm/non_matchings/code/z_map_data/MapData_GetMapGrandColorIndex.s,MapData_GetMapGrandColorIndex,0x80109630,0x8
asm/non_matchings/code/z_map_data/MapData_GetMapGrandScale.s,MapData_GetMapGrandScale,0x80109650,0x8
asm/non_matchings/code/z_map_data/MapData_MapGrandTexSizeTest.s,MapData_MapGrandTexSizeTest,0x80109670,0x19
asm/non_matchings/code/z_map_data/MapData_GetSizeOfMapGrandTex.s,MapData_GetSizeOfMapGrandTex,0x801096D4,0x10
asm/non_matchings/code/z_map_data/MapData_MID_GetType.s,MapData_MID_GetType,0x80109714,0x10
asm/non_matchings/code/z_map_data/func_80109754.s,func_80109754,0x80109754,0x1D
asm/non_matchings/code/z_map_data/func_801097C8.s,func_801097C8,0x801097C8,0x1D
asm/non_matchings/code/z_map_data/MapData_GetMapTexOffset.s,MapData_GetMapTexOffset,0x801097C8,0x1D
asm/non_matchings/code/z_map_data/func_8010983C.s,func_8010983C,0x8010983C,0x19
asm/non_matchings/code/z_map_data/func_801098A0.s,func_801098A0,0x801098A0,0x1A
asm/non_matchings/code/z_map_data/func_80109908.s,func_80109908,0x80109908,0x17
asm/non_matchings/code/z_map_data/MapData_GetDrawType.s,MapData_GetDrawType,0x801098A0,0x1A
asm/non_matchings/code/z_map_data/MapData_GetMapColorIndex.s,MapData_GetMapColorIndex,0x80109908,0x17
asm/non_matchings/code/z_map_data/func_80109964.s,func_80109964,0x80109964,0x6
asm/non_matchings/code/z_map_data/func_8010997C.s,func_8010997C,0x8010997C,0xC
asm/non_matchings/code/z_map_data/func_801099AC.s,func_801099AC,0x801099AC,0xC
asm/non_matchings/code/z_map_data/func_801099DC.s,func_801099DC,0x801099DC,0x9
asm/non_matchings/code/z_map_data/func_80109A00.s,func_80109A00,0x80109A00,0x8
asm/non_matchings/code/z_map_data/func_80109A20.s,func_80109A20,0x80109A20,0x8
asm/non_matchings/code/z_map_data/func_80109A40.s,func_80109A40,0x80109A40,0x16
asm/non_matchings/code/z_map_data/func_80109A98.s,func_80109A98,0x80109A98,0x10
asm/non_matchings/code/z_map_data/func_80109AD8.s,func_80109AD8,0x80109AD8,0x18
asm/non_matchings/code/z_map_data/MapData_GetMapITexDim.s,MapData_GetMapITexDim,0x8010997C,0xC
asm/non_matchings/code/z_map_data/MapData_GetMapITexOffset.s,MapData_GetMapITexOffset,0x801099AC,0xC
asm/non_matchings/code/z_map_data/MapData_GetMapIDrawType.s,MapData_GetMapIDrawType,0x801099DC,0x9
asm/non_matchings/code/z_map_data/MapData_GetMapIColorIndex.s,MapData_GetMapIColorIndex,0x80109A00,0x8
asm/non_matchings/code/z_map_data/MapData_GetMapIScale.s,MapData_GetMapIScale,0x80109A20,0x8
asm/non_matchings/code/z_map_data/MapData_MapITexSizeTest.s,MapData_MapITexSizeTest,0x80109A40,0x16
asm/non_matchings/code/z_map_data/MapDisp_GetSizeOfMapITex.s,MapDisp_GetSizeOfMapITex,0x80109A98,0x10
asm/non_matchings/code/z_map_data/MapData_GetMapIId.s,MapData_GetMapIId,0x80109AD8,0x18
asm/non_matchings/code/z_map_data/func_80109B38.s,func_80109B38,0x80109B38,0x1A
asm/non_matchings/code/z_map_data/func_80109BA0.s,func_80109BA0,0x80109BA0,0x15
asm/non_matchings/code/z_map_data/func_80109BF4.s,func_80109BF4,0x80109BF4,0x11
asm/non_matchings/code/z_map_data/MapData_GetMapCompactId.s,MapData_GetMapCompactId,0x80109BA0,0x15
asm/non_matchings/code/z_map_data/MapData_CPID_GetType.s,MapData_CPID_GetType,0x80109BF4,0x11
asm/non_matchings/code/z_map_data/func_80109C38.s,func_80109C38,0x80109C38,0x21
asm/non_matchings/code/z_map_data/func_80109CBC.s,func_80109CBC,0x80109CBC,0x21
asm/non_matchings/code/z_map_data/func_80109D40.s,func_80109D40,0x80109D40,0x26
asm/non_matchings/code/z_map_data/func_80109DD8.s,func_80109DD8,0x80109DD8,0x26
asm/non_matchings/code/z_map_data/func_80109E70.s,func_80109E70,0x80109E70,0x22
asm/non_matchings/code/z_map_data/func_80109EF8.s,func_80109EF8,0x80109EF8,0x20
asm/non_matchings/code/z_map_data/func_80109F78.s,func_80109F78,0x80109F78,0x22
asm/non_matchings/code/z_map_exp/Map_GetDungeonOrBossAreaIndex.s,Map_GetDungeonOrBossAreaIndex,0x8010A000,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInDungeonOrBossArea.s,Map_IsInDungeonOrBossArea,0x8010A074,0xC
asm/non_matchings/code/z_map_exp/func_8010A0A4.s,func_8010A0A4,0x8010A0A4,0x13
asm/non_matchings/code/z_map_exp/Map_GetDungeonAreaIndex.s,Map_GetDungeonAreaIndex,0x8010A0F0,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInDungeonArea.s,Map_IsInDungeonArea,0x8010A164,0xC
asm/non_matchings/code/z_map_exp/Map_GetBossAreaIndex.s,Map_GetBossAreaIndex,0x8010A194,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInBossArea.s,Map_IsInBossArea,0x8010A208,0xC
asm/non_matchings/code/z_map_exp/func_8010A238.s,func_8010A238,0x8010A238,0x1D
asm/non_matchings/code/z_map_exp/func_8010A2AC.s,func_8010A2AC,0x8010A2AC,0xC
asm/non_matchings/code/z_map_exp/Minimap_SavePlayerRoomInitInfo.s,Minimap_SavePlayerRoomInitInfo,0x8010A2DC,0x18
asm/non_matchings/code/z_map_data/MapData_CPID_GetTexDim.s,MapData_CPID_GetTexDim,0x80109D40,0x26
asm/non_matchings/code/z_map_data/MapData_CPID_GetTexOffset.s,MapData_CPID_GetTexOffset,0x80109DD8,0x26
asm/non_matchings/code/z_map_data/MapData_CPID_GetDrawType.s,MapData_CPID_GetDrawType,0x80109E70,0x22
asm/non_matchings/code/z_map_data/MapData_CPID_GetMapColorIndex.s,MapData_CPID_GetMapColorIndex,0x80109EF8,0x20
asm/non_matchings/code/z_map_data/MapData_CPID_GetMapScale.s,MapData_CPID_GetMapScale,0x80109F78,0x22
asm/non_matchings/code/z_map_exp/Map_GetDungeonSceneIndex.s,Map_GetDungeonSceneIndex,0x8010A000,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInDungeonOrBossScene.s,Map_IsInDungeonOrBossScene,0x8010A074,0xC
asm/non_matchings/code/z_map_exp/Map_CurRoomHasMapI.s,Map_CurRoomHasMapI,0x8010A0A4,0x13
asm/non_matchings/code/z_map_exp/Map_GetDungeonSceneIndexForDungeon.s,Map_GetDungeonSceneIndexForDungeon,0x8010A0F0,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInDungeonScene.s,Map_IsInDungeonScene,0x8010A164,0xC
asm/non_matchings/code/z_map_exp/Map_GetDungeonSceneIndexForBoss.s,Map_GetDungeonSceneIndexForBoss,0x8010A194,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInBossScene.s,Map_IsInBossScene,0x8010A208,0xC
asm/non_matchings/code/z_map_exp/Map_GetMapIndexForOverworld.s,Map_GetMapIndexForOverworld,0x8010A238,0x1D
asm/non_matchings/code/z_map_exp/Map_IsInOverworldSceneWithMapIndex.s,Map_IsInOverworldSceneWithMapIndex,0x8010A2AC,0xC
asm/non_matchings/code/z_map_exp/Map_SetAreaEntrypoint.s,Map_SetAreaEntrypoint,0x8010A2DC,0x18
asm/non_matchings/code/z_map_exp/Map_InitRoomData.s,Map_InitRoomData,0x8010A33C,0x35
asm/non_matchings/code/z_map_exp/Map_Destroy.s,Map_Destroy,0x8010A410,0x8
asm/non_matchings/code/z_map_exp/Map_Init.s,Map_Init,0x8010A430,0x47
asm/non_matchings/code/z_map_exp/Minimap_Draw.s,Minimap_Draw,0x8010A54C,0xD
asm/non_matchings/code/z_map_exp/Map_DrawMinimap.s,Map_DrawMinimap,0x8010A54C,0xD
asm/non_matchings/code/z_map_exp/Map_Update.s,Map_Update,0x8010A580,0x78
asm/non_matchings/code/z_msgevent/MsgEvent_CheckWeekEventReg.s,MsgEvent_CheckWeekEventReg,0x8010A760,0x1B
asm/non_matchings/code/z_msgevent/MsgEvent_CheckGoron.s,MsgEvent_CheckGoron,0x8010A7CC,0x12
@ -1948,7 +1948,7 @@ asm/non_matchings/code/z_scene/Scene_CommandMesh.s,Scene_CommandMesh,0x8012FBE8,
asm/non_matchings/code/z_scene/Scene_CommandObjectList.s,Scene_CommandObjectList,0x8012FC18,0x63
asm/non_matchings/code/z_scene/Scene_CommandLightList.s,Scene_CommandLightList,0x8012FDA4,0x22
asm/non_matchings/code/z_scene/Scene_CommandPathList.s,Scene_CommandPathList,0x8012FE2C,0xC
asm/non_matchings/code/z_scene/Scene_CommandTransiActorList.s,Scene_CommandTransiActorList,0x8012FE5C,0x18
asm/non_matchings/code/z_scene/Scene_CommandTransitionActorList.s,Scene_CommandTransitionActorList,0x8012FE5C,0x18
asm/non_matchings/code/z_scene/Door_InitContext.s,Door_InitContext,0x8012FEBC,0x4
asm/non_matchings/code/z_scene/Scene_CommandEnvLightSettings.s,Scene_CommandEnvLightSettings,0x8012FECC,0x11
asm/non_matchings/code/z_scene/Scene_LoadAreaTextures.s,Scene_LoadAreaTextures,0x8012FF10,0x1F
@ -1963,9 +1963,9 @@ asm/non_matchings/code/z_scene/Scene_CommandEchoSetting.s,Scene_CommandEchoSetti
asm/non_matchings/code/z_scene/Scene_CommandAltHeaderList.s,Scene_CommandAltHeaderList,0x80130454,0x1E
asm/non_matchings/code/z_scene/Scene_CommandCutsceneScriptList.s,Scene_CommandCutsceneScriptList,0x801304CC,0xD
asm/non_matchings/code/z_scene/Scene_CommandCutsceneList.s,Scene_CommandCutsceneList,0x80130500,0x10
asm/non_matchings/code/z_scene/Scene_CommandMiniMap.s,Scene_CommandMiniMap,0x80130540,0xE
asm/non_matchings/code/z_scene/Scene_CommandMapData.s,Scene_CommandMapData,0x80130540,0xE
asm/non_matchings/code/z_scene/Scene_Command1D.s,Scene_Command1D,0x80130578,0x4
asm/non_matchings/code/z_scene/Scene_CommandMiniMapCompassInfo.s,Scene_CommandMiniMapCompassInfo,0x80130588,0xA
asm/non_matchings/code/z_scene/Scene_CommandMapDataChests.s,Scene_CommandMapDataChests,0x80130588,0xA
asm/non_matchings/code/z_scene/Scene_CommandSetRegionVisitedFlag.s,Scene_CommandSetRegionVisitedFlag,0x801305B0,0x31
asm/non_matchings/code/z_scene/Scene_CommandAnimatedMaterials.s,Scene_CommandAnimatedMaterials,0x80130674,0xC
asm/non_matchings/code/z_scene/Scene_SetExitFade.s,Scene_SetExitFade,0x801306A4,0x11

1 asm/non_matchings/code/z_en_a_keep/EnAObj_Init.s EnAObj_Init 0x800A5AC0 0x2B
1415 asm/non_matchings/code/z_malloc/ZeldaArena_Init.s ZeldaArena_Init 0x80102DBC 0xC
1416 asm/non_matchings/code/z_malloc/ZeldaArena_Cleanup.s ZeldaArena_Cleanup 0x80102DEC 0x9
1417 asm/non_matchings/code/z_malloc/ZeldaArena_IsInitialized.s ZeldaArena_IsInitialized 0x80102E10 0xC
1418 asm/non_matchings/code/z_map_disp/func_80102E40.s asm/non_matchings/code/z_map_disp/MapDisp_GetMapITexture.s func_80102E40 MapDisp_GetMapITexture 0x80102E40 0x14
1419 asm/non_matchings/code/z_map_disp/func_80102E90.s asm/non_matchings/code/z_map_disp/MapDisp_InitRoomStoreyRecord.s func_80102E90 MapDisp_InitRoomStoreyRecord 0x80102E90 0x5
1420 asm/non_matchings/code/z_map_disp/func_80102EA4.s asm/non_matchings/code/z_map_disp/MapDisp_DestroyRoomStoreyRecord.s func_80102EA4 MapDisp_DestroyRoomStoreyRecord 0x80102EA4 0x4
1421 asm/non_matchings/code/z_map_disp/func_80102EB4.s func_80102EB4 0x80102EB4 0x7
1422 asm/non_matchings/code/z_map_disp/func_80102ED0.s func_80102ED0 0x80102ED0 0x8
1423 asm/non_matchings/code/z_map_disp/func_80102EF0.s asm/non_matchings/code/z_map_disp/MapDisp_CurRoomHasMapI.s func_80102EF0 MapDisp_CurRoomHasMapI 0x80102EF0 0x2B
1424 asm/non_matchings/code/z_map_disp/func_80102F9C.s asm/non_matchings/code/z_map_disp/MapDisp_GetStoreyY.s func_80102F9C MapDisp_GetStoreyY 0x80102F9C 0x3D
1425 asm/non_matchings/code/z_map_disp/func_80103090.s asm/non_matchings/code/z_map_disp/MapDisp_GetMapTexDim.s func_80103090 MapDisp_GetMapTexDim 0x80103090 0x9
1426 asm/non_matchings/code/z_map_disp/func_801030B4.s asm/non_matchings/code/z_map_disp/MapDisp_GetMapScale.s func_801030B4 MapDisp_GetMapScale 0x801030B4 0x10
1427 asm/non_matchings/code/z_map_disp/func_801030F4.s asm/non_matchings/code/z_map_disp/MapDisp_GetMapOffset.s func_801030F4 MapDisp_GetMapOffset 0x801030F4 0x37
1428 asm/non_matchings/code/z_map_disp/func_801031D0.s asm/non_matchings/code/z_map_disp/MapDisp_DrawMinimapRoom.s func_801031D0 MapDisp_DrawMinimapRoom 0x801031D0 0x207
1429 asm/non_matchings/code/z_map_disp/func_801039EC.s asm/non_matchings/code/z_map_disp/MapDisp_IsDataRotated.s func_801039EC MapDisp_IsDataRotated 0x801039EC 0x9
1430 asm/non_matchings/code/z_map_disp/func_80103A10.s asm/non_matchings/code/z_map_disp/MapDisp_CanDrawDoors.s func_80103A10 MapDisp_CanDrawDoors 0x80103A10 0x12
1431 asm/non_matchings/code/z_map_disp/func_80103A58.s asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawActorIcon.s func_80103A58 MapDisp_Minimap_DrawActorIcon 0x80103A58 0x251
1432 asm/non_matchings/code/z_map_disp/func_8010439C.s asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawActors.s func_8010439C MapDisp_Minimap_DrawActors 0x8010439C 0x84
1433 asm/non_matchings/code/z_map_disp/func_801045AC.s asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawDoorActor.s func_801045AC MapDisp_Minimap_DrawDoorActor 0x801045AC 0x14F
1434 asm/non_matchings/code/z_map_disp/func_80104AE8.s asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawDoorActors.s func_80104AE8 MapDisp_Minimap_DrawDoorActors 0x80104AE8 0x66
1435 asm/non_matchings/code/z_map_disp/func_80104C80.s asm/non_matchings/code/z_map_disp/MapDisp_AwaitGameplayDangeonKeep.s func_80104C80 MapDisp_AwaitGameplayDangeonKeep 0x80104C80 0x1D
1436 asm/non_matchings/code/z_map_disp/func_80104CF4.s asm/non_matchings/code/z_map_disp/MapDisp_Init.s func_80104CF4 MapDisp_Init 0x80104CF4 0x90
1437 asm/non_matchings/code/z_map_disp/func_80104F34.s asm/non_matchings/code/z_map_disp/MapDisp_InitSceneFloorData.s func_80104F34 MapDisp_InitSceneFloorData 0x80104F34 0xD8
1438 asm/non_matchings/code/z_map_disp/func_80105294.s asm/non_matchings/code/z_map_disp/MapDisp_GetBossIconY.s func_80105294 MapDisp_GetBossIconY 0x80105294 0x21
1439 asm/non_matchings/code/z_map_disp/func_80105318.s asm/non_matchings/code/z_map_disp/MapDisp_GetBossRoomStorey.s func_80105318 MapDisp_GetBossRoomStorey 0x80105318 0x4
1440 asm/non_matchings/code/z_map_disp/func_80105328.s asm/non_matchings/code/z_map_disp/MapDisp_IsBossDoor.s func_80105328 MapDisp_IsBossDoor 0x80105328 0x9
1441 asm/non_matchings/code/z_map_disp/func_8010534C.s asm/non_matchings/code/z_map_disp/MapDisp_InitBossRoomStorey.s func_8010534C MapDisp_InitBossRoomStorey 0x8010534C 0x54
1442 asm/non_matchings/code/z_map_disp/func_8010549C.s asm/non_matchings/code/z_map_disp/MapDisp_InitMapData.s func_8010549C MapDisp_InitMapData 0x8010549C 0x70
1443 asm/non_matchings/code/z_map_disp/func_8010565C.s asm/non_matchings/code/z_map_disp/MapDisp_InitChestData.s func_8010565C MapDisp_InitChestData 0x8010565C 0x6F
1444 asm/non_matchings/code/z_map_disp/func_80105818.s asm/non_matchings/code/z_map_disp/MapDisp_InitTransitionActorData.s func_80105818 MapDisp_InitTransitionActorData 0x80105818 0x8A
1445 asm/non_matchings/code/z_map_disp/func_80105A40.s asm/non_matchings/code/z_map_disp/MapDisp_Destroy.s func_80105A40 MapDisp_Destroy 0x80105A40 0x3D
1446 asm/non_matchings/code/z_map_disp/func_80105B34.s asm/non_matchings/code/z_map_disp/MapDisp_Update.s func_80105B34 MapDisp_Update 0x80105B34 0x43
1447 asm/non_matchings/code/z_map_disp/func_80105C40.s asm/non_matchings/code/z_map_disp/MapDisp_SwapRooms.s func_80105C40 MapDisp_SwapRooms 0x80105C40 0xE8
1448 asm/non_matchings/code/z_map_disp/func_80105FE0.s asm/non_matchings/code/z_map_disp/MapDisp_Minimap_DrawRedCompassIcon.s func_80105FE0 MapDisp_Minimap_DrawRedCompassIcon 0x80105FE0 0x10A
1449 asm/non_matchings/code/z_map_disp/func_80106408.s asm/non_matchings/code/z_map_disp/MapDisp_IsLocationRomaniRanchAltScene.s func_80106408 MapDisp_IsLocationRomaniRanchAltScene 0x80106408 0x12
1450 asm/non_matchings/code/z_map_disp/func_80106450.s asm/non_matchings/code/z_map_disp/MapDisp_CanDisplayMinimap.s func_80106450 MapDisp_CanDisplayMinimap 0x80106450 0x1F
1451 asm/non_matchings/code/z_map_disp/func_801064CC.s asm/non_matchings/code/z_map_disp/MapDisp_IsLocationMinimapBlocked.s func_801064CC MapDisp_IsLocationMinimapBlocked 0x801064CC 0x19
1452 asm/non_matchings/code/z_map_disp/func_80106530.s asm/non_matchings/code/z_map_disp/MapDisp_IsMinimapToggleBlocked.s func_80106530 MapDisp_IsMinimapToggleBlocked 0x80106530 0x13
1453 asm/non_matchings/code/z_map_disp/func_8010657C.s asm/non_matchings/code/z_map_disp/MapDisp_AreRoomsSameStorey.s func_8010657C MapDisp_AreRoomsSameStorey 0x8010657C 0x32
1454 asm/non_matchings/code/z_map_disp/func_80106644.s asm/non_matchings/code/z_map_disp/MapDisp_DrawMinimap.s func_80106644 MapDisp_DrawMinimap 0x80106644 0x7E
1455 asm/non_matchings/code/z_map_disp/func_8010683C.s asm/non_matchings/code/z_map_disp/MapDisp_ResetMapI.s func_8010683C MapDisp_ResetMapI 0x8010683C 0x1E
1456 asm/non_matchings/code/z_map_disp/func_801068B4.s asm/non_matchings/code/z_map_disp/MapDisp_InitMapI.s func_801068B4 MapDisp_InitMapI 0x801068B4 0x9
1457 asm/non_matchings/code/z_map_disp/func_801068D8.s asm/non_matchings/code/z_map_disp/MapDisp_DestroyMapI.s func_801068D8 MapDisp_DestroyMapI 0x801068D8 0x9
1458 asm/non_matchings/code/z_map_disp/func_801068FC.s asm/non_matchings/code/z_map_disp/MapDisp_AllocDungeonMap.s func_801068FC MapDisp_AllocDungeonMap 0x801068FC 0xBC
1459 asm/non_matchings/code/z_map_disp/func_80106BEC.s asm/non_matchings/code/z_map_disp/MapDisp_IsOnStorey.s func_80106BEC MapDisp_IsOnStorey 0x80106BEC 0x47
1460 asm/non_matchings/code/z_map_disp/func_80106D08.s asm/non_matchings/code/z_map_disp/MapDisp_ConvertBossSceneToDungeonScene.s func_80106D08 MapDisp_ConvertBossSceneToDungeonScene 0x80106D08 0x15
1461 asm/non_matchings/code/z_map_disp/func_80106D5C.s asm/non_matchings/code/z_map_disp/MapDisp_DrawRooms.s func_80106D5C MapDisp_DrawRooms 0x80106D5C 0x387
1462 asm/non_matchings/code/z_map_disp/func_80107B78.s asm/non_matchings/code/z_map_disp/MapDisp_DrawChests.s func_80107B78 MapDisp_DrawChests 0x80107B78 0x16B
1463 asm/non_matchings/code/z_map_disp/func_80108124.s asm/non_matchings/code/z_map_disp/MapDisp_DrawRoomExits.s func_80108124 MapDisp_DrawRoomExits 0x80108124 0x10D
1464 asm/non_matchings/code/z_map_disp/func_80108558.s asm/non_matchings/code/z_map_disp/MapDisp_DrawBossIcon.s func_80108558 MapDisp_DrawBossIcon 0x80108558 0x12E
1465 asm/non_matchings/code/z_map_disp/func_80108A10.s asm/non_matchings/code/z_map_disp/MapDisp_GetDungeonMapFloorTexture.s func_80108A10 MapDisp_GetDungeonMapFloorTexture 0x80108A10 0x15
1466 asm/non_matchings/code/z_map_disp/func_80108A64.s asm/non_matchings/code/z_map_disp/MapDisp_SkipDrawDungeonMap.s func_80108A64 MapDisp_SkipDrawDungeonMap 0x80108A64 0x25
1467 asm/non_matchings/code/z_map_disp/func_80108AF8.s asm/non_matchings/code/z_map_disp/MapDisp_DrawDungeonFloorSelect.s func_80108AF8 MapDisp_DrawDungeonFloorSelect 0x80108AF8 0x16E
1468 asm/non_matchings/code/z_map_disp/func_801090B0.s asm/non_matchings/code/z_map_disp/MapDisp_IsValidStorey.s func_801090B0 MapDisp_IsValidStorey 0x801090B0 0x1D
1469 asm/non_matchings/code/z_map_disp/func_80109124.s asm/non_matchings/code/z_map_disp/MapDisp_GetPlayerStorey.s func_80109124 MapDisp_GetPlayerStorey 0x80109124 0x33
1470 asm/non_matchings/code/z_map_disp/func_801091F0.s asm/non_matchings/code/z_map_disp/MapDisp_DrawDungeonMap.s func_801091F0 MapDisp_DrawDungeonMap 0x801091F0 0x8E
1471 asm/non_matchings/code/z_map_disp/func_80109428.s asm/non_matchings/code/z_map_disp/MapDisp_UpdateDungeonMap.s func_80109428 MapDisp_UpdateDungeonMap 0x80109428 0x1E
1472 asm/non_matchings/code/z_map_data/func_801094A0.s asm/non_matchings/code/z_map_data/MapData_GetMapColor.s func_801094A0 MapData_GetMapColor 0x801094A0 0xA
1473 asm/non_matchings/code/z_map_data/func_801094C8.s func_801094C8 0x801094C8 0xC
1474 asm/non_matchings/code/z_map_data/func_801094F8.s asm/non_matchings/code/z_map_data/MapData_GetMapTexOffsetGameplayDangeonKeep.s func_801094F8 MapData_GetMapTexOffsetGameplayDangeonKeep 0x801094F8 0xC
1475 asm/non_matchings/code/z_map_data/func_80109528.s asm/non_matchings/code/z_map_data/MapData_GetMapDrawTypeGameplayDangeonKeep.s func_80109528 MapData_GetMapDrawTypeGameplayDangeonKeep 0x80109528 0x9
1476 asm/non_matchings/code/z_map_data/func_8010954C.s asm/non_matchings/code/z_map_data/MapData_GetMapColorIndexGameplayDangeonKeep.s func_8010954C MapData_GetMapColorIndexGameplayDangeonKeep 0x8010954C 0x8
1477 asm/non_matchings/code/z_map_data/func_8010956C.s func_8010956C 0x8010956C 0x8
1478 asm/non_matchings/code/z_map_data/func_8010958C.s asm/non_matchings/code/z_map_data/MapData_GetMapTexGameplayDangeonKeep.s func_8010958C MapData_GetMapTexGameplayDangeonKeep 0x8010958C 0x8
1479 asm/non_matchings/code/z_map_data/func_801095AC.s func_801095AC 0x801095AC 0xC
1480 asm/non_matchings/code/z_map_data/func_801095DC.s asm/non_matchings/code/z_map_data/MapData_GetMapTexGameplayDangeonKeepOffset.s func_801095DC MapData_GetMapTexGameplayDangeonKeepOffset 0x801095DC 0xC
1481 asm/non_matchings/code/z_map_data/func_8010960C.s asm/non_matchings/code/z_map_data/MapData_GetMapGrandDrawType.s func_8010960C MapData_GetMapGrandDrawType 0x8010960C 0x9
1482 asm/non_matchings/code/z_map_data/func_80109630.s asm/non_matchings/code/z_map_data/MapData_GetMapGrandColorIndex.s func_80109630 MapData_GetMapGrandColorIndex 0x80109630 0x8
1483 asm/non_matchings/code/z_map_data/func_80109650.s asm/non_matchings/code/z_map_data/MapData_GetMapGrandScale.s func_80109650 MapData_GetMapGrandScale 0x80109650 0x8
1484 asm/non_matchings/code/z_map_data/func_80109670.s asm/non_matchings/code/z_map_data/MapData_MapGrandTexSizeTest.s func_80109670 MapData_MapGrandTexSizeTest 0x80109670 0x19
1485 asm/non_matchings/code/z_map_data/func_801096D4.s asm/non_matchings/code/z_map_data/MapData_GetSizeOfMapGrandTex.s func_801096D4 MapData_GetSizeOfMapGrandTex 0x801096D4 0x10
1486 asm/non_matchings/code/z_map_data/func_80109714.s asm/non_matchings/code/z_map_data/MapData_MID_GetType.s func_80109714 MapData_MID_GetType 0x80109714 0x10
1487 asm/non_matchings/code/z_map_data/func_80109754.s func_80109754 0x80109754 0x1D
1488 asm/non_matchings/code/z_map_data/func_801097C8.s asm/non_matchings/code/z_map_data/MapData_GetMapTexOffset.s func_801097C8 MapData_GetMapTexOffset 0x801097C8 0x1D
1489 asm/non_matchings/code/z_map_data/func_8010983C.s func_8010983C 0x8010983C 0x19
1490 asm/non_matchings/code/z_map_data/func_801098A0.s asm/non_matchings/code/z_map_data/MapData_GetDrawType.s func_801098A0 MapData_GetDrawType 0x801098A0 0x1A
1491 asm/non_matchings/code/z_map_data/func_80109908.s asm/non_matchings/code/z_map_data/MapData_GetMapColorIndex.s func_80109908 MapData_GetMapColorIndex 0x80109908 0x17
1492 asm/non_matchings/code/z_map_data/func_80109964.s func_80109964 0x80109964 0x6
1493 asm/non_matchings/code/z_map_data/func_8010997C.s asm/non_matchings/code/z_map_data/MapData_GetMapITexDim.s func_8010997C MapData_GetMapITexDim 0x8010997C 0xC
1494 asm/non_matchings/code/z_map_data/func_801099AC.s asm/non_matchings/code/z_map_data/MapData_GetMapITexOffset.s func_801099AC MapData_GetMapITexOffset 0x801099AC 0xC
1495 asm/non_matchings/code/z_map_data/func_801099DC.s asm/non_matchings/code/z_map_data/MapData_GetMapIDrawType.s func_801099DC MapData_GetMapIDrawType 0x801099DC 0x9
1496 asm/non_matchings/code/z_map_data/func_80109A00.s asm/non_matchings/code/z_map_data/MapData_GetMapIColorIndex.s func_80109A00 MapData_GetMapIColorIndex 0x80109A00 0x8
1497 asm/non_matchings/code/z_map_data/func_80109A20.s asm/non_matchings/code/z_map_data/MapData_GetMapIScale.s func_80109A20 MapData_GetMapIScale 0x80109A20 0x8
1498 asm/non_matchings/code/z_map_data/func_80109A40.s asm/non_matchings/code/z_map_data/MapData_MapITexSizeTest.s func_80109A40 MapData_MapITexSizeTest 0x80109A40 0x16
1499 asm/non_matchings/code/z_map_data/func_80109A98.s asm/non_matchings/code/z_map_data/MapDisp_GetSizeOfMapITex.s func_80109A98 MapDisp_GetSizeOfMapITex 0x80109A98 0x10
1500 asm/non_matchings/code/z_map_data/func_80109AD8.s asm/non_matchings/code/z_map_data/MapData_GetMapIId.s func_80109AD8 MapData_GetMapIId 0x80109AD8 0x18
1501 asm/non_matchings/code/z_map_data/func_80109B38.s func_80109B38 0x80109B38 0x1A
1502 asm/non_matchings/code/z_map_data/func_80109BA0.s asm/non_matchings/code/z_map_data/MapData_GetMapCompactId.s func_80109BA0 MapData_GetMapCompactId 0x80109BA0 0x15
1503 asm/non_matchings/code/z_map_data/func_80109BF4.s asm/non_matchings/code/z_map_data/MapData_CPID_GetType.s func_80109BF4 MapData_CPID_GetType 0x80109BF4 0x11
1504 asm/non_matchings/code/z_map_data/func_80109C38.s func_80109C38 0x80109C38 0x21
1505 asm/non_matchings/code/z_map_data/func_80109CBC.s func_80109CBC 0x80109CBC 0x21
1506 asm/non_matchings/code/z_map_data/func_80109D40.s asm/non_matchings/code/z_map_data/MapData_CPID_GetTexDim.s func_80109D40 MapData_CPID_GetTexDim 0x80109D40 0x26
1507 asm/non_matchings/code/z_map_data/func_80109DD8.s asm/non_matchings/code/z_map_data/MapData_CPID_GetTexOffset.s func_80109DD8 MapData_CPID_GetTexOffset 0x80109DD8 0x26
1508 asm/non_matchings/code/z_map_data/func_80109E70.s asm/non_matchings/code/z_map_data/MapData_CPID_GetDrawType.s func_80109E70 MapData_CPID_GetDrawType 0x80109E70 0x22
1509 asm/non_matchings/code/z_map_data/func_80109EF8.s asm/non_matchings/code/z_map_data/MapData_CPID_GetMapColorIndex.s func_80109EF8 MapData_CPID_GetMapColorIndex 0x80109EF8 0x20
1510 asm/non_matchings/code/z_map_data/func_80109F78.s asm/non_matchings/code/z_map_data/MapData_CPID_GetMapScale.s func_80109F78 MapData_CPID_GetMapScale 0x80109F78 0x22
1511 asm/non_matchings/code/z_map_exp/Map_GetDungeonOrBossAreaIndex.s asm/non_matchings/code/z_map_exp/Map_GetDungeonSceneIndex.s Map_GetDungeonOrBossAreaIndex Map_GetDungeonSceneIndex 0x8010A000 0x1D
1512 asm/non_matchings/code/z_map_exp/Map_IsInDungeonOrBossArea.s asm/non_matchings/code/z_map_exp/Map_IsInDungeonOrBossScene.s Map_IsInDungeonOrBossArea Map_IsInDungeonOrBossScene 0x8010A074 0xC
1513 asm/non_matchings/code/z_map_exp/func_8010A0A4.s asm/non_matchings/code/z_map_exp/Map_CurRoomHasMapI.s func_8010A0A4 Map_CurRoomHasMapI 0x8010A0A4 0x13
1514 asm/non_matchings/code/z_map_exp/Map_GetDungeonAreaIndex.s asm/non_matchings/code/z_map_exp/Map_GetDungeonSceneIndexForDungeon.s Map_GetDungeonAreaIndex Map_GetDungeonSceneIndexForDungeon 0x8010A0F0 0x1D
1515 asm/non_matchings/code/z_map_exp/Map_IsInDungeonArea.s asm/non_matchings/code/z_map_exp/Map_IsInDungeonScene.s Map_IsInDungeonArea Map_IsInDungeonScene 0x8010A164 0xC
1516 asm/non_matchings/code/z_map_exp/Map_GetBossAreaIndex.s asm/non_matchings/code/z_map_exp/Map_GetDungeonSceneIndexForBoss.s Map_GetBossAreaIndex Map_GetDungeonSceneIndexForBoss 0x8010A194 0x1D
1517 asm/non_matchings/code/z_map_exp/Map_IsInBossArea.s asm/non_matchings/code/z_map_exp/Map_IsInBossScene.s Map_IsInBossArea Map_IsInBossScene 0x8010A208 0xC
1518 asm/non_matchings/code/z_map_exp/func_8010A238.s asm/non_matchings/code/z_map_exp/Map_GetMapIndexForOverworld.s func_8010A238 Map_GetMapIndexForOverworld 0x8010A238 0x1D
1519 asm/non_matchings/code/z_map_exp/func_8010A2AC.s asm/non_matchings/code/z_map_exp/Map_IsInOverworldSceneWithMapIndex.s func_8010A2AC Map_IsInOverworldSceneWithMapIndex 0x8010A2AC 0xC
1520 asm/non_matchings/code/z_map_exp/Minimap_SavePlayerRoomInitInfo.s asm/non_matchings/code/z_map_exp/Map_SetAreaEntrypoint.s Minimap_SavePlayerRoomInitInfo Map_SetAreaEntrypoint 0x8010A2DC 0x18
1521 asm/non_matchings/code/z_map_exp/Map_InitRoomData.s Map_InitRoomData 0x8010A33C 0x35
1522 asm/non_matchings/code/z_map_exp/Map_Destroy.s Map_Destroy 0x8010A410 0x8
1523 asm/non_matchings/code/z_map_exp/Map_Init.s Map_Init 0x8010A430 0x47
1524 asm/non_matchings/code/z_map_exp/Minimap_Draw.s asm/non_matchings/code/z_map_exp/Map_DrawMinimap.s Minimap_Draw Map_DrawMinimap 0x8010A54C 0xD
1525 asm/non_matchings/code/z_map_exp/Map_Update.s Map_Update 0x8010A580 0x78
1526 asm/non_matchings/code/z_msgevent/MsgEvent_CheckWeekEventReg.s MsgEvent_CheckWeekEventReg 0x8010A760 0x1B
1527 asm/non_matchings/code/z_msgevent/MsgEvent_CheckGoron.s MsgEvent_CheckGoron 0x8010A7CC 0x12
1948 asm/non_matchings/code/z_scene/Scene_CommandObjectList.s Scene_CommandObjectList 0x8012FC18 0x63
1949 asm/non_matchings/code/z_scene/Scene_CommandLightList.s Scene_CommandLightList 0x8012FDA4 0x22
1950 asm/non_matchings/code/z_scene/Scene_CommandPathList.s Scene_CommandPathList 0x8012FE2C 0xC
1951 asm/non_matchings/code/z_scene/Scene_CommandTransiActorList.s asm/non_matchings/code/z_scene/Scene_CommandTransitionActorList.s Scene_CommandTransiActorList Scene_CommandTransitionActorList 0x8012FE5C 0x18
1952 asm/non_matchings/code/z_scene/Door_InitContext.s Door_InitContext 0x8012FEBC 0x4
1953 asm/non_matchings/code/z_scene/Scene_CommandEnvLightSettings.s Scene_CommandEnvLightSettings 0x8012FECC 0x11
1954 asm/non_matchings/code/z_scene/Scene_LoadAreaTextures.s Scene_LoadAreaTextures 0x8012FF10 0x1F
1963 asm/non_matchings/code/z_scene/Scene_CommandAltHeaderList.s Scene_CommandAltHeaderList 0x80130454 0x1E
1964 asm/non_matchings/code/z_scene/Scene_CommandCutsceneScriptList.s Scene_CommandCutsceneScriptList 0x801304CC 0xD
1965 asm/non_matchings/code/z_scene/Scene_CommandCutsceneList.s Scene_CommandCutsceneList 0x80130500 0x10
1966 asm/non_matchings/code/z_scene/Scene_CommandMiniMap.s asm/non_matchings/code/z_scene/Scene_CommandMapData.s Scene_CommandMiniMap Scene_CommandMapData 0x80130540 0xE
1967 asm/non_matchings/code/z_scene/Scene_Command1D.s Scene_Command1D 0x80130578 0x4
1968 asm/non_matchings/code/z_scene/Scene_CommandMiniMapCompassInfo.s asm/non_matchings/code/z_scene/Scene_CommandMapDataChests.s Scene_CommandMiniMapCompassInfo Scene_CommandMapDataChests 0x80130588 0xA
1969 asm/non_matchings/code/z_scene/Scene_CommandSetRegionVisitedFlag.s Scene_CommandSetRegionVisitedFlag 0x801305B0 0x31
1970 asm/non_matchings/code/z_scene/Scene_CommandAnimatedMaterials.s Scene_CommandAnimatedMaterials 0x80130674 0xC
1971 asm/non_matchings/code/z_scene/Scene_SetExitFade.s Scene_SetExitFade 0x801306A4 0x11