mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-11 01:10:33 +00:00
Split SaveContext
into sub-structs (#1393)
* Split SaveContext struct * run formatter * Remove temporary-until-split stuff in z_sram * . * run formatter
This commit is contained in:
parent
e272186b5f
commit
6e7a6d4181
107 changed files with 1819 additions and 1751 deletions
|
@ -6,7 +6,7 @@
|
|||
#include "global.h"
|
||||
|
||||
|
||||
#define GET_NEWF(sramCtx, slotNum, index) (sramCtx->readBuff[gSramSlotOffsets[slotNum] + offsetof(SaveContext, newf[index])])
|
||||
#define GET_NEWF(sramCtx, slotNum, index) (sramCtx->readBuff[gSramSlotOffsets[slotNum] + offsetof(SaveContext, save.info.playerData.newf[index])])
|
||||
|
||||
#define SLOT_OCCUPIED(sramCtx, slotNum) \
|
||||
((GET_NEWF(sramCtx, slotNum, 0) == 'Z') || \
|
||||
|
|
|
@ -1490,26 +1490,28 @@ void FileSelect_LoadGame(GameState* thisx) {
|
|||
gSaveContext.hudVisibilityModeTimer = gSaveContext.magicCapacity = 0; // false, HUD_VISIBILITY_NO_CHANGE
|
||||
|
||||
// Set the fill target to be the saved magic amount
|
||||
gSaveContext.magicFillTarget = gSaveContext.magic;
|
||||
gSaveContext.magicFillTarget = gSaveContext.save.info.playerData.magic;
|
||||
// Set `magicLevel` and `magic` to 0 so `magicCapacity` then `magic` grows from nothing to respectively the full
|
||||
// capacity and `magicFillTarget`
|
||||
gSaveContext.magicLevel = gSaveContext.magic = 0;
|
||||
gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.magic = 0;
|
||||
|
||||
osSyncPrintf(VT_FGCOL(GREEN));
|
||||
osSyncPrintf("Z_MAGIC_NOW_NOW=%d MAGIC_NOW=%d\n", ((void)0, gSaveContext.magicFillTarget), gSaveContext.magic);
|
||||
osSyncPrintf("Z_MAGIC_NOW_NOW=%d MAGIC_NOW=%d\n", ((void)0, gSaveContext.magicFillTarget),
|
||||
gSaveContext.save.info.playerData.magic);
|
||||
osSyncPrintf(VT_RST);
|
||||
|
||||
gSaveContext.naviTimer = 0;
|
||||
gSaveContext.save.info.playerData.naviTimer = 0;
|
||||
|
||||
if ((gSaveContext.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_MASTER) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) &&
|
||||
(gSaveContext.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) {
|
||||
if ((gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_KOKIRI) &&
|
||||
(gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_MASTER) &&
|
||||
(gSaveContext.save.info.equips.buttonItems[0] != ITEM_SWORD_BIGGORON) &&
|
||||
(gSaveContext.save.info.equips.buttonItems[0] != ITEM_GIANTS_KNIFE)) {
|
||||
|
||||
gSaveContext.equips.buttonItems[0] = ITEM_NONE;
|
||||
swordEquipValue = (gEquipMasks[EQUIP_TYPE_SWORD] & gSaveContext.equips.equipment) >> (EQUIP_TYPE_SWORD * 4);
|
||||
gSaveContext.equips.equipment &= gEquipNegMasks[EQUIP_TYPE_SWORD];
|
||||
gSaveContext.inventory.equipment ^= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, swordEquipValue - 1);
|
||||
gSaveContext.save.info.equips.buttonItems[0] = ITEM_NONE;
|
||||
swordEquipValue =
|
||||
(gEquipMasks[EQUIP_TYPE_SWORD] & gSaveContext.save.info.equips.equipment) >> (EQUIP_TYPE_SWORD * 4);
|
||||
gSaveContext.save.info.equips.equipment &= gEquipNegMasks[EQUIP_TYPE_SWORD];
|
||||
gSaveContext.save.info.inventory.equipment ^= OWNED_EQUIP_FLAG(EQUIP_TYPE_SWORD, swordEquipValue - 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1827,7 +1829,7 @@ void FileSelect_InitContext(GameState* thisx) {
|
|||
Letterbox_SetSizeTarget(0);
|
||||
|
||||
gSaveContext.skyboxTime = CLOCK_TIME(0, 0);
|
||||
gSaveContext.dayTime = CLOCK_TIME(0, 0);
|
||||
gSaveContext.save.dayTime = CLOCK_TIME(0, 0);
|
||||
|
||||
Skybox_Init(&this->state, &this->skyboxCtx, SKYBOX_NORMAL_SKY);
|
||||
|
||||
|
|
|
@ -377,9 +377,9 @@ void FileSelect_CopyConfirm(GameState* thisx) {
|
|||
Audio_PlaySfxGeneral(NA_SE_SY_FSEL_CLOSE, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultReverb);
|
||||
} else if (CHECK_BTN_ANY(input->press.button, BTN_A | BTN_START)) {
|
||||
dayTime = gSaveContext.dayTime;
|
||||
dayTime = gSaveContext.save.dayTime;
|
||||
Sram_CopySave(this, sramCtx);
|
||||
gSaveContext.dayTime = dayTime;
|
||||
gSaveContext.save.dayTime = dayTime;
|
||||
this->fileInfoAlpha[this->copyDestFileIndex] = this->nameAlpha[this->copyDestFileIndex] = 0;
|
||||
this->nextTitleLabel = FS_TITLE_COPY_COMPLETE;
|
||||
this->actionTimer = 8;
|
||||
|
|
|
@ -438,9 +438,9 @@ void FileSelect_DrawNameEntry(GameState* thisx) {
|
|||
&gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
|
||||
&gSfxDefaultReverb);
|
||||
gSaveContext.fileNum = this->buttonIndex;
|
||||
dayTime = ((void)0, gSaveContext.dayTime);
|
||||
dayTime = ((void)0, gSaveContext.save.dayTime);
|
||||
Sram_InitSave(this, &this->sramCtx);
|
||||
gSaveContext.dayTime = dayTime;
|
||||
gSaveContext.save.dayTime = dayTime;
|
||||
this->configMode = CM_NAME_ENTRY_TO_MAIN;
|
||||
this->nameBoxAlpha[this->buttonIndex] = this->nameAlpha[this->buttonIndex] = 200;
|
||||
this->connectorAlpha[this->buttonIndex] = 255;
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
void TitleSetup_SetupTitleScreen(TitleSetupState* this) {
|
||||
gSaveContext.gameMode = GAMEMODE_TITLE_SCREEN;
|
||||
this->state.running = false;
|
||||
gSaveContext.linkAge = LINK_AGE_ADULT;
|
||||
gSaveContext.save.linkAge = LINK_AGE_ADULT;
|
||||
Sram_InitDebugSave();
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF3;
|
||||
gSaveContext.sceneLayer = 7;
|
||||
SET_NEXT_GAMESTATE(&this->state, Play_Init, PlayState);
|
||||
}
|
||||
|
|
|
@ -21,18 +21,18 @@ void MapSelect_LoadGame(MapSelectState* this, s32 entranceIndex) {
|
|||
if (gSaveContext.fileNum == 0xFF) {
|
||||
Sram_InitDebugSave();
|
||||
// Set the fill target to be the saved magic amount
|
||||
gSaveContext.magicFillTarget = gSaveContext.magic;
|
||||
gSaveContext.magicFillTarget = gSaveContext.save.info.playerData.magic;
|
||||
// Set `magicLevel` and `magic` to 0 so `magicCapacity` then `magic` grows from nothing
|
||||
// to respectively the full capacity and `magicFillTarget`
|
||||
gSaveContext.magicCapacity = 0;
|
||||
gSaveContext.magicLevel = gSaveContext.magic = 0;
|
||||
gSaveContext.save.info.playerData.magicLevel = gSaveContext.save.info.playerData.magic = 0;
|
||||
}
|
||||
gSaveContext.buttonStatus[0] = gSaveContext.buttonStatus[1] = gSaveContext.buttonStatus[2] =
|
||||
gSaveContext.buttonStatus[3] = gSaveContext.buttonStatus[4] = BTN_ENABLED;
|
||||
gSaveContext.forceRisingButtonAlphas = gSaveContext.nextHudVisibilityMode = gSaveContext.hudVisibilityMode =
|
||||
gSaveContext.hudVisibilityModeTimer = 0; // false, HUD_VISIBILITY_NO_CHANGE
|
||||
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
|
||||
gSaveContext.entranceIndex = entranceIndex;
|
||||
gSaveContext.save.entranceIndex = entranceIndex;
|
||||
gSaveContext.respawnFlag = 0;
|
||||
gSaveContext.respawn[RESPAWN_MODE_DOWN].entranceIndex = ENTR_LOAD_OPENING;
|
||||
gSaveContext.seqId = (u8)NA_BGM_DISABLED;
|
||||
|
@ -302,73 +302,73 @@ void MapSelect_UpdateMenu(MapSelectState* this) {
|
|||
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_B)) {
|
||||
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
|
||||
gSaveContext.linkAge = LINK_AGE_CHILD;
|
||||
gSaveContext.save.linkAge = LINK_AGE_CHILD;
|
||||
} else {
|
||||
gSaveContext.linkAge = LINK_AGE_ADULT;
|
||||
gSaveContext.save.linkAge = LINK_AGE_ADULT;
|
||||
}
|
||||
}
|
||||
|
||||
if (CHECK_BTN_ALL(input->press.button, BTN_Z)) {
|
||||
if (gSaveContext.cutsceneIndex == 0x8000) {
|
||||
gSaveContext.cutsceneIndex = 0;
|
||||
} else if (gSaveContext.cutsceneIndex == 0) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF0) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF1;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF1) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF2;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF2) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF3) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF4;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF4) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF5;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF5) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF6;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF6) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF7;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF7) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF8;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF8) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF9;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF9) {
|
||||
gSaveContext.cutsceneIndex = 0xFFFA;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFFA) {
|
||||
gSaveContext.cutsceneIndex = 0x8000;
|
||||
if (gSaveContext.save.cutsceneIndex == 0x8000) {
|
||||
gSaveContext.save.cutsceneIndex = 0;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF0;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF0) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF1;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF1) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF2;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF2) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF3;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF3) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF4;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF4) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF5;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF5) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF6;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF6) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF7;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF7) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF8;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF8) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF9;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF9) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFFA;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFFA) {
|
||||
gSaveContext.save.cutsceneIndex = 0x8000;
|
||||
}
|
||||
} else if (CHECK_BTN_ALL(input->press.button, BTN_R)) {
|
||||
if (gSaveContext.cutsceneIndex == 0x8000) {
|
||||
gSaveContext.cutsceneIndex = 0xFFFA;
|
||||
} else if (gSaveContext.cutsceneIndex == 0) {
|
||||
gSaveContext.cutsceneIndex = 0x8000;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF0) {
|
||||
gSaveContext.cutsceneIndex = 0;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF1) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF0;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF2) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF1;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF3) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF2;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF4) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF3;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF5) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF4;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF6) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF5;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF7) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF6;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF8) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF7;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFF9) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF8;
|
||||
} else if (gSaveContext.cutsceneIndex == 0xFFFA) {
|
||||
gSaveContext.cutsceneIndex = 0xFFF9;
|
||||
if (gSaveContext.save.cutsceneIndex == 0x8000) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFFA;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0) {
|
||||
gSaveContext.save.cutsceneIndex = 0x8000;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF0) {
|
||||
gSaveContext.save.cutsceneIndex = 0;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF1) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF0;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF2) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF1;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF3) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF2;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF4) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF3;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF5) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF4;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF6) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF5;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF7) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF6;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF8) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF7;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFF9) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF8;
|
||||
} else if (gSaveContext.save.cutsceneIndex == 0xFFFA) {
|
||||
gSaveContext.save.cutsceneIndex = 0xFFF9;
|
||||
}
|
||||
}
|
||||
|
||||
gSaveContext.nightFlag = 0;
|
||||
if (gSaveContext.cutsceneIndex == 0) {
|
||||
gSaveContext.nightFlag = 1;
|
||||
gSaveContext.save.nightFlag = 0;
|
||||
if (gSaveContext.save.cutsceneIndex == 0) {
|
||||
gSaveContext.save.nightFlag = 1;
|
||||
}
|
||||
|
||||
// user can change "opt", but it doesn't do anything
|
||||
|
@ -583,16 +583,16 @@ void MapSelect_PrintCutsceneSetting(MapSelectState* this, GfxPrint* printer, u16
|
|||
switch (csIndex) {
|
||||
case 0:
|
||||
label = GFXP_HIRAGANA " ヨル " GFXP_KATAKANA "ゴロン";
|
||||
gSaveContext.dayTime = CLOCK_TIME(0, 0);
|
||||
gSaveContext.save.dayTime = CLOCK_TIME(0, 0);
|
||||
break;
|
||||
case 0x8000:
|
||||
// clang-format off
|
||||
gSaveContext.dayTime = CLOCK_TIME(12, 0); label = GFXP_HIRAGANA "オヒル " GFXP_KATAKANA "ジャラ";
|
||||
gSaveContext.save.dayTime = CLOCK_TIME(12, 0); label = GFXP_HIRAGANA "オヒル " GFXP_KATAKANA "ジャラ";
|
||||
// clang-format on
|
||||
break;
|
||||
case 0xFFF0:
|
||||
// clang-format off
|
||||
gSaveContext.dayTime = CLOCK_TIME(12, 0); label = "デモ00";
|
||||
gSaveContext.save.dayTime = CLOCK_TIME(12, 0); label = "デモ00";
|
||||
// clang-format on
|
||||
break;
|
||||
case 0xFFF1:
|
||||
|
@ -627,7 +627,7 @@ void MapSelect_PrintCutsceneSetting(MapSelectState* this, GfxPrint* printer, u16
|
|||
break;
|
||||
};
|
||||
|
||||
gSaveContext.skyboxTime = gSaveContext.dayTime;
|
||||
gSaveContext.skyboxTime = gSaveContext.save.dayTime;
|
||||
GfxPrint_Printf(printer, "Stage:" GFXP_KATAKANA "%s", label);
|
||||
}
|
||||
|
||||
|
@ -647,8 +647,8 @@ void MapSelect_DrawMenu(MapSelectState* this) {
|
|||
GfxPrint_Init(printer);
|
||||
GfxPrint_Open(printer, POLY_OPA_DISP);
|
||||
MapSelect_PrintMenu(this, printer);
|
||||
MapSelect_PrintAgeSetting(this, printer, ((void)0, gSaveContext.linkAge));
|
||||
MapSelect_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.cutsceneIndex));
|
||||
MapSelect_PrintAgeSetting(this, printer, ((void)0, gSaveContext.save.linkAge));
|
||||
MapSelect_PrintCutsceneSetting(this, printer, ((void)0, gSaveContext.save.cutsceneIndex));
|
||||
POLY_OPA_DISP = GfxPrint_Close(printer);
|
||||
GfxPrint_Destroy(printer);
|
||||
|
||||
|
@ -751,6 +751,6 @@ void MapSelect_Init(GameState* thisx) {
|
|||
this->staticSegment = GameState_Alloc(&this->state, size, "../z_select.c", 1114);
|
||||
DmaMgr_RequestSyncDebug(this->staticSegment, (uintptr_t)_z_select_staticSegmentRomStart, size, "../z_select.c",
|
||||
1115);
|
||||
gSaveContext.cutsceneIndex = 0x8000;
|
||||
gSaveContext.linkAge = LINK_AGE_CHILD;
|
||||
gSaveContext.save.cutsceneIndex = 0x8000;
|
||||
gSaveContext.save.linkAge = LINK_AGE_CHILD;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue