Various matches and improvements (#299)

* Various matches and improvements

* Remove unnecessary comment
This commit is contained in:
hatal175 2023-02-23 17:41:05 +02:00 committed by GitHub
parent fa1f47f7a1
commit 4df6e8edea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 129 additions and 227 deletions

View File

@ -7,22 +7,22 @@ Section | Percentage | Decompiled (bytes) | Total (bytes)
.init | 97.972973% | 9280 | 9472
.extab | 100.000000% | 96 | 96
.extabindex | 100.000000% | 96 | 96
.text | 24.679693% | 887616 | 3596544
.text | 24.689257% | 887960 | 3596544
.ctors | 100.000000% | 448 | 448
.dtors | 100.000000% | 32 | 32
.rodata | 100.000000% | 193856 | 193856
.data | 100.000000% | 197632 | 197632
.sdata | 100.000000% | 1408 | 1408
.sdata2 | 100.000000% | 20832 | 20832
Total | 32.620219% | 1311552 | 4020672
Total | 32.628774% | 1311896 | 4020672
## Total
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 32.620219% | 1311552 | 4020672
main.dol | 32.628774% | 1311896 | 4020672
RELs | 33.287306% | 3828148 | 11500324
Total | 33.114499% | 5139700 | 15520996
Total | 33.116715% | 5140044 | 15520996
## RELs

View File

@ -1,48 +0,0 @@
lbl_80268BB4:
/* 80268BB4 C0 44 00 0C */ lfs f2, 0xc(r4)
/* 80268BB8 C0 64 00 00 */ lfs f3, 0(r4)
/* 80268BBC C0 23 00 00 */ lfs f1, 0(r3)
/* 80268BC0 EC 03 10 2A */ fadds f0, f3, f2
/* 80268BC4 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80268BC8 40 81 00 0C */ ble lbl_80268BD4
/* 80268BCC 38 60 00 00 */ li r3, 0
/* 80268BD0 4E 80 00 20 */ blr
lbl_80268BD4:
/* 80268BD4 C0 23 00 0C */ lfs f1, 0xc(r3)
/* 80268BD8 EC 03 10 28 */ fsubs f0, f3, f2
/* 80268BDC FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80268BE0 40 80 00 0C */ bge lbl_80268BEC
/* 80268BE4 38 60 00 00 */ li r3, 0
/* 80268BE8 4E 80 00 20 */ blr
lbl_80268BEC:
/* 80268BEC C0 64 00 08 */ lfs f3, 8(r4)
/* 80268BF0 C0 23 00 08 */ lfs f1, 8(r3)
/* 80268BF4 EC 03 10 2A */ fadds f0, f3, f2
/* 80268BF8 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80268BFC 40 81 00 0C */ ble lbl_80268C08
/* 80268C00 38 60 00 00 */ li r3, 0
/* 80268C04 4E 80 00 20 */ blr
lbl_80268C08:
/* 80268C08 C0 23 00 14 */ lfs f1, 0x14(r3)
/* 80268C0C EC 03 10 28 */ fsubs f0, f3, f2
/* 80268C10 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80268C14 40 80 00 0C */ bge lbl_80268C20
/* 80268C18 38 60 00 00 */ li r3, 0
/* 80268C1C 4E 80 00 20 */ blr
lbl_80268C20:
/* 80268C20 C0 64 00 04 */ lfs f3, 4(r4)
/* 80268C24 C0 23 00 04 */ lfs f1, 4(r3)
/* 80268C28 EC 03 10 2A */ fadds f0, f3, f2
/* 80268C2C FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80268C30 40 81 00 0C */ ble lbl_80268C3C
/* 80268C34 38 60 00 00 */ li r3, 0
/* 80268C38 4E 80 00 20 */ blr
lbl_80268C3C:
/* 80268C3C C0 23 00 10 */ lfs f1, 0x10(r3)
/* 80268C40 EC 03 10 28 */ fsubs f0, f3, f2
/* 80268C44 FC 01 00 40 */ fcmpo cr0, f1, f0
/* 80268C48 7C 00 00 26 */ mfcr r0
/* 80268C4C 54 00 0F FE */ srwi r0, r0, 0x1f
/* 80268C50 7C 00 00 34 */ cntlzw r0, r0
/* 80268C54 54 03 D9 7E */ srwi r3, r0, 5
/* 80268C58 4E 80 00 20 */ blr

View File

@ -1,29 +0,0 @@
lbl_802B6840:
/* 802B6840 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802B6844 90 6D 86 00 */ stw r3, __OSReport_disable-0x18(r13)
/* 802B6848 38 00 FF FF */ li r0, -1
/* 802B684C 90 03 00 04 */ stw r0, 4(r3)
/* 802B6850 90 01 00 08 */ stw r0, 8(r1)
/* 802B6854 90 03 00 00 */ stw r0, 0(r3)
/* 802B6858 98 03 00 0C */ stb r0, 0xc(r3)
/* 802B685C 38 00 00 00 */ li r0, 0
/* 802B6860 98 03 00 0D */ stb r0, 0xd(r3)
/* 802B6864 98 03 00 0E */ stb r0, 0xe(r3)
/* 802B6868 98 03 00 0F */ stb r0, 0xf(r3)
/* 802B686C 98 03 00 10 */ stb r0, 0x10(r3)
/* 802B6870 98 03 00 11 */ stb r0, 0x11(r3)
/* 802B6874 98 03 00 12 */ stb r0, 0x12(r3)
/* 802B6878 98 03 00 13 */ stb r0, 0x13(r3)
/* 802B687C 98 03 00 14 */ stb r0, 0x14(r3)
/* 802B6880 98 03 00 15 */ stb r0, 0x15(r3)
/* 802B6884 98 03 00 16 */ stb r0, 0x16(r3)
/* 802B6888 98 03 00 18 */ stb r0, 0x18(r3)
/* 802B688C 98 03 00 19 */ stb r0, 0x19(r3)
/* 802B6890 98 03 00 1A */ stb r0, 0x1a(r3)
/* 802B6894 98 03 00 1B */ stb r0, 0x1b(r3)
/* 802B6898 98 03 00 1D */ stb r0, 0x1d(r3)
/* 802B689C 98 03 00 1C */ stb r0, 0x1c(r3)
/* 802B68A0 98 03 00 1E */ stb r0, 0x1e(r3)
/* 802B68A4 98 03 00 17 */ stb r0, 0x17(r3)
/* 802B68A8 38 21 00 10 */ addi r1, r1, 0x10
/* 802B68AC 4E 80 00 20 */ blr

View File

@ -1,5 +0,0 @@
lbl_802B9968:
/* 802B9968 88 03 00 D0 */ lbz r0, 0xd0(r3)
/* 802B996C 50 80 17 7A */ rlwimi r0, r4, 2, 0x1d, 0x1d
/* 802B9970 98 03 00 D0 */ stb r0, 0xd0(r3)
/* 802B9974 4E 80 00 20 */ blr

View File

@ -1,14 +0,0 @@
lbl_802B68B0:
/* 802B68B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 802B68B4 7C 08 02 A6 */ mflr r0
/* 802B68B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 802B68BC 98 83 00 1E */ stb r4, 0x1e(r3)
/* 802B68C0 54 80 06 3F */ clrlwi. r0, r4, 0x18
/* 802B68C4 40 82 00 0C */ bne lbl_802B68D0
/* 802B68C8 80 6D 85 E0 */ lwz r3, __OSReport_disable-0x38(r13)
/* 802B68CC 4B FF 3B 65 */ bl resetFilterAll__10Z2SoundMgrFv
lbl_802B68D0:
/* 802B68D0 80 01 00 14 */ lwz r0, 0x14(r1)
/* 802B68D4 7C 08 03 A6 */ mtlr r0
/* 802B68D8 38 21 00 10 */ addi r1, r1, 0x10
/* 802B68DC 4E 80 00 20 */ blr

View File

@ -90,6 +90,10 @@ public:
field_0x44.move(1.0f, count);
}
void bgmAllMute(u32 count, f32 val) {
mAllBgmMaster.mTransition.set(val, mAllBgmMaster.mIntensity, count);
}
private:
/* 0x00 */ JAISoundHandle mMainBgmHandle;
/* 0x04 */ JAISoundHandle mSubBgmHandle;

View File

@ -314,35 +314,31 @@ bool cM3d_Cross_AabCyl(const cM3dGAab* pAab, const cM3dGCyl* pCyl) {
/* 80268BB4-80268C5C 2634F4 00A8+00 0/0 2/2 0/0 .text cM3d_Cross_AabSph__FPC8cM3dGAabPC8cM3dGSph
*/
#ifdef NONMATCHING
bool cM3d_Cross_AabSph(const cM3dGAab* pAab, const cM3dGSph* pSph) {
f32 radius = pSph->GetR();
if (pAab->GetMinX() > pSph->GetC().x + radius) { // addition registers are flipped
f32 cx = pSph->GetC().x;
if (pAab->GetMinX() > cx + radius) {
return false;
} else if (pAab->GetMaxX() < pSph->GetC().x - radius) {
return false;
} else if (pAab->GetMinZ() > pSph->GetC().z + radius) {
return false;
} else if (pAab->GetMaxZ() < pSph->GetC().z - radius) {
return false;
} else if (pAab->GetMinY() > pSph->GetC().y + radius) {
return false;
} else if (pAab->GetMaxY() < pSph->GetC().y - radius) {
return false;
} else {
return true;
}
else if (pAab->GetMaxX() < cx - radius) {
return false;
}
f32 cz = pSph->GetC().z;
if (pAab->GetMinZ() > cz + radius) {
return false;
} else if (pAab->GetMaxZ() < cz - radius) {
return false;
}
f32 cy = pSph->GetC().y;
if (pAab->GetMinY() > cy + radius) {
return false;
} else if (pAab->GetMaxY() < cy - radius) {
return false;
}
return true;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool cM3d_Cross_AabSph(cM3dGAab const* param_0, cM3dGSph const* param_1) {
nofralloc
#include "asm/SSystem/SComponent/c_m3d/cM3d_Cross_AabSph__FPC8cM3dGAabPC8cM3dGSph.s"
}
#pragma pop
#endif
/* 80268C5C-80268ED4 26359C 0278+00 3/3 0/0 0/0 .text
* cM3d_Check_LinLin__FPC8cM3dGLinPC8cM3dGLinPfPf */

View File

@ -6,6 +6,8 @@
#include "Z2AudioLib/Z2SceneMgr.h"
#include "Z2AudioLib/Z2SoundMgr.h"
#include "Z2AudioLib/Z2SeqMgr.h"
#include "Z2AudioLib/Z2SeMgr.h"
#include "Z2AudioLib/Z2StatusMgr.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@ -29,25 +31,12 @@ struct dSv_event_c {
/* 800349BC */ void isEventBit(u16) const;
};
struct Z2StatusMgr {
/* 802B617C */ void menuOut();
/* 802B61E8 */ void setDemoName(char*);
/* 802B6734 */ void checkDayTime();
};
struct Z2SoundObjMgr {
/* 802BF980 */ void setForceBattleArea(bool, u16, u16, u16);
/* 802BFFEC */ void setGhostEnemyState(u8);
/* 802C013C */ void deleteEnemyAll();
};
struct Z2SeMgr {
/* 802AB80C */ void resetModY();
/* 802AD94C */ void seStopAll(u32);
/* 802AD9F4 */ void seMoveVolumeAll(f32, u32);
/* 802B9AC4 */ void resetCrowdSize();
};
struct Z2FxLineMgr {
/* 802BAEB8 */ void setSceneFx(s32);
};
@ -172,12 +161,10 @@ extern "C" extern u8 __OSReport_disable;
//
/* 802B6840-802B68B0 2B1180 0070+00 0/0 1/1 0/0 .text __ct__10Z2SceneMgrFv */
// Missing 2 instructions (beginning and end)
#ifdef NONMATCHING
Z2SceneMgr::Z2SceneMgr(void) {
data_80450B80 = this;
Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance<Z2SceneMgr>(this) {
volatile int timerx;
sceneNum = -1;
timer = -1;
timerx = -1;
BGM_ID = -1;
roomNum = -1;
SeWave_1 = 0;
@ -198,28 +185,15 @@ Z2SceneMgr::Z2SceneMgr(void) {
inGame = 0;
inDarkness = false;
field_0x17 = 0;
return;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2SceneMgr::Z2SceneMgr() {
nofralloc
#include "asm/Z2AudioLib/Z2SceneMgr/__ct__10Z2SceneMgrFv.s"
}
#pragma pop
#endif
/* 802B68B0-802B68E0 2B11F0 0030+00 0/0 1/1 0/0 .text setInDarkness__10Z2SceneMgrFb */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SceneMgr::setInDarkness(bool param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SceneMgr/setInDarkness__10Z2SceneMgrFb.s"
void Z2SceneMgr::setInDarkness(bool param_0) {
inDarkness = param_0;
if (!param_0) {
Z2SoundMgr::getInstance()->resetFilterAll();
}
}
#pragma pop
/* ############################################################################################## */
/* 80455A38-80455A3C 004038 0004+00 8/8 0/0 0/0 .sdata2 @3511 */
@ -278,6 +252,16 @@ SECTION_SDATA2 static f32 lit_3529[1 + 1 /* padding */] = {
SECTION_SDATA2 static f64 lit_3531 = 4503599627370496.0 /* cast u32 to float */;
/* 802B697C-802B6A18 2B12BC 009C+00 0/0 1/1 0/0 .text setFadeOutStart__10Z2SceneMgrFUc */
#ifdef NONMATCHING
void Z2SceneMgr::setFadeOutStart(u8 param_0) {
setSceneExist(false);
Z2SeqMgr::getInstance()->bgmAllMute(33, 3.0f / 10.0f);
Z2SeMgr::getInstance()->seMoveVolumeAll(FLOAT_LABEL(lit_3511), 33);
Z2SeqMgr::getInstance()->setBattleBgmOff(true);
field_0x17 = 40;
timer = -1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -286,8 +270,31 @@ asm void Z2SceneMgr::setFadeOutStart(u8 param_0) {
#include "asm/Z2AudioLib/Z2SceneMgr/setFadeOutStart__10Z2SceneMgrFUc.s"
}
#pragma pop
#endif
/* 802B6A18-802B6AF8 2B1358 00E0+00 0/0 1/1 0/0 .text setFadeInStart__10Z2SceneMgrFUc */
#ifdef NONMATCHING
void Z2SceneMgr::setFadeInStart(u8 param_0) {
if (SeWave_3 == 0x7f) {
Z2SeMgr::getInstance()->seMoveVolumeAll(FLOAT_LABEL(lit_3511), 0);
} else {
Z2SeMgr::getInstance()->seMoveVolumeAll(FLOAT_LABEL(lit_3512), 33);
if (SeWave_3 == 0x85) {
JAISeMgr* seMgr = Z2SoundMgr::getInstance()->getSeMgr();
seMgr->getCategory(9)->getParams()->moveVolume(FLOAT_LABEL(lit_3511), 0);
}
}
Z2SeqMgr::getInstance()->i_setTwilightGateVol(FLOAT_LABEL(lit_3512));
Z2StatusMgr::getInstance()->menuOut();
if (field_0x1a == 0) {
Z2SeqMgr::getInstance()->bgmAllMute(33, 3.0f / 10.0f);
}
inGame = true;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@ -296,6 +303,7 @@ asm void Z2SceneMgr::setFadeInStart(u8 param_0) {
#include "asm/Z2AudioLib/Z2SceneMgr/setFadeInStart__10Z2SceneMgrFUc.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 8039BFA8-8039BFA8 028608 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@ -712,21 +720,9 @@ extern "C" void __ct__10JAISoundIDFRC10JAISoundID(JAISoundID* this_, JAISoundID
}
/* 802B9968-802B9978 2B42A8 0010+00 1/1 0/0 0/0 .text setFieldBgmPlay__8Z2SeqMgrFb */
// 1 Instruction off
#ifdef NONMATCHING
void Z2SeqMgr::setFieldBgmPlay(bool param_1) {
mFlags = (param_1 & 1U) << 2 | mFlags & 0xfb;
mFlags = (param_1 & 1U) << 2 | (mFlags & ~4);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SeqMgr::setFieldBgmPlay(bool param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SceneMgr/setFieldBgmPlay__8Z2SeqMgrFb.s"
}
#pragma pop
#endif
/* 802B9978-802B9988 2B42B8 0010+00 1/1 0/0 0/0 .text isActive__12JAIStreamMgrCFv */
#pragma push

View File

@ -49,40 +49,60 @@ s32 mDoMemCdRWm_Store(CARDFileInfo* file, void* data, u32 length) {
mDoMemCdRWm_BuildHeader((mDoMemCdRWm_HeaderData*)sTmpBuf);
s32 card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf), 0);
if (card_state != CARD_ERROR_READY) {
if (!mDoMemCdRWm_CheckCardStat(file)) {
memset(sTmpBuf, 0, sizeof(sTmpBuf));
if (card_state != CARD_RESULT_READY) {
return card_state;
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state == CARD_ERROR_READY) {
return;
}
if (!mDoMemCdRWm_CheckCardStat(file)) {
memset(sTmpBuf, 0, sizeof(sTmpBuf));
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state == CARD_ERROR_READY) {
return;
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
memset(sTmpBuf, 0, sizeof(sTmpBuf));
*(int*)(sTmpBuf + 4) = 6;
memcpy(sTmpBuf + 8, data, length);
*(int*)(sTmpBuf) = 0;
u32 checksum = mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC);
*(u32*)(sTmpBuf + 0x1FFC) = checksum;
if (CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000) == CARD_ERROR_READY &&
CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000) == CARD_ERROR_READY) {
if (checksum == mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
if (CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000) == CARD_ERROR_READY &&
CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000) == CARD_ERROR_READY) {
if (checksum == mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
mDoMemCdRWm_SetCardStat(file);
}
}
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
}
memset(sTmpBuf, 0, sizeof(sTmpBuf));
*(int*)(sTmpBuf + 4) = 6;
memcpy(sTmpBuf + 8, data, length);
*(int*)(sTmpBuf) = 0;
u32 checksum = mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC);
*(u32*)(sTmpBuf + 0x1FFC) = checksum;
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
card_state = CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x4000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
if (checksum != mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
return card_state;
}
card_state = CARDWrite(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
card_state = CARDRead(file, sTmpBuf, sizeof(sTmpBuf) / 2, 0x6000);
if (card_state != CARD_RESULT_READY) {
return card_state;
}
if (checksum != mDoMemCdRWm_CalcCheckSum(sTmpBuf, 0x1FFC)) {
return card_state;
}
mDoMemCdRWm_SetCardStat(file);
return card_state;
}
#else
#pragma push

View File

@ -406,6 +406,7 @@ SECTION_SDATA2 static f32 lit_3941 = 6.0f;
/* 8000B95C-8000BCF4 00629C 0398+00 1/1 0/0 0/0 .text fault_callback_scroll__FUsP9OSContextUlUl */
#ifdef NONMATCHING
// Everything matches but there are issues with dead section
static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
JUTException* manager = JUTException::getManager();
JUTConsole* exConsole = manager->getConsole();
@ -469,34 +470,12 @@ static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
}
if (btnHold == CButton::DPAD_UP) {
int scrollAmnt;
if (holdUpCount < 3) {
scrollAmnt = -1;
} else if (holdUpCount < 5) {
scrollAmnt = -2;
} else {
scrollAmnt = -8;
if (holdUpCount < 7) {
scrollAmnt = -4;
}
}
exConsole->scroll(scrollAmnt);
exConsole->scroll(holdUpCount < 3 ? -1 : (holdUpCount < 5 ? -2 : (holdUpCount < 7 ? -4 : -8)));
waitRetrace = true;
holdDownCount = 0;
holdUpCount++;
} else if (btnHold == CButton::DPAD_DOWN) {
int scrollAmnt;
if (holdDownCount < 3) {
scrollAmnt = 1;
} else if (holdDownCount < 5) {
scrollAmnt = 2;
} else {
scrollAmnt = 8;
if (holdDownCount < 7) {
scrollAmnt = 4;
}
}
exConsole->scroll(scrollAmnt);
exConsole->scroll(holdDownCount < 3 ? 1 : (holdDownCount < 5 ? 2 : (holdDownCount < 7 ? 4 : 8)));
waitRetrace = true;
holdUpCount = 0;
holdDownCount++;
@ -537,8 +516,11 @@ static void fault_callback_scroll(u16, OSContext* p_context, u32, u32) {
}
JUTException::waitTime(3000);
} while ((exConsole->getUsedLine() - exConsole->getHeight()) + 1 <=
exConsole->getLineOffset());
if ((exConsole->getUsedLine() - exConsole->getHeight()) + 1 <=
exConsole->getLineOffset()) {
break;
}
} while (true);
} while (true);
}
#else