mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-10 18:46:45 -04:00
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:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
@@ -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, ¤t.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, ¤t.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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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()) ||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -411,8 +411,11 @@ void daNpc_Sha_c::reset() {
|
||||
|
||||
switch (mType) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
setAngle(angle);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user