1
0
Fork 0
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:
Dragorn421 2023-08-13 21:24:26 +02:00 committed by GitHub
parent e272186b5f
commit 6e7a6d4181
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
107 changed files with 1819 additions and 1751 deletions

View file

@ -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') || \

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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);
}

View file

@ -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;
}