change everything to use a common types file

This commit is contained in:
Elijah Thomas
2023-12-24 09:59:13 -05:00
parent d8362c1004
commit e32db6f07a
213 changed files with 3516 additions and 3277 deletions
+15 -15
View File
@@ -1,34 +1,34 @@
#pragma once
#include "types.h"
#include <common.h>
// Ghidra: ArcManagerEntry
// size: 0x40
struct ArcManagerEntry {
/* 0x00 */ char arc_name[0x20];
/* 0x20 */ u16 ref_count;
/* 0x24 */ int dvd_req_ptr;
/* 0x28 */ int archive_ptr;
/* 0x2C */ int heap_ptr_0;
/* 0x20 */ u16 ref_count;
/* 0x24 */ int dvd_req_ptr;
/* 0x28 */ int archive_ptr;
/* 0x2C */ int heap_ptr_0;
/* 0x30 */ char field_0x30[0x3C - 0x30];
/* 0x3C */ int heap_ptr_1;
/* 0x3C */ int heap_ptr_1;
};
// Ghidra: ArcManagerEntryTable
// size: 0xC
class ArcMangerEntryTable{
public:
/* 0x0 */ ArcManagerEntry* entries;
/* 0x4 */ u16 count;
/* 0x8 */ u32 field_0x8;
public:
ArcMangerEntryTable();
class ArcMangerEntryTable {
public:
/* 0x0 */ ArcManagerEntry *entries;
/* 0x4 */ u16 count;
/* 0x8 */ u32 field_0x8;
public:
ArcMangerEntryTable();
};
class OarcManager {
public:
void* getDataFromOarc(char* oarcName, char* fileName);
void *getDataFromOarc(char *oarcName, char *fileName);
};
OarcManager g_OarcManager;
+3 -3
View File
@@ -1,13 +1,13 @@
#pragma once
#include "types.h"
#include <common.h>
class BitwiseFlagHelper {
public:
public:
bool checkFlag(u16 slot, u16 shift, const u16 *pData, u16 flagCount);
bool checkFlag2(u16 slot, u16 shift, const u16 *pData, s32 flagCount) {
return checkFlag(slot, shift, pData, flagCount);
}
void setFlag(u16 slot, u16 shift, u16 *pData, u16 flagCount);
void unsetFlag(u16 slot, u16 shift, u16 *pData, u16 flagCount);
};
};
+92 -90
View File
@@ -1,86 +1,89 @@
#include "types.h"
#include "egg/core/eggHeap.h"
#include "m/m_vec.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "toBeSorted/save_file.h"
#include <common.h>
enum ITEM_ID {};
enum SAVE_ITEM_ID {};
class FileManager {
public:
/* 0x0000 */ void* mpSavedSaveFiles;
/* 0x0004 */ void* mpSkipData; // skip data Arrary (3 entries )
/* 0x0008 */ SaveFile mFileA;
/* 0x53C8 */ SaveFile mFileB;
/* 0xA788 */ u16 mSkipFlags[16];
/* 0xA7A8 */ u32 mSkipFlagsCRC;
/* 0xA7AC */ wchar_t mHeroNames[3][9]; // each name is 9 wchars
/* 0xA7E2 */ wchar_t mHeroName[9]; // The current Hero Name
/* 0xA7F4 */ char mCurrentArea[32];
/* 0xA814 */ u32 m_0xA814;
/* 0xA818 */ s64 mPlayTime[3];
/* 0xA830 */ s16 mCurrentHealth[3];
/* 0xA836 */ s16 mCurrentHealthCapacity[3];
/* 0xA83C */ u8 mSelectedFile;
/* 0xA83D */ u8 mIsFileEmpty[3];
/* 0xA840 */ u8 mIsFileUnk1[3];
/* 0xA843 */ u8 mIsFileInvalid[3];
/* 0xA846 */ u8 mIsFileDataDirty[3];
/* 0xA849 */ u8 mIsFileSkipDataDirty[3];
/* 0xA84C */ u8 m_0xA84C;
/* 0xA84D */ u8 m_0xA84D;
/* 0xA84E */ u8 mAntiCommitFlag;
/* 0xA84F */ u8 m_0xA84F;
/* 0x0000 */ void *mpSavedSaveFiles;
/* 0x0004 */ void *mpSkipData; // skip data Arrary (3 entries )
/* 0x0008 */ SaveFile mFileA;
/* 0x53C8 */ SaveFile mFileB;
/* 0xA788 */ u16 mSkipFlags[16];
/* 0xA7A8 */ u32 mSkipFlagsCRC;
/* 0xA7AC */ wchar_t mHeroNames[3][9]; // each name is 9 wchars
/* 0xA7E2 */ wchar_t mHeroName[9]; // The current Hero Name
/* 0xA7F4 */ char mCurrentArea[32];
/* 0xA814 */ u32 m_0xA814;
/* 0xA818 */ s64 mPlayTime[3];
/* 0xA830 */ s16 mCurrentHealth[3];
/* 0xA836 */ s16 mCurrentHealthCapacity[3];
/* 0xA83C */ u8 mSelectedFile;
/* 0xA83D */ u8 mIsFileEmpty[3];
/* 0xA840 */ u8 mIsFileUnk1[3];
/* 0xA843 */ u8 mIsFileInvalid[3];
/* 0xA846 */ u8 mIsFileDataDirty[3];
/* 0xA849 */ u8 mIsFileSkipDataDirty[3];
/* 0xA84C */ u8 m_0xA84C;
/* 0xA84D */ u8 m_0xA84D;
/* 0xA84E */ u8 mAntiCommitFlag;
/* 0xA84F */ u8 m_0xA84F;
public:
// the following arent part of FileManager i dont think
// /* 80009D30 */ void fn_80009D30(); // some ctor
// /* 80009D40 */ void fn_80009D40(); // some dtor
// /* 80009D80 */ void fn_80009D80(); // return
// /* 80009D90 */ void fn_80009D90(); // return
// /* 80009DA0 */ void fn_80009DA0(); // memset(param_1, 0, 0x20) a 0x24 structure is implied here (0x20 data) a crc is at 0x24
// /* 80009DA0 */ void fn_80009DA0(); // memset(param_1, 0, 0x20) a 0x24 structure is implied here (0x20 data) a crc
// is at 0x24
/* 80009DB0 */ FileManager(); //
/* 80009EE0 */ // mVec3();
/* 80009EE0 */ // mVec3();
/* 80009EF0 */ static FileManager create(EGG::Heap*);
/* 80009F30 */ bool loadSaveData(void* out, char* name, bool isSkipData);
/* 80009F70 */ void saveSaveData(void* unk, bool isSkipData);
/* 80009EF0 */ static FileManager create(EGG::Heap *);
/* 80009F30 */ bool loadSaveData(void *out, char *name, bool isSkipData);
/* 80009F70 */ void saveSaveData(void *unk, bool isSkipData);
/* 8000A000 */ void refreshSaveFileData();
/* 8000A260 */ wchar_t* getFileHeroname(int fileNum);
/* 8000A260 */ wchar_t *getFileHeroname(int fileNum);
/* 8000A280 */ s64 getFileSaveTime(int fileNum);
/* 8000A2A0 */ s16 getFileCurrentHealth(int fileNum);
/* 8000A2C0 */ s16 getFileHealthCapacity(int fileNum);
/* 8000A2E0 */ void fn_8000A2E0(); // idk something blank save files
/* 8000A330 */ u16* getStoryFlagsMut();
/* 8000A360 */ u16* getStoryFlagsConst();
/* 8000A3B0 */ u16* getItemFlagsMut();
/* 8000A3E0 */ u16* getItemFlagsConst();
/* 8000A430 */ u16* getDungeonFlagsMut();
/* 8000A460 */ u16* getDungeonFlagsConst();
/* 8000A4B0 */ u16* getSceneFlagsMut();
/* 8000A4E0 */ u16* getSceneFlagsConst();
/* 8000A530 */ u16* getTBoxFlagsMut();
/* 8000A560 */ u16* getTBoxFlagsConst();
/* 8000A5B0 */ u16* getTempFlagsMut();
/* 8000A5E0 */ u16* getTempFlagsConst();
/* 8000A630 */ u16* getZoneFlagsMut();
/* 8000A660 */ u16* getZoneFlagsConst();
/* 8000A6B0 */ u16* getEnemyDefeatFlagsMut();
/* 8000A6E0 */ u16* getEnemyDefeatFlagsConst();
/* 8000A330 */ u16 *getStoryFlagsMut();
/* 8000A360 */ u16 *getStoryFlagsConst();
/* 8000A3B0 */ u16 *getItemFlagsMut();
/* 8000A3E0 */ u16 *getItemFlagsConst();
/* 8000A430 */ u16 *getDungeonFlagsMut();
/* 8000A460 */ u16 *getDungeonFlagsConst();
/* 8000A4B0 */ u16 *getSceneFlagsMut();
/* 8000A4E0 */ u16 *getSceneFlagsConst();
/* 8000A530 */ u16 *getTBoxFlagsMut();
/* 8000A560 */ u16 *getTBoxFlagsConst();
/* 8000A5B0 */ u16 *getTempFlagsMut();
/* 8000A5E0 */ u16 *getTempFlagsConst();
/* 8000A630 */ u16 *getZoneFlagsMut();
/* 8000A660 */ u16 *getZoneFlagsConst();
/* 8000A6B0 */ u16 *getEnemyDefeatFlagsMut();
/* 8000A6E0 */ u16 *getEnemyDefeatFlagsConst();
/* 8000A730 */ void setStoryFlags(u16* flags, u32 offset, u16 count);
/* 8000A790 */ void setItemFlags(u16* flags, u32 offset, u16 count);
/* 8000A7F0 */ void setDungeonFlags(u16* flags, u32 offset, u16 count);
/* 8000A850 */ void setSceneFlags(u16* flags, u32 offset, u16 count);
/* 8000A8B0 */ void setTBoxFlags(u16* flags, u32 offset, u16 count);
/* 8000A910 */ void setTempFlags(u16* flags, u32 offset, u16 count);
/* 8000A970 */ void setZoneFlags(u16* flags, u32 offset, u16 count);
/* 8000A9D0 */ void setEnemyDefeatFlags(u16* flags, u32 offset, u16 count);
/* 8000A730 */ void setStoryFlags(u16 *flags, u32 offset, u16 count);
/* 8000A790 */ void setItemFlags(u16 *flags, u32 offset, u16 count);
/* 8000A7F0 */ void setDungeonFlags(u16 *flags, u32 offset, u16 count);
/* 8000A850 */ void setSceneFlags(u16 *flags, u32 offset, u16 count);
/* 8000A8B0 */ void setTBoxFlags(u16 *flags, u32 offset, u16 count);
/* 8000A910 */ void setTempFlags(u16 *flags, u32 offset, u16 count);
/* 8000A970 */ void setZoneFlags(u16 *flags, u32 offset, u16 count);
/* 8000A9D0 */ void setEnemyDefeatFlags(u16 *flags, u32 offset, u16 count);
/* 8000AA30 */ u16* getSkipFlags();
/* 8000AA40 */ void setSkipFlagsChecked(u16* flags, u32 offset, u16 count);
/* 8000AA30 */ u16 *getSkipFlags();
/* 8000AA40 */ void setSkipFlagsChecked(u16 *flags, u32 offset, u16 count);
/* 8000AAA0 */ void initFile(int fileNum);
@@ -89,22 +92,22 @@ public:
/* 8000AC50 */ void setCurrentHealth(s16 health);
/* 8000AC80 */ s16 getCurrentHealth();
/* 8000ACD0 */ u16 getLoadRoomT1();
/* 8000AD20 */ u16 getLoadRoomT2();
/* 8000ACD0 */ u16 getLoadRoomT1();
/* 8000AD20 */ u16 getLoadRoomT2();
/* 8000AD70 */ void setLoadRoomT3(s16 room);
/* 8000ADA0 */ u16 getLoadRoomT3();
/* 8000ADA0 */ u16 getLoadRoomT3();
/* 8000ADF0 */ mVec3_c* getPosT1();
/* 8000AE40 */ void setPosT2(mVec3_c* pos);
/* 8000AE90 */ mVec3_c* getPosT2();
/* 8000AEE0 */ void setPosT3(mVec3_c* pos);
/* 8000AF30 */ mVec3_c* getPosT3();
/* 8000ADF0 */ mVec3_c *getPosT1();
/* 8000AE40 */ void setPosT2(mVec3_c *pos);
/* 8000AE90 */ mVec3_c *getPosT2();
/* 8000AEE0 */ void setPosT3(mVec3_c *pos);
/* 8000AF30 */ mVec3_c *getPosT3();
/* 8000AF80 */ s16 getAngleT1();
/* 8000AF80 */ s16 getAngleT1();
/* 8000AFD0 */ void setAngleT2(s16 angle);
/* 8000B000 */ s16 getAngleT2();
/* 8000B000 */ s16 getAngleT2();
/* 8000B050 */ void setAngleT3(s16 angle);
/* 8000B080 */ s16 getAngleT3();
/* 8000B080 */ s16 getAngleT3();
/* 8000B0D0 */ void setPouchData(s32 slot, u32 slotData);
/* 8000B130 */ u32 getPouchData(s32 slot);
@@ -119,7 +122,7 @@ public:
/* 8000B480 */ ITEM_ID getItemCheckItem(u32 idx);
/* 8000B4B0 */ void setItemCheckUpperData(u32 idx, u32 itemData);
/* 8000B540 */ u32 getItemCheckUpperData();
/* 8000B570 */ void setEquippedItem(u8 bWheelItem);
/* 8000B5A0 */ u8 getEquippedItem();
/* 8000B5F0 */ void setSelectedPouchSlot(u8 slot);
@@ -143,8 +146,8 @@ public:
/* 8000B9F0 */ void setDowsingSlotIdx(u8 idx);
/* 8000BA20 */ u8 getDowsingSlotIdx();
/* 8000BA70 */ void setBeaconPos(u32 beaconArea, u32 beaconNum, mVec3_c* pos);
/* 8000BB80 */ mVec3_c* getBeaconPos(u32 beaconArea, u32 beaconNum);
/* 8000BA70 */ void setBeaconPos(u32 beaconArea, u32 beaconNum, mVec3_c *pos);
/* 8000BB80 */ mVec3_c *getBeaconPos(u32 beaconArea, u32 beaconNum);
/* 8000BC70 */ void setEnemyKillCount(u32 enemy, u16 killCount);
/* 8000BCE0 */ u16 getEnemyKillCount(u32 enemy);
/* 8000BD60 */ void setHitCountFromEnemy(u32 enemy, u16 hitCount);
@@ -153,9 +156,9 @@ public:
/* 8000BE50 */ void setLoadRoomT1_FileB(s16 roomId);
/* 8000BE80 */ s16 getLoadRoomT1_FileB();
/* 8000BE90 */ void setEntranceT1_FileB(u8 entrance);
/* 8000BEC0 */ u8 getEntranceT1_FileB();
/* 8000BED0 */ void setAreaT1_FileB(const char* name);
/* 8000BF80 */ char* getAreaT1_FileB();
/* 8000BEC0 */ u8 getEntranceT1_FileB();
/* 8000BED0 */ void setAreaT1_FileB(const char *name);
/* 8000BF80 */ char *getAreaT1_FileB();
/* 8000C080 */ void setNightT1_FileB(bool night);
/* 8000C0B0 */ bool getNightT1_FileB();
/* 8000C0C0 */ void setEntranceT1LoadFlag_FileB(u8 flag);
@@ -163,13 +166,13 @@ public:
/* 8000C120 */ void getForcedLayerT1_FileB();
/* 8000C130 */ void setCurrentHealth_FileB(s16 health);
/* 8000C160 */ void setHeroname(const wchar_t* name);
/* 8000C230 */ wchar_t* getHeroname();
/* 8000C160 */ void setHeroname(const wchar_t *name);
/* 8000C230 */ wchar_t *getHeroname();
/* 8000C360 */ char* getAreaT1();
/* 8000C470 */ char* getAreaT2();
/* 8000C580 */ void setAreaT3(const char* name);
/* 8000C630 */ char* getAreaT3();
/* 8000C360 */ char *getAreaT1();
/* 8000C470 */ char *getAreaT2();
/* 8000C580 */ void setAreaT3(const char *name);
/* 8000C630 */ char *getAreaT3();
/* 8000C740 */ u8 getForcedLayerT1();
/* 8000C790 */ u8 getForcedLayerT2();
@@ -199,7 +202,7 @@ public:
/* 8000CC50 */ void setFileTimes();
/* 8000CCB0 */ void setPlayTime(s64 time);
/* 8000CCF0 */ s64 getSavedTime();
/* 8000CCF0 */ s64 getSavedTime();
/* 8000CD40 */ void setSavedTime(s64 time);
/* 8000CD80 */ void setBeedleShopPathSegment(u32 path);
@@ -239,11 +242,11 @@ public:
/* 80010350 */ void copyFileSkipData(int fileNum);
/* 80010440 */ void clearTempFileData();
/* 800104A0 */ void saveAfterCredits();
/* 80011210 */ SaveFile* getCurrentFile();
/* 80011250 */ u16* getSkipFlags2();
/* 80011260 */ SaveFile* getFileA();
/* 80011270 */ SaveFile* getFileB();
/* 80011280 */ void calcFileCRC(const SaveFile* file, u32 length);
/* 80011210 */ SaveFile *getCurrentFile();
/* 80011250 */ u16 *getSkipFlags2();
/* 80011260 */ SaveFile *getFileA();
/* 80011270 */ SaveFile *getFileB();
/* 80011280 */ void calcFileCRC(const SaveFile *file, u32 length);
/* 80011290 */ void updateEmptyFiles();
/* 800112D0 */ void updateEmptyFileFlags();
/* 80011370 */ bool isFileEmpty(int fileNum);
@@ -253,13 +256,12 @@ public:
/* 80011440 */ bool checkFileCRC(int fileNum);
/* 80011490 */ bool isFileInactive();
/* 80011500 */ void setPlayerInfoFileA();
/* 800115E0 */ void setT3Info(mVec3_c* pos, mAng3_c* rot);
/* 800116C0 */ static void getRegionVersion(char* out);
/* 800115E0 */ void setT3Info(mVec3_c *pos, mAng3_c *rot);
/* 800116C0 */ static void getRegionVersion(char *out);
// /* 800116F0 */ void sinit();
static FileManager* getInstance() {
static FileManager *getInstance() {
return sInstance;
}
static FileManager *sInstance;
};
+8 -8
View File
@@ -1,25 +1,25 @@
#pragma once
#include "types.h"
#include <common.h>
struct BaseFlagSpace {
u16 *mpFlags;
u16 mCount;
BaseFlagSpace(u16 *pFlags, u16 count): mpFlags(pFlags), mCount(count) {}
BaseFlagSpace(u16 *pFlags, u16 count) : mpFlags(pFlags), mCount(count) {}
};
class FlagSpace: public BaseFlagSpace {
public:
class FlagSpace : public BaseFlagSpace {
public:
void init(u16 *pFlags, u16 count) {
mpFlags = pFlags;
mCount = count;
}
FlagSpace(u16 *pFlags, u16 count): BaseFlagSpace(pFlags, count) {}
u16* getFlagPtrChecked();
u16* getFlagPtrUnchecked();
FlagSpace(u16 *pFlags, u16 count) : BaseFlagSpace(pFlags, count) {}
u16 *getFlagPtrChecked();
u16 *getFlagPtrUnchecked();
void unsetAll();
void setAllToZero(u16 offset, u16 flagCount);
void copyFromSaveFile2(u16 *pSaved, u16 offset, u16 flagCount);
void copyFromSaveFile(u16 *pSaved, u16 offset, u16 flagCount);
virtual void filemanagerCheck();
};
};
+11 -8
View File
@@ -1,7 +1,8 @@
#pragma once
#include "types.h"
#include "d/d_base.h"
#include <common.h>
#define MAX_ROOM_NUMBER 64
@@ -9,7 +10,7 @@ class dRoom;
class RoomTable {
RoomTable();
virtual ~RoomTable();
dRoom* rooms[MAX_ROOM_NUMBER-1];
dRoom *rooms[MAX_ROOM_NUMBER - 1];
};
// OBJ NAME: STAGE
@@ -20,12 +21,14 @@ class RoomManager : public dBase_c {
public:
/* 0068 */ char field_0x68[0x7C - 0x68];
/* 007C */ RoomTable rooms;
/* 017c */ char fader[0x1a0 - 0x17c]; // size unk
/* 017c */ char fader[0x1a0 - 0x17c]; // size unk
/* 01a0 */ char mapRelated[0x39c - 0x1a0]; // size unk
/* 039c */ u32 loaded_entities[2047];
/* 2398 */ u8 curr_room_id;
/* 039c */ u32 loaded_entities[2047];
/* 2398 */ u8 curr_room_id;
public:
/* 80575760 */ static RoomManager* m_Instance;
/* 80575760 */ static RoomManager *m_Instance;
public:
/* 801b42b0 */ static dBase_c* getRoom(int roomid);
};
/* 801b42b0 */ static dBase_c *getRoom(int roomid);
};
+94 -96
View File
@@ -1,111 +1,109 @@
#pragma once
#include "types.h"
#include "UnknownTypeBelongings.h"
#include <common.h>
// Ghidra: SaveFile
// Size: 0x53c0
// non-offical name
class SaveFile {
public:
/* 0x 0000 */ char field_0x0000[0x8-0x0];
/* 0x 0008 */ s64 savedTime;
/* 0x 0000 */ char field_0x0000[0x8 - 0x0];
/* 0x 0008 */ s64 savedTime;
/* 0x 0010 */ Vec3f pos_t1;
/* 0x 001c */ Vec3f pos_t2;
/* 0x 0028 */ Vec3f pos_t3;
/* 0x 0034 */ Vec3f beacon_pos[32][5];
/* 0x 07b4 */ s32 beedleShopPathSegment;
/* 0x 07b8 */ f32 beedlShopPathSegFrac;
/* 0x 07bc */ char field_0x07BC[0x7c0 - 0x7bc];
/* 0x 07c0 */ s32 pouch_items[8];
/* 0x 07e0 */ s32 item_check_items[60];
/* 0x 08d0 */ int file_area_index;
/* 0x 08d4 */ s16 player_name[8];
/* 0x 08e4 */ u16 story_flags[128];
/* 0x 09e4 */ u16 item_flags[64];
/* 0x 0a64 */ u16 dungeon_flags[8][22];
/* 0x 0bc4 */ char field_0x0BC4[0x1a64 - 0x0bc4];
/* 0x 1a64 */ u16 scene_flags[208];
/* 0x 1c04 */ char field_0x1c04[0x2a64 - 0x1c04];
/* 0x 2a64 */ u16 tbox_flags[32]; // size is guessed
/* 0x 2aa4 */ char field_0x2AA4[0x2f64 - 0x2aa4];
/* 0x 2f64 */ u16 enemyKillCounts[100];
/* 0x 302c */ u16 hitByEnemyCounts[100];
/* 0x 30f4 */ u16 temp_flags[4];
/* 0x 30fc */ u16 zone_flags[252];
/* 0x 32f4 */ u16 unk_flags[4096]; // size guessed? (saw memset)
/* 0x 52f4 */ s16 air_potion_timer;
/* 0x 52f6 */ s16 air_potion_plus_timer;
/* 0x 52f8 */ s16 stamina_potion_timer;
/* 0x 52fa */ s16 stamina_potion_plus_timer;
/* 0x 52fc */ s16 gaurdian_potion_timer;
/* 0x 52fe */ s16 gaurdian_potion_plus_timer;
/* 0x 5300 */ s16 field_0x5300;
/* 0x 5302 */ s16 health_capacity;
/* 0x 5304 */ u16 unused_heart_related;
/* 0x 5306 */ u16 current_health;
/* 0x 5308 */ u16 room_id_t1;
/* 0x 530a */ u16 room_id_t2;
/* 0x 530c */ u16 room_id_t3;
/* 0x 530e */ s16 angle_t1;
/* 0x 5310 */ s16 angle_t2;
/* 0x 5312 */ s16 angle_t3;
/* 0x 5314 */ s16 beedle_shop_rotation;
/* 0x 5316 */ u16 field_0x5316;
/* 0x 5318 */ s16 scene_flag_index;
/* 0x 531a */ u16 field_0x531A;
/* 0x 531c */ char area_t1[32];
/* 0x 533c */ s8 area_t2[32];
/* 0x 535c */ s8 area_t3[32];
/* 0x 537c */ u8 placed_beacon_flags[32];
/* 0x 539c */ u8 skykeep_puzzle[9];
/* 0x 53a5 */ u8 forced_layer_t1;
/* 0x 53a6 */ u8 forced_layer_t2;
/* 0x 53a7 */ u8 forced_layer_t3;
/* 0x 53a8 */ u8 entrance_t1;
/* 0x 53a9 */ u8 entrance_t1_load_flag;
/* 0x 53aa */ u8 entrance_t2;
/* 0x 53ab */ u8 entrance_t3;
/* 0x 53ac */ u8 field_0x53ac;
/* 0x 53ad */ bool new_file; //set on new file, unset by saving
/* 0x 53ae */ u8 equipped_b_item;
/* 0x 53af */ u8 field_0x53af;
/* 0x 53b0 */ u8 lastUsedPouchItemSlot;
/* 0x 53b1 */ u8 shield_pouch_slot;
/* 0x 53b2 */ u8 selectedDowsingSlot;
/* 0x 53b3 */ u8 night_t1;
/* 0x 53b4 */ u8 night_t3;
/* 0x 53b5 */ char field_0x53b5[0x53bc - 0x53b5];
/* 0x 53bc */ u32 checksum;
/* 0x 07b4 */ s32 beedleShopPathSegment;
/* 0x 07b8 */ f32 beedlShopPathSegFrac;
/* 0x 07bc */ char field_0x07BC[0x7c0 - 0x7bc];
/* 0x 07c0 */ s32 pouch_items[8];
/* 0x 07e0 */ s32 item_check_items[60];
/* 0x 08d0 */ int file_area_index;
/* 0x 08d4 */ s16 player_name[8];
/* 0x 08e4 */ u16 story_flags[128];
/* 0x 09e4 */ u16 item_flags[64];
/* 0x 0a64 */ u16 dungeon_flags[8][22];
/* 0x 0bc4 */ char field_0x0BC4[0x1a64 - 0x0bc4];
/* 0x 1a64 */ u16 scene_flags[208];
/* 0x 1c04 */ char field_0x1c04[0x2a64 - 0x1c04];
/* 0x 2a64 */ u16 tbox_flags[32]; // size is guessed
/* 0x 2aa4 */ char field_0x2AA4[0x2f64 - 0x2aa4];
/* 0x 2f64 */ u16 enemyKillCounts[100];
/* 0x 302c */ u16 hitByEnemyCounts[100];
/* 0x 30f4 */ u16 temp_flags[4];
/* 0x 30fc */ u16 zone_flags[252];
/* 0x 32f4 */ u16 unk_flags[4096]; // size guessed? (saw memset)
/* 0x 52f4 */ s16 air_potion_timer;
/* 0x 52f6 */ s16 air_potion_plus_timer;
/* 0x 52f8 */ s16 stamina_potion_timer;
/* 0x 52fa */ s16 stamina_potion_plus_timer;
/* 0x 52fc */ s16 gaurdian_potion_timer;
/* 0x 52fe */ s16 gaurdian_potion_plus_timer;
/* 0x 5300 */ s16 field_0x5300;
/* 0x 5302 */ s16 health_capacity;
/* 0x 5304 */ u16 unused_heart_related;
/* 0x 5306 */ u16 current_health;
/* 0x 5308 */ u16 room_id_t1;
/* 0x 530a */ u16 room_id_t2;
/* 0x 530c */ u16 room_id_t3;
/* 0x 530e */ s16 angle_t1;
/* 0x 5310 */ s16 angle_t2;
/* 0x 5312 */ s16 angle_t3;
/* 0x 5314 */ s16 beedle_shop_rotation;
/* 0x 5316 */ u16 field_0x5316;
/* 0x 5318 */ s16 scene_flag_index;
/* 0x 531a */ u16 field_0x531A;
/* 0x 531c */ char area_t1[32];
/* 0x 533c */ s8 area_t2[32];
/* 0x 535c */ s8 area_t3[32];
/* 0x 537c */ u8 placed_beacon_flags[32];
/* 0x 539c */ u8 skykeep_puzzle[9];
/* 0x 53a5 */ u8 forced_layer_t1;
/* 0x 53a6 */ u8 forced_layer_t2;
/* 0x 53a7 */ u8 forced_layer_t3;
/* 0x 53a8 */ u8 entrance_t1;
/* 0x 53a9 */ u8 entrance_t1_load_flag;
/* 0x 53aa */ u8 entrance_t2;
/* 0x 53ab */ u8 entrance_t3;
/* 0x 53ac */ u8 field_0x53ac;
/* 0x 53ad */ bool new_file; // set on new file, unset by saving
/* 0x 53ae */ u8 equipped_b_item;
/* 0x 53af */ u8 field_0x53af;
/* 0x 53b0 */ u8 lastUsedPouchItemSlot;
/* 0x 53b1 */ u8 shield_pouch_slot;
/* 0x 53b2 */ u8 selectedDowsingSlot;
/* 0x 53b3 */ u8 night_t1;
/* 0x 53b4 */ u8 night_t3;
/* 0x 53b5 */ char field_0x53b5[0x53bc - 0x53b5];
/* 0x 53bc */ u32 checksum;
// ----------------------------------------------------------
// NOTE: There are functions that are exactly the same code
// these end in a number, and likely one is const.
// it could also potentially be a static function
// ----------------------------------------------------------
// ----------------------------------------------------------
// NOTE: There are functions that are exactly the same code
// these end in a number, and likely one is const.
// it could also potentially be a static function
// ----------------------------------------------------------
public:
/* 800099b0 */ u16* getStoryFlags0();
/* 800099c0 */ u16* getStoryFlags1();
/* 800099d0 */ u16* getItemFlags0();
/* 800099e0 */ u16* getItemFlags1();
/* 800099F0 */ u16* getDungeonFlags0();
/* 80009A00 */ u16* getDungeonFlags1();
/* 80009A10 */ u16* getSceneFlags0();
/* 80009A20 */ u16* getSceneFlags1();
/* 80009A30 */ u16* getTboxFlags0();
/* 80009A40 */ u16* getTboxFlags1();
/* 80009A50 */ u16* getTempFlags0();
/* 80009A60 */ u16* getTempFlags1();
/* 80009A70 */ u16* getZoneFlags0();
/* 80009A80 */ u16* getZoneFlags1();
/* 80009A90 */ u16* getUnkFlags0();
/* 80009AA0 */ u16* getUnkFlags1();
/* 80009AB0 */ s16* getPlayerName(); // UTF16-BE
/* 80009AC0 */ void setAreaT1(char* name);
/* 80009BE0 */ char* getAreaT1();
/* 80009BF0 */ void setAreaT2(char* name);
/* 80009D10 */ s8* getAreaT2();
/* 80009D20 */ s8* getAreaT3();
};
/* 800099b0 */ u16 *getStoryFlags0();
/* 800099c0 */ u16 *getStoryFlags1();
/* 800099d0 */ u16 *getItemFlags0();
/* 800099e0 */ u16 *getItemFlags1();
/* 800099F0 */ u16 *getDungeonFlags0();
/* 80009A00 */ u16 *getDungeonFlags1();
/* 80009A10 */ u16 *getSceneFlags0();
/* 80009A20 */ u16 *getSceneFlags1();
/* 80009A30 */ u16 *getTboxFlags0();
/* 80009A40 */ u16 *getTboxFlags1();
/* 80009A50 */ u16 *getTempFlags0();
/* 80009A60 */ u16 *getTempFlags1();
/* 80009A70 */ u16 *getZoneFlags0();
/* 80009A80 */ u16 *getZoneFlags1();
/* 80009A90 */ u16 *getUnkFlags0();
/* 80009AA0 */ u16 *getUnkFlags1();
/* 80009AB0 */ s16 *getPlayerName(); // UTF16-BE
/* 80009AC0 */ void setAreaT1(char *name);
/* 80009BE0 */ char *getAreaT1();
/* 80009BF0 */ void setAreaT2(char *name);
/* 80009D10 */ s8 *getAreaT2();
/* 80009D20 */ s8 *getAreaT3();
};
+7 -6
View File
@@ -1,6 +1,6 @@
#pragma once
#include "types.h"
#include <common.h>
struct UnkFlagDefinition {
u8 mIndex;
@@ -9,14 +9,15 @@ struct UnkFlagDefinition {
class UnkFlagStuff {
u16 mDefinitionsCount;
UnkFlagDefinition* mpDefinitions;
UnkFlagDefinition *mpDefinitions;
public:
u16 calculateMask(s32 shift);
void doNothing(u32 unused);
UnkFlagStuff(u16 count, UnkFlagDefinition* definitions);
void prepareIndexShiftMask(u16 counterIdx, u32 flagCount, u16* pIndex, u8* pShift, u16* pMask);
UnkFlagStuff(u16 count, UnkFlagDefinition *definitions);
void prepareIndexShiftMask(u16 counterIdx, u32 flagCount, u16 *pIndex, u8 *pShift, u16 *pMask);
u16 maskForIdx(u16 index);
u32 getCounterOrFlag(u16 counterIdx, u16* pData, u32 flagCount);
void setCounterOrFlag(u16 counterIdx, u16* pData, u32 flagCount, u32 value);
u32 getCounterOrFlag(u16 counterIdx, u16 *pData, u32 flagCount);
void setCounterOrFlag(u16 counterIdx, u16 *pData, u32 flagCount, u32 value);
u32 checkFlagValid(u16 counterIdx, u32 flagCount);
};