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
+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);
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
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