Files
st/src/019_MainSelect/GameModeFileSelect.cpp
T
Yanis 8d759ee331 Decompile overlay 1 (Part 7) (#106)
* run ninja format

* delink what's left from overlay 1 (except dsprotect)

* fix regressions

* UnkStruct_027e0ce0_1C_001 97%

* UnkStruct_0204a110_001 OK

* UnkStruct_ov024_020d86a0_001 OK

* UnkStruct_ov000_020b50c0_001 OK

* GameModeCreate OK

* AdventureModeManager_001 OK

* GameModeAdventure_001 OK

* AdventureModeManager_001 OKn't because weak issues

* ZeldaCollisionBinary OK

* UnkStruct_027e09c0_001 OK

* UnkStruct_ov000_020b504c_001 OK

* UnkStruct_ov000_02067bc4.hpp -> UnkStruct_ov000_020b504c.hpp

* match overlay 97

* match overlay 100

* run ninja format
2026-07-13 18:41:32 +02:00

71 lines
2.4 KiB
C++

#include "Game/GameModeFileSelect.hpp"
#include "FileSelect/FileSelect.hpp"
#include "Game/Game.hpp"
#include "Game/GameModeAdventure.hpp"
#include "Game/GameModeContactMode.hpp"
#include "Game/GameModeDownloadPlay.hpp"
#include "Save/AdventureFlags.hpp"
#include "Unknown/UnkStruct_02049bd4.hpp"
#include "Unknown/UnkStruct_0204a060.hpp"
#include "Unknown/UnkStruct_0204a088.hpp"
#include "Unknown/UnkStruct_0204a110.hpp"
#include "Unknown/UnkStruct_ov000_020b50c0.hpp"
#include "Unknown/UnkStruct_ov000_020b51b8.hpp"
static const UnkStruct_ov019_020d1d80 data_ov019_020d1d80(0x00020001);
GameModeFileSelect *GameModeFileSelect::Create() {
return new(HeapIndex_1) GameModeFileSelect();
}
GameModeFileSelect::~GameModeFileSelect() {
data_0204a088->func_ov000_02061098();
gSaveManager.func_ov001_020ba7c8(this->mSaveSlotIndex);
data_ov000_020b504c.func_ov001_020be6f4();
data_02049bd4.func_02014c60(2);
data_ov000_020b51b8.func_ov000_0206d0bc(1);
data_ov000_020b50c0.func_ov001_020bd8dc();
}
// https://decomp.me/scratch/bJVks
void GameModeFileSelect::vfunc_08() {
gSaveManager.func_ov019_020d0964();
this->GameModeBase::vfunc_08();
const UnkStruct_ov019_020d1d80 *ptr2 = &data_ov019_020d1d80;
this->mUnk_04.mUnk_14 = gSaveManager.mpSaveFile;
data_ov000_020b504c.func_ov000_0206807c(ptr2->mUnk_00, &this->mUnk_04);
data_ov000_020b50c0.func_ov001_020bd8ac();
data_ov000_020b51b8.func_ov000_0206c9a8(3, 0, 0x7F, 0);
}
void GameModeFileSelect::vfunc_14() {}
void GameModeFileSelect::vfunc_0C() {
if ((this->mUnk_04.mUnk_08 & 0xFFFF) != 0xFFFF) {
this->mUnk_04.vfunc_04();
}
}
void GameModeFileSelect::vfunc_18() {}
void GameModeFileSelect::vfunc_20() {}
void GameModeFileSelect::LoadAdventureMode(u16 saveSlotIndex) {
this->mSaveSlotIndex = saveSlotIndex;
data_0204a060.func_020183d4(gSaveManager.GetSaveSlot(saveSlotIndex)->GetAdventureFlag(AdventureFlag_WatchedIntroCS),
GameModeAdventure::Create, 1);
}
void GameModeFileSelect::LoadBattleMode(u16 saveSlotIndex) {
this->mSaveSlotIndex = saveSlotIndex;
// note: GameModeDownloadPlay::Create calls GameModeBattle::Create at some point
data_0204a060.func_020183d4(true, GameModeDownloadPlay::Create, 1);
}
void GameModeFileSelect::LoadContactMode(u16 saveSlotIndex) {
this->mSaveSlotIndex = saveSlotIndex;
data_0204a060.func_020183d4(true, GameModeContactMode::Create, 1);
}