mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-08 13:26:14 -04:00
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:
@@ -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);
|
||||
|
||||
+1
-1
@@ -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))
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
+83
-69
@@ -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
|
||||
|
||||
+81
-63
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user