m_Do cleanup, d_resource, drawlist stuff (#145)

* d_resource / some d_stage

* setup dDlst_list_c / d_select_icon OK

* JUTXfb / some JUTVideo + various

* some J2D classes / JUTVideo/Fader attempts

* bunch of m_Do cleanup + matches / f_ap_game OK

* mDoLib_clipper::setup OK

* most of d_meter_HIO OK

* pane_class / kantera_icon_meter
This commit is contained in:
TakaRikka
2021-09-24 08:11:10 -07:00
committed by GitHub
parent 6dcfdaf8a3
commit 7374f5f2f7
261 changed files with 6757 additions and 10882 deletions
+4 -10
View File
@@ -603,12 +603,6 @@ struct dInsect_c {
/* 80110648 */ void Insect_Release();
};
struct dDlst_shadowControl_c {
/* 80055F1C */ void addReal(u32, J3DModel*);
static u8 mSimpleTexObj[32];
};
struct dDemo_object_c {
/* 80039088 */ void getActor(u8);
};
@@ -5191,7 +5185,7 @@ COMPILER_STRIP_GATE(0x8038D658, &lit_3757);
/* 8038D664-8038D6BC 019CC4 0058+00 41/50 0/0 0/0 .rodata m__19daAlinkHIO_basic_c0 */
daAlinkHIO_basic_c1 const daAlinkHIO_basic_c0::m = {
0, 20000, -10000, 8000, 1, 30, 400, 600, 16384, 1.0f, 4.0f, 0.7f, 3.0f,
false, 20000, -10000, 8000, 1, 30, 400, 600, 16384, 1.0f, 4.0f, 0.7f, 3.0f,
60.0f, 85.0f, 300.0f, 200.0f, 20.0f, 30.0f, 23.0f, 41.0f, 0.7f, 0.5f, 0.7f, 400.0f, 5000.0f};
/* 8038D6BC-8038D714 019D1C 0058+00 34/47 0/0 0/0 .rodata m__18daAlinkHIO_move_c0 */
@@ -16279,17 +16273,17 @@ asm void daAlink_c::setJumpMode() {
/* 800B4908-800B4918 0AF248 0010+00 0/0 0/0 1/1 .text getMetamorphoseNearDis__9daAlink_cCFv */
float daAlink_c::getMetamorphoseNearDis() const {
return daAlinkHIO_basic_c0::m.mMetamorphoseNearDis;
return daAlinkHIO_basic_c0::m.mTransformBlockNearDis;
}
/* 800B4918-800B4928 0AF258 0010+00 0/0 0/0 1/1 .text getMetamorphoseFarDis__9daAlink_cCFv */
float daAlink_c::getMetamorphoseFarDis() const {
return daAlinkHIO_basic_c0::m.mMetamorphoseFarDis;
return daAlinkHIO_basic_c0::m.mTransformBlockFarDis;
}
/* 800B4928-800B4938 0AF268 0010+00 0/0 0/0 1/1 .text getMetamorphoseFarAngle__9daAlink_cCFv */
s16 daAlink_c::getMetamorphoseFarAngle() const {
return daAlinkHIO_basic_c0::m.mMetamorphoseFarAngle;
return daAlinkHIO_basic_c0::m.mTransformBlockFarAngle;
}
/* 800B4938-800B4950 0AF278 0018+00 0/0 1/1 0/0 .text setMidnaMsg__9daAlink_cFv */
+96 -214
View File
@@ -4,9 +4,11 @@
//
#include "d/a/d_a_player.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor_iter.h"
#include "f_op/f_op_actor_mng.h"
//
@@ -19,21 +21,6 @@ struct mDoMtx_stack_c {
static u8 now[48];
};
struct daAlink_c {
/* 800A0744 */ void setLookPosFromOut(cXyz*);
/* 800BDF60 */ void startRestartRoom(u32, int, int, int);
/* 800D72BC */ void setDamagePoint(int, int, int, int);
/* 800E01CC */ void cancelBoomerangLock(fopAc_ac_c*);
/* 800E0244 */ void checkBoomerangChargeEnd();
/* 800E02B8 */ void checkBoomerangCarry(fopAc_ac_c*);
/* 800E7AEC */ void setFmChainPosFromOut(fopAc_ac_c*, cXyz*, int);
};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
/* 8003C400 */ void getIDRes(char const*, u16, dRes_info_c*, int);
};
struct JMath {
static u8 sincosTable_[65536];
};
@@ -161,9 +148,7 @@ extern "C" extern void* __vt__18mDoExt_transAnmBas[5];
extern "C" extern void* __vt__18J3DAnmTransformKey[5];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
//
@@ -373,52 +358,48 @@ asm void daPy_py_c::checkDrinkBottleItem(int param_0) {
#pragma pop
/* 8015EB40-8015EB68 159480 0028+00 0/0 4/4 0/0 .text checkOilBottleItem__9daPy_py_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm BOOL daPy_py_c::checkOilBottleItem(int param_0) {
nofralloc
#include "asm/d/a/d_a_player/checkOilBottleItem__9daPy_py_cFi.s"
BOOL daPy_py_c::checkOilBottleItem(int i_itemNo) {
bool isOilBottleItem = false;
if (i_itemNo == CHUCHU_YELLOW || i_itemNo == OIL_BOTTLE_2 || i_itemNo == OIL_BOTTLE) {
isOilBottleItem = true;
}
return isOilBottleItem;
}
#pragma pop
/* 8015EB68-8015EB90 1594A8 0028+00 0/0 2/2 0/0 .text checkOpenBottleItem__9daPy_py_cFi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkOpenBottleItem(int param_0) {
nofralloc
#include "asm/d/a/d_a_player/checkOpenBottleItem__9daPy_py_cFi.s"
BOOL daPy_py_c::checkOpenBottleItem(int i_itemNo) {
bool isOpenBottleItem = false;
if (i_itemNo == WATER_BOTTLE || i_itemNo == WORM || i_itemNo == FAIRY) {
isOpenBottleItem = true;
}
return isOpenBottleItem;
}
#pragma pop
/* 8015EB90-8015EBB8 1594D0 0028+00 0/0 11/11 0/0 .text checkBowItem__9daPy_py_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkBowItem(int param_0) {
nofralloc
#include "asm/d/a/d_a_player/checkBowItem__9daPy_py_cFi.s"
BOOL daPy_py_c::checkBowItem(int i_itemNo) {
bool isBowItem = false;
if (i_itemNo == BOW || i_itemNo == BOMB_ARROW || i_itemNo == HAWK_ARROW) {
isBowItem = true;
}
return isBowItem;
}
#pragma pop
/* 8015EBB8-8015EBD8 1594F8 0020+00 0/0 23/23 0/0 .text checkHookshotItem__9daPy_py_cFi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkHookshotItem(int param_0) {
nofralloc
#include "asm/d/a/d_a_player/checkHookshotItem__9daPy_py_cFi.s"
BOOL daPy_py_c::checkHookshotItem(int i_itemNo) {
bool isHookshotItem = false;
if (i_itemNo == HOOKSHOT || i_itemNo == W_HOOKSHOT) {
isHookshotItem = true;
}
return isHookshotItem;
}
#pragma pop
/* 8015EBD8-8015EC28 159518 0050+00 0/0 3/3 0/0 .text checkTradeItem__9daPy_py_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkTradeItem(int param_0) {
asm BOOL daPy_py_c::checkTradeItem(int param_0) {
nofralloc
#include "asm/d/a/d_a_player/checkTradeItem__9daPy_py_cFi.s"
}
@@ -426,35 +407,26 @@ asm void daPy_py_c::checkTradeItem(int param_0) {
/* 8015EC28-8015EC48 159568 0020+00 0/0 2/2 0/0 .text checkDungeonWarpItem__9daPy_py_cFi
*/
// regalloc
#ifdef NONMATCHING
BOOL daPy_py_c::checkDungeonWarpItem(int i_item_id) {
BOOL daPy_py_c::checkDungeonWarpItem(int i_itemNo) {
bool isDungeonWarpItem = false;
if (i_item_id == DUNGEON_EXIT || i_item_id == DUNGEON_BACK) {
if (i_itemNo == DUNGEON_EXIT || i_itemNo == DUNGEON_BACK) {
isDungeonWarpItem = true;
}
return isDungeonWarpItem;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm BOOL daPy_py_c::checkDungeonWarpItem(int param_0) {
nofralloc
#include "asm/d/a/d_a_player/checkDungeonWarpItem__9daPy_py_cFi.s"
}
#pragma pop
#endif
/* 8015EC48-8015ECB8 159588 0070+00 0/0 10/10 3/3 .text setActor__16daPy_actorKeep_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_actorKeep_c::setActor() {
nofralloc
#include "asm/d/a/d_a_player/setActor__16daPy_actorKeep_cFv.s"
void daPy_actorKeep_c::setActor() {
if (mID != -1) {
mActor = fopAcM_SearchByID(mID);
if (mActor == NULL) {
mID = -1;
}
} else {
mActor = NULL;
}
}
#pragma pop
/* 8015ECB8-8015ECFC 1595F8 0044+00 0/0 59/59 4/4 .text setData__16daPy_actorKeep_cFP10fopAc_ac_c
*/
@@ -477,15 +449,11 @@ daPy_anmHeap_c::daPy_anmHeap_c(u32 pBufferSize) {
mBufferSize = pBufferSize;
}
/* 8015ED50-8015EDAC 159690 005C+00 0/0 2/2 2/2 .text __dt__14daPy_anmHeap_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daPy_anmHeap_c::~daPy_anmHeap_c() {
nofralloc
#include "asm/d/a/d_a_player/__dt__14daPy_anmHeap_cFv.s"
daPy_anmHeap_c::~daPy_anmHeap_c() {
if (mAnimeHeap != NULL) {
mDoExt_destroySolidHeap(mAnimeHeap);
}
}
#pragma pop
void daPy_anmHeap_c::initData() {
resetIdx();
@@ -494,14 +462,22 @@ void daPy_anmHeap_c::initData() {
}
/* 8015EDC4-8015EE00 159704 003C+00 0/0 1/1 1/1 .text mallocBuffer__14daPy_anmHeap_cFv */
#ifdef NONMATCHING
void* daPy_anmHeap_c::mallocBuffer() {
void* buf = new (0x20) void*[mBufferSize];
mBuffer = buf;
return mBuffer;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_anmHeap_c::mallocBuffer() {
asm void* daPy_anmHeap_c::mallocBuffer() {
nofralloc
#include "asm/d/a/d_a_player/mallocBuffer__14daPy_anmHeap_cFv.s"
}
#pragma pop
#endif
/* 8015EE00-8015EF84 159740 0184+00 0/0 1/1 1/1 .text
* createHeap__14daPy_anmHeap_cFQ214daPy_anmHeap_c16daAlinkHEAP_TYPE */
@@ -516,126 +492,43 @@ asm void daPy_anmHeap_c::createHeap(daPy_anmHeap_c::daAlinkHEAP_TYPE param_0) {
/* ############################################################################################## */
/* 80453648-80453650 001C48 0008+00 1/0 0/0 0/0 .sdata2 sumouArcName$4614 */
extern "C" u8 sumouArcName[8];
extern "C" char sumouArcName[8];
/* 80453650-80453658 001C50 0005+03 1/0 0/0 0/0 .sdata2 ocArcName$4615 */
extern "C" u8 ocArcName[5 + 3 /* padding */];
extern "C" char ocArcName[8];
/* 80453658-80453660 001C58 0005+03 1/0 0/0 0/0 .sdata2 drArcName$4618 */
extern "C" u8 drArcName[5 + 3 /* padding */];
extern "C" char drArcName[8];
/* 80453660-80453668 001C60 0008+00 1/0 0/0 0/0 .sdata2 msDemoArcName$4619 */
extern "C" u8 msDemoArcName[8];
extern "C" char msDemoArcName[8];
/* 80453668-80453670 001C68 0006+02 1/0 0/0 0/0 .sdata2 lastGanonArcName$4620 */
extern "C" u8 lastGanonArcName[6 + 2 /* padding */];
extern "C" char lastGanonArcName[8];
/* 80453670-80453678 001C70 0006+02 1/0 0/0 0/0 .sdata2 pigGanonArcName$4621 */
extern "C" u8 pigGanonArcName[6 + 2 /* padding */];
extern "C" char pigGanonArcName[8];
/* 80393DA8-80393DB4 020408 000A+02 1/0 0/0 0/0 .rodata twglArcName$4616 */
SECTION_RODATA static u8 const twglArcName[10 + 2 /* padding */] = {
0x54,
0x57,
0x47,
0x61,
0x74,
0x65,
0x5F,
0x4C,
0x6B,
0x00,
/* padding */
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80393DA8, &twglArcName);
SECTION_RODATA static char const twglArcName[12] = "TWGate_Lk";
/* 80393DB4-80393DC0 020414 000A+02 1/0 0/0 0/0 .rodata twgwArcName$4617 */
SECTION_RODATA static u8 const twgwArcName[10 + 2 /* padding */] = {
0x54,
0x57,
0x47,
0x61,
0x74,
0x65,
0x5F,
0x57,
0x66,
0x00,
/* padding */
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x80393DB4, &twgwArcName);
SECTION_RODATA static char const twgwArcName[12] = "TWGate_Wf";
/* 803BA0A0-803BA0C0 -00001 0020+00 1/1 0/0 0/0 .data arcName$4622 */
SECTION_DATA static void* arcName[8] = {
(void*)&sumouArcName, (void*)&ocArcName, (void*)&twglArcName, (void*)&twgwArcName,
(void*)&drArcName, (void*)&msDemoArcName, (void*)&lastGanonArcName, (void*)&pigGanonArcName,
SECTION_DATA static char* arcName[8] = {
(char*)&sumouArcName, (char*)&ocArcName, (char*)&twglArcName, (char*)&twgwArcName,
(char*)&drArcName, (char*)&msDemoArcName, (char*)&lastGanonArcName, (char*)&pigGanonArcName,
};
/* 80453648-80453650 001C48 0008+00 1/0 0/0 0/0 .sdata2 sumouArcName$4614 */
SECTION_SDATA2 static u8 sumouArcName[8] = {
0x61, 0x6C, 0x53, 0x75, 0x6D, 0x6F, 0x75, 0x00,
};
SECTION_SDATA2 static char sumouArcName[8] = "alSumou";
/* 80453650-80453658 001C50 0005+03 1/0 0/0 0/0 .sdata2 ocArcName$4615 */
SECTION_SDATA2 static u8 ocArcName[5 + 3 /* padding */] = {
0x42,
0x5F,
0x6F,
0x68,
0x00,
/* padding */
0x00,
0x00,
0x00,
};
SECTION_SDATA2 static char ocArcName[8] = "B_oh";
/* 80453658-80453660 001C58 0005+03 1/0 0/0 0/0 .sdata2 drArcName$4618 */
SECTION_SDATA2 static u8 drArcName[5 + 3 /* padding */] = {
0x42,
0x5F,
0x44,
0x52,
0x00,
/* padding */
0x00,
0x00,
0x00,
};
SECTION_SDATA2 static char drArcName[8] = "B_DR";
/* 80453660-80453668 001C60 0008+00 1/0 0/0 0/0 .sdata2 msDemoArcName$4619 */
SECTION_SDATA2 static u8 msDemoArcName[8] = {
0x4C, 0x76, 0x36, 0x47, 0x61, 0x74, 0x65, 0x00,
};
SECTION_SDATA2 static char msDemoArcName[8] = "Lv6Gate";
/* 80453668-80453670 001C68 0006+02 1/0 0/0 0/0 .sdata2 lastGanonArcName$4620 */
SECTION_SDATA2 static u8 lastGanonArcName[6 + 2 /* padding */] = {
0x42,
0x5F,
0x67,
0x6E,
0x64,
0x00,
/* padding */
0x00,
0x00,
};
SECTION_SDATA2 static char lastGanonArcName[8] = "B_gnd";
/* 80453670-80453678 001C70 0006+02 1/0 0/0 0/0 .sdata2 pigGanonArcName$4621 */
SECTION_SDATA2 static u8 pigGanonArcName[6 + 2 /* padding */] = {
0x42,
0x5F,
0x6D,
0x67,
0x6E,
0x00,
/* padding */
0x00,
0x00,
};
SECTION_SDATA2 static char pigGanonArcName[8] = "B_mgn";
/* 8015EF84-8015F068 1598C4 00E4+00 3/3 0/0 0/0 .text loadData__14daPy_anmHeap_cFUs */
#pragma push
@@ -694,14 +587,10 @@ J3DAnmBase* daPy_anmHeap_c::loadDataDemoRID(u16 pID, u16 pArcNo) {
}
/* 8015F168-8015F1A0 159AA8 0038+00 1/1 4/4 0/0 .text setAnimeHeap__14daPy_anmHeap_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_anmHeap_c::setAnimeHeap() {
nofralloc
#include "asm/d/a/d_a_player/setAnimeHeap__14daPy_anmHeap_cFv.s"
void daPy_anmHeap_c::setAnimeHeap() {
mAnimeHeap->freeAll();
mDoExt_setCurrentHeap(mAnimeHeap);
}
#pragma pop
/* ############################################################################################## */
/* 803BA0C0-803BA14C 0171E0 0089+03 1/1 0/0 0/0 .data l_sightDL */
@@ -891,14 +780,15 @@ asm void daPy_sightPacket_c::setSightImage(ResTIMG* param_0) {
#pragma pop
/* 8015F398-8015F3C4 159CD8 002C+00 0/0 8/8 10/10 .text checkMasterSwordEquip__9daPy_py_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkMasterSwordEquip() {
nofralloc
#include "asm/d/a/d_a_player/checkMasterSwordEquip__9daPy_py_cFv.s"
BOOL daPy_py_c::checkMasterSwordEquip() {
u32 equipSword = dComIfGs_getSelectEquipSword();
bool isMasterSword = false;
if (equipSword == MASTER_SWORD || equipSword == LIGHT_SWORD) {
isMasterSword = true;
}
return isMasterSword;
}
#pragma pop
/* 8015F3C4-8015F3FC 159D04 0038+00 0/0 4/4 0/0 .text checkWoodShieldEquip__9daPy_py_cFv
*/
@@ -911,38 +801,24 @@ asm void daPy_py_c::checkWoodShieldEquip() {
}
#pragma pop
/* ############################################################################################## */
/* 80453684-80453688 001C84 0004+00 1/1 0/0 0/0 .sdata2 @4741 */
SECTION_SDATA2 static f32 lit_4741 = -12.5f;
/* 80453688-80453690 001C88 0004+04 1/1 0/0 0/0 .sdata2 @4742 */
SECTION_SDATA2 static f32 lit_4742[1 + 1 /* padding */] = {
57.5f,
/* padding */
0.0f,
};
BOOL daPy_py_c::checkNowWolf() {
return dComIfGp_getLinkPlayer()->i_checkWolf();
}
/* 8015F3FC-8015F424 159D3C 0028+00 0/0 4/4 3/3 .text getAttentionOffsetY__9daPy_py_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::getAttentionOffsetY() {
nofralloc
#include "asm/d/a/d_a_player/getAttentionOffsetY__9daPy_py_cFv.s"
f32 daPy_py_c::getAttentionOffsetY() {
if (checkNowWolf()) {
return -12.5f;
}
return 57.5f;
}
#pragma pop
/* 8015F424-8015F438 159D64 0014+00 0/0 17/17 33/33 .text checkNowWolfEyeUp__9daPy_py_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkNowWolfEyeUp() {
nofralloc
#include "asm/d/a/d_a_player/checkNowWolfEyeUp__9daPy_py_cFv.s"
s16 daPy_py_c::checkNowWolfEyeUp() {
return daAlink_getAlinkActorClass()->checkWolfEyeUp();
}
#pragma pop
/* 8015F438-8015F478 159D78 0040+00 0/0 0/0 1/1 .text forceRestartRoom__9daPy_py_cFiUli
*/
@@ -957,6 +833,11 @@ asm void daPy_py_c::forceRestartRoom(int param_0, u32 param_1, int param_2) {
/* 8015F478-8015F4B8 159DB8 0040+00 0/0 0/0 3/3 .text
* setFmChainPos__9daPy_py_cFP10fopAc_ac_cP4cXyzi */
#ifdef NONMATCHING
void daPy_py_c::setFmChainPos(fopAc_ac_c* param_0, cXyz* param_1, int param_2) {
daAlink_getAlinkActorClass()->setFmChainPosFromOut(param_0, param_1, param_2);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -965,6 +846,7 @@ asm void daPy_py_c::setFmChainPos(fopAc_ac_c* param_0, cXyz* param_1, int param_
#include "asm/d/a/d_a_player/setFmChainPos__9daPy_py_cFP10fopAc_ac_cP4cXyzi.s"
}
#pragma pop
#endif
/* 8015F4B8-8015F4F0 159DF8 0038+00 0/0 0/0 1/1 .text cancelFmChainGrab__9daPy_py_cFv */
#pragma push
+38 -63
View File
@@ -17,12 +17,6 @@
struct scene_class {};
struct phaseParam_c {};
struct mDoRst {
static u8 mResetData[4 + 4 /* padding */];
};
struct mDoGph_gInf_c {
static u8 mFader[4];
};
@@ -43,11 +37,6 @@ struct dMapInfo_n {
/* 8003EE5C */ void getMapPlayerPos();
};
struct dDlst_shadowControl_c {
/* 80055C74 */ void setReal(u32, s8, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*);
/* 80055F84 */ void setSimple(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj*);
};
struct dComIfG_resLoader_c {
/* 8002F314 */ dComIfG_resLoader_c();
/* 8002F328 */ ~dComIfG_resLoader_c();
@@ -1417,15 +1406,14 @@ static int phase_1(char* arc_name) {
/* 8002CE38-8002CEB4 027778 007C+00 1/0 0/0 0/0 .text phase_2__FPc */
static int phase_2(char* arc_name) {
int tmp = dComIfG_syncObjectRes(arc_name);
int syncStatus = dComIfG_syncObjectRes(arc_name);
if (tmp < 0) {
if (syncStatus < 0) {
OSReport_Error("%s.arc Sync Read Error !!\n", arc_name);
tmp = 5;
return 5;
} else {
tmp = tmp > 0 ? 0 : 2;
return syncStatus > 0 ? 0 : 2;
}
return tmp;
}
/* 8002CEB4-8002CEBC 0277F4 0008+00 1/0 0/0 0/0 .text phase_3__FPc */
@@ -1434,6 +1422,7 @@ static int phase_3(char* param_0) {
}
typedef int (*dComIfG_phaseMethod)(char*);
typedef int (*dComIfG_phaseMethod0)(phaseParam_c*);
/* ############################################################################################## */
/* 803A71B8-803A71C4 -00001 000C+00 1/1 0/0 0/0 .data l_method$5017 */
@@ -1445,6 +1434,16 @@ SECTION_DATA static dComIfG_phaseMethod l_method_5017[3] = {
/* 8002CEBC-8002CEFC 0277FC 0040+00 0/0 7/7 550/550 .text
* dComIfG_resLoad__FP30request_of_phase_process_classPCc */
#ifdef NONMATCHING
int dComIfG_resLoad(request_of_phase_process_class* param_0, char const* param_1) {
if (param_0->mPhaseStep == 2) {
return 4;
} else {
dComLbG_PhaseHandler(param_0, &l_method_5017[0], (void*)param_1);
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1453,38 +1452,38 @@ asm void dComIfG_resLoad(request_of_phase_process_class* param_0, char const* pa
#include "asm/d/com/d_com_inf_game/dComIfG_resLoad__FP30request_of_phase_process_classPCc.s"
}
#pragma pop
#endif
/* 8002CEFC-8002CF5C 02783C 0060+00 1/0 0/0 0/0 .text phase_01__FP12phaseParam_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void phase_01(phaseParam_c* param_0) {
nofralloc
#include "asm/d/com/d_com_inf_game/phase_01__FP12phaseParam_c.s"
static int phase_01(phaseParam_c* param_0) {
if (dComIfG_setObjectRes(param_0->field_0x0, 0, param_0->heap) == 0) {
return 5;
} else {
return 2;
}
}
#pragma pop
/* 8002CF5C-8002CFB8 02789C 005C+00 1/0 0/0 0/0 .text phase_02__FP12phaseParam_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void phase_02(phaseParam_c* param_0) {
nofralloc
#include "asm/d/com/d_com_inf_game/phase_02__FP12phaseParam_c.s"
static int phase_02(phaseParam_c* param_0) {
int syncStatus = dComIfG_syncObjectRes(param_0->field_0x0);
if (syncStatus < 0) {
return 5;
} else {
return syncStatus > 0 ? 0 : 2;
}
}
#pragma pop
/* 8002CFB8-8002CFC0 0278F8 0008+00 1/0 0/0 0/0 .text phase_03__FP12phaseParam_c */
static bool phase_03(phaseParam_c* param_0) {
static int phase_03(phaseParam_c* param_0) {
return false;
}
/* ############################################################################################## */
/* 803A71C4-803A71D0 -00001 000C+00 1/1 0/0 0/0 .data l_method$5051 */
SECTION_DATA static void* l_method_5051[3] = {
(void*)phase_01__FP12phaseParam_c,
(void*)phase_02__FP12phaseParam_c,
(void*)phase_03__FP12phaseParam_c,
SECTION_DATA static dComIfG_phaseMethod0 l_method_5051[3] = {
phase_01,
phase_02,
phase_03,
};
/* 8002CFC0-8002D008 027900 0048+00 1/1 3/3 0/0 .text
@@ -2331,39 +2330,15 @@ asm void dComIfG_resLoader_c::load(char const** param_0, JKRHeap* param_1) {
}
#pragma pop
/* ############################################################################################## */
/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379098 = "Stg_00";
#pragma pop
/* 8002F434-8002F478 029D74 0044+00 0/0 12/12 12/12 .text dComIfG_getStageRes__FPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dComIfG_getStageRes(char const* param_0) {
nofralloc
#include "asm/d/com/d_com_inf_game/dComIfG_getStageRes__FPCc.s"
void* dComIfG_getStageRes(char const* resName) {
return dComIfG_getStageRes("Stg_00", resName);
}
#pragma pop
/* ############################################################################################## */
/* 80378F38-80378F38 005598 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8037909F = "Xtg_00";
#pragma pop
/* 8002F478-8002F4BC 029DB8 0044+00 0/0 1/1 0/0 .text dComIfG_getOldStageRes__FPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dComIfG_getOldStageRes(char const* param_0) {
nofralloc
#include "asm/d/com/d_com_inf_game/dComIfG_getOldStageRes__FPCc.s"
void* dComIfG_getOldStageRes(char const* resName) {
return dComIfG_getStageRes("Xtg_00", resName);
}
#pragma pop
static char buf[32];
-4
View File
@@ -16,10 +16,6 @@ struct mDoCPd_c {
static u8 m_cpadInfo[256];
};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dAttDrawParam_c {
/* 80070158 */ dAttDrawParam_c();
/* 80073FC4 */ ~dAttDrawParam_c();
+131 -187
View File
@@ -4,7 +4,8 @@
//
#include "d/d_drawlist.h"
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/mtx/mtx44.h"
#include "dolphin/mtx/mtxvec.h"
@@ -30,64 +31,6 @@ struct mDoGph_gInf_c {
static u8 mBackColor[4];
};
struct mDoExt_3DlineMatSortPacket {
/* 80014E20 */ ~mDoExt_3DlineMatSortPacket();
/* 800561C8 */ mDoExt_3DlineMatSortPacket();
};
struct dKy_tevstr_c {};
struct dDlst_shadowTri_c {
/* 80056270 */ ~dDlst_shadowTri_c();
/* 80056344 */ dDlst_shadowTri_c();
};
struct dDlst_shadowSimple_c {
/* 8005520C */ void draw();
/* 800553EC */ void set(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj*);
/* 8005638C */ dDlst_shadowSimple_c();
};
struct J3DModel {};
struct dDlst_shadowReal_c {
/* 800544F0 */ void reset();
/* 80054500 */ void imageDraw(f32 (*)[4]);
/* 800545D4 */ void draw();
/* 80054BD0 */ void setShadowRealMtx(cXyz*, cXyz*, f32, f32, f32, dKy_tevstr_c*);
/* 80055028 */ void set(u32, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*, f32, f32);
/* 800551D4 */ void add(J3DModel*);
/* 800561F8 */ ~dDlst_shadowReal_c();
/* 800562D0 */ dDlst_shadowReal_c();
};
struct dDlst_shadowRealPoly_c {
/* 800569A0 */ void getTri();
/* 800569A8 */ s32 getTriMax();
};
struct cM3dGPla {};
struct cBgD_Vtx_t {};
struct dDlst_shadowPoly_c {
/* 80054288 */ void set(cBgD_Vtx_t*, u16, u16, u16, cM3dGPla*);
/* 800543B4 */ void draw();
};
struct dDlst_shadowControl_c {
/* 80055684 */ void init();
/* 80055768 */ void reset();
/* 800557C8 */ void imageDraw(f32 (*)[4]);
/* 80055A14 */ void draw(f32 (*)[4]);
/* 80055C74 */ void setReal(u32, s8, J3DModel*, cXyz*, f32, f32, dKy_tevstr_c*);
/* 80055F1C */ void addReal(u32, J3DModel*);
/* 80055F84 */ void setSimple(cXyz*, f32, f32, cXyz*, s16, f32, _GXTexObj*);
/* 80055FE8 */ void setSimpleTex(ResTIMG const*);
static u8 mSimpleTexObj[32];
};
struct dDlst_effectLine_c {
/* 80053E9C */ void draw();
/* 800541F4 */ void update(cXyz&, _GXColor&, u16, u16, u16, u16, f32, f32, f32, f32);
@@ -136,12 +79,17 @@ struct dDlst_2DM_c {
/* 80052C58 */ void draw();
};
struct cM_rnd_c {
class cM_rnd_c {
public:
/* 80053CDC */ void init(int, int, int);
/* 80053CEC */ void get();
/* 80053DE0 */ void getF(f32);
/* 80053E18 */ void getFX(f32);
/* 80053E60 */ void getValue(f32, f32);
/* 80053CEC */ f32 get();
/* 80053DE0 */ f32 getF(f32);
/* 80053E18 */ f32 getFX(f32);
/* 80053E60 */ f32 getValue(f32, f32);
/* 0x0 */ int seed0;
/* 0x4 */ int seed1;
/* 0x8 */ int seed2;
};
struct cBgS_ShdwDraw {
@@ -167,12 +115,6 @@ struct J3DUClipper {
/* 80273A44 */ void clip(f32 const (*)[4], Vec*, Vec*) const;
};
struct J3DShape {
/* 80315300 */ void loadPreDrawSetting() const;
static u8 sOldVcdVatCmd[4];
};
struct J2DPicture {
/* 800539DC */ void getTexture(u8) const;
/* 80053C44 */ void setWhite(JUtility::TColor);
@@ -395,26 +337,24 @@ extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
//
/* 80051AC0-80051ADC 04C400 001C+00 0/0 3/3 0/0 .text setViewPort__14dDlst_window_cFffffff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_window_c::setViewPort(f32 param_0, f32 param_1, f32 param_2, f32 param_3,
f32 param_4, f32 param_5) {
nofralloc
#include "asm/d/d_drawlist/setViewPort__14dDlst_window_cFffffff.s"
void dDlst_window_c::setViewPort(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4,
f32 param_5) {
mViewport = param_0;
field_0x04 = param_1;
field_0x08 = param_2;
field_0x0C = param_3;
field_0x10 = param_4;
field_0x14 = param_5;
}
#pragma pop
/* 80051ADC-80051AF0 04C41C 0014+00 0/0 4/4 0/0 .text setScissor__14dDlst_window_cFffff
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_window_c::setScissor(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
nofralloc
#include "asm/d/d_drawlist/setScissor__14dDlst_window_cFffff.s"
void dDlst_window_c::setScissor(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
mScissor = param_0;
field_0x1c = param_1;
field_0x20 = param_2;
field_0x24 = param_3;
}
#pragma pop
/* 80051AF0-80051CF0 04C430 0200+00 1/0 0/0 0/0 .text draw__13dDlst_2DTri_cFv */
#pragma push
@@ -448,7 +388,7 @@ asm void dDlst_2DPoint_c::draw() {
/* ############################################################################################## */
/* 80450648-8045064C 0000C8 0004+00 1/1 0/0 0/0 .sdata l_color$4033 */
SECTION_SDATA static u8 l_color_4033[4] = {
SECTION_SDATA static _GXColor l_color_4033 = {
0xFF,
0xFF,
0xFF,
@@ -2062,16 +2002,16 @@ SECTION_DATA static u8 l_matDL[123 + 1 /* padding */] = {
};
/* 803A8D7C-803A8D8C 005E9C 0010+00 1/1 0/0 0/0 .data l_imageDrawColor$5405 */
SECTION_DATA static u8 l_imageDrawColor[16] = {
0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF,
};
SECTION_DATA static _GXColor l_imageDrawColor[4] = {{0xFF, 0x00, 0x00, 0x00},
{0x00, 0xFF, 0x00, 0x00},
{0x00, 0x00, 0xFF, 0x00},
{0x00, 0x00, 0x00, 0xFF}};
/* 803A8D8C-803A8D9C 005EAC 0010+00 0/1 0/0 0/0 .data l_tevColorChan$5438 */
#pragma push
#pragma force_active on
SECTION_DATA static u8 l_tevColorChan[16] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03,
};
SECTION_DATA static GXTevColor l_tevColorChan[4] = {GX_CH_RED, GX_CH_BLUE, GX_CH_GREEN,
GX_CH_ALPHA};
#pragma pop
/* 803A8D9C-803A8DCC 005EBC 0030+00 0/0 0/0 0/0 .data mtx_adj$5842 */
@@ -2332,21 +2272,19 @@ asm void J2DPicture::setBlack(JUtility::TColor param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J2DAnmBase::~J2DAnmBase() {
// asm J2DAnmBase::~J2DAnmBase() {
extern "C" asm void __dt__10J2DAnmBaseFv() {
nofralloc
#include "asm/d/d_drawlist/__dt__10J2DAnmBaseFv.s"
}
#pragma pop
/* 80053CDC-80053CEC 04E61C 0010+00 0/0 2/2 0/0 .text init__8cM_rnd_cFiii */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cM_rnd_c::init(int param_0, int param_1, int param_2) {
nofralloc
#include "asm/d/d_drawlist/init__8cM_rnd_cFiii.s"
void cM_rnd_c::init(int s0, int s1, int s2) {
seed0 = s0;
seed1 = s1;
seed2 = s2;
}
#pragma pop
/* ############################################################################################## */
/* 80452034-80452038 000634 0004+00 1/1 0/0 0/0 .sdata2 @4791 */
@@ -2362,48 +2300,45 @@ SECTION_SDATA2 static f32 lit_4793 = 30307.0f;
SECTION_SDATA2 static f64 lit_4794 = 1.0;
/* 80053CEC-80053DE0 04E62C 00F4+00 2/2 0/0 0/0 .text get__8cM_rnd_cFv */
// reg swap
#ifdef NONMATCHING
f32 cM_rnd_c::get() {
seed0 = seed0 * 171 % 30269;
seed1 = seed1 * 172 % 30307;
seed2 = seed2 * 170 % 30323;
f32 rm = fmod((seed0 / 30269.0f) + (seed1 / 30307.0f) + (seed2 / 30323.0f), 1.0f);
return __fabs(rm);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cM_rnd_c::get() {
asm f32 cM_rnd_c::get() {
nofralloc
#include "asm/d/d_drawlist/get__8cM_rnd_cFv.s"
}
#pragma pop
#endif
/* 80053DE0-80053E18 04E720 0038+00 1/1 0/0 0/0 .text getF__8cM_rnd_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cM_rnd_c::getF(f32 param_0) {
nofralloc
#include "asm/d/d_drawlist/getF__8cM_rnd_cFf.s"
f32 cM_rnd_c::getF(f32 param_0) {
return get() * param_0;
}
#pragma pop
/* ############################################################################################## */
/* 80452048-8045204C 000648 0004+00 5/5 0/0 0/0 .sdata2 @4806 */
SECTION_SDATA2 static f32 lit_4806 = 2.0f;
/* 80053E18-80053E60 04E758 0048+00 1/1 0/0 0/0 .text getFX__8cM_rnd_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cM_rnd_c::getFX(f32 param_0) {
nofralloc
#include "asm/d/d_drawlist/getFX__8cM_rnd_cFf.s"
f32 cM_rnd_c::getFX(f32 param_0) {
return ((get() - lit_4072) * param_0) * lit_4806;
}
#pragma pop
/* 80053E60-80053E9C 04E7A0 003C+00 1/1 0/0 0/0 .text getValue__8cM_rnd_cFff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cM_rnd_c::getValue(f32 param_0, f32 param_1) {
nofralloc
#include "asm/d/d_drawlist/getValue__8cM_rnd_cFff.s"
f32 cM_rnd_c::getValue(f32 param_0, f32 param_1) {
return param_0 + getF(param_1);
}
#pragma pop
/* ############################################################################################## */
/* 8045204C-80452050 00064C 0004+00 1/1 0/0 0/0 .sdata2 @4876 */
@@ -2455,24 +2390,23 @@ asm void dDlst_shadowPoly_c::draw() {
#pragma pop
/* 80054478-800544F0 04EDB8 0078+00 1/1 0/0 0/0 .text J3DDrawBuffer__create__FUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void J3DDrawBuffer__create(u32 param_0) {
nofralloc
#include "asm/d/d_drawlist/J3DDrawBuffer__create__FUl.s"
static J3DDrawBuffer* J3DDrawBuffer__create(u32 size) {
J3DDrawBuffer* buffer = new J3DDrawBuffer();
if (buffer) {
if (buffer->allocBuffer(size) == kJ3DError_Success) {
return buffer;
}
delete buffer;
}
return NULL;
}
#pragma pop
/* 800544F0-80054500 04EE30 0010+00 2/2 0/0 0/0 .text reset__18dDlst_shadowReal_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_shadowReal_c::reset() {
nofralloc
#include "asm/d/d_drawlist/reset__18dDlst_shadowReal_cFv.s"
void dDlst_shadowReal_c::reset() {
mState = 0;
mModelNum = 0;
}
#pragma pop
/* 80054500-800545D4 04EE40 00D4+00 1/1 0/0 0/0 .text imageDraw__18dDlst_shadowReal_cFPA4_f */
#pragma push
@@ -2634,14 +2568,16 @@ asm void dDlst_shadowReal_c::set(u32 param_0, J3DModel* param_1, cXyz* param_2,
#pragma pop
/* 800551D4-8005520C 04FB14 0038+00 1/1 0/0 0/0 .text add__18dDlst_shadowReal_cFP8J3DModel */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_shadowReal_c::add(J3DModel* param_0) {
nofralloc
#include "asm/d/d_drawlist/add__18dDlst_shadowReal_cFP8J3DModel.s"
bool dDlst_shadowReal_c::add(J3DModel* pModel) {
u8 curModelNum = mModelNum;
if (curModelNum == 0 || pModel == NULL) {
return false;
}
mModelNum++;
mpModels[curModelNum] = pModel;
return true;
}
#pragma pop
/* ############################################################################################## */
/* 80450650-80450654 0000D0 0004+00 1/1 0/0 0/0 .sdata l_color$5326 */
@@ -2707,14 +2643,17 @@ asm void dDlst_shadowControl_c::init() {
#pragma pop
/* 80055768-800557C8 0500A8 0060+00 1/1 0/0 0/0 .text reset__21dDlst_shadowControl_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_shadowControl_c::reset() {
nofralloc
#include "asm/d/d_drawlist/reset__21dDlst_shadowControl_cFv.s"
void dDlst_shadowControl_c::reset() {
dDlst_shadowReal_c* shadowReal = &mReal[0];
for (int i = 0; i < 8; i++) {
shadowReal->reset();
shadowReal++;
}
mSimpleNum = 0;
mRealNum = 0;
field_0x4 = NULL;
}
#pragma pop
/* 800557C8-80055A14 050108 024C+00 0/0 1/1 0/0 .text imageDraw__21dDlst_shadowControl_cFPA4_f */
#pragma push
@@ -2830,6 +2769,18 @@ asm void dDlst_peekZ_c::peekData() {
#pragma pop
/* 800560F0-800561C8 050A30 00D8+00 0/0 1/1 0/0 .text __ct__12dDlst_list_cFv */
#ifdef NONMATCHING
dDlst_list_c::dDlst_list_c() {
field_0x68 = &field_0x64;
field_0xb0 = &field_0xac;
field_0x1b8 = &field_0x1b4;
field_0x240 = &field_0x23c;
J3DDrawBuffer** tmp = &mOpaListSky;
for (int i = 0; i < 0x15; i++) {
*(tmp + i) = NULL;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -2838,6 +2789,7 @@ asm dDlst_list_c::dDlst_list_c() {
#include "asm/d/d_drawlist/__ct__12dDlst_list_cFv.s"
}
#pragma pop
#endif
/* 800561C8-800561F8 050B08 0030+00 1/1 0/0 0/0 .text __ct__26mDoExt_3DlineMatSortPacketFv */
#pragma push
@@ -3024,70 +2976,62 @@ asm void dDlst_list_c::entryZSortXluDrawList(J3DDrawBuffer* param_0, J3DPacket*
/* 800566D4-80056710 051014 003C+00 1/1 1/1 0/0 .text
* drawOpaDrawList__12dDlst_list_cFP13J3DDrawBuffer */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_list_c::drawOpaDrawList(J3DDrawBuffer* param_0) {
nofralloc
#include "asm/d/d_drawlist/drawOpaDrawList__12dDlst_list_cFP13J3DDrawBuffer.s"
void dDlst_list_c::drawOpaDrawList(J3DDrawBuffer* pDrawBuf) {
J3DShape::resetVcdVatCache();
j3dSys.setDrawModeOpaTexEdge();
pDrawBuf->draw();
}
#pragma pop
/* 80056710-8005674C 051050 003C+00 1/1 1/1 0/0 .text
* drawXluDrawList__12dDlst_list_cFP13J3DDrawBuffer */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_list_c::drawXluDrawList(J3DDrawBuffer* param_0) {
nofralloc
#include "asm/d/d_drawlist/drawXluDrawList__12dDlst_list_cFP13J3DDrawBuffer.s"
void dDlst_list_c::drawXluDrawList(J3DDrawBuffer* pDrawBuf) {
J3DShape::resetVcdVatCache();
j3dSys.setDrawModeXlu();
pDrawBuf->draw();
}
#pragma pop
/* 8005674C-80056770 05108C 0024+00 0/0 1/1 0/0 .text drawOpaListItem3d__12dDlst_list_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_list_c::drawOpaListItem3d() {
nofralloc
#include "asm/d/d_drawlist/drawOpaListItem3d__12dDlst_list_cFv.s"
void dDlst_list_c::drawOpaListItem3d() {
drawOpaDrawList(mOpaListItem3d);
}
#pragma pop
/* 80056770-80056794 0510B0 0024+00 0/0 1/1 0/0 .text drawXluListItem3d__12dDlst_list_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_list_c::drawXluListItem3d() {
nofralloc
#include "asm/d/d_drawlist/drawXluListItem3d__12dDlst_list_cFv.s"
void dDlst_list_c::drawXluListItem3d() {
drawXluDrawList(mXluListItem3d);
}
#pragma pop
/* 80056794-800567C4 0510D4 0030+00 2/2 35/35 6/6 .text
* set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c */
#ifdef NONMATCHING
int dDlst_list_c::set(dDlst_base_c**& param_0, dDlst_base_c**& param_1, dDlst_base_c* param_2) {
if (*param_0 >= *param_1) {
return 0;
}
*param_0 = param_2;
*param_0++;
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_list_c::set(dDlst_base_c**& param_0, dDlst_base_c**& param_1,
dDlst_base_c* param_2) {
asm int dDlst_list_c::set(dDlst_base_c**& param_0, dDlst_base_c**& param_1, dDlst_base_c* param_2) {
nofralloc
#include "asm/d/d_drawlist/set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c.s"
}
#pragma pop
#endif
/* 800567C4-8005681C 051104 0058+00 0/0 1/1 0/0 .text
* draw__12dDlst_list_cFPP12dDlst_base_cPP12dDlst_base_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_list_c::draw(dDlst_base_c** param_0, dDlst_base_c** param_1) {
nofralloc
#include "asm/d/d_drawlist/draw__12dDlst_list_cFPP12dDlst_base_cPP12dDlst_base_c.s"
void dDlst_list_c::draw(dDlst_base_c** pStart, dDlst_base_c** pEnd) {
for (; pStart < pEnd; pStart++) {
dDlst_base_c* base = *pStart;
base->draw();
}
}
#pragma pop
/* ############################################################################################## */
/* 8037A1B0-8037A1B0 006810 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+46 -136
View File
@@ -7,45 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct dKantera_icon_c {
/* 801AE938 */ dKantera_icon_c();
/* 801AE974 */ ~dKantera_icon_c();
/* 801AEA68 */ void initiate();
/* 801AEB7C */ void setAlphaRate(f32);
/* 801AEBA0 */ void setPos(f32, f32);
/* 801AEBF4 */ void setScale(f32, f32);
/* 801AEC44 */ void setNowGauge(u16, u16);
};
struct dDlst_KanteraIcon_c {
/* 801AECB8 */ void draw();
/* 801AED1C */ ~dDlst_KanteraIcon_c();
};
struct JKRExpHeap {};
struct JKRArchive {};
struct J2DGrafContext {};
struct J2DScreen {
/* 802F8498 */ J2DScreen();
/* 802F8648 */ void setPriority(char const*, u32, JKRArchive*);
/* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*);
};
struct CPaneMgrAlpha {
/* 802557D0 */ void setAlphaRate(f32);
};
struct CPaneMgr {
/* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
};
//
// Forward References:
//
@@ -74,82 +35,57 @@ extern "C" void __ct__9J2DScreenFv();
extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_drawHIO[3880];
//
// Declarations:
//
/* ############################################################################################## */
/* 803BC218-803BC228 019338 0010+00 2/2 0/0 0/0 .data __vt__19dDlst_KanteraIcon_c */
SECTION_DATA extern void* __vt__19dDlst_KanteraIcon_c[4] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)draw__19dDlst_KanteraIcon_cFv,
(void*)__dt__19dDlst_KanteraIcon_cFv,
};
/* 803BC228-803BC238 019348 000C+04 2/2 0/0 0/0 .data __vt__15dKantera_icon_c */
SECTION_DATA extern void* __vt__15dKantera_icon_c[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__15dKantera_icon_cFv,
/* padding */
NULL,
};
/* 801AE938-801AE974 1A9278 003C+00 0/0 3/3 0/0 .text __ct__15dKantera_icon_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dKantera_icon_c::dKantera_icon_c() {
nofralloc
#include "asm/d/d_kantera_icon_meter/__ct__15dKantera_icon_cFv.s"
dKantera_icon_c::dKantera_icon_c() {
initiate();
}
#pragma pop
/* 801AE974-801AEA68 1A92B4 00F4+00 1/0 0/0 0/0 .text __dt__15dKantera_icon_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dKantera_icon_c::~dKantera_icon_c() {
nofralloc
#include "asm/d/d_kantera_icon_meter/__dt__15dKantera_icon_cFv.s"
}
#pragma pop
dKantera_icon_c::~dKantera_icon_c() {
delete mpKanteraIcon->getScreen();
delete mpKanteraIcon;
mpKanteraIcon = NULL;
/* ############################################################################################## */
/* 80394F50-80394F50 0215B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80394F50 = "zelda_kantera_icon_mater.blo";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_80394F6D = "\0\0";
#pragma pop
delete mpParent;
mpParent = NULL;
delete mpGauge;
mpGauge = NULL;
}
/* 801AEA68-801AEB7C 1A93A8 0114+00 1/1 0/0 0/0 .text initiate__15dKantera_icon_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKantera_icon_c::initiate() {
nofralloc
#include "asm/d/d_kantera_icon_meter/initiate__15dKantera_icon_cFv.s"
void dKantera_icon_c::initiate() {
mpKanteraIcon = new dDlst_KanteraIcon_c();
J2DScreen* scrn = new J2DScreen();
scrn->setPriority("zelda_kantera_icon_mater.blo", 0x20000, dComIfGp_getMain2DArchive());
dPaneClass_showNullPane(scrn);
mpKanteraIcon->setScreen(scrn);
mpParent = new CPaneMgr(scrn, 'kan_m_n', 2, NULL);
mpGauge = new CPaneMgr(scrn, 'yellow_m', 0, NULL);
}
#pragma pop
/* 801AEB7C-801AEBA0 1A94BC 0024+00 0/0 4/4 0/0 .text setAlphaRate__15dKantera_icon_cFf
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKantera_icon_c::setAlphaRate(f32 param_0) {
nofralloc
#include "asm/d/d_kantera_icon_meter/setAlphaRate__15dKantera_icon_cFf.s"
void dKantera_icon_c::setAlphaRate(f32 alphaRate) {
mpParent->setAlphaRate(alphaRate);
}
#pragma pop
/* 801AEBA0-801AEBF4 1A94E0 0054+00 0/0 3/3 0/0 .text setPos__15dKantera_icon_cFff */
// need g_drawHIO global setup
#ifdef NONMATCHING
void dKantera_icon_c::setPos(f32 x, f32 y) {
mpParent->translate(x + g_drawHIO.mLanternIconMeterPosX, y + g_drawHIO.mLanternIconMeterPosY)
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -158,8 +94,15 @@ asm void dKantera_icon_c::setPos(f32 param_0, f32 param_1) {
#include "asm/d/d_kantera_icon_meter/setPos__15dKantera_icon_cFff.s"
}
#pragma pop
#endif
/* 801AEBF4-801AEC44 1A9534 0050+00 0/0 4/4 0/0 .text setScale__15dKantera_icon_cFff */
// need g_drawHIO global setup
#ifdef NONMATCHING
void dKantera_icon_c::setScale(f32 h, f32 v) {
mpParent->scale(h * g_drawHIO.mLanternIconMeterSize, v * g_drawHIO.mLanternIconMeterSize)
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -168,55 +111,22 @@ asm void dKantera_icon_c::setScale(f32 param_0, f32 param_1) {
#include "asm/d/d_kantera_icon_meter/setScale__15dKantera_icon_cFff.s"
}
#pragma pop
/* ############################################################################################## */
/* 80453EF8-80453F00 0024F8 0004+04 1/1 0/0 0/0 .sdata2 @3759 */
SECTION_SDATA2 static f32 lit_3759[1 + 1 /* padding */] = {
1.0f,
/* padding */
0.0f,
};
/* 80453F00-80453F08 002500 0008+00 1/1 0/0 0/0 .sdata2 @3761 */
SECTION_SDATA2 static f64 lit_3761 = 4503599627370496.0 /* cast u32 to float */;
#endif
/* 801AEC44-801AECB8 1A9584 0074+00 0/0 4/4 0/0 .text setNowGauge__15dKantera_icon_cFUsUs
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKantera_icon_c::setNowGauge(u16 param_0, u16 param_1) {
nofralloc
#include "asm/d/d_kantera_icon_meter/setNowGauge__15dKantera_icon_cFUsUs.s"
void dKantera_icon_c::setNowGauge(u16 h, u16 v) {
mpGauge->scale((f32)v / (f32)h, 1.0f);
}
#pragma pop
/* ############################################################################################## */
/* 80453F08-80453F10 002508 0004+04 1/1 0/0 0/0 .sdata2 @3776 */
SECTION_SDATA2 static f32 lit_3776[1 + 1 /* padding */] = {
0.0f,
/* padding */
0.0f,
};
/* 801AECB8-801AED1C 1A95F8 0064+00 1/0 0/0 0/0 .text draw__19dDlst_KanteraIcon_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDlst_KanteraIcon_c::draw() {
nofralloc
#include "asm/d/d_kantera_icon_meter/draw__19dDlst_KanteraIcon_cFv.s"
void dDlst_KanteraIcon_c::draw() {
J2DGrafContext* curGraf = dComIfGp_getCurrentGrafPort();
curGraf->setup2D();
mp_scrn->draw(0.0f, 0.0f, curGraf);
}
#pragma pop
/* 801AED1C-801AED64 1A965C 0048+00 1/0 0/0 0/0 .text __dt__19dDlst_KanteraIcon_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dDlst_KanteraIcon_c::~dDlst_KanteraIcon_c() {
nofralloc
#include "asm/d/d_kantera_icon_meter/__dt__19dDlst_KanteraIcon_cFv.s"
}
#pragma pop
dDlst_KanteraIcon_c::~dDlst_KanteraIcon_c() {}
/* 80394F50-80394F50 0215B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+331 -220
View File
@@ -5,8 +5,10 @@
#include "d/d_resorce.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/os/OSCache.h"
#include "dolphin/types.h"
//
@@ -26,52 +28,10 @@ struct mDoExt_transAnmBas {
/* 8003C784 */ ~mDoExt_transAnmBas();
};
struct mDoDvdThd_mountArchive_c {
/* 80015E14 */ void create(char const*, u8, JKRHeap*);
};
struct dRes_control_c {
/* 8003BFB0 */ ~dRes_control_c();
/* 8003C078 */ void setRes(char const*, dRes_info_c*, int, char const*, u8, JKRHeap*);
/* 8003C160 */ void syncRes(char const*, dRes_info_c*, int);
/* 8003C194 */ void deleteRes(char const*, dRes_info_c*, int);
/* 8003C1E4 */ void getResInfo(char const*, dRes_info_c*, int);
/* 8003C260 */ void newResInfo(dRes_info_c*, int);
/* 8003C288 */ void getResInfoLoaded(char const*, dRes_info_c*, int);
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
/* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int);
/* 8003C400 */ void getIDRes(char const*, u16, dRes_info_c*, int);
/* 8003C470 */ void syncAllRes(dRes_info_c*, int);
/* 8003C4E4 */ void setObjectRes(char const*, void*, u32, JKRHeap*);
/* 8003C5BC */ void setStageRes(char const*, JKRHeap*);
/* 8003C638 */ void dump();
/* 8003C6B8 */ void getObjectResName2Index(char const*, char const*);
};
struct dBgWKCol {
/* 8007E7D0 */ void initKCollision(void*);
};
struct cBgS {
/* 80074578 */ void ConvDzb(void*);
};
struct _GXAttr {};
struct ResTIMG {};
struct JUTNameTab {
/* 802DEAF8 */ void getName(u16) const;
};
struct JKRMemBreakFlag {};
struct JKRMemArchive {
/* 802D6A6C */ JKRMemArchive(void*, u32, JKRMemBreakFlag);
};
struct J3DTransformInfo {};
struct J3DTexture {
/* 8031221C */ void addResTIMG(u16, ResTIMG const*);
};
@@ -210,6 +170,7 @@ extern "C" s32 getKind__18J3DAnmTransformKeyCFv();
extern "C" void getTransform__18J3DAnmTransformKeyCFUsP16J3DTransformInfo();
extern "C" void calc__11J3DTexNoAnmCFPUs();
extern "C" extern char const* const d_d_resorce__stringBase0;
extern "C" void DCStoreRangeNoSync(void*, u32);
//
// External References:
@@ -238,7 +199,7 @@ extern "C" void findIdxResource__10JKRArchiveCFUl();
extern "C" void findNameResource__10JKRArchiveCFPCc();
extern "C" void __ct__13JKRMemArchiveFPvUl15JKRMemBreakFlag();
extern "C" void getName__10JUTNameTabCFUs();
extern "C" void JUTReportConsole_f();
extern "C" void JUTReportConsole_f(const char*, ...);
extern "C" void addResTIMG__10J3DTextureFUsPC7ResTIMG();
extern "C" void addTexMtxIndexInDL__8J3DShapeF7_GXAttrUl();
extern "C" void addTexMtxIndexInVcd__8J3DShapeF7_GXAttr();
@@ -254,7 +215,6 @@ extern "C" void load__24J3DClusterLoaderDataBaseFPCv();
extern "C" void load__22J3DModelLoaderDataBaseFPCvUl();
extern "C" void load__20J3DAnmLoaderDataBaseFPCv24J3DAnmLoaderDataBaseFlag();
extern "C" void setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv();
extern "C" void DCStoreRangeNoSync();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void _savegpr_20();
@@ -272,14 +232,9 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void memcmp();
extern "C" void snprintf();
extern "C" void strncpy();
extern "C" void strlen();
extern "C" void stricmp();
extern "C" extern u8 const j3dDefaultMtx[48];
extern "C" extern void* __vt__14J3DMaterialAnm[4];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_env_light[4880];
extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4];
extern "C" u8 mZbufferTimg__13mDoGph_gInf_c[4];
@@ -291,41 +246,47 @@ extern "C" extern u8 j3dDefaultTevSwapMode[4];
//
/* 8003A260-8003A280 034BA0 0020+00 0/0 1/1 0/0 .text __ct__11dRes_info_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dRes_info_c::dRes_info_c() {
nofralloc
#include "asm/d/d_resorce/__ct__11dRes_info_cFv.s"
dRes_info_c::dRes_info_c() {
mCount = 0;
mDMCommand = NULL;
mArchive = NULL;
heap = NULL;
mDataHeap = NULL;
mRes = NULL;
}
#pragma pop
/* 8003A280-8003A348 034BC0 00C8+00 3/3 1/1 0/0 .text __dt__11dRes_info_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dRes_info_c::~dRes_info_c() {
nofralloc
#include "asm/d/d_resorce/__dt__11dRes_info_cFv.s"
dRes_info_c::~dRes_info_c() {
if (mDMCommand != NULL) {
delete mDMCommand;
mDMCommand = NULL;
} else if (mArchive != NULL) {
deleteArchiveRes();
if (mDataHeap != NULL) {
mDoExt_destroySolidHeap(mDataHeap);
mDataHeap = NULL;
mArchive->unmount();
}
mRes = NULL;
mArchive = NULL;
}
}
#pragma pop
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803798B8 = "%s%s.arc";
#pragma pop
/* 8003A348-8003A3F0 034C88 00A8+00 1/1 0/0 0/0 .text set__11dRes_info_cFPCcPCcUcP7JKRHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_info_c::set(char const* param_0, char const* param_1, u8 param_2, JKRHeap* param_3) {
nofralloc
#include "asm/d/d_resorce/set__11dRes_info_cFPCcPCcUcP7JKRHeap.s"
int dRes_info_c::set(char const* pArcName, char const* pArcPath, u8 param_2, JKRHeap* pHeap) {
char path[40];
if (*pArcPath != NULL) {
snprintf(path, 40, "%s%s.arc", pArcPath, pArcName);
mDMCommand = mDoDvdThd_mountArchive_c::create(path, param_2, pHeap);
if (mDMCommand == NULL) {
return false;
}
}
strncpy(mArchiveName, pArcName, 10);
return true;
}
#pragma pop
/* 8003A3F0-8003A490 034D30 00A0+00 1/1 0/0 0/0 .text setAlpha__FP16J3DMaterialTable */
#pragma push
@@ -653,7 +614,7 @@ SECTION_DEAD static char const* const stringBase_80379912 = "<%s> res == NULL !!
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_info_c::loadResource() {
asm int dRes_info_c::loadResource() {
nofralloc
#include "asm/d/d_resorce/loadResource__11dRes_info_cFv.s"
}
@@ -694,7 +655,7 @@ asm void dRes_info_c::deleteArchiveRes() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void getArcHeader(JKRArchive* param_0) {
static asm void* getArcHeader(JKRArchive* param_0) {
nofralloc
#include "asm/d/d_resorce/getArcHeader__FP10JKRArchive.s"
}
@@ -702,54 +663,86 @@ static asm void getArcHeader(JKRArchive* param_0) {
/* 8003BAC4-8003BAF8 036404 0034+00 1/1 0/0 0/0 .text setRes__11dRes_info_cFP10JKRArchiveP7JKRHeap
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_info_c::setRes(JKRArchive* param_0, JKRHeap* param_1) {
nofralloc
#include "asm/d/d_resorce/setRes__11dRes_info_cFP10JKRArchiveP7JKRHeap.s"
int dRes_info_c::setRes(JKRArchive* pArchive, JKRHeap* pHeap) {
mArchive = pArchive;
heap = pHeap;
mDataHeap = NULL;
return loadResource() >> 0x1F;
}
#pragma pop
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379927 =
"<%s.arc> setRes: archive mount error !!\n";
SECTION_DEAD static char const* const stringBase_80379950 =
"<%s.arc> mDMCommandsetRes: can't alloc memory\n";
#pragma pop
/* 8003BAF8-8003BC98 036438 01A0+00 2/2 0/0 0/0 .text setRes__11dRes_info_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_info_c::setRes() {
nofralloc
#include "asm/d/d_resorce/setRes__11dRes_info_cFv.s"
int dRes_info_c::setRes() {
if (mArchive == NULL) {
if (mDMCommand == NULL) {
return -1;
}
if ((int)mDMCommand->mIsDone == 0) {
return 1;
}
mArchive = mDMCommand->getArchive();
heap = mDMCommand->getHeap();
delete mDMCommand;
mDMCommand = NULL;
if (mArchive == NULL) {
OSReport_Error("<%s.arc> setRes: archive mount error !!\n", mArchiveName);
return -1;
}
if (heap != NULL) {
heap->lock();
mDataHeap = mDoExt_createSolidHeapToCurrent(0, heap, 0x20);
int rt = loadResource();
mDoExt_restoreCurrentHeap();
mDoExt_adjustSolidHeap(mDataHeap);
heap->unlock();
if (rt < 0) {
return -1;
}
} else {
mDataHeap = mDoExt_createSolidHeapFromGameToCurrent(0, 0);
if (mDataHeap == NULL) {
OSReport_Error("<%s.arc> mDMCommandsetRes: can't alloc memory\n", mArchiveName);
return -1;
}
int rt = loadResource();
mDoExt_restoreCurrentHeap();
mDoExt_adjustSolidHeap(mDataHeap);
if (rt < 0) {
return -1;
}
}
u32 heapSize = mDataHeap->getHeapSize();
void* heapStartAddr = mDataHeap->getStartAddr();
DCStoreRangeNoSync(heapStartAddr, heapSize);
}
return 0;
}
#pragma pop
/* 8003BC98-8003BD00 0365D8 0068+00 1/1 0/0 0/0 .text myGetMemBlockSize__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void myGetMemBlockSize(void* param_0) {
nofralloc
#include "asm/d/d_resorce/myGetMemBlockSize__FPv.s"
static s32 myGetMemBlockSize(void* param_0) {
JKRHeap* heap = JKRHeap::findFromRoot(param_0);
if (heap->getHeapType() == 'EXPH') {
return JKRHeap::getSize(param_0, heap);
} else {
return -1;
}
}
#pragma pop
/* 8003BD00-8003BD2C 036640 002C+00 1/1 0/0 0/0 .text myGetMemBlockSize0__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void myGetMemBlockSize0(void* param_0) {
nofralloc
#include "asm/d/d_resorce/myGetMemBlockSize0__FPv.s"
static s32 myGetMemBlockSize0(void* param_0) {
s32 size = myGetMemBlockSize(param_0);
if (size < 0) {
size = 0;
}
return size;
}
#pragma pop
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -765,6 +758,41 @@ SECTION_DEAD static char const* const stringBase_80379A09 =
#pragma pop
/* 8003BD2C-8003BE38 03666C 010C+00 1/1 0/0 0/0 .text dump_long__11dRes_info_cFP11dRes_info_ci */
#ifdef NONMATCHING
void dRes_info_c::dump_long(dRes_info_c* param_0, int param_1) {
void* header;
int blockSize1;
int blockSize2;
JUTReportConsole_f("dRes_info_c::dump_long %08x %d\n", param_0, param_1);
JUTReportConsole_f(
"No Command Archive ArcHeader(size) SolidHeap(size) Resource Cnt ArchiveName\n");
for (int i = 0; i < param_1; i++) {
if (getCount() != 0) {
JKRArchive* archive = getArchive();
header = NULL;
blockSize1 = 0;
if (archive != NULL) {
header = getArcHeader(archive);
blockSize1 = myGetMemBlockSize0(header);
}
JKRSolidHeap* dataHeap = mDataHeap;
blockSize2 = 0;
if (dataHeap != NULL) {
blockSize2 = myGetMemBlockSize0((void*)dataHeap);
}
JUTReportConsole_f("%2d %08x %08x %08x(%6x) %08x(%5x) %08x %3d %s\n", i, getDMCommand(),
archive, header, blockSize1, &mDataHeap, blockSize2, mRes,
getArchiveName());
}
param_0++;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -773,6 +801,7 @@ asm void dRes_info_c::dump_long(dRes_info_c* param_0, int param_1) {
#include "asm/d/d_resorce/dump_long__11dRes_info_cFP11dRes_info_ci.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -837,78 +866,128 @@ SECTION_DEAD static char const* const stringBase_80379B40 =
/* 8003C078-8003C160 0369B8 00E8+00 2/2 8/8 0/0 .text
* setRes__14dRes_control_cFPCcP11dRes_info_ciPCcUcP7JKRHeap */
// matches except resInfo destructor issues?
#ifdef NONMATCHING
int dRes_control_c::setRes(char const* arcName, dRes_info_c* pInfo, int infoSize,
char const* arcPath, u8 param_4, JKRHeap* pHeap) {
dRes_info_c* resInfo = getResInfo(arcName, pInfo, infoSize);
if (resInfo == NULL) {
resInfo = newResInfo(pInfo, infoSize);
if (resInfo == NULL) {
// "<%s.arc> dRes_control_c::setRes: 空きリソース情報ポインタがありません\n"
// "<%s.arc> dRes_control_c::setRes: There isn't a free Resource Info pointer\n"
OSReport_Error(
"\x3C\x25\x73\x2E\x61\x72\x63\x3E\x20\x64\x52\x65\x73\x5F\x63\x6F\x6E\x74\x72\x6F"
"\x6C\x5F\x63\x3A\x3A\x73\x65\x74\x52\x65\x73\x3A\x20\x8B\xF3\x82\xAB\x83\x8A\x83"
"\x5C\x81\x5B\x83\x58\x8F\xEE\x95\xF1\x83\x7C\x83\x43\x83\x93\x83\x5E\x82\xAA\x82"
"\xA0\x82\xE8\x82\xDC\x82\xB9\x82\xF1\x0A",
arcName);
delete resInfo;
return 0;
}
int resStatus = resInfo->set(arcName, arcPath, param_4, pHeap);
if (resStatus == 0) {
OSReport_Error("<%s.arc> dRes_control_c::setRes: res info set error !!\n", arcName);
delete resInfo;
return 0;
}
}
resInfo->incCount();
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::setRes(char const* param_0, dRes_info_c* param_1, int param_2,
char const* param_3, u8 param_4, JKRHeap* param_5) {
asm int dRes_control_c::setRes(char const* param_0, dRes_info_c* param_1, int param_2,
char const* param_3, u8 param_4, JKRHeap* param_5) {
nofralloc
#include "asm/d/d_resorce/setRes__14dRes_control_cFPCcP11dRes_info_ciPCcUcP7JKRHeap.s"
}
#pragma pop
#endif
/* 8003C160-8003C194 036AA0 0034+00 0/0 10/10 1/1 .text
* syncRes__14dRes_control_cFPCcP11dRes_info_ci */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::syncRes(char const* param_0, dRes_info_c* param_1, int param_2) {
nofralloc
#include "asm/d/d_resorce/syncRes__14dRes_control_cFPCcP11dRes_info_ci.s"
int dRes_control_c::syncRes(char const* arcName, dRes_info_c* pInfo, int infoSize) {
dRes_info_c* resInfo = getResInfo(arcName, pInfo, infoSize);
if (resInfo == NULL) {
return -1;
} else {
return resInfo->setRes();
}
}
#pragma pop
/* 8003C194-8003C1E4 036AD4 0050+00 1/1 7/7 0/0 .text
* deleteRes__14dRes_control_cFPCcP11dRes_info_ci */
#ifdef NONMATCHING
int dRes_control_c::deleteRes(char const* arcName, dRes_info_c* pInfo, int infoSize) {
dRes_info_c* resInfo = getResInfo(arcName, pInfo, infoSize);
if (resInfo == NULL) {
return 0;
} else {
if (resInfo->decCount() == 0) {
delete resInfo;
}
return 1;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::deleteRes(char const* param_0, dRes_info_c* param_1, int param_2) {
asm int dRes_control_c::deleteRes(char const* param_0, dRes_info_c* param_1, int param_2) {
nofralloc
#include "asm/d/d_resorce/deleteRes__14dRes_control_cFPCcP11dRes_info_ci.s"
}
#pragma pop
#endif
/* 8003C1E4-8003C260 036B24 007C+00 5/5 5/5 3/3 .text
* getResInfo__14dRes_control_cFPCcP11dRes_info_ci */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::getResInfo(char const* param_0, dRes_info_c* param_1, int param_2) {
nofralloc
#include "asm/d/d_resorce/getResInfo__14dRes_control_cFPCcP11dRes_info_ci.s"
dRes_info_c* dRes_control_c::getResInfo(char const* pArcName, dRes_info_c* pResInfo, int infoSize) {
for (int i = 0; i < infoSize; i++) {
if (pResInfo->getCount() != 0) {
if (!stricmp(pArcName, pResInfo->getArchiveName())) {
return pResInfo;
}
}
pResInfo++;
}
return NULL;
}
#pragma pop
/* 8003C260-8003C288 036BA0 0028+00 1/1 0/0 0/0 .text newResInfo__14dRes_control_cFP11dRes_info_ci
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::newResInfo(dRes_info_c* param_0, int param_1) {
nofralloc
#include "asm/d/d_resorce/newResInfo__14dRes_control_cFP11dRes_info_ci.s"
dRes_info_c* dRes_control_c::newResInfo(dRes_info_c* pResInfo, int infoSize) {
for (int i = 0; i < infoSize; i++) {
if (pResInfo->getCount() == 0) {
return pResInfo;
}
pResInfo++;
}
return NULL;
}
#pragma pop
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379B78 =
"<%s.arc> getRes: res during reading !!\n";
#pragma pop
/* 8003C288-8003C2EC 036BC8 0064+00 4/4 0/0 0/0 .text
* getResInfoLoaded__14dRes_control_cFPCcP11dRes_info_ci */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::getResInfoLoaded(char const* param_0, dRes_info_c* param_1, int param_2) {
nofralloc
#include "asm/d/d_resorce/getResInfoLoaded__14dRes_control_cFPCcP11dRes_info_ci.s"
dRes_info_c* dRes_control_c::getResInfoLoaded(char const* arcName, dRes_info_c* pResInfo,
int infoSize) {
dRes_info_c* resInfo = getResInfo(arcName, pResInfo, infoSize);
if (resInfo == NULL) {
resInfo = NULL;
} else if (resInfo->getArchive() == NULL) {
OSReport_Warning("<%s.arc> getRes: res during reading !!\n", arcName);
resInfo = NULL;
}
return resInfo;
}
#pragma pop
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -921,27 +1000,65 @@ SECTION_DEAD static char const* const stringBase_80379BA0 =
/* 8003C2EC-8003C37C 036C2C 0090+00 1/1 54/54 894/894 .text
* getRes__14dRes_control_cFPCclP11dRes_info_ci */
// weird branching
#ifdef NONMATCHING
void* dRes_control_c::getRes(char const* arcName, s32 resIdx, dRes_info_c* pInfo, int infoSize) {
dRes_info_c* resInfo = getResInfoLoaded(arcName, pInfo, infoSize);
if (resInfo == NULL) {
JKRArchive* archive = resInfo->getArchive();
u32 fileCount = archive->countFile();
if (resIdx >= (int)fileCount) {
OSReport_Error("<%s.arc> getRes: res index over !! index=%d count=%d\n", arcName,
resIdx, fileCount);
return NULL;
}
}
return resInfo->getRes(resIdx);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::getRes(char const* param_0, s32 param_1, dRes_info_c* param_2,
int param_3) {
asm void* dRes_control_c::getRes(char const* param_0, s32 param_1, dRes_info_c* param_2,
int param_3) {
nofralloc
#include "asm/d/d_resorce/getRes__14dRes_control_cFPCclP11dRes_info_ci.s"
}
#pragma pop
#endif
/* 8003C37C-8003C400 036CBC 0084+00 0/0 18/18 109/109 .text
* getRes__14dRes_control_cFPCcPCcP11dRes_info_ci */
// same weird branch issue
#ifdef NONMATCHING
void* dRes_control_c::getRes(char const* arcName, char const* resName, dRes_info_c* pInfo,
int infoSize) {
dRes_info_c* resInfo = getResInfoLoaded(arcName, pInfo, infoSize);
if (resInfo == NULL) {
JKRArchive* archive = resInfo->getArchive();
JKRArchive::SDIFileEntry* entry = archive->findNameResource(resName);
if (entry != NULL) {
return resInfo->getRes(entry - archive->mFiles);
} else {
return NULL;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::getRes(char const* param_0, char const* param_1, dRes_info_c* param_2,
int param_3) {
asm void* dRes_control_c::getRes(char const* param_0, char const* param_1, dRes_info_c* param_2,
int param_3) {
nofralloc
#include "asm/d/d_resorce/getRes__14dRes_control_cFPCcPCcP11dRes_info_ci.s"
}
#pragma pop
#endif
/* 8003C400-8003C470 036D40 0070+00 0/0 7/7 4/4 .text
* getIDRes__14dRes_control_cFPCcUsP11dRes_info_ci */
@@ -957,82 +1074,76 @@ asm void dRes_control_c::getIDRes(char const* param_0, u16 param_1, dRes_info_c*
/* 8003C470-8003C4E4 036DB0 0074+00 0/0 3/3 0/0 .text syncAllRes__14dRes_control_cFP11dRes_info_ci
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::syncAllRes(dRes_info_c* param_0, int param_1) {
nofralloc
#include "asm/d/d_resorce/syncAllRes__14dRes_control_cFP11dRes_info_ci.s"
int dRes_control_c::syncAllRes(dRes_info_c* pInfo, int infoSize) {
for (int i = 0; i < infoSize; i++) {
if (pInfo->getDMCommand() != NULL && pInfo->setRes() > 0) {
return 1;
}
pInfo++;
}
return 0;
}
#pragma pop
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379BD6 = "";
#pragma pop
/* 8003C4E4-8003C5BC 036E24 00D8+00 1/1 0/0 0/0 .text
* setObjectRes__14dRes_control_cFPCcPvUlP7JKRHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::setObjectRes(char const* param_0, void* param_1, u32 param_2,
JKRHeap* param_3) {
nofralloc
#include "asm/d/d_resorce/setObjectRes__14dRes_control_cFPCcPvUlP7JKRHeap.s"
}
#pragma pop
int dRes_control_c::setObjectRes(char const* arcName, void* i_archiveRes, u32 param_2,
JKRHeap* param_3) {
if (!setRes(arcName, &mObjectInfo[0], 0x80, "", 0, NULL)) {
return 0;
} else {
JKRMemArchive* memArchive =
new JKRMemArchive(i_archiveRes, param_2, JKRMEMBREAK_FLAG_UNKNOWN0);
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379BD7 = "/res/Stage/%s/";
#pragma pop
if (memArchive == NULL || !memArchive->isMounted()) {
return 0;
} else {
dRes_info_c* info = getResInfo(arcName, &mObjectInfo[0], 0x80);
int resStatus = info->setRes(memArchive, param_3);
return resStatus == 0 ? 1 : 0;
}
}
}
/* 8003C5BC-8003C638 036EFC 007C+00 0/0 2/2 0/0 .text setStageRes__14dRes_control_cFPCcP7JKRHeap
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::setStageRes(char const* param_0, JKRHeap* param_1) {
nofralloc
#include "asm/d/d_resorce/setStageRes__14dRes_control_cFPCcP7JKRHeap.s"
}
#pragma pop
int dRes_control_c::setStageRes(char const* arcName, JKRHeap* pHeap) {
char path[20];
/* ############################################################################################## */
/* 803798B8-803798B8 005F18 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379BE6 = "\ndRes_control_c::dump mObjectInfo\n";
SECTION_DEAD static char const* const stringBase_80379C09 = "\ndRes_control_c::dump mStageInfo\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_80379C2B = "\0\0\0\0";
#pragma pop
snprintf(path, 20, "/res/Stage/%s/", dComIfGp_getStartStageName());
return setRes(arcName, &mStageInfo[0], 0x40, path, 1, pHeap);
}
/* 8003C638-8003C6B8 036F78 0080+00 0/0 2/2 0/0 .text dump__14dRes_control_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::dump() {
nofralloc
#include "asm/d/d_resorce/dump__14dRes_control_cFv.s"
void dRes_control_c::dump() {
JUTReportConsole_f("\ndRes_control_c::dump mObjectInfo\n");
dRes_info_c::dump(&mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
dRes_info_c::dump_long(&mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
JUTReportConsole_f("\ndRes_control_c::dump mStageInfo\n");
dRes_info_c::dump(&mStageInfo[0], ARRAY_SIZE(mStageInfo));
dRes_info_c::dump_long(&mStageInfo[0], ARRAY_SIZE(mStageInfo));
}
#pragma pop
/* 8003C6B8-8003C734 036FF8 007C+00 0/0 0/0 32/32 .text
* getObjectResName2Index__14dRes_control_cFPCcPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dRes_control_c::getObjectResName2Index(char const* param_0, char const* param_1) {
nofralloc
#include "asm/d/d_resorce/getObjectResName2Index__14dRes_control_cFPCcPCc.s"
int dRes_control_c::getObjectResName2Index(char const* arcName, char const* param_1) {
dRes_info_c* info = getResInfoLoaded(arcName, &mObjectInfo[0], ARRAY_SIZE(mObjectInfo));
if (info == NULL) {
return -1;
} else if (param_1 == NULL) {
return -1;
} else {
JKRArchive* archive = info->getArchive();
JKRArchive::SDIFileEntry* entry = archive->findNameResource(param_1);
if (entry != NULL) {
return entry->file_id;
} else {
return -1;
}
}
}
#pragma pop
/* 8003C734-8003C77C 037074 0048+00 1/0 0/0 0/0 .text __dt__10J3DAnmBaseFv */
#pragma push
+26 -144
View File
@@ -1,158 +1,40 @@
//
// Generated By: dol2asm
// Translation Unit: d/d_select_icon
//
#include "d/d_select_icon.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
dSi_HIO_c::dSi_HIO_c() {}
struct dSi_HIO_c {
/* 80195A2C */ dSi_HIO_c();
/* 80195C1C */ ~dSi_HIO_c();
};
void dSelect_icon_c::animation() {
if (field_0x10->getAlpha() != 0) {
field_0x20 += field_0x2c;
if (field_0x20 >= field_0x1c->getFrameMax()) {
field_0x20 = 0.0f;
}
field_0x1c->setFrame(field_0x20);
struct J2DPane {};
field_0x28 += field_0x2c;
if (field_0x28 >= field_0x24->getFrameMax()) {
field_0x28 = 0.0f;
}
struct dSelect_icon_c {
/* 80195A3C */ void animation();
/* 80195B40 */ void setAlpha(u8);
/* 80195B70 */ void setPos(J2DPane*, f32, f32);
};
struct J2DScreen {
/* 802F9690 */ void animation();
};
struct CPaneMgr {
/* 80254638 */ void paneScale(f32, f32);
};
//
// Forward References:
//
extern "C" void __ct__9dSi_HIO_cFv();
extern "C" void animation__14dSelect_icon_cFv();
extern "C" void setAlpha__14dSelect_icon_cFUc();
extern "C" void setPos__14dSelect_icon_cFP7J2DPaneff();
extern "C" void __dt__9dSi_HIO_cFv();
extern "C" void __sinit_d_select_icon_cpp();
//
// External References:
//
extern "C" void paneScale__8CPaneMgrFff();
extern "C" void __dl__FPv();
extern "C" void animation__9J2DScreenFv();
extern "C" void __register_global_object();
//
// Declarations:
//
/* ############################################################################################## */
/* 803BB7B8-803BB7C8 0188D8 000C+04 2/2 0/0 0/0 .data __vt__9dSi_HIO_c */
SECTION_DATA extern void* __vt__9dSi_HIO_c[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__9dSi_HIO_cFv,
/* padding */
NULL,
};
/* 80195A2C-80195A3C 19036C 0010+00 1/1 0/0 0/0 .text __ct__9dSi_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dSi_HIO_c::dSi_HIO_c() {
nofralloc
#include "asm/d/d_select_icon/__ct__9dSi_HIO_cFv.s"
field_0x24->setFrame(field_0x28);
field_0x8->animation();
field_0x10->paneScale(field_0x14, field_0x14);
}
}
#pragma pop
/* ############################################################################################## */
/* 80453A70-80453A78 002070 0004+04 1/1 0/0 0/0 .sdata2 @3740 */
SECTION_SDATA2 static f32 lit_3740[1 + 1 /* padding */] = {
0.0f,
/* padding */
0.0f,
};
/* 80453A78-80453A80 002078 0008+00 1/1 0/0 0/0 .sdata2 @3773 */
SECTION_SDATA2 static f64 lit_3773 = 4503601774854144.0 /* cast s32 to float */;
/* 80195A3C-80195B40 19037C 0104+00 0/0 1/1 0/0 .text animation__14dSelect_icon_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dSelect_icon_c::animation() {
nofralloc
#include "asm/d/d_select_icon/animation__14dSelect_icon_cFv.s"
void dSelect_icon_c::setAlpha(u8 param_0) {
field_0x10->setAlpha(param_0);
}
#pragma pop
/* 80195B40-80195B70 190480 0030+00 0/0 1/1 0/0 .text setAlpha__14dSelect_icon_cFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dSelect_icon_c::setAlpha(u8 param_0) {
nofralloc
#include "asm/d/d_select_icon/setAlpha__14dSelect_icon_cFUc.s"
void dSelect_icon_c::setPos(J2DPane* param_0, f32 transX, f32 transY) {
field_0x14 = param_0->getWidth() / 100.0f;
field_0x18 = param_0->getHeight() / 100.0f;
field_0x10->paneScale(field_0x14, field_0x14);
field_0xc->getPanePtr()->translate(transX, transY);
}
#pragma pop
/* ############################################################################################## */
/* 80453A80-80453A88 002080 0004+04 1/1 0/0 0/0 .sdata2 @3814 */
SECTION_SDATA2 static f32 lit_3814[1 + 1 /* padding */] = {
100.0f,
/* padding */
0.0f,
};
dSi_HIO_c::~dSi_HIO_c() {}
/* 80195B70-80195C1C 1904B0 00AC+00 0/0 1/1 0/0 .text setPos__14dSelect_icon_cFP7J2DPaneff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dSelect_icon_c::setPos(J2DPane* param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/d/d_select_icon/setPos__14dSelect_icon_cFP7J2DPaneff.s"
}
#pragma pop
/* 80195C1C-80195C64 19055C 0048+00 2/1 0/0 0/0 .text __dt__9dSi_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dSi_HIO_c::~dSi_HIO_c() {
nofralloc
#include "asm/d/d_select_icon/__dt__9dSi_HIO_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 8042CA10-8042CA20 059730 000C+04 1/1 0/0 0/0 .bss @3648 */
static u8 lit_3648[12 + 4 /* padding */];
/* 80451050-80451058 000550 0008+00 1/1 0/0 0/0 .sbss g_siHIO */
static u8 g_siHIO[8];
/* 80195C64-80195C9C 1905A4 0038+00 0/0 1/0 0/0 .text __sinit_d_select_icon_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_select_icon_cpp() {
nofralloc
#include "asm/d/d_select_icon/__sinit_d_select_icon_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80195C64, __sinit_d_select_icon_cpp);
#pragma pop
static dSi_HIO_c g_siHIO;
+248 -237
View File
@@ -4,6 +4,7 @@
//
#include "d/d_stage.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_ext.h"
@@ -28,14 +29,6 @@ struct dSvBit_HIO_c {
/* 8025C1F8 */ void init();
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C160 */ void syncRes(char const*, dRes_info_c*, int);
/* 8003C194 */ void deleteRes(char const*, dRes_info_c*, int);
/* 8003C1E4 */ void getResInfo(char const*, dRes_info_c*, int);
};
struct dDrawPath_c {
struct room_class {};
};
@@ -45,28 +38,10 @@ struct dMpath_c {
/* 8003FA40 */ void setPointer(s8, void*, int);
};
struct dEvent_manager_c {
/* 80046710 */ void create();
/* 80046C0C */ void remove();
};
struct dComIfG_play_c {
/* 8002C97C */ void getLayerNo(int);
};
struct cBgS_PolyInfo {};
struct dBgS {
/* 80074B98 */ void GetExitId(cBgS_PolyInfo const&);
/* 80075100 */ void GetRoomId(cBgS_PolyInfo const&);
};
struct cMl {
/* 80263228 */ void memalignB(int, u32);
};
struct cBgS_GndChk {};
struct JKRAramArchive {};
//
@@ -449,9 +424,7 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void snprintf(char*, u32, char*, ...);
extern "C" extern J3DLightInfo const j3dDefaultLightInfo;
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_save_bit_HIO[1184 + 4 /* padding */];
extern "C" extern u8 data_804505F0[8];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
@@ -460,6 +433,10 @@ extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
// Declarations:
//
inline dStage_stageDt_c& dComIfGp_getStage() {
return g_dComIfG_gameInfo.play.getStage();
}
void dStage_nextStage_c::set(const char* i_stage, s8 i_roomId, s16 i_point, s8 i_layer, s8 i_wipe,
u8 i_speed) {
if (!enabled) {
@@ -561,8 +538,8 @@ static int dStage_RoomKeepDoorInit(dStage_dt_c* param_0, void* param_1, int para
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_RoomKeepDoorInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_RoomKeepDoorInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_RoomKeepDoorInit__FP11dStage_dt_cPviPv.s"
}
@@ -600,18 +577,17 @@ u32 dStage_roomControl_c::mProcID;
/* 80450D67 0001+00 data_80450D67 None */
s8 struct_80450D64;
extern s8 sLastStayNo;
#pragma push
#pragma force_active on
s8 sLastStayNo;
extern s8 sNextStayNo;
s8 sNextStayNo;
#pragma pop
extern bool sTimePass;
bool sTimePass;
s8 sTimePass;
/* 80450D68-80450D6C 000268 0004+00 2/2 2/2 1/1 .sbss None */
extern u8 data_80450D68[4];
u8 data_80450D68[4];
u8 data_80450D68;
/* 80450D6C-80450D70 00026C 0004+00 1/1 2/2 0/0 .sbss mArcBankName__20dStage_roomControl_c */
char* dStage_roomControl_c::mArcBankName;
@@ -648,25 +624,24 @@ asm void dStage_roomControl_c::init() {
/* 80024338-80024384 01EC78 004C+00 1/1 1/1 0/7 .text initZone__20dStage_roomControl_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::initZone() {
nofralloc
#include "asm/d/d_stage/initZone__20dStage_roomControl_cFv.s"
void dStage_roomControl_c::initZone() {
dComIfGs_initZone();
dStage_roomStatus_c* status = &mStatus[0];
for (int i = 0; i < 0x40; i++) {
status->mZoneNo = -1;
status++;
}
}
#pragma pop
/* 80024384-800243B0 01ECC4 002C+00 2/2 27/27 6/6 .text getStatusRoomDt__20dStage_roomControl_cFi
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::getStatusRoomDt(int param_0) {
nofralloc
#include "asm/d/d_stage/getStatusRoomDt__20dStage_roomControl_cFi.s"
dStage_roomStatus_c* dStage_roomControl_c::getStatusRoomDt(int i_statusIdx) {
if (i_statusIdx < 0 || i_statusIdx >= 0x40) {
return NULL;
}
return &mStatus[i_statusIdx];
}
#pragma pop
/* ############################################################################################## */
/* 803A3B18-803A65CC 000C38 2AB4+00 2/2 0/0 0/0 .data l_objectName */
@@ -1067,14 +1042,25 @@ SECTION_DATA JKRExpHeap* dStage_roomControl_c::mMemoryBlock[19] = {
};
/* 800243B0-800243E8 01ECF0 0038+00 0/0 3/3 1/1 .text getMemoryBlock__20dStage_roomControl_cFi */
#ifdef NONMATCHING
JKRExpHeap* dStage_roomControl_c::getMemoryBlock(int i_roomNo) {
int blockId = getMemoryBlockID(i_roomNo);
if (blockId < 0) {
return NULL;
}
return mMemoryBlock[blockId];
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::getMemoryBlock(int param_0) {
asm JKRExpHeap* dStage_roomControl_c::getMemoryBlock(int param_0) {
nofralloc
#include "asm/d/d_stage/getMemoryBlock__20dStage_roomControl_cFi.s"
}
#pragma pop
#endif
/* 800243E8-80024424 01ED28 003C+00 2/2 0/0 0/0 .text setStayNo__20dStage_roomControl_cFi
*/
@@ -1101,21 +1087,9 @@ asm void dStage_roomControl_c::setStayNo(int param_0) {
#endif
/* 80024424-8002442C 01ED64 0008+00 0/0 0/0 1/1 .text setNextStayNo__20dStage_roomControl_cFi */
// matches but need to fix data
#ifdef NONMATCHING
void dStage_roomControl_c::setNextStayNo(int param_0) {
sNextStayNo = param_0;
void dStage_roomControl_c::setNextStayNo(int nextStayNo) {
sNextStayNo = nextStayNo;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::setNextStayNo(int param_0) {
nofralloc
#include "asm/d/d_stage/setNextStayNo__20dStage_roomControl_cFi.s"
}
#pragma pop
#endif
static int stayRoomCheck(int param_0, u8* param_1, int param_2) {
for (; param_0 > 0; param_0--) {
@@ -1138,14 +1112,12 @@ static asm void createRoomScene(int param_0) {
#pragma pop
/* 800244E8-8002451C 01EE28 0034+00 0/0 0/0 8/13 .text checkRoomDisp__20dStage_roomControl_cCFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::checkRoomDisp(int param_0) const {
nofralloc
#include "asm/d/d_stage/checkRoomDisp__20dStage_roomControl_cCFi.s"
bool dStage_roomControl_c::checkRoomDisp(int i_roomNo) const {
if (checkStatusFlag(i_roomNo, 8)) {
return false;
}
return checkStatusFlag(i_roomNo, 16) ? true : false;
}
#pragma pop
/* 8002451C-8002471C 01EE5C 0200+00 2/2 0/0 0/2 .text loadRoom__20dStage_roomControl_cFiPUcb */
#pragma push
@@ -1190,7 +1162,7 @@ void dStage_roomControl_c::destroyMemoryBlock() {
/* ############################################################################################## */
/* 803A696C-803A6AAC 003A8C 0140+00 2/2 0/0 0/0 .data mArcBank__20dStage_roomControl_c */
SECTION_DATA u8 dStage_roomControl_c::mArcBank[320] = {
SECTION_DATA char dStage_roomControl_c::mArcBank[32][10] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -1214,24 +1186,14 @@ SECTION_DATA u8 dStage_roomControl_c::mArcBank[320] = {
};
/* 8002490C-80024940 01F24C 0034+00 1/1 1/1 0/2 .text setArcBank__20dStage_roomControl_cFiPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::setArcBank(int param_0, char const* param_1) {
nofralloc
#include "asm/d/d_stage/setArcBank__20dStage_roomControl_cFiPCc.s"
void dStage_roomControl_c::setArcBank(int i_bank, char const* param_1) {
strncpy(&mArcBank[i_bank][0], param_1, 9);
}
#pragma pop
/* 80024940-80024954 01F280 0014+00 1/1 1/1 0/1 .text getArcBank__20dStage_roomControl_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::getArcBank(int param_0) {
nofralloc
#include "asm/d/d_stage/getArcBank__20dStage_roomControl_cFi.s"
char* dStage_roomControl_c::getArcBank(int i_bank) {
return mArcBank[i_bank];
}
#pragma pop
/* ############################################################################################## */
/* 80378A50-80378A50 0050B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1244,17 +1206,56 @@ SECTION_DEAD static char const* const stringBase_80378AF0 =
/* 80024954-80024A34 01F294 00E0+00 0/0 2/2 0/2 .text resetArchiveBank__20dStage_roomControl_cFi
*/
// regalloc
#ifdef NONMATCHING
int dStage_roomControl_c::resetArchiveBank(int i_bank) {
for (; i_bank < 32; i_bank++) {
char* bank = getArcBank(i_bank);
if (strcmp(bank, "")) {
s32 syncStatus = dComIfG_syncObjectRes(bank);
if (syncStatus < 0) {
OSReport_Error("Bank[%d] : %s.arc Sync Read Error !!\n", bank, i_bank);
} else {
if (syncStatus > 0) {
return 0;
}
dComIfG_deleteObjectResMain(bank);
setArcBank(i_bank, "");
}
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::resetArchiveBank(int param_0) {
asm int dStage_roomControl_c::resetArchiveBank(int param_0) {
nofralloc
#include "asm/d/d_stage/resetArchiveBank__20dStage_roomControl_cFi.s"
}
#pragma pop
#endif
/* 80024A34-80024ABC 01F374 0088+00 1/1 0/0 0/2 .text
* create__Q220dStage_roomControl_c9roomDzs_cFUc */
#ifdef NONMATCHING
void dStage_roomControl_c::roomDzs_c::create(u8 param_0) {
JKRExpHeap* archeap = mDoExt_getArchiveHeap();
JKRHeap** heap = new (archeap, -4) JKRHeap*[param_0];
m_dzs = heap;
JKRHeap* heap2 = (JKRHeap*)m_dzs;
if (heap2 != NULL) {
for (u8 i = 0; i < param_0; i++) {
heap2 = heap[i];
}
m_num = param_0;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1263,6 +1264,7 @@ asm void dStage_roomControl_c::roomDzs_c::create(u8 param_0) {
#include "asm/d/d_stage/create__Q220dStage_roomControl_c9roomDzs_cFUc.s"
}
#pragma pop
#endif
/* 80024ABC-80024B44 01F3FC 0088+00 1/1 0/0 0/0 .text remove__Q220dStage_roomControl_c9roomDzs_cFv
*/
@@ -1368,21 +1370,9 @@ static asm void dStage_roomInit(int param_0) {
#pragma pop
/* 80024DB0-80024DB8 01F6F0 0008+00 2/2 0/0 0/0 .text SetTimePass__20dStage_roomControl_cFi */
// matches but need to fix data
#ifdef NONMATCHING
void dStage_roomControl_c::SetTimePass(int isPassing) {
sTimePass = isPassing;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::SetTimePass(int param_0) {
nofralloc
#include "asm/d/d_stage/SetTimePass__20dStage_roomControl_cFi.s"
}
#pragma pop
#endif
roomRead_class* dStage_stageDt_c::getRoom() const {
return mRoom;
@@ -1429,14 +1419,29 @@ const char* dStage_getName2(s16 procName, s8 subtype) {
/* 80024EFC-80024F98 01F83C 009C+00 7/7 0/0 0/0 .text
* dStage_actorCreate__FP22stage_actor_data_classP16fopAcM_prm_class */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_actorCreate(stage_actor_data_class* param_0, fopAcM_prm_class* param_1) {
nofralloc
#include "asm/d/d_stage/dStage_actorCreate__FP22stage_actor_data_classP16fopAcM_prm_class.s"
static void dStage_actorCreate(stage_actor_data_class* param_0, fopAcM_prm_class* param_1) {
dStage_objectNameInf* actorInf = dStage_searchName((char*)param_0);
fopAc_ac_c* actor;
if (actorInf == NULL) {
JKRHeap::free(param_1, NULL);
} else {
param_1->mSubtype = actorInf->mSubtype;
s16 objName = actorInf->mProcName;
// "hider" actor
if (objName == 0x30F) {
actor = (fopAc_ac_c*)fopAcM_FastCreate(objName, 0, NULL, param_1);
if (actor != NULL) {
fopAcM_delete(actor);
}
} else {
layer_class* curLayer = fpcLy_CurrentLayer();
fpcSCtRq_Request(curLayer, objName, 0, NULL, param_1);
}
}
}
#pragma pop
/* ############################################################################################## */
/* 80451C90-80451C94 000290 0004+00 2/2 0/0 0/0 .sdata2 @4270 */
@@ -1477,43 +1482,43 @@ SECTION_DEAD static char const* const stringBase_80378B2B = "S_MV000";
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_playerInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
static asm int dStage_playerInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_playerInit__FP11dStage_dt_cPviPv.s"
}
#pragma pop
/* 800252B8-80025308 01FBF8 0050+00 1/0 0/0 0/0 .text dStage_cameraInit__FP11dStage_dt_cPviPv */
#ifdef NONMATCHING
static int dStage_cameraInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
unkTest* tmp = (unkTest*)param_1;
param_0->setCamera((stage_camera_class*)tmp->field_0x4);
dStage_cameraCreate((stage_camera2_data_class*)tmp->field_0x4, 0, 0);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_cameraInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
static asm int dStage_cameraInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_cameraInit__FP11dStage_dt_cPviPv.s"
}
#pragma pop
#endif
/* 80025308-8002533C 01FC48 0034+00 1/0 0/0 0/0 .text dStage_RoomCameraInit__FP11dStage_dt_cPviPv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_RoomCameraInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_RoomCameraInit__FP11dStage_dt_cPviPv.s"
static int dStage_RoomCameraInit(dStage_dt_c* i_stage, void* param_1, int param_2, void* param_3) {
i_stage->setCamera((stage_camera_class*)param_1 + 4);
return 1;
}
#pragma pop
/* 8002533C-80025370 01FC7C 0034+00 2/0 0/0 0/0 .text dStage_arrowInit__FP11dStage_dt_cPviPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_arrowInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_arrowInit__FP11dStage_dt_cPviPv.s"
static int dStage_arrowInit(dStage_dt_c* i_stage, void* param_1, int param_2, void* param_3) {
i_stage->setArrow((stage_arrow_class*)param_1 + 4);
return 1;
}
#pragma pop
/* 80025370-800253FC 01FCB0 008C+00 1/0 0/0 0/0 .text getMapInfo2__15dStage_roomDt_cCFi
*/
@@ -1562,8 +1567,8 @@ asm stage_map_info_dummy_class* dStage_stageDt_c::getMapInfoBase() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_paletteInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_paletteInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_paletteInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1574,8 +1579,8 @@ static asm void dStage_paletteInfoInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_pselectInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_pselectInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_pselectInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1585,8 +1590,8 @@ static asm void dStage_pselectInfoInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_envrInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_envrInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_envrInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1597,8 +1602,8 @@ static asm void dStage_envrInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_filiInfo2Init(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_filiInfo2Init(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_filiInfo2Init__FP11dStage_dt_cPviPv.s"
}
@@ -1609,8 +1614,8 @@ static asm void dStage_filiInfo2Init(dStage_dt_c* param_0, void* param_1, int pa
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_fieldMapFiliInfo2Init(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_fieldMapFiliInfo2Init(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_fieldMapFiliInfo2Init__FP11dStage_dt_cPviPv.s"
}
@@ -1620,8 +1625,8 @@ static asm void dStage_fieldMapFiliInfo2Init(dStage_dt_c* param_0, void* param_1
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_filiInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_filiInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_filiInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1632,8 +1637,8 @@ static asm void dStage_filiInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_vrboxInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_vrboxInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_vrboxInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1644,8 +1649,8 @@ static asm void dStage_vrboxInfoInit(dStage_dt_c* param_0, void* param_1, int pa
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_vrboxcolInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_vrboxcolInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_vrboxcolInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1656,8 +1661,8 @@ static asm void dStage_vrboxcolInfoInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_plightInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_plightInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_plightInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1667,8 +1672,8 @@ static asm void dStage_plightInfoInit(dStage_dt_c* param_0, void* param_1, int p
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_lgtvInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_lgtvInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_lgtvInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1696,8 +1701,8 @@ SECTION_DEAD static char const* const stringBase_80378B33 = "Xtg_00";
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_stagInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_stagInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_stagInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1718,8 +1723,8 @@ asm void dStage_stageDt_c::resetOldMulti() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_sclsInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_sclsInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_sclsInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1730,8 +1735,8 @@ static asm void dStage_sclsInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_actorCommonLayerInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_actorCommonLayerInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_actorCommonLayerInit__FP11dStage_dt_cPviPv.s"
}
@@ -1742,8 +1747,8 @@ static asm void dStage_actorCommonLayerInit(dStage_dt_c* param_0, void* param_1,
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_tgscCommonLayerInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_tgscCommonLayerInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_tgscCommonLayerInit__FP11dStage_dt_cPviPv.s"
}
@@ -1753,7 +1758,7 @@ static asm void dStage_tgscCommonLayerInit(dStage_dt_c* param_0, void* param_1,
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_actorInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
static asm int dStage_actorInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_actorInit__FP11dStage_dt_cPviPv.s"
}
@@ -1764,8 +1769,8 @@ static asm void dStage_actorInit(dStage_dt_c* param_0, void* param_1, int param_
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_actorInit_always(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_actorInit_always(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_actorInit_always__FP11dStage_dt_cPviPv.s"
}
@@ -1775,8 +1780,8 @@ static asm void dStage_actorInit_always(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_tgscInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_tgscInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_tgscInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1786,8 +1791,8 @@ static asm void dStage_tgscInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_doorInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_doorInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_doorInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1797,8 +1802,8 @@ static asm void dStage_doorInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_roomReadInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_roomReadInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_roomReadInit__FP11dStage_dt_cPviPv.s"
}
@@ -1819,8 +1824,8 @@ asm u8 dStage_roomRead_dt_c_GetReverbStage(roomRead_class& param_0, int param_1)
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_ppntInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_ppntInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_ppntInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1830,8 +1835,8 @@ static asm void dStage_ppntInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_pathInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_pathInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_pathInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1841,8 +1846,8 @@ static asm void dStage_pathInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_rppnInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_rppnInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_rppnInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1852,8 +1857,8 @@ static asm void dStage_rppnInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_rpatInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_rpatInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_rpatInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1864,8 +1869,8 @@ static asm void dStage_rpatInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_soundInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_soundInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_soundInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1876,8 +1881,8 @@ static asm void dStage_soundInfoInit(dStage_dt_c* param_0, void* param_1, int pa
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_soundInfoInitCL(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_soundInfoInitCL(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_soundInfoInitCL__FP11dStage_dt_cPviPv.s"
}
@@ -1902,6 +1907,28 @@ SECTION_DEAD static char const* const stringBase_80378B3A = "dStage_dt_c_decode:
/* 800260B4-8002617C 0209F4 00C8+00 9/9 0/0 0/0 .text
* dStage_dt_c_decode__FPvP11dStage_dt_cP9FuncTablei */
// no idea
#ifdef NONMATCHING
static void dStage_dt_c_decode(void* i_data, dStage_dt_c* i_stage, FuncTable* param_2,
int param_3) {
int* ptr;
if (i_data != NULL) {
int ivar4 = 0;
ptr = (int*)i_data + 1;
for (int i = 0; i < param_3; i += 12) {
for (int j = 0; j < (int)ptr; j += 12) {
if ((int)ptr == ivar4) {
param_2->function(i_stage, (void*)ptr, param_3, i_data);
}
}
ivar4++;
}
}
OSReport_Error("dStage_dt_c_decode: i_data is NULL\n");
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1911,14 +1938,15 @@ static asm void dStage_dt_c_decode(void* param_0, dStage_dt_c* param_1, FuncTabl
#include "asm/d/d_stage/dStage_dt_c_decode__FPvP11dStage_dt_cP9FuncTablei.s"
}
#pragma pop
#endif
/* 8002617C-800261B0 020ABC 0034+00 1/0 0/0 0/0 .text dStage_stEventInfoInit__FP11dStage_dt_cPviPv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_stEventInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_stEventInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_stEventInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1929,8 +1957,8 @@ static asm void dStage_stEventInfoInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_mapEventInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_mapEventInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_mapEventInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1941,8 +1969,8 @@ static asm void dStage_mapEventInfoInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_floorInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_floorInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_floorInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1952,8 +1980,8 @@ static asm void dStage_floorInfoInit(dStage_dt_c* param_0, void* param_1, int pa
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_memaInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_memaInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_memaInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1963,8 +1991,8 @@ static asm void dStage_memaInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_mecoInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_mecoInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_mecoInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -1975,8 +2003,8 @@ static asm void dStage_mecoInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_stageKeepTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_stageKeepTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_stageKeepTresureInit__FP11dStage_dt_cPviPv.s"
}
@@ -1987,8 +2015,8 @@ static asm void dStage_stageKeepTresureInit(dStage_dt_c* param_0, void* param_1,
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_fieldMapTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_fieldMapTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_fieldMapTresureInit__FP11dStage_dt_cPviPv.s"
}
@@ -2008,8 +2036,7 @@ static asm void dStage_dt_c_offsetToPtr(void* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_mapPathInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_mapPathInit(dStage_dt_c* param_0, void* param_1, int param_2, void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_mapPathInit__FP11dStage_dt_cPviPv.s"
}
@@ -2020,8 +2047,8 @@ static asm void dStage_mapPathInit(dStage_dt_c* param_0, void* param_1, int para
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_mapPathInitCommonLayer(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_mapPathInitCommonLayer(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_mapPathInitCommonLayer__FP11dStage_dt_cPviPv.s"
}
@@ -2032,8 +2059,8 @@ static asm void dStage_mapPathInitCommonLayer(dStage_dt_c* param_0, void* param_
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_fieldMapMapPathInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_fieldMapMapPathInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_fieldMapMapPathInit__FP11dStage_dt_cPviPv.s"
}
@@ -2065,8 +2092,8 @@ static asm void readMult(dStage_dt_c* param_0, dStage_Multi_c* param_1, bool par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_multInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_multInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_multInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -2076,8 +2103,8 @@ static asm void dStage_multInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_lbnkInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_lbnkInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_lbnkInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -2088,8 +2115,8 @@ static asm void dStage_lbnkInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_roomTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_roomTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_roomTresureInit__FP11dStage_dt_cPviPv.s"
}
@@ -2100,8 +2127,8 @@ static asm void dStage_roomTresureInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_layerTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_layerTresureInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_layerTresureInit__FP11dStage_dt_cPviPv.s"
}
@@ -2111,8 +2138,8 @@ static asm void dStage_layerTresureInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_dmapInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_dmapInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_dmapInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -2123,8 +2150,8 @@ static asm void dStage_dmapInfoInit(dStage_dt_c* param_0, void* param_1, int par
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_stageDrtgInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_stageDrtgInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_stageDrtgInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -2135,8 +2162,8 @@ static asm void dStage_stageDrtgInfoInit(dStage_dt_c* param_0, void* param_1, in
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_roomDrtgInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_roomDrtgInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_roomDrtgInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -2146,8 +2173,8 @@ static asm void dStage_roomDrtgInfoInit(dStage_dt_c* param_0, void* param_1, int
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_elstInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
static asm int dStage_elstInfoInit(dStage_dt_c* param_0, void* param_1, int param_2,
void* param_3) {
nofralloc
#include "asm/d/d_stage/dStage_elstInfoInit__FP11dStage_dt_cPviPv.s"
}
@@ -2164,25 +2191,18 @@ static asm void dKankyo_create() {
#pragma pop
/* 80026914-80026940 021254 002C+00 1/1 0/0 0/0 .text layerMemoryInfoLoader__FPvP11dStage_dt_ci */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void layerMemoryInfoLoader(void* param_0, dStage_dt_c* param_1, int param_2) {
nofralloc
#include "asm/d/d_stage/layerMemoryInfoLoader__FPvP11dStage_dt_ci.s"
static void layerMemoryInfoLoader(void* i_data, dStage_dt_c* i_stage, int param_2) {
dStage_dt_c_decode(i_data, i_stage, &l_layerFuncTable_5131[0], 2);
}
#pragma pop
/* 80026940-800269B4 021280 0074+00 1/1 0/0 0/0 .text
* dStage_dt_c_stageInitLoader__FPvP11dStage_dt_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dStage_dt_c_stageInitLoader(void* param_0, dStage_dt_c* param_1) {
nofralloc
#include "asm/d/d_stage/dStage_dt_c_stageInitLoader__FPvP11dStage_dt_c.s"
static void dStage_dt_c_stageInitLoader(void* i_data, dStage_dt_c* i_stage) {
dStage_dt_c_offsetToPtr(i_data);
i_stage->init();
dStage_dt_c_decode(i_data, i_stage, &l_funcTable_5136, 1);
layerMemoryInfoLoader(i_data, i_stage, -1);
}
#pragma pop
/* 800269B4-80026AE8 0212F4 0134+00 2/2 0/0 0/0 .text layerTableLoader__FPvP11dStage_dt_ci */
#pragma push
@@ -2258,22 +2278,13 @@ asm void dStage_dt_c_fieldMapLoader(void* param_0, dStage_dt_c* param_1) {
}
#pragma pop
/* ############################################################################################## */
/* 80378A50-80378A50 0050B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80378B69 = "stage.dzs";
#pragma pop
/* 80026CDC-80026D38 02161C 005C+00 0/0 1/1 0/0 .text dStage_infoCreate__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_infoCreate() {
nofralloc
#include "asm/d/d_stage/dStage_infoCreate__Fv.s"
void dStage_infoCreate() {
void* stageRsrc = dComIfG_getStageRes("stage.dzs");
dComIfGp_roomControl_init();
dStage_dt_c_stageInitLoader(stageRsrc, &dComIfGp_getStage());
}
#pragma pop
/* ############################################################################################## */
/* 80378A50-80378A50 0050B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+85 -55
View File
@@ -170,6 +170,10 @@ inline dEvent_manager_c& dComIfGp_getEventManager() {
return g_dComIfG_gameInfo.play.getEvtManager();
}
inline dEvt_control_c& dComIfGp_getEvent() {
return g_dComIfG_gameInfo.play.getEvent();
}
/* 80041480-80041488 03BDC0 0008+00 1/1 0/0 0/0 .text event_debug_evnt__21@unnamed@d_event_cpp@Fv
*/
static bool func_80041480() {
@@ -201,17 +205,17 @@ dEvt_order_c::dEvt_order_c() {
/* 800415D8-80041668 03BF18 0090+00 1/1 0/0 0/0 .text orderOld__14dEvt_control_cFUsUsUsUsPvPvPCv
*/
void dEvt_control_c::orderOld(u16 param_0, u16 param_1, u16 param_2, u16 param_3, void* param_4,
bool dEvt_control_c::orderOld(u16 param_0, u16 param_1, u16 param_2, u16 param_3, void* param_4,
void* param_5, void const* param_6) {
s16 eventIdx = dComIfGp_getEventManager().getEventIdx((char*)param_6, -1, -1);
order(param_0, param_1, param_2, param_3, param_4, param_5, eventIdx, -1);
return order(param_0, param_1, param_2, param_3, param_4, param_5, eventIdx, -1);
}
/* 80041668-80041804 03BFA8 019C+00 3/3 13/13 0/0 .text order__14dEvt_control_cFUsUsUsUsPvPvsUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_control_c::order(u16 param_0, u16 param_1, u16 param_2, u16 param_3, void* param_4,
asm bool dEvt_control_c::order(u16 param_0, u16 param_1, u16 param_2, u16 param_3, void* param_4,
void* param_5, s16 param_6, u8 param_7) {
nofralloc
#include "asm/d/event/d_event/order__14dEvt_control_cFUsUsUsUsPvPvsUc.s"
@@ -268,7 +272,7 @@ asm void dEvt_control_c::afterFlagProc(dEvt_order_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_control_c::commonCheck(dEvt_order_c* param_0, u16 param_1, u16 param_2) {
asm int dEvt_control_c::commonCheck(dEvt_order_c* param_0, u16 param_1, u16 param_2) {
nofralloc
#include "asm/d/event/d_event/commonCheck__14dEvt_control_cFP12dEvt_order_cUsUs.s"
}
@@ -381,33 +385,54 @@ asm void dEvt_control_c::doorCheck(dEvt_order_c* param_0) {
}
#pragma pop
/* ############################################################################################## */
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80379DB3 = "DEFAULT_GETITEM";
#pragma pop
/* 8004212C-800421C0 03CA6C 0094+00 1/1 0/0 0/0 .text itemCheck__14dEvt_control_cFP12dEvt_order_c
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_control_c::itemCheck(dEvt_order_c* param_0) {
nofralloc
#include "asm/d/event/d_event/itemCheck__14dEvt_control_cFP12dEvt_order_c.s"
int dEvt_control_c::itemCheck(dEvt_order_c* param_0) {
const char* event = "DEFAULT_GETITEM";
if (commonCheck(param_0, 8, 4)) {
mMode = 2;
mSpecifiedEvent = dComIfGp_getEventManager().getEventIdx(event, -1, -1);
dComIfGp_getEventManager().order(mSpecifiedEvent);
return 1;
} else {
return 0;
}
}
#pragma pop
/* 800421C0-80042254 03CB00 0094+00 1/1 0/0 0/0 .text endProc__14dEvt_control_cFv */
#ifdef NONMATCHING
int dEvt_control_c::endProc() {
switch (mMode) {
case 1:
talkEnd();
break;
case 2:
demoEnd();
break;
}
mMode = 0;
field_0xea = 255;
mMapToolId = 255;
mStageEventDt = NULL;
field_0xec = 255;
field_0xed = 0;
field_0xe0 = -1;
mPreItemNo = 255;
dComIfGp_getEventManager().setStartDemo(-2);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_control_c::endProc() {
asm int dEvt_control_c::endProc() {
nofralloc
#include "asm/d/event/d_event/endProc__14dEvt_control_cFv.s"
}
#pragma pop
#endif
/* 80042254-800422C0 03CB94 006C+00 1/1 0/0 0/0 .text change__14dEvt_control_cFv */
#pragma push
@@ -481,14 +506,10 @@ void dEvt_control_c::clearSkipSystem() {
}
/* 800425E8-8004261C 03CF28 0034+00 0/0 2/2 5/5 .text dEv_defaultSkipProc__FPvi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int dEv_defaultSkipProc(void* param_0, int param_1) {
nofralloc
#include "asm/d/event/d_event/dEv_defaultSkipProc__FPvi.s"
int dEv_defaultSkipProc(void* param_0, int param_1) {
dComIfGp_getEvent().reset(param_0);
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 80379D80-80379D80 0063E0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -518,14 +539,10 @@ asm int dEv_defaultSkipStb(void* param_0, int param_1) {
#pragma pop
/* 800428DC-8004290C 03D21C 0030+00 0/0 1/1 33/33 .text dEv_noFinishSkipProc__FPvi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int dEv_noFinishSkipProc(void* param_0, int param_1) {
nofralloc
#include "asm/d/event/d_event/dEv_noFinishSkipProc__FPvi.s"
int dEv_noFinishSkipProc(void* param_0, int param_1) {
dComIfGp_getEvent().offSkipFade();
return 0;
}
#pragma pop
char* dEvt_control_c::getSkipEventName() {
return mSkipEventName;
@@ -593,14 +610,30 @@ asm void dEvt_control_c::moveApproval(void* param_0) {
#pragma pop
/* 8004316C-800431E8 03DAAC 007C+00 0/0 28/28 0/0 .text compulsory__14dEvt_control_cFPvPCcUs */
#ifdef NONMATCHING
bool dEvt_control_c::compulsory(void* param_0, char const* param_1, u16 param_2) {
bool check = false;
if (field_0xe5 == 0 || field_0xe5 == 2) {
check = true;
}
if (!check || mCompulsory) {
return false;
} else {
mCompulsory = 1;
return orderOld(3, 2, 0, param_2, param_0, NULL, param_1);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_control_c::compulsory(void* param_0, char const* param_1, u16 param_2) {
asm bool dEvt_control_c::compulsory(void* param_0, char const* param_1, u16 param_2) {
nofralloc
#include "asm/d/event/d_event/compulsory__14dEvt_control_cFPvPCcUs.s"
}
#pragma pop
#endif
void dEvt_control_c::remove() {
mMode = 0;
@@ -682,38 +715,35 @@ dEvt_info_c::dEvt_info_c() {
}
/* 80043428-80043480 03DD68 0058+00 0/0 0/0 4/4 .text setEventName__11dEvt_info_cFPc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_info_c::setEventName(char* param_0) {
nofralloc
#include "asm/d/event/d_event/setEventName__11dEvt_info_cFPc.s"
void dEvt_info_c::setEventName(char* param_0) {
if (param_0 == NULL) {
mEventId = -1;
} else {
mEventId = dComIfGp_getEventManager().getEventIdx(param_0, -1, -1);
}
}
#pragma pop
/* 80043480-800434CC 03DDC0 004C+00 1/1 0/0 0/0 .text getEventName__11dEvt_info_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_info_c::getEventName() {
nofralloc
#include "asm/d/event/d_event/getEventName__11dEvt_info_cFv.s"
// fake match?
s16 dEvt_info_c::getEventName() {
if (mEventId == -1) {
return 0;
} else {
dEvDtEvent_c* data = dComIfGp_getEventManager().getEventData(mEventId);
if (data == NULL) {
return 0;
}
}
}
#pragma pop
void dEvt_info_c::beforeProc() {
setCondition(2);
}
/* 800434D8-80043500 03DE18 0028+00 0/0 4/4 1/1 .text searchMapEventData__14dEvt_control_cFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvt_control_c::searchMapEventData(u8 param_0) {
nofralloc
#include "asm/d/event/d_event/searchMapEventData__14dEvt_control_cFUc.s"
void dEvt_control_c::searchMapEventData(u8 param_0) {
searchMapEventData(param_0, (s32)struct_80450D64);
}
#pragma pop
/* 80043500-8004360C 03DE40 010C+00 3/3 7/7 5/5 .text searchMapEventData__14dEvt_control_cFUcl */
#pragma push
+46 -87
View File
@@ -4,6 +4,7 @@
//
#include "d/event/d_event_manager.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,26 +12,6 @@
// Types:
//
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int);
};
struct dEvt_control_c {
/* 80042468 */ void reset();
/* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int);
/* 800429A8 */ void onSkipFade();
/* 80043278 */ void getStageEventDt();
/* 80043280 */ void sceneChange(int);
/* 800432EC */ void convPId(unsigned int);
/* 80043500 */ void searchMapEventData(u8, s32);
/* 8004360C */ void runningEventID(s16);
/* 8004365C */ void setPt2(void*);
/* 800436BC */ void setPtI(void*);
/* 800436F4 */ void setPtD(void*);
};
struct dCamera_c {
/* 80180A40 */ void EventRecoverNotime();
/* 80181E98 */ void Center();
@@ -40,8 +21,6 @@ struct Z2StatusMgr {
/* 802B61E8 */ void setDemoName(char*);
};
struct JAISoundID {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
@@ -172,9 +151,7 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" u8 mDemoArcName__20dStage_roomControl_c[10 + 2 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
@@ -271,26 +248,7 @@ dEvDtBase_c::dEvDtBase_c() {
/* ############################################################################################## */
/* 80379F50-80379F60 0065B0 000F+01 6/6 0/0 0/0 .rodata
* DataFileName__29@unnamed@d_event_manager_cpp@ */
SECTION_RODATA static u8 const data_80379F50[15 + 1 /* padding */] = {
0x65,
0x76,
0x65,
0x6E,
0x74,
0x5F,
0x6C,
0x69,
0x73,
0x74,
0x2E,
0x64,
0x61,
0x74,
0x00,
/* padding */
0x00,
};
COMPILER_STRIP_GATE(0x80379F50, &data_80379F50);
SECTION_RODATA static char const data_80379F50[16] = "event_list.dat";
/* 80379F60-80379F60 0065C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
@@ -299,24 +257,42 @@ SECTION_DEAD static char const* const stringBase_8037A07E = "Event";
#pragma pop
/* 80046710-80046800 041050 00F0+00 0/0 1/1 0/0 .text create__16dEvent_manager_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvent_manager_c::create() {
nofralloc
#include "asm/d/event/d_event_manager/create__16dEvent_manager_cFv.s"
int dEvent_manager_c::create() {
mCameraPlay = 0;
mEventException.init();
mFlags.init();
field_0x1b4 = 0;
field_0x1aa = -1;
field_0x1b8 = 0;
field_0x1b0 = -1;
mDataLoaded = 0;
for (int i = 4; i <= 9; i++) {
mEventList[i].init();
}
char* res = (char*)dComIfG_getStageRes(data_80379F50);
mEventList[3].init(res, -1);
mEventList[10].init();
res = (char*)dComIfG_getObjectRes("Event", data_80379F50);
mEventList[1].init(res, -1);
mEventList[2].init();
return 1;
}
#pragma pop
/* 80046800-80046888 041140 0088+00 0/0 8/8 24/24 .text setObjectArchive__16dEvent_manager_cFPc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvent_manager_c::setObjectArchive(char* param_0) {
nofralloc
#include "asm/d/event/d_event_manager/setObjectArchive__16dEvent_manager_cFPc.s"
bool dEvent_manager_c::setObjectArchive(char* param_0) {
char* rt = NULL;
if (param_0 != NULL) {
char* res = (char*)dComIfG_getObjectRes(param_0, data_80379F50);
rt = res;
mEventList[2].init(res, -1);
} else {
mEventList[2].init();
}
return rt != NULL;
}
#pragma pop
/* 80046888-80046904 0411C8 007C+00 0/0 1/1 0/0 .text demoInit__16dEvent_manager_cFv */
#pragma push
@@ -374,34 +350,22 @@ void dEvent_manager_c::remove() {
}
/* 80046C74-80046C88 0415B4 0014+00 1/1 0/0 0/0 .text extraOnObjectCallBack__FP10fopAc_ac_cPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void extraOnObjectCallBack(fopAc_ac_c* param_0, void* param_1) {
nofralloc
#include "asm/d/event/d_event_manager/extraOnObjectCallBack__FP10fopAc_ac_cPv.s"
static int extraOnObjectCallBack(fopAc_ac_c* pActor, void* param_1) {
fopAcM_OnStatus(pActor, 0x800);
return 0;
}
#pragma pop
/* 80046C88-80046C9C 0415C8 0014+00 1/1 0/0 0/0 .text extraOffObjectCallBack__FP10fopAc_ac_cPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void extraOffObjectCallBack(fopAc_ac_c* param_0, void* param_1) {
nofralloc
#include "asm/d/event/d_event_manager/extraOffObjectCallBack__FP10fopAc_ac_cPv.s"
static int extraOffObjectCallBack(fopAc_ac_c* pActor, void* param_1) {
fopAcM_OffStatus(pActor, 0x800);
return 0;
}
#pragma pop
/* 80046C9C-80046CB8 0415DC 001C+00 1/1 0/0 0/0 .text allOffObjectCallBack__FP10fopAc_ac_cPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void allOffObjectCallBack(fopAc_ac_c* param_0, void* param_1) {
nofralloc
#include "asm/d/event/d_event_manager/allOffObjectCallBack__FP10fopAc_ac_cPv.s"
static int allOffObjectCallBack(fopAc_ac_c* pActor, void* param_1) {
fopAcM_OffStatus(pActor, 0x9000);
return 0;
}
#pragma pop
/* 80046CB8-80046DA0 0415F8 00E8+00 1/1 0/0 0/0 .text
* startProc__16dEvent_manager_cFP12dEvDtEvent_c */
@@ -416,14 +380,9 @@ asm void dEvent_manager_c::startProc(dEvDtEvent_c* param_0) {
/* 80046DA0-80046DAC 0416E0 000C+00 2/2 0/0 0/0 .text
* closeProc__16dEvent_manager_cFP12dEvDtEvent_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvent_manager_c::closeProc(dEvDtEvent_c* param_0) {
nofralloc
#include "asm/d/event/d_event_manager/closeProc__16dEvent_manager_cFP12dEvDtEvent_c.s"
void dEvent_manager_c::closeProc(dEvDtEvent_c* param_0) {
param_0->field_0xa4 = 2;
}
#pragma pop
/* ############################################################################################## */
/* 80379F60-80379F60 0065C0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -527,7 +486,7 @@ asm dEvDtEvent_c* dEvent_manager_c::getEventData(s16 param_0, int param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dEvent_manager_c::getEventData(s16 param_0) {
asm dEvDtEvent_c* dEvent_manager_c::getEventData(s16 param_0) {
nofralloc
#include "asm/d/event/d_event_manager/getEventData__16dEvent_manager_cFs.s"
}
+5 -92
View File
@@ -4,6 +4,7 @@
//
#include "d/kankyo/d_kankyo.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -13,8 +14,6 @@
struct sub_kankyo__class {};
struct stage_pure_lightvec_info_class {};
struct mDoMtx_stack_c {
static u8 now[48];
};
@@ -27,88 +26,21 @@ struct mDoGph_gInf_c {
static u8 m_bloom[20];
};
struct daPy_py_c {
/* 8015F424 */ void checkNowWolfEyeUp();
};
struct dSv_player_status_b_c {
/* 80032BB0 */ void isDarkClearLV(int) const;
};
struct dSv_memBit_c {
/* 80034860 */ void isSwitch(int) const;
/* 80034934 */ void isDungeonItem(int) const;
};
struct dSv_info_c {
/* 80035360 */ void isSwitch(int, int) const;
};
struct dSv_event_tmp_flag_c {
static u8 const tempBitLabels[370 + 2 /* padding */];
};
struct dSv_event_c {
/* 800349A4 */ void offEventBit(u16);
/* 800349BC */ void isEventBit(u16) const;
};
struct dStage_roomControl_c {
/* 80024384 */ void getStatusRoomDt(int);
/* 8019F780 */ void GetTimePass();
static u8 mStatus[65792];
};
struct dRes_info_c {};
struct dRes_control_c {
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
};
struct dPa_levelEcallBack {};
struct dPa_control_c {
/* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
cXyz const*, f32);
};
struct dMsgObject_c {
/* 8023819C */ void getActor();
};
struct dComIfG_play_c {
/* 8002C950 */ void getLayerNo_common(char const*, int, int);
/* 8002C97C */ void getLayerNo(int);
};
struct dBgS_CamGndChk_Wtr {
/* 80077A00 */ dBgS_CamGndChk_Wtr();
/* 80077A98 */ ~dBgS_CamGndChk_Wtr();
};
struct cBgS_PolyInfo {};
struct dBgS {
/* 80074E50 */ void GetPolyAtt0(cBgS_PolyInfo const&);
/* 80074EA0 */ void GetPolyAtt1(cBgS_PolyInfo const&);
};
struct color_RGB_class {};
struct cBgS_GndChk {
/* 80267D28 */ void SetPos(cXyz const*);
};
struct cBgS {
/* 800744A0 */ void GroundCross(cBgS_GndChk*);
};
struct _GXFogType {};
struct JAISoundID {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
@@ -127,10 +59,6 @@ struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct JUTNameTab {
/* 802DEAF8 */ void getName(u16) const;
};
struct JMath {
static u8 sincosTable_[65536];
};
@@ -345,7 +273,7 @@ extern "C" void dKy_shadow_mode_check__FUc();
extern "C" void dKy_bg_MAxx_proc__FPv();
extern "C" void __dt__18dScnKy_env_light_cFv();
extern "C" void __sinit_d_kankyo_cpp();
extern "C" static void dKankyo_DayProc__Fv();
extern "C" void dKankyo_DayProc__Fv();
extern "C" extern char const* const d_kankyo_d_kankyo__stringBase0;
extern "C" extern u8 struct_80451070[8];
@@ -353,8 +281,6 @@ extern "C" extern u8 struct_80451070[8];
// External References:
//
SECTION_INIT void memset();
SECTION_INIT void memcpy();
extern "C" void mDoAud_setSceneName__FPCcll();
extern "C" void __dt__4cXyzFv();
extern "C" void create__Q213mDoGph_gInf_c7bloom_cFv();
@@ -475,11 +401,7 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void abs();
extern "C" void memcmp();
extern "C" void strcmp();
extern "C" void cos();
extern "C" void sin();
extern "C" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
extern "C" extern u8 const j3dDefaultMtx[48];
extern "C" extern void* __vt__12J3DFrameCtrl[3];
@@ -488,12 +410,8 @@ extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 m_bloom__13mDoGph_gInf_c[20];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mStatus__20dStage_roomControl_c[65792];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_meter2_info[248];
extern "C" extern u8 g_Counter[12 + 4 /* padding */];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" extern u32 __float_nan;
extern "C" extern u8 struct_80450D64[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
//
@@ -1583,7 +1501,7 @@ asm void dScnKy_env_light_c::setDaytime() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_roomControl_c::GetTimePass() {
asm s8 dStage_roomControl_c::GetTimePass() {
nofralloc
#include "asm/d/kankyo/d_kankyo/GetTimePass__20dStage_roomControl_cFv.s"
}
@@ -3527,14 +3445,9 @@ REGISTER_CTORS(0x801ADCA4, __sinit_d_kankyo_cpp);
#pragma pop
/* 801ADD00-801ADD38 1A8640 0038+00 2/2 0/0 0/0 .text dKankyo_DayProc__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dKankyo_DayProc() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKankyo_DayProc__Fv.s"
void dKankyo_DayProc() {
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[91]);
}
#pragma pop
/* ############################################################################################## */
/* 80451070-80451078 -00001 0008+00 0/0 1/1 0/0 .sbss None */
+26
View File
@@ -468,6 +468,31 @@ void dMeter2Info_c::decMsgKeyWaitTimer() {
/* 8021C250-8021C370 216B90 0120+00 0/0 16/16 0/0 .text
* getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c */
#ifdef NONMATCHING
void dMeter2Info_c::getString(u32 param_0, char* param_1, JMSMesgEntry_c* param_2) {
strcpy(param_1, "");
bmgHeader* res;
if (mMsgResource == NULL) {
JKRArchive* msgDtArc = dComIfGp_getMsgDtArchive(0);
res = (bmgHeader*)JKRArchive::getGlbResource('ROOT', "zel_00.bmg", msgDtArc);
if (res == NULL) {
return;
}
} else {
for (u16 i = bmgHeader->unk1; i < bmgHeader->entrycount; i++) {
JMSMesgEntry_c* entry = (JMSMesgEntry_c*)res + 0x20 + i;
if (param_0 == entry->mStringId) {
strcpy(param_1, (char*)&res + 0x20 + 0x24 + 8 + 0x14);
}
}
}
if (mMsgResource == NULL) {
dComIfGp_getMsgDtArchive(0)->removeResourceAll();
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -476,6 +501,7 @@ asm void dMeter2Info_c::getString(u32 param_0, char* param_1, JMSMesgEntry_c* pa
#include "asm/d/meter/d_meter2_info/getString__13dMeter2Info_cFUlPcP14JMSMesgEntry_c.s"
}
#pragma pop
#endif
/* 8021C370-8021C544 216CB0 01D4+00 0/0 1/1 0/0 .text
* getStringKana__13dMeter2Info_cFUlPcP14JMSMesgEntry_c */
+1465 -935
View File
File diff suppressed because it is too large Load Diff
+220 -125
View File
@@ -6,6 +6,7 @@
#include "d/pane/d_pane_class.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_ext.h"
//
// Types:
@@ -18,18 +19,6 @@ struct JSUMemoryInputStream {
struct JKRAramArchive {};
struct J2DWindow {
/* 80254000 */ void getBlack() const;
/* 8025400C */ void getWhite() const;
/* 802543E0 */ void setWhite(JUtility::TColor);
/* 80254430 */ void setBlack(JUtility::TColor);
/* 80254568 */ void setBlackWhite(JUtility::TColor, JUtility::TColor);
};
struct J2DTextBox {
/* 80254408 */ void setBlack(JUtility::TColor);
};
struct J2DOrthoGraph {
/* 802E96D0 */ J2DOrthoGraph(f32, f32, f32, f32, f32, f32);
/* 802E980C */ void setOrtho(JGeometry::TBox2<f32> const&, f32, f32);
@@ -65,7 +54,7 @@ extern "C" void getGlobalVtx__8CPaneMgrFP7J2DPanePA3_A4_fUcbs();
extern "C" void getGlobalVtxCenter__8CPaneMgrFP7J2DPanebs();
extern "C" void getBounds__8CPaneMgrFP7J2DPane();
extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
extern "C" static void dPaneClass_showNullPane__FP7J2DPane();
extern "C" void dPaneClass_showNullPane__FP7J2DPane();
extern "C" void dPaneClass_setPriority__FPPvP7JKRHeapP9J2DScreenPCcUlP10JKRArchive();
extern "C" void __dt__20JSUMemoryInputStreamFv();
extern "C" void __dt__20JSURandomInputStreamFv();
@@ -138,58 +127,156 @@ SECTION_DATA extern void* __vt__8CPaneMgr[4 + 1 /* padding */] = {
};
/* 80253930-80253984 24E270 0054+00 0/0 11/11 0/0 .text __ct__8CPaneMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm CPaneMgr::CPaneMgr() {
nofralloc
#include "asm/d/pane/d_pane_class/__ct__8CPaneMgrFv.s"
CPaneMgr::CPaneMgr() {
mpFirstStackAlpha = NULL;
mpFirstStackSize = NULL;
}
#pragma pop
/* 80253984-80253A18 24E2C4 0094+00 0/0 58/58 2/2 .text
* __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm CPaneMgr::CPaneMgr(J2DScreen* param_0, u64 param_1, u8 param_2, JKRExpHeap* param_3) {
nofralloc
#include "asm/d/pane/d_pane_class/__ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap.s"
CPaneMgr::CPaneMgr(J2DScreen* pScrn, u64 tag, u8 flags, JKRExpHeap* pHeap) {
J2DPane* pane = pScrn->search(tag);
mFlags = flags;
initiate(pane, pHeap);
}
#pragma pop
/* 80253A18-80253AB4 24E358 009C+00 1/0 11/11 0/0 .text __dt__8CPaneMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm CPaneMgr::~CPaneMgr() {
nofralloc
#include "asm/d/pane/d_pane_class/__dt__8CPaneMgrFv.s"
CPaneMgr::~CPaneMgr() {
if (mpFirstStackSize) {
heap->free(mpFirstStackSize);
mpFirstStackSize = NULL;
}
if (mpFirstStackAlpha) {
heap->free(mpFirstStackAlpha);
mpFirstStackAlpha = NULL;
}
}
#pragma pop
/* 80253AB4-80253B2C 24E3F4 0078+00 1/0 0/0 0/0 .text setAlpha__8CPaneMgrFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void CPaneMgr::setAlpha(u8 param_0) {
nofralloc
#include "asm/d/pane/d_pane_class/setAlpha__8CPaneMgrFUc.s"
void CPaneMgr::setAlpha(u8 alpha) {
if (mFlags & 2) {
field_0x10 = mpFirstStackAlpha;
childPaneSetAlpha(getPanePtr()->getFirstChildPane(), alpha);
}
getPanePtr()->setAlpha(alpha);
}
#pragma pop
/* 80253B2C-80253C08 24E46C 00DC+00 0/0 3/3 0/0 .text reinit__8CPaneMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void CPaneMgr::reinit() {
nofralloc
#include "asm/d/pane/d_pane_class/reinit__8CPaneMgrFv.s"
void CPaneMgr::reinit() {
mInitPos.x = getPanePtr()->getBounds().i.x;
mInitPos.y = getPanePtr()->getBounds().i.y;
mGlobalPos.x = getGlobalPosX();
mGlobalPos.y = getGlobalPosY();
mInitSize.x = getPanePtr()->getWidth();
mInitSize.y = getPanePtr()->getHeight();
mInitScale.x = getPanePtr()->getScaleX();
mInitScale.y = getPanePtr()->getScaleY();
mInitTrans.x = getPanePtr()->getTranslateX();
mInitTrans.y = getPanePtr()->getTranslateY();
mRotateZ = getPanePtr()->getRotateZ();
mRotateOffset.x = getPanePtr()->getRotOffsetX();
mRotateOffset.y = getPanePtr()->getRotOffsetY();
}
#pragma pop
/* 80253C08-80254000 24E548 03F8+00 1/1 0/0 0/0 .text initiate__8CPaneMgrFP7J2DPaneP10JKRExpHeap
*/
// switch issues
#ifdef NONMATCHING
void CPaneMgr::initiate(J2DPane* pPane, JKRExpHeap* pHeap) {
(J2DPane*)mWindow = pPane;
if (pHeap) {
heap = pHeap;
} else {
heap = (JKRExpHeap*)mDoExt_getCurrentHeap();
}
mpFirstStackAlpha = NULL;
field_0x10 = NULL;
mpFirstStackSize = NULL;
field_0x20 = NULL;
mChildPaneCount = 0;
if (mFlags) {
childPaneCount(getPanePtr()->getFirstChildPane());
if (mFlags & 1) {
mpFirstStackSize = heap->alloc(mChildPaneCount * 12, 0x20);
field_0x20 = mpFirstStackSize;
childPaneGetSize(getPanePtr()->getFirstChildPane());
}
if (mFlags & 2) {
mpFirstStackAlpha = heap->alloc(mChildPaneCount, 0x20);
field_0x10 = mpFirstStackAlpha;
childPaneGetSize(getPanePtr()->getFirstChildPane());
}
}
mInitPos.x = pPane->getBounds().i.x;
mInitPos.y = pPane->getBounds().i.y;
mGlobalPos.x = getGlobalPosX();
mGlobalPos.y = getGlobalPosY();
mInitSize.x = pPane->getWidth();
mInitSize.y = pPane->getHeight();
mInitScale.x = getPanePtr()->getScaleX();
mInitScale.y = getPanePtr()->getScaleY();
mInitTrans.x = getPanePtr()->getTranslateX();
mInitTrans.y = getPanePtr()->getTranslateY();
mRotateZ = pPane->getRotateZ();
mRotateOffset.x = pPane->getRotOffsetX();
mRotateOffset.y = pPane->getRotOffsetY();
if (pPane->getKind() == 'PAN2') {
mInitAlpha = 255;
} else {
mInitAlpha = pPane->getAlpha();
}
field_0x60 = 0;
field_0x62 = 0;
mScaleAnime = 0;
field_0x66 = 0;
field_0x68 = 0;
mColorAnime = 0;
mAlphaTimer = 0;
switch (getPanePtr()->getKind()) {
case 'TBX3':
case 'TBX4':
case 'WIN3':
JUtility::TColor white = mWindow->getWhite();
mInitWhite.set(white.r, white.g, white.b, white.a);
JUtility::TColor black = mWindow->getBlack();
mInitBlack.set(black.r, black.g, black.b, black.a);
break;
case 'PIC1':
case 'PIC2':
JUtility::TColor white2 = mWindow->getWhite();
mInitWhite.set(white2.r, white2.g, white2.b, white2.a);
JUtility::TColor black2 = mWindow->getBlack();
mInitBlack.set(black2.r, black2.g, black2.b, black2.a);
break;
case 'WIN1':
JUtility::TColor white3 = mWindow->getWhite();
mInitWhite.set(white3.r, white3.g, white3.b, white3.a);
JUtility::TColor black3 = mWindow->getBlack();
mInitBlack.set(black3.r, black3.g, black3.b, black3.a);
break;
}
mInitWhite.set(255, 255, 255, 255);
mInitBlack.set(0, 0, 0, 0);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -198,26 +285,17 @@ asm void CPaneMgr::initiate(J2DPane* param_0, JKRExpHeap* param_1) {
#include "asm/d/pane/d_pane_class/initiate__8CPaneMgrFP7J2DPaneP10JKRExpHeap.s"
}
#pragma pop
#endif
/* 80254000-8025400C 24E940 000C+00 0/0 1/0 0/0 .text getBlack__9J2DWindowCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DWindow::getBlack() const {
nofralloc
#include "asm/d/pane/d_pane_class/getBlack__9J2DWindowCFv.s"
JUtility::TColor J2DWindow::getBlack() const {
return mBlack;
}
#pragma pop
/* 8025400C-80254018 24E94C 000C+00 0/0 1/0 0/0 .text getWhite__9J2DWindowCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DWindow::getWhite() const {
nofralloc
#include "asm/d/pane/d_pane_class/getWhite__9J2DWindowCFv.s"
JUtility::TColor J2DWindow::getWhite() const {
return mWhite;
}
#pragma pop
/* 80254018-80254134 24E958 011C+00 1/1 0/0 0/0 .text childPaneGetSize__8CPaneMgrFP7J2DPane */
#pragma push
@@ -251,54 +329,42 @@ asm void CPaneMgr::childPaneSetSize(J2DPane* param_0, f32 param_1, f32 param_2)
#pragma pop
/* 802542E8-80254364 24EC28 007C+00 2/2 18/18 0/0 .text getGlobalPosX__8CPaneMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void CPaneMgr::getGlobalPosX() {
nofralloc
#include "asm/d/pane/d_pane_class/getGlobalPosX__8CPaneMgrFv.s"
f32 CPaneMgr::getGlobalPosX() {
f32 posX = getPosX();
for (J2DPane* pane = getPanePtr()->getParentPane(); pane != NULL;
pane = pane->getParentPane()) {
posX += pane->getBounds().i.x;
}
return posX;
}
#pragma pop
/* 80254364-802543E0 24ECA4 007C+00 2/2 15/15 0/0 .text getGlobalPosY__8CPaneMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void CPaneMgr::getGlobalPosY() {
nofralloc
#include "asm/d/pane/d_pane_class/getGlobalPosY__8CPaneMgrFv.s"
f32 CPaneMgr::getGlobalPosY() {
f32 posY = getPosY();
for (J2DPane* pane = getPanePtr()->getParentPane(); pane != NULL;
pane = pane->getParentPane()) {
posY += pane->getBounds().i.y;
}
return posY;
}
#pragma pop
/* 802543E0-80254408 24ED20 0028+00 0/0 1/0 0/0 .text setWhite__9J2DWindowFQ28JUtility6TColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DWindow::setWhite(JUtility::TColor param_0) {
nofralloc
#include "asm/d/pane/d_pane_class/setWhite__9J2DWindowFQ28JUtility6TColor.s"
bool J2DWindow::setWhite(JUtility::TColor white) {
mWhite = white;
return true;
}
#pragma pop
/* 80254408-80254430 24ED48 0028+00 0/0 1/0 0/0 .text setBlack__10J2DTextBoxFQ28JUtility6TColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTextBox::setBlack(JUtility::TColor param_0) {
nofralloc
#include "asm/d/pane/d_pane_class/setBlack__10J2DTextBoxFQ28JUtility6TColor.s"
bool J2DTextBox::setBlack(JUtility::TColor black) {
mBlackColor = black;
return true;
}
#pragma pop
/* 80254430-80254458 24ED70 0028+00 0/0 1/0 0/0 .text setBlack__9J2DWindowFQ28JUtility6TColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DWindow::setBlack(JUtility::TColor param_0) {
nofralloc
#include "asm/d/pane/d_pane_class/setBlack__9J2DWindowFQ28JUtility6TColor.s"
bool J2DWindow::setBlack(JUtility::TColor black) {
mBlack = black;
return true;
}
#pragma pop
/* 80254458-80254568 24ED98 0110+00 1/1 7/7 0/0 .text
* setBlackWhite__8CPaneMgrFQ28JUtility6TColorQ28JUtility6TColor */
@@ -313,14 +379,11 @@ asm void CPaneMgr::setBlackWhite(JUtility::TColor param_0, JUtility::TColor para
/* 80254568-802545B0 24EEA8 0048+00 0/0 1/0 0/0 .text
* setBlackWhite__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DWindow::setBlackWhite(JUtility::TColor param_0, JUtility::TColor param_1) {
nofralloc
#include "asm/d/pane/d_pane_class/setBlackWhite__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColor.s"
bool J2DWindow::setBlackWhite(JUtility::TColor black, JUtility::TColor white) {
mBlack = black;
mWhite = white;
return true;
}
#pragma pop
/* ############################################################################################## */
/* 80454E98-80454EA0 003498 0004+04 3/3 0/0 0/0 .sdata2 @4046 */
@@ -331,6 +394,14 @@ SECTION_SDATA2 static f32 lit_4046[1 + 1 /* padding */] = {
};
/* 802545B0-80254638 24EEF0 0088+00 0/0 51/51 3/3 .text paneTrans__8CPaneMgrFff */
// matches with literals
#ifdef NONMATCHING
void CPaneMgr::paneTrans(f32 x, f32 y) {
f32 moveX = x + getInitCenterPosX() - getSizeX() * 0.5f;
f32 moveY = y + getInitCenterPosY() - getSizeY() * 0.5f;
getPanePtr()->move(moveX, moveY);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -339,8 +410,28 @@ asm void CPaneMgr::paneTrans(f32 param_0, f32 param_1) {
#include "asm/d/pane/d_pane_class/paneTrans__8CPaneMgrFff.s"
}
#pragma pop
#endif
/* 80254638-802547CC 24EF78 0194+00 0/0 5/5 0/0 .text paneScale__8CPaneMgrFff */
// swapped float reg
#ifdef NONMATCHING
void CPaneMgr::paneScale(f32 x, f32 y) {
f32 moveX = getPosX() + getSizeX() * 0.5f;
f32 moveY = getPosY() + getSizeY() * 0.5f;
getPanePtr()->resize(mInitSize.x * x, mInitSize.y * y);
getPanePtr()->move(moveX - getSizeY() * 0.5f, moveY - getSizeX() * 0.5f);
if (mRotateZ != 0.0f) {
getPanePtr()->rotate(mRotateOffset.x * x, mRotateOffset.y * y, ROTATE_Z, getRotateZ());
}
if (mFlags & 1) {
field_0x20 = mpFirstStackSize;
childPaneSetSize(getPanePtr()->getFirstChildPane(), x, y);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -349,16 +440,22 @@ asm void CPaneMgr::paneScale(f32 param_0, f32 param_1) {
#include "asm/d/pane/d_pane_class/paneScale__8CPaneMgrFff.s"
}
#pragma pop
#endif
/* 802547CC-802548BC 24F10C 00F0+00 0/0 10/10 0/0 .text scaleAnime__8CPaneMgrFsffUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void CPaneMgr::scaleAnime(s16 param_0, f32 param_1, f32 param_2, u8 param_3) {
nofralloc
#include "asm/d/pane/d_pane_class/scaleAnime__8CPaneMgrFsffUc.s"
bool CPaneMgr::scaleAnime(s16 param_0, f32 param_1, f32 param_2, u8 param_3) {
if (mScaleAnime < param_0 - 1) {
mScaleAnime++;
f32 rate = rateCalc(param_0, mScaleAnime, param_3);
f32 tmp = param_1 + rate * (param_2 - param_1);
getPanePtr()->scale(mInitScale.x * tmp, mInitScale.y * tmp);
} else {
mScaleAnime = param_0;
getPanePtr()->scale(mInitScale.x * param_2, mInitScale.y * param_2);
return true;
}
return false;
}
#pragma pop
/* ############################################################################################## */
/* 80454EA0-80454EA8 0034A0 0008+00 1/1 0/0 0/0 .sdata2 @4349 */
@@ -428,25 +525,23 @@ asm void CPaneMgr::getBounds(J2DPane* param_0) {
#pragma pop
/* 802550E8-8025512C 24FA28 0044+00 0/0 54/54 3/3 .text dPaneClass_showNullPane__FP9J2DScreen */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dPaneClass_showNullPane(J2DScreen* param_0) {
nofralloc
#include "asm/d/pane/d_pane_class/dPaneClass_showNullPane__FP9J2DScreen.s"
void dPaneClass_showNullPane(J2DScreen* pScrn) {
if (pScrn) {
dPaneClass_showNullPane(pScrn->search('ROOT'));
}
}
#pragma pop
/* 8025512C-80255184 24FA6C 0058+00 1/1 0/0 0/0 .text dPaneClass_showNullPane__FP7J2DPane
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dPaneClass_showNullPane(J2DPane* param_0) {
nofralloc
#include "asm/d/pane/d_pane_class/dPaneClass_showNullPane__FP7J2DPane.s"
void dPaneClass_showNullPane(J2DPane* pPane) {
if (pPane) {
if (!pPane->isVisible()) {
pPane->show();
}
dPaneClass_showNullPane(pPane->getFirstChildPane());
dPaneClass_showNullPane(pPane->getNextChildPane());
}
}
#pragma pop
/* 80255184-802552B8 24FAC4 0134+00 0/0 1/1 0/0 .text
* dPaneClass_setPriority__FPPvP7JKRHeapP9J2DScreenPCcUlP10JKRArchive */
+1 -1
View File
@@ -158,7 +158,7 @@ SECTION_SDATA2 static f64 lit_3694 = 4503601774854144.0 /* cast s32 to float */;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void CPaneMgrAlpha::rateCalc(s16 param_0, s16 param_1, u8 param_2) {
asm f32 CPaneMgrAlpha::rateCalc(s16 param_0, s16 param_1, u8 param_2) {
nofralloc
#include "asm/d/pane/d_pane_class_alpha/rateCalc__13CPaneMgrAlphaFssUc.s"
}
+52 -124
View File
@@ -1,139 +1,67 @@
//
// Generated By: dol2asm
// Translation Unit: f_ap/f_ap_game
//
#include "f_ap/f_ap_game.h"
#include "SSystem/SComponent/c_counter.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_camera_mng.h"
#include "f_op/f_op_draw_tag.h"
#include "f_op/f_op_overlap_mng.h"
#include "f_op/f_op_scene_mng.h"
#include "f_pc/f_pc_manager.h"
#include "m_Do/m_Do_main.h"
//
// Types:
//
fapGm_HIO_c::fapGm_HIO_c()
: mColor(-1), mLetterTopColor(-1), mLetterBottomColor(-1), mLetterTopShadowColor(-1),
mLetterBottomShadowColor(-1) {
mUsingHostIO = true;
struct fapGm_HIO_c {
/* 80018944 */ fapGm_HIO_c();
/* 80018AE0 */ ~fapGm_HIO_c();
};
if (data_80450580) {
mDisplayMeter = true;
mDisplayPrint = true;
} else {
mDisplayMeter = false;
mDisplayPrint = false;
mDisplay2D = false;
}
//
// Forward References:
//
extern "C" void __ct__11fapGm_HIO_cFv();
extern "C" static void fapGm_After__Fv();
extern "C" void fapGm_Execute__Fv();
extern "C" void fapGm_Create__Fv();
extern "C" void __dt__11fapGm_HIO_cFv();
extern "C" void __sinit_f_ap_game_cpp();
//
// External References:
//
extern "C" void fopCamM_Management__Fv();
extern "C" void fopCamM_Init__Fv();
extern "C" void fopOvlpM_Management__Fv();
extern "C" void fopOvlpM_Init__Fv();
extern "C" void fopScnM_Management__Fv();
extern "C" void fopScnM_Init__Fv();
extern "C" void fopDwTg_CreateQueue__Fv();
extern "C" void fpcM_Management__FPFv_vPFv_v();
extern "C" void fpcM_Init__Fv();
extern "C" void cCt_Counter__Fi();
extern "C" void __dl__FPv();
extern "C" void __register_global_object();
extern "C" extern u32 data_80450580;
//
// Declarations:
//
/* ############################################################################################## */
/* 803A35A0-803A35B0 0006C0 000C+04 2/2 0/0 0/0 .data __vt__11fapGm_HIO_c */
SECTION_DATA extern void* __vt__11fapGm_HIO_c[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__11fapGm_HIO_cFv,
/* padding */
NULL,
};
/* 80451BC0-80451BC4 0001C0 0004+00 1/1 0/0 0/0 .sdata2 @3689 */
SECTION_SDATA2 static f32 lit_3689 = 9.0f / 10.0f;
/* 80451BC4-80451BC8 0001C4 0004+00 1/1 0/0 0/0 .sdata2 @3690 */
SECTION_SDATA2 static f32 lit_3690 = 3.0f / 5.0f;
/* 80018944-80018A44 013284 0100+00 1/1 0/0 0/0 .text __ct__11fapGm_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm fapGm_HIO_c::fapGm_HIO_c() {
nofralloc
#include "asm/f_ap/f_ap_game/__ct__11fapGm_HIO_cFv.s"
mDisplay2D = true;
mDisplayParticle = true;
mDisplayProcessID = false;
mMemBlockOff = false;
mColor.set(255, 255, 255, 255);
field_0xc = 0.9f;
field_0x10 = 0.6f;
mLetterTopColor.set(255, 150, 0, 255);
mLetterBottomColor.set(255, 120, 0, 255);
mLetterTopShadowColor.set(0, 0, 0, 255);
mLetterBottomShadowColor.set(0, 0, 0, 255);
mLetterPositionX = 0;
mLetterPositionY = 10;
mLetterFontSize = 27;
mLineSpacing = 0;
mLetterSpacing = 0;
mBackgroundAlpha = 130;
}
#pragma pop
/* 80018A44-80018A6C 013384 0028+00 1/1 0/0 0/0 .text fapGm_After__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void fapGm_After() {
nofralloc
#include "asm/f_ap/f_ap_game/fapGm_After__Fv.s"
void fapGm_After() {
fopScnM_Management();
fopOvlpM_Management();
fopCamM_Management();
}
#pragma pop
/* 80018A6C-80018AA0 0133AC 0034+00 0/0 1/1 0/0 .text fapGm_Execute__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fapGm_Execute() {
nofralloc
#include "asm/f_ap/f_ap_game/fapGm_Execute__Fv.s"
void fapGm_Execute() {
fpcM_Management(NULL, fapGm_After);
cCt_Counter(0);
}
#pragma pop
/* ############################################################################################## */
/* 803F1BB0-803F1BBC 01E8D0 000C+00 1/1 0/0 0/0 .bss @3691 */
static u8 lit_3691[12];
fapGm_HIO_c g_HIO;
/* 803F1BBC-803F1C00 01E8DC 0040+04 2/2 3/3 0/0 .bss g_HIO */
extern u8 g_HIO[64 + 4 /* padding */];
u8 g_HIO[64 + 4 /* padding */];
/* 80018AA0-80018AE0 0133E0 0040+00 0/0 1/1 0/0 .text fapGm_Create__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fapGm_Create() {
nofralloc
#include "asm/f_ap/f_ap_game/fapGm_Create__Fv.s"
void fapGm_Create() {
fpcM_Init();
fopScnM_Init();
fopOvlpM_Init();
fopCamM_Init();
fopDwTg_CreateQueue();
g_HIO.field_0x04 = -1;
}
#pragma pop
/* 80018AE0-80018B28 013420 0048+00 2/1 0/0 0/0 .text __dt__11fapGm_HIO_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm fapGm_HIO_c::~fapGm_HIO_c() {
nofralloc
#include "asm/f_ap/f_ap_game/__dt__11fapGm_HIO_cFv.s"
}
#pragma pop
/* 80018B28-80018B64 013468 003C+00 0/0 1/0 0/0 .text __sinit_f_ap_game_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_f_ap_game_cpp() {
nofralloc
#include "asm/f_ap/f_ap_game/__sinit_f_ap_game_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80018B28, __sinit_f_ap_game_cpp);
#pragma pop
fapGm_HIO_c::~fapGm_HIO_c() {}
-1
View File
@@ -17,7 +17,6 @@
#include "SSystem/SComponent/c_math.h"
#include "d/d_stage.h"
#include "f_op/f_op_actor.h"
#include "f_op/f_op_actor_iter.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_lib.h"
#include "msl_c/math.h"
+1 -51
View File
@@ -15,32 +15,6 @@ struct mDoRst {
static u8 mResetData[4 + 4 /* padding */];
};
struct mDoMemCd_Ctrl_c {
/* 8001672C */ mDoMemCd_Ctrl_c();
/* 80016730 */ void ThdInit();
/* 800167D0 */ void main();
/* 80016894 */ void update();
/* 800169B4 */ void load();
/* 80016A0C */ void restore();
/* 80016AB0 */ void LoadSync(void*, u32, u32);
/* 80016B58 */ void save(void*, u32, u32);
/* 80016BD4 */ void store();
/* 80016CE0 */ void SaveSync();
/* 80016D74 */ void getStatus(u32);
/* 80016E58 */ void command_format();
/* 80016EA8 */ void format();
/* 80016F2C */ void FormatSync();
/* 80016FB8 */ void attach();
/* 800170B8 */ void command_attach();
/* 80017110 */ void detach();
/* 80017148 */ void mount();
/* 80017274 */ void loadfile();
/* 800172D4 */ void checkspace();
/* 80017360 */ void setCardState(s32);
};
struct OSThread {};
struct JKRThread {
/* 802D16B8 */ JKRThread(OSThread*, int);
/* 802D1758 */ ~JKRThread();
@@ -92,17 +66,9 @@ extern "C" void mDoMemCdRWm_Restore__FP12CARDFileInfoPvUl();
extern "C" void becomeCurrentHeap__7JKRHeapFv();
extern "C" void __ct__9JKRThreadFP8OSThreadi();
extern "C" void __dt__9JKRThreadFv();
extern "C" void OSInitMutex();
extern "C" void OSLockMutex();
extern "C" void OSUnlockMutex();
extern "C" void OSTryLockMutex();
extern "C" void OSInitCond();
extern "C" void OSWaitCond();
extern "C" void OSSignalCond();
extern "C" void OSGetCurrentThread();
extern "C" void OSCreateThread();
extern "C" void OSResumeThread();
extern "C" void OSGetThreadPriority();
extern "C" void CARDInit();
extern "C" void CARDFreeBlocks();
extern "C" void CARDCheck();
@@ -392,8 +358,7 @@ asm void mDoMemCd_Ctrl_c::setCardState(s32 param_0) {
/* ############################################################################################## */
/* 803EAF40-803ECF40 017C60 2000+00 2/2 27/27 0/0 .bss g_mDoMemCd_control */
extern u8 g_mDoMemCd_control[8192];
u8 g_mDoMemCd_control[8192];
mDoMemCd_Ctrl_c g_mDoMemCd_control;
/* 8001741C-80017470 011D5C 0054+00 1/1 0/0 0/0 .text mDoMemCd_main__FPv */
#pragma push
@@ -405,19 +370,4 @@ static asm void mDoMemCd_main(void* param_0) {
}
#pragma pop
/* 80017470-80017498 011DB0 0028+00 0/0 1/0 0/0 .text __sinit_m_Do_MemCard_cpp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_m_Do_MemCard_cpp() {
nofralloc
#include "asm/m_Do/m_Do_MemCard/__sinit_m_Do_MemCard_cpp.s"
}
#pragma pop
#pragma push
#pragma force_active on
REGISTER_CTORS(0x80017470, __sinit_m_Do_MemCard_cpp);
#pragma pop
/* 803743F8-803743F8 000A58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+50 -126
View File
@@ -4,17 +4,10 @@
//
#include "m_Do/m_Do_controller_pad.h"
#include "SSystem/SComponent/c_lib.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct mDoRst {
static u8 mResetData[4 + 4 /* padding */];
};
//
// Forward References:
//
@@ -42,12 +35,12 @@ extern "C" void setEnabled__Q210JUTGamePad7CRumbleFUl();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" extern u8 g_HIO[64 + 4 /* padding */];
extern "C" extern u32 data_80450580;
extern "C" extern s8 data_80450580;
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" u8 sAnalogMode__10JUTGamePad[4];
extern "C" u8 sCallback__Q210JUTGamePad13C3ButtonReset[4];
extern "C" u8 sCallbackArg__Q210JUTGamePad13C3ButtonReset[4 + 4 /* padding */];
extern "C" extern u8 struct_80451500[4];
extern "C" extern bool struct_80451500;
//
// Declarations:
@@ -61,80 +54,56 @@ JUTGamePad* mDoCPd_c::m_gamePad[4];
interface_of_controller_pad mDoCPd_c::m_cpadInfo[4];
/* 80007954-80007A94 002294 0140+00 0/0 1/1 0/0 .text create__8mDoCPd_cFv */
#ifdef NONMATCHING
void mDoCPd_c::create() {
JUTGamePad* JUTGamePad_ptr;
cpadInfo* m_cpadInfo_addr;
JUTGamePad* pad = new JUTGamePad(JUTGamePad::Port_1);
m_gamePad[0] = pad;
JUTGamePad_ptr = new JUTGamePad(JUTGamePad::Port_1);
m_gamePad[0] = JUTGamePad_ptr;
if (lbl_80450580 == 0) {
if (data_80450580 != 0) {
m_gamePad[1] = new JUTGamePad(JUTGamePad::Port_2);
m_gamePad[2] = new JUTGamePad(JUTGamePad::Port_3);
m_gamePad[3] = new JUTGamePad(JUTGamePad::Port_4);
} else {
m_gamePad[1] = NULL;
m_gamePad[2] = NULL;
m_gamePad[3] = NULL;
JUTGamePad_ptr = m_gamePad[3];
} else {
m_gamePad[1] = new JUTGamePad(JUTGamePad::Port_2);
m_gamePad[2] = new JUTGamePad(JUTGamePad::Port_3);
JUTGamePad_ptr = new JUTGamePad(JUTGamePad::Port_4);
}
m_gamePad[3] = JUTGamePad_ptr;
if (m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 == 0) {
lbl_80451501 = false;
lbl_804514EC = resetCallBack__6mDoRstFiPv;
lbl_804514F0 = 0;
if (!mDoRst::isReset()) {
JUTGamePad::clearResetOccurred();
JUTGamePad::setResetCallback(mDoRst_resetCallBack, NULL);
}
sAnalogMode = 3;
PADSetAnalogMode(3);
m_cpadInfo_addr = &m_cpadInfo;
for (int i = 4; i != 0; i--) {
m_cpadInfo_addr->interface.field_0x3a = false;
m_cpadInfo_addr->interface.field_0x39 = false;
m_cpadInfo_addr->interface.field_0x3c = false;
m_cpadInfo_addr->interface.field_0x3b = false;
m_cpadInfo_addr = m_cpadInfo_addr->unk1;
JUTGamePad::setAnalogMode(3);
interface_of_controller_pad* cpad = &m_cpadInfo[0];
for (int i = 0; i < 4; i++) {
cpad->mTrigLockL = false;
cpad->mHoldLockL = false;
cpad->mTrigLockR = false;
cpad->mHoldLockR = false;
cpad++;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoCPd_c::create() {
nofralloc
#include "asm/m_Do/m_Do_controller_pad/create__8mDoCPd_cFv.s"
}
#pragma pop
#endif
/* 80007A94-80007B7C 0023D4 00E8+00 0/0 1/1 0/0 .text read__8mDoCPd_cFv */
#ifdef NONMATCHING
void mDoCPd_c::read() {
//_savegpr_29();
gamePad->read();
if (m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x0 == 0 &&
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 != 0) {
JUTGamePad* JUTGamePad_ptr =
JUTGamePad::getGamePad(m_Do_Reset_NS_mDoRst_NS_mResetData->pad_index);
bool error = false;
if (JUTGamePad_ptr->pad_port != 0xffff &&
JUTGamePad_ptr->rumble.field_0x10 != 0) { // Make the rumble thing right
error = true;
}
if (error = false) {
m_Do_Reset_NS_mDoRst_NS_mResetData->field_0x8 = 0;
JUTGamePad::read();
if (!mDoRst::isReset() && mDoRst::is3ButtonReset()) {
JUTGamePad* pad = JUTGamePad::getGamePad(mDoRst::get3ButtonResetPort());
if (!pad->isPushing3ButtonReset()) { // Make the rumble thing right
mDoRst::off3ButtonReset();
}
}
JUTGamePad** m_gamePad_ptr = m_gamePad;
cpadInfo* cpad_ptr = &m_cpadInfo;
for (int i = 0; i < 4; i++) {
if (*m_gamePad_ptr == 0) {
cLib_memSet(cpad_ptr, 0, 0x40);
if (m_gamePad[i] == NULL) {
cLib_memSet(m_gamePad[i], 0, 0x40);
} else {
convert(&cpad_ptr->interface, *m_gamePad_ptr);
LRlockCheck(&cpad_ptr->interface);
convert(&m_cpadInfo[i], m_gamePad[i]);
LRlockCheck(&m_cpadInfo[i]);
}
m_gamePad_ptr = m_gamePad_ptr + 1; // Shouldn't it be 4 if it's incrementing a pointer???
cpad_ptr = cpad_ptr->unk1;
}
}
#else
@@ -148,72 +117,27 @@ asm void mDoCPd_c::read() {
#pragma pop
#endif
/* ############################################################################################## */
/* 80451A20-80451A24 000020 0004+00 1/1 0/0 0/0 .sdata2 @3709 */
SECTION_SDATA2 static f32 lit_3709 = 1.0f / 15.0f;
/* 80451A24-80451A28 000024 0004+00 1/1 0/0 0/0 .sdata2 @3710 */
SECTION_SDATA2 static f32 lit_3710 = 1.0f;
/* 80451A28-80451A30 000028 0004+04 1/1 0/0 0/0 .sdata2 @3711 */
SECTION_SDATA2 static f32 lit_3711[1 + 1 /* padding */] = {
0.0071428571827709675f,
/* padding */
0.0f,
};
/* 80451A30-80451A38 000030 0008+00 1/1 0/0 0/0 .sdata2 @3713 */
SECTION_SDATA2 static f64 lit_3713 = 4503599627370496.0 /* cast u32 to float */;
/* 80007B7C-80007CD0 0024BC 0154+00 1/1 0/0 0/0 .text
* convert__8mDoCPd_cFP27interface_of_controller_padP10JUTGamePad */
#ifdef NONMATCHING
// off on load order, regalloc, const placement (int-to-float conversion magic).
void mDoCPd_c::convert(interface_of_controller_pad* pInterface, JUTGamePad* pPad) {
pInterface->mButtonFlags = pPad->buttons.mButtonFlags;
pInterface->mPressedButtonFlags = pPad->buttons.mPressedButtonFlags;
pInterface->mMainStickPosX = pPad->control_stick.mPosX;
pInterface->mMainStickPosY = pPad->control_stick.mPosY;
pInterface->mMainStickValue = pPad->control_stick.mValue;
pInterface->mMainStickAngle = pPad->control_stick.mAngle;
pInterface->mCStickPosX = pPad->c_stick.mPosX;
pInterface->mCStickPosY = pPad->c_stick.mPosY;
pInterface->mCStickValue = pPad->c_stick.mValue;
pInterface->mCStickAngle = pPad->c_stick.mAngle;
pInterface->mButtonFlags = pPad->getButton();
pInterface->mPressedButtonFlags = pPad->getTrigger();
pInterface->mMainStickPosX = pPad->getMainStickX();
pInterface->mMainStickPosY = pPad->getMainStickY();
pInterface->mMainStickValue = pPad->getMainStickValue();
pInterface->mMainStickAngle = pPad->getMainStickAngle();
pInterface->mCStickPosX = pPad->getSubStickX();
pInterface->mCStickPosY = pPad->getSubStickY();
pInterface->mCStickValue = pPad->getSubStickValue();
pInterface->mCStickAngle = pPad->getSubStickAngle();
pInterface->mAnalogA = lbl_80451A20 * pPad->buttons.mAnalogARaw;
if (pInterface->mAnalogA > lbl_80451A24 /* 1.0 */) {
pInterface->mAnalogA = lbl_80451A24;
}
mDoCPd_ANALOG_CONV(pPad->getAnalogA(), pInterface->mAnalogA);
mDoCPd_ANALOG_CONV(pPad->getAnalogB(), pInterface->mAnalogB);
mDoCPd_TRIGGER_CONV(pPad->getAnalogL(), pInterface->mTriggerLeft);
mDoCPd_TRIGGER_CONV(pPad->getAnalogR(), pInterface->mTriggerRight);
pInterface->mAnalogB = lbl_80451A20 * pPad->buttons.mAnalogBRaw;
if (pInterface->mAnalogB > lbl_80451A24 /* 1.0 */) {
pInterface->mAnalogB = lbl_80451A24;
}
// pInterface->mTriggerLeft = pPad->buttons.mTriggerLeftRaw * (1/140.0f);
pInterface->mTriggerLeft = lbl_80451A28 * pPad->buttons.mTriggerLeftRaw;
if (pInterface->mTriggerLeft > lbl_80451A24 /* 1.0 */) {
pInterface->mTriggerLeft = lbl_80451A24;
}
pInterface->mTriggerRight = lbl_80451A28 * pPad->buttons.mTriggerRightRaw;
if (pInterface->mTriggerRight > lbl_80451A24 /* 1.0 */) {
pInterface->mTriggerRight = lbl_80451A24;
}
pInterface->mGamepadErrorFlags = pPad->error_value;
pInterface->mGamepadErrorFlags = pPad->getErrorStatus();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoCPd_c::convert(interface_of_controller_pad* param_0, JUTGamePad* param_1) {
nofralloc
#include "asm/m_Do/m_Do_controller_pad/convert__8mDoCPd_cFP27interface_of_controller_padP10JUTGamePad.s"
}
#pragma pop
#endif
/* 80007CD0-80007D74 002610 00A4+00 1/1 0/0 0/0 .text
* LRlockCheck__8mDoCPd_cFP27interface_of_controller_pad */
+3 -3
View File
@@ -2427,7 +2427,7 @@ JKRExpHeap* mDoExt_createGameHeap(u32 param_0, JKRHeap* param_1) {
}
/* 8000ED50-8000ED58 -00001 0008+00 0/0 0/0 0/0 .text mDoExt_getGameHeap__Fv */
JKRHeap* mDoExt_getGameHeap() {
JKRExpHeap* mDoExt_getGameHeap() {
return gameHeap;
}
@@ -2540,8 +2540,8 @@ JKRSolidHeap* mDoExt_createSolidHeapFromSystem(u32 pSize, u32 pAlignment) {
/* 8000EF68-8000EFBC 0098A8 0054+00 2/2 0/0 0/0 .text
* mDoExt_createSolidHeapToCurrent__FPP7JKRHeapUlP7JKRHeapUl */
static JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** pOutHeap, u32 pSize,
JKRHeap* pParentHeap, u32 pAlignment) {
JKRSolidHeap* mDoExt_createSolidHeapToCurrent(JKRHeap** pOutHeap, u32 pSize, JKRHeap* pParentHeap,
u32 pAlignment) {
if (pOutHeap != NULL) {
*pOutHeap = JKRHeap::getCurrentHeap();
}
+36 -25
View File
@@ -4,23 +4,12 @@
//
#include "m_Do/m_Do_lib.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "JSystem/JUtility/JUTTexture.h"
#include "SSystem/SComponent/c_math.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct _GXTlutObj {};
struct _GXTexObj {};
struct ResTIMG {};
struct JMath {
static u8 sincosTable_[65536];
};
//
// Forward References:
//
@@ -43,10 +32,6 @@ extern "C" void init__11J3DUClipperFv();
extern "C" void calcViewFrustum__11J3DUClipperFv();
extern "C" void __dl__FPv();
extern "C" void PSMTXMultVec();
extern "C" void GXInitTexObj();
extern "C" void GXInitTexObjCI();
extern "C" void GXInitTexObjLOD();
extern "C" void GXInitTlutObj();
extern "C" void __register_global_object();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
@@ -69,6 +54,27 @@ SECTION_SDATA2 static f64 lit_3638 = 4503601774854144.0 /* cast s32 to float */;
/* 8001513C-8001528C 00FA7C 0150+00 0/0 3/3 2/2 .text
* mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj */
#ifdef NONMATCHING
bool mDoLib_setResTimgObj(ResTIMG const* res, _GXTexObj* o_texObj, u32 param_2,
_GXTlutObj* o_tlutObj) {
if (res->palettesEnabled) {
GXInitTlutObj(o_tlutObj, (void*)(res + res->paletteOffset), (GXTlutFmt)res->paletteFormat,
res->paletteCount);
GXInitTexObjCI(o_texObj, (void*)(res + res->texDataOffset), res->width, res->height,
(GXCITexFmt)res->format, (GXTexWrapMode)res->wrapS,
(GXTexWrapMode)res->wrapT, 1 - res->mipmapCount, param_2);
} else {
GXInitTexObj(o_texObj, (void*)(res + res->texDataOffset), res->width, res->height,
(GXTexFmt)res->format, (GXTexWrapMode)res->wrapS, (GXTexWrapMode)res->wrapT,
(s32)1 - res->mipmapCount);
}
GXInitTexObjLOD(o_texObj, (GXTexFilter)res->minFilter, (GXTexFilter)res->magFilter,
(f32)res->minLOD * 0.125f, (f32)res->maxLOD * 0.125f, (f32)res->LODBias * 0.01f,
(s32)res->biasClamp, (s32)res->doEdgeLOD, (GXAnisotropy)res->maxAnisotropy);
return res->palettesEnabled;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -78,6 +84,7 @@ asm void mDoLib_setResTimgObj(ResTIMG const* param_0, _GXTexObj* param_1, u32 pa
#include "asm/m_Do/m_Do_lib/mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj.s"
}
#pragma pop
#endif
/* 803DD8E4-803DD940 00A604 005C+00 2/2 5/5 5/5 .bss mClipper__14mDoLib_clipper */
J3DUClipper mDoLib_clipper::mClipper;
@@ -92,14 +99,18 @@ f32 mDoLib_clipper::mFovyRate;
SECTION_SDATA2 static f32 lit_3739 = 182.04444885253906f;
/* 8001528C-80015310 00FBCC 0084+00 0/0 1/1 0/0 .text setup__14mDoLib_clipperFffff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoLib_clipper::setup(f32 param_0, f32 param_1, f32 param_2, f32 param_3) {
nofralloc
#include "asm/m_Do/m_Do_lib/setup__14mDoLib_clipperFffff.s"
void mDoLib_clipper::setup(f32 fovy, f32 aspect, f32 near, f32 far) {
mClipper.setFovy(fovy);
mClipper.setAspect(aspect);
mClipper.setNear(near);
mClipper.setFar(far);
mSystemFar = far;
mClipper.calcViewFrustum();
s16 tmp = fovy * 182.04444885253906f;
mFovyRate = cM_scos(tmp) / cM_ssin(tmp);
}
#pragma pop
/* ############################################################################################## */
/* 80451B84-80451B88 000184 0004+00 2/2 0/0 0/0 .sdata2 @3784 */
+154 -189
View File
@@ -4,6 +4,9 @@
//
#include "m_Do/m_Do_machine.h"
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JUtility/JUTDbPrint.h"
#include "JSystem/JUtility/JUTException.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,85 +14,22 @@
// Types:
//
struct mDoRst {
static u8 mResetData[4 + 4 /* padding */];
};
struct mDoMemCd_Ctrl_c {
/* 80016730 */ void ThdInit();
};
struct mDoMch_render_c {
static void* mRenderModeObj[1 + 1 /* padding */];
};
struct mDoMain {
static u32 memMargin;
static u8 sHungUpTime[4];
static _GXRenderModeObj* mRenderModeObj;
};
struct mDoDvdThd {
/* 80015858 */ void create(s32);
};
struct JKRHeap {
/* 802CE438 */ void becomeCurrentHeap();
/* 802CE72C */ void getFreeSize();
/* 802CE784 */ void getTotalFreeSize();
/* 802CEB78 */ void setErrorFlag(bool);
/* 802CEB88 */ void setErrorHandler(void (*)(void*, u32, int));
static u8 sSystemHeap[4];
static u8 sRootHeap[4];
};
struct cMl {
/* 80263220 */ void init(JKRHeap*);
};
struct OSThread {};
struct OSContext {};
struct JUTVideo {
/* 802E4CAC */ void destroyManager();
};
struct JUTGamePad {
struct EPadPort {};
/* 802E06DC */ JUTGamePad(JUTGamePad::EPadPort);
/* 802E07B0 */ ~JUTGamePad();
};
struct JUTFont {};
struct JUTException {
/* 802E2F18 */ void isEnablePad() const;
/* 802E2F54 */ void readPad(u32*, u32*);
/* 802E3980 */ void waitTime(s32);
/* 802E3AEC */ void setPreUserCallback(void (*)(u16, OSContext*, u32, u32));
/* 802E3AFC */ void setPostUserCallback(void (*)(u16, OSContext*, u32, u32));
/* 802E3B0C */ void appendMapFile(char const*);
static u8 sErrorManager[4];
static u8 sConsole[4];
};
struct JUTDbPrint {
/* 802E0190 */ void start(JUTFont*, JKRHeap*);
static u8 sDebugPrint[4 + 4 /* padding */];
};
struct JUTConsole {
/* 802E7BB8 */ void print_f(char const*, ...);
/* 802E7C38 */ void print(char const*);
/* 802E80A8 */ void scroll(int);
/* 802E8184 */ void getUsedLine() const;
/* 802E81A8 */ void getLineOffset() const;
};
struct JUTConsoleManager {
/* 802E8450 */ void drawDirect(bool) const;
/* 802E84C4 */ void setDirectConsole(JUTConsole*);
@@ -98,15 +38,7 @@ struct JUTConsoleManager {
};
struct JUTAssertion {
/* 802E4C34 */ void setVisible(bool);
};
struct JKRThreadSwitch {
/* 802D1A14 */ void createManager(JKRHeap*);
};
struct JKRThread {
/* 802D16B8 */ JKRThread(OSThread*, int);
/* 802E4C34 */ static void setVisible(bool);
};
struct JKRDvdRipper {
@@ -125,39 +57,22 @@ struct JKRAram {
static u32 sSZSBufferSize[1 + 1 /* padding */];
};
struct JFWSystem {
struct CSetUpParam {
static u32 maxStdHeaps;
static u32 sysHeapSize;
static u32 fifoBufSize;
static u32 aramAudioBufSize;
static u32 aramGraphBufSize;
static void* renderMode;
};
/* 80271CD0 */ void firstInit();
/* 80271D18 */ void init();
static u8 systemHeap[4];
static u8 systemConsole[4];
};
//
// Forward References:
//
extern "C" static void myGetHeapTypeByString__FP7JKRHeap();
extern "C" static void myMemoryErrorRoutine__FPvUli();
extern "C" static void myHeapCheckRecursive__FP7JKRHeap();
extern "C" void myHeapCheckRecursive__FP7JKRHeap();
extern "C" void mDoMch_HeapCheckAll__Fv();
extern "C" static void developKeyCheck__FUlUl();
extern "C" static void mDoMch_IsProgressiveMode__Fv();
extern "C" static void exceptionReadPad__FPUlPUl();
extern "C" static void exceptionRestart__Fv();
extern "C" static void myExceptionCallback__FUsP9OSContextUlUl();
extern "C" static s8 developKeyCheck__FUlUl(u32, u32);
extern "C" bool mDoMch_IsProgressiveMode__Fv();
extern "C" bool exceptionReadPad__FPUlPUl(u32*, u32*);
extern "C" void exceptionRestart__Fv();
extern "C" void myExceptionCallback__FUsP9OSContextUlUl();
extern "C" static void fault_callback_scroll__FUsP9OSContextUlUl();
extern "C" static void my_PrintHeap__FPCcUl();
extern "C" static void my_SysPrintHeap__FPCcPvUl();
extern "C" void my_SysPrintHeap__FPCcPvUl();
extern "C" void mDoMch_Create__Fv();
extern "C" extern char const* const m_Do_m_Do_machine__stringBase0;
extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */];
@@ -168,9 +83,6 @@ extern "C" void* mRenderModeObj__15mDoMch_render_c[1 + 1 /* padding */];
extern "C" void OSReportDisable();
extern "C" void OSReportEnable();
extern "C" void OSReport();
extern "C" void OSReport_Error();
extern "C" void OSReport_System();
extern "C" void mDoExt_createAssertHeap__FP7JKRHeap();
extern "C" void mDoExt_createDbPrintHeap__FUlP7JKRHeap();
extern "C" void mDoExt_getDbPrintHeap__Fv();
@@ -222,28 +134,16 @@ extern "C" void getLineOffset__10JUTConsoleCFv();
extern "C" void drawDirect__17JUTConsoleManagerCFb();
extern "C" void setDirectConsole__17JUTConsoleManagerFP10JUTConsole();
extern "C" void PPCHalt();
extern "C" void OSGetConsoleType();
extern "C" void OSGetArenaHi();
extern "C" void OSGetArenaLo();
extern "C" void OSSetArenaHi();
extern "C" void OSEnableInterrupts();
extern "C" void OSResetSystem();
extern "C" void OSGetResetCode();
extern "C" void OSGetProgressiveMode();
extern "C" u32 OSGetProgressiveMode();
extern "C" void OSSetProgressiveMode();
extern "C" void OSGetCurrentThread();
extern "C" void OSGetThreadPriority();
extern "C" void OSGetTime();
extern "C" void DVDChangeDir();
extern "C" void VIFlush();
extern "C" void VISetBlack();
extern "C" void VISetBlack(s32);
extern "C" void VIGetRetraceCount();
extern "C" void VIGetDTVStatus();
extern "C" void GXSetDrawDoneCallback();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
extern "C" extern u8 g_mDoMemCd_control[8192];
extern "C" extern u32 data_80450580;
extern "C" extern s8 data_80450580;
extern "C" u32 memMargin__7mDoMain;
extern "C" u32 maxStdHeaps__Q29JFWSystem11CSetUpParam;
extern "C" u32 sysHeapSize__Q29JFWSystem11CSetUpParam;
@@ -267,7 +167,7 @@ extern "C" u8 systemConsole__9JFWSystem[4];
extern "C" u8 sSystemHeap__7JKRHeap[4];
extern "C" u8 sRootHeap__7JKRHeap[4];
extern "C" u8 sDebugPrint__10JUTDbPrint[4 + 4 /* padding */];
extern "C" extern u8 struct_80451500[4];
extern "C" extern bool struct_80451500;
extern "C" u8 sErrorManager__12JUTException[4];
extern "C" u8 sConsole__12JUTException[4];
extern "C" u8 sManager__17JUTConsoleManager[4];
@@ -331,7 +231,7 @@ static u8 struct_80450C10[8];
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void myGetHeapTypeByString(JKRHeap* param_0) {
static asm char* myGetHeapTypeByString(JKRHeap* param_0) {
nofralloc
#include "asm/m_Do/m_Do_machine/myGetHeapTypeByString__FP7JKRHeap.s"
}
@@ -367,24 +267,37 @@ SECTION_DEAD static char const* const stringBase_80373EEE = "error in %08x(%s)\n
#pragma pop
/* 8000B5C8-8000B668 005F08 00A0+00 1/1 0/0 0/0 .text myHeapCheckRecursive__FP7JKRHeap */
#ifdef NONMATCHING
void myHeapCheckRecursive(JKRHeap* param_0) {
if (!param_0->check()) {
char* type = myGetHeapTypeByString(param_0);
OSReport_Error("error in %08x(%s)\n", param_0, type);
}
JSUTree<JKRHeap> heapTree = param_0->getHeapTree();
for (heapTree.getFirstChild(); heapTree.getNextChild() != NULL; heapTree--) {
/* if (heapTree->getNextChild() == NULL) {
heapTree--;
} */
JKRHeap* heap = (JKRHeap*)heapTree.getObject();
myHeapCheckRecursive(heap);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void myHeapCheckRecursive(JKRHeap* param_0) {
asm void myHeapCheckRecursive(JKRHeap* param_0) {
nofralloc
#include "asm/m_Do/m_Do_machine/myHeapCheckRecursive__FP7JKRHeap.s"
}
#pragma pop
#endif
/* 8000B668-8000B68C 005FA8 0024+00 0/0 2/2 0/0 .text mDoMch_HeapCheckAll__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMch_HeapCheckAll() {
nofralloc
#include "asm/m_Do/m_Do_machine/mDoMch_HeapCheckAll__Fv.s"
void mDoMch_HeapCheckAll() {
myHeapCheckRecursive(JKRHeap::sRootHeap);
}
#pragma pop
/* 8000B68C-8000B73C 005FCC 00B0+00 1/1 0/0 0/0 .text developKeyCheck__FUlUl */
#pragma push
@@ -397,56 +310,79 @@ static asm void developKeyCheck(u32 param_0, u32 param_1) {
#pragma pop
/* 8000B73C-8000B768 00607C 002C+00 1/1 0/0 0/0 .text mDoMch_IsProgressiveMode__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void mDoMch_IsProgressiveMode() {
nofralloc
#include "asm/m_Do/m_Do_machine/mDoMch_IsProgressiveMode__Fv.s"
u8 mDoMch_IsProgressiveMode() {
return OSGetProgressiveMode() == true;
}
#pragma pop
/* 8000B768-8000B798 0060A8 0030+00 2/2 0/0 0/0 .text exceptionReadPad__FPUlPUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void exceptionReadPad(u32* param_0, u32* param_1) {
nofralloc
#include "asm/m_Do/m_Do_machine/exceptionReadPad__FPUlPUl.s"
bool exceptionReadPad(u32* param_0, u32* param_1) {
return JUTException::getManager()->readPad(param_0, param_1);
}
#pragma pop
/* 8000B798-8000B7C8 0060D8 0030+00 1/1 0/0 0/0 .text exceptionRestart__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void exceptionRestart() {
nofralloc
#include "asm/m_Do/m_Do_machine/exceptionRestart__Fv.s"
void exceptionRestart() {
mDoRst_reset(0, 0, 0);
OSResetSystem(0, 0, 0);
do {
} while (true);
}
#pragma pop
/* ############################################################################################## */
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80373F01 = "振動停止&原点復帰\n";
SECTION_DEAD static char const* const stringBase_80373F15 = "例外マネージャがありません\n";
SECTION_DEAD static char const* const stringBase_80373F31 = "キー入力を受け付けています\n";
SECTION_DEAD static char const* const stringBase_80373F4D = "JUTAssertionを可視化しました\n";
SECTION_DEAD static char const* const stringBase_80373F6B = "3秒間停止\n";
SECTION_DEAD static char const* const stringBase_80373F76 = "/map/Final/Release";
#pragma pop
/* 8000B7C8-8000B95C 006108 0194+00 1/1 0/0 0/0 .text myExceptionCallback__FUsP9OSContextUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param_3) {
nofralloc
#include "asm/m_Do/m_Do_machine/myExceptionCallback__FUsP9OSContextUlUl.s"
void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param_3) {
u32 tmp1;
u32 tmp2;
mDoMain::sHungUpTime = OSGetTime();
OSReportEnable();
cAPICPad_recalibrate__Fv();
// "Vibration stopping & resetting to default\n"
OSReport("振動停止&原点復帰\n");
JUTException* manager = JUTException::getManager();
if (manager == NULL) {
// "Exception Manager doesn't exist\n"
OSReport("例外マネージャがありません\n");
PPCHalt();
} else {
manager->setTraceSuppress(0x80);
if (data_80450580 == 0) {
JUTGamePad pad(JUTGamePad::Port_1);
manager->field_0x84 = &pad;
manager->field_0x88 = -1;
if (manager != NULL) {
OSEnableInterrupts();
// "Accepting Key input\n"
OSReport("キー入力を受け付けています\n");
while (data_80450580 == 0) {
exceptionReadPad(&tmp2, &tmp1);
developKeyCheck(tmp2, tmp1);
JUTException::waitTime(30);
if (struct_80451501) {
exceptionRestart();
}
}
// "JUTAssertion is visible\n"
OSReport("JUTAssertionを可視化しました\n");
JUTAssertion::setVisible(true);
JUTDbPrint::getManager()->setVisible(true);
JFWSystem::getSystemConsole()->setOutput(3);
} else {
PPCHalt();
}
} else {
// "Wait for 3 seconds\n"
OSReport("3秒間停止\n");
JUTException::waitTime(3000);
}
}
DVDChangeDir("/map/Final/Release");
JUTVideo::destroyManager();
GXSetDrawDoneCallback(0);
VISetBlack(0);
VIFlush();
}
#pragma pop
/* ############################################################################################## */
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -497,14 +433,11 @@ SECTION_DEAD static char const* const stringBase_80374017 = ""
#pragma pop
/* 8000BCF8-8000BD44 006638 004C+00 1/1 0/0 0/0 .text my_SysPrintHeap__FPCcPvUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void my_SysPrintHeap(char const* param_0, void* param_1, u32 param_2) {
nofralloc
#include "asm/m_Do/m_Do_machine/my_SysPrintHeap__FPCcPvUl.s"
void my_SysPrintHeap(char const* message, void* start, u32 size) {
// "32m%-24s = %08x-%08x size=%d KB\n"
OSReport_System("\x1b[32m%-24s = %08x-%08x size=%d KB\n\x1b[m", message, start,
(u32)start + size, size >> 10);
}
#pragma pop
/* ############################################################################################## */
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -521,28 +454,60 @@ SECTION_DEAD static char const* const stringBase_8037409E = "/map/Final/Release/
#pragma pop
/* 803A2F60-803A2F9C 000080 003C+00 1/0 0/0 0/0 .data g_ntscZeldaIntDf */
SECTION_DATA static u8 g_ntscZeldaIntDf[60] = {
0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0x1B, 0x00, 0x10, 0x02,
0x9A, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x08, 0x08, 0x0A, 0x0C, 0x0A, 0x08, 0x08, 0x00, 0x00, 0x00,
};
SECTION_DATA static _GXRenderModeObj g_ntscZeldaIntDf = {0,
608,
448,
448,
27,
16,
666,
448,
1,
0,
0,
{{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6}},
{8, 8, 10, 12, 10, 8, 8}};
/* 803A2F9C-803A2FD8 0000BC 003C+00 1/1 1/1 0/0 .data g_ntscZeldaProg */
SECTION_DATA extern u8 g_ntscZeldaProg[60] = {
0x00, 0x00, 0x00, 0x02, 0x02, 0x60, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0x1B, 0x00, 0x10, 0x02,
0x9A, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
0x06, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x15, 0x16, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00,
};
SECTION_DATA extern _GXRenderModeObj g_ntscZeldaProg = {2,
608,
448,
448,
27,
16,
666,
448,
0,
0,
0,
{{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6},
{6, 6}},
{0, 0, 21, 22, 21, 0, 0}};
/* 804505A0-804505A8 -00001 0004+04 1/1 3/3 0/0 .sdata mRenderModeObj__15mDoMch_render_c
*/
SECTION_SDATA void* mDoMch_render_c::mRenderModeObj[1 + 1 /* padding */] = {
(void*)&g_ntscZeldaIntDf,
/* padding */
NULL,
};
SECTION_SDATA _GXRenderModeObj* mDoMch_render_c::mRenderModeObj = &g_ntscZeldaIntDf;
/* 8000BD44-8000C0CC 006684 0388+00 0/0 2/1 0/0 .text mDoMch_Create__Fv */
#pragma push
+68 -158
View File
@@ -4,98 +4,35 @@
//
#include "m_Do/m_Do_machine_exception.h"
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JUtility/JUTConsole.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_main.h"
//
// Types:
//
struct mDoMain {
static u8 COPYDATE_STRING[18 + 2 /* padding */];
static u8 sPowerOnTime[4];
static u8 sHungUpTime[4];
};
struct dRes_control_c {
/* 8003C638 */ void dump();
};
struct JUTConsole {
/* 802E7C38 */ void print(char const*);
/* 802E7F7C */ void dumpToTerminal(unsigned int);
};
struct JKRHeap {
/* 802CE72C */ void getFreeSize();
/* 802CE784 */ void getTotalFreeSize();
};
struct JKRAramHeap {
/* 802D3218 */ void dump();
};
struct JKRAram {
static u8 sAramObject[4];
};
struct JFWSystem {
static u8 systemConsole[4];
};
struct DynamicModuleControlBase {
/* 80262470 */ void dump();
};
//
// Forward References:
//
extern "C" static void print_f__FPCce();
extern "C" static void print__FPCc();
extern "C" static void dispHeapInfo__Fv();
extern "C" static void dispGameInfo__Fv();
extern "C" static void dispDateInfo__Fv();
extern "C" static void dispConsoleToTerminal__Fv();
extern "C" void exception_addition__FP10JUTConsole();
extern "C" extern char const* const m_Do_m_Do_machine_exception__stringBase0;
extern "C" extern u8 struct_80450C98[4];
extern "C" extern u8 struct_80450C9C[4];
//
// External References:
//
extern "C" void dump__14dRes_control_cFv();
extern "C" void dump__24DynamicModuleControlBaseFv();
extern "C" void getFreeSize__7JKRHeapFv();
extern "C" void getTotalFreeSize__7JKRHeapFv();
extern "C" void dump__11JKRAramHeapFv();
extern "C" void print__10JUTConsoleFPCc();
extern "C" void JUTConsole_print_f_va_();
extern "C" void dumpToTerminal__10JUTConsoleFUi();
extern "C" void OSTicksToCalendarTime();
extern "C" void _savegpr_23();
extern "C" void _restgpr_23();
extern "C" u8 COPYDATE_STRING__7mDoMain[18 + 2 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 sPowerOnTime__7mDoMain[4];
extern "C" extern u8 data_80450B0C[4];
extern "C" u8 sHungUpTime__7mDoMain[4];
extern "C" extern u8 data_80450B14[4];
extern "C" extern u8 gameHeap[4];
extern "C" extern u8 zeldaHeap[4];
extern "C" extern u8 archiveHeap[4];
extern "C" u8 systemConsole__9JFWSystem[4];
extern "C" u8 sAramObject__7JKRAram[4];
//
// Declarations:
//
/* ############################################################################################## */
/* 80450C90-80450C98 000190 0004+04 3/3 0/0 0/0 .sbss sConsole */
static u8 sConsole[4 + 4 /* padding */];
static JUTConsole* sConsole;
/* 80017D7C-80017E08 0126BC 008C+00 3/3 0/0 0/0 .text print_f__FPCce */
#pragma push
@@ -107,107 +44,80 @@ static asm void print_f(char const* param_0, ...) {
}
#pragma pop
/* 80017E08-80017E30 012748 0028+00 2/2 0/0 0/0 .text print__FPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void print(char const* param_0) {
nofralloc
#include "asm/m_Do/m_Do_machine_exception/print__FPCc.s"
void print(char const* string) {
sConsole->print(string);
}
#pragma pop
/* ############################################################################################## */
/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80374460 =
"--------------------------------------\n";
SECTION_DEAD static char const* const stringBase_80374488 = "-- Heap Free / TotalFree (KB) --\n";
SECTION_DEAD static char const* const stringBase_803744AA = " Zelda %5d / %5d\n";
SECTION_DEAD static char const* const stringBase_803744BD = " Game %5d / %5d\n";
SECTION_DEAD static char const* const stringBase_803744D0 = "Archive %5d / %5d\n";
SECTION_DEAD static char const* const stringBase_803744E3 = "--------------------------------\n";
#pragma pop
const char* stringBase_80374460 = "--------------------------------------\n";
/* 80017E30-80017F8C 012770 015C+00 1/1 0/0 0/0 .text dispHeapInfo__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dispHeapInfo() {
nofralloc
#include "asm/m_Do/m_Do_machine_exception/dispHeapInfo__Fv.s"
void dispHeapInfo() {
JKRExpHeap* zelda = zeldaHeap;
JKRExpHeap* game = gameHeap;
JKRExpHeap* archive = archiveHeap;
u32 zeldaFree = zelda->getFreeSize();
u32 gameFree = game->getFreeSize();
u32 archiveFree = archive->getFreeSize();
u32 zeldaTotal = zelda->getTotalFreeSize();
u32 gameTotal = game->getTotalFreeSize();
u32 archiveTotal = archive->getTotalFreeSize();
print("-- Heap Free / TotalFree (KB) --\n");
print_f(" Zelda %5d / %5d\n", zeldaFree >> 10, zeldaTotal >> 10);
print_f(" Game %5d / %5d\n", gameFree >> 10, gameTotal >> 10);
print_f("Archive %5d / %5d\n", archiveFree >> 10, archiveTotal >> 10);
print("--------------------------------\n");
if (JKRAram::getAramHeap()) {
JKRAram::getAramHeap()->dump();
}
dump__24DynamicModuleControlBaseFv();
g_dComIfG_gameInfo.mResControl.dump();
zelda->dump_sort();
game->dump_sort();
archive->dump_sort();
}
#pragma pop
/* ############################################################################################## */
/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80374505 = "Start StageName:RoomNo [%s:%d]\n";
#pragma pop
/* 80017F8C-80017FD0 0128CC 0044+00 1/1 0/0 0/0 .text dispGameInfo__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dispGameInfo() {
nofralloc
#include "asm/m_Do/m_Do_machine_exception/dispGameInfo__Fv.s"
void dispGameInfo() {
print_f("Start StageName:RoomNo [%s:%d]\n", dComIfGp_getStartStageName(),
dComIfGp_getStartStageRoomNo());
}
#pragma pop
/* ############################################################################################## */
/* 80374460-80374460 000AC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80374525 =
"------------- Date Infomation ---------\n";
SECTION_DEAD static char const* const stringBase_8037454E = " FINAL VERSION\n";
SECTION_DEAD static char const* const stringBase_8037455E = "COMPILE USER: FINAL\n";
SECTION_DEAD static char const* const stringBase_80374573 = "COPYDATE : %17s\n";
SECTION_DEAD static char const* const stringBase_80374586 =
"PowerOnTime: %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n";
SECTION_DEAD static char const* const stringBase_803745B7 =
"HungUpTime : %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n";
SECTION_DEAD static char const* const stringBase_803745E8 =
"PlayTime : %4d days, %2d:%2d:%2d`%03d\"%03d\n";
SECTION_DEAD static char const* const stringBase_80374616 =
"---------------------------------------\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8037463F = "";
#pragma pop
void dispDateInfo() {
print("------------- Date Infomation ---------\n");
print(" FINAL VERSION\n");
print("COMPILE USER: FINAL\n");
print_f("COPYDATE : %17s\n", mDoMain::COPYDATE_STRING);
/* 80017FD0-80018124 012910 0154+00 1/1 0/0 0/0 .text dispDateInfo__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dispDateInfo() {
nofralloc
#include "asm/m_Do/m_Do_machine_exception/dispDateInfo__Fv.s"
OSCalendarTime time;
OSTicksToCalendarTime(mDoMain::sPowerOnTime, &time);
print_f("PowerOnTime: %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n", time.year, time.month,
time.day_of_month, time.hours, time.minutes, time.seconds, time.milliseconds,
time.microseconds);
OSTicksToCalendarTime(mDoMain::sHungUpTime, &time);
print_f("HungUpTime : %04d/%2d/%2d %2d:%2d:%2d`%03d\"%03d\n", time.year, time.month,
time.day_of_month, time.hours, time.minutes, time.seconds, time.milliseconds,
time.microseconds);
OSTicksToCalendarTime(mDoMain::sHungUpTime - mDoMain::sPowerOnTime, &time);
print_f("PlayTime : %4d days, %2d:%2d:%2d`%03d\"%03d\n", time.year_day, time.hours,
time.minutes, time.seconds, time.milliseconds, time.microseconds);
print("---------------------------------------\n");
}
#pragma pop
/* 80018124-8001814C 012A64 0028+00 1/1 0/0 0/0 .text dispConsoleToTerminal__Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void dispConsoleToTerminal() {
nofralloc
#include "asm/m_Do/m_Do_machine_exception/dispConsoleToTerminal__Fv.s"
void dispConsoleToTerminal() {
JFWSystem::getSystemConsole()->dumpToTerminal(0xFFFFFFFF);
}
#pragma pop
/* 8001814C-8001817C 012A8C 0030+00 0/0 1/1 0/0 .text exception_addition__FP10JUTConsole
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void exception_addition(JUTConsole* param_0) {
nofralloc
#include "asm/m_Do/m_Do_machine_exception/exception_addition__FP10JUTConsole.s"
void exception_addition(JUTConsole* pConsole) {
sConsole = pConsole;
dispHeapInfo();
dispDateInfo();
dispConsoleToTerminal();
dispGameInfo();
}
#pragma pop
/* ############################################################################################## */
/* 80450C98-80450C9C -00001 0004+00 0/0 0/0 50/50 .sbss None */
+179 -325
View File
@@ -4,65 +4,25 @@
//
#include "m_Do/m_Do_main.h"
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTReport.h"
#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_ap/f_ap_game.h"
#include "m_Do/m_Do_MemCard.h"
#include "m_Do/m_Do_Reset.h"
#include "m_Do/m_Do_controller_pad.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "m_Do/m_Do_graphic.h"
#include "msl_c/string.h"
//
// Types:
//
struct mDoRst {
static u8 mResetData[4 + 4 /* padding */];
};
struct mDoMemCd_Ctrl_c {
/* 80016894 */ void update();
};
struct mDoDvdThd_callback_c {
/* 80015C74 */ void create(void* (*)(void*), void*);
};
struct dRes_control_c {
/* 8003C638 */ void dump();
};
struct dComIfG_inf_c {
/* 8002CBE4 */ void ct();
};
struct JUTConsole {
/* 802E75EC */ void clear();
/* 802E7F7C */ void dumpToTerminal(unsigned int);
/* 802E80A8 */ void scroll(int);
/* 802E81A8 */ void getLineOffset() const;
};
struct JUTAssertion {
/* 802E4C3C */ void setMessageCount(int);
};
struct JKRSolidHeap {
/* 802D0A24 */ void create(u32, JKRHeap*, bool);
};
struct JKRAramHeap {
/* 802D3134 */ void getFreeSize();
/* 802D31AC */ void getTotalFreeSize();
/* 802D3218 */ void dump();
};
struct JKRAram {
static u8 sAramObject[4];
};
struct JFWSystem {
static u8 systemConsole[4];
};
struct DynamicModuleControlBase {
/* 80262470 */ void dump();
};
@@ -71,7 +31,7 @@ struct DynamicModuleControlBase {
// Forward References:
//
extern "C" static void version_check__Fv();
extern "C" void version_check__Fv();
extern "C" void CheckHeap1__9HeapCheckFv();
extern "C" static void CheckHeap__FUl();
extern "C" static void countUsed__FP10JKRExpHeap();
@@ -79,7 +39,7 @@ extern "C" void getUsedCount__9HeapCheckCFv();
extern "C" void heapDisplay__9HeapCheckCFv();
extern "C" static void debugDisplay__Fv();
extern "C" static void Debug_console__FUl();
extern "C" static void LOAD_COPYDATE__FPv();
extern "C" void* LOAD_COPYDATE__FPv();
extern "C" static void debug__Fv();
extern "C" static void main01__Fv();
extern "C" void main();
@@ -166,13 +126,7 @@ extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" u8 m_gamePad__8mDoCPd_c[16];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" extern u8 g_mDoMemCd_control[8192];
extern "C" extern u8 g_HIO[64 + 4 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_mDoAud_audioHeap[4];
extern "C" extern u8 gameHeap[4];
extern "C" extern u8 zeldaHeap[4];
extern "C" extern u8 archiveHeap[4];
extern "C" extern JKRSolidHeap* g_mDoAud_audioHeap;
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" extern u8 struct_80450C80[8];
extern "C" u8 systemConsole__9JFWSystem[4];
@@ -185,8 +139,8 @@ extern "C" u8 sAramObject__7JKRAram[4];
// Declarations:
//
static void version_check() {
if ((!strcmp("20Apr2004", "20Apr2004")) && (!strcmp("Patch2", "Patch2"))) {
void version_check() {
if (!strcmp("20Apr2004", "20Apr2004") && !strcmp("Patch2", "Patch2")) {
return;
}
@@ -235,30 +189,7 @@ extern "C" HeapCheck HostioHeapCheck;
extern "C" HeapCheck CommandHeapCheck;
/* 803A2EE0-803A2EF4 000000 0012+02 2/2 1/1 0/0 .data COPYDATE_STRING__7mDoMain */
// "??/??/?? ??:??:?"
SECTION_DATA u8 mDoMain::COPYDATE_STRING[18 + 2 /* padding */] = {
0x3F,
0x3F,
0x2F,
0x3F,
0x3F,
0x2F,
0x3F,
0x3F,
0x20,
0x3F,
0x3F,
0x3A,
0x3F,
0x3F,
0x3A,
0x3F,
0x3F,
0x00,
/* padding */
0x00,
0x00,
};
SECTION_DATA char mDoMain::COPYDATE_STRING[18] = "??/??/?? ??:??:??";
/* 803A2EF4-803A2F14 -00001 0020+00 1/2 0/0 0/0 .data HeapCheckTable */
SECTION_DATA static HeapCheck* HeapCheckTable[8] = {
@@ -291,41 +222,26 @@ static HeapCheck HostioHeapCheck;
static HeapCheck CommandHeapCheck;
/* 8000578C-80005848 0000CC 00BC+00 1/1 0/0 0/0 .text CheckHeap__FUl */
#ifdef NONMATCHING
void CheckHeap(u32 controller_pad_no) {
void CheckHeap(u32 i_padNo) {
mDoMch_HeapCheckAll__Fv();
OSCheckActiveThreads();
bool unk = false;
bool comboCheck = false;
// if L + R + Z is pressed...
if (((m_cpadInfo[controller_pad_no].mButtonFlags & ~0x10) == 0x60) &&
m_cpadInfo[controller_pad_no].mPressedButtonFlags & 0x10) {
unk = true;
if ((mDoCPd_c::getHold(i_padNo) & ~CButton::Z) == (CButton::L + CButton::R) &&
mDoCPd_c::getTrig(i_padNo) & CButton::Z) {
comboCheck = true;
}
int unk2 = comboCheck;
for (int i = 0; i < 8; i++) {
HeapCheckTable[i]->CheckHeap1();
if (unk) {
HeapCheck* currentHeap = HeapCheckTable[i];
s32 used_count = currentHeap->getUsedCount();
currentHeap->getUsedCountRef() = used_count;
used_count = currentHeap->getHeap()->getTotalUsedSize();
currentHeap->getTotalUsedSizeRef() = used_count;
if (unk2) {
HeapCheckTable[i]->saveRelBase();
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void CheckHeap(u32 param_0) {
nofralloc
#include "asm/m_Do/m_Do_main/CheckHeap__FUl.s"
}
#pragma pop
#endif
static int countUsed(JKRExpHeap* heap) {
OSDisableScheduler();
@@ -393,54 +309,39 @@ SECTION_DEAD static char const* const stringBase_80373B4C = "%10d";
/* 803A2F14-803A2F28 -00001 0014+00 0/1 0/0 0/0 .data desc1$3717 */
#pragma push
#pragma force_active on
SECTION_DATA static void* desc1[5] = {
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x14F),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x150),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x15A),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x164),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x16E),
SECTION_DATA static char* desc1[5] = {
"", "TotalFree", "MaxUsed ", "Used ", "RelUsed ",
};
#pragma pop
/* 803A2F28-803A2F40 -00001 0014+04 0/1 0/0 0/0 .data desc2$3718 */
#pragma push
#pragma force_active on
SECTION_DATA static void* desc2[5 + 1 /* padding */] = {
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x14F),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x178),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x182),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x18C),
(void*)(((char*)&m_Do_m_Do_main__stringBase0) + 0x18C),
/* padding */
NULL,
SECTION_DATA static char* desc2[5] = {
"", "/ MaxFree", "/HeapSize", "Blk/Bytes", "Blk/Bytes",
};
#pragma pop
/* 80450580-80450584 000000 0004+00 3/3 6/6 0/0 .sdata None */
SECTION_SDATA extern s8 data_80450580 = 0xFF;
SECTION_SDATA s8 data_80450580 = 0xFF;
/* 80450584-80450588 000004 0004+00 0/0 1/1 0/0 .sdata memMargin__7mDoMain */
SECTION_SDATA u32 mDoMain::memMargin = 0xFFFFFFFF;
/* 80450588-80450590 000008 0008+00 2/2 0/0 0/0 .sdata None */
// 0x04 is mDoMain::mHeapBriefType
SECTION_SDATA static u8 data_80450588[8] = {
0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80450B00-80450B08 000000 0008+00 1/1 0/0 0/0 .sbss None */
static u8 data_80450B00[8];
static u8 data_80450B00;
/* 80450B08-80450B0C 000008 0004+00 1/1 1/1 0/0 .sbss sPowerOnTime__7mDoMain */
// should be OSTime
u8 mDoMain::sPowerOnTime[4];
extern u8 data_80450B0C[4];
u8 data_80450B0C[4];
OSTime mDoMain::sPowerOnTime;
/* 80450B10-80450B14 000010 0004+00 0/0 2/2 0/0 .sbss sHungUpTime__7mDoMain */
// should be OSTime
u8 mDoMain::sHungUpTime[4];
extern u8 data_80450B14[4];
u8 data_80450B14[4];
OSTime mDoMain::sHungUpTime;
/* 80450B18-80450B1C -00001 0004+00 3/3 0/0 0/0 .sbss None */
/* 80450B18 0001+00 data_80450B18 None */
@@ -456,33 +357,29 @@ static u8 data_80450B1B;
void debugDisplay(void) {
int tmp1;
int tmp2;
HeapCheck** hct = (HeapCheck**)lbl_803A2EE0;
if (lbl_80450B19 >= 1 && lbl_80450B19 <= 6) {
hct[lbl_80450B19 - 1]->heapDisplay();
if (struct_80450B18[1] >= 1 && struct_80450B18[1] <= 6) {
HeapCheckTable[struct_80450B18[1]]->heapDisplay();
}
if (lbl_80450588 == 5) {
JKRAramHeap* heap = sAramObject__7JKRAram->getAramHeap();
if (data_80450588[0] == 5) {
JKRAramHeap* heap = JKRAram::getAramHeap();
if (heap) {
JUTReport(0x1db, 100, lbl_803739A0 + 0x196);
JUTReport(0x1db, 0x72, lbl_803739A0 + 0x1A0, heap->getFreeSize());
JUTReport(0x1db, 0x80, lbl_803739A0 + 0x150);
JUTReport(0x1db, 0x8e, lbl_803739A0 + 0x1A0, heap->getTotalFreeSize());
JUTReport(0x1db, 100, "ARAM Free");
JUTReport(0x1db, 0x72, "%d", heap->getFreeSize());
JUTReport(0x1db, 0x80, "TotalFree");
JUTReport(0x1db, 0x8e, "%d", heap->getTotalFreeSize());
}
} else {
if (lbl_80450588) {
JUTReport(0x1db, 100, lbl_803739A0 + 0x1A3, lbl_803A2F14[lbl_80450588]);
JUTReport(0x1db, 0x72, lbl_803739A0 + 0x1A3, lbl_803A2F28[lbl_80450588]);
if (data_80450588[0] != 0) {
JUTReport(0x1db, 100, "%s", desc1[data_80450588[0]]);
JUTReport(0x1db, 0x72, "%s", lbl_803A2F28[data_80450588[0]]);
int k = 0;
for (int i = 0; i < 8; i++, k += 0x2c) {
// heap check table stuff
HeapCheck* heap_check;
heap_check = HeapCheckTable[i];
for (int i = 0; i < 8; i++, k += 0x2C) {
HeapCheck* heap_check = HeapCheckTable[i];
switch (lbl_80450588) {
switch (data_80450588[0]) {
case 3: {
tmp1 = heap_check->getUsedCount();
tmp2 = heap_check->getHeap()->getTotalUsedSize();
@@ -505,9 +402,9 @@ void debugDisplay(void) {
break;
}
JUTReport(0x1db, k + 0x96, lbl_80373B46, heap_check->getNames()[0]);
JUTReport(0x1db, k + 0xA4, lbl_80373B4C, tmp1);
JUTReport(0x1db, k + 0xB2, lbl_80373B4C, tmp2);
JUTReport(0x1db, k + 0x96, " [%s]", heap_check->getName());
JUTReport(0x1db, k + 0xA4, "%10d", tmp1);
JUTReport(0x1db, k + 0xB2, "%10d", tmp2);
}
}
}
@@ -542,19 +439,19 @@ SECTION_DEAD static char const* const stringBase_80373BFB =
static f32 console_position_x;
/* 80450B20-80450B24 000020 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_80450B20[4];
static s8 data_80450B20;
/* 80450B24-80450B28 000024 0004+00 1/1 0/0 0/0 .sbss console_position_y$3779 */
static f32 console_position_y;
/* 80450B28-80450B2C 000028 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_80450B28[4];
static s8 data_80450B28;
/* 80450B2C-80450B30 00002C 0004+00 1/1 0/0 0/0 .sbss console_scroll$3782 */
static f32 console_scroll;
/* 80450B30-80450B34 000030 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_80450B30[4];
static s8 data_80450B30;
/* 80451A00-80451A04 000000 0004+00 1/1 0/0 0/0 .sdata2 @3884 */
SECTION_SDATA2 static f32 lit_3884 = 20.0f;
@@ -584,119 +481,112 @@ SECTION_SDATA2 static f32 lit_3888[1 + 1 /* padding */] = {
SECTION_SDATA2 static f64 lit_3890 = 4503601774854144.0 /* cast s32 to float */;
/* 80005D4C-8000614C 00068C 0400+00 1/1 0/0 0/0 .text Debug_console__FUl */
// middle section has lots of issues
#ifdef NONMATCHING
void Debug_console(u32 controller_pad_no) {
bool Debug_console(u32 i_padNo) {
float tmp2;
float tmp3;
int tmp6;
// systemConsole
if (lbl_804511B8) {
if (!lbl_80450B20) {
lbl_80450B1C = lbl_80451A00;
lbl_80450B20 = 1;
JUTConsole* console = JFWSystem::getSystemConsole();
if (console) {
if (!data_80450B20) {
console_position_x = 20.0f;
data_80450B20 = 1;
}
if (!data_80450B28) {
console_position_y = 30.0f;
data_80450B28 = 1;
}
if (!data_80450B30) {
console_scroll = 0.0f;
data_80450B30 = 1;
}
if (!lbl_80450B28) {
lbl_80450B24 = lbl_80451A04;
lbl_80450B28 = 1;
}
if (!lbl_80450B30) {
lbl_80450B2C = lbl_80451A08;
lbl_80450B30 = 1;
}
u32 tmp5 = m_cpadInfo[controller_pad_no].mPressedButtonFlags;
if ((m_cpadInfo[controller_pad_no].mPressedButtonFlags & 0x10) &&
!(m_cpadInfo[controller_pad_no].mButtonFlags & ~0x10)) {
lbl_804511B8->field_0x68 = !lbl_804511B8->field_0x68;
if (mDoCPd_c::getTrig(i_padNo) & CButton::Z &&
!(mDoCPd_c::getHold(i_padNo) & ~CButton::Z)) {
bool visible = console->isVisible() == false;
console->setVisible(visible);
JUTAssertion::setMessageCount(0);
}
if (lbl_804511B8->field_0x68) {
u32 tmp = m_cpadInfo[controller_pad_no].mButtonFlags;
if (console->isVisible()) {
// if R and L are pressed
if ((tmp & CButton::R && tmp & CButton::L) ||
((lbl_80451A08 > m_cpadInfo[controller_pad_no].mTriggerLeft) &&
(lbl_80451A08 > m_cpadInfo[controller_pad_no].mTriggerRight))) {
tmp2 = m_cpadInfo[controller_pad_no].mMainStickPosX;
tmp3 = m_cpadInfo[controller_pad_no].mMainStickPosY;
// if x buttons are pressed, clear the console
if (tmp & (CButton::Y | CButton::START) && tmp5 & CButton::START) {
lbl_804511B8->clear();
if ((mDoCPd_c::getHold(i_padNo) & CButton::L &&
mDoCPd_c::getHold(i_padNo) & CButton::R) ||
((mDoCPd_c::getAnalogL(i_padNo) > 0.0f &&
(0.0f > mDoCPd_c::getAnalogR(i_padNo))))) {
if (mDoCPd_c::getTrig(i_padNo) & (CButton::Y | CButton::X) &&
mDoCPd_c::getTrig(i_padNo) & CButton::START) {
console->clear();
}
u32 tmp = m_cpadInfo[controller_pad_no].mButtonFlags;
if (!(tmp & (CButton::Y | CButton::START))) {
if (!(mDoCPd_c::getHold(i_padNo) & (CButton::Y | CButton::X))) {
// subtract console scroll value from stick Y
float tmp4 = lbl_80450B2C;
lbl_80450B2C = tmp4 - tmp3;
if (lbl_80450B2C <= lbl_80451A0C) {
lbl_80451A10 <= lbl_80450B2C ? tmp = 0 : tmp = lbl_80451A0C;
console_scroll -= mDoCPd_c::getStickY(i_padNo);
int tmp;
if (1.0f <= console_scroll) {
-1.0f <= console_scroll ? tmp = 0 : tmp = -console_scroll;
} else {
tmp = (tmp4 - tmp3);
tmp = mDoCPd_c::getStickX(i_padNo) - mDoCPd_c::getStickY(i_padNo);
}
if (tmp) {
lbl_80450B2C -= (tmp ^ 0x80000000) - 4503601774854144.00000000;
lbl_804511B8->scroll(tmp);
console_scroll -= tmp;
console->scroll(tmp);
}
} else {
if (tmp & CButton::X) {
lbl_80450B2C += tmp2;
if (mDoCPd_c::getHold(i_padNo) & CButton::X) {
console_position_x += mDoCPd_c::getStickX(i_padNo);
}
if (tmp & CButton::Y) {
lbl_80450B2C -= tmp3;
if (mDoCPd_c::getHold(i_padNo) & CButton::Y) {
console_position_y -= mDoCPd_c::getStickY(i_padNo);
}
}
if (tmp5 & CButton::A) {
lbl_804511B8->dumpToTerminal(0xFFFFFFFF);
lbl_804511B8->field_0x58 = 3;
if (mDoCPd_c::getTrig(i_padNo) & CButton::A) {
console->dumpToTerminal(0xFFFFFFFF);
console->setOutput(3);
}
JUTReport(0x1E, 0x186, 1, lbl_80373B51);
JUTReport(0x1E, 400, 1, lbl_80373B73);
JUTReport(0x1E, 0x19A, 1, lbl_80373B8D);
tmp6 = lbl_804511B8->getLineOffset();
JUTReport(0x1E, 0x1A4, 1, lbl_80373BB6, tmp6, lbl_804511B8->field_0x40,
lbl_804511B8->field_0x44, lbl_804511B8->field_0x58);
JUTReport(0x1E, 0x186, 1, "Press X+Y+START to CLEAR console.");
JUTReport(0x1E, 400, 1, "3DStick UP/Down to scroll");
JUTReport(0x1E, 0x19A, 1, "Press A to output terminal from console.");
JUTReport(0x1E, 0x1A4, 1, "SCROLL%3d %3d %3d Output=%1x",
console->getLineOffset(), console->getPositionX(),
console->getPositionY(), console->getOutput());
}
} else {
if (tmp5 & 4) {
g_HIO.field_0x15 ^= 1;
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_DOWN) {
g_HIO.mDisplayMeter ^= 1;
}
if (tmp5 & 1) {
if (sAramObject__7JKRAram->getAramHeap()) {
sAramObject__7JKRAram->getAramHeap()->dump();
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_LEFT) {
if (JKRAram::getAramHeap()) {
JKRAram::getAramHeap()->dump();
}
dump__24DynamicModuleControlBaseFv();
dump__14dRes_control_cFv();
g_dComIfG_gameInfo.mResControl.dump();
}
if (tmp5 & 2) {
sSystemHeap__7JKRHeap->dump_sort();
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_RIGHT) {
JKRHeap::getSystemHeap()->dump_sort();
}
if (tmp5 & 8) {
lbl_80450C2C->dump_sort();
lbl_80450C28->dump_sort();
lbl_80450C34->dump_sort();
if (mDoCPd_c::getTrig(i_padNo) & CButton::DPAD_UP) {
zeldaHeap->dump_sort();
gameHeap->dump_sort();
archiveHeap->dump_sort();
}
JUTReport(0x1E, 0x1B8, 1, lbl_80373BD5);
JUTReport(0x1E, 0x1C2, 1, lbl_80373BFB);
JUTReport(0x1E, 0x1B8, 1, "Press L+R trigger to control console.");
JUTReport(0x1E, 0x1C2, 1, "Press [Z] trigger to close this window.");
}
lbl_804511B8->field_0x40 = lbl_80450B1C;
lbl_804511B8->field_0x44 = lbl_80450B24;
tmp6 = 1;
console->setPosition(console_position_x, console_position_y);
return 1;
}
return 0;
}
#else
#pragma push
@@ -728,7 +618,7 @@ s32 LOAD_COPYDATE(void*) {
if (status) {
DVDReadPrio((DVDFileInfo*)fileInfo, &buffer, 32, 0, 2);
memcpy(lbl_803A2EE0, buffer, 17);
memcpy(mDoMain::COPYDATE_STRING, buffer, 17);
status = DVDClose((DVDFileInfo*)fileInfo);
}
return status;
@@ -737,7 +627,7 @@ s32 LOAD_COPYDATE(void*) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void LOAD_COPYDATE(void* param_0) {
asm void* LOAD_COPYDATE(void* param_0) {
nofralloc
#include "asm/m_Do/m_Do_main/LOAD_COPYDATE__FPv.s"
}
@@ -750,14 +640,14 @@ static void debug() {
CheckHeap(2);
}
if (((mDoCPd_c::m_gamePad[2]->buttons.mButtonFlags & ~0x10) == 0x20) &&
(mDoCPd_c::m_gamePad[2]->buttons.mPressedButtonFlags & 0x10)) {
if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::R &&
mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) {
struct_80450B18[0] ^= 0x1;
}
if (struct_80450B18[0]) {
if (((mDoCPd_c::m_gamePad[2]->buttons.mButtonFlags & ~0x10) == 0x40) &&
(mDoCPd_c::m_gamePad[2]->buttons.mPressedButtonFlags & 0x10)) {
if ((mDoCPd_c::getGamePad(2)->getButton() & ~CButton::Z) == CButton::L &&
mDoCPd_c::getGamePad(2)->testTrigger(CButton::Z)) {
data_80450588[0] < 0x5 ? data_80450588[0]++ : data_80450588[0] = 0x1;
}
@@ -770,106 +660,83 @@ static void debug() {
/* ############################################################################################## */
/* 80450B34-80450B38 000034 0004+00 1/1 0/0 0/0 .sbss frame$3939 */
static u8 frame[4];
static u32 frame;
/* 8000628C-80006454 000BCC 01C8+00 1/1 0/0 0/0 .text main01__Fv */
// almost
#ifdef NONMATCHING
void main01(void) {
HeapCheck* heaps = lbl_803D32E0;
mDoMch_Create__Fv();
mDoGph_Create();
create__8mDoCPd_cFv();
mDoCPd_c::create();
// mDoDVDThd_callback_c thread_callback;
// JKRSolidHeap audio_heap;
// Root Heap
heaps[0].setHeap((JKRExpHeap*)JKRHeap::getRootHeap());
RootHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getRootHeap());
if (JKRHeap::getRootHeap()) {
heaps[0].setHeapSize(JKRHeap::getRootHeap()->getSize());
RootHeapCheck.setHeapSize(JKRHeap::getRootHeap()->getSize());
}
// System Heap
heaps[1].setHeap((JKRExpHeap*)JKRHeap::getSystemHeap());
SystemHeapCheck.setHeap((JKRExpHeap*)JKRHeap::getSystemHeap());
if (JKRHeap::getSystemHeap()) {
heaps[1].setHeapSize(JKRHeap::getSystemHeap()->getSize());
SystemHeapCheck.setHeapSize(JKRHeap::getSystemHeap()->getSize());
}
// Zelda Heap
heaps[2].setHeap(mDoExt_getZeldaHeap());
if (heaps[2].getHeap()) {
heaps[2].setHeapSize(heaps[2].getHeap()->getSize());
ZeldaHeapCheck.setHeap(mDoExt_getZeldaHeap());
if (ZeldaHeapCheck.getHeap()) {
ZeldaHeapCheck.setHeapSize(ZeldaHeapCheck.getHeap()->getSize());
}
// Game Heap
heaps[3].setHeap(mDoExt_getGameHeap());
if (heaps[3].getHeap()) {
heaps[3].setHeapSize(heaps[3].getHeap()->getSize());
GameHeapCheck.setHeap(mDoExt_getGameHeap());
if (GameHeapCheck.getHeap()) {
GameHeapCheck.setHeapSize(GameHeapCheck.getHeap()->getSize());
}
// Archive Heap
heaps[4].setHeap(mDoExt_getArchiveHeap());
if (heaps[4].getHeap()) {
heaps[4].setHeapSize(heaps[4].getHeap()->getSize());
ArchiveHeapCheck.setHeap(mDoExt_getArchiveHeap());
if (ArchiveHeapCheck.getHeap()) {
ArchiveHeapCheck.setHeapSize(ArchiveHeapCheck.getHeap()->getSize());
}
// J2D Heap
heaps[5].setHeap(mDoExt_getJ2dHeap());
if (heaps[5].getHeap()) {
heaps[5].setHeapSize(heaps[5].getHeap()->getSize());
J2dHeapCheck.setHeap(mDoExt_getJ2dHeap());
if (J2dHeapCheck.getHeap()) {
J2dHeapCheck.setHeapSize(J2dHeapCheck.getHeap()->getSize());
}
// HostIO Heap
heaps[6].setHeap(mDoExt_getHostIOHeap());
if (heaps[6].getHeap()) {
heaps[6].setHeapSize(heaps[6].getHeap()->getSize());
HostioHeapCheck.setHeap(mDoExt_getHostIOHeap());
if (HostioHeapCheck.getHeap()) {
HostioHeapCheck.setHeapSize(HostioHeapCheck.getHeap()->getSize());
}
// Command Heap
heaps[7].setHeap(mDoExt_getCommandHeap());
JUTConsole* systemConsole = lbl_804511B8;
if (heaps[7].getHeap()) {
heaps[7].setHeapSize(heaps[7].getHeap()->getSize());
CommandHeapCheck.setHeap(mDoExt_getCommandHeap());
if (CommandHeapCheck.getHeap()) {
CommandHeapCheck.setHeapSize(CommandHeapCheck.getHeap()->getSize());
}
u32 unk = 0;
if (lbl_80450580) {
unk = 3;
JUTConsole* console = JFWSystem::getSystemConsole();
if (data_80450580 != 0) {
console->setOutput(3);
}
systemConsole->field_0x58 = unk;
systemConsole->field_0x40 = 0x20;
systemConsole->field_0x44 = 0x2A;
console->setPosition(32, 42);
// lol
mDoDVDThd_callback_c::create(LOAD_COPYDATE, 0);
fapGm_Create();
fopAcM_initManager();
lbl_80450B18 = 0;
mDoDvdThd_callback_c::create(LOAD_COPYDATE, NULL);
fapGm_Create__Fv();
fopAcM_initManager__Fv();
struct_80450B18[0] = 0;
cDyl_InitAsync__Fv();
// g_mDoAud_audioHeap
g_mDoAud_audioHeap = JKRSolidHeap::create(0x14D800, JKRHeap::getCurrentHeap(), false);
lbl_80450BBC = JKRSolidHeap::create(0x14d800, JKRHeap::getCurrentHeap(), false);
// main loop
do {
// global frame counter?
lbl_80450B34++;
frame++;
if (lbl_80450B00 && (lbl_80450B34 == ((lbl_80450B34 / lbl_80450B00) * lbl_80450B00))) {
if (data_80450B00 && frame == data_80450B00 * (frame / data_80450B00)) {
mDoMch_HeapCheckAll__Fv();
}
if (lbl_80450C80) {
update__15mDoMemCd_Ctrl_cFv();
if (struct_80450C80[0]) {
g_mDoMemCd_control.update();
}
mDoCPd_c_NS_read();
fapGm_Execute();
mDoAud_Execute();
mDoCPd_c::read();
fapGm_Execute__Fv();
mDoAud_Execute__Fv();
debug();
} while (true);
}
@@ -889,30 +756,28 @@ static asm void main01() {
static u8 mainThreadStack[32768];
/* 803DB420-803DB740 008140 0318+08 1/1 0/0 0/0 .bss mainThread */
static u8 mainThread[792 + 8 /* padding */];
static OSThread mainThread;
/* 80006454-800065D8 000D94 0184+00 0/0 1/1 0/0 .text main */
#ifdef NONMATCHING
void main() {
u32 resetCode;
OSThread* current_thread = OSGetCurrentThread();
OSPriority* priority;
u8* stack = &mainThreadStack[0];
mDoMain::sPowerOnTime = OSGetTime();
OSReportInit();
version_check();
mDoRstData* reset_data = (mDoRstData*)OSAllocFromArenaLo(0x18, 4);
mDoRst::setResetData(reset_data);
if (!mDoRst::getResetData()) {
if (!mDoRst::i_getResetData()) {
do {
} while (true);
}
if (!(OSGetResetCode() & 0x80000000)) {
if (!(OSGetResetCode() >> 0x1F)) {
mDoRst::offReset();
mDoRst::offResetPrepare();
mDoRst::off3ButtonReset();
mDoRst::off3ButtonResetPort(-1);
mDoRst::set3ButtonResetPort(-1);
mDoRst::setLogoScnFlag(0);
mDoRst::setProgSeqFlag(0);
mDoRst::setProgChgFlag(0);
@@ -921,39 +786,28 @@ void main() {
mDoRst::offReturnToMenu();
}
dComIfG_ct();
g_dComIfG_gameInfo.ct();
if (data_80450580 < 0) {
DVDDiskID* disk_id = DVDGetCurrentDiskID();
if (disk_id->game_version <= 0x90) {
if (disk_id->game_version <= 0x80) {
data_80450580 = 0;
} else {
resetCode = OSGetConsoleType();
data_80450580 = (-(resetCode & 0x10000000) >> 0x1f);
}
} else {
if (disk_id->game_version > 0x90) {
data_80450580 = 1;
} else if (disk_id->game_version > 0x80) {
u32 consoleType = OSGetConsoleType();
data_80450580 = (consoleType >> 0x1c) & 1;
} else {
data_80450580 = 0;
}
}
priority = OSGetThreadPriority(current_thread);
OSCreateThread(&mainThread, main01, 0, &mainThread, 0x8000, priority, 0);
s32 priority = OSGetThreadPriority(current_thread);
OSCreateThread(&mainThread, main01, 0, stack + sizeof(mainThreadStack), sizeof(mainThreadStack),
priority, 0);
OSResumeThread(&mainThread);
OSSetThreadPriority(current_thread, 0x1F);
OSSuspendThread(current_thread);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void main() {
nofralloc
#include "asm/m_Do/m_Do_main/main.s"
}
#pragma pop
#endif
/* 800065D8-800065E0 000F18 0008+00 0/0 2/0 0/0 .text dump_sort__7JKRHeapFv */
bool JKRHeap::dump_sort() {
+136 -185
View File
@@ -11,45 +11,6 @@
// Types:
//
struct csXyz {};
struct Quaternion {};
struct Vec {};
struct cXyz {
/* 80266B34 */ void operator-(Vec const&) const;
/* 80266CBC */ void outprod(Vec const&) const;
/* 80266EF4 */ void normalize();
/* 80266FDC */ void normalizeRS();
};
struct mDoMtx_stack_c {
/* 8000CCC8 */ void push();
/* 8000CD14 */ void pop();
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CDD4 */ void transM(cXyz const&);
/* 8000CD9C */ void transM(f32, f32, f32);
/* 8000CE00 */ void scaleS(cXyz const&);
/* 8000CE70 */ void scaleM(cXyz const&);
/* 8000CE38 */ void scaleM(f32, f32, f32);
/* 8000CE9C */ void XYZrotS(csXyz const&);
/* 8000CED4 */ void XYZrotM(csXyz const&);
/* 8000CF0C */ void ZXYrotS(csXyz const&);
/* 8000CF44 */ void ZXYrotM(csXyz const&);
/* 8000CF7C */ void quatM(Quaternion const*);
/* 8000D070 */ ~mDoMtx_stack_c();
static u8 now[48];
static u8 buffer[768];
static void* next;
static void* end;
};
struct mDoMtx_quatStack_c {
/* 8000D034 */ ~mDoMtx_quatStack_c();
};
struct JMath {
static u8 sincosTable_[65536];
};
@@ -106,14 +67,6 @@ extern "C" void normalize__4cXyzFv();
extern "C" void normalizeRS__4cXyzFv();
extern "C" void cM_atan2s__Fff();
extern "C" void __dl__FPv();
extern "C" void PSMTXIdentity();
extern "C" void PSMTXCopy();
extern "C" void PSMTXConcat();
extern "C" void PSMTXTrans();
extern "C" void PSMTXScale();
extern "C" void PSMTXQuat();
extern "C" void C_MTXLookAt();
extern "C" void PSVECDotProduct();
extern "C" void __register_global_object();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
@@ -126,44 +79,82 @@ extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */];
//
/* 8000C0CC-8000C164 006A0C 0098+00 1/1 0/0 0/0 .text mDoMtx_XYZrotS__FPA4_fsss */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void mDoMtx_XYZrotS(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_XYZrotS__FPA4_fsss.s"
void mDoMtx_XYZrotS(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (z != 0) {
mDoMtx_ZrotS(mtx, z);
} else {
PSMTXIdentity(mtx);
}
if (y != 0) {
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
}
#pragma pop
/* 8000C164-8000C208 006AA4 00A4+00 1/1 8/8 13/13 .text mDoMtx_XYZrotM__FPA4_fsss */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_XYZrotM(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_XYZrotM__FPA4_fsss.s"
void mDoMtx_XYZrotM(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (z != 0) {
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
if (y != 0) {
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
}
#pragma pop
/* 8000C208-8000C2A0 006B48 0098+00 1/1 10/10 37/37 .text mDoMtx_ZXYrotS__FPA4_fsss */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_ZXYrotS(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZXYrotS__FPA4_fsss.s"
void mDoMtx_ZXYrotS(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (y != 0) {
mDoMtx_YrotS(mtx, y);
} else {
PSMTXIdentity(mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
if (z != 0) {
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
}
#pragma pop
/* 8000C2A0-8000C344 006BE0 00A4+00 1/1 19/19 149/149 .text mDoMtx_ZXYrotM__FPA4_fsss */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_ZXYrotM(f32 (*param_0)[4], s16 param_1, s16 param_2, s16 param_3) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZXYrotM__FPA4_fsss.s"
void mDoMtx_ZXYrotM(Mtx mtx, s16 x, s16 y, s16 z) {
Mtx tmp;
if (y != 0) {
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
if (x != 0) {
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
if (z != 0) {
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
}
#pragma pop
/* ############################################################################################## */
/* 80451B08-80451B0C 000108 0004+00 6/6 0/0 0/0 .sdata2 @3676 */
@@ -188,14 +179,11 @@ asm void mDoMtx_XrotS(f32 (*param_0)[4], s16 param_1) {
#pragma pop
/* 8000C39C-8000C3DC 006CDC 0040+00 0/0 11/11 425/425 .text mDoMtx_XrotM__FPA4_fs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_XrotM(f32 (*param_0)[4], s16 param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_XrotM__FPA4_fs.s"
void mDoMtx_XrotM(Mtx mtx, s16 x) {
Mtx tmp;
mDoMtx_XrotS(tmp, x);
PSMTXConcat(mtx, tmp, mtx);
}
#pragma pop
/* 8000C3DC-8000C434 006D1C 0058+00 5/5 24/24 809/809 .text mDoMtx_YrotS__FPA4_fs */
#pragma push
@@ -208,14 +196,11 @@ asm void mDoMtx_YrotS(f32 (*param_0)[4], s16 param_1) {
#pragma pop
/* 8000C434-8000C474 006D74 0040+00 0/0 44/44 775/775 .text mDoMtx_YrotM__FPA4_fs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_YrotM(f32 (*param_0)[4], s16 param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_YrotM__FPA4_fs.s"
void mDoMtx_YrotM(Mtx mtx, s16 y) {
Mtx tmp;
mDoMtx_YrotS(tmp, y);
PSMTXConcat(mtx, tmp, mtx);
}
#pragma pop
/* 8000C474-8000C4CC 006DB4 0058+00 7/7 1/1 6/6 .text mDoMtx_ZrotS__FPA4_fs */
#pragma push
@@ -228,14 +213,11 @@ asm void mDoMtx_ZrotS(f32 (*param_0)[4], s16 param_1) {
#pragma pop
/* 8000C4CC-8000C50C 006E0C 0040+00 0/0 9/9 302/302 .text mDoMtx_ZrotM__FPA4_fs */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_ZrotM(f32 (*param_0)[4], s16 param_1) {
nofralloc
#include "asm/m_Do/m_Do_mtx/mDoMtx_ZrotM__FPA4_fs.s"
void mDoMtx_ZrotM(Mtx mtx, s16 z) {
Mtx tmp;
mDoMtx_ZrotS(tmp, z);
PSMTXConcat(mtx, tmp, mtx);
}
#pragma pop
/* 8000C50C-8000C710 006E4C 0204+00 0/0 3/3 0/0 .text mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs
*/
@@ -315,155 +297,118 @@ asm void mDoMtx_MtxToRot(f32 const (*param_0)[4], csXyz* param_1) {
/* ############################################################################################## */
/* 803DD470-803DD4A0 00A190 0030+00 12/12 142/142 1820/1820 .bss now__14mDoMtx_stack_c
*/
u8 mDoMtx_stack_c::now[48];
Mtx mDoMtx_stack_c::now;
/* 803DD4A0-803DD7A0 00A1C0 0300+00 2/2 0/0 0/0 .bss buffer__14mDoMtx_stack_c */
u8 mDoMtx_stack_c::buffer[768];
Mtx mDoMtx_stack_c::buffer[16];
/* 803DD7A0-803DD7AC 00A4C0 000C+00 1/1 0/0 0/0 .bss @4048 */
static u8 lit_4048[12];
/* 804505A8-804505AC -00001 0004+00 3/3 0/0 0/0 .sdata next__14mDoMtx_stack_c */
SECTION_SDATA void* mDoMtx_stack_c::next = (void*)&mDoMtx_stack_c::buffer;
SECTION_SDATA Mtx* mDoMtx_stack_c::next = (Mtx*)&mDoMtx_stack_c::buffer;
/* 804505AC-804505B0 -00001 0004+00 2/2 0/0 0/0 .sdata end__14mDoMtx_stack_c */
SECTION_SDATA void* mDoMtx_stack_c::end = (void*)&lit_4048;
SECTION_SDATA Mtx* mDoMtx_stack_c::end = (Mtx*)&lit_4048;
/* 8000CCC8-8000CD14 007608 004C+00 0/0 0/0 24/24 .text push__14mDoMtx_stack_cFv */
// regalloc
#ifdef NONMATCHING
bool mDoMtx_stack_c::push() {
if (next >= end) {
return false;
}
next++;
PSMTXCopy(now, *next);
return true;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::push() {
asm bool mDoMtx_stack_c::push() {
nofralloc
#include "asm/m_Do/m_Do_mtx/push__14mDoMtx_stack_cFv.s"
}
#pragma pop
#endif
/* 8000CD14-8000CD64 007654 0050+00 0/0 0/0 24/24 .text pop__14mDoMtx_stack_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::pop() {
nofralloc
#include "asm/m_Do/m_Do_mtx/pop__14mDoMtx_stack_cFv.s"
bool mDoMtx_stack_c::pop() {
if (next <= buffer) {
return false;
}
next--;
PSMTXCopy(*next, now);
return true;
}
#pragma pop
/* 8000CD64-8000CD9C 0076A4 0038+00 0/0 50/50 484/484 .text transS__14mDoMtx_stack_cFRC4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::transS(cXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/transS__14mDoMtx_stack_cFRC4cXyz.s"
void mDoMtx_stack_c::transS(cXyz const& param_0) {
transS(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CD9C-8000CDD4 0076DC 0038+00 1/1 29/29 285/285 .text transM__14mDoMtx_stack_cFfff
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::transM(f32 param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/m_Do/m_Do_mtx/transM__14mDoMtx_stack_cFfff.s"
void mDoMtx_stack_c::transM(f32 x, f32 y, f32 z) {
Mtx tmp;
PSMTXTrans(tmp, x, y, z);
PSMTXConcat(now, tmp, now);
}
#pragma pop
/* 8000CDD4-8000CE00 007714 002C+00 0/0 3/3 40/40 .text transM__14mDoMtx_stack_cFRC4cXyz
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::transM(cXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/transM__14mDoMtx_stack_cFRC4cXyz.s"
void mDoMtx_stack_c::transM(cXyz const& param_0) {
transM(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CE00-8000CE38 007740 0038+00 0/0 0/0 2/2 .text scaleS__14mDoMtx_stack_cFRC4cXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::scaleS(cXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/scaleS__14mDoMtx_stack_cFRC4cXyz.s"
void mDoMtx_stack_c::scaleS(cXyz const& param_0) {
scaleS(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CE38-8000CE70 007778 0038+00 1/1 13/13 219/219 .text scaleM__14mDoMtx_stack_cFfff
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::scaleM(f32 param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/m_Do/m_Do_mtx/scaleM__14mDoMtx_stack_cFfff.s"
void mDoMtx_stack_c::scaleM(f32 x, f32 y, f32 z) {
Mtx tmp;
PSMTXScale(tmp, x, y, z);
PSMTXConcat(now, tmp, now);
}
#pragma pop
/* 8000CE70-8000CE9C 0077B0 002C+00 0/0 7/7 79/79 .text scaleM__14mDoMtx_stack_cFRC4cXyz
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::scaleM(cXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/scaleM__14mDoMtx_stack_cFRC4cXyz.s"
void mDoMtx_stack_c::scaleM(cXyz const& param_0) {
scaleM(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CE9C-8000CED4 0077DC 0038+00 0/0 3/3 0/0 .text XYZrotS__14mDoMtx_stack_cFRC5csXyz
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::XYZrotS(csXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/XYZrotS__14mDoMtx_stack_cFRC5csXyz.s"
void mDoMtx_stack_c::XYZrotS(csXyz const& param_0) {
XYZrotS(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CED4-8000CF0C 007814 0038+00 0/0 1/1 4/4 .text XYZrotM__14mDoMtx_stack_cFRC5csXyz
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::XYZrotM(csXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/XYZrotM__14mDoMtx_stack_cFRC5csXyz.s"
void mDoMtx_stack_c::XYZrotM(csXyz const& param_0) {
XYZrotM(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CF0C-8000CF44 00784C 0038+00 0/0 5/5 43/43 .text ZXYrotS__14mDoMtx_stack_cFRC5csXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::ZXYrotS(csXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/ZXYrotS__14mDoMtx_stack_cFRC5csXyz.s"
void mDoMtx_stack_c::ZXYrotS(csXyz const& param_0) {
ZXYrotS(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CF44-8000CF7C 007884 0038+00 0/0 24/24 250/250 .text ZXYrotM__14mDoMtx_stack_cFRC5csXyz */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::ZXYrotM(csXyz const& param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/ZXYrotM__14mDoMtx_stack_cFRC5csXyz.s"
void mDoMtx_stack_c::ZXYrotM(csXyz const& param_0) {
ZXYrotM(param_0.x, param_0.y, param_0.z);
}
#pragma pop
/* 8000CF7C-8000CFB8 0078BC 003C+00 0/0 1/1 6/6 .text quatM__14mDoMtx_stack_cFPC10Quaternion */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMtx_stack_c::quatM(Quaternion const* param_0) {
nofralloc
#include "asm/m_Do/m_Do_mtx/quatM__14mDoMtx_stack_cFPC10Quaternion.s"
void mDoMtx_stack_c::quatM(Quaternion const* param_0) {
Mtx tmp;
PSMTXQuat(tmp, param_0);
PSMTXConcat(now, tmp, now);
}
#pragma pop
/* ############################################################################################## */
/* 803DD7AC-803DD7B8 00A4CC 000C+00 0/1 0/0 0/0 .bss @4078 */
@@ -593,3 +538,9 @@ SECTION_DATA extern u8 g_mDoMtx_identity[48 + 24 /* padding */] = {
0x00,
0x00,
};
/* SECTION_DATA extern Mtx g_mDoMtx_identity = {
{1.0f, 0.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 1.0f, 0.0f},
}; */
+4 -11
View File
@@ -18,7 +18,7 @@ struct __va_list_struct {};
//
extern "C" static void OSSwitchFiberEx__FUlUlUlUlUlUl();
extern "C" static void my_PutString__FPCc();
extern "C" void my_PutString__FPCc();
extern "C" static void OSVAttention__FPCcP16__va_list_struct();
extern "C" void OSAttention();
extern "C" void OSReportDisable();
@@ -50,10 +50,8 @@ extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" void fputs();
extern "C" void fflush();
extern "C" void vprintf();
extern "C" extern void* __files[80];
extern "C" extern u8 struct_80450B98[4];
extern "C" extern u8 data_80450B9C[4];
@@ -73,14 +71,9 @@ static asm void OSSwitchFiberEx(u32 param_0, u32 param_1, u32 param_2, u32 param
#pragma pop
/* 800067C8-800067F4 001108 002C+00 3/3 0/0 0/0 .text my_PutString__FPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void my_PutString(char const* param_0) {
nofralloc
#include "asm/m_Do/m_Do_printf/my_PutString__FPCc.s"
void my_PutString(const char* string) {
fputs(string, &__files.stdout);
}
#pragma pop
/* 800067F4-80006814 001134 0020+00 3/3 0/0 0/0 .text OSVAttention__FPCcP16__va_list_struct */
#pragma push
@@ -175,7 +168,7 @@ asm void OSReportInit() {
/* ############################################################################################## */
/* 803DB740-803DBF40 008460 0800+00 1/1 0/0 0/0 .bss mDoPrintf_FiberStack */
static u8 mDoPrintf_FiberStack[2048];
static u8 mDoPrintf_FiberStack[2048] ALIGN_DECL(32);
/* 800068DC-80006964 00121C 0088+00 1/1 0/0 0/0 .text
* mDoPrintf_vprintf_Interrupt__FPCcP16__va_list_struct */