partially finish code_0x8012EC80, document all of gSaveContext (#138)

* not ok, why?

* OK!

* fix data

* finish data etc

* work on save context

* save finished

* first func done

* roomInf

* done for now

* add missing file

* add most og names for struct members

* fix accidental change

* Update z_en_ginko_man.c

* Update z_scene.c

* maybe fix stuff hopefully

* proto

* sasa

* Update include/z64save.h

Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>

* Update z64save.h

Co-authored-by: Anghelo Carvajal <anghelo.carvajal.14@sansano.usm.cl>
This commit is contained in:
Zelllll
2021-05-25 18:49:11 -04:00
committed by GitHub
co-authored by Anghelo Carvajal
parent cf3eb3b2e1
commit 6c86016603
26 changed files with 797 additions and 483 deletions
+10 -10
View File
@@ -2423,16 +2423,16 @@ s32 Room_StartRoomTransition(GlobalContext* globalCtx, RoomContext* roomCtxt, s3
s32 Room_HandleLoadCallbacks(GlobalContext* globalCtx, RoomContext* roomCtxt);
void Room_Draw(GlobalContext* globalCtx, Room* room, u32 flags);
void func_8012EBF8(GlobalContext* globalCtx, RoomContext* roomCtxt);
u32 func_8012EC80(GlobalContext* globalCtx);
void func_8012ED34(s16 param_1);
// void func_8012ED78(void);
// void func_8012EDE8(void);
// void func_8012EE34(void);
// void func_8012EF0C(void);
// void func_8012F0EC(void);
// void func_8012F1BC(void);
// void func_8012F22C(void);
// void func_8012F278(void);
s32 func_8012EC80(GlobalContext* globalCtx);
void func_8012ED34(s16 equipment);
u8 func_8012ED78(GlobalContext* globalCtx, s16 equipment);
void func_8012EDE8(s16 arg0, u32 arg1);
s32 func_8012EE34(s16 arg0);
void func_8012EF0C(s16 arg0);
void func_8012F0EC(s16 arg0);
void func_8012F1BC(s16 sceneIndex);
s16 func_8012F22C(s16 sceneIndex);
void func_8012F278(GlobalContext* globalCtx);
s32 Object_Spawn(ObjectContext* objectCtx, s16 id);
void Object_InitBank(GameState* state, ObjectContext* objectCtx);
void Object_UpdateBank(ObjectContext* objectCtx);
+3 -3
View File
@@ -26,10 +26,10 @@
// linkAge still exists in MM, but is always set to 0 (always adult)
// There are remnants of these macros from OOT, but they are essentially useless
//#define LINK_IS_CHILD (gSaveContext.perm.linkAge != 0)
#define LINK_IS_ADULT (gSaveContext.perm.linkAge == 0)
//#define LINK_IS_CHILD (gSaveContext.linkAge != 0)
#define LINK_IS_ADULT (gSaveContext.linkAge == 0)
#define CURRENT_DAY (gSaveContext.perm.day % 5)
#define CURRENT_DAY (gSaveContext.day % 5)
#define SQ(x) ((x)*(x))
#define DECR(x) ((x) == 0 ? 0 : ((x) -= 1))
+20 -105
View File
@@ -1402,105 +1402,20 @@ extern Gfx gEmptyDL[1];
extern Vec3f D_801C1D10;
extern room_draw_func roomDrawFuncs[4];
extern u32 gBitFlags[32];
// extern UNK_TYPE2 D_801C1DB0;
// extern UNK_TYPE2 D_801C1DB2;
// extern UNK_TYPE2 D_801C1DB4;
// extern UNK_TYPE2 D_801C1DB8;
// extern UNK_TYPE2 D_801C1DBA;
// extern UNK_TYPE4 D_801C1DC0;
// extern UNK_TYPE4 D_801C1DC4;
// extern UNK_TYPE4 D_801C1DD0;
// extern UNK_TYPE4 D_801C1DD8;
// extern UNK_TYPE4 D_801C1DDC;
// extern UNK_TYPE1 D_801C1DE0;
// extern UNK_TYPE1 D_801C1E00;
// extern UNK_TYPE1 D_801C1E01;
// extern UNK_TYPE1 D_801C1E02;
// extern UNK_TYPE1 D_801C1E04;
// extern UNK_TYPE1 D_801C1E05;
// extern UNK_TYPE1 D_801C1E08;
// extern UNK_TYPE1 D_801C1E0A;
// extern UNK_TYPE1 D_801C1E0B;
// extern UNK_TYPE1 D_801C1E0C;
// extern UNK_TYPE2 D_801C1E0E;
// extern UNK_TYPE2 D_801C1E10;
// extern UNK_TYPE2 D_801C1E12;
// extern UNK_TYPE1 D_801C1E14;
// extern UNK_TYPE2 D_801C1E16;
// extern UNK_TYPE2 D_801C1E18;
// extern UNK_TYPE2 D_801C1E1A;
// extern UNK_TYPE1 D_801C1E2C;
// extern UNK_TYPE1 D_801C1E3C;
// extern UNK_TYPE2 D_801C1E40;
// extern UNK_TYPE2 D_801C1E42;
// extern UNK_TYPE1 D_801C1E44;
// extern UNK_TYPE2 D_801C1E48;
// extern UNK_TYPE2 D_801C1E4A;
extern UNK_PTR D_801C1E6C;
// extern UNK_TYPE1 D_801C1F9C;
// extern UNK_TYPE1 D_801C1FAC;
// extern UNK_TYPE4 D_801C1FE0;
// extern UNK_TYPE1 D_801C2054;
extern u8 D_801C2078[1]; // TODO This array is larger than this. How large is it?
extern u8 D_801C2079;
// extern UNK_TYPE1 D_801C207A;
extern u8 D_801C207E;
// extern UNK_TYPE1 D_801C207F;
// extern UNK_TYPE1 D_801C2080;
// extern UNK_TYPE1 D_801C2081;
// extern UNK_TYPE1 D_801C2082;
// extern UNK_TYPE1 D_801C2084;
// extern UNK_TYPE1 D_801C2085;
// extern UNK_TYPE1 D_801C2088;
// extern UNK_TYPE1 D_801C208A;
// extern UNK_TYPE1 D_801C208E;
// extern UNK_TYPE1 D_801C2090;
// extern UNK_TYPE1 D_801C209A;
// extern UNK_TYPE1 D_801C209C;
// extern UNK_TYPE1 D_801C209D;
// extern UNK_TYPE1 D_801C209E;
// extern UNK_TYPE1 D_801C20A0;
// extern UNK_TYPE1 D_801C20A1;
// extern UNK_TYPE1 D_801C20A2;
// extern UNK_TYPE1 D_801C20A3;
// extern UNK_TYPE1 D_801C20A4;
// extern UNK_TYPE1 D_801C20A5;
// extern UNK_TYPE1 D_801C20A6;
// extern UNK_TYPE1 D_801C20A7;
// extern UNK_TYPE1 D_801C20A8;
// extern UNK_TYPE1 D_801C20AA;
// extern UNK_TYPE1 D_801C20AB;
// extern UNK_TYPE1 D_801C20AC;
// extern UNK_TYPE1 D_801C20AD;
// extern UNK_TYPE1 D_801C20AE;
// extern UNK_TYPE1 D_801C20AF;
// extern UNK_TYPE1 D_801C20B0;
// extern UNK_TYPE1 D_801C20B1;
// extern UNK_TYPE1 D_801C20B2;
// extern UNK_TYPE1 D_801C20B3;
// extern UNK_TYPE1 D_801C20B4;
// extern UNK_TYPE1 D_801C20B5;
// extern UNK_TYPE1 D_801C20B6;
// extern UNK_TYPE1 D_801C20B7;
// extern UNK_TYPE1 D_801C20B8;
// extern UNK_TYPE1 D_801C20B9;
// extern UNK_TYPE1 D_801C20BA;
// extern UNK_TYPE1 D_801C20BB;
// extern UNK_TYPE1 D_801C20BC;
// extern UNK_TYPE1 D_801C20BD;
// extern UNK_TYPE1 D_801C20BE;
// extern UNK_TYPE1 D_801C20BF;
// extern UNK_TYPE1 D_801C20C0;
// extern UNK_TYPE1 D_801C20C1;
// extern UNK_TYPE1 D_801C20C8;
extern SceneIdList scenesPerMapArea[11];
// extern UNK_TYPE2 D_801C2380;
// extern UNK_TYPE1 D_801C2398;
// extern UNK_TYPE1 D_801C23B0;
// extern UNK_TYPE1 D_801C23C8;
// extern UNK_TYPE1 D_801C23E0;
// extern UNK_TYPE1 D_801C23F8;
// extern UNK_TYPE1 D_801C2410;
extern u16 gEquipMasks[];
extern u16 gEquipNegMasks[];
extern u32 gUpgradeMasks[];
extern u32 gUpgradeNegMasks[];
extern u8 gEquipShifts[];
extern u8 gUpgradeShifts[];
extern u16 gUpgradeCapacities[][4];
extern u32 gGsFlagsMask[];
extern u32 gGsFlagsShift[];
extern void* gItemIcons[];
extern u8 gItemSlots[];
extern u16 gItemPrices[];
extern u16 gScenesPerRegion[11][27];
extern u32 D_801C2410[];
extern s16 gLinkFormObjectIndexes[8];
extern RomFile objectFileTable[643];
extern SceneTableEntry gSceneTable[];
@@ -1543,13 +1458,13 @@ extern struct_801C5F44 D_801C5F44[]; // D_801C5F44
// extern UNK_TYPE1 D_801C6850;
// extern UNK_TYPE1 D_801C6870;
// extern UNK_TYPE1 D_801C6890;
extern SaveContext_struct1 D_801C6898;
extern SaveContext_struct2 D_801C68C0;
extern SaveContextInventory gSaveDefaultInventory;
// extern UNK_TYPE1 D_801C6898;
// extern UNK_TYPE1 D_801C68C0;
extern Inventory gSaveDefaultInventory;
extern u16 gSaveDefaultChecksum;
extern SaveContext_struct1 D_801C6970;
extern SaveContext_struct2 D_801C6998;
extern SaveContextInventory D_801C69BC;
// extern UNK_TYPE1 D_801C6970;
// extern UNK_TYPE1 D_801C6998;
extern Inventory D_801C69BC;
extern u16 D_801C6A44;
// extern UNK_TYPE1 D_801C6A48;
// extern UNK_TYPE1 D_801C6A50;
+9 -128
View File
@@ -32,6 +32,7 @@
#include <z64math.h>
#include <z64object.h>
#include <z64scene.h>
#include <z64save.h>
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
@@ -145,13 +146,6 @@ typedef struct {
/* 0x28 */ CsCmdActorAction* actorActions[10];
} CutsceneContext; // size = 0x50
typedef struct {
/* 0x00 */ u32 chestFlags;
/* 0x04 */ u32 switchFlags[2];
/* 0x0C */ u32 clearedRooms;
/* 0x10 */ u32 collectibleFlags;
} CycleSceneFlags; // size = 0x14
typedef struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
@@ -302,10 +296,6 @@ typedef struct {
/* 0x10 */ u32 nRelocations;
} OverlayRelocationSection; // size = 0x14
typedef struct {
/* 0x00 */ UNK_TYPE1 pad0[0x1C];
} PermanentSceneFlags; // size = 0x1C
typedef struct {
/* 0x0 */ s16 unk0;
/* 0x2 */ s16 unk2;
@@ -317,74 +307,6 @@ typedef struct {
/* 0x20 */ u16 fracPart[16];
} RSPMatrix; // size = 0x40
// Extra information in the save context that is not saved
typedef struct {
/* 0x000 */ UNK_TYPE1 pad0[0x4];
/* 0x004 */ s16 unk04;
/* 0x006 */ UNK_TYPE1 pad06[0x6];
/* 0x00C */ s32 sceneSetupIndex;
/* 0x010 */ s32 unk10;
/* 0x014 */ UNK_TYPE1 pad14[0x10];
/* 0x024 */ s16 unk24;
/* 0x040 */ UNK_TYPE1 pad22[0x1C];
/* 0x042 */ s16 unk42;
/* 0x044 */ UNK_TYPE1 pad44[0x34];
/* 0x078 */ f32 unk78;
/* 0x07C */ UNK_TYPE1 pad7C[0x4];
/* 0x080 */ s16 unk80;
/* 0x082 */ UNK_TYPE1 pad82[0x5];
/* 0x087 */ s8 unk87;
/* 0x088 */ UNK_TYPE1 pad88[0x1EE];
/* 0x276 */ u8 unk276;
/* 0x277 */ UNK_TYPE1 pad277[0x9];
/* 0x280 */ u16 unk280;
/* 0x282 */ u16 unk282;
/* 0x284 */ UNK_TYPE1 pad284[0x28];
/* 0x2AC */ u8 cutsceneTrigger;
/* 0x2AD */ UNK_TYPE1 pad2AD[0x5];
/* 0x2B2 */ u16 environmentTime;
/* 0x2B4 */ UNK_TYPE1 pad2B4[0x4];
/* 0x2B8 */ s16 unk2b8;
/* 0x2BA */ UNK_TYPE1 pad2BA[0xA];
/* 0x2C4 */ f32 unk2C4;
/* 0x2C8 */ CycleSceneFlags cycleSceneFlags[120];
} SaveContextExtra; // size = 0xC28
typedef struct {
/* 0x00 */ u8 items[24];
/* 0x18 */ u8 masks[24];
/* 0x30 */ u8 quantities[24];
/* 0x48 */ s32 unk48; // some bits are wallet upgrades
/* 0x4C */ UNK_TYPE1 pad4C[0x3C];
} SaveContextInventory; // size = 0x88
// Save Context that is only stored in an owl save
typedef struct {
/* 0x0000 */ UNK_TYPE1 pad0[0x1];
/* 0x0001 */ u8 unk1;
/* 0x0002 */ u8 unk2;
/* 0x0003 */ u8 unk3;
/* 0x0004 */ u8 unk4;
/* 0x0005 */ u8 unk5;
/* 0x0006 */ UNK_TYPE1 pad6[0x2C8C];
/* 0x0006 */ s16 unk_A00;
} SaveContextOwl; // size = 0x2C94
typedef struct {
/* 0x00 */ u8 zelda[6]; // Will always be "ZELDA3" for a valid save
/* 0x06 */ UNK_TYPE1 pad6[0xA];
/* 0x10 */ s16 maxLife;
/* 0x12 */ s16 currentLife;
/* 0x14 */ s8 unk14;
/* 0x15 */ s8 currentMagic;
/* 0x16 */ s16 currentRupees;
/* 0x18 */ UNK_TYPE1 pad18[0x10];
} SaveContext_struct1; // size = 0x28
typedef struct {
/* 0x00 */ UNK_TYPE1 pad0[0x22];
} SaveContext_struct2; // size = 0x22
typedef struct {
/* 0x0 */ s8 letterboxTarget;
/* 0x1 */ s8 letterboxMagnitude;
@@ -636,42 +558,6 @@ typedef struct {
/* 0x12 */ OSContPad rel; // X/Y store adjusted
} Input; // size = 0x18
// Permanent save context, kept in regular save files
typedef struct {
/* 0x0000 */ u32 entranceIndex; // bits 0-3 : offset; 4-8: spawn index; 9-15: scene index
/* 0x0004 */ UNK_TYPE1 pad4[0x3];
/* 0x0007 */ u8 linkAge;
/* 0x0008 */ s32 cutscene;
/* 0x000C */ u16 time;
/* 0x000E */ UNK_TYPE1 padE[0x2];
/* 0x0010 */ s32 isNight;
/* 0x0014 */ u32 unk14;
/* 0x0018 */ s32 day;
/* 0x001C */ u32 daysElapsed;
/* 0x0020 */ u8 unk20;
/* 0x0021 */ UNK_TYPE1 pad21[0x2];
/* 0x0023 */ u8 owlSave;
/* 0x0024 */ SaveContext_struct1 unk24;
/* 0x004C */ SaveContext_struct2 unk4C;
/* 0x006E */ UNK_TYPE1 pad6E[0x2];
/* 0x0070 */ SaveContextInventory inv;
/* 0x00F8 */ PermanentSceneFlags sceneFlags[120];
/* 0x0E18 */ UNK_TYPE1 padE18[0x60];
/* 0x0E78 */ u32 pictoFlags0;
/* 0x0E7C */ u32 pictoFlags1;
/* 0x0E80 */ UNK_TYPE1 padE80[0x5C];
/* 0x0EDC */ u32 bankRupees;
/* 0x0EE0 */ UNK_TYPE1 padEE0[0x18];
/* 0x0EF8 */ u8 weekEventReg[100];
/* 0x0F5C */ u32 mapsVisited;
/* 0x0F60 */ UNK_TYPE1 padF60[0x8C];
/* 0x0FEC */ u8 lotteryCodes[9];
/* 0x0FF5 */ u8 spiderHouseMaskOrder[6];
/* 0x0FFB */ u8 bomberCode[5];
/* 0x1000 */ UNK_TYPE1 pad1000[0xA];
/* 0x100A */ u16 checksum;
} SaveContextPerm; // size = 0x100C
typedef struct {
/* 0x00 */ Vec3f focalPointChange;
/* 0x0C */ Vec3f eyeChange;
@@ -742,7 +628,10 @@ typedef struct {
typedef struct {
/* 0x000 */ View view;
/* 0x168 */ UNK_TYPE1 pad168[0xBE];
/* 0x168 */ char unk_168[0xB4];
/* 0x21C */ s16 unk_21C;
/* 0x21E */ s16 unk_21E;
/* 0x220 */ char unk_220[6];
/* 0x226 */ s16 lifeColorChange;
/* 0x228 */ s16 lifeColorChangeDirection;
/* 0x22A */ s16 unk22A;
@@ -767,13 +656,12 @@ typedef struct {
/* 0x250 */ s16 unk250;
/* 0x252 */ s16 lifeSizeChange;
/* 0x254 */ s16 lifeSizeChangeDirection; // 1 means shrinking, 0 growing
/* 0x256 */ UNK_TYPE1 pad256[0x06];
/* 0x256 */ char unk_256[0x06];
/* 0x25C */ u16 unk25C;
/* 0x25E */ UNK_TYPE1 pad25E[0x12];
/* 0x25E */ char unk_25E[0x12];
/* 0x270 */ s16 lifeAlpha;
/* 0x272 */ UNK_TYPE1 pad272[0xD6];
}
InterfaceContext; // size = 0x348
/* 0x272 */ char unk_272[0xD6];
} InterfaceContext; // size = 0x348
typedef struct {
/* 0x00 */ UNK_TYPE1 unk0;
@@ -1041,13 +929,6 @@ typedef struct {
/* 0x12080 */ UNK_TYPE1 pad12080[0x58];
} MessageContext; // size = 0x120D8
// Full save context
typedef struct {
/* 0x0000 */ SaveContextPerm perm;
/* 0x100C */ SaveContextOwl owl;
/* 0x3CA0 */ SaveContextExtra extra;
} SaveContext; // size = 0x48C8
typedef struct ActorBgMbarChair ActorBgMbarChair;
typedef struct ActorEnBji01 ActorEnBji01;
+199
View File
@@ -0,0 +1,199 @@
#ifndef _Z64SAVE_H_
#define _Z64SAVE_H_
#include "ultra64.h"
#include "z64math.h"
#include <os.h>
typedef struct {
/* 0x00 */ u8 buttonItems[4][4];
/* 0x10 */ u8 cButtonSlots[4][4];
/* 0x20 */ u16 equipment;
} ItemEquips; // size = 0x0A
typedef struct {
/* 0x00 */ u8 items[24];
/* 0x18 */ u8 masks[24];
/* 0x30 */ s8 ammo[24];
/* 0x48 */ u32 upgrades; // some bits are wallet upgrades
/* 0x4C */ u32 questItems;
/* 0x50 */ u8 dungeonItems[10];
/* 0x5A */ s8 dungeonKeys[10];
/* 0x64 */ s8 strayFairies[10]; // "orange_fairy"
/* 0x6E */ u8 unk_6E[8][3]; // "degnuts_memory_name"
} Inventory; // size = 0x88
typedef struct {
/* 0x00 */ s16 scene;
/* 0x02 */ Vec3s pos;
/* 0x08 */ s16 angle;
} HorseData; // size = 0x0A
typedef struct {
/* 0x0 */ Vec3f pos;
/* 0xC */ s16 yaw;
/* 0xE */ s16 playerParams;
/* 0x10 */ u16 entranceIndex;
/* 0x12 */ u8 roomIndex;
/* 0x13 */ s8 data;
/* 0x14 */ u32 tempSwchFlags;
/* 0x18 */ u32 unk_18;
/* 0x1C */ u32 tempCollectFlags;
} RespawnData; // size = 0x20
typedef struct {
/* 0x0000 */ u32 entranceIndex; // "scene_no"
/* 0x0004 */ u8 equippedMask; // "player_mask"
/* 0x0005 */ u8 unk_05; // "opening_flag"
/* 0x0006 */ u8 unk_06;
/* 0x0007 */ u8 linkAge; // "link_age"
/* 0x0008 */ s32 cutscene; // "day_time"
/* 0x000C */ u16 time; // "zelda_time"
/* 0x000E */ u16 owlSaveLocation;
/* 0x0010 */ s32 isNight; // "asahiru_fg"
/* 0x0014 */ u32 unk_14; // "change_zelda_time"
/* 0x0018 */ s32 day; // "totalday"
/* 0x001C */ u32 daysElapsed; // "eventday"
/* 0x0020 */ u8 playerForm; // "player_character"
/* 0x0021 */ u8 snowheadCleared; // "spring_flag"
/* 0x0022 */ u8 hasTatl; // "bell_flag"
/* 0x0023 */ u8 isOwlSave;
/* 0x0024 */ char newf[6]; // Will always be "ZELDA3" for a valid save
/* 0x002B */ u16 deaths; // "savect"
/* 0x002C */ char playerName[8]; // "player_name"
/* 0x0034 */ s16 healthCapacity; // "max_life"
/* 0x0036 */ s16 health; // "now_life"
/* 0x0038 */ s8 magicLevel; // "magic_max"
/* 0x0039 */ s8 magic; // "magic_now"
/* 0x003A */ s16 rupees; // "lupy_count"
/* 0x003C */ u16 swordHealth; // "long_sword_hp"
/* 0x003E */ u16 naviTimer; // "navi_timer"
/* 0x0040 */ u8 magicAcquired; // "magic_mode"
/* 0x0041 */ u8 doubleMagic; // "magic_ability"
/* 0x0042 */ u8 doubleDefense; // "life_ability"
/* 0x0043 */ u8 unk_43; // "ocarina_round"
/* 0x0044 */ u8 unk_44; // "first_memory"
/* 0x0046 */ u16 unk_46; // "memory_warp_point"
/* 0x0048 */ u8 unk_48; // "last_warp_pt"
/* 0x004A */ s16 savedSceneNum; // "scene_data_ID"
/* 0x004C */ ItemEquips equips;
/* 0x0070 */ Inventory inventory;
/* 0x00F8 */ u32 roomInf[128][7];
/* 0x0EF8 */ u8 weekEventReg[100]; // "week_event_reg"
/* 0x0F5C */ u32 mapsVisited; // "area_arrival"
/* 0x0F60 */ u32 unk_F60; // "cloud_clear"
/* 0x0F64 */ u8 unk_F64; // "oca_rec_flag"
/* 0x0F65 */ u8 unk_F65; // "oca_rec_flag8"
/* 0x0F66 */ u8 unk_F66[128]; // "oca_rec_buff8"
/* 0x0FE6 */ s8 unk_FE6; // "aikotoba_index"
/* 0x0FE7 */ s8 unk_FE7[5]; // "aikotoba_table"
/* 0x0FEC */ s8 lotteryCodes[3][3]; // "numbers_table"
/* 0x0FF5 */ s8 spiderHouseMaskOrder[6]; // "kinsta_color_table"
/* 0x0FFB */ s8 bomberCode[5]; // "bombers_aikotoba_table"
/* 0x1000 */ HorseData horseData;
/* 0x100A */ u16 checksum; // "check_sum"
/* 0x100C */ u8 eventInf[8];
/* 0x1014 */ u8 unk_1014; // "stone_set_flag"
/* 0x1015 */ u8 unk_1015;
/* 0x1016 */ u16 unk_1016;
/* 0x1018 */ s16 rupeeAccumulator; // "lupy_udct"
/* 0x101A */ u8 unk_101A[6]; // "bottle_status", one entry for each bottle
/* 0x1020 */ OSTime unk_1020[6]; // "bottle_ostime", one entry for each bottle
/* 0x1050 */ OSTime unk_1050[6]; // "bottle_sub", one entry for each bottle
/* 0x1080 */ OSTime unk_1080[6]; // "bottle_time", one entry for each bottle
/* 0x10B0 */ OSTime unk_10B0[6]; // "bottle_stop_time", one entry for each bottle
/* 0x10E0 */ u64 pictoPhoto[1400]; // buffer containing the pictograph photo
/* 0x3CA0 */ s32 fileNum; // "file_no"
/* 0x3CA4 */ s16 powderKegTimer; // "big_bom_timer"
/* 0x3CA6 */ u8 unk_3CA6;
/* 0x3CA7 */ u8 unk_3CA7; // "day_night_flag"
/* 0x3CA8 */ s32 gameMode; // "mode"
/* 0x3CAC */ s32 sceneSetupIndex; // "counter"
/* 0x3CB0 */ s32 respawnFlag; // "restart_flag"
/* 0x3CB4 */ RespawnData respawn[8]; // "restart_data"
/* 0x3DB4 */ f32 entranceSpeed; // "player_wipe_speedF"
/* 0x3DB8 */ u16 entranceSound; // "player_wipe_door_SE"
/* 0x3DBA */ u8 unk_3DBA; // "player_wipe_item"
/* 0x3DBB */ u8 unk_3DBB; // "next_walk"
/* 0x3DBC */ u16 dogParams; // "dog_flag"
/* 0x3DBE */ u8 textTriggerFlags; // "guide_status"
/* 0x3DBF */ u8 showTitleCard; // "name_display"
/* 0x3DC0 */ s16 unk_3DC0; // "shield_magic_timer"
/* 0x3DC2 */ u8 unk_3DC2; // "pad1"
/* 0x3DC8 */ OSTime unk_3DC8; // "get_time"
/* 0x3DD0 */ u8 unk_3DD0[7]; // "event_fg"
/* 0x3DD7 */ u8 unk_3DD7[7]; // "calc_flag"
/* 0x3DE0 */ OSTime unk_3DE0[7]; // "event_ostime"
/* 0x3E18 */ OSTime unk_3E18[7]; // "event_sub"
/* 0x3E50 */ OSTime unk_3E50[7]; // "func_time"
/* 0x3E88 */ OSTime unk_3E88[7]; // "func_end_time"
/* 0x3EC0 */ OSTime unk_3EC0[7]; // "func_stop_time"
/* 0x3EF8 */ s16 timerX[7]; // "event_xp"
/* 0x3F06 */ s16 timerY[7]; // "event_yp"
/* 0x3F14 */ s16 unk_3F14; // "character_change"
/* 0x3F16 */ u8 seqIndex; // "old_bgm"
/* 0x3F17 */ u8 nightSeqIndex; // "old_env"
/* 0x3F18 */ u8 buttonStatus[6]; // "button_item"
/* 0x3F1E */ u8 unk_3F1E; // "ck_fg"
/* 0x3F20 */ u16 unk_3F20; // "alpha_type"
/* 0x3F22 */ u16 unk_3F22; // "prev_alpha_type"
/* 0x3F24 */ u16 unk_3F24; // "alpha_count"
/* 0x3F26 */ u16 unk_3F26; // "last_time_type"
/* 0x3F28 */ s16 unk_3F28; // "magic_flag"
/* 0x3F2A */ s16 unk_3F2A; // "recovery_magic_flag"
/* 0x3F2C */ s16 unk_3F2C; // "keep_magic_flag"
/* 0x3F2E */ s16 unk_3F2E; // "magic_now_max"
/* 0x3F30 */ s16 unk_3F30; // "magic_now_now"
/* 0x3F32 */ s16 unk_3F32; // "magic_used"
/* 0x3F34 */ s16 unk_3F34; // "magic_recovery"
/* 0x3F36 */ u16 mapIndex; // "scene_ID"
/* 0x3F38 */ u16 minigameState; // "yabusame_mode"
/* 0x3F3A */ u16 minigameScore; // "yabusame_total"
/* 0x3F3C */ u16 unk_3F3C; // "yabusame_out_ct"
/* 0x3F3E */ u8 unk_3F3E; // "no_save"
/* 0x3F3F */ u8 unk_3F3F; // "flash_flag"
/* 0x3F40 */ u16 option_id; // "option_id"
/* 0x3F42 */ u8 language; // "j_n"
/* 0x3F43 */ u8 audioSetting; // "s_sound"
/* 0x3F44 */ u8 unk_3F44; // "language"
/* 0x3F45 */ u8 zTargetSetting; // 0: Switch; 1: Hold
/* 0x3F46 */ u16 unk_3F46; // "NottoriBgm"
/* 0x3F48 */ u8 unk_3F48; // "fade_go"
/* 0x3F4A */ u16 unk_3F4A; // "next_daytime"
/* 0x3F4C */ u8 cutsceneTrigger; // "doukidemo"
/* 0x3F4D */ u8 unk_3F4D; // "Kenjya_no"
/* 0x3F4E */ u16 nextDayTime; // "next_zelda_time"
/* 0x3F50 */ u8 fadeDuration; // "fade_speed"
/* 0x3F51 */ u8 unk_3F51; // "wipe_speed"
/* 0x3F52 */ u16 environmentTime; // "kankyo_time"
/* 0x3F54 */ u8 dogIsLost; // "dog_event_flag"
/* 0x3F55 */ u8 nextTransition; // "next_wipe"
/* 0x3F56 */ s16 worldMapArea; // "area_type"
/* 0x3F58 */ s16 unk_3F58; // "sunmoon_flag"
/* 0x3F5A */ s16 healthAccumulator; // "life_mode"
/* 0x3F5C */ s32 unk_3F5C; // "bet_rupees"
/* 0x3F60 */ u8 unk_3F60; // "framescale_flag"
/* 0x3F64 */ f32 unk_3F64; // "framescale_scale"
/* 0x3F68 */ u32 unk_3F68[5][120];
/* 0x48C8 */ u16 unk_48C8; // "scene_id_mix"
/* 0x48CA */ u8 unk_48CA[27];
} SaveContext; // size = 0x48C8
typedef enum {
/* 0x00 */ RESPAWN_MODE_VOID_OUT,
/* 0x01 */ RESPAWN_MODE_GROTTO, // Exiting a grotto
/* 0x02 */ RESPAWN_MODE_FARORES_WIND, // Unused in MM
/* 0x03 */ RESPAWN_MODE_GORON,
/* 0x04 */ RESPAWN_MODE_ZORA,
/* 0x05 */ RESPAWN_MODE_DEKU,
/* 0x06 */ RESPAWN_MODE_CHILD_LINK,
/* 0x07 */ RESPAWN_MODE_UNK_7,
/* 0x07 */ RESPAWN_MODE_UNK_8,
} RespawnMode;
typedef enum {
/* 0x00 */ BTN_ENABLED,
/* 0xFF */ BTN_DISABLED = 0xFF
} ButtonStatus;
#endif
+2 -6
View File
@@ -329,15 +329,11 @@ typedef struct {
} EntranceTableEntry; // size = 0x4
typedef struct {
/* 0x0 */ u32 tableCount : 8;
/* 0x0 */ u32 tableCount : 8; // unused
/* 0x4 */ EntranceTableEntry** table;
/* 0x8 */ char* name;
/* 0x8 */ char* name; // unused
} SceneEntranceTableEntry; // size = 0xC
typedef struct {
/* 0x00 */ u16 scenes[27];
} SceneIdList; // size = 0x36
typedef struct {
/* 0x00 */ s16 id; // Negative ids mean that the object is unloaded
/* 0x02 */ UNK_TYPE1 pad2[0x2];