mirror of
https://github.com/zeldaret/ph
synced 2026-05-23 06:54:18 -04:00
1570b7d2d6
* ActorItemSellerBase OK * Fix broken matches
130 lines
3.7 KiB
C++
130 lines
3.7 KiB
C++
#include "GameStart/GameStart.hpp"
|
|
#include "Game/Game.hpp"
|
|
#include "Game/GameMode.hpp"
|
|
#include "Save/SaveItemManager.hpp"
|
|
#include "System/OverlayManager.hpp"
|
|
#include "Unknown/UnkStruct_020e9360.hpp"
|
|
#include "Unknown/UnkStruct_020e9370.hpp"
|
|
#include "Unknown/UnkStruct_020ec7dc.hpp"
|
|
#include "Unknown/UnkStruct_020ee0a0.hpp"
|
|
#include "Unknown/UnkStruct_020ee698.hpp"
|
|
#include "Unknown/UnkStruct_020ee6f8.hpp"
|
|
#include "Unknown/UnkStruct_020ee734.hpp"
|
|
#include "Unknown/UnkStruct_020ee820.hpp"
|
|
#include "Unknown/UnkStruct_020eec60.hpp"
|
|
#include "Unknown/UnkStruct_020eec68.hpp"
|
|
#include "Unknown/UnkStruct_020eec9c.hpp"
|
|
#include "Unknown/UnkStruct_020eed2c.hpp"
|
|
#include "Unknown/UnkStruct_027e0d54.hpp"
|
|
#include "Unknown/UnkStruct_027e0dbc.hpp"
|
|
#include "Unknown/UnkStruct_027e0f88.hpp"
|
|
#include "Unknown/UnkStruct_func_0201f704.hpp"
|
|
|
|
#pragma dont_reuse_strings off
|
|
|
|
extern "C" {
|
|
// SDK functions
|
|
void func_02003f74(unk32);
|
|
void func_02003ce4(unk32);
|
|
void func_02004730(unk32);
|
|
|
|
unk32 *MountCompressedNarc(char *, char *, unk8 *, unk32, unk32);
|
|
void func_02031e1c(u32 *, const char *);
|
|
void func_02027ab4(unk32, u32 *, UNK_PTR, UNK_PTR, unk32, unk32, unk32, unk32);
|
|
unk32 func_02016fcc(unk32 *);
|
|
void func_02004ba8();
|
|
void func_02004b94();
|
|
void func_02004c68();
|
|
void func_020425e0();
|
|
void func_ov000_0207a654(unk32 *);
|
|
}
|
|
|
|
extern unk32 data_ov000_020ec754;
|
|
extern unk32 data_ov000_020d8795;
|
|
extern u8 data_ov000_020d88b4[24];
|
|
|
|
#define REG_DISPCNT (*(u32 *) 0x04000000)
|
|
#define REG_DISPCNT_SUB (*(u32 *) 0x04001000)
|
|
#define FRAME_COUNTER (*(u32 *) 0x027ffc3c)
|
|
|
|
ARM GameStart *GameStart::Create(GameModeId modeId) {
|
|
return new(data_027e0ce0[1], 4) GameStart(modeId);
|
|
}
|
|
|
|
ARM GameStart::GameStart(GameModeId modeId) :
|
|
GameMode(modeId) {
|
|
unk32 *uVar1;
|
|
unk32 local_14;
|
|
unk32 local_18;
|
|
u32 local_1c;
|
|
unk32 local_20;
|
|
unk32 local_24;
|
|
u32 local_28;
|
|
|
|
this->mUnk_008 = 0;
|
|
this->mUnk_00c = 0;
|
|
|
|
func_02003f74(1);
|
|
func_02003ce4(2);
|
|
func_02004730(4);
|
|
|
|
REG_DISPCNT &= ~0x1F00;
|
|
REG_DISPCNT |= 0x1100;
|
|
|
|
REG_DISPCNT_SUB &= ~0x1F00;
|
|
REG_DISPCNT_SUB |= 0x0100;
|
|
|
|
uVar1 = MountCompressedNarc("NLG", "Menu/Bg/NintendoLogo.bin", data_020691a0, 0xCC00, 1);
|
|
func_02031e1c(&local_28, "NLG:nLogo");
|
|
func_02031e1c(&local_1c, "NLG:rightTxt");
|
|
func_02027ab4(0, &local_28, &local_24, &local_20, 0, 0, 0, 2);
|
|
func_02027ab4(4, &local_1c, &local_18, &local_14, 0, 0, 0, 2);
|
|
func_02016fcc(uVar1);
|
|
}
|
|
|
|
ARM GameStart::~GameStart() {
|
|
func_02004ba8();
|
|
func_02004b94();
|
|
func_02004c68();
|
|
}
|
|
|
|
ARM GameModeId GameStart::vfunc_08(bool param1) {
|
|
GameModeId mode = GameModeId_Load;
|
|
|
|
switch (gGame.mFadeControl.mState) {
|
|
case 1:
|
|
if (!param1) {
|
|
this->mUnk_008++;
|
|
if (this->mUnk_008 == 1) {
|
|
this->mUnk_00c = FRAME_COUNTER;
|
|
} else {
|
|
if (this->mUnk_008 == 2 && gGame.mPrevModeId == 1) {
|
|
GameStart::func_ov008_02112e88();
|
|
}
|
|
if (FRAME_COUNTER - this->mUnk_00c >= 60) {
|
|
gGame.func_0202cec8(1, 0);
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
case 0:
|
|
mode = GameModeId_Adventure;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return mode;
|
|
}
|
|
|
|
ARM void GameStart::vfunc_10(u16 *param1) {}
|
|
|
|
ARM void GameStart::func_ov008_02112e88() {
|
|
func_020425e0();
|
|
gOverlayManager.Load(OverlayIndex_Core, OverlayId_Core);
|
|
data_ov000_020ee734.func_ov008_021131ac();
|
|
data_027e0d54.func_ov008_02112f28();
|
|
UnkStruct_027e0f88::func_ov008_02113678(data_027e0ce0[0]);
|
|
func_ov000_0207a654(&data_ov000_020ec754);
|
|
}
|