mirror of
https://github.com/izzy2lost/2ship2harkinian-Android.git
synced 2026-06-19 01:20:08 -07:00
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:
co-authored by
Anghelo Carvajal
parent
cf3eb3b2e1
commit
6c86016603
+10
-10
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user