Debug+retail matches and clean up some fakematches (#2910)

* Debug matches

* Match daAlink_c::procGrassWhistleWait

* Match JASAramStream::channelProc

* More debug matches

* Match JAUStreamStaticAramMgr_::deleteStreamAram and bitset inlines

* Fix some fakematches

* Fix gameinfo player info not being a struct

* Update bug comments

* Fix procids in alink

* d_a_scene_exit OK
This commit is contained in:
LagoLunatic
2025-12-03 18:09:56 -05:00
committed by GitHub
parent ecbb3eb776
commit b51274a3dd
43 changed files with 278 additions and 251 deletions
+2 -2
View File
@@ -1114,7 +1114,7 @@ config.libs = [
Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2EnvSeMgr.cpp"),
Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2WolfHowlMgr.cpp"),
Object(MatchingFor(ALL_GCN), "Z2AudioLib/Z2SpeechMgr2.cpp"),
Object(NonMatching, "Z2AudioLib/Z2AudioMgr.cpp"),
Object(Equivalent, "Z2AudioLib/Z2AudioMgr.cpp"), # weak func order
],
},
{
@@ -1703,7 +1703,7 @@ config.libs = [
ActorRel(MatchingFor(ALL_GCN), "d_a_obj_swpush"),
ActorRel(MatchingFor(ALL_GCN), "d_a_obj_timer"),
ActorRel(MatchingFor(ALL_GCN), "d_a_path_line"),
ActorRel(NonMatching, "d_a_scene_exit"),
ActorRel(MatchingFor(ALL_GCN), "d_a_scene_exit"),
ActorRel(MatchingFor(ALL_GCN), "d_a_set_bgobj"),
ActorRel(MatchingFor(ALL_GCN), "d_a_swhit0"),
ActorRel(MatchingFor(ALL_GCN), "d_a_tag_allmato"),
+6
View File
@@ -2,6 +2,7 @@
#define J2DMATBLOCK_H
#include "JSystem/J2DGraph/J2DTevs.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JUtility/TColor.h"
class JUTFont;
@@ -117,6 +118,7 @@ public:
}
virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; }
virtual void setTevColor(u32 index, J2DGXColorS10 color) {
J3D_PANIC(250, index < 4, "Error : range over.");
mTevColor[index] = color;
}
virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; }
@@ -212,6 +214,7 @@ public:
}
virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; }
virtual void setTevColor(u32 index, J2DGXColorS10 color) {
J3D_PANIC(360, index < 4, "Error : range over.");
mTevColor[index] = color;
}
virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; }
@@ -309,6 +312,7 @@ public:
}
virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; }
virtual void setTevColor(u32 index, J2DGXColorS10 color) {
J3D_PANIC(468, index < 4, "Error : range over.");
mTevColor[index] = color;
}
virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; }
@@ -406,6 +410,7 @@ public:
}
virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; }
virtual void setTevColor(u32 index, J2DGXColorS10 color) {
J3D_PANIC(579, index < 4, "Error : range over.");
mTevColor[index] = color;
}
virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; }
@@ -504,6 +509,7 @@ public:
}
virtual J2DTevOrder* getTevOrder(u32 index) { return &mTevOrder[index]; }
virtual void setTevColor(u32 index, J2DGXColorS10 color) {
J3D_PANIC(691, index < 4, "Error : range over.");
mTevColor[index] = color;
}
virtual J2DGXColorS10* getTevColor(u32 index) { return &mTevColor[index]; }
+2 -2
View File
@@ -11,8 +11,6 @@ namespace JASDsp {
class TChannel;
}
#define CHANNEL_MAX 6
/**
* @ingroup jsystem-jaudio
*
@@ -130,6 +128,8 @@ public:
static u32 getBlockSize() { return sBlockSize; }
static const int CHANNEL_MAX = 6;
/* 0x000 */ OSMessageQueue field_0x000;
/* 0x020 */ OSMessageQueue field_0x020;
/* 0x040 */ void* field_0x040[16];
+1 -1
View File
@@ -29,7 +29,7 @@ public:
void* getBase() { return mBase; }
bool isAllocated() { return mBase; }
u32 getSize() { return mSize; }
u32 getSize() const { return mSize; }
/* 0x00 */ JSUTree<JASHeap> mTree;
/* 0x1C */ OSMutex mMutex;
+1 -2
View File
@@ -59,7 +59,6 @@ public:
}
return NULL;
}
// NONMATCHING regalloc
virtual bool deleteStreamAram(u32 param_0) {
for (u32 i = 0; i < field_0x4c; i++) {
if (!this->field_0x4.test(i)) {
@@ -80,7 +79,7 @@ public:
if (!heap) {
heap = JASKernel::getAramHeap();
}
if (numReserve < 1) {
if (numReserve <= 0) {
numReserve = 1;
}
JUT_ASSERT(83, numReserve <= MAX_CHUNKS);
+7 -11
View File
@@ -268,19 +268,15 @@ struct TVec3<f32> : public Vec {
return inv_norm * sq;
}
void normalize(const TVec3<f32>& other) {
f32 normalize(const TVec3<f32>& other) {
f32 sq = other.squared();
if (sq <= TUtil<f32>::epsilon()) {
zero();
return;
}
f32 norm;
if (sq <= 0.0f) {
norm = sq;
} else {
norm = fsqrt_step(sq);
return 0.0f;
}
f32 norm = TUtil<f32>::inv_sqrt(sq);
scale(norm, other);
return norm * sq;
}
f32 length() const {
@@ -411,12 +407,12 @@ struct TVec2 {
TVec2(T v) { set(v); }
template <typename U>
TVec2(U x, U y) { set(x, y); }
TVec2(const U x, const U y) { set(x, y); }
void set(T v) { y = x = v; }
template <typename U>
void set(U x, U y) {
void set(const U x, const U y) {
this->x = x;
this->y = y;
}
@@ -518,7 +514,7 @@ struct TBox2 : public TBox<TVec2<T> > {
}
}
void set(const TBox2& other) { set(other.i, other.f); }
void set(const TBox<TVec2<T> >& other) { set(other.i, other.f); }
void set(const TVec2<f32>& i, const TVec2<f32>& f) { this->i.set(i), this->f.set(f); }
void set(f32 x0, f32 y0, f32 x1, f32 y1) { this->i.set(x0, y0); this->f.set(x1, y1); }
};
+1 -1
View File
@@ -85,7 +85,7 @@ inline u8* JKRAramToMainRam(u32 p1, u8* p2, u32 p3, JKRExpandSwitch p4, u32 p5,
return JKRAram::aramToMainRam(p1, p2, p3, p4, p5, p6, p7, p8);
}
inline JKRAramBlock *JKRMainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap *heap, int id, u32 *pSize) {
inline JKRAramBlock* JKRMainRamToAram(u8 *buf, u32 bufSize, u32 alignedSize, JKRExpandSwitch expandSwitch, u32 fileSize, JKRHeap *heap, int id, u32 *pSize) {
return JKRAram::mainRamToAram(buf, bufSize, alignedSize, expandSwitch, fileSize, heap, id, pSize);
}
+4
View File
@@ -41,6 +41,10 @@ inline u8 JSUHiByte(u16 in) {
return in >> 8;
}
inline u16 JSUHiHalf(u32 in) {
return (in >> 16);
}
inline u16 JSULoHalf(u32 param_0) {return param_0; }
#endif
+1 -2
View File
@@ -11,8 +11,7 @@ class csXyz : public SVec {
public:
static const csXyz Zero;
~csXyz() {}
/* inline */ csXyz() {}
/* inline */ csXyz(const csXyz& other) : SVec(other){};
csXyz() {}
csXyz(s16, s16, s16);
csXyz operator+(csXyz&);
void operator+=(csXyz&);
+25 -53
View File
@@ -5172,7 +5172,7 @@ public:
BOOL checkHorseStart(u32, int);
int setStartProcInit();
int create();
s32 setRoomInfo();
int setRoomInfo();
void setShapeAngleOnGround();
void setStepsOffset();
void iceSlipBgCheck();
@@ -6934,9 +6934,9 @@ public:
virtual void setAnimeFrame(f32);
virtual BOOL checkWolfLock(fopAc_ac_c*) const;
virtual bool cancelWolfLock(fopAc_ac_c*);
virtual s32 getAtnActorID() const { return mAtnActorID; }
virtual s32 getItemID() const { return mItemAcKeep.getID(); }
virtual u32 getGrabActorID() const {
virtual fpc_ProcID getAtnActorID() const { return mAtnActorID; }
virtual fpc_ProcID getItemID() const { return mItemAcKeep.getID(); }
virtual fpc_ProcID getGrabActorID() const {
if (mEquipItem == 0x102) {
return mItemAcKeep.getID();
} else {
@@ -7133,7 +7133,7 @@ public:
}
virtual BOOL checkWolfDownAttackPullOut() const { return mProcID == PROC_WOLF_DOWN_AT_LAND; }
virtual BOOL checkBootsOrArmorHeavy() const;
virtual s32 getBottleOpenAppearItem() const;
virtual fpc_ProcID getBottleOpenAppearItem() const;
virtual bool checkItemSwordEquip() const { return mEquipItem == 0x103; }
virtual f32 getSinkShapeOffset() const { return mSinkShapeOffset; }
virtual BOOL checkSinkDead() const { return field_0x2fbd == 0xFF; }
@@ -7231,7 +7231,7 @@ public:
void offModeFlg(u32 flag) { mModeFlg &= ~flag; }
bool swordButton() { return itemButtonCheck(8); }
daPy_actorKeep_c* getThrowBoomerangAcKeep() { return &mThrowBoomerangAcKeep; }
s32 getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
int getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; }
bool checkFisingRodLure() const { return mEquipItem == 0x105; }
BOOL doTrigger() const { return mItemTrigger & BTN_A; }
bool swordTrigger() { return itemTriggerCheck(BTN_B); }
@@ -7265,7 +7265,7 @@ public:
field_0x2844.clearData();
}
s32 checkPlayerDemoMode() const { return mDemo.getDemoType(); }
int checkPlayerDemoMode() const { return mDemo.getDemoType(); }
BOOL checkSpecialDemoMode() const {
return mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SPECIAL_e;
}
@@ -7274,19 +7274,19 @@ public:
u32 getStartEvent() { return fopAcM_GetParam(this) >> 0x18; }
BOOL checkClimbFall() { return checkLadderFall(); }
bool checkMidnaWolfDashAnime() const { return checkNoResetFlg1(FLG1_DASH_MODE); }
bool checkMidnaClingAnime() const { return mMidnaAnm == 1; }
bool checkMidnaLowClingAnime() const { return mMidnaAnm == 2; }
bool checkMidnaLookAroundAnime() const { return mMidnaAnm == 3; }
bool checkMidnaPanicAnime() const { return mMidnaAnm == 5; }
bool checkMidnaWolfDeadAnime() const { return mMidnaAnm == 6; }
bool checkMidnaWolfSwimDeadAnime() const { return mMidnaAnm == 7; }
bool checkMidnaRopeWaitStaggerAnime() const { return mMidnaAnm == 8; }
bool checkMidnaRopeMoveStaggerAnime() const { return mMidnaAnm == 9; }
bool checkMidnaGanonCatchAnm() const { return mMidnaAnm == 10; }
bool checkMidnaGanonThrowLeftAnm() const { return mMidnaAnm == 11; }
bool checkMidnaGanonThrowRightAnm() const { return mMidnaAnm == 12; }
bool checkMidnaDigInAnime() const { return mMidnaAnm == 13; }
BOOL checkMidnaWolfDashAnime() const { return checkNoResetFlg1(FLG1_DASH_MODE); }
BOOL checkMidnaClingAnime() const { return mMidnaAnm == 1; }
BOOL checkMidnaLowClingAnime() const { return mMidnaAnm == 2; }
BOOL checkMidnaLookAroundAnime() const { return mMidnaAnm == 3; }
BOOL checkMidnaPanicAnime() const { return mMidnaAnm == 5; }
BOOL checkMidnaWolfDeadAnime() const { return mMidnaAnm == 6; }
BOOL checkMidnaWolfSwimDeadAnime() const { return mMidnaAnm == 7; }
BOOL checkMidnaRopeWaitStaggerAnime() const { return mMidnaAnm == 8; }
BOOL checkMidnaRopeMoveStaggerAnime() const { return mMidnaAnm == 9; }
BOOL checkMidnaGanonCatchAnm() const { return mMidnaAnm == 10; }
BOOL checkMidnaGanonThrowLeftAnm() const { return mMidnaAnm == 11; }
BOOL checkMidnaGanonThrowRightAnm() const { return mMidnaAnm == 12; }
BOOL checkMidnaDigInAnime() const { return mMidnaAnm == 13; }
void clearMidnaMsgNum() {
mMidnaMsgNum = 0xffff;
@@ -7330,37 +7330,9 @@ public:
MtxP getMagneBootsInvMtx() { return mMagneBootInvMtx; }
s16 getMagneBootsModelShapeAngle() const { return field_0x3118; }
bool checkFishingCastMode() const {
bool var_r5;
bool var_r4 = 1;
bool var_r3 = 0;
if (mProcID == PROC_FISHING_CAST) {
var_r5 = 0;
if (mItemAcKeep.getActor() != NULL &&
mItemAcKeep.getActor()->eventInfo.checkCommandDemoAccrpt() != 0)
{
var_r5 = 1;
}
if (!var_r5) {
var_r3 = 1;
}
}
if (!var_r3) {
bool var_r3_2 = 0;
if (mProcID != PROC_FISHING_CAST && checkNoResetFlg2(FLG2_UNK_20000000)) {
var_r3_2 = 1;
}
if (!var_r3_2) {
var_r4 = 0;
}
}
return var_r4;
BOOL checkFishingCastMode() const {
return (mProcID == PROC_FISHING_CAST && !(mItemAcKeep.getActor() != NULL && mItemAcKeep.getActor()->eventInfo.checkCommandDemoAccrpt())) ||
(mProcID != PROC_FISHING_CAST && checkNoResetFlg2(FLG2_UNK_20000000) != 0);
}
BOOL setCanoeCast() {
@@ -7807,10 +7779,10 @@ public:
/* 0x02864 */ dMsgFlow_c mMsgFlow;
/* 0x028B0 */ fpc_ProcID mShieldArrowIDs[16];
/* 0x028F0 */ fpc_ProcID mMsgClassID;
/* 0x028F4 */ int mAtnActorID;
/* 0x028F4 */ fpc_ProcID mAtnActorID;
/* 0x028F8 */ fpc_ProcID field_0x28f8;
/* 0x028FC */ fpc_ProcID field_0x28fc;
/* 0x02900 */ u32 field_0x2900;
/* 0x02900 */ fpc_ProcID field_0x2900;
/* 0x02904 */ daAlink_footData_c mFootData1[2];
/* 0x02A4C */ daAlink_footData_c mFootData2[2];
/* 0x02B94 */ f32 field_0x2b94;
+1 -1
View File
@@ -71,7 +71,7 @@ private:
/* 0xA30 */ dCcD_Sph mSphere2;
/* 0xB68 */ dCcD_Sph mAtSph;
/* 0xCA0 */ dCcU_AtInfo mAtInfo;
// Seems that the orig developers didn't size mKeys correctly, as ideally it should be len=8, not len=7:
// !@bug Seems that the orig developers didn't size mKeys correctly, as ideally it should be len=8, not len=7:
/* 0xCC4 */ u32 mKeys[7];
/* 0xCE0 */ u8 mHIOInit;
/* 0xCE1 */ u8 field_0xce1[0xCE8 - 0xCE1];
+1 -4
View File
@@ -450,11 +450,8 @@ public:
void calc(BOOL);
void initialize() {
//TODO: Separate decl is fakematch, but using 0 directly in the setall call causes
// weird issues in some functions that call this.
u8 zero = 0;
for (int i = 0; i < 2; i++) {
mAngle[i].setall(zero);
mAngle[i].setall(0);
mPower[i] = 0.0f;
}
mStagger = 0;
+24 -27
View File
@@ -716,9 +716,9 @@ public:
cXyz getRightHandPos() const { return mRightHandPos; }
const cXyz getLeftHandPos() const { return mLeftHandPos; }
const cXyz getItemPos() const { return mItemPos; }
bool getDkCaught() const { return checkNoResetFlg1(FLG1_DK_CAUGHT); }
bool getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT); }
bool getStCaught() const { return checkNoResetFlg1(FLG1_UNK_80000000); }
BOOL getDkCaught() const { return checkNoResetFlg1(FLG1_DK_CAUGHT); }
BOOL getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT); }
BOOL getStCaught() const { return checkNoResetFlg1(FLG1_UNK_80000000); }
/* vt 0X008 */ virtual cXyz* getMidnaAtnPos() const { return NULL; }
/* vt 0X00C */ virtual void setMidnaMsgNum(fopAc_ac_c*, u16) {}
@@ -779,9 +779,9 @@ public:
/* vt 0X0E8 */ virtual void setAnimeFrame(f32) {}
/* vt 0X0EC */ virtual BOOL checkWolfLock(fopAc_ac_c*) const { return FALSE; }
/* vt 0X0F0 */ virtual bool cancelWolfLock(fopAc_ac_c*) { return FALSE; }
/* vt 0X0F4 */ virtual s32 getAtnActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X0F8 */ virtual s32 getItemID() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X0FC */ virtual u32 getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X0F4 */ virtual fpc_ProcID getAtnActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X0F8 */ virtual fpc_ProcID getItemID() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X0FC */ virtual fpc_ProcID getGrabActorID() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X100 */ virtual BOOL exchangeGrabActor(fopAc_ac_c*) { return FALSE; }
/* vt 0X104 */ virtual BOOL setForceGrab(fopAc_ac_c*, int, int) { return FALSE; }
/* vt 0X108 */ virtual void setForcePutPos(cXyz const&) {}
@@ -879,7 +879,7 @@ public:
/* vt 0X278 */ virtual BOOL checkMetamorphose() const { return FALSE; }
/* vt 0X27C */ virtual BOOL checkWolfDownAttackPullOut() const { return FALSE; }
/* vt 0X280 */ virtual BOOL checkBootsOrArmorHeavy() const { return FALSE; }
/* vt 0X284 */ virtual s32 getBottleOpenAppearItem() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X284 */ virtual fpc_ProcID getBottleOpenAppearItem() const { return fpcM_ERROR_PROCESS_ID_e; }
/* vt 0X288 */ virtual bool checkItemSwordEquip() const { return FALSE; }
/* vt 0X28C */ virtual f32 getSinkShapeOffset() const { return 0.0f; }
/* vt 0X290 */ virtual BOOL checkSinkDead() const { return FALSE; }
@@ -1170,9 +1170,6 @@ public:
static daMidna_c* getMidnaActor() { return m_midnaActor; }
static void setMidnaActor(fopAc_ac_c* actor) { m_midnaActor = (daMidna_c*)actor; }
// not sure how to define this properly
// static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);}
BOOL checkWolfEnemyCatchOwn(fopAc_ac_c* i_actorP) { return checkWolfEnemyBiteAllOwn(i_actorP); }
BOOL checkWolfEnemyHangBiteOwn(const fopAc_ac_c* i_actorP) const { return checkWolfEnemyBiteAllOwn(i_actorP); }
BOOL checkWolfEnemyLeftThrow() const { return checkNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW); }
@@ -1225,23 +1222,23 @@ public:
void setSumouForceTackle() { mSpecialMode = 0x1B; }
void setSumouForceGraspCancel() { mSpecialMode = 0x24; }
BOOL checkSumouPushFront() const { return mSpecialMode == 7; }
BOOL checkSumouPushBack() const { return mSpecialMode == 8; }
BOOL checkSumouTackleSuccess() const { return mSpecialMode == 0xF; }
BOOL checkSumouTackleSuccessPunch() const { return mSpecialMode == 0x10; }
BOOL checkSumouTackleMiss() const { return mSpecialMode == 0x11; }
BOOL checkSumouTackleDraw() const { return mSpecialMode == 0x12; }
BOOL checkSumouPunchSuccess() const { return mSpecialMode == 0x13; }
BOOL checkSumouPunchMiss() const { return mSpecialMode == 0x14; }
BOOL checkSumouPunchDraw() const { return mSpecialMode == 0x15; }
BOOL checkSumouWait() const { return mSpecialMode == 0x16; }
BOOL checkSumouLeftMove() const { return mSpecialMode == 0x17; }
BOOL checkSumouRightMove() const { return mSpecialMode == 0x18; }
BOOL checkSumouSlideLeft() const { return mSpecialMode == 0x19; }
BOOL checkSumouSlideRight() const { return mSpecialMode == 0x1A; }
BOOL checkSumouPunchStagger() const { return mSpecialMode == 0x1F; }
BOOL checkSumouTackleStagger() const { return mSpecialMode == 0x20; }
BOOL checkSumouGraspRelease() const { return mSpecialMode == 0x23; }
bool checkSumouPushFront() const { return mSpecialMode == 7; }
bool checkSumouPushBack() const { return mSpecialMode == 8; }
bool checkSumouTackleSuccess() const { return mSpecialMode == 0xF; }
bool checkSumouTackleSuccessPunch() const { return mSpecialMode == 0x10; }
bool checkSumouTackleMiss() const { return mSpecialMode == 0x11; }
bool checkSumouTackleDraw() const { return mSpecialMode == 0x12; }
bool checkSumouPunchSuccess() const { return mSpecialMode == 0x13; }
bool checkSumouPunchMiss() const { return mSpecialMode == 0x14; }
bool checkSumouPunchDraw() const { return mSpecialMode == 0x15; }
bool checkSumouWait() const { return mSpecialMode == 0x16; }
bool checkSumouLeftMove() const { return mSpecialMode == 0x17; }
bool checkSumouRightMove() const { return mSpecialMode == 0x18; }
bool checkSumouSlideLeft() const { return mSpecialMode == 0x19; }
bool checkSumouSlideRight() const { return mSpecialMode == 0x1A; }
bool checkSumouPunchStagger() const { return mSpecialMode == 0x1F; }
bool checkSumouTackleStagger() const { return mSpecialMode == 0x20; }
bool checkSumouGraspRelease() const { return mSpecialMode == 0x23; }
void onHeavyState() { onNoResetFlg0(FLG0_UNK_40000000); }
void onHeavyStateMidnaPanic() {
+1 -1
View File
@@ -19,7 +19,7 @@ public:
inline int create();
u8 getArg1() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
u8 getArg0() { return fopAcM_GetParam(this); }
u8 getArg0() { return fopAcM_GetParam(this) & 0xFF; }
u8 getSwNo() { return fopAcM_GetParam(this) >> 0x18; }
u16 getOffEventBit() { return home.angle.z & 0xFFF; }
u16 getOnEventBit() { return home.angle.x & 0xFFF; }
+12 -10
View File
@@ -290,7 +290,7 @@ public:
dVibration_c& getVibration() { return mVibration; }
camera_class* getCamera(int idx) { return mCameraInfo[idx].mCamera; }
void* getPlayerPtr(int ptrIdx) { return mPlayerPtr[ptrIdx]; }
fopAc_ac_c* getPlayer(int idx) { return (fopAc_ac_c*)mPlayer[idx * 2]; }
fopAc_ac_c* getPlayer(int idx) { return mPlayerInfo[idx].mpPlayer; }
dPa_control_c* getParticle() { return mParticle; }
dEvent_manager_c& getEvtManager() { return mEvtManager; }
dAttention_c* getAttention() { return &mAttention; }
@@ -653,16 +653,16 @@ public:
void* getItemTable() { return mItemTable; }
void setPlayerPtr(int i, fopAc_ac_c* ptr) { mPlayerPtr[i] = ptr; }
void setPlayer(int i, fopAc_ac_c* player) { mPlayer[i] = (daAlink_c*)player; }
void setPlayerInfo(int i, fopAc_ac_c* ptr, int camIdx) {
mPlayer[i] = (daAlink_c*)ptr;
mPlayerCameraID[camIdx] = 0;
void setPlayer(int i, fopAc_ac_c* player) { mPlayerInfo[i].mpPlayer = player; }
void setPlayerInfo(int i, fopAc_ac_c* player, int cam) {
mPlayerInfo[i].mpPlayer = player;
mPlayerInfo[i].mCameraID = cam;
}
void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] |= flag; }
void clearPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] &= ~flag; }
u32 checkPlayerStatus(int param_0, int i, u32 flag) { return mPlayerStatus[param_0][i] & flag; }
int getPlayerCameraID(int i) { return mPlayerCameraID[i * 8]; }
int getPlayerCameraID(int i) { return mPlayerInfo[i].mCameraID; }
int getCameraPlayer1ID(int i) { return mCameraInfo[i].field_0x5; }
int getCameraPlayer2ID(int i) { return mCameraInfo[i].field_0x6; }
int getCameraWinID(int i) { return mCameraInfo[i].field_0x4; }
@@ -814,8 +814,10 @@ public:
/* 0x04E0E */ u16 mStatus;
/* 0x04E10 */ dDlst_window_c mWindow[1];
/* 0x04E3C */ dComIfG_camera_info_class mCameraInfo[1];
/* 0x04E74 */ daAlink_c* mPlayer[1];
/* 0x04E78 */ s8 mPlayerCameraID[1];
/* 0x04E74 */ struct {
/* 0x0 */ fopAc_ac_c* mpPlayer;
/* 0x4 */ s8 mCameraID;
} mPlayerInfo[1];
/* 0x04E7C */ fopAc_ac_c* mPlayerPtr[2]; // 0: Player, 1: Horse ; type may be wrong
/* 0x04E84 */ dComIfG_item_info_class mItemInfo;
/* 0x04FB0 */ dComIfG_MesgCamInfo_c mMesgCamInfo;
@@ -3990,8 +3992,8 @@ inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos,
inline u32 dComIfGp_particle_set(u32 param_0, u16 param_1, const cXyz* i_pos,
const dKy_tevstr_c* param_3) {
return dComIfGp_particle_set(param_0, param_1, i_pos, param_3, 0, 0, 0xFF, 0, 0xFFFFFFFF, 0,
0, 0);
return dComIfGp_particle_set(param_0, param_1, i_pos, param_3, NULL, NULL, 0xFF, NULL, -1, NULL,
NULL, NULL);
}
inline JPABaseEmitter* dComIfGp_particle_set(u16 i_resID, const cXyz* i_pos,
+5 -5
View File
@@ -169,8 +169,8 @@ public:
BOOL checkCommandCatch() { return mCommand == dEvtCmd_INCATCH_e; }
BOOL checkCommandDoor() { return mCommand == dEvtCmd_INDOOR_e; }
BOOL checkCommandDemoAccrpt() { return mCommand == dEvtCmd_INDEMO_e; }
bool checkCommandTalk() { return mCommand == dEvtCmd_INTALK_e; }
bool checkCommandItem() { return mCommand == dEvtCmd_INGETITEM_e; }
BOOL checkCommandTalk() { return mCommand == dEvtCmd_INTALK_e; }
BOOL checkCommandItem() { return mCommand == dEvtCmd_INGETITEM_e; }
void setCommand(u16 command) { mCommand = command; }
void setMapToolId(u8 id) { mMapToolId = id; }
@@ -309,14 +309,14 @@ public:
void setBallModelEffect(dKy_tevstr_c*);
void drawBallModel(dKy_tevstr_c*);
bool checkWolfNoLock() const { return mFlags & fopEn_flag_WolfNoLock; }
BOOL checkWolfNoLock() const { return mFlags & fopEn_flag_WolfNoLock; }
BOOL checkHeadLockFlg() const { return mFlags & fopEn_flag_HeadLock; }
BOOL checkWolfBiteDamage() const { return mFlags & fopEn_flag_WolfBiteDamage; }
BOOL checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; }
bool checkDownFlg() { return mFlags & fopEn_flag_Down; }
BOOL checkDownFlg() { return mFlags & fopEn_flag_Down; }
BOOL checkCutDownHitFlg() const { return mFlags & fopEn_flag_CutDownHit; }
BOOL checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; }
bool checkDeadFlg() const { return mFlags & fopEn_flag_Dead; }
BOOL checkDeadFlg() const { return mFlags & fopEn_flag_Dead; }
BOOL checkThrowMode(u8 param_1) const { return mThrowMode & param_1; }
u32* getMidnaBindID(int i_idx) { return mMidnaBindID + i_idx; }
+4 -4
View File
@@ -250,7 +250,7 @@ public:
* @param a The source Vec
* @param b The output Vec
*/
static void multVec(const Vec* a, Vec* b) { MTXMultVec(now, a, b); }
static void multVec(const Vec* a, Vec* b) { PSMTXMultVec(now, a, b); }
/**
* Multiplies a given Vec `a` by the `now` Matrix's "Scale-and-Rotate" component and places the result into Vec `b`
@@ -268,7 +268,7 @@ public:
* @param count The size of the array
*/
static void multVecArray(const Vec* src, Vec* dst, u32 count) {
MTXMultVecArray(now, src, dst, count);
PSMTXMultVecArray(now, src, dst, count);
}
static void XYZrotS(s16 x, s16 y, s16 z) { mDoMtx_XYZrotS(now, x, y, z); }
@@ -327,7 +327,7 @@ public:
*/
static void ZrotM(s16 z) { mDoMtx_ZrotM(now, z); }
static void inverse() { MTXInverse(now, now); }
static void inverse() { PSMTXInverse(now, now); }
static void inverseTranspose() { mDoMtx_inverseTranspose(now, now); }
@@ -350,7 +350,7 @@ public:
}
static void identity() {
MTXIdentity(now);
PSMTXIdentity(now);
}
static Mtx now;
+1 -1
View File
@@ -7,7 +7,7 @@
#include "JSystem/JUtility/JUTTexture.h"
#include "dolphin/gx.h"
// NONMATCHING - instruction order
// NONMATCHING - instruction order. matches if const is removed from j2dDefaultColorChanInfo, but then it's in the wrong section
void J2DColorBlock::initialize() {
for (int i = 0; i < 2; i++) {
mMatColor[i] = JUtility::TColor(j2dDefaultColInfo);
+5 -5
View File
@@ -343,7 +343,8 @@ void J2DPane::place(JGeometry::TBox2<f32> const& box) {
f32 xOff = tmpBox.i.x - mBounds.i.x;
f32 yOff = tmpBox.i.y - mBounds.i.y;
for (J2DPane* child = getFirstChildPane(); child != NULL; child = child->getNextChildPane()) {
J2DPane* child;
for (child = getFirstChildPane(); child != NULL; child = child->getNextChildPane()) {
child->mTranslateX += xOff;
child->mTranslateY += yOff;
if (xOff != 0 || yOff != 0) {
@@ -432,10 +433,9 @@ void J2DPane::rotate(f32 angle) {
}
void J2DPane::clip(JGeometry::TBox2<f32> const& bounds) {
JGeometry::TBox2<f32> boxA(bounds);
JGeometry::TBox2<f32> boxB(mGlobalBounds);
boxA.addPos(boxB.i);
mClipRect.intersect(boxA);
JGeometry::TBox2<f32> box(bounds);
box.addPos(JGeometry::TVec2<f32>(mGlobalBounds.i.x, mGlobalBounds.i.y));
mClipRect.intersect(box);
}
J2DPane* J2DPane::search(u64 tag) {
+4 -4
View File
@@ -27,7 +27,7 @@ JAIStream::JAIStream(JAIStreamMgr* streamMgr, JAISoundStrategyMgr<JAIStream>* so
field_0x2c5 = 0;
field_0x2c6 = 0;
for (int i = 0; i < CHANNEL_MAX; i++) {
for (int i = 0; i < NUM_CHILDREN; i++) {
children_[i] = NULL;
}
}
@@ -157,7 +157,7 @@ void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundAct
}
}
for (int i = 0; i < CHANNEL_MAX; i++) {
for (int i = 0; i < NUM_CHILDREN; i++) {
inner_.aramStream_.setPitch(mixParams->mPitch);
if (children_[i] != NULL) {
inner_.aramStream_.setChannelVolume(i, children_[i]->mMove.params_.mVolume * mixParams->mVolume);
@@ -186,7 +186,7 @@ void JAIStream::JAIStreamMgr_mixOut_(const JASSoundParams& inParams, JAISoundAct
void JAIStream::die_JAIStream_() {
die_JAISound_();
for (int i = 0; i < CHANNEL_MAX; i++) {
for (int i = 0; i < NUM_CHILDREN; i++) {
if (children_[i] != NULL) {
delete children_[i];
children_[i] = NULL;
@@ -231,7 +231,7 @@ void JAIStream::JAIStreamMgr_calc_() {
}
if (calc_JAISound_()) {
for (int i = 0; i < CHANNEL_MAX; i++) {
for (int i = 0; i < NUM_CHILDREN; i++) {
if (children_[i] != NULL) {
children_[i]->calc();
}
+49 -41
View File
@@ -9,6 +9,7 @@
#include "JSystem/JAudio2/JASDvdThread.h"
#include "JSystem/JKernel/JKRAram.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JSupport/JSupport.h"
JASTaskThread* JASAramStream::sLoadThread;
@@ -271,51 +272,55 @@ bool JASAramStream::load() {
}
u32 loop_end_block = (mLoopEnd - 1) / getBlockSamples();
u32 loop_start_block = mLoopStart / getBlockSamples();
u32 block = mBlock;
if (block > loop_end_block) {
if (mBlock > loop_end_block) {
return false;
}
u32 offset = mBlock * (sBlockSize * mChannelNum + sizeof(BlockHeader)) + sizeof(Header);
u32 size = sBlockSize * mChannelNum + sizeof(BlockHeader);
u32 offset = block * size + sizeof(Header);
u32 size2 = size;
if (block == loop_end_block) {
size2 = mDvdFileInfo.length - offset;
if (mBlock == loop_end_block) {
size = mDvdFileInfo.length - offset;
}
if (DVDReadPrio(&mDvdFileInfo, sReadBuffer, size2, offset, 1) < 0) {
if (DVDReadPrio(&mDvdFileInfo, sReadBuffer, size, offset, 1) < 0) {
JUT_WARN(507, "%s", "DVDReadPrio Failed");
struct_80451261 = true;
return false;
}
BlockHeader* bhead = (BlockHeader*)sReadBuffer;
JUT_ASSERT(512, bhead->tag == 'BLCK');
if (field_0x114 != 0) {
return false;
}
u32 uvar2 = field_0x148 + field_0x10c * sBlockSize;
u32 sp08 = field_0x148 + field_0x10c * sBlockSize;
for (int i = 0; i < mChannelNum; i++) {
if (!JKRAram::mainRamToAram(sReadBuffer + bhead->field_0x4 * i + sizeof(BlockHeader),
uvar2 + sBlockSize * field_0x160 * i,
bhead->field_0x4, EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL)) {
(void)i;
if (!JKRMainRamToAram(sReadBuffer + bhead->field_0x4 * i + sizeof(BlockHeader),
sp08 + sBlockSize * field_0x160 * i,
bhead->field_0x4, EXPAND_SWITCH_UNKNOWN0, 0, NULL, -1, NULL)) {
JUT_WARN(522, "%s", "JKRMainRamToAram Failed");
struct_80451261 = 1;
return false;
}
}
field_0x10c++;
if (field_0x10c >= field_0x108) {
u32 uvar8 = field_0x108 - 1 + mBlock;
u32 r28 = mBlock;
r28 += field_0x108 - 1;
if (mLoop) {
while (uvar8 > loop_end_block) {
uvar8 -= loop_end_block;
uvar8 += loop_start_block;
JUT_ASSERT(537, loop_start_block < loop_end_block);
while (r28 > loop_end_block) {
r28 -= loop_end_block;
r28 += loop_start_block;
}
}
if (uvar8 == loop_end_block || uvar8 + 2 == loop_end_block) {
if (r28 == loop_end_block || r28 + 2 == loop_end_block) {
field_0x108 = field_0x160;
OSSendMessage(&field_0x020, (OSMessage)5, OS_MESSAGE_BLOCK);
} else {
field_0x108 = field_0x160 - 1;
}
for (int i = 0; i < mChannelNum; i++) {
field_0x130[i] = bhead->field_0x8[i].field_0x0;
field_0x13c[i] = bhead->field_0x8[i].field_0x2;
field_0x130[i] = (s16)bhead->field_0x8[i].field_0x0;
field_0x13c[i] = (s16)bhead->field_0x8[i].field_0x2;
}
field_0x10c = 0;
}
@@ -379,17 +384,16 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
if (i_dspChannel->field_0x008 == 0) {
if (i_channel == field_0x0a8) {
field_0x12c = 0;
u32 uvar8 = i_dspChannel->field_0x074 + i_dspChannel->field_0x064;
u32 uvar5 = field_0x0b4;
if (uvar8 <= uvar5) {
field_0x0b8 += uvar5 - uvar8;
u32 sp28 = i_dspChannel->field_0x074 + i_dspChannel->field_0x064;
if (sp28 <= field_0x0b4) {
field_0x0b8 += field_0x0b4 - sp28;
} else {
if (!field_0x0c0) {
field_0x0b8 += uvar5;
field_0x0b8 += block_samples * mBufCount - uvar8;
field_0x0b8 += field_0x0b4;
field_0x0b8 += block_samples * mBufCount - sp28;
} else {
field_0x0b8 += uvar5;
field_0x0b8 += block_samples * mBufCount - uvar8
field_0x0b8 += field_0x0b4;
field_0x0b8 += block_samples * mBufCount - sp28
- i_dspChannel->field_0x110;
field_0x0b8 -= mLoopEnd;
field_0x0b8 += mLoopStart;
@@ -403,6 +407,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
}
}
if (field_0x0b8 > mLoopEnd) {
JUT_WARN(686, "%s", "mReadSample > mLoopEnd");
struct_80451261 = true;
}
f32 fvar1 = field_0x0c4;
@@ -427,8 +432,8 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
field_0x128 = 0;
field_0x12c |= 8;
}
i_dspChannel->field_0x074 -= block_samples * mBufCount
- (field_0x0bc * block_samples + mLoopEnd % block_samples);
int sp20 = field_0x0bc * block_samples + mLoopEnd % block_samples;
i_dspChannel->field_0x074 -= block_samples * mBufCount - sp20;
field_0x11c = i_dspChannel->field_0x074;
field_0x12c |= 1;
field_0x0bc += (mLoopEnd - 1) / block_samples - mLoopStart / block_samples + 1;
@@ -438,12 +443,13 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
if (uvar4 != 0) {
uvar4--;
}
uvar5 = uvar4 / sBlockSize;
getBlockSamples();
if (uvar5 != field_0x0b0) {
bool cmp = uvar5 < field_0x0b0;
while (uvar5 != field_0x0b0) {
u32 sp18 = uvar4 / sBlockSize;
u32 sp14 = (mLoopEnd - 1) / getBlockSamples();
if (sp18 != field_0x0b0) {
bool cmp = sp18 < field_0x0b0;
while (sp18 != field_0x0b0) {
if (!sLoadThread->sendCmdMsg(loadToAramTask, this)) {
JUT_WARN(741, "sendCmdMsg Failed %d %d (%d %d)", i_dspChannel->field_0x070, i_channel->field_0x104, sp18, field_0x0b0);
struct_80451261 = true;
break;
}
@@ -491,6 +497,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
}
field_0x0b4 = i_dspChannel->field_0x074 + i_dspChannel->field_0x064;
if (field_0x118 >= field_0x160 - 2) {
JUT_WARN_DEVICE(810, 1, "%s", "buffer under error");
field_0x0ae |= 4;
}
} else {
@@ -507,14 +514,15 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
i_dspChannel->field_0x102 = field_0x128;
}
}
int i = 0;
for (; i < 6; i++) {
if (i_channel == mChannels[i]) {
int ch = 0;
for (; ch < 6; ch++) {
if (i_channel == mChannels[ch]) {
break;
}
}
i_dspChannel->field_0x104 = field_0x130[i];
i_dspChannel->field_0x106 = field_0x13c[i];
JUT_ASSERT(834, ch < CHANNEL_MAX);
i_dspChannel->field_0x104 = (s16)field_0x130[ch];
i_dspChannel->field_0x106 = (s16)field_0x13c[ch];
}
break;
case JASChannel::CB_STOP:
@@ -529,16 +537,16 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
if (!open_channel) {
field_0x114 = 1;
if (!sLoadThread->sendCmdMsg(finishTask, this)) {
JUT_WARN(854, "%s", "sendCmdMsg finishTask Failed");
struct_80451261 = true;
return;
}
}
break;
}
i_channel->mPauseFlag = field_0x0ae != 0;
i_channel->setPauseFlag(field_0x0ae != 0);
}
// NONMATCHING instruction ordering / regalloc
s32 JASAramStream::channelProc() {
OSMessage msg;
while (OSReceiveMessage(&field_0x020, &msg, OS_MESSAGE_NOBLOCK)) {
@@ -562,7 +570,7 @@ s32 JASAramStream::channelProc() {
channelStart();
break;
case 1:
channelStop((u32)msg >> 0x10);
channelStop(JSUHiHalf((u32)msg));
break;
case 2:
field_0x0ae |= 1;
+3
View File
@@ -6,8 +6,11 @@
#include "JSystem/JAudio2/JAUAudioMgr.h"
#include "JSystem/JAudio2/JASHeapCtrl.h"
#include "JSystem/JAudio2/JAUStreamAramMgr.h"
// Here to generate JASHeap::__defctor (ctor generated by default arguments)
void dummyDefCtor() {
JASHeap dummy[20];
JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(NULL, 0) JAUStreamStaticAramMgr_<1>();
streamStaticAramMgr->reserveAram(NULL, 0, 0x14);
}
@@ -28,10 +28,20 @@ template<> class __bitset_base<1> {
public:
__bitset_base() { data = 0; }
bool test(size_t pos) const { return data & (1 << pos); }
bool test(size_t pos) const {
u32 r31 = 1UL << pos;
return data & r31;
}
bool any() const { return data != 0; }
void set(size_t pos, bool val) { data |= (1 << pos); }
void reset(size_t pos) { data &= ~(1 << pos); }
void set(size_t pos, bool val) {
u32 r31 = 1UL << pos;
if (val) {
data |= r31;
} else {
data &= ~r31;
}
}
void reset(size_t pos) { data &= ~(1UL << pos); }
private:
size_t data;
};
+9 -8
View File
@@ -39,19 +39,20 @@ static f32 dummy(f32 x) {
bool cM3d_Len2dSqPntAndSegLine(f32 param_1, f32 param_2, f32 param_3, f32 param_4, f32 p5, f32 p6,
f32* param_7, f32* param_8, f32* param_9) {
bool retVal = false;
f32 param_5 = p5 - param_3;
f32 param_6 = p6 - param_4;
f32 len = param_5 * param_5 + param_6 * param_6;
f32 f31 = p5 - param_3;
f32 f30 = p6 - param_4;
f32 len = f31 * f31 + f30 * f30;
f32 f29;
if (cM3d_IsZero(len)) {
*param_9 = 0.0f;
return retVal;
return false;
} else {
len = (param_5 * (param_1 - param_3) + param_6 * (param_2 - param_4)) / len;
if (len >= 0.0f && len <= 1.0f) {
f29 = (f31 * (param_1 - param_3) + f30 * (param_2 - param_4)) / len;
if (f29 >= 0.0f && f29 <= 1.0f) {
retVal = true;
}
*param_7 = param_3 + param_5 * len;
*param_8 = param_4 + param_6 * len;
*param_7 = param_3 + f31 * f29;
*param_8 = param_4 + f30 * f29;
*param_9 = cM3d_Len2dSq(*param_7, *param_8, param_1, param_2);
return retVal;
}
+7 -1
View File
@@ -24,7 +24,6 @@ Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) {
field_0x519 = false;
}
// NONMATCHING JASPoolAllocObject<_> locations
void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive* seqArc) {
JAU_JASInitializer JASInitializer;
JASInitializer.audioMemSize_ = memSize;
@@ -62,6 +61,10 @@ void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive
categoryArrangement.mItems[8].mMaxInactiveSe = 5;
categoryArrangement.mItems[9].mMaxActiveSe = 8;
categoryArrangement.mItems[9].mMaxInactiveSe = 4;
#if PLATFORM_WII || PLATFORM_SHIELD
categoryArrangement.mItems[10].mMaxInactiveSe = 4;
categoryArrangement.mItems[11].mMaxInactiveSe = 2;
#endif
seMgr->setCategoryArrangement(categoryArrangement);
seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 0);
@@ -74,6 +77,9 @@ void Z2AudioMgr::init(JKRSolidHeap* heap, u32 memSize, void* baaData, JKRArchive
seMgr->getCategory(7)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 0);
seMgr->getCategory(8)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 0);
seMgr->getCategory(9)->getParams()->moveVolume(Z2Param::VOL_SE_ATMOSPHERE_DEFAULT, 0);
#if PLATFORM_WII || PLATFORM_SHIELD
seMgr->getCategory(10)->getParams()->moveVolume(1.0f, 0);
#endif
seMgr->getParams()->moveVolume(1.0f, 0);
+13 -12
View File
@@ -9,6 +9,7 @@
#include "JSystem/J2DGraph/J2DAnmLoader.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_item.h"
@@ -34,6 +35,7 @@
#include "d/actor/d_a_tag_mhint.h"
#include "d/actor/d_a_tag_mmsg.h"
#include "d/actor/d_a_tag_lantern.h"
#include "d/actor/d_a_horse.h"
#include "m_Do/m_Do_controller_pad.h"
#include "d/d_bomb.h"
#include "d/d_meter2_info.h"
@@ -2687,7 +2689,7 @@ cXyz* daAlink_c::getNeckAimPos(cXyz* param_0, int* param_1, int param_2) {
}
}
} else {
field_0x28fc = -1;
field_0x28fc = fpcM_ERROR_PROCESS_ID_e;
field_0x30f8 = 0;
}
}
@@ -4279,12 +4281,12 @@ void daAlink_c::playerInit() {
field_0x2f97 = -1;
for (int i = 0; i < 0x10; i++) {
mShieldArrowIDs[i] = -1;
mShieldArrowIDs[i] = fpcM_ERROR_PROCESS_ID_e;
}
mAtnActorID = -1;
mMsgClassID = -1;
field_0x28f8 = -1;
field_0x28fc = -1;
mAtnActorID = fpcM_ERROR_PROCESS_ID_e;
mMsgClassID = fpcM_ERROR_PROCESS_ID_e;
field_0x28f8 = fpcM_ERROR_PROCESS_ID_e;
field_0x28fc = fpcM_ERROR_PROCESS_ID_e;
field_0x2e54.init(&mLinkAcch, mpHIO->mBasic.m.mWaterSurfaceEffectHeight, field_0x598);
field_0x3108 = shape_angle.y;
@@ -4581,7 +4583,7 @@ int daAlink_c::create() {
field_0x2900 = fopAcM_create(PROC_Obj_IceLeaf, 0x1FFFF, &current.pos,
fopAcM_GetRoomNo(this), &shape_angle, NULL, -1);
} else {
field_0x2900 = -1;
field_0x2900 = fpcM_ERROR_PROCESS_ID_e;
}
}
@@ -4592,7 +4594,7 @@ int daAlink_c::create() {
(startMode == 14 && !dComIfG_Bgsp().ChkMoveBG(mLinkAcch.m_gnd)) ||
(startPoint == -4 &&
!(var_r24 = fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchPortal, &current.pos))) ||
(field_0x2900 != -1 && !fopAcM_SearchByID(field_0x2900)) ||
(field_0x2900 != fpcM_ERROR_PROCESS_ID_e && !fopAcM_SearchByID(field_0x2900)) ||
(checkCanoeStart() && !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCanoe, NULL)) ||
(checkBoarStart() && !fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchBoar, NULL)) ||
(startMode == 13 &&
@@ -4699,7 +4701,7 @@ static int daAlink_Create(fopAc_ac_c* i_this) {
return static_cast<daAlink_c*>(i_this)->create();
}
s32 daAlink_c::setRoomInfo() {
int daAlink_c::setRoomInfo() {
s32 roomID;
if (mProcID != PROC_TW_GATE) {
@@ -15585,9 +15587,8 @@ int daAlink_c::procFrontRollSuccessInit() {
setFrontRollCrashShock(mRollCrashFlg);
onResetFlg0(RFLG0_FRONT_ROLL_CRASH);
} else {
f32 tmp_3 = 3.0f;
mUnderFrameCtrl[0].setFrame(tmp_3);
getNowAnmPackUnder(UNDER_0)->setFrame(tmp_3);
mUnderFrameCtrl[0].setFrame(3.0f);
getNowAnmPackUnder(UNDER_0)->setFrame(3.0f);
}
field_0x3588 = l_halfAtnWaitBaseAnime;
+1 -1
View File
@@ -69,7 +69,7 @@ void daAlink_c::cancelBoomerangLock(fopAc_ac_c* i_actor) {
}
fopAc_ac_c* daAlink_c::getBoomerangActor() {
if (mThrowBoomerangAcKeep.getID() != 0xFFFFFFFF) {
if (mThrowBoomerangAcKeep.getID() != fpcM_ERROR_PROCESS_ID_e) {
return mThrowBoomerangAcKeep.getActor();
}
+3 -3
View File
@@ -31,12 +31,12 @@ static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) {
return 1;
}
s32 daAlink_c::getBottleOpenAppearItem() const {
fpc_ProcID daAlink_c::getBottleOpenAppearItem() const {
if (mProcID == PROC_BOTTLE_OPEN) {
return mEquipItem;
}
return -1;
return fpcM_ERROR_PROCESS_ID_e;
}
BOOL daAlink_c::checkOilBottleItemNotGet(u16 i_itemNo) {
@@ -735,7 +735,7 @@ int daAlink_c::procBottleGetInit(int param_0) {
}
dComIfGp_setPlayerStatus1(0, 0x4001000);
mMsgClassID = -1;
mMsgClassID = fpcM_ERROR_PROCESS_ID_e;
field_0x3194 = 0;
field_0x32cc = var_r30 + 0x65;
+16 -6
View File
@@ -678,12 +678,12 @@ int daAlink_c::procCanoeWait() {
return 1;
}
// NONMATCHING - incorrect code gen related to daAlink_ANM
// NONMATCHING - regalloc, equivalent
int daAlink_c::procCanoeRowInit(int param_0) {
fopAc_ac_c* temp_r26 = mRideAcKeep.getActor();
field_0x3198 = -2;
daAlink_ANM var_r29;
int var_r29;
if (param_0 < 0) {
if (checkInputOnR()) {
s16 sp8 = (s16)(field_0x2fe2 - shape_angle.y);
@@ -722,19 +722,26 @@ int daAlink_c::procCanoeRowInit(int param_0) {
}
if (spC == 1) {
var_r29 = (daAlink_ANM)(var_r28 == 2 ? (int)ANM_CANOE_ROW_RIGHT_BACK : (int)ANM_CANOE_ROW_LEFT_BACK);
if (var_r28 == 2) {
var_r29 = ANM_CANOE_ROW_RIGHT_BACK;
} else {
var_r29 = ANM_CANOE_ROW_LEFT_BACK;
}
if ((var_r29 == ANM_CANOE_ROW_RIGHT_BACK && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT_BACK && mProcVar5.field_0x3012 == 1)) {
return procCanoePaddleShiftInit(var_r29);
}
} else {
var_r29 = (daAlink_ANM)(var_r28 == 2 ? (int)ANM_CANOE_ROW_RIGHT : (int)ANM_CANOE_ROW_LEFT);
if (var_r28 == 2) {
var_r29 = ANM_CANOE_ROW_RIGHT;
} else {
var_r29 = ANM_CANOE_ROW_LEFT;
}
if ((var_r29 == ANM_CANOE_ROW_RIGHT && mProcVar5.field_0x3012 == 0) || (var_r29 == ANM_CANOE_ROW_LEFT && mProcVar5.field_0x3012 == 1)) {
return procCanoePaddleShiftInit(var_r29);
}
}
} else {
if (param_0 == -3) {
if (mProcVar5.field_0x3012 == 1) {
@@ -751,8 +758,11 @@ int daAlink_c::procCanoeRowInit(int param_0) {
var_r29 = ANM_CANOE_ROW_LEFT;
}
}
// Need something here that generates no code in order for debug branches to match.
(void)0;
} else {
var_r29 = (daAlink_ANM)param_0;
var_r29 = param_0;
}
commonProcInit(PROC_CANOE_ROW);
+3 -3
View File
@@ -44,10 +44,10 @@ void daAlink_c::stickArrowIncrement(int param_0) {
s16 arrow_num = 0;
for (int i = 0; i < 16; i++) {
if (mShieldArrowIDs[i] != -1) {
if (mShieldArrowIDs[i] != fpcM_ERROR_PROCESS_ID_e) {
if (field_0x2f7c[i] == 0 || param_0) {
arrow_num++;
mShieldArrowIDs[i] = -1;
mShieldArrowIDs[i] = fpcM_ERROR_PROCESS_ID_e;
field_0x2f7c[i] = 0;
} else {
field_0x2f7c[i]--;
@@ -75,7 +75,7 @@ void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
int arrow_num = 0;
for (; arrow_num < 16; arrow_num++) {
if (mShieldArrowIDs[arrow_num] == -1) {
if (mShieldArrowIDs[arrow_num] == fpcM_ERROR_PROCESS_ID_e) {
mShieldArrowIDs[arrow_num] = new_arrow_id;
field_0x2f7c[arrow_num] = 10;
break;
+1 -1
View File
@@ -1174,7 +1174,7 @@ int daAlink_c::checkNextActionHorse() {
return procHorseWaitInit();
}
// NONMATCHING - regalloc
// NONMATCHING - regalloc, equivalent
BOOL daAlink_c::checkHorseGetOff() {
return (checkHorseRide() && dComIfGp_getHorseActor() != NULL &&
dComIfGp_getHorseActor()->checkGetOff()) ||
+2 -3
View File
@@ -146,7 +146,7 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s
mProcVar0.field_0x3008 = 0;
mProcVar4.field_0x3010 = 0;
mProcVar5.field_0x3012 = 0;
mMsgClassID = -1;
mMsgClassID = fpcM_ERROR_PROCESS_ID_e;
mNormalSpeed = 0.0f;
current.angle.y = shape_angle.y;
field_0x2f98 = 4;
@@ -168,7 +168,6 @@ int daAlink_c::procGrassWhistleWaitInit(int param_0, int param_1, int param_2, s
}
// NONMATCHING - small regalloc
int daAlink_c::procGrassWhistleWait() {
if (mProcVar5.field_0x3012 != 0) {
if (checkEndMessage(field_0x32cc)) {
@@ -189,7 +188,7 @@ int daAlink_c::procGrassWhistleWait() {
mProcVar0.field_0x3008--;
if (mProcVar0.field_0x3008 == 0) {
daHorse_c* horse_p = dComIfGp_getHorseActor();
daHorse_c* horse_p = (daHorse_c*)dComIfGp_getHorseActor();
daNPC_TK_c* tk_p = (daNPC_TK_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchWhistle, NULL);
if (tk_p != NULL) {
+2 -2
View File
@@ -3814,7 +3814,7 @@ static void* daAlink_searchWolfHowl(fopAc_ac_c* i_actor, void* i_data) {
}
void daAlink_c::setWolfHowlNotHappen(int param_0) {
mMsgClassID = -1;
mMsgClassID = fpcM_ERROR_PROCESS_ID_e;
if (field_0x3198 == 0xEE) {
field_0x32cc = 0x532;
@@ -3945,7 +3945,7 @@ int daAlink_c::procWolfHowlDemoInit() {
dCam_getBody()->StartEventCamera(12, fopAcM_GetID(this), 0);
mProcVar1.field_0x300a = 0;
mMsgClassID = -1;
mMsgClassID = fpcM_ERROR_PROCESS_ID_e;
field_0x32cc = 0x5DD;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = -1;
+8 -8
View File
@@ -880,17 +880,17 @@ void daB_DR_c::mHabatakiAnmSet(int param_0) {
}
break;
case ANM_DR_BRAKE_TO_HOVER:
if (mpModelMorf->isStop()) {
if (param_0 != 4) {
goto lbl_805bc4e0; // fakematch?
}
setBck(ANM_DR_FLAP, 2, 3.0f, 1.0f);
if (!mpModelMorf->isStop()) {
break;
}
break;
if (param_0 == 4) {
setBck(ANM_DR_FLAP, 2, 3.0f, 1.0f);
break;
}
/* fallthrough */
default:
lbl_805bc4e0:
setBck(ANM_DR_HOVERING, 2, 3.0f, 1.0f);
/* fallthrough */
case ANM_DR_HOVERING:
if ((int)mpModelMorf->getFrame() >= (int)(mpModelMorf->getEndFrame() - 1.0f) && param_0 == 4) {
setBck(ANM_DR_FLAP, 2, 3.0f, 1.0f);
+8 -2
View File
@@ -658,15 +658,21 @@ void daNpc_Bans_c::reset() {
switch (mType) {
case TYPE_POST_TWILIGHT:
break;
case TYPE_TWILIGHT:
break;
case TYPE_COLIN_KIDNAPPED:
break;
case TYPE_MAKING_BOMBS:
break;
case TYPE_SHOP:
break;
default:
daNpcT_offTmpBit(57); // dSv_event_tmp_flag_c::T_0057 - Kakariko Village (inside) - Barnes bomb shop <purchase>
setAngle(angle);
break;
}
daNpcT_offTmpBit(57); // dSv_event_tmp_flag_c::T_0057 - Kakariko Village (inside) - Barnes bomb shop <purchase>
setAngle(angle);
}
void daNpc_Bans_c::afterJntAnm(int param_1) {
+1 -1
View File
@@ -503,7 +503,7 @@ void daNpcImpal_c::setMotionAnm(int i_idx, f32 i_morf) {
case ANM_10:
case ANM_11:
break;
// Is this a bug from the original developers?
// !@bug Is this a bug from the original developers?
case ANM_12:
iVar5 = 1;
case ANM_2:
+3
View File
@@ -411,8 +411,11 @@ void daNpc_Sha_c::reset() {
switch (mType) {
case 0:
break;
case 1:
break;
default:
break;
}
setAngle(angle);
+4 -1
View File
@@ -366,12 +366,15 @@ void daNpc_Zelda_c::reset() {
acStack_20.setall(0);
acStack_20.y = home.angle.y;
switch (field_0xf80) {
case 0:
break;
default:
setAngle(acStack_20);
break;
}
setAngle(acStack_20);
}
void daNpc_Zelda_c::afterJntAnm(int param_0) {
+2 -6
View File
@@ -496,15 +496,11 @@ u32 daPy_py_c::checkCarryStartLightBallB() {
}
f32 daPy_py_c::getSpinnerRideSpeed() const {
f32 rideSpeed;
if (checkSpinnerRide()) {
rideSpeed = speedF;
return speedF;
} else {
rideSpeed = 0.0f;
return 0.0f;
}
return rideSpeed;
}
bool daPy_py_c::checkSpinnerReflectEffect() {
-1
View File
@@ -56,7 +56,6 @@ static int daScex_Execute(daScex_c* i_this) {
return i_this->execute();
}
// NONMATCHING - regalloc, this matches debug but not retail :/
int daScex_c::execute() {
daPy_py_c* player = daPy_getPlayerActorClass();
cXyz spC;
+14 -7
View File
@@ -221,13 +221,14 @@ int daTagLv7Gate_c::execute() {
// Fakematch
dComIfG_play_c& play = g_dComIfG_gameInfo.getPlay();
if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) {
s32 cut_index = dComIfGp_evmng_getMyStaffId(l_arcName, NULL, 0);
dEvent_manager_c& evtMgr = dComIfGp_getEventManager();
s32 cut_index = evtMgr.getMyStaffId(l_arcName, NULL, 0);
if (cut_index != -1) {
int* cut_name = (int*)play.getEvtManager().getMyNowCutName(cut_index); // Fakematch
int* cut_name = (int*)evtMgr.getMyNowCutName(cut_index); // Fakematch
daPy_getPlayerActorClass()->onShieldBackBone();
if (dComIfGp_evmng_getIsAddvance(cut_index)) {
if (evtMgr.getIsAddvance(cut_index)) {
switch (*cut_name) {
case '0002':
field_0x5b1 = true;
@@ -237,25 +238,31 @@ int daTagLv7Gate_c::execute() {
break;
case '0003':
break;
default:
JUT_ASSERT(455, FALSE);
break;
}
}
switch (*cut_name) {
case '0001':
dComIfGp_evmng_cutEnd(cut_index);
evtMgr.cutEnd(cut_index);
break;
case '0002':
mDoAud_seStartLevel(Z2SE_EN_DR_DEMO_FIRST, &mPos1, 0, 0);
Z2GetAudioMgr()->seStartLevel(Z2SE_EN_DR_DEMO_FIRST, &mPos1, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
if (!field_0x5b1) {
dComIfGp_evmng_cutEnd(cut_index);
evtMgr.cutEnd(cut_index);
}
break;
case '0003':
break;
default:
JUT_ASSERT(477, FALSE);
break;
}
if (eventInfo.checkCommandDemoAccrpt() && mEvtId != -1 &&
dComIfGp_evmng_endCheck(mEvtId)) {
evtMgr.endCheck(mEvtId)) {
// dComIfGp_event_reset();
play.getEvent().reset(); // Fakematch
mEvtId = -1;
+7 -5
View File
@@ -38,13 +38,15 @@ static __d_timer_info_c dComIfG_mTimerInfo;
dComIfG_inf_c g_dComIfG_gameInfo;
void dComIfG_play_c::init() {
for (int i = 0; i < 1; i++) {
mPlayer[i] = NULL;
mPlayerCameraID[i] = -1;
for (int i = 0; i < ARRAY_SIZE(mPlayerInfo); i++) {
mPlayerInfo[i].mpPlayer = NULL;
mPlayerInfo[i].mCameraID = -1;
}
for (int i = 0; i < ARRAY_SIZE(mCameraInfo); i++) {
mCameraInfo[i].mCamera = NULL;
}
mCameraInfo[0].mCamera = NULL;
for (int i = 0; i < 2; i++) {
for (int i = 0; i < ARRAY_SIZE(mPlayerPtr); i++) {
mPlayerPtr[i] = NULL;
}
+1
View File
@@ -571,6 +571,7 @@ BOOL fopEn_enemy_c::initBallModel() {
return true;
}
bool fopEn_enemy_c::checkBallModelDraw() {
return (mFlags & fopEn_flag_Down) && !(mFlags & (fopEn_flag_WolfDownPullEnd | fopEn_flag_WolfDownPull | fopEn_flag_CutDownHit));
}