diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h index 892a606f8..5a7293b07 100644 --- a/include/m_Do/m_Do_audio.h +++ b/include/m_Do/m_Do_audio.h @@ -68,8 +68,8 @@ inline void mDoAud_bgmStreamPlay() { mDoAud_zelAudio_c::getInterface()->bgmStreamPlay(); } -inline void mDoAud_bgmStop(u32 param_0) { - mDoAud_zelAudio_c::getInterface()->bgmStop(param_0, 0); +inline void mDoAud_bgmStop(u32 i_fadeTime) { + mDoAud_zelAudio_c::getInterface()->bgmStop(i_fadeTime, 0); } inline void mDoAud_bgmAllMute(u32 param_0) { diff --git a/include/m_Do/m_Do_mtx.h b/include/m_Do/m_Do_mtx.h index 09a4329c5..16421009e 100644 --- a/include/m_Do/m_Do_mtx.h +++ b/include/m_Do/m_Do_mtx.h @@ -161,7 +161,7 @@ public: * Translates the `now` Matrix by the given cXyz * @param xyz The xyz translation vector */ - static inline void transS(cXyz const& xyz) { MTXTrans(now, xyz.x, xyz.y, xyz.z); } + static inline void transS(cXyz const& xyz) { transS(xyz.x, xyz.y, xyz.z); } /** * Translates a new Matrix by the given cXyz and then concatenates it with the `now` matrix diff --git a/src/JAZelAudio/JAIZelAnime.cpp b/src/JAZelAudio/JAIZelAnime.cpp index c93f40658..64c1cbfed 100644 --- a/src/JAZelAudio/JAIZelAnime.cpp +++ b/src/JAZelAudio/JAIZelAnime.cpp @@ -5,10 +5,18 @@ #include "JAZelAudio/JAIZelAnime.h" #include "dolphin/types.h" +#include "m_Do/m_Do_audio.h" /* 802AC830-802AC888 .text setAnimSound__11JAIZelAnimeFP3VecffUlSc */ void JAIZelAnime::setAnimSound(Vec* pos, f32 frame, f32 rate, u32 mtrlSndId, s8 reverb) { - /* Nonmatching */ + u32 r6 = (mtrlSndId & 0x00FFFFFF) + (reverb << 24); + if (rate == 0.0f) { + return; + } + if (rate < 0.0f) { + rate *= -1.0f; + } + setAnimSoundVec(mDoAud_zelAudio_c::getInterface(), pos, frame, rate, r6, 0); } /* 802AC888-802ACD34 .text startAnimSound__11JAIZelAnimeFPvUlPP8JAISoundPQ27JAInter5ActorUc */ diff --git a/src/JAZelAudio/JAIZelBasic.cpp b/src/JAZelAudio/JAIZelBasic.cpp index 7667d7683..29e9de2fc 100644 --- a/src/JAZelAudio/JAIZelBasic.cpp +++ b/src/JAZelAudio/JAIZelBasic.cpp @@ -304,23 +304,23 @@ void JAIZelBasic::bgmStart(u32, u32, s32) { } /* 802A4658-802A4770 .text bgmStop__11JAIZelBasicFUll */ -void JAIZelBasic::bgmStop(u32 param_1, s32 param_2) { +void JAIZelBasic::bgmStop(u32 i_fadeTime, s32 param_2) { if (mMainBgmNum != JA_BGM_GOMA && mMainBgmNum != JA_BGM_GOMA_2) { mSomeSpecialBGMFlag = 0; } if (mpMainBgmSound) { - mpMainBgmSound->stop(param_1); + mpMainBgmSound->stop(i_fadeTime); } mpMainBgmSound = NULL; mMainBgmNum = -1; if (mpStreamBgmSound) { - mpStreamBgmSound->stop(param_1); + mpStreamBgmSound->stop(i_fadeTime); } mpStreamBgmSound = NULL; mStreamBgmNum = -1; if (param_2 == 0) { if (mpSubBgmSound) { - mpSubBgmSound->stop(param_1); + mpSubBgmSound->stop(i_fadeTime); mpSubBgmSound = NULL; } mSubBgmNum = -1; @@ -328,7 +328,7 @@ void JAIZelBasic::bgmStop(u32 param_1, s32 param_2) { field_0x00bb = 0; field_0x0206 = 0; } - demoBgmStop(param_1); + demoBgmStop(i_fadeTime); field_0x1f3c = 0; field_0x0201 = 0; mLastMinibossSubBGMType = 0; diff --git a/src/JSystem/JAudio/JAIBasic.cpp b/src/JSystem/JAudio/JAIBasic.cpp index 8ec816081..9c90098a6 100644 --- a/src/JSystem/JAudio/JAIBasic.cpp +++ b/src/JSystem/JAudio/JAIBasic.cpp @@ -228,7 +228,7 @@ void JAIBasic::startSoundBasic(u32, JAISound**, JAInter::Actor*, u32, u8, void*) } /* 80290708-802907E0 .text stopSoundHandle__8JAIBasicFP8JAISoundUl */ -void JAIBasic::stopSoundHandle(JAISound*, u32) { +void JAIBasic::stopSoundHandle(JAISound*, u32 fadeTime) { /* Nonmatching */ } diff --git a/src/JSystem/JAudio/JAISequenceMgr.cpp b/src/JSystem/JAudio/JAISequenceMgr.cpp index 509ff6c80..55374c679 100644 --- a/src/JSystem/JAudio/JAISequenceMgr.cpp +++ b/src/JSystem/JAudio/JAISequenceMgr.cpp @@ -186,7 +186,7 @@ void JAInter::SequenceMgr::storeSeqBuffer(JAISound**, JAInter::Actor*, u32, u32, } /* 80298208-802982C0 .text releaseSeqBuffer__Q27JAInter11SequenceMgrFP8JAISoundUl */ -void JAInter::SequenceMgr::releaseSeqBuffer(JAISound*, u32) { +void JAInter::SequenceMgr::releaseSeqBuffer(JAISound*, u32 fadeTime) { /* Nonmatching */ } diff --git a/src/JSystem/JAudio/JAISound.cpp b/src/JSystem/JAudio/JAISound.cpp index 24ac72072..b0db0d1b8 100644 --- a/src/JSystem/JAudio/JAISound.cpp +++ b/src/JSystem/JAudio/JAISound.cpp @@ -55,8 +55,8 @@ void JAISound::start(u32 param_1) { } /* 80298688-802986B8 .text stop__8JAISoundFUl */ -void JAISound::stop(u32 param_1) { - JAIBasic::msBasic->stopSoundHandle(this, param_1); +void JAISound::stop(u32 fadeTime) { + JAIBasic::msBasic->stopSoundHandle(this, fadeTime); } /* 802986B8-8029878C .text setVolume__8JAISoundFfUlUc */ diff --git a/src/JSystem/JUtility/JUTException.cpp b/src/JSystem/JUtility/JUTException.cpp index b8edb0598..968de1dc2 100644 --- a/src/JSystem/JUtility/JUTException.cpp +++ b/src/JSystem/JUtility/JUTException.cpp @@ -264,7 +264,7 @@ bool JUTException::searchPartialModule(u32 address, u32* module_id, u32* section return false; } - OSModuleInfo* module = *(OSModuleInfo**)0x800030C8; + OSModuleInfo* module = __OSModuleList.head; for (; module != NULL; module = (OSModuleInfo*)module->link.next) { OSSectionInfo* section = (OSSectionInfo*)module->sectionInfoOffset; for (u32 i = 0; i < module->numSections; section++, i++) { diff --git a/src/d/actor/d_a_bg.cpp b/src/d/actor/d_a_bg.cpp index 3f95640c7..5aaa93c38 100644 --- a/src/d/actor/d_a_bg.cpp +++ b/src/d/actor/d_a_bg.cpp @@ -67,6 +67,8 @@ BOOL daBg_btkAnm_c::create(J3DModelData* modelData, J3DAnmTextureSRTKey* anmData void daBg_btkAnm_c::entry(J3DModelData* modelData) { anm->entry(modelData, 0.0f); + // Bg model material names that start with the prefix "SC_01" trigger special BTK animation behavior. + // These BTK animations will animate in sync with the global wave timer, as controlled by a SOND entry. const char * name = anm->getBtkAnm()->getUpdateMaterialName()->getName(0); if (name[0] == 'S' && name[1] == 'C' && name[2] == '_' && name[3] == '0' && name[4] == '1') special = 1; diff --git a/src/d/actor/d_a_npc_ji1.cpp b/src/d/actor/d_a_npc_ji1.cpp index 9bb953895..3f15dbf6b 100644 --- a/src/d/actor/d_a_npc_ji1.cpp +++ b/src/d/actor/d_a_npc_ji1.cpp @@ -769,7 +769,7 @@ BOOL daNpc_Ji1_c::kaitenAction(void*) { if(field_0x2AC == 0x967) { field_0xD70 = -1; fopAcM_seStart(this, JA_SE_VS_JI_OPENING, 0); - mDoAud_bgmStop(0x0000002D); + mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::plmoveAction, 0); } @@ -1072,7 +1072,7 @@ BOOL daNpc_Ji1_c::talkAction(void*) { if(field_0x2AC == 0x98A) { field_0xD70 = -1; fopAcM_seStart(this, JA_SE_VS_JI_OPENING, 0); - mDoAud_bgmStop(0x0000002D); + mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::plmoveAction, 0); } @@ -1088,7 +1088,7 @@ BOOL daNpc_Ji1_c::talkAction(void*) { field_0xD70 = -1; fopAcM_seStart(this, JA_SE_VS_JI_OPENING, 0); - mDoAud_bgmStop(0x0000002D); + mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::plmoveAction, 0); } @@ -1558,10 +1558,10 @@ u32 daNpc_Ji1_c::evn_sound_proc_init(int staffIdx) { if(data) { switch(*data) { case 0: - mDoAud_bgmStop(0x0000002D); + mDoAud_bgmStop(45); break; case 1: - mDoAud_bgmStart(0x80000018); + mDoAud_bgmStart(JA_BGM_HOUSE_G); break; case 2: fopAcM_seStart(this, JA_SE_VS_JI_ENDING, 0); @@ -1975,7 +1975,7 @@ BOOL daNpc_Ji1_c::endspeakAction(void*) { } else if(l_msg->mStatus == fopMsgStts_BOX_CLOSED_e) { l_msg->mStatus = fopMsgStts_MSG_DESTROYED_e; - mDoAud_bgmStop(0x2D); + mDoAud_bgmStop(45); setAction(&daNpc_Ji1_c::reiAction, 0); } } diff --git a/src/d/actor/d_a_obj_mknjd.cpp b/src/d/actor/d_a_obj_mknjd.cpp index f74746eb7..067482480 100644 --- a/src/d/actor/d_a_obj_mknjd.cpp +++ b/src/d/actor/d_a_obj_mknjd.cpp @@ -798,7 +798,7 @@ int daObjMknjD::Act_c::Execute(Mtx** i_mtx) { if (eventInfo.checkCommandDemoAccrpt()) { m043F = 7; - mDoAud_bgmStop(0x1E); + mDoAud_bgmStop(30); mDoAud_taktModeMuteOff(); dComIfGp_getAttention().mFlags |= 0x80000000; diff --git a/src/d/d_s_menu.cpp b/src/d/d_s_menu.cpp index d07a6cf76..d35860e58 100644 --- a/src/d/d_s_menu.cpp +++ b/src/d/d_s_menu.cpp @@ -146,7 +146,7 @@ static BOOL dScnMenu_Execute(menu_of_scene_class* i_this) { dComIfGp_setNextStage(room->stageName, startCode, room->roomNo, room->layerNo); if (strcmp(dComIfGp_getNextStageName(), "ENDING") == 0) { fopScnM_ChangeReq(i_this, PROC_ENDING_SCENE, PROC_OVERLAP0, 5); - mDoAud_bgmStop(0x1E); + mDoAud_bgmStop(30); } else { fopScnM_ChangeReq(i_this, PROC_PLAY_SCENE, PROC_OVERLAP0, 5); dComIfGs_setRestartRoomParam(0); diff --git a/src/m_Do/m_Do_machine.cpp b/src/m_Do/m_Do_machine.cpp index 2cfd83125..1085d859b 100644 --- a/src/m_Do/m_Do_machine.cpp +++ b/src/m_Do/m_Do_machine.cpp @@ -21,7 +21,7 @@ #include "dolphin/gx/GXStruct.h" #include "dolphin/vi/vi.h" #include "m_Do/m_Do_DVDError.h" -#include "m_do/m_Do_MemCard.h" +#include "m_Do/m_Do_MemCard.h" #include "m_Do/m_Do_dvd_thread.h" #include "m_Do/m_Do_ext.h" #include "m_Do/m_Do_machine_exception.h" diff --git a/src/m_Do/m_Do_printf.cpp b/src/m_Do/m_Do_printf.cpp index 411e17572..5b4ba3516 100644 --- a/src/m_Do/m_Do_printf.cpp +++ b/src/m_Do/m_Do_printf.cpp @@ -44,7 +44,7 @@ extern "C" int search_partial_address(void* address, int* module_id, int* sectio if (address == NULL) return 0xFFFFFFFF; - OSModuleInfo* module = *(OSModuleInfo**)0x800030C8; + OSModuleInfo* module = __OSModuleList.head; for (; module != NULL; module = (OSModuleInfo*)module->link.next) { u32 i, addr; OSSectionInfo* section = (OSSectionInfo*)module->sectionInfoOffset;