mirror of
https://github.com/zeldaret/st
synced 2026-08-06 09:53:03 -04:00
8d759ee331
* 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
71 lines
2.4 KiB
C++
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);
|
|
}
|