work on daalink, fop actor, mDo machine, msg_scrn, + various (#201)

* work on fop actor / actor mng, daalink, d_a_obj_item

* d_a_title mostly decompiled

* daalink / d_event / JMessage / dmsg_out_font work

* msg_scrn_base / msg_scrn_boss

* some work on mDo machine, d_menu_save, d_tresure, and various

* remove asm

* progress
This commit is contained in:
TakaRikka
2022-06-29 13:19:09 -07:00
committed by GitHub
parent cd5b02450c
commit 046d178003
412 changed files with 12030 additions and 16833 deletions
-92
View File
@@ -1,92 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: a/obj/d_a_obj_ss_base
//
#include "a/obj/d_a_obj_ss_base.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daObj_SSBase_c {
/* 8015E3F8 */ daObj_SSBase_c();
/* 8015E450 */ ~daObj_SSBase_c();
/* 8015E4B0 */ void getProcessID();
/* 8015E4C8 */ void setSoldOut();
};
//
// Forward References:
//
extern "C" void __ct__14daObj_SSBase_cFv();
extern "C" void __dt__14daObj_SSBase_cFv();
extern "C" void getProcessID__14daObj_SSBase_cFv();
extern "C" void setSoldOut__14daObj_SSBase_cFv();
//
// External References:
//
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void __dl__FPv();
//
// Declarations:
//
/* ############################################################################################## */
/* 803BA088-803BA0A0 0171A8 0014+04 2/2 0/0 0/0 .data __vt__14daObj_SSBase_c */
SECTION_DATA extern void* __vt__14daObj_SSBase_c[5 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__14daObj_SSBase_cFv,
(void*)setSoldOut__14daObj_SSBase_cFv,
(void*)getProcessID__14daObj_SSBase_cFv,
/* padding */
NULL,
};
/* 8015E3F8-8015E450 158D38 0058+00 0/0 0/0 3/3 .text __ct__14daObj_SSBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daObj_SSBase_c::daObj_SSBase_c() {
nofralloc
#include "asm/a/obj/d_a_obj_ss_base/__ct__14daObj_SSBase_cFv.s"
}
#pragma pop
/* 8015E450-8015E4B0 158D90 0060+00 1/0 0/0 3/3 .text __dt__14daObj_SSBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm daObj_SSBase_c::~daObj_SSBase_c() {
nofralloc
#include "asm/a/obj/d_a_obj_ss_base/__dt__14daObj_SSBase_cFv.s"
}
#pragma pop
/* 8015E4B0-8015E4C8 158DF0 0018+00 1/0 0/0 2/0 .text getProcessID__14daObj_SSBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObj_SSBase_c::getProcessID() {
nofralloc
#include "asm/a/obj/d_a_obj_ss_base/getProcessID__14daObj_SSBase_cFv.s"
}
#pragma pop
/* 8015E4C8-8015E4CC 158E08 0004+00 1/0 0/0 0/0 .text setSoldOut__14daObj_SSBase_cFv */
void daObj_SSBase_c::setSoldOut() {
/* empty function */
}
+1377 -373
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -21,11 +21,11 @@ u32 daItem_c::startCtrl() {
}
u32 daItem_c::startControl() {
unk2378 = 1;
mStatus = 1;
return 1;
}
u32 daItem_c::endControl() {
unk2378 = 0;
mStatus = 0;
return 1;
}
+45 -45
View File
@@ -64,38 +64,38 @@ int daItemBase_c::CreateItemHeap(char const* arcName, s16 bmdName, s16 btkName,
if (mpModel == NULL) {
return 0;
} else {
field_0x578 = NULL;
mpBtkAnm = NULL;
if (btkName > 0) {
J3DAnmTextureSRTKey* pbtk =
(J3DAnmTextureSRTKey*)dComIfG_getObjectRes(arcName, btkName);
field_0x578 = new mDoExt_btkAnm();
mpBtkAnm = new mDoExt_btkAnm();
if (field_0x578 == NULL || !field_0x578->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
if (mpBtkAnm == NULL || !mpBtkAnm->init(modelData, pbtk, 1, 2, 1.0f, 0, -1)) {
return 0;
}
}
field_0x57c = NULL;
mpBpkAnm = NULL;
if (bpkName > 0) {
J3DAnmColor* pbpk = (J3DAnmColor*)dComIfG_getObjectRes(arcName, bpkName);
field_0x57c = new mDoExt_bpkAnm();
mpBpkAnm = new mDoExt_bpkAnm();
if (field_0x57c == NULL || !field_0x57c->init(modelData, pbpk, 1, 2, 1.0f, 0, -1)) {
if (mpBpkAnm == NULL || !mpBpkAnm->init(modelData, pbpk, 1, 2, 1.0f, 0, -1)) {
return 0;
}
}
field_0x584 = NULL;
mpBckAnm = NULL;
if (bckName > 0) {
J3DAnmTransform* pbck = (J3DAnmTransform*)dComIfG_getObjectRes(arcName, bckName);
field_0x584 = new mDoExt_bckAnm();
mpBckAnm = new mDoExt_bckAnm();
if (field_0x584 == NULL || !field_0x584->init(pbck, 1, 2, 1.0f, 0, -1, false)) {
if (mpBckAnm == NULL || !mpBckAnm->init(pbck, 1, 2, 1.0f, 0, -1, false)) {
return 0;
}
}
field_0x580 = NULL;
mpBrkAnm = NULL;
if (brkName > 0) {
J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, brkName);
s8 tevFrm = getTevFrm();
@@ -104,19 +104,19 @@ int daItemBase_c::CreateItemHeap(char const* arcName, s16 bmdName, s16 btkName,
tmp = 0;
}
field_0x580 = new mDoExt_brkAnm();
mpBrkAnm = new mDoExt_brkAnm();
if (field_0x580 == NULL || !field_0x580->init(modelData, pbrk, tmp, 2, 1.0f, 0, -1)) {
if (mpBrkAnm == NULL || !mpBrkAnm->init(modelData, pbrk, tmp, 2, 1.0f, 0, -1)) {
return 0;
}
}
field_0x588 = NULL;
mpBtpAnm = NULL;
if (btpName > 0) {
J3DAnmTexPattern* pbtp = (J3DAnmTexPattern*)dComIfG_getObjectRes(arcName, btpName);
field_0x588 = new mDoExt_btpAnm();
mpBtpAnm = new mDoExt_btpAnm();
if (field_0x588 == NULL || !field_0x588->init(modelData, pbtp, 1, 2, 1.0f, 0, -1)) {
if (mpBtpAnm == NULL || !mpBtpAnm->init(modelData, pbtp, 1, 2, 1.0f, 0, -1)) {
return 0;
}
}
@@ -176,8 +176,8 @@ void daItemBase_c::setShadow() {
if (!chkFlag(0x10)) {
if (getShadowSize() != 0.0f) {
dComIfGd_setSimpleShadow(&mCurrent.mPosition, field_0x58c.GetGroundH(), scale,
field_0x58c.m_gnd, 0, 1.0f,
dComIfGd_setSimpleShadow(&mCurrent.mPosition, mAcch.GetGroundH(), scale,
mAcch.m_gnd, 0, 1.0f,
dDlst_shadowControl_c::getSimpleTex());
}
} else {
@@ -188,70 +188,70 @@ void daItemBase_c::setShadow() {
field_0x91c =
dComIfGd_setShadow(field_0x91c, 3, mpModel, &mCurrent.mPosition, shadowSize, 0.0f,
mCurrent.mPosition.y, field_0x58c.GetGroundH(), field_0x58c.m_gnd,
mCurrent.mPosition.y, mAcch.GetGroundH(), mAcch.m_gnd,
&mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
}
}
/* 80144EDC-8014503C 13F81C 0160+00 1/0 1/0 9/0 .text animEntry__12daItemBase_cFv */
void daItemBase_c::animEntry() {
if (field_0x580 != NULL) {
if (mpBrkAnm != NULL) {
s8 tevFrm = getTevFrm();
if (tevFrm != -1) {
field_0x580->entry(mpModel->getModelData(), tevFrm);
mpBrkAnm->entry(mpModel->getModelData(), tevFrm);
} else {
field_0x580->entry(mpModel->getModelData());
mpBrkAnm->entry(mpModel->getModelData());
}
}
if (field_0x588 != NULL) {
if (mpBtpAnm != NULL) {
s8 btpFrm = getBtpFrm();
if (btpFrm != -1) {
field_0x588->entry(mpModel->getModelData(), btpFrm);
mpBtpAnm->entry(mpModel->getModelData(), btpFrm);
} else {
field_0x588->entry(mpModel->getModelData());
mpBtpAnm->entry(mpModel->getModelData());
}
}
if (field_0x578 != NULL) {
field_0x578->entry(mpModel->getModelData());
if (mpBtkAnm != NULL) {
mpBtkAnm->entry(mpModel->getModelData());
}
if (field_0x584 != NULL) {
field_0x584->entry(mpModel->getModelData());
if (mpBckAnm != NULL) {
mpBckAnm->entry(mpModel->getModelData());
}
if (field_0x57c != NULL) {
field_0x57c->entry(mpModel->getModelData());
if (mpBpkAnm != NULL) {
mpBpkAnm->entry(mpModel->getModelData());
}
}
/* 8014503C-80145144 13F97C 0108+00 0/0 2/2 4/4 .text animPlay__12daItemBase_cFffffff */
void daItemBase_c::animPlay(f32 btkSpeed, f32 bpkSpeed, f32 bckSpeed, f32 param_3, f32 brkSpeed,
f32 btpSpeed) {
if (field_0x580 != NULL && getTevFrm() == -1) {
field_0x580->setPlaySpeed(brkSpeed);
field_0x580->play();
if (mpBrkAnm != NULL && getTevFrm() == -1) {
mpBrkAnm->setPlaySpeed(brkSpeed);
mpBrkAnm->play();
}
if (field_0x588 != NULL && getBtpFrm() == -1) {
field_0x588->setPlaySpeed(btpSpeed);
field_0x588->play();
if (mpBtpAnm != NULL && getBtpFrm() == -1) {
mpBtpAnm->setPlaySpeed(btpSpeed);
mpBtpAnm->play();
}
if (field_0x578 != NULL) {
field_0x578->setPlaySpeed(btkSpeed);
field_0x578->play();
if (mpBtkAnm != NULL) {
mpBtkAnm->setPlaySpeed(btkSpeed);
mpBtkAnm->play();
}
if (field_0x57c != NULL) {
field_0x57c->setPlaySpeed(bpkSpeed);
field_0x57c->play();
if (mpBpkAnm != NULL) {
mpBpkAnm->setPlaySpeed(bpkSpeed);
mpBpkAnm->play();
}
if (field_0x584 != NULL) {
field_0x584->setPlaySpeed(bckSpeed);
field_0x584->play();
if (mpBckAnm != NULL) {
mpBckAnm->setPlaySpeed(bckSpeed);
mpBckAnm->play();
}
}
+2 -1
View File
@@ -68,5 +68,6 @@ void CheckFieldItemCreateHeap(fopAc_ac_c* actor) {
/* 803792B0-803792E8 005910 0038+00 0/0 1/1 0/0 .rodata m_data__12daItemBase_c */
SECTION_RODATA daItemBase_data const daItemBase_c::m_data = {
-4.5f, 0.62f, 45.0f, 10.0f, 6.0f, 1, 240, 60, 4000,
120, -4.0f, 3.5f, 1100, 3000, 23.0f, -6.0f, 13, 10};
120, -4.0f, 3.5f, 1100, 3000, 23.0f, -6.0f, 13, 10,
};
COMPILER_STRIP_GATE(0x803792B0, &daItemBase_c::m_data);
@@ -3,7 +3,7 @@
// Translation Unit: a/npc/d_a_npc_cd
//
#include "a/npc/d_a_npc_cd.h"
#include "d/a/d_a_npc_cd.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -3,7 +3,7 @@
// Translation Unit: a/npc/d_a_npc_cd2
//
#include "a/npc/d_a_npc_cd2.h"
#include "d/a/d_a_npc_cd2.h"
#include "dol2asm.h"
#include "dolphin/types.h"
File diff suppressed because it is too large Load Diff
+33
View File
@@ -0,0 +1,33 @@
//
// Generated By: dol2asm
// Translation Unit: a/obj/d_a_obj_ss_base
//
#include "d/a/d_a_obj_ss_base.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Declarations:
//
/* 8015E3F8-8015E450 158D38 0058+00 0/0 0/0 3/3 .text __ct__14daObj_SSBase_cFv */
daObj_SSBase_c::daObj_SSBase_c() {
mpParentPtr = NULL;
field_0x570 = 0;
mFlowNodeNum = 0xFFFF;
mValueNum = 0;
}
/* 8015E450-8015E4B0 158D90 0060+00 1/0 0/0 3/3 .text __dt__14daObj_SSBase_cFv */
daObj_SSBase_c::~daObj_SSBase_c() {}
/* 8015E4B0-8015E4C8 158DF0 0018+00 1/0 0/0 2/0 .text getProcessID__14daObj_SSBase_cFv */
u32 daObj_SSBase_c::getProcessID() {
return fopAcM_GetID(this);
}
/* 8015E4C8-8015E4CC 158E08 0004+00 1/0 0/0 0/0 .text setSoldOut__14daObj_SSBase_cFv */
void daObj_SSBase_c::setSoldOut() {
/* empty function */
}
+1 -11
View File
@@ -14,16 +14,6 @@
#include "f_op/f_op_actor_mng.h"
#include "rel/d/a/d_a_boomerang/d_a_boomerang.h"
//
// Types:
//
struct mDoMtx_stack_c {
/* 8000CE38 */ void scaleM(f32, f32, f32);
static u8 now[48];
};
//
// Forward References:
//
@@ -422,7 +412,7 @@ void daPy_anmHeap_c::initData() {
/* 8015EDC4-8015EE00 159704 003C+00 0/0 1/1 1/1 .text mallocBuffer__14daPy_anmHeap_cFv */
void* daPy_anmHeap_c::mallocBuffer() {
mBuffer = new (0x20) char[mBufferSize];
mBuffer = new (0x20) u8[mBufferSize];
return mBuffer;
}
+4 -4
View File
@@ -481,7 +481,7 @@ s32 dBgS::GetPolyColor(cBgS_PolyInfo const& poly) {
}
/* 80074C6C-80074CBC 06F5AC 0050+00 0/0 1/1 2/2 .text GetHorseNoEntry__4dBgSFRC13cBgS_PolyInfo */
bool dBgS::GetHorseNoEntry(cBgS_PolyInfo const& poly) {
BOOL dBgS::GetHorseNoEntry(cBgS_PolyInfo const& poly) {
int bg_index = poly.GetBgIndex();
if (m_chk_element[bg_index].ChkUsed()) {
return m_chk_element[bg_index].m_bgw_base_ptr->GetHorseNoEntry(poly);
@@ -501,13 +501,13 @@ bool dBgS::GetSpecialCode(cBgS_PolyInfo const& poly) {
}
/* 80074D0C-80074D5C 06F64C 0050+00 0/0 2/2 2/2 .text GetMagnetCode__4dBgSFRC13cBgS_PolyInfo */
bool dBgS::GetMagnetCode(cBgS_PolyInfo const& poly) {
int dBgS::GetMagnetCode(cBgS_PolyInfo const& poly) {
int bg_index = poly.GetBgIndex();
if (m_chk_element[bg_index].ChkUsed()) {
return m_chk_element[bg_index].m_bgw_base_ptr->GetMagnetCode(poly);
}
return false;
return 0;
}
/* 80074D5C-80074DAC 06F69C 0050+00 0/0 5/5 0/0 .text GetMonkeyBarsCode__4dBgSFRC13cBgS_PolyInfo
@@ -543,7 +543,7 @@ s32 dBgS::GetWallCode(cBgS_PolyInfo const& poly) {
}
/* 80074E50-80074EA0 06F790 0050+00 0/0 29/29 28/28 .text GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo */
bool dBgS::GetPolyAtt0(cBgS_PolyInfo const& poly) {
BOOL dBgS::GetPolyAtt0(cBgS_PolyInfo const& poly) {
int bg_index = poly.GetBgIndex();
if (m_chk_element[bg_index].ChkUsed()) {
return m_chk_element[bg_index].m_bgw_base_ptr->GetPolyAtt0(poly);
+3 -3
View File
@@ -985,7 +985,7 @@ asm s32 dBgW::GetPolyColor(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dBgW::GetHorseNoEntry(cBgS_PolyInfo const& param_0) {
asm BOOL dBgW::GetHorseNoEntry(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w/GetHorseNoEntry__4dBgWFRC13cBgS_PolyInfo.s"
}
@@ -1015,7 +1015,7 @@ asm void dBgW::GetSpecialCode(int param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dBgW::GetMagnetCode(cBgS_PolyInfo const& param_0) {
asm int dBgW::GetMagnetCode(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w/GetMagnetCode__4dBgWFRC13cBgS_PolyInfo.s"
}
@@ -1167,7 +1167,7 @@ asm s32 dBgW::GetWallCode(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool dBgW::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
asm BOOL dBgW::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w/GetPolyAtt0__4dBgWFRC13cBgS_PolyInfo.s"
}
+2 -2
View File
@@ -625,7 +625,7 @@ asm void dBgWKCol::GetSpecialCode(int param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dBgWKCol::GetMagnetCode(cBgS_PolyInfo const& param_0) {
asm int dBgWKCol::GetMagnetCode(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w_kcol/GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo.s"
}
@@ -767,7 +767,7 @@ asm s32 dBgWKCol::GetWallCode(cBgS_PolyInfo const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
asm BOOL dBgWKCol::GetPolyAtt0(cBgS_PolyInfo const& param_0) {
nofralloc
#include "asm/d/bg/d_bg_w_kcol/GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo.s"
}
-10
View File
@@ -8,16 +8,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct mDoMtx_stack_c {
/* 8000CF0C */ void ZXYrotS(csXyz const&);
static u8 now[48];
};
//
// Forward References:
//
+2 -7
View File
@@ -11,21 +11,16 @@
// Forward References:
//
extern "C" extern u8 g_dComIfAc_gameInfo[8];
extern "C" extern u8 g_dComIfGoat_gameInfo[4 + 4 /* padding */];
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 80450610-80450618 000090 0008+00 0/0 1/1 0/0 .sdata g_dComIfAc_gameInfo */
SECTION_SDATA extern u8 g_dComIfAc_gameInfo[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
SECTION_SDATA extern dComIfAc_info_c g_dComIfAc_gameInfo = {
0, 0,
};
/* 80450618-80450620 000098 0004+04 0/0 2/2 7/7 .sdata g_dComIfGoat_gameInfo */
+11 -33
View File
@@ -1479,21 +1479,10 @@ stage_arrow_class* dComIfGp_getRoomArrow(int roomNo) {
return status->mRoomDt.getArrow();
}
/* ############################################################################################## */
/* 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_80379089 = "";
#pragma pop
/* 8002D2FC-8002D554 027C3C 0258+00 2/2 7/7 4/4 .text dComIfGp_setNextStage__FPCcsScScfUliScsii */
// 1 out of order instruction, small regalloc
#ifdef NONMATCHING
void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f32 lastSpeed,
u32 lastMode, int param_6, s8 wipe, s16 lastAngle, int param_9,
int param_10) {
u32 mode = lastMode;
u32 lastMode, int setPoint, s8 wipe, s16 lastAngle, int param_9,
int wipeSpeedT) {
if (layer >= 15) {
layer = -1;
}
@@ -1508,6 +1497,7 @@ void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f3
level);
}
// Set Key Num to 2 if loading Wagon Escort after King Bulblin 2
if (!strcmp(stage, "F_SP121") && roomNo == 13 && (point == 99 || point == 98) && layer == 2) {
dComIfGs_setKeyNum(6, 2);
} else {
@@ -1515,16 +1505,16 @@ void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f3
}
if (daAlink_getAlinkActorClass() != NULL) {
daAlink_getAlinkActorClass()->setLastSceneMode(&mode);
daAlink_getAlinkActorClass()->setLastSceneMode(&lastMode);
}
if (strcmp(dMeter2Info_getSaveStageName(), "") &&
strcmp(stage, dMeter2Info_getSaveStageName())) {
char* saveName = (char*)dMeter2Info_getSaveStageName();
if (strcmp(saveName, "") && strcmp(stage, saveName)) {
dMeter2Info_setSaveStageName("");
}
u8 wipe_speed;
switch (param_10) {
switch (wipeSpeedT) {
case 0:
wipe_speed = 26;
break;
@@ -1543,23 +1533,11 @@ void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f3
}
g_dComIfG_gameInfo.play.setNextStage(stage, roomNo, point, layer, wipe, wipe_speed);
g_dComIfG_gameInfo.info.getRestart().setLastSceneInfo(lastSpeed, mode, lastAngle);
if (param_6 != 0) {
g_dComIfG_gameInfo.info.getRestart().setLastSceneInfo(lastSpeed, lastMode, lastAngle);
if (setPoint) {
dComIfGs_setStartPoint(point);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer, f32 lastSpeed,
u32 lastMode, int param_6, s8 wipe, s16 lastAngle, int param_9,
int param_10) {
nofralloc
#include "asm/d/com/d_com_inf_game/dComIfGp_setNextStage__FPCcsScScfUliScsii.s"
}
#pragma pop
#endif
void dComIfGp_setNextStage(char const* stage, s16 point, s8 roomNo, s8 layer) {
dComIfGp_setNextStage(stage, point, roomNo, layer, 0.0f, 0, 1, 0, 0, 1, 0);
@@ -2433,8 +2411,8 @@ int dComIfG_TimerDeleteRequest(int mode) {
}
/* 8002F810-8002F9F0 02A150 01E0+00 0/0 1/1 0/0 .text dComIfGs_Wolf_Change_Check__Fv */
u8 dComIfGs_Wolf_Change_Check() {
u8 is_wolf = false;
BOOL dComIfGs_Wolf_Change_Check() {
BOOL is_wolf = false;
// Transforming Unlocked
if (dComIfGs_isEventBit(0x0D04)) {
+61 -140
View File
@@ -6,6 +6,9 @@
#include "d/com/d_com_static.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
#include "d/com/d_com_inf_game.h"
//
// Types:
@@ -27,17 +30,6 @@ struct daTagMist_c {
/* 80031CF0 */ void getPlayerNo();
};
struct cBgS_PolyInfo {};
struct daTagMagne_c {
/* 80031B50 */ void checkMagnetCode(cBgS_PolyInfo&);
/* 80031BF4 */ void checkMagneA();
/* 80031C48 */ void checkMagneB();
/* 80031C9C */ void checkMagneC();
static u8 mTagMagne[4];
};
struct daSetBgObj_c {
/* 80031870 */ void getArcName(fopAc_ac_c*);
};
@@ -48,23 +40,6 @@ struct daObjMovebox {
};
};
struct daObjCarry_c {
/* 80031CF8 */ void clrSaveFlag();
/* 80031D04 */ void setSaveFlag();
/* 80031D10 */ void chkSaveFlag();
/* 80031D24 */ void getPos(int);
/* 80031D38 */ void savePos(int, cXyz);
/* 80031D64 */ void onSttsFlag(int, u8);
/* 80031D78 */ void offSttsFlag(int, u8);
/* 80031D8C */ void chkSttsFlag(int, u8);
/* 80031DAC */ void setRoomNo(int, s8);
/* 80031DB8 */ void getRoomNo(int);
static u8 mPos[60];
static u8 mSttsFlag[5 + 3 /* padding */];
static u8 mRoomNo[5 + 3 /* padding */];
};
struct daMirror_c {
/* 8003194C */ void entry(J3DModel*);
/* 80031990 */ void remove();
@@ -103,18 +78,6 @@ struct daDsh_c {
static f32 CLOSE_BOUND_RATIO;
};
struct dSv_info_c {
/* 80035360 */ void isSwitch(int, int) const;
};
struct dSv_event_c {
/* 8003498C */ void onEventBit(u16);
/* 800349A4 */ void offEventBit(u16);
/* 800349BC */ void isEventBit(u16) const;
/* 800349E0 */ void setEventReg(u16, u8);
/* 80034A04 */ void getEventReg(u16) const;
};
struct dGrass_packet_c {
static u8 m_deleteRoom[12];
};
@@ -127,14 +90,6 @@ struct dDemo_c {
static u8 m_status[4];
};
struct dComIfG_play_c {
/* 8002C97C */ void getLayerNo(int);
};
struct dBgS {
/* 80074D0C */ void GetMagnetCode(cBgS_PolyInfo const&);
};
//
// Forward References:
//
@@ -248,10 +203,7 @@ extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void sprintf();
extern "C" void strcmp();
extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 m_status__7dDemo_c[4];
//
@@ -709,55 +661,64 @@ asm void daMP_c::daMP_c_THPPlayerPause() {
/* ############################################################################################## */
/* 80450DBC-80450DC0 0002BC 0004+00 1/1 0/0 3/3 .sbss mTagMagne__12daTagMagne_c */
u8 daTagMagne_c::mTagMagne[4];
daTagMagne_c* daTagMagne_c::mTagMagne;
/* 80031B50-80031BF4 02C490 00A4+00 0/0 4/4 0/0 .text
* checkMagnetCode__12daTagMagne_cFR13cBgS_PolyInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagMagne_c::checkMagnetCode(cBgS_PolyInfo& param_0) {
nofralloc
#include "asm/d/com/d_com_static/checkMagnetCode__12daTagMagne_cFR13cBgS_PolyInfo.s"
int daTagMagne_c::checkMagnetCode(cBgS_PolyInfo& poly) {
if (mTagMagne == NULL) {
return 0;
}
int magCode = dComIfG_Bgsp().GetMagnetCode(poly);
if ((magCode == 1 && mTagMagne->checkMagneA()) ||
(magCode == 2 && mTagMagne->checkMagneB()) ||
(magCode == 3 && mTagMagne->checkMagneC())) {
return 1;
}
return 0;
}
inline bool fopAcM_isSwitch(const fopAc_ac_c* item, int sw) {
return dComIfGs_isSwitch(sw, fopAcM_GetHomeRoomNo(item));
}
#pragma pop
/* 80031BF4-80031C48 02C534 0054+00 1/1 0/0 0/0 .text checkMagneA__12daTagMagne_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagMagne_c::checkMagneA() {
nofralloc
#include "asm/d/com/d_com_static/checkMagneA__12daTagMagne_cFv.s"
int daTagMagne_c::checkMagneA() {
if (mSwNo1 == 0xFF || fopAcM_isSwitch(this, mSwNo1)) {
return 1;
}
return 0;
}
#pragma pop
/* 80031C48-80031C9C 02C588 0054+00 1/1 0/0 0/0 .text checkMagneB__12daTagMagne_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagMagne_c::checkMagneB() {
nofralloc
#include "asm/d/com/d_com_static/checkMagneB__12daTagMagne_cFv.s"
int daTagMagne_c::checkMagneB() {
if (mSwNo2 == 0xFF || fopAcM_isSwitch(this, mSwNo2)) {
return 1;
}
return 0;
}
#pragma pop
/* 80031C9C-80031CF0 02C5DC 0054+00 1/1 0/0 0/0 .text checkMagneC__12daTagMagne_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagMagne_c::checkMagneC() {
nofralloc
#include "asm/d/com/d_com_static/checkMagneC__12daTagMagne_cFv.s"
int daTagMagne_c::checkMagneC() {
if (mSwNo3 == 0xFF || fopAcM_isSwitch(this, mSwNo3)) {
return 1;
}
return 0;
}
#pragma pop
/* ############################################################################################## */
/* 80450DC0-80450DC4 -00001 0004+00 4/4 0/0 2/2 .sbss None */
/* 80450DC0 0001+00 data_80450DC0 None */
extern u8 struct_80450DC0;
u8 struct_80450DC0;
/* 80450DC1 0003+00 data_80450DC1 None */
extern u8 struct_80450DC0[4];
u8 struct_80450DC0[4];
bool daObjCarry_c::mSaveFlag;
/* 80031CF0-80031CF8 02C630 0008+00 0/0 1/1 0/0 .text getPlayerNo__11daTagMist_cFv */
#pragma push
@@ -770,34 +731,19 @@ asm void daTagMist_c::getPlayerNo() {
#pragma pop
/* 80031CF8-80031D04 02C638 000C+00 0/0 1/1 0/0 .text clrSaveFlag__12daObjCarry_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::clrSaveFlag() {
nofralloc
#include "asm/d/com/d_com_static/clrSaveFlag__12daObjCarry_cFv.s"
void daObjCarry_c::clrSaveFlag() {
mSaveFlag = false;
}
#pragma pop
/* 80031D04-80031D10 02C644 000C+00 0/0 1/1 0/0 .text setSaveFlag__12daObjCarry_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::setSaveFlag() {
nofralloc
#include "asm/d/com/d_com_static/setSaveFlag__12daObjCarry_cFv.s"
void daObjCarry_c::setSaveFlag() {
mSaveFlag = true;
}
#pragma pop
/* 80031D10-80031D24 02C650 0014+00 0/0 0/0 1/1 .text chkSaveFlag__12daObjCarry_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::chkSaveFlag() {
nofralloc
#include "asm/d/com/d_com_static/chkSaveFlag__12daObjCarry_cFv.s"
bool daObjCarry_c::chkSaveFlag() {
return mSaveFlag == true;
}
#pragma pop
/* ############################################################################################## */
/* 804245A0-804245AC 0512C0 000C+00 0/1 0/0 0/0 .bss @4480 */
@@ -831,61 +777,36 @@ asm void daObjCarry_c::savePos(int param_0, cXyz param_1) {
/* ############################################################################################## */
/* 80450DC4-80450DCC 0002C4 0005+03 3/3 0/0 0/0 .sbss mSttsFlag__12daObjCarry_c */
u8 daObjCarry_c::mSttsFlag[5 + 3 /* padding */];
u8 daObjCarry_c::mSttsFlag[5];
/* 80031D64-80031D78 02C6A4 0014+00 0/0 0/0 1/1 .text onSttsFlag__12daObjCarry_cFiUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::onSttsFlag(int param_0, u8 param_1) {
nofralloc
#include "asm/d/com/d_com_static/onSttsFlag__12daObjCarry_cFiUc.s"
void daObjCarry_c::onSttsFlag(int idx, u8 flag) {
mSttsFlag[idx] |= flag;
}
#pragma pop
/* 80031D78-80031D8C 02C6B8 0014+00 0/0 0/0 1/1 .text offSttsFlag__12daObjCarry_cFiUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::offSttsFlag(int param_0, u8 param_1) {
nofralloc
#include "asm/d/com/d_com_static/offSttsFlag__12daObjCarry_cFiUc.s"
void daObjCarry_c::offSttsFlag(int idx, u8 flag) {
mSttsFlag[idx] &= ~flag;
}
#pragma pop
/* 80031D8C-80031DAC 02C6CC 0020+00 0/0 0/0 1/1 .text chkSttsFlag__12daObjCarry_cFiUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::chkSttsFlag(int param_0, u8 param_1) {
nofralloc
#include "asm/d/com/d_com_static/chkSttsFlag__12daObjCarry_cFiUc.s"
u8 daObjCarry_c::chkSttsFlag(int idx, u8 flag) {
return (u8)(mSttsFlag[idx] & flag) ? 1 : 0;
}
#pragma pop
/* ############################################################################################## */
/* 80450DCC-80450DD4 0002CC 0005+03 2/2 0/0 0/0 .sbss mRoomNo__12daObjCarry_c */
u8 daObjCarry_c::mRoomNo[5 + 3 /* padding */];
s8 daObjCarry_c::mRoomNo[5];
/* 80031DAC-80031DB8 02C6EC 000C+00 0/0 0/0 2/2 .text setRoomNo__12daObjCarry_cFiSc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::setRoomNo(int param_0, s8 param_1) {
nofralloc
#include "asm/d/com/d_com_static/setRoomNo__12daObjCarry_cFiSc.s"
void daObjCarry_c::setRoomNo(int idx, s8 roomNo) {
mRoomNo[idx] = roomNo;
}
#pragma pop
/* 80031DB8-80031DC4 02C6F8 000C+00 0/0 0/0 1/1 .text getRoomNo__12daObjCarry_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daObjCarry_c::getRoomNo(int param_0) {
nofralloc
#include "asm/d/com/d_com_static/getRoomNo__12daObjCarry_cFi.s"
s8 daObjCarry_c::getRoomNo(int idx) {
return mRoomNo[idx];
}
#pragma pop
/* 80031DC4-80031EAC 02C704 00E8+00 0/0 1/0 0/0 .text __sinit_d_com_static_cpp */
#pragma push
-1
View File
@@ -145,7 +145,6 @@ extern "C" void __ct__7cSGlobeFRC4cXyz();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void bgmNowBattle__8Z2SeqMgrFf();
extern "C" void __dl__FPv();
extern "C" void DCStoreRangeNoSync();
extern "C" void __register_global_object();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
+1 -1
View File
@@ -3793,7 +3793,7 @@ asm void dCam_getControledAngleY(camera_class* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCam_getCamera() {
asm dCamera_c* dCam_getCamera() {
nofralloc
#include "asm/d/d_camera/dCam_getCamera__Fv.s"
}
+2 -41
View File
@@ -168,19 +168,6 @@ struct dDemo_particle_c {
/* 80039F9C */ ~dDemo_particle_c();
};
struct dDemo_object_c {
/* 80038F54 */ dDemo_object_c();
/* 80038F70 */ ~dDemo_object_c();
/* 80038FC0 */ void appendActor(fopAc_ac_c*);
/* 80039088 */ void getActor(u8);
/* 800390AC */ void createCamera();
/* 80039128 */ void getActiveCamera();
/* 8003913C */ void createAmbient();
/* 800391B8 */ void appendLight();
/* 80039258 */ void createFog();
/* 800392D4 */ void remove();
};
struct dDemo_light_c {
/* 80038E20 */ void JSGSetLightType(JStage::TELight);
/* 80038E34 */ void JSGSetPosition(Vec const&);
@@ -226,32 +213,6 @@ struct dDemo_ambient_c {
/* 800394C8 */ ~dDemo_ambient_c();
};
struct dDemo_actor_c {
/* 80038020 */ dDemo_actor_c();
/* 80038098 */ ~dDemo_actor_c();
/* 80038128 */ void getActor();
/* 8003815C */ void setActor(fopAc_ac_c*);
/* 8003819C */ void getPrm_Morf();
/* 80038338 */ void getDemoIDData(int*, int*, int*, u16*, u8*);
/* 800387EC */ void JSGSetData(u32, void const*, u32);
/* 80038920 */ void JSGSetTranslation(Vec const&);
/* 80038980 */ void JSGSetScaling(Vec const&);
/* 800389A8 */ void JSGSetRotation(Vec const&);
/* 80038A0C */ void JSGSetShape(u32);
/* 80038A20 */ void JSGSetAnimation(u32);
/* 80038A40 */ void JSGSetAnimationFrame(f32);
/* 80038A54 */ void JSGSetAnimationTransition(f32);
/* 80038A68 */ void JSGSetTextureAnimation(u32);
/* 80038A7C */ void JSGSetTextureAnimationFrame(f32);
/* 8003A05C */ void JSGFindNodeID(char const*) const;
/* 8003A088 */ void JSGGetNodeTransformation(u32, f32 (*)[4]) const;
/* 8003A0C8 */ void JSGGetAnimationFrameMax() const;
/* 8003A0D0 */ void JSGGetTextureAnimationFrameMax() const;
/* 8003A0D8 */ void JSGGetTranslation(Vec*) const;
/* 8003A0F4 */ void JSGGetScaling(Vec*) const;
/* 8003A110 */ void JSGGetRotation(Vec*) const;
};
struct JUTNameTab {
/* 802DEA58 */ void getIndex(char const*) const;
};
@@ -966,7 +927,7 @@ u8 dDemo_c::m_factory[4];
u8 dDemo_c::m_mesgControl[4];
/* 80450E20-80450E24 000320 0004+00 5/5 9/9 7/7 .sbss m_object__7dDemo_c */
u8 dDemo_c::m_object[4];
dDemo_object_c* dDemo_c::m_object;
/* 80450E24-80450E28 000324 0004+00 4/4 0/0 0/0 .sbss m_data__7dDemo_c */
u8 dDemo_c::m_data[4];
@@ -1529,7 +1490,7 @@ asm void dDemo_object_c::appendActor(fopAc_ac_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dDemo_object_c::getActor(u8 param_0) {
asm dDemo_actor_c* dDemo_object_c::getActor(u8 param_0) {
nofralloc
#include "asm/d/d_demo/getActor__14dDemo_object_cFUc.s"
}
+53 -32
View File
@@ -2597,51 +2597,72 @@ u8 check_itemno(int i_itemId) {
/* 8009B940-8009BBD8 096280 0298+00 11/11 0/0 0/0 .text addBombCount__FUcUc */
#ifdef NONMATCHING
static u8 addBombCount(u8 param_0, u8 param_1) {
u8 count[4];
u8 count2[3];
int addBombCount(u8 i_bombType, u8 i_addNum) {
u8 bombType[3];
s32 bombNum[3];
s32 var_r22;
s32 bombIdx;
int uvar6;
for (u8 i = 0; i < 3; i++) {
bombType[i] = dComIfGs_getItem(i + SLOT_15, false);
for (int i = 0; i < 3; i++) {
u8 tmp = dComIfGs_getItem(i + SLOT_15, false);
count[i] = tmp;
if (count[i] == 0x50) {
count2[i] = 0;
if (bombType[i] == BOMB_BAG_LV1) {
bombNum[i] = 0;
} else if (bombType[i] == i_bombType) {
bombNum[i] = dComIfGs_getBombNum(i);
} else {
if (count[i] == param_0) {
count2[i] = dComIfGs_getBombNum(i);
bombNum[i] = -1;
}
}
for (u8 i = 0; i < 3; i++) {
bombIdx = -1;
var_r22 = -1;
for (u8 j = 0; j < 3; j++) {
if (bombNum[j] == 0) {
bombIdx = j;
var_r22 = 0;
}
}
for (u8 k = 0; k < 3; k++) {
if (bombNum[k] > 0 && bombNum[k] > var_r22 && bombNum[k] != dComIfGs_getBombMax(bombType[k])) {
bombIdx = k;
var_r22 = bombNum[k];
}
}
if (bombIdx == -1) { // issue here?
return i_addNum;
} else if (var_r22 == 0) {
if (dComIfGs_getBombMax(i_bombType) >= i_addNum) {
dComIfGs_setEmptyBombBagItemIn(i_bombType, i_addNum, true);
return 0;
} else {
count2[i] = -1;
dComIfGs_setEmptyBombBagItemIn(i_bombType, i_addNum, true);
i_addNum -= (int)dComIfGs_getBombMax(i_bombType);
}
} else {
if (dComIfGs_getBombMax(bombType[bombIdx]) >= var_r22 + i_addNum) {
dComIfGp_setItemBombNumCount(bombIdx, i_addNum);
return 0;
} else {
dComIfGp_setItemBombNumCount(bombIdx, i_addNum);
i_addNum -= (int)dComIfGs_getBombMax(bombType[bombIdx]) - var_r22;
}
}
bombNum[bombIdx] = dComIfGs_getBombMax(bombType[bombIdx]);
}
for (int i = 0; i < 3; i++) {
uvar6 = -1;
for (int j = 0; j < 3; j++) {
if (count2[j] == 0) {
uvar6 = 0;
}
}
for (int k = 0; k < 3; k++) {
if (count2[k] > 0 && uvar6 < count2[k] && count2[k] != dComIfGs_getBombMax(count2[k])) {
uvar6 = count2[k];
}
}
if ()
}
return param_1;
return i_addNum;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void addBombCount(u8 param_0, u8 param_1) {
asm int addBombCount(u8 param_0, u8 param_1) {
nofralloc
#include "asm/d/d_item/addBombCount__FUcUc.s"
}
+104 -38
View File
@@ -4,6 +4,7 @@
//
#include "d/d_lib.h"
#include "SSystem/SComponent/c_m3d.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "f_op/f_op_actor.h"
@@ -73,7 +74,6 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */];
//
// Declarations:
@@ -101,19 +101,19 @@ SECTION_DATA extern void* __vt__9STControl[4] = {
(void*)getAngleStick__9STControlFv,
};
STControl::STControl(s16 param_0, s16 param_1, s16 param_2, s16 param_3, f32 param_4, f32 param_5,
STControl::STControl(s16 delayY, s16 delayX, s16 param_2, s16 param_3, f32 threshold, f32 param_5,
s16 param_6, s16 param_7) {
setWaitParm(param_0, param_1, param_2, param_3, param_4, param_5, param_6, param_7);
setWaitParm(delayY, delayX, param_2, param_3, threshold, param_5, param_6, param_7);
init();
}
void STControl::setWaitParm(s16 param_0, s16 param_1, s16 param_2, s16 param_3, f32 param_4,
void STControl::setWaitParm(s16 delayY, s16 delayX, s16 param_2, s16 param_3, f32 threshold,
f32 param_5, s16 param_6, s16 param_7) {
field_0x12 = param_0;
field_0x14 = param_1;
mRepeatDelayY = delayY;
mRepeatDelayX = delayX;
field_0x16 = param_2;
field_0x1c = param_3;
field_0x04 = param_4;
mThreshold = threshold;
field_0x08 = param_5;
field_0x24 = param_6;
field_0x26 = param_7;
@@ -123,10 +123,10 @@ void STControl::init() {
field_0x0e = 0;
field_0x10 = 0;
field_0x0d = 0;
field_0x0c = 0;
mDirectionTrig = 0;
field_0x22 = 0;
mXwaitTimer = field_0x12;
mYwaitTimer = field_0x12;
mXwaitTimer = mRepeatDelayY;
mYwaitTimer = mRepeatDelayY;
field_0x1e = field_0x1c;
field_0x20 = field_0x1c;
mFirstWaitTime = 0;
@@ -136,31 +136,20 @@ void STControl::init() {
void STControl::Xinit() {
field_0x0e = 0;
field_0x0c &= 0xfc;
mXwaitTimer = field_0x12;
mDirectionTrig &= ~0x03;
mXwaitTimer = mRepeatDelayY;
field_0x1e = field_0x1c;
field_0x2a = mFirstWaitTime;
}
/* 8003212C-8003215C 02CA6C 0030+00 1/1 0/0 0/0 .text Yinit__9STControlFv */
#ifdef NONMATCHING
void STControl::Yinit() {
field_0x10 = 0;
field_0x0c &= 0xf3;
mYwaitTimer = field_0x12;
mDirectionTrig &= ~0x0C;
mYwaitTimer = mRepeatDelayY;
field_0x20 = field_0x1c;
field_0x2c = mFirstWaitTime;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void STControl::Yinit() {
nofralloc
#include "asm/d/d_lib/Yinit__9STControlFv.s"
}
#pragma pop
#endif
f32 STControl::getValueStick() {
return mDoCPd_c::getStickValue(PAD_1);
@@ -179,23 +168,100 @@ s16 CSTControl::getAngleStick() {
}
/* 8003219C-8003242C 02CADC 0290+00 0/0 24/24 0/0 .text checkTrigger__9STControlFv */
#ifdef NONMATCHING
u8 STControl::checkTrigger() {
field_0x0d = mDirectionTrig;
f32 stickValue = getValueStick();
s16 stickAngle_ = getAngleStick();
u8 var_r6 = 0;
s16 temp_r7 = 0x2000 - field_0x26 >> 1;
if (!cM3d_IsZero(stickValue)) {
int stickAngle = stickAngle_;
s16 temp_r4 = field_0x22;
int temp_r3 = temp_r4 + temp_r7;
if (stickAngle < temp_r3 - 0x7000) {
var_r6 |= TRIG_UP;
} else if (stickAngle < (temp_r4 - 0x5000) - temp_r7) {
var_r6 |= TRIG_UP_LEFT;
} else if (stickAngle < temp_r3 - 0x3000) {
var_r6 |= TRIG_LEFT;
} else if (stickAngle < (temp_r4 - 0x1000) - temp_r7) {
var_r6 |= TRIG_DOWN_LEFT;
} else if (stickAngle < temp_r3 + 0x1000) {
var_r6 |= TRIG_DOWN;
} else if (stickAngle < (temp_r4 + 0x3000) - temp_r7) {
var_r6 |= TRIG_DOWN_RIGHT;
} else if (stickAngle < temp_r3 + 0x5000) {
var_r6 |= TRIG_RIGHT;
} else if (stickAngle < (temp_r4 + 0x7000) - temp_r7) {
var_r6 |= TRIG_UP_RIGHT;
} else {
var_r6 |= TRIG_UP;
}
if (stickValue >= mThreshold) {
mDirectionTrig = var_r6;
} else if (stickValue < field_0x08) {
mDirectionTrig = 0;
} else {
mDirectionTrig &= ~var_r6;
}
u8 temp_r3_2 = mDirectionTrig;
if (temp_r3_2 != field_0x0d) {
if (temp_r3_2 == 0) {
field_0x22 = 0;
} else if ((stickAngle & 0x1FFF) > 0x1000) {
field_0x22 = field_0x24;
} else {
field_0x22 = -field_0x24;
}
}
if (!(mDirectionTrig & 3)) {
Xinit();
}
if (!(mDirectionTrig & 0xC)) {
Yinit();
}
} else {
mDirectionTrig = 0;
Xinit();
Yinit();
}
if ((field_0x0d & mDirectionTrig & 3) && field_0x0e > 0) {
field_0x0e--;
}
if ((field_0x0d & mDirectionTrig & 0xC) && field_0x10 > 0) {
field_0x10--;
}
return mDirectionTrig;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void STControl::checkTrigger() {
asm u8 STControl::checkTrigger() {
nofralloc
#include "asm/d/d_lib/checkTrigger__9STControlFv.s"
}
#pragma pop
#endif
bool STControl::checkLeftTrigger() {
if ((field_0x0e == 0) && ((field_0x0c & 1) != 0)) {
if (field_0x0e == 0 && mDirectionTrig & TRIG_LEFT) {
field_0x0e = mXwaitTimer + field_0x2a;
field_0x2a = 0;
if ((int)field_0x1e == 0) {
mXwaitTimer -= field_0x16;
if (mXwaitTimer < field_0x14) {
mXwaitTimer = field_0x14;
if (mXwaitTimer < mRepeatDelayX) {
mXwaitTimer = mRepeatDelayX;
}
} else {
field_0x1e--;
@@ -206,13 +272,13 @@ bool STControl::checkLeftTrigger() {
}
bool STControl::checkRightTrigger() {
if ((field_0x0e == 0) && ((field_0x0c & 2) != 0)) {
if (field_0x0e == 0 && mDirectionTrig & TRIG_RIGHT) {
field_0x0e = mXwaitTimer + field_0x2a;
field_0x2a = 0;
if ((int)field_0x1e == 0) {
mXwaitTimer -= field_0x16;
if (mXwaitTimer < field_0x14) {
mXwaitTimer = field_0x14;
if (mXwaitTimer < mRepeatDelayX) {
mXwaitTimer = mRepeatDelayX;
}
} else {
field_0x1e--;
@@ -223,13 +289,13 @@ bool STControl::checkRightTrigger() {
}
bool STControl::checkUpTrigger() {
if ((field_0x10 == 0) && ((field_0x0c & 4) != 0)) {
if (field_0x10 == 0 && mDirectionTrig & TRIG_UP) {
field_0x10 = mYwaitTimer + field_0x2c;
field_0x2c = 0;
if ((int)field_0x20 == 0) {
mYwaitTimer -= field_0x16;
if (mYwaitTimer < field_0x14) {
mYwaitTimer = field_0x14;
if (mYwaitTimer < mRepeatDelayX) {
mYwaitTimer = mRepeatDelayX;
}
} else {
field_0x20--;
@@ -240,13 +306,13 @@ bool STControl::checkUpTrigger() {
}
bool STControl::checkDownTrigger() {
if ((field_0x10 == 0) && ((field_0x0c & 8) != 0)) {
if (field_0x10 == 0 && mDirectionTrig & TRIG_DOWN) {
field_0x10 = mYwaitTimer + field_0x2c;
field_0x2c = 0;
if ((int)field_0x20 == 0) {
mYwaitTimer -= field_0x16;
if (mYwaitTimer < field_0x14) {
mYwaitTimer = field_0x14;
if (mYwaitTimer < mRepeatDelayX) {
mYwaitTimer = mRepeatDelayX;
}
} else {
field_0x20--;
+1 -1
View File
@@ -71,7 +71,7 @@ asm void dPath_GetPnt(dPath const* param_0, int param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dPath_GetRoomPath(int param_0, int param_1) {
asm u16* dPath_GetRoomPath(int param_0, int param_1) {
nofralloc
#include "asm/d/d_path/dPath_GetRoomPath__Fii.s"
}
-4
View File
@@ -22,10 +22,6 @@
// Types:
//
struct mDoMtx_stack_c {
static u8 now[48];
};
struct dBgWKCol {
/* 8007E7D0 */ void initKCollision(void*);
};
+62 -8
View File
@@ -2996,8 +2996,8 @@ int dStage_RoomCheck(cBgS_GndChk* gndChk) {
/* 800270FC-80027170 021A3C 0074+00 0/0 1/1 0/0 .text
* dStage_changeSceneExitId__FR13cBgS_PolyInfofUlScs */
void dStage_changeSceneExitId(cBgS_PolyInfo& param_0, f32 speed, u32 mode, s8 roomNo, s16 angle) {
dStage_changeScene(dComIfG_Bgsp().GetExitId(param_0), speed, mode, roomNo, angle, -1);
int dStage_changeSceneExitId(cBgS_PolyInfo& param_0, f32 speed, u32 mode, s8 roomNo, s16 angle) {
return dStage_changeScene(dComIfG_Bgsp().GetExitId(param_0), speed, mode, roomNo, angle, -1);
}
/* ############################################################################################## */
@@ -3009,7 +3009,7 @@ SECTION_SDATA2 static f64 lit_5317 = 4503601774854144.0 /* cast s32 to float */;
/* 80027170-800272E0 021AB0 0170+00 1/1 10/10 63/63 .text dStage_changeScene__FifUlScsi
*/
// scls info types might be wrong or inlines wrong
// matches with literals
#ifdef NONMATCHING
int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no, s16 angle, int param_5) {
stage_scls_info_dummy_class* scls;
@@ -3025,9 +3025,9 @@ int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no, s16 angle,
}
stage_scls_info_class* scls_info = &scls->mEntries[i_exitId];
u8 wipe = dStage_sclsInfo_getWipe(scls_info);
int wipe_time = dStage_sclsInfo_getWipeTime(scls_info);
s8 layer = dStage_sclsInfo_getSceneLayer(scls_info);
s32 wipe = dStage_sclsInfo_getWipe(scls_info);
s32 wipe_time = dStage_sclsInfo_getWipeTime(scls_info);
s32 layer = dStage_sclsInfo_getSceneLayer(scls_info);
int timeH = dStage_sclsInfo_getTimeH(scls_info);
if (layer >= 15) {
@@ -3042,7 +3042,7 @@ int dStage_changeScene(int i_exitId, f32 speed, u32 mode, s8 room_no, s16 angle,
dKy_set_nexttime(15.0f * timeH);
}
dComIfGp_setNextStage(scls_info->mStage, scls_info->mStart, scls_info->mRoom, layer, speed,
dComIfGp_setNextStage(scls_info->mStage, scls_info->mStart, (s8)scls_info->mRoom, (s8)layer, speed,
mode, 1, wipe == 15 ? 0 : wipe, angle, 1, wipe_time);
return 1;
}
@@ -3078,15 +3078,69 @@ SECTION_DEAD static char const* const stringBase_80378BB3 = "d_stage.cpp";
#pragma pop
/* 800272F0-800274B0 021C30 01C0+00 0/0 1/1 0/0 .text dStage_changeScene4Event__FiScibfUlsi */
#ifdef NONMATCHING
int dStage_changeScene4Event(int i_exitId, s8 room_no, int i_wipe, bool param_3, f32 speed,
u32 mode, s16 angle, int param_7) {
stage_scls_info_dummy_class* scls;
if (room_no == -1) {
scls = dComIfGp_getStageSclsInfo();
} else {
scls = dComIfGp_roomControl_getStatusRoomDt(room_no)->mRoomDt.getSclsInfo();
}
if (scls == NULL) {
// "%d: %d: Scene List doesn't exist. \n"
OSReport_Error("%s: %d: シーンリストがありません。\n", "d_stage.cpp", 4865);
return 0;
}
stage_scls_info_class* scls_info = &scls->mEntries[i_exitId];
s32 wipe;
s32 wipe_time;
if (i_wipe == -1) {
wipe = dStage_sclsInfo_getWipe(scls_info);
} else {
wipe = i_wipe;
}
if (i_wipe == -1) {
wipe_time = dStage_sclsInfo_getWipeTime(scls_info);
} else {
wipe_time = 0;
}
s32 layer = dStage_sclsInfo_getSceneLayer(scls_info);
int timeH = dStage_sclsInfo_getTimeH(scls_info);
if (layer >= 15) {
layer = -1;
}
if (layer == -1 && param_7 != -1) {
layer = param_7;
}
if (timeH < 31) {
dKy_set_nexttime(15.0f * timeH);
}
dComIfGp_setNextStage(scls_info->mStage, scls_info->mStart, (s8)scls_info->mRoom, (s8)layer, speed,
mode, 1, wipe == 15 ? 0 : wipe, angle, param_3 != false, wipe_time);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dStage_changeScene4Event(int param_0, s8 param_1, int param_2, bool param_3, f32 param_4,
asm int dStage_changeScene4Event(int param_0, s8 param_1, int param_2, bool param_3, f32 param_4,
u32 param_5, s16 param_6, int param_7) {
nofralloc
#include "asm/d/d_stage/dStage_changeScene4Event__FiScibfUlsi.s"
}
#pragma pop
#endif
/* 800274B0-80027524 021DF0 0074+00 0/0 1/1 0/0 .text dStage_restartRoom__FUlUli */
void dStage_restartRoom(u32 roomParam, u32 mode, int param_2) {
+167 -79
View File
@@ -12,12 +12,8 @@
// Types:
//
struct mDoMtx_stack_c {
static u8 now[48];
};
struct dMapInfo_c {
/* 8003F40C */ void calcFloorNo(f32, bool, int);
/* 8003F40C */ static s8 calcFloorNo(f32, bool, int);
};
//
@@ -69,6 +65,10 @@ extern "C" extern bool data_80450680;
// Declarations:
//
inline dStage_stageDt_c* dComIfGp_getStage() {
return &g_dComIfG_gameInfo.play.getStage();
}
/* ############################################################################################## */
/* 80450F98-80450F9C 000498 0004+00 2/2 0/0 0/0 .sbss mTypeGroupData__7dTres_c */
dTres_c::typeGroupData_c* dTres_c::mTypeGroupData;
@@ -84,14 +84,11 @@ asm int dTres_c::createWork() {
#pragma pop
/* 8009BC18-8009BC60 096558 0048+00 0/0 1/1 0/0 .text create__7dTres_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::create() {
nofralloc
#include "asm/d/d_tresure/create__7dTres_cFv.s"
void dTres_c::create() {
if (dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo()) != 3) {
reset();
}
}
#pragma pop
/* 8009BC60-8009BC6C 0965A0 000C+00 0/0 1/1 0/0 .text remove__7dTres_cFv */
void dTres_c::remove() {
@@ -106,17 +103,57 @@ dTres_c::list_class dTres_c::mTypeGroupListAll[17];
u16 dTres_c::mNum;
/* 8009BC6C-8009BCB4 0965AC 0048+00 2/2 0/0 0/0 .text reset__7dTres_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::reset() {
nofralloc
#include "asm/d/d_tresure/reset__7dTres_cFv.s"
void dTres_c::reset() {
if (data_80450680) {
mNum = 0;
data_80450680 = false;
for (int i = 0; i < 17; i++) {
mTypeGroupListAll[i].field_0x0 = NULL;
mTypeGroupListAll[i].field_0x4 = NULL;
mTypeGroupListAll[i].mNumber = 0;
}
}
}
#pragma pop
/* 8009BCB4-8009BE28 0965F4 0174+00 0/0 1/1 0/0 .text addData__7dTres_cFPQ27dTres_c10list_classSc
*/
#ifdef NONMATCHING
void dTres_c::addData(dTres_c::list_class* p_list, s8 roomNo) {
if (dStage_stagInfo_GetSTType(dComIfGp_getStage()->getStagInfo()) != 3) {
reset();
typeGroupData_c* listData = p_list->field_0x4;
typeGroupData_c* groupData = &mTypeGroupData[mNum];
for (int i = 0; i < (int)p_list->field_0x0; i++) {
groupData->mData = listData->mData;
groupData->mData.mRoomNo = roomNo;
groupData->mData.mStatus = 0;
u8 typeGroupNo = getTypeToTypeGroupNo(groupData->mData.mType);
groupData->setNextDataPointer(NULL);
groupData->setTypeGroupNo(typeGroupNo);
list_class* typeGroupList = mTypeGroupListAll + typeGroupNo;
if (typeGroupList->field_0x0 == NULL) {
typeGroupList->field_0x0 = groupData;
}
if (mTypeGroupListAll[i].field_0x4 != NULL) {
mTypeGroupListAll[i].field_0x4->setNextDataPointer(groupData);
}
mTypeGroupListAll[i].field_0x4 = groupData;
mTypeGroupListAll[i].mNumber++;
if ((s32)groupData->mData.mType == 0xFF) {
checkTreasureBox(&groupData->mData);
}
mNum++;
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -125,6 +162,7 @@ asm void dTres_c::addData(dTres_c::list_class* param_0, s8 param_1) {
#include "asm/d/d_tresure/addData__7dTres_cFPQ27dTres_c10list_classSc.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80452BE8-80452BEC 0011E8 0004+00 1/1 0/0 0/0 .sdata2 @3839 */
@@ -164,16 +202,38 @@ asm void dTres_c::checkTreasureBox(dTres_c::data_s* param_0) {
#pragma pop
/* 8009C168-8009C1F0 096AA8 0088+00 0/0 0/0 3/3 .text onStatus__7dTres_cFUcii */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::onStatus(u8 param_0, int param_1, int param_2) {
nofralloc
#include "asm/d/d_tresure/onStatus__7dTres_cFUcii.s"
void dTres_c::onStatus(u8 listIdx, int param_1, int flag) {
typeGroupData_c* groupData = getFirstData(listIdx);
int typeGroupNo = getTypeGroupNumber(listIdx);
for (int i = 0; i < typeGroupNo; i++) {
if (param_1 == groupData->getNo()) {
u8 status = groupData->getStatus();
cLib_onBit(status, flag);
groupData->setStatus(status);
}
groupData = getNextData(groupData);
}
}
#pragma pop
/* 8009C1F0-8009C27C 096B30 008C+00 0/0 0/0 3/3 .text offStatus__7dTres_cFUcii */
#ifdef NONMATCHING
void dTres_c::offStatus(u8 listIdx, int param_1, int flag) {
typeGroupData_c* groupData = getFirstData(listIdx);
int typeGroupNo = getTypeGroupNumber(listIdx);
for (int i = 0; i < typeGroupNo; i++) {
if (param_1 == groupData->getNo()) {
u8 status = groupData->getStatus();
cLib_offBit(status, flag);
groupData->setStatus(status);
}
groupData = getNextData(groupData);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -182,87 +242,115 @@ asm void dTres_c::offStatus(u8 param_0, int param_1, int param_2) {
#include "asm/d/d_tresure/offStatus__7dTres_cFUcii.s"
}
#pragma pop
#endif
/* 8009C27C-8009C360 096BBC 00E4+00 0/0 1/1 0/0 .text getBossIconFloorNo__7dTres_cFPi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::getBossIconFloorNo(int* param_0) {
nofralloc
#include "asm/d/d_tresure/getBossIconFloorNo__7dTres_cFPi.s"
int dTres_c::getBossIconFloorNo(int* o_floorNo) {
int ret;
if (o_floorNo == NULL) {
return 0;
}
ret = 0;
*o_floorNo = 0;
typeGroupData_c* groupData = getFirstData(3);
if (groupData != NULL && dComIfGs_isDungeonItemCompass()) {
if ((groupData->getSwBit() == 0xFF ||
(groupData->getSwBit() != 0xFF &&
dComIfGs_isSwitch(groupData->getSwBit(), groupData->getRoomNo()))) &&
!dComIfGs_isStageBossEnemy()) {
*o_floorNo =
dMapInfo_c::calcFloorNo(groupData->getPos()->y, true, groupData->getRoomNo());
ret = 1;
}
}
return ret;
}
#pragma pop
/* 8009C360-8009C39C 096CA0 003C+00 4/4 4/4 0/0 .text getFirstData__7dTres_cFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::getFirstData(u8 param_0) {
nofralloc
#include "asm/d/d_tresure/getFirstData__7dTres_cFUc.s"
dTres_c::typeGroupData_c* dTres_c::getFirstData(u8 listIdx) {
if (mTypeGroupListAll + listIdx == NULL) {
return NULL;
}
if ((s32)mTypeGroupListAll[listIdx].mNumber == 0) {
return NULL;
}
return mTypeGroupListAll[listIdx].field_0x0;
}
#pragma pop
/* 8009C39C-8009C3B4 096CDC 0018+00 2/2 3/3 0/0 .text
* getNextData__7dTres_cFPQ27dTres_c15typeGroupData_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::getNextData(dTres_c::typeGroupData_c* param_0) {
nofralloc
#include "asm/d/d_tresure/getNextData__7dTres_cFPQ27dTres_c15typeGroupData_c.s"
dTres_c::typeGroupData_c* dTres_c::getNextData(dTres_c::typeGroupData_c* p_data) {
if (p_data == NULL) {
return NULL;
}
return p_data->getNextDataPointer();
}
#pragma pop
/* 8009C3B4-8009C3CC 096CF4 0018+00 0/0 1/1 0/0 .text
* getNextData__7dTres_cFPCQ27dTres_c15typeGroupData_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::getNextData(dTres_c::typeGroupData_c const* param_0) {
nofralloc
#include "asm/d/d_tresure/getNextData__7dTres_cFPCQ27dTres_c15typeGroupData_c.s"
dTres_c::typeGroupData_c* dTres_c::getNextData(dTres_c::typeGroupData_c const* p_data) {
if (p_data == NULL) {
return NULL;
}
return p_data->getNextDataPointer();
}
#pragma pop
/* 8009C3CC-8009C49C 096D0C 00D0+00 0/0 0/0 14/14 .text setPosition__7dTres_cFiUcPC3Veci
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::setPosition(int param_0, u8 param_1, Vec const* param_2, int param_3) {
nofralloc
#include "asm/d/d_tresure/setPosition__7dTres_cFiUcPC3Veci.s"
void dTres_c::setPosition(int dataNo, u8 listIdx, Vec const* i_pos, int i_roomNo) {
typeGroupData_c* groupData = getFirstData(listIdx);
for (int i = getTypeGroupNumber(listIdx); i > 0; i--) {
if (dataNo == groupData->getNo()) {
Vec pos;
pos.x = i_pos->x;
pos.y = i_pos->y;
pos.z = i_pos->z;
if (i_roomNo >= 0) {
groupData->setRoomNo(i_roomNo);
}
dMapInfo_n::correctionOriginPos(groupData->getRoomNo(), &pos);
groupData->setPos(pos);
return;
}
groupData = groupData->getNextDataPointer();
}
}
#pragma pop
/* ############################################################################################## */
/* 8037B0D8-8037B100 007738 0022+06 2/2 0/0 0/0 .rodata typeToTypeGroup__7dTres_c */
SECTION_RODATA u8 const dTres_c::typeToTypeGroup[34] = {
0xFF, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x04, 0x04, 0x05,
0x05, 0x06, 0x06, 0x07, 0x07, 0x08, 0x80, 0x09, 0x81, 0x0A, 0x82, 0x0B,
0x83, 0x0C, 0x84, 0x0D, 0x85, 0x0E, 0x87, 0x0F, 0x88, 0x10,
SECTION_RODATA u8 const dTres_c::typeToTypeGroup[17][2] = {
{0xFF, 0x00}, {0x00, 0x01}, {0x01, 0x02}, {0x02, 0x03}, {0x03, 0x04}, {0x04, 0x05},
{0x05, 0x06}, {0x06, 0x07}, {0x07, 0x08}, {0x80, 0x09}, {0x81, 0x0A}, {0x82, 0x0B},
{0x83, 0x0C}, {0x84, 0x0D}, {0x85, 0x0E}, {0x87, 0x0F}, {0x88, 0x10},
};
COMPILER_STRIP_GATE(0x8037B0D8, &dTres_c::typeToTypeGroup);
/* 8009C49C-8009C4B0 096DDC 0014+00 0/0 1/1 0/0 .text getTypeGroupNoToType__7dTres_cFUc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dTres_c::getTypeGroupNoToType(u8 param_0) {
nofralloc
#include "asm/d/d_tresure/getTypeGroupNoToType__7dTres_cFUc.s"
int dTres_c::getTypeGroupNoToType(u8 i_typeGroupNo) {
return typeToTypeGroup[i_typeGroupNo][0];
}
#pragma pop
/* 8009C4B0-8009C4FC 096DF0 004C+00 1/1 3/3 0/0 .text getTypeToTypeGroupNo__7dTres_cFUc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u8 dTres_c::getTypeToTypeGroupNo(u8 param_0) {
nofralloc
#include "asm/d/d_tresure/getTypeToTypeGroupNo__7dTres_cFUc.s"
int dTres_c::getTypeToTypeGroupNo(u8 i_type) {
u8 groupNo = 17;
for (int i = 0; i < 17; i++) {
if (i_type == typeToTypeGroup[i][0]) {
groupNo = typeToTypeGroup[i][1];
break;
}
}
return groupNo;
}
#pragma pop
+600 -182
View File
File diff suppressed because it is too large Load Diff
+49 -8
View File
@@ -157,10 +157,11 @@ void dEvent_exception_c::init() {
/* 800463F0-80046480 040D30 0090+00 0/0 2/2 0/0 .text setStartDemo__18dEvent_exception_cFi */
s32 dEvent_exception_c::setStartDemo(int index) {
int tmp = dComIfGp_roomControl_getStayNo();
dStage_MapEvent_dt_c* eventData = dEvt_control_c::searchMapEventData(index, tmp);
int roomNo = dComIfGp_roomControl_getStayNo();
dStage_MapEvent_dt_c* eventData = dEvt_control_c::searchMapEventData(index, roomNo);
if (eventData != NULL && eventData->field_0x1B != 0xFF &&
dComIfGs_isSwitch(eventData->field_0x1B, tmp)) {
dComIfGs_isSwitch(eventData->field_0x1B, roomNo)) {
return 0xFF;
} else if (mEventInfoIdx != index) {
mEventInfoIdx = index;
@@ -170,19 +171,20 @@ s32 dEvent_exception_c::setStartDemo(int index) {
/* 80046480-800465E8 040DC0 0168+00 1/1 0/0 0/0 .text getEventName__18dEvent_exception_cFv */
const char* dEvent_exception_c::getEventName() {
/* 803A8270-803A82A8 -00001 0038+00 1/1 0/0 0/0 .data soecial_names$3966 */
static char* soecial_names[14] = {
"NORMAL_COMEBACK", "DEFAULT_START", "SHUTTER_START", "SHUTTER_START_STOP",
"BS_SHUTTER_START", "BS_SHUTTER_START_B", "KNOB_START", "KNOB_START_B",
"FMASTER_START", "FALL_START", "CRAWLOUT_START", "BOSSWARP_START",
"PORTALWARP_START", "PORTALWARP_START_B",
};
s32 roomNo = dComIfGp_roomControl_getStayNo();
dStage_roomStatus_c* roomStatus = dComIfGp_roomControl_getStatusRoomDt(roomNo);
dStage_MapEventInfo_c* eventInfo = roomStatus->mRoomDt.getMapEventInfo();
if (mEventInfoIdx == -1) {
return "(!NO REGIST!)";
}
if (0xC8 < mEventInfoIdx && mEventInfoIdx < 0xD7) {
if (mEventInfoIdx == 0xCB) {
dStage_stagInfo_GetSTType(dComIfGp_getStageStagInfo());
@@ -197,9 +199,11 @@ const char* dEvent_exception_c::getEventName() {
if (eventInfo == NULL) {
return "(!NO INFO!)";
}
if (mEventInfoIdx < 0 || mEventInfoIdx > eventInfo->mCount) {
return "(!BAD NUMBER!)";
}
dStage_MapEvent_dt_c* revt = &eventInfo->mData[mEventInfoIdx];
switch (revt->mType) {
case 1:
@@ -265,11 +269,11 @@ int dEvent_manager_c::create() {
}
/* 80046800-80046888 041140 0088+00 0/0 8/8 24/24 .text setObjectArchive__16dEvent_manager_cFPc */
bool dEvent_manager_c::setObjectArchive(char* param_0) {
bool dEvent_manager_c::setObjectArchive(char* arcName) {
char* rt = NULL;
if (param_0 != NULL) {
char* res = (char*)dComIfG_getObjectRes(param_0, DataFileName);
if (arcName != NULL) {
char* res = (char*)dComIfG_getObjectRes(arcName, DataFileName);
rt = res;
mEventList[2].init(res, -1);
} else {
@@ -333,6 +337,7 @@ int dEvent_manager_c::orderStartDemo() {
if (mEventException.mEventInfoIdx == -2) {
return -2;
}
s16 eventIdx;
if (0xC8 < mEventException.mEventInfoIdx && mEventException.mEventInfoIdx < 0xD7) {
eventIdx = this->getEventIdx(mEventException.getEventName(), -1, -1);
@@ -346,10 +351,12 @@ int dEvent_manager_c::orderStartDemo() {
daPy_py_c::checkNowWolf() ? "WOLF_WORLD_CHANGE_OUT" : "WORLD_CHANGE_OUT", 0xFF, -1);
success = fopAcM_orderOtherEventId(NULL, eventIdx, 0xFF, 0xFFFF, 5, 1);
}
if (success == FALSE) {
eventIdx = this->getEventIdx("DEFAULT_START", 0xFF, -1);
fopAcM_orderOtherEventId(NULL, eventIdx, 0xFF, 0xFFFF, 5, 1);
}
return eventIdx;
}
@@ -394,11 +401,13 @@ void dEvent_manager_c::startProc(dEvDtEvent_c* p_evnt) {
fopAcM_OnStatus(ac, 0x8000);
}
}
if (staff->getType() == dEvDtStaff_c::TYPE_ALL) {
issueStaff(staff->getName());
}
staff->init();
}
p_evnt->mEventState = 1;
mFlags.init();
}
@@ -416,6 +425,7 @@ void dEvent_manager_c::endProc(s16 param_0, int param_1) {
if (param_1 != 0) {
this->closeProc(event);
}
if (event->mEventState == 2) {
char* param = "ALL";
fopAcM_Search((fopAcIt_JudgeFunc)allOffObjectCallBack, (void*)param);
@@ -447,6 +457,7 @@ void dEvent_manager_c::Sequencer() {
name = mapEvent->mName;
break;
}
if (dStage_MapEvent_dt_c_getEventSCutSW(mapEvent) != 0 && !evtControl.chkFlag2(2)) {
if (dStage_MapEvent_dt_c_getEventSCutType(mapEvent) == 2) {
evtControl.onSkipFade();
@@ -475,11 +486,13 @@ void dEvent_manager_c::Sequencer() {
}
Z2GetAudioMgr()->mStatusMgr.setDemoName(name);
}
if (event->finishCheck() != 0) {
bool bVar1 = false;
if (evtControl.chkFlag2(1)) {
bVar1 = true;
}
int exit = -1;
bool iVar5;
if (evtControl.chkFlag2(2)) {
@@ -487,6 +500,7 @@ void dEvent_manager_c::Sequencer() {
} else {
iVar5 = false;
}
if (mapEvent != NULL) {
int cutType = dStage_MapEvent_dt_c_getEventSCutType(mapEvent);
if (iVar5 && cutType != 1) {
@@ -495,6 +509,7 @@ void dEvent_manager_c::Sequencer() {
((fopAc_ac_c*)dComIfGp_getPlayer(0))->mAttentionInfo.mPosition);
cXyz camCenter = dCam_getBody()->Center();
f32 distance = cXyz((attentionPos - camCenter)).abs();
if (cutType == 0) {
if (distance > 180) {
dCam_getBody()->EventRecoverNotime();
@@ -513,6 +528,7 @@ void dEvent_manager_c::Sequencer() {
}
}
}
switch (mapEvent->mType) {
case 0:
switch (mapEvent->field_0x18) {
@@ -523,6 +539,7 @@ void dEvent_manager_c::Sequencer() {
mDoAud_seStart(0xD, NULL, 0, 0);
break;
}
if (!bVar1) {
if (iVar5 && mapEvent->field_0x9 != 0xFF) {
exit = mapEvent->field_0x9;
@@ -557,6 +574,7 @@ void dEvent_manager_c::Sequencer() {
break;
}
}
if (exit == -1) {
getBase().advanceCut(event);
closeProc(event);
@@ -567,6 +585,7 @@ void dEvent_manager_c::Sequencer() {
getBase().advanceCut(event);
}
}
if (field_0x1b8 != 0) {
field_0x1b8--;
}
@@ -631,6 +650,7 @@ s16 dEvent_manager_c::getEventIdx(char const* eventName, u8 param_1, s32 roomNo)
if (roomNo == -1) {
roomNo = dComIfGp_roomControl_getStayNo();
}
if (param_1 != 0xFF) {
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_1, roomNo);
if (data != NULL) {
@@ -645,9 +665,11 @@ s16 dEvent_manager_c::getEventIdx(char const* eventName, u8 param_1, s32 roomNo)
}
}
}
if (eventName == NULL) {
return -1;
}
dEvDtBase_c* event;
int j;
int i;
@@ -688,6 +710,7 @@ s16 dEvent_manager_c::getEventIdx(fopAc_ac_c* pActor, u8 param_1) {
* getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc */
s16 dEvent_manager_c::getEventIdx(fopAc_ac_c* pActor, char const* eventName, u8 param_2) {
s8 actorRoomNo = pActor->getRoomNo();
if (param_2 != 0xFF) {
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_2, actorRoomNo);
if (data != NULL) {
@@ -702,9 +725,11 @@ s16 dEvent_manager_c::getEventIdx(fopAc_ac_c* pActor, char const* eventName, u8
}
}
}
if (eventName == NULL) {
return -1;
}
dEvDtBase_c* event;
int j;
int type;
@@ -735,6 +760,7 @@ int dEvent_manager_c::isMapToolCamera(u8 param_0, s32 roomNo) {
if (roomNo == -1) {
roomNo = dComIfGp_roomControl_getStayNo();
}
dStage_MapEvent_dt_c* data = dEvt_control_c::searchMapEventData(param_0, roomNo);
if (data != NULL) {
return data->mType == 0;
@@ -811,12 +837,14 @@ int dEvent_manager_c::getMyStaffId(char const* pStaffName, fopAc_ac_c* pActor, i
return -1;
} else {
dEvDtEvent_c* event = this->getEventData(mCurrentEventCompositId);
if (event != NULL && (event->mEventState == 1 || event->mEventState == 2)) {
int staffCount = event->getNStaff();
bool hasDp = false;
if (strchr(pStaffName, ':') != NULL) {
hasDp = true;
}
for (i = 0; i < staffCount; i++) {
staffNum = event->getStaff(i);
dEvDtStaff_c* staff = getBase().getStaffP(staffNum);
@@ -832,6 +860,7 @@ int dEvent_manager_c::getMyStaffId(char const* pStaffName, fopAc_ac_c* pActor, i
ptr++;
}
}
if (strcmp(pStaffName, buf) == 0 && (tagId < 0 || tagId == staff->mTagID)) {
s16 num = 0;
if (ptr != NULL) {
@@ -851,6 +880,7 @@ int dEvent_manager_c::getMyStaffId(char const* pStaffName, fopAc_ac_c* pActor, i
return staffNum;
}
}
if (strcmp(pStaffName, "Alink") == 0 && strcmp("Link", buf) == 0 &&
tagId == staff->mTagID) {
return staffNum;
@@ -907,6 +937,7 @@ int dEvent_manager_c::getMyActIdx(int param_0, char const* const* param_1, int p
} else if (mCurrentEventCompositId == -1) {
return -1;
}
dEvDtStaff_c* staff = getBase().getStaffP(param_0);
if (staff) {
if (staff->field_0x41 != false && param_3 == 0) {
@@ -1041,9 +1072,11 @@ int dEvent_manager_c::getEventPrio(fopAc_ac_c* pActor, s16 eventCompositId) {
eventBase.init(data, -1);
event = eventBase.mEventP;
}
if (event == NULL) {
event = getEventData(eventCompositId);
}
if (event == NULL) {
return 0;
} else {
@@ -1090,9 +1123,11 @@ const char* dEvent_manager_c::getRunEventName() {
if (mCurrentEventCompositId == -1) {
return "NO DATA";
}
if (getBase().getHeaderP() == NULL) {
return "NO DATA";
}
dEvDtEvent_c* event = getEventData(mCurrentEventCompositId);
if (event != NULL && event->mEventState == 1) {
return event->getName();
@@ -1109,9 +1144,10 @@ struct FindShtrCbPrms {
/* 8004846C-80048520 042DAC 00B4+00 1/1 0/0 0/0 .text findShutterCallBack__FP10fopAc_ac_cPv */
static fopAc_ac_c* findShutterCallBack(fopAc_ac_c* pActor, void* param_1) {
FindShtrCbPrms* prms = (FindShtrCbPrms*)param_1;
if (prms->mBsTypeId != fpcAcM_GetProfName(pActor)) {
if (prms->mBsTypeId != fopAcM_GetProfName(pActor)) {
return NULL;
}
cXyz diff = pActor->mOrig.mPosition - prms->mActor->mOrig.mPosition;
if (diff.x < 10 && diff.x > -10 && diff.y < 10 && diff.y > -10 && diff.z < 10 && diff.z > -10) {
return pActor;
@@ -1127,6 +1163,7 @@ fopAc_ac_c* dEvent_manager_c::specialCast_Shutter(s16 bsTypeId, int param_1) {
prms.mActor = (fopAc_ac_c*)dComIfGp_getPlayer(0);
fopAc_ac_c* shutterActor =
(fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)findShutterCallBack, &prms);
if (shutterActor != NULL && param_1 != 0) {
cXyz goal(shutterActor->mOrig.mPosition);
s16 angle = prms.mActor->mOrig.mAngle.y + 0x8000;
@@ -1145,6 +1182,7 @@ fopAc_ac_c* dEvent_manager_c::specialCast(char const* pName, int param_1) {
if (pName == NULL) {
return NULL;
}
if (!strcmp(pName, "SHUTTER_DOOR")) {
shutterActor = specialCast_Shutter(0x226, param_1);
if (shutterActor == NULL) {
@@ -1163,6 +1201,7 @@ fopAc_ac_c* dEvent_manager_c::specialCast(char const* pName, int param_1) {
dComIfGp_getEvent().onEventFlag(0x10);
}
}
if (shutterActor != NULL) {
if (param_1 != 0) {
fopAcM_OnStatus(shutterActor, 0x1000);
@@ -1204,9 +1243,11 @@ int dEvent_manager_c::checkStartDemo() {
if (!dComIfGp_getEvent().runCheck()) {
return 0;
}
if (mEventException.mEventInfoIdx == -1) {
return 0;
}
if (mEventException.mEventInfoIdx == -2) {
return 0;
}
+2 -2
View File
@@ -228,8 +228,8 @@ inline u16 dComIfGs_getLife() {
/* 80192954-80192AA0 18D294 014C+00 0/0 3/3 0/0 .text setSaveData__12dFile_info_cFP10dSv_save_ciUc
*/
int dFile_info_c::setSaveData(dSv_save_c* save, int param_1, u8 data_num) {
if (param_1 != 0) {
int dFile_info_c::setSaveData(dSv_save_c* save, int checksumValid, u8 data_num) {
if (checksumValid) {
char* player_name = save->getPlayer().getPlayerInfo().getLinkName();
if (*player_name == NULL) {
if (field_0x22 == 1 && data_num == dComIfGs_getDataNum()) {
+2 -58
View File
@@ -16,71 +16,15 @@ struct dMsgString_c {
/* 80249D28 */ ~dMsgString_c();
};
struct JUtility {
struct TColor {};
};
struct JKRArchive {};
struct dFile_warning_c {
/* 80191BAC */ dFile_warning_c(JKRArchive*, u8);
/* 80191C18 */ ~dFile_warning_c();
/* 80191CF4 */ void screenSet();
/* 80191F18 */ void _move();
/* 80191F90 */ void modeWait();
/* 80191F94 */ void modeMove();
/* 80191FD4 */ void baseMoveAnm();
/* 801920B8 */ void openInit();
/* 8019210C */ void closeInit();
/* 80192160 */ void init();
/* 80192190 */ void _draw();
/* 801921CC */ void drawSelf();
/* 801921F8 */ void setText(u32);
/* 80192240 */ void setFontColor(JUtility::TColor, JUtility::TColor);
};
struct dDlst_base_c {};
struct dDlst_list_c {
/* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*);
};
struct dDlst_FileWarn_c {
/* 80192354 */ void draw();
/* 801923CC */ ~dDlst_FileWarn_c();
};
struct JKRFileLoader {
/* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*);
};
struct JKRExpHeap {};
struct J2DTextBox {
/* 8019230C */ void setBlackWhite(JUtility::TColor, JUtility::TColor);
/* 8030074C */ void setString(s16, char const*, ...);
};
struct J2DAnmTransform {};
struct J2DGrafContext {};
struct J2DScreen {
/* 80192414 */ void setAnimation(J2DAnmTransform*);
/* 802F8498 */ J2DScreen();
/* 802F8648 */ void setPriority(char const*, u32, JKRArchive*);
/* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*);
/* 802F9690 */ void animation();
};
struct J2DAnmLoaderDataBase {
/* 80308A6C */ void load(void const*);
};
struct CPaneMgr {
/* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
};
//
// Forward References:
//
@@ -128,7 +72,6 @@ extern "C" void setString__10J2DTextBoxFsPCce();
extern "C" void load__20J2DAnmLoaderDataBaseFPCv();
extern "C" void __ptmf_scall();
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
//
// Declarations:
@@ -217,7 +160,8 @@ asm dFile_warning_c::dFile_warning_c(JKRArchive* param_0, u8 param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dFile_warning_c::~dFile_warning_c() {
// asm dFile_warning_c::~dFile_warning_c() {
extern "C" asm void __dt__15dFile_warning_cFv() {
nofralloc
#include "asm/d/file/d_file_sel_warning/__dt__15dFile_warning_cFv.s"
}
+1 -5
View File
@@ -18,10 +18,6 @@
struct sub_kankyo__class {};
struct mDoMtx_stack_c {
static u8 now[48];
};
struct color_RGB_class {};
//
@@ -2628,7 +2624,7 @@ asm void dKy_Sound_set(cXyz param_0, int param_1, unsigned int param_2, int para
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dKy_Sound_get() {
asm SND_INFLUENCE* dKy_Sound_get() {
nofralloc
#include "asm/d/kankyo/d_kankyo/dKy_Sound_get__Fv.s"
}
-1
View File
@@ -418,7 +418,6 @@ extern "C" void getTotalFreeSize__7JKRHeapFv();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void create__10JKRExpHeapFUlP7JKRHeapb();
extern "C" void DCStoreRangeNoSync();
extern "C" void __register_global_object();
extern "C" void __destroy_arr();
extern "C" void __ptmf_scall();
+796 -994
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -257,7 +257,6 @@ extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 g_mDoMtx_identity[48 + 24 /* padding */];
extern "C" extern void* g_fopMsg_Method[5 + 1 /* padding */];
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern void* __vt__10CSTControl[4];
+1 -1
View File
@@ -1485,7 +1485,7 @@ SECTION_DATA static leafdraw_method_class l_dMeter2_Method = {
};
/* 803BFA68-803BFA90 -00001 0028+00 0/0 0/0 1/0 .data g_profile_METER2 */
SECTION_DATA extern leaf_process_profile_definition g_profile_METER2 = {
SECTION_DATA extern process_profile_definition g_profile_METER2 = {
-3, 12,
-3, 0x0316,
0, (process_method_class*)&g_fpcLf_Method,
File diff suppressed because it is too large Load Diff
+58 -125
View File
@@ -4,6 +4,7 @@
//
#include "d/msg/d_msg_object.h"
#include "d/msg/d_msg_out_font.h"
#include "JSystem/JGadget/binary.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -71,20 +72,6 @@ struct dMsgScrnBase_c {
/* 8023C3EC */ void setRubyString(char*);
};
struct COutFont_c {
/* 80225C94 */ COutFont_c(u8);
};
struct dMsgObject_HowlHIO_c {
/* 80232AEC */ dMsgObject_HowlHIO_c();
/* 80238B94 */ ~dMsgObject_HowlHIO_c();
};
struct dMsgObject_HIO_c {
/* 80232D6C */ dMsgObject_HIO_c();
/* 80238BDC */ ~dMsgObject_HIO_c();
};
struct dDemo_c {
static u8 m_control[4];
static u8 m_mesgControl[4];
@@ -378,11 +365,11 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
/* ############################################################################################## */
/* 804510C8-804510D0 0005C8 0002+06 5/4 0/0 0/0 .sbss s_groupID */
static u8 s_groupID[2 + 6 /* padding */];
static s16 s_groupID;
/* 80232A3C-80232A44 -00001 0008+00 0/0 0/0 0/0 .text dMsgObject_getGroupID__Fv */
s16 dMsgObject_getGroupID() {
return (s32) * (s16*)(&s_groupID);
return s_groupID;
}
/* 80232A44-80232AEC 22D384 00A8+00 1/1 0/0 0/0 .text dMsgObject_searchSSItem__FPvPv */
@@ -733,7 +720,7 @@ asm void dMsgObject_c::getMessageIDAlways(u32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getMessageGroup(u32 param_0) {
asm s16 dMsgObject_c::getMessageGroup(u32 param_0) {
nofralloc
#include "asm/d/msg/d_msg_object/getMessageGroup__12dMsgObject_cFUl.s"
}
@@ -945,59 +932,44 @@ asm void dMsgObject_c::isSend() {
}
#pragma pop
/* ############################################################################################## */
/* 80399660-80399660 025CC0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803996CF = "/res/Msgus/bmgres%d.arc";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_803996E7 = "";
#pragma pop
/* 8043069C-804306B8 05D3BC 0016+06 1/1 0/0 0/0 .bss arcName$6106 */
static u8 arcName[22 + 6 /* padding */];
inline dStage_stageDt_c* dComIfGp_getStage() {
return &g_dComIfG_gameInfo.play.getStage();
}
/* 80236BF8-80236C90 231538 0098+00 1/1 0/0 0/0 .text
* readMessageGroupLocal__12dMsgObject_cFPP25mDoDvdThd_mountXArchive_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::readMessageGroupLocal(mDoDvdThd_mountXArchive_c** param_0) {
nofralloc
#include "asm/d/msg/d_msg_object/readMessageGroupLocal__12dMsgObject_cFPP25mDoDvdThd_mountXArchive_c.s"
void dMsgObject_c::readMessageGroupLocal(mDoDvdThd_mountXArchive_c** p_arcMount) {
static char arcName[22];
int msgGroup = dStage_stagInfo_GetMsgGroup(dComIfGp_getStage()->getStagInfo());
sprintf(arcName, "/res/Msgus/bmgres%d.arc", msgGroup);
*p_arcMount = mDoDvdThd_mountXArchive_c::create(arcName, 0, JKRArchive::MOUNT_MEM, NULL);
if (msgGroup == 99) {
msgGroup = 9;
}
s_groupID = msgGroup;
}
#pragma pop
/* 80236C90-80236CD4 2315D0 0044+00 1/1 0/0 0/0 .text changeFlowGroupLocal__12dMsgObject_cFl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::changeFlowGroupLocal(s32 param_0) {
nofralloc
#include "asm/d/msg/d_msg_object/changeFlowGroupLocal__12dMsgObject_cFl.s"
void dMsgObject_c::changeFlowGroupLocal(s32 param_0) {
mFlowChk = 1;
changeGroup(param_0 >= 3000 ? (s16)0 : s_groupID);
}
#pragma pop
/* 80236CD4-80236D00 231614 002C+00 1/1 0/0 0/0 .text demoMessageGroupLocal__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::demoMessageGroupLocal() {
nofralloc
#include "asm/d/msg/d_msg_object/demoMessageGroupLocal__12dMsgObject_cFv.s"
void dMsgObject_c::demoMessageGroupLocal() {
mFlowChk = 0;
changeGroup(0);
}
#pragma pop
/* 80236D00-80236D0C 231640 000C+00 1/1 0/0 0/0 .text endFlowGroupLocal__12dMsgObject_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::endFlowGroupLocal() {
nofralloc
#include "asm/d/msg/d_msg_object/endFlowGroupLocal__12dMsgObject_cFv.s"
void dMsgObject_c::endFlowGroupLocal() {
mFlowChk = 0;
}
#pragma pop
/* 80236D0C-80236DE4 23164C 00D8+00 1/1 0/0 0/0 .text changeGroupLocal__12dMsgObject_cFs
*/
@@ -1025,35 +997,23 @@ asm void dMsgObject_c::getStringLocal(u32 param_0, J2DTextBox* param_1, J2DTextB
/* 802370A8-802370BC 2319E8 0014+00 0/0 1/1 0/0 .text isGetItemMessage__12dMsgObject_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isGetItemMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isGetItemMessage__12dMsgObject_cFv.s"
BOOL dMsgObject_c::isGetItemMessage() {
return mFukiKind == 9;
}
#pragma pop
/* 802370BC-802370E8 2319FC 002C+00 4/4 2/2 0/0 .text isKanbanMessage__12dMsgObject_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isKanbanMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isKanbanMessage__12dMsgObject_cFv.s"
BOOL dMsgObject_c::isKanbanMessage() {
if (mFukiKind == 2 || mFukiKind == 6 || mFukiKind == 15) {
return true;
}
return false;
}
#pragma pop
/* 802370E8-802370FC 231A28 0014+00 6/6 3/3 0/0 .text isHowlMessage__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isHowlMessage() {
nofralloc
#include "asm/d/msg/d_msg_object/isHowlMessage__12dMsgObject_cFv.s"
BOOL dMsgObject_c::isHowlMessage() {
return mFukiKind == 17;
}
#pragma pop
/* 802370FC-80237138 231A3C 003C+00 3/3 2/2 0/0 .text isMidonaMessage__12dMsgObject_cFv
*/
@@ -1311,7 +1271,7 @@ asm void dMsgObject_c::resetSelectBomBag() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getSelectBombBagIDLocal() {
asm u8 dMsgObject_c::getSelectBombBagIDLocal() {
nofralloc
#include "asm/d/msg/d_msg_object/getSelectBombBagIDLocal__12dMsgObject_cFv.s"
}
@@ -1321,7 +1281,7 @@ asm void dMsgObject_c::getSelectBombBagIDLocal() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getSelectBombPriceLocal() {
asm s16 dMsgObject_c::getSelectBombPriceLocal() {
nofralloc
#include "asm/d/msg/d_msg_object/getSelectBombPriceLocal__12dMsgObject_cFv.s"
}
@@ -1368,7 +1328,7 @@ void dMsgObject_c::setSelectWordFlagLocal(u8 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isHowlHearingModeLocal() {
asm bool dMsgObject_c::isHowlHearingModeLocal() {
nofralloc
#include "asm/d/msg/d_msg_object/isHowlHearingModeLocal__12dMsgObject_cFv.s"
}
@@ -2043,65 +2003,35 @@ asm void dMsgObject_c::getSelectWordFlag() {
/* 80238588-802385B4 232EC8 002C+00 0/0 1/1 0/0 .text isHowlHearingMode__12dMsgObject_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::isHowlHearingMode() {
nofralloc
#include "asm/d/msg/d_msg_object/isHowlHearingMode__12dMsgObject_cFv.s"
bool dMsgObject_c::isHowlHearingMode() {
return dMsgObject_getMsgObjectClass()->isHowlHearingModeLocal();
}
#pragma pop
/* 802385B4-802385E0 232EF4 002C+00 0/0 1/1 0/0 .text getSelectBombBagID__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u8 dMsgObject_c::getSelectBombBagID() {
nofralloc
#include "asm/d/msg/d_msg_object/getSelectBombBagID__12dMsgObject_cFv.s"
u8 dMsgObject_c::getSelectBombBagID() {
return dMsgObject_getMsgObjectClass()->getSelectBombBagIDLocal();
}
#pragma pop
/* 802385E0-8023860C 232F20 002C+00 0/0 6/6 0/0 .text getSelectBombPrice__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s16 dMsgObject_c::getSelectBombPrice() {
nofralloc
#include "asm/d/msg/d_msg_object/getSelectBombPrice__12dMsgObject_cFv.s"
s16 dMsgObject_c::getSelectBombPrice() {
return dMsgObject_getMsgObjectClass()->getSelectBombPriceLocal();
}
#pragma pop
/* 8023860C-80238638 232F4C 002C+00 0/0 1/1 0/0 .text setEquipBombInfo__12dMsgObject_cFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::setEquipBombInfo() {
nofralloc
#include "asm/d/msg/d_msg_object/setEquipBombInfo__12dMsgObject_cFv.s"
void dMsgObject_c::setEquipBombInfo() {
dMsgObject_getMsgObjectClass()->setEquipBombInfoLocal();
}
#pragma pop
/* 80238638-8023864C 232F78 0014+00 0/0 2/2 0/0 .text getItemEquipButton__12dMsgObject_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::getItemEquipButton() {
nofralloc
#include "asm/d/msg/d_msg_object/getItemEquipButton__12dMsgObject_cFv.s"
u8 dMsgObject_c::getItemEquipButton() {
return dMsgObject_getMsgObjectClass()->getItemEquipButtonLocal();
}
#pragma pop
/* 8023864C-80238660 232F8C 0014+00 0/0 2/2 0/0 .text setSelectCancelPos__12dMsgObject_cFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgObject_c::setSelectCancelPos(u8 param_0) {
nofralloc
#include "asm/d/msg/d_msg_object/setSelectCancelPos__12dMsgObject_cFUc.s"
void dMsgObject_c::setSelectCancelPos(u8 pos) {
dMsgObject_getMsgObjectClass()->setSelectCancelPosLocal(pos);
}
#pragma pop
/* 80238660-802386C8 232FA0 0068+00 1/1 0/0 3/3 .text dMsgObject_getTotalPrice__Fv */
#pragma push
@@ -2232,7 +2162,8 @@ REGISTER_CTORS(0x80238B58, __sinit_d_msg_object_cpp);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgObject_HowlHIO_c::~dMsgObject_HowlHIO_c() {
// asm dMsgObject_HowlHIO_c::~dMsgObject_HowlHIO_c() {
extern "C" asm void __dt__20dMsgObject_HowlHIO_cFv() {
nofralloc
#include "asm/d/msg/d_msg_object/__dt__20dMsgObject_HowlHIO_cFv.s"
}
@@ -2242,7 +2173,8 @@ asm dMsgObject_HowlHIO_c::~dMsgObject_HowlHIO_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgObject_HIO_c::~dMsgObject_HIO_c() {
// asm dMsgObject_HIO_c::~dMsgObject_HIO_c() {
extern "C" asm void __dt__16dMsgObject_HIO_cFv() {
nofralloc
#include "asm/d/msg/d_msg_object/__dt__16dMsgObject_HIO_cFv.s"
}
@@ -2314,7 +2246,8 @@ void dMsgScrnBase_c::dotAnimeInit() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void jmessage_tReference::setActorPos(cXyz param_0) {
// asm void jmessage_tReference::setActorPos(cXyz param_0) {
extern "C" asm void setActorPos__19jmessage_tReferenceF4cXyz() {
nofralloc
#include "asm/d/msg/d_msg_object/setActorPos__19jmessage_tReferenceF4cXyz.s"
}
+504 -225
View File
@@ -4,48 +4,10 @@
//
#include "d/msg/d_msg_out_font.h"
#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct ResTIMG {};
struct J2DTextBox {};
struct J2DRotateAxis {};
struct J2DPicture {
/* 802FC708 */ J2DPicture(ResTIMG const*);
};
struct J2DPane {
/* 802F71DC */ void rotate(f32, f32, J2DRotateAxis, f32);
/* 802F7AFC */ void getParentPane();
};
struct COutFont_c {
/* 80225C94 */ COutFont_c(u8);
/* 80225D60 */ ~COutFont_c();
/* 80225E7C */ void setPane(J2DPicture*);
/* 80225EA8 */ void createPane();
/* 80226CF8 */ void initialize();
/* 80226D4C */ void drawFont(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8);
/* 80226DA8 */ void setAlphaRatio(f32);
/* 80226DB0 */ void draw(J2DTextBox*, f32, f32, f32);
/* 80228448 */ void reset(J2DTextBox*);
/* 80228490 */ void setBlendAnime(J2DPicture*, s16);
/* 80228530 */ void getBtiName(int);
};
struct COutFontSet_c {
/* 80225BB8 */ COutFontSet_c();
/* 80225BF4 */ ~COutFontSet_c();
/* 80225C3C */ void initialize();
/* 80225C70 */ void drawFont(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8);
};
#include "d/com/d_com_inf_game.h"
//
// Forward References:
@@ -85,8 +47,7 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_24();
extern "C" void _restgpr_26();
extern "C" void _restgpr_29();
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_MsgObject_HIO_c[1040];
extern "C" extern dMsgObject_HIO_c g_MsgObject_HIO_c;
//
// Declarations:
@@ -291,121 +252,13 @@ SECTION_DATA static void* lit_5000[65] = {
(void*)(((char*)draw__10COutFont_cFP10J2DTextBoxfff) + 0x1248),
};
/* 803BFCAC-803BFDC4 -00001 0118+00 1/1 0/0 0/0 .data mpIconName$5045 */
SECTION_DATA static void* mpIconName[70] = {
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x4B),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x57),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x63),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x6F),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x7B),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x87),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x93),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x9F),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xAB),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xC6),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xC6),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xC6),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xC6),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xB7),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xD2),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xD2),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xD2),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xDE),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xD2),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xEA),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x10B),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x121),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x12D),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xC6),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x139),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x158),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x159),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x16D),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x179),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x185),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x191),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x19D),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0xF),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x19D),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1A9),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1B5),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1C1),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1CD),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1D9),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1E5),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1F1),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1FD),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x27),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x33),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1F1),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x1FD),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x209),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x215),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x221),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x22D),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x239),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x245),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x251),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x25D),
(void*)(((char*)&d_msg_d_msg_out_font__stringBase0) + 0x269),
};
/* 803BFDC4-803BFDE8 01CEE4 0024+00 2/2 0/0 0/0 .data __vt__10COutFont_c */
SECTION_DATA extern void* __vt__10COutFont_c[9] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__10COutFont_cFv,
(void*)setPane__10COutFont_cFP10J2DPicture,
(void*)createPane__10COutFont_cFv,
(void*)draw__10COutFont_cFP10J2DTextBoxfff,
(void*)reset__10COutFont_cFP10J2DTextBox,
(void*)drawFont__10COutFont_cFP10J2DTextBoxUcffffUlUc,
(void*)setAlphaRatio__10COutFont_cFf,
};
/* 803BFDE8-803BFDF8 01CF08 000C+04 2/2 0/0 0/0 .data __vt__13COutFontSet_c */
SECTION_DATA extern void* __vt__13COutFontSet_c[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__13COutFontSet_cFv,
/* padding */
NULL,
};
/* 80225BB8-80225BF4 2204F8 003C+00 1/1 0/0 0/0 .text __ct__13COutFontSet_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm COutFontSet_c::COutFontSet_c() {
nofralloc
#include "asm/d/msg/d_msg_out_font/__ct__13COutFontSet_cFv.s"
COutFontSet_c::COutFontSet_c() {
initialize();
}
#pragma pop
/* 80225BF4-80225C3C 220534 0048+00 1/0 0/0 0/0 .text __dt__13COutFontSet_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm COutFontSet_c::~COutFontSet_c() {
nofralloc
#include "asm/d/msg/d_msg_out_font/__dt__13COutFontSet_cFv.s"
}
#pragma pop
COutFontSet_c::~COutFontSet_c() {}
/* ############################################################################################## */
/* 80454A10-80454A14 003010 0004+00 4/4 0/0 0/0 .sdata2 @3748 */
@@ -420,57 +273,85 @@ SECTION_SDATA2 static u8 lit_3748[4] = {
SECTION_SDATA2 static f32 lit_3749 = 1.0f;
/* 80225C3C-80225C70 22057C 0034+00 2/2 0/0 0/0 .text initialize__13COutFontSet_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFontSet_c::initialize() {
nofralloc
#include "asm/d/msg/d_msg_out_font/initialize__13COutFontSet_cFv.s"
void COutFontSet_c::initialize() {
mpTextBoxPtr = NULL;
f32 tmp_0 = FLOAT_LABEL(lit_3748);
mPosX = tmp_0;
mPosY = tmp_0;
f32 tmp_1 = lit_3749;
mSizeX = tmp_1;
mSizeY = tmp_1;
mAlpha = 255;
mType = 0x47;
}
#pragma pop
/* 80225C70-80225C94 2205B0 0024+00 1/1 0/0 0/0 .text
* drawFont__13COutFontSet_cFP10J2DTextBoxUcffffUlUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFontSet_c::drawFont(J2DTextBox* param_0, u8 param_1, f32 param_2, f32 param_3,
f32 param_4, f32 param_5, u32 param_6, u8 param_7) {
nofralloc
#include "asm/d/msg/d_msg_out_font/drawFont__13COutFontSet_cFP10J2DTextBoxUcffffUlUc.s"
void COutFontSet_c::drawFont(J2DTextBox* p_textBox, u8 type, f32 posX, f32 posY,
f32 sizeX, f32 sizeY, u32 color, u8 alpha) {
mpTextBoxPtr = p_textBox;
mPosX = posX;
mPosY = posY;
mSizeX = sizeX;
mSizeY = sizeY;
mAlpha = alpha;
mColor = color;
mType = type;
}
#pragma pop
/* 80225C94-80225D60 2205D4 00CC+00 0/0 5/5 0/0 .text __ct__10COutFont_cFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm COutFont_c::COutFont_c(u8 param_0) {
nofralloc
#include "asm/d/msg/d_msg_out_font/__ct__10COutFont_cFUc.s"
COutFont_c::COutFont_c(u8 param_0) {
field_0x242 = param_0;
for (int i = 0; i < 35; i++) {
mpOfs[i] = new COutFontSet_c();
}
for (int i = 0; i < 70; i++) {
mpPane[i] = NULL;
field_0x1b4[i] = 0;
}
mAlphaRatio = FLOAT_LABEL(lit_3748);
f32 tmp_1 = lit_3749;
field_0x1b0 = tmp_1;
field_0x1ac = tmp_1;
field_0x240 = 0;
mRupeeColor = 0;
}
#pragma pop
/* 80225D60-80225E7C 2206A0 011C+00 1/0 0/0 0/0 .text __dt__10COutFont_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm COutFont_c::~COutFont_c() {
nofralloc
#include "asm/d/msg/d_msg_out_font/__dt__10COutFont_cFv.s"
COutFont_c::~COutFont_c() {
for (int i = 0; i < 35; i++) {
delete mpOfs[i];
mpOfs[i] = NULL;
}
if (field_0x240) {
field_0x240 = 0;
for (int i = 0; i < 70; i++) {
if (mpPane[i] != NULL) {
delete mpPane[i];
mpPane[i] = NULL;
}
}
}
if (dComIfGp_getExpHeap2D() == NULL) {
dComIfGp_getItemIconArchive()->removeResourceAll();
}
}
#pragma pop
/* 80225E7C-80225EA8 2207BC 002C+00 1/0 0/0 0/0 .text setPane__10COutFont_cFP10J2DPicture
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFont_c::setPane(J2DPicture* param_0) {
nofralloc
#include "asm/d/msg/d_msg_out_font/setPane__10COutFont_cFP10J2DPicture.s"
void COutFont_c::setPane(J2DPicture* p_pic) {
for (int i = 0; i < 70; i++) {
mpPane[i] = p_pic;
p_pic++;
}
field_0x240 = false;
}
#pragma pop
/* ############################################################################################## */
/* 80454A18-80454A20 003018 0008+00 2/2 0/0 0/0 .sdata2 @4397 */
@@ -487,36 +368,29 @@ asm void COutFont_c::createPane() {
#pragma pop
/* 80226CF8-80226D4C 221638 0054+00 0/0 2/2 0/0 .text initialize__10COutFont_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFont_c::initialize() {
nofralloc
#include "asm/d/msg/d_msg_out_font/initialize__10COutFont_cFv.s"
void COutFont_c::initialize() {
for (int i = 0; i < 35; i++) {
mpOfs[i]->initialize();
}
}
#pragma pop
/* 80226D4C-80226DA8 22168C 005C+00 1/0 0/0 0/0 .text
* drawFont__10COutFont_cFP10J2DTextBoxUcffffUlUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFont_c::drawFont(J2DTextBox* param_0, u8 param_1, f32 param_2, f32 param_3,
f32 param_4, f32 param_5, u32 param_6, u8 param_7) {
nofralloc
#include "asm/d/msg/d_msg_out_font/drawFont__10COutFont_cFP10J2DTextBoxUcffffUlUc.s"
void COutFont_c::drawFont(J2DTextBox* p_textBox, u8 type, f32 posX, f32 posY,
f32 sizeX, f32 sizeY, u32 color, u8 alpha) {
posY += lit_3749;
for (int i = 0; i < 35; i++) {
if (mpOfs[i]->getType() == 0x47) {
mpOfs[i]->drawFont(p_textBox, type, posX, posY, sizeX, sizeY, color, alpha);
return;
}
}
}
#pragma pop
/* 80226DA8-80226DB0 2216E8 0008+00 1/0 0/0 0/0 .text setAlphaRatio__10COutFont_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFont_c::setAlphaRatio(f32 param_0) {
nofralloc
#include "asm/d/msg/d_msg_out_font/setAlphaRatio__10COutFont_cFf.s"
void COutFont_c::setAlphaRatio(f32 ratio) {
mAlphaRatio = ratio;
}
#pragma pop
/* ############################################################################################## */
/* 80454A20-80454A24 003020 0004+00 1/1 0/0 0/0 .sdata2 @4986 */
@@ -560,6 +434,336 @@ SECTION_SDATA2 static f64 lit_5001 = 4503601774854144.0 /* cast s32 to float */;
/* 80226DB0-80228448 2216F0 1698+00 2/0 0/0 0/0 .text draw__10COutFont_cFP10J2DTextBoxfff
*/
#ifdef NONMATCHING
void COutFont_c::draw(J2DTextBox* p_textBox, f32 param_1, f32 param_2, f32 param_3) {
s16 sp256[70];
for (int i = 0; i < 70; i++) {
sp256[i] = field_0x1b4[i];
}
for (int i = 0; i < 35; i++) {
u8 type = mpOfs[i]->getType();
J2DTextBox* tbox = mpOfs[i]->getTextBoxPtr();
if (p_textBox == tbox && type != 0x47) {
f32 local_10c = 1.0f;
f32 local_110 = 1.0f;
if (p_textBox != NULL) {
for (J2DPane* pane = p_textBox; pane != NULL; pane = pane->getParentPane()) {
local_10c *= pane->getScaleX();
local_110 *= pane->getScaleY();
}
}
f32 posX = param_1 + param_3 * (local_10c * mpOfs[i]->getPosX());
f32 posY = param_2 + (local_110 * mpOfs[i]->getPosY());
f32 sizeX = local_10c * mpOfs[i]->getSizeX();
f32 sizeY = local_110 * mpOfs[i]->getSizeY();
if (mpPane[type] != NULL) {
mpPane[type]->setAlpha(mAlphaRatio * mpPane[i]->getAlpha());
switch (type) {
case 10:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, false, true);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, true);
break;
case 11:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, true, true);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, true, true);
break;
case 29:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, true, true);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(255, 80, 80, 255));
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, true, true);
break;
case 12:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, true, false);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, true, false);
break;
case 5:
case 6: {
posY += 1.0f;
sizeY -= 3.0f;
JUtility::TColor black = mpPane[type]->getBlack();
JUtility::TColor white = mpPane[type]->getWhite();
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, false, false);
mpPane[type]->setBlackWhite(black, white);
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
}
case 9:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 80) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
if (field_0x1b4[type] < 20) {
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, true);
} else if (field_0x1b4[type] < 40) {
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
} else if (field_0x1b4[type] < 60) {
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, true);
} else {
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, false);
}
break;
case 14:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 20) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, true);
break;
case 15:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 20) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, true);
break;
case 16:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 20) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 17:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 20) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, false);
break;
case 18:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 40) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
if (field_0x1b4[type] < 20) {
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, true);
} else {
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, true);
}
break;
case 19:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 40) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
if (field_0x1b4[type] < 20) {
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
} else {
mpPane[type]->draw(posX, posY, sizeX, sizeY, true, true, false);
}
break;
case 13:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, false, false);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 24:
case 27:
case 28:
case 43:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 42:
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 20:
case 21:
case 22:
field_0x1b4[type]++;
if (field_0x1b4[type] >= 28) {
field_0x1b4[type] = 0;
}
mpPane[type]->rotate(0.5f * posX, 0.5f * posY, ROTATE_Z, (360.0f * (f32)field_0x1b4[type]) / 28.0f);
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 25: // some issues in here, 2020
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 18) {
field_0x1b4[type] -= 18;
}
}
f32 alpha;
if (field_0x1b4[type] < 9) {
alpha = field_0x1b4[type];
} else {
alpha = 18.0f - field_0x1b4[type];
}
mpPane[26]->setAlpha(((alpha / 9.0f) * 205.0f + 50.0f) * mAlphaRatio);
f32 tmpX = 0.5f * (g_MsgObject_HIO_c.mPortalIconScale - 1.0f) * sizeX;
f32 tmpY = 0.5f * (g_MsgObject_HIO_c.mPortalIconScale - 1.0f) * sizeY;
mpPane[26]->draw(posX - tmpX, posY - tmpY, g_MsgObject_HIO_c.mPortalIconScale * sizeX, g_MsgObject_HIO_c.mPortalIconScale * sizeY, false, false, false);
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 26:
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 30:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(255, 255, 255, 255));
mpPane[type]->draw(posX + (0.5f * (sizeX * (field_0x1ac - 1.0f))), posY + (0.5f * (sizeY * (field_0x1b0 - 1.0f))), sizeX * field_0x1ac, sizeY * field_0x1b0, false, false, false);
break;
case 31:
case 32:
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 41:
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 44:
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + ((posY + -3.0f) - 4.0f), sizeX, sizeY * 1.25f, false, false, false);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), mpOfs[i]->getColor());
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 45:
mpPane[type]->draw(posX, (posY + -3.0f) - 4.0f, sizeX, sizeY * 1.25f, false, false, false);
break;
case 46:
case 47:
case 55:
case 56:
case 57:
case 58:
case 61:
case 69:
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 49:
case 50:
case 65:
case 66:
case 67:
case 68:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 40) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, false, false);
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(255, 255, 255, 255));
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 48:
case 59:
case 60:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 40) {
field_0x1b4[type] = 0;
}
setBlendAnime(mpPane[type], field_0x1b4[type]);
}
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
case 62:
if (sp256[type] == field_0x1b4[type]) {
field_0x1b4[type]++;
if (field_0x1b4[type] >= 10) {
field_0x1b4[type] = 0;
}
if (field_0x1b4[type] < 5) {
mpPane[type]->setBlendRatio(1.0f, 0.0f);
} else {
mpPane[type]->setBlendRatio(0.0f, 1.0f);
}
}
mpPane[type]->draw(posX, -3.0f + posY, sizeX, 1.25f * sizeY, false, false, false);
break;
default:
JUtility::TColor black = mpPane[type]->getBlack();
JUtility::TColor white = mpPane[type]->getWhite();
mpPane[type]->setBlackWhite(JUtility::TColor(0, 0, 0, 0), JUtility::TColor(0, 0, 0, 255));
mpPane[type]->draw(2.0f + posX, 2.0f + posY, sizeX, sizeY, false, false, false);
mpPane[type]->setBlackWhite(black, white);
mpPane[type]->draw(posX, posY, sizeX, sizeY, false, false, false);
break;
}
}
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -568,17 +772,20 @@ asm void COutFont_c::draw(J2DTextBox* param_0, f32 param_1, f32 param_2, f32 par
#include "asm/d/msg/d_msg_out_font/draw__10COutFont_cFP10J2DTextBoxfff.s"
}
#pragma pop
#endif
/* 80228448-80228490 222D88 0048+00 1/0 0/0 0/0 .text reset__10COutFont_cFP10J2DTextBox
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFont_c::reset(J2DTextBox* param_0) {
nofralloc
#include "asm/d/msg/d_msg_out_font/reset__10COutFont_cFP10J2DTextBox.s"
void COutFont_c::reset(J2DTextBox* p_textBox) {
if (p_textBox != NULL) {
for (int i = 0; i < 35; i++) {
if (p_textBox == mpOfs[i]->getTextBoxPtr()) {
mpOfs[i]->setTextBoxPtr(NULL);
mpOfs[i]->resetType();
}
}
}
}
#pragma pop
/* 80228490-80228530 222DD0 00A0+00 1/1 0/0 0/0 .text setBlendAnime__10COutFont_cFP10J2DPictures
*/
@@ -592,13 +799,85 @@ asm void COutFont_c::setBlendAnime(J2DPicture* param_0, s16 param_1) {
#pragma pop
/* 80228530-80228578 222E70 0048+00 1/1 0/0 0/0 .text getBtiName__10COutFont_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void COutFont_c::getBtiName(int param_0) {
nofralloc
#include "asm/d/msg/d_msg_out_font/getBtiName__10COutFont_cFi.s"
const char* COutFont_c::getBtiName(int nameIdx) {
static char* mpIconName[70] = {
"font_00.bti",
"font_01.bti",
"font_09.bti",
"font_04.bti",
"font_05.bti",
"font_02.bti",
"font_03.bti",
"font_06.bti",
"font_08.bti",
"font_07_01.bti",
"font_10.bti",
"font_10.bti",
"font_10.bti",
"font_10.bti",
"font_07_01.bti",
"font_07_01.bti",
"font_07_01.bti",
"font_07_01.bti",
"font_07_01.bti",
"font_07_01.bti",
"font_15.bti",
"font_15.bti",
"font_15.bti",
"font_12.bti",
"font_15.bti",
"im_map_icon_portal_4ia_40_05.bti",
"font_16_backlight.bti",
"font_13.bti",
"font_14.bti",
"font_10.bti",
"im_zelda_item_icon_rupy_13.bti",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"",
"st_bompoach_lv1.bti",
"font_46.bti",
"font_47.bti",
"font_35.bti",
"font_36.bti",
"font_19.bti",
"font_20.bti",
"font_19.bti",
"font_22.bti",
"font_23.bti",
"font_24.bti",
"font_25.bti",
"font_40.bti",
"font_39.bti",
"font_29.bti",
"font_28.bti",
"font_30.bti",
"font_31.bti",
"font_29.bti",
"font_28.bti",
"font_32.bti",
"font_33.bti",
"font_41.bti",
"font_42.bti",
"font_50.bti",
"font_49.bti",
"font_51.bti",
"font_52.bti",
"font_53.bti",
};
if (nameIdx >= 31 && nameIdx <= 40) {
return dMeter2Info_getNumberTextureName(nameIdx - 31);
}
return mpIconName[nameIdx];
}
#pragma pop
/* 80399350-80399350 0259B0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-35
View File
@@ -7,41 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct J2DTextBox {};
struct JUTFont {};
struct COutFont_c {
/* 80225C94 */ COutFont_c(u8);
};
struct dMsgString_c {
/* 80191B6C */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
/* 801E1D10 */ void getStringPage(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*,
u8);
/* 80249C20 */ dMsgString_c();
/* 80249CA0 */ dMsgString_c(u8);
/* 80249D28 */ ~dMsgString_c();
/* 80249DB4 */ void resetStringLocal(J2DTextBox*);
/* 80249DE4 */ void drawOutFontLocal(J2DTextBox*, f32);
/* 80249ED0 */ void drawFontLocal(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8);
};
struct dMsgStringBase_c {
/* 802493B4 */ dMsgStringBase_c();
/* 80249528 */ ~dMsgStringBase_c();
/* 80249700 */ void getResource();
/* 80249BF8 */ void getMessage(u32, char*);
};
struct J2DPane {
/* 802F79A8 */ void getGlbVtx(u8) const;
};
//
// Forward References:
//
-50
View File
@@ -16,10 +16,6 @@ struct jmessage_string_tControl {
/* 8022FB5C */ jmessage_string_tControl();
};
struct J2DTextBox {};
struct JUTFont {};
struct COutFont_c {};
struct jmessage_string_tReference {
@@ -37,49 +33,6 @@ struct jmessage_string_tRenderingProcessor {
/* 80230BC8 */ jmessage_string_tRenderingProcessor(jmessage_string_tReference const*);
};
struct dMsgStringBase_c {
/* 802493B4 */ dMsgStringBase_c();
/* 80249528 */ ~dMsgStringBase_c();
/* 80249700 */ void getResource();
/* 80249768 */ void getStringLocal(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
/* 802498D8 */ void getStringPageLocal(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*,
COutFont_c*, u8);
/* 80249A48 */ void getPageMax(int);
/* 80249A70 */ void getMessageLocal(u32, char*);
/* 80249BAC */ void drawFontLocal(J2DTextBox*, u8, f32, f32, f32, f32, u32, u8);
/* 80249BB0 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, u8);
/* 80249BD0 */ void getStringPage(u32, u8, u8, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*,
u8);
/* 80249BF8 */ void getMessage(u32, char*);
/* 80249C18 */ void resetStringLocal(J2DTextBox*);
/* 80249C1C */ void drawOutFontLocal(J2DTextBox*, f32);
};
struct JMessage {
struct TControl {
/* 802A75D4 */ void reset();
/* 802A7634 */ void update();
/* 802A76BC */ void render();
/* 802A78F4 */ void setMessageID(u32, u32, bool*);
};
struct TResourceContainer {
struct TCResource {
/* 802A8EF8 */ ~TCResource();
};
/* 802A906C */ TResourceContainer();
};
struct TParse {
/* 802A9130 */ TParse(JMessage::TResourceContainer*);
};
};
struct JKRArchive {
/* 802D5B38 */ void getGlbResource(u32, char const*, JKRArchive*);
};
//
// Forward References:
//
@@ -135,9 +88,6 @@ extern "C" void _restgpr_23();
extern "C" void _restgpr_25();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void strcpy();
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_meter2_info[248];
//
// Declarations:
+3 -12
View File
@@ -150,16 +150,6 @@ struct dPa_fsenthPcallBack {
/* 8004FE6C */ ~dPa_fsenthPcallBack();
};
struct dPa_followEcallBack {
/* 80049580 */ dPa_followEcallBack(u8, u8);
/* 800495BC */ void execute(JPABaseEmitter*);
/* 800496B0 */ void draw(JPABaseEmitter*);
/* 800496B4 */ void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
/* 8004974C */ void end();
/* 80050200 */ ~dPa_followEcallBack();
/* 80050284 */ void cleanup();
};
struct cBgS_PolyInfo {};
struct dJntCol_c {
@@ -1498,7 +1488,7 @@ asm void dPa_control_c::level_c::allForceOnEventMove() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dPa_control_c::level_c::emitter_c* dPa_control_c::level_c::getEmitter(u32 param_0) {
asm JPABaseEmitter* dPa_control_c::level_c::getEmitter(u32 param_0) {
nofralloc
#include "asm/d/particle/d_particle/getEmitter__Q213dPa_control_c7level_cFUl.s"
}
@@ -2472,7 +2462,8 @@ asm void dPa_light8EcallBack::drawAfter(JPABaseEmitter* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dPa_followEcallBack::~dPa_followEcallBack() {
// asm dPa_followEcallBack::~dPa_followEcallBack() {
extern "C" asm void __dt__19dPa_followEcallBackFv() {
nofralloc
#include "asm/d/particle/d_particle/__dt__19dPa_followEcallBackFv.s"
}
+110 -27
View File
@@ -14,32 +14,21 @@
#include "f_op/f_op_overlap_mng.h"
#include "f_op/f_op_scene_mng.h"
#include "m_Do/m_Do_audio.h"
#include "d/d_demo.h"
#include "d/d_model.h"
#include "d/d_procname.h"
#include "f_op/f_op_msg_mng.h"
#include "d/save/d_save_HIO.h"
//
// Types:
//
struct daYkgr_c {
static u8 m_emitter[4];
};
struct daSus_c {
/* 800313BC */ void reset();
/* 800315A4 */ static void execute();
};
struct dMdl_mng_c {
/* 8009C7AC */ void create();
/* 8009C864 */ void remove();
/* 8009C8C0 */ static void reset();
};
struct dDemo_c {
/* 80039678 */ void create();
/* 80039910 */ void remove();
/* 80039DA4 */ static void update();
};
struct cDylPhs {
/* 8001884C */ void Link(request_of_phase_process_class*, s16);
/* 80018890 */ void Unlink(request_of_phase_process_class*, s16);
@@ -202,7 +191,7 @@ extern "C" u8 mGndCheck__11fopAcM_gc_c[84];
extern "C" u8 mRoofCheck__11fopAcM_rc_c[80];
extern "C" u8 mWaterCheck__11fopAcM_wt_c[84 + 4 /* padding */];
extern "C" extern dScnKy_env_light_c g_env_light;
extern "C" extern u8 g_save_bit_HIO[1184 + 4 /* padding */];
extern "C" extern dSvBit_HIO_c g_save_bit_HIO;
extern "C" extern GXColor g_saftyWhiteColor;
extern "C" u8 mFader__13mDoGph_gInf_c[4];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
@@ -236,6 +225,7 @@ static u8 dylPreLoadTime1[4];
static u8 data_8045110C[4];
/* 80451110-80451114 000610 0004+00 1/1 0/0 0/0 .sbss resPreLoadTime0 */
//static OSTime resPreLoadTime0;
static u8 resPreLoadTime0[4];
/* 80451114-80451118 000614 0004+00 1/1 0/0 0/0 .sbss None */
@@ -433,7 +423,7 @@ static int dScnPly_Draw(dScnPly_c* scn) {
dMdl_mng_c::reset();
if (!dComIfGp_isPauseFlag() && struct_80451124 == 0) {
if (fpcM_GetName(scn) == 0xB) {
if (fpcM_GetName(scn) == PROC_PLAY_SCENE) {
dComIfGp_getVibration().Run();
}
daSus_c::execute();
@@ -537,12 +527,12 @@ SECTION_DEAD static char const* const stringBase_8039A2DF = "T_JOINT";
SECTION_SDATA static char* T_JOINT_resName = "Always";
/* 80450764-80450768 -00001 0004+00 4/4 0/0 0/0 .sdata None */
SECTION_SDATA static u8 struct_80450764[2] = {
/* 80450764 0001+00 data_80450764 None */
0xFF,
/* 80450765 0003+00 data_80450765 None */
0x01,
};
SECTION_SDATA static s8 struct_80450764 = 0xFF;
#pragma push
#pragma force_active on
SECTION_SDATA static u8 data_80450765 = 1;
#pragma pop
/* 802598AC-80259AC4 2541EC 0218+00 1/0 0/0 0/0 .text dScnPly_Delete__FP9dScnPly_c */
#pragma push
@@ -556,7 +546,7 @@ static asm void dScnPly_Delete(dScnPly_c* param_0) {
/* 80259AC4-80259BFC 254404 0138+00 1/1 0/0 0/0 .text resetGame__9dScnPly_cFv */
bool dScnPly_c::resetGame() {
if (fpcM_GetName(this) == 0xC) {
if (fpcM_GetName(this) == PROC_OPENING_SCENE) {
if (!dStage_roomControl_c::resetArchiveBank(0)) {
return false;
}
@@ -847,8 +837,8 @@ static u8 lit_4050[12];
#pragma pop
/* 8043079C-804307E0 05D4BC 0044+00 1/2 3/3 0/0 .bss g_envHIO */
extern u8 g_envHIO[68];
u8 g_envHIO[68];
extern s8 g_envHIO[68];
s8 g_envHIO[68];
/* 80454F30-80454F34 003530 0004+00 1/1 0/0 0/0 .sdata2 @4804 */
SECTION_SDATA2 static f32 lit_4804 = 608.0f;
@@ -863,7 +853,99 @@ SECTION_SDATA2 static f32 lit_4806[1 + 1 /* padding */] = {
0.0f,
};
class daYkgr_c {
public:
static void init() {
m_emitter = 0;
*struct_80450D8C = 0;
*(struct_80450D8C + 1) = 1;
*(struct_80450D8C + 2) = 0xFF;
}
static u32 m_emitter;
};
/* 8025A654-8025A9F4 254F94 03A0+00 1/0 0/0 0/0 .text phase_4__FP9dScnPly_c */
#ifdef NONMATCHING
static int phase_4(dScnPly_c* i_this) {
if (i_this->sceneCommand) {
dComIfGp_particle_createScene(i_this->sceneCommand->getMemAddress());
i_this->sceneCommand->destroy();
} else {
dComIfGp_particle_createScene(NULL);
}
if (i_this->field_0x1d0 != NULL) {
dComIfGp_setMsgDtArchive(1, i_this->field_0x1d0->getArchive());
i_this->field_0x1d0->destroy();
}
dComIfGp_calcNowRegion();
dComIfG_Bgsp().Ct();
fopAcM_lc_c::getLineCheck()->ClearPi();
fopAcM_gc_c::getGroundCheck()->ClearPi();
fopAcM_rc_c::getRoofCheck()->ClearPi();
fopAcM_wt_c::getWaterCheck()->ClearPi();
dComIfG_Ccsp()->Ct();
dDemo_c::create();
dComIfGp_setPlayerInfo(0, NULL, 0);
for (int i = 0; i < 2; i++) {
dComIfGp_setPlayerPtr(i, NULL);
}
dComIfGp_setWindow(0, 0.0f, 0.0f, 608.0f, 448.0f, 0.0f, 1.0f, 0, 2);
dComIfGp_setCameraInfo(0, NULL, 0, 0, -1);
dComIfGd_setWindow(NULL);
dComIfGd_setViewport(NULL);
dComIfGd_setView(NULL);
dComIfGp_setExpHeap2D(fopMsgM_createExpHeap(0xBB800, NULL));
dComIfGp_setMsgExpHeap(fopMsgM_createExpHeap(0xA800, NULL));
if (fpcM_GetName(i_this) == PROC_OPENING_SCENE) {
fopAcM_create(PROC_TITLE, 0, NULL, -1, NULL, NULL, -1);
dComIfGs_init();
dComIfGs_setOptPointer(0);
dComIfGs_setLife(12);
dMeter2Info_setCloth(WEAR_KOKIRI, false);
dMeter2Info_setSword(SWORD, false);
dMeter2Info_setShield(HYLIA_SHIELD, false);
dComIfGs_onEventBit(0x0601); // Epona Tamed
}
dMpath_c::create();
dTres_c::create();
dStage_Create();
dComIfGp_createSimpleModel();
dMdl_mng_c::create();
mDoGph_gInf_c::setTickRate((OS_BUS_CLOCK / 4) / 30);
g_envHIO[4] = -1;
g_save_bit_HIO.field_0x4 = -1;
new (&dComIfGp_getAttention()) dAttention_c((fopAc_ac_c*)dComIfGp_getPlayer(0), 0);
dComIfGp_getVibration().Init();
daYkgr_c::init();
dComIfG_setBrightness(255);
mDoGph_gInf_c::offFade();
mDoAud_zelAudio_c::onBgmSet();
struct_80451124 = 0;
data_80451125 = 0;
struct_80450764 = -1;
if (data_80450765 != 0 && !strcmp(dComIfGp_getStartStageName(), (char*)PreLoadInfoT[0])) {
struct_80450764 = 0;
}
if (struct_80450764 < 0) {
return 4;
}
resPreLoadTime0 = OSGetTime();
return 2;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -872,6 +954,7 @@ static asm void phase_4(dScnPly_c* param_0) {
#include "asm/d/s/d_s_play/phase_4__FP9dScnPly_c.s"
}
#pragma pop
#endif
/* 8025A9F4-8025AAC0 255334 00CC+00 1/0 0/0 0/0 .text phase_5__FP9dScnPly_c */
#pragma push
+178 -91
View File
@@ -4,10 +4,16 @@
//
#include "f_op/f_op_actor.h"
#include "f_op/f_op_actor_tag.h"
#include "d/d_stage.h"
#include "dol2asm.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/types.h"
#include "d/com/d_com_inf_game.h"
#include "d/com/d_com_static.h"
#include "d/com/d_com_inf_actor.h"
#include "d/s/d_s_play.h"
#include "d/d_demo.h"
//
// Types:
@@ -20,40 +26,6 @@ struct fopEn_enemy_c {
/* 800196A0 */ void drawBallModel(dKy_tevstr_c*);
};
struct daSus_c {
/* 800314D4 */ void check(fopAc_ac_c*);
};
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 {
/* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*,
cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*,
_GXColor const*, cXyz const*, f32);
};
struct dEvt_control_c {
/* 80042FA8 */ void moveApproval(void*);
};
struct dDemo_object_c {
/* 80039088 */ void getActor(u8);
};
struct dDemo_c {
static u8 m_object[4];
};
struct dDemo_actor_c {
/* 8003815C */ void setActor(fopAc_ac_c*);
};
//
// Forward References:
//
@@ -125,25 +97,15 @@ extern "C" void entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
extern "C" void __construct_array();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" f32 Zero__4cXyz[3];
extern "C" extern u8 g_dComIfAc_gameInfo[8];
extern "C" u8 m_object__7dDemo_c[4];
extern "C" extern u8 struct_80451124[4];
//
// Declarations:
//
/* 80018B64-80018BD0 0134A4 006C+00 0/0 7/7 562/562 .text __ct__10fopAc_ac_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm fopAc_ac_c::fopAc_ac_c() {
nofralloc
#include "asm/f_op/f_op_actor/__ct__10fopAc_ac_cFv.s"
}
#pragma pop
fopAc_ac_c::fopAc_ac_c() {}
/* 80018BD0-80018C0C 013510 003C+00 0/0 12/12 0/0 .text __dt__5csXyzFv */
#pragma push
@@ -193,78 +155,117 @@ SECTION_DATA extern void* __vt__11dEvt_info_c[3 + 1 /* padding */] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dEvt_info_c::~dEvt_info_c() {
// asm dEvt_info_c::~dEvt_info_c() {
extern "C" asm void __dt__11dEvt_info_cFv() {
nofralloc
#include "asm/f_op/f_op_actor/__dt__11dEvt_info_cFv.s"
}
#pragma pop
/* 80018C8C-80018CE0 0135CC 0054+00 0/0 5/5 270/270 .text __dt__10fopAc_ac_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm fopAc_ac_c::~fopAc_ac_c() {
nofralloc
#include "asm/f_op/f_op_actor/__dt__10fopAc_ac_cFv.s"
}
#pragma pop
fopAc_ac_c::~fopAc_ac_c() {}
/* ############################################################################################## */
/* 80450CB8-80450CBC 0001B8 0004+00 2/2 0/0 0/0 .sbss g_fopAc_type */
static u8 g_fopAc_type[4];
static int g_fopAc_type;
/* 80018CE0-80018D0C 013620 002C+00 0/0 12/12 391/391 .text fopAc_IsActor__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 fopAc_IsActor(void* param_0) {
nofralloc
#include "asm/f_op/f_op_actor/fopAc_IsActor__FPv.s"
s32 fopAc_IsActor(void* actor) {
return fpcM_IsJustType(g_fopAc_type, ((fopAc_ac_c*)actor)->mAcType);
}
#pragma pop
/* ############################################################################################## */
/* 80450CBC-80450CC0 0001BC 0004+00 2/2 1/1 0/0 .sbss stopStatus__10fopAc_ac_c */
u32 fopAc_ac_c::stopStatus;
/* 80018D0C-80018DD8 01364C 00CC+00 1/0 0/0 0/0 .text fopAc_Draw__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void fopAc_Draw(void* param_0) {
nofralloc
#include "asm/f_op/f_op_actor/fopAc_Draw__FPv.s"
static int fopAc_Draw(void* actor) {
fopAc_ac_c* ac = (fopAc_ac_c*)actor;
int ret = 1;
if (!dComIfGp_isPauseFlag()) {
if ((dComIfGp_event_moveApproval(ac) == 2 || (!fopAcM_checkStatus(ac, fopAc_ac_c::stopStatus) && (!fopAcM_checkStatus(ac, 0x100) || !fopAcM_cullingCheck(ac)))) && !fopAcM_checkStatus(ac, 0x21000000)) {
fopAcM_OffCondition(ac, 4);
ret = fpcLf_DrawMethod((leafdraw_method_class*)ac->mSubMtd, ac);
} else {
fopAcM_OnCondition(ac, 4);
}
fopAcM_OffStatus(ac, 0x1000000);
}
return ret;
}
#pragma pop
/* ############################################################################################## */
/* 80451BC8-80451BCC 0001C8 0004+00 1/1 0/0 0/0 .sdata2 @4324 */
SECTION_SDATA2 static f32 lit_4324 = 5000.0f;
/* 80451BCC-80451BD0 0001CC 0004+00 1/1 0/0 0/0 .sdata2 @4325 */
SECTION_SDATA2 static f32 lit_4325 = -9.999999848243207e+30f;
/* 80018DD8-80018F78 013718 01A0+00 1/0 0/0 0/0 .text fopAc_Execute__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void fopAc_Execute(void* param_0) {
nofralloc
#include "asm/f_op/f_op_actor/fopAc_Execute__FPv.s"
static int fopAc_Execute(void* actor) {
fopAc_ac_c* ac = (fopAc_ac_c*)actor;
int ret = 1;
if (!dComIfGp_isPauseFlag() && dScnPly_c::isPause()) {
if (!dComIfA_PauseCheck()) {
daSus_c::check(ac);
ac->mEvtInfo.beforeProc();
s32 move = dComIfGp_event_moveApproval(actor);
fopAcM_OffStatus(ac, 0x40000000);
if (!fopAcM_checkStatus(ac, 0x20000000) && (move == 2 || (move != 0 && !fopAcM_checkStatus(ac, fopAc_ac_c::stopStatus) && (!fopAcM_checkStatus(ac, 0x80) || !fopAcM_CheckCondition(ac, 4))))) {
fopAcM_OffCondition(ac, 2);
ac->mNext = ac->mCurrent;
ret = fpcMtd_Execute((process_method_class*)ac->mSubMtd, ac);
} else {
ac->mEvtInfo.suspendProc(ac);
fopAcM_OnCondition(ac, 2);
}
if (fopAcM_checkStatus(ac, 0x20) && ac->mOrig.mPosition.y - ac->mCurrent.mPosition.y > 5000.0f) {
fopAcM_delete(ac);
}
if (ac->mCurrent.mPosition.y < -9.999999848243207e+30f) {
ac->mCurrent.mPosition.y = -9.999999848243207e+30f;
}
dKy_depth_dist_set(ac);
}
}
return ret;
}
#pragma pop
/* 80018F78-80018FCC 0138B8 0054+00 1/0 0/0 0/0 .text fopAc_IsDelete__FPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void fopAc_IsDelete(void* param_0) {
nofralloc
#include "asm/f_op/f_op_actor/fopAc_IsDelete__FPv.s"
static int fopAc_IsDelete(void* actor) {
fopAc_ac_c* ac = (fopAc_ac_c*)actor;
int isDelete = fpcMtd_IsDelete((process_method_class*)ac->mSubMtd, ac);
if (isDelete == true) {
fopDwTg_DrawQTo(&ac->mDwTg);
}
return isDelete;
}
#pragma pop
/* 80018FCC-8001904C 01390C 0080+00 1/0 0/0 0/0 .text fopAc_Delete__FPv */
#ifdef NONMATCHING
static int fopAc_Delete(void* actor) {
fopAc_ac_c* ac = (fopAc_ac_c*)actor;
int deleted = fpcMtd_Delete((process_method_class*)ac->mSubMtd, ac);
if (deleted == true) {
fopAcTg_ActorQTo(&ac->mAcTg);
fopDwTg_DrawQTo(&ac->mDwTg);
fopAcM_DeleteHeap(ac);
dDemo_actor_c* demoAc = dDemo_c::getActor(ac->mDemoActorId);
if (demoAc != NULL) {
demoAc->setActor(NULL);
}
}
return deleted;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -273,6 +274,7 @@ static asm void fopAc_Delete(void* param_0) {
#include "asm/f_op/f_op_actor/fopAc_Delete__FPv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80451BD0-80451BD4 0001D0 0004+00 2/2 0/0 0/0 .sdata2 @4431 */
@@ -285,14 +287,99 @@ SECTION_SDATA2 static f32 lit_4432 = -100.0f;
SECTION_SDATA2 static f64 lit_4434 = 4503599627370496.0 /* cast u32 to float */;
/* 8001904C-800193FC 01398C 03B0+00 1/0 0/0 0/0 .text fopAc_Create__FPv */
// swapped registers
#ifdef NONMATCHING
static int fopAc_Create(void* actor) {
fopAc_ac_c* ac = (fopAc_ac_c*)actor;
if (fpcM_IsFirstCreating(actor)) {
leaf_process_profile_definition* profile = fpcM_GetProfile(actor);
ac->mAcType = fpcBs_MakeOfType(&g_fopAc_type);
ac->mSubMtd = (profile_method_class*)profile->mBase.mMethods;
fopAcTg_Init(&ac->mAcTg, ac);
fopAcTg_ToActorQ(&ac->mAcTg);
fopDwTg_Init(&ac->mDwTg, ac);
ac->mStatus = profile->field_0x28;
ac->mGroup = profile->field_0x2c;
ac->mCullType = profile->field_0x2d;
fopAcM_prm_class* append = fopAcM_GetAppend(ac);
if (append != NULL) {
fopAcM_SetParam(ac, append->mParameter);
ac->mOrig.mPosition = append->mPos;
ac->mOrig.mAngle = append->mAngle;
ac->mCollisionRot = append->mAngle;
ac->mParentPcId = append->mParentPId;
ac->mSubtype = append->mSubtype;
ac->mScale.set(append->mScale[0] * 0.1f, append->mScale[1] * 0.1f, append->mScale[2] * 0.1f);
ac->mSetID = append->mEnemyNo;
ac->mOrig.mRoomNo = append->mRoomNo;
}
ac->mNext = ac->mOrig;
ac->mCurrent = ac->mOrig;
ac->mEyePos = ac->mOrig.mPosition;
ac->mMaxFallSpeed = -100.0f;
ac->mAttentionInfo.field_0x0[0] = 1;
ac->mAttentionInfo.field_0x0[1] = 2;
ac->mAttentionInfo.field_0x0[2] = 3;
ac->mAttentionInfo.field_0x0[3] = 5;
ac->mAttentionInfo.field_0x4[0] = 6;
ac->mAttentionInfo.field_0x4[3] = 14;
ac->mAttentionInfo.field_0x4[1] = 15;
ac->mAttentionInfo.field_0x4[2] = 15;
ac->mAttentionInfo.field_0x8[0] = 51;
ac->mAttentionInfo.mPosition = ac->mOrig.mPosition;
ac->mAttentionInfo.field_0xa = 30;
dKy_tevstr_init(&ac->mTevStr, ac->mOrig.mRoomNo, -1);
int roomNo = dComIfGp_roomControl_getStayNo();
if (roomNo >= 0) {
dComIfGp_roomControl_getStatusRoomDt(roomNo)->mRoomDt.getFileListInfo();
}
dStage_FileList_dt_c* filelist = NULL;
if (ac->mOrig.mRoomNo >= 0) {
filelist = dComIfGp_roomControl_getStatusRoomDt(ac->mOrig.mRoomNo)->mRoomDt.getFileListInfo();
}
if (filelist != NULL) {
if (!dStage_FileList_dt_GetEnemyAppear1Flag(filelist)) {
u32 sw = dStage_FileList_dt_GetBitSw(filelist);
if (sw != 0xFF && dComIfGs_isSwitch(sw, ac->mOrig.mRoomNo) && profile->field_0x2c == 2) {
return 5;
}
} else {
u32 sw = dStage_FileList_dt_GetBitSw(filelist);
if (sw != 0xFF && !dComIfGs_isSwitch(sw, ac->mOrig.mRoomNo) && profile->field_0x2c == 2) {
return 5;
}
}
}
}
int ret = fpcMtd_Create((process_method_class*)ac->mSubMtd, ac);
if (ret == 4) {
s16 priority = fpcLf_GetPriority(ac);
fopDwTg_ToDrawQ(&ac->mDwTg, priority);
} else if (ret == 5) {
fopAcM_OnCondition(ac, 0x10);
}
return ret;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void fopAc_Create(void* param_0) {
static asm int fopAc_Create(void* param_0) {
nofralloc
#include "asm/f_op/f_op_actor/fopAc_Create__FPv.s"
}
#pragma pop
#endif
/* 800193FC-80019404 013D3C 0008+00 0/0 1/0 0/0 .text getFileListInfo__15dStage_roomDt_cCFv */
#pragma push
+1036 -695
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -91,7 +91,7 @@ msg_class* fopMsgM_SearchByID(unsigned int id) {
/* 8001FA44-8001FA4C 01A384 0008+00 0/0 2/2 0/0 .text fopMsgM_GetAppend__FPv */
fopMsg_prm_class* fopMsgM_GetAppend(void* msg) {
msg_class* m = static_cast<msg_class*>(msg);
return (fopMsg_prm_class*)m->field_0x0.mpUserData;
return (fopMsg_prm_class*)m->mBase.mpUserData;
}
/* 8001FA4C-8001FA6C 01A38C 0020+00 0/0 2/2 0/0 .text fopMsgM_Delete__FPv */
+2 -2
View File
@@ -55,9 +55,9 @@ int g_fpcLf_type;
/* 80021B14-80021B88 0074+00 s=1 e=0 z=0 None .text fpcLf_Create__FP14leafdraw_class */
s32 fpcLf_Create(leafdraw_class* pLeaf) {
leaf_process_profile_definition* profDef;
process_profile_definition* profDef;
if (pLeaf->mBase.mInitState == 0) {
profDef = (leaf_process_profile_definition*)pLeaf->mBase.mpProf;
profDef = (process_profile_definition*)pLeaf->mBase.mpProf;
pLeaf->mpDrawMtd = profDef->mLfDrwMth;
pLeaf->mBase.mSubType = fpcBs_MakeOfType(&g_fpcLf_type);
fpcDwPi_Init(&pLeaf->mDwPi, profDef->mPriority);
+2 -1
View File
@@ -92,6 +92,7 @@ s32 fpcNd_Delete(process_node_class* pProcNode) {
}
}
/* 80022728-800227C4 009C+00 s=1 e=0 z=0 None .text fpcNd_Create__FP18process_node_class */
s32 fpcNd_Create(process_node_class* pProcNode1) {
// this cast looks like a fake match, but it doesn't match without the cast, naive approach
@@ -103,7 +104,7 @@ s32 fpcNd_Create(process_node_class* pProcNode1) {
node_process_profile_definition* pProcProfileDef =
(node_process_profile_definition*)pProcNode->mBase.mpProf;
pProcNode->mBase.mSubType = fpcBs_MakeOfType(&g_fpcNd_type);
pProcNode->mpNodeMtd = pProcProfileDef->mNDrwMthCls;
pProcNode->mpNodeMtd = (nodedraw_method_class*)pProcProfileDef->mBase.mLfDrwMth;
fpcLy_Create(&pProcNode->mLayer, pProcNode, pProcNode->mLayerNodeLists, 0x10);
pProcNode->mUnk0 = 0;
}
+3 -2
View File
@@ -3,15 +3,16 @@
// Translation Unit: f_pc/f_pc_profile
//
#include "f_pc/f_pc_profile.h"
#include "dol2asm.h"
#include "dolphin/types.h"
/* ############################################################################################## */
/* 80450D50-80450D58 0004+04 s=1 e=0 z=2 None .sbss g_fpcPf_ProfileList_p */
leaf_process_profile_definition** g_fpcPf_ProfileList_p;
process_profile_definition** g_fpcPf_ProfileList_p;
/* 80023564-80023578 0014+00 s=0 e=1 z=0 None .text fpcPf_Get__Fs */
leaf_process_profile_definition* fpcPf_Get(s16 profileID) {
process_profile_definition* fpcPf_Get(s16 profileID) {
return g_fpcPf_ProfileList_p[profileID];
}
+1 -2
View File
@@ -397,7 +397,6 @@ extern "C" void entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey()
extern "C" void entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
extern "C" void JMAEulerToQuat__FsssP10Quaternion();
extern "C" void JMAQuatLerp__FPC10QuaternionPC10QuaternionfP10Quaternion();
extern "C" void DCStoreRangeNoSync();
extern "C" void GXClearVtxDesc();
extern "C" void GXGetTexObjWidth();
extern "C" void GXGetTexObjHeight();
@@ -3095,7 +3094,7 @@ static asm void mDoExt_initFont1() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoExt_getRubyFont() {
asm JUTFont* mDoExt_getRubyFont() {
nofralloc
#include "asm/m_Do/m_Do_ext/mDoExt_getRubyFont__Fv.s"
}
+458 -202
View File
@@ -5,46 +5,22 @@
#include "m_Do/m_Do_machine.h"
#include "JSystem/JFramework/JFWSystem.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JKernel/JKRAramStream.h"
#include "JSystem/JKernel/JKRDvdAramRipper.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/JUTDbPrint.h"
#include "JSystem/JUtility/JUTException.h"
#include "SSystem/SComponent/c_API_controller_pad.h"
#include "SSystem/SComponent/c_malloc.h"
#include "SSystem/SComponent/c_math.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct mDoMemCd_Ctrl_c {
/* 80016730 */ void ThdInit();
};
struct mDoDvdThd {
/* 80015858 */ void create(s32);
};
struct cMl {
/* 80263220 */ void init(JKRHeap*);
};
struct JUTAssertion {
/* 802E4C34 */ static void setVisible(bool);
};
struct JKRDvdRipper {
static u32 sSZSBufferSize;
};
struct JKRDvdAramRipper {
static u32 sSZSBufferSize;
};
struct JKRAramStream {
/* 802D4034 */ void setTransBuffer(u8*, u32, JKRHeap*);
};
struct JKRAram {
static u32 sSZSBufferSize[1 + 1 /* padding */];
};
#include "m_Do/m_Do_DVDError.h"
#include "m_Do/m_Do_MemCard.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_machine_exception.h"
//
// Forward References:
@@ -124,11 +100,10 @@ extern "C" void drawDirect__17JUTConsoleManagerCFb();
extern "C" void setDirectConsole__17JUTConsoleManagerFP10JUTConsole();
extern "C" void PPCHalt();
extern "C" u32 OSGetProgressiveMode();
extern "C" void OSSetProgressiveMode();
extern "C" void VIGetDTVStatus();
extern "C" void OSSetProgressiveMode(u32);
extern "C" u32 VIGetDTVStatus();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
extern "C" extern u8 g_mDoMemCd_control[8192];
extern "C" extern s8 data_80450580;
extern "C" u32 memMargin__7mDoMain;
extern "C" u32 maxStdHeaps__Q29JFWSystem11CSetUpParam;
@@ -137,16 +112,11 @@ extern "C" u32 fifoBufSize__Q29JFWSystem11CSetUpParam;
extern "C" u32 aramAudioBufSize__Q29JFWSystem11CSetUpParam;
extern "C" u32 aramGraphBufSize__Q29JFWSystem11CSetUpParam;
extern "C" void* renderMode__Q29JFWSystem11CSetUpParam;
extern "C" extern u8 data_804508B0[8];
extern "C" u32 sSZSBufferSize__7JKRAram[1 + 1 /* padding */];
extern "C" u32 sSZSBufferSize__12JKRDvdRipper;
extern "C" u32 sSZSBufferSize__16JKRDvdAramRipper;
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 commandHeap[4];
extern "C" extern u8 archiveHeap[4];
extern "C" u8 mResetData__6mDoRst[4 + 4 /* padding */];
extern "C" u8 systemHeap__9JFWSystem[4];
extern "C" u8 systemConsole__9JFWSystem[4];
@@ -162,147 +132,193 @@ extern "C" u8 sManager__17JUTConsoleManager[4];
// Declarations:
//
/* ############################################################################################## */
/* 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_80373DE8 = "SystemHeap";
SECTION_DEAD static char const* const stringBase_80373DF3 = "ZeldaHeap";
SECTION_DEAD static char const* const stringBase_80373DFD = "GameHeap";
SECTION_DEAD static char const* const stringBase_80373E06 = "ArchiveHeap";
SECTION_DEAD static char const* const stringBase_80373E12 = "CommandHeap";
SECTION_DEAD static char const* const stringBase_80373E1E = "DbPrintHeap";
SECTION_DEAD static char const* const stringBase_80373E2A = "J2dHeap";
SECTION_DEAD static char const* const stringBase_80373E32 = "ASTH";
SECTION_DEAD static char const* const stringBase_80373E37 = "EXPH";
SECTION_DEAD static char const* const stringBase_80373E3C = "SLID";
SECTION_DEAD static char const* const stringBase_80373E41 = "STDH";
SECTION_DEAD static char const* const stringBase_80373E46 = "UNIT";
SECTION_DEAD static char const* const stringBase_80373E4B = "(Null)";
#pragma pop
/* 80450BF0-80450BF4 0000F0 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_80450BF0[4];
static u8 data_80450BF0;
/* 80450BF4-80450BF8 0000F4 0004+00 1/1 0/0 0/0 .sbss solidHeapErrors */
static u8 solidHeapErrors[4];
static int solidHeapErrors;
/* 80450BF8-80450BFC 0000F8 0004+00 1/1 0/0 0/0 .sbss gameHeapErrors */
static u8 gameHeapErrors[4];
static int gameHeapErrors;
/* 80450BFC-80450C00 0000FC 0004+00 1/1 0/0 0/0 .sbss zeldaHeapErrors */
static u8 zeldaHeapErrors[4];
static int zeldaHeapErrors;
/* 80450C00-80450C04 000100 0004+00 1/1 0/0 0/0 .sbss commandHeapErrors */
static u8 commandHeapErrors[4];
static int commandHeapErrors;
/* 80450C04-80450C08 000104 0004+00 1/1 0/0 0/0 .sbss archiveHeapErrors */
static u8 archiveHeapErrors[4];
static int archiveHeapErrors;
/* 80450C08-80450C0C 000108 0004+00 1/1 0/0 0/0 .sbss unknownHeapErrors */
static u8 unknownHeapErrors[4];
static int unknownHeapErrors;
/* 80450C0C-80450C10 00010C 0004+00 1/1 0/0 0/0 .sbss heapErrors */
static u8 heapErrors[4];
/* 80450C10-80450C18 -00001 0008+00 2/2 0/0 0/0 .sbss None */
/* 80450C10 0005+00 data_80450C10 tmpString$3651 */
/* 80450C15 0001+00 data_80450C15 None */
/* 80450C16 0001+00 data_80450C16 None */
/* 80450C17 0001+00 data_80450C17 None */
static u8 struct_80450C10[8];
static u32 heapErrors;
/* 8000B1EC-8000B3EC 005B2C 0200+00 2/2 0/0 0/0 .text myGetHeapTypeByString__FP7JKRHeap
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm char* myGetHeapTypeByString(JKRHeap* param_0) {
nofralloc
#include "asm/m_Do/m_Do_machine/myGetHeapTypeByString__FP7JKRHeap.s"
}
#pragma pop
static char* myGetHeapTypeByString(JKRHeap* p_heap) {
static char tmpString[5];
/* ############################################################################################## */
/* 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_80373E52 =
"エラー: メモリを確保できません %d(0x%x)バイト、 %d バイトアライメント from "
"%08x\n";
SECTION_DEAD static char const* const stringBase_80373EA3 =
"FreeSize=%08x TotalFreeSize=%08x HeapType=%08x(%"
"c%c%c%c) HeapSize=%08x %s\n";
#pragma pop
if (p_heap == JKRHeap::getSystemHeap()) {
return "SystemHeap";
}
if (p_heap == mDoExt_getZeldaHeap()) {
return "ZeldaHeap";
}
if (p_heap == mDoExt_getGameHeap()) {
return "GameHeap";
}
if (p_heap == mDoExt_getArchiveHeap()) {
return "ArchiveHeap";
}
if (p_heap == mDoExt_getCommandHeap()) {
return "CommandHeap";
}
if (p_heap == mDoExt_getDbPrintHeap()) {
return "DbPrintHeap";
}
if (p_heap == mDoExt_getJ2dHeap()) {
return "J2dHeap";
}
u32 heapType = p_heap->getHeapType();
switch (heapType) {
case 'ASTH':
return "ASTH";
case 'EXPH':
return "EXPH";
case 'SLID':
return "SLID";
case 'STDH':
return "STDH";
case 'UNIT':
return "UNIT";
case 0:
return "(Null)";
default:
u32 tmpType = heapType;
char* typeStr = (char*)&tmpType;
tmpString[0] = typeStr[0];
tmpString[1] = typeStr[1];
tmpString[2] = typeStr[2];
tmpString[3] = typeStr[3];
tmpString[4] = 0;
return tmpString;
}
}
/* 8000B3EC-8000B5C8 005D2C 01DC+00 1/1 0/0 0/0 .text myMemoryErrorRoutine__FPvUli */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void myMemoryErrorRoutine(void* param_0, u32 param_1, int param_2) {
nofralloc
#include "asm/m_Do/m_Do_machine/myMemoryErrorRoutine__FPvUli.s"
}
#pragma pop
static void myMemoryErrorRoutine(void* p_heap, u32 size, int alignment) {
JKRHeap* heap = (JKRHeap*)p_heap;
/* ############################################################################################## */
/* 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_80373EEE = "error in %08x(%s)\n";
#pragma pop
BOOL notSolidHeap = true;
if (heap->getHeapType() == 'SLID') {
notSolidHeap = false;
}
if (notSolidHeap) {
// "Error: Can't allocate memory %d(0x%x)Bytes, %d Byte Alignment from %08x\n"
OSReport_Error(
"エラー: メモリを確保できません %d(0x%x)バイト、 %d バイトアライメント from %08x\n",
size, size, alignment, p_heap);
}
u32 heapType = heap->getHeapType();
u8* tmpString = (u8*)&heapType;
if (notSolidHeap) {
OSReport_Error(
"FreeSize=%08x TotalFreeSize=%08x HeapType=%08x(%c%c%c%c) HeapSize=%08x %s\n",
heap->getFreeSize(), heap->getTotalFreeSize(), heapType, tmpString[0], tmpString[1],
tmpString[2], tmpString[3], heap->getHeapSize(), myGetHeapTypeByString(heap));
}
if (heapErrors == 0) {
heap->dump_sort();
}
heapErrors++;
if (p_heap == zeldaHeap) {
zeldaHeapErrors++;
} else if (p_heap == gameHeap) {
gameHeapErrors++;
} else if (p_heap == commandHeap) {
commandHeapErrors++;
} else if (p_heap == archiveHeap) {
archiveHeapErrors++;
} else if (heap->getHeapType() == 'SLID') {
solidHeapErrors++;
} else {
unknownHeapErrors++;
}
}
/* 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);
void myHeapCheckRecursive(JKRHeap* p_heap) {
if (!p_heap->check()) {
char* type = myGetHeapTypeByString(p_heap);
OSReport_Error("error in %08x(%s)\n", p_heap, 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);
JSUTree<JKRHeap>* heapTree = &p_heap->getHeapTree();
for (JSUTree<JKRHeap>* i = heapTree->getFirstChild(); i != NULL; i = i->getNextChild()) {
myHeapCheckRecursive(i->getObject());
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
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 */
void mDoMch_HeapCheckAll() {
myHeapCheckRecursive(JKRHeap::sRootHeap);
}
static u8 debug_key0;
static u8 debug_key1;
static u8 debug_key2;
/* 8000B68C-8000B73C 005FCC 00B0+00 1/1 0/0 0/0 .text developKeyCheck__FUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void developKeyCheck(u32 param_0, u32 param_1) {
nofralloc
#include "asm/m_Do/m_Do_machine/developKeyCheck__FUlUl.s"
static int developKeyCheck(u32 btnTrig, u32 btnHold) {
if (btnHold == (CButton::L | CButton::R | CButton::Z | CButton::DPAD_DOWN) &&
btnTrig == CButton::DPAD_DOWN) {
if (debug_key0 == 3 && debug_key1 == 6 && debug_key2 == 5) {
data_80450580 = 1;
} else {
debug_key0 = 0;
debug_key1 = 0;
debug_key2 = 0;
}
}
if (btnHold == (CButton::L | CButton::DPAD_RIGHT) && btnTrig == CButton::L) {
debug_key0++;
}
if (btnHold == (CButton::R | CButton::DPAD_UP) && btnTrig == CButton::R) {
debug_key1++;
}
if (btnHold == (CButton::Z | CButton::DPAD_LEFT) && btnTrig == CButton::Z) {
debug_key2++;
}
return data_80450580;
}
#pragma pop
/* 8000B73C-8000B768 00607C 002C+00 1/1 0/0 0/0 .text mDoMch_IsProgressiveMode__Fv */
u8 mDoMch_IsProgressiveMode() {
BOOL mDoMch_IsProgressiveMode() {
return OSGetProgressiveMode() == true;
}
/* 8000B768-8000B798 0060A8 0030+00 2/2 0/0 0/0 .text exceptionReadPad__FPUlPUl */
bool exceptionReadPad(u32* param_0, u32* param_1) {
return JUTException::getManager()->readPad(param_0, param_1);
bool exceptionReadPad(u32* p_btnTrig, u32* p_btnHold) {
return JUTException::getManager()->readPad(p_btnTrig, p_btnHold);
}
/* 8000B798-8000B7C8 0060D8 0030+00 1/1 0/0 0/0 .text exceptionRestart__Fv */
@@ -314,13 +330,13 @@ void exceptionRestart() {
}
/* 8000B7C8-8000B95C 006108 0194+00 1/1 0/0 0/0 .text myExceptionCallback__FUsP9OSContextUlUl */
void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param_3) {
u32 tmp1;
u32 tmp2;
void myExceptionCallback(u16, OSContext*, u32, u32) {
u32 btnHold;
u32 btnTrig;
mDoMain::sHungUpTime = OSGetTime();
OSReportEnable();
cAPICPad_recalibrate__Fv();
cAPICPad_recalibrate();
// "Vibration stopping & resetting to default\n"
OSReport("振動停止&原点復帰\n");
@@ -341,8 +357,8 @@ void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param
// "Accepting Key input\n"
OSReport("キー入力を受け付けています\n");
while (data_80450580 == 0) {
exceptionReadPad(&tmp2, &tmp1);
developKeyCheck(tmp2, tmp1);
exceptionReadPad(&btnTrig, &btnHold);
developKeyCheck(btnTrig, btnHold);
JUTException::waitTime(30);
if (struct_80451501) {
exceptionRestart();
@@ -365,7 +381,7 @@ void myExceptionCallback(u16 param_0, OSContext* param_1, u32 param_2, u32 param
}
DVDChangeDir("/map/Final/Release");
JUTVideo::destroyManager();
GXSetDrawDoneCallback(0);
GXSetDrawDoneCallback(NULL);
VISetBlack(0);
VIFlush();
}
@@ -388,6 +404,143 @@ SECTION_SDATA2 static f32 lit_3940 = 8.0f;
SECTION_SDATA2 static f32 lit_3941 = 6.0f;
/* 8000B95C-8000BCF4 00629C 0398+00 1/1 0/0 0/0 .text fault_callback_scroll__FUsP9OSContextUlUl */
#ifdef NONMATCHING
static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
JUTException* manager = JUTException::getManager();
JUTConsole* exConsole = manager->getConsole();
u32 srr0 = p_context->srr0 & -4;
if (srr0 >= 0x8000000C && srr0 < 0x82FFFFFF) {
exConsole->print_f("(SRR0-3):%08X %08X %08X %08X\n", *(u32*)(srr0 - 0xC),
*(u32*)(srr0 - 0x8), *(u32*)(srr0 - 0x4), *(u32*)srr0);
}
JUTGamePad pad(JUTGamePad::Port_1);
manager->setGamePad(&pad);
BOOL padDisabled = manager->isEnablePad() == false;
if (!padDisabled) {
exConsole->print("PUSH START BUTTON TO ADDITIONAL INFOMATION\n");
exConsole->print("--------------------------------------\n");
JUTConsoleManager::getManager()->drawDirect(true);
OSEnableInterrupts();
int holdUpCount = 0;
int holdDownCount = 0;
while (true) {
u32 btnHold, btnTrig;
exceptionReadPad(&btnTrig, &btnHold);
if (struct_80451501) {
OSResetSystem(1, 0, 0);
}
bool waitRetrace = false;
if (btnTrig == CButton::START) {
exception_addition(exConsole);
waitRetrace = true;
}
if (btnTrig == CButton::Z) {
JUTConsole* sysConsole = JFWSystem::getSystemConsole();
if (JUTConsoleManager::getManager()->getDirectConsole() != sysConsole) {
exConsole = sysConsole;
exConsole->setFontSize(8.0f, 6.0f);
exConsole->setPosition(8, 32);
exConsole->setHeight(23);
exConsole->setVisible(true);
exConsole->setOutput(JUTConsole::OUTPUT_CONSOLE | JUTConsole::OUTPUT_OSREPORT);
} else {
exConsole = JUTException::getConsole();
}
JUTConsoleManager::getManager()->setDirectConsole(exConsole);
waitRetrace = true;
}
if (btnTrig == CButton::A) {
exConsole->scrollToLastLine();
waitRetrace = true;
}
if (btnTrig == CButton::B) {
exConsole->scrollToFirstLine();
waitRetrace = true;
}
if (btnHold == CButton::DPAD_UP) {
int scrollAmnt;
if (holdUpCount < 3) {
scrollAmnt = -1;
} else if (holdUpCount < 5) {
scrollAmnt = -2;
} else {
scrollAmnt = -8;
if (holdUpCount < 7) {
scrollAmnt = -4;
}
}
exConsole->scroll(scrollAmnt);
waitRetrace = true;
holdDownCount = 0;
holdUpCount++;
} else if (btnHold == CButton::DPAD_DOWN) {
int scrollAmnt;
if (holdDownCount < 3) {
scrollAmnt = 1;
} else if (holdDownCount < 5) {
scrollAmnt = 2;
} else {
scrollAmnt = 8;
if (holdDownCount < 7) {
scrollAmnt = 4;
}
}
exConsole->scroll(scrollAmnt);
waitRetrace = true;
holdUpCount = 0;
holdDownCount++;
} else {
holdUpCount = 0;
holdDownCount = 0;
}
if (waitRetrace == true) {
u32 count = VIGetRetraceCount();
do {
} while (count == VIGetRetraceCount());
JUTConsoleManager::getManager()->drawDirect(true);
}
JUTException::waitTime(30);
}
}
exception_addition(exConsole);
JUTConsoleManager::getManager()->drawDirect(true);
do {
exConsole->scrollToFirstLine();
JUTConsoleManager::getManager()->drawDirect(true);
JUTException::waitTime(2000);
do {
for (u32 i = exConsole->getHeight(); i != 0; i--) {
exConsole->scroll(1);
JUTConsoleManager::getManager()->drawDirect(true);
if ((exConsole->getUsedLine() - exConsole->getHeight()) + 1 <=
exConsole->getLineOffset()) {
break;
}
JUTException::waitTime(20);
}
JUTException::waitTime(3000);
} while ((exConsole->getUsedLine() - exConsole->getHeight()) + 1 <=
exConsole->getLineOffset());
} while (true);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -396,9 +549,10 @@ static asm void fault_callback_scroll(u16 param_0, OSContext* param_1, u32 param
#include "asm/m_Do/m_Do_machine/fault_callback_scroll__FUsP9OSContextUlUl.s"
}
#pragma pop
#endif
/* 8000BCF4-8000BCF8 006634 0004+00 1/1 0/0 0/0 .text my_PrintHeap__FPCcUl */
static void my_PrintHeap(char const* param_0, u32 param_1) {
static void my_PrintHeap(char const* heapName, u32 heapSize) {
/* empty function */
}
@@ -422,7 +576,7 @@ SECTION_DEAD static char const* const stringBase_80374017 = ""
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);
(u32)start + size, size / 1024);
}
/* ############################################################################################## */
@@ -440,69 +594,171 @@ 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 _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}};
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 _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}};
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 _GXRenderModeObj* mDoMch_render_c::mRenderModeObj = &g_ntscZeldaIntDf;
SECTION_SDATA GXRenderModeObj* mDoMch_render_c::mRenderModeObj = &g_ntscZeldaIntDf;
/* 8000BD44-8000C0CC 006684 0388+00 0/0 2/1 0/0 .text mDoMch_Create__Fv */
// reg alloc r30 - r31
#ifdef NONMATCHING
int mDoMch_Create() {
if (data_80450580 == 0 || !(OSGetConsoleType() & 0x10000000)) {
OSReportDisable();
}
JKRHeap::setDefaultDebugFill(data_80450BF0);
JFWSystem::setMaxStdHeap(1);
u32 arenaHi = OSGetArenaHi();
u32 arenaLo = OSGetArenaLo();
if (arenaHi > 0x81800000 && arenaHi - 0x1800000 > arenaLo) {
OSSetArenaHi(arenaHi - 0x1800000);
}
u32 arenaSize = (OSGetArenaHi() - OSGetArenaLo()) - 0xF0;
my_PrintHeap("アリーナ", arenaSize);
if (mDoMain::memMargin != -1) {
arenaSize += mDoMain::memMargin;
}
JFWSystem::setSysHeapSize(arenaSize - 0xDACD30);
my_PrintHeap("システムヒープ", arenaSize - 0xDACD30);
JFWSystem::setFifoBufSize(0xA0000);
JFWSystem::setAramAudioBufSize(0xA00000);
JFWSystem::setAramGraphBufSize(-1);
if (!(OSGetResetCode() >> 0x1F)) {
if (VIGetDTVStatus() == 0) {
OSSetProgressiveMode(0);
}
} else if (mDoRst::getProgSeqFlag() != 0) {
if (VIGetDTVStatus() != 0 && mDoMch_IsProgressiveMode()) {
mDoMch_render_c::setProgressiveMode();
}
}
JFWSystem::setRenderMode(mDoMch_render_c::getRenderModeObj());
JFWSystem::firstInit();
JUTDbPrint::start(NULL, mDoExt_createDbPrintHeap(0x1800, JKRHeap::getRootHeap()));
mDoExt_createAssertHeap(JKRHeap::getRootHeap());
JFWSystem::init();
if (data_80450580 == 0) {
JUTAssertion::setVisible(false);
JUTDbPrint::getManager()->setVisible(false);
}
JKRHeap::setErrorHandler(myMemoryErrorRoutine);
JKRHeap::getRootHeap()->setErrorFlag(true);
JFWSystem::getSystemHeap()->setErrorFlag(true);
JKRHeap* rootHeap = JKRHeap::getRootHeap();
// Command Heap size: 4 KB
my_SysPrintHeap("コマンドヒープ", mDoExt_createCommandHeap(0x1000, rootHeap), 0x1000);
// Archive Heap size: 9085 KB
my_SysPrintHeap("アーカイブヒープ", mDoExt_createArchiveHeap(0x8DF400, rootHeap), 0x8DF400);
// J2D Heap size: 500 KB
my_SysPrintHeap("J2D用ヒープ", mDoExt_createJ2dHeap(0x7D000, rootHeap), 0x7D000);
// Game Heap size: 4408 KB
my_SysPrintHeap("ゲームヒープ", mDoExt_createGameHeap(0x44E000, rootHeap), 0x44E000);
JKRHeap* sysHeap = JKRHeap::getSystemHeap();
u32 zeldaHeapSize = sysHeap->getFreeSize() - 0x10000;
JKRHeap* zeldaHeap = mDoExt_createZeldaHeap(zeldaHeapSize, sysHeap);
my_SysPrintHeap("ゼルダヒープ", zeldaHeap, zeldaHeapSize);
zeldaHeap->becomeCurrentHeap();
JKRAramStream::setTransBuffer(NULL, 0x2000, JKRHeap::getSystemHeap());
JKRThreadSwitch::createManager(NULL);
JKRThread* thread = new JKRThread(OSGetCurrentThread(), 0);
JUTConsole* sysConsole = JFWSystem::getSystemConsole();
sysConsole->setOutput(JUTConsole::OUTPUT_CONSOLE | JUTConsole::OUTPUT_OSREPORT);
sysConsole->setPosition(16, 42);
JUTException::appendMapFile("/map/Final/Release/frameworkF.map");
JUTException::setPreUserCallback(myExceptionCallback);
JUTException::setPostUserCallback(fault_callback_scroll);
cMl::init(mDoExt_getZeldaHeap());
cM_initRnd(100, 100, 100);
JKRDvdRipper::setSZSBufferSize(0x4000);
JKRDvdAramRipper::setSZSBufferSize(0x4000);
JKRAram::setSZSBufferSize(0x2000);
mDoDvdThd::create(OSGetThreadPriority(OSGetCurrentThread()) - 2);
mDoDvdErr_ThdInit();
mDoMemCd_ThdInit();
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void mDoMch_Create() {
asm int mDoMch_Create() {
nofralloc
#include "asm/m_Do/m_Do_machine/mDoMch_Create__Fv.s"
}
#pragma pop
#endif
/* 80373DE8-80373DE8 000448 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+3 -3
View File
@@ -65,9 +65,9 @@ void dispHeapInfo() {
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_f(" Zelda %5d / %5d\n", zeldaFree / 1024, zeldaTotal / 1024);
print_f(" Game %5d / %5d\n", gameFree / 1024, gameTotal / 1024);
print_f("Archive %5d / %5d\n", archiveFree / 1024, archiveTotal / 1024);
print("--------------------------------\n");
if (JKRAram::getAramHeap()) {
+108 -279
View File
@@ -6,325 +6,154 @@
#include "msg/scrn/d_msg_scrn_base.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct dMsgScrnBase_c {
/* 80238C3C */ void exec();
/* 80238C40 */ void setSelectRubyString(char*, char*, char*);
/* 80238C44 */ void setSelectString(char*, char*, char*);
/* 80238C48 */ bool selectAnimeMove(u8, u8, bool);
/* 80238C50 */ void selectAnimeInit(u8, u8, f32, u8);
/* 80238C54 */ void arwAnimeMove();
/* 80238C58 */ void arwAnimeInit();
/* 80238C5C */ void fukiPosCalc(u8);
/* 80238C60 */ bool isSelect();
/* 80238C68 */ bool selectAnimeEnd();
/* 80238C70 */ void dotAnimeMove();
/* 80238C74 */ void dotAnimeInit();
/* 8023C0DC */ dMsgScrnBase_c();
/* 8023C124 */ ~dMsgScrnBase_c();
/* 8023C16C */ void init();
/* 8023C234 */ void multiDraw();
/* 8023C274 */ void draw();
/* 8023C300 */ void drawSelf();
/* 8023C32C */ void drawOutFont(f32, f32, f32);
/* 8023C360 */ void setString(char*, char*);
/* 8023C3EC */ void setRubyString(char*);
/* 8023C458 */ void fukiScale(f32);
/* 8023C480 */ void fukiTrans(f32, f32);
/* 8023C4A4 */ void fukiAlpha(f32);
/* 8023C4F4 */ void fontAlpha(f32);
/* 8023C574 */ void isTalkNow();
};
struct dMsgObject_c {
/* 8023822C */ void getStatus();
};
struct dDlst_base_c {};
struct dDlst_list_c {
/* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*);
};
struct J2DTextBox {
/* 80300658 */ void getStringPtr() const;
};
struct J2DGrafContext {};
struct J2DScreen {
/* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*);
};
struct CPaneMgrAlpha {
/* 802557D0 */ void setAlphaRate(f32);
};
struct CPaneMgr {
/* 802545B0 */ void paneTrans(f32, f32);
/* 80254638 */ void paneScale(f32, f32);
};
//
// Forward References:
//
extern "C" void __ct__14dMsgScrnBase_cFv();
extern "C" void __dt__14dMsgScrnBase_cFv();
extern "C" void init__14dMsgScrnBase_cFv();
extern "C" void multiDraw__14dMsgScrnBase_cFv();
extern "C" void draw__14dMsgScrnBase_cFv();
extern "C" void drawSelf__14dMsgScrnBase_cFv();
extern "C" void drawOutFont__14dMsgScrnBase_cFfff();
extern "C" void setString__14dMsgScrnBase_cFPcPc();
extern "C" void setRubyString__14dMsgScrnBase_cFPc();
extern "C" void fukiScale__14dMsgScrnBase_cFf();
extern "C" void fukiTrans__14dMsgScrnBase_cFff();
extern "C" void fukiAlpha__14dMsgScrnBase_cFf();
extern "C" void fontAlpha__14dMsgScrnBase_cFf();
extern "C" void isTalkNow__14dMsgScrnBase_cFv();
//
// External References:
//
extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c();
extern "C" void getStatus__12dMsgObject_cFv();
extern "C" void exec__14dMsgScrnBase_cFv();
extern "C" void setSelectRubyString__14dMsgScrnBase_cFPcPcPc();
extern "C" void setSelectString__14dMsgScrnBase_cFPcPcPc();
extern "C" bool selectAnimeMove__14dMsgScrnBase_cFUcUcb();
extern "C" void selectAnimeInit__14dMsgScrnBase_cFUcUcfUc();
extern "C" void arwAnimeMove__14dMsgScrnBase_cFv();
extern "C" void arwAnimeInit__14dMsgScrnBase_cFv();
extern "C" void fukiPosCalc__14dMsgScrnBase_cFUc();
extern "C" bool isSelect__14dMsgScrnBase_cFv();
extern "C" bool selectAnimeEnd__14dMsgScrnBase_cFv();
extern "C" void dotAnimeMove__14dMsgScrnBase_cFv();
extern "C" void dotAnimeInit__14dMsgScrnBase_cFv();
extern "C" void paneTrans__8CPaneMgrFff();
extern "C" void paneScale__8CPaneMgrFff();
extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
extern "C" void __dl__FPv();
extern "C" void draw__9J2DScreenFffPC14J2DGrafContext();
extern "C" void getStringPtr__10J2DTextBoxCFv();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void strcpy();
extern "C" extern void* __vt__12dDlst_base_c[3];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
//
// Declarations:
//
/* ############################################################################################## */
/* 803C0D08-803C0D58 -00001 0050+00 1/1 0/0 0/0 .data @3949 */
SECTION_DATA static void* lit_3949[20] = {
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x40),
(void*)(((char*)isTalkNow__14dMsgScrnBase_cFv) + 0x38),
};
/* 803C0D58-803C0DB0 01DE78 0058+00 2/2 0/0 0/0 .data __vt__14dMsgScrnBase_c */
SECTION_DATA extern void* __vt__14dMsgScrnBase_c[22] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)draw__14dMsgScrnBase_cFv,
(void*)__dt__14dMsgScrnBase_cFv,
(void*)exec__14dMsgScrnBase_cFv,
(void*)multiDraw__14dMsgScrnBase_cFv,
(void*)drawSelf__14dMsgScrnBase_cFv,
(void*)setSelectString__14dMsgScrnBase_cFPcPcPc,
(void*)setSelectRubyString__14dMsgScrnBase_cFPcPcPc,
(void*)arwAnimeInit__14dMsgScrnBase_cFv,
(void*)arwAnimeMove__14dMsgScrnBase_cFv,
(void*)dotAnimeInit__14dMsgScrnBase_cFv,
(void*)dotAnimeMove__14dMsgScrnBase_cFv,
(void*)isSelect__14dMsgScrnBase_cFv,
(void*)selectAnimeInit__14dMsgScrnBase_cFUcUcfUc,
(void*)selectAnimeMove__14dMsgScrnBase_cFUcUcb,
(void*)selectAnimeEnd__14dMsgScrnBase_cFv,
(void*)fukiScale__14dMsgScrnBase_cFf,
(void*)fukiTrans__14dMsgScrnBase_cFff,
(void*)fukiAlpha__14dMsgScrnBase_cFf,
(void*)fontAlpha__14dMsgScrnBase_cFf,
(void*)fukiPosCalc__14dMsgScrnBase_cFUc,
};
#include "d/msg/d_msg_object.h"
/* 8023C0DC-8023C124 236A1C 0048+00 0/0 9/9 0/0 .text __ct__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgScrnBase_c::dMsgScrnBase_c() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/__ct__14dMsgScrnBase_cFv.s"
dMsgScrnBase_c::dMsgScrnBase_c() {
init();
}
#pragma pop
/* 8023C124-8023C16C 236A64 0048+00 1/0 9/9 0/0 .text __dt__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgScrnBase_c::~dMsgScrnBase_c() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/__dt__14dMsgScrnBase_cFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 80454BA8-80454BAC 0031A8 0004+00 3/3 0/0 0/0 .sdata2 @3820 */
SECTION_SDATA2 static u8 lit_3820[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 80454BAC-80454BB0 0031AC 0004+00 2/2 0/0 0/0 .sdata2 @3821 */
SECTION_SDATA2 static f32 lit_3821 = 1.0f;
dMsgScrnBase_c::~dMsgScrnBase_c() {}
/* 8023C16C-8023C234 236AAC 00C8+00 1/1 9/9 0/0 .text init__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::init() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/init__14dMsgScrnBase_cFv.s"
void dMsgScrnBase_c::init() {
mpScreen = NULL;
mpPmp_c = NULL;
field_0x54 = 0;
for (int i = 0; i < 7; i++) {
mpTm_c[i] = NULL;
mpTmr_c[i] = NULL;
}
mpOutFont = NULL;
field_0x48 = NULL;
field_0x4c = 0;
mCharInfoPtr = NULL;
mFontSize.mSizeY = 0.0f;
mFontSize.mSizeX = 0.0f;
mRubySize = 0.0f;
mTextBoxPosX = 0.0f;
mTextBoxPosY = 0.0f;
mTextBoxScaleX = 1.0f;
mTextBoxScaleY = 1.0f;
mTBoxWidth = 0.0f;
mTBoxHeight = 0.0f;
mLineSpace = 0.0f;
mCharSpace = 0.0f;
mRubyCharSpace = 0.0f;
mSelFontSize = 0.0f;
mSelRubySize = 0.0f;
for (int i = 0; i < 3; i++) {
mSelTextBoxPosX[i] = 0.0f;
mSelTextBoxPosY[i] = 0.0f;
}
mSelTBoxWidth = 0.0f;
mSelCharSpace = 0.0f;
mSelRubyCharSpace = 0.0f;
mTextBoxPosOffsetY = 0.0f;
field_0xb8 = 0.0f;
mCharAlphaRate = 1.0f;
}
#pragma pop
/* 8023C234-8023C274 236B74 0040+00 1/0 9/0 0/0 .text multiDraw__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::multiDraw() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/multiDraw__14dMsgScrnBase_cFv.s"
void dMsgScrnBase_c::multiDraw() {
if (field_0x48 != NULL) {
dComIfGd_set2DOpa(field_0x48);
}
}
#pragma pop
/* 8023C274-8023C300 236BB4 008C+00 1/0 7/0 0/0 .text draw__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::draw() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/draw__14dMsgScrnBase_cFv.s"
void dMsgScrnBase_c::draw() {
J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort();
ctx->setup2D();
mpScreen->draw(0.0f, 0.0f, ctx);
drawSelf();
ctx->setup2D();
}
#pragma pop
/* 8023C300-8023C32C 236C40 002C+00 1/0 2/0 0/0 .text drawSelf__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::drawSelf() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/drawSelf__14dMsgScrnBase_cFv.s"
void dMsgScrnBase_c::drawSelf() {
drawOutFont(0.0f, 0.0f, 1.0f);
}
#pragma pop
/* 8023C32C-8023C360 236C6C 0034+00 1/1 6/6 0/0 .text drawOutFont__14dMsgScrnBase_cFfff
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::drawOutFont(f32 param_0, f32 param_1, f32 param_2) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/drawOutFont__14dMsgScrnBase_cFfff.s"
void dMsgScrnBase_c::drawOutFont(f32 param_0, f32 param_1, f32 param_2) {
mpOutFont->draw(NULL, param_0, param_1, param_2);
}
#pragma pop
/* 8023C360-8023C3EC 236CA0 008C+00 0/0 2/2 0/0 .text setString__14dMsgScrnBase_cFPcPc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::setString(char* param_0, char* param_1) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/setString__14dMsgScrnBase_cFPcPc.s"
void dMsgScrnBase_c::setString(char* str1, char* str2) {
for (int i = 0; i < 7; i++) {
if (mpTm_c[i] != NULL) {
if (i == 0) {
strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), str1);
} else {
strcpy(((J2DTextBox*)mpTm_c[i]->getPanePtr())->getStringPtr(), str2);
}
}
}
}
#pragma pop
/* 8023C3EC-8023C458 236D2C 006C+00 0/0 2/2 0/0 .text setRubyString__14dMsgScrnBase_cFPc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::setRubyString(char* param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/setRubyString__14dMsgScrnBase_cFPc.s"
void dMsgScrnBase_c::setRubyString(char* str) {
for (int i = 0; i < 3; i++) {
if (mpTmr_c[i] != NULL) {
strcpy(((J2DTextBox*)mpTmr_c[i]->getPanePtr())->getStringPtr(), str);
}
}
}
#pragma pop
/* 8023C458-8023C480 236D98 0028+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnBase_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::fukiScale(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/fukiScale__14dMsgScrnBase_cFf.s"
void dMsgScrnBase_c::fukiScale(f32 scale) {
mpPmp_c->paneScale(scale, scale);
}
#pragma pop
/* 8023C480-8023C4A4 236DC0 0024+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnBase_cFff */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::fukiTrans(f32 param_0, f32 param_1) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/fukiTrans__14dMsgScrnBase_cFff.s"
void dMsgScrnBase_c::fukiTrans(f32 posX, f32 posY) {
mpPmp_c->paneTrans(posX, posY);
}
#pragma pop
/* 8023C4A4-8023C4F4 236DE4 0050+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnBase_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::fukiAlpha(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/fukiAlpha__14dMsgScrnBase_cFf.s"
void dMsgScrnBase_c::fukiAlpha(f32 alpha) {
fontAlpha(alpha);
mpPmp_c->setAlphaRate(alpha);
}
#pragma pop
/* 8023C4F4-8023C574 236E34 0080+00 1/0 5/0 0/0 .text fontAlpha__14dMsgScrnBase_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::fontAlpha(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/fontAlpha__14dMsgScrnBase_cFf.s"
void dMsgScrnBase_c::fontAlpha(f32 alpha) {
for (int i = 0; i < 7; i++) {
if (mpTm_c[i] != NULL) {
mpTm_c[i]->setAlphaRate(alpha);
}
if (mpTmr_c[i] != NULL) {
mpTmr_c[i]->setAlphaRate(alpha);
}
}
}
#pragma pop
/* 8023C574-8023C5C8 236EB4 0054+00 1/0 8/8 0/0 .text isTalkNow__14dMsgScrnBase_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBase_c::isTalkNow() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_base/isTalkNow__14dMsgScrnBase_cFv.s"
bool dMsgScrnBase_c::isTalkNow() {
switch (dMsgObject_c::getStatus()) {
case 5:
case 6:
case 7:
case 8:
case 9:
case 15:
case 16:
case 20:
case 24:
return true;
default:
return false;
}
}
#pragma pop
+89 -204
View File
@@ -4,246 +4,131 @@
//
#include "msg/scrn/d_msg_scrn_boss.h"
#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct dMsgScrnBoss_c {
/* 8023C5C8 */ dMsgScrnBoss_c();
/* 8023C928 */ ~dMsgScrnBoss_c();
/* 8023CA88 */ void exec();
/* 8023CB98 */ void drawSelf();
/* 8023CBF0 */ void fukiAlpha(f32);
/* 8023CC7C */ void fukiScale(f32);
/* 8023CC80 */ void fukiTrans(f32, f32);
/* 8023CC84 */ void fontAlpha(f32);
};
struct dMsgScrnBase_c {
/* 80238C40 */ void setSelectRubyString(char*, char*, char*);
/* 80238C44 */ void setSelectString(char*, char*, char*);
/* 80238C48 */ bool selectAnimeMove(u8, u8, bool);
/* 80238C50 */ void selectAnimeInit(u8, u8, f32, u8);
/* 80238C54 */ void arwAnimeMove();
/* 80238C58 */ void arwAnimeInit();
/* 80238C5C */ void fukiPosCalc(u8);
/* 80238C60 */ bool isSelect();
/* 80238C68 */ bool selectAnimeEnd();
/* 80238C70 */ void dotAnimeMove();
/* 80238C74 */ void dotAnimeInit();
/* 8023C0DC */ dMsgScrnBase_c();
/* 8023C124 */ ~dMsgScrnBase_c();
/* 8023C16C */ void init();
/* 8023C234 */ void multiDraw();
/* 8023C274 */ void draw();
/* 8023C32C */ void drawOutFont(f32, f32, f32);
/* 8023C574 */ void isTalkNow();
};
struct JKRExpHeap {};
struct JKRArchive {};
struct J2DTextBox {
/* 8030074C */ void setString(s16, char const*, ...);
};
struct J2DScreen {
/* 802F8498 */ J2DScreen();
/* 802F8648 */ void setPriority(char const*, u32, JKRArchive*);
};
struct CPaneMgrAlpha {
/* 802557D0 */ void setAlphaRate(f32);
};
struct CPaneMgr {
/* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
/* 802542E8 */ void getGlobalPosX();
/* 80254364 */ void getGlobalPosY();
/* 802545B0 */ void paneTrans(f32, f32);
};
//
// Forward References:
//
extern "C" void __ct__14dMsgScrnBoss_cFv();
extern "C" void __dt__14dMsgScrnBoss_cFv();
extern "C" void exec__14dMsgScrnBoss_cFv();
extern "C" void drawSelf__14dMsgScrnBoss_cFv();
extern "C" void fukiAlpha__14dMsgScrnBoss_cFf();
extern "C" void fukiScale__14dMsgScrnBoss_cFf();
extern "C" void fukiTrans__14dMsgScrnBoss_cFff();
extern "C" void fontAlpha__14dMsgScrnBoss_cFf();
extern "C" extern char const* const msg_scrn_d_msg_scrn_boss__stringBase0;
//
// External References:
//
extern "C" void mDoExt_getRubyFont__Fv();
extern "C" void setSelectRubyString__14dMsgScrnBase_cFPcPcPc();
extern "C" void setSelectString__14dMsgScrnBase_cFPcPcPc();
extern "C" bool selectAnimeMove__14dMsgScrnBase_cFUcUcb();
extern "C" void selectAnimeInit__14dMsgScrnBase_cFUcUcfUc();
extern "C" void arwAnimeMove__14dMsgScrnBase_cFv();
extern "C" void arwAnimeInit__14dMsgScrnBase_cFv();
extern "C" void fukiPosCalc__14dMsgScrnBase_cFUc();
extern "C" bool isSelect__14dMsgScrnBase_cFv();
extern "C" bool selectAnimeEnd__14dMsgScrnBase_cFv();
extern "C" void dotAnimeMove__14dMsgScrnBase_cFv();
extern "C" void dotAnimeInit__14dMsgScrnBase_cFv();
extern "C" void __ct__14dMsgScrnBase_cFv();
extern "C" void __dt__14dMsgScrnBase_cFv();
extern "C" void init__14dMsgScrnBase_cFv();
extern "C" void multiDraw__14dMsgScrnBase_cFv();
extern "C" void draw__14dMsgScrnBase_cFv();
extern "C" void drawOutFont__14dMsgScrnBase_cFfff();
extern "C" void isTalkNow__14dMsgScrnBase_cFv();
extern "C" void __ct__8CPaneMgrFP9J2DScreenUxUcP10JKRExpHeap();
extern "C" void getGlobalPosX__8CPaneMgrFv();
extern "C" void getGlobalPosY__8CPaneMgrFv();
extern "C" void paneTrans__8CPaneMgrFff();
extern "C" void dPaneClass_showNullPane__FP9J2DScreen();
extern "C" void setAlphaRate__13CPaneMgrAlphaFf();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void __ct__9J2DScreenFv();
extern "C" void setPriority__9J2DScreenFPCcUlP10JKRArchive();
extern "C" void setString__10J2DTextBoxFsPCce();
extern "C" void _savegpr_26();
extern "C" void _savegpr_29();
extern "C" void _restgpr_26();
extern "C" void _restgpr_29();
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_MsgObject_HIO_c[1040];
extern "C" extern dMsgObject_HIO_c g_MsgObject_HIO_c;
//
// Declarations:
//
/* ############################################################################################## */
/* 803998F8-803998F8 025F58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803998F8 = "zelda_boss_name.blo";
SECTION_DEAD static char const* const stringBase_8039990C = "";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039990D = "\0\0";
#pragma pop
/* 803C0DB0-803C0DE8 01DED0 0038+00 1/1 0/0 0/0 .data t_tag$3759 */
SECTION_DATA static u8 t_tag[56] = {
0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x30, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74,
0x62, 0x31, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x62, 0x32, 0x00, 0x73, 0x66, 0x6F,
0x6E, 0x74, 0x6C, 0x30, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x6C, 0x31, 0x00, 0x73,
0x66, 0x6F, 0x6E, 0x74, 0x6C, 0x32, 0x00, 0x73, 0x66, 0x6F, 0x6E, 0x74, 0x30, 0x30,
};
/* 803C0DE8-803C0E40 01DF08 0058+00 2/2 0/0 0/0 .data __vt__14dMsgScrnBoss_c */
SECTION_DATA extern void* __vt__14dMsgScrnBoss_c[22] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)draw__14dMsgScrnBase_cFv,
(void*)__dt__14dMsgScrnBoss_cFv,
(void*)exec__14dMsgScrnBoss_cFv,
(void*)multiDraw__14dMsgScrnBase_cFv,
(void*)drawSelf__14dMsgScrnBoss_cFv,
(void*)setSelectString__14dMsgScrnBase_cFPcPcPc,
(void*)setSelectRubyString__14dMsgScrnBase_cFPcPcPc,
(void*)arwAnimeInit__14dMsgScrnBase_cFv,
(void*)arwAnimeMove__14dMsgScrnBase_cFv,
(void*)dotAnimeInit__14dMsgScrnBase_cFv,
(void*)dotAnimeMove__14dMsgScrnBase_cFv,
(void*)isSelect__14dMsgScrnBase_cFv,
(void*)selectAnimeInit__14dMsgScrnBase_cFUcUcfUc,
(void*)selectAnimeMove__14dMsgScrnBase_cFUcUcb,
(void*)selectAnimeEnd__14dMsgScrnBase_cFv,
(void*)fukiScale__14dMsgScrnBoss_cFf,
(void*)fukiTrans__14dMsgScrnBoss_cFff,
(void*)fukiAlpha__14dMsgScrnBoss_cFf,
(void*)fontAlpha__14dMsgScrnBoss_cFf,
(void*)fukiPosCalc__14dMsgScrnBase_cFUc,
};
/* 80454BB0-80454BB4 0031B0 0004+00 3/3 0/0 0/0 .sdata2 @3854 */
SECTION_SDATA2 static f32 lit_3854 = 1.0f;
/* 8023C5C8-8023C928 236F08 0360+00 0/0 1/1 0/0 .text __ct__14dMsgScrnBoss_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgScrnBoss_c::dMsgScrnBoss_c() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_boss/__ct__14dMsgScrnBoss_cFv.s"
dMsgScrnBoss_c::dMsgScrnBoss_c() {
static u64 t_tag[7] = {
'sfontb0', 'sfontb1', 'sfontb2', 'sfontl0',
'sfontl1', 'sfontl2', 'sfont00',
};
init();
mpScreen = new J2DScreen();
mpScreen->setPriority("zelda_boss_name.blo", 0x20000, dComIfGp_getMsgArchive(4));
dPaneClass_showNullPane(mpScreen);
mpPmp_c = new CPaneMgr(mpScreen, 'n_all', 2, NULL);
mpPmp_c->scale(g_MsgObject_HIO_c.mBossNameScaleX, g_MsgObject_HIO_c.mBossNameScaleY);
mpFontParent = new CPaneMgr(mpScreen, 's_font_n', 0, NULL);
mpFontParent->scale(g_MsgObject_HIO_c.mBossNameCharSizeX, g_MsgObject_HIO_c.mBossNameCharSizeY);
mpFontParent->paneTrans(g_MsgObject_HIO_c.mBossNameCharPosX, g_MsgObject_HIO_c.mBossNameCharPosY);
mpBaseParent = new CPaneMgr(mpScreen, 'base_n', 2, NULL);
mpBaseParent->scale(g_MsgObject_HIO_c.mBossNameBaseSizeX, g_MsgObject_HIO_c.mBossNameBaseSizeY);
mpBaseParent->paneTrans(g_MsgObject_HIO_c.mBossNameBasePosX, g_MsgObject_HIO_c.mBossNameBasePosY);
for (int i = 0; i < 7; i++) {
mpTm_c[i] = new CPaneMgr(mpScreen, t_tag[i], 0, NULL);
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setFont(mDoExt_getRubyFont());
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setCharSpace(1.0f);
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setString(0x100, "");
}
((J2DTextBox*)mpTm_c[0]->getPanePtr())->getFontSize(mFontSize);
mTBoxWidth = mpTm_c[0]->getSizeX();
mTBoxHeight = mpTm_c[0]->getSizeY();
mLineSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getLineSpace();
mCharSpace = ((J2DTextBox*)mpTm_c[0]->getPanePtr())->getCharSpace();
for (int i = 0; i < 7; i++) {
((J2DTextBox*)mpTm_c[i]->getPanePtr())->setLineSpace(mLineSpace);
}
mTextBoxPosX = mpTm_c[0]->getGlobalPosX();
mTextBoxPosY = mpTm_c[0]->getGlobalPosY();
}
#pragma pop
/* 8023C928-8023CA88 237268 0160+00 1/0 0/0 0/0 .text __dt__14dMsgScrnBoss_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgScrnBoss_c::~dMsgScrnBoss_c() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_boss/__dt__14dMsgScrnBoss_cFv.s"
dMsgScrnBoss_c::~dMsgScrnBoss_c() {
delete mpScreen;
mpScreen = NULL;
delete mpPmp_c;
mpPmp_c = NULL;
delete mpFontParent;
mpFontParent = NULL;
delete mpBaseParent;
mpBaseParent = NULL;
for (int i = 0; i < 7; i++) {
delete mpTm_c[i];
mpTm_c[i] = NULL;
}
dComIfGp_getMsgArchive(4)->removeResourceAll();
}
#pragma pop
/* 8023CA88-8023CB98 2373C8 0110+00 1/0 0/0 0/0 .text exec__14dMsgScrnBoss_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBoss_c::exec() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_boss/exec__14dMsgScrnBoss_cFv.s"
}
#pragma pop
void dMsgScrnBoss_c::exec() {
mpPmp_c->scale(g_MsgObject_HIO_c.mBossNameScaleX, g_MsgObject_HIO_c.mBossNameScaleY);
/* ############################################################################################## */
/* 80454BB4-80454BB8 0031B4 0004+00 1/1 0/0 0/0 .sdata2 @3916 */
SECTION_SDATA2 static u8 lit_3916[4] = {
0x00,
0x00,
0x00,
0x00,
};
mpFontParent->scale(g_MsgObject_HIO_c.mBossNameCharSizeX, g_MsgObject_HIO_c.mBossNameCharSizeY);
mpFontParent->paneTrans(g_MsgObject_HIO_c.mBossNameCharPosX, g_MsgObject_HIO_c.mBossNameCharPosY);
mpBaseParent->scale(g_MsgObject_HIO_c.mBossNameBaseSizeX, g_MsgObject_HIO_c.mBossNameBaseSizeY);
mpBaseParent->paneTrans(g_MsgObject_HIO_c.mBossNameBasePosX, g_MsgObject_HIO_c.mBossNameBasePosY);
if (isTalkNow()) {
fukiAlpha(1.0f);
}
}
/* 8023CB98-8023CBF0 2374D8 0058+00 1/0 0/0 0/0 .text drawSelf__14dMsgScrnBoss_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBoss_c::drawSelf() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_boss/drawSelf__14dMsgScrnBoss_cFv.s"
void dMsgScrnBoss_c::drawSelf() {
J2DGrafContext* ctx = dComIfGp_getCurrentGrafPort();
ctx->setup2D();
drawOutFont(0.0f, 0.0f, 1.0f);
}
#pragma pop
/* 8023CBF0-8023CC7C 237530 008C+00 1/0 0/0 0/0 .text fukiAlpha__14dMsgScrnBoss_cFf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnBoss_c::fukiAlpha(f32 param_0) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_boss/fukiAlpha__14dMsgScrnBoss_cFf.s"
void dMsgScrnBoss_c::fukiAlpha(f32 alpha) {
mpPmp_c->setAlphaRate(alpha);
mpBaseParent->setAlphaRate(alpha * g_MsgObject_HIO_c.mBossNameBaseAlpha);
for (int i = 0; i < 7; i++) {
mpTm_c[i]->setAlphaRate(alpha);
}
}
#pragma pop
/* 8023CC7C-8023CC80 2375BC 0004+00 1/0 0/0 0/0 .text fukiScale__14dMsgScrnBoss_cFf */
void dMsgScrnBoss_c::fukiScale(f32 param_0) {
void dMsgScrnBoss_c::fukiScale(f32) {
/* empty function */
}
/* 8023CC80-8023CC84 2375C0 0004+00 1/0 0/0 0/0 .text fukiTrans__14dMsgScrnBoss_cFff */
void dMsgScrnBoss_c::fukiTrans(f32 param_0, f32 param_1) {
void dMsgScrnBoss_c::fukiTrans(f32, f32) {
/* empty function */
}
/* 8023CC84-8023CC88 2375C4 0004+00 1/0 0/0 0/0 .text fontAlpha__14dMsgScrnBoss_cFf */
void dMsgScrnBoss_c::fontAlpha(f32 param_0) {
void dMsgScrnBoss_c::fontAlpha(f32) {
/* empty function */
}
+3 -108
View File
@@ -11,46 +11,11 @@
// Types:
//
struct mDoCPd_c {
static u8 m_cpadInfo[256];
};
struct dMsgString_c {
/* 80249C20 */ dMsgString_c();
/* 80249D28 */ ~dMsgString_c();
};
struct STControl {
/* 8003219C */ void checkTrigger();
/* 80032524 */ void checkUpTrigger();
/* 800325A0 */ void checkDownTrigger();
};
struct J2DOrthoGraph {};
struct dMsgScrnExplain_c {
/* 8023CC88 */ dMsgScrnExplain_c(STControl*, u8, bool, u8);
/* 8023D538 */ ~dMsgScrnExplain_c();
/* 8023D7D8 */ void move();
/* 8023D918 */ void draw(J2DOrthoGraph*);
/* 8023DAD0 */ void wait_init();
/* 8023DAD4 */ void wait_proc();
/* 8023DAD8 */ void open_request_init();
/* 8023DADC */ void open_request_proc();
/* 8023DBE4 */ void open_init();
/* 8023DC7C */ void open_proc();
/* 8023DD90 */ void move_init();
/* 8023DDB4 */ void move_proc();
/* 8023DE8C */ void move_select_init();
/* 8023E0F4 */ void move_select_proc();
/* 8023E43C */ void close_init();
/* 8023E448 */ void close_proc();
/* 8023E558 */ void openExplain(u32, u8, u8, u8, bool);
/* 8023E5CC */ void getAlphaRatio();
/* 8023E640 */ void checkTriggerA();
/* 8023E654 */ void checkTriggerB();
};
struct dMsgScrnArrow_c {
/* 8023B9B4 */ dMsgScrnArrow_c();
/* 8023BDC0 */ void draw();
@@ -73,77 +38,11 @@ struct dMsgScrn3Select_c {
/* 8023A97C */ void getCharSpace();
};
struct J2DTextBox {
/* 80300658 */ void getStringPtr() const;
/* 8030074C */ void setString(s16, char const*, ...);
};
struct JUTFont {};
struct COutFont_c {
/* 80225C94 */ COutFont_c(u8);
};
struct dMsgObject_c {
/* 802380F4 */ void getString(u32, J2DTextBox*, J2DTextBox*, JUTFont*, COutFont_c*, char*,
char*, char*, s16*);
};
struct JMSMesgEntry_c {};
struct dMeter2Info_c {
/* 8021C250 */ void getString(u32, char*, JMSMesgEntry_c*);
/* 8021C7FC */ void getStringLength(JUTFont*, f32, f32, char*);
};
struct Z2SpeechMgr2 {
/* 802CBF60 */ void setTextCount(s16);
};
struct JAISoundID {};
struct Vec {};
struct Z2SeMgr {
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
};
struct Z2AudioMgr {
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct ResTIMG {};
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 J2DPicture {
/* 802FC708 */ J2DPicture(ResTIMG const*);
};
struct J2DPane {
/* 802F7100 */ void getBounds();
};
struct CPaneMgrAlpha {
/* 802557D0 */ void setAlphaRate(f32);
};
struct CPaneMgr {
/* 80253984 */ CPaneMgr(J2DScreen*, u64, u8, JKRExpHeap*);
/* 802545B0 */ void paneTrans(f32, f32);
/* 80254EBC */ void getGlobalVtxCenter(J2DPane*, bool, s16);
};
//
// Forward References:
//
@@ -228,12 +127,7 @@ extern "C" void _restgpr_24();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void snprintf();
extern "C" void strcat();
extern "C" void strcpy();
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" extern u8 g_meter2_info[248];
extern "C" extern u8 g_MsgObject_HIO_c[1040];
extern "C" extern u8 data_80450B70[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
@@ -436,7 +330,8 @@ asm dMsgScrnExplain_c::dMsgScrnExplain_c(STControl* param_0, u8 param_1, bool pa
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dMsgScrnExplain_c::~dMsgScrnExplain_c() {
// asm dMsgScrnExplain_c::~dMsgScrnExplain_c() {
extern "C" asm void __dt__17dMsgScrnExplain_cFv() {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_explain/__dt__17dMsgScrnExplain_cFv.s"
}
@@ -617,7 +512,7 @@ asm void dMsgScrnExplain_c::close_proc() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dMsgScrnExplain_c::openExplain(u32 param_0, u8 param_1, u8 param_2, u8 param_3,
asm bool dMsgScrnExplain_c::openExplain(u32 param_0, u8 param_1, u8 param_2, u8 param_3,
bool param_4) {
nofralloc
#include "asm/msg/scrn/d_msg_scrn_explain/openExplain__17dMsgScrnExplain_cFUlUcUcUcb.s"