mirror of
https://github.com/zeldaret/ph
synced 2026-07-08 13:46:28 -04:00
@@ -6,6 +6,7 @@ extern "C" {
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "Actor/ActorPlayerDummy.hpp"
|
||||
#include "DTCM/UnkStruct_027e077c.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c54.hpp"
|
||||
#include "DTCM/UnkStruct_027e103c.hpp"
|
||||
#include "Item/ItemManager.hpp"
|
||||
#include "Map/MapManager.hpp"
|
||||
@@ -946,9 +947,8 @@ ARM bool Actor::func_ov00_020c3118(unk16 param1) {
|
||||
return func_ov00_020c5924(&mPos, param1, &mRef, 2, NULL);
|
||||
}
|
||||
|
||||
extern u8 data_027e0c54;
|
||||
ARM bool Actor::func_ov00_020c313c(u32 param1) {
|
||||
return param1 == data_027e0c54;
|
||||
return param1 == data_027e0c54.mUnk_0;
|
||||
}
|
||||
|
||||
ARM void Actor::func_ov00_020c3158() {
|
||||
|
||||
+162
-15
@@ -1,8 +1,19 @@
|
||||
#include "Game/Game.hpp"
|
||||
|
||||
#include <nds/gfx.h>
|
||||
#include <nds/irq.h>
|
||||
|
||||
#include "DTCM/UnkStruct_027e037c.hpp"
|
||||
#include "DTCM/UnkStruct_027e05f8.hpp"
|
||||
#include "DTCM/UnkStruct_027e077c.hpp"
|
||||
#include "DTCM/UnkStruct_027e080c.hpp"
|
||||
#include "DTCM/UnkStruct_027e08f8.hpp"
|
||||
#include "DTCM/UnkStruct_027e08fc.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c38.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c54.hpp"
|
||||
#include "DTCM/UnkStruct_027e0e2c.hpp"
|
||||
#include "DTCM/UnkStruct_027e0ffc.hpp"
|
||||
#include "DTCM/UnkStruct_027e103c.hpp"
|
||||
#include "Game/GameModeAdventure.hpp"
|
||||
#include "Game/GameModeBattle.hpp"
|
||||
#include "Message/MessageManager.hpp"
|
||||
@@ -10,10 +21,14 @@
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "Render/FadeController.hpp"
|
||||
#include "System/OverlayManager.hpp"
|
||||
#include "System/Random.hpp"
|
||||
#include "Unknown/UnkStruct_0203dae0.hpp"
|
||||
#include "Unknown/UnkStruct_02063220.hpp"
|
||||
#include "Unknown/UnkStruct_02075dac.hpp"
|
||||
#include "Unknown/UnkStruct_020ec7dc.hpp"
|
||||
#include "Unknown/UnkStruct_020ee734.hpp"
|
||||
#include "Unknown/UnkStruct_027e0d54.hpp"
|
||||
#include "Unknown/UnkStruct_027e0dbc.hpp"
|
||||
|
||||
#define FRAME_COUNTER (*(u32 *) 0x027ffc3c)
|
||||
#define REG_POWER_CNT (*(u16 *) 0x04000304)
|
||||
@@ -21,12 +36,13 @@
|
||||
|
||||
#define GAME_MODE_DATA(id) ((GameModeData *) (((u8 *) &gGameModes) + ((id) * sizeof(GameModeData))))
|
||||
|
||||
extern unk32 data_027e0dbc;
|
||||
extern unk32 data_02068ed0;
|
||||
extern unk32 data_02068e64;
|
||||
extern unk32 data_02062d4c;
|
||||
extern unk32 data_020683f4;
|
||||
extern unk32 data_027e0d54;
|
||||
extern unk32 data_02063e4c;
|
||||
extern unk32 data_02068780;
|
||||
extern unk32 data_027e08e4;
|
||||
extern bool data_027e0f8c;
|
||||
extern unk32 data_ov009_0211e0c0;
|
||||
extern unk32 data_ov010_0211e960;
|
||||
@@ -138,23 +154,21 @@ const GameModeData gGameModes[] = {
|
||||
},
|
||||
};
|
||||
|
||||
extern "C" void func_ov000_0207b9c8(unk32 *param0);
|
||||
extern "C" void func_ov000_020d6488(unk32 *param0);
|
||||
extern "C" void func_0203d14c(unk32 *param0);
|
||||
extern "C" void func_020355e4(unk32 *param0, unk32 param1);
|
||||
extern "C" void func_02036050(u8 *param0);
|
||||
THUMB void Game::EndGameMode() {
|
||||
delete mMode;
|
||||
mMode = NULL;
|
||||
if (gOverlayManager.mLoadedOverlays[0] != -1) {
|
||||
func_ov000_0207b9c8(&data_027e0dbc);
|
||||
data_027e0dbc.func_ov000_0207b9c8();
|
||||
data_ov000_020ee734.func_ov000_020d6488();
|
||||
}
|
||||
gMessageManager.func_0203665c();
|
||||
data_027e0cbc.func_0203d5c0();
|
||||
func_0203d14c(&data_02068ed0);
|
||||
func_020355e4(&data_02068e64, 2);
|
||||
func_02036050(&data_027e0c54);
|
||||
data_027e0c54.func_02036050();
|
||||
gOverlayManager.UnloadGameMode();
|
||||
return;
|
||||
}
|
||||
@@ -164,14 +178,11 @@ extern "C" void func_0202c128(unk32 param1, u16 param2);
|
||||
extern "C" void func_02017cb0(unk32 *param0, unk32 param1);
|
||||
extern "C" void func_02031024(unk32 *param0);
|
||||
extern "C" void Fill16(int value, unsigned short *dst, int size);
|
||||
;
|
||||
extern "C" void func_02033d40(unk32 (*param0)[]);
|
||||
extern "C" void func_ov000_0207c0f0(unk32 *param0, unk32 param1);
|
||||
extern "C" void func_ov000_0207a2e8(unk32 *param0, unk32 param1);
|
||||
extern "C" void func_02036014(u8 *param0, unk32 param1);
|
||||
extern "C" void func_02035604(unk32 *param0, unk32 param1);
|
||||
extern "C" void func_0203d0c0(unk32 *param0, unk32 param1);
|
||||
extern "C" void func_ov000_0207b988(unk32 *param0, GameModeId modeId);
|
||||
extern "C" void FlushGfxQueue();
|
||||
extern "C" void func_0200eec8();
|
||||
extern "C" void func_02005778();
|
||||
@@ -195,20 +206,20 @@ THUMB bool Game::StartGameMode() {
|
||||
func_02031024(&data_020683f4);
|
||||
data_027e077c.Init(0);
|
||||
Fill16(0, (u16 *) &data_027e0d04, 6);
|
||||
func_02033d40(&data_027e0c38);
|
||||
data_027e0c38.func_02033d40();
|
||||
data_027e05f8 = UnkStruct_027e05f8();
|
||||
if (gOverlayManager.mLoadedOverlays[0] != OverlayId_None) {
|
||||
data_ov000_020ec7dc.func_ov000_0207c0f0(mModeId);
|
||||
gTouchControl.Init();
|
||||
data_027e0e2c.func_ov000_0207bcb4();
|
||||
data_027e0db0.func_ov000_0207b288(mModeId);
|
||||
func_ov000_0207a2e8(&data_027e0d54, mModeId);
|
||||
data_027e0d54.func_ov000_0207a2e8(mModeId);
|
||||
data_027e0ffc.func_ov000_020ce704();
|
||||
data_027e0f8c = false;
|
||||
}
|
||||
|
||||
gOverlayManager.LoadGameMode(mModeId);
|
||||
func_02036014(&data_027e0c54, mModeId);
|
||||
data_027e0c54.func_02036014(mModeId);
|
||||
func_02035604(&data_02068e64, mModeId);
|
||||
func_0203d0c0(&data_02068ed0, mModeId);
|
||||
data_02075dac.func_0203f904();
|
||||
@@ -216,7 +227,7 @@ THUMB bool Game::StartGameMode() {
|
||||
gMessageManager.func_02036490();
|
||||
if (gOverlayManager.mLoadedOverlays[0] != OverlayId_None) {
|
||||
data_ov000_020ee734.func_ov000_020d6438(mModeId);
|
||||
func_ov000_0207b988(&data_027e0dbc, mModeId);
|
||||
data_027e0dbc.func_ov000_0207b988(mModeId);
|
||||
}
|
||||
|
||||
mMode = GAME_MODE_DATA(mModeId)->mModeCreateFunc(mModeId);
|
||||
@@ -245,9 +256,145 @@ THUMB bool Game::StartGameMode() {
|
||||
return mFadeControl.func_0202abdc(0x20, 0);
|
||||
}
|
||||
|
||||
THUMB void Game::func_0202c974() {}
|
||||
THUMB void Game::func_0202c974() {
|
||||
this->func_0202cf34();
|
||||
}
|
||||
|
||||
THUMB void Game::func_0202c97c() {}
|
||||
ARM void Game::Run() {}
|
||||
|
||||
extern "C" void func_0200a440();
|
||||
extern "C" void func_020310fc(unk32 *param0);
|
||||
extern "C" void func_02025c7c(unk32 *param0);
|
||||
extern "C" void func_020363c8(u16 *param0, UnkStruct_027e0c54 *param1);
|
||||
extern "C" void func_02025d2c();
|
||||
extern "C" void func_0202f2ac(unk32 *param0);
|
||||
extern "C" bool func_0202f328(unk32 *param0);
|
||||
ARM void Game::Run() {
|
||||
bool bVar2;
|
||||
u32 uVar4;
|
||||
s32 iVar5;
|
||||
bool ov00Loaded;
|
||||
bool bVar6;
|
||||
s32 nextGameMode;
|
||||
u16 local_28[2];
|
||||
unk8 *vcount;
|
||||
|
||||
func_0202c97c();
|
||||
do {
|
||||
this->StartGameMode();
|
||||
do {
|
||||
data_027e0c54.func_020363b0();
|
||||
data_027e08fc.func_0202fbe4();
|
||||
bVar2 = data_027e0c54.func_02036174();
|
||||
ov00Loaded = gOverlayManager.mLoadedOverlays[0] != -1;
|
||||
data_027e0cbc.func_0203d64c(bVar2);
|
||||
if ((ov00Loaded) && (bVar2 == 0)) {
|
||||
func_0200a440();
|
||||
}
|
||||
data_027e05f8.func_0202adf4(this->mUnk_0f2, bVar2);
|
||||
data_027e08f8.func_0202f9a0(0);
|
||||
bVar6 = data_027e080c.mUnk_04 == 3 || data_027e080c.mUnk_10[0].mUnk_00 == 3;
|
||||
data_027e080c.func_0202eebc(this->mUnk_0f2);
|
||||
data_027e0d04.func_0203fe00();
|
||||
data_027e0c38.func_02033d70(bVar2);
|
||||
if (ov00Loaded) {
|
||||
gTouchControl.func_ov00_0207af38(this->mUnk_0f2, bVar2);
|
||||
if ((this->mUnk_0f4 & 7U) == 0) {
|
||||
data_027e0dbc.func_ov000_0207b9dc();
|
||||
} else {
|
||||
gRandom.Next(0);
|
||||
}
|
||||
}
|
||||
nextGameMode = 0;
|
||||
if (!bVar6) {
|
||||
nextGameMode = this->mMode->vfunc_08(bVar2);
|
||||
}
|
||||
gMessageManager.func_0203690c(bVar2);
|
||||
data_027e0cbc.func_0203d664(bVar2);
|
||||
if (this->mModeId != 1) {
|
||||
iVar5 = 1;
|
||||
if (data_027e0c54.mUnk_0) {
|
||||
iVar5 = bVar2;
|
||||
}
|
||||
if (iVar5 != 0) {
|
||||
data_ov000_020ee734.func_ov000_020d64ac();
|
||||
}
|
||||
}
|
||||
if (bVar6) {
|
||||
gFadeController.ProcessFade((u32) this->mUnk_0f2);
|
||||
if ((this->mUnk_101 == 0) && (ov00Loaded)) {
|
||||
data_027e0e2c.func_ov000_0207be84(bVar2);
|
||||
data_027e0db0.func_ov000_0207b378(bVar2);
|
||||
}
|
||||
if (this->mModeId == 2) {
|
||||
data_027e077c.func_ov009_02116364();
|
||||
}
|
||||
}
|
||||
data_027e037c.scale.x = FLOAT_TO_Q20(1.0);
|
||||
data_027e037c.scale.y = FLOAT_TO_Q20(1.0);
|
||||
data_027e037c.scale.z = FLOAT_TO_Q20(1.0);
|
||||
data_027e037c.translation.x = 0;
|
||||
data_027e037c.translation.y = 0;
|
||||
data_027e037c.translation.z = 0;
|
||||
Mat3p_InitIdentity(&data_027e037c.rotation);
|
||||
data_027e037c.flags = 0;
|
||||
FlushGfxQueue();
|
||||
GFX_FIFO_VIEWPORT = 0xbfff0000;
|
||||
this->mMode->vfunc_14(data_027e0c54.func_020361d0());
|
||||
FlushGfxQueue();
|
||||
func_020310fc(&data_02063e4c);
|
||||
func_02025c7c(&data_02068780);
|
||||
func_020363c8(local_28, &data_027e0c54);
|
||||
this->mUnk_0f0 = local_28[0];
|
||||
this->mMode->vfunc_10(&this->mUnk_0f0);
|
||||
gMessageManager.func_02036ca4((unk32) & this->mUnk_0f0);
|
||||
if (this->mModeId == 2) {
|
||||
data_027e103c->func_ov005_02103e58(&this->mUnk_0f0);
|
||||
}
|
||||
func_02025d2c();
|
||||
bool unk = (this->mUnk_0f2 >= 1);
|
||||
bVar2 = (s32) (this->mUnk_0f2 - (FRAME_COUNTER - this->mUnk_0f8) - 1) > 0;
|
||||
if (unk && bVar2) {
|
||||
do {
|
||||
if ((s32) REG_VCOUNT < 0xb0) {
|
||||
break;
|
||||
}
|
||||
} while ((s32) REG_VCOUNT <= 0xc5);
|
||||
bVar2 = (u32) this->mUnk_0f2 - (FRAME_COUNTER - this->mUnk_0f8);
|
||||
while ((0 < bVar2 + -1) ? 1 : 0) {
|
||||
func_0202f2ac(&data_027e08e4);
|
||||
bVar2 = (u32) this->mUnk_0f2 - (FRAME_COUNTER - this->mUnk_0f8);
|
||||
}
|
||||
}
|
||||
uVar4 = OS_DisableInterrupts_Irq();
|
||||
this->mUnk_100 = 1;
|
||||
GFX_FIFO_SWAP_BUFFERS = 3;
|
||||
OS_RestoreInterrupts(uVar4);
|
||||
func_0202f2ac(&data_027e08e4);
|
||||
this->mUnk_100 = 0;
|
||||
this->mUnk_0f8 = FRAME_COUNTER;
|
||||
if (gOverlayManager.mLoadedOverlays[0] != -1) {
|
||||
switch (data_027e0d54.mUnk_0f) {
|
||||
case 1:
|
||||
data_02063220.func_0202f754(2);
|
||||
break;
|
||||
case 2:
|
||||
data_02063220.func_0202f754(3);
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (nextGameMode == 0);
|
||||
while (func_0202f328(&data_027e08e4)) {
|
||||
func_0202f2ac(&data_027e08e4);
|
||||
}
|
||||
FlushGfxQueue();
|
||||
this->EndGameMode();
|
||||
FlushGfxQueue();
|
||||
this->mPrevModeId = this->mModeId;
|
||||
this->mModeId = nextGameMode;
|
||||
} while (true);
|
||||
}
|
||||
|
||||
THUMB void Game::func_0202cec8(s32 param1, unk32 param2) {}
|
||||
THUMB void Game::func_0202cf34() {}
|
||||
ARM void Game::func_0202cf44() {}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "Message/MessageManager.hpp"
|
||||
#include "Actor/ActorManager.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c54.hpp"
|
||||
#include "Game/Game.hpp"
|
||||
#include "Player/TouchControl.hpp"
|
||||
#include "System/SysNew.hpp"
|
||||
@@ -236,7 +237,7 @@ ARM bool MessageManager::func_020368f4(UnkStruct_02037750 *param_2) {
|
||||
}
|
||||
|
||||
// non-matching
|
||||
ARM void MessageManager::func_0203690c(unk32 param_2, unk32 param_3, unk32 param_4) {
|
||||
ARM void MessageManager::func_0203690c(unk32 param_2) {
|
||||
UnkStruct_020397f8 *unk_28_0;
|
||||
UnkStruct_020397f8 *unk_28_2;
|
||||
UnkStruct_02038aa0 *pSVar4;
|
||||
@@ -308,7 +309,7 @@ ARM void MessageManager::func_0203690c(unk32 param_2, unk32 param_3, unk32 param
|
||||
//! TODO: fake?
|
||||
pSVar4 = this->func_02037178((UnkSubClass1_02256FF8 *) this->mUnk_18[0]);
|
||||
|
||||
if (data_027e0c54 != 0 && pSVar4 != NULL && pSVar4->mUnk_50 != ((data_02056be4[data_027e077c.mUnk_0] & 1) != 0)) {
|
||||
if (data_027e0c54.mUnk_0 && pSVar4 != NULL && pSVar4->mUnk_50 != ((data_02056be4[data_027e077c.mUnk_0] & 1) != 0)) {
|
||||
this->mUnk_04 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#include "Unknown/UnkStruct_02038aa0.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c54.hpp"
|
||||
#include "DTCM/UnkStruct_027e103c.hpp"
|
||||
#include "Game/Game.hpp"
|
||||
#include "Message/MessageManager.hpp"
|
||||
@@ -55,7 +56,7 @@ ARM void UnkStruct_02038aa0::func_02038b74(void) {}
|
||||
|
||||
// non-matching
|
||||
ARM bool UnkStruct_02038aa0::func_02038b78() {
|
||||
if (data_027e0c54 == 0) {
|
||||
if (!data_027e0c54.mUnk_0) {
|
||||
if ((this->mUnk_50 != 0 && gMessageManager.func_02036850() != 0) ||
|
||||
(this->mUnk_50 == 0 && gMessageManager.func_02036824() != 0)) {
|
||||
return true;
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#include "Unknown/UnkStruct_020397f8.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c38.hpp"
|
||||
#include "DTCM/UnkStruct_027e0c54.hpp"
|
||||
#include "DTCM/UnkStruct_027e103c.hpp"
|
||||
#include "Game/Game.hpp"
|
||||
#include "Message/MessageManager.hpp"
|
||||
@@ -262,7 +264,7 @@ ARM void UnkStruct_020397f8::vfunc_40(s32 param1, s32 param2) {
|
||||
local_9c += param1 + local_8c + iVar6;
|
||||
local_a0 += param2 + local_90 + iVar7;
|
||||
|
||||
if (data_027e0c38[5] == 1) {
|
||||
if (data_027e0c38.mUnk_14 == 1) {
|
||||
iVar8 = func_0202ab48();
|
||||
|
||||
if (iVar8 == 0) {
|
||||
@@ -516,7 +518,7 @@ ARM void UnkStruct_020397f8::vfunc_50(EntryINF1 *param1, unk32 param2, s32 *para
|
||||
|
||||
iVar6 = param3[0];
|
||||
|
||||
if (data_027e0c54 != 0) {
|
||||
if (data_027e0c54.mUnk_0) {
|
||||
UnkStruct_020397f8 *pVar4 = gMessageManager.func_02036700();
|
||||
|
||||
if (pVar4 != NULL && pVar4->mUnk_15c > 0) {
|
||||
|
||||
Reference in New Issue
Block a user