Regalloc/debug/misc fixes (#2794)

* Fix "0" asserts

* More debug and regalloc fixes

* Fix PTMF syntax for compatibility with other compilers

* Fix some fakematches, link more TUs for J/P
This commit is contained in:
LagoLunatic 2025-11-10 21:25:00 -05:00 committed by GitHub
parent a02f72d8f3
commit 23a1c94063
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
87 changed files with 314 additions and 607 deletions

View File

@ -133,6 +133,7 @@ hioInit = .bss:0x00000048; // type:object size:0x1 data:byte
@3933 = .bss:0x0000004C; // type:object size:0xC scope:local
l_HIO = .bss:0x00000058; // type:object size:0x1C scope:global data:byte
@4275 = .bss:0x00000074; // type:object size:0xC scope:local
init$2218 = .bss:0x00000080; // type:object size:0x1 scope:local align:1
sc$4274 = .bss:0x00000084; // type:object size:0xC scope:local
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x00000090; // type:object size:0x4 scope:global
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000094; // type:object size:0x4 scope:global

View File

@ -419,6 +419,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@4083 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x4 scope:global data:4byte
@5080 = .bss:0x00000058; // type:object size:0xC scope:local
init$2720 = .bss:0x00000064; // type:object size:0x1 scope:local
eyeOffset$5079 = .bss:0x00000068; // type:object size:0xC scope:local
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x00000074; // type:object size:0x4 scope:global
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000078; // type:object size:0x4 scope:global

View File

@ -1777,7 +1777,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ot"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ph"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_pm"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_po"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_po"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_pz"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_rb"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_rdb"),
@ -1861,7 +1861,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_fairy"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_fguard"),
ActorRel(NonMatching, "d_a_npc_gnd"),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_gra", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_gra", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grc", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_grd"),
ActorRel(NonMatching, "d_a_npc_grm"),
@ -1948,7 +1948,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zelda"),
ActorRel(Equivalent, "d_a_npc_zra", extra_cflags=[DANPCF_C_HACK]), # weak func order
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zrc", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_zrz", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_zrz", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_Lv5Key"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_Turara"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_TvCdlst"),
@ -2016,10 +2016,10 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gb"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_geyser"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_glowSphere"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_gm"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gm"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_goGate"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gomikabe"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_gra2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gra2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_graWall"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gra_rock"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_grave_stone"),
@ -2148,7 +2148,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pdoor"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pdtile"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pdwall"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_picture"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_picture"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pillar"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_pleaf"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_poCandle"),
@ -2240,7 +2240,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_waterfall"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_wchain"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_wdStick"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_web0"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_web0"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_web1"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_well_cover"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_wflag"),

View File

@ -564,7 +564,7 @@ struct J2DColorChanInfo {
/* 0x0 */ u8 field_0x3;
};
inline u8 J2DCalcColorChanID(const J2DColorChanInfo& info) { return info.field_0x1; }
inline u16 J2DCalcColorChanID(u8 param_0) { return param_0; }
extern const J2DColorChanInfo j2dDefaultColorChanInfo;
/**
@ -577,11 +577,11 @@ public:
setColorChanInfo(j2dDefaultColorChanInfo);
}
J2DColorChan(const J2DColorChanInfo& info) {
mColorChan = J2DCalcColorChanID(info);
mColorChan = J2DCalcColorChanID(info.field_0x1);
}
void setColorChanInfo(const J2DColorChanInfo& info) {
mColorChan = J2DCalcColorChanID(info);
mColorChan = J2DCalcColorChanID(info.field_0x1);
}
u16 getMatSrc() const { return mColorChan & 1; }

View File

@ -215,7 +215,7 @@ public:
chunk = chunk->getNextChunk();
}
JUT_PANIC(362,"Cannnot free for JASMemChunkPool")
JUT_PANIC(362, "Cannnot free for JASMemChunkPool");
}
/* 0x18 */ MemoryChunk* field_0x18;

View File

@ -89,7 +89,7 @@ private:
/* 0x5BC */ u8 field_0x5bc[0x5DC - 0x5BC];
/* 0x5DC */ u8 mDoorAction;
/* 0x5E0 */ dPath* mpPath;
/* 0x5E4 */ cXyz mPoint;
/* 0x5E4 */ Vec mPoint;
/* 0x5F0 */ u8 mPathIndex;
/* 0x5F4 */ int mPointIndex;
/* 0x5F8 */ u8 mBossHealth;

View File

@ -10,9 +10,6 @@ class J3DModelData;
class dBgW;
struct fs_weed_s {
/* 8086FED8 */ ~fs_weed_s();
/* 8086FF38 */ fs_weed_s();
/* 0x00 */ cXyz field_0x00[15];
/* 0xB4 */ f32 field_0xb4;
/* 0xB8 */ f32 field_0xb8;
@ -20,9 +17,6 @@ struct fs_weed_s {
};
struct fs_tsubo_s {
/* 8086FE98 */ ~fs_tsubo_s();
/* 8086FED4 */ fs_tsubo_s();
/* 0x00 */ cXyz field_0x00;
/* 0x0C */ u8 field_0x0c[0x14 - 0x0c];
/* 0x14 */ J3DModel* field_0x14;
@ -34,9 +28,6 @@ struct fs_tsubo_s {
};
struct fs_rod_s {
/* 8086FF84 */ ~fs_rod_s();
/* 8086FFC0 */ fs_rod_s();
/* 0x00 */ cXyz field_0x00;
/* 0x0C */ u8 field_0x0C[0x14 - 0x0C];
/* 0x14 */ J3DModel* field_0x14;
@ -49,9 +40,6 @@ struct fs_rod_s {
};
struct fs_lure_s {
/* 8086FFDC */ ~fs_lure_s();
/* 80870018 */ fs_lure_s();
/* 0x00 */ cXyz field_0x00;
/* 0x0C */ s16 field_0x0c;
/* 0x0E */ s16 field_0x0e;
@ -72,9 +60,6 @@ struct fs_lure_s {
};
struct fs_koro2_s {
/* 8086FD78 */ ~fs_koro2_s();
/* 8086FDB4 */ fs_koro2_s();
/* 0x00 */ J3DModel* mpModel;
/* 0x04 */ Mtx field_0x04;
/* 0x34 */ s8 field_0x34;

View File

@ -1112,7 +1112,7 @@ public:
struct daNpcF_anmPlayData {
u16 idx;
f32 morf;
s32 numLoops;
int numLoops;
};
enum AnmFlags {

View File

@ -195,7 +195,7 @@ public:
return true;
}
void doNormalAction() {
void doNormalAction(int) {
mOrderEvtNo = 0;
if (mpNextActionFn != NULL) {
if (mpNextActionFn == mpActionFn) {

View File

@ -244,7 +244,7 @@ public:
break;
default:
OS_REPORT("%s: Line.%d arg=%d\n", "d_a_passer_mng.cpp", 1049, param_1);
JUT_PANIC(1050, 0);
JUT_ASSERT(1050, FALSE);
break;
}
return paramLow << 8;

View File

@ -273,6 +273,7 @@ public:
class dEvDtFlag_c {
public:
dEvDtFlag_c() {}
~dEvDtFlag_c() {}
BOOL flagCheck(int flag);
BOOL flagSet(int flag);
BOOL flagMaxCheck(int flag);

View File

@ -10,6 +10,7 @@ class fopAc_ac_c;
class dEvent_exception_c {
public:
dEvent_exception_c() { mEventInfoIdx = -1; }
~dEvent_exception_c() {}
void init();
int setStartDemo(int mapToolID);
const char* getEventName();

View File

@ -831,10 +831,7 @@ public:
/* 0x2DB */ u8 door_light_influence_ratio;
/* 0x2DC */ s16 unk_light_influence_ratio;
/* 0x2DE */ u8 fish_pond_colreg_adjust_ON;
/* 0x2E0 */ s16 fish_pond_colreg_c0_R;
/* 0x2E2 */ s16 fish_pond_colreg_c0_G;
/* 0x2E4 */ s16 fish_pond_colreg_c0_B;
/* 0x2E6 */ u8 field_0x2E6[0x2E8 - 0x2E6];
/* 0x2E0 */ GXColorS10 fish_pond_colreg_c0;
/* 0x2E8 */ u8 water_mud_adjust_ON;
/* 0x2EA */ s16 field_0x2ea;
/* 0x2EC */ s16 field_0x2ec;

View File

@ -180,7 +180,7 @@ public:
void setArchiveName(char* name) { mArchiveName = name; }
u8 getMapToolId() { return mMapToolId; }
s16 getEventId() { return mEventId; }
s16 getIdx() { return mIndex; }
s16 getIdx() { return (s8)mIndex; }
void setIdx(u8 i_idx) { mIndex = i_idx; }
char* getArchiveName() { return mArchiveName; }
BOOL chkCondition(u16 condition) { return (mCondition & condition) == condition; }
@ -195,7 +195,7 @@ public:
/* 0x06 */ u16 mCondition;
/* 0x08 */ s16 mEventId;
/* 0x0A */ u8 mMapToolId;
/* 0x0B */ s8 mIndex;
/* 0x0B */ u8 mIndex;
/* 0x0C */ char* mArchiveName;
/* 0x10 */ u8 field_0x10;
/* 0x14 */ void (*field_0x14)(void*);

View File

@ -1661,7 +1661,7 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
if (param_0) {
var_f31 = cutData->mRightTurnInputStartFrame;
} else {
var_f31 = cutData->mRightTurnAnm.mStartFrame;
var_f31 = anm_data->mStartFrame;
}
field_0x3484 = cutData->mRightAttackStartFrame;

View File

@ -1303,7 +1303,7 @@ void daB_DS_c::executeOpeningDemo() {
mMode++;
}
break;
case 2:
case 2: {
f32 calc_center = cLib_addCalcPos(&mCameraCenter, mOpCenterDt[1], 0.3f, 2.0f, 1.0f);
f32 calc_eye = cLib_addCalcPos(&mCameraEye, mOpEyeDt[1], 0.3f, 2.0f, 1.0f);
if (calc_center > 2.0f || calc_eye > 2.0f || cLib_calcTimer(&mModeTimer) != 0) {
@ -1323,6 +1323,7 @@ void daB_DS_c::executeOpeningDemo() {
fopAcM_OffStatus(this, 0x4000);
mMode++;
// fallthrough
}
case 3:
mPedestalFallTimer = l_HIO.mPedestalFallTime;
@ -1519,7 +1520,7 @@ void daB_DS_c::executeOpeningDemo() {
dComIfGp_getVibration().StartShock(4, 0x1f, cXyz(0.0f, 1.0f, 0.0f));
mMode++;
// fallthrough
case 26:
case 26: {
if (!field_0x85e && mpZantMorf->isStop()) {
mpZantMorf->setAnm(static_cast<J3DAnmTransform*>(dComIfG_getObjectRes("B_DS", 67)),
J3DFrameCtrl::EMode_LOOP, 1.0f, 1.0f, 0.0f, -1.0f);
@ -1562,6 +1563,7 @@ void daB_DS_c::executeOpeningDemo() {
mMode = 30;
field_0x85e = false;
// fallthrough
}
case 30:
mCameraCenter.set(mOpCenterDt[12]);
mCameraEye.set(mOpEyeDt[12]);
@ -2325,7 +2327,7 @@ void daB_DS_c::executeDamage() {
mMode = 100;
mSound.startCreatureSound(Z2SE_EN_DS_MDEMO_FALL, 0, -1);
// fallthrough
case 100:
case 100: {
gravity = -0.2f;
if (current.pos.y > -1600.0f) {
if (current.pos.y <= -300.0f) {
@ -2346,6 +2348,7 @@ void daB_DS_c::executeDamage() {
&p2_angle, NULL, 0xff);
mMode = 101;
// fallthrough
}
case 101:
cLib_addCalc2(&mCameraCenter.y, down_center_dt[4].y, 0.7f, 10.0f);
cLib_addCalc2(&mCameraEye.y, down_eye_dt[4].y, 0.7f, 10.0f);

View File

@ -444,7 +444,6 @@ void daBalloon2D_c::setComboAlpha() {
}
/* 80654730-80654E8C 001350 075C+00 1/1 0/0 0/0 .text drawAddScore__13daBalloon2D_cFv */
// NONMATCHING - field_0x0.x, regalloc
void daBalloon2D_c::drawAddScore() {
for (s32 i = 19; i >= 0; i--) {
if (field_0x5f8[i].field_0xe != 0) {
@ -591,7 +590,6 @@ void daBalloon2D_HIO_c::resetAddScoreSetFlag() {
}
/* 80655250-80655304 001E70 00B4+00 1/0 0/0 0/0 .text daBalloon2D_create__FP13daBalloon2D_c */
// NONMATCHING - vtable
static int daBalloon2D_create(daBalloon2D_c* i_this) {
fopAcM_ct(i_this, daBalloon2D_c);
return i_this->create();

View File

@ -408,6 +408,13 @@ int daBg_c::draw() {
break;
}
#ifdef DEBUG
s16 sp56 = 0xFF;
if (g_kankyoHIO.navy.fish_pond_colreg_adjust_ON) {
sp50 = g_kankyoHIO.navy.fish_pond_colreg_c0;
}
#endif
f32 var_f31 = bgPart->tevstr->AmbCol.r / 10.0f;
var_f31 *= var_f31;
if (var_f31 > 1.0f) {

View File

@ -131,7 +131,6 @@ u8* daBgObj_c::spec_data_c::initFarInfoBlock(u8* i_dataPtr) {
/* 80459904-80459B64 000324 0260+00 1/1 0/0 1/1 .text Set__Q29daBgObj_c11spec_data_cFPv
*/
// NONMATCHING - close-ish
bool daBgObj_c::spec_data_c::Set(void* i_ptr) {
JUT_ASSERT(496, i_ptr != NULL);
@ -160,7 +159,7 @@ bool daBgObj_c::spec_data_c::Set(void* i_ptr) {
default:
// Invalid data block type
OS_REPORT_ERROR("データブロックタイプが不正です<%d>\n", block_type);
JUT_PANIC(527, "0");
JUT_ASSERT(527, FALSE);
}
if (block_type == 0) {
@ -201,7 +200,7 @@ bool daBgObj_c::spec_data_c::Set(void* i_ptr) {
default:
// Invalid data block type
OS_REPORT_ERROR("データブロックタイプが不正です<%d>\n", block_type);
JUT_PANIC(570, "0");
JUT_ASSERT(570, FALSE);
}
if (block_type == 0) {
@ -242,7 +241,7 @@ bool daBgObj_c::spec_data_c::Set(void* i_ptr) {
default:
// "Data Block type invalid<%d>\n"
OSReport_Error("データブロックタイプが不正です<%d>\n", block_type);
JUT_PANIC(619, "0");
JUT_ASSERT(619, FALSE);
break;
}
@ -980,7 +979,7 @@ void daBgObj_c::setParticle() {
default:
// Multi MoveBG: Particle model number is invalid <%d>
OS_REPORT_ERROR("マルチMoveBGパーティクルモデル番号が不正<%d>\n", modelNumber);
JUT_PANIC(1689, "0");
JUT_ASSERT(1689, FALSE);
break;
}
JPABaseEmitter* emitter = dComIfGp_particle_set(

View File

@ -932,7 +932,6 @@ void daBoomerang_c::setEffect() {
}
/* 804A0874-804A0F0C 002834 0698+00 2/0 0/0 0/0 .text procWait__13daBoomerang_cFv */
// NONMATCHING - small regalloc
int daBoomerang_c::procWait() {
daAlink_c* player = daAlink_getAlinkActorClass();
speedF = 0.0f;
@ -973,7 +972,7 @@ int daBoomerang_c::procWait() {
offStateFlg0(FLG0_10);
}
current.angle.y += 0x1830;
current.angle.y += (s16)0x1830;
shape_angle.x = current.angle.x;
shape_angle.y = current.angle.y;
shape_angle.z = 0x1000;
@ -993,7 +992,7 @@ int daBoomerang_c::procWait() {
procMove();
} else if (dCam_getBody()->Mode() != 8) {
if (dComIfGp_checkPlayerStatus0(0, 0x80000) && player->getAtnActor() != NULL && m_lockCnt < BOOMERANG_LOCK_MAX) {
fpc_ProcID atn_actor_id = fopAcM_GetID(player->getAtnActor());
fpc_ProcID atn_actor_id = (fpc_ProcID)fopAcM_GetID(player->getAtnActor());
int var_r27 = 0;
while (var_r27 < m_lockCnt) {

View File

@ -357,10 +357,10 @@ BOOL daBdoor_c::actionEnd() {
int daBdoor_c::execute() {
typedef BOOL (daBdoor_c::*daBdoor_action)();
static daBdoor_action l_action[4] = {
&actionWait,
&actionCloseWait,
&actionOpen,
&actionEnd,
&daBdoor_c::actionWait,
&daBdoor_c::actionCloseWait,
&daBdoor_c::actionOpen,
&daBdoor_c::actionEnd,
};
if (fopAcM_CheckStatus(this, 0x1000)) {
mStaffID = dComIfGp_evmng_getMyStaffId(l_staff_name, NULL, 0);

View File

@ -933,7 +933,7 @@ int daDoor20_c::demoProc() {
if (!field_0x584.init(anm, 1, 0, 1.0f, 0, -1, true) || !field_0x5a0.init(anm,
1, 0, 1.0f, 0, -1, true))
{
JUT_PANIC(1799, 0);
JUT_ASSERT(1799, FALSE);
}
field_0x67c = 0;
openInit2();
@ -945,7 +945,7 @@ int daDoor20_c::demoProc() {
if (!field_0x584.init(anm, 1, 0, 1.0f, 0, -1, true) || !field_0x5a0.init(anm,
1, 0, 1.0f, 0, -1, true))
{
JUT_PANIC(1812, 0);
JUT_ASSERT(1812, FALSE);
}
field_0x67c = 0;
openInit2();

View File

@ -178,7 +178,6 @@ static void damage_check(e_ba_class* i_this) {
}
/* 8067F2DC-8067F544 0006DC 0268+00 2/3 0/0 0/0 .text path_check__FP10e_ba_class */
// NONMATCHING regalloc
static BOOL path_check(e_ba_class* i_this) {
fopEn_enemy_c* a_this = &i_this->mEnemy;
if (i_this->mpPath != NULL) {

View File

@ -2947,7 +2947,6 @@ int c_start;
/* 804ECB50-804ED83C 007A90 0CEC+00 2/1 0/0 0/0 .text daE_DN_Execute__FP10e_dn_class */
static int daE_DN_Execute(e_dn_class* i_this) {
// NONMATCHING
if (i_this->field_0x10d8 != 0) {
return 1;
}
@ -3181,8 +3180,7 @@ static int daE_DN_Execute(e_dn_class* i_this) {
def_se_set(&i_this->mSound, i_this->field_0xf7c.GetTgHitObj(), 40, 0);
dScnPly_c::setPauseTimer(l_HIO.field_0x1c);
i_this->field_0x6ec = 10;
// The following s16 cast makes ALL the difference in terms of regalloc!
cMtx_YrotS(*calc_mtx, (s16) a_this->shape_angle.y);
cMtx_YrotS(*calc_mtx, (s16)a_this->shape_angle.y);
sp2c.x = KREG_F(0);
sp2c.y = 120.0f + KREG_F(1);
sp2c.z = 50.0f + KREG_F(2);

View File

@ -249,7 +249,6 @@ static void e_fs_wait(e_fs_class* i_this) {
}
/* 806BC264-806BC444 000884 01E0+00 1/1 0/0 0/0 .text e_fs_move__FP10e_fs_class */
// NONMATCHING regalloc
static void e_fs_move(e_fs_class* i_this) {
fopEn_enemy_c* a_this = (fopEn_enemy_c*)&i_this->mEnemy;
switch (i_this->mMode) {

View File

@ -20,8 +20,6 @@ public:
/* 0x10 */ f32 mCheckRange;
};
// NONMATCHING - weak function order
/* 806F7EEC-806F7F24 0000EC 0038+00 1/1 0/0 0/0 .text __ct__12daE_KG_HIO_cFv */
daE_KG_HIO_c::daE_KG_HIO_c() {
field_0x4 = -1;

View File

@ -167,7 +167,6 @@ void daE_OT_c::setActionMode(int i_action, int i_mode) {
}
/* 8073A510-8073A7B0 000330 02A0+00 1/1 0/0 0/0 .text damage_check__8daE_OT_cFv */
// NONMATCHING regswap
void daE_OT_c::damage_check() {
if (mAction == ACT_DAMAGE) {
return;
@ -182,7 +181,7 @@ void daE_OT_c::damage_check() {
if (mCcSph.ChkCoHit()) {
fopAc_ac_c* hit_actor = dCc_GetAc(mCcSph.GetCoHitObj()->GetAc());
if (fopAcM_GetName(hit_actor) == PROC_E_DT
if (fopAcM_GetName(dCc_GetAc(hit_actor)) == PROC_E_DT
&& static_cast<daE_DT_c*>(hit_actor)->isFlyingAttack())
{
setActionMode(ACT_DAMAGE, 10);
@ -197,7 +196,7 @@ void daE_OT_c::damage_check() {
if (mCcSph.ChkTgHit()) {
mAtInfo.mpCollider = mCcSph.GetTgHitObj();
dCc_GetAc(mAtInfo.mpCollider->GetAc());
fopAc_ac_c* ac = dCc_GetAc(mAtInfo.mpCollider->GetAc());
cc_at_check(this, &mAtInfo);
dScnPly_c::setPauseTimer(0);
if (mAtInfo.mpCollider->ChkAtType(AT_TYPE_SHIELD_ATTACK)) {

View File

@ -355,7 +355,6 @@ static s16 s_TargetAngle;
} // namespace
/* 80742958-80742C94 000B58 033C+00 1/1 0/0 0/0 .text SearchFarP__8daE_PM_cFv */
// NONMATCHING regalloc, instruction order
void daE_PM_c::SearchFarP() {
//! @bug best_distance is not initialized
f32 best_distance;
@ -2500,7 +2499,6 @@ void daE_PM_c::DamageAction() {
}
/* 8074A210-8074A3DC 008410 01CC+00 1/1 0/0 0/0 .text At_Check__8daE_PM_cFv */
// NONMATCHING regalloc
void daE_PM_c::At_Check() {
fopAc_ac_c* player = dComIfGp_getPlayer(0);
mAtInfo.mpCollider = mCcCyl.GetTgHitObj();

View File

@ -1006,7 +1006,7 @@ static void e_po_dead(e_po_class* i_this) {
}
break;
case 4:
case 4: {
J3DModel* model_p = i_this->mpMorf3->getModel();
for (i = 0; i < 4; i++) {
i_this->mParticleKeys[i] =
@ -1051,7 +1051,7 @@ static void e_po_dead(e_po_class* i_this) {
i_this->field_0x788.y = i_this->mAcch.GetGroundH();
}
}
}
case 6:
if (i_this->field_0x74A[0] == 0) {
local_100 = a_this->current.pos - i_this->field_0x788;
@ -2128,7 +2128,7 @@ static void e_po_holl_demo(e_po_class* i_this) {
i_this->mType = 22;
// Fallthrough
case 22:
case 22: {
if (mArg0Check(i_this, 7) != 0) {
cLib_addCalcPos(&i_this->field_0x844, mKcenterInit_dt[9], 0.5f, 20.0f, 10.0f);
cLib_addCalcPos(&i_this->field_0x838, mKeyeInit_dt[9], 0.5f, 20.0f, 10.0f);
@ -2166,7 +2166,7 @@ static void e_po_holl_demo(e_po_class* i_this) {
i_this->field_0x7E2 = 0;
i_this->mType = 23;
// Fallthrough
}
case 23:
if (mHollDemoFlag < 24) {
i_this->field_0x74A[2] = 10;

View File

@ -428,7 +428,6 @@ void daE_PZ_c::executeSearchPoint() {
}
/* 807593CC-8075B7CC 000F4C 2400+00 2/1 0/0 0/0 .text executeOpeningDemo__8daE_PZ_cFv */
// NONMATCHING - fopAcM_GetID not getting inlined, equivalent
void daE_PZ_c::executeOpeningDemo() {
static cXyz mPzCenterInit_dt[] = {
cXyz(-50.0f, 10.0f, -3150.0f),

View File

@ -490,7 +490,6 @@ inline u16 absoluteValue(s16 num) {
}
/* 8076CB24-8076CE10 000E44 02EC+00 2/2 0/0 0/0 .text search_bomb__FP11e_rdy_classi */
// NONMATCHING regalloc
static dBomb_c* search_bomb(e_rdy_class* i_this, BOOL param_1) {
if ((i_this->field_0xaf0 & 0x10000000) == 0) {
return NULL;

View File

@ -445,7 +445,6 @@ bool daE_ZH_c::mColorSet(bool param_1, f32 param_2, f32 param_3) {
/* 80829AD8-80829E44 000B98 036C+00 2/2 0/0 0/0 .text mReturnLineMove__8daE_ZH_cFv */
bool daE_ZH_c::mReturnLineMove() {
// NONMATCHING
if (mS_Ball == NULL) {
setActionMode(ACTION_EXECUTE_FLY_DELETE, 0);
return false;

View File

@ -816,7 +816,6 @@ static int model_d[8] = {
/* 8046A724-8046A858 0025A4 0134+00 1/1 0/0 0/0 .text daEp_CreateHeap__FP10fopAc_ac_c */
static int daEp_CreateHeap(fopAc_ac_c* a_this) {
// NONMATCHING - equiv in debug
ep_class* i_this = (ep_class*)a_this;
void* modelData = dComIfG_getObjectRes("Ep", model_d[i_this->field_0xa5a]);

View File

@ -249,7 +249,7 @@ static u8 l_HIOInit;
static daKago_HIO_c l_HIO;
/* 80849BA8-8084A070 0006E8 04C8+00 4/4 0/0 0/0 .text checkGroundHeight__8daKago_cF4cXyzPf */
// NONMATCHING - regalloc
// NONMATCHING - fpr regalloc
f32 daKago_c::checkGroundHeight(cXyz i_pos, f32* o_step) {
f32 retVal;
@ -393,8 +393,7 @@ f32 daKago_c::checkRoofHeight(cXyz param_0) {
if (std::abs(current.pos.y - roofChkYVal) < 310.0f) {
fopAc_ac_c* actor = dComIfG_Bgsp().GetActorPointer(roofChk);
if (actor != NULL && fopAcM_GetName(actor) == PROC_Obj_RIVERROCK) {
daObjRIVERROCK_c* riverRock = (daObjRIVERROCK_c*)actor;
if (riverRock->mBreakSubAction == daObjRIVERROCK_c::BREAK_MOVE) {
if (((daObjRIVERROCK_c*)actor)->mBreakSubAction == daObjRIVERROCK_c::BREAK_MOVE) {
field_0x6e5 = 1;
}
}
@ -2617,7 +2616,7 @@ bool daKago_c::executeFirstDemo() {
}
break;
case 3:
case 3: {
dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 3);
setMidnaTagPos();
@ -2638,6 +2637,7 @@ bool daKago_c::executeFirstDemo() {
}
break;
}
case 4:
dComIfGp_getEvent().setSkipProc(this, DemoSkipCallBack, 2);

View File

@ -210,7 +210,7 @@ static int daKytag12_Execute_standard(kytag12_class* i_this) {
effect_p->field_0x42 = 0;
effect_p->mStatus++;
/* fallthrough */
case 1:
case 1: {
var_f30 = cM_ssin(effect_p->field_0x3c);
effect_p->field_0x3c += (((f32)(i & 31) * 6.8f) + 630.0f);
@ -231,6 +231,7 @@ static int daKytag12_Execute_standard(kytag12_class* i_this) {
}
}
break;
}
case 2:
spB8 = effect_p->mBasePos + effect_p->mPosition;
var_f29 = 0.0f;
@ -507,7 +508,7 @@ static int daKytag12_Execute_arrival(kytag12_class* i_this) {
}
switch (effect_p->mStatus) {
case 0:
case 0: {
s16 temp_r3 = cM_rndF(0x10000);
sp80.x = cM_rndFX(cM_ssin(temp_r3) * 1000.0f);
@ -529,7 +530,8 @@ static int daKytag12_Execute_arrival(kytag12_class* i_this) {
effect_p->mPosition.z = -sp80.z;
effect_p->mStatus++;
break;
case 1:
}
case 1: {
sp80.x = 0.0f;
sp80.y = effect_p->mPosition.y;
sp80.z = 0.0f;
@ -547,6 +549,7 @@ static int daKytag12_Execute_arrival(kytag12_class* i_this) {
0.01f);
cLib_addCalc(&effect_p->mPosition.z, var_f21 * 20.0f, 0.1f, 10.0f, 0.01f);
break;
}
case 2:
effect_p->mPosition.x = var_f21 * 20.0f;
effect_p->mPosition.y = (var_f22 + 1.0f) * 20.0f;
@ -726,6 +729,7 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
EF_EVIL_EFF* effect_p = &temp_r25->mEffect[i];
var_f25 = 1.0f;
f32 f31;
switch (effect_p->mStatus) {
case 0:
if (i < 500) {
@ -746,9 +750,8 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
effect_p->mBasePos.y = cM_rndF(6800.0f) + -3200.0f;
effect_p->mBasePos.z = cM_rndFX(480.0f) + 5350.0f;
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -200.0f + -3000.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * -200.0f + -3000.0f;
effect_p->field_0x24 = 1.0f;
effect_p->field_0x38 = fabsf(var_f26) * 50.0f + 150.0f;
@ -756,9 +759,8 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
effect_p->mBasePos.y = cM_rndF(6800.0f) + -3200.0f;
effect_p->mBasePos.z = cM_rndFX(510.0f) + 5300.0f;
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -200.0f + 3400.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * -200.0f + 3400.0f;
effect_p->field_0x24 = 1.0f;
effect_p->field_0x38 = fabsf(var_f26) * 50.0f + 150.0f;
@ -775,7 +777,7 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
effect_p->field_0x2c = 0.0f;
effect_p->mStatus++;
/* fallthrough */
case 1:
case 1: {
var_f26 = cM_ssin(effect_p->field_0x3c);
effect_p->field_0x3c += ((f32)(i & 240) * 4.8f);
@ -790,6 +792,7 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
effect_p->field_0x38 = (temp_f7 * 10.0f + 85.0f) * 1.5f;
}
break;
}
case 2:
sp80 = effect_p->mBasePos + effect_p->mPosition;
var_f25 = 0.0f;
@ -833,18 +836,15 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
effect_p->mStatus = 1;
}
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -200.0f + -3000.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * -200.0f + -3000.0f;
if (effect_p->mBasePos.y < -680.0f) {
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -20.0f + -2250.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * -20.0f + -2250.0f;
} else if (effect_p->mBasePos.y < 0.0f) {
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -1160.0f + -3000.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * -1160.0f + -3000.0f;
effect_p->mBasePos.y += 10.0f;
}
} else if (i >= 1500 && i < 2000) {
@ -854,18 +854,15 @@ static int daKytag12_Execute_R00(kytag12_class* i_this) {
effect_p->mStatus = 1;
}
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * 200.0f + 3400.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * 200.0f + 3400.0f;
if (effect_p->mBasePos.y < -380.0f) {
f32 temp_f2 = (effect_p->mBasePos.y / 1000.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -20.0f + 2700.0f;
f31 = (effect_p->mBasePos.y / 1000.0f);
effect_p->mBasePos.x = f31 * -20.0f + 2700.0f;
} else if (effect_p->mBasePos.y < 200.0f) {
f32 temp_f2 = (effect_p->mBasePos.y / -800.0f);
temp_f2 = temp_f2; // fake match? idk how else to fix instruction order
effect_p->mBasePos.x = temp_f2 * -1060.0f + 3200.0f;
f31 = (effect_p->mBasePos.y / -800.0f);
effect_p->mBasePos.x = f31 * -1060.0f + 3200.0f;
effect_p->mBasePos.y += 10.0f;
}
}

View File

@ -9,6 +9,7 @@
#include "d/actor/d_a_kytag14.h"
#include "d/d_com_inf_game.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_debug_viewer.h"
/* 80529998-805299A0 000078 0008+00 1/0 0/0 0/0 .text daKytag14_Draw__FP13kytag14_class
*/
@ -18,6 +19,7 @@ static int daKytag14_Draw(kytag14_class*) {
/* 805299A0-80529B34 000080 0194+00 1/0 0/0 0/0 .text daKytag14_Execute__FP13kytag14_class */
static int daKytag14_Execute(kytag14_class* i_this) {
fopAc_ac_c* actor = i_this;
BOOL event1_set = true;
BOOL event2_unset = true;
BOOL switch1_set = true;
@ -28,7 +30,7 @@ static int daKytag14_Execute(kytag14_class* i_this) {
}
if (i_this->mEventID1 != 0xFFFF) {
if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_this->mEventID1])) {
if (dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[i_this->mEventID1])) {
event1_set = true;
} else {
event1_set = false;
@ -36,7 +38,7 @@ static int daKytag14_Execute(kytag14_class* i_this) {
}
if (i_this->mEventID2 != 0xFFFF) {
if (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_this->mEventID2])) {
if (!dComIfGs_isEventBit((u16)dSv_event_flag_c::saveBitLabels[i_this->mEventID2])) {
event2_unset = true;
} else {
event2_unset = false;
@ -61,6 +63,15 @@ static int daKytag14_Execute(kytag14_class* i_this) {
if (event1_set == true && event2_unset == true && switch1_set == true && switch2_unset == true)
{
#ifdef DEBUG
if (!g_kankyoHIO.navy.display_save_location) {
dDbVw_Report(20, 16, "TAG SavMem STAGE[%s] Room[%d] Lp[%d]", dComIfGp_getStartStageName(), i_this->mSaveRoomNo, i_this->mSavePoint);
if (i_this->mSaveRoomNo == -1) {
OSReport_Error("\n セーブ復帰位置タグの部屋指定に-1指定!\n");
JUT_ASSERT(250, FALSE);
}
}
#endif
g_dComIfG_gameInfo.info.getPlayer().getPlayerReturnPlace().set(
dComIfGp_getStartStageName(), i_this->mSaveRoomNo, i_this->mSavePoint);
}

View File

@ -19,169 +19,6 @@
#include "SSystem/SComponent/c_math.h"
#include "Z2AudioLib/Z2Instances.h"
//
// Forward References:
//
extern "C" static void ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c();
extern "C" static void Reel_CallBack__FP8J3DJointi();
extern "C" static void frog_CallBack__FP8J3DJointi();
extern "C" static void koro2_draw__FP11fshop_class();
extern "C" static void daFshop_Draw__FP11fshop_class();
extern "C" static void lure_set__FP11fshop_class();
extern "C" static void rod_set__FP11fshop_class();
extern "C" void __dt__4cXyzFv();
extern "C" static void s_fish_sub__FPvPv();
extern "C" static void tsubo_set__FP11fshop_class();
extern "C" static void weed_control__FP11fshop_classP9fs_weed_s();
extern "C" static void stage_copy__FP11fshop_classP11fshop_class();
extern "C" static void koro2_mtx_set__FP11fshop_class();
extern "C" static void s_sel_sub__FPvPv();
extern "C" static void s_ball_sub__FPvPv();
extern "C" static void koro2_game__FP11fshop_class();
extern "C" static void ball_wall_check__FP11fshop_class();
extern "C" static void daFshop_Execute__FP11fshop_class();
extern "C" static bool daFshop_IsDelete__FP11fshop_class();
extern "C" static void daFshop_Delete__FP11fshop_class();
extern "C" static void koro2_heapinit__FP10fopAc_ac_c();
extern "C" static void useHeapInit__FP10fopAc_ac_c();
extern "C" static void BalluseHeapInit__FP10fopAc_ac_c();
extern "C" static void daFshop_Create__FP10fopAc_ac_c();
extern "C" void __dt__10fs_koro2_sFv();
extern "C" void __ct__10fs_koro2_sFv();
extern "C" void __dt__12dBgS_ObjAcchFv();
extern "C" void __dt__12dBgS_AcchCirFv();
extern "C" void __dt__10fs_tsubo_sFv();
extern "C" void __ct__10fs_tsubo_sFv();
extern "C" void __dt__9fs_weed_sFv();
extern "C" void __ct__9fs_weed_sFv();
extern "C" void __ct__4cXyzFv();
extern "C" void __dt__8fs_rod_sFv();
extern "C" void __ct__8fs_rod_sFv();
extern "C" void __dt__9fs_lure_sFv();
extern "C" void __ct__9fs_lure_sFv();
extern "C" void __sinit_d_a_mg_fshop_cpp();
extern "C" static void func_80870070();
extern "C" static void func_80870078();
extern "C" extern char const* const d_a_mg_fshop__stringBase0;
//
// External References:
//
extern "C" void mDoMtx_XrotS__FPA4_fs();
extern "C" void mDoMtx_XrotM__FPA4_fs();
extern "C" void mDoMtx_YrotS__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void push__14mDoMtx_stack_cFv();
extern "C" void pop__14mDoMtx_stack_cFv();
extern "C" void transM__14mDoMtx_stack_cFfff();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void init__19mDoExt_3DlineMat0_cFUsUsi();
extern "C" void update__19mDoExt_3DlineMat0_cFifR8_GXColorUsP12dKy_tevstr_c();
extern "C" void update__19mDoExt_3DlineMat0_cFiR8_GXColorP12dKy_tevstr_c();
extern "C" void setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void fopAc_IsActor__FPv();
extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc();
extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fpcEx_Search__FPFPvPv_PvPv();
extern "C" void fpcSch_JudgeForPName__FPvPv();
extern "C" void addSimpleModel__14dComIfG_play_cFP12J3DModelDataiUc();
extern "C" void removeSimpleModel__14dComIfG_play_cFP12J3DModelDatai();
extern "C" void entrySimpleModel__14dComIfG_play_cFP8J3DModeli();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
extern "C" void getEventReg__11dSv_event_cCFUs();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void Release__4cBgSFP9dBgW_Base();
extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
extern "C" void __ct__12dBgS_AcchCirFv();
extern "C" void SetWall__12dBgS_AcchCirFff();
extern "C" void __dt__9dBgS_AcchFv();
extern "C" void __ct__9dBgS_AcchFv();
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
extern "C" void OnWallSort__9dBgS_AcchFv();
extern "C" void __ct__11dBgS_GndChkFv();
extern "C" void __dt__11dBgS_GndChkFv();
extern "C" void __ct__11dBgS_LinChkFv();
extern "C" void __dt__11dBgS_LinChkFv();
extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
extern "C" void SetObj__16dBgS_PolyPassChkFv();
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
extern "C" void __ct__4dBgWFv();
extern "C" void Move__4dBgWFv();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void dTimer_getRestTimeMs__Fv();
extern "C" void __pl__4cXyzCFRC3Vec();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void __ml__4cXyzCFf();
extern "C" void __ct__5csXyzFsss();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rndF__Ff();
extern "C" void cM_rndFX__Ff();
extern "C" void cM_initRnd2__Fiii();
extern "C" void cM_rndF2__Ff();
extern "C" void cM_rndFX2__Ff();
extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
extern "C" void __dt__13cBgS_PolyInfoFv();
extern "C" void __dt__8cM3dGCirFv();
extern "C" void cLib_addCalc2__FPffff();
extern "C" void cLib_addCalc0__FPfff();
extern "C" void cLib_addCalcAngleS2__FPssss();
extern "C" void MtxScale__FfffUc();
extern "C" void MtxPosition__FP4cXyzP4cXyz();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void _savegpr_14();
extern "C" void _savegpr_17();
extern "C" void _savegpr_18();
extern "C" void _savegpr_19();
extern "C" void _savegpr_20();
extern "C" void _savegpr_21();
extern "C" void _savegpr_24();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_14();
extern "C" void _restgpr_17();
extern "C" void _restgpr_18();
extern "C" void _restgpr_19();
extern "C" void _restgpr_20();
extern "C" void _restgpr_21();
extern "C" void _restgpr_24();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__19mDoExt_3DlineMat0_c[5];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" void __register_global_object();
//
// Declarations:
//
/* 8086C06C-8086C08C 0000EC 0020+00 1/1 0/0 0/0 .text
* ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
static void ride_call_back(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
@ -1664,7 +1501,6 @@ static int ball_wall_check(fshop_class* param_1) {
}
/* 8086DA00-8086E6C4 001A80 0CC4+00 2/1 0/0 0/0 .text daFshop_Execute__FP11fshop_class */
// NONMATCHING Regalloc, instruction order issues
static int daFshop_Execute(fshop_class* param_1) {
fopAc_ac_c* pPlayer = dComIfGp_getPlayer(0);
cXyz local_c0;
@ -1702,7 +1538,7 @@ static int daFshop_Execute(fshop_class* param_1) {
param_1->field_0x428d = 10;
case 2:
bVar5 = TRUE;
param_1->scale.x = 0.24f;
param_1->scale.x = 0.24000001f;
break;
}
@ -1713,7 +1549,7 @@ static int daFshop_Execute(fshop_class* param_1) {
MtxPosition(&param_1->speed, &param_1->field_0x4064);
param_1->field_0x4064 = param_1->speed;
param_1->current.pos += param_1->field_0x4064;
if (param_1->speed.x != 0.0f || param_1->speed.z != 0.0f) {
if (param_1->speed.x || param_1->speed.z) {
param_1->current.angle.y = cM_atan2s(param_1->speed.x, param_1->speed.z);
}
param_1->speed.y -= 3.5f;
@ -1836,7 +1672,7 @@ static int daFshop_Execute(fshop_class* param_1) {
(fabsf(local_d8.z) * 0.1f + 0.2f));
}
}
camera_class* pmVar11 = dComIfGp_getCamera(0);
camera_class* pmVar11 = (camera_class*)dComIfGp_getCamera(0);
mDoMtx_stack_c::transS(param_1->current.pos.x, param_1->current.pos.y,
param_1->current.pos.z);
mDoMtx_stack_c::scaleM(param_1->scale.x, param_1->scale.x,
@ -2367,13 +2203,19 @@ SECTION_DATA static u8 check_kind[8] = {
0xF5, 0x7F, 0xF4, 0x7F, 0xF3, 0x7F, 0xF2, 0x7F,
};
/* 8086F634-8086FD78 0036B4 0744+00 1/0 0/0 0/0 .text daFshop_Create__FP10fopAc_ac_c */
static void daFshop_Create(fopAc_ac_c* param_0) {
// NONMATCHING
fopAcM_ct(param_0, fshop_class);
}
/* 808708BC-808708DC -00001 0020+00 1/0 0/0 0/0 .data l_daFshop_Method */
static actor_method_class l_daFshop_Method = {
(process_method_func)daFshop_Create__FP10fopAc_ac_c,
(process_method_func)daFshop_Delete__FP11fshop_class,
(process_method_func)daFshop_Execute__FP11fshop_class,
(process_method_func)daFshop_IsDelete__FP11fshop_class,
(process_method_func)daFshop_Draw__FP11fshop_class,
(process_method_func)daFshop_Create,
(process_method_func)daFshop_Delete,
(process_method_func)daFshop_Execute,
(process_method_func)daFshop_IsDelete,
(process_method_func)daFshop_Draw,
};
/* 808708DC-8087090C -00001 0030+00 0/0 0/0 1/0 .data g_profile_FSHOP */
@ -2394,82 +2236,4 @@ extern actor_process_profile_definition g_profile_FSHOP = {
fopAc_CULLBOX_0_e, // cullType
};
/* 8086F634-8086FD78 0036B4 0744+00 1/0 0/0 0/0 .text daFshop_Create__FP10fopAc_ac_c */
static void daFshop_Create(fopAc_ac_c* param_0) {
// NONMATCHING
}
/* 8086FD78-8086FDB4 003DF8 003C+00 1/1 0/0 0/0 .text __dt__10fs_koro2_sFv */
fs_koro2_s::~fs_koro2_s() {
// NONMATCHING
}
/* 8086FDB4-8086FDB8 003E34 0004+00 1/1 0/0 0/0 .text __ct__10fs_koro2_sFv */
// fs_koro2_s::fs_koro2_s() {
extern "C" void __ct__10fs_koro2_sFv() {
/* empty function */
}
/* 8086FDB8-8086FE28 003E38 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
// dBgS_ObjAcch::~dBgS_ObjAcch() {
extern "C" void __dt__12dBgS_ObjAcchFv() {
// NONMATCHING
}
/* 8086FE28-8086FE98 003EA8 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
// dBgS_AcchCir::~dBgS_AcchCir() {
extern "C" void __dt__12dBgS_AcchCirFv() {
// NONMATCHING
}
/* 8086FE98-8086FED4 003F18 003C+00 1/1 0/0 0/0 .text __dt__10fs_tsubo_sFv */
fs_tsubo_s::~fs_tsubo_s() {
// NONMATCHING
}
/* 8086FED4-8086FED8 003F54 0004+00 1/1 0/0 0/0 .text __ct__10fs_tsubo_sFv */
// fs_tsubo_s::fs_tsubo_s() {
extern "C" void __ct__10fs_tsubo_sFv() {
/* empty function */
}
/* 8086FED8-8086FF38 003F58 0060+00 1/1 0/0 0/0 .text __dt__9fs_weed_sFv */
fs_weed_s::~fs_weed_s() {
// NONMATCHING
}
/* 8086FF38-8086FF80 003FB8 0048+00 1/1 0/0 0/0 .text __ct__9fs_weed_sFv */
// fs_weed_s::fs_weed_s() {
extern "C" void __ct__9fs_weed_sFv() {
// NONMATCHING
}
/* 8086FF80-8086FF84 004000 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */
// cXyz::cXyz() {
extern "C" void __ct__4cXyzFv() {
/* empty function */
}
/* 8086FF84-8086FFC0 004004 003C+00 1/1 0/0 0/0 .text __dt__8fs_rod_sFv */
fs_rod_s::~fs_rod_s() {
// NONMATCHING
}
/* 8086FFC0-8086FFDC 004040 001C+00 1/1 0/0 0/0 .text __ct__8fs_rod_sFv */
// fs_rod_s::fs_rod_s() {
extern "C" void __ct__8fs_rod_sFv() {
// NONMATCHING
}
/* 8086FFDC-80870018 00405C 003C+00 1/1 0/0 0/0 .text __dt__9fs_lure_sFv */
fs_lure_s::~fs_lure_s() {
// NONMATCHING
}
/* 80870018-8087001C 004098 0004+00 1/1 0/0 0/0 .text __ct__9fs_lure_sFv */
// fs_lure_s::fs_lure_s() {
extern "C" void __ct__9fs_lure_sFv() {
/* empty function */
}
AUDIO_INSTANCES;

View File

@ -1065,7 +1065,6 @@ BOOL daNpcF_c::playAllAnm() {
* an animation index for that phase of the expression, the number of interpolation frames, and
* the number of loops before moving on to the next phase (or 0 for the last phase).
*/
// NONMATCHING - regalloc, matches debug
void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
daNpcF_anmPlayData* playData = NULL;
f32 morf;
@ -1105,7 +1104,6 @@ void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
* an animation index for that phase of the motion, the number of interpolation frames, and the
* number of loops before moving on to the next phase (or 0 for the last phase).
*/
// NONMATCHING - regalloc, matches debug
void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
daNpcF_anmPlayData* playData = NULL;
f32 morf;
@ -1515,16 +1513,16 @@ u8 daNpcF_c::getDistTableIdx(int param_0, int param_1) {
}
/* 801542A0-8015436C 14EBE0 00CC+00 0/0 0/0 6/6 .text getEvtAreaTagP__8daNpcF_cFii */
// NONMATCHING regalloc
fopAc_ac_c* daNpcF_c::getEvtAreaTagP(int i_type, int i_no) {
int r29 = 0;
f32 f31 = G_CM3D_F_INF;
mFindCount = 0;
mSrchActorName = PROC_TAG_EVTAREA;
fpcM_Search(this->srchActor, this);
for (int i = 0; i < mFindCount; i++) {
daTag_EvtArea_c* evt_area = static_cast<daTag_EvtArea_c*>(mFindActorPList[i]);
if (i_type == evt_area->getType() && i_no == evt_area->getNo()) {
return evt_area;
if (i_type == static_cast<daTag_EvtArea_c*>(mFindActorPList[i])->getType() && i_no == static_cast<daTag_EvtArea_c*>(mFindActorPList[i])->getNo()) {
return static_cast<daTag_EvtArea_c*>(mFindActorPList[i]);
}
}

View File

@ -209,11 +209,11 @@ static char* l_myName = "Ash";
daNpcAsh_c::EventFn daNpcAsh_c::mEvtSeqList[6] = {
NULL,
&EvCut_Introduction,
&EvCut_Meeting,
&EvCut_WiretapSponsor,
&EvCut_WiretapEntrant,
&EvCut_WiretapEntrant,
&daNpcAsh_c::EvCut_Introduction,
&daNpcAsh_c::EvCut_Meeting,
&daNpcAsh_c::EvCut_WiretapSponsor,
&daNpcAsh_c::EvCut_WiretapEntrant,
&daNpcAsh_c::EvCut_WiretapEntrant,
};
/* 809582EC-80958430 0000EC 0144+00 1/1 0/0 0/0 .text __ct__10daNpcAsh_cFv */
@ -623,9 +623,9 @@ void daNpcAsh_c::reset() {
}
if (mType == TYPE_BAR) {
setAction(&wait_type0);
setAction(&daNpcAsh_c::wait_type0);
} else {
setAction(&wait_type1);
setAction(&daNpcAsh_c::wait_type1);
}
}
@ -845,12 +845,12 @@ bool daNpcAsh_c::wait_type0(void* param_0) {
mOrderEvtNo = 3;
changeEvent(l_arcNames[0], l_evtNames[mOrderEvtNo], 1, -1);
} else {
setAction(&talk);
setAction(&daNpcAsh_c::talk);
}
}
} else {
if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0) != -1) {
setAction(&demo);
setAction(&daNpcAsh_c::demo);
}
}
} else {
@ -918,7 +918,7 @@ bool daNpcAsh_c::wait_type1(void* param_0) {
case 1:
if (daNpcF_chkTmpBit(0x74)) {
setAction(&leave);
setAction(&daNpcAsh_c::leave);
}
break;
}
@ -955,7 +955,7 @@ bool daNpcAsh_c::talk(void* param_0) {
if (field_0xf5f <= 2 || mCurAngle.y == fopAcM_searchPlayerAngleY(this)) {
if (talkProc(NULL, 1, NULL)) {
mActorMngr[0].entry(daPy_getPlayerActorClass());
setAction(&wait_type0);
setAction(&daNpcAsh_c::wait_type0);
ret = true;
} else {
s32 prev_msg_timer = mMsgTimer;
@ -1024,18 +1024,18 @@ bool daNpcAsh_c::demo(void* param_0) {
mOrderEvtNo = 0;
mEventIdx = -1;
if (mType == TYPE_BAR) {
setAction(&wait_type0);
setAction(&daNpcAsh_c::wait_type0);
} else {
setAction(&wait_type1);
setAction(&daNpcAsh_c::wait_type1);
}
}
} else {
mOrderEvtNo = 0;
mEventIdx = -1;
if (mType == TYPE_BAR) {
setAction(&wait_type0);
setAction(&daNpcAsh_c::wait_type0);
} else {
setAction(&wait_type1);
setAction(&daNpcAsh_c::wait_type1);
}
}
break;

View File

@ -99,7 +99,7 @@ static char* l_myName = "AshB";
/* 809625B0-809625C8 000198 0018+00 1/2 0/0 0/0 .data mEvtSeqList__11daNpcAshB_c */
daNpcAshB_c::EventFn daNpcAshB_c::mEvtSeqList[2] = {
NULL,
&EvCut_Appear,
&daNpcAshB_c::EvCut_Appear,
};
/* 8095DE4C-8095DFD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcAshB_cFv */
@ -605,7 +605,7 @@ void daNpcAshB_c::reset() {
field_0xded = 0;
field_0xdee = 0;
setAction(&wait);
setAction(&daNpcAshB_c::wait);
}
/* 8095F21C-8095F2C4 0014BC 00A8+00 1/1 0/0 0/0 .text
@ -734,7 +734,7 @@ bool daNpcAshB_c::wait(void* param_0) {
u8 preitemno = dComIfGp_event_getPreItemNo();
if (preitemno == fpcNm_ITEM_ASHS_SCRIBBLING) {
mFlowID = 504;
setAction(&talk);
setAction(&daNpcAshB_c::talk);
} else {
s16 evt_idx =
dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff);
@ -743,12 +743,12 @@ bool daNpcAshB_c::wait(void* param_0) {
}
}
} else {
setAction(&talk);
setAction(&daNpcAshB_c::talk);
}
} else {
int mystaffid = dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0);
if (mystaffid != -1) {
setAction(&demo);
setAction(&daNpcAshB_c::demo);
}
}
} else {
@ -857,10 +857,10 @@ bool daNpcAshB_c::talk(void* param_0) {
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, evt_idx, 1, -1);
field_0x9ec = 1;
setAction(&wait);
setAction(&daNpcAshB_c::wait);
}
} else {
setAction(&wait);
setAction(&daNpcAshB_c::wait);
}
ret = true;
@ -906,6 +906,7 @@ bool daNpcAshB_c::talk(void* param_0) {
// NONMATCHING - extra instruction at dComIfGp_event_runCheck() causing regalloc issues?
bool daNpcAshB_c::demo(void* param_0) {
dEvent_manager_c& evtmgr = dComIfGp_getEventManager();
BOOL r26 = FALSE;
switch (mMode) {
case 0:
@ -915,13 +916,15 @@ bool daNpcAshB_c::demo(void* param_0) {
// fallthrough
case 2:
if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) {
if (dComIfGp_event_runCheck() != FALSE && !eventInfo.checkCommandTalk()) {
s32 staff_id = evtmgr.getMyStaffId(l_myName, NULL, 0);
if (staff_id != -1) {
mStaffID = staff_id;
JUT_ASSERT(1523, mEvtSeqList[mOrderEvtNo] != 0);
if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) {
evtmgr.cutEnd(staff_id);
}
r26 = TRUE;
}
if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && evtmgr.endCheck(mEventIdx))
@ -929,7 +932,7 @@ bool daNpcAshB_c::demo(void* param_0) {
dComIfGp_event_reset();
mOrderEvtNo = 0;
mEventIdx = -1;
setAction(&wait);
setAction(&daNpcAshB_c::wait);
}
}
@ -937,6 +940,9 @@ bool daNpcAshB_c::demo(void* param_0) {
case 3:
break;
default:
JUT_ASSERT(1551, FALSE);
}
return true;

View File

@ -396,7 +396,6 @@ daNpcCd_HIO_c l_Cd_HIO;
/* 801563C8-80156B4C 150D08 0784+00 0/0 0/0 2/2 .text setAttention__9daNpcCd_cFi */
int daNpcCd_c::setAttention(int i_idx) {
// NONMATCHING
static cXyz const a_eyeOfsTbl[30] = {
cXyz(0.0f, 10.0f, 0.0f), cXyz(0.0f, 10.0f, 0.0f), cXyz(0.0f, 10.0f, 0.0f),
cXyz(0.0f, 10.0f, 0.0f), cXyz(0.0f, 10.0f, 0.0f), cXyz(0.0f, 10.0f, 0.0f),

View File

@ -426,11 +426,8 @@ void daNpcCdn3_c::executePath() {
m_path.setNextPoint(current.pos);
} else {
if (mSeqNum < 0 || mSeqNum >= 44) {
#ifdef DEBUG
JUT_PANIC(517, 0);
#else
OSReport_Error("城下町の町人 パス点引数設定値異常 引数1モーションシーケンス=%dが異常です。\n", mSeqNum);
#endif
JUT_ASSERT(517, FALSE);
}
field_0xb68 = 0;
setAction(MODE_WAIT);
@ -505,7 +502,7 @@ void daNpcCdn3_c::executePath() {
}
break;
default:
JUT_PANIC(598, 0);
JUT_ASSERT(598, FALSE);
break;
}
@ -650,7 +647,7 @@ void daNpcCdn3_c::executeTalk() {
setAngle();
return;
default:
JUT_PANIC(741, 0);
JUT_ASSERT(741, FALSE);
}
}
@ -1040,7 +1037,7 @@ void daNpcCdn3_c::setSchedule(daTagSchedule_c* param_1) {
mFlowNodeNum = mTagSched->getFlowNodeNum();
if (mSeqNum < 0 || mSeqNum >= 44) {
OSReport_Error("城下町の町人 スケジュールタグ設定値異常 引数1モーションシーケンス=%dが異常です。\n", mSeqNum);
JUT_PANIC(1825, 0);
JUT_ASSERT(1825, FALSE);
}
if (mTagSched->getStartEnd() == 0) {
current.pos.set(m_path.getPoint(0));
@ -1081,7 +1078,7 @@ void daNpcCdn3_c::setSchedule(daTagSchedule_c* param_1) {
dayStr = "";
break;
default:
JUT_PANIC(1856, 0);
JUT_ASSERT(1856, FALSE);
break;
}
OS_REPORT("町人スケジュールセット\n");
@ -1574,7 +1571,7 @@ int daNpcCdn3_c::create() {
mFlowNodeNum = getFlowNodeNum();
if (mSeqNum < 0 || 44 <= mSeqNum) {
OSReport_Error("城下町の町人 マップツール設定値異常 引数1モーションシーケンス=%dが異常です。\n", mSeqNum);
JUT_PANIC(175, 0);
JUT_ASSERT(175, FALSE);
}
int rv = loadResrc(m_type, mObjNum);
if (rv == cPhs_COMPLEATE_e) {

View File

@ -1884,14 +1884,7 @@ enum Event_Cut_Nums {
BOOL daNpc_grA_c::doEvent() {
dEvent_manager_c* manager = NULL;
BOOL ret = FALSE;
#if VERSION != VERSION_SHIELD_DEBUG
// TODO: gameInfo fake match to force reuse of pointer
dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
if (play->getEvent().runCheck())
#else
if (dComIfGp_event_runCheck())
#endif
{
if (dComIfGp_event_runCheck() != FALSE) {
manager = &dComIfGp_getEventManager();
if (field_0x1691 == 0) {
mOrderNewEvt = 0;
@ -1936,41 +1929,25 @@ BOOL daNpc_grA_c::doEvent() {
if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && manager->endCheck(mEventIdx)) {
switch (mOrderEvtNo) {
case 5:
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
mOrderEvtNo = 0;
mEventIdx = -1;
field_0x1693 = field_0x1692 = 0;
fpcM_Search(s_subCarry, this);
break;
case 6:
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
mOrderEvtNo = 0;
mEventIdx = -1;
break;
case 7:
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
mOrderEvtNo = 0;
mEventIdx = -1;
fopAcM_delete(this);
break;
default:
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
mOrderEvtNo = 0;
mEventIdx = -1;
break;

View File

@ -1516,7 +1516,7 @@ static void demo_camera_shop(npc_henna_class* i_this) {
case 7:
i_this->mMsgFlow.init(actor, 0x33e, 0, NULL);
break;
case 8:
case 8: {
dScnKy_env_light_c* kankyo = dKy_getEnvlight();
if (kankyo->raincnt == 0) {
hour = kankyo->daytime / 15.0f;
@ -1529,6 +1529,7 @@ static void demo_camera_shop(npc_henna_class* i_this) {
i_this->mMsgFlow.init(actor, 0x347, 0, NULL);
}
break;
}
case 0xb:
i_this->mMsgFlow.init(actor, 0x35f, 0, NULL);
break;

View File

@ -900,14 +900,7 @@ bool daNpcImpal_c::demo(void* param_0) {
setMotion(MOT_0, -1.0f, false);
mMode = 2;
case 2: {
#if VERSION != VERSION_SHIELD_DEBUG
// TODO: gameInfo fake match to force reuse of pointer
dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
if (play->getEvent().runCheck() && !eventInfo.checkCommandTalk())
#else
if (dComIfGp_event_runCheck() && !eventInfo.checkCommandTalk())
#endif
{
if (dComIfGp_event_runCheck() != FALSE && !eventInfo.checkCommandTalk()) {
dEvent_manager_c& event_manager = dComIfGp_getEventManager();
s32 staff_id = dComIfGp_evmng_getMyStaffId(l_myName, NULL, 0);
@ -923,11 +916,7 @@ bool daNpcImpal_c::demo(void* param_0) {
event_manager.endCheck(mEventIdx))
{
if (!field_0x9ec) {
#if VERSION != VERSION_SHIELD_DEBUG
play->getEvent().reset();
#else
dComIfGp_event_reset();
#endif
}
field_0x9ec = 0;

View File

@ -555,13 +555,13 @@ static void npc_ks_pole_ori(npc_ks_class* i_this) {
a_this->current.angle.y = ((obj_so_class*)actor_p)->actor.shape_angle.y;
a_this->current.angle.x = ((obj_so_class*)actor_p)->actor.shape_angle.x;
a_this->current.pos = ((obj_so_class*)actor_p)->actor.current.pos;
// The following causes regswap in the debug build when uncommented...
//a_this->current.pos.y += TREG_F(3);
a_this->current.pos.y += TREG_F(3);
if (leader->field_0xb42 == 0) {
if (!dComIfGs_isSwitch(20, fopAcM_GetRoomNo(a_this))) {
cXyz sp2c(11497.0f, 3764.0f, 3810.0f);
sp2c -= dComIfGp_getPlayer(0)->current.pos;
daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
sp2c -= player->current.pos;
sp2c.y = 0.0f;
if (sp2c.abs() < 300.0f) {
leader->field_0xb42 = 110;

View File

@ -996,7 +996,7 @@ bool daNpcRafrel_c::wait_type01(void* param_0) {
speedF = 0.0f;
field_0xe10 = 2;
break;
case 2:
case 2: {
if (isSneaking()) {
setLookMode(LOOK_NONE, NULL);
} else if (field_0xe14 != 0 && mType == 1) {
@ -1105,6 +1105,7 @@ bool daNpcRafrel_c::wait_type01(void* param_0) {
}
}
break;
}
case 3:
default:
JUT_ASSERT(1634, FALSE);

View File

@ -269,7 +269,6 @@ void daNpc_seiC_c::reset() {
/* 80AC7C1C-80AC7D34 0007BC 0118+00 1/0 0/0 0/0 .text setParam__12daNpc_seiC_cFv */
void daNpc_seiC_c::setParam() {
// NONMATCHING
selectAction();
srchActors();

View File

@ -191,7 +191,7 @@ int daNpc_Shop0_c::init() {
eventInfo.setArchiveName(getResName());
field_0x9e8 = -1;
setProcess(daNpc_Shop0_c::wait, NULL, 0);
setProcess(&daNpc_Shop0_c::wait, NULL, 0);
setRoomInf();
return execute();
}
@ -347,7 +347,7 @@ int daNpc_Shop0_c::talk(void* i_stat_loc) {
break;
case 1:
if (cut_alert(-1, 0) != 0) {
setProcess(daNpc_Shop0_c::wait, NULL, 0);
setProcess(&daNpc_Shop0_c::wait, NULL, 0);
}
break;
case 2:

View File

@ -177,14 +177,14 @@ char* daNpcThe_c::mEvtCutNameList[4] = {
daNpcThe_c::EventFn daNpcThe_c::mEvtCutList[4] = {
NULL,
&EvCut_TwResistance,
&EvCut_TwResistance,
&EvCut_Introduction,
&daNpcThe_c::EvCut_TwResistance,
&daNpcThe_c::EvCut_TwResistance,
&daNpcThe_c::EvCut_Introduction,
};
int daNpcThe_c::Draw() {
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
ActionFn action_test = &test;
ActionFn action_test = &daNpcThe_c::test;
int is_test = mpActionFn == action_test;
return draw(is_test, false, mpHIO->m.common.real_shadow_size, NULL, false);
}
@ -1114,11 +1114,11 @@ void daNpcThe_c::setParam() {
ActionFn next_action = mpNextActionFn;
mpNextActionFn = NULL;
if (mpHIO->m.common.debug_mode_ON) {
mpNextActionFn = &test;
mpNextActionFn = &daNpcThe_c::test;
} else if (mTwilight) {
mpNextActionFn = &waitTW;
mpNextActionFn = &daNpcThe_c::waitTW;
} else {
mpNextActionFn = &wait;
mpNextActionFn = &daNpcThe_c::wait;
}
if (mpNextActionFn != next_action) {
for (int i = 3; i < 3; i++) {
@ -1162,7 +1162,7 @@ void daNpcThe_c::setParam() {
// NONMATCHING dComIfG_gameInfo issues
BOOL daNpcThe_c::main() {
if (!doEvent()) {
doNormalAction();
doNormalAction(1);
}
if (field_0x9ee) {
@ -1251,17 +1251,17 @@ BOOL daNpcThe_c::doEvent() {
u8 item_no = dComIfGp_event_getPreItemNo();
if (item_no == 0x80) {
mFlowID = 0x430;
if (chkAction(&talk)) {
if (chkAction(&daNpcThe_c::talk)) {
(this->*mpActionFn)(NULL);
} else {
setAction(&talk);
setAction(&daNpcThe_c::talk);
}
} else if (item_no == 0x81) {
mFlowID = 0x431;
if (chkAction(&talk)) {
if (chkAction(&daNpcThe_c::talk)) {
(this->*mpActionFn)(NULL);
} else {
setAction(&talk);
setAction(&daNpcThe_c::talk);
}
} else {
s16 event_idx =
@ -1270,10 +1270,10 @@ BOOL daNpcThe_c::doEvent() {
fopAcM_orderChangeEventId(this, event_idx, 1, 0xffff);
}
} else {
if (chkAction(&talk)) {
if (chkAction(&daNpcThe_c::talk)) {
(this->*mpActionFn)(NULL);
} else {
setAction(&talk);
setAction(&daNpcThe_c::talk);
}
}
ret = true;

View File

@ -1621,7 +1621,7 @@ inline bool daNpcWrestler_c::wait(void* param_1) {
}
default: {
JUT_PANIC(2769, "0")
JUT_ASSERT(2769, FALSE);
break;
}
}
@ -1772,7 +1772,7 @@ inline bool daNpcWrestler_c::talk(void* param_1) {
}
default: {
JUT_PANIC(2858, "0");
JUT_ASSERT(2858, FALSE);
}
}
@ -1815,7 +1815,7 @@ inline bool daNpcWrestler_c::demo(void* param_1) {
}
default: {
JUT_PANIC(2912, "0");
JUT_ASSERT(2912, FALSE);
break;
}
}
@ -1876,7 +1876,7 @@ inline bool daNpcWrestler_c::gotoArena(void* param_1) {
}
default: {
JUT_PANIC(2969, "0");
JUT_ASSERT(2969, FALSE);
break;
}
}
@ -1887,7 +1887,7 @@ inline bool daNpcWrestler_c::gotoArena(void* param_1) {
}
default: {
JUT_PANIC(2974, "0");
JUT_ASSERT(2974, FALSE);
break;
}
}
@ -1944,7 +1944,7 @@ inline bool daNpcWrestler_c::gotoLiving(void* param_1) {
}
default: {
JUT_PANIC(3032, "0");
JUT_ASSERT(3032, FALSE);
break;
}
}
@ -1955,7 +1955,7 @@ inline bool daNpcWrestler_c::gotoLiving(void* param_1) {
}
default: {
JUT_PANIC(3037, "0");
JUT_ASSERT(3037, FALSE);
break;
}
}
@ -2119,7 +2119,7 @@ bool daNpcWrestler_c::sumouReady(void* param_1) {
break;
default:
JUT_PANIC(3181, "0");
JUT_ASSERT(3181, FALSE);
break;
}
@ -2371,7 +2371,7 @@ inline bool daNpcWrestler_c::sumouPunchHit(void* param_1) {
}
default: {
JUT_PANIC(3411, "0");
JUT_ASSERT(3411, FALSE);
break;
}
}
@ -2552,7 +2552,7 @@ inline bool daNpcWrestler_c::sumouPunchMiss(void* param_1) {
}
default: {
JUT_PANIC(3579, "0");
JUT_ASSERT(3579, FALSE);
}
}
@ -2670,8 +2670,7 @@ bool daNpcWrestler_c::sumouPunchDraw(void* param_1) {
/* 80B3606C-80B36908 006ECC 089C+00 5/0 0/0 0/0 .text sumouTackleHit__15daNpcWrestler_cFPv */
bool daNpcWrestler_c::sumouTackleHit(void* param_1) {
// NONMATCHING - regalloc
daPy_py_c* player = daPy_getPlayerActorClass();
daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass();
int jointNo = mType == 0 ? 0 : 0;
cXyz sp2c;
@ -3028,7 +3027,7 @@ inline bool daNpcWrestler_c::sumouSideStep(void* param_1) {
}
default: {
JUT_PANIC(4008, "0");
JUT_ASSERT(4008, FALSE);
break;
}
}
@ -3154,7 +3153,7 @@ inline bool daNpcWrestler_c::sumouPunchChaseShock(void* param_1) {
break;
default:
JUT_PANIC(4149, "0");
JUT_ASSERT(4149, FALSE);
}
return true;
@ -3237,7 +3236,6 @@ bool daNpcWrestler_c::sumouTackleStagger(void* param_1) {
daPy_py_c* player = daPy_getPlayerActorClass();
int jointNo = mType == 0 ? 0x1A : 0x18;
int jointNo2 = mType == 0 ? 0x1E : 0x1B;
cXyz sp58;
f32 fVar1, fVar2;
switch (field_0xe96) {
@ -3249,8 +3247,9 @@ bool daNpcWrestler_c::sumouTackleStagger(void* param_1) {
field_0xe96 = 2;
break;
case 2:
case 2: {
correctGraspPosAngle(true);
cXyz sp58;
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(jointNo));
mDoMtx_stack_c::multVecZero(&sp58);
sp58.y = current.pos.y;
@ -3282,10 +3281,14 @@ bool daNpcWrestler_c::sumouTackleStagger(void* param_1) {
setAction(&daNpcWrestler_c::sumouTackleStaggerRelease);
}
break;
}
case 3:
player->setSumouForceGraspCancel();
break;
default:
JUT_ASSERT(4311, FALSE);
break;
}
return true;
@ -3382,7 +3385,7 @@ inline bool daNpcWrestler_c::sumouTacklePush(void* param_1) {
break;
default: {
JUT_PANIC(4435, "0");
JUT_ASSERT(4435, FALSE);
break;
}
}
@ -3718,7 +3721,7 @@ inline bool daNpcWrestler_c::demoSumouReady(void* param_1) {
break;
default:
JUT_PANIC(4821, "0");
JUT_ASSERT(4821, FALSE);
break;
}
@ -3732,7 +3735,7 @@ inline bool daNpcWrestler_c::demoSumouReady(void* param_1) {
break;
default:
JUT_PANIC(4828, "0");
JUT_ASSERT(4828, FALSE);
break;
}
@ -4218,7 +4221,7 @@ bool daNpcWrestler_c::demoSumouLose2(void* param_1) {
}
default:
JUT_PANIC(5347, "0");
JUT_ASSERT(5347, FALSE);
break;
}
@ -4232,7 +4235,7 @@ bool daNpcWrestler_c::demoSumouLose2(void* param_1) {
break;
default:
JUT_PANIC(5355, "0");
JUT_ASSERT(5355, FALSE);
}
return true;
@ -4339,7 +4342,7 @@ inline bool daNpcWrestler_c::demoSumouUnilateralWin(void* param_1) {
}
default:
JUT_PANIC(5478, "0");
JUT_ASSERT(5478, FALSE);
break;
}
@ -4353,7 +4356,7 @@ inline bool daNpcWrestler_c::demoSumouUnilateralWin(void* param_1) {
break;
default:
JUT_PANIC(5486, "0");
JUT_ASSERT(5486, FALSE);
break;
}
@ -4429,7 +4432,7 @@ inline bool daNpcWrestler_c::demoTalkAfterLose(void* param_1) {
break;
default:
JUT_PANIC(5571, "0");
JUT_ASSERT(5571, FALSE);
break;
}
break;
@ -4440,7 +4443,7 @@ inline bool daNpcWrestler_c::demoTalkAfterLose(void* param_1) {
break;
default:
JUT_PANIC(5579, "0");
JUT_ASSERT(5579, FALSE);
break;
}
@ -4482,7 +4485,7 @@ inline BOOL daNpcWrestler_c::EvCut_grDSEntry(int i_cutIndex) {
break;
default:
JUT_PANIC(5622, "0");
JUT_ASSERT(5622, FALSE);
break;
}
}
@ -4554,7 +4557,7 @@ inline BOOL daNpcWrestler_c::EvCut_grDSEntry(int i_cutIndex) {
}
default: {
JUT_PANIC(5688, "0");
JUT_ASSERT(5688, FALSE);
break;
}
}
@ -4576,7 +4579,7 @@ inline BOOL daNpcWrestler_c::EvCut_grDSEntry2(int i_cutIndex) {
break;
default:
JUT_PANIC(5715, "0");
JUT_ASSERT(5715, FALSE);
break;
}
}
@ -4594,7 +4597,7 @@ inline BOOL daNpcWrestler_c::EvCut_grDSEntry2(int i_cutIndex) {
return TRUE;
default:
JUT_PANIC(5735, "0");
JUT_ASSERT(5735, FALSE);
break;
}

View File

@ -217,11 +217,11 @@ char* daNpc_Yelia_c::mCutNameList[6] = {
/* 80B530B8-80B53100 000BDC 0048+00 1/2 0/0 0/0 .data mCutList__13daNpc_Yelia_c */
BOOL (daNpc_Yelia_c::*daNpc_Yelia_c::mCutList[6])(int) = {
NULL,
&cutConversationAboutLoopHole,
&cutTWResistance,
&cutTakeWoodStatue,
&cutClothTry,
&cutThankYou,
&daNpc_Yelia_c::cutConversationAboutLoopHole,
&daNpc_Yelia_c::cutTWResistance,
&daNpc_Yelia_c::cutTakeWoodStatue,
&daNpc_Yelia_c::cutClothTry,
&daNpc_Yelia_c::cutThankYou,
};
enum Type {
@ -645,7 +645,7 @@ void daNpc_Yelia_c::setParam() {
/* 80B4E2C0-80B4E5BC 0010A0 02FC+00 1/0 0/0 0/0 .text checkChangeEvt__13daNpc_Yelia_cFv
*/
BOOL daNpc_Yelia_c::checkChangeEvt() {
if (!chkAction(&talk)) {
if (!chkAction(&daNpc_Yelia_c::talk)) {
mPreItemNo = 0;
if (dComIfGp_event_chkTalkXY()) {
if (dComIfGp_evmng_ChkPresentEnd()) {
@ -791,10 +791,10 @@ void daNpc_Yelia_c::srchActors() {
/* 80B4E7C8-80B4E868 0015A8 00A0+00 1/0 0/0 0/0 .text evtTalk__13daNpc_Yelia_cFv */
BOOL daNpc_Yelia_c::evtTalk() {
if (chkAction(&talk)) {
if (chkAction(&daNpc_Yelia_c::talk)) {
(this->*mpAction)(NULL);
} else {
setAction(&talk);
setAction(&daNpc_Yelia_c::talk);
}
return TRUE;
}
@ -923,13 +923,13 @@ BOOL daNpc_Yelia_c::selectAction() {
mpNextAction = NULL;
switch (mType) {
case TYPE_HORSE:
mpNextAction = &horseWait;
mpNextAction = &daNpc_Yelia_c::horseWait;
break;
case TYPE_REMINISCENCE:
mpNextAction = &reminiscence;
mpNextAction = &daNpc_Yelia_c::reminiscence;
break;
default:
mpNextAction = &wait;
mpNextAction = &daNpc_Yelia_c::wait;
break;
}
return TRUE;
@ -1541,7 +1541,7 @@ BOOL daNpc_Yelia_c::talk(void* param_0) {
case MODE_ENTER:
case MODE_INIT:
if (!mStagger.checkStagger()) {
if (&horseWait == mpNextAction) {
if (&daNpc_Yelia_c::horseWait == mpNextAction) {
mFaceMotionSeqMngr.setNo(FACE_HORSE_LOOKBACK, -1.0f, FALSE, 0);
mMotionSeqMngr.setNo(MOTION_HORSE_LOOKBACK, -1.0f, FALSE, 0);
}
@ -1552,13 +1552,13 @@ BOOL daNpc_Yelia_c::talk(void* param_0) {
case MODE_RUN:
if (!mStagger.checkStagger()) {
if (&horseWait == mpNextAction && mMotionSeqMngr.getNo() == MOTION_HORSE_LOOKBACK) {
if (&daNpc_Yelia_c::horseWait == mpNextAction && mMotionSeqMngr.getNo() == MOTION_HORSE_LOOKBACK) {
if (mMotionSeqMngr.checkEndSequence()) {
mFaceMotionSeqMngr.setNo(FACE_NONE, -1.0f, FALSE, 0);
mMotionSeqMngr.setNo(MOTION_HORSE_WAIT_C, -1.0f, FALSE, 0);
}
return FALSE;
} else if (mTwilight || mPlayerAngle == mCurAngle.y || &horseWait == mpNextAction
} else if (mTwilight || mPlayerAngle == mCurAngle.y || &daNpc_Yelia_c::horseWait == mpNextAction
|| (mType == TYPE_KAKARIKO && !daNpcT_chkEvtBit(0x11f))
|| mType == TYPE_AFTER_ESCORT)
{
@ -1568,7 +1568,7 @@ BOOL daNpc_Yelia_c::talk(void* param_0) {
mMode = MODE_EXIT;
}
mJntAnm.lookPlayer(false);
if (mTwilight || &horseWait == mpNextAction) {
if (mTwilight || &daNpc_Yelia_c::horseWait == mpNextAction) {
mJntAnm.lookNone(false);
}
} else {

View File

@ -169,13 +169,13 @@ char* daNpc_zrZ_c::mEvtCutNameList[8] = {
/* 80B9B434-80B9B494 0001B0 0060+00 0/2 0/0 0/0 .data mEvtCutList__11daNpc_zrZ_c */
daNpc_zrZ_c::EventFn daNpc_zrZ_c::mEvtCutList[8] = {
NULL,
&ECut_helpPrince,
&ECut_comeHere,
&ECut_restoreLink,
&ECut_clothesGet,
&ECut_getAfter,
&ECut_sealRelease,
&ECut_srSkip,
&daNpc_zrZ_c::ECut_helpPrince,
&daNpc_zrZ_c::ECut_comeHere,
&daNpc_zrZ_c::ECut_restoreLink,
&daNpc_zrZ_c::ECut_clothesGet,
&daNpc_zrZ_c::ECut_getAfter,
&daNpc_zrZ_c::ECut_sealRelease,
&daNpc_zrZ_c::ECut_srSkip,
};
/* 80B93DCC-80B93F84 0000EC 01B8+00 1/1 0/0 0/0 .text __ct__11daNpc_zrZ_cFv */
@ -322,9 +322,9 @@ int daNpc_zrZ_c::Execute() {
int daNpc_zrZ_c::Draw() {
mpMorf->getModel()->getModelData()->getMaterialNodePointer(1)->setMaterialAnm(mpMatAnm);
if (mType == 1) {
return draw(chkAction(&test), false, daNpc_zrZ_Param_c::m.mShadowDepth, NULL, false);
return draw(chkAction(&daNpc_zrZ_c::test), false, daNpc_zrZ_Param_c::m.mShadowDepth, NULL, false);
} else {
return daNpcF_c::draw(chkAction(&test), false, daNpc_zrZ_Param_c::m.mShadowDepth,
return daNpcF_c::draw(chkAction(&daNpc_zrZ_c::test), false, daNpc_zrZ_Param_c::m.mShadowDepth,
NULL, false);
}
}
@ -949,7 +949,7 @@ void daNpc_zrZ_c::reset() {
if (mDemoMode == DEMO_WAIT) {
mIsLeading = false;
tevStr.TevColor.a = 0;
mpNextActionFn = &wait;
mpNextActionFn = &daNpc_zrZ_c::wait;
} else if (mDemoMode == DEMO_COME_HERE || mDemoMode == DEMO_COME_HERE_2) {
mIsLeading = false;
tevStr.TevColor.a = 0xff;
@ -1045,17 +1045,17 @@ BOOL daNpc_zrZ_c::setAction(ActionFn i_action) {
BOOL daNpc_zrZ_c::selectAction() {
mpNextActionFn = NULL;
if (daNpc_zrZ_Param_c::m.mTest) {
mpNextActionFn = &test;
mpNextActionFn = &daNpc_zrZ_c::test;
} else {
switch (mDemoMode) {
case DEMO_COME_HERE:
mpNextActionFn = &comeHere;
mpNextActionFn = &daNpc_zrZ_c::comeHere;
break;
case DEMO_COME_HERE_2:
mpNextActionFn = &comeHere2;
mpNextActionFn = &daNpc_zrZ_c::comeHere2;
break;
default:
mpNextActionFn = &wait;
mpNextActionFn = &daNpc_zrZ_c::wait;
break;
}
}
@ -1102,10 +1102,10 @@ BOOL daNpc_zrZ_c::doEvent() {
}
if (eventInfo.checkCommandTalk()) {
if (chkAction(&talk)) {
if (chkAction(&daNpc_zrZ_c::talk)) {
(this->*mpActionFn)(NULL);
} else if (dComIfGp_event_chkTalkXY() == false || dComIfGp_evmng_ChkPresentEnd()) {
setAction(&talk);
setAction(&daNpc_zrZ_c::talk);
}
ret = true;
} else {

View File

@ -69,7 +69,6 @@ static fopAc_ac_c* pushPullcallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, s1
/* 80B9FD5C-80B9FDE8 00035C 008C+00 1/1 0/0 0/0 .text searchIronBallCallback__FPvPv */
static void* searchIronBallCallback(void* i_actor, void* i_data) {
// NONMATCHING
daObjYtaihou_c* taihou_rhs = (daObjYtaihou_c*)i_data;
if (fopAcM_GetProfName(i_actor) == PROC_Obj_Carry) {
daObjCarry_c* pCarry = ((daObjCarry_c*)i_actor);
@ -198,7 +197,6 @@ void daObjYtaihou_c::setMtx() {
/* 80BA0208-80BA045C 000808 0254+00 1/1 0/0 0/0 .text rotateCheck__14daObjYtaihou_cFv */
void daObjYtaihou_c::rotateCheck() {
// NONMATCHING
if (shape_angle.y != current.angle.z) {
cLib_chaseAngleS(&current.angle.x, 0xbe, 5);
if (cLib_chaseAngleS(&shape_angle.y, current.angle.z, current.angle.x)) {

View File

@ -87,8 +87,8 @@ int daBarDesk_c::Execute(Mtx** i_mtxP) {
void daBarDesk_c::windowProc() {
typedef void (daBarDesk_c::*daBarDesk_modeFunc)();
static daBarDesk_modeFunc mode_proc[2] = {
&modeWait,
&modeBreak,
&daBarDesk_c::modeWait,
&daBarDesk_c::modeBreak,
};
(this->*mode_proc[mMode])();
}

View File

@ -315,17 +315,17 @@ int daObjBossWarp_c::execute() {
void daObjBossWarp_c::event_proc_call() {
typedef void (daObjBossWarp_c::*daObjBossWarp_action)();
static daObjBossWarp_action l_func[11] = {
&actionWait,
&actionOrderEvent,
&actionEvent,
&actionWaitWarp,
&actionOrderWarpEvent,
&actionWarpEvent,
&actionDead,
&actionOrderChkEvent,
&actionChkEvent,
&actionOrderCancelEvent,
&actionCancelEvent,
&daObjBossWarp_c::actionWait,
&daObjBossWarp_c::actionOrderEvent,
&daObjBossWarp_c::actionEvent,
&daObjBossWarp_c::actionWaitWarp,
&daObjBossWarp_c::actionOrderWarpEvent,
&daObjBossWarp_c::actionWarpEvent,
&daObjBossWarp_c::actionDead,
&daObjBossWarp_c::actionOrderChkEvent,
&daObjBossWarp_c::actionChkEvent,
&daObjBossWarp_c::actionOrderCancelEvent,
&daObjBossWarp_c::actionCancelEvent,
};
(this->*l_func[mAction])();
}
@ -494,7 +494,7 @@ int daObjBossWarp_c::demoProc() {
if (dComIfGp_evmng_getIsAddvance(mStaffId)) {
switch (act_idx) {
case 0: // WAIT
case 0: { // WAIT
int* timer = dComIfGp_evmng_getMyIntegerP(mStaffId, "Timer");
if (timer == NULL) {
mTimer = 1;
@ -502,13 +502,15 @@ int daObjBossWarp_c::demoProc() {
mTimer = *timer;
}
break;
case 1: // APPEAR
}
case 1: { // APPEAR
int level = getNowLevel();
if (level >= 0 && level < 10 && l_dangeon_clr_bitNo[level] > 0) {
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[l_dangeon_clr_bitNo[level]]);
}
appear(0);
break;
}
case 2: // DISAPPEAR
disappear(0);
break;

View File

@ -76,9 +76,9 @@ static daBsGate_HIO_c l_HIO;
void daBsGate_c::moveGate() {
typedef void (daBsGate_c::*daBsGate_modeFunc)();
static daBsGate_modeFunc mode_proc[3] = {
&modeWait,
&modeOpen,
&modeClose,
&daBsGate_c::modeWait,
&daBsGate_c::modeOpen,
&daBsGate_c::modeClose,
};
u8 was_open = mOpen;
mOpen = fopAcM_isSwitch(this, fopAcM_GetParam(this) & 0xff);

View File

@ -189,9 +189,9 @@ void daObjCdoor_c::execCdoor() {
void daObjCdoor_c::execWgate() {
typedef void (daObjCdoor_c::*daObjCdoor_modeFunc)();
static daObjCdoor_modeFunc mode_proc[3] = {
&modeWait,
&modeOpen,
&modeClose,
&daObjCdoor_c::modeWait,
&daObjCdoor_c::modeOpen,
&daObjCdoor_c::modeClose,
};
u8 was_open = mIsOpen;
mIsOpen = fopAcM_isSwitch(this, mSw);
@ -258,10 +258,10 @@ static int daObjCdoor_Execute(daObjCdoor_c* i_this) {
void daObjCdoor_c::event_proc_call() {
typedef void (daObjCdoor_c::*daObjCdoor_eventFunc)();
static daObjCdoor_eventFunc l_func[4] = {
&actionWait,
&actionOrderEvent,
&actionEvent,
&actionDead,
&daObjCdoor_c::actionWait,
&daObjCdoor_c::actionOrderEvent,
&daObjCdoor_c::actionEvent,
&daObjCdoor_c::actionDead,
};
(this->*l_func[mAction])();
}

View File

@ -14,11 +14,11 @@ static char* l_arcName = "L9Chand";
/* 80BC8DA4-80BC8DE0 000060 003C+00 1/2 0/0 0/0 .data s_exeProc__17daObjChandelier_c */
daObjChandelier_proc daObjChandelier_c::s_exeProc[5] = {
&exeModeWait,
&exeModeStartSwg,
&exeModeDown,
&exeModeEndSwg,
&exeModeHookSwg,
&daObjChandelier_c::exeModeWait,
&daObjChandelier_c::exeModeStartSwg,
&daObjChandelier_c::exeModeDown,
&daObjChandelier_c::exeModeEndSwg,
&daObjChandelier_c::exeModeHookSwg,
};
/* 80BC7F38-80BC7F74 000078 003C+00 2/2 0/0 0/0 .text __ct__17daObjChandelier_cFv */

View File

@ -126,7 +126,6 @@ static Vec const wolfChainBaseOffset = {
};
/* 80BE6868-80BE7174 0008E8 090C+00 1/1 0/0 0/0 .text execute__13daObjFchain_cFv */
// NONMATCHING - regalloc, stack
int daObjFchain_c::execute() {
if (dComIfGp_event_runCheck()) {
if (dComIfGp_getEventManager().getRunEventName() != NULL) {
@ -249,9 +248,8 @@ int daObjFchain_c::execute() {
if (field_0x584 == 0) {
field_0x584 = 1;
sp_30 = field_0x79c;
for (int i = 0; i < 22; i++) {
for (i = 0; i < 22; i++, sp_30++) {
*sp_30 = cXyz::Zero;
sp_30++;
}
field_0x586 = 5;
}

View File

@ -154,7 +154,6 @@ static void ito_pos_set(obj_gm_class* i_this) {
/* 80BFB508-80BFBA14 0004A8 050C+00 1/1 0/0 0/0 .text bg_fix__FP12obj_gm_class */
static void bg_fix(obj_gm_class* i_this) {
// NONMATCHING - incorrect instruction generated at line 258
fopAc_ac_c* a_this = (fopAc_ac_c*)&i_this->actor;
cXyz sp28, sp34;

View File

@ -256,7 +256,6 @@ int daObjHBombkoya_c::Delete() {
/* 80C1C1A8-80C1C2BC 0009A8 0114+00 1/0 0/0 0/0 .text
* daObjHBombkoya_create1st__FP16daObjHBombkoya_c */
// NONMATCHING - vtable issues, read more below
static int daObjHBombkoya_create1st(daObjHBombkoya_c* i_this) {
fopAcM_ct(i_this, daObjHBombkoya_c);

View File

@ -173,7 +173,6 @@ int daObjLadder::Act_c::CreateHeap() {
/* 8058D1D8-8058D378 0000F8 01A0+00 1/0 0/0 0/0 .text Create__Q211daObjLadder5Act_cFv */
int daObjLadder::Act_c::Create() {
// NONMATCHING
fopAcM_SetMtx(this, mModel->getBaseTRMtx());
init_mtx();
fopAcM_setCullSizeBox(this, -55.0f, -1.0f, -10.0f, 55.0f, attr_type(mType).field_0x4 + 41.0f,

View File

@ -32,7 +32,6 @@ void dalv4CandleDemoTag_c::setBaseMtx() {
}
/* 80C5CA90-80C5CBA4 000190 0114+00 1/1 0/0 0/0 .text create__20dalv4CandleDemoTag_cFv */
// NONMATCHING - vtables need work
int dalv4CandleDemoTag_c::create() {
fopAcM_ct(this, dalv4CandleDemoTag_c);

View File

@ -10,8 +10,6 @@
#include "d/d_com_inf_game.h"
#include "d/d_meter2_info.h"
// NONMATCHING - vtable order. I think it has something to do with the inline functions.
/* 80C91940-80C91944 000000 0004+00 2/2 0/0 0/0 .rodata mAttr__18daObjMasterSword_c */
daObjMasterSword_Attr_c const daObjMasterSword_c::mAttr = {1.0f};

View File

@ -26,12 +26,12 @@ daObjMirrorScrew_c::attr const daObjMirrorScrew_c::M_attr = {
*/
daObjMirrorScrew_actionFunc daObjMirrorScrew_c::ActionTable[2][2] = {
{
&initWait,
&executeWait,
&daObjMirrorScrew_c::initWait,
&daObjMirrorScrew_c::executeWait,
},
{
&initDown,
&executeDown,
&daObjMirrorScrew_c::initDown,
&daObjMirrorScrew_c::executeDown,
},
};

View File

@ -76,7 +76,7 @@ int daObjPDoor_c::Create() {
shape_angle.y = home.angle.y + 0x1555;
} else if (!isSw2) {
OS_REPORT("城下町押引扉SW1,SW2共にになっています\n");
JUT_PANIC(235, "0");
JUT_ASSERT(235, FALSE);
} else {
mDoorDirection = -1;
shape_angle.y = home.angle.y - 0x1555;

View File

@ -388,10 +388,11 @@ fopAc_ac_c* daObj_Sekizoa_c::getKMsgTagP() {
/* 80CCF03C-80CCF138 000DDC 00FC+00 1/1 0/0 0/0 .text isDelete__15daObj_Sekizoa_cFv */
int daObj_Sekizoa_c::isDelete() {
bool ret;
switch (mType) {
case TYPE_0:
case TYPE_1:
bool ret = false;
ret = false;
if (getBitSW2() != 0xFF) {
if (dComIfGs_isSwitch(getBitSW2(), fopAcM_GetRoomNo(this))) {
ret = true;
@ -1268,7 +1269,7 @@ void daObj_Sekizoa_c::jump() {
break;
case 2:
case 3:
case 3: {
cXyz temp_vec2;
if (mMotionSeqMngr.getNo() == 7 || mMotionSeqMngr.getNo() == 18) {
@ -1324,7 +1325,7 @@ void daObj_Sekizoa_c::jump() {
}
}
break;
}
case 4:
if (mMotionSeqMngr.checkEndSequence() != 0) {
mMotionSeqMngr.setNo(getGameMotionNo(), -1.0f, 0, 0);
@ -2046,18 +2047,17 @@ int daObj_Sekizoa_c::cutGoal(int i_staffIdx) {
}
break;
case 1:
case 1: {
f32 temp_float = mGoalStatueAngle;
cLib_chaseF(&mGoalStatueAngle, 0.0f, mGoalStatueTurnSpeed);
int temp_diff = mGoalStatueAngle - temp_float;
current.angle.y -= temp_diff;
current.angle.y -= (int)(mGoalStatueAngle - temp_float);
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
if (mMotionSeqMngr.checkEndSequence() != 0) {
ret = 1;
}
break;
}
case 2:
if (mMotionSeqMngr.checkEndSequence() != 0) {
ret = 1;

View File

@ -64,14 +64,13 @@ bool daSnowEffTag_c::playerAreaCheck() {
if (player_p->current.pos.y < current.pos.y ||
player_p->current.pos.y > current.pos.y + scale.y * 100.0f)
{
return false;
return in_area;
} else {
cXyz pos_diff = current.pos - player_p->current.pos;
f32 dist_to_player = pos_diff.absXZ();
// supposed to be std::fabs, but it changes regalloc
if (dist_to_player <=
mMaxSize - field_0x574 * fabsf(player_p->current.pos.y - current.pos.y))
mMaxSize - field_0x574 * std::fabs(player_p->current.pos.y - current.pos.y))
{
in_area = true;
} else {

View File

@ -73,7 +73,10 @@ int daSpinLift_c::CreateHeap() {
(J3DModelData*)dComIfG_getObjectRes(l_resNameIdx[mModelType], l_bmdIdx[mModelType]);
JUT_ASSERT(222, modelData != NULL);
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
return mpModel == NULL ? 0 : 1;
if (mpModel == NULL) {
return 0;
}
return 1;
}
/* 80CE3F1C-80CE40FC 00025C 01E0+00 1/1 0/0 0/0 .text create__12daSpinLift_cFv */

View File

@ -382,7 +382,6 @@ void daObjSwBallB_c::PutCrrPos() {
}
/* 80CF56A4-80CF582C 001164 0188+00 1/1 0/0 0/0 .text draw__14daObjSwBallB_cFv */
// NONMATCHING
int daObjSwBallB_c::draw() {
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(mModel, &tevStr);

View File

@ -443,7 +443,6 @@ static int daObj_Toby_Delete(obj_toby_class* i_this) {
}
/* 80D149DC-80D14BD4 00133C 01F8+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
// nonmatching - regalloc
static int useHeapInit(fopAc_ac_c* a_this) {
obj_toby_class* i_this = (obj_toby_class*)a_this;
void* modelData;

View File

@ -521,7 +521,7 @@ void daObjTobyHouse_c::sceneChange() {
exitId = 3;
break;
default:
JUT_PANIC(936, "0");
JUT_ASSERT(936, FALSE);
}
dStage_changeScene(exitId, 0.0f, 0, fopAcM_GetRoomNo(this), 0, -1);

View File

@ -333,7 +333,7 @@ int daObjWStatue_c::actionSwOnWait() {
}
break;
default:
JUT_PANIC(644, "0");
JUT_ASSERT(644, FALSE);
}
return 1;

View File

@ -316,7 +316,6 @@ int daZdoor_c::create1st() {
/* 80D3FACC-80D3FCE8 00070C 021C+00 1/0 0/0 0/0 .text Execute__9daZdoor_cFPPA3_A4_f */
int daZdoor_c::Execute(Mtx** i_mtx) {
// NONMATCHING
s16 current_open_angle = mOpenAngle;
set_cyl();

View File

@ -145,9 +145,9 @@ int daZrTurara_c::Execute(Mtx** i_mtxP) {
void daZrTurara_c::move() {
typedef void (daZrTurara_c::*daZrTurara_modeFunc)();
static daZrTurara_modeFunc mode_proc[3] = {
&modeWait,
&modeBreak,
&modeEnd,
&daZrTurara_c::modeWait,
&daZrTurara_c::modeBreak,
&daZrTurara_c::modeEnd,
};
(this->*mode_proc[mMode])();
mCcCyl.SetR(130.0f);

View File

@ -112,8 +112,8 @@ int daZrTuraRc_c::Execute() {
void daZrTuraRc_c::move() {
typedef void (daZrTuraRc_c::*daZrTuraRc_modeFunc)();
static daZrTuraRc_modeFunc mode_proc[2] = {
&modeDrop,
&modeDropEnd,
&daZrTuraRc_c::modeDrop,
&daZrTuraRc_c::modeDropEnd,
};
(this->*mode_proc[mMode])();
mCcSph.SetR(mScaleF * 130.0f);

View File

@ -502,7 +502,7 @@ int daPasserMng_c::getLuggageParamHigh(u32 param_1) {
break;
default:
OS_REPORT("%s: Line.%d arg=%d\n", "d_a_passer_mng.cpp", 921, param_1);
JUT_PANIC(922, 0);
JUT_ASSERT(922, FALSE);
}
return paramLow << 8;
}

View File

@ -810,7 +810,7 @@ int daPeru_c::demo_walk_to_link(int param_0) {
fopAc_ac_c* actor = mActors[2].getActorP();
if (actor == NULL) {
OS_REPORT("-----there is no player!!\n");
JUT_PANIC(1948, 0);
JUT_ASSERT(1948, FALSE);
}
cLib_chaseAngleS(&mCurAngle.y, fopAcM_searchActorAngleY(this, actor), 0x800);
current.angle.y = mCurAngle.y;
@ -1013,7 +1013,7 @@ int daPeru_c::_cutAppear_Init(int const& param_1) {
if (fopAcM_SearchByName(PROC_MIDNA, &midna) != 0) {
if (midna == NULL) {
OS_REPORT("---- there is no midna!!\n");
JUT_PANIC(2446, 0);
JUT_ASSERT(2446, FALSE);
} else {
mJntAnm.lookActor(midna, 0.0, 0);
}
@ -1184,7 +1184,7 @@ void daPeru_c::_catdoor_open() {
daObjCatDoor_c* pCatDoor = (daObjCatDoor_c*)mActors[1].getActorP();
if (pCatDoor == NULL) {
OS_REPORT("---- there is no catdoor!! ----!!\n");
JUT_PANIC(2799, 0);
JUT_ASSERT(2799, FALSE);
} else {
pCatDoor->setDoorOpen();
}
@ -1196,7 +1196,7 @@ void daPeru_c::_catdoor_open_demoskip() {
daObjCatDoor_c* pCatDoor = (daObjCatDoor_c*)mActors[1].getActorP();
if (pCatDoor == NULL) {
OS_REPORT("---- there is no catdoor!! ----!!\n");
JUT_PANIC(2829, 0);
JUT_ASSERT(2829, FALSE);
} else {
pCatDoor->_toDoorOpened();
}

View File

@ -146,7 +146,7 @@ int daSwc00_c::execute() {
break;
default:
OSReport_Error("領域スイッチ:引数0が不正値<%d>です\n", type);
JUT_PANIC(289, "0");
JUT_ASSERT(289, FALSE);
break;
}

View File

@ -199,7 +199,7 @@ inline int daTagLv6Gate_c::execute() {
fopAcM_delete(parentActorID);
break;
default:
JUT_PANIC(332, "0");
JUT_ASSERT(332, FALSE);
}
}
@ -213,7 +213,7 @@ inline int daTagLv6Gate_c::execute() {
eventManager.cutEnd(cut_index);
break;
default:
JUT_PANIC(345, "0");
JUT_ASSERT(345, FALSE);
}
if (eventInfo.checkCommandDemoAccrpt() && mEvtId != -1 &&

View File

@ -63,7 +63,6 @@ static int daTagWljump_Delete(daTagWljump_c* i_this) {
}
/* 80D65090-80D6587C 000250 07EC+00 1/1 0/0 0/0 .text execute__13daTagWljump_cFv */
// NONMATCHING - reg swap (regs match on debug, probably an inline issue)
int daTagWljump_c::execute() {
attention_info.flags = 0;

View File

@ -1880,9 +1880,7 @@ int dAttCatch_c::request(fopAc_ac_c* i_reqActor, u8 i_itemNo, f32 i_horizontalDi
if (i_angle != 0) {
cSGlobe globe(vec_to_player);
csXyz* player_angle_p = fopAcM_GetShapeAngle_p(player);
s16 angle = globe.U() - player_angle_p->y;
s16 angle = globe.U() - fopAcM_GetShapeAngle_p(player)->y;
if (angle < 0) {
angle = -angle;
}

View File

@ -1637,8 +1637,10 @@ void dComIfGp_createSubExpHeap2D() {
u32 size = dComIfGp_getExpHeap2D()->getTotalFreeSize() * (2.0f / 5.0f);
for (int i = 0; i < 2; i++) {
JUT_ASSERT(3573, dComIfGp_getSubExpHeap2D(i) == NULL);
if (dComIfGp_getSubExpHeap2D(i) == NULL) {
JKRExpHeap* i_heap = JKRExpHeap::create(size, dComIfGp_getExpHeap2D(), false);
JKRExpHeap* i_heap = JKRCreateExpHeap(size, dComIfGp_getExpHeap2D(), false);
JUT_ASSERT(3576, i_heap != NULL);
dComIfGp_setSubExpHeap2D(i, i_heap);
}
}

View File

@ -642,7 +642,6 @@ void dMsgObject_c::setMessageIndex(u32 revoIndex, u32 param_2, bool param_3) {
}
/* 80233E70-80233F84 22E7B0 0114+00 1/1 1/1 0/0 .text setMessageIndexDemo__12dMsgObject_cFUlb */
// NONMATCHING reg swap
void dMsgObject_c::setMessageIndexDemo(u32 revoMsgIndex, bool param_2) {
field_0x158 = revoMsgIndex;
revoMsgIndex = getRevoMessageIndex(revoMsgIndex);

View File

@ -2117,7 +2117,7 @@ void dPa_gen_b_light8PcallBack::draw(JPABaseEmitter* param_1, JPABaseParticle* p
JGeometry::TVec3<f32> aTStack_a4;
JGeometry::TVec3<f32> aTStack_b0;
JGeometry::TVec3<f32> local_bc;
u8 uVar7 = param_1->getGlobalAlpha() & 0xff;
u8 uVar7 = param_1->getGlobalAlpha();
JGeometry::TVec3<f32> local_c8;
JGeometry::TVec3<f32> local_d4;
JGeometry::TVec3<f32> local_e0;
@ -2138,10 +2138,7 @@ void dPa_gen_b_light8PcallBack::draw(JPABaseEmitter* param_1, JPABaseParticle* p
local_80[1][3] = local_8c.y;
local_80[2][2] = 1.0f;
local_80[2][3] = local_8c.z;
local_80[2][1] = 0.0f;
local_80[2][0] = 0.0f;
local_80[1][2] = 0.0f;
local_80[0][2] = 0.0f;
local_80[0][2] = local_80[1][2] = local_80[2][0] = local_80[2][1] = 0.0f;
GXLoadPosMtxImm(local_80, 0);
GXLoadNrmMtxImm(local_80, 0);
JGeometry::TVec3<f32> local_104;

View File

@ -2020,12 +2020,12 @@ fopAc_ac_c* fopAcM_searchFromName(char const* name, u32 param0, u32 param1) {
/* 8001D6F0-8001D7A0 018030 00B0+00 1/1 0/0 0/0 .text fopAcM_findObject4EventCB__FP10fopAc_ac_cPv
*/
fopAc_ac_c* fopAcM_findObject4EventCB(fopAc_ac_c* i_actor, void* i_data) {
fopAcM_search4ev_prm* prm = (fopAcM_search4ev_prm*)i_data;
if (i_data == NULL || !fopAcM_IsExecuting(fopAcM_GetID(i_actor))) {
return NULL;
}
fopAcM_search4ev_prm* prm = (fopAcM_search4ev_prm*)i_data;
if (prm->procname == fopAcM_GetProfName(i_actor) && prm->argument == i_actor->argument) {
if (prm->event_id < 0 || prm->event_id == i_actor->eventInfo.getIdx()) {
return i_actor;