move / fix bunch of stuff (#133)

* fix some class structures / d_event wip

* d_event wip

* move gamepad stuff

* move m_Do_main

* move d_bomb / partial m_Do_reset

* format

* remove asm

* add Z2SoundID enum

* move some Z2 classes

* fix

* move more Z2 stuff

* fix fopAc_ac_c more
This commit is contained in:
TakaRikka
2021-06-12 18:22:36 -04:00
committed by GitHub
parent 5be309a186
commit 4448c08ac0
132 changed files with 6755 additions and 3217 deletions
+1 -61
View File
@@ -11,22 +11,11 @@
// Types:
//
struct Z2StatusMgr {
/* 802B5F1C */ Z2StatusMgr();
/* 802B5F7C */ void processHeartGaugeSound();
/* 802B617C */ void menuOut();
/* 802B671C */ void processTime();
};
struct Z2SpeechMgr2 {
/* 802CBC60 */ Z2SpeechMgr2();
/* 802CC9D0 */ void framework();
};
struct Z2SoundStarter {
/* 802AAB94 */ Z2SoundStarter(bool);
};
struct Z2SoundObjMgr {
/* 802BF920 */ Z2SoundObjMgr();
};
@@ -38,22 +27,6 @@ struct Z2SoundMgr {
/* 802AA908 */ void initParams();
};
struct Z2SeqMgr {
/* 802AEEA0 */ Z2SeqMgr();
/* 802B33A8 */ void processBgmFramework();
};
struct Z2SeMgr {
/* 802AB64C */ Z2SeMgr();
/* 802AB750 */ void initSe();
/* 802AE184 */ void processSeFramework();
};
struct Z2SceneMgr {
/* 802B6840 */ Z2SceneMgr();
/* 802B9C50 */ void framework();
};
struct Z2Param {
static f32 VOL_BGM_DEFAULT;
static f32 VOL_SE_SYSTEM_DEFAULT;
@@ -70,35 +43,6 @@ struct Z2FxLineMgr {
/* 802BA7DC */ Z2FxLineMgr();
};
struct JGeometry {
template <typename A1>
struct TVec3 {};
/* TVec3<f32> */
struct TVec3__template0 {};
};
struct JKRSolidHeap {};
struct JAISoundID {};
struct JKRArchive {};
struct JAISoundHandle {};
struct Z2AudioMgr {
/* 802CD248 */ Z2AudioMgr();
/* 802CD34C */ void init(JKRSolidHeap*, u32, void*, JKRArchive*);
/* 802CD888 */ void setOutputMode(u32);
/* 802CD8B4 */ void zeldaGFrameWork();
/* 802CD904 */ void gframeProcess();
/* 802CD974 */ void resetProcess(u32, bool);
/* 802CD9CC */ void resetRecover();
/* 802CDA6C */ void hasReset() const;
/* 802CDB1C */ void startSound(JAISoundID, JAISoundHandle*, JGeometry::TVec3<f32> const*);
static u8 mAudioMgrPtr[4 + 4 /* padding */];
};
struct JAUSection {
/* 802A50F8 */ void finishBuild();
};
@@ -111,8 +55,6 @@ struct Z2Audience {
/* 802BD130 */ Z2Audience();
};
struct JKRHeap {};
struct JAU_JASInitializer {
/* 802A4AD0 */ JAU_JASInitializer();
/* 802A4B28 */ void initJASystem(JKRSolidHeap*);
@@ -152,8 +94,6 @@ struct JAUAudioArcInterpreter {
/* 802A4260 */ ~JAUAudioArcInterpreter();
};
struct JASTrack {};
struct JASSeqParser {
static u8 sCallBackFunc[4];
};
@@ -361,7 +301,7 @@ SECTION_DATA extern void* __vt__10Z2AudioMgr[3] = {
/* 80451368-80451370 000868 0004+04 1/1 251/251 900/900 .sbss mAudioMgrPtr__10Z2AudioMgr
*/
u8 Z2AudioMgr::mAudioMgrPtr[4 + 4 /* padding */];
Z2AudioMgr* Z2AudioMgr::mAudioMgrPtr;
/* 802CD248-802CD34C 2C7B88 0104+00 0/0 1/1 0/0 .text __ct__10Z2AudioMgrFv */
#pragma push
-17
View File
@@ -15,23 +15,6 @@ struct Z2SpeechMgr2 {
/* 802CCF88 */ void isMidnaSpeak();
};
struct Z2CreatureEnemy {
/* 802C0F64 */ Z2CreatureEnemy();
/* 802C0FC4 */ void deleteObject();
/* 802C1094 */ void init(Vec*, Vec*, u8, u8);
/* 802C10B4 */ void init(Vec*, Vec*, Vec*, u8, u8, u8);
/* 802C10D4 */ void framework(u32, s8);
/* 802C110C */ void startCreatureSound(JAISoundID, u32, s8);
/* 802C136C */ void startCreatureSoundLevel(JAISoundID, u32, s8);
/* 802C168C */ void startCreatureVoice(JAISoundID, s8);
/* 802C1948 */ void startCreatureVoiceLevel(JAISoundID, s8);
/* 802C199C */ void startCreatureExtraSound(JAISoundID, u32, s8);
/* 802C19D8 */ void startCreatureExtraSoundLevel(JAISoundID, u32, s8);
/* 802C1A14 */ void startCollisionSE(u32, u32);
/* 802C1B7C */ void setLinkSearch(bool);
/* 802C1B90 */ void setEnemyName(char const*);
};
struct Z2SoundObjMgr {
/* 802C0074 */ void getEnemyID(char const*, JSULink<Z2CreatureEnemy>*);
/* 802C0190 */ void removeEnemy(JSULink<Z2CreatureEnemy>*);
+67 -47
View File
@@ -69,36 +69,6 @@ struct Z2SeMgr {
/* 802B9AC4 */ void resetCrowdSize();
};
struct JAISoundID {
/* 802B9B60 */ JAISoundID(u32);
/* 802B995C */ JAISoundID(JAISoundID const&);
/* 802B9A88 */ void operator=(JAISoundID const&);
};
struct Z2SceneMgr {
/* 802B6840 */ Z2SceneMgr();
/* 802B68B0 */ void setInDarkness(bool);
/* 802B68E0 */ void setSceneExist(bool);
/* 802B697C */ void setFadeOutStart(u8);
/* 802B6A18 */ void setFadeInStart(u8);
/* 802B6AF8 */ void setSceneName(char*, s32, s32);
/* 802B9B68 */ void sceneChange(JAISoundID, u8, u8, u8, u8, u8, bool);
/* 802B9C50 */ void framework();
/* 802B9D40 */ void load1stDynamicWave();
/* 802B9D98 */ void _load1stWaveInner_1();
/* 802B9FC8 */ void _load1stWaveInner_2();
/* 802BA09C */ void check1stDynamicWave();
/* 802BA120 */ void load2ndDynamicWave();
/* 802BA294 */ void sceneBgmStart();
/* 802BA56C */ void loadStaticWaves();
/* 802BA5C0 */ bool checkFirstWaves();
/* 802BA5C8 */ void eraseSeWave(u32);
/* 802BA630 */ void eraseBgmWave(u32);
/* 802BA698 */ void getWaveLoadStatus(u32, u32);
/* 802BA704 */ void loadSeWave(u32);
/* 802BA770 */ void loadBgmWave(u32);
};
struct Z2FxLineMgr {
/* 802BAEB8 */ void setSceneFx(s32);
};
@@ -135,11 +105,6 @@ struct JAISoundParamsMove {
/* 802A2DB4 */ void moveVolume(f32, u32);
};
struct JAISound {
/* 802A24DC */ void stop(u32);
/* 802B9988 */ void getID() const;
};
//
// Forward References:
//
@@ -244,6 +209,35 @@ extern "C" extern u8 data_80450CC0[4 + 4 /* padding */];
//
/* 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) {
lbl_80450B80 = this;
sceneNum = -1;
timer = -1;
BGM_ID = -1;
roomNum = -1;
SeWave_1 = 0;
SeWaveToErase_1 = 0;
SeWave_2 = 0;
SeWaveToErase_2 = 0;
BgmWave_1 = 0;
BgmWaveToErase_1 = 0;
BgmWave_2 = 0;
BgmWaveToErase_2 = 0;
SeWave_3 = 0;
SeWaveToErase_3 = 0;
field_0x18 = 0;
field_0x19 = 0;
field_0x1a = 0;
field_0x1b = 0;
sceneExist = 0;
inGame = 0;
inDarkness = false;
field_0x17 = 0;
return;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -252,6 +246,7 @@ asm Z2SceneMgr::Z2SceneMgr() {
#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
@@ -276,6 +271,29 @@ SECTION_SDATA2 static u8 lit_3511[4] = {
SECTION_SDATA2 static f32 lit_3512 = 1.0f;
/* 802B68E0-802B697C 2B1220 009C+00 3/3 2/2 2/2 .text setSceneExist__10Z2SceneMgrFb */
#ifdef NONMATCHING
void Z2SceneMgr::setSceneExist(bool param_1) {
Z2SoundMgr* Z2soundMgrPtr;
sceneExist = param_1;
timer = 0;
Z2soundMgrPtr = lbl_80450B60;
if (param_1 == false) {
Z2soundMgrPtr->JAISoundParamsMove->moveVolume(FLOAT_LABEL(lit_3511), 0xb4);
} else {
inGame = 1;
if (SeWave_3 == 0x85) {
Z2soundMgrPtr->JAISoundParamsMove->moveVolume(FLOAT_LABEL(lit_3511), 0);
} else {
if (SeWave_3 == 0x7f) {
lbl_80450B88->seMoveVolumeAll(FLOAT_LABEL(lit_3511), 0);
} else {
Z2soundMgrPtr->JAISoundParamsMove->moveVolume(lit_3512, 0x21);
}
}
}
return;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -284,6 +302,7 @@ asm void Z2SceneMgr::setSceneExist(bool param_0) {
#include "asm/Z2AudioLib/Z2SceneMgr/setSceneExist__10Z2SceneMgrFb.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80455A40-80455A48 004040 0004+04 1/1 0/0 0/0 .sdata2 @3529 */
@@ -725,18 +744,18 @@ asm void Z2SceneMgr::setSceneName(char* param_0, s32 param_1, s32 param_2) {
}
#pragma pop
/* 802B995C-802B9968 2B429C 000C+00 1/1 0/0 0/0 .text __ct__10JAISoundIDFRC10JAISoundID
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JAISoundID::JAISoundID(JAISoundID const& param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SceneMgr/__ct__10JAISoundIDFRC10JAISoundID.s"
//! @meme this looks to be non-inlined here because @ref setSceneName is too large
JAISoundID::JAISoundID(JAISoundID const& soundIdToSet) {
mId = soundIdToSet.mId;
}
#pragma pop
/* 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) {
unk_1 = (param_1 & 1U) << 2 | unk_1 & 0xfb;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -745,6 +764,7 @@ asm void Z2SeqMgr::setFieldBgmPlay(bool param_0) {
#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
@@ -760,7 +780,7 @@ asm void JAIStreamMgr::isActive() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void JAISound::getID() const {
asm JAISoundID JAISound::getID() const {
nofralloc
#include "asm/Z2AudioLib/Z2SceneMgr/getID__8JAISoundCFv.s"
}
@@ -859,8 +879,8 @@ asm void Z2SeqMgr::setWindStoneVol(f32 param_0, u32 param_1) {
#pragma pop
/* 802B9B60-802B9B68 -00001 0008+00 0/0 0/0 0/0 .text __ct__10JAISoundIDFUl */
JAISoundID::JAISoundID(u32 param_0) {
*(u32*)this = (u32)(param_0);
JAISoundID::JAISoundID(u32 id) {
mId = id;
}
/* 802B9B68-802B9C50 2B44A8 00E8+00 1/1 0/0 0/0 .text
+69 -121
View File
@@ -17,24 +17,10 @@ struct Z2StatusMgr {
/* 802B61BC */ void isMovieDemo();
};
struct Vec {};
struct Z2SpeechMgr2 {
/* 802CCA18 */ void playOneShotVoice(u8, u16, Vec*, s8);
};
struct JAISoundHandle {
/* 80007838 */ ~JAISoundHandle();
/* 802A2184 */ void releaseSound();
/* 802A4AC4 */ JAISoundHandle();
};
struct Z2SoundStarter {
/* 802AAEDC */ void setPortData(JAISoundHandle*, u32, u16, s8);
};
struct JAISoundID {};
struct Z2SoundMgr {
/* 802AA7DC */ void stopSoundID(JAISoundID);
/* 802AA9E8 */ void multiVolumeSoundID(JAISoundID, f32);
@@ -44,29 +30,6 @@ struct Z2SeqMgr {
/* 802AF010 */ void bgmStart(u32, u32, s32);
};
struct Z2SeMgr {
/* 802AB64C */ Z2SeMgr();
/* 802AB750 */ void initSe();
/* 802AB80C */ void resetModY();
/* 802AB830 */ void modHeightAtCamera(Vec const**);
/* 802AB93C */ void incrCrowdSize();
/* 802AB960 */ void decrCrowdSize();
/* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
/* 802AD8B0 */ void seStop(JAISoundID, u32);
/* 802AD94C */ void seStopAll(u32);
/* 802AD9F4 */ void seMoveVolumeAll(f32, u32);
/* 802ADB14 */ void messageSePlay(u16, Vec*, s8);
/* 802ADB50 */ void talkInSe();
/* 802ADC54 */ void talkOutSe();
/* 802ADD58 */ void menuInSe();
/* 802ADE5C */ void setLevObjSE(u32, Vec*, s8);
/* 802ADFF4 */ void setMultiTriggerSE(u32, Vec*, s8);
/* 802AE184 */ void processSeFramework();
/* 802AE524 */ void isLevelSe(JAISoundID);
/* 802AE5B0 */ void isSoundCulling(JAISoundID);
};
struct Z2Param {
static f32 VOL_SE_SYSTEM_DEFAULT;
static f32 VOL_SE_LINK_VOICE_DEFAULT;
@@ -94,20 +57,6 @@ struct Z2Param {
static f32 VOL_SE_ATMOSPHERE_PAUSING;
};
struct Z2MultiSeObj {
/* 80007888 */ ~Z2MultiSeObj();
/* 802AB710 */ Z2MultiSeObj();
};
struct Z2MultiSeMgr {
/* 802AEB04 */ Z2MultiSeMgr();
/* 802AEB34 */ ~Z2MultiSeMgr();
/* 802AEB70 */ void registMultiSePos(Vec*);
/* 802AECBC */ void resetMultiSePos();
/* 802AECE0 */ void getPanPower();
/* 802AEDC0 */ void getDolbyPower();
};
struct Z2CreatureLink {
static u8 mLinkPtr[4 + 4 /* padding */];
};
@@ -135,15 +84,6 @@ struct JAISoundParamsMove {
/* 802A2F14 */ void moveDolby(f32, u32);
};
struct JAISoundHandles {
/* 802A2C98 */ void getHandleSoundID(JAISoundID);
/* 802A2CF4 */ void getFreeHandle();
};
struct JAISound {
/* 802A24DC */ void stop(u32);
};
struct JAISeCategoryMgr {
/* 8029FDE0 */ void stop(u32);
};
@@ -213,7 +153,6 @@ extern "C" void calcRelPosPan__10Z2AudienceFRC3Veci();
extern "C" void calcRelPosDolby__10Z2AudienceFRC3Veci();
extern "C" void playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc();
extern "C" void __dl__FPv();
extern "C" void PSVECSquareDistance();
extern "C" void __construct_array();
extern "C" void __cvt_fp2unsigned();
extern "C" void _savegpr_26();
@@ -254,7 +193,7 @@ extern "C" extern u8 data_80450B74[4];
extern "C" extern u8 data_80450B7C[4];
extern "C" extern u8 data_80450B80[4];
extern "C" extern u8 data_80450B84[4];
extern "C" extern u8 data_80450B88[4];
extern "C" extern Z2SeMgr* data_80450B88; // JASGlobalInstance<Z2SeMgr>::sInstance
extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */];
//
@@ -262,6 +201,23 @@ extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */];
//
/* 802AB64C-802AB710 2A5F8C 00C4+00 0/0 1/1 0/0 .text __ct__7Z2SeMgrFv */
// almost matches, JASGlobalInstance stuff needs to be setup properly
#ifdef NONMATCHING
Z2SeMgr::Z2SeMgr() : field_0x60(&mSoundHandle[0], 0x18) {
// data_80450B88 = this;
field_0x3c0 = 0;
field_0x3c1 = 0;
field_0x3c2 = 0;
field_0x3c3 = 0;
field_0x3c4 = 0;
field_0x3c5 = 0;
field_0x3c9 = 0;
field_0x3ca = 0;
field_0x3cb = 0;
mCrowdSize = 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -270,18 +226,32 @@ asm Z2SeMgr::Z2SeMgr() {
#include "asm/Z2AudioLib/Z2SeMgr/__ct__7Z2SeMgrFv.s"
}
#pragma pop
#endif
/* 802AB710-802AB750 2A6050 0040+00 1/1 0/0 0/0 .text __ct__12Z2MultiSeObjFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2MultiSeObj::Z2MultiSeObj() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/__ct__12Z2MultiSeObjFv.s"
Z2MultiSeObj::Z2MultiSeObj() {
field_0x1c = 0xffffffff;
field_0x20 = 0;
}
#pragma pop
/* 802AB750-802AB80C 2A6090 00BC+00 0/0 1/1 0/0 .text initSe__7Z2SeMgrFv */
#ifdef NONMATCHING
void Z2SeMgr::initSe() {
for (int i = 0; i < 10; i++) {
mLevelObjSe[i].resetMultiSePos();
mLevelObjSe[i].field_0x1c = 0xffffffff;
mLevelObjSe[i].field_0x20 = 0;
}
mLevelObjectSeCount = 0;
for (int i = 0; i < 10; i++) {
mMultiTriggerSe[i].resetMultiSePos();
mMultiTriggerSe[i].field_0x1c = 0xffffffff;
mMultiTriggerSe[i].field_0x20 = 0;
}
mMultiTriggerSeCount = 0;
resetModY();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -290,16 +260,13 @@ asm void Z2SeMgr::initSe() {
#include "asm/Z2AudioLib/Z2SeMgr/initSe__7Z2SeMgrFv.s"
}
#pragma pop
#endif
/* 802AB80C-802AB830 2A614C 0024+00 1/1 1/1 0/0 .text resetModY__7Z2SeMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SeMgr::resetModY() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/resetModY__7Z2SeMgrFv.s"
void Z2SeMgr::resetModY() {
for (int i = 0; i < 8; i++) {
mModY[i] = 0;
}
}
#pragma pop
/* 802AB830-802AB93C 2A6170 010C+00 1/1 0/0 0/0 .text modHeightAtCamera__7Z2SeMgrFPPC3Vec
*/
@@ -312,25 +279,21 @@ asm void Z2SeMgr::modHeightAtCamera(Vec const** param_0) {
}
#pragma pop
/* 802AB93C-802AB960 2A627C 0024+00 0/0 1/1 0/0 .text incrCrowdSize__7Z2SeMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SeMgr::incrCrowdSize() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/incrCrowdSize__7Z2SeMgrFv.s"
}
#pragma pop
void Z2SeMgr::incrCrowdSize() {
mCrowdSize++;
/* 802AB960-802AB984 2A62A0 0024+00 0/0 3/3 0/0 .text decrCrowdSize__7Z2SeMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SeMgr::decrCrowdSize() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/decrCrowdSize__7Z2SeMgrFv.s"
if (mCrowdSize > 100)
mCrowdSize = 100;
}
void Z2SeMgr::decrCrowdSize() {
mCrowdSize--;
//! @bug probably copypasta from incrCrowdSize(), but semantically it's still correct:
//! mCrowdSize is a u8, so an underflow would result in mCrowdSize > 100, triggering the clamp.
if (mCrowdSize > 100)
mCrowdSize = 0;
}
#pragma pop
/* ############################################################################################## */
/* 80455870-80455874 003E70 0004+00 1/1 0/0 0/0 .sdata2 @4038 */
@@ -716,25 +679,11 @@ asm void Z2SeMgr::isSoundCulling(JAISoundID param_0) {
}
#pragma pop
/* 802AEB04-802AEB34 2A9444 0030+00 1/1 1/1 0/0 .text __ct__12Z2MultiSeMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2MultiSeMgr::Z2MultiSeMgr() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/__ct__12Z2MultiSeMgrFv.s"
Z2MultiSeMgr::Z2MultiSeMgr() {
resetMultiSePos();
}
#pragma pop
/* 802AEB34-802AEB70 2A9474 003C+00 0/0 2/2 0/0 .text __dt__12Z2MultiSeMgrFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2MultiSeMgr::~Z2MultiSeMgr() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/__dt__12Z2MultiSeMgrFv.s"
}
#pragma pop
Z2MultiSeMgr::~Z2MultiSeMgr() {}
/* 802AEB70-802AECBC 2A94B0 014C+00 2/2 6/6 0/0 .text registMultiSePos__12Z2MultiSeMgrFP3Vec */
#pragma push
@@ -746,16 +695,15 @@ asm void Z2MultiSeMgr::registMultiSePos(Vec* param_0) {
}
#pragma pop
/* 802AECBC-802AECE0 2A95FC 0024+00 3/3 6/6 0/0 .text resetMultiSePos__12Z2MultiSeMgrFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2MultiSeMgr::resetMultiSePos() {
nofralloc
#include "asm/Z2AudioLib/Z2SeMgr/resetMultiSePos__12Z2MultiSeMgrFv.s"
void Z2MultiSeMgr::resetMultiSePos(void) {
mPosCount = -1;
f32 _0 = FLOAT_LABEL(lit_4040);
mMaxPowL = _0;
mMaxPowR = _0;
mMaxPowB = _0;
mMaxPowF = _0;
mMaxVolume = _0;
}
#pragma pop
/* 802AECE0-802AEDC0 2A9620 00E0+00 1/1 8/8 0/0 .text getPanPower__12Z2MultiSeMgrFv */
#pragma push
+1 -61
View File
@@ -16,10 +16,6 @@ struct Z2StatusMgr {
/* 802B6734 */ void checkDayTime();
};
struct JAISoundHandle {
/* 802A2184 */ void releaseSound();
};
struct Z2SoundStarter {
/* 802AAEDC */ void setPortData(JAISoundHandle*, u32, u16, s8);
/* 802AAF74 */ void getPortData(JAISoundHandle*, u32, s8);
@@ -33,56 +29,6 @@ struct Z2SoundObjMgr {
/* 802C01E4 */ void isTwilightBattle();
};
struct Z2SeqMgr {
/* 802AEEA0 */ Z2SeqMgr();
/* 802AF010 */ void bgmStart(u32, u32, s32);
/* 802AF408 */ void bgmStop(u32, s32);
/* 802AF49C */ void subBgmStart(u32);
/* 802AF884 */ void subBgmStop();
/* 802AF9D0 */ void subBgmStopInner();
/* 802AFB94 */ void bgmStreamPrepare(u32);
/* 802AFDEC */ void bgmStreamCheckReady();
/* 802AFE18 */ void bgmStreamPlay();
/* 802AFEDC */ void bgmStreamStop(u32);
/* 802AFF8C */ void changeBgmStatus(s32);
/* 802B1DF4 */ void changeSubBgmStatus(s32);
/* 802B299C */ void onVariantBgmJumpEnd(bool);
/* 802B2A88 */ void changeFishingBgm(s32);
/* 802B2CA4 */ void talkInBgm();
/* 802B2D64 */ void talkOutBgm();
/* 802B2DAC */ void menuInBgm();
/* 802B2DF4 */ void menuOutBgm();
/* 802B2E3C */ void fanfareFramework();
/* 802B327C */ void stopWolfHowlSong();
/* 802B3318 */ void setHeightVolMod(bool, u32);
/* 802B3398 */ void setTimeProcVolMod(bool, u32);
/* 802B33A8 */ void processBgmFramework();
/* 802B3EAC */ void checkBgmIDPlaying(u32);
/* 802B3F40 */ void getChildTrackVolume(JAISoundHandle*, int);
/* 802B3FEC */ void setChildTrackVolume(JAISoundHandle*, int, f32, u32, f32, f32);
/* 802B4128 */ void resetBattleBgmParams();
/* 802B4164 */ void setBattleBgmOff(bool);
/* 802B421C */ void setBattleSearched(bool);
/* 802B43D0 */ void setBattleDistIgnore(bool);
/* 802B43E0 */ void setBattleGhostMute(bool);
/* 802B4498 */ void setBattleDistState(u8);
/* 802B4844 */ void setBattleSeqState(u8);
/* 802B4AFC */ void setBattleLastHit(u8);
/* 802B4BD0 */ void battleBgmFramework();
/* 802B4EB0 */ void startBattleBgm(bool);
/* 802B5204 */ void stopBattleBgm(u8, u8);
/* 802B545C */ void fieldBgmStart();
/* 802B556C */ void fieldRidingMute();
/* 802B5750 */ void onFieldBgmJumpStart();
/* 802B579C */ void onFieldBgmJumpEnd();
/* 802B594C */ void fieldBgmFramework();
/* 802B5E80 */ void mbossBgmMuteProcess();
/* 802B5E84 */ void bgmSetSwordUsing(s32);
/* 802B5E88 */ void bgmNowBattle(f32);
/* 802B5E8C */ void taktModeMute();
/* 802B5ED4 */ void taktModeMuteOff();
};
struct Z2SceneMgr {
/* 802B68E0 */ void setSceneExist(bool);
};
@@ -120,12 +66,6 @@ struct JAISoundParamsMove {
/* 802A2F14 */ void moveDolby(f32, u32);
};
struct JAISound {
/* 802A21A0 */ void releaseHandle();
/* 802A24DC */ void stop(u32);
/* 802A2598 */ void stop();
};
struct JAISeqMgr {
/* 802A1C90 */ void calc();
/* 802A1E3C */ void stop(u32);
@@ -764,7 +704,7 @@ asm void Z2SeqMgr::bgmStreamPrepare(u32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SeqMgr::bgmStreamCheckReady() {
asm int Z2SeqMgr::bgmStreamCheckReady() {
nofralloc
#include "asm/Z2AudioLib/Z2SeqMgr/bgmStreamCheckReady__8Z2SeqMgrFv.s"
}
+58 -55
View File
@@ -71,29 +71,22 @@ extern "C" extern u8 data_80451348[8];
// Declarations:
//
/* 802AB07C-802AB0B4 2A59BC 0038+00 0/0 1/1 0/0 .text __ct__14Z2SoundHandlesFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2SoundHandles::Z2SoundHandles() {
nofralloc
#include "asm/Z2AudioLib/Z2SoundHandles/__ct__14Z2SoundHandlesFv.s"
}
#pragma pop
inline JAISoundID::JAISoundID(u32 pId) : mId(pId) {}
/* 802AB0B4-802AB118 2A59F4 0064+00 0/0 1/1 0/0 .text __dt__14Z2SoundHandlesFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2SoundHandles::~Z2SoundHandles() {
nofralloc
#include "asm/Z2AudioLib/Z2SoundHandles/__dt__14Z2SoundHandlesFv.s"
inline JAISoundID JAISound::getID() const {
return JAISoundID((u32)sound_id);
}
#pragma pop
/* 802AB118-802AB120 -00001 0008+00 0/0 0/0 0/0 .text initHandlesPool__14Z2SoundHandlesFUc */
void Z2SoundHandles::initHandlesPool(u8 param_0) {
*(u8*)(((u8*)this) + 12) /* this->field_0xc */ = (u8)(param_0);
Z2SoundHandles::Z2SoundHandles() {
mNumHandles = 0;
}
Z2SoundHandles::~Z2SoundHandles() {
deleteHandlesPool();
}
void Z2SoundHandles::initHandlesPool(u8 pNumHandles) {
mNumHandles = pNumHandles;
}
/* ############################################################################################## */
@@ -125,26 +118,33 @@ extern "C" asm void func_802AB200(void* _this) {
}
#pragma pop
/* 802AB254-802AB2A0 2A5B94 004C+00 0/0 6/6 0/0 .text
* getHandleSoundID__14Z2SoundHandlesF10JAISoundID */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JAISoundHandle* Z2SoundHandles::getHandleSoundID(JAISoundID param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundHandles/getHandleSoundID__14Z2SoundHandlesF10JAISoundID.s"
}
#pragma pop
JAISoundHandle* Z2SoundHandles::getHandleSoundID(JAISoundID pSoundId) {
JSULink<Z2SoundHandlePool>* link;
for (link = getFirst(); link != NULL; link = link->getNext()) {
JAISoundHandle* handle = link->getObject();
if (handle->isSoundAttached()) {
if ((*handle)->getID() == pSoundId) {
return handle;
}
}
}
/* 802AB2A0-802AB2D8 2A5BE0 0038+00 0/0 1/1 0/0 .text getHandleUserData__14Z2SoundHandlesFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm JAISoundHandle* Z2SoundHandles::getHandleUserData(u32 param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundHandles/getHandleUserData__14Z2SoundHandlesFUl.s"
return NULL;
}
JAISoundHandle* Z2SoundHandles::getHandleUserData(u32 pUserData) {
JSULink<Z2SoundHandlePool>* link;
for (link = getFirst(); link != NULL; link = link->getNext()) {
JAISoundHandle* handle = link->getObject();
if (handle->isSoundAttached()) {
if ((*handle)->getUserData() == pUserData) {
return handle;
}
}
}
return NULL;
}
#pragma pop
/* 802AB2D8-802AB3D0 2A5C18 00F8+00 0/0 3/3 0/0 .text getFreeHandle__14Z2SoundHandlesFv
*/
@@ -168,26 +168,29 @@ asm void Z2SoundHandles::getLowPrioSound(JAISoundID param_0) {
}
#pragma pop
/* 802AB4A0-802AB504 2A5DE0 0064+00 0/0 1/1 0/0 .text stopAllSounds__14Z2SoundHandlesFUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundHandles::stopAllSounds(u32 param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundHandles/stopAllSounds__14Z2SoundHandlesFUl.s"
void Z2SoundHandles::stopAllSounds(u32 fadeout) {
JSULink<Z2SoundHandlePool>* link;
for (link = getFirst(); link != NULL; link = link->getNext()) {
JAISoundHandle* handle = link->getObject();
//! @meme: explicit operator bool call required to match and be similar
//! to CHN_debug; could more concisely write handle->isSoundAttached
//! (for some reason cast-to-bool doesn't work?)
if (handle && handle->operator bool()) {
(*handle)->stop(fadeout);
}
}
}
#pragma pop
/* 802AB504-802AB538 2A5E44 0034+00 0/0 1/1 0/0 .text isActive__14Z2SoundHandlesCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm bool Z2SoundHandles::isActive() const {
nofralloc
#include "asm/Z2AudioLib/Z2SoundHandles/isActive__14Z2SoundHandlesCFv.s"
bool Z2SoundHandles::isActive() const {
JSULink<Z2SoundHandlePool>* link;
for (link = getFirst(); link != NULL; link = link->getNext()) {
if (link->getObject()->isSoundAttached()) {
return true;
}
}
return false;
}
#pragma pop
/* 802AB538-802AB64C 2A5E78 0114+00 0/0 1/1 0/0 .text
* setPos__14Z2SoundHandlesFRCQ29JGeometry8TVec3<f> */
+42 -60
View File
@@ -4,6 +4,7 @@
//
#include "Z2AudioLib/Z2SoundObjMgr.h"
#include "Z2AudioLib/Z2SeqMgr.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,53 +12,12 @@
// Types:
//
template <typename A0>
struct JSULink {};
/* JSULink<Z2CreatureEnemy> */
struct JSULink__template2 {};
struct Z2CreatureEnemy {};
struct Z2SoundObjMgr {
/* 802BF920 */ Z2SoundObjMgr();
/* 802BF980 */ void setForceBattleArea(bool, u16, u16, u16);
/* 802BF994 */ void searchEnemy();
/* 802BFFEC */ void setGhostEnemyState(u8);
/* 802C0074 */ void getEnemyID(char const*, JSULink<Z2CreatureEnemy>*);
/* 802C0100 */ void setBattleInit();
/* 802C0120 */ void checkBattleFinish();
/* 802C013C */ void deleteEnemyAll();
/* 802C0190 */ void removeEnemy(JSULink<Z2CreatureEnemy>*);
/* 802C01E4 */ void isTwilightBattle();
};
struct Z2SeqMgr {
/* 802AFF8C */ void changeBgmStatus(s32);
/* 802B1DF4 */ void changeSubBgmStatus(s32);
/* 802B421C */ void setBattleSearched(bool);
/* 802B43E0 */ void setBattleGhostMute(bool);
/* 802B4498 */ void setBattleDistState(u8);
/* 802B5204 */ void stopBattleBgm(u8, u8);
};
struct Z2CreatureLink {
static u8 mLinkPtr[4 + 4 /* padding */];
};
struct Z2Calc {
struct CurveSign {};
/* 802A96F4 */ void getParamByExp(f32, f32, f32, f32, f32, f32, Z2Calc::CurveSign);
};
struct JSUPtrLink {};
struct JSUPtrList {
/* 802DBF14 */ void initiate();
/* 802DBF4C */ void append(JSUPtrLink*);
/* 802DC15C */ void remove(JSUPtrLink*);
};
//
// Forward References:
//
@@ -88,8 +48,6 @@ extern "C" void stopBattleBgm__8Z2SeqMgrFUcUc();
extern "C" void initiate__10JSUPtrListFv();
extern "C" void append__10JSUPtrListFP10JSUPtrLink();
extern "C" void remove__10JSUPtrListFP10JSUPtrLink();
extern "C" void PSVECSubtract();
extern "C" void PSVECMag();
extern "C" void _savegpr_23();
extern "C" void _savegpr_27();
extern "C" void _restgpr_23();
@@ -97,7 +55,7 @@ extern "C" void _restgpr_27();
extern "C" void strcmp();
extern "C" extern u8 data_80450B48[4];
extern "C" extern u8 data_80450B80[4];
extern "C" extern u8 data_80450B84[4];
extern "C" extern Z2SeqMgr* data_80450B84;
extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */];
//
@@ -105,6 +63,16 @@ extern "C" u8 mLinkPtr__14Z2CreatureLink[4 + 4 /* padding */];
//
/* 802BF920-802BF980 2BA260 0060+00 0/0 1/1 0/0 .text __ct__13Z2SoundObjMgrFv */
#ifdef NONMATCHING
// order wrong because this needs to inherit from JASGlobalInstance<T>
Z2SoundObjMgr::Z2SoundObjMgr() {
data_80450B84 = this;
mGhostEnemyState = 0;
mIsTwilightBattle = false;
setBattleInit();
setForceBattleArea(false, 700, 1100, 1500);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -113,6 +81,7 @@ asm Z2SoundObjMgr::Z2SoundObjMgr() {
#include "asm/Z2AudioLib/Z2SoundObjMgr/__ct__13Z2SoundObjMgrFv.s"
}
#pragma pop
#endif
/* 802BF980-802BF994 2BA2C0 0014+00 1/1 3/3 3/3 .text setForceBattleArea__13Z2SoundObjMgrFbUsUsUs
*/
@@ -346,15 +315,20 @@ asm void Z2SoundObjMgr::searchEnemy() {
}
#pragma pop
/* 802BFFEC-802C0074 2BA92C 0088+00 1/1 2/2 0/0 .text setGhostEnemyState__13Z2SoundObjMgrFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjMgr::setGhostEnemyState(u8 param_0) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObjMgr/setGhostEnemyState__13Z2SoundObjMgrFUc.s"
void Z2SoundObjMgr::setGhostEnemyState(u8 p1) {
if (p1 == 0x20) {
if (field_0x1a >= field_0x16) {
data_80450B84->setBattleGhostMute(true);
}
} else {
if (field_0x1a == false) {
mGhostEnemyState = 0;
return;
}
}
mGhostEnemyState = p1 + (mGhostEnemyState & 1);
}
#pragma pop
/* 802C0074-802C0100 2BA9B4 008C+00 0/0 1/1 0/0 .text
* getEnemyID__13Z2SoundObjMgrFPCcP26JSULink<15Z2CreatureEnemy> */
@@ -389,14 +363,22 @@ asm void Z2SoundObjMgr::checkBattleFinish() {
/* 802C013C-802C0190 2BAA7C 0054+00 0/0 1/1 0/0 .text deleteEnemyAll__13Z2SoundObjMgrFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjMgr::deleteEnemyAll() {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObjMgr/deleteEnemyAll__13Z2SoundObjMgrFv.s"
void Z2SoundObjMgr::deleteEnemyAll() {
JSULink<Z2CreatureEnemy>* link;
// not moving the link pointer forward looks like a bug, but deleteObject() actually unlinks the
// enemy from its owning list
while (link = this->getFirst(), link != NULL) {
Z2CreatureEnemy* enemy = link->getObject();
if (enemy == NULL) {
// setWarningMessage_f((JUTAssertion *)0x1,(ulong)"Z2SoundObjMgr.cpp",(char
// *)0x16f,(int)&*fill*,
// "[Z2SoundObjMgr::searchEnemy] remain remove enemy\n",in_r8);
} else {
enemy->deleteObject();
}
}
}
#pragma pop
/* 802C0190-802C01E4 2BAAD0 0054+00 0/0 2/2 0/0 .text
* removeEnemy__13Z2SoundObjMgrFP26JSULink<15Z2CreatureEnemy> */
@@ -414,7 +396,7 @@ asm void Z2SoundObjMgr::removeEnemy(JSULink<Z2CreatureEnemy>* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjMgr::isTwilightBattle() {
asm bool Z2SoundObjMgr::isTwilightBattle() {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObjMgr/isTwilightBattle__13Z2SoundObjMgrFv.s"
}
+60 -41
View File
@@ -116,7 +116,7 @@ extern "C" void _restgpr_29();
extern "C" extern u32 __float_max;
extern "C" extern u8 data_80450B4C[4];
extern "C" extern u8 data_80450B60[4];
extern "C" extern u8 data_80450B74[4];
extern "C" extern Z2SoundStarter* data_80450B74;
extern "C" extern u8 data_80450B88[4];
//
@@ -184,38 +184,35 @@ SECTION_DATA extern void* __vt__14Z2SoundObjBase[8] = {
(void*)startLevelSound__14Z2SoundObjBaseF10JAISoundIDUlSc,
};
/* 802BDEF0-802BDF48 2B8830 0058+00 3/3 2/2 0/0 .text __ct__14Z2SoundObjBaseFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2SoundObjBase::Z2SoundObjBase() {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObject/__ct__14Z2SoundObjBaseFv.s"
Z2SoundObjBase::Z2SoundObjBase() {
//! @note initializer list doesn't work since fields were initialized out of
//! structure layout order, indicating original code didn't use initializer list.
mSoundPos = NULL;
mIsInitialized = false;
mSoundStarter = data_80450B74; // sInstance
field_0x1c = 0;
field_0x1e = 0;
}
#pragma pop
/* 802BDF48-802BDFB0 2B8888 0068+00 1/1 3/3 15/15 .text __dt__14Z2SoundObjBaseFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm Z2SoundObjBase::~Z2SoundObjBase() {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObject/__dt__14Z2SoundObjBaseFv.s"
Z2SoundObjBase::~Z2SoundObjBase() {
deleteObject();
}
#pragma pop
/* 802BDFB0-802BDFF8 2B88F0 0048+00 5/4 2/2 0/0 .text init__14Z2SoundObjBaseFP3VecUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjBase::init(Vec* param_0, u8 param_1) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObject/init__14Z2SoundObjBaseFP3VecUc.s"
void Z2SoundObjBase::init(Vec* pSoundPos, u8 pNumHandles) {
initHandlesPool(pNumHandles);
mSoundPos = pSoundPos;
mIsInitialized = true;
}
#pragma pop
/* 802BDFF8-802BE038 2B8938 0040+00 1/1 8/8 61/61 .text deleteObject__14Z2SoundObjBaseFv
*/
// issue from using temp virtuals i think
#ifdef NONMATCHING
void Z2SoundObjBase::deleteObject() {
dispose();
deleteHandlesPool();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -224,18 +221,37 @@ asm void Z2SoundObjBase::deleteObject() {
#include "asm/Z2AudioLib/Z2SoundObject/deleteObject__14Z2SoundObjBaseFv.s"
}
#pragma pop
#endif
/* 802BE038-802BE070 2B8978 0038+00 4/1 3/0 0/0 .text framework__14Z2SoundObjBaseFUlSc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjBase::framework(u32 param_0, s8 param_1) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObject/framework__14Z2SoundObjBaseFUlSc.s"
void Z2SoundObjBase::framework(u32 p1, s8 p2) {
if (mIsInitialized) {
field_0x1c = p1;
field_0x1e = p2;
setPos(*(JGeometry::TVec3<f32>*)mSoundPos);
}
}
#pragma pop
/* 802BE070-802BE104 2B89B0 0094+00 5/0 3/0 0/0 .text dispose__14Z2SoundObjBaseFv */
// sInstance stuff
#ifdef NONMATCHING
void Z2SoundObjBase::dispose() {
JAISoundHandle* handle;
JSULink<Z2SoundHandlePool>* link;
for (link = getFirst(); link != NULL; link = link->getNext()) {
handle = link->getObject();
if (handle != NULL && (bool)*handle) {
u32 swBit = lbl_80450B4C->getSwBit((*handle)->getID());
if ((swBit & 0x8000) != 0) {
handle->releaseSound();
} else {
(*handle)->stop();
}
}
}
mIsInitialized = false;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -244,9 +260,17 @@ asm void Z2SoundObjBase::dispose() {
#include "asm/Z2AudioLib/Z2SoundObject/dispose__14Z2SoundObjBaseFv.s"
}
#pragma pop
#endif
/* 802BE104-802BE144 2B8A44 0040+00 5/0 3/0 0/0 .text
* stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool */
// sInstance stuff
#ifdef NONMATCHING
bool Z2SoundObjBase::stopOK(Z2SoundHandlePool& pSoundHandlePool) {
return !(lbl_80450B4C->getSwBit(pSoundHandlePool->getID()) & 0x8000);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -255,6 +279,7 @@ asm bool Z2SoundObjBase::stopOK(Z2SoundHandlePool& param_0) {
#include "asm/Z2AudioLib/Z2SoundObject/stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 80455B38-80455B3C 004138 0004+00 5/5 0/0 0/0 .sdata2 @3559 */
@@ -401,15 +426,9 @@ asm Z2SoundObjSimple::Z2SoundObjSimple() {
}
#pragma pop
/* 802BE880-802BE8A0 2B91C0 0020+00 1/0 0/0 0/0 .text init__16Z2SoundObjSimpleFP3VecUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void Z2SoundObjSimple::init(Vec* param_0, u8 param_1) {
nofralloc
#include "asm/Z2AudioLib/Z2SoundObject/init__16Z2SoundObjSimpleFP3VecUc.s"
void Z2SoundObjSimple::init(Vec* pSoundPos, u8 pNumHandles) {
Z2SoundObjBase::init(pSoundPos, pNumHandles);
}
#pragma pop
/* ############################################################################################## */
/* 80455B50-80455B54 004150 0004+00 4/4 0/0 0/0 .sdata2 @3821 */