diff --git a/configure.py b/configure.py index 2ce0260ea5..7f5b63599a 100644 --- a/configure.py +++ b/configure.py @@ -774,15 +774,15 @@ config.libs = [ Object(Matching, "JSystem/JAudio2/JASSeqReader.cpp"), Object(NonMatching, "JSystem/JAudio2/JASAramStream.cpp"), Object(NonMatching, "JSystem/JAudio2/JASBank.cpp"), - Object(NonMatching, "JSystem/JAudio2/JASBasicBank.cpp"), + Object(Matching, "JSystem/JAudio2/JASBasicBank.cpp", extra_cflags=['-pragma "nosyminline off"']), Object(Matching, "JSystem/JAudio2/JASVoiceBank.cpp"), Object(Matching, "JSystem/JAudio2/JASBasicInst.cpp", extra_cflags=['-pragma "nosyminline off"']), Object(Matching, "JSystem/JAudio2/JASDrumSet.cpp"), Object(NonMatching, "JSystem/JAudio2/JASBasicWaveBank.cpp"), - Object(NonMatching, "JSystem/JAudio2/JASSimpleWaveBank.cpp"), - Object(NonMatching, "JSystem/JAudio2/JASWSParser.cpp"), + Object(Matching, "JSystem/JAudio2/JASSimpleWaveBank.cpp"), + Object(Matching, "JSystem/JAudio2/JASWSParser.cpp"), Object(NonMatching, "JSystem/JAudio2/JASBNKParser.cpp"), - Object(NonMatching, "JSystem/JAudio2/JASWaveArcLoader.cpp"), + Object(Matching, "JSystem/JAudio2/JASWaveArcLoader.cpp", extra_cflags=['-pragma "nosyminline off"']), Object(NonMatching, "JSystem/JAudio2/JASChannel.cpp"), Object(Matching, "JSystem/JAudio2/JASLfo.cpp"), Object(Matching, "JSystem/JAudio2/JASOscillator.cpp"), @@ -790,13 +790,13 @@ config.libs = [ Object(NonMatching, "JSystem/JAudio2/JASAudioThread.cpp"), Object(Matching, "JSystem/JAudio2/JASAudioReseter.cpp"), Object(Matching, "JSystem/JAudio2/JASDSPChannel.cpp"), - Object(NonMatching, "JSystem/JAudio2/JASDSPInterface.cpp"), + Object(Matching, "JSystem/JAudio2/JASDSPInterface.cpp"), Object(Matching, "JSystem/JAudio2/JASDriverIF.cpp"), Object(Matching, "JSystem/JAudio2/JASSoundParams.cpp"), - Object(NonMatching, "JSystem/JAudio2/dspproc.cpp"), - Object(NonMatching, "JSystem/JAudio2/dsptask.cpp"), - Object(NonMatching, "JSystem/JAudio2/osdsp.cpp"), - Object(NonMatching, "JSystem/JAudio2/osdsp_task.cpp"), + Object(Matching, "JSystem/JAudio2/dspproc.cpp", extra_cflags=["-O4", "-func_align 32"]), + Object(Matching, "JSystem/JAudio2/dsptask.cpp", extra_cflags=["-O4", "-func_align 32"]), + Object(Matching, "JSystem/JAudio2/osdsp.cpp", extra_cflags=["-O4", "-func_align 32", "-str nopool"]), + Object(Matching, "JSystem/JAudio2/osdsp_task.cpp", extra_cflags=["-O4", "-func_align 32"]), Object(Matching, "JSystem/JAudio2/JAIAudible.cpp"), Object(Matching, "JSystem/JAudio2/JAIAudience.cpp"), Object(Matching, "JSystem/JAudio2/JAISe.cpp"), @@ -810,7 +810,7 @@ config.libs = [ Object(Matching, "JSystem/JAudio2/JAISoundInfo.cpp"), Object(Matching, "JSystem/JAudio2/JAISoundParams.cpp"), Object(Matching, "JSystem/JAudio2/JAISoundStarter.cpp"), - Object(NonMatching, "JSystem/JAudio2/JAIStream.cpp"), + Object(NonMatching, "JSystem/JAudio2/JAIStream.cpp", extra_cflags=["-sym off"]), Object(Matching, "JSystem/JAudio2/JAIStreamDataMgr.cpp"), Object(NonMatching, "JSystem/JAudio2/JAIStreamMgr.cpp"), Object(Matching, "JSystem/JAudio2/JAUAudioArcInterpreter.cpp"), @@ -854,12 +854,12 @@ config.libs = [ Object(NonMatching, "Z2AudioLib/Z2SeqMgr.cpp"), Object(Matching, "Z2AudioLib/Z2StatusMgr.cpp"), Object(NonMatching, "Z2AudioLib/Z2SceneMgr.cpp"), - Object(NonMatching, "Z2AudioLib/Z2FxLineMgr.cpp"), - Object(NonMatching, "Z2AudioLib/Z2SoundInfo.cpp"), + Object(Matching, "Z2AudioLib/Z2FxLineMgr.cpp"), + Object(Matching, "Z2AudioLib/Z2SoundInfo.cpp"), Object(NonMatching, "Z2AudioLib/Z2Audience.cpp"), Object(Matching, "Z2AudioLib/Z2SoundObject.cpp"), - Object(NonMatching, "Z2AudioLib/Z2SoundObjMgr.cpp"), - Object(NonMatching, "Z2AudioLib/Z2Creature.cpp"), + Object(Matching, "Z2AudioLib/Z2SoundObjMgr.cpp"), + Object(Matching, "Z2AudioLib/Z2Creature.cpp"), Object(NonMatching, "Z2AudioLib/Z2LinkMgr.cpp"), Object(NonMatching, "Z2AudioLib/Z2EnvSeMgr.cpp"), Object(Matching, "Z2AudioLib/Z2WolfHowlMgr.cpp"), diff --git a/include/JSystem/JAudio2/JAISe.h b/include/JSystem/JAudio2/JAISe.h index 6bc0b4478a..e34cd71c45 100644 --- a/include/JSystem/JAudio2/JAISe.h +++ b/include/JSystem/JAudio2/JAISe.h @@ -10,7 +10,7 @@ class JAISeMgr; * @ingroup jsystem-jaudio * */ -class JAISe : public JSULink, public JAISound { +class JAISe : public JSULink, public JASPoolAllocObject, public JAISound { public: class TInner { public: diff --git a/include/JSystem/JAudio2/JAISeMgr.h b/include/JSystem/JAudio2/JAISeMgr.h index afd7aca753..daf71d5e76 100644 --- a/include/JSystem/JAudio2/JAISeMgr.h +++ b/include/JSystem/JAudio2/JAISeMgr.h @@ -42,7 +42,7 @@ class JAISeCategoryMgr : public JAISeqDataUser { public: /* 8029F9C4 */ void JAISeMgr_calc_(); /* 8029FB30 */ void JAISeMgr_freeDeadSe_(); - /* 8029FC88 */ u32 JAISeMgr_acceptsNewSe_(u32) const; + /* 8029FC88 */ bool JAISeMgr_acceptsNewSe_(u32) const; /* 8029FD40 */ void sortByPriority_(); /* 8029FDE0 */ void stop(u32); /* 8029FE34 */ void stop(); @@ -65,6 +65,7 @@ public: JSUList* getSeList() { return &mSeList; } int getNumSe() const { return mSeList.getNumLinks(); } JAIAudience* getAudience() { return (JAIAudience*)field_0x4.field_0x0; } + void JAISeMgr_appendSe_(JAISe* se) { mSeList.append(se); } /* 0x04 */ JASNonCopyable field_0x4; /* 0x08 */ JAISoundParamsMove mParams; @@ -113,7 +114,7 @@ public: private: /* 0x008 */ JAIAudience* mAudience; /* 0x00C */ JAISeqDataMgr* mSeqDataMgr; - /* 0x010 */ int field_0x10; + /* 0x010 */ JAISoundStrategyMgr* mStrategyMgr; /* 0x014 */ JAISeCategoryMgr mCategoryMgrs[16]; /* 0x6D4 */ JAISoundParamsMove mParams; }; // Size: 0x724 diff --git a/include/JSystem/JAudio2/JAISeqMgr.h b/include/JSystem/JAudio2/JAISeqMgr.h index f15f3d75a3..6d4a116e4e 100644 --- a/include/JSystem/JAudio2/JAISeqMgr.h +++ b/include/JSystem/JAudio2/JAISeqMgr.h @@ -50,7 +50,7 @@ public: } JAISoundParamsMove* getParams() { return &mMove; } bool isActive() { return mSeqList.getNumLinks() != 0; } - int getNumActiveSeqs() { return mSeqList.getNumLinks(); } + int getNumActiveSeqs() const { return mSeqList.getNumLinks(); } void pause(bool i_pause) { mActivity.field_0x0.flags.flag2 = i_pause; } private: diff --git a/include/JSystem/JAudio2/JAISoundChild.h b/include/JSystem/JAudio2/JAISoundChild.h index d90e850867..c1c77865d4 100644 --- a/include/JSystem/JAudio2/JAISoundChild.h +++ b/include/JSystem/JAudio2/JAISoundChild.h @@ -2,6 +2,7 @@ #define JAISOUNDCHILD_H #include "JSystem/JAudio2/JAISoundParams.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" struct JASTrack; @@ -9,7 +10,7 @@ struct JASTrack; * @ingroup jsystem-jaudio * */ -struct JAISoundChild { +struct JAISoundChild : JASPoolAllocObject { /* 802A2AB0 */ void init(); /* 802A2B28 */ void mixOut(JASTrack*); /* 802A2B7C */ void calc(); diff --git a/include/JSystem/JAudio2/JAIStreamDataMgr.h b/include/JSystem/JAudio2/JAIStreamDataMgr.h index a0e5e2b172..eee03cc168 100644 --- a/include/JSystem/JAudio2/JAIStreamDataMgr.h +++ b/include/JSystem/JAudio2/JAIStreamDataMgr.h @@ -18,7 +18,7 @@ struct JAIStreamDataMgr { */ struct JAIStreamAramMgr { virtual void* newStreamAram(u32*) = 0; - virtual void deleteStreamAram(u32) = 0; + virtual bool deleteStreamAram(u32) = 0; virtual ~JAIStreamAramMgr(); }; diff --git a/include/JSystem/JAudio2/JAIStreamMgr.h b/include/JSystem/JAudio2/JAIStreamMgr.h index 107e59945f..5dbe8d3ab0 100644 --- a/include/JSystem/JAudio2/JAIStreamMgr.h +++ b/include/JSystem/JAudio2/JAIStreamMgr.h @@ -23,10 +23,11 @@ public: /* 802A40B8 */ void stopSoundID(JAISoundID); /* 802A4118 */ void mixOut(); /* 802A4174 */ JAIStream* newStream_(); - /* 802B9978 */ bool isActive() const; + /* 802B9978 */ bool isActive() const { return mStreamList.getNumLinks() != 0; } JAISoundParamsMove* getParams() { return &mParams; } JAIStreamAramMgr* getStreamAramMgr() { return mStreamAramMgr; } + JSUList* getStreamList() { return &mStreamList; } void setStreamDataMgr(JAIStreamDataMgr* param_0) { JUT_ASSERT(139, !isActive()); streamDataMgr_ = param_0; diff --git a/include/JSystem/JAudio2/JASBNKParser.h b/include/JSystem/JAudio2/JASBNKParser.h index 9751cafc7b..9c2d23e955 100644 --- a/include/JSystem/JAudio2/JASBNKParser.h +++ b/include/JSystem/JAudio2/JASBNKParser.h @@ -8,9 +8,53 @@ class JASBasicBank; class JKRHeap; namespace JASBNKParser { + struct TFileHeader { + /* 0x0 */ u8 _00[4]; + /* 0x4 */ u32 mSize; + /* 0x8 */ u8 _08[4]; + /* 0xC */ u32 mVersion; + }; + namespace Ver1 { - /* 80299600 */ void findChunk(void const*, u32); - /* 8029963C */ void createBasicBank(void const*, JKRHeap*); + struct TOsc { + /* 0x00 */ u8 _00[4]; + /* 0x04 */ u8 mTarget; + /* 0x08 */ f32 _08; + /* 0x0C */ u32 mTableOffset; + /* 0x10 */ u32 _10; + /* 0x14 */ f32 mScale; + /* 0x18 */ f32 _18; + }; + + struct TPercData { + /* 0x00 */ f32 mVolume; + /* 0x04 */ f32 mPitch; + /* 0x08 */ u8 mPan; + /* 0x0A */ u16 mRelease; + /* 0x0C */ u32 field_0xc; + }; + + struct TChunk { + /* 0x0 */ u32 mID; + /* 0x4 */ u32 mSize; + }; + + struct TEnvtChunk : TChunk { + /* 0x8 */ u8 mData[0]; + }; + + struct TOscChunk : TChunk { + /* 0x8 */ u32 mCount; + /* 0xC */ TOsc mOsc[0]; + }; + + struct TListChunk : TChunk { + /* 0x8 */ u32 mCount; + /* 0xC */ u32 mOffsets[0]; + }; + + /* 80299600 */ static TChunk* findChunk(void const*, u32); + /* 8029963C */ static JASBasicBank* createBasicBank(void const*, JKRHeap*); }; namespace Ver0 { @@ -18,18 +62,17 @@ namespace JASBNKParser { struct TOsc {}; - /* 80299A3C */ void createBasicBank(void const*, JKRHeap*); - /* 80299E68 */ void findOscPtr(JASBasicBank*, JASBNKParser::Ver0::THeader const*, - JASBNKParser::Ver0::TOsc const*); - /* 80299F8C */ void getOscTableEndPtr(JASOscillator::Point const*); + /* 80299A3C */ static JASBasicBank* createBasicBank(void const*, JKRHeap*); + /* 80299E68 */ static void findOscPtr(JASBasicBank*, THeader const*, TOsc const*); + /* 80299F8C */ static void getOscTableEndPtr(JASOscillator::Point const*); }; - /* 80299538 */ JASBank* createBank(void const*, JKRHeap*); - /* 80299558 */ JASBasicBank* createBasicBank(void const*, JKRHeap*); + /* 80299538 */ static JASBank* createBank(void const*, JKRHeap*); + /* 80299558 */ static JASBasicBank* createBasicBank(void const*, JKRHeap*); - inline u32 getBankNumber(const void* param_0) { return ((u32*)param_0)[2]; } + inline static u32 getBankNumber(const void* param_0) { return ((u32*)param_0)[2]; } - extern u8 sUsedHeapSize[4]; + extern u32 sUsedHeapSize; }; diff --git a/include/JSystem/JAudio2/JASBasicBank.h b/include/JSystem/JAudio2/JASBasicBank.h index de518c3d0b..7aa07fc146 100644 --- a/include/JSystem/JAudio2/JASBasicBank.h +++ b/include/JSystem/JAudio2/JASBasicBank.h @@ -1,6 +1,22 @@ #ifndef JASBASICBANK_H #define JASBASICBANK_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JASBank.h" +#include "JSystem/JAudio2/JASBasicInst.h" +#include "JSystem/JKernel/JKRHeap.h" + +class JASBasicBank : public JASBank { +public: + /* 80297D78 */ JASBasicBank(); + /* 80297DA4 */ void newInstTable(u8, JKRHeap*); + /* 80297E00 */ bool getInstParam(int, int, int, JASInstParam*) const; + /* 80297E68 */ void setInst(int, JASInst*); + /* 80297E80 */ JASInst* getInst(int) const; + /* 80297F0C */ ~JASBasicBank() {} + /* 80297F68 */ u32 getType() const { return 'BSIC'; } + + /* 0x8 */ JASInst** mInstTable; + /* 0xC */ u8 mInstNumMax; +}; #endif /* JASBASICBANK_H */ diff --git a/include/JSystem/JAudio2/JASBasicInst.h b/include/JSystem/JAudio2/JASBasicInst.h index cd1b0383a7..32f1c2c7ac 100644 --- a/include/JSystem/JAudio2/JASBasicInst.h +++ b/include/JSystem/JAudio2/JASBasicInst.h @@ -45,13 +45,14 @@ struct JASInst { struct JASBasicInst : public JASInst { struct TKeymap { /* 80298250 */ ~TKeymap(); - /* 802982D4 */ TKeymap() { field_0x0 = -1; } + /* 802982D4 */ TKeymap() { mHighKey = -1; } + void setHighKey(int key) { mHighKey = key; } - s32 field_0x0; - u16 field_0x4; - u16 field_0x6; - f32 field_0x8; - f32 field_0xc; + /* 0x0 */ s32 mHighKey; + /* 0x4 */ u16 field_0x4; + /* 0x6 */ u16 field_0x6; + /* 0x8 */ f32 field_0x8; + /* 0xC */ f32 field_0xc; }; /* 80298014 */ JASBasicInst(); @@ -63,11 +64,14 @@ struct JASBasicInst : public JASInst { /* 802980F8 */ virtual bool getParam(int, int, JASInstParam*) const; /* 802982E0 */ virtual u32 getType() const { return 'BSIC'; }; - f32 mVolume; - f32 mPitch; - JASOscillator::Data const* field_0xc[2]; - u32 mKeymapCount; - TKeymap* mKeymap; + void setVolume(f32 volume) { mVolume = volume; } + void setPitch(f32 pitch) { mPitch = pitch; } + + /* 0x04 */ f32 mVolume; + /* 0x08 */ f32 mPitch; + /* 0x0C */ JASOscillator::Data const* field_0xc[2]; + /* 0x10 */ u32 mKeymapCount; + /* 0x14 */ TKeymap* mKeymap; }; diff --git a/include/JSystem/JAudio2/JASBasicWaveBank.h b/include/JSystem/JAudio2/JASBasicWaveBank.h index 68e722100a..d3a9619d65 100644 --- a/include/JSystem/JAudio2/JASBasicWaveBank.h +++ b/include/JSystem/JAudio2/JASBasicWaveBank.h @@ -10,11 +10,9 @@ */ class JASWaveHandle { public: - /* virtual */ ~JASWaveHandle() {}; - //virtual const JASWaveInfo* getWaveInfo() const = 0; - //virtual int getWavePtr() const = 0; - - void* vtable; + virtual ~JASWaveHandle() {}; + virtual const JASWaveInfo* getWaveInfo() const = 0; + virtual int getWavePtr() const = 0; }; /** @@ -23,12 +21,10 @@ public: */ class JASWaveBank { public: - /* 80298B88 */ /* virtual */ ~JASWaveBank() {}; - //virtual JASWaveHandle* getWaveHandle(u32) const = 0; - //virtual JASWaveArc* getWaveArc(u32) = 0; - //virtual u32 getArcCount() const = 0; - - void* vtable; + /* 80298B88 */ virtual ~JASWaveBank() {}; + virtual JASWaveHandle* getWaveHandle(u32) const = 0; + virtual JASWaveArc* getWaveArc(u32) = 0; + virtual u32 getArcCount() const = 0; }; /** @@ -37,7 +33,7 @@ public: */ struct JASBasicWaveBank : public JASWaveBank { struct TWaveHandle : public JASWaveHandle { - /* 802985E4 */ ~TWaveHandle(); + /* 802985E4 */ ~TWaveHandle() {} /* 80298B64 */ int getWavePtr() const; /* 80298C18 */ TWaveHandle() { mHeap = NULL; } /* 80298C64 */ const JASWaveInfo* getWaveInfo() const { return &field_0x4; } @@ -57,7 +53,7 @@ struct JASBasicWaveBank : public JASWaveBank { /* 0x04 */ int field_0x4; }; - struct TWaveGroup { + struct TWaveGroup : JASWaveArc { /* 802989C0 */ TWaveGroup(); /* 80298A0C */ ~TWaveGroup(); /* 80298A84 */ void setWaveCount(u32, JKRHeap*); @@ -65,7 +61,6 @@ struct JASBasicWaveBank : public JASWaveBank { /* 80298B2C */ void onEraseDone(); /* 80298B54 */ u32 getWaveID(int) const; - /* 0x00 */ JASWaveArc base; /* 0x74 */ JASBasicWaveBank* mBank; /* 0x78 */ TGroupWaveInfo* mCtrlWaveArray; /* 0x7C */ u16 mWaveCount; @@ -82,7 +77,7 @@ struct JASBasicWaveBank : public JASWaveBank { /* 8029883C */ void decWaveTable(JASBasicWaveBank::TWaveGroup const*); /* 802988DC */ JASWaveHandle* getWaveHandle(u32) const; /* 80298910 */ void setWaveInfo(JASBasicWaveBank::TWaveGroup*, int, u16, JASWaveInfo const&); - /* 80298C6C */ JASWaveArc* getWaveArc(u32 param_0); // { return getWaveGroup(param_0); } + /* 80298C6C */ JASWaveArc* getWaveArc(u32 param_0) { return getWaveGroup(param_0); } /* 80298C8C */ u32 getArcCount() const { return mGroupCount; } /* 0x04 */ OSMutex field_0x4; diff --git a/include/JSystem/JAudio2/JASDSPInterface.h b/include/JSystem/JAudio2/JASDSPInterface.h index e27db61292..996053975b 100644 --- a/include/JSystem/JAudio2/JASDSPInterface.h +++ b/include/JSystem/JAudio2/JASDSPInterface.h @@ -120,4 +120,6 @@ namespace JASDsp { extern f32 sDSPVolume; }; +u16 DSP_CreateMap2(u32 msg); + #endif /* JASDSPINTERFACE_H */ diff --git a/include/JSystem/JAudio2/JASDrumSet.h b/include/JSystem/JAudio2/JASDrumSet.h index 30e1259cf2..4d35f9dc6e 100644 --- a/include/JSystem/JAudio2/JASDrumSet.h +++ b/include/JSystem/JAudio2/JASDrumSet.h @@ -14,13 +14,17 @@ struct JASDrumSet : public JASInst { /* 802984C4 */ TPerc(); /* 802984E4 */ void setRelease(u32); - f32 mVolume; - f32 mPitch; - f32 mPan; - u16 field_0xc; - u16 field_0xe; - f32 field_0x10; - f32 field_0x14; + void setVolume(f32 volume) { mVolume = volume; } + void setPitch(f32 pitch) { mPitch = pitch; } + void setPan(f32 pan) { mPan = pan; } + + /* 0x00 */ f32 mVolume; + /* 0x04 */ f32 mPitch; + /* 0x08 */ f32 mPan; + /* 0x0C */ u16 field_0xc; + /* 0x0E */ u16 field_0xe; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; }; /* 802982EC */ JASDrumSet(); @@ -30,8 +34,8 @@ struct JASDrumSet : public JASInst { /* 802984B4 */ void setPerc(int, JASDrumSet::TPerc*); /* 802984EC */ virtual u32 getType() const; - TPerc** field_0x4; - u8 field_0x8; + /* 0x4 */ TPerc** field_0x4; + /* 0x8 */ u8 field_0x8; }; #endif /* JASDRUMSET_H */ diff --git a/include/JSystem/JAudio2/JASHeapCtrl.h b/include/JSystem/JAudio2/JASHeapCtrl.h index e38d630c8f..9c174511ae 100644 --- a/include/JSystem/JAudio2/JASHeapCtrl.h +++ b/include/JSystem/JAudio2/JASHeapCtrl.h @@ -1,6 +1,7 @@ #ifndef JASHEAPCTRL_H #define JASHEAPCTRL_H +#include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JSupport/JSUList.h" #include "dolphin/os/OSInterrupt.h" #include "dolphin/os/OSMutex.h" @@ -28,12 +29,13 @@ public: void* getBase() { return mBase; } bool isAllocated() { return mBase; } + u32 getSize() { return mSize; } /* 0x00 */ JSUTree mTree; /* 0x1C */ OSMutex mMutex; /* 0x34 */ JASDisposer* mDisposer; /* 0x38 */ u8* mBase; - /* 0x3c */ u32 mSize; + /* 0x3C */ u32 mSize; /* 0x40 */ JASHeap* field_0x40; }; @@ -49,9 +51,9 @@ struct JASGenericMemPool { /* 80290994 */ void free(void*, u32); /* 0x00 */ void* field_0x0; - /* 0x04 */ int freeMemCount; - /* 0x08 */ int totalMemCount; - /* 0x0C */ int field_0xc; + /* 0x04 */ u32 freeMemCount; + /* 0x08 */ u32 totalMemCount; + /* 0x0C */ u32 usedMemCount; }; @@ -151,6 +153,12 @@ class JASMemChunkPool { u8 mBuffer[ChunkSize]; }; public: + JASMemChunkPool() { + OSInitMutex(&mMutex); + field_0x18 = NULL; + createNewChunk(); + } + bool createNewChunk() { bool uVar2; if (field_0x18 != NULL && field_0x18->isEmpty()) { @@ -217,7 +225,7 @@ namespace JASKernel { /* 80290AD0 */ void setupAramHeap(u32, u32); /* 80290B08 */ JASHeap* getAramHeap(); - extern u8 audioAramHeap[68]; + extern JASHeap audioAramHeap; extern u32 sAramBase; extern JKRHeap* sSystemHeap; extern JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable>* sCommandHeap; diff --git a/include/JSystem/JAudio2/JASSeqReader.h b/include/JSystem/JAudio2/JASSeqReader.h index 416e1e81f0..e6c445bb24 100644 --- a/include/JSystem/JAudio2/JASSeqReader.h +++ b/include/JSystem/JAudio2/JASSeqReader.h @@ -18,7 +18,7 @@ public: /* 802962B0 */ int readMidiValue(); void jump(u32 param_1) { - field_0x04 = (u8*)field_0x00 + param_1; + field_0x04 = field_0x00 + param_1; } void jump(void* param_1) { @@ -26,14 +26,14 @@ public: } u32 get24(int param_0) { - return (*(u32*)((int)field_0x00 + param_0 - 1)) & 0xffffff; + return (*(u32*)(field_0x00 + param_0 - 1)) & 0xffffff; } - u32* getBase() { return field_0x00; } - void* getAddr(u32 param_0) { return (u8*)field_0x00 + param_0; } - u8 getByte(u32 param_0) { return *((u8*)field_0x00 + param_0); } - u16 get16(u32 param_0) { return *(u16*)((u8*)field_0x00 + param_0); } - u32 get32(u32 param_0) { return *(u32*)((u8*)field_0x00 + param_0); } + u32* getBase() { return (u32*)field_0x00; } + void* getAddr(u32 param_0) { return field_0x00 + param_0; } + u8 getByte(u32 param_0) { return *(field_0x00 + param_0); } + u16 get16(u32 param_0) { return *(u16*)(field_0x00 + param_0); } + u32 get32(u32 param_0) { return *(u32*)(field_0x00 + param_0); } u8* getCur() { return field_0x04; } u32 readByte() { return *field_0x04++; } u32 read16() { @@ -49,7 +49,7 @@ public: } u16 getLoopCount() const { return field_0x08 == 0 ? 0 : field_0x2c[field_0x08 - 1]; } - /* 0x00 */ u32* field_0x00; + /* 0x00 */ u8* field_0x00; /* 0x04 */ u8* field_0x04; /* 0x08 */ u32 field_0x08; /* 0x0C */ u16* field_0x0c[8]; diff --git a/include/JSystem/JAudio2/JASSimpleWaveBank.h b/include/JSystem/JAudio2/JASSimpleWaveBank.h index 814861760d..72e83c6b5b 100644 --- a/include/JSystem/JAudio2/JASSimpleWaveBank.h +++ b/include/JSystem/JAudio2/JASSimpleWaveBank.h @@ -1,6 +1,31 @@ #ifndef JASSIMPLEWAVEBANK_H #define JASSIMPLEWAVEBANK_H -#include "dolphin/types.h" +#include "JSystem/JAudio2/JASBasicWaveBank.h" +#include "JSystem/JAudio2/JASWaveInfo.h" +#include "JSystem/JKernel/JKRHeap.h" + +struct JASSimpleWaveBank : JASWaveBank, JASWaveArc { + struct TWaveHandle : JASWaveHandle { + /* 80298D84 */ ~TWaveHandle() {} + /* 80298F38 */ int getWavePtr() const; + /* 80298F5C */ TWaveHandle(); + /* 80298F90 */ const JASWaveInfo* getWaveInfo() const; + + /* 0x04 */ JASWaveInfo mWaveInfo; + /* 0x28 */ JASHeap* mHeap; + }; + + /* 80298C94 */ JASSimpleWaveBank(); + /* 80298CF4 */ ~JASSimpleWaveBank(); + /* 80298DE0 */ void setWaveTableSize(u32, JKRHeap*); + /* 80298E60 */ JASWaveHandle* getWaveHandle(u32) const; + /* 80298E84 */ void setWaveInfo(u32, JASWaveInfo const&); + /* 80298F18 */ JASWaveArc* getWaveArc(u32); + /* 80298F98 */ u32 getArcCount() const; + + /* 0x78 */ TWaveHandle* mWaveTable; + /* 0x7C */ u32 mWaveTableSize; +}; #endif /* JASSIMPLEWAVEBANK_H */ diff --git a/include/JSystem/JAudio2/JASTrack.h b/include/JSystem/JAudio2/JASTrack.h index 43f3ca69b0..71a6b9a89b 100644 --- a/include/JSystem/JAudio2/JASTrack.h +++ b/include/JSystem/JAudio2/JASTrack.h @@ -13,7 +13,7 @@ struct JASSoundParams; namespace JASDsp { class TChannel; - extern u32 FILTER_MODE_IIR; + extern const u32 FILTER_MODE_IIR; }; /** diff --git a/include/JSystem/JAudio2/JASWSParser.h b/include/JSystem/JAudio2/JASWSParser.h index 3486a2c67c..81e66e47fd 100644 --- a/include/JSystem/JAudio2/JASWSParser.h +++ b/include/JSystem/JAudio2/JASWSParser.h @@ -17,56 +17,66 @@ public: template class TOffset { public: - T* ptr(void* param_0) { + T* ptr(void const* param_0) { return JSUConvertOffsetToPtr(param_0, mOffset); } - void* mOffset; + + private: + /* 0x0 */ u32 mOffset; + }; + + struct TCtrlWave { + /* 0x0 */ u32 _00; + }; + + struct TWave { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x04 */ f32 _04; + /* 0x08 */ u32 mOffset; + /* 0x0C */ u32 _0C; + /* 0x10 */ u32 _10; + /* 0x14 */ u32 _14; + /* 0x18 */ u32 _18; + /* 0x1C */ u32 _1C; + /* 0x20 */ s16 _20; + /* 0x22 */ s16 _22; + }; + + struct TWaveArchive { + /* 0x00 */ char mFileName[0x74]; // unknown length + /* 0x74 */ TOffset mWaveOffsets[0]; + }; + + struct TWaveArchiveBank { + /* 0x0 */ u8 _00[8]; + /* 0x8 */ TOffset mArchiveOffsets[0]; + }; + + struct TCtrl { + /* 0x0 */ u8 _00[4]; + /* 0x4 */ u32 mWaveCount; + /* 0x8 */ TOffset mCtrlWaveOffsets[0]; + }; + + struct TCtrlScene { + /* 0x0 */ u8 _00[0xC]; + /* 0xC */ TOffset mCtrlOffset; + }; + + struct TCtrlGroup { + /* 0x0 */ u8 _00[8]; + /* 0x8 */ u32 mGroupCount; + /* 0xC */ TOffset mCtrlSceneOffsets[0]; }; /** @fabricated */ struct THeader { - u8 _00[0x10]; // _00 - unknown/padding - u32 mArchiveBankOffset; // _10 - u32 mCtrlGroupOffset; // _14 - }; - struct TCtrlWave { - u32 _00; // _00 - }; - struct TWave { - u8 _00; // _00 - u8 _01; // _01 - u8 _02; // _02 - f32 _04; // _04 - u32 mOffset; // _08 - u32 _0C; // _0C - u32 _10; // _10 - u32 _14; // _14 - u32 _18; // _18 - u32 _1C; // _1C - s16 _20; // _20 - s16 _22; // _22 - }; - struct TWaveArchive { - char mFileName[0x74]; // _00 - unknown length - u32 mWaveOffsets[1]; // _74 - dynamic length - }; - struct TWaveArchiveBank { - u8 _00[8]; // _00 - unknown/padding - u32 mArchiveOffsets[1]; // _08 - dynamic length - }; - struct TCtrl { - u8 _00[4]; // _00 - unknown/padding - u32 mWaveCount; // _04 - u32 mCtrlWaveOffsets[1]; // _08 - dynamic length - }; - struct TCtrlScene { - u8 _00[12]; // _00 - unknown/padding - u32 mCtrlOffset; // _0C - }; - struct TCtrlGroup { - u8 _00[8]; // _00 - unknown/padding - u32 mCtrlGroupCount; // _08 - u32 mCtrlSceneOffsets[1]; // _0C - dynamic length + /* 0x00 */ u8 _00[0xC]; + /* 0x0C */ u32 mWaveTableSize; + /* 0x10 */ TOffset mArchiveBankOffset; + /* 0x14 */ TOffset mCtrlGroupOffset; }; /* 80298FB0 */ static u32 getGroupCount(void const*); @@ -74,7 +84,7 @@ public: /* 80299034 */ static JASBasicWaveBank* createBasicWaveBank(void const*, JKRHeap*); /* 80299264 */ static JASSimpleWaveBank* createSimpleWaveBank(void const*, JKRHeap*); - static u8 sUsedHeapSize[4 + 4 /* padding */]; + static u32 sUsedHeapSize; }; #endif /* JASWSPARSER_H */ diff --git a/include/JSystem/JAudio2/JASWaveArcLoader.h b/include/JSystem/JAudio2/JASWaveArcLoader.h index 26910d9c94..c16721bb74 100644 --- a/include/JSystem/JAudio2/JASWaveArcLoader.h +++ b/include/JSystem/JAudio2/JASWaveArcLoader.h @@ -15,7 +15,7 @@ class JKRSolidHeap; struct JASDisposer { JASDisposer() {} /* 8029A7B8 */ virtual ~JASDisposer() {} - /* 80290BCC */ virtual void onDispose(); + /* 80290BCC */ virtual void onDispose() {} }; #define DIR_MAX 64 @@ -45,14 +45,16 @@ struct JASWaveArc : JASDisposer { /* 8029A404 */ bool sendLoadCmd(); /* 8029A4C0 */ bool load(JASHeap*); /* 8029A580 */ bool loadTail(JASHeap*); - /* 8029A640 */ void erase(); + /* 8029A640 */ bool erase(); /* 8029A6AC */ void setEntryNum(s32); /* 8029A70C */ void setFileName(char const*); /* 8029A1B4 */ virtual ~JASWaveArc(); /* 8029A664 */ virtual void onDispose(); - /* 80298FA0 */ virtual void onLoadDone(); - /* 80298FA4 */ virtual void onEraseDone(); + /* 80298FA0 */ virtual void onLoadDone() {} + /* 80298FA4 */ virtual void onEraseDone() {} + + s32 getStatus() { return mStatus; } struct loadToAramCallbackParams { // not official struct name @@ -64,7 +66,7 @@ struct JASWaveArc : JASDisposer { /* 0x04 */ JASHeap mHeap; /* 0x48 */ u32 _48; - /* 0x4C */ volatile s32 _4c; + /* 0x4C */ volatile s32 mStatus; /* 0x50 */ int mEntryNum; /* 0x54 */ u32 mFileLength; /* 0x58 */ u16 _58; diff --git a/include/JSystem/JAudio2/JASWaveInfo.h b/include/JSystem/JAudio2/JASWaveInfo.h index 4e6f225cb5..84f3814fb0 100644 --- a/include/JSystem/JAudio2/JASWaveInfo.h +++ b/include/JSystem/JAudio2/JASWaveInfo.h @@ -1,6 +1,8 @@ #ifndef JASWAVEINFO_H #define JASWAVEINFO_H +#include "dolphin/types.h" + /** * @ingroup jsystem-jaudio * @@ -27,4 +29,4 @@ struct JASWaveInfo { static u32 one; }; -#endif /* JASWAVEINFO_H */ \ No newline at end of file +#endif /* JASWAVEINFO_H */ diff --git a/include/JSystem/JAudio2/JAUBankTable.h b/include/JSystem/JAudio2/JAUBankTable.h index 2d9434210c..2c77918ddd 100644 --- a/include/JSystem/JAudio2/JAUBankTable.h +++ b/include/JSystem/JAudio2/JAUBankTable.h @@ -1,6 +1,7 @@ #ifndef JAUBANKTABLE_H #define JAUBANKTABLE_H +#include "JSystem/JAudio2/JASBankList.h" #include "JSystem/JAudio2/JASGadget.h" #include "JSystem/JSupport/JSUList.h" @@ -10,17 +11,15 @@ class JASBank; * @ingroup jsystem-jaudio * */ -class JAUBankTable /* : public JASBankList */ { +class JAUBankTable : public JASBankList { public: JAUBankTable(u32 param_0, JASBank** param_1, u32 param_2) : mBankPtrTable(param_1, param_2) { field_0xc = param_0; } - /* 802A4AA0 */ JASBank* getBank(u32) const; + /* 802A4AA0 */ JASBank* getBank(u32 bank) const { return mBankPtrTable.get(bank); } - JASBank* getBank(u32 param_0) { return mBankPtrTable.get(param_0); } void registBank(u32 param_0, JASBank* param_1) { mBankPtrTable.set(param_0, param_1); } - /* 0x0 */ void* vtable; /* 0x4 */ JASPtrTable mBankPtrTable; /* 0xC */ u32 field_0xc; }; diff --git a/include/JSystem/JAudio2/JAUSectionHeap.h b/include/JSystem/JAudio2/JAUSectionHeap.h index aaf2c03082..b18cd9039b 100644 --- a/include/JSystem/JAudio2/JAUSectionHeap.h +++ b/include/JSystem/JAudio2/JAUSectionHeap.h @@ -23,7 +23,7 @@ class JKRSolidHeap; * @ingroup jsystem-jaudio * */ -class JAUSection /* : public JKRDisposer, protected JSULink */ { +class JAUSection : public JKRDisposer, protected JSULink { public: struct TSectionData { /* 802A4EE8 */ TSectionData(); @@ -46,7 +46,7 @@ public: /* 802A5060 */ JAUSection(JAUSectionHeap*, u32, s32); /* 802A50F8 */ void finishBuild(); - /* 802A5160 */ /* virtual */ void dispose(); + /* 802A5160 */ virtual void dispose(); /* 802A51E4 */ JAUSoundTable* newSoundTable(void const*, u32, bool); /* 802A52A0 */ JAUSoundNameTable* newSoundNameTable(void const*, u32, bool); /* 802A535C */ JAIStreamDataMgr* newStreamFileTable(void const*, bool); @@ -61,15 +61,13 @@ public: /* 802A5B84 */ JASVoiceBank* newVoiceBank(u32, u32); /* 802A5CAC */ bool beginNewBankTable(u32, u32); /* 802A5D9C */ JAUBankTable* endNewBankTable(); - /* 802A6468 */ /* virtual */ ~JAUSection(); + /* 802A6468 */ virtual ~JAUSection() {} bool isBuilding() { return field_0x2c; } bool isOpen(); JAUSectionHeap* asSectionHeap() { return (JAUSection*)sectionHeap_ == this ? sectionHeap_ : NULL; } JKRHeap* getHeap_(); - /* 0x00 */ JKRDisposer base1; - /* 0x18 */ JSULink base2; /* 0x28 */ u32 field_0x28; /* 0x2C */ bool field_0x2c; /* 0x30 */ JAUSectionHeap* sectionHeap_; @@ -81,7 +79,7 @@ public: * @ingroup jsystem-jaudio * */ -class JAUSectionHeap /* : public JAUSection, JASGlobalInstance, JAISeqDataMgr */ { +class JAUSectionHeap : public JAUSection, public JASGlobalInstance, public JAISeqDataMgr { public: struct TSectionHeapData { /* 802A5DF4 */ TSectionHeapData(); @@ -102,10 +100,13 @@ public: /* 802A6094 */ JAUSection* getOpenSection(); /* 802A60A0 */ bool setSeqDataUser(JAISeqDataUser*); /* 802A60AC */ bool newDynamicSeqBlock(u32); - /* 802A61D0 */ s32 getSeqData(JAISoundID, JAISeqData*); + /* 802A61D0 */ SeqDataReturnValue getSeqData(JAISoundID, JAISeqData*); /* 802A6270 */ int releaseSeqData(); - /* 802A6278 */ ~JAUSectionHeap(); + /* 802A6278 */ ~JAUSectionHeap() {} + JAISeqDataMgr* getSeqSeqDataMgr() { return this; } + JAISeqDataMgr* getSeSeqDataMgr() { return sectionHeapData_.seSeqDataMgr_; } + JAIStreamDataMgr* getStreamDataMgr() { return sectionHeapData_.streamDataMgr_; } TSectionHeapData const& getSectionHeapData() const { return sectionHeapData_; } JAUWaveBankTable& getWaveBankTable() { return sectionHeapData_.waveBankTable; } JKRHeap* getHeap() { @@ -115,8 +116,6 @@ public: return NULL; } - /* 0x00 */ JAUSection base1; - /* 0xDC */ u8 base2[0xE0 - 0xDC]; // JAISeqDataMgr /* 0xE0 */ JKRHeap* mHeap; /* 0xE4 */ int field_0xe4; /* 0xE8 */ JSUList mSectionList; diff --git a/include/JSystem/JAudio2/JAUSoundTable.h b/include/JSystem/JAudio2/JAUSoundTable.h index 7b508b9756..13c60ea68e 100644 --- a/include/JSystem/JAudio2/JAUSoundTable.h +++ b/include/JSystem/JAudio2/JAUSoundTable.h @@ -75,8 +75,6 @@ struct JAUSoundTable_ { const void* field_0x0; Root* field_0x4; - u32 field_0x8; - u32 field_0xc; }; /** diff --git a/include/JSystem/JAudio2/JAUStreamAramMgr.h b/include/JSystem/JAudio2/JAUStreamAramMgr.h index b9bb6e58cf..86324e7601 100644 --- a/include/JSystem/JAudio2/JAUStreamAramMgr.h +++ b/include/JSystem/JAudio2/JAUStreamAramMgr.h @@ -1,6 +1,9 @@ #ifndef JAUSTREAMSTATICARAMMGR_H #define JAUSTREAMSTATICARAMMGR_H +#include "JSystem/JAudio2/JAIStreamDataMgr.h" +#include "JSystem/JAudio2/JASAramStream.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JUtility/JUTAssert.h" #include "bitset.h" @@ -13,17 +16,17 @@ class JAUStreamAramMgrBase_ : public JAIStreamAramMgr { public: JAUStreamAramMgrBase_() { for (int i = 0; i < A0; i++) { - field_0x4.reset(0); + field_0x4.reset(i); } } ~JAUStreamAramMgrBase_() { releaseAram_JAUStreamAramMgrBase_(); } bool isStreamUsingAram() { return field_0x4.any(); } void releaseAram_JAUStreamAramMgrBase_() { JUT_ASSERT(38, ! isStreamUsingAram()); - for (int i = 0; i >= 0; i--) { + for (int i = 0; i < A0; i++) { if (mHeaps[i].isAllocated()) { - JASHeap* heap = mHeaps[i]; - heap.free(); + JASHeap* heap = &mHeaps[0]; // should probably be mHeaps[i] but that doesn't match + heap->free(); if (!heap) { JUT_ASSERT(47, 0); } @@ -45,28 +48,29 @@ class JAUStreamStaticAramMgr_ : public JAUStreamAramMgrBase_ { public: JAUStreamStaticAramMgr_() { field_0x4c = 0; } virtual void* newStreamAram(u32* param_0) { - for (int i = 0; i < field_0x4c; i++) { + for (u32 i = 0; i < field_0x4c; i++) { if (this->field_0x4.test(i)) { continue; } this->field_0x4.set(i, true); - param_0 = this->mHeaps[i].getSize(); + *param_0 = this->mHeaps[i].getSize(); return this->mHeaps[i].getBase(); } - return 0; + return NULL; } - virtual void deleteStreamAram(u32 param_0) { - for (int i = 0; i < field_0x4c; i++) { + // NONMATCHING regalloc + virtual bool deleteStreamAram(u32 param_0) { + for (u32 i = 0; i < field_0x4c; i++) { if (!this->field_0x4.test(i)) { continue; } - if (this->mHeaps[i].getBase() == param_0) { + if ((u32)this->mHeaps[i].getBase() != param_0) { continue; } this->field_0x4.reset(i); - return 1; + return true; } - return 0; + return false; } bool isAramReserved() const { return field_0x4c; } void reserveAram(JASHeap* heap, int numReserve, u32 param_2) { diff --git a/include/JSystem/JAudio2/dspproc.h b/include/JSystem/JAudio2/dspproc.h index 4330bc177d..a515c6c3cf 100644 --- a/include/JSystem/JAudio2/dspproc.h +++ b/include/JSystem/JAudio2/dspproc.h @@ -1,8 +1,11 @@ #ifndef DSPPROC_H #define DSPPROC_H -#include "dolphin/dsp.h" +#include "dolphin/types.h" +void DSPReleaseHalt2(u32 msg); +void DsetupTable(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4); +void DsetMixerLevel(f32 level); void DsyncFrame2ch(u32 param_0, u32 param_1, u32 param_2); void DsyncFrame4ch(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4); diff --git a/include/JSystem/JAudio2/dsptask.h b/include/JSystem/JAudio2/dsptask.h index 816f823393..336d923228 100644 --- a/include/JSystem/JAudio2/dsptask.h +++ b/include/JSystem/JAudio2/dsptask.h @@ -5,5 +5,6 @@ void DspBoot(void (*)(void*)); void DspFinishWork(u16 param_0); +int DSPSendCommands2(u32* msgs, u32 param_1, void (*param_2)(u16)); #endif /* DSPTASK_H */ diff --git a/include/JSystem/JGeometry.h b/include/JSystem/JGeometry.h index 1f98de9fc4..673f99c328 100644 --- a/include/JSystem/JGeometry.h +++ b/include/JSystem/JGeometry.h @@ -115,6 +115,12 @@ struct TVec3 : public Vec { z = other.z; } + void set(const Vec& other) { + x = other.x; + y = other.y; + z = other.z; + } + void set(f32 x_, f32 y_, f32 z_) { x = x_; y = y_; @@ -455,6 +461,7 @@ struct TUtil { template<> struct TUtil { + static inline f32 epsilon() { return 32.0f * FLT_EPSILON; } static inline f32 PI() { return 3.1415927f; } static inline f32 clamp(f32 v, f32 min, f32 max) { diff --git a/include/JSystem/JMath/JMATrigonometric.h b/include/JSystem/JMath/JMATrigonometric.h index 89c4944773..2b162c56c5 100644 --- a/include/JSystem/JMath/JMATrigonometric.h +++ b/include/JSystem/JMath/JMATrigonometric.h @@ -39,16 +39,16 @@ struct TSinCosTable { inline T sinDegree(T degree) { if (degree < (T)0.0) { - return -table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].first; + return -table[(u16)(-((T)(1 << N) / (T)360.0) * degree) & ((1 << N) - 1)].first; } - return table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].first; + return table[(u16)(((T)(1 << N) / (T)360.0) * degree) & ((1 << N) - 1)].first; } inline T cosDegree(T degree) { if (degree < (T)0.0) { degree = -degree; } - return table[(u16)(((T)(1 << N) / 360.0) * degree) & ((1 << N) - 1)].second; + return table[(u16)(((T)(1 << N) / (T)360.0) * degree) & ((1 << N) - 1)].second; } inline T sinRadian(T radian) { diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index 3363fd94e1..51f5ce78e8 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -8,6 +8,10 @@ void JMAEulerToQuat(s16 param_0, s16 param_1, s16 param_2, Quaternion* param_3); void JMAQuatLerp(const Quaternion*, const Quaternion*, f32, Quaternion*); void JMAFastVECNormalize(register const Vec* src, register Vec* dst); +inline int JMAAbs(int value) { + return (value >> 0x1f ^ value) - (value >> 0x1f); +} + inline f32 JMAFastReciprocal(f32 value) { return __fres(value); } diff --git a/include/JSystem/JSupport/JSUInputStream.h b/include/JSystem/JSupport/JSUInputStream.h index cbae2e37c3..411f8c02ad 100644 --- a/include/JSystem/JSupport/JSUInputStream.h +++ b/include/JSystem/JSupport/JSUInputStream.h @@ -70,6 +70,16 @@ public: return val; } + JSUInputStream* operator>>(u8& dest) { + read(&dest, 1); + return this; + } + + JSUInputStream* operator>>(s16& dest) { + read(&dest, 2); + return this; + } + // TODO: return value probably wrong /* 802DC298 */ s32 read(void*, s32); }; // Size = 0x8 diff --git a/include/JSystem/JSupport/JSUList.h b/include/JSystem/JSupport/JSUList.h index 25a9dea789..60abf9af4d 100644 --- a/include/JSystem/JSupport/JSUList.h +++ b/include/JSystem/JSupport/JSUList.h @@ -45,13 +45,13 @@ class JSULink : public JSUPtrLink { public: JSULink(T* object) : JSUPtrLink((void*)object) {} - T* getObject() const { return (T*)getObjectPtr(); } + T* getObject() const { return static_cast(getObjectPtr()); } - JSUList* getSupervisor() const { return (JSUList*)this->getList(); } + JSUList* getSupervisor() const { return static_cast*>(this->getList()); } - JSULink* getNext() const { return (JSULink*)this->JSUPtrLink::getNext(); } + JSULink* getNext() const { return static_cast(this->JSUPtrLink::getNext()); } - JSULink* getPrev() const { return (JSULink*)this->JSUPtrLink::getPrev(); } + JSULink* getPrev() const { return static_cast(this->JSUPtrLink::getPrev()); } }; // diff --git a/include/JSystem/TPosition3.hh b/include/JSystem/TPosition3.hh index ef8aba2902..fdf4457e00 100644 --- a/include/JSystem/TPosition3.hh +++ b/include/JSystem/TPosition3.hh @@ -20,7 +20,7 @@ struct SMatrix34C { typedef f32 ArrType[4]; void set(const ArrType* src) { - + JMath::gekko_ps_copy12(data, src); } operator ArrType*() { return data; } @@ -81,4 +81,4 @@ typedef TPosition3 > > > TPosition3f32; } // namespace JGeometry -#endif \ No newline at end of file +#endif diff --git a/include/Z2AudioLib/Z2Audience.h b/include/Z2AudioLib/Z2Audience.h index 3e12447e50..b157e9611b 100644 --- a/include/Z2AudioLib/Z2Audience.h +++ b/include/Z2AudioLib/Z2Audience.h @@ -226,7 +226,7 @@ struct Z2Audience : public JAIAudience, public JASGlobalInstance { /* 0x134 */ Z2AudioCamera mAudioCamera[1]; /* 0x1A8 */ Z2SpotMic mSpotMic[1]; /* 0x1D0 */ Z2SpotMic* mLinkMic; - /* 0x1D4 */ s32 mNumPlayers; + /* 0x1D4 */ s32 mMaxChannels; /* 0x1D8 */ u8 field_0x1d8[4]; /* 0x1DC */ bool mUsingOffMicVol; }; // Size: 0x1E0 diff --git a/include/Z2AudioLib/Z2FxLineMgr.h b/include/Z2AudioLib/Z2FxLineMgr.h index ecf62b51e2..0931742f6e 100644 --- a/include/Z2AudioLib/Z2FxLineMgr.h +++ b/include/Z2AudioLib/Z2FxLineMgr.h @@ -8,7 +8,22 @@ class JKRHeap; struct Z2FxLineEditNode {}; -struct Z2FxLineConfig {}; +struct Z2FxLineConfig { + /* 0x00 */ u8 field_0x0; + /* 0x01 */ u8 field_0x1; + /* 0x02 */ u8 field_0x2; + /* 0x03 */ u8 field_0x3; + /* 0x04 */ s16 field_0x4; + /* 0x06 */ s16 field_0x6; + /* 0x08 */ s16 field_0x8[8]; + /* 0x18 */ u8 field_0x18; + /* 0x19 */ u8 field_0x19; + /* 0x1A */ u8 field_0x1a; + /* 0x1B */ u8 field_0x1b; + /* 0x1C */ s16 field_0x1c; + /* 0x1E */ s16 field_0x1e; + /* 0x20 */ s16 field_0x20[8]; +}; // Size: 0x30 struct Z2FxLineMgr : public JASGlobalInstance { /* 802BA7DC */ Z2FxLineMgr(); @@ -19,10 +34,10 @@ struct Z2FxLineMgr : public JASGlobalInstance { /* 802BAE48 */ void setUnderWaterFx(bool); /* 802BAEB8 */ void setSceneFx(s32); - /* 0x00 */ int field_0x0; + /* 0x00 */ Z2FxLineConfig* mConfig; /* 0x04 */ void* mFxLineBuffer[4]; /* 0x14 */ s8 mLineID; - /* 0x15 */ s8 mFxDataNum; + /* 0x15 */ u8 mFxDataNum; /* 0x16 */ bool mSetUnderWaterFx; /* 0x18 */ Z2FxLineEditNode* mHIOEdit; }; // Size: 0x1C diff --git a/include/Z2AudioLib/Z2SceneMgr.h b/include/Z2AudioLib/Z2SceneMgr.h index 5f6a2b6092..31381b9f14 100644 --- a/include/Z2AudioLib/Z2SceneMgr.h +++ b/include/Z2AudioLib/Z2SceneMgr.h @@ -24,11 +24,11 @@ public: void sceneBgmStart(); void loadStaticWaves(); BOOL checkFirstWaves(); - void eraseSeWave(u32); - void eraseBgmWave(u32); - void getWaveLoadStatus(u32, u32); - void loadSeWave(u32); - void loadBgmWave(u32); + bool eraseSeWave(u32); + bool eraseBgmWave(u32); + s32 getWaveLoadStatus(u32, u32); + bool loadSeWave(u32); + bool loadBgmWave(u32); bool isSceneExist() const { return sceneExist; } int getCurrentSceneNum() const { return sceneNum; } @@ -38,27 +38,29 @@ public: bool isInDarkness() const { return inDarkness; } s8 getRoomReverb() const { return dComIfGp_getReverb(roomNum); } bool isMovieDemo() { return sceneNum == 2 || sceneNum == 8 || sceneNum == 9; } + s32 getSeLoadStatus(u32 wave) { return getWaveLoadStatus(wave, 0); } + s32 getBgmLoadStatus(u32 wave) { return getWaveLoadStatus(wave, 1); } private: - /* 0x00 */ long BGM_ID; + /* 0x00 */ JAISoundID BGM_ID; /* 0x04 */ int sceneNum; /* 0x08 */ int timer; /* 0x0C */ s8 roomNum; - /* 0x0D */ u8 SeWave_1; - /* 0x0E */ u8 SeWaveToErase_1; - /* 0x0F */ u8 SeWave_2; - /* 0x10 */ u8 SeWaveToErase_2; - /* 0x11 */ u8 BgmWave_1; - /* 0x12 */ u8 BgmWaveToErase_1; - /* 0x13 */ u8 BgmWave_2; - /* 0x14 */ u8 BgmWaveToErase_2; - /* 0x15 */ u8 SeWave_3; - /* 0x16 */ u8 SeWaveToErase_3; - /* 0x17 */ u8 field_0x17; + /* 0x0D */ u8 requestSeWave_1; + /* 0x0E */ u8 loadedSeWave_1; + /* 0x0F */ u8 requestSeWave_2; + /* 0x10 */ u8 loadedSeWave_2; + /* 0x11 */ u8 requestBgmWave_1; + /* 0x12 */ u8 loadedBgmWave_1; + /* 0x13 */ u8 requestBgmWave_2; + /* 0x14 */ u8 loadedBgmWave_2; + /* 0x15 */ u8 requestDemoWave; + /* 0x16 */ u8 loadedDemoWave; + /* 0x17 */ s8 load1stWait; /* 0x18 */ u8 field_0x18; /* 0x19 */ u8 field_0x19; - /* 0x1A */ u8 field_0x1a; - /* 0x1B */ u8 field_0x1b; + /* 0x1A */ bool field_0x1a; + /* 0x1B */ bool field_0x1b; /* 0x1C */ bool inGame; /* 0x1D */ bool sceneExist; /* 0x1E */ bool inDarkness; @@ -68,4 +70,88 @@ inline Z2SceneMgr* Z2GetSceneMgr() { return JASGlobalInstance::getInstance(); } +enum Spot { // aka scene + /* 0x00 */ SPOT_ORDON_RANCH, + /* 0x01 */ SPOT_ORDON_VILLAGE, + /* 0x02 */ SPOT_ORDON_INTERIOR, + /* 0x03 */ SPOT_ORDON_SPRING, + /* 0x04 */ SPOT_TWILIGHT_HYRULE_CASTLE, + /* 0x05 */ SPOT_FARON_WOODS, + /* 0x06 */ SPOT_CORO_SHOP, + /* 0x07 */ SPOT_SACRED_GROVE, + /* 0x08 */ SPOT_KAKARIKO_VILLAGE, + /* 0x09 */ SPOT_KAKARIKO_INTERIOR, + /* 0x0A */ SPOT_SANCTUARY_BASEMENT, + /* 0x0B */ SPOT_DEATH_MOUNTAIN, + /* 0x0C */ SPOT_SUMO_HALL, + /* 0x0D */ SPOT_KAKARIKO_GRAVEYARD, + /* 0x0E */ SPOT_HIDDEN_VILLAGE, + /* 0x0F */ SPOT_IMPAZ_HOUSE, + /* 0x10 */ SPOT_LAKE_HYLIA, + /* 0x11 */ SPOT_ZORAS_RIVER, + /* 0x12 */ SPOT_UPPER_ZORAS_RIVER, + /* 0x13 */ SPOT_FISHING_POND, + /* 0x14 */ SPOT_HENA_CABIN, + /* 0x15 */ SPOT_ZORAS_DOMAIN, + /* 0x16 */ SPOT_CASTLE_TOWN, + /* 0x17 */ SPOT_CASTLE_TOWN_INTERIOR, + /* 0x18 */ SPOT_CASTLE_TOWN_SHOPS, + /* 0x19 */ SPOT_STAR_TENT, + /* 0x1A */ SPOT_SNOWPEAK, + /* 0x1B */ SPOT_ARBITERS_GROUNDS_EXTERIOR, + /* 0x1C */ SPOT_GERUDO_DESERT, + /* 0x1D */ SPOT_MIRROR_CHAMBER, + /* 0x1E */ SPOT_HYRULE_FIELD, + /* 0x1F */ SPOT_CASTLE_TOWN_GATES, + /* 0x20 */ SPOT_HYLIA_BRIDGE_BATTLE, + /* 0x21 */ SPOT_SHADES_REALM, + /* 0x22 */ SPOT_ELDIN_BRIDGE_BATTLE, + /* 0x23 */ SPOT_NONE, + /* 0x24 */ SPOT_LIGHT_SPIRIT_CHAMBER, + /* 0x25 */ SPOT_CASTLE_THRONE_ROOM, + /* 0x26 */ SPOT_ENEMY_TEST, + /* 0x27 */ SPOT_FORTRESS, + /* 0x28 */ SPOT_FOREST_TEMPLE, + /* 0x29 */ SPOT_FOREST_TEMPLE_MINIBOSS, + /* 0x2A */ SPOT_FOREST_TEMPLE_BOSS, + /* 0x2B */ SPOT_GORON_MINES, + /* 0x2C */ SPOT_GORON_MINES_MINIBOSS, + /* 0x2D */ SPOT_GORON_MINES_BOSS, + /* 0x2E */ SPOT_LAKEBED_TEMPLE, + /* 0x2F */ SPOT_LAKEBED_TEMPLE_MINIBOSS, + /* 0x30 */ SPOT_LAKEBED_TEMPLE_BOSS, + /* 0x31 */ SPOT_ARBITERS_GROUNDS, + /* 0x32 */ SPOT_ARBITERS_GROUNDS_MINIBOSS, + /* 0x33 */ SPOT_ARBITERS_GROUNDS_BOSS, + /* 0x34 */ SPOT_SNOWPEAK_RUINS, + /* 0x35 */ SPOT_SNOWPEAK_RUINS_MINIBOSS, + /* 0x36 */ SPOT_SNOWPEAK_RUINS_BOSS, + /* 0x37 */ SPOT_TEMPLE_OF_TIME, + /* 0x38 */ SPOT_TEMPLE_OF_TIME_MINIBOSS, + /* 0x39 */ SPOT_TEMPLE_OF_TIME_BOSS, + /* 0x3A */ SPOT_CITY_IN_THE_SKY, + /* 0x3B */ SPOT_CITY_IN_THE_SKY_MINIBOSS, + /* 0x3C */ SPOT_CITY_IN_THE_SKY_BOSS, + /* 0x3D */ SPOT_PALACE_OF_TWILIGHT, + /* 0x3E */ SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A, + /* 0x3F */ SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B, + /* 0x40 */ SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM, + /* 0x41 */ SPOT_PALACE_OF_TWILIGHT_BOSS, + /* 0x42 */ SPOT_HYRULE_CASTLE, + /* 0x43 */ SPOT_FINAL_BATTLE_THRONE_ROOM, + /* 0x44 */ SPOT_FINAL_BATTLE_FIELD, + /* 0x45 */ SPOT_FINAL_BATTLE_CUTSCENE, + /* 0x46 */ SPOT_ICE_BLOCK_PUZZLE, + /* 0x47 */ SPOT_CAVE_OF_ORDEALS, + /* 0x48 */ SPOT_GORGE_LANTERN_CAVE, + /* 0x49 */ SPOT_LAKE_LANTERN_CAVE, + /* 0x4A */ SPOT_ELDIN_MAGNET_CAVE, + /* 0x4B */ SPOT_GROTTO_GRASS_1, + /* 0x4C */ SPOT_GROTTO_GRASS_2, + /* 0x4D */ SPOT_GROTTO_ROCK_1, + /* 0x4E */ SPOT_GROTTO_ROCK_2, + /* 0x4F */ SPOT_GROTTO_POND, + /* 0x50 */ SPOT_FARON_WOODS_CAVE, +}; + #endif /* Z2SCENEMGR_H */ diff --git a/include/Z2AudioLib/Z2SeMgr.h b/include/Z2AudioLib/Z2SeMgr.h index 7b1f93651a..fac5cfb0be 100644 --- a/include/Z2AudioLib/Z2SeMgr.h +++ b/include/Z2AudioLib/Z2SeMgr.h @@ -81,7 +81,7 @@ public: /* 802AE184 */ void processSeFramework(); /* 802AE524 */ bool isLevelSe(JAISoundID); /* 802AE5B0 */ bool isSoundCulling(JAISoundID); - /* 802B9AC4 */ void resetCrowdSize(); + /* 802B9AC4 */ void resetCrowdSize() { mCrowdSize = 0; } private: /* 0x000 */ JAISoundHandle mSoundHandle[24]; diff --git a/include/Z2AudioLib/Z2SeqMgr.h b/include/Z2AudioLib/Z2SeqMgr.h index d7db687363..c500b18ed9 100644 --- a/include/Z2AudioLib/Z2SeqMgr.h +++ b/include/Z2AudioLib/Z2SeqMgr.h @@ -123,28 +123,18 @@ public: void bgmNowBattle(float); void taktModeMute(); void taktModeMuteOff(); - void setFieldBgmPlay(bool); - /* 802B99AC */ void unMuteSceneBgm(u32); - /* 802B9A24 */ void muteSceneBgm(u32, f32); - /* 802B9AD0 */ void setTwilightGateVol(f32); - /* 802B9AFC */ void setWindStoneVol(f32, u32); - - void onEnemyDamage() { setBattleSeqState(2); } - - void i_setTwilightGateVol(f32 vol) { mTwilightGateVol = vol; } - - void i_setWindStoneVol(f32 vol, u32 count) { mWindStone.move(vol, count); } - - void i_bgmAllUnMute(u32 count) { mAllBgmMaster.move(1.0f, count); } - - void i_muteSceneBgm(u32 count, f32 vol) { - mSceneBgm.move(vol, count); - } - - void i_unMuteSceneBgm(u32 count) { + void setFieldBgmPlay(bool value) { mFlags.mFieldBgmPlay = value; } + /* 802B99AC */ void unMuteSceneBgm(u32 count) { mBgmPause.move(1.0f, 0); mSceneBgm.move(1.0f, count); } + /* 802B9A24 */ void muteSceneBgm(u32 count, f32 vol) { mSceneBgm.move(vol, count); } + /* 802B9AD0 */ void setTwilightGateVol(f32 vol) { + mTwilightGateVol = vol < 0.0f ? 0.0f : vol > 1.0f ? 1.0f : vol; + } + /* 802B9AFC */ void setWindStoneVol(f32 vol, u32 count) { mWindStone.move(vol, count); }; + + void onEnemyDamage() { setBattleSeqState(2); } void bgmAllMute(u32 count, f32 val) { mAllBgmMaster.mTransition.set(val, mAllBgmMaster.mIntensity, count); @@ -182,6 +172,14 @@ public: return -1; } + bool checkBgmPlaying() { + bool ret = false; + if (mMainBgmHandle || mStreamBgmHandle) { + ret = true; + } + return ret; + } + JAISoundHandle* getMainBgmHandle() { return &mMainBgmHandle; } JAISoundHandle* getSubBgmHandle() { return &mSubBgmHandle; } @@ -221,9 +219,9 @@ public: bool mBattleSearched : 1; bool mBattleBgmOff : 1; bool mRiding : 1; - bool flag5 : 1; - bool flag6 : 1; - bool flag7 : 1; + bool mFieldBgmPlay : 1; + bool mHeightVolMod : 1; + bool mTimeProcVolMod : 1; } mFlags; }; // Size = 0xD4 diff --git a/include/Z2AudioLib/Z2SoundHandles.h b/include/Z2AudioLib/Z2SoundHandles.h index 4dbc80df69..352dbaa99d 100644 --- a/include/Z2AudioLib/Z2SoundHandles.h +++ b/include/Z2AudioLib/Z2SoundHandles.h @@ -3,8 +3,10 @@ #include "JSystem/JAudio2/JAISoundHandles.h" #include "JSystem/JAudio2/JASHeapCtrl.h" -#include "dolphin/types.h" +// This should inherit JASPoolAllocObject (without which some functions in Z2SoundHandles.cpp badly mismatch) +// but this inheritance causes the memPool_ to be generated in the first file that includes this header. +// Perhaps this class definition should belong to a different header. class Z2SoundHandlePool : public JAISoundHandle, public JSULink { // , public JASPoolAllocObject { public: Z2SoundHandlePool() : JAISoundHandle(), JSULink(this) {} diff --git a/include/Z2AudioLib/Z2SoundMgr.h b/include/Z2AudioLib/Z2SoundMgr.h index 85e2d664e8..e41e20f141 100644 --- a/include/Z2AudioLib/Z2SoundMgr.h +++ b/include/Z2AudioLib/Z2SoundMgr.h @@ -28,7 +28,9 @@ public: JGeometry::TVec3 const*); JAISeMgr* getSeMgr() { return &mSeMgr; } + const JAISeMgr* getSeMgr() const { return &mSeMgr; } JAISeqMgr* getSeqMgr() { return &mSeqMgr; } + const JAISeqMgr* getSeqMgr() const { return &mSeqMgr; } JAIStreamMgr* getStreamMgr() { return &mStreamMgr; } private: diff --git a/include/Z2AudioLib/Z2SoundObjMgr.h b/include/Z2AudioLib/Z2SoundObjMgr.h index 4456130a27..3085332f38 100644 --- a/include/Z2AudioLib/Z2SoundObjMgr.h +++ b/include/Z2AudioLib/Z2SoundObjMgr.h @@ -7,7 +7,7 @@ class Z2CreatureEnemy; struct Z2EnemyArea { - /* 0x00 */ u8 field_0x0; + /* 0x00 */ bool field_0x0; /* 0x02 */ u16 field_0x2; /* 0x04 */ u16 field_0x4; /* 0x06 */ u16 field_0x6; diff --git a/include/Z2AudioLib/Z2StatusMgr.h b/include/Z2AudioLib/Z2StatusMgr.h index 75de83eec9..3ba39baa96 100644 --- a/include/Z2AudioLib/Z2StatusMgr.h +++ b/include/Z2AudioLib/Z2StatusMgr.h @@ -28,9 +28,10 @@ struct Z2StatusMgr : public JASGlobalInstance { f32 getCameraInWaterDepth() { return mUnderwaterDepth; } f32 getCameraInWaterDepthRatio() const { return mCameraInWaterDepthRatio; } u8 getHour() { return mHour; } - bool isPaused() { return mIsMenuIn; } + bool isPaused() { return mPauseFlag; } bool isHeartGuageOn() { return mHeartGaugeOn; } void getCameraMapInfo(u32 info) { mCameraMapInfo = info; } + void setPauseFlag(u8 flag) { mPauseFlag = flag; } /* 0x00 */ u8 mHour; /* 0x01 */ u8 mMinute; @@ -38,7 +39,7 @@ struct Z2StatusMgr : public JASGlobalInstance { /* 0x03 */ u8 field_0x03; /* 0x04 */ s16 mTime; /* 0x08 */ void* mEventBit; - /* 0x0C */ bool mIsMenuIn; + /* 0x0C */ u8 mPauseFlag; /* 0x10 */ u32 mCameraMapInfo; /* 0x14 */ u32 field_0x14; /* 0x18 */ f32 mUnderwaterDepth; diff --git a/include/dolphin/dsp.h b/include/dolphin/dsp.h index bf091c414c..0658f7b921 100644 --- a/include/dolphin/dsp.h +++ b/include/dolphin/dsp.h @@ -80,11 +80,6 @@ u32 DSPReadMailFromDSP(void); void DSPSendMailToDSP(u32 mail); void DSPAssertInt(); void DSPInit(void); -void DSPReleaseHalt2(u32 msg); -u16 DSP_CreateMap2(u32 msg); -int DSPSendCommands2(u32* msgs, u32 param_1, void (*param_2)(u16)); -void DsetupTable(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4); -void DsetMixerLevel(f32 level); void __DSPHandler(__OSInterrupt interrupt, OSContext* context); diff --git a/include/f_op/f_op_camera_mng.h b/include/f_op/f_op_camera_mng.h index f9ee5c3c76..87c005cac0 100644 --- a/include/f_op/f_op_camera_mng.h +++ b/include/f_op/f_op_camera_mng.h @@ -96,4 +96,4 @@ void fopCamM_Management(void); u32 fopCamM_GetParam(camera_class* pCamera); void fopCamM_Init(void); -#endif \ No newline at end of file +#endif diff --git a/src/JSystem/JAudio2/JAISe.cpp b/src/JSystem/JAudio2/JAISe.cpp index cb8da0bc68..e1de20372d 100644 --- a/src/JSystem/JAudio2/JAISe.cpp +++ b/src/JSystem/JAudio2/JAISe.cpp @@ -6,23 +6,6 @@ #include "JSystem/JAudio2/JAISe.h" #include "JSystem/JAudio2/JAIAudience.h" #include "JSystem/JAudio2/JAISeMgr.h" -#include "dolphin/types.h" - -// -// Types: -// - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// /* 8029F03C-8029F0F8 29997C 00BC+00 0/0 1/1 0/0 .text * __ct__5JAISeFP8JAISeMgrP27JAISoundStrategyMgr<5JAISe>Ul */ @@ -32,7 +15,6 @@ JAISe::JAISe(JAISeMgr* param_0, JAISoundStrategyMgr* param_1, u32 param_2 inner_.mProperPriority = param_2; } - /* 8029F0F8-8029F214 299A38 011C+00 1/1 0/0 0/0 .text mixOut___5JAISeFRC14JASSoundParams */ void JAISe::mixOut_(JASSoundParams const& param_0) { @@ -239,4 +221,4 @@ JAISe* JAISe::asSe() { /* 8029F868-8029F870 29A1A8 0008+00 2/1 0/0 0/0 .text getTempoMgr__5JAISeFv */ JAITempoMgr* JAISe::getTempoMgr() { return &inner_.mTempoMgr; -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JAISeMgr.cpp b/src/JSystem/JAudio2/JAISeMgr.cpp index 9fcc1e4ede..12a170baed 100644 --- a/src/JSystem/JAudio2/JAISeMgr.cpp +++ b/src/JSystem/JAudio2/JAISeMgr.cpp @@ -7,88 +7,6 @@ #include "JSystem/JAudio2/JAISoundHandles.h" #include "JSystem/JAudio2/JAISoundInfo.h" #include "JSystem/JAudio2/JASReport.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void isUsingSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion(); -extern "C" void releaseSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion(); -extern "C" void JAISeMgr_calc___16JAISeCategoryMgrFv(); -extern "C" void JAISeMgr_freeDeadSe___16JAISeCategoryMgrFv(); -extern "C" void func_8029FC34(void* _this); -extern "C" void JAISeMgr_acceptsNewSe___16JAISeCategoryMgrCFUl(); -extern "C" void sortByPriority___16JAISeCategoryMgrFv(); -extern "C" void stop__16JAISeCategoryMgrFUl(); -extern "C" void stop__16JAISeCategoryMgrFv(); -extern "C" void stopSoundID__16JAISeCategoryMgrF10JAISoundID(); -extern "C" void pause__16JAISeCategoryMgrFb(); -extern "C" void JAISeMgr_mixOut___16JAISeCategoryMgrFRC18JAISoundParamsMove16JAISoundActivity(); -extern "C" void __ct__8JAISeMgrFb(); -extern "C" void isUsingSeqData__8JAISeMgrFRC16JAISeqDataRegion(); -extern "C" void releaseSeqData__8JAISeMgrFRC16JAISeqDataRegion(); -extern "C" void setCategoryArrangement__8JAISeMgrFRC24JAISeCategoryArrangement(); -extern "C" void stop__8JAISeMgrFv(); -extern "C" void stopSoundID__8JAISeMgrF10JAISoundID(); -extern "C" void initParams__8JAISeMgrFv(); -extern "C" void setAudience__8JAISeMgrFP11JAIAudience(); -extern "C" void setSeqDataMgr__8JAISeMgrFP13JAISeqDataMgr(); -extern "C" void resetSeqDataMgr__8JAISeMgrFv(); -extern "C" void newSe___8JAISeMgrFiUl(); -extern "C" void calc__8JAISeMgrFv(); -extern "C" void mixOut__8JAISeMgrFv(); -extern "C" void func_802A0768(); -extern "C" void getNumActiveSe__8JAISeMgrCFv(); -extern "C" void __dt__8JAISeMgrFv(); -extern "C" void __ct__16JAISeCategoryMgrFv(); -extern "C" extern char const* const JAISeMgr__stringBase0; - -// -// External References: -// - -extern "C" void __dt__16JAISeCategoryMgrFv(); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void JASReport__FPCce(); -extern "C" void __dt__8JASTrackFv(); -extern "C" void combine__14JASSoundParamsFRC14JASSoundParamsRC14JASSoundParams(); -extern "C" void func_8029F03C(); -extern "C" void JAISeCategoryMgr_mixOut___5JAISeFbRC14JASSoundParams16JAISoundActivity(); -extern "C" void JAISeCategoryMgr_calc___5JAISeFv(); -extern "C" void func_8029F650(); -extern "C" void __dt__14JAISeqDataUserFv(); -extern "C" void attachHandle__8JAISoundFP14JAISoundHandle(); -extern "C" void stop__8JAISoundFUl(); -extern "C" void stop__8JAISoundFv(); -extern "C" void __dl__FPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __register_global_object(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__5JAISe[22]; -extern "C" extern void* __vt__14JAISeqDataUser[5 + 1 /* padding */]; -extern "C" extern u8 data_80450B5C[4]; -extern "C" extern u8 data_80451310[8]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// /* 8029F8B0-8029F91C 29A1F0 006C+00 2/1 0/0 0/0 .text * isUsingSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion */ @@ -135,19 +53,9 @@ void JAISeCategoryMgr::JAISeMgr_calc_() { sortByPriority_(); } -/* ############################################################################################## */ -/* 80434078-80434084 060D98 000C+00 2/2 0/0 0/0 .bss @744 */ -static u8 lit_744[12]; - -/* 80434084-80434098 060DA4 0010+04 2/2 1/1 0/0 .bss - * memPool_$localstatic3$getMemPool___26JASPoolAllocObject<5JAISe>Fv */ -extern u8 data_80434084[16 + 4 /* padding */]; -u8 data_80434084[16 + 4 /* padding */]; - /* 8029FB30-8029FC34 29A470 0104+00 1/1 0/0 0/0 .text JAISeMgr_freeDeadSe___16JAISeCategoryMgrFv */ -// Need to setup JAISe dtor -#ifdef NONMATCHING +// JASPoolAllocObject<_> locations void JAISeCategoryMgr::JAISeMgr_freeDeadSe_() { JSULink* link = mSeList.getFirst(); while (link != NULL) { @@ -159,22 +67,10 @@ void JAISeCategoryMgr::JAISeMgr_freeDeadSe_() { link = link_next; } } -#else -void JAISeCategoryMgr::JAISeMgr_freeDeadSe_() { - // NONMATCHING -} -#endif - -/* 8029FC34-8029FC88 29A574 0054+00 2/2 1/1 0/0 .text __dt__18JASMemPool<5JAISe>Fv */ -extern "C" void func_8029FC34(void* _this) { - // NONMATCHING -} - -/* ############################################################################################## */ /* 8029FC88-8029FD40 29A5C8 00B8+00 1/1 0/0 0/0 .text * JAISeMgr_acceptsNewSe___16JAISeCategoryMgrCFUl */ -u32 JAISeCategoryMgr::JAISeMgr_acceptsNewSe_(u32 param_0) const { +bool JAISeCategoryMgr::JAISeMgr_acceptsNewSe_(u32 param_0) const { s32 maxSe = getMaxSe(); if (maxSe <= 0) { return 1; @@ -244,25 +140,10 @@ void JAISeCategoryMgr::pause(bool param_0) { } } -/* ############################################################################################## */ -/* 8045578C-80455790 003D8C 0004+00 4/4 0/0 0/0 .sdata2 @1040 */ -SECTION_SDATA2 static f32 lit_1040 = 1.0f; - -/* 80455790-80455794 003D90 0004+00 4/4 0/0 0/0 .sdata2 @1041 */ -SECTION_SDATA2 static u8 lit_1041[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455794-80455798 003D94 0004+00 4/4 0/0 0/0 .sdata2 @1042 */ -SECTION_SDATA2 static f32 lit_1042 = 0.5f; - /* 8029FF18-802A0074 29A858 015C+00 1/1 0/0 0/0 .text * JAISeMgr_mixOut___16JAISeCategoryMgrFRC18JAISoundParamsMove16JAISoundActivity */ void JAISeCategoryMgr::JAISeMgr_mixOut_(JAISoundParamsMove const& param_0, - JAISoundActivity param_1) { + JAISoundActivity param_1) { JASSoundParams aJStack_30; aJStack_30.combine(param_0.mParams, mParams.mParams); JSULink* this_00 = mSeList.getFirst(); @@ -288,27 +169,15 @@ void JAISeCategoryMgr::JAISeMgr_mixOut_(JAISoundParamsMove const& param_0, } } - -/* ############################################################################################## */ -/* 803C98B0-803C98C4 0269D0 0014+00 2/2 1/1 0/0 .data __vt__8JAISeMgr */ -SECTION_DATA extern void* __vt__8JAISeMgr[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8JAISeMgrFv, - (void*)isUsingSeqData__8JAISeMgrFRC16JAISeqDataRegion, - (void*)releaseSeqData__8JAISeMgrFRC16JAISeqDataRegion, -}; - /* 802A0074-802A0168 29A9B4 00F4+00 0/0 1/1 0/0 .text __ct__8JAISeMgrFb */ JAISeMgr::JAISeMgr(bool param_0) : JASGlobalInstance(param_0) { mAudience = NULL; mSeqDataMgr = NULL; - field_0x10 = 0; + mStrategyMgr = NULL; mParams.init(); JAISoundActivity::init(); } - /* 802A0168-802A01D8 29AAA8 0070+00 1/0 0/0 0/0 .text * isUsingSeqData__8JAISeMgrFRC16JAISeqDataRegion */ bool JAISeMgr::isUsingSeqData(JAISeqDataRegion const& param_0) { @@ -389,8 +258,23 @@ void JAISeMgr::resetSeqDataMgr() { } /* 802A0484-802A0574 29ADC4 00F0+00 1/1 0/0 0/0 .text newSe___8JAISeMgrFiUl */ -JAISe* JAISeMgr::newSe_(int param_0, u32 param_1) { - // NONMATCHING +// NONMATCHING JASPollAllocObject<_> locations +JAISe* JAISeMgr::newSe_(int i_category, u32 param_1) { + if (i_category < 0) { + i_category = 0; + } + + if (!mCategoryMgrs[i_category].JAISeMgr_acceptsNewSe_(param_1)) { + return NULL; + } + + JAISe* se = new JAISe(this, mStrategyMgr, param_1); + if (se == NULL) { + return NULL; + } + + mCategoryMgrs[i_category].JAISeMgr_appendSe_(se); + return se; } /* 802A0574-802A0704 29AEB4 0190+00 0/0 1/1 0/0 .text calc__8JAISeMgrFv */ @@ -411,8 +295,6 @@ void JAISeMgr::mixOut() { } } -/* ############################################################################################## */ - /* 802A0768-802A08D0 29B0A8 0168+00 0/0 1/1 0/0 .text * startSound__8JAISeMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ bool JAISeMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, @@ -456,25 +338,10 @@ int JAISeMgr::getNumActiveSe() const { return sum; } -/* 802A08FC-802A0994 29B23C 0098+00 1/0 0/0 0/0 .text __dt__8JAISeMgrFv */ -extern "C" void __dt__8JAISeMgrFv() { - // asm JAISeMgr::~JAISeMgr() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 803C98C4-803C98D8 0269E4 0014+00 1/1 1/1 0/0 .data __vt__16JAISeCategoryMgr */ -SECTION_DATA extern void* __vt__16JAISeCategoryMgr[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16JAISeCategoryMgrFv, - (void*)isUsingSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion, - (void*)releaseSeqData__16JAISeCategoryMgrFRC16JAISeqDataRegion, -}; - /* 802A0994-802A0A6C 29B2D4 00D8+00 1/1 0/0 0/0 .text __ct__16JAISeCategoryMgrFv */ JAISeCategoryMgr::JAISeCategoryMgr() { - // NONMATCHING + mParams.init(); + mMaxActiveSe = 0; + mMaxInactiveSe = 0; + field_0x4.field_0x0 = 0; } - -/* 8039B8F8-8039B8F8 027F58 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file diff --git a/src/JSystem/JAudio2/JAISeq.cpp b/src/JSystem/JAudio2/JAISeq.cpp index dc55066358..430c92df1b 100644 --- a/src/JSystem/JAudio2/JAISeq.cpp +++ b/src/JSystem/JAudio2/JAISeq.cpp @@ -9,127 +9,17 @@ #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JAudio2/JAIAudience.h" -#include "dol2asm.h" -// -// Forward References: -// - -extern "C" static bool func_802A0A6C(JASTrack*); -extern "C" void func_802A0A8C(); -extern "C" void func_802A0B64(); -extern "C" void playSeqData___6JAISeqFRC14JASSoundParams16JAISoundActivity(); -extern "C" void reserveChildTracks___6JAISeqFi(); -extern "C" void releaseChildTracks___6JAISeqFv(); -extern "C" void prepare_getSeqData___6JAISeqFv(); -extern "C" void prepare___6JAISeqFRC14JASSoundParams16JAISoundActivity(); -extern "C" void JAISeqMgr_calc___6JAISeqFv(); -extern "C" void die___6JAISeqFv(); -extern "C" void func_802A1268(void* _this); -extern "C" void JAISound_tryDie___6JAISeqFv(); -extern "C" void mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity(); -extern "C" void JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity(); -extern "C" s32 getNumChild__6JAISeqCFv(); -extern "C" void getChild__6JAISeqFi(); -extern "C" void releaseChild__6JAISeqFi(); -extern "C" void getTrack__6JAISeqFv(); -extern "C" void getChildTrack__6JAISeqFi(); -extern "C" void asSeq__6JAISeqFv(); -extern "C" void getTempoMgr__6JAISeqFv(); - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void __ct__8JASTrackFv(); -extern "C" void __dt__8JASTrackFv(); -extern "C" void setChannelMgrCount__8JASTrackFUl(); -extern "C" void assignExtBuffer__8JASTrackFUlP14JASSoundParams(); -extern "C" void setSeqData__8JASTrackFPvUl(); -extern "C" void startSeq__8JASTrackFv(); -extern "C" void stopSeq__8JASTrackFv(); -extern "C" void connectChild__8JASTrackFUlP8JASTrack(); -extern "C" void mute__8JASTrackFb(); -extern "C" void pause__8JASTrackFb(); -extern "C" void setTempoRate__8JASTrackFf(); -extern "C" void func_802932E0(void* _this); -extern "C" void mixOutAll__14JAISoundParamsFRC14JASSoundParamsP14JASSoundParamsf(); -extern "C" void __ct__8JAISoundFv(); -extern "C" void func_802A2328(); -extern "C" bool asSe__8JAISoundFv(); -extern "C" bool asStream__8JAISoundFv(); -extern "C" void die_JAISound___8JAISoundFv(); -extern "C" void increasePrepareCount_JAISound___8JAISoundFv(); -extern "C" void calc_JAISound___8JAISoundFv(); -extern "C" void initTrack_JAISound___8JAISoundFP8JASTrack(); -extern "C" void init__13JAISoundChildFv(); -extern "C" void mixOut__13JAISoundChildFP8JASTrack(); -extern "C" void calc__13JAISoundChildFv(); -extern "C" void __dl__FPv(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern u8 data_80431B04[16 + 4 /* padding */]; -extern "C" extern u8 struct_80451230[8]; -extern "C" extern u8 data_80451318[8]; - -// -// Declarations: -// +namespace { /* 802A0A6C-802A0A8C 29B3AC 0020+00 1/1 0/0 0/0 .text * JASTrack_isFreeOrStopped__20@unnamed@JAISeq_cpp@FP8JASTrack */ -static bool func_802A0A6C(JASTrack* track) { +static bool JASTrack_isFreeOrStopped(JASTrack* track) { u8 status = track->getStatus(); return status == 0 || status == 2; } -/* 803C98F4-803C9928 026A14 0030+04 1/1 2/2 0/0 .data __vt__6JAISeq */ -SECTION_DATA extern void* __vt__6JAISeq[12 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)getNumChild__6JAISeqCFv, - (void*)getChild__6JAISeqFi, - (void*)releaseChild__6JAISeqFi, - (void*)asSe__8JAISoundFv, - (void*)asSeq__6JAISeqFv, - (void*)asStream__8JAISoundFv, - (void*)getTrack__6JAISeqFv, - (void*)getChildTrack__6JAISeqFi, - (void*)getTempoMgr__6JAISeqFv, - (void*)JAISound_tryDie___6JAISeqFv, -}; - -/* 80455798-8045579C 003D98 0004+00 3/3 0/0 0/0 .sdata2 @642 */ -SECTION_SDATA2 static f32 lit_642 = 1.0f; - -/* 8045579C-804557A0 003D9C 0004+00 4/4 0/0 0/0 .sdata2 @643 */ -SECTION_SDATA2 static u8 lit_643[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 804557A0-804557A8 003DA0 0004+04 3/3 0/0 0/0 .sdata2 @644 */ -SECTION_SDATA2 static f32 lit_644[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; +} // namespace /* 802A0A8C-802A0B64 29B3CC 00D8+00 0/0 2/1 0/0 .text * __ct__6JAISeqFP9JAISeqMgrP28JAISoundStrategyMgr<6JAISeq> */ @@ -144,7 +34,8 @@ JAISeq::JAISeq(JAISeqMgr* param_0, JAISoundStrategyMgr* param_1) : JSULi /* 802A0B64-802A0C04 29B4A4 00A0+00 0/0 1/1 0/0 .text * JAISeqMgr_startID___6JAISeqF10JAISoundIDPCQ29JGeometry8TVec3P11JAIAudienceii */ -void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, JAIAudience* param_2, int param_3, int param_4) { +void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3 const* param_1, + JAIAudience* param_2, int param_3, int param_4) { inner_.field_0x39c = param_3; reserveChildTracks_(param_4); start_JAISound_(param_0, param_1, param_2); @@ -169,15 +60,10 @@ void JAISeq::playSeqData_(JASSoundParams const& param_0, JAISoundActivity param_ inner_.outputTrack.startSeq(); } -/* ############################################################################################## */ -/* 80434098-804340A4 060DB8 000C+00 1/1 0/0 0/0 .bss @716 */ -static u8 lit_716[12]; - /* 802A0CA4-802A0E48 29B5E4 01A4+00 1/1 0/0 0/0 .text reserveChildTracks___6JAISeqFi */ void JAISeq::reserveChildTracks_(int param_0) { for (int i = 0; i < 2; i++) { - JASPoolAllocObject_MultiThreaded* allocobj = new JASPoolAllocObject_MultiThreaded(); - JASTrack* track = new (allocobj) JASTrack(); + JASTrack* track = new JASTrack(); if (track) { track->setAutoDelete(true); inner_.outputTrack.connectChild(i, track); @@ -185,8 +71,7 @@ void JAISeq::reserveChildTracks_(int param_0) { if (i * 16 + j >= param_0) { continue; } - JASPoolAllocObject_MultiThreaded* allocobj2 = new JASPoolAllocObject_MultiThreaded(); - JASTrack* track2 = new (allocobj2) JASTrack(); + JASTrack* track2 = new JASTrack(); if (track2) { track2->setAutoDelete(true); track->connectChild(j, track2); @@ -196,8 +81,8 @@ void JAISeq::reserveChildTracks_(int param_0) { } } - /* 802A0E48-802A0EDC 29B788 0094+00 1/1 0/0 0/0 .text releaseChildTracks___6JAISeqFv */ +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations void JAISeq::releaseChildTracks_() { for (u32 i = 0; i < 2; i++) { JASTrack* track = inner_.outputTrack.getChild(i); @@ -283,20 +168,12 @@ void JAISeq::JAISeqMgr_calc_() { } } -/* ############################################################################################## */ -/* 804340A4-804340B0 060DC4 000C+00 3/3 0/0 0/0 .bss @896 */ -static u8 lit_896[12]; - -/* 804340B0-804340C0 060DD0 0010+00 3/3 4/4 0/0 .bss - * memPool_$localstatic3$getMemPool___35JASPoolAllocObject<13JAISoundChild>Fv */ -extern u8 data_804340B0[16]; -u8 data_804340B0[16]; - /* 802A1180-802A1268 29BAC0 00E8+00 2/2 0/0 0/0 .text die___6JAISeqFv */ +// NONMATCHING JASPoolAllocObject<_> locations void JAISeq::die_() { for (int i = 0; i < 32; i++) { if (inner_.mSoundChild[i]) { - delete (JASPoolAllocObject*)inner_.mSoundChild[i]; + delete inner_.mSoundChild[i]; inner_.mSoundChild[i] = NULL; } } @@ -308,15 +185,9 @@ void JAISeq::die_() { die_JAISound_(); } - -/* 802A1268-802A12BC 29BBA8 0054+00 3/3 4/4 0/0 .text __dt__27JASMemPool<13JAISoundChild>Fv */ -extern "C" void func_802A1268(void* _this) { - // NONMATCHING -} - /* 802A12BC-802A1348 29BBFC 008C+00 1/0 0/0 0/0 .text JAISound_tryDie___6JAISeqFv */ bool JAISeq::JAISound_tryDie_() { - if (func_802A0A6C(&inner_.outputTrack)) { + if (JASTrack_isFreeOrStopped(&inner_.outputTrack)) { die_(); return true; } @@ -327,7 +198,6 @@ bool JAISeq::JAISound_tryDie_() { return false; } - /* 802A1348-802A14FC 29BC88 01B4+00 2/2 0/0 0/0 .text * mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { @@ -357,7 +227,6 @@ void JAISeq::mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { } } - /* 802A14FC-802A1570 29BE3C 0074+00 0/0 1/1 0/0 .text * JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity */ void JAISeq::JAISeqMgr_mixOut_(JASSoundParams const& param_0, JAISoundActivity param_1) { @@ -372,12 +241,12 @@ s32 JAISeq::getNumChild() const { } /* 802A1578-802A165C 29BEB8 00E4+00 1/0 0/0 0/0 .text getChild__6JAISeqFi */ +// NONMATCHING JASPoolAllocObject<_> locations JAISoundChild* JAISeq::getChild(int index) { if (inner_.mSoundChild[index]) { return inner_.mSoundChild[index]; } - JASPoolAllocObject* allocobj = new JASPoolAllocObject(); - inner_.mSoundChild[index] = new (allocobj) JAISoundChild(); + inner_.mSoundChild[index] = new JAISoundChild(); if (!inner_.mSoundChild[index]) { return NULL; } @@ -386,13 +255,14 @@ JAISoundChild* JAISeq::getChild(int index) { /* 802A165C-802A1728 29BF9C 00CC+00 1/0 0/0 0/0 .text releaseChild__6JAISeqFi */ +// NONMATCHING JASPoolAllocObject<_> locations void JAISeq::releaseChild(int param_0) { if (inner_.outputTrack.getStatus() == 1 && inner_.mSoundChild[param_0]) { JASTrack* track = getChildTrack(param_0); if (track) { track->assignExtBuffer(0, NULL); } - delete (JASPoolAllocObject*)inner_.mSoundChild[param_0]; + delete inner_.mSoundChild[param_0]; inner_.mSoundChild[param_0] = NULL; } } @@ -422,4 +292,4 @@ JAISeq* JAISeq::asSeq() { /* 802A176C-802A1774 29C0AC 0008+00 1/0 0/0 0/0 .text getTempoMgr__6JAISeqFv */ JAITempoMgr* JAISeq::getTempoMgr() { return &inner_.mTempoMgr; -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JAISeqMgr.cpp b/src/JSystem/JAudio2/JAISeqMgr.cpp index 49910d81da..d90035ee73 100644 --- a/src/JSystem/JAudio2/JAISeqMgr.cpp +++ b/src/JSystem/JAudio2/JAISeqMgr.cpp @@ -7,64 +7,6 @@ #include "JSystem/JAudio2/JAISeq.h" #include "JSystem/JAudio2/JAISoundHandles.h" #include "JSystem/JAudio2/JAISoundInfo.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion(); -extern "C" void releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion(); -extern "C" void __ct__9JAISeqMgrFb(); -extern "C" void freeDeadSeq___9JAISeqMgrFv(); -extern "C" void func_802A1AF4(void* _this); -extern "C" void func_802A1B48(); -extern "C" void calc__9JAISeqMgrFv(); -extern "C" void stop__9JAISeqMgrFv(); -extern "C" void stop__9JAISeqMgrFUl(); -extern "C" void stopSoundID__9JAISeqMgrF10JAISoundID(); -extern "C" void mixOut__9JAISeqMgrFv(); -extern "C" void beginStartSeq___9JAISeqMgrFv(); -extern "C" void endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle(); -extern "C" void __dt__9JAISeqMgrFv(); - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void __dt__8JASTrackFv(); -extern "C" void func_802A0A8C(); -extern "C" void func_802A0B64(); -extern "C" void JAISeqMgr_calc___6JAISeqFv(); -extern "C" void JAISeqMgr_mixOut___6JAISeqFRC14JASSoundParams16JAISoundActivity(); -extern "C" void __dt__14JAISeqDataUserFv(); -extern "C" void attachHandle__8JAISoundFP14JAISoundHandle(); -extern "C" void stop__8JAISoundFUl(); -extern "C" void stop__8JAISoundFv(); -extern "C" void __dl__FPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void __dt__10JSUPtrListFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__6JAISeq[12 + 1 /* padding */]; -extern "C" extern void* __vt__14JAISeqDataUser[5 + 1 /* padding */]; -extern "C" extern u8 data_80450B5C[4]; -extern "C" extern u8 data_80451320[8]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// /* 802A1804-802A1870 29C144 006C+00 1/0 0/0 0/0 .text * isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion */ @@ -77,8 +19,6 @@ bool JAISeqMgr::isUsingSeqData(JAISeqDataRegion const& param_1) { return false; } - - /* 802A1870-802A1914 29C1B0 00A4+00 1/0 0/0 0/0 .text * releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion */ int JAISeqMgr::releaseSeqData(JAISeqDataRegion const& param_1) { @@ -98,36 +38,6 @@ int JAISeqMgr::releaseSeqData(JAISeqDataRegion const& param_1) { return uVar4; } -/* ############################################################################################## */ -/* 803C9958-803C9970 026A78 0014+04 2/2 1/1 0/0 .data __vt__9JAISeqMgr */ -SECTION_DATA extern void* __vt__9JAISeqMgr[5 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__9JAISeqMgrFv, - (void*)isUsingSeqData__9JAISeqMgrFRC16JAISeqDataRegion, - (void*)releaseSeqData__9JAISeqMgrFRC16JAISeqDataRegion, - /* padding */ - NULL, -}; - -/* 804557A8-804557AC 003DA8 0004+00 1/1 0/0 0/0 .sdata2 @691 */ -SECTION_SDATA2 static f32 lit_691 = 1.0f; - -/* 804557AC-804557B0 003DAC 0004+00 1/1 0/0 0/0 .sdata2 @692 */ -SECTION_SDATA2 static u8 lit_692[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 804557B0-804557B8 003DB0 0004+04 1/1 0/0 0/0 .sdata2 @693 */ -SECTION_SDATA2 static f32 lit_693[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; - /* 802A1914-802A1A08 29C254 00F4+00 0/0 1/1 0/0 .text __ct__9JAISeqMgrFb */ JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance(param_1), mAudience(NULL) { seqDataMgr_ = NULL; @@ -137,16 +47,8 @@ JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance(param_1), mAud mActivity.init(); } -/* ############################################################################################## */ -/* 804340C0-804340CC 060DE0 000C+00 3/3 0/0 0/0 .bss @715 */ -static u8 lit_715[12]; - -/* 804340CC-804340E0 060DEC 0010+04 3/3 1/1 0/0 .bss - * memPool_$localstatic3$getMemPool___27JASPoolAllocObject<6JAISeq>Fv */ -extern u8 data_804340CC[16 + 4 /* padding */]; -u8 data_804340CC[16 + 4 /* padding */]; - /* 802A1A08-802A1AF4 29C348 00EC+00 1/1 0/0 0/0 .text freeDeadSeq___9JAISeqMgrFv */ +// NONMATCHING JASPoolAllocObject<_> locations void JAISeqMgr::freeDeadSeq_() { JSULink* link = mSeqList.getFirst(); while (link != NULL) { @@ -160,12 +62,6 @@ void JAISeqMgr::freeDeadSeq_() { } } - -/* 802A1AF4-802A1B48 29C434 0054+00 3/3 1/1 0/0 .text __dt__19JASMemPool<6JAISeq>Fv */ -extern "C" void func_802A1AF4(void* _this) { - // NONMATCHING -} - /* 802A1B48-802A1C90 29C488 0148+00 0/0 1/1 0/0 .text * startSound__9JAISeqMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ bool JAISeqMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, @@ -236,6 +132,7 @@ void JAISeqMgr::mixOut() { } /* 802A1F58-802A1FE8 29C898 0090+00 1/1 0/0 0/0 .text beginStartSeq___9JAISeqMgrFv */ +// NONMATCHING JASPoolAllocObject<_> locations JAISeq* JAISeqMgr::beginStartSeq_() { JAISeq* seq = new JAISeq(this, field_0x10); if (seq == NULL) { @@ -244,9 +141,9 @@ JAISeq* JAISeqMgr::beginStartSeq_() { return seq; } - /* 802A1FE8-802A20F0 29C928 0108+00 1/1 0/0 0/0 .text * endStartSeq___9JAISeqMgrFP6JAISeqP14JAISoundHandle */ +// NONMATCHING JASPoolAllocObject<_> locations bool JAISeqMgr::endStartSeq_(JAISeq* param_1, JAISoundHandle* param_2) { JAISeq* sound = param_1->getObject(); if (sound != NULL) { @@ -261,10 +158,3 @@ bool JAISeqMgr::endStartSeq_(JAISeq* param_1, JAISoundHandle* param_2) { } return false; } - - -/* 802A20F0-802A2184 29CA30 0094+00 1/0 0/0 0/0 .text __dt__9JAISeqMgrFv */ -extern "C" void __dt__9JAISeqMgrFv() { - // asm JAISeqMgr::~JAISeqMgr() { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JAISound.cpp b/src/JSystem/JAudio2/JAISound.cpp index 11bf4cf01a..af3d0e84a0 100644 --- a/src/JSystem/JAudio2/JAISound.cpp +++ b/src/JSystem/JAudio2/JAISound.cpp @@ -9,18 +9,6 @@ #include "JSystem/JAudio2/JASReport.h" #include "JSystem/JAudio2/JASTrack.h" -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// - /* 802A2184-802A21A0 29CAC4 001C+00 0/0 14/14 0/0 .text releaseSound__14JAISoundHandleFv */ void JAISoundHandle::releaseSound() { @@ -247,4 +235,4 @@ void JAISound::initTrack_JAISound_(JASTrack* track) { for (size_t i = 0; i < track->getChannelMgrCount(); i++) { track->assignExtBuffer(i, soundParams[i]); } -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JAIStream.cpp b/src/JSystem/JAudio2/JAIStream.cpp index 11669538e3..0353e9f2e5 100644 --- a/src/JSystem/JAudio2/JAIStream.cpp +++ b/src/JSystem/JAudio2/JAIStream.cpp @@ -9,63 +9,6 @@ #include "JSystem/JAudio2/JAIStreamDataMgr.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JAudio2/JAIAudience.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" static void JAIStream_JASAramStreamCallback___FUlP13JASAramStreamPv(); -extern "C" void func_802A3104(); -extern "C" void func_802A319C(); -extern "C" void prepare_prepareStream___9JAIStreamFv(); -extern "C" void prepare___9JAIStreamFv(); -extern "C" void prepare_startStream___9JAIStreamFv(); -extern "C" void JAIStreamMgr_mixOut___9JAIStreamFRC14JASSoundParams16JAISoundActivity(); -extern "C" void die_JAIStream___9JAIStreamFv(); -extern "C" void JAISound_tryDie___9JAIStreamFv(); -extern "C" void JAIStreamMgr_calc___9JAIStreamFv(); -extern "C" s32 getNumChild__9JAIStreamCFv(); -extern "C" void getChild__9JAIStreamFi(); -extern "C" void releaseChild__9JAIStreamFi(); -extern "C" bool getTrack__9JAIStreamFv(); -extern "C" bool getChildTrack__9JAIStreamFi(); -extern "C" void asStream__9JAIStreamFv(); -extern "C" bool getTempoMgr__9JAIStreamFv(); - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void __ct__13JASAramStreamFv(); -extern "C" void init__13JASAramStreamFUlUlPFUlP13JASAramStreamPv_vPv(); -extern "C" void prepare__13JASAramStreamFli(); -extern "C" void start__13JASAramStreamFv(); -extern "C" void stop__13JASAramStreamFUs(); -extern "C" void pause__13JASAramStreamFb(); -extern "C" void cancel__13JASAramStreamFv(); -extern "C" void func_802A1268(void* _this); -extern "C" void mixOutAll__14JAISoundParamsFRC14JASSoundParamsP14JASSoundParamsf(); -extern "C" void __ct__8JAISoundFv(); -extern "C" void func_802A2328(); -extern "C" bool asSe__8JAISoundFv(); -extern "C" bool asSeq__8JAISoundFv(); -extern "C" void die_JAISound___8JAISoundFv(); -extern "C" void increasePrepareCount_JAISound___8JAISoundFv(); -extern "C" void calc_JAISound___8JAISoundFv(); -extern "C" void init__13JAISoundChildFv(); -extern "C" void calc__13JAISoundChildFv(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern u8 data_804340B0[16]; -extern "C" extern u8 data_80451318[8]; /* 802A30D4-802A3104 29DA14 0030+00 1/1 0/0 0/0 .text * JAIStream_JASAramStreamCallback___FUlP13JASAramStreamPv */ @@ -113,9 +56,10 @@ void JAIStream::JAIStreamMgr_startID_(JAISoundID param_1, s32 param_2, /* 802A3230-802A33F4 29DB70 01C4+00 1/1 0/0 0/0 .text prepare_prepareStream___9JAIStreamFv */ bool JAIStream::prepare_prepareStream_() { u32 local_28; + JAIStreamAramMgr* streamAramMgr; switch (field_0x290) { case 0: - JAIStreamAramMgr* streamAramMgr = field_0x2b8->getStreamAramMgr(); + streamAramMgr = field_0x2b8->getStreamAramMgr(); JUT_ASSERT(100, streamAramMgr); field_0x29c = streamAramMgr->newStreamAram(&local_28); if (field_0x29c != NULL) { @@ -194,25 +138,6 @@ void JAIStream::prepare_startStream_() { } } -/* ############################################################################################## */ -/* 804557F0-804557F4 003DF0 0004+00 2/2 0/0 0/0 .sdata2 @864 */ -SECTION_SDATA2 static f32 lit_864 = 1.0f; - -/* 804557F4-804557F8 003DF4 0004+00 2/2 0/0 0/0 .sdata2 @865 */ -SECTION_SDATA2 static u8 lit_865[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 804557F8-80455800 003DF8 0004+04 2/2 0/0 0/0 .sdata2 @866 */ -SECTION_SDATA2 static f32 lit_866[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; - /* 802A34E4-802A3720 29DE24 023C+00 0/0 1/1 0/0 .text * JAIStreamMgr_mixOut___9JAIStreamFRC14JASSoundParams16JAISoundActivity */ void JAIStream::JAIStreamMgr_mixOut_(JASSoundParams const& param_1, JAISoundActivity param_2) { @@ -264,17 +189,13 @@ void JAIStream::JAIStreamMgr_mixOut_(JASSoundParams const& param_1, JAISoundActi } } - -/* ############################################################################################## */ -/* 804340E0-804340F0 060E00 000C+04 3/3 0/0 0/0 .bss @881 */ -static u8 lit_881[12 + 4 /* padding */]; - /* 802A3720-802A37FC 29E060 00DC+00 1/1 0/0 0/0 .text die_JAIStream___9JAIStreamFv */ +// NONMATCHING JASPolAllocObject<_> locations void JAIStream::die_JAIStream_() { die_JAISound_(); for (int i = 0; i < CHANNEL_MAX; i++) { if (field_0x2a0[i] != NULL) { - delete (JASPoolAllocObject*)field_0x2a0[i]; + delete field_0x2a0[i]; field_0x2a0[i] = NULL; } } @@ -284,7 +205,6 @@ void JAIStream::die_JAIStream_() { } } - /* 802A37FC-802A388C 29E13C 0090+00 1/0 0/0 0/0 .text JAISound_tryDie___9JAIStreamFv */ bool JAIStream::JAISound_tryDie_() { if (field_0x2c6) { @@ -334,36 +254,25 @@ s32 JAIStream::getNumChild() const { } /* 802A3950-802A3A24 29E290 00D4+00 1/0 0/0 0/0 .text getChild__9JAIStreamFi */ -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations JAISoundChild* JAIStream::getChild(int i_idx) { if (field_0x2a0[i_idx] == NULL) { - JASPoolAllocObject* ptr = new JASPoolAllocObject(); - field_0x2a0[i_idx] = new (ptr) JAISoundChild(); + field_0x2a0[i_idx] = new JAISoundChild(); if (field_0x2a0[i_idx] == NULL) { JUT_WARN(370, "JASPoolAllocObject::::operator new failed .") } } return field_0x2a0[i_idx]; } -#else -JAISoundChild* JAIStream::getChild(int param_0) { - // NONMATCHING -} -#endif /* 802A3A24-802A3ABC 29E364 0098+00 1/0 0/0 0/0 .text releaseChild__9JAIStreamFi */ -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations void JAIStream::releaseChild(int i_idx) { if (field_0x2a0[i_idx] != NULL) { - delete (JASPoolAllocObject*)field_0x2a0[i_idx]; + delete field_0x2a0[i_idx]; field_0x2a0[i_idx] = NULL; } } -#else -void JAIStream::releaseChild(int param_0) { - // NONMATCHING -} -#endif /* 802A3ABC-802A3AC4 29E3FC 0008+00 1/0 0/0 0/0 .text getTrack__9JAIStreamFv */ JASTrack* JAIStream::getTrack() { @@ -383,4 +292,4 @@ JAIStream* JAIStream::asStream() { /* 802A3AD0-802A3AD8 29E410 0008+00 1/0 0/0 0/0 .text getTempoMgr__9JAIStreamFv */ JAITempoMgr* JAIStream::getTempoMgr() { return NULL; -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JAIStreamMgr.cpp b/src/JSystem/JAudio2/JAIStreamMgr.cpp index e1a565b5b2..f8157b22e0 100644 --- a/src/JSystem/JAudio2/JAIStreamMgr.cpp +++ b/src/JSystem/JAudio2/JAIStreamMgr.cpp @@ -7,75 +7,6 @@ #include "JSystem/JAudio2/JAISoundHandles.h" #include "JSystem/JAudio2/JAIStreamDataMgr.h" #include "JSystem/JAudio2/JAISoundInfo.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void __ct__12JAIStreamMgrFb(); -extern "C" void func_802A3C3C(); -extern "C" void freeDeadStream___12JAIStreamMgrFv(); -extern "C" void func_802A3E68(void* _this); -extern "C" void calc__12JAIStreamMgrFv(); -extern "C" void stop__12JAIStreamMgrFv(); -extern "C" void stop__12JAIStreamMgrFUl(); -extern "C" void stopSoundID__12JAIStreamMgrF10JAISoundID(); -extern "C" void mixOut__12JAIStreamMgrFv(); -extern "C" void newStream___12JAIStreamMgrFv(); - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void attachHandle__8JAISoundFP14JAISoundHandle(); -extern "C" void stop__8JAISoundFUl(); -extern "C" void stop__8JAISoundFv(); -extern "C" void func_802A3104(); -extern "C" void func_802A319C(); -extern "C" void JAIStreamMgr_mixOut___9JAIStreamFRC14JASSoundParams16JAISoundActivity(); -extern "C" void JAIStreamMgr_calc___9JAIStreamFv(); -extern "C" void __dl__FPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__9JAIStream[12]; -extern "C" extern u8 data_80450B5C[4]; -extern "C" extern u8 data_80451328[8]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80455800-80455804 003E00 0004+00 1/1 0/0 0/0 .sdata2 @653 */ -SECTION_SDATA2 static f32 lit_653 = 1.0f; - -/* 80455804-80455808 003E04 0004+00 1/1 0/0 0/0 .sdata2 @654 */ -SECTION_SDATA2 static u8 lit_654[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455808-80455810 003E08 0004+04 1/1 0/0 0/0 .sdata2 @655 */ -SECTION_SDATA2 static f32 lit_655[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; /* 802A3B68-802A3C3C 29E4A8 00D4+00 0/0 1/1 0/0 .text __ct__12JAIStreamMgrFb */ JAIStreamMgr::JAIStreamMgr(bool param_0) : JASGlobalInstance(param_0) { @@ -87,7 +18,6 @@ JAIStreamMgr::JAIStreamMgr(bool param_0) : JASGlobalInstance(param mActivity.init(); } - /* 802A3C3C-802A3D70 29E57C 0134+00 0/0 1/1 0/0 .text * startSound__12JAIStreamMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ bool JAIStreamMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, @@ -120,19 +50,9 @@ bool JAIStreamMgr::startSound(JAISoundID param_1, JAISoundHandle* param_2, return false; } -/* ############################################################################################## */ -/* 804340F0-804340FC 060E10 000C+00 2/2 0/0 0/0 .bss @745 */ -static u8 lit_745[12]; - -/* 804340FC-80434110 060E1C 0010+04 2/2 1/1 0/0 .bss - * memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9JAIStream>Fv */ -extern u8 data_804340FC[16 + 4 /* padding */]; -u8 data_804340FC[16 + 4 /* padding */]; - /* 802A3D70-802A3E68 29E6B0 00F8+00 1/1 0/0 0/0 .text freeDeadStream___12JAIStreamMgrFv */ -// I think this will match when all references to data_80451328 (init$localstatic4$getMemPool__30JASPoolAllocObject<9JAIStream>Fv) are not in asm -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations void JAIStreamMgr::freeDeadStream_() { JSULink* link = mStreamList.getFirst(); while (link != NULL) { @@ -150,16 +70,6 @@ void JAIStreamMgr::freeDeadStream_() { link = next; } } -#else -void JAIStreamMgr::freeDeadStream_() { - // NONMATCHING -} -#endif - -/* 802A3E68-802A3EBC 29E7A8 0054+00 2/2 1/1 0/0 .text __dt__22JASMemPool<9JAIStream>Fv */ -extern "C" void func_802A3E68(void* _this) { - // NONMATCHING -} /* 802A3EBC-802A4028 29E7FC 016C+00 0/0 1/1 0/0 .text calc__12JAIStreamMgrFv */ void JAIStreamMgr::calc() { @@ -201,6 +111,7 @@ void JAIStreamMgr::mixOut() { } /* 802A4174-802A4244 29EAB4 00D0+00 1/1 0/0 0/0 .text newStream___12JAIStreamMgrFv */ +// NONMATCHING JASPoolAllocObject<_> locations JAIStream* JAIStreamMgr::newStream_() { if (mStreamAramMgr == NULL) { JUT_WARN(229, "JAIStreamAramMgr must be set.\n"); @@ -214,4 +125,4 @@ JAIStream* JAIStreamMgr::newStream_() { mStreamList.append(stream); return stream; -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JASAiCtrl.cpp b/src/JSystem/JAudio2/JASAiCtrl.cpp index fd34951305..61374f62f6 100644 --- a/src/JSystem/JAudio2/JASAiCtrl.cpp +++ b/src/JSystem/JAudio2/JASAiCtrl.cpp @@ -6,116 +6,26 @@ #include "JSystem/JAudio2/JASAiCtrl.h" #include "JSystem/JAudio2/JASAudioThread.h" #include "JSystem/JAudio2/JASCalc.h" +#include "JSystem/JAudio2/JASChannel.h" +#include "JSystem/JAudio2/JASCmdStack.h" #include "JSystem/JAudio2/JASCriticalSection.h" +#include "JSystem/JAudio2/JASDSPChannel.h" #include "JSystem/JAudio2/JASDSPInterface.h" #include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JAudio2/JASProbe.h" #include "JSystem/JAudio2/JASReport.h" #include "JSystem/JAudio2/JASLfo.h" +#include "JSystem/JKernel/JKRSolidHeap.h" #include "dol2asm.h" #include "dolphin/ai.h" #include "dolphin/os/OSCache.h" #include "dolphin/os/OSTime.h" -// -// Types: -// - -struct JASPortCmd { - /* 80291060 */ static void execAllCommand(); -}; - -struct JASDSPChannel { - /* 8029D89C */ static void updateAll(); - /* 8029D910 */ static void killActiveChannel(); -}; - -struct JASChannel { - /* 8029BC0C */ static void initBankDisposeMsgQueue(); - /* 8029BC48 */ static void receiveBankDisposeMsg(); -}; - -// -// Forward References: -// - -extern "C" void initAI__9JASDriverFPFv_v(); -extern "C" void startDMA__9JASDriverFv(); -extern "C" void stopDMA__9JASDriverFv(); -extern "C" void setOutputRate__9JASDriverF13JASOutputRate(); -extern "C" void updateDac__9JASDriverFv(); -extern "C" void updateDSP__9JASDriverFv(); -extern "C" void readDspBuffer__9JASDriverFPsUl(); -extern "C" void finishDSPFrame__9JASDriverFv(); -extern "C" void registerMixCallback__9JASDriverFPFl_Ps10JASMixMode(); -extern "C" void getDacRate__9JASDriverFv(); -extern "C" u32 getSubFrames__9JASDriverFv(); -extern "C" void getDacSize__9JASDriverFv(); -extern "C" void getFrameSamples__9JASDriverFv(); -extern "C" void mixMonoTrack(s16*, u32, s16* (*)(s32)); -extern "C" void mixMonoTrackWide(s16*, u32, s16* (*)(s32)); -extern "C" void mixExtraTrack(s16*, u32, s16* (*)(s32)); -extern "C" void mixInterleaveTrack(s16*, u32, s16* (*)(s32)); -extern "C" u32 getSubFrameCounter__9JASDriverFv(); -extern "C" void* const sMixFuncs__9JASDriver[4]; -extern "C" extern char const* const JASAiCtrl__stringBase0; -extern "C" u8 sDmaDacBuffer__9JASDriver[12 + 4 /* padding */]; -extern "C" u32 sMixMode__9JASDriver; -extern "C" f32 sDacRate__9JASDriver; -extern "C" u32 sSubFrames__9JASDriver; -extern "C" u8 sDspDacBuffer__9JASDriver[4]; -extern "C" u8 sDspDacWriteBuffer__9JASDriver[4]; -extern "C" u8 sDspDacReadBuffer__9JASDriver[4]; -extern "C" u8 sDspStatus__9JASDriver[4]; -extern "C" u8 sDspDacCallback__9JASDriver[4]; -extern "C" u8 lastRspMadep__9JASDriver[4]; -extern "C" u8 dacCallbackFunc__9JASDriver[4]; -extern "C" u8 extMixCallback__9JASDriver[4]; -extern "C" u8 sOutputRate__9JASDriver[4]; -extern "C" u8 sSubFrameCounter__9JASDriver[4]; - -// -// External References: -// - -extern "C" void imixcopy__7JASCalcFPCsPCsPsUl(); -extern "C" void bzero__7JASCalcFPvUl(); -extern "C" void func_8028F69C(void* _this, s32); -extern "C" void start__8JASProbeFlPCc(); -extern "C" void stop__8JASProbeFl(); -extern "C" void JASReport__FPCce(); -extern "C" void execAllCommand__10JASPortCmdFv(); -extern "C" void initBankDisposeMsgQueue__10JASChannelFv(); -extern "C" void receiveBankDisposeMsg__10JASChannelFv(); -extern "C" void incCounter__6JASLfoFf(); -extern "C" void updateAll__13JASDSPChannelFv(); -extern "C" void killActiveChannel__13JASDSPChannelFv(); -extern "C" void syncFrame__6JASDspFUlUlUl(); -extern "C" void invalChannelAll__6JASDspFv(); -extern "C" void subframeCallback__9JASDriverFv(); -extern "C" void DSPSyncCallback__9JASDriverFv(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 sFreeRunLfo__6JASLfo[24]; -extern "C" u8 snIntCount__14JASAudioThread[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80431C58-80431C68 05E978 000C+04 2/2 0/0 0/0 .bss sDmaDacBuffer__9JASDriver */ s16* JASDriver::sDmaDacBuffer[3]; /* 804507A8-804507AC 000228 0004+00 3/3 0/0 0/0 .sdata None */ -SECTION_SDATA static u8 data_804507A8 = 3; +static u8 data_804507A8 = 3; /* 804512A0-804512A4 0007A0 0004+00 3/3 0/0 0/0 .sbss sDspDacBuffer__9JASDriver */ s16** JASDriver::sDspDacBuffer; @@ -145,8 +55,7 @@ JASDriver::MixCallback JASDriver::extMixCallback; u32 JASDriver::sOutputRate; /* 8029C388-8029C4E4 296CC8 015C+00 0/0 1/1 0/0 .text initAI__9JASDriverFPFv_v */ -// missing instructions -#ifdef NONMATCHING +// NONMATCHING missing instructions void JASDriver::initAI(void (*param_0)(void)) { setOutputRate(OUTPUT_RATE_0); u32 size = getDacSize() * 2; @@ -170,11 +79,6 @@ void JASDriver::initAI(void (*param_0)(void)) { AISetDSPSampleRate(sOutputRate != 0); AIRegisterDMACallback(param_0); } -#else -void JASDriver::initAI(void (*param_0)(void)) { - // NONMATCHING -} -#endif /* 8029C4E4-8029C504 296E24 0020+00 0/0 1/1 0/0 .text startDMA__9JASDriverFv */ void JASDriver::startDMA() { @@ -187,24 +91,14 @@ void JASDriver::stopDMA() { AIStopDMA(); } -/* ############################################################################################## */ /* 804507AC-804507B0 00022C 0004+00 2/2 0/0 0/0 .sdata sMixMode__9JASDriver */ -SECTION_SDATA JASMixMode JASDriver::sMixMode = MIX_MODE_EXTRA; +JASMixMode JASDriver::sMixMode = MIX_MODE_EXTRA; /* 804507B0-804507B4 000230 0004+00 2/2 0/0 0/0 .sdata sDacRate__9JASDriver */ -SECTION_SDATA f32 JASDriver::sDacRate = 32028.5f; +f32 JASDriver::sDacRate = 32028.5f; /* 804507B4-804507B8 000234 0004+00 4/3 0/0 0/0 .sdata sSubFrames__9JASDriver */ -SECTION_SDATA u32 JASDriver::sSubFrames = 0x00000007; - -/* 80455720-80455724 003D20 0004+00 1/1 0/0 0/0 .sdata2 @233 */ -SECTION_SDATA2 static f32 lit_233 = 32000.0f; - -/* 80455724-80455728 003D24 0004+00 1/1 0/0 0/0 .sdata2 @234 */ -SECTION_SDATA2 static f32 lit_234 = 48000.0f; - -/* 80455728-8045572C 003D28 0004+00 1/1 0/0 0/0 .sdata2 @235 */ -SECTION_SDATA2 static f32 lit_235 = 1.0008896589279175f; +u32 JASDriver::sSubFrames = 0x00000007; /* 8029C524-8029C568 296E64 0044+00 1/1 0/0 0/0 .text setOutputRate__9JASDriverF13JASOutputRate */ void JASDriver::setOutputRate(JASOutputRate param_0) { @@ -216,19 +110,16 @@ void JASDriver::setOutputRate(JASOutputRate param_0) { sSubFrames = 10; sDacRate = 48000.0f; } - sDacRate *= 1.00089f; + sDacRate *= 1.0008897f; } - -/* ############################################################################################## */ /* 8039B2E0-8039B2F0 -00001 0010+00 1/1 0/0 0/0 .rodata sMixFuncs__9JASDriver */ -SECTION_RODATA const JASDriver::MixFunc JASDriver::sMixFuncs[4] = { +const JASDriver::MixFunc JASDriver::sMixFuncs[4] = { mixMonoTrack, mixMonoTrackWide, mixExtraTrack, mixInterleaveTrack, }; -COMPILER_STRIP_GATE(0x8039B2E0, &JASDriver::sMixFuncs); /* 804512C4-804512C8 0007C4 0004+00 2/1 0/0 0/0 .sbss sSubFrameCounter__9JASDriver */ u32 JASDriver::sSubFrameCounter; @@ -263,40 +154,9 @@ void JASDriver::updateDac() { } } -/* ############################################################################################## */ -/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039B2F0 = "SFR-UPDATE"; -SECTION_DEAD static char const* const stringBase_8039B2FB = "kill DSP channel"; -#pragma pop - -/* 803C78B8-803C78E0 0249D8 0028+00 1/1 0/0 0/0 .data history$267 */ -SECTION_DATA static u32 history[10] = { - 0x000F4240, -}; - -/* 804512D0-804512D4 0007D0 0004+00 1/1 0/0 0/0 .sbss old_time$264 */ -static u32 old_time; - -/* 804512D4-804512D8 0007D4 0004+00 1/1 0/0 0/0 .sbss None */ -static u8 data_804512D4[4]; - -/* 8045572C-80455730 003D2C 0004+00 1/1 0/0 0/0 .sdata2 @275 */ -SECTION_SDATA2 static f32 lit_275 = 11.0f / 10.0f; - -/* 80455730-80455738 003D30 0004+04 1/1 0/0 0/0 .sdata2 @276 */ -SECTION_SDATA2 static f32 lit_276[1 + 1 /* padding */] = { - 32028.5f, - /* padding */ - 0.0f, -}; - -/* 80455738-80455740 003D38 0008+00 1/1 0/0 0/0 .sdata2 @278 */ -SECTION_SDATA2 static f64 lit_278 = 4503599627370496.0 /* cast u32 to float */; - /* 8029C6C4-8029C7E0 297004 011C+00 1/1 1/1 0/0 .text updateDSP__9JASDriverFv */ void JASDriver::updateDSP() { + static u32 history[10] = {0x000F4240}; JASProbe::start(3, "SFR-UPDATE"); JASDsp::invalChannelAll(); JASPortCmd::execAllCommand(); @@ -320,10 +180,8 @@ void JASDriver::updateDSP() { sSubFrameCounter++; } - /* 8029C7E0-8029C900 297120 0120+00 1/1 0/0 0/0 .text readDspBuffer__9JASDriverFPsUl */ -// missing instruction -#ifdef NONMATCHING +// NONMATCHING one wrong instruction void JASDriver::readDspBuffer(s16* param_0, u32 param_1) { s32 r29 = sDspDacReadBuffer + 1; if (r29 == data_804507A8) { @@ -336,7 +194,7 @@ void JASDriver::readDspBuffer(s16* param_0, u32 param_1) { sDspDacBuffer[sDspDacReadBuffer][i] = r25; } for (int i = param_1; i < param_1 * 2; i++) { - sDspDacBuffer[sDspDacReadBuffer][i] = r24; + sDspDacBuffer[sDspDacReadBuffer][i] = (s16)r24; } } else { sDspDacReadBuffer = r29; @@ -344,11 +202,6 @@ void JASDriver::readDspBuffer(s16* param_0, u32 param_1) { } JASCalc::imixcopy(sDspDacBuffer[sDspDacReadBuffer] + param_1, sDspDacBuffer[sDspDacReadBuffer], param_0, param_1); } -#else -void JASDriver::readDspBuffer(s16* param_0, u32 param_1) { - // NONMATCHING -} -#endif /* 8029C900-8029C9DC 297240 00DC+00 1/1 1/1 0/0 .text finishDSPFrame__9JASDriverFv */ void JASDriver::finishDSPFrame() { @@ -476,4 +329,4 @@ u32 JASDriver::getSubFrameCounter() { return sSubFrameCounter; } -/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/JSystem/JAudio2/JASAramStream.cpp b/src/JSystem/JAudio2/JASAramStream.cpp index 5bea22099b..4a56d47436 100644 --- a/src/JSystem/JAudio2/JASAramStream.cpp +++ b/src/JSystem/JAudio2/JASAramStream.cpp @@ -4,94 +4,15 @@ // #include "JSystem/JAudio2/JASAramStream.h" +#include "JSystem/JAudio2/JASAiCtrl.h" #include "JSystem/JAudio2/JASChannel.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JAudio2/JASDriverIF.h" +#include "JSystem/JAudio2/JASDSPInterface.h" #include "JSystem/JAudio2/JASDvdThread.h" +#include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "JSystem/JAudio2/JASAiCtrl.h" -#include "dol2asm.h" -// -// Types: -// - -/* JASMemPool_MultiThreaded */ -struct JASMemPool_MultiThreaded__template2 { - /* 802978DC */ void func_802978DC(void* _this); -}; - -// -// Forward References: -// - -extern "C" void initSystem__13JASAramStreamFUlUl(); -extern "C" void __ct__13JASAramStreamFv(); -extern "C" void init__13JASAramStreamFUlUlPFUlP13JASAramStreamPv_vPv(); -extern "C" void prepare__13JASAramStreamFli(); -extern "C" void start__13JASAramStreamFv(); -extern "C" void stop__13JASAramStreamFUs(); -extern "C" void pause__13JASAramStreamFb(); -extern "C" void cancel__13JASAramStreamFv(); -extern "C" void getBlockSamples__13JASAramStreamCFv(); -extern "C" void headerLoadTask__13JASAramStreamFPv(); -extern "C" void firstLoadTask__13JASAramStreamFPv(); -extern "C" void loadToAramTask__13JASAramStreamFPv(); -extern "C" void finishTask__13JASAramStreamFPv(); -extern "C" void prepareFinishTask__13JASAramStreamFPv(); -extern "C" void headerLoad__13JASAramStreamFUli(); -extern "C" void load__13JASAramStreamFv(); -extern "C" void channelProcCallback__13JASAramStreamFPv(); -extern "C" void dvdErrorCheck__13JASAramStreamFPv(); -extern "C" void channelCallback__13JASAramStreamFUlP10JASChannelPQ26JASDsp8TChannelPv(); -extern "C" void updateChannel__13JASAramStreamFUlP10JASChannelPQ26JASDsp8TChannel(); -extern "C" void channelProc__13JASAramStreamFv(); -extern "C" void channelStart__13JASAramStreamFv(); -extern "C" void channelStop__13JASAramStreamFUs(); -extern "C" void func_802978DC(void* _this); -extern "C" u8 sLoadThread__13JASAramStream[4]; -extern "C" u8 sReadBuffer__13JASAramStream[4]; -extern "C" u8 sBlockSize__13JASAramStream[4]; -extern "C" u8 sChannelMax__13JASAramStream[4]; - -// -// External References: -// - -extern "C" void sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl(); -extern "C" void sendCmdMsg__13JASTaskThreadFPFPv_vPv(); -extern "C" void getThreadPointer__6JASDvdFv(); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void __ct__10JASChannelFPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv(); -extern "C" void playForce__10JASChannelFv(); -extern "C" void release__10JASChannelFUs(); -extern "C" void setOscInit__10JASChannelFUlPCQ213JASOscillator4Data(); -extern "C" void setMixConfig__10JASChannelFUlUs(); -extern "C" void getDacRate__9JASDriverFv(); -extern "C" void rejectCallback__9JASDriverFPFPv_lPv(); -extern "C" void registerSubFrameCallback__9JASDriverFPFPv_lPv(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void mainRamToAram__7JKRAramFPUcUlUl15JKRExpandSwitchUlP7JKRHeapiPUl(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80451250-80451254 000750 0004+00 6/6 0/0 0/0 .sbss sLoadThread__13JASAramStream */ JASTaskThread* JASAramStream::sLoadThread; @@ -110,10 +31,8 @@ u32 JASAramStream::sChannelMax; /* 80451262 0006+00 data_80451262 None */ extern bool struct_80451260; extern bool struct_80451261; -extern u32 struct_80451264; bool struct_80451260; bool struct_80451261; -u32 struct_80451264; /* 8029631C-802963A8 290C5C 008C+00 0/0 1/1 0/0 .text initSystem__13JASAramStreamFUlUl */ void JASAramStream::initSystem(u32 i_blockSize, u32 i_channelMax) { @@ -129,23 +48,8 @@ void JASAramStream::initSystem(u32 i_blockSize, u32 i_channelMax) { } } -/* ############################################################################################## */ -/* 80455610-80455614 003C10 0004+00 3/3 0/0 0/0 .sdata2 @390 */ -SECTION_SDATA2 static u8 lit_390[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455614-80455618 003C14 0004+00 2/2 0/0 0/0 .sdata2 @391 */ -SECTION_SDATA2 static f32 lit_391 = 1.0f; - -/* 80455618-8045561C 003C18 0004+00 2/2 0/0 0/0 .sdata2 @392 */ -SECTION_SDATA2 static f32 lit_392 = 0.5f; - /* 802963A8-8029649C 290CE8 00F4+00 0/0 1/1 0/0 .text __ct__13JASAramStreamFv */ -#ifdef NONMATCHING +// NONMATCHING missing load JASAramStream::JASAramStream() { field_0x0a8 = NULL; field_0x0ac = false; @@ -191,15 +95,10 @@ JASAramStream::JASAramStream() { field_0x1dc[i] = 0; } } -#else -JASAramStream::JASAramStream() { - // NONMATCHING -} -#endif /* 8029649C-8029655C 290DDC 00C0+00 0/0 1/1 0/0 .text * init__13JASAramStreamFUlUlPFUlP13JASAramStreamPv_vPv */ -#ifdef NONMATCHING +// NONMATCHING missing load void JASAramStream::init(u32 param_0, u32 param_1, StreamCallback i_callback, void* i_callbackData) { field_0x148 = param_0; field_0x14c = param_1; @@ -223,11 +122,6 @@ void JASAramStream::init(u32 param_0, u32 param_1, StreamCallback i_callback, vo OSInitMessageQueue(&field_0x000, field_0x040, 0x10); OSInitMessageQueue(&field_0x020, field_0x080, 4); } -#else -void JASAramStream::init(u32 param_0, u32 param_1, StreamCallback i_callback, void* param_3) { - // NONMATCHING -} -#endif /* 8029655C-80296618 290E9C 00BC+00 0/0 1/1 0/0 .text prepare__13JASAramStreamFli */ bool JASAramStream::prepare(s32 param_0, int param_1) { @@ -345,13 +239,6 @@ void JASAramStream::prepareFinishTask(void* i_this) { } } -/* ############################################################################################## */ -/* 8045561C-80455620 003C1C 0004+00 1/1 0/0 0/0 .sdata2 @531 */ -SECTION_SDATA2 static f32 lit_531 = 127.0f; - -/* 80455620-80455628 003C20 0008+00 3/3 0/0 0/0 .sdata2 @533 */ -SECTION_SDATA2 static f64 lit_533 = 4503599627370496.0 /* cast u32 to float */; - /* 80296920-80296AE8 291260 01C8+00 1/1 0/0 0/0 .text headerLoad__13JASAramStreamFUli */ bool JASAramStream::headerLoad(u32 param_0, int param_1) { if (struct_80451261) { @@ -401,7 +288,7 @@ bool JASAramStream::headerLoad(u32 param_0, int param_1) { /* 80296AE8-80296D74 291428 028C+00 2/2 0/0 0/0 .text load__13JASAramStreamFv */ -#ifdef NONMATCHING +// NONMATCHING regalloc and one instruction swap bool JASAramStream::load() { { JASCriticalSection cs; @@ -421,7 +308,11 @@ bool JASAramStream::load() { } u32 size = sBlockSize * mChannelNum + sizeof(BlockHeader); u32 offset = block * size + sizeof(Header); - if (DVDReadPrio(&mDvdFileInfo, sReadBuffer, size, offset, 1) < 0) { + u32 size2 = size; + if (block == loop_end_block) { + size2 = mDvdFileInfo.length - offset; + } + if (DVDReadPrio(&mDvdFileInfo, sReadBuffer, size2, offset, 1) < 0) { struct_80451261 = true; return false; } @@ -431,8 +322,8 @@ bool JASAramStream::load() { } u32 uvar2 = field_0x148 + field_0x10c * sBlockSize; for (int i = 0; i < mChannelNum; i++) { - if (!JKRAram::mainRamToAram(sReadBuffer + bhead->field_0x4 * i + 0x20, - uvar2 + i * field_0x160 * sBlockSize, + 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)) { struct_80451261 = 1; return false; @@ -442,7 +333,10 @@ bool JASAramStream::load() { if (field_0x10c >= field_0x108) { u32 uvar8 = mBlock - 1 + field_0x108; if (mLoop) { - for (; uvar8 > loop_end_block; uvar8 = uvar8 - loop_end_block + loop_start_block) {} + while (uvar8 > loop_end_block) { + uvar8 -= loop_end_block; + uvar8 += loop_start_block; + } } if (uvar8 == loop_end_block || uvar8 + 2 == loop_end_block) { field_0x108 = field_0x160; @@ -462,45 +356,22 @@ bool JASAramStream::load() { } return true; } -#else -bool JASAramStream::load() { - // NONMATCHING -} -#endif /* 80296D74-80296D94 2916B4 0020+00 2/2 0/0 0/0 .text channelProcCallback__13JASAramStreamFPv */ s32 JASAramStream::channelProcCallback(void* i_this) { return ((JASAramStream*)i_this)->channelProc(); } -/* ############################################################################################## */ -/* 803C7670-803C76A8 -00001 0034+04 1/1 0/0 0/0 .data @613 */ -SECTION_DATA static void* lit_613[13 + 1 /* padding */] = { - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x34), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x48), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - (void*)(((char*)dvdErrorCheck__13JASAramStreamFPv) + 0x40), - /* padding */ - NULL, -}; - /* 80296D94-80296DF0 2916D4 005C+00 2/1 0/0 0/0 .text dvdErrorCheck__13JASAramStreamFPv */ -#ifdef NONMATCHING +// NONMATCHING supposed to use a switch table s32 JASAramStream::dvdErrorCheck(void* param_0) { switch (DVDGetDriveStatus()) { case DVD_STATE_END: struct_80451260 = false; break; + case DVD_STATE_BUSY: + break; case DVD_STATE_WAITING: case DVD_STATE_COVER_CLOSED: case DVD_STATE_NO_DISK: @@ -508,20 +379,15 @@ s32 JASAramStream::dvdErrorCheck(void* param_0) { case DVD_STATE_WRONG_DISK: case DVD_STATE_MOTOR_STOPPED: case DVD_STATE_IGNORED: - case 9: case DVD_STATE_CANCELED: case DVD_STATE_RETRY: case DVD_STATE_FATAL_ERROR: + default: struct_80451260 = true; break; } return 0; } -#else -s32 JASAramStream::dvdErrorCheck(void* param_0) { - // NONMATCHING -} -#endif /* 80296DF0-80296E2C 291730 003C+00 1/1 0/0 0/0 .text * channelCallback__13JASAramStreamFUlP10JASChannelPQ26JASDsp8TChannelPv */ @@ -532,8 +398,7 @@ void JASAramStream::channelCallback(u32 i_callbackType, JASChannel* i_channel, /* 80296E2C-802974AC 29176C 0680+00 1/1 0/0 0/0 .text * updateChannel__13JASAramStreamFUlP10JASChannelPQ26JASDsp8TChannel */ -#ifdef NONMATCHING -// missing extra loads of field_0x0c4 +// NONMATCHING missing extra loads of field_0x0c4 void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, JASDsp::TChannel* i_dspChannel) { u32 block_samples = getBlockSamples(); @@ -712,15 +577,9 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel, } i_channel->mPauseFlag = field_0x0ae != 0; } -#else -void JASAramStream::updateChannel(u32 param_0, JASChannel* param_1, JASDsp::TChannel* param_2) { - // NONMATCHING -} -#endif /* 802974AC-80297658 291DEC 01AC+00 1/1 0/0 0/0 .text channelProc__13JASAramStreamFv */ -#ifdef NONMATCHING -// regalloc and instruction ordering +// NONMATCHING instruction ordering s32 JASAramStream::channelProc() { OSMessage msg; while (OSReceiveMessage(&field_0x020, &msg, OS_MESSAGE_NOBLOCK)) { @@ -778,13 +637,7 @@ s32 JASAramStream::channelProc() { return 0; } -#else -s32 JASAramStream::channelProc() { - // NONMATCHING -} -#endif -/* ############################################################################################## */ /* 8039B168-8039B174 0277C8 000C+00 1/0 0/0 0/0 .rodata OSC_RELEASE_TABLE */ static JASOscillator::Point const OSC_RELEASE_TABLE[2] = { {0x0000, 0x0002, 0x0000}, @@ -794,17 +647,6 @@ static JASOscillator::Point const OSC_RELEASE_TABLE[2] = { /* 8039B174-8039B190 -00001 0018+04 1/1 0/0 0/0 .rodata OSC_ENV */ static JASOscillator::Data const OSC_ENV = {0, 1.0f, NULL, OSC_RELEASE_TABLE, 1.0f, 0.0f}; -/* 80431B28-80431B34 05E848 000C+00 1/1 0/0 0/0 .bss @792 */ -static u8 lit_792[12]; - -/* 80431B34-80431B48 05E854 0010+04 1/1 4/4 0/0 .bss - * memPool_$localstatic3$getMemPool___46JASPoolAllocObject_MultiThreaded<10JASChannel>Fv */ -extern u8 data_80431B34[16 + 4 /* padding */]; -u8 data_80431B34[16 + 4 /* padding */]; - -/* 80455628-80455630 003C28 0004+04 1/1 0/0 0/0 .sdata2 one$776 */ -SECTION_SDATA2 static u32 one = 1; - /* 80297658-80297870 291F98 0218+00 1/1 0/0 0/0 .text channelStart__13JASAramStreamFv */ void JASAramStream::channelStart() { u8 r31; @@ -826,6 +668,7 @@ void JASAramStream::channelStart() { wave_info.field_0x1c = 0; wave_info.field_0x1e = 0; // probably a fake match, this should be set in the JASWaveInfo constructor + static u32 const one = 1; wave_info.field_0x20 = &one; JASChannel* channel = new JASChannel(channelCallback, this); channel->setPriority(0x7f7f); @@ -852,9 +695,3 @@ void JASAramStream::channelStop(u16 i_directRelease) { } } } - -/* 802978DC-80297930 29221C 0054+00 1/1 5/5 0/0 .text - * __dt__38JASMemPool_MultiThreaded<10JASChannel>Fv */ -extern "C" void func_802978DC(void* _this) { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASAudioThread.cpp b/src/JSystem/JAudio2/JASAudioThread.cpp index a9ad8237f4..1731fe7d93 100644 --- a/src/JSystem/JAudio2/JASAudioThread.cpp +++ b/src/JSystem/JAudio2/JASAudioThread.cpp @@ -4,88 +4,15 @@ // #include "JSystem/JAudio2/JASAudioThread.h" +#include "JSystem/JAudio2/JASAiCtrl.h" +#include "JSystem/JAudio2/JASDriverIF.h" +#include "JSystem/JAudio2/JASDSPChannel.h" +#include "JSystem/JAudio2/JASDSPInterface.h" #include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/JAudio2/JASProbe.h" #include "JSystem/JKernel/JKRSolidHeap.h" -#include "dol2asm.h" #include "dolphin/dsp.h" -// -// Types: -// - -struct JASProbe { - /* 80290EE4 */ static void start(s32, char const*); - /* 80290F24 */ static void stop(s32); -}; - -/* JASMemPool_MultiThreaded */ -struct JASMemPool_MultiThreaded__template2 { - /* 802978DC */ void func_802978DC(void* _this); -}; - - - -struct JASDsp { - /* 8029D958 */ static void boot(void (*)(void*)); - /* 8029D9C4 */ static void finishWork(u16); - /* 8029DAC8 */ static void initBuffer(); -}; - -struct JASDSPChannel { - /* 8029D3C8 */ static void initAll(); -}; - -// -// Forward References: -// - -extern "C" void __ct__14JASAudioThreadFiiUl(); -extern "C" void create__14JASAudioThreadFl(); -extern "C" void stop__14JASAudioThreadFv(); -extern "C" void run__14JASAudioThreadFv(); -extern "C" void DMACallback__14JASAudioThreadFv(); -extern "C" void DSPCallback__14JASAudioThreadFPv(); -extern "C" void __dt__14JASAudioThreadFv(); -extern "C" extern char const* const JASAudioThread__stringBase0; -extern "C" u8 snIntCount__14JASAudioThread[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void newMemPool__17JASGenericMemPoolFUli(); -extern "C" void start__8JASProbeFlPCc(); -extern "C" void stop__8JASProbeFl(); -extern "C" void func_802978DC(void* _this); -extern "C" void initAI__9JASDriverFPFv_v(); -extern "C" void startDMA__9JASDriverFv(); -extern "C" void stopDMA__9JASDriverFv(); -extern "C" void updateDac__9JASDriverFv(); -extern "C" void updateDSP__9JASDriverFv(); -extern "C" void finishDSPFrame__9JASDriverFv(); -extern "C" void initAll__13JASDSPChannelFv(); -extern "C" void boot__6JASDspFPFPv_v(); -extern "C" void finishWork__6JASDspFUs(); -extern "C" void initBuffer__6JASDspFv(); -extern "C" void updateDacCallback__9JASDriverFv(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __ct__9JKRThreadFP7JKRHeapUlii(); -extern "C" void __dt__9JKRThreadFv(); -extern "C" void __register_global_object(); -extern "C" extern u8 data_80431B34[16 + 4 /* padding */]; -extern "C" extern u8 struct_80451260[8]; -extern "C" u8 sSystemHeap__7JKRHeap[4]; -extern "C" u8 sCurrentHeap__7JKRHeap[4]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// - -/* ############################################################################################## */ - /* 8029CCDC-8029CD4C 29761C 0070+00 1/1 0/0 0/0 .text __ct__14JASAudioThreadFiiUl */ JASAudioThread::JASAudioThread(int stackSize, int msgCount, u32 threadPriority) : @@ -108,16 +35,6 @@ void JASAudioThread::stop() { jamMessageBlock((void*)2); } -/* ############################################################################################## */ -/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039B338 = "SFR_DSP"; -#pragma pop - -/* 80431C68-80431C78 05E988 000C+04 1/1 0/0 0/0 .bss @205 */ -static u8 lit_205[12 + 4 /* padding */]; - /* 804512D8-804512E0 0007D8 0004+04 1/1 2/2 0/0 .sbss snIntCount__14JASAudioThread */ volatile int JASAudioThread::snIntCount; @@ -138,8 +55,7 @@ class JASChannel { }; /* 8029CDEC-8029CF68 29772C 017C+00 1/0 0/0 0/0 .text run__14JASAudioThreadFv */ -// Maybe location of JASPoolAllocObject_MultiThreaded -#ifdef NONMATCHING +// NONMATCHING location of JASPoolAllocObject_MultiThreaded void* JASAudioThread::run() { OSInitFastCast(); JASDriver::initAI(DMACallback); @@ -181,19 +97,6 @@ void* JASAudioThread::run() { } } } -#else -void* JASAudioThread::run() { - // NONMATCHING -} -#endif -/* ############################################################################################## */ -/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039B340 = "UPDATE-DAC"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039B34B = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; -#pragma pop /* 8029CF68-8029CFBC 2978A8 0054+00 1/1 0/0 0/0 .text DMACallback__14JASAudioThreadFv */ void JASAudioThread::DMACallback() { @@ -218,4 +121,4 @@ void JASAudioThread::DSPCallback(void*) { } } -/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/JSystem/JAudio2/JASBNKParser.cpp b/src/JSystem/JAudio2/JASBNKParser.cpp index 366cb0fc09..273112059f 100644 --- a/src/JSystem/JAudio2/JASBNKParser.cpp +++ b/src/JSystem/JAudio2/JASBNKParser.cpp @@ -4,189 +4,184 @@ // #include "JSystem/JAudio2/JASBNKParser.h" -#include "dol2asm.h" - -// -// Types: -// - -struct JKRHeap { - /* 802CE72C */ void getFreeSize(); -}; - -template -struct JASMemPool_MultiThreaded {}; -/* JASMemPool_MultiThreaded */ -struct JASMemPool_MultiThreaded__template2 { - /* 802978DC */ void func_802978DC(void* _this); -}; - -struct JASInst {}; - -struct JASGenericMemPool { - /* 80290848 */ JASGenericMemPool(); -}; - -struct JASDrumSet { - struct TPerc { - /* 802984C4 */ TPerc(); - }; - - /* 802982EC */ JASDrumSet(); - /* 80298370 */ void newPercArray(u8, JKRHeap*); - /* 802984B4 */ void setPerc(int, JASDrumSet::TPerc*); -}; - -struct JASCalc { - /* 8028F354 */ void bcopy(void const*, void*, u32); -}; - -struct JASBasicInst { - /* 80298014 */ JASBasicInst(); - /* 8029819C */ void setKeyRegionCount(u32, JKRHeap*); - /* 8029821C */ void setOsc(int, JASOscillator::Data const*); - /* 8029822C */ void getKeyRegion(int); -}; - -struct JASBasicBank { - /* 80297D78 */ JASBasicBank(); - /* 80297DA4 */ void newInstTable(u8, JKRHeap*); - /* 80297E68 */ void setInst(int, JASInst*); - /* 80297E80 */ void getInst(int) const; -}; - -// -// Forward References: -// - -extern "C" void createBank__12JASBNKParserFPCvP7JKRHeap(); -extern "C" void createBasicBank__12JASBNKParserFPCvP7JKRHeap(); -extern "C" void findChunk__Q212JASBNKParser4Ver1FPCvUl(); -extern "C" void createBasicBank__Q212JASBNKParser4Ver1FPCvP7JKRHeap(); -extern "C" void createBasicBank__Q212JASBNKParser4Ver0FPCvP7JKRHeap(); -extern "C" void -findOscPtr__Q212JASBNKParser4Ver0FP12JASBasicBankPCQ312JASBNKParser4Ver07THeaderPCQ312JASBNKParser4Ver04TOsc(); -extern "C" void getOscTableEndPtr__Q212JASBNKParser4Ver0FPCQ213JASOscillator5Point(); -extern "C" void func_80299FA0(void* _this, void const*, u32); -extern "C" void func_80299FB8(void* _this, void const*, u32); -extern "C" void func_80299FD0(void* _this, void const*, u32); -extern "C" void func_80299FE8(void* _this, void const*, u32); -extern "C" void func_8029A000(void* _this, void const*, u32); -extern "C" void func_8029A018(void* _this, void const*, u32); -extern "C" void func_8029A030(void* _this, void const*, u32); -extern "C" void __sinit_JASBNKParser_cpp(); -extern "C" u8 sUsedHeapSize__12JASBNKParser[4]; - -// -// External References: -// - -extern "C" void bcopy__7JASCalcFPCvPvUl(); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void func_802978DC(void* _this); -extern "C" void __ct__12JASBasicBankFv(); -extern "C" void newInstTable__12JASBasicBankFUcP7JKRHeap(); -extern "C" void setInst__12JASBasicBankFiP7JASInst(); -extern "C" void getInst__12JASBasicBankCFi(); -extern "C" void __ct__12JASBasicInstFv(); -extern "C" void setKeyRegionCount__12JASBasicInstFUlP7JKRHeap(); -extern "C" void setOsc__12JASBasicInstFiPCQ213JASOscillator4Data(); -extern "C" void getKeyRegion__12JASBasicInstFi(); -extern "C" void __ct__10JASDrumSetFv(); -extern "C" void newPercArray__10JASDrumSetFUcP7JKRHeap(); -extern "C" void setPerc__10JASDrumSetFiPQ210JASDrumSet5TPerc(); -extern "C" void __ct__Q210JASDrumSet5TPercFv(); -extern "C" void setRelease__Q210JASDrumSet5TPercFUl(); -extern "C" void getFreeSize__7JKRHeapFv(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_17(); -extern "C" void _savegpr_19(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_17(); -extern "C" void _restgpr_19(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_28(); -extern "C" extern u8 JASDram[4]; - -// -// Declarations: -// +#include "JSystem/JAudio2/JASBasicBank.h" +#include "JSystem/JAudio2/JASCalc.h" +#include "JSystem/JAudio2/JASDrumSet.h" +#include "JSystem/JAudio2/JASHeapCtrl.h" +#include "JSystem/JKernel/JKRSolidHeap.h" +#include "JSystem/JSupport/JSupport.h" /* 80299538-80299558 293E78 0020+00 0/0 1/1 0/0 .text createBank__12JASBNKParserFPCvP7JKRHeap */ -JASBank* JASBNKParser::createBank(void const* param_0, JKRHeap* param_1) { - // NONMATCHING +JASBank* JASBNKParser::createBank(void const* stream, JKRHeap* heap) { + return createBasicBank(stream, heap); } -/* ############################################################################################## */ /* 80451288-8045128C 000788 0004+00 1/1 0/0 0/0 .sbss sUsedHeapSize__12JASBNKParser */ -u8 JASBNKParser::sUsedHeapSize[4]; +u32 JASBNKParser::sUsedHeapSize; /* 80299558-80299600 293E98 00A8+00 1/1 0/0 0/0 .text createBasicBank__12JASBNKParserFPCvP7JKRHeap */ -JASBasicBank* JASBNKParser::createBasicBank(void const* param_0, JKRHeap* param_1) { - // NONMATCHING +JASBasicBank* JASBNKParser::createBasicBank(void const* stream, JKRHeap* heap) { + if (heap == NULL) { + heap = JASDram; + } + + u32 free_size = heap->getFreeSize(); + JASBasicBank* bank = NULL; + + TFileHeader* header = (TFileHeader*)stream; + switch (header->mVersion) { + case 0: + bank = Ver0::createBasicBank(stream, heap); + break; + case 1: + bank = Ver1::createBasicBank(stream, heap); + break; + } + + sUsedHeapSize += free_size - heap->getFreeSize(); + return bank; } /* 80299600-8029963C 293F40 003C+00 1/1 0/0 0/0 .text findChunk__Q212JASBNKParser4Ver1FPCvUl */ -void JASBNKParser::Ver1::findChunk(void const* param_0, u32 param_1) { - // NONMATCHING +JASBNKParser::Ver1::TChunk* JASBNKParser::Ver1::findChunk(void const* stream, u32 id) { + TFileHeader* header = (TFileHeader*)stream; + void* end = (void*)((int)stream + header->mSize); + TChunk* chunk = (TChunk*)((int)stream + 0x20); + while (chunk < end) { + if (chunk->mID == id) { + return chunk; + } + chunk = (TChunk*)(((int)chunk + 0xb + chunk->mSize) & ~3); + } + return NULL; } -/* ############################################################################################## */ -/* 80455658-80455660 003C58 0004+04 2/2 0/0 0/0 .sdata2 @835 */ -SECTION_SDATA2 static f32 lit_835[1 + 1 /* padding */] = { - 127.0f, - /* padding */ - 0.0f, -}; - -/* 80455660-80455668 003C60 0008+00 1/1 0/0 0/0 .sdata2 @838 */ -SECTION_SDATA2 static f64 lit_838 = 4503599627370496.0 /* cast u32 to float */; - /* 8029963C-80299A3C 293F7C 0400+00 1/1 0/0 0/0 .text * createBasicBank__Q212JASBNKParser4Ver1FPCvP7JKRHeap */ -void JASBNKParser::Ver1::createBasicBank(void const* param_0, JKRHeap* param_1) { - // NONMATCHING -} +// NONMATCHING instruction ordering, regalloc +JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* heap) { + if (heap == NULL) { + heap = JASDram; + } -/* ############################################################################################## */ -/* 80455668-80455670 003C68 0008+00 1/1 0/0 0/0 .sdata2 @990 */ -SECTION_SDATA2 static f64 lit_990 = 4503601774854144.0 /* cast s32 to float */; + JASBasicBank* bank = new (heap, 0) JASBasicBank(); + if (bank == NULL) { + return NULL; + } + + TEnvtChunk* envt_chunk = (TEnvtChunk*)findChunk(stream, 'ENVT'); + TOscChunk* osc_chunk = (TOscChunk*)findChunk(stream, 'OSCT'); + TListChunk* list_chunk = (TListChunk*)findChunk(stream, 'LIST'); + + void* envt = new (heap, 2) u8[envt_chunk->mSize]; + JASCalc::bcopy(envt_chunk->mData, envt, envt_chunk->mSize); + + u32 count = osc_chunk->mCount; + TOsc* osc = osc_chunk->mOsc; + JASOscillator::Data* osc_data = new (heap, 0) JASOscillator::Data[count]; + for (int i = 0; i < count; i++, osc++) { + JASOscillator::Data* data = &osc_data[i]; + data->mTarget = osc->mTarget; + data->_04 = osc->_08; + data->mScale = osc->mScale; + data->_14 = osc->_18; + data->mTable = (JASOscillator::Point*)((int)envt + osc->mTableOffset); + data->_0C = (JASOscillator::Point*)((int)envt + osc->_10); + } + + bank->newInstTable(list_chunk->mCount, heap); + for (int i = 0; i < list_chunk->mCount; i++) { + if (list_chunk->mOffsets[i] != 0) { + u32* ptr = (u32*)((int)stream + list_chunk->mOffsets[i]); + u32* data = ptr + 1; + switch (*ptr) { + case 'Inst': { + JASBasicInst* inst = new (heap, 0) JASBasicInst(); + u32 count = *data; + data++; + for (int j = 0; j < count; j++) { + u32 index = *data; + data++; + inst->setOsc(j, &osc_data[index]); + } + count = *data; + data++; + for (int j = 0; j < count; j++) { + data++; + } + count = *data; + data++; + inst->setKeyRegionCount(count, heap); + for (int j = 0; j < count; j++) { + JASBasicInst::TKeymap* keymap = inst->getKeyRegion(j); + keymap->setHighKey(*data >> 0x18); + u32 fVar4 = data[1]; + keymap->field_0x4 = JSULoHalf(data[3]); + keymap->field_0x8 = *(f32*)&data[4]; + keymap->field_0xc = *(f32*)&data[5]; + data += 2; + for (int k = 0; k < fVar4; k++) { + data += 4; + } + } + inst->setVolume(*(f32*)&data[0]); + inst->setPitch(*(f32*)&data[1]); + bank->setInst(i, inst); + break; + } + + case 'Perc': { + JASDrumSet* drum = new (heap, 0) JASDrumSet(); + u32 count = *data; + data++; + drum->newPercArray(count, heap); + for (int j = 0; j < count; j++) { + u32 offset = *data; + data++; + if (offset != 0) { + JASDrumSet::TPerc* perc = new (heap, 0) JASDrumSet::TPerc(); + u32* ptr = (u32*)((int)stream + offset); + TPercData* perc_data = (TPercData*)(ptr + 1); + perc->setVolume(perc_data->mVolume); + perc->setPitch(perc_data->mPitch); + perc->setPan((f32)perc_data->mPan / 127.0f); + perc->setRelease(perc_data->mRelease); + ptr = (u32*)&perc_data->field_0xc; + u32 count2 = *ptr; + ptr++; + for (int k = 0; k < count2; k++) { + ptr++; + } + u32 pVar6 = ptr[0]; + perc->field_0xe = JSULoHalf(ptr[2]); + perc->field_0x10 = *(f32*)&ptr[3]; + perc->field_0x14 = *(f32*)&ptr[4]; + for (int k = 0; k < pVar6; k++) {} + drum->setPerc(j, perc); + } + } + bank->setInst(i, drum); + break; + } + } + } + } + + return bank; +} /* 80299A3C-80299E68 29437C 042C+00 1/1 0/0 0/0 .text * createBasicBank__Q212JASBNKParser4Ver0FPCvP7JKRHeap */ -void JASBNKParser::Ver0::createBasicBank(void const* param_0, JKRHeap* param_1) { +JASBasicBank* JASBNKParser::Ver0::createBasicBank(void const* stream, JKRHeap* heap) { // NONMATCHING } -/* ############################################################################################## */ -/* 80455670-80455674 003C70 0004+00 1/1 0/0 0/0 .sdata2 @1045 */ -SECTION_SDATA2 static f32 lit_1045 = 1.0f; - -/* 80455674-80455678 003C74 0004+00 1/1 0/0 0/0 .sdata2 @1046 */ -SECTION_SDATA2 static u8 lit_1046[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455678-80455680 003C78 0004+04 1/1 0/0 0/0 .sdata2 @1047 */ -SECTION_SDATA2 static f32 lit_1047[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; - /* 80299E68-80299F8C 2947A8 0124+00 1/1 0/0 0/0 .text * findOscPtr__Q212JASBNKParser4Ver0FP12JASBasicBankPCQ312JASBNKParser4Ver07THeaderPCQ312JASBNKParser4Ver04TOsc */ -void JASBNKParser::Ver0::findOscPtr(JASBasicBank* param_0, - JASBNKParser::Ver0::THeader const* param_1, - JASBNKParser::Ver0::TOsc const* param_2) { +void JASBNKParser::Ver0::findOscPtr(JASBasicBank* param_0, THeader const* param_1, + TOsc const* param_2) { // NONMATCHING } @@ -195,66 +190,3 @@ void JASBNKParser::Ver0::findOscPtr(JASBasicBank* param_0, void JASBNKParser::Ver0::getOscTableEndPtr(JASOscillator::Point const* param_0) { // NONMATCHING } - -/* 80299FA0-80299FB8 2948E0 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299FA0(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 80299FB8-80299FD0 2948F8 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299FB8(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 80299FD0-80299FE8 294910 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299FD0(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 80299FE8-8029A000 294928 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299FE8(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 8029A000-8029A018 294940 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_8029A000(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 8029A018-8029A030 294958 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_8029A018(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 8029A030-8029A048 294970 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_8029A030(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 80431B70-80431B7C 05E890 000C+00 1/1 0/0 0/0 .bss @1065 */ -static u8 lit_1065[12]; - -/* 80431B7C-80431B90 05E89C 0010+04 1/1 0/0 0/0 .bss - * memPool___46JASPoolAllocObject_MultiThreaded<10JASChannel> */ -static u8 data_80431B7C[16 + 4 /* padding */]; - -/* 8045128C-80451290 00078C 0004+00 1/1 0/0 0/0 .sbss None */ -static u8 data_8045128C[4]; - -/* 8029A048-8029A0A0 294988 0058+00 0/0 1/0 0/0 .text __sinit_JASBNKParser_cpp */ -void __sinit_JASBNKParser_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x8029A048, __sinit_JASBNKParser_cpp); -#pragma pop \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASBank.cpp b/src/JSystem/JAudio2/JASBank.cpp index fec278830f..c988a1c390 100644 --- a/src/JSystem/JAudio2/JASBank.cpp +++ b/src/JSystem/JAudio2/JASBank.cpp @@ -4,65 +4,14 @@ // #include "JSystem/JAudio2/JASBank.h" +#include "JSystem/JAudio2/JASAiCtrl.h" +#include "JSystem/JAudio2/JASBasicInst.h" +#include "JSystem/JAudio2/JASBasicWaveBank.h" #include "JSystem/JAudio2/JASChannel.h" -#include "dol2asm.h" - -// -// Types: -// - -// -// Forward References: -// - -extern "C" void noteOn__7JASBankFPC7JASBankiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv(); -extern "C" void noteOnOsc__7JASBankFiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv(); - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void func_802978DC(void* _this); -extern "C" void __ct__10JASChannelFPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv(); -extern "C" void play__10JASChannelFv(); -extern "C" void setOscInit__10JASChannelFUlPCQ213JASOscillator4Data(); -extern "C" void getDacRate__9JASDriverFv(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_25(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_25(); -extern "C" extern u8 data_80431B34[16 + 4 /* padding */]; -extern "C" extern u8 struct_80451260[8]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 80431B48-80431B58 05E868 000C+04 2/2 0/0 0/0 .bss @156 */ -static u8 lit_156[12 + 4 /* padding */]; - -/* 80455630-80455634 003C30 0004+00 1/1 0/0 0/0 .sdata2 @248 */ -SECTION_SDATA2 static f32 lit_248 = 1.0f; - -/* 80455634-80455638 003C34 0004+00 1/1 0/0 0/0 .sdata2 @249 */ -SECTION_SDATA2 static u8 lit_249[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455638-8045563C 003C38 0004+00 1/1 0/0 0/0 .sdata2 @250 */ -SECTION_SDATA2 static f32 lit_250 = 0.5f; /* 80297930-80297C40 292270 0310+00 0/0 1/1 0/0 .text * noteOn__7JASBankFPC7JASBankiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv */ -// vtables for JASWaveBank, JASWaveHandle -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 param_3, u16 param_4, void (*param_5)(u32, JASChannel*, JASDsp::TChannel*, void*), void* param_6) { @@ -120,38 +69,18 @@ JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 } return channel; } -#else -JASChannel* JASBank::noteOn(JASBank const* param_0, int param_1, u8 param_2, u8 param_3, u16 param_4, - void (*param_5)(u32, JASChannel*, JASDsp::TChannel*, void*), - void* param_6) { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 8039B190-8039B19C 0277F0 000C+00 1/0 0/0 0/0 .rodata OSC_RELEASE_TABLE$260 */ -SECTION_RODATA static JASOscillator::Point const OSC_RELEASE_TABLE[2] = { - {0x0001, 0x000A, 0x0000}, - {0x000F, 0x0000, 0x0000}, -}; -COMPILER_STRIP_GATE(0x8039B190, &OSC_RELEASE_TABLE); - -/* 8039B19C-8039B1B8 -00001 0018+04 1/1 0/0 0/0 .rodata OSC_ENV$261 */ -SECTION_RODATA static const JASOscillator::Data OSC_ENV = { - 0, 1.0f, NULL, OSC_RELEASE_TABLE, 1.0f, 0.0f, -}; -COMPILER_STRIP_GATE(0x8039B19C, &OSC_ENV); - -/* 8045563C-80455640 003C3C 0004+00 1/1 0/0 0/0 .sdata2 @290 */ -SECTION_SDATA2 static f32 lit_290 = 16736.015625f; /* 80297C40-80297D78 292580 0138+00 1/1 0/0 0/0 .text * noteOnOsc__7JASBankFiUcUcUsPFUlP10JASChannelPQ26JASDsp8TChannelPv_vPv */ -// wild ~JASMemPool_MultiThreaded destructor appeared! -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, void (*param_4)(u32, JASChannel*, JASDsp::TChannel*, void*), void* param_5) { + static JASOscillator::Point const OSC_RELEASE_TABLE[2] = { + {0x0001, 0x000A, 0x0000}, + {0x000F, 0x0000, 0x0000}, + }; + static const JASOscillator::Data OSC_ENV = {0, 1.0f, NULL, OSC_RELEASE_TABLE, 1.0f, 0.0f}; JASChannel* channel = new JASChannel(param_4, param_5); if (!channel) { return NULL; @@ -159,7 +88,7 @@ JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, channel->setPriority(param_3); channel->field_0x104 = param_0; channel->field_0xdc.field_0x0 = 2; - channel->setInitPitch(16736.02f / JASDriver::getDacRate()); + channel->setInitPitch(16736.016f / JASDriver::getDacRate()); channel->setKey(param_1 - channel->field_0xdc.field_0x4.field_0x01); channel->setVelocity(param_2); channel->setOscInit(0, &OSC_ENV); @@ -168,10 +97,3 @@ JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, } return channel; } -#else -JASChannel* JASBank::noteOnOsc(int param_0, u8 param_1, u8 param_2, u16 param_3, - void (*param_4)(u32, JASChannel*, JASDsp::TChannel*, void*), - void* param_5) { - // NONMATCHING -} -#endif \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASBasicBank.cpp b/src/JSystem/JAudio2/JASBasicBank.cpp index 5b970837b5..537bbc52c1 100644 --- a/src/JSystem/JAudio2/JASBasicBank.cpp +++ b/src/JSystem/JAudio2/JASBasicBank.cpp @@ -4,117 +4,52 @@ // #include "JSystem/JAudio2/JASBasicBank.h" -#include "dol2asm.h" - -// -// Types: -// - -struct JKRHeap {}; - -struct JASInstParam {}; - -struct JASInst {}; - -struct JASCalc { - /* 8028F480 */ void bzero(void*, u32); -}; - -struct JASBasicBank { - /* 80297D78 */ JASBasicBank(); - /* 80297DA4 */ void newInstTable(u8, JKRHeap*); - /* 80297E00 */ void getInstParam(int, int, int, JASInstParam*) const; - /* 80297E68 */ void setInst(int, JASInst*); - /* 80297E80 */ void getInst(int) const; - /* 80297F0C */ ~JASBasicBank(); - /* 80297F68 */ void getType() const; -}; - -struct JASBank { - /* 80297EC4 */ ~JASBank(); -}; - -// -// Forward References: -// - -extern "C" void __ct__12JASBasicBankFv(); -extern "C" void newInstTable__12JASBasicBankFUcP7JKRHeap(); -extern "C" void getInstParam__12JASBasicBankCFiiiP12JASInstParam(); -extern "C" void setInst__12JASBasicBankFiP7JASInst(); -extern "C" void getInst__12JASBasicBankCFi(); -extern "C" void __dt__7JASBankFv(); -extern "C" void __dt__12JASBasicBankFv(); -extern "C" void getType__12JASBasicBankCFv(); - -// -// External References: -// - -extern "C" void bzero__7JASCalcFPvUl(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C76A8-803C76BC 0247C8 0014+00 2/2 0/0 0/0 .data __vt__12JASBasicBank */ -SECTION_DATA extern void* __vt__12JASBasicBank[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12JASBasicBankFv, - (void*)getInstParam__12JASBasicBankCFiiiP12JASInstParam, - (void*)getType__12JASBasicBankCFv, -}; - -/* 803C76BC-803C76D0 0247DC 0014+00 3/3 2/2 0/0 .data __vt__7JASBank */ -SECTION_DATA extern void* __vt__7JASBank[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__7JASBankFv, (void*)NULL, (void*)NULL, -}; +#include "JSystem/JAudio2/JASCalc.h" /* 80297D78-80297DA4 2926B8 002C+00 0/0 2/2 0/0 .text __ct__12JASBasicBankFv */ JASBasicBank::JASBasicBank() { - // NONMATCHING + mInstTable = NULL; + mInstNumMax = 0; } /* 80297DA4-80297E00 2926E4 005C+00 0/0 2/2 0/0 .text newInstTable__12JASBasicBankFUcP7JKRHeap */ -void JASBasicBank::newInstTable(u8 param_0, JKRHeap* param_1) { - // NONMATCHING +void JASBasicBank::newInstTable(u8 num, JKRHeap* heap) { + if (num != 0) { + mInstNumMax = num; + mInstTable = new (heap, 0) JASInst*[mInstNumMax]; + JASCalc::bzero(mInstTable, mInstNumMax * 4); + } } /* 80297E00-80297E68 292740 0068+00 1/0 0/0 0/0 .text * getInstParam__12JASBasicBankCFiiiP12JASInstParam */ -void JASBasicBank::getInstParam(int param_0, int param_1, int param_2, - JASInstParam* param_3) const { - // NONMATCHING +bool JASBasicBank::getInstParam(int prg_no, int param_1, int param_2, + JASInstParam* o_param) const { + JASInst* inst = getInst(prg_no); + if (inst == NULL) { + return NULL; + } + return inst->getParam(param_1, param_2, o_param); } /* 80297E68-80297E80 2927A8 0018+00 0/0 2/2 0/0 .text setInst__12JASBasicBankFiP7JASInst */ -void JASBasicBank::setInst(int param_0, JASInst* param_1) { - // NONMATCHING +void JASBasicBank::setInst(int prg_no, JASInst* inst) { + if (mInstTable != NULL) { + mInstTable[prg_no] = inst; + } } /* 80297E80-80297EC4 2927C0 0044+00 1/1 1/1 0/0 .text getInst__12JASBasicBankCFi */ -void JASBasicBank::getInst(int param_0) const { - // NONMATCHING +JASInst* JASBasicBank::getInst(int prg_no) const { + if (prg_no < 0) { + return NULL; + } + if (prg_no >= mInstNumMax) { + return NULL; + } + if (mInstTable == NULL) { + return NULL; + } + return mInstTable[prg_no]; } - -/* 80297EC4-80297F0C 292804 0048+00 1/0 0/0 0/0 .text __dt__7JASBankFv */ -JASBank::~JASBank() { - // NONMATCHING -} - -/* 80297F0C-80297F68 29284C 005C+00 1/0 0/0 0/0 .text __dt__12JASBasicBankFv */ -JASBasicBank::~JASBasicBank() { - // NONMATCHING -} - -/* 80297F68-80297F74 2928A8 000C+00 1/0 0/0 0/0 .text getType__12JASBasicBankCFv */ -void JASBasicBank::getType() const { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASBasicInst.cpp b/src/JSystem/JAudio2/JASBasicInst.cpp index 30599d2ef1..a35c5deb77 100644 --- a/src/JSystem/JAudio2/JASBasicInst.cpp +++ b/src/JSystem/JAudio2/JASBasicInst.cpp @@ -32,7 +32,7 @@ bool JASBasicInst::getParam(int param_0, int param_1, JASInstParam* param_2) con TKeymap* keyMap = NULL; for (int i = 0; i < mKeymapCount; i++) { - if (param_0 <= mKeymap[i].field_0x0) { + if (param_0 <= mKeymap[i].mHighKey) { keyMap = &mKeymap[i]; break; } @@ -73,4 +73,4 @@ JASBasicInst::TKeymap* JASBasicInst::getKeyRegion(int param_0) { /* 80298250-8029828C 292B90 003C+00 2/2 0/0 0/0 .text __dt__Q212JASBasicInst7TKeymapFv */ JASBasicInst::TKeymap::~TKeymap() { -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JASBasicWaveBank.cpp b/src/JSystem/JAudio2/JASBasicWaveBank.cpp index a87a24c626..e1ca8d4f4d 100644 --- a/src/JSystem/JAudio2/JASBasicWaveBank.cpp +++ b/src/JSystem/JAudio2/JASBasicWaveBank.cpp @@ -67,54 +67,7 @@ extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */]; // Declarations: // -/* ############################################################################################## */ -/* 803C7728-803C773C 024848 0014+00 2/2 0/0 0/0 .data __vt__Q216JASBasicWaveBank11TWaveHandle */ -SECTION_DATA extern void* __vt__Q216JASBasicWaveBank11TWaveHandle[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q216JASBasicWaveBank11TWaveHandleFv, - (void*)getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv, - (void*)getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv, -}; - -/* 803C773C-803C7754 02485C 0018+00 2/2 0/0 0/0 .data __vt__Q216JASBasicWaveBank10TWaveGroup */ -SECTION_DATA extern void* __vt__Q216JASBasicWaveBank10TWaveGroup[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q216JASBasicWaveBank10TWaveGroupFv, - (void*)onDispose__10JASWaveArcFv, - (void*)onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv, - (void*)onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv, -}; - -/* 803C7754-803C7768 024874 0014+00 3/3 2/2 0/0 .data __vt__13JASWaveHandle */ -SECTION_DATA extern void* __vt__13JASWaveHandle[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__13JASWaveHandleFv, (void*)NULL, (void*)NULL, -}; - -/* 803C7768-803C7780 024888 0018+00 2/2 0/0 0/0 .data __vt__16JASBasicWaveBank */ -SECTION_DATA extern void* __vt__16JASBasicWaveBank[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16JASBasicWaveBankFv, - (void*)getWaveHandle__16JASBasicWaveBankCFUl, - (void*)getWaveArc__16JASBasicWaveBankFUl, - (void*)getArcCount__16JASBasicWaveBankCFv, -}; - -/* 803C7780-803C7798 0248A0 0018+00 3/3 2/2 0/0 .data __vt__11JASWaveBank */ -SECTION_DATA extern void* __vt__11JASWaveBank[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11JASWaveBankFv, - (void*)NULL, - (void*)NULL, - (void*)NULL, -}; - /* 802984F8-80298558 292E38 0060+00 0/0 1/1 0/0 .text __ct__16JASBasicWaveBankFv */ -// vtable order -#ifdef NONMATCHING JASBasicWaveBank::JASBasicWaveBank() { mWaveTable = NULL; mWaveGroupArray = NULL; @@ -122,34 +75,12 @@ JASBasicWaveBank::JASBasicWaveBank() { mGroupCount = 0; OSInitMutex(&field_0x4); } -#else -JASBasicWaveBank::JASBasicWaveBank() { - // NONMATCHING -} -#endif /* 80298558-802985E4 292E98 008C+00 1/0 0/0 0/0 .text __dt__16JASBasicWaveBankFv */ -// vtable order -#ifdef NONMATCHING JASBasicWaveBank::~JASBasicWaveBank() { delete[] mWaveTable; delete[] mWaveGroupArray; } -#else -JASBasicWaveBank::~JASBasicWaveBank() { - // NONMATCHING -} -#endif - -/* 802985E4-80298640 292F24 005C+00 3/2 0/0 0/0 .text __dt__Q216JASBasicWaveBank11TWaveHandleFv */ -// vtable order -#ifdef NONMATCHING -JASBasicWaveBank::TWaveHandle::~TWaveHandle() {} -#else -JASBasicWaveBank::TWaveHandle::~TWaveHandle() { - // NONMATCHING -} -#endif /* 80298640-80298664 292F80 0024+00 1/1 1/1 0/0 .text getWaveGroup__16JASBasicWaveBankFUl */ @@ -183,26 +114,19 @@ void JASBasicWaveBank::setWaveTableSize(u32 param_0, JKRHeap* param_1) { /* 80298790-8029883C 2930D0 00AC+00 1/1 0/0 0/0 .text * incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup */ -// instruction order -#ifdef NONMATCHING +// NONMATCHING instruction order void JASBasicWaveBank::incWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { JASMutexLock lock(&field_0x4); for (u32 i = 0; i < param_0->getWaveCount(); i++) { TWaveHandle* handle = mWaveTable + param_0->getWaveID(i); if (!handle->mHeap) { - handle->mHeap = ¶m_0->base.mHeap; - handle->field_0x4.field_0x20 = ¶m_0->base._48; + handle->mHeap = const_cast(¶m_0->mHeap); + handle->field_0x4.field_0x20 = ¶m_0->_48; handle->field_0x4.field_0x08 = param_0->mCtrlWaveArray[i].field_0x4; } } } -#else -void JASBasicWaveBank::incWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) { - // NONMATCHING -} -#endif -/* ############################################################################################## */ /* 80451278-80451280 000778 0004+04 2/2 0/0 0/0 .sbss mNoLoad__16JASBasicWaveBank */ u32 JASBasicWaveBank::mNoLoad; @@ -212,7 +136,7 @@ void JASBasicWaveBank::decWaveTable(JASBasicWaveBank::TWaveGroup const* param_0) JASMutexLock lock(&field_0x4); for (u32 i = 0; i < param_0->getWaveCount(); i++) { TWaveHandle* handle = mWaveTable + param_0->getWaveID(i); - if (handle->mHeap == ¶m_0->base.mHeap) { + if (handle->mHeap == ¶m_0->mHeap) { handle->mHeap = NULL; handle->field_0x4.field_0x20 = &mNoLoad; handle->field_0x4.field_0x08 = -1; @@ -246,30 +170,16 @@ void JASBasicWaveBank::setWaveInfo(JASBasicWaveBank::TWaveGroup* wgrp, int index } /* 802989C0-80298A0C 293300 004C+00 1/1 0/0 0/0 .text __ct__Q216JASBasicWaveBank10TWaveGroupFv */ -// vtable order -#ifdef NONMATCHING JASBasicWaveBank::TWaveGroup::TWaveGroup() { mBank = NULL; mCtrlWaveArray = NULL; mWaveCount = 0; } -#else -JASBasicWaveBank::TWaveGroup::TWaveGroup() { - // NONMATCHING -} -#endif /* 80298A0C-80298A84 29334C 0078+00 3/2 0/0 0/0 .text __dt__Q216JASBasicWaveBank10TWaveGroupFv */ -// vtable order -#ifdef NONMATCHING JASBasicWaveBank::TWaveGroup::~TWaveGroup() { delete[] mCtrlWaveArray; } -#else -JASBasicWaveBank::TWaveGroup::~TWaveGroup() { - // NONMATCHING -} -#endif /* 80298A84-80298B04 2933C4 0080+00 0/0 1/1 0/0 .text * setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap */ @@ -313,49 +223,3 @@ int JASBasicWaveBank::TWaveHandle::getWavePtr() const { } return (int)base + field_0x4.field_0x08; } - -/* 80298B88-80298BD0 2934C8 0048+00 1/0 0/0 0/0 .text __dt__11JASWaveBankFv */ -// JASWaveBank::~JASWaveBank() { -void __dt__11JASWaveBankFv() { - // NONMATCHING -} - -/* 80298BD0-80298C18 293510 0048+00 1/0 0/0 0/0 .text __dt__13JASWaveHandleFv */ -// JASWaveHandle::~JASWaveHandle() { -void __dt__13JASWaveHandleFv() { - // NONMATCHING -} - -/* 80298C18-80298C4C 293558 0034+00 1/1 0/0 0/0 .text __ct__Q216JASBasicWaveBank11TWaveHandleFv */ -// JASBasicWaveBank::TWaveHandle::TWaveHandle() { -void __ct__Q216JASBasicWaveBank11TWaveHandleFv() { - // NONMATCHING -} - -/* 80298C4C-80298C64 29358C 0018+00 1/1 0/0 0/0 .text __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv - */ -// JASBasicWaveBank::TGroupWaveInfo::TGroupWaveInfo() { -void __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv() { - // NONMATCHING -} - -/* 80298C64-80298C6C 2935A4 0008+00 1/0 0/0 0/0 .text - * getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv */ -// JASWaveInfo* JASBasicWaveBank::TWaveHandle::getWaveInfo() const { -void getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv() { - // NONMATCHING -} - -/* 80298C6C-80298C8C 2935AC 0020+00 1/0 0/0 0/0 .text getWaveArc__16JASBasicWaveBankFUl - */ -// JASWaveArc* JASBasicWaveBank::getWaveArc(u32 param_0) { -void getWaveArc__16JASBasicWaveBankFUl() { - // NONMATCHING -} - -/* 80298C8C-80298C94 2935CC 0008+00 1/0 0/0 0/0 .text getArcCount__16JASBasicWaveBankCFv - */ -// u32 JASBasicWaveBank::getArcCount() const { -void getArcCount__16JASBasicWaveBankCFv() { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASDSPInterface.cpp b/src/JSystem/JAudio2/JASDSPInterface.cpp index 3b38e4d73d..2580802278 100644 --- a/src/JSystem/JAudio2/JASDSPInterface.cpp +++ b/src/JSystem/JAudio2/JASDSPInterface.cpp @@ -7,25 +7,13 @@ #include "JSystem/JAudio2/JASCalc.h" #include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JAudio2/JASWaveInfo.h" +#include "JSystem/JAudio2/dspproc.h" #include "JSystem/JAudio2/dsptask.h" #include "JSystem/JAudio2/osdsp_task.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "dolphin/os/OSCache.h" -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ /* 804512E8-804512EC 0007E8 0004+00 5/5 0/0 0/0 .sbss CH_BUF__6JASDsp */ JASDsp::TChannel* JASDsp::CH_BUF; @@ -94,7 +82,6 @@ void JASDsp::invalChannelAll() { DCInvalidateRange(CH_BUF, sizeof(TChannel) * 64); } -/* ############################################################################################## */ /* 8039B360-8039B3A0 0279C0 0040+00 1/1 0/0 0/0 .rodata DSPADPCM_FILTER__6JASDsp */ u8 const JASDsp::DSPADPCM_FILTER[64] = { 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, @@ -440,7 +427,6 @@ void JASDsp::initBuffer() { flushBuffer(); } -/* ############################################################################################## */ /* 803C78F0-803C7920 024A10 0018+18 1/1 0/0 0/0 .data SEND_TABLE__6JASDsp */ u16 JASDsp::SEND_TABLE[12 + 12 /* padding */] = { 0x0D00, @@ -556,22 +542,13 @@ bool JASDsp::TChannel::isFinish() const { return mIsFinished != 0; } -/* ############################################################################################## */ -/* 8045574C-80455754 003D4C 0008+00 1/1 0/0 0/0 .sdata2 COMP_BLOCKSAMPLES$331 */ -static const u8 COMP_BLOCKSAMPLES[8] = { - 0x10, 0x10, 0x01, 0x01, 0x01, 0x10, 0x10, 0x01, -}; - -/* 80455754-8045575C 003D54 0008+00 1/1 0/0 0/0 .sdata2 COMP_BLOCKBYTES$332 */ -static const u8 COMP_BLOCKBYTES[8] = { - 0x09, 0x05, 0x08, 0x10, 0x01, 0x01, 0x01, 0x01, -}; - /* 8029DD8C-8029DEAC 2986CC 0120+00 0/0 1/1 0/0 .text * setWaveInfo__Q26JASDsp8TChannelFRC11JASWaveInfoUlUl */ void JASDsp::TChannel::setWaveInfo(JASWaveInfo const& param_0, u32 param_1, u32 param_2) { field_0x118 = param_1; + static const u8 COMP_BLOCKSAMPLES[8] = {0x10, 0x10, 0x01, 0x01, 0x01, 0x10, 0x10, 0x01}; field_0x064 = COMP_BLOCKSAMPLES[param_0.field_0x00]; + static const u8 COMP_BLOCKBYTES[8] = {0x09, 0x05, 0x08, 0x10, 0x01, 0x01, 0x01, 0x01}; field_0x100 = COMP_BLOCKBYTES[param_0.field_0x00]; field_0x068 = 0; if (field_0x100 >= 4) { @@ -721,16 +698,13 @@ void JASDsp::TChannel::setDistFilter(s16 param_0) { iir_filter_params[4] = param_0; } -/* ############################################################################################## */ -/* 8039B8A0-8039B8B8 027F00 0018+00 1/1 0/0 0/0 .rodata connect_table$463 */ -static u16 const connect_table[12] = { - 0x0000, 0x0D00, 0x0D60, 0x0DC0, 0x0E20, 0x0E80, - 0x0EE0, 0x0CA0, 0x0F40, 0x0FA0, 0x0B00, 0x09A0, -}; - /* 8029E09C-8029E0BC 2989DC 0020+00 0/0 1/1 0/0 .text setBusConnect__Q26JASDsp8TChannelFUcUc */ void JASDsp::TChannel::setBusConnect(u8 param_0, u8 param_1) { u16* tmp = field_0x010[param_0]; + static u16 const connect_table[12] = { + 0x0000, 0x0D00, 0x0D60, 0x0DC0, 0x0E20, 0x0E80, + 0x0EE0, 0x0CA0, 0x0F40, 0x0FA0, 0x0B00, 0x09A0, + }; tmp[0] = connect_table[param_1]; } @@ -749,4 +723,4 @@ u16 DSP_CreateMap2(u32 param_0) { } /* 804507B8-804507C0 000238 0004+04 0/0 5/5 0/0 .sdata one__11JASWaveInfo */ -u32 JASWaveInfo::one = 1; \ No newline at end of file +u32 JASWaveInfo::one = 1; diff --git a/src/JSystem/JAudio2/JASHeapCtrl.cpp b/src/JSystem/JAudio2/JASHeapCtrl.cpp index fef210c4e7..2bf73cd581 100644 --- a/src/JSystem/JAudio2/JASHeapCtrl.cpp +++ b/src/JSystem/JAudio2/JASHeapCtrl.cpp @@ -5,78 +5,10 @@ #include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JAudio2/JASMutex.h" +#include "JSystem/JAudio2/JASWaveArcLoader.h" +#include "JSystem/JKernel/JKRExpHeap.h" +#include "JSystem/JKernel/JKRSolidHeap.h" #include "JSystem/JUtility/JUTAssert.h" -#include "dol2asm.h" - -// -// Types: -// - -struct JASDisposer { - virtual ~JASDisposer(); - /* 80290BCC */ virtual void onDispose(); -}; - -// -// Forward References: -// - -extern "C" void __ct__7JASHeapFP11JASDisposer(); -extern "C" void initRootHeap__7JASHeapFPvUl(); -extern "C" void alloc__7JASHeapFP7JASHeapUl(); -extern "C" void allocTail__7JASHeapFP7JASHeapUl(); -extern "C" void free__7JASHeapFv(); -extern "C" void insertChild__7JASHeapFP7JASHeapP7JASHeapPvUlb(); -extern "C" void getTailHeap__7JASHeapFv(); -extern "C" void getTailOffset__7JASHeapFv(); -extern "C" void getCurOffset__7JASHeapFv(); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void newMemPool__17JASGenericMemPoolFUli(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void setupRootHeap__9JASKernelFP12JKRSolidHeapUl(); -extern "C" u32 getSystemHeap__9JASKernelFv(); -extern "C" u32 getCommandHeap__9JASKernelFv(); -extern "C" void setupAramHeap__9JASKernelFUlUl(); -extern "C" void getAramHeap__9JASKernelFv(); -extern "C" void __sinit_JASHeapCtrl_cpp(); -extern "C" void __dt__7JASHeapFv(); -extern "C" void onDispose__11JASDisposerFv(); -extern "C" u8 audioAramHeap__9JASKernel[68]; -extern "C" u8 sAramBase__9JASKernel[4]; -extern "C" u8 sSystemHeap__9JASKernel[4]; -extern "C" u8 sCommandHeap__9JASKernel[4]; - -// -// External References: -// - -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __dla__FPv(); -extern "C" void create__10JKRExpHeapFUlP7JKRHeapb(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void __dt__10JSUPtrListFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void insert__10JSUPtrListFP10JSUPtrLinkP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 sSystemHeap__7JKRHeap[4]; - -// -// Declarations: -// /* 80290140-802901AC 28AA80 006C+00 1/1 2/2 0/0 .text __ct__7JASHeapFP11JASDisposer */ JASHeap::JASHeap(JASDisposer* disposer) : mTree(this) { @@ -155,13 +87,27 @@ bool JASHeap::alloc(JASHeap* mother, u32 param_1) { } /* 802903F4-802904E4 28AD34 00F0+00 0/0 1/1 0/0 .text allocTail__7JASHeapFP7JASHeapUl */ -bool JASHeap::allocTail(JASHeap* param_0, u32 param_1) { - // NONMATCHING +bool JASHeap::allocTail(JASHeap* mother, u32 size) { + JASMutexLock lock(&mMutex); + if (isAllocated()) { + return false; + } + if (!mother->isAllocated()) { + return false; + } + u32 aligned_size = (size + 0x1f) & ~0x1f; + u32 cur_offset = mother->getCurOffset(); + u32 tail_offset = mother->getTailOffset(); + if (cur_offset + aligned_size > tail_offset) { + return false; + } + mother->insertChild(this, mother->getTailHeap(), mother->mBase + tail_offset - aligned_size, + aligned_size, true); + return true; } /* 802904E4-80290608 28AE24 0124+00 0/0 4/4 0/0 .text free__7JASHeapFv */ -// regswap -#ifdef NONMATCHING +// NONMATCHING regswap bool JASHeap::free() { JASMutexLock lock(&mMutex); if (!isAllocated()) { @@ -194,16 +140,10 @@ bool JASHeap::free() { } return true; } -#else -bool JASHeap::free() { - // NONMATCHING -} -#endif /* 80290608-802906F0 28AF48 00E8+00 2/2 0/0 0/0 .text * insertChild__7JASHeapFP7JASHeapP7JASHeapPvUlb */ -// regalloc -#ifdef NONMATCHING +// NONMATCHING regalloc void JASHeap::insertChild(JASHeap* heap, JASHeap* next, void* param_2, u32 param_3, bool param_4) { JUT_ASSERT(537, heap != 0); JUT_ASSERT(538, next == 0 || &mTree == next->mTree.getParent()); @@ -225,12 +165,6 @@ void JASHeap::insertChild(JASHeap* heap, JASHeap* next, void* param_2, u32 param heap->field_0x40 = NULL; mTree.insertChild(&next->mTree, &heap->mTree); } -#else -void JASHeap::insertChild(JASHeap* param_0, JASHeap* param_1, void* param_2, u32 param_3, - bool param_4) { - // NONMATCHING -} -#endif /* 802906F0-8029077C 28B030 008C+00 3/3 0/0 0/0 .text getTailHeap__7JASHeapFv */ JASHeap* JASHeap::getTailHeap() { @@ -267,35 +201,57 @@ JASGenericMemPool::JASGenericMemPool() { field_0x0 = NULL; freeMemCount = 0; totalMemCount = 0; - field_0xc = 0; + usedMemCount = 0; } /* 80290860-802908C8 28B1A0 0068+00 0/0 9/9 0/0 .text __dt__17JASGenericMemPoolFv */ JASGenericMemPool::~JASGenericMemPool() { - // NONMATCHING + void* chunk = field_0x0; + while (chunk != NULL) { + void* next_chunk = *(void**)chunk; + delete[] chunk; + chunk = next_chunk; + } } -/* ############################################################################################## */ /* 80451210-80451214 000710 0004+00 2/2 15/15 0/0 .sbss JASDram */ JKRSolidHeap* JASDram; /* 802908C8-80290948 28B208 0080+00 0/0 4/4 0/0 .text newMemPool__17JASGenericMemPoolFUli */ -void JASGenericMemPool::newMemPool(u32 param_0, int param_1) { - // NONMATCHING +void JASGenericMemPool::newMemPool(u32 size, int param_1) { + for (int i = 0; i < param_1; i++) { + void* chunk = new (JASDram, 0) u8[size]; + *(void**)chunk = field_0x0; + field_0x0 = chunk; + } + freeMemCount += param_1; + totalMemCount += param_1; } /* 80290948-80290994 28B288 004C+00 0/0 13/13 0/0 .text alloc__17JASGenericMemPoolFUl */ void* JASGenericMemPool::alloc(u32 param_0) { - // NONMATCHING + void* chunk = field_0x0; + if (chunk == NULL) { + return NULL; + } + field_0x0 = *(void**)chunk; + freeMemCount--; + if (usedMemCount < totalMemCount - freeMemCount) { + usedMemCount = totalMemCount - freeMemCount; + } + return chunk; } /* 80290994-802909B8 28B2D4 0024+00 0/0 15/15 0/0 .text free__17JASGenericMemPoolFPvUl */ -void JASGenericMemPool::free(void* param_0, u32 param_1) { - // NONMATCHING +void JASGenericMemPool::free(void* ptr, u32 param_1) { + if (ptr != NULL) { + *(void**)ptr = field_0x0; + field_0x0 = ptr; + freeMemCount++; + } } -/* ############################################################################################## */ /* 80451214-80451218 000714 0004+00 1/1 0/0 0/0 .sbss sAramBase__9JASKernel */ u32 JASKernel::sAramBase; @@ -307,21 +263,14 @@ JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable>* JASKernel::sComma /* 802909B8-80290AC0 28B2F8 0108+00 0/0 1/1 0/0 .text setupRootHeap__9JASKernelFP12JKRSolidHeapUl */ -// implement JASMemChunkPool -#ifdef NONMATCHING void JASKernel::setupRootHeap(JKRSolidHeap* heap, u32 size) { JUT_ASSERT(784, heap); sSystemHeap = JKRExpHeap::create(size, heap, false); JUT_ASSERT(787, sSystemHeap); - sCommandHeap = new JASMemChunkPool(); + sCommandHeap = new (heap, 0) JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable>(); JUT_ASSERT(790, sCommandHeap); JASDram = heap; } -#else -void JASKernel::setupRootHeap(JKRSolidHeap* param_0, u32 param_1) { - // NONMATCHING -} -#endif /* 80290AC0-80290AC8 -00001 0008+00 0/0 0/0 0/0 .text getSystemHeap__9JASKernelFv */ JKRHeap* JASKernel::getSystemHeap() { @@ -333,41 +282,16 @@ JASMemChunkPool<1024, JASThreadingModel::ObjectLevelLockable>* JASKernel::getCom return JASKernel::sCommandHeap; } -/* ############################################################################################## */ -/* 804315D0-804315DC 05E2F0 000C+00 1/1 0/0 0/0 .bss @313 */ -static u8 lit_313[12]; - /* 804315DC-80431620 05E2FC 0044+00 3/3 0/0 0/0 .bss audioAramHeap__9JASKernel */ -u8 JASKernel::audioAramHeap[68]; +JASHeap JASKernel::audioAramHeap; /* 80290AD0-80290B08 28B410 0038+00 0/0 1/1 0/0 .text setupAramHeap__9JASKernelFUlUl */ void JASKernel::setupAramHeap(u32 param_0, u32 param_1) { sAramBase = param_0; - (*(JASHeap*)audioAramHeap).initRootHeap((void*)sAramBase, param_1); + audioAramHeap.initRootHeap((void*)sAramBase, param_1); } /* 80290B08-80290B14 28B448 000C+00 0/0 3/2 0/0 .text getAramHeap__9JASKernelFv */ JASHeap* JASKernel::getAramHeap() { - return (JASHeap*)audioAramHeap; + return &audioAramHeap; } - -/* 80290B14-80290B54 28B454 0040+00 0/0 1/0 0/0 .text __sinit_JASHeapCtrl_cpp */ -void __sinit_JASHeapCtrl_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80290B14, __sinit_JASHeapCtrl_cpp); -#pragma pop - -/* 80290B54-80290BCC 28B494 0078+00 1/1 3/3 0/0 .text __dt__7JASHeapFv */ -//JASHeap::~JASHeap() { -void __dt__7JASHeapFv() { - // NONMATCHING -} - -/* 80290BCC-80290BD0 28B50C 0004+00 0/0 1/0 0/0 .text onDispose__11JASDisposerFv */ -void JASDisposer::onDispose() { - /* empty function */ -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASSeqParser.cpp b/src/JSystem/JAudio2/JASSeqParser.cpp index 75146fe738..b0dfa1088e 100644 --- a/src/JSystem/JAudio2/JASSeqParser.cpp +++ b/src/JSystem/JAudio2/JASSeqParser.cpp @@ -9,145 +9,6 @@ #include "JSystem/JAudio2/JASTrack.h" #include "JSystem/JMath/random.h" #include "JSystem/JSupport/JSupport.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void conditionCheck__12JASSeqParserFP8JASTrackQ212JASSeqParser15BranchCondition(); -extern "C" void writeReg__12JASSeqParserFP8JASTrackUlUl(); -extern "C" void readReg__12JASSeqParserCFP8JASTrackUl(); -extern "C" void cmdOpenTrack__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdCloseTrack__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdCall__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdCallF__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdRet__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdRetF__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdJmp__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdJmpF__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdJmpTable__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdCallTable__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdLoopS__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdLoopE__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdNote__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdNoteOn__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdNoteOff__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdReadPort__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdWritePort__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdParentWritePort__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdChildWritePort__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdParentReadPort__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdChildReadPort__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdCheckPortImport__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdCheckPortExport__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdWait__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdWaitByte__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdSetLastNote__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdEnvScaleSet__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdEnvSet__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdSimpleADSR__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdBusConnect__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdSetIntTable__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdSetInterrupt__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdDisInterrupt__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdClrI__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdRetI__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdIntTimer__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdSyncCPU__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdTempo__12JASSeqParserFP8JASTrackPUl(); -extern "C" s32 cmdFinish__12JASSeqParserFP8JASTrackPUl(); -extern "C" bool cmdNop__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdFIRSet__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdIIRSet__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdIIRCutOff__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdBankPrg__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdBank__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdPrg__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdParamI__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdParamII__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdParamE__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdParamEI__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdReg__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdRegLoad__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdRegUni__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdRegTblLoad__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdDump__12JASSeqParserFP8JASTrackPUl(); -extern "C" void cmdPrintf__12JASSeqParserFP8JASTrackPUl(); -extern "C" void execNoteOnGate__12JASSeqParserFP8JASTrackUlUlUlUl(); -extern "C" void execNoteOnMidi__12JASSeqParserFP8JASTrackUlUlUl(); -extern "C" void execNoteOff__12JASSeqParserFP8JASTrackUl(); -extern "C" void execCommand__12JASSeqParserFP8JASTrackM12JASSeqParserFPCvPvP8JASTrackPUl_lUlPUl(); -extern "C" void parseNoteOff__12JASSeqParserFP8JASTrackUc(); -extern "C" void parseNoteOn__12JASSeqParserFP8JASTrackUc(); -extern "C" void parseCommand__12JASSeqParserFP8JASTrackUcUs(); -extern "C" void parseRegCommand__12JASSeqParserFP8JASTracki(); -extern "C" void parse__12JASSeqParserFP8JASTrack(); -extern "C" void __sinit_JASSeqParser_cpp(); -extern "C" extern char const* const JASSeqParser__stringBase0; -extern "C" u8 sCmdInfo__12JASSeqParser[1536]; -extern "C" u8 sExtCmdInfo__12JASSeqParser[4080]; -extern "C" extern void* __vt__12JASSeqParser[8]; -extern "C" u8 sCallBackFunc__12JASSeqParser[4]; - -// -// External References: -// - -extern "C" void JASReport__FPCce(); -extern "C" void setSeqData__8JASTrackFPvUl(); -extern "C" void start__8JASTrackFv(); -extern "C" void closeChild__8JASTrackFUl(); -extern "C" void openChild__8JASTrackFUl(); -extern "C" void connectBus__8JASTrackFii(); -extern "C" void setLatestKey__8JASTrackFUc(); -extern "C" void noteOn__8JASTrackFUlUlUl(); -extern "C" void gateOn__8JASTrackFUlUlfUl(); -extern "C" void noteOff__8JASTrackFUlUs(); -extern "C" void setParam__8JASTrackFUlfUl(); -extern "C" void setOscScale__8JASTrackFUlf(); -extern "C" void setOscTable__8JASTrackFUlPCQ213JASOscillator5Point(); -extern "C" void setOscAdsr__8JASTrackFssssUs(); -extern "C" void setFIR__8JASTrackFPCs(); -extern "C" void setIIR__8JASTrackFPCs(); -extern "C" void readPortSelf__8JASTrackFUl(); -extern "C" void writePortSelf__8JASTrackFUlUs(); -extern "C" void writePort__8JASTrackFUlUs(); -extern "C" void readPort__8JASTrackFUl(); -extern "C" void setTempo__8JASTrackFUs(); -extern "C" void setTimebase__8JASTrackFUs(); -extern "C" void checkImport__12JASTrackPortCFUl(); -extern "C" void checkExport__12JASTrackPortCFUl(); -extern "C" void write__16JASRegisterParamFQ216JASRegisterParam5RegIDUl(); -extern "C" void read__16JASRegisterParamFQ216JASRegisterParam5RegID(); -extern "C" void setIntrMask__10JASSeqCtrlFUl(); -extern "C" void clrIntrMask__10JASSeqCtrlFUl(); -extern "C" void retIntr__10JASSeqCtrlFv(); -extern "C" void checkIntr__10JASSeqCtrlFv(); -extern "C" void __dt__12JASSeqParserFv(); -extern "C" void call__12JASSeqReaderFUl(); -extern "C" void loopStart__12JASSeqReaderFUl(); -extern "C" void loopEnd__12JASSeqReaderFv(); -extern "C" void ret__12JASSeqReaderFv(); -extern "C" void readMidiValue__12JASSeqReaderFv(); -extern "C" void __ct__Q25JMath13TRandom_fast_FUl(); -extern "C" void __ptmf_test(); -extern "C" void __ptmf_scall(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 const CUTOFF_TO_IIR_TABLE__7JASCalc[1024]; -extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */]; - -// -// Declarations: -// /* 80293CF4-80293DC4 28E634 00D0+00 3/3 0/0 0/0 .text * conditionCheck__12JASSeqParserFP8JASTrackQ212JASSeqParser15BranchCondition */ @@ -172,7 +33,7 @@ bool JASSeqParser::conditionCheck(JASTrack* param_0, JASSeqParser::BranchConditi } /* 803C5E80-803C6480 022FA0 0600+00 1/2 0/0 0/0 .data sCmdInfo__12JASSeqParser */ -SECTION_DATA JASSeqParser::CmdInfo JASSeqParser::sCmdInfo[96] = { +JASSeqParser::CmdInfo JASSeqParser::sCmdInfo[96] = { NULL, 0x0000, 0x0000, NULL, 0x0000, 0x0000, NULL, 0x0000, 0x0000, @@ -272,7 +133,7 @@ SECTION_DATA JASSeqParser::CmdInfo JASSeqParser::sCmdInfo[96] = { }; /* 803C648C-803C747C 0235AC 0FF0+00 1/2 0/0 0/0 .data sExtCmdInfo__12JASSeqParser */ -SECTION_DATA JASSeqParser::CmdInfo JASSeqParser::sExtCmdInfo[255] = { +JASSeqParser::CmdInfo JASSeqParser::sExtCmdInfo[255] = { NULL, 0x0000, 0x0000, &JASSeqParser::cmdDump, 0x0000, 0x0000, NULL, 0x0000, 0x0000, @@ -282,85 +143,6 @@ SECTION_DATA JASSeqParser::CmdInfo JASSeqParser::sExtCmdInfo[255] = { NULL, 0x0000, 0x0000, }; -/* 803C747C-803C7550 -00001 00D4+00 1/1 0/0 0/0 .data @632 */ -SECTION_DATA static void* lit_632[53] = { - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x70), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1EC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x80), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x90), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x98), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xA0), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xA8), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xB0), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xBC), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xC8), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0xF0), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x100), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x108), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x110), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x118), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x140), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x168), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x190), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1B8), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1E0), - (void*)(((char*)writeReg__12JASSeqParserFP8JASTrackUlUl) + 0x1E8), -}; - -/* 804555D8-804555DC 003BD8 0004+00 6/6 0/0 0/0 .sdata2 @627 */ -SECTION_SDATA2 static f32 lit_627 = 32767.0f; - -/* 804555DC-804555E0 003BDC 0004+00 2/2 0/0 0/0 .sdata2 @628 */ -SECTION_SDATA2 static f32 lit_628 = 1524.0f; - -/* 804555E0-804555E4 003BE0 0004+00 2/2 0/0 0/0 .sdata2 @629 */ -SECTION_SDATA2 static f32 lit_629 = 12192.0f; - -/* 804555E4-804555E8 003BE4 0004+00 1/1 0/0 0/0 .sdata2 @630 */ -SECTION_SDATA2 static f32 lit_630 = 0.00390625f; - -/* 804555E8-804555F0 003BE8 0004+04 1/1 0/0 0/0 .sdata2 @631 */ -SECTION_SDATA2 static f32 lit_631[1 + 1 /* padding */] = { - 0.015625f, - /* padding */ - 0.0f, -}; - -/* 804555F0-804555F8 003BF0 0008+00 3/3 0/0 0/0 .sdata2 @634 */ -SECTION_SDATA2 static f64 lit_634 = 4503599627370496.0 /* cast u32 to float */; - /* 80293DC4-80293FC8 28E704 0204+00 8/7 0/0 0/0 .text writeReg__12JASSeqParserFP8JASTrackUlUl */ void JASSeqParser::writeReg(JASTrack* param_0, u32 param_1, u32 param_2) { param_0->writeReg(JASRegisterParam::REG3, param_2); @@ -453,77 +235,13 @@ void JASSeqParser::writeReg(JASTrack* param_0, u32 param_1, u32 param_2) { } } - -/* ############################################################################################## */ -/* 803C7550-803C7624 -00001 00D4+00 1/1 0/0 0/0 .data @720 */ -SECTION_DATA static void* lit_720[53] = { - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x4C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1B0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x5C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xA0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xC8), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xD0), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xDC), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xE4), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xEC), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xF4), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0xFC), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x104), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x118), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x128), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x130), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x138), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x140), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x154), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x168), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x17C), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x190), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1A4), - (void*)(((char*)readReg__12JASSeqParserCFP8JASTrackUl) + 0x1AC), -}; - -/* 804555F8-804555FC 003BF8 0004+00 1/1 0/0 0/0 .sdata2 @718 */ -SECTION_SDATA2 static f32 lit_718 = 256.0f; - -/* 804555FC-80455600 003BFC 0004+00 1/1 0/0 0/0 .sdata2 @719 */ -SECTION_SDATA2 static f32 lit_719 = 64.0f; - /* 80293FC8-80294188 28E908 01C0+00 7/6 0/0 0/0 .text readReg__12JASSeqParserCFP8JASTrackUl */ u32 JASSeqParser::readReg(JASTrack* param_0, u32 param_1) const { if (param_1 < 0x40) { return param_0->readReg(JASRegisterParam::RegID(param_1)); } u32 result = 0; + u16 r27; switch (param_1) { case 0x40: case 0x41: @@ -543,7 +261,7 @@ u32 JASSeqParser::readReg(JASTrack* param_0, u32 param_1) const { case 0x4f: return param_0->getPort(param_1 - 0x40); case 0x60: - u16 r27 = 1; + r27 = 1; for (int i = 0; i < 16; i++) { JASTrack* child = param_0->getChild(i); if (child && child->getStatus() == 1) { @@ -598,7 +316,6 @@ u32 JASSeqParser::readReg(JASTrack* param_0, u32 param_1) const { return result; } - /* 80294188-802941F0 28EAC8 0068+00 1/0 0/0 0/0 .text cmdOpenTrack__12JASSeqParserFP8JASTrackPUl */ s32 JASSeqParser::cmdOpenTrack(JASTrack* param_0, u32* param_1) { @@ -820,14 +537,6 @@ s32 JASSeqParser::cmdSetLastNote(JASTrack* param_0, u32* param_1) { return 0; } -/* ############################################################################################## */ -/* 80455600-80455608 003C00 0004+04 1/1 0/0 0/0 .sdata2 @931 */ -SECTION_SDATA2 static f32 lit_931[1 + 1 /* padding */] = { - 16383.0f, - /* padding */ - 0.0f, -}; - /* 8029483C-8029488C 28F17C 0050+00 1/0 0/0 0/0 .text cmdEnvScaleSet__12JASSeqParserFP8JASTrackPUl */ s32 JASSeqParser::cmdEnvScaleSet(JASTrack* param_0, u32* param_1) { @@ -899,7 +608,6 @@ s32 JASSeqParser::cmdIntTimer(JASTrack* param_0, u32* param_1) { return 0; } -/* ############################################################################################## */ /* 80451240-80451244 000740 0004+00 1/1 1/1 0/0 .sbss sCallBackFunc__12JASSeqParser */ u16 (*JASSeqParser::sCallBackFunc)(JASTrack*, u16); @@ -977,10 +685,6 @@ s32 JASSeqParser::cmdPrg(JASTrack* param_0, u32* param_1) { return 0; } -/* ############################################################################################## */ -/* 80455608-80455610 003C08 0008+00 4/4 0/0 0/0 .sdata2 @1064 */ -SECTION_SDATA2 static f64 lit_1064 = 4503601774854144.0 /* cast s32 to float */; - /* 80294BF8-80294C54 28F538 005C+00 1/0 0/0 0/0 .text cmdParamI__12JASSeqParserFP8JASTrackPUl */ s32 JASSeqParser::cmdParamI(JASTrack* param_0, u32* param_1) { param_0->setParam(param_1[0], s16(param_1[1]) / 32767.0f, 0); @@ -1018,11 +722,11 @@ s32 JASSeqParser::cmdParamEI(JASTrack* param_0, u32* param_1) { return 0; } - /* 80294DA8-80294F10 28F6E8 0168+00 3/0 0/0 0/0 .text cmdReg__12JASSeqParserFP8JASTrackPUl */ s32 JASSeqParser::cmdReg(JASTrack* param_0, u32* param_1) { u32 r29 = param_1[1]; u32 r30 = param_1[2]; + u32 tmp; switch (param_1[0]) { case 0: break; @@ -1051,7 +755,7 @@ s32 JASSeqParser::cmdReg(JASTrack* param_0, u32* param_1) { break; case 8: static JMath::TRandom_fast_ oRandom(0); - u32 tmp = oRandom.get_bit32() >> 9; + tmp = oRandom.get_bit32() >> 9; r30 = tmp % r30; break; case 9: @@ -1090,8 +794,7 @@ s32 JASSeqParser::cmdRegUni(JASTrack* param_0, u32* param_1) { /* 80294FB4-80295088 28F8F4 00D4+00 1/0 0/0 0/0 .text cmdRegTblLoad__12JASSeqParserFP8JASTrackPUl */ -// case 12 -#ifdef NONMATCHING +// NONMATCHING case 12 s32 JASSeqParser::cmdRegTblLoad(JASTrack* param_0, u32* param_1) { JASSeqCtrl* seqCtrl = param_0->getSeqCtrl(); u32 p1 = param_1[1]; @@ -1106,7 +809,7 @@ s32 JASSeqParser::cmdRegTblLoad(JASTrack* param_0, u32* param_1) { r27 = seqCtrl->get16(p2 + p3 * 2); break; case 14: - p3 += p3 *2; + p3 += p3 * 2; r27 = seqCtrl->get24(p2 + p3); break; case 15: @@ -1121,11 +824,6 @@ s32 JASSeqParser::cmdRegTblLoad(JASTrack* param_0, u32* param_1) { writeReg(param_0, p1, r27); return 0; } -#else -s32 JASSeqParser::cmdRegTblLoad(JASTrack* param_0, u32* param_1) { - // NONMATCHING -} -#endif /* 80295088-8029526C 28F9C8 01E4+00 1/0 0/0 0/0 .text cmdDump__12JASSeqParserFP8JASTrackPUl */ s32 JASSeqParser::cmdDump(JASTrack* param_0, u32* param_1) { @@ -1145,10 +843,9 @@ s32 JASSeqParser::cmdDump(JASTrack* param_0, u32* param_1) { } /* 8029526C-80295498 28FBAC 022C+00 1/0 0/0 0/0 .text cmdPrintf__12JASSeqParserFP8JASTrackPUl */ -// many things -#ifdef NONMATCHING +// NONMATCHING many things s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { - char stack_c[4]; + u8 stack_c[4]; u32 stack_10[4]; char buffer[128]; @@ -1213,25 +910,26 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { JASReport(buffer, stack_10[0], stack_10[1], stack_10[2], stack_10[3]); return 0; } -#else -s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) { - // NONMATCHING -} -#endif /* 80295498-80295540 28FDD8 00A8+00 1/0 0/0 0/0 .text * execNoteOnGate__12JASSeqParserFP8JASTrackUlUlUlUl */ -// stack shenanigans -#ifdef NONMATCHING s32 JASSeqParser::execNoteOnGate(JASTrack* param_0, u32 param_1, u32 param_2, u32 param_3, - u32 param_4) { + u32 param_4) { JASSeqCtrl* seqCtrl = param_0->getSeqCtrl(); - u8 tmp = param_4; + // likely fake match, this may use some actual union defined somewhere else + union { + u8 val; + struct { + u8 bit0 : 1; + u8 bit1 : 1; + } bits; + } tmp; + tmp.val = param_4; int r31 = 0; - if (tmp >> 6 & 1) { + if (tmp.bits.bit1) { r31 |= 2; } - if (tmp >> 7 & 1) { + if (tmp.bits.bit0) { r31 |= 1; } if (param_3 == 0) { @@ -1245,12 +943,6 @@ s32 JASSeqParser::execNoteOnGate(JASTrack* param_0, u32 param_1, u32 param_2, u3 } return result; } -#else -s32 JASSeqParser::execNoteOnGate(JASTrack* param_0, u32 param_1, u32 param_2, u32 param_3, - u32 param_4) { - // NONMATCHING -} -#endif /* 80295540-80295570 28FE80 0030+00 1/0 0/0 0/0 .text * execNoteOnMidi__12JASSeqParserFP8JASTrackUlUlUl */ @@ -1295,8 +987,7 @@ s32 JASSeqParser::parseNoteOn(JASTrack* param_0, u8 param_1) { /* 802956B0-80295864 28FFF0 01B4+00 2/2 0/0 0/0 .text parseCommand__12JASSeqParserFP8JASTrackUcUs */ -// u16 bit or -#ifdef NONMATCHING +// NONMATCHING u16 bit or s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 cmd, u16 param_2) { JASSeqCtrl* seqCtrl = param_0->getSeqCtrl(); CmdInfo* cmdInfo = NULL; @@ -1332,11 +1023,6 @@ s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 cmd, u16 param_2) { } return execCommand(param_0, ptr, cmdInfo->field_0xc, stack_28); } -#else -s32 JASSeqParser::parseCommand(JASTrack* param_0, u8 param_1, u16 param_2) { - // NONMATCHING -} -#endif /* 80295864-802958D4 2901A4 0070+00 1/1 0/0 0/0 .text parseRegCommand__12JASSeqParserFP8JASTracki */ @@ -1375,4 +1061,4 @@ s32 JASSeqParser::parse(JASTrack* param_0) { } } return r30; -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JASSeqReader.cpp b/src/JSystem/JAudio2/JASSeqReader.cpp index 717ae1f0c0..3a6117418e 100644 --- a/src/JSystem/JAudio2/JASSeqReader.cpp +++ b/src/JSystem/JAudio2/JASSeqReader.cpp @@ -19,8 +19,8 @@ void JASSeqReader::init() { /* 80296148-8029618C 290A88 0044+00 0/0 1/1 0/0 .text init__12JASSeqReaderFPv */ void JASSeqReader::init(void* param_0) { - field_0x00 = (u32*)param_0; - field_0x04 = (u8*)field_0x00; + field_0x00 = (u8*)param_0; + field_0x04 = field_0x00; field_0x08 = 0; for (int i = 0; i < 8; i++) { @@ -37,7 +37,7 @@ bool JASSeqReader::call(u32 param_0) { } field_0x0c[field_0x08++] = (u16*)field_0x04; - field_0x04 = (u8*)((int)field_0x00 + param_0); + field_0x04 = field_0x00 + param_0; return true; } @@ -118,4 +118,4 @@ int JASSeqReader::readMidiValue() { } return byte; -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JASSimpleWaveBank.cpp b/src/JSystem/JAudio2/JASSimpleWaveBank.cpp index 194d9d9f01..95ad98d7e8 100644 --- a/src/JSystem/JAudio2/JASSimpleWaveBank.cpp +++ b/src/JSystem/JAudio2/JASSimpleWaveBank.cpp @@ -4,185 +4,75 @@ // #include "JSystem/JAudio2/JASSimpleWaveBank.h" -#include "dol2asm.h" - -// -// Types: -// - -struct JKRHeap {}; - -struct JASWaveInfo { - static u32 one[1 + 1 /* padding */]; -}; - -struct JASWaveArc { - /* 80298FA0 */ void onLoadDone(); - /* 80298FA4 */ void onEraseDone(); - /* 8029A13C */ JASWaveArc(); - /* 8029A1B4 */ ~JASWaveArc(); - /* 8029A664 */ void onDispose(); -}; - -struct JASSimpleWaveBank { - struct TWaveHandle { - /* 80298D84 */ ~TWaveHandle(); - /* 80298F38 */ void getWavePtr() const; - /* 80298F5C */ TWaveHandle(); - /* 80298F90 */ void getWaveInfo() const; - }; - - /* 80298C94 */ JASSimpleWaveBank(); - /* 80298CF4 */ ~JASSimpleWaveBank(); - /* 80298DE0 */ void setWaveTableSize(u32, JKRHeap*); - /* 80298E60 */ void getWaveHandle(u32) const; - /* 80298E84 */ void setWaveInfo(u32, JASWaveInfo const&); - /* 80298F18 */ void getWaveArc(u32); - /* 80298F98 */ bool getArcCount() const; -}; - -// -// Forward References: -// - -extern "C" void __ct__17JASSimpleWaveBankFv(); -extern "C" void __dt__17JASSimpleWaveBankFv(); -extern "C" void __dt__Q217JASSimpleWaveBank11TWaveHandleFv(); -extern "C" void setWaveTableSize__17JASSimpleWaveBankFUlP7JKRHeap(); -extern "C" void getWaveHandle__17JASSimpleWaveBankCFUl(); -extern "C" void setWaveInfo__17JASSimpleWaveBankFUlRC11JASWaveInfo(); -extern "C" void getWaveArc__17JASSimpleWaveBankFUl(); -extern "C" void getWavePtr__Q217JASSimpleWaveBank11TWaveHandleCFv(); -extern "C" void __ct__Q217JASSimpleWaveBank11TWaveHandleFv(); -extern "C" void getWaveInfo__Q217JASSimpleWaveBank11TWaveHandleCFv(); -extern "C" bool getArcCount__17JASSimpleWaveBankCFv(); -extern "C" void onLoadDone__10JASWaveArcFv(); -extern "C" void onEraseDone__10JASWaveArcFv(); -extern "C" static void func_80298FA8(); - -// -// External References: -// - -extern "C" void __ct__10JASWaveArcFv(); -extern "C" void __dt__10JASWaveArcFv(); -extern "C" void onDispose__10JASWaveArcFv(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __destroy_new_array(); -extern "C" void __construct_new_array(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__13JASWaveHandle[5]; -extern "C" extern void* __vt__11JASWaveBank[6]; -extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C7798-803C77AC 0248B8 0014+00 2/2 0/0 0/0 .data __vt__Q217JASSimpleWaveBank11TWaveHandle */ -SECTION_DATA extern void* __vt__Q217JASSimpleWaveBank11TWaveHandle[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__Q217JASSimpleWaveBank11TWaveHandleFv, - (void*)getWaveInfo__Q217JASSimpleWaveBank11TWaveHandleCFv, - (void*)getWavePtr__Q217JASSimpleWaveBank11TWaveHandleCFv, -}; - -/* 803C77AC-803C77E0 0248CC 0030+04 2/2 0/0 0/0 .data __vt__17JASSimpleWaveBank */ -SECTION_DATA extern void* __vt__17JASSimpleWaveBank[12 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17JASSimpleWaveBankFv, - (void*)getWaveHandle__17JASSimpleWaveBankCFUl, - (void*)getWaveArc__17JASSimpleWaveBankFUl, - (void*)getArcCount__17JASSimpleWaveBankCFv, - (void*)NULL, - (void*)NULL, - (void*)func_80298FA8, - (void*)onDispose__10JASWaveArcFv, - (void*)onLoadDone__10JASWaveArcFv, - (void*)onEraseDone__10JASWaveArcFv, - /* padding */ - NULL, -}; /* 80298C94-80298CF4 2935D4 0060+00 0/0 1/1 0/0 .text __ct__17JASSimpleWaveBankFv */ JASSimpleWaveBank::JASSimpleWaveBank() { - // NONMATCHING + mWaveTable = NULL; + mWaveTableSize = 0; } /* 80298CF4-80298D84 293634 0090+00 2/1 0/0 0/0 .text __dt__17JASSimpleWaveBankFv */ JASSimpleWaveBank::~JASSimpleWaveBank() { - // NONMATCHING -} - -/* 80298D84-80298DE0 2936C4 005C+00 3/2 0/0 0/0 .text __dt__Q217JASSimpleWaveBank11TWaveHandleFv - */ -JASSimpleWaveBank::TWaveHandle::~TWaveHandle() { - // NONMATCHING + delete[] mWaveTable; } /* 80298DE0-80298E60 293720 0080+00 0/0 1/1 0/0 .text * setWaveTableSize__17JASSimpleWaveBankFUlP7JKRHeap */ -void JASSimpleWaveBank::setWaveTableSize(u32 param_0, JKRHeap* param_1) { - // NONMATCHING +void JASSimpleWaveBank::setWaveTableSize(u32 size, JKRHeap* heap) { + delete[] mWaveTable; + mWaveTable = new (heap, 0) TWaveHandle[size]; + mWaveTableSize = size; } /* 80298E60-80298E84 2937A0 0024+00 1/0 0/0 0/0 .text getWaveHandle__17JASSimpleWaveBankCFUl */ -void JASSimpleWaveBank::getWaveHandle(u32 param_0) const { - // NONMATCHING +JASWaveHandle* JASSimpleWaveBank::getWaveHandle(u32 no) const { + if (no >= mWaveTableSize) { + return NULL; + } + return &mWaveTable[no]; } /* 80298E84-80298F18 2937C4 0094+00 0/0 1/1 0/0 .text * setWaveInfo__17JASSimpleWaveBankFUlRC11JASWaveInfo */ -void JASSimpleWaveBank::setWaveInfo(u32 param_0, JASWaveInfo const& param_1) { - // NONMATCHING +void JASSimpleWaveBank::setWaveInfo(u32 no, JASWaveInfo const& waveInfo) { + mWaveTable[no].mWaveInfo = waveInfo; + mWaveTable[no].mWaveInfo.field_0x20 = &_48; + mWaveTable[no].mHeap = &mHeap; } /* 80298F18-80298F38 293858 0020+00 1/0 0/0 0/0 .text getWaveArc__17JASSimpleWaveBankFUl */ -void JASSimpleWaveBank::getWaveArc(u32 param_0) { - // NONMATCHING +JASWaveArc* JASSimpleWaveBank::getWaveArc(u32 no) { + if (no != 0) { + return NULL; + } + return this; } /* 80298F38-80298F5C 293878 0024+00 1/0 0/0 0/0 .text * getWavePtr__Q217JASSimpleWaveBank11TWaveHandleCFv */ -void JASSimpleWaveBank::TWaveHandle::getWavePtr() const { - // NONMATCHING +int JASSimpleWaveBank::TWaveHandle::getWavePtr() const { + void* base = mHeap->getBase(); + if (base == NULL) { + return NULL; + } + return (int)base + mWaveInfo.field_0x08; } /* 80298F5C-80298F90 29389C 0034+00 1/1 0/0 0/0 .text __ct__Q217JASSimpleWaveBank11TWaveHandleFv */ JASSimpleWaveBank::TWaveHandle::TWaveHandle() { - // NONMATCHING + mHeap = NULL; } /* 80298F90-80298F98 2938D0 0008+00 1/0 0/0 0/0 .text * getWaveInfo__Q217JASSimpleWaveBank11TWaveHandleCFv */ -void JASSimpleWaveBank::TWaveHandle::getWaveInfo() const { - // NONMATCHING +const JASWaveInfo* JASSimpleWaveBank::TWaveHandle::getWaveInfo() const { + return &mWaveInfo; } /* 80298F98-80298FA0 2938D8 0008+00 1/0 0/0 0/0 .text getArcCount__17JASSimpleWaveBankCFv */ -bool JASSimpleWaveBank::getArcCount() const { - return true; +u32 JASSimpleWaveBank::getArcCount() const { + return 1; } - -/* 80298FA0-80298FA4 2938E0 0004+00 1/0 1/0 0/0 .text onLoadDone__10JASWaveArcFv */ -void JASWaveArc::onLoadDone() { - /* empty function */ -} - -/* 80298FA4-80298FA8 2938E4 0004+00 1/0 1/0 0/0 .text onEraseDone__10JASWaveArcFv */ -void JASWaveArc::onEraseDone() { - /* empty function */ -} - -/* 80298FA8-80298FB0 2938E8 0008+00 1/0 0/0 0/0 .text @4@__dt__17JASSimpleWaveBankFv */ -static void func_80298FA8() { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASTaskThread.cpp b/src/JSystem/JAudio2/JASTaskThread.cpp index 1f19fe2ba9..80ef30fab4 100644 --- a/src/JSystem/JAudio2/JASTaskThread.cpp +++ b/src/JSystem/JAudio2/JASTaskThread.cpp @@ -9,42 +9,6 @@ #include "JSystem/JKernel/JKRSolidHeap.h" #include "dolphin/os.h" -// -// Forward References: -// - -extern "C" void __ct__13JASTaskThreadFiiUl(); -extern "C" void __dt__13JASTaskThreadFv(); -extern "C" void allocCallStack__13JASTaskThreadFPFPv_vPCvUl(); -extern "C" void allocCallStack__13JASTaskThreadFPFPv_vPv(); -extern "C" void sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl(); -extern "C" void sendCmdMsg__13JASTaskThreadFPFPv_vPv(); -extern "C" void run__13JASTaskThreadFv(); -extern "C" void pause__13JASTaskThreadFb(); - -// -// External References: -// - -extern "C" void bcopy__7JASCalcFPCvPvUl(); -extern "C" void getSystemHeap__9JASKernelFv(); -extern "C" void getCommandHeap__9JASKernelFv(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __ct__9JKRThreadFP7JKRHeapUlii(); -extern "C" void __dt__9JKRThreadFv(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" u8 sSystemHeap__7JKRHeap[4]; - -// -// Declarations: -// - /* 8028F6C4-8028F724 28A004 0060+00 0/0 1/1 0/0 .text __ct__13JASTaskThreadFiiUl */ JASTaskThread::JASTaskThread(int param_0, int param_1, u32 param_2) : JKRThread(JASDram, param_2, param_1, param_0) { field_0x84 = false; @@ -129,8 +93,7 @@ int JASTaskThread::sendCmdMsg(void (*param_0)(void*), void* param_1) { } /* 8028FD4C-8028FE88 28A68C 013C+00 1/0 0/0 0/0 .text run__13JASTaskThreadFv */ -// Regalloc -#ifdef NONMATCHING +// NONMATCHING Regalloc void* JASTaskThread::run() { OSInitFastCast(); do { @@ -147,11 +110,6 @@ void* JASTaskThread::run() { heap->free(ppcVar1); } while (true); } -#else -void* JASTaskThread::run() { - // NONMATCHING -} -#endif /* 8028FE88-8028FEFC 28A7C8 0074+00 0/0 1/1 0/0 .text pause__13JASTaskThreadFb */ void JASTaskThread::pause(bool param_0) { @@ -164,4 +122,4 @@ void JASTaskThread::pause(bool param_0) { } field_0x84 = 0; } -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/JASTrack.cpp b/src/JSystem/JAudio2/JASTrack.cpp index 6bc245dd47..8bbef78ac8 100644 --- a/src/JSystem/JAudio2/JASTrack.cpp +++ b/src/JSystem/JAudio2/JASTrack.cpp @@ -167,73 +167,32 @@ extern "C" extern u8 __OSReport_disable; // Declarations: // -/* ############################################################################################## */ -/* 804555A0-804555A4 003BA0 0004+00 6/6 0/0 0/0 .sdata2 @457 */ -SECTION_SDATA2 static u8 lit_457[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - /* 80291228-8029131C 28BB68 00F4+00 1/1 3/3 0/0 .text __ct__8JASTrackFv */ // NONMATCHING -/* JASTrack::JASTrack() : mDefaultChannelMgr(this), mChannelMgrCount(1), mStatus(0) { +JASTrack::JASTrack() : mDefaultChannelMgr(this), mChannelMgrCount(1), mStatus(0) { mChannelMgrs[0] = &mDefaultChannelMgr; for (int i = 1; i < 4; i++) { mChannelMgrs[i] = NULL; } init(); -} */ - -#ifndef NONMATCHING -/* ############################################################################################## */ -/* 804316A8-804316B4 05E3C8 000C+00 1/1 0/0 0/0 .bss @431 */ -static u8 lit_431[12]; -#endif +} /* 804316B4-80431AC0 05E3D4 040C+00 1/2 0/0 0/0 .bss sDefaultBankTable__8JASTrack */ JASDefaultBankTable JASTrack::sDefaultBankTable; -#ifndef NONMATCHING -/* 80431AC0-80431ACC 05E7E0 000C+00 0/1 0/0 0/0 .bss @433 */ -#pragma push -#pragma force_active on -static u8 lit_433[12]; -#pragma pop -#endif - /* 80431ACC-80431ADC 05E7EC 0010+00 1/2 0/0 0/0 .bss sTrackList__8JASTrack */ JASTrack::TList JASTrack::sTrackList; -#ifndef NONMATCHING -/* 80431ADC-80431AE8 05E7FC 000C+00 3/3 0/0 0/0 .bss @470 */ -static u8 lit_470[12]; - -/* 80431AE8-80431AF4 05E808 000C+00 2/2 0/0 0/0 .bss @476 */ -static u8 lit_476[12]; - -/* 80431AF4-80431B04 05E814 0010+00 3/3 1/1 0/0 .bss - * memPool_$localstatic3$getMemPool___58JASPoolAllocObject_MultiThreadedFv - */ -extern u8 data_80431AF4[16]; -u8 data_80431AF4[16]; - -/* 80431B04-80431B18 05E824 0010+04 2/2 2/2 0/0 .bss - * memPool_$localstatic3$getMemPool___43JASPoolAllocObject_MultiThreaded<8JASTrack>Fv */ -extern u8 data_80431B04[16 + 4 /* padding */]; -u8 data_80431B04[16 + 4 /* padding */]; -#endif - /* 8029131C-80291444 28BC5C 0128+00 4/4 4/4 0/0 .text __dt__8JASTrackFv */ +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations JASTrack::~JASTrack() { for (int i = 1; i < 4; i++) { delete mChannelMgrs[i]; } } - /* 80291444-802915D4 28BD84 0190+00 1/1 3/3 0/0 .text setChannelMgrCount__8JASTrackFUl */ +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations void JASTrack::setChannelMgrCount(u32 i_count) { mChannelMgrCount = 1; for (int i = 1; i < i_count; i++) { @@ -253,8 +212,6 @@ void JASTrack::setChannelMgrCount(u32 i_count) { } } - -/* ############################################################################################## */ /* 8039AFD0-8039AFE8 027630 0018+00 1/1 0/0 0/0 .rodata sAdsTable__8JASTrack */ JASOscillator::Point const JASTrack::sAdsTable[4] = { {0, 0, 0x7fff}, @@ -269,10 +226,8 @@ JASOscillator::Data const JASTrack::sEnvOsc = {0, 1.0f, NULL, NULL, 1.0f, 0.0f}; /* 8039B000-8039B018 027660 0018+00 0/1 0/0 0/0 .rodata sPitchEnvOsc__8JASTrack */ JASOscillator::Data const JASTrack::sPitchEnvOsc = {1, 1.0f, NULL, NULL, 1.0f, 0.0f}; -/* 804555A4-804555A8 003BA4 0004+00 9/9 0/0 0/0 .sdata2 @679 */ -SECTION_SDATA2 static f32 lit_679 = 1.0f; - /* 802915D4-802918FC 28BF14 0328+00 2/2 1/1 0/0 .text init__8JASTrackFv */ +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations void JASTrack::init() { mSeqCtrl.init(); mTrackPort.init(); @@ -344,11 +299,6 @@ void JASTrack::init() { mStatus = 0; } - -/* ############################################################################################## */ -/* 804555A8-804555AC 003BA8 0004+00 4/4 0/0 0/0 .sdata2 @690 */ -SECTION_SDATA2 static f32 lit_690 = 0.5f; - /* 802918FC-8029194C 28C23C 0050+00 1/1 0/0 0/0 .text initTimed__8JASTrackFv */ void JASTrack::initTimed() { mMoveParam[0].mValue = 1.0f; @@ -363,7 +313,6 @@ void JASTrack::initTimed() { } } - /* 8029194C-802919F4 28C28C 00A8+00 1/1 0/0 0/0 .text inherit__8JASTrackFRC8JASTrack */ void JASTrack::inherit(JASTrack const& i_parent) { mFlags.flag2 = i_parent.mFlags.flag2; @@ -396,18 +345,11 @@ void JASTrack::setSeqData(void* param_0, u32 param_1) { } /* 80291A28-80291A78 28C368 0050+00 0/0 2/2 0/0 .text startSeq__8JASTrackFv */ -#ifdef NONMATCHING -// matches once static data declared correctly void JASTrack::startSeq() { JASCriticalSection critical_section; sTrackList.append(this); mStatus = 1; } -#else -void JASTrack::startSeq() { - // NONMATCHING -} -#endif /* 80291A78-80291ABC 28C3B8 0044+00 0/0 2/2 0/0 .text stopSeq__8JASTrackFv */ void JASTrack::stopSeq() { @@ -464,8 +406,8 @@ void JASTrack::closeChild(u32 i_index) { } } - /* 80291C30-80291DAC 28C570 017C+00 0/0 2/2 0/0 .text openChild__8JASTrackFUl */ +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations JASTrack* JASTrack::openChild(u32 i_index) { JASTrack* child = mChildren[i_index]; if (child != NULL) { @@ -497,7 +439,6 @@ JASTrack* JASTrack::openChild(u32 i_index) { return child; } - /* 80291DAC-80291DBC 28C6EC 0010+00 0/0 1/1 0/0 .text connectBus__8JASTrackFii */ void JASTrack::connectBus(int param_0, int param_1) { mMixConfig[param_0] = param_1; @@ -538,7 +479,6 @@ JASChannel* JASTrack::channelStart(JASTrack::TChannelMgr* i_channelMgr, u32 para return channel; } - /* 80291F38-80292008 28C878 00D0+00 0/0 1/1 0/0 .text noteOn__8JASTrackFUlUlUl */ int JASTrack::noteOn(u32 i_noteID, u32 param_1, u32 param_2) { if (isMute()) { @@ -559,13 +499,6 @@ int JASTrack::noteOn(u32 i_noteID, u32 param_1, u32 param_2) { return ret; } -/* ############################################################################################## */ -/* 804555AC-804555B0 003BAC 0004+00 1/1 0/0 0/0 .sdata2 @952 */ -SECTION_SDATA2 static f32 lit_952 = 100.0f; - -/* 804555B0-804555B8 003BB0 0008+00 4/4 0/0 0/0 .sdata2 @954 */ -SECTION_SDATA2 static f64 lit_954 = 4503599627370496.0 /* cast u32 to float */; - /* 80292008-80292198 28C948 0190+00 0/0 1/1 0/0 .text gateOn__8JASTrackFUlUlfUl */ int JASTrack::gateOn(u32 param_0, u32 i_velocity, f32 i_time, u32 i_flags) { param_0 += getTransposeTotal(); @@ -607,7 +540,6 @@ int JASTrack::gateOn(u32 param_0, u32 i_velocity, f32 i_time, u32 i_flags) { return 1; } - /* 80292198-80292220 28CAD8 0088+00 1/1 1/1 0/0 .text noteOff__8JASTrackFUlUs */ int JASTrack::noteOff(u32 i_noteID, u16 param_1) { int ret = 1; @@ -651,11 +583,6 @@ void JASTrack::updateTimedParam() { } } - -/* ############################################################################################## */ -/* 804555B8-804555BC 003BB8 0004+00 1/1 0/0 0/0 .sdata2 @1032 */ -SECTION_SDATA2 static f32 lit_1032 = 1.0f / 3.0f; - /* 80292348-802924E4 28CC88 019C+00 1/1 0/0 0/0 .text updateTrack__8JASTrackFf */ void JASTrack::updateTrack(f32 param_0) { updateTempo(); @@ -702,14 +629,6 @@ void JASTrack::updateTrack(f32 param_0) { } } - -/* ############################################################################################## */ -/* 804555BC-804555C0 003BBC 0004+00 1/1 0/0 0/0 .sdata2 @1042 */ -SECTION_SDATA2 static f32 lit_1042 = 4.0f / 3.0f; - -/* 804555C0-804555C8 003BC0 0008+00 1/1 0/0 0/0 .sdata2 @1044 */ -SECTION_SDATA2 static f64 lit_1044 = 4503601774854144.0 /* cast s32 to float */; - /* 802924E4-80292580 28CE24 009C+00 5/5 0/0 0/0 .text updateTempo__8JASTrackFv */ void JASTrack::updateTempo() { if (mParent == NULL) { @@ -721,7 +640,6 @@ void JASTrack::updateTempo() { } } - /* 80292580-80292644 28CEC0 00C4+00 4/4 0/0 0/0 .text updateSeq__8JASTrackFbf */ void JASTrack::updateSeq(bool param_0, f32 param_1) { if (!param_0) { @@ -739,13 +657,6 @@ void JASTrack::updateSeq(bool param_0, f32 param_1) { } } -/* ############################################################################################## */ -/* 804555C8-804555CC 003BC8 0004+00 1/1 0/0 0/0 .sdata2 @1069 */ -SECTION_SDATA2 static f32 lit_1069 = 120.0f; - -/* 804555CC-804555D0 003BCC 0004+00 1/1 0/0 0/0 .sdata2 @1070 */ -SECTION_SDATA2 static f32 lit_1070 = 10.0f; - /* 80292644-802926E0 28CF84 009C+00 1/1 0/0 0/0 .text seqTimeToDspTime__8JASTrackFf */ u32 JASTrack::seqTimeToDspTime(f32 i_seqTime) { f32 dsp_time; @@ -758,7 +669,6 @@ u32 JASTrack::seqTimeToDspTime(f32 i_seqTime) { return dsp_time; } - /* 802926E0-80292708 28D020 0028+00 0/0 4/4 0/0 .text setParam__8JASTrackFUlfUl */ void JASTrack::setParam(u32 i_index, f32 i_target, u32 i_count) { MoveParam_* param = &mMoveParam[i_index]; @@ -814,9 +724,8 @@ void JASTrack::setOscAdsr(s16 param_0, s16 param_1, s16 param_2, s16 param_3, u1 mDirectRelease = i_directRelease; } -/* ############################################################################################## */ /* 804555D0-804555D4 003BD0 0004+00 2/2 0/0 0/0 .sdata2 FILTER_MODE_IIR__6JASDsp */ -SECTION_SDATA2 u32 JASDsp::FILTER_MODE_IIR = 0x00000020; +const u32 JASDsp::FILTER_MODE_IIR = 0x00000020; /* 8029285C-8029289C 28D19C 0040+00 0/0 2/2 0/0 .text setFIR__8JASTrackFPCs */ void JASTrack::setFIR(s16 const* i_FIR) { @@ -926,10 +835,6 @@ void JASTrack::setTimebase(u16 i_timebase) { updateTempo(); } -/* ############################################################################################## */ -/* 804555D4-804555D8 003BD4 0004+00 1/1 0/0 0/0 .sdata2 @1246 */ -SECTION_SDATA2 static f32 lit_1246 = 32767.0f; - /* 80292BF4-80292CA4 28D534 00B0+00 1/1 0/0 0/0 .text * updateChannel__8JASTrackFP10JASChannelPQ26JASDsp8TChannel */ void JASTrack::updateChannel(JASChannel* param_0, JASDsp::TChannel* param_1) { @@ -1011,7 +916,6 @@ int JASTrack::tickProc() { return 0; } - /* 80292E9C-80292F6C 28D7DC 00D0+00 1/1 0/0 0/0 .text seqMain__8JASTrackFv */ int JASTrack::seqMain() { if (mFlags.flag6) { @@ -1033,7 +937,6 @@ int JASTrack::seqMain() { } } - /* 80292F6C-80292F90 28D8AC 0024+00 1/1 0/0 0/0 .text cbSeqMain__Q28JASTrack5TListFPv */ s32 JASTrack::TList::cbSeqMain(void* i_this) { static_cast(i_this)->seqMain(); @@ -1052,7 +955,7 @@ void JASTrack::TList::append(JASTrack* i_track) { } /* 8029301C-802930DC 28D95C 00C0+00 1/1 0/0 0/0 .text seqMain__Q28JASTrack5TListFv */ -#ifdef NONMATCHING +// NONMATCHING problems with the iterator void JASTrack::TList::seqMain() { for (iterator it = begin(); it != end(); it++) { if (it->seqMain() < 0) { @@ -1063,11 +966,6 @@ void JASTrack::TList::seqMain() { } } } -#else -void JASTrack::TList::seqMain() { - // NONMATCHING -} -#endif /* 802930DC-80293148 28DA1C 006C+00 2/2 0/0 0/0 .text __ct__Q28JASTrack11TChannelMgrFP8JASTrack */ JASTrack::TChannelMgr::TChannelMgr(JASTrack* i_track) : mSoundParams(NULL), mTrack(i_track) { @@ -1129,74 +1027,3 @@ void JASTrack::TChannelMgr::setPauseFlag(bool i_pause) { } } } - -/* 802932C8-802932E0 28DC08 0018+00 1/1 0/0 0/0 .text __ct__Q28JASTrack10MoveParam_Fv */ -// JASTrack::MoveParam_::MoveParam_() { -extern "C" void __ct__Q28JASTrack10MoveParam_Fv() { - // NONMATCHING -} - -/* 802932E0-80293334 28DC20 0054+00 2/2 2/2 0/0 .text - * __dt__35JASMemPool_MultiThreaded<8JASTrack>Fv */ -extern "C" void func_802932E0(void* _this) { - // NONMATCHING -} - -/* 80293334-80293388 28DC74 0054+00 3/3 1/1 0/0 .text - * __dt__50JASMemPool_MultiThreadedFv */ -extern "C" void func_80293334(void* _this) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 803C5B68-803C5B74 022C88 000C+00 2/2 0/0 0/0 .data __vt__19JASDefaultBankTable */ -SECTION_DATA extern void* __vt__19JASDefaultBankTable[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)func_80293528, -}; - -/* 803C5B74-803C5B80 022C94 000C+00 1/1 0/0 0/0 .data __vt__17JASBankTable<256> */ -SECTION_DATA extern void* data_803C5B74[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)func_80293528, -}; - -/* 803C5B80-803C5B90 022CA0 000C+04 1/1 1/1 0/0 .data __vt__11JASBankList */ -SECTION_DATA extern void* __vt__11JASBankList[3 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)NULL, - /* padding */ - NULL, -}; - -#ifndef NONMATCHING -/* 80293388-8029345C 28DCC8 00D4+00 0/0 1/0 0/0 .text __sinit_JASTrack_cpp */ -void __sinit_JASTrack_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80293388, __sinit_JASTrack_cpp); -#pragma pop - -/* 8029345C-802934B4 28DD9C 0058+00 1/1 0/0 0/0 .text __dt__Q28JASTrack5TListFv */ -// JASTrack::TList::~TList() { -extern "C" void __dt__Q28JASTrack5TListFv() { - // NONMATCHING -} - -/* 802934B4-80293528 28DDF4 0074+00 1/1 0/0 0/0 .text __dt__19JASDefaultBankTableFv */ -// JASDefaultBankTable::~JASDefaultBankTable() { -extern "C" void __dt__19JASDefaultBankTableFv() { - // NONMATCHING -} - -/* 80293528-8029354C 28DE68 0024+00 2/0 0/0 0/0 .text getBank__17JASBankTable<256>CFUl */ -extern "C" void func_80293528(void* _this, u32 param_0) /* const */ { - // NONMATCHING -} -#endif \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASWSParser.cpp b/src/JSystem/JAudio2/JASWSParser.cpp index b9205922a4..dda617d6e1 100644 --- a/src/JSystem/JAudio2/JASWSParser.cpp +++ b/src/JSystem/JAudio2/JASWSParser.cpp @@ -5,124 +5,125 @@ #include "JSystem/JAudio2/JASWSParser.h" #include "JSystem/JAudio2/JASBasicWaveBank.h" +#include "JSystem/JAudio2/JASSimpleWaveBank.h" #include "JSystem/JKernel/JKRHeap.h" -#include "dolphin/types.h" - -// -// Forward References: -// - -extern "C" void getGroupCount__11JASWSParserFPCv(); -extern "C" void createWaveBank__11JASWSParserFPCvP7JKRHeap(); -extern "C" void createBasicWaveBank__11JASWSParserFPCvP7JKRHeap(); -extern "C" void createSimpleWaveBank__11JASWSParserFPCvP7JKRHeap(); -extern "C" void func_80299490(void* _this, void const*, u32); -extern "C" void func_802994A8(void* _this, void const*, u32); -extern "C" void func_802994C0(void* _this, void const*, u32); -extern "C" void func_802994D8(void* _this, void const*, u32); -extern "C" void func_802994F0(void* _this, void const*, u32); -extern "C" void func_80299508(void* _this, void const*, u32); -extern "C" void func_80299520(void* _this, void const*, u32); -extern "C" u8 sUsedHeapSize__11JASWSParser[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void __ct__16JASBasicWaveBankFv(); -extern "C" void getWaveGroup__16JASBasicWaveBankFUl(); -extern "C" void setGroupCount__16JASBasicWaveBankFUlP7JKRHeap(); -extern "C" void setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap(); -extern "C" void -setWaveInfo__16JASBasicWaveBankFPQ216JASBasicWaveBank10TWaveGroupiUsRC11JASWaveInfo(); -extern "C" void setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap(); -extern "C" void __ct__17JASSimpleWaveBankFv(); -extern "C" void setWaveTableSize__17JASSimpleWaveBankFUlP7JKRHeap(); -extern "C" void setWaveInfo__17JASSimpleWaveBankFUlRC11JASWaveInfo(); -extern "C" void setFileName__10JASWaveArcFPCc(); -extern "C" void getFreeSize__7JKRHeapFv(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void _savegpr_20(); -extern "C" void _savegpr_23(); -extern "C" void _restgpr_20(); -extern "C" void _restgpr_23(); -extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */]; - -// -// Declarations: -// +#include "JSystem/JKernel/JKRSolidHeap.h" /* 80298FB0-80298FD8 2938F0 0028+00 1/1 0/0 0/0 .text getGroupCount__11JASWSParserFPCv */ u32 JASWSParser::getGroupCount(void const* stream) { THeader* header = (THeader*)stream; - return ((TOffset*)&header->mCtrlGroupOffset)->ptr(header)->mCtrlGroupCount; + return header->mCtrlGroupOffset.ptr(header)->mGroupCount; } /* 80298FD8-80299034 293918 005C+00 0/0 1/1 0/0 .text createWaveBank__11JASWSParserFPCvP7JKRHeap */ -JASWaveBank* JASWSParser::createWaveBank(void const* param_0, JKRHeap* param_1) { - if (getGroupCount(param_0) == 1) { - return (JASWaveBank*)createSimpleWaveBank(param_0, param_1); +JASWaveBank* JASWSParser::createWaveBank(void const* stream, JKRHeap* heap) { + if (getGroupCount(stream) == 1) { + return createSimpleWaveBank(stream, heap); } else { - return (JASWaveBank*) createBasicWaveBank(param_0, param_1); + return createBasicWaveBank(stream, heap); } } -/* ############################################################################################## */ /* 80451280-80451288 000780 0004+04 2/2 0/0 0/0 .sbss sUsedHeapSize__11JASWSParser */ -u8 JASWSParser::sUsedHeapSize[4 + 4 /* padding */]; +u32 JASWSParser::sUsedHeapSize; /* 80299034-80299264 293974 0230+00 1/1 0/0 0/0 .text * createBasicWaveBank__11JASWSParserFPCvP7JKRHeap */ -JASBasicWaveBank* JASWSParser::createBasicWaveBank(void const* param_0, JKRHeap* param_1) { - // NONMATCHING +JASBasicWaveBank* JASWSParser::createBasicWaveBank(void const* stream, JKRHeap* heap) { + if (heap == NULL) { + heap = JASDram; + } + u32 free_size = heap->getFreeSize(); + + THeader* header = (THeader*)stream; + JASBasicWaveBank* wave_bank = new (heap, 0) JASBasicWaveBank(); + if (wave_bank == NULL) { + return NULL; + } + + TCtrlGroup* ctrl_group = header->mCtrlGroupOffset.ptr(header); + wave_bank->setGroupCount(ctrl_group->mGroupCount, heap); + wave_bank->setWaveTableSize(header->mWaveTableSize, heap); + for (u32 i = 0; i < ctrl_group->mGroupCount; i++) { + TCtrl* ctrl = ctrl_group->mCtrlSceneOffsets[i].ptr(header)->mCtrlOffset.ptr(header); + JASBasicWaveBank::TWaveGroup* wave_group = wave_bank->getWaveGroup(i); + TWaveArchive* archive = header->mArchiveBankOffset.ptr(header)->mArchiveOffsets[i].ptr(header); + wave_group->setWaveCount(ctrl->mWaveCount, heap); + for (int j = 0; j < ctrl->mWaveCount; j++) { + TWave* wave = archive->mWaveOffsets[j].ptr(header); + JASWaveInfo wave_info; + wave_info.field_0x00 = wave->_01; + wave_info.field_0x01 = wave->_02; + wave_info.field_0x04 = wave->_04; + wave_info.field_0x08 = wave->mOffset; + wave_info.field_0x0c = wave->_0C; + wave_info.field_0x02 = wave->_10 == 0 ? 0 : 0xff; + wave_info.field_0x10 = wave->_14; + wave_info.field_0x14 = wave->_18; + wave_info.field_0x18 = wave->_1C; + wave_info.field_0x1c = wave->_20; + wave_info.field_0x1e = wave->_22; + TCtrlWave* ctrl_wave = ctrl->mCtrlWaveOffsets[j].ptr(header); + wave_bank->setWaveInfo(wave_group, j, JSULoHalf(ctrl_wave->_00), wave_info); + } + wave_group->setFileName(archive->mFileName); + } + + sUsedHeapSize += (free_size - heap->getFreeSize()); + return wave_bank; } /* 80299264-80299490 293BA4 022C+00 1/1 0/0 0/0 .text * createSimpleWaveBank__11JASWSParserFPCvP7JKRHeap */ -JASSimpleWaveBank* JASWSParser::createSimpleWaveBank(void const* param_0, JKRHeap* param_1) { - // NONMATCHING -} +JASSimpleWaveBank* JASWSParser::createSimpleWaveBank(void const* stream, JKRHeap* heap) { + if (heap == NULL) { + heap = JASDram; + } + u32 free_size = heap->getFreeSize(); + + THeader* header = (THeader*)stream; + TCtrlGroup* ctrl_group = header->mCtrlGroupOffset.ptr(header); + if (ctrl_group->mGroupCount != 1) { + return NULL; + } -/* 80299490-802994A8 293DD0 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299490(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} + JASSimpleWaveBank* wave_bank = new (heap, 0) JASSimpleWaveBank(); + if (wave_bank == NULL) { + return NULL; + } -/* 802994A8-802994C0 293DE8 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_802994A8(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} + u32 max = 0; + TCtrl* ctrl = ctrl_group->mCtrlSceneOffsets[0].ptr(header)->mCtrlOffset.ptr(header); + TWaveArchive* archive = header->mArchiveBankOffset.ptr(header)->mArchiveOffsets[0].ptr(header); + for (int i = 0; i < ctrl->mWaveCount; i++) { + u32 tmp = JSULoHalf(ctrl->mCtrlWaveOffsets[i].ptr(header)->_00); + if (max < tmp) { + max = tmp; + } + } + wave_bank->setWaveTableSize(max + 1, heap); + + for (int i = 0; i < ctrl->mWaveCount; i++) { + TWave* wave = archive->mWaveOffsets[i].ptr(header); + JASWaveInfo wave_info; + wave_info.field_0x00 = wave->_01; + wave_info.field_0x01 = wave->_02; + wave_info.field_0x04 = wave->_04; + wave_info.field_0x08 = wave->mOffset; + wave_info.field_0x0c = wave->_0C; + wave_info.field_0x02 = wave->_10 == 0 ? 0 : 0xff; + wave_info.field_0x10 = wave->_14; + wave_info.field_0x14 = wave->_18; + wave_info.field_0x18 = wave->_1C; + wave_info.field_0x1c = wave->_20; + wave_info.field_0x1e = wave->_22; + TCtrlWave* ctrl_wave = ctrl->mCtrlWaveOffsets[i].ptr(header); + wave_bank->setWaveInfo(JSULoHalf(ctrl_wave->_00), wave_info); + } + wave_bank->setFileName(archive->mFileName); -/* 802994C0-802994D8 293E00 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_802994C0(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING + sUsedHeapSize += (free_size - heap->getFreeSize()); + return wave_bank; } - -/* 802994D8-802994F0 293E18 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_802994D8(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 802994F0-80299508 293E30 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_802994F0(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 80299508-80299520 293E48 0018+00 2/2 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299508(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} - -/* 80299520-80299538 293E60 0018+00 3/3 0/0 0/0 .text - * JSUConvertOffsetToPtr__FPCvUl */ -extern "C" void func_80299520(void* _this, void const* param_0, u32 param_1) { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JASWaveArcLoader.cpp b/src/JSystem/JAudio2/JASWaveArcLoader.cpp index 17e0c19f11..6b049bbfba 100644 --- a/src/JSystem/JAudio2/JASWaveArcLoader.cpp +++ b/src/JSystem/JAudio2/JASWaveArcLoader.cpp @@ -11,58 +11,6 @@ #include "string.h" #include "dolphin/os.h" -// -// Forward References: -// - -extern "C" void getRootHeap__16JASWaveArcLoaderFv(); -extern "C" void setCurrentDir__16JASWaveArcLoaderFPCc(); -extern "C" void getCurrentDir__16JASWaveArcLoaderFv(); -extern "C" void __ct__10JASWaveArcFv(); -extern "C" void __dt__10JASWaveArcFv(); -extern "C" void loadSetup__10JASWaveArcFUl(); -extern "C" void eraseSetup__10JASWaveArcFv(); -extern "C" void loadToAramCallback__10JASWaveArcFPv(); -extern "C" void sendLoadCmd__10JASWaveArcFv(); -extern "C" void load__10JASWaveArcFP7JASHeap(); -extern "C" void loadTail__10JASWaveArcFP7JASHeap(); -extern "C" void erase__10JASWaveArcFv(); -extern "C" void onDispose__10JASWaveArcFv(); -extern "C" void setEntryNum__10JASWaveArcFl(); -extern "C" void setFileName__10JASWaveArcFPCc(); -extern "C" void __dt__11JASDisposerFv(); -extern "C" u8 sCurrentDir__16JASWaveArcLoader[64]; -extern "C" u8 sAramHeap__16JASWaveArcLoader[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void sendCmdMsg__13JASTaskThreadFPFPv_vPCvUl(); -extern "C" void getThreadPointer__6JASDvdFv(); -extern "C" void __ct__7JASHeapFP11JASDisposer(); -extern "C" void alloc__7JASHeapFP7JASHeapUl(); -extern "C" void allocTail__7JASHeapFP7JASHeapUl(); -extern "C" void free__7JASHeapFv(); -extern "C" void getSystemHeap__9JASKernelFv(); -extern "C" void getAramHeap__9JASKernelFv(); -extern "C" void onDispose__11JASDisposerFv(); -extern "C" void onLoadDone__10JASWaveArcFv(); -extern "C" void onEraseDone__10JASWaveArcFv(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __dla__FPv(); -extern "C" void loadToAram__16JKRDvdAramRipperFlUl15JKRExpandSwitchUlUlPUl(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void __dt__10JSUPtrListFv(); -extern "C" void _savegpr_27(); -extern "C" void _restgpr_27(); - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80451290-80451298 000790 0004+04 1/1 0/0 0/0 .sbss sAramHeap__16JASWaveArcLoader */ JASHeap* JASWaveArcLoader::sAramHeap; @@ -75,7 +23,6 @@ JASHeap* JASWaveArcLoader::getRootHeap() { return JASKernel::getAramHeap(); } -/* ############################################################################################## */ /* 803C77E0-803C7820 024900 0040+00 2/2 0/0 0/0 .data sCurrentDir__16JASWaveArcLoader */ char JASWaveArcLoader::sCurrentDir[DIR_MAX] = "/AudioRes/Waves/"; @@ -93,35 +40,14 @@ void JASWaveArcLoader::setCurrentDir(char const* dir) { /* 8029A130-8029A13C 294A70 000C+00 1/1 0/0 0/0 .text getCurrentDir__16JASWaveArcLoaderFv */ - char* JASWaveArcLoader::getCurrentDir() { return sCurrentDir; } -/* ############################################################################################## */ -/* 803C7820-803C7838 024940 0018+00 2/2 0/0 0/0 .data __vt__10JASWaveArc */ -SECTION_DATA extern void* __vt__10JASWaveArc[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10JASWaveArcFv, - (void*)onDispose__10JASWaveArcFv, - (void*)onLoadDone__10JASWaveArcFv, - (void*)onEraseDone__10JASWaveArcFv, -}; - -/* 803C7838-803C7848 024958 0010+00 3/3 0/0 0/0 .data __vt__11JASDisposer */ -SECTION_DATA extern void* __vt__11JASDisposer[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11JASDisposerFv, - (void*)onDispose__11JASDisposerFv, -}; - /* 8029A13C-8029A1B4 294A7C 0078+00 0/0 2/2 0/0 .text __ct__10JASWaveArcFv */ - JASWaveArc::JASWaveArc() : mHeap(this) { _48 = 0; - _4c = 0; + mStatus = 0; mEntryNum = -1; mFileLength = 0; _58 = 0; @@ -130,13 +56,7 @@ JASWaveArc::JASWaveArc() : mHeap(this) { } /* 8029A1B4-8029A258 294AF4 00A4+00 1/0 2/2 0/0 .text __dt__10JASWaveArcFv */ -#ifdef NONMATCHING JASWaveArc::~JASWaveArc() {} -#else -void __dt__10JASWaveArcFv() { - // NONMATCHING -} -#endif /* 8029A258-8029A2EC 294B98 0094+00 1/1 0/0 0/0 .text loadSetup__10JASWaveArcFUl */ bool JASWaveArc::loadSetup(u32 param_0) { @@ -144,26 +64,26 @@ bool JASWaveArc::loadSetup(u32 param_0) { if (_58 != param_0) { return false; } - if (_4c != 1) { + if (mStatus != 1) { return false; } _48 = 1; - _4c = 2; + mStatus = 2; return true; } /* 8029A2EC-8029A378 294C2C 008C+00 1/1 0/0 0/0 .text eraseSetup__10JASWaveArcFv */ bool JASWaveArc::eraseSetup() { JASMutexLock mutexLock(&mMutex); - if (_4c == 0) { + if (mStatus == 0) { return false; } - if (_4c == 1) { - _4c = 0; + if (mStatus == 1) { + mStatus = 0; return false; } _48 = 0; - _4c = 0; + mStatus = 0; return true; } @@ -188,7 +108,7 @@ void JASWaveArc::loadToAramCallback(void* this_) { bool JASWaveArc::sendLoadCmd() { JASMutexLock mutexLock(&mMutex); _48 = 0; - _4c = 1; + mStatus = 1; void* base = mHeap.getBase(); loadToAramCallbackParams commandInfo; commandInfo.mWavArc = this; @@ -214,7 +134,7 @@ bool JASWaveArc::load(JASHeap* heap) { return false; } JASMutexLock mutexLock(&mMutex); - if (_4c != 0) { + if (mStatus != 0) { return false; } if (heap == NULL) { @@ -233,7 +153,7 @@ bool JASWaveArc::loadTail(JASHeap* heap) { return false; } JASMutexLock mutexLock(&mMutex); - if (_4c != 0) { + if (mStatus != 0) { return false; } if (heap == NULL) { @@ -247,8 +167,8 @@ bool JASWaveArc::loadTail(JASHeap* heap) { } /* 8029A640-8029A664 294F80 0024+00 0/0 2/2 0/0 .text erase__10JASWaveArcFv */ -void JASWaveArc::erase() { - mHeap.free(); +bool JASWaveArc::erase() { + return mHeap.free(); } /* 8029A664-8029A6AC 294FA4 0048+00 1/0 2/0 0/0 .text onDispose__10JASWaveArcFv */ @@ -290,8 +210,3 @@ void JASWaveArc::setFileName(char const* fileName) { } setEntryNum(entryNum); } - -/* 8029A7B8-8029A800 2950F8 0048+00 1/0 0/0 0/0 .text __dt__11JASDisposerFv */ -void __dt__11JASDisposerFv() { - // NONMATCHING -} \ No newline at end of file diff --git a/src/JSystem/JAudio2/JAUBankTable.cpp b/src/JSystem/JAudio2/JAUBankTable.cpp index 70c37db011..71e1c9c20b 100644 --- a/src/JSystem/JAudio2/JAUBankTable.cpp +++ b/src/JSystem/JAudio2/JAUBankTable.cpp @@ -11,7 +11,7 @@ void JAUBankTableDictionary::appendBankTable(JSULink* bankTableLis append(bankTableList); } -/* 802A4AA0-802A4AC4 29F3E0 0024+00 0/0 2/0 0/0 .text getBank__12JAUBankTableCFUl */ -JASBank* JAUBankTable::getBank(u32 bank) const { - return mBankPtrTable.get(bank); -} \ No newline at end of file +// Needed to make the inline function JAUBankTable::getBank appear in this TU +static JASBank* dummy(JAUBankTable* table) { + return table->getBank(0); +} diff --git a/src/JSystem/JAudio2/JAUInitializer.cpp b/src/JSystem/JAudio2/JAUInitializer.cpp index 7158a7844a..ff5dbc95d4 100644 --- a/src/JSystem/JAudio2/JAUInitializer.cpp +++ b/src/JSystem/JAudio2/JAUInitializer.cpp @@ -4,74 +4,22 @@ // #include "JSystem/JAudio2/JAUInitializer.h" +#include "JSystem/JAudio2/JAISe.h" +#include "JSystem/JAudio2/JAISeq.h" +#include "JSystem/JAudio2/JAISoundChild.h" +#include "JSystem/JAudio2/JAIStream.h" +#include "JSystem/JAudio2/JASAramStream.h" +#include "JSystem/JAudio2/JASAudioThread.h" +#include "JSystem/JAudio2/JASDriverIF.h" +#include "JSystem/JAudio2/JASDvdThread.h" #include "JSystem/JAudio2/JASTaskThread.h" #include "JSystem/JAudio2/JASTrack.h" #include "JSystem/JAudio2/JASWaveArcLoader.h" #include "JSystem/JKernel/JKRAram.h" #include "JSystem/JKernel/JKRSolidHeap.h" #include "JSystem/JKernel/JKRThread.h" -#include "dol2asm.h" #include "dolphin/os/OSRtc.h" -// -// Types: -// - -// -// Forward References: -// - -extern "C" void __ct__18JAU_JASInitializerFv(); -extern "C" void initJASystem__18JAU_JASInitializerFP12JKRSolidHeap(); -extern "C" void __ct__18JAU_JAIInitializerFv(); -extern "C" void initJAInterface__18JAU_JAIInitializerFv(); - -// -// External References: -// - -extern "C" void getThreadPointer__6JASDvdFv(); -extern "C" void createThread__6JASDvdFliUl(); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void newMemPool__17JASGenericMemPoolFUli(); -extern "C" void setupRootHeap__9JASKernelFP12JKRSolidHeapUl(); -extern "C" void setupAramHeap__9JASKernelFUlUl(); -extern "C" void func_802932E0(void* _this); -extern "C" void func_80293334(void* _this); -extern "C" void initSystem__13JASAramStreamFUlUl(); -extern "C" void setCurrentDir__16JASWaveArcLoaderFPCc(); -extern "C" void create__14JASAudioThreadFl(); -extern "C" void setDSPLevel__9JASDriverFf(); -extern "C" void setOutputMode__9JASDriverFUl(); -extern "C" void func_8029FC34(void* _this); -extern "C" void func_802A1268(void* _this); -extern "C" void func_802A1AF4(void* _this); -extern "C" void func_802A3E68(void* _this); -extern "C" void getFreeSize__7JKRHeapFv(); -extern "C" void enter__15JKRThreadSwitchFP9JKRThreadi(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern u8 data_80431AF4[16]; -extern "C" extern u8 data_80431B04[16 + 4 /* padding */]; -extern "C" extern u8 data_80434084[16 + 4 /* padding */]; -extern "C" extern u8 data_804340B0[16]; -extern "C" extern u8 data_804340CC[16 + 4 /* padding */]; -extern "C" extern u8 data_804340FC[16 + 4 /* padding */]; -extern "C" extern u8 data_80450B8C[4]; -extern "C" extern u8 struct_80451230[8]; -extern "C" extern u8 data_80451310[8]; -extern "C" extern u8 data_80451318[8]; -extern "C" extern u8 data_80451320[8]; -extern "C" extern u8 data_80451328[8]; -extern "C" u8 sManager__15JKRThreadSwitch[4]; -extern "C" u8 sAramObject__7JKRAram[4]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// - /* 802A4AD0-802A4B28 29F410 0058+00 0/0 1/1 0/0 .text __ct__18JAU_JASInitializerFv */ JAU_JASInitializer::JAU_JASInitializer() { field_0x00 = 0; @@ -89,17 +37,9 @@ JAU_JASInitializer::JAU_JASInitializer() { field_0x30 = NULL; } -/* ############################################################################################## */ -/* 80434110-8043411C 060E30 000C+00 2/2 0/0 0/0 .bss @757 */ -static u8 lit_757[12]; - -/* 8043411C-80434128 060E3C 000C+00 1/1 0/0 0/0 .bss @763 */ -static u8 lit_763[12]; - /* 802A4B28-802A4D3C 29F468 0214+00 0/0 1/1 0/0 .text * initJASystem__18JAU_JASInitializerFP12JKRSolidHeap */ -// extra destructors -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject_MultiThreaded<_> locations void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { if (JASAudioThread::getThreadPointer()) { @@ -114,9 +54,9 @@ void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { field_0x04 = JKRAram::getManager()->getAudioMemSize(); } JASKernel::setupAramHeap(field_0x00, field_0x04); - JASPoolAllocObject_MultiThreaded::newMemPool(field_0x1c); + JASTrack::newMemPool(field_0x1c); if (field_0x20 > 0) { - JASPoolAllocObject_MultiThreaded::newMemPool(field_0x20); + JASTrack::TChannelMgr::newMemPool(field_0x20); } JASDvd::createThread(field_0x0c,0x80,0x1000); JASAudioThread::create(field_0x10); @@ -144,11 +84,6 @@ void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { break; } } -#else -void JAU_JASInitializer::initJASystem(JKRSolidHeap* param_0) { - // NONMATCHING -} -#endif /* 802A4D3C-802A4D60 29F67C 0024+00 0/0 1/1 0/0 .text __ct__18JAU_JAIInitializerFv */ JAU_JAIInitializer::JAU_JAIInitializer() { @@ -158,45 +93,14 @@ JAU_JAIInitializer::JAU_JAIInitializer() { field_0xc = 16; } -/* ############################################################################################## */ -/* 80434128-80434134 060E48 000C+00 0/1 0/0 0/0 .bss @855 */ -#pragma push -#pragma force_active on -static u8 lit_855[12]; -#pragma pop - -/* 80434134-80434140 060E54 000C+00 0/1 0/0 0/0 .bss @859 */ -#pragma push -#pragma force_active on -static u8 lit_859[12]; -#pragma pop - -/* 80434140-8043414C 060E60 000C+00 0/1 0/0 0/0 .bss @863 */ -#pragma push -#pragma force_active on -static u8 lit_863[12]; -#pragma pop - -/* 8043414C-804341B8 060E6C 000C+60 0/1 0/0 0/0 .bss @867 */ -#pragma push -#pragma force_active on -static u8 lit_867[12 + 96 /* padding */]; -#pragma pop - /* 802A4D60-802A4EE8 29F6A0 0188+00 0/0 1/1 0/0 .text initJAInterface__18JAU_JAIInitializerFv */ -// extra destructors -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations void JAU_JAIInitializer::initJAInterface() { s32 r30 = JASDram->getFreeSize(); - JASPoolAllocObject::newMemPool(field_0x8); - JASPoolAllocObject::newMemPool(field_0x4); - JASPoolAllocObject::newMemPool(field_0x0); - JASPoolAllocObject::newMemPool(field_0xc); + JAIStream::newMemPool(field_0x8); + JAISeq::newMemPool(field_0x4); + JAISe::newMemPool(field_0x0); + JAISoundChild::newMemPool(field_0xc); s32 r29 = JASDram->getFreeSize(); //OSReport("JAU_JAIInitializer uses %d bytes\n", r30 - r29); } -#else -void JAU_JAIInitializer::initJAInterface() { - // NONMATCHING -} -#endif \ No newline at end of file diff --git a/src/JSystem/JAudio2/JAUSectionHeap.cpp b/src/JSystem/JAudio2/JAUSectionHeap.cpp index 0b46d4c236..ced71b66ca 100644 --- a/src/JSystem/JAudio2/JAUSectionHeap.cpp +++ b/src/JSystem/JAudio2/JAUSectionHeap.cpp @@ -4,9 +4,14 @@ // #include "JSystem/JAudio2/JAUSectionHeap.h" +#include "JSystem/JAudio2/JASBNKParser.h" +#include "JSystem/JAudio2/JASBankTable.h" +#include "JSystem/JAudio2/JASBasicWaveBank.h" #include "JSystem/JAudio2/JASCriticalSection.h" #include "JSystem/JAudio2/JASHeapCtrl.h" #include "JSystem/JAudio2/JASResArcLoader.h" +#include "JSystem/JAudio2/JASVoiceBank.h" +#include "JSystem/JAudio2/JASWSParser.h" #include "JSystem/JAudio2/JAUSeqCollection.h" #include "JSystem/JAudio2/JAUSoundInfo.h" #include "JSystem/JAudio2/JAUSoundTable.h" @@ -16,14 +21,6 @@ #include "dol2asm.h" #include "dolphin/dvd.h" -// -// Types: -// - -struct JASWSParser { - /* 80298FD8 */ static JASWaveBank* createWaveBank(void const*, JKRHeap*); -}; - namespace { class TPushCurrentHeap { public: @@ -54,153 +51,33 @@ namespace { field_0x8[i] = DVDConvertPathToEntrynum(stack_14.getFilePath(i)); } } - virtual s32 getStreamFileEntry(JAISoundID); - virtual ~TStreamDataMgr(); + virtual s32 getStreamFileEntry(JAISoundID id) { + u32 short_id = id.mId.mAdvancedId.mShortId; + if (short_id >= field_0x4) { + return -1; + } + return field_0x8[short_id]; + } + virtual ~TStreamDataMgr() {} bool isValid() { return field_0x4; } - s32 field_0x4; + u32 field_0x4; s32* field_0x8; }; } -// -// Forward References: -// - -extern "C" void __ct__Q210JAUSection12TSectionDataFv(); -extern "C" void resetRegisteredBankTables__Q210JAUSection12TSectionDataFv(); -extern "C" void resetRegisteredWaveBankTables__Q210JAUSection12TSectionDataFv(); -extern "C" void __ct__10JAUSectionFP14JAUSectionHeapUll(); -extern "C" void finishBuild__10JAUSectionFv(); -extern "C" void dispose__10JAUSectionFv(); -extern "C" void newSoundTable__10JAUSectionFPCvUlb(); -extern "C" void newSoundNameTable__10JAUSectionFPCvUlb(); -extern "C" void newStreamFileTable__10JAUSectionFPCvb(); -extern "C" void newSeSeqCollection__10JAUSectionFPCvUl(); -extern "C" void newStaticSeqDataBlock___10JAUSectionF10JAISoundIDUl(); -extern "C" void newStaticSeqData__10JAUSectionF10JAISoundIDPCvUl(); -extern "C" void newStaticSeqData__10JAUSectionF10JAISoundID(); -extern "C" void newCopy__10JAUSectionFPCvUll(); -extern "C" void newWaveBank__10JAUSectionFUlPCv(); -extern "C" void loadWaveArc__10JAUSectionFUlUl(); -extern "C" void newBank__10JAUSectionFPCvUl(); -extern "C" void newVoiceBank__10JAUSectionFUlUl(); -extern "C" void beginNewBankTable__10JAUSectionFUlUl(); -extern "C" void endNewBankTable__10JAUSectionFv(); -extern "C" void __ct__Q214JAUSectionHeap16TSectionHeapDataFv(); -extern "C" void setSeqDataArchive__14JAUSectionHeapFP10JKRArchive(); -extern "C" void loadDynamicSeq__14JAUSectionHeapF10JAISoundIDb(); -extern "C" void releaseIdleDynamicSeqDataBlock__14JAUSectionHeapFv(); -extern "C" static void JAUNewSectionHeap__FP12JKRSolidHeapb(); -extern "C" void JAUNewSectionHeap__Fb(); -extern "C" void __ct__14JAUSectionHeapFP12JKRSolidHeapbl(); -extern "C" void getOpenSection__14JAUSectionHeapFv(); -extern "C" void setSeqDataUser__14JAUSectionHeapFP14JAISeqDataUser(); -extern "C" void newDynamicSeqBlock__14JAUSectionHeapFUl(); -extern "C" void getSeqData__14JAUSectionHeapF10JAISoundIDP10JAISeqData(); -extern "C" int releaseSeqData__14JAUSectionHeapFv(); -extern "C" void __dt__14JAUSectionHeapFv(); -extern "C" static void func_802A6440(); -extern "C" void __dt__10JAUSectionFv(); -extern "C" void func_802A6574(); -extern "C" void func_802A65D4(void* _this, u32, bool); -extern "C" void func_802A6614(void* _this, u32); -extern "C" void func_802A6634(void* _this, u32); -extern "C" void func_802A665C(void* _this); -extern "C" static void func_802A6680(); -extern "C" static void func_802A6688(); -extern "C" static void func_802A6690(); -extern "C" static void func_802A6698(); -extern "C" extern char const* const JAUSectionHeap__stringBase0; - -// -// External References: -// - -extern "C" void getResSize__15JASResArcLoaderFPC10JKRArchiveUs(); -extern "C" void createWaveBank__11JASWSParserFPCvP7JKRHeap(); -extern "C" void createBank__12JASBNKParserFPCvP7JKRHeap(); -extern "C" void load__10JASWaveArcFP7JASHeap(); -extern "C" void __dt__13JAISeqDataMgrFv(); -extern "C" void __dt__16JAIStreamDataMgrFv(); -extern "C" void func_802A4A80(); -extern "C" void getBank__12JAUBankTableCFUl(); -extern "C" void init__16JAUSeqCollectionFPCv(); -extern "C" void __ct__27JAUSeqDataMgr_SeqCollectionFv(); -extern "C" void __ct__15JAUSeqDataBlockFv(); -extern "C" void __ct__23JAUDynamicSeqDataBlocksFv(); -extern "C" void setSeqDataArchive__23JAUDynamicSeqDataBlocksFP10JKRArchive(); -extern "C" void getSeqData__23JAUDynamicSeqDataBlocksF10JAISoundIDP14JAISeqDataUserP10JAISeqDatab(); -extern "C" void appendDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP15JAUSeqDataBlock(); -extern "C" void loadDynamicSeq__23JAUDynamicSeqDataBlocksF10JAISoundIDbP14JAISeqDataUser(); -extern "C" void releaseIdleDynamicSeqDataBlock__23JAUDynamicSeqDataBlocksFP14JAISeqDataUser(); -extern "C" void init__13JAUSoundTableFPCv(); -extern "C" void init__17JAUSoundNameTableFPCv(); -extern "C" void __ct__18JAUStreamFileTableFv(); -extern "C" void init__18JAUStreamFileTableFPCv(); -extern "C" void getNumFiles__18JAUStreamFileTableCFv(); -extern "C" void getFilePath__18JAUStreamFileTableCFi(); -extern "C" void becomeCurrentHeap__7JKRHeapFv(); -extern "C" void freeTail__7JKRHeapFv(); -extern "C" void getFreeSize__7JKRHeapFv(); -extern "C" void* __nw__FUl(); -extern "C" void* __nwa__FUl(); -extern "C" void* __nwa__FUli(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void create__12JKRSolidHeapFUlP7JKRHeapb(); -extern "C" void __ct__11JKRDisposerFv(); -extern "C" void __dt__11JKRDisposerFv(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void __dt__10JSUPtrListFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__11JASBankList[3 + 1 /* padding */]; -extern "C" extern void* __vt__7JASBank[5]; -extern "C" extern void* __vt__12JASVoiceBank[5 + 1 /* padding */]; -extern "C" extern void* __vt__13JAISeqDataMgr[6]; -extern "C" extern void* __vt__16JAIStreamDataMgr[4 + 1 /* padding */]; -extern "C" extern void* __vt__32JAUStreamDataMgr_StreamFileTable[4]; -extern "C" extern u8 data_80450B50[4]; -extern "C" extern u8 data_80450B54[4]; -extern "C" extern u8 data_80450B58[4]; -extern "C" extern u8 data_80450B90[4 + 4 /* padding */]; -extern "C" extern u8 data_80450CC0[4 + 4 /* padding */]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// - /* 802A4EE8-802A4F68 29F828 0080+00 1/1 0/0 0/0 .text __ct__Q210JAUSection12TSectionDataFv */ -// wild destructors appeared! -#ifdef NONMATCHING JAUSection::TSectionData::TSectionData() { resetRegisteredWaveBankTables(); resetRegisteredBankTables(); - field_0x84 = 0; - field_0x88 = 0; - field_0x80 = 0; + mBstDst = NULL; + mBstnDst = NULL; + field_0x80 = NULL; field_0xa0 = 0; field_0x9c = 0; } -#else -JAUSection::TSectionData::TSectionData() { - // NONMATCHING -} -#endif -/* ############################################################################################## */ /* 8039B950-8039B950 027FB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on @@ -209,97 +86,30 @@ SECTION_DEAD static char const* const stringBase_8039B950 = "index out of range /* 802A4F68-802A4FE4 29F8A8 007C+00 1/1 0/0 0/0 .text * resetRegisteredBankTables__Q210JAUSection12TSectionDataFv */ -// position of std::__bitset_base<8>::reset -#ifdef NONMATCHING void JAUSection::TSectionData::resetRegisteredBankTables() { for (u32 i = 0; i < 255; i++) { registeredBankTables.reset(i); } } -#else -void JAUSection::TSectionData::resetRegisteredBankTables() { - // NONMATCHING -} -#endif /* 802A4FE4-802A5060 29F924 007C+00 1/1 0/0 0/0 .text * resetRegisteredWaveBankTables__Q210JAUSection12TSectionDataFv */ -// position of std::__bitset_base<8>::reset -#ifdef NONMATCHING void JAUSection::TSectionData::resetRegisteredWaveBankTables() { for (u32 i = 0; i < 255; i++) { registeredWaveBankTables.reset(i); } } -#else -void JAUSection::TSectionData::resetRegisteredWaveBankTables() { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 803C9AC0-803C9AF4 026BE0 0034+00 2/2 0/0 0/0 .data __vt__14JAUSectionHeap */ -SECTION_DATA extern void* __vt__14JAUSectionHeap[13] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14JAUSectionHeapFv, - (void*)dispose__10JAUSectionFv, - (void*)NULL, - (void*)NULL, - (void*)func_802A6698, - (void*)func_802A6690, - (void*)func_802A6688, - (void*)func_802A6680, - (void*)setSeqDataUser__14JAUSectionHeapFP14JAISeqDataUser, - (void*)getSeqData__14JAUSectionHeapF10JAISoundIDP10JAISeqData, - (void*)releaseSeqData__14JAUSectionHeapFv, -}; - -/* 803C9AF4-803C9B08 026C14 0014+00 1/1 0/0 0/0 .data __vt__16JAUBankTableLink */ -SECTION_DATA extern void* __vt__16JAUBankTableLink[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)getBank__12JAUBankTableCFUl, -}; - -/* 803C9B08-803C9B14 026C28 000C+00 1/1 0/0 0/0 .data __vt__12JAUBankTable */ -SECTION_DATA extern void* __vt__12JAUBankTable[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)getBank__12JAUBankTableCFUl, -}; - -/* 803C9B14-803C9B24 026C34 0010+00 2/2 0/0 0/0 .data - * __vt__Q228@unnamed@JAUSectionHeap_cpp@14TStreamDataMgr */ -SECTION_DATA extern void* data_803C9B14[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)func_802A6440, - (void*)func_802A6574, -}; - -/* 803C9B24-803C9B38 026C44 0010+04 3/3 0/0 0/0 .data __vt__10JAUSection */ -SECTION_DATA extern void* __vt__10JAUSection[4 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10JAUSectionFv, - (void*)dispose__10JAUSectionFv, - /* padding */ - NULL, -}; /* 802A5060-802A50F8 29F9A0 0098+00 1/1 0/0 0/0 .text __ct__10JAUSectionFP14JAUSectionHeapUll */ -// NONMATCHING - JAUSection inheritance -/* JAUSection::JAUSection(JAUSectionHeap* param_0, u32 param_1, s32 param_2) : JSULink(this), field_0x28(param_1), sectionHeap_(param_0) { +JAUSection::JAUSection(JAUSectionHeap* param_0, u32 param_1, s32 param_2) + : JSULink(this), field_0x28(param_1), sectionHeap_(param_0) { buildingBankTable_ = NULL; field_0x2c = 1; data_.field_0x98 = param_2; if (this != sectionHeap_) { data_.field_0x00.setSeqDataArchive(sectionHeap_->sectionHeapData_.seqDataBlocks.getSeqDataArchive()); } -} */ +} /* 802A50F8-802A5160 29FA38 0068+00 0/0 1/1 0/0 .text finishBuild__10JAUSectionFv */ void JAUSection::finishBuild() { @@ -329,8 +139,7 @@ void JAUSection::dispose() { /* 802A51E4-802A52A0 29FB24 00BC+00 0/0 1/1 0/0 .text newSoundTable__10JAUSectionFPCvUlb */ -// regalloc, stackalloc -#ifdef NONMATCHING +// NONMATCHING regalloc JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool param_2) { JUT_ASSERT(285, isOpen()); JUT_ASSERT(286, isBuilding()); @@ -346,21 +155,15 @@ JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool para } JAUSoundTable* soundTable = new JAUSoundTable(param_2); JUT_ASSERT(299, soundTable); - soundTable->init(bst); + soundTable->init(bstDst); sectionHeap_->sectionHeapData_.soundTable = soundTable; data_.mBstDst = bstDst; } return sectionHeap_->sectionHeapData_.soundTable; } -#else -JAUSoundTable* JAUSection::newSoundTable(void const* param_0, u32 param_1, bool param_2) { - // NONMATCHING -} -#endif /* 802A52A0-802A535C 29FBE0 00BC+00 0/0 1/1 0/0 .text newSoundNameTable__10JAUSectionFPCvUlb */ -// regalloc, stackalloc -#ifdef NONMATCHING +// NONMATCHING regalloc JAUSoundNameTable* JAUSection::newSoundNameTable(void const* bstn, u32 param_1, bool param_2) { JUT_ASSERT(315, isOpen()); JUT_ASSERT(316, isBuilding()); @@ -382,15 +185,8 @@ JAUSoundNameTable* JAUSection::newSoundNameTable(void const* bstn, u32 param_1, } return sectionHeap_->sectionHeapData_.soundNameTable; } -#else -JAUSoundNameTable* JAUSection::newSoundNameTable(void const* param_0, u32 param_1, bool param_2) { - // NONMATCHING -} -#endif /* 802A535C-802A5500 29FC9C 01A4+00 0/0 1/1 0/0 .text newStreamFileTable__10JAUSectionFPCvb */ -// JAUStreamFileTable::isValid() signed -#ifdef NONMATCHING JAIStreamDataMgr* JAUSection::newStreamFileTable(void const* param_0, bool param_1) { JUT_ASSERT(345, asSectionHeap() == this); JUT_ASSERT(346, isOpen()); @@ -415,11 +211,6 @@ JAIStreamDataMgr* JAUSection::newStreamFileTable(void const* param_0, bool param } return sectionHeap_->sectionHeapData_.streamDataMgr_; } -#else -JAIStreamDataMgr* JAUSection::newStreamFileTable(void const* param_0, bool param_1) { - // NONMATCHING -} -#endif /* 802A5500-802A5598 29FE40 0098+00 0/0 1/1 0/0 .text newSeSeqCollection__10JAUSectionFPCvUl */ JAISeqDataMgr* JAUSection::newSeSeqCollection(void const* bsc, u32 param_1) { @@ -524,8 +315,6 @@ SECTION_DEAD static char const* const pad_8039B9B9 = "\0\0\0\0\0\0"; #pragma pop /* 802A5854-802A5948 2A0194 00F4+00 0/0 1/1 0/0 .text newWaveBank__10JAUSectionFUlPCv */ -// position of std::__bitset_base<8>::set -#ifdef NONMATCHING JASWaveBank* JAUSection::newWaveBank(u32 bank_no, void const* param_1) { JUT_ASSERT(528, isOpen()); JUT_ASSERT(529, isBuilding()); @@ -542,15 +331,8 @@ JASWaveBank* JAUSection::newWaveBank(u32 bank_no, void const* param_1) { return NULL; } -#else -JASWaveBank* JAUSection::newWaveBank(u32 param_0, void const* param_1) { - // NONMATCHING -} -#endif /* 802A5948-802A5A50 2A0288 0108+00 0/0 1/1 0/0 .text loadWaveArc__10JAUSectionFUlUl */ -// position of std::__bitset_base<8>::test -#ifdef NONMATCHING bool JAUSection::loadWaveArc(u32 param_0, u32 param_1) { if (data_.registeredWaveBankTables.test(param_0)) { JASWaveBank* waveBank = sectionHeap_->getWaveBankTable().getWaveBank(param_0); @@ -565,15 +347,8 @@ bool JAUSection::loadWaveArc(u32 param_0, u32 param_1) { } return false; } -#else -bool JAUSection::loadWaveArc(u32 param_0, u32 param_1) { - // NONMATCHING -} -#endif /* 802A5A50-802A5B84 2A0390 0134+00 0/0 1/1 0/0 .text newBank__10JAUSectionFPCvUl */ -// vtable order JAUBankTableLink -#ifdef NONMATCHING JASBank* JAUSection::newBank(void const* param_0, u32 param_1) { JUT_ASSERT(647, isOpen()); JUT_ASSERT(648, isBuilding()); @@ -598,15 +373,9 @@ JASBank* JAUSection::newBank(void const* param_0, u32 param_1) { } return 0; } -#else -JASBank* JAUSection::newBank(void const* param_0, u32 param_1) { - // NONMATCHING -} -#endif /* 802A5B84-802A5CAC 2A04C4 0128+00 0/0 1/1 0/0 .text newVoiceBank__10JAUSectionFUlUl */ -// regalloc -#ifdef NONMATCHING +// NONMATCHING regalloc JASVoiceBank* JAUSection::newVoiceBank(u32 bank_no, u32 param_1) { JUT_ASSERT(685, isOpen()); JUT_ASSERT(686, isBuilding()); @@ -628,15 +397,8 @@ JASVoiceBank* JAUSection::newVoiceBank(u32 bank_no, u32 param_1) { } return NULL; } -#else -JASVoiceBank* JAUSection::newVoiceBank(u32 param_0, u32 param_1) { - // NONMATCHING -} -#endif /* 802A5CAC-802A5D9C 2A05EC 00F0+00 0/0 1/1 0/0 .text beginNewBankTable__10JAUSectionFUlUl */ -// JAUBankTable inheritance -#ifdef NONMATCHING bool JAUSection::beginNewBankTable(u32 param_0, u32 param_1) { JUT_ASSERT(714, isOpen()); JUT_ASSERT(715, isBuilding()); @@ -658,11 +420,6 @@ bool JAUSection::beginNewBankTable(u32 param_0, u32 param_1) { } return bankTableLink; } -#else -bool JAUSection::beginNewBankTable(u32 param_0, u32 param_1) { - // NONMATCHING -} -#endif /* 802A5D9C-802A5DF4 2A06DC 0058+00 0/0 1/1 0/0 .text endNewBankTable__10JAUSectionFv */ JAUBankTable* JAUSection::endNewBankTable() { @@ -728,11 +485,11 @@ JAUSectionHeap* JAUNewSectionHeap(bool param_0) { } /* 802A5FE0-802A6094 2A0920 00B4+00 1/1 0/0 0/0 .text __ct__14JAUSectionHeapFP12JKRSolidHeapbl */ -// NONMATCHING - JAUSectionHeap inheritance -/* JAUSectionHeap::JAUSectionHeap(JKRSolidHeap* param_0, bool param_1, s32 param_2) : JAUSection(this, 0, param_2), JASGlobalInstance(param_1), mHeap(param_0) { +JAUSectionHeap::JAUSectionHeap(JKRSolidHeap* param_0, bool param_1, s32 param_2) + : JAUSection(this, 0, param_2), JASGlobalInstance(param_1), mHeap(param_0) { field_0xe4 = 0; mSectionList.append(this); -} */ +} /* 802A6094-802A60A0 2A09D4 000C+00 0/0 1/1 0/0 .text getOpenSection__14JAUSectionHeapFv */ @@ -752,7 +509,7 @@ bool JAUSectionHeap::newDynamicSeqBlock(u32 size) { /* JUT_ASSERT(937, isOpen()); JUT_ASSERT(938, isBuilding()); JUT_ASSERT(939, sectionHeap_ == this); */ - TPushCurrentHeap push(base1.getHeap_()); + TPushCurrentHeap push(getHeap_()); JAUSeqDataBlock * seqDataBlock = new JAUSeqDataBlock(); if (!seqDataBlock) { return false; @@ -769,7 +526,7 @@ bool JAUSectionHeap::newDynamicSeqBlock(u32 size) { seqDataBlock->field_0x14.size = size; seqDataBlock->field_0x10.setAnonymous(); JASCriticalSection cs; - if (base1.sectionHeap_->sectionHeapData_.seqDataBlocks.appendDynamicSeqDataBlock(seqDataBlock)) { + if (sectionHeap_->sectionHeapData_.seqDataBlocks.appendDynamicSeqDataBlock(seqDataBlock)) { return true; } return false; @@ -777,15 +534,15 @@ bool JAUSectionHeap::newDynamicSeqBlock(u32 size) { /* 802A61D0-802A6270 2A0B10 00A0+00 2/1 0/0 0/0 .text * getSeqData__14JAUSectionHeapF10JAISoundIDP10JAISeqData */ -s32 JAUSectionHeap::getSeqData(JAISoundID param_0, JAISeqData* param_1) { +JAISeqDataMgr::SeqDataReturnValue JAUSectionHeap::getSeqData(JAISoundID param_0, JAISeqData* param_1) { for (JSULink * link = mSectionList.getFirst(); link; link = link->getNext()) { s32 result = link->getObject()->data_.field_0x00.getSeqData(param_0, sectionHeapData_.seqDataUser, param_1, false); // JUT_ASSERT(994, result != JAI_ASYNC_RESULT_RETRY); if (result == 2) { - return 2; + return JAISeqDataMgr::SeqDataReturnValue_2; } } - return sectionHeapData_.seqDataBlocks.getSeqData(param_0, sectionHeapData_.seqDataUser, param_1, true); + return (SeqDataReturnValue)sectionHeapData_.seqDataBlocks.getSeqData(param_0, sectionHeapData_.seqDataUser, param_1, true); } /* 802A6270-802A6278 2A0BB0 0008+00 2/1 0/0 0/0 .text releaseSeqData__14JAUSectionHeapFv @@ -793,91 +550,3 @@ s32 JAUSectionHeap::getSeqData(JAISoundID param_0, JAISeqData* param_1) { int JAUSectionHeap::releaseSeqData() { return 0; } - -/* 802A6278-802A6440 2A0BB8 01C8+00 2/1 0/0 0/0 .text __dt__14JAUSectionHeapFv */ -// JAUSectionHeap inheritance -#ifdef NONMATCHING -JAUSectionHeap::~JAUSectionHeap() {} -#else -JAUSectionHeap::~JAUSectionHeap() { - // NONMATCHING -} -#endif - -/* 802A6440-802A6468 2A0D80 0028+00 1/0 0/0 0/0 .text - * getStreamFileEntry__Q228@unnamed@JAUSectionHeap_cpp@14TStreamDataMgrF10JAISoundID */ -static void func_802A6440() { - // NONMATCHING -} - -/* 802A6468-802A6574 2A0DA8 010C+00 1/0 0/0 0/0 .text __dt__10JAUSectionFv */ -JAUSection::~JAUSection() { - // NONMATCHING -} - -/* 802A6574-802A65D4 2A0EB4 0060+00 1/0 0/0 0/0 .text - * __dt__Q228@unnamed@JAUSectionHeap_cpp@14TStreamDataMgrFv */ -void func_802A6574() { - // NONMATCHING -} - -/* 802A65D4-802A6614 2A0F14 0040+00 3/3 0/0 0/0 .text set__Q23std16__bitset_base<8>FUlb - */ -extern "C" void func_802A65D4(void* _this, u32 param_0, bool param_1) { - // NONMATCHING -} - -/* 802A6614-802A6634 2A0F54 0020+00 2/2 0/0 0/0 .text reset__Q23std16__bitset_base<8>FUl - */ -extern "C" void func_802A6614(void* _this, u32 param_0) { - // NONMATCHING -} - -/* 802A6634-802A665C 2A0F74 0028+00 1/1 0/0 0/0 .text test__Q23std16__bitset_base<8>CFUl - */ -extern "C" void func_802A6634(void* _this, u32 param_0) /* const */ { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 804507D0-804507D8 000250 0004+04 1/1 0/0 0/0 .sdata @2588 */ -SECTION_SDATA static u8 lit_2588[4 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 802A665C-802A6680 2A0F9C 0024+00 1/1 0/0 0/0 .text __ct__Q23std16__bitset_base<8>Fv */ -extern "C" void func_802A665C(void* _this) { - // NONMATCHING -} - -/* 802A6680-802A6688 2A0FC0 0008+00 1/0 0/0 0/0 .text - * @220@setSeqDataUser__14JAUSectionHeapFP14JAISeqDataUser */ -static void func_802A6680() { - // NONMATCHING -} - -/* 802A6688-802A6690 2A0FC8 0008+00 1/0 0/0 0/0 .text @220@releaseSeqData__14JAUSectionHeapFv */ -static void func_802A6688() { - // NONMATCHING -} - -/* 802A6690-802A6698 2A0FD0 0008+00 1/0 0/0 0/0 .text - * @220@getSeqData__14JAUSectionHeapF10JAISoundIDP10JAISeqData */ -static void func_802A6690() { - // NONMATCHING -} - -/* 802A6698-802A66A0 2A0FD8 0008+00 1/0 0/0 0/0 .text @220@__dt__14JAUSectionHeapFv */ -static void func_802A6698() { - // NONMATCHING -} - -/* 8039B950-8039B950 027FB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file diff --git a/src/JSystem/JAudio2/dspproc.cpp b/src/JSystem/JAudio2/dspproc.cpp index c60fc66183..408251ba3a 100644 --- a/src/JSystem/JAudio2/dspproc.cpp +++ b/src/JSystem/JAudio2/dspproc.cpp @@ -4,18 +4,8 @@ // #include "JSystem/JAudio2/dspproc.h" - -// -// Forward References: -// - -// -// External References: -// - -// -// Declarations: -// +#include "JSystem/JAudio2/dsptask.h" +#include "JSystem/JAudio2/JASDSPInterface.h" /* 8029E4E0-8029E528 298E20 0048+00 0/0 1/1 0/0 .text DSPReleaseHalt2__FUl */ void DSPReleaseHalt2(u32 msg) { @@ -26,7 +16,6 @@ void DSPReleaseHalt2(u32 msg) { DSPSendCommands2(msgs,0,NULL); } -/* ############################################################################################## */ /* 804512F8-80451300 0007F8 0004+04 2/2 0/0 0/0 .sbss flag */ static volatile BOOL flag; @@ -81,4 +70,4 @@ void DsyncFrame4ch(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param msgs[3] = param_3; msgs[4] = param_4; DSPSendCommands2(msgs, 5, 0); -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/dsptask.cpp b/src/JSystem/JAudio2/dsptask.cpp index 70a93cab98..3ba233405a 100644 --- a/src/JSystem/JAudio2/dsptask.cpp +++ b/src/JSystem/JAudio2/dsptask.cpp @@ -5,7 +5,6 @@ #include "JSystem/JAudio2/dsptask.h" #include "JSystem/JAudio2/osdsp.h" -#include "dolphin/os.h" // // Forward References: @@ -641,4 +640,4 @@ void DspFinishWork(u16 param_0) { taskreadp = (taskreadp + 1) & 0xf; } -} \ No newline at end of file +} diff --git a/src/JSystem/JAudio2/osdsp_task.cpp b/src/JSystem/JAudio2/osdsp_task.cpp index fe4535e1fb..7d4cb65c6a 100644 --- a/src/JSystem/JAudio2/osdsp_task.cpp +++ b/src/JSystem/JAudio2/osdsp_task.cpp @@ -8,29 +8,13 @@ #include "dolphin/dsp/dsp_task.h" #include "dolphin/os/OSContext.h" -// -// Forward References: -// - static void Dsp_Update_Request(); -// -// External References: -// - -// -// Declarations: -// - -/* ############################################################################################## */ /* 80451308-8045130C -00001 0004+00 6/6 0/0 0/0 .sbss None */ /* 80451308 0001+00 data_80451308 None */ /* 80451309 0003+00 data_80451309 None */ - static vu8 struct_80451308; static u8 struct_80451309; -static u8 struct_8045130a; -static u8 struct_8045130b; /* 8045130C-80451310 00080C 0004+00 1/1 2/2 0/0 .sbss DSP_prior_task */ DSPTaskInfo* DSP_prior_task; @@ -129,7 +113,6 @@ void __DSPHandler(__OSInterrupt interrupt, OSContext* context) { OSSetCurrentContext(context); } -/* ############################################################################################## */ /* 80434060-80434078 060D80 0014+04 3/3 0/0 0/0 .bss sync_stack */ static u32 sync_stack[5]; @@ -137,9 +120,9 @@ static u32 sync_stack[5]; void DsyncFrame2(u32 param_0, u32 param_1, u32 param_2) { if (struct_80451308 != 1) { sync_stack[0] = param_0; + struct_80451309 = 1; sync_stack[1] = param_1; sync_stack[2] = param_2; - struct_80451309 = 1; return; } DsyncFrame2ch(param_0, param_1, param_2); @@ -150,11 +133,11 @@ void DsyncFrame2(u32 param_0, u32 param_1, u32 param_2) { static void DsyncFrame3(u32 param_0, u32 param_1, u32 param_2, u32 param_3, u32 param_4) { if (struct_80451308 != 1) { sync_stack[0] = param_0; + struct_80451309 = 2; sync_stack[1] = param_1; sync_stack[2] = param_2; sync_stack[3] = param_3; sync_stack[4] = param_4; - struct_80451309 = 2; return; } DsyncFrame4ch(param_0, param_1, param_2, param_3, param_4); @@ -197,4 +180,4 @@ u8 data_80451320[8]; /* 80451328-80451330 000828 0008+00 0/0 3/3 0/0 .sbss None */ // init$localstatic4$getMemPool__30JASPoolAllocObject<9JAIStream>Fv -u8 data_80451328[8]; \ No newline at end of file +u8 data_80451328[8]; diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h index 64646ad14f..5062fdd6df 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/algorithm.h @@ -38,7 +38,7 @@ void __fill(ForwardIt first, ForwardIt last, const T& value, std::random_access_ */ template -void fill(ForwardIt first, ForwardIt last, const T& value) { +inline void fill(ForwardIt first, ForwardIt last, const T& value) { for (; first != last; ++first){ *first = value; } @@ -63,4 +63,4 @@ inline BidirIt2 copy_backward(BidirIt1 first, BidirIt1 last, BidirIt2 d_last) { } // namespace std -#endif \ No newline at end of file +#endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h index 2bb7c3219c..4417a93b6c 100644 --- a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/bitset.h @@ -24,6 +24,18 @@ private: size_t data[N]; }; +template<> class __bitset_base<1> { +public: + __bitset_base() { data = 0; } + + bool test(size_t pos) const { return data & (1 << pos); } + bool any() const; + void set(size_t pos, bool val) { data |= (1 << pos); } + void reset(size_t pos) { data &= ~(1 << pos); } +private: + size_t data; +}; + template __bitset_base::__bitset_base() { std::fill(data, data + N, 0); } @@ -78,4 +90,4 @@ public: }; } // namespace std -#endif \ No newline at end of file +#endif diff --git a/src/Z2AudioLib/Z2Audience.cpp b/src/Z2AudioLib/Z2Audience.cpp index 3a2e65e21b..a6306be42e 100644 --- a/src/Z2AudioLib/Z2Audience.cpp +++ b/src/Z2AudioLib/Z2Audience.cpp @@ -6,131 +6,12 @@ #include "Z2AudioLib/Z2Audience.h" #include "Z2AudioLib/Z2SoundInfo.h" #include "Z2AudioLib/Z2Calc.h" +#include "Z2AudioLib/Z2Param.h" #include "JSystem/JAudio2/JAISound.h" #include "JSystem/JKernel/JKRHeap.h" #include "JSystem/JMath/JMATrigonometric.h" #include "JSystem/JGeometry.h" #include "JSystem/J3DU/J3DUD.h" -#include "dol2asm.h" - -// -// Types: -// - -struct Z2Param { - static f32 DISTANCE_MAX; - static f32 MAX_VOLUME_DISTANCE; - static f32 DOLBY_CENTER_VALUE; - static f32 DOLBY_FLONT_DISTANCE_MAX; - static f32 DOLBY_BEHIND_DISTANCE_MAX; - static f32 DISTANCE_FX_PARAM; - static f32 SONIC_SPEED; - static f32 MIN_DISTANCE_VOLUME; -}; - -// -// Forward References: -// - -extern "C" void func_802BBCDC(); -extern "C" void func_802BBD18(); -extern "C" void func_802BBD94(); -extern "C" void __ct__16Z2AudibleChannelFv(); -extern "C" void calc__9Z2AudibleFv(); -extern "C" void getOuterParams__9Z2AudibleFi(); -extern "C" void setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi(); -extern "C" void getChannel__9Z2AudibleFi(); -extern "C" void getDistVolBit__9Z2AudibleFv(); -extern "C" void __ct__19Z2Audience3DSettingFv(); -extern "C" void init__19Z2Audience3DSettingFv(); -extern "C" void initVolumeDist__19Z2Audience3DSettingFv(); -extern "C" void updateVolumeDist__19Z2Audience3DSettingFf(); -extern "C" void initDolbyDist__19Z2Audience3DSettingFv(); -extern "C" void updateDolbyDist__19Z2Audience3DSettingFff(); -extern "C" void __ct__13Z2AudioCameraFv(); -extern "C" void init__13Z2AudioCameraFv(); -extern "C" void setCameraState__13Z2AudioCameraFPA4_CfR3Vecb(); -extern "C" void setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb(); -extern "C" void convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei(); -extern "C" void convertAbsToRel__13Z2AudioCameraCFR3VecP3Vec(); -extern "C" void isInSight__13Z2AudioCameraCFR3Vec(); -extern "C" void __ct__9Z2SpotMicFv(); -extern "C" void clearMicState__9Z2SpotMicFi(); -extern "C" void calcVolumeFactor__9Z2SpotMicFi(); -extern "C" void setMicState__9Z2SpotMicFP13Z2AudioCamerai(); -extern "C" void calcMicDist__9Z2SpotMicFP9Z2Audible(); -extern "C" void calcMicPriority__9Z2SpotMicFf(); -extern "C" void calcMicVolume__9Z2SpotMicFfif(); -extern "C" void __ct__10Z2AudienceFv(); -extern "C" void __dt__10Z2AudienceFv(); -extern "C" void func_802BD288(void* _this); -extern "C" void setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib(); -extern "C" void func_802BD338(); -extern "C" void deleteAudible__10Z2AudienceFP10JAIAudible(); -extern "C" void __dt__9Z2AudibleFv(); -extern "C" void calcPriority__10Z2AudienceFP10JAIAudible(); -extern "C" void calcOffMicSound__10Z2AudienceFf(); -extern "C" void mixChannelOut__10Z2AudienceFRC14JASSoundParamsP10JAIAudiblei(); -extern "C" void setTargetVolume__10Z2AudienceFfi(); -extern "C" void convertAbsToRel__10Z2AudienceFR3VecP3Veci(); -extern "C" void calcRelPosVolume__10Z2AudienceFRC3Vecfi(); -extern "C" void calcRelPosPan__10Z2AudienceFRC3Veci(); -extern "C" void calcRelPosDolby__10Z2AudienceFRC3Veci(); -extern "C" void calcVolume___10Z2AudienceCFfi(); -extern "C" void calcDeltaPriority___10Z2AudienceCFfib(); -extern "C" void func_802BDCB0(); -extern "C" void calcFxMix___10Z2AudienceCFfi(); -extern "C" void calcPitch___10Z2AudienceCFP16Z2AudibleChannelPC9Z2AudiblePC13Z2AudioCamera(); -extern "C" void getMaxChannels__10Z2AudienceFv(); -extern "C" void __sinit_Z2Audience_cpp(); -extern "C" extern u8 struct_80451358[8]; - -// -// External References: -// - -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void clamp__14JASSoundParamsFv(); -extern "C" void combine__14JASSoundParamsFRC14JASSoundParamsRC14JASSoundParams(); -extern "C" void __dt__10JAIAudibleFv(); -extern "C" void __dt__11JAIAudienceFv(); -extern "C" void linearTransform__6Z2CalcFfffffb(); -extern "C" void getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign(); -extern "C" void getAudibleSwFull__11Z2SoundInfoF10JAISoundID(); -extern "C" void __dl__FPv(); -extern "C" void __register_global_object(); -extern "C" void __construct_array(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__10JAIAudible[5 + 1 /* padding */]; -extern "C" extern void* __vt__11JAIAudience[8]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 DISTANCE_MAX__7Z2Param; -extern "C" f32 MAX_VOLUME_DISTANCE__7Z2Param; -extern "C" f32 DOLBY_CENTER_VALUE__7Z2Param; -extern "C" f32 DOLBY_FLONT_DISTANCE_MAX__7Z2Param; -extern "C" f32 DOLBY_BEHIND_DISTANCE_MAX__7Z2Param; -extern "C" f32 DISTANCE_FX_PARAM__7Z2Param; -extern "C" f32 SONIC_SPEED__7Z2Param; -extern "C" extern u8 data_80450B4C[4]; -extern "C" f32 MIN_DISTANCE_VOLUME__7Z2Param; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// /* 802BBCDC-802BBD18 2B661C 003C+00 1/1 0/0 0/0 .text * calc__15Z2AudibleAbsPosFRCQ29JGeometry8TVec3 */ @@ -139,15 +20,6 @@ void Z2AudibleAbsPos::calc(JGeometry::TVec3 const& param_0) { field_0x0.set(param_0); } -/* ############################################################################################## */ -/* 80455AA0-80455AA4 0040A0 0004+00 19/19 0/0 0/0 .sdata2 @848 */ -SECTION_SDATA2 static u8 lit_848[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - /* 802BBD18-802BBD94 2B6658 007C+00 1/1 0/0 0/0 .text * init__15Z2AudibleAbsPosFPQ29JGeometry8TVec3RCQ29JGeometry8TVec3PCQ29JGeometry8TVec3 */ void Z2AudibleAbsPos::init(JGeometry::TVec3* param_0, JGeometry::TVec3 const& param_1, @@ -162,40 +34,6 @@ void Z2AudibleAbsPos::init(JGeometry::TVec3* param_0, JGeometry::TVec3 field_0xc.zero(); } - -/* ############################################################################################## */ -/* 803CAC98-803CACB8 027DB8 0020+00 2/2 0/0 0/0 .data __vt__10Z2Audience */ -SECTION_DATA extern void* __vt__10Z2Audience[8] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10Z2AudienceFv, - (void*)func_802BD338, - (void*)getMaxChannels__10Z2AudienceFv, - (void*)deleteAudible__10Z2AudienceFP10JAIAudible, - (void*)calcPriority__10Z2AudienceFP10JAIAudible, - (void*)mixChannelOut__10Z2AudienceFRC14JASSoundParamsP10JAIAudiblei, -}; - -/* 803CACB8-803CACD0 027DD8 0014+04 2/2 0/0 0/0 .data __vt__9Z2Audible */ -SECTION_DATA extern void* __vt__9Z2Audible[5 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__9Z2AudibleFv, - (void*)getOuterParams__9Z2AudibleFi, - (void*)calc__9Z2AudibleFv, - /* padding */ - NULL, -}; - -/* 80455AA4-80455AA8 0040A4 0004+00 16/16 0/0 0/0 .sdata2 @894 */ -SECTION_SDATA2 static f32 lit_894 = 1.0f; - -/* 80455AA8-80455AAC 0040A8 0004+00 10/10 0/0 0/0 .sdata2 @895 */ -SECTION_SDATA2 static f32 lit_895 = 0.5f; - -/* 80455AAC-80455AB0 0040AC 0004+00 5/5 0/0 0/0 .sdata2 @896 */ -SECTION_SDATA2 static f32 lit_896 = -1.0f; - /* 802BBD94-802BBE74 2B66D4 00E0+00 1/1 0/0 0/0 .text * __ct__9Z2AudibleFRCQ29JGeometry8TVec3PCQ29JGeometry8TVec3Ulb */ Z2Audible::Z2Audible(JGeometry::TVec3 const& param_0, JGeometry::TVec3 const* param_1, @@ -230,39 +68,9 @@ JASSoundParams* Z2Audible::getOuterParams(int param_0) { return &field_0x2c[param_0].field_0x0; } -/* ############################################################################################## */ -/* 80455AB0-80455AB4 0040B0 0004+00 4/4 0/0 0/0 .sdata2 @998 */ -SECTION_SDATA2 static f32 lit_998 = 3.0f; - -/* 80455AB4-80455AB8 0040B4 0004+00 1/1 0/0 0/0 .sdata2 @999 */ -SECTION_SDATA2 static f32 lit_999 = 15.0f; - -/* 80455AB8-80455ABC 0040B8 0004+00 4/4 0/0 0/0 .sdata2 @1000 */ -SECTION_SDATA2 static f32 lit_1000 = 3.0f / 10.0f; - -/* 80455ABC-80455AC0 0040BC 0004+00 1/1 0/0 0/0 .sdata2 @1001 */ -SECTION_SDATA2 static f32 lit_1001 = 0.0010000000474974513f; - -/* 80455AC0-80455AC4 0040C0 0004+00 2/2 0/0 0/0 .sdata2 @1002 */ -SECTION_SDATA2 static f32 lit_1002 = 1.0f / 10.0f; - -/* 80455AC4-80455AC8 0040C4 0004+00 1/1 0/0 0/0 .sdata2 @1003 */ -SECTION_SDATA2 static f32 lit_1003 = 1.0f / 30.0f; - -/* 80455AC8-80455AD0 0040C8 0004+04 1/1 0/0 0/0 .sdata2 @1004 */ -SECTION_SDATA2 static f32 lit_1004[1 + 1 /* padding */] = { - 1.0f / 3.0f, - /* padding */ - 0.0f, -}; - -/* 80455AD0-80455AD8 0040D0 0008+00 4/4 0/0 0/0 .sdata2 @1008 */ -SECTION_SDATA2 static f64 lit_1008 = 4503599627370496.0 /* cast u32 to float */; - /* 802BBEE4-802BC204 2B6824 0320+00 1/1 0/0 0/0 .text * setOuterParams__9Z2AudibleFRC14JASSoundParamsRC14JASSoundParamsi */ -// regalloc -#ifdef NONMATCHING +// NONMATCHING regalloc void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1, int param_2) { Z2AudibleChannel* this_01 = &field_0x2c[param_2]; @@ -290,8 +98,8 @@ void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams con f32 dVar9 = param_1.mVolume * local_b8.length(); f32 dVar10 = 1.0f; f32 dVar12 = Z2Calc::linearTransform(iStack_94, 0.0f, 15.0f, 1.0f, 0.3f, true); - if (param_1.mVolume > dVar12 && dVar9 > 0.0010000000474974513f) { - dVar10 = Z2Calc::getParamByExp(dVar9, 0.3f, 0.0010000000474974513f, 0.1f, dVar12, 1.0f, + if (param_1.mVolume > dVar12 && dVar9 > 0.001f) { + dVar10 = Z2Calc::getParamByExp(dVar9, 0.3f, 0.001f, 0.1f, dVar12, 1.0f, Z2Calc::CURVE_SIGN_1); if (dVar10 < 0.0f) { dVar10 = 0.0f; @@ -334,12 +142,6 @@ void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams con this_01->mPan = local_b0.mPan; this_01->mDolby = local_b0.mDolby; } -#else -void Z2Audible::setOuterParams(JASSoundParams const& param_0, JASSoundParams const& param_1, - int param_2) { - // NONMATCHING -} -#endif /* 802BC204-802BC218 2B6B44 0014+00 4/4 0/0 0/0 .text getChannel__9Z2AudibleFi */ Z2AudibleChannel* Z2Audible::getChannel(int param_0) { @@ -367,10 +169,6 @@ Z2Audience3DSetting::Z2Audience3DSetting() { init(); } -/* ############################################################################################## */ -/* 80455AD8-80455ADC 0040D8 0004+00 4/4 0/0 0/0 .sdata2 @1036 */ -SECTION_SDATA2 static f32 lit_1036 = 1.5f; - /* 802BC284-802BC308 2B6BC4 0084+00 1/1 0/0 0/0 .text init__19Z2Audience3DSettingFv */ void Z2Audience3DSetting::init() { field_0x40 = Z2Param::MIN_DISTANCE_VOLUME; @@ -387,38 +185,6 @@ void Z2Audience3DSetting::init() { initDolbyDist(); } - -/* ############################################################################################## */ -/* 80455ADC-80455AE0 0040DC 0004+00 2/2 0/0 0/0 .sdata2 @1058 */ -SECTION_SDATA2 static f32 lit_1058 = 1.25f; - -/* 80455AE0-80455AE4 0040E0 0004+00 3/3 0/0 0/0 .sdata2 @1059 */ -SECTION_SDATA2 static f32 lit_1059 = 2.0f; - -/* 80455AE4-80455AE8 0040E4 0004+00 2/2 0/0 0/0 .sdata2 @1060 */ -SECTION_SDATA2 static f32 lit_1060 = 4.0f; - -/* 80455AE8-80455AEC 0040E8 0004+00 2/2 0/0 0/0 .sdata2 @1061 */ -SECTION_SDATA2 static f32 lit_1061 = 6.0f; - -/* 80455AEC-80455AF0 0040EC 0004+00 2/2 0/0 0/0 .sdata2 @1062 */ -SECTION_SDATA2 static f32 lit_1062 = 8.0f; - -/* 80455AF0-80455AF4 0040F0 0004+00 2/2 0/0 0/0 .sdata2 @1063 */ -SECTION_SDATA2 static f32 lit_1063 = 9.0f / 10.0f; - -/* 80455AF4-80455AF8 0040F4 0004+00 2/2 0/0 0/0 .sdata2 @1064 */ -SECTION_SDATA2 static f32 lit_1064 = 4.0f / 5.0f; - -/* 80455AF8-80455AFC 0040F8 0004+00 2/2 0/0 0/0 .sdata2 @1065 */ -SECTION_SDATA2 static f32 lit_1065 = 7.0f / 10.0f; - -/* 80455AFC-80455B00 0040FC 0004+00 2/2 0/0 0/0 .sdata2 @1066 */ -SECTION_SDATA2 static f32 lit_1066 = 3.0f / 5.0f; - -/* 80455B00-80455B04 004100 0004+00 2/2 0/0 0/0 .sdata2 @1067 */ -SECTION_SDATA2 static f32 lit_1067 = 2.0f / 5.0f; - /* 802BC308-802BC4D0 2B6C48 01C8+00 2/2 0/0 0/0 .text initVolumeDist__19Z2Audience3DSettingFv */ void Z2Audience3DSetting::initVolumeDist() { if (mVolumeDistInit) return; @@ -431,10 +197,8 @@ void Z2Audience3DSetting::initVolumeDist() { mVolumeDistInit = true; } - -/* ############################################################################################## */ /* 80451350-80451354 000850 0004+00 2/2 0/0 0/0 .sbss cNearFarRatio */ -static f32 cNearFarRatio; +static f32 cNearFarRatio = Z2Param::MAX_VOLUME_DISTANCE / Z2Param::DISTANCE_MAX; /* 802BC4D0-802BC6A4 2B6E10 01D4+00 1/1 0/0 0/0 .text updateVolumeDist__19Z2Audience3DSettingFf */ void Z2Audience3DSetting::updateVolumeDist(f32 param_0) { @@ -450,7 +214,6 @@ void Z2Audience3DSetting::updateVolumeDist(f32 param_0) { mVolumeDistInit = false; } - /* 802BC6A4-802BC6F8 2B6FE4 0054+00 1/1 0/0 0/0 .text initDolbyDist__19Z2Audience3DSettingFv */ void Z2Audience3DSetting::initDolbyDist() { if (!mDolbyDistInit) { @@ -462,7 +225,6 @@ void Z2Audience3DSetting::initDolbyDist() { } } - /* 802BC6F8-802BC758 2B7038 0060+00 1/1 0/0 0/0 .text updateDolbyDist__19Z2Audience3DSettingFff */ void Z2Audience3DSetting::updateDolbyDist(f32 param_0, f32 param_1) { if (param_0 > -1.0f * Z2Param::DOLBY_FLONT_DISTANCE_MAX) { @@ -481,7 +243,6 @@ void Z2Audience3DSetting::updateDolbyDist(f32 param_0, f32 param_1) { mDolbyDistInit = false; } - /* 802BC758-802BC788 2B7098 0030+00 1/1 0/0 0/0 .text __ct__13Z2AudioCameraFv */ Z2AudioCamera::Z2AudioCamera() { mFovySin = 1.0f; @@ -494,7 +255,6 @@ Z2AudioCamera::Z2AudioCamera() { mSetMainCamera = 0; } - /* 802BC788-802BC7DC 2B70C8 0054+00 1/1 0/0 0/0 .text init__13Z2AudioCameraFv */ void Z2AudioCamera::init() { JGeometry::TPosition3f32 aTStack_38; @@ -509,61 +269,16 @@ void Z2AudioCamera::init() { void Z2AudioCamera::setCameraState(f32 const (*param_0)[4], Vec& param_1, bool param_2) { field_0x0.set(param_0); if (param_2) { - mPos.set(*(JGeometry::TVec3*)¶m_1); + mPos.set(param_1); field_0x48.set(mPos); mVel.zero(); } else { field_0x48.set(mPos); - mPos.set(*(JGeometry::TVec3*)¶m_1); + mPos.set(param_1); mVel.sub(mPos, field_0x48); } } - -/* ############################################################################################## */ -/* 8039C220-8039C230 028880 000C+04 1/1 0/0 0/0 .rodata @1193 */ -SECTION_RODATA static u8 const lit_1193[12 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8039C220, &lit_1193); - -/* 80455B08-80455B0C 004108 0004+00 1/1 0/0 0/0 .sdata2 @1267 */ -SECTION_SDATA2 static f32 lit_1267 = -22.755556106567383f; - -/* 80455B0C-80455B10 00410C 0004+00 1/1 0/0 0/0 .sdata2 @1268 */ -SECTION_SDATA2 static f32 lit_1268 = 22.755556106567383f; - -/* 80455B10-80455B14 004110 0004+00 1/1 0/0 0/0 .sdata2 @1269 */ -SECTION_SDATA2 static f32 lit_1269 = 50.0f; - -/* 80455B14-80455B18 004114 0004+00 1/1 0/0 0/0 .sdata2 @1270 */ -SECTION_SDATA2 static f32 lit_1270 = 2.1445069313049316f; - -/* 80455B18-80455B1C 004118 0004+00 2/2 0/0 0/0 .sdata2 @1271 */ -SECTION_SDATA2 static f32 lit_1271 = 32.0f; - -/* 80455B1C-80455B20 00411C 0004+00 1/1 0/0 0/0 .sdata2 @1272 */ -SECTION_SDATA2 static f32 lit_1272 = -100.0f; - -/* 80455B20-80455B24 004120 0004+00 1/1 0/0 0/0 .sdata2 @1273 */ -SECTION_SDATA2 static f32 lit_1273 = 0.01745329238474369f; - /* 802BC8AC-802BCBEC 2B71EC 0340+00 1/1 0/0 0/0 .text * setCameraState__13Z2AudioCameraFPA4_fR3VecR3Vecffbb */ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, @@ -582,15 +297,15 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2 mVolCenterZ = 0.0f; dVar11 = mCamDist; } else { - dVar11 = 2.1445069313049316f * (mCamDist * field_0x6c); + dVar11 = 2.144507f * (mCamDist * field_0x6c); mVolCenterZ = mCamDist - dVar11; - if (mVolCenterZ < 32.0f * FLT_EPSILON) { + if (mVolCenterZ < JGeometry::TUtil::epsilon()) { mVolCenterZ = 0.0f; } } if (mSetMainCamera && mTargetVolume > 0.0f) { - if (dVar11 > (double)(Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume))) + if (dVar11 > (Z2Param::DISTANCE_MAX * (1.0f - mTargetVolume))) { Z2GetAudience()->getSetting()->updateVolumeDist(dVar11 / (1.0f - mTargetVolume)); } else { @@ -604,12 +319,9 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2 Z2GetAudience()->getSetting()->updateDolbyDist(mCamDist, mCamDist); } } else { - JGeometry::TVec3 aTStack_cc(0.0f, 0.0f, 0.0f); - aTStack_cc.x = param_0[0][0]; - aTStack_cc.y = param_0[0][1]; - aTStack_cc.z = param_0[0][2]; + Vec aTStack_cc = {param_0[0][0], param_0[0][1], param_0[0][2]}; Mtx rotMtx; - MTXRotAxisRad(rotMtx, aTStack_cc, 0.01745329238474369f * (-1.0f * dVar10)); + MTXRotAxisRad(rotMtx, &aTStack_cc, 0.017453292f * (-1.0f * dVar10)); JGeometry::TVec3 aTStack_d8; MTXMultVec(rotMtx, aTStack_c0, aTStack_d8); aTStack_d8.scale(aTStack_c0.y / aTStack_d8.y); @@ -621,7 +333,6 @@ void Z2AudioCamera::setCameraState(f32 (*param_0)[4], Vec& param_1, Vec& param_2 setCameraState(param_0, param_1, param_6); } - /* 802BCBEC-802BCC7C 2B752C 0090+00 2/2 0/0 0/0 .text * convertAbsToRel__13Z2AudioCameraFP9Z2Audiblei */ void Z2AudioCamera::convertAbsToRel(Z2Audible* param_0, int param_1) { @@ -667,19 +378,6 @@ bool Z2AudioCamera::isInSight(Vec& param_0) const { return true; } -/* ############################################################################################## */ -/* 80455B24-80455B28 004124 0004+00 1/1 0/0 0/0 .sdata2 @1334 */ -SECTION_SDATA2 static f32 lit_1334 = 200.0f; - -/* 80455B28-80455B2C 004128 0004+00 1/1 0/0 0/0 .sdata2 @1335 */ -SECTION_SDATA2 static f32 lit_1335 = 400.0f; - -/* 80455B2C-80455B30 00412C 0004+00 2/2 0/0 0/0 .sdata2 @1336 */ -SECTION_SDATA2 static f32 lit_1336 = 1.0f / 5.0f; - -/* 80455B30-80455B34 004130 0004+00 1/1 0/0 0/0 .sdata2 @1337 */ -SECTION_SDATA2 static f32 lit_1337 = 255.0f; - /* 802BCD28-802BCDA8 2B7668 0080+00 1/1 0/0 0/0 .text __ct__9Z2SpotMicFv */ Z2SpotMic::Z2SpotMic() { field_0x0 = 200.0f; @@ -693,7 +391,6 @@ Z2SpotMic::Z2SpotMic() { clearMicState(0); } - /* 802BCDA8-802BCDE8 2B76E8 0040+00 2/2 0/0 0/0 .text clearMicState__9Z2SpotMicFi */ void Z2SpotMic::clearMicState(int param_0) { field_0x10[param_0] = NULL; @@ -735,7 +432,6 @@ void Z2SpotMic::setMicState(Z2AudioCamera* param_0, int param_1) { } } - /* 802BCF5C-802BCFE4 2B789C 0088+00 2/2 0/0 0/0 .text calcMicDist__9Z2SpotMicFP9Z2Audible */ f32 Z2SpotMic::calcMicDist(Z2Audible* param_0) { @@ -756,7 +452,6 @@ f32 Z2SpotMic::calcMicDist(Z2Audible* param_0) { return aTStack_1c.length(); } - /* 802BCFE4-802BD03C 2B7924 0058+00 1/1 0/0 0/0 .text calcMicPriority__9Z2SpotMicFf */ u32 Z2SpotMic::calcMicPriority(f32 param_0) { if (param_0 > field_0x4) { @@ -809,25 +504,18 @@ f32 Z2SpotMic::calcMicVolume(f32 param_0, int param_1, f32 param_2) { return param_2; } - /* 802BD130-802BD1FC 2B7A70 00CC+00 0/0 1/1 0/0 .text __ct__10Z2AudienceFv */ Z2Audience::Z2Audience() : JASGlobalInstance(true), field_0x4(1.0f), field_0x8(0x7f) { - mNumPlayers = 1; + mMaxChannels = 1; mUsingOffMicVol = false; mAudioCamera[0].init(); mAudioCamera[0].setMainCamera(); mLinkMic = mSpotMic; } - /* 802BD1FC-802BD288 2B7B3C 008C+00 1/0 1/1 0/0 .text __dt__10Z2AudienceFv */ Z2Audience::~Z2Audience() {} -/* 802BD288-802BD2DC 2B7BC8 0054+00 2/2 1/1 0/0 .text __dt__22JASMemPool<9Z2Audible>Fv */ -extern "C" void func_802BD288(void* _this) { - // NONMATCHING -} - /* 802BD2DC-802BD338 2B7C1C 005C+00 0/0 1/1 0/0 .text * setAudioCamera__10Z2AudienceFPA4_fR3VecR3Vecffbib */ void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f32 param_3, @@ -836,38 +524,23 @@ void Z2Audience::setAudioCamera(f32 (*param_0)[4], Vec& param_1, Vec& param_2, f mLinkMic->setMicState(&mAudioCamera[param_6], param_6); } -/* ############################################################################################## */ -/* 804341D8-804341E4 060EF8 000C+00 2/2 0/0 0/0 .bss @1539 */ -static u8 lit_1539[12]; - -/* 804341E4-804341F8 060F04 0010+04 2/2 1/1 0/0 .bss - * memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv */ -extern u8 data_804341E4[16 + 4 /* padding */]; -u8 data_804341E4[16 + 4 /* padding */]; - -/* 80451354-80451358 000854 0004+00 2/2 1/1 0/0 .sbss None */ -extern u8 data_80451354[4]; -u8 data_80451354[4]; - /* 802BD338-802BD4D4 2B7C78 019C+00 1/0 0/0 0/0 .text * newAudible__10Z2AudienceFRCQ29JGeometry8TVec310JAISoundIDPCQ29JGeometry8TVec3Ul */ JAIAudible* Z2Audience::newAudible(JGeometry::TVec3 const& param_0, JAISoundID param_1, JGeometry::TVec3 const* param_2, u32 param_3) { - JAUAudibleParam local_34; - u32 uVar4 = param_3 | ~((1 << mNumPlayers) + -1); + u32 uVar4 = param_3 | ~((1 << mMaxChannels) + -1); if (uVar4 == 0xffffffff) { return NULL; } - local_34 = Z2GetSoundInfo()->getAudibleSwFull(param_1); - bool x = ((local_34.field_0x0.bytes.b0_0 >> 4) & 0xf) != 0; - Z2Audible* this_01 = (Z2Audible*)new JASPoolAllocObject(); - this_01 = new (this_01) Z2Audible(param_0, param_2, uVar4, x); + JAUAudibleParam local_34 = Z2GetSoundInfo()->getAudibleSwFull(param_1); + bool x = local_34.field_0x0.bytes.b0_0 != 0; + Z2Audible* this_01 = new Z2Audible(param_0, param_2, uVar4, x); if (this_01 == NULL) { return NULL; } this_01->setAudibleParam(local_34); - for (int iVar5 = 0; iVar5 < mNumPlayers; iVar5++) { + for (int iVar5 = 0; iVar5 < mMaxChannels; iVar5++) { Z2AudibleChannel* iVar2 = this_01->getChannel(iVar5); if (iVar2 != NULL) { u32 local_38 = this_01->getDistVolBit(); @@ -884,7 +557,6 @@ JAIAudible* Z2Audience::newAudible(JGeometry::TVec3 const& param_0, JAISoun return this_01; } - /* 802BD4D4-802BD510 2B7E14 003C+00 1/0 0/0 0/0 .text deleteAudible__10Z2AudienceFP10JAIAudible */ void Z2Audience::deleteAudible(JAIAudible* param_0) { delete param_0; @@ -894,12 +566,11 @@ void Z2Audience::deleteAudible(JAIAudible* param_0) { Z2Audible::~Z2Audible() { } - /* 802BD5B8-802BD704 2B7EF8 014C+00 1/0 0/0 0/0 .text calcPriority__10Z2AudienceFP10JAIAudible */ u32 Z2Audience::calcPriority(JAIAudible* param_0) { Z2Audible* z2Audible = (Z2Audible*)param_0; if (!z2Audible->getAudibleParam()->field_0x0.bytes.b0_4) { - for (int i = 0; i < mNumPlayers; i++) { + for (int i = 0; i < mMaxChannels; i++) { mAudioCamera[i].convertAbsToRel(z2Audible, i); } return 0; @@ -907,7 +578,7 @@ u32 Z2Audience::calcPriority(JAIAudible* param_0) { u32 deltaPriority[1]; u32 rv = 0xffffffff; - for (int i = 0; i < mNumPlayers; i++) { + for (int i = 0; i < mMaxChannels; i++) { Z2AudibleChannel* iVar4 = (z2Audible)->getChannel(i); if (iVar4 != NULL) { mAudioCamera[i].convertAbsToRel(z2Audible, i); @@ -968,14 +639,14 @@ void Z2Audience::mixChannelOut(JASSoundParams const& param_0, JAIAudible* param_ local_60.mVolume = 1.0f; } - if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_1 && mNumPlayers == 1) { + if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_1 && mMaxChannels == 1) { local_60.mDolby = calcRelPosDolby(*(Vec*)&pZVar5->field_0x14.field_0x00, param_2); } else { local_60.mDolby = 0.5f; } if (z2Audible->getAudibleParam()->field_0x0.bytes.b1_0) { - if (mNumPlayers > 2) { + if (mMaxChannels > 2) { f32 fVar1; if (param_2 & 1) { fVar1 = 1.0f; @@ -1015,8 +686,6 @@ bool Z2Audience::convertAbsToRel(Vec& param_0, Vec* param_1, int param_2) { } /* 802BD95C-802BDA44 2B829C 00E8+00 0/0 3/3 0/0 .text calcRelPosVolume__10Z2AudienceFRC3Vecfi */ -// Mathces with literals -#ifdef NONMATCHING f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { JGeometry::TVec3 aTStack_3c; JGeometry::setTVec3f(param_0, *(Vec*)&aTStack_3c); @@ -1036,11 +705,6 @@ f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { (this_00 - mSetting.field_0x3c), 0.0f, 1.0f); } -#else -f32 Z2Audience::calcRelPosVolume(Vec const& param_0, f32 param_1, int param_2) { - // NONMATCHING -} -#endif /* 802BDA44-802BDB44 2B8384 0100+00 1/1 3/3 0/0 .text calcRelPosPan__10Z2AudienceFRC3Veci */ @@ -1075,7 +739,6 @@ f32 Z2Audience::calcRelPosPan(Vec const& param_0, int param_1) { return dVar6; } - /* 802BDB44-802BDBDC 2B8484 0098+00 1/1 3/3 0/0 .text calcRelPosDolby__10Z2AudienceFRC3Veci */ f32 Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) { f32 fVar1 = param_0.z + mAudioCamera[param_1].getDolbyCenterZ(); @@ -1097,7 +760,6 @@ f32 Z2Audience::calcRelPosDolby(Vec const& param_0, int param_1) { 1.0f, Z2Calc::CURVE_SIGN_0); } - /* 802BDBDC-802BDC44 2B851C 0068+00 1/1 0/0 0/0 .text calcVolume___10Z2AudienceCFfi */ f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const { if (param_0 > mSetting.field_0x0[param_1]) { @@ -1119,7 +781,6 @@ f32 Z2Audience::calcVolume_(f32 param_0, int param_1) const { return volume; } - /* 802BDC44-802BDCB0 2B8584 006C+00 2/2 0/0 0/0 .text calcDeltaPriority___10Z2AudienceCFfib */ u32 Z2Audience::calcDeltaPriority_(f32 param_0, int param_1, bool param_2) const { if (param_0 > mSetting.field_0x0[param_1]) { @@ -1158,10 +819,6 @@ f32 Z2Audience::calcFxMix_(f32 param_0, int param_1) const { return mSetting.field_0x50 + mSetting.field_0xe8[param_1] * (param_0 - mSetting.field_0x3c); } -/* ############################################################################################## */ -/* 80455B34-80455B38 004134 0004+00 1/1 0/0 0/0 .sdata2 @1988 */ -SECTION_SDATA2 static f32 lit_1988 = 1.0f / 15.0f; - /* 802BDD48-802BDED4 2B8688 018C+00 1/1 0/0 0/0 .text * calcPitch___10Z2AudienceCFP16Z2AudibleChannelPC9Z2AudiblePC13Z2AudioCamera */ f32 Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1, @@ -1195,18 +852,13 @@ f32 Z2Audience::calcPitch_(Z2AudibleChannel* param_0, Z2Audible const* param_1, /* 802BDED4-802BDEDC 2B8814 0008+00 1/0 0/0 0/0 .text getMaxChannels__10Z2AudienceFv */ int Z2Audience::getMaxChannels() { - return mNumPlayers; + return mMaxChannels; } -/* 802BDEDC-802BDEF0 2B881C 0014+00 0/0 1/0 0/0 .text __sinit_Z2Audience_cpp */ -void __sinit_Z2Audience_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x802BDEDC, __sinit_Z2Audience_cpp); -#pragma pop +// padding (???) +s8 data_80451355; +s8 data_80451356; +s8 data_80451357; /* ############################################################################################## */ /* 80451358-80451360 -00001 0008+00 0/0 1/1 0/0 .sbss None */ @@ -1216,4 +868,3 @@ REGISTER_CTORS(0x802BDEDC, __sinit_Z2Audience_cpp); // u8 struct_80451358[8]; s8 data_80451358; s8 data_80451359; -u8 data_8045135a[6]; // padding? \ No newline at end of file diff --git a/src/Z2AudioLib/Z2AudioArcLoader.cpp b/src/Z2AudioLib/Z2AudioArcLoader.cpp index 99075c1014..b7d6789d98 100644 --- a/src/Z2AudioLib/Z2AudioArcLoader.cpp +++ b/src/Z2AudioLib/Z2AudioArcLoader.cpp @@ -5,54 +5,13 @@ #include "Z2AudioLib/Z2AudioArcLoader.h" #include "JSystem/JAudio2/JAUSectionHeap.h" -#include "dol2asm.h" - -// -// Types: -// - -// -// Forward References: -// - -extern "C" void __ct__16Z2AudioArcLoaderFP10JAUSection(); -extern "C" void readCommandMore__16Z2AudioArcLoaderFUl(); -extern "C" void readBFCA__16Z2AudioArcLoaderFPCv(); -extern "C" void readBSTN__16Z2AudioArcLoaderFPCvUl(); -extern "C" void __dt__16Z2AudioArcLoaderFv(); - -// -// External References: -// - -extern "C" void __dt__22JAUAudioArcInterpreterFv(); -extern "C" void __ct__17JAUAudioArcLoaderFP10JAUSection(); -extern "C" void readWS__17JAUAudioArcLoaderFUlPCvUl(); -extern "C" void readBNK__17JAUAudioArcLoaderFUlPCv(); -extern "C" void readBSC__17JAUAudioArcLoaderFPCvUl(); -extern "C" void readBST__17JAUAudioArcLoaderFPCvUl(); -extern "C" void readBMS__17JAUAudioArcLoaderFUlPCvUl(); -extern "C" void readBMS_fromArchive__17JAUAudioArcLoaderFUl(); -extern "C" void newVoiceBank__17JAUAudioArcLoaderFUlUl(); -extern "C" void newDynamicSeqBlock__17JAUAudioArcLoaderFUl(); -extern "C" void readBSFT__17JAUAudioArcLoaderFPCv(); -extern "C" void beginBNKList__17JAUAudioArcLoaderFUlUl(); -extern "C" void endBNKList__17JAUAudioArcLoaderFv(); -extern "C" void readMaxSeCategory__17JAUAudioArcLoaderFiii(); -extern "C" void getOpenSection__14JAUSectionHeapFv(); -extern "C" void initDataArc__11Z2FxLineMgrFP10JKRArchiveP7JKRHeap(); -extern "C" void __dl__FPv(); -extern "C" void mount__10JKRArchiveFPvP7JKRHeapQ210JKRArchive15EMountDirection(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__17JAUAudioArcLoader[17 + 1 /* padding */]; -extern "C" extern u8 data_80450B40[4]; -extern "C" extern u8 data_80450CC0[4 + 4 /* padding */]; -extern "C" u8 sCurrentHeap__7JKRHeap[4]; -extern "C" extern u8 __OSReport_disable; +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "Z2AudioLib/Z2FxLineMgr.h" /* 802A9A34-802A9A70 2A4374 003C+00 0/0 1/1 0/0 .text __ct__16Z2AudioArcLoaderFP10JAUSection */ Z2AudioArcLoader::Z2AudioArcLoader(JAUSection* param_0) : JAUAudioArcLoader(param_0) { + /* empty function */ } /* 802A9A70-802A9AC8 2A43B0 0058+00 1/0 0/0 0/0 .text readCommandMore__16Z2AudioArcLoaderFUl */ @@ -68,22 +27,16 @@ bool Z2AudioArcLoader::readCommandMore(u32 param_0) { } /* 802A9AC8-802A9B54 2A4408 008C+00 1/1 0/0 0/0 .text readBFCA__16Z2AudioArcLoaderFPCv */ -// regalloc and extra stack -#ifdef NONMATCHING +// NONMATCHING regalloc void Z2AudioArcLoader::readBFCA(void const* param_0) { - JAUSectionHeap* sectionHeap = JASGlobalInstance::getInstance(); - JKRHeap* pJVar1 = sectionHeap->getHeap(); - JKRArchive* pJVar5 = JKRArchive::mount((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL); - Z2GetFxLineMgr()->initDataArc(pJVar5, pJVar1); - JKRUnmountArchive(pJVar5); + JKRHeap* heap = JAUSectionHeap::getInstance()->getHeap(); + JKRArchive* archive = JKRArchive::mount((void*)param_0, JKRGetCurrentHeap(), JKRArchive::MOUNT_DIRECTION_TAIL); + Z2GetFxLineMgr()->initDataArc(archive, heap); + JKRUnmountArchive(archive); } -#else -void Z2AudioArcLoader::readBFCA(void const* param_0) { - // NONMATCHING -} -#endif + /* 802A9B54-802A9B58 2A4494 0004+00 1/0 0/0 0/0 .text readBSTN__16Z2AudioArcLoaderFPCvUl */ void Z2AudioArcLoader::readBSTN(void const* param_0, u32 param_1) { /* empty function */ -} \ No newline at end of file +} diff --git a/src/Z2AudioLib/Z2AudioMgr.cpp b/src/Z2AudioLib/Z2AudioMgr.cpp index 394591664f..dbe6813902 100644 --- a/src/Z2AudioLib/Z2AudioMgr.cpp +++ b/src/Z2AudioLib/Z2AudioMgr.cpp @@ -6,231 +6,49 @@ #include "Z2AudioLib/Z2AudioMgr.h" #include "JSystem/JAudio2/JASAiCtrl.h" #include "JSystem/JAudio2/JASDriverIF.h" +#include "JSystem/JAudio2/JASResArcLoader.h" +#include "JSystem/JAudio2/JASSeqParser.h" +#include "JSystem/JAudio2/JAUInitializer.h" +#include "JSystem/JAudio2/JAUSectionHeap.h" +#include "JSystem/JAudio2/JAUStreamAramMgr.h" +#include "JSystem/JKernel/JKRSolidHeap.h" #include "Z2AudioLib/Z2AudioArcLoader.h" +#include "Z2AudioLib/Z2Param.h" #include "Z2AudioLib/Z2SoundHandles.h" #include "stdio.h" #include "stdlib.h" -#include "dol2asm.h" #include "dolphin/os.h" -// -// Types: -// - -struct Z2Param { - static f32 VOL_BGM_DEFAULT; - static f32 VOL_SE_SYSTEM_DEFAULT; - static f32 VOL_SE_LINK_VOICE_DEFAULT; - static f32 VOL_SE_LINK_MOTION_DEFAULT; - static f32 VOL_SE_LINK_FOOTNOTE_DEFAULT; - static f32 VOL_SE_CHAR_VOICE_DEFAULT; - static f32 VOL_SE_CHAR_MOVE_DEFAULT; - static f32 VOL_SE_OBJECT_DEFAULT; - static f32 VOL_SE_ATMOSPHERE_DEFAULT; -}; - -// -// Forward References: -// - -extern "C" void __ct__10Z2AudioMgrFv(); -extern "C" void init__10Z2AudioMgrFP12JKRSolidHeapUlPvP10JKRArchive(); -extern "C" void func_802CD7F8(void* _this); -extern "C" void setOutputMode__10Z2AudioMgrFUl(); -extern "C" void zeldaGFrameWork__10Z2AudioMgrFv(); -extern "C" void gframeProcess__10Z2AudioMgrFv(); -extern "C" void resetProcess__10Z2AudioMgrFUlb(); -extern "C" void resetRecover__10Z2AudioMgrFv(); -extern "C" void hasReset__10Z2AudioMgrCFv(); -extern "C" void func_802CDB1C(); -extern "C" void func_802CDB68(void* _this); -extern "C" void func_802CDC08(void* _this, u32); -extern "C" void func_802CDCEC(void* _this, u32*); -extern "C" extern char const* const Z2AudioMgr__stringBase0; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// External References: -// - -extern "C" void alloc__7JASHeapFP7JASHeapUl(); -extern "C" void free__7JASHeapFv(); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void newMemPool__17JASGenericMemPoolFUli(); -extern "C" void getAramHeap__9JASKernelFv(); -extern "C" void __dt__7JASHeapFv(); -extern "C" void getResMaxSize__15JASResArcLoaderFPC10JKRArchive(); -extern "C" void getSubFrames__9JASDriverFv(); -extern "C" void __ct__15JASAudioReseterFv(); -extern "C" void start__15JASAudioReseterFUlb(); -extern "C" void resume__15JASAudioReseterFv(); -extern "C" void checkDone__15JASAudioReseterCFv(); -extern "C" void setOutputMode__9JASDriverFUl(); -extern "C" void setCategoryArrangement__8JAISeMgrFRC24JAISeCategoryArrangement(); -extern "C" void setAudience__8JAISeMgrFP11JAIAudience(); -extern "C" void setSeqDataMgr__8JAISeMgrFP13JAISeqDataMgr(); -extern "C" void getNumActiveSe__8JAISeMgrCFv(); -extern "C" void __ct__12JAISoundInfoFb(); -extern "C" void moveVolume__18JAISoundParamsMoveFfUl(); -extern "C" void __dt__16JAIStreamAramMgrFv(); -extern "C" void __dt__22JAUAudioArcInterpreterFv(); -extern "C" void load__17JAUAudioArcLoaderFPCv(); -extern "C" void __defctor__7JASHeapFv(); -extern "C" void __ct__18JAU_JASInitializerFv(); -extern "C" void initJASystem__18JAU_JASInitializerFP12JKRSolidHeap(); -extern "C" void __ct__18JAU_JAIInitializerFv(); -extern "C" void initJAInterface__18JAU_JAIInitializerFv(); -extern "C" void finishBuild__10JAUSectionFv(); -extern "C" void setSeqDataArchive__14JAUSectionHeapFP10JKRArchive(); -extern "C" void JAUNewSectionHeap__Fb(); -extern "C" void newDynamicSeqBlock__14JAUSectionHeapFUl(); -extern "C" void __ct__16Z2AudioArcLoaderFP10JAUSection(); -extern "C" void seqCallback__FP8JASTrackUs(); -extern "C" void __ct__10Z2SoundMgrFv(); -extern "C" void framework__10Z2SoundMgrFv(); -extern "C" void stopSync__10Z2SoundMgrFv(); -extern "C" void initParams__10Z2SoundMgrFv(); -extern "C" void __ct__14Z2SoundStarterFb(); -extern "C" void func_802AB200(void* _this); -extern "C" void __ct__7Z2SeMgrFv(); -extern "C" void initSe__7Z2SeMgrFv(); -extern "C" void processSeFramework__7Z2SeMgrFv(); -extern "C" void __ct__8Z2SeqMgrFv(); -extern "C" void processBgmFramework__8Z2SeqMgrFv(); -extern "C" void __ct__11Z2StatusMgrFv(); -extern "C" void processHeartGaugeSound__11Z2StatusMgrFv(); -extern "C" void menuOut__11Z2StatusMgrFv(); -extern "C" void processTime__11Z2StatusMgrFv(); -extern "C" void __ct__10Z2SceneMgrFv(); -extern "C" void framework__10Z2SceneMgrFv(); -extern "C" void __ct__11Z2FxLineMgrFv(); -extern "C" void __ct__10Z2AudienceFv(); -extern "C" void func_802BD288(void* _this); -extern "C" void __ct__13Z2SoundObjMgrFv(); -extern "C" void __ct__12Z2SpeechMgr2Fv(); -extern "C" void framework__12Z2SpeechMgr2Fv(); -extern "C" void* __nw__FUlP7JKRHeapi(); -extern "C" void __dl__FPv(); -extern "C" void __register_global_object(); -extern "C" void __destroy_arr(); -extern "C" void __construct_array(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__12JAUSoundInfo[4 + 1 /* padding */]; -extern "C" extern void* __vt__16JAIStreamAramMgr[5]; -extern "C" extern void* __vt__16JAIStreamDataMgr[4 + 1 /* padding */]; -extern "C" extern void* __vt__17JAUAudioArcLoader[17 + 1 /* padding */]; -extern "C" extern void* __vt__16Z2AudioArcLoader[17 + 1 /* padding */]; -extern "C" extern void* __vt__11Z2SoundInfo[20]; -extern "C" extern u8 data_804341C4[16 + 4 /* padding */]; -extern "C" extern u8 data_804341E4[16 + 4 /* padding */]; -extern "C" f32 VOL_BGM_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_SYSTEM_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_LINK_VOICE_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_LINK_MOTION_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_LINK_FOOTNOTE_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_CHAR_VOICE_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_CHAR_MOVE_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_OBJECT_DEFAULT__7Z2Param; -extern "C" f32 VOL_SE_ATMOSPHERE_DEFAULT__7Z2Param; -extern "C" extern u8 data_80450B4C[4]; -extern "C" extern u8 data_80450B50[4]; -extern "C" u8 sCallBackFunc__12JASSeqParser[4]; -extern "C" u8 sBlockSize__13JASAramStream[4]; -extern "C" extern u8 data_80451348[8]; -extern "C" extern u8 data_80451354[4]; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803CBF38-803CBF44 029058 000C+00 1/1 1/1 0/0 .data __vt__10Z2AudioMgr */ -SECTION_DATA extern void* __vt__10Z2AudioMgr[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)func_802CDB1C, -}; - /* 80451368-80451370 000868 0004+04 1/1 251/251 900/900 .sbss mAudioMgrPtr__10Z2AudioMgr */ Z2AudioMgr* Z2AudioMgr::mAudioMgrPtr; /* 802CD248-802CD34C 2C7B88 0104+00 0/0 1/1 0/0 .text __ct__10Z2AudioMgrFv */ -// wild destructors appeared! -#ifdef NONMATCHING Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) { mAudioMgrPtr = this; mResettingFlag = false; field_0x519 = false; } -#else -Z2AudioMgr::Z2AudioMgr() : mSoundStarter(true) { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 8039CA58-8039CA58 0290B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039CA58 = "Audiores/Waves/"; -SECTION_DEAD static char const* const stringBase_8039CA68 = "index out of range of bitset::reset"; -#pragma pop - -/* 803CBF44-803CBF58 029064 0014+00 2/2 0/0 0/0 .data __vt__26JAUStreamStaticAramMgr_<1> - */ -SECTION_DATA extern void* data_803CBF44[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)func_802CDCEC, - (void*)func_802CDC08, (void*)func_802CDB68, -}; - -/* 803CBF58-803CBF70 029078 0014+04 3/3 0/0 0/0 .data __vt__24JAUStreamAramMgrBase_<1> */ -SECTION_DATA extern void* data_803CBF58[5 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)NULL, - (void*)NULL, - (void*)func_802CD7F8, - /* padding */ - NULL, -}; - -/* 80434268-80434274 060F88 000C+00 1/1 0/0 0/0 .bss @3779 */ -static u8 lit_3779[12]; - -/* 80434274-80434280 060F94 000C+00 1/1 0/0 0/0 .bss @3783 */ -static u8 lit_3783[12]; - -/* 80455F58-80455F5C 004558 0004+00 1/1 0/0 0/0 .sdata2 @3931 */ -SECTION_SDATA2 static f32 lit_3931 = 13.0f / 10.0f; - -/* 80455F5C-80455F60 00455C 0004+00 2/2 0/0 0/0 .sdata2 @3932 */ -SECTION_SDATA2 static f32 lit_3932 = 1.0f; /* 802CD34C-802CD7F8 2C7C8C 04AC+00 0/0 1/1 0/0 .text * init__10Z2AudioMgrFP12JKRSolidHeapUlPvP10JKRArchive */ -// JAUSectionHeap inheritance -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArchive* param_3) { JAU_JASInitializer stack_60; + stack_60.field_0x04 = param_1; stack_60.field_0x1c = 0x8c; stack_60.field_0x2c = 1.3f; stack_60.field_0x30 = "Audiores/Waves/"; - stack_60.field_0x04 = param_1; stack_60.initJASystem(param_0); + JAU_JAIInitializer stack_90; stack_90.field_0x0 = 0x4e; stack_90.field_0x4 = 4; stack_90.field_0xc = 0x30; stack_90.initJAInterface(); + JAISeMgr *seMgr = mSoundMgr.getSeMgr(); + JAISeCategoryArrangement stack_80; stack_80.mItems[0].mMaxActiveSe = 4; stack_80.mItems[0].mMaxInactiveSe = 2; @@ -252,33 +70,33 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch stack_80.mItems[8].mMaxInactiveSe = 5; stack_80.mItems[9].mMaxActiveSe = 8; stack_80.mItems[9].mMaxInactiveSe = 4; - stack_80.mItems[10].mMaxActiveSe = 4; - stack_80.mItems[10].mMaxInactiveSe = 2; + seMgr->setCategoryArrangement(stack_80); - seMgr->getCategory(0)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(1)->getParams()->moveVolume(1.0f, 0); - seMgr->getCategory(2)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(3)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(4)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(5)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(6)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(7)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(8)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(9)->getParams()->moveVolume(0.9448819f, 0); - seMgr->getCategory(10)->getParams()->moveVolume(1.0f, 0); + seMgr->getCategory(0)->getParams()->moveVolume(Z2Param::VOL_SE_SYSTEM_DEFAULT, 0); + seMgr->getCategory(1)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_VOICE_DEFAULT, 0); + seMgr->getCategory(2)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_MOTION_DEFAULT, 0); + seMgr->getCategory(3)->getParams()->moveVolume(Z2Param::VOL_SE_LINK_FOOTNOTE_DEFAULT, 0); + seMgr->getCategory(4)->getParams()->moveVolume(Z2Param::VOL_SE_OBJECT_DEFAULT, 0); + seMgr->getCategory(5)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_VOICE_DEFAULT, 0); + seMgr->getCategory(6)->getParams()->moveVolume(Z2Param::VOL_SE_CHAR_MOVE_DEFAULT, 0); + 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); seMgr->getParams()->moveVolume(1.0f, 0); + JAISeqMgr* seqMgr = mSoundMgr.getSeqMgr(); - seqMgr->getParams()->moveVolume(1.0f, 0); + seqMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0); JAIStreamMgr* streamMgr = mSoundMgr.getStreamMgr(); JAUStreamStaticAramMgr_<1>* streamStaticAramMgr = new(param_0, 0) JAUStreamStaticAramMgr_<1>(); streamStaticAramMgr->reserveAram(NULL, 0, 0x14); streamMgr->setStreamAramMgr(streamStaticAramMgr); - streamMgr->getParams()->moveVolume(1.0f, 0); + streamMgr->getParams()->moveVolume(Z2Param::VOL_BGM_DEFAULT, 0); JASPoolAllocObject::newMemPool(0x4e); mSoundMgr.getSeMgr()->setAudience(&mAudience); mSoundMgr.getSeqMgr()->setAudience(&mAudience); JASPoolAllocObject::newMemPool(0x4e); - OSReport("[Z2AudioMgr::init]before Create Section: %d\n", param_0->getFreeSize()); + // OSReport("[Z2AudioMgr::init]before Create Section: %d\n", param_0->getFreeSize()); + JAUSectionHeap* sectionHeap = JAUNewSectionHeap(true); sectionHeap->setSeqDataArchive(param_3); size_t resMaxSize = JASResArcLoader::getResMaxSize(param_3); @@ -289,7 +107,8 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch Z2AudioArcLoader stack_a0(sectionHeap); bool baaLoadResult = stack_a0.load(param_2); JUT_ASSERT(252, baaLoadResult); - seqMgr->setSeqDataMgr(sectionHeap->getSeqDataMgr()); + seMgr->setSeqDataMgr(sectionHeap->getSeSeqDataMgr()); + seqMgr->setSeqDataMgr(sectionHeap->getSeqSeqDataMgr()); if (sectionHeap->getStreamDataMgr()) { streamMgr->setStreamDataMgr(sectionHeap->getStreamDataMgr()); } else { @@ -299,17 +118,6 @@ void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArch initSe(); JASSeqParser::registerSeqCallback(seqCallback); } -#else -void Z2AudioMgr::init(JKRSolidHeap* param_0, u32 param_1, void* param_2, JKRArchive* param_3) { - // NONMATCHING -} -#endif - -/* 802CD7F8-802CD888 2C8138 0090+00 1/0 0/0 0/0 .text __dt__24JAUStreamAramMgrBase_<1>Fv - */ -extern "C" void func_802CD7F8(void* _this) { - // NONMATCHING -} /* 802CD888-802CD8B4 2C81C8 002C+00 0/0 5/5 0/0 .text setOutputMode__10Z2AudioMgrFUl */ void Z2AudioMgr::setOutputMode(u32 mode) { @@ -347,14 +155,6 @@ void Z2AudioMgr::resetProcess(u32 param_0, bool param_1) { mResettingFlag = true; } -/* ############################################################################################## */ -/* 80455F60-80455F68 004560 0004+04 1/1 0/0 0/0 .sdata2 @4035 */ -SECTION_SDATA2 static f32 lit_4035[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; - /* 802CD9CC-802CDA6C 2C830C 00A0+00 0/0 1/1 0/0 .text resetRecover__10Z2AudioMgrFv */ void Z2AudioMgr::resetRecover() { mAudioReseter.resume(); @@ -364,20 +164,21 @@ void Z2AudioMgr::resetRecover() { setTwilightGateVol(1.0f); setWindStoneVol(1.0f, 0); menuOut(); - i_bgmAllUnMute(0); + bgmAllUnMute(0); unMuteSceneBgm(0); } /* 802CDA6C-802CDB1C 2C83AC 00B0+00 0/0 2/2 0/0 .text hasReset__10Z2AudioMgrCFv */ bool Z2AudioMgr::hasReset() const { - // NONMATCHING + return mResettingFlag && mAudioReseter.checkDone() + && (field_0x519 + || (mSoundMgr.getSeMgr()->getNumActiveSe() == 0 + && mSoundMgr.getSeqMgr()->getNumActiveSeqs() == 0)); } /* 802CDB1C-802CDB68 2C845C 004C+00 1/0 1/0 0/0 .text * startSound__10Z2AudioMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ -// vtable order -#ifdef NONMATCHING bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, JGeometry::TVec3 const* param_2) { if (mResettingFlag) { @@ -385,45 +186,3 @@ bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, } return mSoundMgr.startSound(param_0, param_1, param_2); } -#else -// void Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1, -// JGeometry::TVec3 const* param_2) { -extern "C" void func_802CDB1C() { - // NONMATCHING -} -#endif - -/* 802CDB68-802CDC08 2C84A8 00A0+00 1/0 0/0 0/0 .text __dt__26JAUStreamStaticAramMgr_<1>Fv */ -extern "C" void func_802CDB68(void* _this) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8039CA58-8039CA58 0290B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039CA8C = "index out of range of bitset::test"; -#pragma pop - -/* 802CDC08-802CDCEC 2C8548 00E4+00 1/0 0/0 0/0 .text - * deleteStreamAram__26JAUStreamStaticAramMgr_<1>FUl */ -extern "C" void func_802CDC08(void* _this, u32 param_0) { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8039CA58-8039CA58 0290B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039CAAF = "index out of range of bitset::set"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039CAD1 = "\0\0\0\0\0\0"; -#pragma pop - -/* 802CDCEC-802CDDC8 2C862C 00DC+00 1/0 0/0 0/0 .text - * newStreamAram__26JAUStreamStaticAramMgr_<1>FPUl */ -extern "C" void func_802CDCEC(void* _this, u32* param_0) { - // NONMATCHING -} - -/* 8039CA58-8039CA58 0290B8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file diff --git a/src/Z2AudioLib/Z2Creature.cpp b/src/Z2AudioLib/Z2Creature.cpp index e46e8df96a..a49079b28d 100644 --- a/src/Z2AudioLib/Z2Creature.cpp +++ b/src/Z2AudioLib/Z2Creature.cpp @@ -7,153 +7,101 @@ #include "Z2AudioLib/Z2Param.h" #include "Z2AudioLib/Z2Calc.h" #include "Z2AudioLib/Z2AudioMgr.h" -#include "dol2asm.h" static void Z2_E_sw_modPitch(Z2SoundHandlePool*, u32); static void Z2_E_ms_modVol(Z2SoundHandlePool*, u32); static void Z2_E_mm_modPitch(Z2SoundHandlePool*, u32); static void Z2_B_zan_modPitch(Z2SoundHandlePool*, u32); -// -// External References: -// +/* 80455BD8-80455BDC 0041D8 0004+00 1/1 0/0 0/0 .sdata2 sAreaDefault */ +static Z2EnemyArea const sAreaDefault = {true, 700, 1100, 1500}; -extern "C" void __dt__16Z2SoundObjSimpleFv(); -extern "C" void moveVolume__18JAISoundParamsMoveFfUl(); -extern "C" void movePitch__18JAISoundParamsMoveFfUl(); -extern "C" void linearTransform__6Z2CalcFfffffb(); -extern "C" void getParamByExp__6Z2CalcFffffffQ26Z2Calc9CurveSign(); -extern "C" void getRandom__6Z2CalcFfff(); -extern "C" void getHandleSoundID__14Z2SoundHandlesF10JAISoundID(); -extern "C" void incrCrowdSize__7Z2SeMgrFv(); -extern "C" void decrCrowdSize__7Z2SeMgrFv(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void subBgmStart__8Z2SeqMgrFUl(); -extern "C" void subBgmStop__8Z2SeqMgrFv(); -extern "C" void setChildTrackVolume__8Z2SeqMgrFP14JAISoundHandleifUlff(); -extern "C" void setBattleSeqState__8Z2SeqMgrFUc(); -extern "C" void setBattleLastHit__8Z2SeqMgrFUc(); -extern "C" void convertAbsToRel__10Z2AudienceFR3VecP3Veci(); -extern "C" void calcRelPosVolume__10Z2AudienceFRC3Vecfi(); -extern "C" void calcRelPosPan__10Z2AudienceFRC3Veci(); -extern "C" void calcRelPosDolby__10Z2AudienceFRC3Veci(); -extern "C" void __ct__14Z2SoundObjBaseFv(); -extern "C" void __dt__14Z2SoundObjBaseFv(); -extern "C" void init__14Z2SoundObjBaseFP3VecUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void framework__14Z2SoundObjBaseFUlSc(); -extern "C" void dispose__14Z2SoundObjBaseFv(); -extern "C" void stopOK__14Z2SoundObjBaseFR17Z2SoundHandlePool(); -extern "C" void startSound__14Z2SoundObjBaseF10JAISoundIDUlSc(); -extern "C" void startLevelSound__14Z2SoundObjBaseF10JAISoundIDUlSc(); -extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __ct__15Z2SoundObjAnimeFv(); -extern "C" void initAnime__15Z2SoundObjAnimeFPvbff(); -extern "C" void updateAnime__15Z2SoundObjAnimeFff(); -extern "C" void func_802C0074(); -extern "C" void func_802C0190(); -extern "C" void isMidnaSpeak__12Z2SpeechMgr2Fv(); -extern "C" void __dl__FPv(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __construct_array(); -extern "C" void _savegpr_20(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_20(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__15Z2SoundObjAnime[8]; -extern "C" extern void* __vt__16Z2SoundObjSimple[8]; -extern "C" extern u8 data_80450B44[4]; -extern "C" extern u8 data_80450B48[4]; -extern "C" extern u8 data_80450B70[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 u8 struct_80451358[8]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 __OSReport_disable; +/* 80455BE0-80455BE4 0041E0 0004+00 1/1 0/0 0/0 .sdata2 sAreaFloating */ +static Z2EnemyArea const sAreaFloating = {false, 700, 1100, 1500}; -// -// Declarations: -// +/* 80455BE8-80455BEC 0041E8 0004+00 1/1 0/0 0/0 .sdata2 sAreaWide */ +static Z2EnemyArea const sAreaWide = {true, 700, 1500, 3300}; + +/* 80455BF0-80455BF4 0041F0 0004+00 1/1 0/0 0/0 .sdata2 sAreaWideFloating */ +static Z2EnemyArea const sAreaWideFloating = {false, 700, 1500, 3300}; + +/* 80455BF8-80455BFC 0041F8 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmall */ +static Z2EnemyArea const sAreaSmall = {true, 300, 700, 1000}; + +/* 80455C00-80455C04 004200 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmallFloating */ +static Z2EnemyArea const sAreaSmallFloating = {false, 500, 800, 1200}; + +struct EnemyInfo { + char mName[8]; + Z2EnemyArea mEnemyArea; +}; -/* ############################################################################################## */ /* 803CB230-803CB630 028350 0400+00 1/1 0/0 0/0 .data mEnemyInfo */ -SECTION_DATA static u8 mEnemyInfo[1024] = { - 0x44, 0x75, 0x6D, 0x6D, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x31, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0xBC, 0x04, 0xB0, 0x07, 0xD0, - 0x45, 0x5F, 0x79, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x79, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x79, 0x67, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x2C, 0x01, 0xF4, 0x02, 0xBC, - 0x45, 0x5F, 0x79, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x79, 0x64, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x03, 0x84, 0x05, 0xDC, - 0x45, 0x5F, 0x72, 0x64, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x79, 0x6D, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x14, 0x00, 0x1E, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x77, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x64, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x6B, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x74, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0xBC, 0x05, 0xDC, 0x09, 0xC4, - 0x45, 0x5F, 0x74, 0x6B, 0x32, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0xBC, 0x05, 0xDC, 0x09, 0xC4, - 0x45, 0x5F, 0x63, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x64, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x66, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x53, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x50, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x64, 0x62, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x03, 0x84, 0x07, 0x08, - 0x45, 0x5F, 0x6B, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x62, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xC8, 0x01, 0x90, 0x02, 0x58, - 0x45, 0x5F, 0x53, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x62, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x62, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x48, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x68, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF4, 0x03, 0x20, 0x05, 0x14, - 0x45, 0x5F, 0x77, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x6F, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x66, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x66, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x62, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x6D, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x03, 0x20, 0x05, 0xDC, - 0x45, 0x5F, 0x6E, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x02, 0xBC, 0x04, 0x4C, - 0x45, 0x5F, 0x70, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x72, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x67, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x02, 0xBC, 0x03, 0x84, - 0x45, 0x5F, 0x68, 0x62, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x03, 0x84, 0x05, 0xDC, - 0x45, 0x5F, 0x67, 0x62, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x40, 0x0B, 0xB8, 0x0F, 0xA0, - 0x45, 0x5F, 0x6D, 0x73, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x02, 0xBC, 0x04, 0x4C, - 0x45, 0x5F, 0x64, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x62, 0x69, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x02, 0xBC, 0x03, 0x84, - 0x45, 0x5F, 0x74, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x61, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x64, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x67, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x6D, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x73, 0x77, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x90, 0x02, 0x58, 0x05, 0xDC, - 0x45, 0x5F, 0x72, 0x64, 0x62, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0xF4, 0x03, 0xE8, 0x05, 0xDC, - 0x45, 0x5F, 0x6B, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x68, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x7A, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x67, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x5F, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE8, 0x07, 0xD0, 0x0F, 0xA0, - 0x45, 0x5F, 0x6D, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x5F, 0x7A, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x5F, 0x74, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static EnemyInfo mEnemyInfo[64] = { + {"Dummy", sAreaDefault}, + {"E_s1", {true, 700, 1200, 2000}}, + {"E_yk", sAreaSmallFloating}, + {"E_yr", sAreaWideFloating}, + {"E_yg", {true, 300, 500, 700}}, + {"E_yc", sAreaWideFloating}, + {"E_yd", {true, 500, 900, 1500}}, + {"E_rdy", sAreaDefault}, + {"E_ymb", {false, 10, 20, 30}}, + {"", sAreaDefault}, + {"E_wb", sAreaDefault}, + {"E_rd", sAreaDefault}, + {"E_dn", sAreaDefault}, + {"E_kr", sAreaWideFloating}, + {"E_st", sAreaDefault}, + {"E_tk", {true, 700, 1500, 2500}}, + {"E_tk2", {true, 700, 1500, 2500}}, + {"E_cr", sAreaSmall}, + {"E_df", sAreaDefault}, + {"E_fs", sAreaDefault}, + {"E_SB", sAreaDefault}, + {"E_PM", sAreaDefault}, + {"E_db", {true, 500, 900, 1800}}, + {"E_kg", sAreaSmall}, + {"E_sh", sAreaDefault}, + {"E_sf", sAreaDefault}, + {"E_bs", {true, 200, 400, 600}}, + {"E_SM", sAreaDefault}, + {"E_ba", sAreaSmallFloating}, + {"E_bu", sAreaFloating}, + {"E_HM", sAreaDefault}, + {"E_ge", sAreaFloating}, + {"E_hz", {false, 500, 800, 1300}}, + {"E_ws", sAreaSmallFloating}, + {"E_oc", sAreaDefault}, + {"E_fz", sAreaDefault}, + {"E_fb", sAreaDefault}, + {"E_bg", sAreaSmall}, + {"E_mm", {true, 500, 800, 1500}}, + {"E_nz", {true, 500, 700, 1100}}, + {"E_po", sAreaWide}, + {"E_rb", sAreaDefault}, + {"E_sg", {true, 500, 700, 900}}, + {"E_hb", {true, 500, 900, 1500}}, + {"E_gb", {true, 1600, 3000, 4000}}, + {"E_ms", {true, 500, 700, 1100}}, + {"E_dd", sAreaDefault}, + {"E_bi", {true, 500, 700, 900}}, + {"E_tt", sAreaSmallFloating}, + {"E_ai", sAreaDefault}, + {"E_dk", sAreaSmall}, + {"E_ww", sAreaWide}, + {"E_gi", sAreaDefault}, + {"E_sm2", sAreaDefault}, + {"E_sw", {true, 400, 600, 1500}}, + {"E_rdb", {true, 500, 1000, 1500}}, + {"E_kk", sAreaDefault}, + {"E_hp", sAreaDefault}, + {"E_zh", sAreaDefault}, + {"E_gm", sAreaSmall}, + {"B_GG", {false, 1000, 2000, 4000}}, + {"E_mf", sAreaDefault}, + {"E_zm", sAreaDefault}, + {"B_tn", sAreaDefault}, }; /* 802C03C8-802C0420 2BAD08 0058+00 3/3 3/3 129/129 .text __ct__10Z2CreatureFv */ @@ -224,43 +172,6 @@ void Z2Creature::stopAnime() { deleteObject(); } -/* ############################################################################################## */ -/* 80455BD8-80455BDC 0041D8 0004+00 1/1 0/0 0/0 .sdata2 sAreaDefault */ -SECTION_SDATA2 static u32 sAreaDefault = 0x010002BC; - -/* 80455BDC-80455BE0 0041DC 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BDC = 0x044C05DC; - -/* 80455BE0-80455BE4 0041E0 0004+00 1/1 0/0 0/0 .sdata2 sAreaFloating */ -SECTION_SDATA2 static u32 sAreaFloating = 0x000002BC; - -/* 80455BE4-80455BE8 0041E4 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BE4 = 0x044C05DC; - -/* 80455BE8-80455BEC 0041E8 0004+00 1/1 0/0 0/0 .sdata2 sAreaWide */ -SECTION_SDATA2 static u32 sAreaWide = 0x010002BC; - -/* 80455BEC-80455BF0 0041EC 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BEC = 0x05DC0CE4; - -/* 80455BF0-80455BF4 0041F0 0004+00 1/1 0/0 0/0 .sdata2 sAreaWideFloating */ -SECTION_SDATA2 static u32 sAreaWideFloating = 0x000002BC; - -/* 80455BF4-80455BF8 0041F4 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BF4 = 0x05DC0CE4; - -/* 80455BF8-80455BFC 0041F8 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmall */ -SECTION_SDATA2 static u32 sAreaSmall = 0x0100012C; - -/* 80455BFC-80455C00 0041FC 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BFC = 0x02BC03E8; - -/* 80455C00-80455C04 004200 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmallFloating */ -SECTION_SDATA2 static u32 sAreaSmallFloating = 0x000001F4; - -/* 80455C04-80455C08 004204 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455C04 = 0x032004B0; - /* 802C0720-802C087C 2BB060 015C+00 4/0 2/0 0/0 .text * startCreatureSound__10Z2CreatureF10JAISoundIDUlSc */ Z2SoundHandlePool* Z2Creature::startCreatureSound(JAISoundID i_soundID, u32 param_1, s8 param_2) { @@ -423,10 +334,9 @@ void Z2CreatureCitizen::setMdlType(s8 param_0, bool param_1, bool param_2) { /* 802C0E18-802C0ED8 2BB758 00C0+00 0/0 0/0 21/21 .text playVoice__17Z2CreatureCitizenFi */ -#ifdef NONMATCHING -// regalloc void Z2CreatureCitizen::playVoice(int i_sound) { - u32 sound_id = Z2SE_MAN_A1_V_AWAY + 6 * mCitizenID + i_sound; + u32 tmp = mCitizenID; + u32 sound_id = Z2SE_MAN_A1_V_AWAY + 6 * tmp + i_sound; switch (mCitizenID) { case 0: case 1: @@ -441,11 +351,6 @@ void Z2CreatureCitizen::playVoice(int i_sound) { mLinkSearch = true; } } -#else -void Z2CreatureCitizen::playVoice(int param_0) { - // NONMATCHING -} -#endif /* 802C0ED8-802C0F64 2BB818 008C+00 1/0 0/0 0/0 .text * startCreatureVoice__17Z2CreatureCitizenF10JAISoundIDSc */ @@ -478,7 +383,7 @@ Z2CreatureEnemy::Z2CreatureEnemy() : */ void Z2CreatureEnemy::deleteObject() { if (mEnemyID == 0x2c) { - Z2GetSeqMgr()->i_unMuteSceneBgm(0x21); + Z2GetSeqMgr()->unMuteSceneBgm(0x21); } if (getSupervisor() != NULL) { Z2GetSoundObjMgr()->removeEnemy(this); @@ -739,6 +644,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCreatureExtraSoundLevel(JAISoundID i_so /* 802C1A14-802C1B7C 2BC354 0168+00 4/0 0/0 0/0 .text startCollisionSE__15Z2CreatureEnemyFUlUl */ Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) { + u8 var1; switch (mEnemyID) { case 0x21: field_0xa3 = 1; @@ -766,7 +672,7 @@ Z2SoundHandlePool* Z2CreatureEnemy::startCollisionSE(u32 param_0, u32 param_1) { case 0x20: case 0x24: field_0xa3 = 1; - u8 var1 = struct_80450869; + var1 = struct_80450869; if (param_0 - 0x40000 <= 1 || param_0 - 0x40000 == 3) { var1 = 0x14; } @@ -1208,12 +1114,3 @@ static void Z2_B_zan_modPitch(Z2SoundHandlePool* i_handle, u32 param_1) { (*i_handle)->getAuxiliary().moveVolume(volume, 0); } } - -/* 802C3040-802C321C 2BD980 01DC+00 0/0 1/0 0/0 .text __sinit_Z2Creature_cpp */ -void __sinit_Z2Creature_cpp(){// NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x802C3040, __sinit_Z2Creature_cpp); -#pragma pop \ No newline at end of file diff --git a/src/Z2AudioLib/Z2EnvSeMgr.cpp b/src/Z2AudioLib/Z2EnvSeMgr.cpp index 50d620c865..9189867d2d 100644 --- a/src/Z2AudioLib/Z2EnvSeMgr.cpp +++ b/src/Z2AudioLib/Z2EnvSeMgr.cpp @@ -1181,22 +1181,23 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) { f32 dVar15 = mEtcSeMgr.getDolbyPower(); bool rv = false; f32 dVar18 = field_0x21c; - f32 local_90; + f32 local_90, local_98, local_9c, local_a0; + bool iVar5, iVar6, iVar7, iVar8; switch (field_0x214) { case 0x11: local_90 = Z2Calc::linearTransform(field_0x120.calcNoise1f(), 0.0f, 1.0f, 0.01f, 1.0f, true); dVar18 *= Z2Calc::linearTransform(field_0x130.calcNoise1f(), 0.0f, 1.0f, 0.8f, 1.2f, true); - bool iVar8 = field_0x20c.startEnvSeLevel(Z2SE_OBJ_RANCH_WOODPLATE, dVar17, + iVar8 = field_0x20c.startEnvSeLevel(Z2SE_OBJ_RANCH_WOODPLATE, dVar17, (dVar19 * local_90), dVar14, dVar15, dVar18, 0); local_90 = Z2Calc::linearTransform(local_90, 0.0f, 1.0f, 0.3f, 1.0f, true); field_0x0.calcPan(); field_0x1c.calcPan(); - bool iVar6 = field_0x0.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, local_90, dVar18); - bool iVar7 = field_0x1c.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, 0.7f * local_90, + iVar6 = field_0x0.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, local_90, dVar18); + iVar7 = field_0x1c.startEnvSeAutoPanLevel(JA_SE_ATM_WIND_1, dVar17, 0.7f * local_90, (0.8f * dVar18)); - bool iVar5 = false; + iVar5 = false; if (iVar8 && iVar6 && iVar7) { iVar5 = true; } @@ -1265,11 +1266,11 @@ bool Z2EnvSeMgr::startEtcSe(s8 param_1) { case 0x0: break; case 0x10: - f32 local_98 = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.2f, 1.0f, + local_98 = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.2f, 1.0f, Z2Calc::CURVE_SIGN_0); - f32 local_9c = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.75f, 1.0f, + local_9c = Z2Calc::getParamByExp(getFogDensity(), 0.4f, 1.0f, 0.2f, 0.75f, 1.0f, Z2Calc::CURVE_SIGN_0); - f32 local_a0 = field_0x2e8.calcNoise1f(); + local_a0 = field_0x2e8.calcNoise1f(); rv = field_0x240.startEnvSeLevel(Z2SE_ENV_PUPPET_FOG_L, 0.3f, (dVar19 * ((0.332f + 0.668f * local_a0) * local_98)), dVar14, dVar15, 0.8f + 0.2f * local_a0, 0); @@ -1299,6 +1300,7 @@ bool Z2EnvSeMgr::startFogWipeTrigger(Vec* param_0) { (JGeometry::TVec3*)param_0, fogDensity2, 0.3f, 1.0f, fogDensity, -1.0f, -1.0f, 0); } + //! @bug does not always return a value } /* 802C93A0-802C93E4 2C3CE0 0044+00 0/0 0/0 1/1 .text setFogWipeWidth__10Z2EnvSeMgrFf */ @@ -1331,7 +1333,7 @@ bool Z2EnvSeMgr::startFogSe() { dVar13, 0); bool uVar8 = false; if (iVar5 && iVar6) { - uVar8 = 1; + uVar8 = true; } return uVar8; } diff --git a/src/Z2AudioLib/Z2FxLineMgr.cpp b/src/Z2AudioLib/Z2FxLineMgr.cpp index 8a92d1f9d0..c1a7d1645c 100644 --- a/src/Z2AudioLib/Z2FxLineMgr.cpp +++ b/src/Z2AudioLib/Z2FxLineMgr.cpp @@ -4,180 +4,224 @@ // #include "Z2AudioLib/Z2FxLineMgr.h" -#include "dol2asm.h" - -// -// Types: -// - -struct JSUMemoryInputStream { - /* 802DC520 */ void setBuffer(void const*, s32); -}; - -struct JSUInputStream { - /* 802DC23C */ ~JSUInputStream(); - /* 802DC298 */ void read(void*, s32); -}; - -struct JASDsp { - struct FxlineConfig_ {}; - - /* 8029DB78 */ void setFXLine(u8, s16*, JASDsp::FxlineConfig_*); -}; - -// -// Forward References: -// - -extern "C" void __ct__11Z2FxLineMgrFv(); -extern "C" void initDataArc__11Z2FxLineMgrFP10JKRArchiveP7JKRHeap(); -extern "C" void setLineID__11Z2FxLineMgrFScbb(); -extern "C" void setLine__11Z2FxLineMgrFP14Z2FxLineConfigbb(); -extern "C" void setFxForceOff__11Z2FxLineMgrFb(); -extern "C" void setUnderWaterFx__11Z2FxLineMgrFb(); -extern "C" void setSceneFx__11Z2FxLineMgrFl(); - -// -// External References: -// - -extern "C" void setFXLine__6JASDspFUcPsPQ26JASDsp13FxlineConfig_(); -extern "C" void free__7JKRHeapFPvP7JKRHeap(); -extern "C" void* __nwa__FUlP7JKRHeapi(); -extern "C" void getResource__10JKRArchiveFUs(); -extern "C" void countResource__10JKRArchiveCFv(); -extern "C" void __dt__14JSUInputStreamFv(); -extern "C" void read__14JSUInputStreamFPvl(); -extern "C" void setBuffer__20JSUMemoryInputStreamFPCvl(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_28(); -extern "C" extern void* __vt__10JSUIosBase[3]; -extern "C" extern void* __vt__20JSURandomInputStream[9]; -extern "C" extern void* __vt__14JSUInputStream[6 + 1 /* padding */]; -extern "C" extern void* __vt__20JSUMemoryInputStream[9 + 1 /* padding */]; -extern "C" extern u8 data_80450B80[4]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// +#include "Z2AudioLib/Z2SceneMgr.h" +#include "JSystem/JAudio2/JASDSPInterface.h" +#include "JSystem/JKernel/JKRArchive.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JSupport/JSUMemoryStream.h" /* 802BA7DC-802BA7FC 2B511C 0020+00 0/0 1/1 0/0 .text __ct__11Z2FxLineMgrFv */ Z2FxLineMgr::Z2FxLineMgr() : JASGlobalInstance(this) { - // NONMATCHING + mConfig = NULL; + mLineID = -1; + mFxDataNum = 0; + mSetUnderWaterFx = false; } /* 802BA7FC-802BAC28 2B513C 042C+00 0/0 1/1 0/0 .text * initDataArc__11Z2FxLineMgrFP10JKRArchiveP7JKRHeap */ -void Z2FxLineMgr::initDataArc(JKRArchive* param_0, JKRHeap* param_1) { - // NONMATCHING +void Z2FxLineMgr::initDataArc(JKRArchive* arc, JKRHeap* heap) { + mFxLineBuffer[0] = new (heap, 0x20) u8[0x2800]; + mFxLineBuffer[1] = new (heap, 0x20) u8[0x2800]; + mFxLineBuffer[2] = new (heap, 0x20) u8[0x4B00]; + mFxLineBuffer[3] = new (heap, 0x20) u8[0x4B00]; + mFxDataNum = arc->countResource(); + mConfig = new (heap, 0) Z2FxLineConfig[mFxDataNum]; + for (u8 i = 0; i < mFxDataNum; i++) { + void* res = arc->getResource(i); + u32 size = (arc->getResSize(res) + 0x1f) & ~0x1f; + JSUMemoryInputStream stream(res, size); + stream >> mConfig[i].field_0x0; + stream >> mConfig[i].field_0x1; + stream >> mConfig[i].field_0x2; + stream >> mConfig[i].field_0x3; + stream >> mConfig[i].field_0x4; + stream >> mConfig[i].field_0x6; + stream >> mConfig[i].field_0x8[0]; + stream >> mConfig[i].field_0x8[1]; + stream >> mConfig[i].field_0x8[2]; + stream >> mConfig[i].field_0x8[3]; + stream >> mConfig[i].field_0x8[4]; + stream >> mConfig[i].field_0x8[5]; + stream >> mConfig[i].field_0x8[6]; + stream >> mConfig[i].field_0x8[7]; + stream >> mConfig[i].field_0x18; + stream >> mConfig[i].field_0x19; + stream >> mConfig[i].field_0x1a; + stream >> mConfig[i].field_0x1b; + stream >> mConfig[i].field_0x1c; + stream >> mConfig[i].field_0x1e; + stream >> mConfig[i].field_0x20[0]; + stream >> mConfig[i].field_0x20[1]; + stream >> mConfig[i].field_0x20[2]; + stream >> mConfig[i].field_0x20[3]; + stream >> mConfig[i].field_0x20[4]; + stream >> mConfig[i].field_0x20[5]; + stream >> mConfig[i].field_0x20[6]; + stream >> mConfig[i].field_0x20[7]; + JKRFree(res); + } + setLineID(-1, false, false); + setLineID(-1, true, false); } /* 802BAC28-802BAC74 2B5568 004C+00 4/4 0/0 0/0 .text setLineID__11Z2FxLineMgrFScbb */ -void Z2FxLineMgr::setLineID(s8 param_0, bool param_1, bool param_2) { - // NONMATCHING +void Z2FxLineMgr::setLineID(s8 fxID, bool param_1, bool param_2) { + if (fxID < 0) { + mLineID = 0; + } else { + mLineID = fxID; + } + setLine(&mConfig[mLineID], param_1, param_2); } /* 802BAC74-802BAE1C 2B55B4 01A8+00 1/1 0/0 0/0 .text setLine__11Z2FxLineMgrFP14Z2FxLineConfigbb */ -void Z2FxLineMgr::setLine(Z2FxLineConfig* param_0, bool param_1, bool param_2) { - // NONMATCHING +void Z2FxLineMgr::setLine(Z2FxLineConfig* config, bool param_1, bool param_2) { + u8 buf1 = 0; + u8 buf2 = 1; + if (param_1) { + buf1 = 2; + buf2 = 3; + } + + if (mFxLineBuffer[buf1] == NULL || mFxLineBuffer[buf2] == NULL) { + return; + } + + JASDsp::FxlineConfig_ dsp_config; + dsp_config.field_0x0 = config->field_0x0; + dsp_config.field_0x2 = config->field_0x1; + dsp_config.field_0x6 = config->field_0x2; + if (param_2) { + dsp_config.field_0x4 = 0; + dsp_config.field_0x8 = 0; + } else { + dsp_config.field_0x4 = config->field_0x4; + dsp_config.field_0x8 = config->field_0x6; + } + dsp_config.field_0xc = config->field_0x3; + dsp_config.field_0x10[0] = config->field_0x8[0]; + dsp_config.field_0x10[1] = config->field_0x8[1]; + dsp_config.field_0x10[2] = config->field_0x8[2]; + dsp_config.field_0x10[3] = config->field_0x8[3]; + dsp_config.field_0x10[4] = config->field_0x8[4]; + dsp_config.field_0x10[5] = config->field_0x8[5]; + dsp_config.field_0x10[6] = config->field_0x8[6]; + dsp_config.field_0x10[7] = config->field_0x8[7]; + JASDsp::setFXLine(buf1, (s16*)mFxLineBuffer[buf1], &dsp_config); + + dsp_config.field_0x0 = config->field_0x18; + dsp_config.field_0x2 = config->field_0x19; + dsp_config.field_0x6 = config->field_0x1a; + if (param_2) { + dsp_config.field_0x4 = 0; + dsp_config.field_0x8 = 0; + } else { + dsp_config.field_0x4 = config->field_0x1c; + dsp_config.field_0x8 = config->field_0x1e; + } + dsp_config.field_0xc = config->field_0x1b; + dsp_config.field_0x10[0] = config->field_0x20[0]; + dsp_config.field_0x10[1] = config->field_0x20[1]; + dsp_config.field_0x10[2] = config->field_0x20[2]; + dsp_config.field_0x10[3] = config->field_0x20[3]; + dsp_config.field_0x10[4] = config->field_0x20[4]; + dsp_config.field_0x10[5] = config->field_0x20[5]; + dsp_config.field_0x10[6] = config->field_0x20[6]; + dsp_config.field_0x10[7] = config->field_0x20[7]; + JASDsp::setFXLine(buf2, (s16*)mFxLineBuffer[buf2], &dsp_config); } /* 802BAE1C-802BAE48 2B575C 002C+00 0/0 1/1 0/0 .text setFxForceOff__11Z2FxLineMgrFb */ void Z2FxLineMgr::setFxForceOff(bool param_0) { - // NONMATCHING + setLineID(mLineID, true, param_0); } /* 802BAE48-802BAEB8 2B5788 0070+00 0/0 1/1 0/0 .text setUnderWaterFx__11Z2FxLineMgrFb */ void Z2FxLineMgr::setUnderWaterFx(bool param_0) { - // NONMATCHING + if (mSetUnderWaterFx != param_0) { + if (param_0) { + setLineID(12, true, false); + } else { + setSceneFx(Z2GetSceneMgr()->getCurrentSceneNum()); + } + mSetUnderWaterFx = param_0; + } } -/* ############################################################################################## */ -/* 803CAB18-803CAC48 -00001 0130+00 1/1 0/0 0/0 .data @3566 */ -SECTION_DATA static void* lit_3566[76] = { - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x88), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x68), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x68), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x68), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xB0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x68), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x68), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x54), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x9C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x9C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x9C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xB0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xB0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xB0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xD0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xD0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xD0), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xE4), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xE4), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xE4), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xF8), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xF8), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xF8), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x10C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x10C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x10C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x120), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x120), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0xE4), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x9C), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x134), - (void*)(((char*)setSceneFx__11Z2FxLineMgrFl) + 0x7C), -}; - /* 802BAEB8-802BB00C 2B57F8 0154+00 2/1 1/1 0/0 .text setSceneFx__11Z2FxLineMgrFl */ -void Z2FxLineMgr::setSceneFx(s32 param_0) { - // NONMATCHING -} \ No newline at end of file +void Z2FxLineMgr::setSceneFx(s32 sceneNum) { + if (Z2GetSceneMgr()->isInDarkness()) { + setLineID(11, true, false); + } else { + switch (sceneNum) { + case SPOT_SHADES_REALM: + setLineID(9, true, false); + break; + case SPOT_KAKARIKO_VILLAGE: + case SPOT_DEATH_MOUNTAIN: + case SPOT_HIDDEN_VILLAGE: + case SPOT_ZORAS_RIVER: + case SPOT_HYRULE_FIELD: + setLineID(10, true, false); + break; + case SPOT_SACRED_GROVE: + case SPOT_FOREST_TEMPLE: + case SPOT_FOREST_TEMPLE_MINIBOSS: + case SPOT_FOREST_TEMPLE_BOSS: + case SPOT_GORGE_LANTERN_CAVE: + case SPOT_LAKE_LANTERN_CAVE: + case SPOT_FARON_WOODS_CAVE: + if (Z2GetSceneMgr()->getCurrentRoomNum() == 2) { + return; + } + // fallthrough + case SPOT_FARON_WOODS: + setLineID(1, true, false); + break; + case SPOT_GORON_MINES: + case SPOT_GORON_MINES_MINIBOSS: + case SPOT_GORON_MINES_BOSS: + case SPOT_ELDIN_MAGNET_CAVE: + setLineID(2, true, false); + break; + case SPOT_LAKE_HYLIA: + case SPOT_LAKEBED_TEMPLE: + case SPOT_LAKEBED_TEMPLE_MINIBOSS: + case SPOT_LAKEBED_TEMPLE_BOSS: + if (Z2GetSceneMgr()->getCurrentRoomNum() == 1) { + setLineID(3, true, false); + } + break; + case SPOT_ARBITERS_GROUNDS: + case SPOT_ARBITERS_GROUNDS_MINIBOSS: + case SPOT_ARBITERS_GROUNDS_BOSS: + setLineID(4, true, false); + break; + case SPOT_SNOWPEAK_RUINS: + case SPOT_SNOWPEAK_RUINS_MINIBOSS: + case SPOT_SNOWPEAK_RUINS_BOSS: + case SPOT_ICE_BLOCK_PUZZLE: + setLineID(5, true, false); + break; + case SPOT_TEMPLE_OF_TIME: + case SPOT_TEMPLE_OF_TIME_MINIBOSS: + case SPOT_TEMPLE_OF_TIME_BOSS: + setLineID(6, true, false); + break; + case SPOT_CITY_IN_THE_SKY: + case SPOT_CITY_IN_THE_SKY_MINIBOSS: + case SPOT_CITY_IN_THE_SKY_BOSS: + setLineID(7, true, false); + break; + case SPOT_HYRULE_CASTLE: + case SPOT_FINAL_BATTLE_THRONE_ROOM: + setLineID(8, true, false); + break; + default: + setLineID(-1, true, false); + break; + } + } +} diff --git a/src/Z2AudioLib/Z2SceneMgr.cpp b/src/Z2AudioLib/Z2SceneMgr.cpp index 632b680532..46909a28cc 100644 --- a/src/Z2AudioLib/Z2SceneMgr.cpp +++ b/src/Z2AudioLib/Z2SceneMgr.cpp @@ -3,908 +3,2053 @@ // Translation Unit: Z2SceneMgr // +#include "JSystem/JAudio2/JASBasicWaveBank.h" +#include "JSystem/JAudio2/JAUSectionHeap.h" +#include "JSystem/JAudio2/JAUSoundTable.h" #include "Z2AudioLib/Z2SceneMgr.h" -#include "Z2AudioLib/Z2SoundMgr.h" -#include "Z2AudioLib/Z2SeqMgr.h" -#include "Z2AudioLib/Z2SeMgr.h" #include "Z2AudioLib/Z2Param.h" -#include "dol2asm.h" - -// -// Types: -// - -struct dSv_memBit_c { - /* 80034860 */ void isSwitch(int) const; -}; - -struct dSv_info_c { - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - -struct Z2SoundObjMgr { - /* 802BF980 */ void setForceBattleArea(bool, u16, u16, u16); - /* 802BFFEC */ void setGhostEnemyState(u8); - /* 802C013C */ void deleteEnemyAll(); -}; - -struct Z2FxLineMgr { - /* 802BAEB8 */ void setSceneFx(s32); -}; - -struct Z2EnvSeMgr { - /* 802C699C */ void resetSceneInner(); - /* 802C6AC0 */ void initSceneEnvSe(s32, s8, f32); -}; - -struct JAUSoundTable { - /* 802A7160 */ void getTypeID(JAISoundID) const; -}; - -struct JASWaveArc { - /* 8029A4C0 */ void load(JASHeap*); - /* 8029A580 */ void loadTail(JASHeap*); - /* 8029A640 */ void erase(); -}; - -// -// Forward References: -// - -extern "C" void __ct__10Z2SceneMgrFv(); -extern "C" void setInDarkness__10Z2SceneMgrFb(); -extern "C" void setSceneExist__10Z2SceneMgrFb(); -extern "C" void setFadeOutStart__10Z2SceneMgrFUc(); -extern "C" void setFadeInStart__10Z2SceneMgrFUc(); -extern "C" void setSceneName__10Z2SceneMgrFPcll(); -extern "C" void __ct__10JAISoundIDFRC10JAISoundID(JAISoundID* this_, JAISoundID const& soundIdToSet); -extern "C" void setFieldBgmPlay__8Z2SeqMgrFb(); -extern "C" void isActive__12JAIStreamMgrCFv(); -extern "C" void getID__8JAISoundCFv(); -extern "C" void func_802B9994(void* _this); -extern "C" static void dComIfGs_getStartPoint__Fv(); -extern "C" void unMuteSceneBgm__8Z2SeqMgrFUl(); -extern "C" void muteSceneBgm__8Z2SeqMgrFUlf(); -extern "C" static void dComIfGs_isSaveSwitch__Fi(); -extern "C" void resetCrowdSize__7Z2SeMgrFv(); -extern "C" void setTwilightGateVol__8Z2SeqMgrFf(); -extern "C" void setWindStoneVol__8Z2SeqMgrFfUl(); -extern "C" void __as__10JAISoundIDFRC10JAISoundID(JAISoundID* this_, JAISoundID const& param_0); -extern "C" void sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb(); -extern "C" void framework__10Z2SceneMgrFv(); -extern "C" void load1stDynamicWave__10Z2SceneMgrFv(); -extern "C" void _load1stWaveInner_1__10Z2SceneMgrFv(); -extern "C" void _load1stWaveInner_2__10Z2SceneMgrFv(); -extern "C" void check1stDynamicWave__10Z2SceneMgrFv(); -extern "C" void load2ndDynamicWave__10Z2SceneMgrFv(); -extern "C" void sceneBgmStart__10Z2SceneMgrFv(); -extern "C" void loadStaticWaves__10Z2SceneMgrFv(); -extern "C" bool checkFirstWaves__10Z2SceneMgrFv(); -extern "C" void eraseSeWave__10Z2SceneMgrFUl(); -extern "C" void eraseBgmWave__10Z2SceneMgrFUl(); -extern "C" void getWaveLoadStatus__10Z2SceneMgrFUlUl(); -extern "C" void loadSeWave__10Z2SceneMgrFUl(); -extern "C" void loadBgmWave__10Z2SceneMgrFUl(); -extern "C" void __ct__10JAISoundIDFUl(void* param_0, u32 param_1); -extern "C" extern char const* const Z2SceneMgr__stringBase0; - -// -// External References: -// - -extern "C" void dComIfGs_isStageSwitch__Fii(); -extern "C" void isSwitch__12dSv_memBit_cCFi(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void dComIfGs_isEventBit__FUs(); -extern "C" void load__10JASWaveArcFP7JASHeap(); -extern "C" void loadTail__10JASWaveArcFP7JASHeap(); -extern "C" void erase__10JASWaveArcFv(); -extern "C" void stop__8JAISoundFUl(); -extern "C" void moveVolume__18JAISoundParamsMoveFfUl(); -extern "C" void getTypeID__13JAUSoundTableCF10JAISoundID(); -extern "C" void resetFilterAll__10Z2SoundMgrFv(); -extern "C" void resetModY__7Z2SeMgrFv(); -extern "C" void seStopAll__7Z2SeMgrFUl(); -extern "C" void seMoveVolumeAll__7Z2SeMgrFfUl(); -extern "C" void bgmStart__8Z2SeqMgrFUlUll(); -extern "C" void bgmStop__8Z2SeqMgrFUll(); -extern "C" void bgmStreamPrepare__8Z2SeqMgrFUl(); -extern "C" void bgmStreamCheckReady__8Z2SeqMgrFv(); -extern "C" void bgmStreamPlay__8Z2SeqMgrFv(); -extern "C" void changeBgmStatus__8Z2SeqMgrFl(); -extern "C" void setHeightVolMod__8Z2SeqMgrFbUl(); -extern "C" void setTimeProcVolMod__8Z2SeqMgrFbUl(); -extern "C" void checkBgmIDPlaying__8Z2SeqMgrFUl(); -extern "C" void resetBattleBgmParams__8Z2SeqMgrFv(); -extern "C" void setBattleBgmOff__8Z2SeqMgrFb(); -extern "C" void menuOut__11Z2StatusMgrFv(); -extern "C" void setDemoName__11Z2StatusMgrFPc(); -extern "C" void checkDayTime__11Z2StatusMgrFv(); -extern "C" void setSceneFx__11Z2FxLineMgrFl(); -extern "C" void setForceBattleArea__13Z2SoundObjMgrFbUsUsUs(); -extern "C" void setGhostEnemyState__13Z2SoundObjMgrFUc(); -extern "C" void deleteEnemyAll__13Z2SoundObjMgrFv(); -extern "C" void resetSceneInner__10Z2EnvSeMgrFv(); -extern "C" void initSceneEnvSe__10Z2EnvSeMgrFlScf(); -extern "C" void _savegpr_16(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_16(); -extern "C" void _restgpr_29(); -extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u8 data_80450B3C[4]; -extern "C" extern u8 data_80450B40[4]; -extern "C" extern u8 data_80450B48[4]; -extern "C" extern u8 data_80450B58[4]; -extern "C" extern Z2SoundMgr* data_80450B60; -extern "C" extern u8 data_80450B7C[4]; -extern "C" extern Z2SeMgr* data_80450B88; -extern "C" extern u8 data_80450CC0[4 + 4 /* padding */]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// +#include "Z2AudioLib/Z2SeMgr.h" +#include "Z2AudioLib/Z2SeqMgr.h" +#include "Z2AudioLib/Z2SoundMgr.h" +#include "Z2AudioLib/Z2SoundObjMgr.h" +#include "Z2AudioLib/Z2StatusMgr.h" +#include "d/d_com_inf_game.h" /* 802B6840-802B68B0 2B1180 0070+00 0/0 1/1 0/0 .text __ct__10Z2SceneMgrFv */ Z2SceneMgr::Z2SceneMgr(void) : JASGlobalInstance(this) { - volatile int timerx; sceneNum = -1; - timerx = -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; + requestSeWave_1 = 0; + loadedSeWave_1 = 0; + requestSeWave_2 = 0; + loadedSeWave_2 = 0; + requestBgmWave_1 = 0; + loadedBgmWave_1 = 0; + requestBgmWave_2 = 0; + loadedBgmWave_2 = 0; + requestDemoWave = 0; + loadedDemoWave = 0; field_0x18 = 0; field_0x19 = 0; - field_0x1a = 0; - field_0x1b = 0; + field_0x1a = false; + field_0x1b = false; sceneExist = 0; inGame = 0; inDarkness = false; - field_0x17 = 0; + load1stWait = 0; } /* 802B68B0-802B68E0 2B11F0 0030+00 0/0 1/1 0/0 .text setInDarkness__10Z2SceneMgrFb */ void Z2SceneMgr::setInDarkness(bool param_0) { inDarkness = param_0; if (!param_0) { - Z2SoundMgr::getInstance()->resetFilterAll(); + Z2GetSoundMgr()->resetFilterAll(); } } -/* ############################################################################################## */ -/* 80455A38-80455A3C 004038 0004+00 8/8 0/0 0/0 .sdata2 @3511 */ -SECTION_SDATA2 static u8 lit_3511[4] = { - 0x00, - 0x00, - 0x00, - 0x00, +static char* sSpotName[81] = { + "F_SP00", + "F_SP103", + "R_SP01", + "F_SP104", + "R_SP107", + "F_SP108", + "R_SP108", + "F_SP117", + "F_SP109", + "R_SP109", + "R_SP209", + "F_SP110", + "R_SP110", + "F_SP111", + "F_SP128", + "R_SP128", + "F_SP115", + "F_SP112", + "F_SP126", + "F_SP127", + "R_SP127", + "F_SP113", + "F_SP116", + "R_SP116", + "R_SP160", + "R_SP161", + "F_SP114", + "F_SP118", + "F_SP124", + "F_SP125", + "F_SP121", + "F_SP122", + "F_SP123", + "F_SP200", + "F_SP102", + "", + "R_SP300", + "R_SP301", + "T_ENEMY", + "D_MN54", + "D_MN05", + "D_MN05B", + "D_MN05A", + "D_MN04", + "D_MN04B", + "D_MN04A", + "D_MN01", + "D_MN01B", + "D_MN01A", + "D_MN10", + "D_MN10B", + "D_MN10A", + "D_MN11", + "D_MN11B", + "D_MN11A", + "D_MN06", + "D_MN06B", + "D_MN06A", + "D_MN07", + "D_MN07B", + "D_MN07A", + "D_MN08", + "D_MN08B", + "D_MN08C", + "D_MN08A", + "D_MN08D", + "D_MN09", + "D_MN09A", + "D_MN09B", + "D_MN09C", + "D_SB00", + "D_SB01", + "D_SB02", + "D_SB03", + "D_SB04", + "D_SB05", + "D_SB06", + "D_SB07", + "D_SB08", + "D_SB09", + "D_SB10", }; -/* 80455A3C-80455A40 00403C 0004+00 6/6 0/0 0/0 .sdata2 @3512 */ -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) { sceneExist = param_1; timer = 0; - JAISeMgr* seMgr = data_80450B60->getSeMgr(); + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); if (param_1) { inGame = 1; - if (SeWave_3 == 0x85) { - seMgr->getCategory(9)->getParams()->moveVolume(FLOAT_LABEL(lit_3511), 0); - } else if (SeWave_3 == 0x7F) { - data_80450B88->seMoveVolumeAll(FLOAT_LABEL(lit_3511), 0); + if (requestDemoWave == 0x85) { + seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0); + } else if (requestDemoWave == 0x7F) { + Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0); } else { - seMgr->getCategory(9)->getParams()->moveVolume(lit_3512, 33); + seMgr->getCategory(9)->getParams()->moveVolume(1.0f, 33); } } else { - seMgr->getCategory(9)->getParams()->moveVolume(FLOAT_LABEL(lit_3511), 180); + seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 180); } } -#else -void Z2SceneMgr::setSceneExist(bool param_0) { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 80455A40-80455A48 004040 0004+04 1/1 0/0 0/0 .sdata2 @3529 */ -SECTION_SDATA2 static f32 lit_3529[1 + 1 /* padding */] = { - 3.0f / 10.0f, - /* padding */ - 0.0f, -}; - -/* 80455A48-80455A50 004048 0008+00 5/5 0/0 0/0 .sdata2 @3531 */ -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; + Z2GetSeqMgr()->bgmAllMute(33, 3.0f / 10.0f); + Z2GetSeMgr()->seMoveVolumeAll(0.0f, 33); + Z2GetSeqMgr()->setBattleBgmOff(true); + load1stWait = 40; timer = -1; } -#else -void Z2SceneMgr::setFadeOutStart(u8 param_0) { - // NONMATCHING -} -#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); + if (requestDemoWave == 0x7f) { + Z2GetSeMgr()->seMoveVolumeAll(0.0f, 0); } else { - Z2SeMgr::getInstance()->seMoveVolumeAll(FLOAT_LABEL(lit_3512), 33); + Z2GetSeMgr()->seMoveVolumeAll(1.0f, 33); - if (SeWave_3 == 0x85) { - JAISeMgr* seMgr = Z2SoundMgr::getInstance()->getSeMgr(); - seMgr->getCategory(9)->getParams()->moveVolume(FLOAT_LABEL(lit_3511), 0); + if (requestDemoWave == 0x85) { + JAISeMgr* seMgr = Z2GetSoundMgr()->getSeMgr(); + seMgr->getCategory(9)->getParams()->moveVolume(0.0f, 0); } } - Z2SeqMgr::getInstance()->i_setTwilightGateVol(FLOAT_LABEL(lit_3512)); - Z2StatusMgr::getInstance()->menuOut(); + Z2GetSeqMgr()->setTwilightGateVol(1.0f); + Z2GetStatusMgr()->menuOut(); - if (field_0x1a == 0) { - Z2SeqMgr::getInstance()->bgmAllMute(33, 3.0f / 10.0f); + if (!field_0x1a) { + Z2GetSeqMgr()->bgmAllMute(33, 1.0f); } inGame = true; } -#else -void Z2SceneMgr::setFadeInStart(u8 param_0) { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 8039BFA8-8039BFA8 028608 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039BFA8 = "F_SP00"; -SECTION_DEAD static char const* const stringBase_8039BFAF = "F_SP103"; -SECTION_DEAD static char const* const stringBase_8039BFB7 = "R_SP01"; -SECTION_DEAD static char const* const stringBase_8039BFBE = "F_SP104"; -SECTION_DEAD static char const* const stringBase_8039BFC6 = "R_SP107"; -SECTION_DEAD static char const* const stringBase_8039BFCE = "F_SP108"; -SECTION_DEAD static char const* const stringBase_8039BFD6 = "R_SP108"; -SECTION_DEAD static char const* const stringBase_8039BFDE = "F_SP117"; -SECTION_DEAD static char const* const stringBase_8039BFE6 = "F_SP109"; -SECTION_DEAD static char const* const stringBase_8039BFEE = "R_SP109"; -SECTION_DEAD static char const* const stringBase_8039BFF6 = "R_SP209"; -SECTION_DEAD static char const* const stringBase_8039BFFE = "F_SP110"; -SECTION_DEAD static char const* const stringBase_8039C006 = "R_SP110"; -SECTION_DEAD static char const* const stringBase_8039C00E = "F_SP111"; -SECTION_DEAD static char const* const stringBase_8039C016 = "F_SP128"; -SECTION_DEAD static char const* const stringBase_8039C01E = "R_SP128"; -SECTION_DEAD static char const* const stringBase_8039C026 = "F_SP115"; -SECTION_DEAD static char const* const stringBase_8039C02E = "F_SP112"; -SECTION_DEAD static char const* const stringBase_8039C036 = "F_SP126"; -SECTION_DEAD static char const* const stringBase_8039C03E = "F_SP127"; -SECTION_DEAD static char const* const stringBase_8039C046 = "R_SP127"; -SECTION_DEAD static char const* const stringBase_8039C04E = "F_SP113"; -SECTION_DEAD static char const* const stringBase_8039C056 = "F_SP116"; -SECTION_DEAD static char const* const stringBase_8039C05E = "R_SP116"; -SECTION_DEAD static char const* const stringBase_8039C066 = "R_SP160"; -SECTION_DEAD static char const* const stringBase_8039C06E = "R_SP161"; -SECTION_DEAD static char const* const stringBase_8039C076 = "F_SP114"; -SECTION_DEAD static char const* const stringBase_8039C07E = "F_SP118"; -SECTION_DEAD static char const* const stringBase_8039C086 = "F_SP124"; -SECTION_DEAD static char const* const stringBase_8039C08E = "F_SP125"; -SECTION_DEAD static char const* const stringBase_8039C096 = "F_SP121"; -SECTION_DEAD static char const* const stringBase_8039C09E = "F_SP122"; -SECTION_DEAD static char const* const stringBase_8039C0A6 = "F_SP123"; -SECTION_DEAD static char const* const stringBase_8039C0AE = "F_SP200"; -SECTION_DEAD static char const* const stringBase_8039C0B6 = "F_SP102"; -SECTION_DEAD static char const* const stringBase_8039C0BE = ""; -SECTION_DEAD static char const* const stringBase_8039C0BF = "R_SP300"; -SECTION_DEAD static char const* const stringBase_8039C0C7 = "R_SP301"; -SECTION_DEAD static char const* const stringBase_8039C0CF = "T_ENEMY"; -SECTION_DEAD static char const* const stringBase_8039C0D7 = "D_MN54"; -SECTION_DEAD static char const* const stringBase_8039C0DE = "D_MN05"; -SECTION_DEAD static char const* const stringBase_8039C0E5 = "D_MN05B"; -SECTION_DEAD static char const* const stringBase_8039C0ED = "D_MN05A"; -SECTION_DEAD static char const* const stringBase_8039C0F5 = "D_MN04"; -SECTION_DEAD static char const* const stringBase_8039C0FC = "D_MN04B"; -SECTION_DEAD static char const* const stringBase_8039C104 = "D_MN04A"; -SECTION_DEAD static char const* const stringBase_8039C10C = "D_MN01"; -SECTION_DEAD static char const* const stringBase_8039C113 = "D_MN01B"; -SECTION_DEAD static char const* const stringBase_8039C11B = "D_MN01A"; -SECTION_DEAD static char const* const stringBase_8039C123 = "D_MN10"; -SECTION_DEAD static char const* const stringBase_8039C12A = "D_MN10B"; -SECTION_DEAD static char const* const stringBase_8039C132 = "D_MN10A"; -SECTION_DEAD static char const* const stringBase_8039C13A = "D_MN11"; -SECTION_DEAD static char const* const stringBase_8039C141 = "D_MN11B"; -SECTION_DEAD static char const* const stringBase_8039C149 = "D_MN11A"; -SECTION_DEAD static char const* const stringBase_8039C151 = "D_MN06"; -SECTION_DEAD static char const* const stringBase_8039C158 = "D_MN06B"; -SECTION_DEAD static char const* const stringBase_8039C160 = "D_MN06A"; -SECTION_DEAD static char const* const stringBase_8039C168 = "D_MN07"; -SECTION_DEAD static char const* const stringBase_8039C16F = "D_MN07B"; -SECTION_DEAD static char const* const stringBase_8039C177 = "D_MN07A"; -SECTION_DEAD static char const* const stringBase_8039C17F = "D_MN08"; -SECTION_DEAD static char const* const stringBase_8039C186 = "D_MN08B"; -SECTION_DEAD static char const* const stringBase_8039C18E = "D_MN08C"; -SECTION_DEAD static char const* const stringBase_8039C196 = "D_MN08A"; -SECTION_DEAD static char const* const stringBase_8039C19E = "D_MN08D"; -SECTION_DEAD static char const* const stringBase_8039C1A6 = "D_MN09"; -SECTION_DEAD static char const* const stringBase_8039C1AD = "D_MN09A"; -SECTION_DEAD static char const* const stringBase_8039C1B5 = "D_MN09B"; -SECTION_DEAD static char const* const stringBase_8039C1BD = "D_MN09C"; -SECTION_DEAD static char const* const stringBase_8039C1C5 = "D_SB00"; -SECTION_DEAD static char const* const stringBase_8039C1CC = "D_SB01"; -SECTION_DEAD static char const* const stringBase_8039C1D3 = "D_SB02"; -SECTION_DEAD static char const* const stringBase_8039C1DA = "D_SB03"; -SECTION_DEAD static char const* const stringBase_8039C1E1 = "D_SB04"; -SECTION_DEAD static char const* const stringBase_8039C1E8 = "D_SB05"; -SECTION_DEAD static char const* const stringBase_8039C1EF = "D_SB06"; -SECTION_DEAD static char const* const stringBase_8039C1F6 = "D_SB07"; -SECTION_DEAD static char const* const stringBase_8039C1FD = "D_SB08"; -SECTION_DEAD static char const* const stringBase_8039C204 = "D_SB09"; -SECTION_DEAD static char const* const stringBase_8039C20B = "D_SB10"; -SECTION_DEAD static char const* const stringBase_8039C212 = "force_end"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039C21C = "\0\0\0"; -#pragma pop - -/* 803CA5C0-803CA704 -00001 0144+00 1/1 0/0 0/0 .data sSpotName */ -SECTION_DATA static void* sSpotName[81] = { - (void*)&Z2SceneMgr__stringBase0, - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x7), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xF), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x16), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x26), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x2E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x36), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x3E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x46), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x4E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x56), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x5E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x66), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x6E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x76), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x7E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x86), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x8E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x96), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x9E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xA6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xAE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xB6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xBE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xC6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xCE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xD6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xDE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xE6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xEE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xF6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0xFE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x106), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x10E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x116), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x117), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x11F), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x127), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x12F), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x136), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x13D), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x145), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x14D), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x154), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x15C), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x164), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x16B), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x173), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x17B), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x182), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x18A), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x192), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x199), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1A1), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1A9), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1B0), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1B8), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1C0), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1C7), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1CF), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1D7), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1DE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1E6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1EE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1F6), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x1FE), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x205), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x20D), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x215), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x21D), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x224), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x22B), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x232), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x239), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x240), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x247), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x24E), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x255), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x25C), - (void*)(((char*)&Z2SceneMgr__stringBase0) + 0x263), -}; - -/* 803CA704-803CA744 -00001 0040+00 1/1 0/0 0/0 .data @5354 */ -SECTION_DATA static void* lit_5354[16] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BDC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BE4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BE4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BDC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BE4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BE4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BDC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BEC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2BC0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BEC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BDC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BEC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BEC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BDC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BE4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BE4), -}; - -/* 803CA744-803CA784 -00001 0040+00 1/1 0/0 0/0 .data @5353 */ -SECTION_DATA static void* lit_5353[16] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BA0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BB8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1B98), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1B98), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1B98), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BA0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BB8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BA0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BBC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BA8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BA8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BA8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BB0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BB0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BB0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BB8), -}; - -/* 803CA784-803CA7BC -00001 0038+00 1/1 0/0 0/0 .data @5352 */ -SECTION_DATA static void* lit_5352[14] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC78), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xCC8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xCC8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xCA0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xCC8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC08), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC08), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xCC8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC18), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC20), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC28), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC34), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xC3C), -}; - -/* 803CA7BC-803CA7F4 -00001 0038+00 1/1 0/0 0/0 .data @5351 */ -SECTION_DATA static void* lit_5351[14] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xAF4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xADC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xADC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB48), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xADC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xAEC), -}; - -/* 803CA7F4-803CA824 -00001 0030+00 1/1 0/0 0/0 .data @5350 */ -SECTION_DATA static void* lit_5350[12] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x7B0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x72C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x804), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x804), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x778), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x788), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x798), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x790), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x798), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x7A0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x7A8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x7A8), -}; - -/* 803CA824-803CA844 -00001 0020+00 1/1 0/0 0/0 .data @5349 */ -SECTION_DATA static void* lit_5349[8] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x430), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x45C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x52C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x604), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x604), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x628), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x6F4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x604), -}; - -/* 803CA844-803CA878 -00001 0034+00 1/1 0/0 0/0 .data @5348 */ -SECTION_DATA static void* lit_5348[13] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x3E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2E0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x3E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x364), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x378), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x338), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x3E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x3E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x338), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x35C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x3E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x3E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x328), -}; - -/* 803CA878-803CA9BC -00001 0144+00 1/1 0/0 0/0 .data @5347 */ -SECTION_DATA static void* lit_5347[81] = { - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x150), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1E0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x40C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x700), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x80C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xA08), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x968), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1824), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xB94), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xCF4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xF00), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1010), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1174), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0xF70), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1098), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1140), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x11BC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x13B4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x12D8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1338), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1384), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1468), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x150C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x15E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1688), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x17E0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x18E8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1994), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1934), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x19C8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1A30), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1BF4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1CF8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1DA8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1D2C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2BC0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2A7C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x948), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x134), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2BC0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1E68), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1EA4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1F00), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1FAC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x1FE8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2038), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x20D8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2108), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2158), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x21F8), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2248), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2298), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2338), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2374), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x23D0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x247C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x24AC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x24FC), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x259C), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x25F4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2644), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x26E4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2760), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2760), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x27B0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2894), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x28D4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2980), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2A04), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2A34), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2AC4), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2A84), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2AF0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2AF0), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B18), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B44), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B44), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B44), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B44), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B44), - (void*)(((char*)setSceneName__10Z2SceneMgrFPcll) + 0x2B6C), -}; - -/* 80455A50-80455A54 004050 0004+00 1/1 0/0 0/0 .sdata2 @5341 */ -SECTION_SDATA2 static f32 lit_5341 = -1.0f; - -/* 80455A54-80455A58 004054 0004+00 2/2 0/0 0/0 .sdata2 @5342 */ -SECTION_SDATA2 static f32 lit_5342 = 0.5f; - -/* 80455A58-80455A5C 004058 0004+00 1/1 0/0 0/0 .sdata2 @5343 */ -SECTION_SDATA2 static f32 lit_5343 = 7.0f / 10.0f; - -/* 80455A5C-80455A60 00405C 0004+00 1/1 0/0 0/0 .sdata2 @5344 */ -SECTION_SDATA2 static f32 lit_5344 = 4.0f / 5.0f; - -/* 80455A60-80455A64 004060 0004+00 1/1 0/0 0/0 .sdata2 @5345 */ -SECTION_SDATA2 static f32 lit_5345 = 1.0f / 10.0f; - -/* 80455A64-80455A68 004064 0004+00 1/1 0/0 0/0 .sdata2 @5346 */ -SECTION_SDATA2 static f32 lit_5346 = 2.0f / 25.0f; /* 802B6AF8-802B995C 2B1438 2E64+00 8/0 1/1 0/0 .text setSceneName__10Z2SceneMgrFPcll */ -void Z2SceneMgr::setSceneName(char* param_0, s32 param_1, s32 param_2) { - // NONMATCHING -} +// NONMATCHING JSULink::getNext() inlining +void Z2SceneMgr::setSceneName(char* spotName, s32 room, s32 layer) { + JAISoundID bgm_id = -1; + JAISound* sound; + int spot = 0; + u8 se_wave1 = 0; + u8 se_wave2 = 0; + u8 bgm_wave1 = 0; + u8 bgm_wave2 = 0; + u8 demo_wave = 0; + bool bVar6 = false; + bool height_vol_mod = false; + bool field_bgm_play = false; + bool time_proc_vol_mod = false; + bool bVar2 = false; + field_0x1b = false; + f32 fVar1 = -1.0f; + + Z2GetSeqMgr()->resetBattleBgmParams(); + Z2GetSeqMgr()->setWindStoneVol(1.0f, 0); + Z2GetSeqMgr()->setTwilightGateVol(1.0f); + Z2GetSeMgr()->resetCrowdSize(); + Z2GetSoundObjMgr()->setGhostEnemyState(0); + Z2GetSeMgr()->resetModY(); + if (Z2GetStatusMgr()->getDemoStatus() == 8) { + Z2GetStatusMgr()->setDemoName("force_end"); + } -//! @meme this looks to be non-inlined here because @ref setSceneName is too large* -extern "C" void __ct__10JAISoundIDFRC10JAISoundID(JAISoundID* this_, JAISoundID const& soundIdToSet) { - this_->mId = soundIdToSet.mId; -} + if (spotName != NULL) { + for (spot = 0; spot < (int)ARRAY_SIZE(sSpotName); spot++) { + if (!strcmp(spotName, sSpotName[spot])) { + break; + } + } + if (spot == (int)ARRAY_SIZE(sSpotName)) { + spot = SPOT_NONE; + } + } -/* 802B9968-802B9978 2B42A8 0010+00 1/1 0/0 0/0 .text setFieldBgmPlay__8Z2SeqMgrFb */ -void Z2SeqMgr::setFieldBgmPlay(bool param_1) { - mFlags.flag5 = param_1; -} + switch (spot) { + case SPOT_ENEMY_TEST: + bgm_wave2 = 2; + if (room < 30) { + se_wave1 = 0x8a; + } else { + se_wave1 = 0x8b; + } + break; -/* 802B9978-802B9988 2B42B8 0010+00 1/1 0/0 0/0 .text isActive__12JAIStreamMgrCFv */ -bool JAIStreamMgr::isActive() const { - // NONMATCHING -} + case SPOT_ORDON_RANCH: + if (layer == 1) { + if (dComIfGs_isSaveSwitch(0x67)) { + bgm_id = Z2BGM_TOAL_NIGHT; + bgm_wave1 = 6; + Z2GetSeqMgr()->changeBgmStatus(0); + } + } else { + if (layer == 8) { + demo_wave = 0x5c; + } + bgm_id = Z2BGM_RANCH; + bgm_wave1 = 1; + bgm_wave2 = 2; + time_proc_vol_mod = true; + } + se_wave1 = 0x26; + se_wave2 = 0x25; + field_0x1b = true; + break; -/* 802B9988-802B9994 2B42C8 000C+00 1/1 0/0 0/0 .text getID__8JAISoundCFv */ -// JAISoundID JAISound::getID() const { -extern "C" void getID__8JAISoundCFv() { - // NONMATCHING -} + case SPOT_ORDON_VILLAGE: + field_0x1b = true; + se_wave1 = 0x26; + if (room == 0) { + se_wave2 = 0x27; + switch (layer) { + case 1: + bgm_id = Z2BGM_TOAL_NIGHT; + bgm_wave1 = 6; + Z2GetSeqMgr()->changeBgmStatus(0); + break; + case 8: + bgm_id = 0x2000011; + demo_wave = 0x64; + break; + case 10: + case 11: + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + break; + default: + bgm_id = Z2BGM_TOAL_VILLEGE; + bgm_wave1 = 3; + bgm_wave2 = 4; + time_proc_vol_mod = true; + break; + } + } else if (room == 1) { + se_wave2 = 0x28; + switch (layer) { + case 1: + field_0x1b = false; + if (dComIfGs_isSaveSwitch(0x67)) { + bgm_id = Z2BGM_TOAL_NIGHT; + bgm_wave1 = 6; + Z2GetSeqMgr()->changeBgmStatus(0); + } + break; + case 12: + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + break; + case 5: + case 8: + bgm_id = Z2BGM_EVENT01; + bgm_wave1 = 5; + break; + case 9: + demo_wave = 0x5c; + break; + case 3: + bVar2 = true; + if (!dComIfGs_isSaveSwitch(0xa)) { + break; + } + // fallthrough + case 4: + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[18]) + && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[625])) + { + bgm_wave1 = 0x55; + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[194])) { + bgm_id = Z2BGM_EVENT05; + } + break; + } + // fallthrough + default: + bgm_id = Z2BGM_TOAL_VILLEGE; + bgm_wave1 = 3; + time_proc_vol_mod = true; + break; + } + } + break; -/* 802B9994-802B999C 2B42D4 0008+00 1/1 0/0 0/0 .text getFirst__19JSUList<9JAIStream>CFv - */ -extern "C" void func_802B9994(void* _this) /* const */ { - // NONMATCHING -} + case SPOT_ORDON_INTERIOR: + se_wave1 = 0x26; + switch (room) { + case 0: + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + bgm_wave2 = 9; + se_wave2 = 0x2a; + break; + case 1: + if (layer == 0) { + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[136])) { + bgm_id = Z2BGM_SHOP01; + } else { + bgm_id = Z2BGM_SHOP02; + } + bgm_wave1 = 7; + } else if (layer == 2) { + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) { + bgm_id = Z2BGM_SHOP01; + bgm_wave1 = 7; + } else { + bgm_id = Z2BGM_ROOM_2; + bgm_wave1 = 0x35; + } + } + se_wave2 = 0x29; + break; + case 2: + if (layer == 0 || layer == 3) { + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + } else if (layer == 1) { + bgm_id = Z2BGM_TOAL_NIGHT; + bgm_wave1 = 6; + Z2GetSeqMgr()->changeBgmStatus(1); + } else if (layer == 2) { + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) { + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + } else { + bgm_id = Z2BGM_ROOM_2; + bgm_wave1 = 0x35; + } + } + se_wave2 = 0x2c; + break; + case 3: + case 4: + case 7: + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + break; + case 5: + if (layer == 0) { + if (dComIfGs_isSaveSwitch(0x67)) { + bgm_id = Z2BGM_TOAL_NIGHT; + bgm_wave1 = 6; + Z2GetSeqMgr()->changeBgmStatus(1); + } else { + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + } + } else { + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[53])) { + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + } else { + bgm_id = Z2BGM_ROOM_2; + bgm_wave1 = 0x35; + } + } + se_wave2 = 0x2b; + } + field_0x1b = true; + break; -/* 802B999C-802B99AC 2B42DC 0010+00 1/1 0/0 0/0 .text dComIfGs_getStartPoint__Fv */ -static void dComIfGs_getStartPoint() { - // NONMATCHING -} + case SPOT_ORDON_SPRING: + se_wave1 = 0x26; + se_wave2 = 0x2d; + switch (layer) { + case 4: + field_0x1b = false; + bVar2 = true; + if (dComIfGs_isSaveSwitch(0x67)) { + bgm_id = Z2BGM_TOAL_NIGHT; + bgm_wave1 = 6; + Z2GetSeqMgr()->changeBgmStatus(0); + } + break; + case 7: + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + break; + case 8: + demo_wave = 0x65; + break; + case 10: + demo_wave = 0x69; + break; + case 9: + case 11: + demo_wave = 0x6a; + break; + case 12: + demo_wave = 0x85; + break; + case 13: + case 14: + demo_wave = 0x5c; + break; + case 3: + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[18]) + && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[625])) + { + bgm_id = Z2BGM_EVENT05; + bgm_wave1 = 0x55; + break; + } + // fallthrough + default: + bVar2 = true; + break; + } + break; -/* 802B99AC-802B9A24 2B42EC 0078+00 1/1 0/0 0/0 .text unMuteSceneBgm__8Z2SeqMgrFUl */ -void Z2SeqMgr::unMuteSceneBgm(u32 param_0) { - // NONMATCHING -} + case SPOT_TWILIGHT_HYRULE_CASTLE: + se_wave1 = 0x2e; + if (inDarkness) { + se_wave2 = 0x30; + if (room == 0) { + if (layer == 11) { + demo_wave = 0x66; + } else if (layer == 7 || layer == 10) { + demo_wave = 0x67; + } else { + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[42])) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + } + } + } else if (room == 3 && (layer == 8 || layer == 12)) { + demo_wave = 0x68; + } else if ((room == 3 && layer == 10) || (room == 2 && layer == 8)) { + bgm_id = Z2BGM_DEMO08; + bgm_wave1 = 0x21; + demo_wave = 0x69; + } else { + if (room == 3 && layer == 14) { + bVar2 = true; + } + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + } + } else { + if (room == 3 && layer == 9) { + demo_wave = 0x75; + } + se_wave2 = 0x2f; + } + break; -/* 802B9A24-802B9A88 2B4364 0064+00 1/1 0/0 0/0 .text muteSceneBgm__8Z2SeqMgrFUlf */ -void Z2SeqMgr::muteSceneBgm(u32 param_0, f32 param_1) { - // NONMATCHING -} + case SPOT_CASTLE_THRONE_ROOM: + if (layer == 8) { + demo_wave = 0x68; + } else if (layer == 9) { + demo_wave = 0x7f; + } + break; -/* 802B9A88-802B9A94 2B43C8 000C+00 1/1 0/0 0/0 .text __as__10JAISoundIDFRC10JAISoundID - */ -extern "C" void __as__10JAISoundIDFRC10JAISoundID(JAISoundID* this_, JAISoundID const& param_0) { - // NONMATCHING -} + case SPOT_CORO_SHOP: + se_wave1 = 0x31; + if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x33; + } else { + if (layer == 1) { + bgm_id = Z2BGM_EVENT05; + bgm_wave1 = 0x55; + se_wave2 = 0x32; + } else { + bgm_id = Z2BGM_FILONE_FOREST; + bgm_wave1 = 0xf; + time_proc_vol_mod = true; + Z2GetSeqMgr()->changeBgmStatus(1); + se_wave2 = 0x32; + } + } + break; -/* 802B9A94-802B9AC4 2B43D4 0030+00 1/1 0/0 0/0 .text dComIfGs_isSaveSwitch__Fi */ -static void dComIfGs_isSaveSwitch(int param_0) { - // NONMATCHING -} + case SPOT_FARON_WOODS: + se_wave1 = 0x31; + if (layer == 11) { + demo_wave = 0x6c; + inDarkness = false; + } else if (layer == 9) { + demo_wave = 0x6a; + } else if (inDarkness) { + if (layer == 7) { + demo_wave = 0x78; + } else if (layer == 8) { + demo_wave = 0x66; + } else if (layer == 10) { + bgm_id = Z2BGM_DEMO10; + bgm_wave1 = 0x21; + demo_wave = 0x6b; + } else { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + } + se_wave2 = 0x33; + } else { + se_wave2 = 0x32; + switch (layer) { + case 4: + case 6: + case 12: + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + break; + case 13: + demo_wave = 0x5c; + break; + case 1: + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[18]) + && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[625])) + { + bgm_id = Z2BGM_EVENT05; + bgm_wave1 = 0x55; + } + break; + default: + bgm_id = Z2BGM_FILONE_FOREST; + bgm_wave1 = 0xf; + time_proc_vol_mod = true; + if (room == 0xe) { + Z2GetSeqMgr()->changeBgmStatus(1); + } else { + Z2GetSeqMgr()->changeBgmStatus(0); + } + break; + } + } + break; -/* 802B9AC4-802B9AD0 2B4404 000C+00 1/1 0/0 0/0 .text resetCrowdSize__7Z2SeMgrFv */ -void Z2SeMgr::resetCrowdSize() { - // NONMATCHING -} + case SPOT_KAKARIKO_VILLAGE: + se_wave1 = 0x34; + if (layer == 8) { + demo_wave = 0x6e; + inDarkness = false; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x36; + } else { + se_wave2 = 0x35; + switch (layer) { + case 6: + case 7: + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + break; + case 9: + demo_wave = 0x6e; + break; + case 10: + demo_wave = 0x6f; + break; + case 11: + bVar2 = true; + demo_wave = 0x70; + break; + case 12: + demo_wave = 0x71; + break; + case 13: + demo_wave = 0x83; + bgm_wave1 = 0x2c; + break; + case 0: + bgm_id = Z2BGM_KAKARIKO; + bgm_wave1 = 0x10; + bgm_wave2 = 0x18; + demo_wave = 0x84; + time_proc_vol_mod = true; + break; + case 1: + bgm_id = Z2BGM_EVENT02; + bgm_wave1 = 0x1c; + bgm_wave2 = 0x18; + break; + case 4: + bVar2 = true; + bgm_id = Z2BGM_LUTERA2; + bgm_wave1 = 0x2c; + break; + default: + bgm_id = Z2BGM_KAKARIKO; + bgm_wave1 = 0x10; + bgm_wave2 = 0x23; + time_proc_vol_mod = true; + break; + } + } + break; -/* 802B9AD0-802B9AFC 2B4410 002C+00 1/1 0/0 0/0 .text setTwilightGateVol__8Z2SeqMgrFf */ -void Z2SeqMgr::setTwilightGateVol(f32 param_0) { - // NONMATCHING -} + case SPOT_KAKARIKO_INTERIOR: + se_wave1 = 0x34; + if (inDarkness) { + se_wave2 = 0x36; + if (room == 0 && layer == 8) { + demo_wave = 0x6d; + bgm_wave1 = 0xe; + } else { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + if (room == 5) { + bgm_wave2 = 0x1c; + } + } + } else { + switch (room) { + case 1: + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) { + bgm_id = Z2BGM_SHOP01; + } else { + bgm_id = Z2BGM_SHOP02; + } + bgm_wave1 = 7; + break; + case 2: + if (layer == 13) { + demo_wave = 0x83; + } else { + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) { + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + } + } + break; + case 3: + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[109])) { + bgm_id = Z2BGM_SHOP_MARO; + bgm_wave1 = 0x33; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[85])) { + bgm_id = Z2BGM_SHOP01; + bgm_wave1 = 7; + } else { + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + } + break; + case 0: + if (layer == 9) { + demo_wave = 0x85; + } else { + bgm_id = Z2BGM_CHURCH1; + bgm_wave1 = 0x2f; + } + break; + case 4: + case 5: + case 6: + break; + } + se_wave2 = 0x86; + } + break; -/* 802B9AFC-802B9B60 2B443C 0064+00 1/1 0/0 0/0 .text setWindStoneVol__8Z2SeqMgrFfUl */ -void Z2SeqMgr::setWindStoneVol(f32 param_0, u32 param_1) { - // NONMATCHING -} + case SPOT_SANCTUARY_BASEMENT: + se_wave1 = 0x34; + if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x36; + } else { + bgm_id = Z2BGM_CHURCH2; + bgm_wave1 = 0x30; + se_wave2 = 0x86; + Z2GetSeqMgr()->muteSceneBgm(30, 0.5f); + } + break; -/* 802B9B60-802B9B68 -00001 0008+00 0/0 0/0 0/0 .text __ct__10JAISoundIDFUl */ -// JAISoundID::JAISoundID(u32 id) { -extern "C" void __ct__10JAISoundIDFUl(void* param_0, u32 param_1) { - *(u32*)param_0 = (u32)(param_1); + case SPOT_KAKARIKO_GRAVEYARD: + se_wave1 = 0x34; + if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x36; + } else { + if (layer == 4) { + bgm_id = Z2BGM_LUTERA2; + bgm_wave1 = 0x2c; + } else { + bgm_id = Z2BGM_CHURCH2; + bgm_wave1 = 0x30; + Z2GetSeqMgr()->unMuteSceneBgm(30); + time_proc_vol_mod = true; + bgm_wave2 = 0x2c; + } + se_wave2 = 0x37; + } + break; + + case SPOT_DEATH_MOUNTAIN: + se_wave1 = 0x34; + if (layer == 8) { + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x39; + } else { + bgm_id = Z2BGM_DEATH_MOUNTAIN01; + bgm_wave1 = 0x11; + se_wave2 = 0x38; + time_proc_vol_mod = true; + if (room == 3) { + height_vol_mod = true; + } + } + break; + + case SPOT_HIDDEN_VILLAGE: + if (layer == 0) { + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + if (dComIfGs_isSwitch(0x2e, 0) && !dComIfGs_isSwitch(0x11, 0)) { + bgm_id = Z2BGM_HIDDEN_VILLAGE; + } + field_0x1b = true; + } else if (layer == 1) { + Z2GetSeqMgr()->bgmStop(33, 0); + } + bgm_wave1 = 0x31; + se_wave1 = 0x34; + se_wave2 = 0x4f; + break; + + case SPOT_IMPAZ_HOUSE: + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + se_wave1 = 0x34; + se_wave2 = 0x4f; + field_0x1b = true; + break; + + case SPOT_SUMO_HALL: + if (layer == 8) { + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + } else { + bgm_id = Z2BGM_DEATH_MOUNTAIN02; + bgm_wave1 = 0x11; + se_wave1 = 0x34; + bgm_wave2 = 0x12; + se_wave2 = 0x3a; + } + break; + + case SPOT_LAKE_HYLIA: + se_wave1 = 0x3b; + if (layer == 8) { + demo_wave = 0x72; + inDarkness = false; + } else if (room == 1 && layer == 9) { + demo_wave = 0x74; + } else if (layer == 10 || layer == 11) { + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x3d; + if (layer == 14) { + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 10000, 40000, 50000); + } else { + if (dComIfGs_isSaveSwitch(0xf) && !dComIfGs_isSaveSwitch(0x10)) { + field_0x1b = true; + } + bgm_wave2 = 0x4d; + } + } else { + if (room == 0) { + bgm_id = Z2BGM_LAKE; + bgm_wave1 = 0x34; + height_vol_mod = true; + time_proc_vol_mod = true; + } + se_wave2 = 0x3c; + } + break; + + case SPOT_UPPER_ZORAS_RIVER: + se_wave1 = 0x55; + if (layer == 8) { + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x3f; + } else { + bgm_wave1 = 0x34; + se_wave2 = 0x3e; + height_vol_mod = true; + } + break; + + case SPOT_FISHING_POND: + if (layer == 8) { + demo_wave = 0x7f; + se_wave1 = 0; + se_wave2 = 0; + } else { + se_wave1 = 0x3b; + bgm_id = Z2BGM_FISHING; + bgm_wave1 = 0x2b; + se_wave2 = 0x3e; + height_vol_mod = true; + time_proc_vol_mod = true; + } + break; + + case SPOT_HENA_CABIN: + se_wave1 = 0x3b; + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + bgm_wave2 = 0x47; + se_wave2 = 0x3e; + break; + + case SPOT_ZORAS_RIVER: + se_wave1 = 0x55; + if (inDarkness) { + bgm_id = Z2BGM_CARGO_GAME_TW; + bgm_wave1 = 0x24; + se_wave2 = 0x41; + field_0x1b = true; + } else { + if (layer == 4) { + bgm_id = 0x200000b; + } else if (layer == 1) { + bgm_id = Z2BGM_MINIGAME_ROOM; + bgm_wave1 = 0x47; + bgm_wave2 = 0x42; + } else if (layer == 0 || layer == 2) { + bgm_wave2 = 0x57; + } + se_wave2 = 0x40; + } + break; + + case SPOT_ZORAS_DOMAIN: + se_wave1 = 0x3b; + if (layer == 8 || layer == 9) { + demo_wave = 0x82; + } else if (layer == 10 || layer == 11) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0x0e; + bgm_wave2 = 0x2c; + se_wave2 = 0x3f; + } else { + bgm_id = Z2BGM_ZORA_VILLAGE; + bgm_wave1 = 0x20; + se_wave2 = 0x3e; + height_vol_mod = true; + time_proc_vol_mod = true; + } + break; + + case SPOT_CASTLE_TOWN: + se_wave1 = 0x42; + if (layer == 8) { + demo_wave = 0x68; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x44; + } else { + se_wave2 = 0x43; + time_proc_vol_mod = true; + if (room == 1 && layer == 9) { + demo_wave = 0x7a; + } else if (layer == 10) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else if (!(layer == 1 && room == 1 + && dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[542]))) + { + bgm_id = Z2BGM_CASTLE_TOWN; + bgm_wave1 = 0x25; + Z2GetSeqMgr()->changeBgmStatus(room); + } + } + break; + + case SPOT_CASTLE_TOWN_INTERIOR: + if (room == 6) { + se_wave1 = 0x2e; + se_wave2 = 0x2f; + } else { + se_wave1 = 0x42; + if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x44; + } else { + se_wave2 = 0x5b; + if (room == 5) { + if (layer == 8) { + demo_wave = 0x73; + } else if (layer == 9) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else { + bgm_id = Z2BGM_INDOOR_03; + bgm_wave1 = 8; + } + } + } + } + break; + + case SPOT_CASTLE_TOWN_SHOPS: + se_wave1 = 0x42; + se_wave2 = 0x5b; + switch (room) { + case 0: + if (layer == 1) { + bgm_id = Z2BGM_SHOP_MARO; + bgm_wave1 = 0x33; + } else { + bgm_id = Z2BGM_SHOP_CELEB; + bgm_wave1 = 0x32; + } + break; + case 1: + bgm_id = Z2BGM_FORTUNE; + bgm_wave1 = 0x37; + Z2GetSeqMgr()->changeBgmStatus(0); + break; + case 2: + bgm_id = Z2BGM_INDOOR; + bgm_wave1 = 8; + break; + case 3: + bgm_id = Z2BGM_INDOOR_04; + bgm_wave1 = 0x56; + break; + case 4: + bgm_id = Z2BGM_CASTLE_TOWN; + bgm_wave1 = 0x25; + Z2GetSeqMgr()->changeBgmStatus(5); + break; + case 5: + bgm_id = Z2BGM_SHOP02; + bgm_wave1 = 7; + break; + } + break; + + case SPOT_STAR_TENT: + se_wave1 = 0x42; + se_wave2 = 0x87; + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[289])) { + bgm_id = Z2BGM_MINIGAME_ROOM; + } + bgm_wave1 = 0x46; + break; + + case SPOT_SACRED_GROVE: + se_wave1 = 0x31; + bgm_wave2 = 0x1b; + se_wave2 = 0x45; + if (room == 3) { + bgm_id = Z2BGM_HOLY_FOREST; + bgm_wave1 = 0x2a; + } else if (room == 2) { + if (layer == 10) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else { + bgm_id = Z2BGM_TEMPLE_OF_TIME; + bgm_wave1 = 0x3e; + } + } else if (room == 1) { + if (layer == 0 || layer == 9) { + demo_wave = 0x76; + } else if (layer == 8 || layer == 11) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else { + bgm_wave2 = 0x40; + } + } + break; + + case SPOT_SNOWPEAK: + if (layer == 8) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else { + bgm_id = Z2BGM_SNOW_MOUNTAIN; + bgm_wave1 = 0x2d; + bgm_wave2 = 0x3a; + se_wave1 = 0x46; + se_wave2 = 0x47; + } + height_vol_mod = true; + break; + + case SPOT_GERUDO_DESERT: + se_wave1 = 0x48; + se_wave2 = 0x49; + if (layer == 8 || layer == 9 || layer == 10) { + demo_wave = 0x77; + } else if (layer == 11) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else { + bgm_id = Z2BGM_DESERT; + bgm_wave1 = 0x1f; + } + break; + + case SPOT_ARBITERS_GROUNDS_EXTERIOR: + if (room == 1) { + Z2GetSoundObjMgr()->setForceBattleArea(true, 1000, 2000, 9000); + bgm_wave1 = 0x3d; + bgm_wave2 = 0x1c; + } + se_wave1 = 0x48; + se_wave2 = 0x49; + break; + + case SPOT_MIRROR_CHAMBER: + switch (layer) { + case 7: + case 8: + case 9: + case 10: + demo_wave = 0x80; + break; + case 11: + case 12: + demo_wave = 0x78; + break; + case 13: + demo_wave = 0x7e; + break; + default: + bVar2 = true; + bgm_id = Z2BGM_DESERT; + bgm_wave1 = 0x1f; + break; + } + se_wave1 = 0x48; + se_wave2 = 0x49; + break; + + case SPOT_HYRULE_FIELD: + se_wave1 = 0x4a; + if (room == 10 && layer == 11) { + demo_wave = 0x74; + fVar1 = 0.7f; + } else if (layer == 9 || layer == 10) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else if (layer == 2 || layer == 3) { + bgm_id = Z2BGM_HORSE_BATTLE; + bgm_wave1 = 0xd; + se_wave1 = 0x54; + se_wave2 = 0x4e; + field_0x1b = true; + fVar1 = 1.0f; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } else if (inDarkness) { + if (layer == 12) { + demo_wave = 0x6a; + } else { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + } + se_wave2 = 0x4c; + if (room == 13 && layer == 14) { + bgm_wave2 = 0x1c; + } + } else { + field_bgm_play = true; + if (Z2GetStatusMgr()->checkDayTime()) { + bgm_id = Z2BGM_FIELD_LINK_DAY; + } else { + bgm_id = Z2BGM_FIELD_LINK_NIGHT; + } + bgm_wave1 = 0x19; + switch (room) { + case 2: + case 3: + case 4: + se_wave2 = 0x5e; + break; + case 0: + case 5: + case 7: + se_wave2 = 0x5f; + break; + case 9: + case 10: + case 11: + se_wave2 = 0x60; + break; + case 12: + case 13: + case 14: + se_wave2 = 0x61; + break; + case 1: + case 6: + case 15: + se_wave2 = 0x4b; + break; + } + switch (room) { + case 0: + case 3: + case 6: + case 10: + case 13: + fVar1 = 1.0f; + break; + case 1: + case 2: + case 4: + case 5: + case 14: + case 15: + fVar1 = 0.7f; + break; + case 7: + case 9: + case 11: + case 12: + fVar1 = 0.8f; + break; + } + } + break; + + case SPOT_CASTLE_TOWN_GATES: + se_wave1 = 0x4a; + if (layer == 8) { + demo_wave = 0x73; + fVar1 = 1.0f; + } else if (layer == 9) { + demo_wave = 0x75; + fVar1 = 0.5f; + } else if (layer == 10) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + se_wave2 = 0x4c; + } else { + if (room == 8) { + se_wave2 = 0x62; + fVar1 = 0.8f; + } else if (room == 16) { + se_wave2 = 0x88; + fVar1 = 0.8f; + } else if (room == 17) { + se_wave2 = 0x89; + fVar1 = 1.0f; + } + field_bgm_play = true; + if (Z2GetStatusMgr()->checkDayTime()) { + bgm_id = Z2BGM_FIELD_LINK_DAY; + } else { + bgm_id = Z2BGM_FIELD_LINK_NIGHT; + } + bgm_wave1 = 0x19; + } + break; + + case SPOT_HYLIA_BRIDGE_BATTLE: + se_wave1 = 0x54; + bgm_wave1 = 0x3d; + se_wave2 = 0x4e; + fVar1 = 1.0f; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_ELDIN_BRIDGE_BATTLE: + se_wave1 = 0x4a; + if (layer == 11) { + se_wave1 = 0; + se_wave2 = 0; + demo_wave = 0x7f; + } else if (layer == 10) { + bgm_wave1 = 0x59; + } else if (layer != 8 && layer != 9) { + if (layer == 0) { + bgm_wave1 = 13; + } else if (layer == 4) { + bgm_wave1 = 0x3d; + } + fVar1 = 1.0f; + se_wave2 = 0x4d; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_SHADES_REALM: + se_wave1 = 0x4a; + if (dComIfGs_getStartPoint() == 2) { + bgm_wave2 = 0x50; + } else if (dComIfGs_getStartPoint() == 3) { + bgm_wave2 = 0x4f; + } else if (dComIfGs_getStartPoint() == 4) { + bgm_wave2 = 0x3b; + } else if (dComIfGs_getStartPoint() == 5) { + bgm_wave2 = 0x51; + } else if (dComIfGs_getStartPoint() == 6) { + bgm_wave2 = 0x52; + } else if (dComIfGs_getStartPoint() == 7) { + bgm_wave2 = 0x53; + } else { + bgm_wave1 = 0x44; + } + se_wave2 = 0x5d; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_FOREST_TEMPLE: + bgm_id = Z2BGM_DUNGEON_FOREST; + bgm_wave1 = 0xa; + bgm_wave2 = 0x40; + se_wave1 = 1; + se_wave2 = 2; + Z2GetSeqMgr()->changeBgmStatus(room); + break; + + case SPOT_FOREST_TEMPLE_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_FOREST; + bgm_wave1 = 0xa; + bgm_wave2 = 0xb; + se_wave1 = 1; + se_wave2 = 3; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860); + break; + + case SPOT_FOREST_TEMPLE_BOSS: + se_wave1 = 1; + if (dComIfGs_isStageSwitch(2, 1)) { + bgm_id = Z2BGM_DUNGEON_FOREST; + bgm_wave1 = 0xa; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[55])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0xc; + se_wave2 = 4; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + Z2GetSeqMgr()->unMuteSceneBgm(struct_80450860); + break; + + case SPOT_GORON_MINES: + bgm_id = Z2BGM_DUNGEON_LV2; + bgm_wave1 = 0x13; + bgm_wave2 = 0x3c; + Z2GetSeqMgr()->changeBgmStatus(room); + se_wave1 = 5; + se_wave2 = 6; + break; + + case SPOT_GORON_MINES_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_LV2; + bgm_wave1 = 0x13; + se_wave1 = 5; + se_wave2 = 7; + bgm_wave2 = 0x14; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_GORON_MINES_BOSS: + se_wave1 = 5; + if (dComIfGs_isStageSwitch(3, 0x7c)) { + bgm_id = Z2BGM_DUNGEON_LV2; + bgm_wave1 = 0x13; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[64])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0x16; + se_wave2 = 8; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_LAKEBED_TEMPLE: + bgm_id = Z2BGM_DUNGEON_LV3; + bgm_wave1 = 0x15; + bgm_wave2 = 0x40; + se_wave1 = 9; + se_wave2 = 0xa; + break; + + case SPOT_LAKEBED_TEMPLE_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_LV3; + bgm_wave1 = 0x15; + bgm_wave2 = 0x17; + se_wave1 = 9; + se_wave2 = 0xb; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_LAKEBED_TEMPLE_BOSS: + se_wave1 = 9; + if (dComIfGs_isStageSwitch(4, 0xe)) { + bgm_id = Z2BGM_DUNGEON_LV3; + bgm_wave1 = 0x15; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0x1e; + se_wave2 = 0xc; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_ARBITERS_GROUNDS: + bgm_id = Z2BGM_DUNGEON_LV4; + bgm_wave1 = 0x1a; + bgm_wave2 = 0x41; + se_wave1 = 0xd; + se_wave2 = 0xe; + if (room == 1) { + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_ARBITERS_GROUNDS_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_LV4; + bgm_wave1 = 0x1a; + bgm_wave2 = 0x22; + se_wave1 = 0xd; + se_wave2 = 0xf; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_ARBITERS_GROUNDS_BOSS: + se_wave1 = 0xd; + if (dComIfGs_isStageSwitch(0xa, 0xa)) { + bgm_id = Z2BGM_DUNGEON_LV4; + bgm_wave1 = 0x1a; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[265])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0x4c; + se_wave2 = 0x10; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_SNOWPEAK_RUINS: + bgm_id = Z2BGM_DUNGEON_LV5; + bgm_wave1 = 0x1d; + bgm_wave2 = 0x40; + se_wave1 = 0x11; + se_wave2 = 0x12; + Z2GetSeqMgr()->changeBgmStatus(room); + break; + + case SPOT_SNOWPEAK_RUINS_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_LV5; + bgm_wave1 = 0x1d; + bgm_wave2 = 0x38; + se_wave1 = 0x11; + se_wave2 = 0x13; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + Z2GetSeqMgr()->changeBgmStatus(room); + break; + + case SPOT_SNOWPEAK_RUINS_BOSS: + Z2GetSeqMgr()->unMuteSceneBgm(60); + se_wave1 = 0x11; + if (dComIfGs_isStageSwitch(8, 0x19)) { + bgm_id = Z2BGM_DUNGEON_LV5; + bgm_wave1 = 0x1d; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[266])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0x2e; + se_wave2 = 0x14; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_TEMPLE_OF_TIME: + bgm_id = Z2BGM_DUNGEON_LV6; + bgm_wave1 = 0x26; + bgm_wave2 = 0x40; + se_wave1 = 0x15; + se_wave2 = 0x16; + break; + + case SPOT_TEMPLE_OF_TIME_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_LV6; + bgm_wave1 = 0x26; + bgm_wave2 = 0x3f; + se_wave1 = 0x15; + se_wave2 = 0x17; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_TEMPLE_OF_TIME_BOSS: + se_wave1 = 0x15; + if (dComIfGs_isStageSwitch(7, 0x18)) { + bgm_id = Z2BGM_DUNGEON_LV6; + bgm_wave1 = 0x26; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[267])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0x4e; + se_wave2 = 0x18; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_CITY_IN_THE_SKY: + if (room == 16) { + bgm_id = Z2BGM_OBACHAN; + bgm_wave1 = 0x40; + } else { + bgm_id = Z2BGM_DUNGEON_LV7; + bgm_wave1 = 0x27; + } + se_wave1 = 0x19; + se_wave2 = 0x1a; + break; + + case SPOT_CITY_IN_THE_SKY_MINIBOSS: + bgm_id = Z2BGM_DUNGEON_LV7; + bgm_wave1 = 0x27; + bgm_wave2 = 0x43; + se_wave1 = 0x19; + se_wave2 = 0x1b; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_CITY_IN_THE_SKY_BOSS: + se_wave1 = 0x19; + if (dComIfGs_isStageSwitch(0x16, 0x25)) { + bgm_id = Z2BGM_DUNGEON_LV7; + bgm_wave1 = 0x27; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[268])) { + bgm_id = 0x200005b; + } else { + bgm_wave1 = 0x1e; + se_wave2 = 0x1c; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + } + break; + + case SPOT_PALACE_OF_TWILIGHT: + if (layer == 8) { + if (room == 0 || room == 9) { + demo_wave = 0x77; + } else if (room == 11) { + demo_wave = 0x81; + } + } else if (layer == 9) { + demo_wave = 0x78; + } else { + bVar2 = true; + bgm_id = Z2BGM_DUNGEON_LV8; + bgm_wave1 = 0x28; + Z2GetSeqMgr()->changeBgmStatus(room); + } + se_wave1 = 0x1d; + se_wave2 = 0x1e; + break; + + case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_A: + case SPOT_PALACE_OF_TWILIGHT_MINIBOSS_B: + bgm_id = Z2BGM_DUNGEON_LV8; + bgm_wave1 = 0x28; + bgm_wave2 = 0x48; + se_wave1 = 0x1d; + se_wave2 = 0x1f; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_PALACE_OF_TWILIGHT_THRONE_ROOM: + if (layer == 8) { + demo_wave = 0x81; + } else if (layer == 9) { + demo_wave = 0x79; + } else if (dComIfGs_isStageSwitch(0x17, 0x16)) { + bgm_id = Z2BGM_DUNGEON_LV8; + bgm_wave1 = 0x28; + } else if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[570])) { + bgm_id = 0x200005b; + JSUList* stream_list = Z2GetSoundMgr()->getStreamMgr()->getStreamList(); + JSULink* stream; + for (stream = stream_list->getFirst(); stream != NULL; stream = stream->getNext()) { + if (stream->getObject()->getID() == 0x2000046) { + bgm_id = -1; + } + } + } + break; + + case SPOT_PALACE_OF_TWILIGHT_BOSS: + se_wave1 = 0x1d; + bgm_wave1 = 0x39; + se_wave2 = 0x20; + if (room == 50) { + inDarkness = true; + } + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_HYRULE_CASTLE: + if (room >= 1 && room <= 6) { + bgm_id = 0x2000040; + bgm_wave2 = 0x58; + } else if (room == 8 || room == 12) { + bgm_id = Z2BGM_DUNGEON_LV9_02; + bgm_wave1 = 0x29; + height_vol_mod = true; + } else { + Z2GetSeqMgr()->bgmStop(45, 0); + bgm_wave2 = 0x3d; + } + se_wave1 = 0x21; + se_wave2 = 0x22; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_FINAL_BATTLE_THRONE_ROOM: + if (room == 50) { + if (layer == 8) { + demo_wave = 0x7b; + } else if (layer == 0) { + bgm_wave1 = 0x49; + se_wave2 = 0x23; + } else if (layer == 10) { + demo_wave = 0x7b; + } else if (layer == 1) { + bgm_wave1 = 0x4a; + se_wave2 = 0x24; + } else if (layer == 9) { + demo_wave = 0x7c; + } + } + se_wave1 = 0x56; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_FINAL_BATTLE_FIELD: + bgm_wave1 = 0x4b; + se_wave2 = 0x63; + se_wave1 = 0x8c; + field_0x1b = true; + Z2GetSoundObjMgr()->setForceBattleArea(true, 700, 1100, 1500); + break; + + case SPOT_FINAL_BATTLE_CUTSCENE: + if (layer == 8) { + demo_wave = 0x7c; + fVar1 = 0.1f; + } else if (layer == 10) { + demo_wave = 0x7d; + } else if (layer == 9) { + demo_wave = 0x7e; + fVar1 = 0.08f; + } else if (layer == 11) { + demo_wave = 0x7f; + } + break; + + case SPOT_LIGHT_SPIRIT_CHAMBER: + demo_wave = 0x7c; + break; + + case SPOT_CAVE_OF_ORDEALS: + se_wave2 = 0x51; + if (room != 49 || layer < 5 || layer > 8) { + bgm_id = Z2BGM_SUB_DUNGEON; + bgm_wave1 = 0x45; + } + break; + + case SPOT_ICE_BLOCK_PUZZLE: + se_wave1 = 0x11; + se_wave2 = 0x12; + bgm_id = Z2BGM_SUB_DUNGEON; + bgm_wave1 = 0x45; + break; + + case SPOT_GORGE_LANTERN_CAVE: + case SPOT_LAKE_LANTERN_CAVE: + se_wave2 = 0x52; + bgm_id = Z2BGM_SUB_DUNGEON; + bgm_wave1 = 0x45; + break; + + case SPOT_ELDIN_MAGNET_CAVE: + se_wave1 = 5; + se_wave2 = 6; + bgm_id = Z2BGM_SUB_DUNGEON; + bgm_wave1 = 0x45; + break; + + case SPOT_GROTTO_GRASS_1: + case SPOT_GROTTO_GRASS_2: + case SPOT_GROTTO_ROCK_1: + case SPOT_GROTTO_ROCK_2: + case SPOT_GROTTO_POND: + se_wave2 = 0x50; + bgm_id = Z2BGM_SUB_DUNGEON; + bgm_wave1 = 0x45; + break; + + case SPOT_FARON_WOODS_CAVE: + se_wave2 = 0x53; + if (inDarkness) { + bgm_id = Z2BGM_TWILIGHT; + bgm_wave1 = 0xe; + } else { + bgm_id = Z2BGM_SUB_DUNGEON; + bgm_wave1 = 0x45; + } + break; + } + + if (dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104]) + && !dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[250]) + && demo_wave == 0 && spot != SPOT_ELDIN_BRIDGE_BATTLE) + { + bgm_wave1 = 0x36; + if (spot == SPOT_CASTLE_TOWN_SHOPS && room == 5) { + bgm_id = -1; + } else { + bgm_id = Z2BGM_MIDNA_SOS; + if ((spot == SPOT_CASTLE_TOWN_INTERIOR && room == 5) + || spot == SPOT_CASTLE_TOWN_SHOPS || spot == SPOT_STAR_TENT) + { + Z2GetSeqMgr()->muteSceneBgm(33, 0.5f); + } else { + Z2GetSeqMgr()->unMuteSceneBgm(33); + } + } + time_proc_vol_mod = false; + } else if (sceneNum == SPOT_CASTLE_TOWN_SHOPS && roomNum == 1 + && !(spot == SPOT_CASTLE_TOWN && room == 3)) + { + bgm_id = Z2BGM_FORTUNE; + bgm_wave1 = 0x37; + Z2GetSeqMgr()->changeBgmStatus(1); + time_proc_vol_mod = false; + } + + if (Z2GetSoundMgr()->getStreamMgr()->isActive()) { + JAUSoundTable* sound_table = JAUSoundTable::getInstance(); + JSUList* stream_list = Z2GetSoundMgr()->getStreamMgr()->getStreamList(); + JSULink* stream; + for (stream = stream_list->getFirst(); stream != NULL; stream = stream->getNext()) { + if (bVar2 || sound_table->getTypeID(stream->getObject()->getID()) != 0x71) { + stream->getObject()->stop(struct_80450860); + } + } + } + + Z2GetSeqMgr()->setHeightVolMod(height_vol_mod, 30); + Z2GetSeqMgr()->setTimeProcVolMod(time_proc_vol_mod, 0); + Z2GetSeqMgr()->setFieldBgmPlay(field_bgm_play); + Z2GetEnvSeMgr()->initSceneEnvSe(spot, room, fVar1); + + if (sceneNum != spot || bgm_id != BGM_ID || se_wave1 != loadedSeWave_1 + || se_wave2 != loadedSeWave_2 || bgm_wave1 != loadedBgmWave_1 + || bgm_wave2 != loadedBgmWave_2 || demo_wave != loadedDemoWave) + { + sceneNum = spot; + sceneChange(bgm_id, se_wave1, se_wave2, bgm_wave1, bgm_wave2, demo_wave, false); + } + roomNum = room; } /* 802B9B68-802B9C50 2B44A8 00E8+00 1/1 0/0 0/0 .text * sceneChange__10Z2SceneMgrF10JAISoundIDUcUcUcUcUcb */ -void Z2SceneMgr::sceneChange(JAISoundID param_0, u8 param_1, u8 param_2, u8 param_3, u8 param_4, - u8 param_5, bool param_6) { - // NONMATCHING +void Z2SceneMgr::sceneChange(JAISoundID bgm, u8 seWave1, u8 seWave2, u8 bgmWave1, u8 bgmWave2, + u8 demoWave, bool param_6) { + if (bgm != BGM_ID) { + if (Z2GetSeqMgr()->getMainBgmID() == bgm) { + field_0x1a = false; + } else { + field_0x1a = true; + } + } else { + if (Z2GetSeqMgr()->getMainBgmID() == bgm) { + if (param_6) { + field_0x1a = true; + } else { + field_0x1a = false; + } + } else { + field_0x1a = true; + } + } + + requestSeWave_1 = seWave1; + requestSeWave_2 = seWave2; + requestBgmWave_1 = bgmWave1; + requestBgmWave_2 = bgmWave2; + requestDemoWave = demoWave; + BGM_ID = bgm; + Z2GetFxLineMgr()->setSceneFx(sceneNum); } /* 802B9C50-802B9D40 2B4590 00F0+00 0/0 1/1 0/0 .text framework__10Z2SceneMgrFv */ void Z2SceneMgr::framework() { - // NONMATCHING + if (load1stWait > 0) { + load1stWait--; + if (load1stWait == 0 && timer == 0) { + _load1stWaveInner_1(); + } + } else if (load1stWait < 0) { + load1stWait++; + if (load1stWait == 0 && field_0x1a) { + _load1stWaveInner_2(); + } + } + + if (isSceneExist()) { + if (timer < 10000) { + timer++; + } + if (!field_0x1b && Z2GetStatusMgr()->getDemoStatus() != 3 && timer == struct_80450863) { + Z2GetSeqMgr()->setBattleBgmOff(false); + } + } else { + Z2GetSeqMgr()->setBattleBgmOff(true); + } } /* 802B9D40-802B9D98 2B4680 0058+00 0/0 1/1 0/0 .text load1stDynamicWave__10Z2SceneMgrFv */ void Z2SceneMgr::load1stDynamicWave() { - // NONMATCHING + timer = 0; + Z2GetSoundObjMgr()->deleteEnemyAll(); + setSceneExist(false); + if (load1stWait == 0) { + _load1stWaveInner_1(); + } } /* 802B9D98-802B9FC8 2B46D8 0230+00 2/2 0/0 0/0 .text _load1stWaveInner_1__10Z2SceneMgrFv */ void Z2SceneMgr::_load1stWaveInner_1() { - // NONMATCHING + Z2GetSeMgr()->seStopAll(0); + Z2GetEnvSeMgr()->resetSceneInner(); + field_0x18 = dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[104]) ? 0x59 : 0x58; + + if (loadedSeWave_2 != 0 && requestSeWave_2 != loadedSeWave_2) { + eraseSeWave(loadedSeWave_2); + loadedSeWave_2 = 0; + } + + if (loadedDemoWave != 0 && requestDemoWave != loadedDemoWave) { + if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) { + loadedSeWave_2 = 0; + } + eraseSeWave(loadedDemoWave); + loadedDemoWave = 0; + } + + if (field_0x18 != field_0x19 || requestSeWave_1 != loadedSeWave_1) { + if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) { + loadedSeWave_2 = 0; + } + if (loadedDemoWave != 0 && eraseSeWave(loadedDemoWave)) { + loadedDemoWave = 0; + } + if (loadedSeWave_1 != 0 && eraseSeWave(loadedSeWave_1)) { + loadedSeWave_1 = 0; + } + if (field_0x18 != field_0x19 && eraseSeWave(field_0x19) && loadSeWave(field_0x18)) { + field_0x19 = field_0x18; + } + if (requestSeWave_1 != 0 && loadSeWave(requestSeWave_1)) { + loadedSeWave_1 = requestSeWave_1; + } else { + loadedSeWave_1 = 0; + } + } + + if (field_0x1a && Z2GetSeqMgr()->checkBgmPlaying()) { + Z2GetSeqMgr()->bgmStop(0xf, 0); + load1stWait = -15; + } else { + _load1stWaveInner_2(); + } } /* 802B9FC8-802BA09C 2B4908 00D4+00 2/2 0/0 0/0 .text _load1stWaveInner_2__10Z2SceneMgrFv */ void Z2SceneMgr::_load1stWaveInner_2() { - // NONMATCHING + if (loadedBgmWave_2 != 0 && requestBgmWave_2 != loadedBgmWave_2) { + eraseBgmWave(loadedBgmWave_2); + loadedBgmWave_2 = 0; + } + + if (requestBgmWave_1 != loadedBgmWave_1) { + if (loadedBgmWave_2 != 0 && eraseBgmWave(loadedBgmWave_2)) { + loadedBgmWave_2 = 0; + } + if (loadedBgmWave_1 != 0 && eraseBgmWave(loadedBgmWave_1)) { + loadedBgmWave_1 = 0; + } + if (requestBgmWave_1 != 0 && loadBgmWave(requestBgmWave_1)) { + loadedBgmWave_1 = requestBgmWave_1; + } else { + loadedBgmWave_1 = 0; + } + } } /* 802BA09C-802BA120 2B49DC 0084+00 0/0 1/1 0/0 .text check1stDynamicWave__10Z2SceneMgrFv */ bool Z2SceneMgr::check1stDynamicWave() { - // NONMATCHING + return load1stWait != 0 || getSeLoadStatus(requestSeWave_1) == 1 + || getBgmLoadStatus(requestBgmWave_1) == 1; } /* 802BA120-802BA294 2B4A60 0174+00 0/0 2/2 0/0 .text load2ndDynamicWave__10Z2SceneMgrFv */ void Z2SceneMgr::load2ndDynamicWave() { - // NONMATCHING + if (requestDemoWave != loadedDemoWave) { + if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) { + loadedSeWave_2 = 0; + } + if (loadedDemoWave != 0 && eraseSeWave(loadedDemoWave)) { + loadedDemoWave = 0; + } + if (requestDemoWave != 0 && requestDemoWave != 0x7f && loadSeWave(requestDemoWave)) { + loadedDemoWave = requestDemoWave; + } else { + loadedDemoWave = 0; + } + } + + if (requestSeWave_2 != loadedSeWave_2) { + if (loadedSeWave_2 != 0 && eraseSeWave(loadedSeWave_2)) { + loadedSeWave_2 = 0; + } + if (requestSeWave_2 != 0 && loadSeWave(requestSeWave_2)) { + loadedSeWave_2 = requestSeWave_2; + } else { + loadedSeWave_2 = 0; + } + } + + if (requestBgmWave_2 != loadedBgmWave_2) { + if (loadedBgmWave_2 != 0 && eraseBgmWave(loadedBgmWave_2)) { + loadedBgmWave_2 = 0; + } + if (requestBgmWave_2 != 0 && loadBgmWave(requestBgmWave_2)) { + loadedBgmWave_2 = requestBgmWave_2; + } else { + loadedBgmWave_2 = 0; + } + } } -/* ############################################################################################## */ -/* 803CA9BC-803CAB18 -00001 015C+00 1/1 0/0 0/0 .data @5852 */ -SECTION_DATA static void* lit_5852[87] = { - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x204), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x23C), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x180), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x180), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x180), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x150), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x180), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x190), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x2A0), - (void*)(((char*)sceneBgmStart__10Z2SceneMgrFv) + 0x1B8), -}; - /* 802BA294-802BA56C 2B4BD4 02D8+00 1/0 2/2 0/0 .text sceneBgmStart__10Z2SceneMgrFv */ +// NONMATCHING regalloc void Z2SceneMgr::sceneBgmStart() { - // NONMATCHING + inGame = true; + setSceneExist(true); + Z2GetStatusMgr()->setPauseFlag(0); + + if (!field_0x1a && Z2GetSeqMgr()->checkBgmIDPlaying(BGM_ID)) { + return; + } + + if (!BGM_ID.isAnonymous() && Z2GetStatusMgr()->getDemoStatus() != 11) { + bool var; + switch (BGM_ID.mId.mBytes.b0) { + case 1: + var = false; + switch (Z2GetSeqMgr()->getSubBgmID()) { + case Z2BGM_BATTLE_NORMAL: + case Z2BGM_BOOMERAMG_MONKEY: + case Z2BGM_SUMOMO: + var = true; + break; + } + Z2GetSeqMgr()->bgmStart(BGM_ID, 0, var); + Z2GetSeqMgr()->unMuteSceneBgm(0); + + switch (BGM_ID) { + case Z2BGM_DUNGEON_FOREST: + case Z2BGM_DUNGEON_LV2: + case Z2BGM_DUNGEON_LV5: + case Z2BGM_CASTLE_TOWN: + case Z2BGM_DUNGEON_LV8: + case Z2BGM_DUNGEON_LV9_02: + case Z2BGM_SNOW_MOUNTAIN: + if (sceneNum == SPOT_CASTLE_TOWN_SHOPS) { + Z2GetSeqMgr()->changeBgmStatus(5); + } else { + Z2GetSeqMgr()->changeBgmStatus(roomNum); + } + break; + case Z2BGM_HOLY_FOREST: + case Z2BGM_LUTERA2: + case Z2BGM_DEMO08: + case Z2BGM_DEMO10: + Z2GetSeqMgr()->changeBgmStatus(0); + break; + case Z2BGM_CHURCH2: + if (sceneNum == SPOT_SANCTUARY_BASEMENT) { + Z2GetSeqMgr()->muteSceneBgm(0, 0.5f); + } + break; + case Z2BGM_MIDNA_SOS: + if ((sceneNum == SPOT_CASTLE_TOWN_INTERIOR && roomNum == 5) + || sceneNum == SPOT_CASTLE_TOWN_SHOPS || sceneNum == SPOT_STAR_TENT) + { + Z2GetSeqMgr()->muteSceneBgm(0, 0.5f); + } + break; + case Z2BGM_TOAL_NIGHT: + if (sceneNum == SPOT_ORDON_INTERIOR && roomNum == 2) { + Z2GetSeqMgr()->changeBgmStatus(2); + } else { + Z2GetSeqMgr()->changeBgmStatus(0); + } + break; + case Z2BGM_FILONE_FOREST: + if (sceneNum == SPOT_CORO_SHOP + || (sceneNum == SPOT_FARON_WOODS && roomNum == 14)) + { + Z2GetSeqMgr()->changeBgmStatus(2); + } else { + Z2GetSeqMgr()->changeBgmStatus(0); + } + break; + } + break; + + case 2: + if (!Z2GetSeqMgr()->bgmStreamCheckReady()) { + Z2GetSeqMgr()->bgmStreamPrepare(BGM_ID); + } + Z2GetSeqMgr()->bgmStreamPlay(); + break; + } + } + + Z2GetSeqMgr()->bgmAllUnMute(0); + field_0x1a = false; } /* 802BA56C-802BA5C0 2B4EAC 0054+00 0/0 1/1 0/0 .text loadStaticWaves__10Z2SceneMgrFv */ void Z2SceneMgr::loadStaticWaves() { - // NONMATCHING + loadSeWave(0); + loadBgmWave(0); + loadSeWave(0x58); + field_0x18 = 0x58; + field_0x19 = 0x58; } /* 802BA5C0-802BA5C8 2B4F00 0008+00 0/0 1/1 0/0 .text checkFirstWaves__10Z2SceneMgrFv */ @@ -913,28 +2058,63 @@ BOOL Z2SceneMgr::checkFirstWaves() { } /* 802BA5C8-802BA630 2B4F08 0068+00 2/2 0/0 0/0 .text eraseSeWave__10Z2SceneMgrFUl */ -void Z2SceneMgr::eraseSeWave(u32 param_0) { - // NONMATCHING +bool Z2SceneMgr::eraseSeWave(u32 wave) { + JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->erase(); + } + } + return false; } /* 802BA630-802BA698 2B4F70 0068+00 2/2 0/0 0/0 .text eraseBgmWave__10Z2SceneMgrFUl */ -void Z2SceneMgr::eraseBgmWave(u32 param_0) { - // NONMATCHING +bool Z2SceneMgr::eraseBgmWave(u32 wave) { + JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->erase(); + } + } + return false; } /* 802BA698-802BA704 2B4FD8 006C+00 1/1 0/0 0/0 .text getWaveLoadStatus__10Z2SceneMgrFUlUl */ -void Z2SceneMgr::getWaveLoadStatus(u32 param_0, u32 param_1) { - // NONMATCHING +s32 Z2SceneMgr::getWaveLoadStatus(u32 wave, u32 bank) { + JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(bank); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->getStatus(); + } + } + return 0; } /* 802BA704-802BA770 2B5044 006C+00 3/3 0/0 0/0 .text loadSeWave__10Z2SceneMgrFUl */ -void Z2SceneMgr::loadSeWave(u32 param_0) { - // NONMATCHING +bool Z2SceneMgr::loadSeWave(u32 wave) { + JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(0); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->load(NULL); + } + } + return false; } /* 802BA770-802BA7DC 2B50B0 006C+00 3/3 0/0 0/0 .text loadBgmWave__10Z2SceneMgrFUl */ -void Z2SceneMgr::loadBgmWave(u32 param_0) { - // NONMATCHING +bool Z2SceneMgr::loadBgmWave(u32 wave) { + JASWaveBank* wave_bank = JAUSectionHeap::getInstance()->getWaveBankTable().getWaveBank(1); + if (wave_bank != NULL) { + JASWaveArc* wave_arc = wave_bank->getWaveArc(wave); + if (wave_arc != NULL) { + return wave_arc->loadTail(NULL); + } + } + return false; } -/* 8039BFA8-8039BFA8 028608 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 8039BFA8-8039BFA8 028608 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/Z2AudioLib/Z2SeMgr.cpp b/src/Z2AudioLib/Z2SeMgr.cpp index 15fc003cdd..920ee7c900 100644 --- a/src/Z2AudioLib/Z2SeMgr.cpp +++ b/src/Z2AudioLib/Z2SeMgr.cpp @@ -13,7 +13,6 @@ #include "Z2AudioLib/Z2Param.h" #include "Z2AudioLib/Z2SeqMgr.h" #include "dol2asm.h" -#include "global.h" // // Forward References: @@ -294,7 +293,7 @@ bool Z2SeMgr::seStart(JAISoundID i_soundID, Vec const* i_pos, u32 param_2, s8 i_ } break; case Z2SE_OBJ_CHANDLV5_SWING: - i_volume = Z2Calc::getParamByExp(param_2, 353.0f, 261.0f, 0.4f, 0.05f, 1.0f, + i_volume = Z2Calc::getParamByExp(param_2, 35.0f, 261.0f, 0.4f, 0.05f, 1.0f, Z2Calc::CURVE_SIGN_2); break; case Z2SE_OBJ_IRONBALL_HIT: diff --git a/src/Z2AudioLib/Z2SeqMgr.cpp b/src/Z2AudioLib/Z2SeqMgr.cpp index 9839405ee4..0be99b8f33 100644 --- a/src/Z2AudioLib/Z2SeqMgr.cpp +++ b/src/Z2AudioLib/Z2SeqMgr.cpp @@ -40,10 +40,10 @@ Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance(this) { field_0xc8 = 1.0f; field_0xcc = 1.0f; mRideCount = 0; - mFlags.flag5 = false; + mFlags.mFieldBgmPlay = false; mFlags.mBattleBgmOff = true; - mFlags.flag6 = false; - mFlags.flag7 = false; + mFlags.mHeightVolMod = false; + mFlags.mTimeProcVolMod = false; } /* 802AF010-802AF408 2A9950 03F8+00 3/3 5/5 38/38 .text bgmStart__8Z2SeqMgrFUlUll */ @@ -121,7 +121,7 @@ void Z2SeqMgr::bgmStart(u32 i_bgmID, u32 i_count, s32 param_2) { changeBgmStatus(0); } - if (mFlags.flag7 && !Z2GetStatusMgr()->checkDayTime()) { + if (mFlags.mTimeProcVolMod && !Z2GetStatusMgr()->checkDayTime()) { field_0xa4.forceOut(); } else { field_0xa4.forceIn(); @@ -144,7 +144,6 @@ void Z2SeqMgr::bgmStop(u32 i_count, s32 param_1) { } } - /* ############################################################################################## */ /* 8039BA08-8039BA08 028068 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push @@ -640,6 +639,7 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { } u32 count = 0; + bool mute; f32 volume1, volume2, volume3, volume4; switch (getMainBgmID()) { case Z2BGM_TOAL_VILLEGE: @@ -677,11 +677,11 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { setChildTrackVolume(&mMainBgmHandle, 13, 0.0f, 0, -1.0f, -1.0f); break; case Z2BGM_DUNGEON_FOREST: - bool mute = false; + mute = false; switch (param_0) { case 4: case 0xc: - i_muteSceneBgm(struct_80450860, 0.0f); + muteSceneBgm(struct_80450860, 0.0f); // fallthrough case 7: mute = true; @@ -691,7 +691,7 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; } if (!mute) { - i_unMuteSceneBgm(struct_80450860); + unMuteSceneBgm(struct_80450860); } break; case Z2BGM_DUNGEON_LV2: @@ -731,9 +731,9 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { setChildTrackVolume(&mMainBgmHandle, 12, volume2, count, -1.0f, -1.0f); setChildTrackVolume(&mMainBgmHandle, 13, volume2, count, -1.0f, -1.0f); if (param_0 == 4) { - i_muteSceneBgm(60, 0.29f); + muteSceneBgm(60, 0.29f); } else { - i_unMuteSceneBgm(60); + unMuteSceneBgm(60); } break; case Z2BGM_CASTLE_TOWN: @@ -805,14 +805,14 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; } if (param_0 == 5) { - i_muteSceneBgm(count, 0.35f); - mFlags.flag6 = false; + muteSceneBgm(count, 0.35f); + mFlags.mHeightVolMod = false; } else { - i_unMuteSceneBgm(count); + unMuteSceneBgm(count); if (param_0 < 2) { - mFlags.flag6 = false; + mFlags.mHeightVolMod = false; } else { - mFlags.flag6 = true; + mFlags.mHeightVolMod = true; } } break; @@ -840,9 +840,9 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; case Z2BGM_LUTERA2: if (param_0 == 0) { - i_muteSceneBgm(0, 0.5f); + muteSceneBgm(0, 0.5f); } else if (param_0 == 1) { - i_unMuteSceneBgm(80); + unMuteSceneBgm(80); } break; case Z2BGM_DEMO08: @@ -953,9 +953,9 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { break; case Z2BGM_FORTUNE: if (param_0 == 1) { - i_muteSceneBgm(45, 0.5f); + muteSceneBgm(45, 0.5f); } else { - i_unMuteSceneBgm(45); + unMuteSceneBgm(45); } break; case Z2BGM_DUNGEON_LV9_02: @@ -1019,11 +1019,11 @@ void Z2SeqMgr::changeBgmStatus(s32 param_0) { case Z2BGM_TOAL_NIGHT: case Z2BGM_FILONE_FOREST: if (param_0 == 1) { - i_muteSceneBgm(45, 0.5f); + muteSceneBgm(45, 0.5f); } else if (param_0 == 2) { - i_muteSceneBgm(0, 0.5f); + muteSceneBgm(0, 0.5f); } else { - i_unMuteSceneBgm(45); + unMuteSceneBgm(45); } break; case Z2BGM_VS_GANON_04: @@ -1257,23 +1257,23 @@ void Z2SeqMgr::changeFishingBgm(s32 param_0) { if (getSubBgmID() == Z2BGM_FISHING_HIT) { subBgmStop(); } - i_unMuteSceneBgm(struct_80450862); + unMuteSceneBgm(struct_80450862); break; case 1: if (getSubBgmID() == Z2BGM_FISHING_HIT) { subBgmStop(); } - i_muteSceneBgm(2, 0.5f); + muteSceneBgm(2, 0.5f); break; case 2: subBgmStart(Z2BGM_FISHING_HIT); - i_muteSceneBgm(1, 0.0f); + muteSceneBgm(1, 0.0f); break; case 4: if (getSubBgmID() == Z2BGM_FISHING_HIT) { subBgmStop(); } - i_muteSceneBgm(1, 0.0f); + muteSceneBgm(1, 0.0f); break; } } @@ -1304,7 +1304,6 @@ void Z2SeqMgr::menuOutBgm() { } /* 802B2E3C-802B327C 2AD77C 0440+00 1/1 0/0 0/0 .text fanfareFramework__8Z2SeqMgrFv */ -// NONMATCHING extra load void Z2SeqMgr::fanfareFramework() { switch (mFanfareID) { case Z2BGM_OPEN_BOX: @@ -1364,7 +1363,7 @@ void Z2SeqMgr::fanfareFramework() { mFanfareCount = 50; mFanfareMute.fadeOut(30); } else if (mFanfareCount == 1) { - Z2GetSoundMgr()->startSound(mFanfareID, &mFanfareHandle, 0); + Z2GetSoundMgr()->startSound((u32)mFanfareID, &mFanfareHandle, 0); mFanfareID.setAnonymous(); } break; @@ -1424,26 +1423,26 @@ void Z2SeqMgr::stopWolfHowlSong() { } /* 802B3318-802B3398 2ADC58 0080+00 0/0 1/1 0/0 .text setHeightVolMod__8Z2SeqMgrFbUl */ -void Z2SeqMgr::setHeightVolMod(bool param_0, u32 i_count) { - mFlags.flag6 = param_0; - if (!param_0) { +void Z2SeqMgr::setHeightVolMod(bool i_value, u32 i_count) { + mFlags.mHeightVolMod = i_value; + if (!i_value) { field_0x84.fadeIn(i_count); } } /* 802B3398-802B33A8 2ADCD8 0010+00 0/0 1/1 0/0 .text setTimeProcVolMod__8Z2SeqMgrFbUl */ -void Z2SeqMgr::setTimeProcVolMod(bool param_0, u32 i_count) { - mFlags.flag7 = param_0; +void Z2SeqMgr::setTimeProcVolMod(bool i_value, u32 i_count) { + mFlags.mTimeProcVolMod = i_value; } /* 80450870-80450874 0002F0 0004+00 1/1 0/0 0/0 .sdata sDeathMtBottom */ -SECTION_SDATA static f32 sDeathMtBottom = -1000.0f; +static f32 sDeathMtBottom = -1000.0f; /* 80450874-80450878 0002F4 0004+00 1/1 0/0 0/0 .sdata sDeathMtTop */ -SECTION_SDATA static f32 sDeathMtTop = 3650.0f; +static f32 sDeathMtTop = 3650.0f; /* 80450878-80450880 0002F8 0004+04 1/1 0/0 0/0 .sdata sUnderWaterDepthMax */ -SECTION_SDATA static f32 sUnderWaterDepthMax = 3500.0f; +static f32 sUnderWaterDepthMax = 3500.0f; /* 802B33A8-802B3EAC 2ADCE8 0B04+00 0/0 1/1 0/0 .text processBgmFramework__8Z2SeqMgrFv */ void Z2SeqMgr::processBgmFramework() { @@ -1467,7 +1466,7 @@ void Z2SeqMgr::processBgmFramework() { mMainBgmMaster.fadeIn(struct_80450861); } - if (mFlags.flag7) { + if (mFlags.mTimeProcVolMod) { if (Z2GetStatusMgr()->checkDayTime() && field_0xa4.getDest() != 1.0f) { field_0xa4.fadeIn(600); } else if (!Z2GetStatusMgr()->checkDayTime() && field_0xa4.getDest() != 0.0f) { @@ -1475,11 +1474,11 @@ void Z2SeqMgr::processBgmFramework() { } } - if (mFlags.flag6 && Z2GetSceneMgr()->isSceneExist() + if (mFlags.mHeightVolMod && Z2GetSceneMgr()->isSceneExist() && Z2GetLink() != NULL && Z2GetLink()->getCurrentPos() != NULL) { f32 link_y = Z2GetLink()->getCurrentPos()->y; - f32 volume; + f32 volume, depth; switch (getMainBgmID()) { case Z2BGM_DEATH_MOUNTAIN01: volume = Z2Calc::getParamByExp(link_y, sDeathMtTop, sDeathMtBottom, 0.3f, 0.0f, 1.0f, @@ -1501,7 +1500,7 @@ void Z2SeqMgr::processBgmFramework() { case Z2BGM_ZORA_VILLAGE: case Z2BGM_FISHING: case Z2BGM_LAKE: - f32 depth = Z2GetStatusMgr()->getCameraInWaterDepth(); + depth = Z2GetStatusMgr()->getCameraInWaterDepth(); if (depth > sUnderWaterDepthMax) { field_0x84.forceOut(); } else if (depth > 0.0f) { @@ -1592,7 +1591,7 @@ void Z2SeqMgr::processBgmFramework() { f32 volume = base_vol * mMainBgmMaster.get() * mSceneBgm.get(); mStreamBgmHandle->getAuxiliary().moveVolume(volume, 0); } - i_setWindStoneVol(1.0f, 30); + setWindStoneVol(1.0f, 30); } /* 802B3EAC-802B3F40 2AE7EC 0094+00 0/0 2/2 0/0 .text checkBgmIDPlaying__8Z2SeqMgrFUl */ @@ -1969,7 +1968,7 @@ void Z2SeqMgr::stopBattleBgm(u8 param_0, u8 param_1) { /* 802B545C-802B556C 2AFD9C 0110+00 1/1 0/0 0/0 .text fieldBgmStart__8Z2SeqMgrFv */ void Z2SeqMgr::fieldBgmStart() { - if (Z2GetSceneMgr()->isSceneExist() && mFlags.flag5) { + if (Z2GetSceneMgr()->isSceneExist() && mFlags.mFieldBgmPlay) { if (Z2GetStatusMgr()->checkDayTime()) { Z2GetSoundMgr()->startSound(Z2BGM_FIELD_LINK_DAY, &mMainBgmHandle, NULL); changeBgmStatus(0); @@ -2046,7 +2045,7 @@ void Z2SeqMgr::fieldBgmFramework() { if (Z2GetSceneMgr()->isSceneExist() && !Z2GetSceneMgr()->isInDarkness() && (Z2GetSceneMgr()->getCurrentSceneNum() == 0x1e || Z2GetSceneMgr()->getCurrentSceneNum() == 0x1f) - && mFlags.flag5) + && mFlags.mFieldBgmPlay) { if (mRideCount != 0) { mRideCount--; @@ -2229,7 +2228,6 @@ void Z2SeqMgr::taktModeMute() { mBgmPause.move(0.3f, 10); } - /* 802B5ED4-802B5F1C 2B0814 0048+00 0/0 1/1 0/0 .text taktModeMuteOff__8Z2SeqMgrFv */ void Z2SeqMgr::taktModeMuteOff() { mBgmPause.fadeIn(10); diff --git a/src/Z2AudioLib/Z2SoundHandles.cpp b/src/Z2AudioLib/Z2SoundHandles.cpp index 744773686a..b351939a2b 100644 --- a/src/Z2AudioLib/Z2SoundHandles.cpp +++ b/src/Z2AudioLib/Z2SoundHandles.cpp @@ -5,38 +5,6 @@ #include "Z2AudioLib/Z2SoundHandles.h" #include "JSystem/JAudio2/JAISoundInfo.h" -#include "dol2asm.h" - -extern "C" void func_802AB200(void* _this); -extern "C" void __ct__17JASGenericMemPoolFv(); -extern "C" void __dt__17JASGenericMemPoolFv(); -extern "C" void alloc__17JASGenericMemPoolFUl(); -extern "C" void free__17JASGenericMemPoolFPvUl(); -extern "C" void releaseSound__14JAISoundHandleFv(); -extern "C" void stop__8JAISoundFUl(); -extern "C" void __dl__FPv(); -extern "C" void __ct__10JSUPtrLinkFPv(); -extern "C" void __dt__10JSUPtrLinkFv(); -extern "C" void __dt__10JSUPtrListFv(); -extern "C" void initiate__10JSUPtrListFv(); -extern "C" void append__10JSUPtrListFP10JSUPtrLink(); -extern "C" void remove__10JSUPtrListFP10JSUPtrLink(); -extern "C" void __register_global_object(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" extern u8 data_80451348[8]; - -/* 804341B8-804341C4 060ED8 000C+00 3/3 0/0 0/0 .bss @632 */ -static u8 lit_632[12]; - -/* 804341C4-804341D8 060EE4 0010+04 3/3 1/1 0/0 .bss - * memPool_$localstatic3$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv */ -extern u8 data_804341C4[16 + 4 /* padding */]; -u8 data_804341C4[16 + 4 /* padding */]; - -// inline JAISoundID::JAISoundID(u32 pId) : mId(pId) {} Z2SoundHandles::Z2SoundHandles() { mNumHandles = 0; @@ -51,7 +19,7 @@ void Z2SoundHandles::initHandlesPool(u8 pNumHandles) { } /* 802AB120-802AB200 2A5A60 00E0+00 1/1 1/1 0/0 .text deleteHandlesPool__14Z2SoundHandlesFv */ -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations void Z2SoundHandles::deleteHandlesPool() { JSULink* link; while (link = getFirst(), link != NULL) { @@ -61,16 +29,6 @@ void Z2SoundHandles::deleteHandlesPool() { } mNumHandles = 0; } -#else -void Z2SoundHandles::deleteHandlesPool() { - // NONMATCHING -} -#endif - -/* 802AB200-802AB254 2A5B40 0054+00 3/3 1/1 0/0 .text __dt__31JASMemPool<17Z2SoundHandlePool>Fv */ -extern "C" void func_802AB200(void* _this) { - // NONMATCHING -} Z2SoundHandlePool* Z2SoundHandles::getHandleSoundID(JAISoundID pSoundId) { JSULink* link; @@ -102,7 +60,7 @@ Z2SoundHandlePool* Z2SoundHandles::getHandleUserData(u32 pUserData) { /* 802AB2D8-802AB3D0 2A5C18 00F8+00 0/0 3/3 0/0 .text getFreeHandle__14Z2SoundHandlesFv */ -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() { JSULink* link; for (link = getFirst(); link != NULL; link = link->getNext()) { @@ -123,11 +81,6 @@ Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() { return NULL; } -#else -Z2SoundHandlePool* Z2SoundHandles::getFreeHandle() { - // NONMATCHING -} -#endif /* 802AB3D0-802AB4A0 2A5D10 00D0+00 0/0 2/2 0/0 .text * getLowPrioSound__14Z2SoundHandlesF10JAISoundID */ @@ -180,7 +133,7 @@ bool Z2SoundHandles::isActive() const { /* 802AB538-802AB64C 2A5E78 0114+00 0/0 1/1 0/0 .text * setPos__14Z2SoundHandlesFRCQ29JGeometry8TVec3 */ -#ifdef NONMATCHING +// NONMATCHING JASPoolAllocObject<_> locations void Z2SoundHandles::setPos(JGeometry::TVec3 const& param_0) { JSULink* link; for (link = getFirst(); link != NULL; link = link->getNext()) { @@ -194,8 +147,3 @@ void Z2SoundHandles::setPos(JGeometry::TVec3 const& param_0) { } } } -#else -void Z2SoundHandles::setPos(JGeometry::TVec3 const& param_0) { - // NONMATCHING -} -#endif \ No newline at end of file diff --git a/src/Z2AudioLib/Z2SoundInfo.cpp b/src/Z2AudioLib/Z2SoundInfo.cpp index 67b957282b..ad9f0519dd 100644 --- a/src/Z2AudioLib/Z2SoundInfo.cpp +++ b/src/Z2AudioLib/Z2SoundInfo.cpp @@ -6,18 +6,15 @@ #include "Z2AudioLib/Z2SoundInfo.h" #include "JSystem/JAudio2/JAISeq.h" #include "JSystem/JAudio2/JAISe.h" +#include "JSystem/JAudio2/JAISoundChild.h" +#include "JSystem/JAudio2/JAIStream.h" #include "JSystem/JAudio2/JAUSoundTable.h" #include "JSystem/JUtility/JUTAssert.h" #include "Z2AudioLib/Z2Calc.h" -#include "dol2asm.h" #include "dolphin/dvd.h" -// -// Types: -// - struct JAUStdSoundTableType { - static u32 STRM_CH_SHIFT; + static const u32 STRM_CH_SHIFT; struct StringOffset { static inline const char* getString(const void* addr, u32 offset) { return (const char*)addr + offset; @@ -25,53 +22,6 @@ struct JAUStdSoundTableType { }; }; -// -// Forward References: -// - -extern "C" void getBgmSeqResourceID__11Z2SoundInfoCF10JAISoundID(); -extern "C" void getSoundType__11Z2SoundInfoCF10JAISoundID(); -extern "C" void getCategory__11Z2SoundInfoCF10JAISoundID(); -extern "C" void getPriority__11Z2SoundInfoCF10JAISoundID(); -extern "C" void getAudibleSwFull__11Z2SoundInfoF10JAISoundID(); -extern "C" void getAudibleSw__11Z2SoundInfoCF10JAISoundID(); -extern "C" void getSeInfo__11Z2SoundInfoCF10JAISoundIDP5JAISe(); -extern "C" void getSeqInfo__11Z2SoundInfoCF10JAISoundIDP6JAISeq(); -extern "C" void getStreamInfo__11Z2SoundInfoCF10JAISoundIDP9JAIStream(); -extern "C" void getStreamFilePath__11Z2SoundInfoF10JAISoundID(); -extern "C" void getStreamFileEntry__11Z2SoundInfoF10JAISoundID(); -extern "C" void getSwBit__11Z2SoundInfoCF10JAISoundID(); -extern "C" void getSoundInfo___11Z2SoundInfoCF10JAISoundIDP8JAISound(); -extern "C" void __dt__11Z2SoundInfoFv(); -extern "C" static void func_802BBCBC(); -extern "C" static void func_802BBCC4(); -extern "C" static void func_802BBCCC(); -extern "C" static void func_802BBCD4(); -extern "C" u32 STRM_CH_SHIFT__20JAUStdSoundTableType; - -// -// External References: -// - -extern "C" void __dt__12JAISoundInfoFv(); -extern "C" void __dt__16JAIStreamDataMgrFv(); -extern "C" void getTypeID__13JAUSoundTableCF10JAISoundID(); -extern "C" void getData__13JAUSoundTableCF10JAISoundID(); -extern "C" void linearTransform__6Z2CalcFfffffb(); -extern "C" void getRandom_0_1__6Z2CalcFv(); -extern "C" void __dl__FPv(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__12JAUSoundInfo[4 + 1 /* padding */]; -extern "C" extern u8 data_80450B58[4]; -extern "C" extern u8 __OSReport_disable; - /* 802BB00C-802BB090 2B594C 0084+00 2/1 0/0 0/0 .text * getBgmSeqResourceID__11Z2SoundInfoCF10JAISoundID */ u16 Z2SoundInfo::getBgmSeqResourceID(JAISoundID param_0) const { @@ -123,6 +73,7 @@ u32 Z2SoundInfo::getPriority(JAISoundID param_0) const { JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) { JAUAudibleParam local_28; JUT_ASSERT(82, isValid()); + int iVar1, uVar7; switch (JASGlobalInstance::getInstance()->getTypeID(param_0)) { case 81: local_28.field_0x0.bytes.b0_0 = (u32)getSwBit(param_0) >> 8; @@ -157,8 +108,7 @@ JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) { local_28.field_0x0.bytes.b1_1 = 1; } - int iVar1; - int uVar7 = 0; + uVar7 = 0; if ((getSwBit(param_0) & 0x80000) != 0) { uVar7 = 8; } @@ -188,6 +138,7 @@ JAUAudibleParam Z2SoundInfo::getAudibleSwFull(JAISoundID param_0) { u16 Z2SoundInfo::getAudibleSw(JAISoundID param_0) const { JAUAudibleParam local_28; JUT_ASSERT(184, isValid()); + int iVar1, uVar7; switch (JASGlobalInstance::getInstance()->getTypeID(param_0)) { case 81: local_28.field_0x0.bytes.b0_0 = (u32)getSwBit(param_0) >> 8; @@ -222,8 +173,7 @@ u16 Z2SoundInfo::getAudibleSw(JAISoundID param_0) const { local_28.field_0x0.bytes.b1_1 = 1; } - int iVar1; - int uVar7 = 0; + uVar7 = 0; if ((getSwBit(param_0) & 0x80000) != 0) { uVar7 = 8; } @@ -242,40 +192,6 @@ u16 Z2SoundInfo::getAudibleSw(JAISoundID param_0) const { return local_28.field_0x0.half.f0; } -/* ############################################################################################## */ -/* 80455A68-80455A6C 004068 0004+00 1/1 0/0 0/0 .sdata2 @963 */ -SECTION_SDATA2 static f32 lit_963 = 8.0f; - -/* 80455A6C-80455A70 00406C 0004+00 1/1 0/0 0/0 .sdata2 @964 */ -SECTION_SDATA2 static f32 lit_964 = 15.0f; - -/* 80455A70-80455A74 004070 0004+00 1/1 0/0 0/0 .sdata2 @965 */ -SECTION_SDATA2 static f32 lit_965 = 16.0f; - -/* 80455A74-80455A78 004074 0004+00 1/1 0/0 0/0 .sdata2 @966 */ -SECTION_SDATA2 static f32 lit_966 = 24.0f; - -/* 80455A78-80455A7C 004078 0004+00 1/1 0/0 0/0 .sdata2 @967 */ -SECTION_SDATA2 static f32 lit_967 = 48.0f; - -/* 80455A7C-80455A80 00407C 0004+00 2/2 0/0 0/0 .sdata2 @968 */ -SECTION_SDATA2 static u8 lit_968[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455A80-80455A88 004080 0004+04 2/2 0/0 0/0 .sdata2 @969 */ -SECTION_SDATA2 static f32 lit_969[1 + 1 /* padding */] = { - 1.0f, - /* padding */ - 0.0f, -}; - -/* 80455A88-80455A90 004088 0008+00 2/2 0/0 0/0 .sdata2 @973 */ -SECTION_SDATA2 static f64 lit_973 = 4503599627370496.0 /* cast u32 to float */; - /* 802BB6DC-802BB8B4 2B601C 01D8+00 1/0 0/0 0/0 .text * getSeInfo__11Z2SoundInfoCF10JAISoundIDP5JAISe */ void Z2SoundInfo::getSeInfo(JAISoundID param_1, JAISe* param_2) const { @@ -309,24 +225,18 @@ void Z2SoundInfo::getSeInfo(JAISoundID param_1, JAISe* param_2) const { } } - /* 802BB8B4-802BB8E0 2B61F4 002C+00 1/0 0/0 0/0 .text * getSeqInfo__11Z2SoundInfoCF10JAISoundIDP6JAISeq */ void Z2SoundInfo::getSeqInfo(JAISoundID param_0, JAISeq* param_1) const { getSoundInfo_(param_0, param_1); } -/* ############################################################################################## */ /* 80455A90-80455A94 004090 0004+00 1/1 0/0 0/0 .sdata2 STRM_CH_SHIFT__20JAUStdSoundTableType */ -SECTION_SDATA2 u32 JAUStdSoundTableType::STRM_CH_SHIFT = 0x00000002; - -/* 80455A94-80455A98 004094 0004+00 1/1 0/0 0/0 .sdata2 @1010 */ -SECTION_SDATA2 static f32 lit_1010 = 0.5f; +u32 const JAUStdSoundTableType::STRM_CH_SHIFT = 2; /* 802BB8E0-802BBA10 2B6220 0130+00 1/0 0/0 0/0 .text * getStreamInfo__11Z2SoundInfoCF10JAISoundIDP9JAIStream */ -// regalloc -#ifdef NONMATCHING +// NONMATCHING regalloc void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const { int numChild; JAUSoundTableItem* data; @@ -334,18 +244,15 @@ void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const { JUT_ASSERT(349, isValid()); switch (JASGlobalInstance::getInstance()->getTypeID(param_1) & 0xf0) { case 0x70: - int chShift; - u32 uVar1; + u16 uVar1; s32 iVar4; - u16 uVar3; data = JASGlobalInstance::getInstance()->getData(param_1); JUT_ASSERT(356, data); uVar1 = data->mResourceId; numChild = param_2->getNumChild(); iVar4 = 0; - chShift = JAUStdSoundTableType::STRM_CH_SHIFT; - for (uVar3 = uVar1; iVar4 < numChild && uVar3 != 0; uVar3 >>= chShift, iVar4++) { - u32 uVar2 = uVar3 & 3; + for (; iVar4 < numChild && uVar1 != 0; uVar1 >>= JAUStdSoundTableType::STRM_CH_SHIFT, iVar4++) { + u32 uVar2 = uVar1 & 3; if (uVar2 != 0) { JAISoundChild* child = param_2->getChild(iVar4); if (child != NULL) { @@ -365,21 +272,18 @@ void Z2SoundInfo::getStreamInfo(JAISoundID param_1, JAIStream* param_2) const { } } } -#else -void Z2SoundInfo::getStreamInfo(JAISoundID param_0, JAIStream* param_1) const { - // NONMATCHING -} -#endif /* 802BBA10-802BBA88 2B6350 0078+00 1/1 0/0 0/0 .text * getStreamFilePath__11Z2SoundInfoF10JAISoundID */ const char* Z2SoundInfo::getStreamFilePath(JAISoundID param_1) { JUT_ASSERT(387, isValid()); + JAUSoundTableItem* data; + const void* resource; switch (JASGlobalInstance::getInstance()->getTypeID(param_1) & 0xf0) { case 0x70: - JAUSoundTableItem* data = JASGlobalInstance::getInstance()->getData(param_1); + data = JASGlobalInstance::getInstance()->getData(param_1); JUT_ASSERT(394, data); - const void* resource = JASGlobalInstance::getInstance()->getResource(); + resource = JASGlobalInstance::getInstance()->getResource(); JUT_ASSERT(398, resource); return JAUStdSoundTableType::StringOffset::getString(resource, data->field_0x4); default: @@ -409,14 +313,6 @@ int Z2SoundInfo::getSwBit(JAISoundID param_1) const { return 0xffffffff; } -/* ############################################################################################## */ -/* 80455A98-80455AA0 004098 0004+04 1/1 0/0 0/0 .sdata2 @1070 */ -SECTION_SDATA2 static f32 lit_1070[1 + 1 /* padding */] = { - 1.0f / 127.0f, - /* padding */ - 0.0f, -}; - /* 802BBB48-802BBBE0 2B6488 0098+00 3/3 0/0 0/0 .text * getSoundInfo___11Z2SoundInfoCF10JAISoundIDP8JAISound */ void Z2SoundInfo::getSoundInfo_(JAISoundID param_1, JAISound* param_2) const { @@ -427,30 +323,3 @@ void Z2SoundInfo::getSoundInfo_(JAISoundID param_1, JAISound* param_2) const { param_2->getProperty().field_0x0 = (1.0f / 127.0f) * data->field_0x1; } } - - -/* 802BBBE0-802BBCBC 2B6520 00DC+00 2/1 0/0 0/0 .text __dt__11Z2SoundInfoFv */ -// Z2SoundInfo::~Z2SoundInfo() {} - -/* 802BBCBC-802BBCC4 2B65FC 0008+00 1/0 0/0 0/0 .text - * @4@getBgmSeqResourceID__11Z2SoundInfoCF10JAISoundID */ -static void func_802BBCBC() { - // NONMATCHING -} - -/* 802BBCC4-802BBCCC 2B6604 0008+00 1/0 0/0 0/0 .text @4@getAudibleSw__11Z2SoundInfoCF10JAISoundID - */ -static void func_802BBCC4() { - // NONMATCHING -} - -/* 802BBCCC-802BBCD4 2B660C 0008+00 1/0 0/0 0/0 .text @8@__dt__11Z2SoundInfoFv */ -static void func_802BBCCC() { - // NONMATCHING -} - -/* 802BBCD4-802BBCDC 2B6614 0008+00 1/0 0/0 0/0 .text - * @8@getStreamFileEntry__11Z2SoundInfoF10JAISoundID */ -static void func_802BBCD4() { - // NONMATCHING -} diff --git a/src/Z2AudioLib/Z2SoundMgr.cpp b/src/Z2AudioLib/Z2SoundMgr.cpp index 6c8668cf9f..5d1f8952df 100644 --- a/src/Z2AudioLib/Z2SoundMgr.cpp +++ b/src/Z2AudioLib/Z2SoundMgr.cpp @@ -13,131 +13,9 @@ #include "JSystem/JAudio2/JASCalc.h" #include "JSystem/JAudio2/JASDriverIF.h" #include "JSystem/JAudio2/JAUSectionHeap.h" -#include "dol2asm.h" - -// -// Forward References: -// - -extern "C" void seqCallback__FP8JASTrackUs(); -extern "C" void __ct__10Z2SoundMgrFv(); -extern "C" void func_802A9EE8(); -extern "C" void calc__10Z2SoundMgrFv(); -extern "C" void setIIR__10Z2SoundMgrFP8JAISoundPCs(); -extern "C" void setFilterOff__10Z2SoundMgrFP8JAISound(); -extern "C" void resetFilterAll__10Z2SoundMgrFv(); -extern "C" void mixOut__10Z2SoundMgrFv(); -extern "C" void framework__10Z2SoundMgrFv(); -extern "C" void pauseAllGameSound__10Z2SoundMgrFb(); -extern "C" void stopSoundID__10Z2SoundMgrF10JAISoundID(); -extern "C" void stopSync__10Z2SoundMgrFv(); -extern "C" void stop__10Z2SoundMgrFv(); -extern "C" void initParams__10Z2SoundMgrFv(); -extern "C" void multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf(); -extern "C" void isPlayingSoundID__10Z2SoundMgrF10JAISoundID(); -extern "C" extern char const* const Z2SoundMgr__stringBase0; void dComIfGs_staffroll_next_go(); -// -// External References: -// - -extern "C" void dComIfGs_staffroll_next_go__Fv(); -extern "C" void setFIR__8JASTrackFPCs(); -extern "C" void setIIR__8JASTrackFPCs(); -extern "C" void writePort__8JASTrackFUlUs(); -extern "C" void waitSubFrame__9JASDriverFv(); -extern "C" void pause__16JAISeCategoryMgrFb(); -extern "C" void __ct__8JAISeMgrFb(); -extern "C" void stop__8JAISeMgrFv(); -extern "C" void stopSoundID__8JAISeMgrF10JAISoundID(); -extern "C" void initParams__8JAISeMgrFv(); -extern "C" void calc__8JAISeMgrFv(); -extern "C" void mixOut__8JAISeMgrFv(); -extern "C" void func_802A0768(); -extern "C" void getNumActiveSe__8JAISeMgrCFv(); -extern "C" void __ct__9JAISeqMgrFb(); -extern "C" void func_802A1B48(); -extern "C" void calc__9JAISeqMgrFv(); -extern "C" void stop__9JAISeqMgrFv(); -extern "C" void stopSoundID__9JAISeqMgrF10JAISoundID(); -extern "C" void mixOut__9JAISeqMgrFv(); -extern "C" void moveVolume__18JAISoundParamsMoveFfUl(); -extern "C" void __ct__12JAIStreamMgrFb(); -extern "C" void func_802A3C3C(); -extern "C" void calc__12JAIStreamMgrFv(); -extern "C" void stop__12JAIStreamMgrFv(); -extern "C" void stop__12JAIStreamMgrFUl(); -extern "C" void stopSoundID__12JAIStreamMgrF10JAISoundID(); -extern "C" void mixOut__12JAIStreamMgrFv(); -extern "C" void loadDynamicSeq__14JAUSectionHeapF10JAISoundIDb(); -extern "C" void releaseIdleDynamicSeqDataBlock__14JAUSectionHeapFv(); -extern "C" void seMoveVolumeAll__7Z2SeMgrFfUl(); -extern "C" void bgmStart__8Z2SeqMgrFUlUll(); -extern "C" void changeBgmStatus__8Z2SeqMgrFl(); -extern "C" void onVariantBgmJumpEnd__8Z2SeqMgrFb(); -extern "C" void setChildTrackVolume__8Z2SeqMgrFP14JAISoundHandleifUlff(); -extern "C" void onFieldBgmJumpStart__8Z2SeqMgrFv(); -extern "C" void onFieldBgmJumpEnd__8Z2SeqMgrFv(); -extern "C" void getSwBit__11Z2SoundInfoCF10JAISoundID(); -extern "C" void speakOneWord__12Z2SpeechMgr2Fb(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" u8 const CUTOFF_TO_IIR_TABLE__7JASCalc[1024]; -extern "C" extern u8 data_80450B4C[4]; -extern "C" extern u8 data_80450B70[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 u8 data_80450CC0[4 + 4 /* padding */]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 803C9D18-803C9D70 -00001 0058+00 1/1 0/0 0/0 .data @3690 */ -SECTION_DATA static void* lit_3690[22] = { - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x40), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x7C), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x88), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x94), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0xA4), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0xB4), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0xC4), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1AC), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1BC), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1D0), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x1CC), - (void*)(((char*)seqCallback__FP8JASTrackUs) + 0x148), -}; - -/* 80455838-8045583C 003E38 0004+00 5/5 0/0 0/0 .sdata2 @3688 */ -SECTION_SDATA2 static f32 lit_3688 = 1.0f; - -/* 8045583C-80455840 003E3C 0004+00 1/1 0/0 0/0 .sdata2 @3689 */ -SECTION_SDATA2 static f32 lit_3689 = -1.0f; - /* 802A9BC8-802A9E80 2A4508 02B8+00 1/0 1/1 0/0 .text seqCallback__FP8JASTrackUs */ u16 seqCallback(JASTrack* i_track, u16 param_1) { JSUList* list; @@ -221,20 +99,7 @@ u16 seqCallback(JASTrack* i_track, u16 param_1) { return 0; } - -/* ############################################################################################## */ -/* 803C9D70-803C9D80 026E90 000C+04 1/1 1/1 0/0 .data __vt__10Z2SoundMgr */ -SECTION_DATA extern void* __vt__10Z2SoundMgr[3 + 1 /* padding */] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)func_802A9EE8, - /* padding */ - NULL, -}; - /* 802A9E80-802A9EE8 2A47C0 0068+00 0/0 1/1 0/0 .text __ct__10Z2SoundMgrFv */ -#ifdef NONMATCHING -// matches but generates an extra weak function Z2SoundMgr::Z2SoundMgr() : JASGlobalInstance(this), mSeMgr(true), @@ -243,37 +108,6 @@ Z2SoundMgr::Z2SoundMgr() : { mSoundID.setAnonymous(); } -#else -Z2SoundMgr::Z2SoundMgr() : JASGlobalInstance(this), - mSeMgr(true), - mSeqMgr(true), - mStreamMgr(true) { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8039B9D0 = "Unknown Sound-Type id :%08x\n"; -/* @stringBase0 padding */ -SECTION_DEAD static char const* const pad_8039B9ED = "\0\0"; -#pragma pop - -/* 80455840-80455844 003E40 0004+00 1/1 0/0 0/0 .sdata2 @3904 */ -SECTION_SDATA2 static f32 lit_3904 = 3.0f / 10.0f; - -/* 80455844-80455848 003E44 0004+00 3/3 0/0 0/0 .sdata2 @3905 */ -SECTION_SDATA2 static u8 lit_3905[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455848-80455850 003E48 0008+00 2/2 0/0 0/0 .sdata2 @3909 */ -SECTION_SDATA2 static f64 lit_3909 = 4503599627370496.0 /* cast u32 to float */; /* 802A9EE8-802AA1B0 2A4828 02C8+00 1/0 0/0 0/0 .text * startSound__10Z2SoundMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3 */ @@ -289,7 +123,7 @@ bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle, case 1: if (i_soundID == Z2BGM_LUTERA_DEMO) { Z2GetSeqMgr()->bgmStart(Z2BGM_LUTERA2, 0, 0); - Z2GetSeqMgr()->i_unMuteSceneBgm(0); + Z2GetSeqMgr()->unMuteSceneBgm(0); Z2GetSeqMgr()->changeBgmStatus(0); return mSeMgr.startSound(Z2SE_NO_SOUND, i_handle, i_pos); } else { @@ -335,7 +169,7 @@ bool Z2SoundMgr::startSound(JAISoundID i_soundID, JAISoundHandle* i_handle, /* 802AA1B0-802AA270 2A4AF0 00C0+00 2/2 0/0 0/0 .text calc__10Z2SoundMgrFv */ -#ifdef NONMATCHING +// NONMATCHING extra load void Z2SoundMgr::calc() { mSeMgr.calc(); if (!mSoundID.isAnonymous() && !isPlayingSoundID(mSoundID)) { @@ -347,11 +181,6 @@ void Z2SoundMgr::calc() { mSeqMgr.calc(); mStreamMgr.calc(); } -#else -void Z2SoundMgr::calc() { - // NONMATCHING -} -#endif /* 802AA270-802AA33C 2A4BB0 00CC+00 1/1 2/2 0/0 .text setIIR__10Z2SoundMgrFP8JAISoundPCs */ @@ -519,14 +348,6 @@ void Z2SoundMgr::stop() { mStreamMgr.stop(); } -/* ############################################################################################## */ -/* 80455850-80455858 003E50 0004+04 1/1 0/0 0/0 .sdata2 @4313 */ -SECTION_SDATA2 static f32 lit_4313[1 + 1 /* padding */] = { - 0.5f, - /* padding */ - 0.0f, -}; - /* 802AA908-802AA9E8 2A5248 00E0+00 0/0 1/1 0/0 .text initParams__10Z2SoundMgrFv */ void Z2SoundMgr::initParams() { mSeMgr.initParams(); @@ -537,7 +358,7 @@ void Z2SoundMgr::initParams() { /* 802AA9E8-802AAAC4 2A5328 00DC+00 0/0 1/1 0/0 .text * multiVolumeSoundID__10Z2SoundMgrF10JAISoundIDf */ -#ifdef NONMATCHING +// NONMATCHING extra load void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { if (!i_soundID.isAnonymous() && Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { JSUList* list = @@ -549,18 +370,13 @@ void Z2SoundMgr::multiVolumeSoundID(JAISoundID i_soundID, f32 i_multi) { } } } -#else -void Z2SoundMgr::multiVolumeSoundID(JAISoundID param_0, f32 param_1) { - // NONMATCHING -} -#endif /* 802AAAC4-802AAB94 2A5404 00D0+00 1/1 0/0 0/0 .text isPlayingSoundID__10Z2SoundMgrF10JAISoundID */ -#ifdef NONMATCHING +// NONMATCHING extra load bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) { if (i_soundID.isAnonymous()) { - return 0; + return false; } if (Z2GetSoundInfo()->getSoundType(i_soundID) == 0) { JSUList* list = @@ -573,10 +389,5 @@ bool Z2SoundMgr::isPlayingSoundID(JAISoundID i_soundID) { } return false; } -#else -bool Z2SoundMgr::isPlayingSoundID(JAISoundID param_0) { - // NONMATCHING -} -#endif -/* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/Z2AudioLib/Z2SoundObjMgr.cpp b/src/Z2AudioLib/Z2SoundObjMgr.cpp index 74723562aa..a4bfb2bc9c 100644 --- a/src/Z2AudioLib/Z2SoundObjMgr.cpp +++ b/src/Z2AudioLib/Z2SoundObjMgr.cpp @@ -8,10 +8,8 @@ #include "Z2AudioLib/Z2SeqMgr.h" #include "Z2AudioLib/Z2Calc.h" #include "Z2AudioLib/Z2SceneMgr.h" -#include "dol2asm.h" /* 802BF920-802BF980 2BA260 0060+00 0/0 1/1 0/0 .text __ct__13Z2SoundObjMgrFv */ -// order wrong because this needs to inherit from JASGlobalInstance Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance(this) { mGhostEnemyState = 0; mTwilightBattle = 0; @@ -28,123 +26,97 @@ void Z2SoundObjMgr::setForceBattleArea(bool forceBattle, u16 param_1, u16 param_ mEnemyArea.field_0x6 = param_3; } +/* 80455B80-80455B84 004180 0004+00 1/1 0/0 0/0 .sdata2 sAreaDefault */ +static Z2EnemyArea const sAreaDefault = {true, 700, 1100, 1500}; + +/* 80455B88-80455B8C 004188 0004+00 1/1 0/0 0/0 .sdata2 sAreaFloating */ +static Z2EnemyArea const sAreaFloating = {false, 700, 1100, 1500}; + +/* 80455B90-80455B94 004190 0004+00 1/1 0/0 0/0 .sdata2 sAreaWide */ +static Z2EnemyArea const sAreaWide = {true, 700, 1500, 3300}; + +/* 80455B98-80455B9C 004198 0004+00 1/1 0/0 0/0 .sdata2 sAreaWideFloating */ +static Z2EnemyArea const sAreaWideFloating = {false, 700, 1500, 3300}; + +/* 80455BA0-80455BA4 0041A0 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmall */ +static Z2EnemyArea const sAreaSmall = {true, 300, 700, 1000}; + +/* 80455BA8-80455BAC 0041A8 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmallFloating */ +static Z2EnemyArea const sAreaSmallFloating = {false, 500, 800, 1200}; + struct EnemyInfo { - u8 field_0x0; - u8 field_0x1; - u8 field_0x2; - u8 field_0x3; - u8 field_0x4; - u8 field_0x5; - u8 field_0x6; - u8 field_0x7; - u32 field_0x8; - u32 field_0xc; + char mName[8]; + Z2EnemyArea mEnemyArea; }; /* 803CAD70-803CB170 027E90 0400+00 3/3 0/0 0/0 .data mEnemyInfo */ -SECTION_DATA static EnemyInfo mEnemyInfo[64] = { - {0x44, 0x75, 0x6D, 0x6D, 0x79, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x31, 0x00, 0x00, 0x00, 0x00, 0x010002BC, 0x04B007D0}, - {0x45, 0x5F, 0x79, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x79, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x79, 0x67, 0x00, 0x00, 0x00, 0x00, 0x0100012C, 0x01F402BC}, - {0x45, 0x5F, 0x79, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x79, 0x64, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x038405DC}, - {0x45, 0x5F, 0x72, 0x64, 0x79, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x79, 0x6D, 0x62, 0x00, 0x00, 0x00, 0x0000000A, 0x0014001E}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x77, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x72, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x64, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x6B, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x74, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x010002BC, 0x05DC09C4}, - {0x45, 0x5F, 0x74, 0x6B, 0x32, 0x00, 0x00, 0x00, 0x010002BC, 0x05DC09C4}, - {0x45, 0x5F, 0x63, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x64, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x66, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x53, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x50, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x64, 0x62, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x03840708}, - {0x45, 0x5F, 0x6B, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x62, 0x73, 0x00, 0x00, 0x00, 0x00, 0x010000C8, 0x01900258}, - {0x45, 0x5F, 0x53, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x62, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x62, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x48, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x68, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x000001F4, 0x03200514}, - {0x45, 0x5F, 0x77, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x6F, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x66, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x66, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x62, 0x67, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x6D, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x032005DC}, - {0x45, 0x5F, 0x6E, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x02BC044C}, - {0x45, 0x5F, 0x70, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x72, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x67, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x02BC0384}, - {0x45, 0x5F, 0x68, 0x62, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x038405DC}, - {0x45, 0x5F, 0x67, 0x62, 0x00, 0x00, 0x00, 0x00, 0x01000640, 0x0BB80FA0}, - {0x45, 0x5F, 0x6D, 0x73, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x02BC044C}, - {0x45, 0x5F, 0x64, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x62, 0x69, 0x00, 0x00, 0x00, 0x00, 0x010001F4, 0x02BC0384}, - {0x45, 0x5F, 0x74, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x61, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x64, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x77, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x67, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x6D, 0x32, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x73, 0x77, 0x00, 0x00, 0x00, 0x00, 0x01000190, 0x025805DC}, - {0x45, 0x5F, 0x72, 0x64, 0x62, 0x00, 0x00, 0x00, 0x010001F4, 0x03E805DC}, - {0x45, 0x5F, 0x6B, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x68, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x7A, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x67, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x42, 0x5F, 0x47, 0x47, 0x00, 0x00, 0x00, 0x00, 0x000003E8, 0x07D00FA0}, - {0x45, 0x5F, 0x6D, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x45, 0x5F, 0x7A, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, - {0x42, 0x5F, 0x74, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00000000, 0x00000000}, +static EnemyInfo mEnemyInfo[64] = { + {"Dummy", sAreaDefault}, + {"E_s1", {true, 700, 1200, 2000}}, + {"E_yk", sAreaSmallFloating}, + {"E_yr", sAreaWideFloating}, + {"E_yg", {true, 300, 500, 700}}, + {"E_yc", sAreaWideFloating}, + {"E_yd", {true, 500, 900, 1500}}, + {"E_rdy", sAreaDefault}, + {"E_ymb", {false, 10, 20, 30}}, + {"", sAreaDefault}, + {"E_wb", sAreaDefault}, + {"E_rd", sAreaDefault}, + {"E_dn", sAreaDefault}, + {"E_kr", sAreaWideFloating}, + {"E_st", sAreaDefault}, + {"E_tk", {true, 700, 1500, 2500}}, + {"E_tk2", {true, 700, 1500, 2500}}, + {"E_cr", sAreaSmall}, + {"E_df", sAreaDefault}, + {"E_fs", sAreaDefault}, + {"E_SB", sAreaDefault}, + {"E_PM", sAreaDefault}, + {"E_db", {true, 500, 900, 1800}}, + {"E_kg", sAreaSmall}, + {"E_sh", sAreaDefault}, + {"E_sf", sAreaDefault}, + {"E_bs", {true, 200, 400, 600}}, + {"E_SM", sAreaDefault}, + {"E_ba", sAreaSmallFloating}, + {"E_bu", sAreaFloating}, + {"E_HM", sAreaDefault}, + {"E_ge", sAreaFloating}, + {"E_hz", {false, 500, 800, 1300}}, + {"E_ws", sAreaSmallFloating}, + {"E_oc", sAreaDefault}, + {"E_fz", sAreaDefault}, + {"E_fb", sAreaDefault}, + {"E_bg", sAreaSmall}, + {"E_mm", {true, 500, 800, 1500}}, + {"E_nz", {true, 500, 700, 1100}}, + {"E_po", sAreaWide}, + {"E_rb", sAreaDefault}, + {"E_sg", {true, 500, 700, 900}}, + {"E_hb", {true, 500, 900, 1500}}, + {"E_gb", {true, 1600, 3000, 4000}}, + {"E_ms", {true, 500, 700, 1100}}, + {"E_dd", sAreaDefault}, + {"E_bi", {true, 500, 700, 900}}, + {"E_tt", sAreaSmallFloating}, + {"E_ai", sAreaDefault}, + {"E_dk", sAreaSmall}, + {"E_ww", sAreaWide}, + {"E_gi", sAreaDefault}, + {"E_sm2", sAreaDefault}, + {"E_sw", {true, 400, 600, 1500}}, + {"E_rdb", {true, 500, 1000, 1500}}, + {"E_kk", sAreaDefault}, + {"E_hp", sAreaDefault}, + {"E_zh", sAreaDefault}, + {"E_gm", sAreaSmall}, + {"B_GG", {false, 1000, 2000, 4000}}, + {"E_mf", sAreaDefault}, + {"E_zm", sAreaDefault}, + {"B_tn", sAreaDefault}, }; -/* 80455B80-80455B84 004180 0004+00 1/1 0/0 0/0 .sdata2 sAreaDefault */ -SECTION_SDATA2 static u32 sAreaDefault = 0x010002BC; - -/* 80455B84-80455B88 004184 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455B84 = 0x044C05DC; - -/* 80455B88-80455B8C 004188 0004+00 1/1 0/0 0/0 .sdata2 sAreaFloating */ -SECTION_SDATA2 static u32 sAreaFloating = 0x000002BC; - -/* 80455B8C-80455B90 00418C 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455B8C = 0x044C05DC; - -/* 80455B90-80455B94 004190 0004+00 1/1 0/0 0/0 .sdata2 sAreaWide */ -SECTION_SDATA2 static u32 sAreaWide = 0x010002BC; - -/* 80455B94-80455B98 004194 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455B94 = 0x05DC0CE4; - -/* 80455B98-80455B9C 004198 0004+00 1/1 0/0 0/0 .sdata2 sAreaWideFloating */ -SECTION_SDATA2 static u32 sAreaWideFloating = 0x000002BC; - -/* 80455B9C-80455BA0 00419C 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455B9C = 0x05DC0CE4; - -/* 80455BA0-80455BA4 0041A0 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmall */ -SECTION_SDATA2 static u32 sAreaSmall = 0x0100012C; - -/* 80455BA4-80455BA8 0041A4 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BA4 = 0x02BC03E8; - -/* 80455BA8-80455BAC 0041A8 0004+00 1/1 0/0 0/0 .sdata2 sAreaSmallFloating */ -SECTION_SDATA2 static u32 sAreaSmallFloating = 0x000001F4; - -/* 80455BAC-80455BB0 0041AC 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u32 data_80455BAC = 0x032004B0; - /* 802BF994-802BFFEC 2BA2D4 0658+00 1/0 1/1 0/0 .text searchEnemy__13Z2SoundObjMgrFv */ void Z2SoundObjMgr::searchEnemy() { mTwilightBattle = 0; @@ -157,7 +129,7 @@ void Z2SoundObjMgr::searchEnemy() { bool bVar7 = false; bool local_96 = false; bool iVar8 = false; - if (Z2GetSeqMgr()->getMainBgmID() == 0x1000041) { + if (Z2GetSeqMgr()->getMainBgmID() == Z2BGM_HOLY_FOREST) { iVar8 = true; } u8 iVar16 = 0; @@ -233,13 +205,12 @@ void Z2SoundObjMgr::searchEnemy() { if (iVar10 != NULL) { Vec* iVar14 = Z2GetLink()->getCurrentPos(); if (iVar14 != NULL) { - Z2EnemyArea local_88; - __memcpy(&local_88, &mEnemyInfo[enemyId].field_0x8, 8); + Z2EnemyArea local_88 = mEnemyInfo[enemyId].mEnemyArea; if (mForceBattle) { local_88 = mEnemyArea; } f32 fVar2 = 2.0f; - if (local_88.field_0x0 == 1) { + if (local_88.field_0x0 == true) { fVar2 = 4.0f; } Vec local_80 = {0.0f, 0.0f, 0.0f}; @@ -369,7 +340,7 @@ void Z2SoundObjMgr::setGhostEnemyState(u8 p1) { u8 Z2SoundObjMgr::getEnemyID(char const* param_0, JSULink* param_1) { if (param_0 != NULL) { for (u8 uVar2 = 0; uVar2 < 0x40; uVar2++) { - if (strcmp(param_0, (char*)&mEnemyInfo[(u32)uVar2].field_0x0) == 0) { + if (strcmp(param_0, mEnemyInfo[(u32)uVar2].mName) == 0) { append(param_1); return uVar2; } @@ -431,13 +402,3 @@ bool Z2SoundObjMgr::removeEnemy(JSULink* param_0) { u8 Z2SoundObjMgr::isTwilightBattle() { return mTwilightBattle; } - -/* 802C01EC-802C03C8 2BAB2C 01DC+00 0/0 1/0 0/0 .text __sinit_Z2SoundObjMgr_cpp */ -void __sinit_Z2SoundObjMgr_cpp() { - // NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x802C01EC, __sinit_Z2SoundObjMgr_cpp); -#pragma pop \ No newline at end of file diff --git a/src/Z2AudioLib/Z2SpeechMgr2.cpp b/src/Z2AudioLib/Z2SpeechMgr2.cpp index cf0410558f..02a77b8c1c 100644 --- a/src/Z2AudioLib/Z2SpeechMgr2.cpp +++ b/src/Z2AudioLib/Z2SpeechMgr2.cpp @@ -6,16 +6,15 @@ #include "Z2AudioLib/Z2SpeechMgr2.h" #include "Z2AudioLib/Z2SceneMgr.h" #include "Z2AudioLib/Z2SeMgr.h" -#include "JSystem/J3DU/J3DUD.h" -#include "dol2asm.h" +#include "JSystem/JMath/JMath.h" // // Types: // typedef struct { - u8** field_0x0; - u8** field_0x4; + const u8* field_0x0; + const u8* field_0x4; u8 field_0x8; u8 field_0x9; u8 field_0xa; @@ -25,133 +24,42 @@ typedef struct { struct Z2MdnPrm { static u8 const sReply[100]; - static u8 const sReplyTail[10 + 2 /* padding */]; + static u8 const sReplyTail[10]; static u8 const sJoke[100]; - static u8 const sJokeTail[10 + 2 /* padding */]; + static u8 const sJokeTail[10]; static u8 const sSexy[100]; - static u8 const sSexyTail[10 + 2 /* padding */]; + static u8 const sSexyTail[10]; static u8 const sRidicule[100]; - static u8 const sRidiculeTail[10 + 2 /* padding */]; + static u8 const sRidiculeTail[10]; static u8 const sBoring[108]; - static u8 const sIrritated[94 + 2 /* padding */]; - static u8 const sIrritatedTail[10 + 2 /* padding */]; - static u8 const sOrder[114 + 2 /* padding */]; - static u8 const sResent[106 + 2 /* padding */]; - static u8 const sCheerful[106 + 2 /* padding */]; - static u8 const sConfused[106 + 2 /* padding */]; + static u8 const sIrritated[94]; + static u8 const sIrritatedTail[10]; + static u8 const sOrder[114]; + static u8 const sResent[106]; + static u8 const sCheerful[106]; + static u8 const sConfused[106]; static u8 const sHostility[104]; - static u8 const sTired[106 + 2 /* padding */]; - static u8 const sSerious[106 + 2 /* padding */]; + static u8 const sTired[106]; + static u8 const sSerious[106]; static u8 const sReplyb[84]; static u8 const sApologize[100]; - static u8 const sApologizeTail[9 + 3 /* padding */]; + static u8 const sApologizeTail[9]; static u8 const sDeside[100]; static u8 const sAfford[104]; static u8 const sAffordTail[12]; static sPrmStruct const sPrm[17]; - static u8 sBoringTail[6 + 2 /* padding */]; - static u8 sOrderTail[6 + 2 /* padding */]; - static u8 sResentTail[5 + 3 /* padding */]; - static u8 sCheerfulTail[8]; - static u8 sConfusedTail[5 + 3 /* padding */]; - static u8 sHostilityTail[7 + 1 /* padding */]; - static u8 sTiredTail[8]; - static u8 sSeriousTail[7 + 1 /* padding */]; - static u8 sReplybTail[7 + 1 /* padding */]; - static u8 sDesideTail[8]; + static u8 const sBoringTail[6]; + static u8 const sOrderTail[6]; + static u8 const sResentTail[5]; + static u8 const sCheerfulTail[8]; + static u8 const sConfusedTail[5]; + static u8 const sHostilityTail[7]; + static u8 const sTiredTail[8]; + static u8 const sSeriousTail[7]; + static u8 const sReplybTail[7]; + static u8 const sDesideTail[8]; }; -// -// Forward References: -// - -extern "C" void __ct__12Z2SpeechMgr2Fv(); -extern "C" void __dt__15Z2SpeechStarterFv(); -extern "C" void setString__12Z2SpeechMgr2FPCUssUcUs(); -extern "C" void setTextCount__12Z2SpeechMgr2Fs(); -extern "C" void speakOneWord__12Z2SpeechMgr2Fb(); -extern "C" void isNonVerbal__12Z2SpeechMgr2Fv(); -extern "C" void selectUnit__12Z2SpeechMgr2Fb(); -extern "C" void selectTail__12Z2SpeechMgr2Fv(); -extern "C" void framework__12Z2SpeechMgr2Fv(); -extern "C" void playOneShotVoice__12Z2SpeechMgr2FUcUsP3VecSc(); -extern "C" void isMidnaSpeak__12Z2SpeechMgr2Fv(); -extern "C" void __ct__15Z2SpeechStarterFv(); -extern "C" void func_802CCFF8(); -extern "C" u8 const sReply__8Z2MdnPrm[100]; -extern "C" u8 const sReplyTail__8Z2MdnPrm[10 + 2 /* padding */]; -extern "C" u8 const sJoke__8Z2MdnPrm[100]; -extern "C" u8 const sJokeTail__8Z2MdnPrm[10 + 2 /* padding */]; -extern "C" u8 const sSexy__8Z2MdnPrm[100]; -extern "C" u8 const sSexyTail__8Z2MdnPrm[10 + 2 /* padding */]; -extern "C" u8 const sRidicule__8Z2MdnPrm[100]; -extern "C" u8 const sRidiculeTail__8Z2MdnPrm[10 + 2 /* padding */]; -extern "C" u8 const sBoring__8Z2MdnPrm[108]; -extern "C" u8 const sIrritated__8Z2MdnPrm[94 + 2 /* padding */]; -extern "C" u8 const sIrritatedTail__8Z2MdnPrm[10 + 2 /* padding */]; -extern "C" u8 const sOrder__8Z2MdnPrm[114 + 2 /* padding */]; -extern "C" u8 const sResent__8Z2MdnPrm[106 + 2 /* padding */]; -extern "C" u8 const sCheerful__8Z2MdnPrm[106 + 2 /* padding */]; -extern "C" u8 const sConfused__8Z2MdnPrm[106 + 2 /* padding */]; -extern "C" u8 const sHostility__8Z2MdnPrm[104]; -extern "C" u8 const sTired__8Z2MdnPrm[106 + 2 /* padding */]; -extern "C" u8 const sSerious__8Z2MdnPrm[106 + 2 /* padding */]; -extern "C" u8 const sReplyb__8Z2MdnPrm[84]; -extern "C" u8 const sApologize__8Z2MdnPrm[100]; -extern "C" u8 const sApologizeTail__8Z2MdnPrm[9 + 3 /* padding */]; -extern "C" u8 const sDeside__8Z2MdnPrm[100]; -extern "C" u8 const sAfford__8Z2MdnPrm[104]; -extern "C" u8 const sAffordTail__8Z2MdnPrm[12]; -extern "C" void* const sPrm__8Z2MdnPrm[51]; -extern "C" u8 sBoringTail__8Z2MdnPrm[6 + 2 /* padding */]; -extern "C" u8 sOrderTail__8Z2MdnPrm[6 + 2 /* padding */]; -extern "C" u8 sResentTail__8Z2MdnPrm[5 + 3 /* padding */]; -extern "C" u8 sCheerfulTail__8Z2MdnPrm[8]; -extern "C" u8 sConfusedTail__8Z2MdnPrm[5 + 3 /* padding */]; -extern "C" u8 sHostilityTail__8Z2MdnPrm[7 + 1 /* padding */]; -extern "C" u8 sTiredTail__8Z2MdnPrm[8]; -extern "C" u8 sSeriousTail__8Z2MdnPrm[7 + 1 /* padding */]; -extern "C" u8 sReplybTail__8Z2MdnPrm[7 + 1 /* padding */]; -extern "C" u8 sDesideTail__8Z2MdnPrm[8]; - -// -// External References: -// - -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void releaseSound__14JAISoundHandleFv(); -extern "C" void stop__8JAISoundFv(); -extern "C" void moveVolume__18JAISoundParamsMoveFfUl(); -extern "C" void movePitch__18JAISoundParamsMoveFfUl(); -extern "C" void moveFxMix__18JAISoundParamsMoveFfUl(); -extern "C" void movePan__18JAISoundParamsMoveFfUl(); -extern "C" void moveDolby__18JAISoundParamsMoveFfUl(); -extern "C" void __dt__15JAISoundStarterFv(); -extern "C" void __ct__14Z2SoundStarterFb(); -extern "C" void func_802AABF4(); -extern "C" void setPortData__14Z2SoundStarterFP14JAISoundHandleUlUsSc(); -extern "C" void subBgmStart__8Z2SeqMgrFUl(); -extern "C" void getFogDensity__10Z2EnvSeMgrFv(); -extern "C" void __dl__FPv(); -extern "C" void __ct__Q25JMath13TRandom_fast_FUl(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__14Z2SoundStarter[5 + 1 /* padding */]; -extern "C" extern u8 data_80450B3C[4]; -extern "C" extern u8 data_80450B7C[4]; -extern "C" extern u8 data_80450B80[4]; -extern "C" extern u8 data_80450B84[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" extern u8 __OSReport_disable; - -// -// Declarations: -// - /* 802CBC60-802CBCEC 2C65A0 008C+00 0/0 1/1 0/0 .text __ct__12Z2SpeechMgr2Fv */ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance(true), random(0) { field_0x3f8 = 0; @@ -165,159 +73,6 @@ Z2SpeechMgr2::Z2SpeechMgr2() : JASGlobalInstance(true), random(0) } } -/* ############################################################################################## */ -/* 803CBD08-803CBED0 -00001 01C8+00 1/1 0/0 0/0 .data @3729 */ -SECTION_DATA static void* lit_3729[114] = { - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xB4), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xB4), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xB4), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xB4), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xA8), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x9C), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x90), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x84), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x78), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x78), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x3C), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x30), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x3C), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x30), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x9C), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x6C), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x78), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x78), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x78), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x84), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x84), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x48), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x54), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x60), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x9C), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0x78), - (void*)(((char*)setString__12Z2SpeechMgr2FPCUssUcUs) + 0xC0), -}; - -/* 803CBED0-803CBF24 -00001 0054+00 1/1 0/0 0/0 .data @3839 */ -SECTION_DATA static void* lit_3839[21] = { - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x13C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x14C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x15C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x16C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x17C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x18C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x19C), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1AC), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1D8), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1BC), - (void*)(((char*)setTextCount__12Z2SpeechMgr2Fs) + 0x1CC), -}; - -/* 803CBF24-803CBF38 029044 0014+00 2/2 1/1 0/0 .data __vt__15Z2SpeechStarter */ -SECTION_DATA extern void* __vt__15Z2SpeechStarter[5] = { - (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__15Z2SpeechStarterFv, - (void*)func_802AABF4, (void*)func_802CCFF8, -}; - -/* 802CBCEC-802CBD88 2C662C 009C+00 1/0 0/0 0/0 .text __dt__15Z2SpeechStarterFv */ -//Z2SpeechStarter::~Z2SpeechStarter() {} - /* 802CBD88-802CBF60 2C66C8 01D8+00 1/0 1/1 0/0 .text setString__12Z2SpeechMgr2FPCUssUcUs */ void Z2SpeechMgr2::setString(u16 const* param_1, s16 param_2, u8 param_3, u16 param_4) { @@ -460,128 +215,56 @@ void Z2SpeechMgr2::setString(u16 const* param_1, s16 param_2, u8 param_3, u16 pa selectUnit(false); } - -/* ############################################################################################## */ /* 80455EE0-80455EE8 0044E0 0006+02 1/0 0/0 0/0 .sdata2 sBoringTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sBoringTail[6 + 2 /* padding */] = { - 0x92, - 0x58, - 0x59, - 0x5B, - 0x70, - 0x71, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sBoringTail[6] = { + 0x92, 0x58, 0x59, 0x5B, 0x70, 0x71, }; /* 80455EE8-80455EF0 0044E8 0006+02 1/0 0/0 0/0 .sdata2 sOrderTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sOrderTail[6 + 2 /* padding */] = { - 0x60, - 0xA8, - 0x5B, - 0x4E, - 0x5D, - 0x87, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sOrderTail[6] = { + 0x60, 0xA8, 0x5B, 0x4E, 0x5D, 0x87, }; /* 80455EF0-80455EF8 0044F0 0005+03 1/0 0/0 0/0 .sdata2 sResentTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sResentTail[5 + 3 /* padding */] = { - 0x4A, - 0x98, - 0x8A, - 0x7E, - 0x57, - /* padding */ - 0x00, - 0x00, - 0x00, +u8 const Z2MdnPrm::sResentTail[5] = { + 0x4A, 0x98, 0x8A, 0x7E, 0x57, }; /* 80455EF8-80455F00 0044F8 0008+00 1/0 0/0 0/0 .sdata2 sCheerfulTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sCheerfulTail[8] = { +u8 const Z2MdnPrm::sCheerfulTail[8] = { 0x60, 0x6D, 0x4D, 0x44, 0x9C, 0x54, 0x70, 0x7B, }; /* 80455F00-80455F08 004500 0005+03 1/0 0/0 0/0 .sdata2 sConfusedTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sConfusedTail[5 + 3 /* padding */] = { - 0x2C, - 0x42, - 0x4C, - 0x7C, - 0x49, - /* padding */ - 0x00, - 0x00, - 0x00, +u8 const Z2MdnPrm::sConfusedTail[5] = { + 0x2C, 0x42, 0x4C, 0x7C, 0x49, }; /* 80455F08-80455F10 004508 0007+01 1/0 0/0 0/0 .sdata2 sHostilityTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sHostilityTail[7 + 1 /* padding */] = { - 0x97, - 0x67, - 0x94, - 0x6A, - 0x66, - 0x4F, - 0x6A, - /* padding */ - 0x00, +u8 const Z2MdnPrm::sHostilityTail[7] = { + 0x97, 0x67, 0x94, 0x6A, 0x66, 0x4F, 0x6A, }; /* 80455F10-80455F18 004510 0008+00 1/0 0/0 0/0 .sdata2 sTiredTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sTiredTail[8] = { +u8 const Z2MdnPrm::sTiredTail[8] = { 0x66, 0x6F, 0x3B, 0x7A, 0x49, 0x91, 0x5C, 0x6A, }; /* 80455F18-80455F20 004518 0007+01 1/0 0/0 0/0 .sdata2 sSeriousTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sSeriousTail[7 + 1 /* padding */] = { - 0x7B, - 0x69, - 0x4B, - 0x61, - 0x52, - 0x59, - 0x87, - /* padding */ - 0x00, +u8 const Z2MdnPrm::sSeriousTail[7] = { + 0x7B, 0x69, 0x4B, 0x61, 0x52, 0x59, 0x87, }; /* 80455F20-80455F28 004520 0007+01 1/0 0/0 0/0 .sdata2 sReplybTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sReplybTail[7 + 1 /* padding */] = { - 0x4F, - 0x4A, - 0xA2, - 0x4F, - 0x65, - 0x98, - 0x5C, - /* padding */ - 0x00, +u8 const Z2MdnPrm::sReplybTail[7] = { + 0x4F, 0x4A, 0xA2, 0x4F, 0x65, 0x98, 0x5C, }; /* 80455F28-80455F30 004528 0008+00 1/0 0/0 0/0 .sdata2 sDesideTail__8Z2MdnPrm */ -SECTION_SDATA2 u8 Z2MdnPrm::sDesideTail[8] = { +u8 const Z2MdnPrm::sDesideTail[8] = { 0x64, 0x2E, 0x4A, 0x57, 0x80, 0x48, 0x7C, 0x5F, }; -/* 80455F30-80455F34 004530 0004+00 2/2 0/0 0/0 .sdata2 @3836 */ -SECTION_SDATA2 static u8 lit_3836[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; - -/* 80455F34-80455F38 004534 0004+00 6/6 0/0 0/0 .sdata2 @3837 */ -SECTION_SDATA2 static f32 lit_3837 = 1.0f; - -/* 80455F38-80455F3C 004538 0004+00 4/4 0/0 0/0 .sdata2 @3838 */ -SECTION_SDATA2 static f32 lit_3838 = -1.0f; - /* 802CBF60-802CC190 2C68A0 0230+00 1/0 2/2 0/0 .text setTextCount__12Z2SpeechMgr2Fs */ void Z2SpeechMgr2::setTextCount(s16 param_0) { if (field_0x3fe != 0x63) { @@ -646,14 +329,6 @@ void Z2SpeechMgr2::setTextCount(s16 param_0) { } } - -/* ############################################################################################## */ -/* 80455F3C-80455F40 00453C 0004+00 2/2 0/0 0/0 .sdata2 @3885 */ -SECTION_SDATA2 static f32 lit_3885 = 127.0f; - -/* 80455F40-80455F48 004540 0008+00 2/2 0/0 0/0 .sdata2 @3887 */ -SECTION_SDATA2 static f64 lit_3887 = 4503601774854144.0 /* cast s32 to float */; - /* 802CC190-802CC2FC 2C6AD0 016C+00 1/1 1/1 0/0 .text speakOneWord__12Z2SpeechMgr2Fb */ void Z2SpeechMgr2::speakOneWord(bool param_0) { if (Z2GetSceneMgr()->isSceneExist() && (field_0x3fe == 1 || field_0x3fe == 2) && @@ -766,7 +441,7 @@ bool Z2SpeechMgr2::isNonVerbal() { } /* 8039C260-8039C2C4 0288C0 0064+00 1/0 0/0 0/0 .rodata sReply__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sReply[100] = { +u8 const Z2MdnPrm::sReply[100] = { 0x6A, 0x8A, 0x50, 0x5F, 0x53, 0x37, 0x37, 0x4F, 0x4F, 0x5E, 0xAA, 0x46, 0x52, 0x5A, 0x5A, 0x4F, 0x4F, 0x45, 0x45, 0x56, 0x64, 0x79, 0x79, 0x79, 0x87, 0x95, 0x95, 0x89, 0x89, 0x4C, 0x4C, 0x4B, 0x52, 0x41, 0x41, 0x5B, 0x5F, 0x71, 0x53, 0x47, 0x89, 0x7D, 0x77, 0x88, 0x88, @@ -775,28 +450,14 @@ SECTION_RODATA u8 const Z2MdnPrm::sReply[100] = { 0x5D, 0x60, 0x63, 0x63, 0x54, 0x3E, 0x38, 0x38, 0x39, 0x35, 0x41, 0x41, 0x41, 0x41, 0x56, 0x71, 0x85, 0x85, 0xA2, 0xA2, 0x52, 0x52, 0x5C, 0x5C, 0x75, }; -COMPILER_STRIP_GATE(0x8039C260, &Z2MdnPrm::sReply); /* 8039C2C4-8039C2D0 028924 000A+02 1/0 0/0 0/0 .rodata sReplyTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sReplyTail[10 + 2 /* padding */] = { - 0x5E, - 0x7F, - 0x68, - 0x39, - 0x56, - 0x75, - 0x47, - 0x71, - 0x7D, - 0x33, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sReplyTail[10] = { + 0x5E, 0x7F, 0x68, 0x39, 0x56, 0x75, 0x47, 0x71, 0x7D, 0x33, }; -COMPILER_STRIP_GATE(0x8039C2C4, &Z2MdnPrm::sReplyTail); /* 8039C2D0-8039C334 028930 0064+00 1/0 0/0 0/0 .rodata sJoke__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sJoke[100] = { +u8 const Z2MdnPrm::sJoke[100] = { 0x68, 0x57, 0x57, 0x55, 0x55, 0x51, 0x5B, 0x64, 0x6B, 0x7B, 0x7B, 0x5C, 0x77, 0x97, 0x8D, 0x97, 0x97, 0x8D, 0x66, 0x69, 0xA2, 0x5C, 0x87, 0x4F, 0x69, 0x5F, 0x5F, 0x83, 0x83, 0x82, 0x7F, 0x96, 0x96, 0xB0, 0x70, 0xA1, 0x6D, 0x6D, 0x6D, 0x59, 0x4C, 0x4B, 0x5A, 0x40, 0x4A, @@ -805,28 +466,13 @@ SECTION_RODATA u8 const Z2MdnPrm::sJoke[100] = { 0x64, 0x60, 0xB1, 0x6C, 0x6D, 0x6D, 0x7E, 0x7A, 0x97, 0x97, 0x99, 0xA5, 0x89, 0x90, 0xA4, 0x45, 0x45, 0x29, 0x4C, 0x4B, 0x64, 0x64, 0x60, 0x5C, 0xB1, }; -COMPILER_STRIP_GATE(0x8039C2D0, &Z2MdnPrm::sJoke); - /* 8039C334-8039C340 028994 000A+02 1/0 0/0 0/0 .rodata sJokeTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sJokeTail[10 + 2 /* padding */] = { - 0x51, - 0x97, - 0x60, - 0xB0, - 0x6F, - 0x5E, - 0x5A, - 0xA6, - 0x4F, - 0x4F, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sJokeTail[10] = { + 0x51, 0x97, 0x60, 0xB0, 0x6F, 0x5E, 0x5A, 0xA6, 0x4F, 0x4F, }; -COMPILER_STRIP_GATE(0x8039C334, &Z2MdnPrm::sJokeTail); /* 8039C340-8039C3A4 0289A0 0064+00 1/0 0/0 0/0 .rodata sSexy__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sSexy[100] = { +u8 const Z2MdnPrm::sSexy[100] = { 0x5E, 0x60, 0x5F, 0x63, 0x63, 0x72, 0x72, 0x78, 0x4D, 0x7A, 0x6E, 0x6E, 0x6E, 0x6E, 0x6E, 0x59, 0x59, 0x7A, 0x7A, 0xA5, 0x90, 0x8D, 0x86, 0x62, 0x72, 0x79, 0x79, 0x86, 0x7F, 0x8B, 0x85, 0x7B, 0x7B, 0x5E, 0x5E, 0x6D, 0x6D, 0x88, 0x5F, 0xA3, 0xA3, 0x95, 0x95, 0x7F, 0x79, @@ -835,28 +481,14 @@ SECTION_RODATA u8 const Z2MdnPrm::sSexy[100] = { 0x76, 0x79, 0x79, 0x5C, 0x6A, 0x90, 0xAB, 0x5C, 0x7D, 0x52, 0x49, 0x54, 0x57, 0x49, 0x55, 0x79, 0x65, 0x65, 0x4A, 0x5C, 0x78, 0x78, 0x8B, 0x8D, 0x7C, }; -COMPILER_STRIP_GATE(0x8039C340, &Z2MdnPrm::sSexy); /* 8039C3A4-8039C3B0 028A04 000A+02 1/0 0/0 0/0 .rodata sSexyTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sSexyTail[10 + 2 /* padding */] = { - 0x52, - 0x79, - 0x82, - 0xA5, - 0x62, - 0x86, - 0x3F, - 0x7D, - 0x57, - 0x7C, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sSexyTail[10] = { + 0x52, 0x79, 0x82, 0xA5, 0x62, 0x86, 0x3F, 0x7D, 0x57, 0x7C, }; -COMPILER_STRIP_GATE(0x8039C3A4, &Z2MdnPrm::sSexyTail); /* 8039C3B0-8039C414 028A10 0064+00 1/0 0/0 0/0 .rodata sRidicule__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sRidicule[100] = { +u8 const Z2MdnPrm::sRidicule[100] = { 0xA7, 0x5A, 0x5A, 0x52, 0x52, 0x85, 0x85, 0x8C, 0x63, 0x73, 0x73, 0x90, 0x50, 0x46, 0x74, 0x74, 0xA3, 0xA7, 0x41, 0x51, 0x58, 0x34, 0x34, 0x2A, 0x5A, 0x81, 0x5D, 0x42, 0x4B, 0x70, 0x70, 0xB1, 0xB1, 0xB1, 0xB1, 0x65, 0x6A, 0xB1, 0x54, 0xA8, 0xA8, 0x6B, 0x6C, 0x55, 0x55, @@ -865,28 +497,14 @@ SECTION_RODATA u8 const Z2MdnPrm::sRidicule[100] = { 0x79, 0x79, 0x7C, 0x7C, 0x6C, 0x6C, 0x73, 0x73, 0x6E, 0x6E, 0x36, 0x3F, 0x3C, 0x56, 0x2D, 0x2D, 0x2D, 0x2D, 0x8C, 0x8C, 0x8B, 0x8B, 0x93, 0x93, 0x6E, }; -COMPILER_STRIP_GATE(0x8039C3B0, &Z2MdnPrm::sRidicule); /* 8039C414-8039C420 028A74 000A+02 1/0 0/0 0/0 .rodata sRidiculeTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sRidiculeTail[10 + 2 /* padding */] = { - 0x81, - 0x67, - 0x6D, - 0x8C, - 0x90, - 0x85, - 0xB1, - 0x4D, - 0x4F, - 0x6E, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sRidiculeTail[10] = { + 0x81, 0x67, 0x6D, 0x8C, 0x90, 0x85, 0xB1, 0x4D, 0x4F, 0x6E, }; -COMPILER_STRIP_GATE(0x8039C414, &Z2MdnPrm::sRidiculeTail); /* 8039C420-8039C48C 028A80 006C+00 1/0 0/0 0/0 .rodata sBoring__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sBoring[108] = { +u8 const Z2MdnPrm::sBoring[108] = { 0x8E, 0x9C, 0x9C, 0x5A, 0x5A, 0x52, 0x52, 0x5B, 0x5C, 0x56, 0x5C, 0x52, 0x52, 0x2D, 0x2D, 0x5B, 0x59, 0x56, 0x56, 0x56, 0x56, 0x6B, 0x6B, 0x58, 0x4C, 0x8E, 0x8E, 0x59, 0x61, 0x54, 0xA0, 0x4D, 0x5D, 0x59, 0x48, 0x30, 0x30, 0x5B, 0x5B, 0x5B, 0x4A, 0x64, 0x64, 0x7A, 0x7A, 0x92, 0x62, 0x62, @@ -895,594 +513,69 @@ SECTION_RODATA u8 const Z2MdnPrm::sBoring[108] = { 0x89, 0x5A, 0x5A, 0x63, 0x66, 0x5E, 0x5E, 0x71, 0x62, 0x55, 0x55, 0x85, 0x85, 0x5B, 0x5B, 0x5B, 0x5B, 0x5E, 0x70, 0x56, 0x56, 0x4C, 0x4C, 0x59, 0x59, 0x5B, 0x5B, 0x71, }; -COMPILER_STRIP_GATE(0x8039C420, &Z2MdnPrm::sBoring); /* 8039C48C-8039C4EC 028AEC 005E+02 1/0 0/0 0/0 .rodata sIrritated__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sIrritated[94 + 2 /* padding */] = { - 0x6C, - 0x91, - 0x67, - 0x8B, - 0x8B, - 0xA2, - 0xA2, - 0xAB, - 0x48, - 0x64, - 0x73, - 0x61, - 0x61, - 0x64, - 0x64, - 0x6D, - 0x60, - 0x7E, - 0x4A, - 0x55, - 0x6A, - 0x63, - 0x66, - 0x78, - 0x5C, - 0x5A, - 0x6E, - 0x79, - 0x75, - 0x62, - 0x62, - 0x57, - 0x85, - 0x3F, - 0x3C, - 0x83, - 0x83, - 0x9B, - 0x78, - 0x65, - 0x65, - 0x67, - 0x65, - 0x65, - 0x87, - 0x88, - 0x88, - 0x3D, - 0x4C, - 0x68, - 0x68, - 0x4D, - 0x5B, - 0x6E, - 0x6E, - 0x74, - 0x56, - 0x63, - 0x6B, - 0x8C, - 0x8C, - 0x93, - 0x93, - 0x4E, - 0x4E, - 0x69, - 0x77, - 0x75, - 0x75, - 0x71, - 0x79, - 0x4F, - 0x4F, - 0x6F, - 0x4E, - 0x42, - 0x71, - 0x75, - 0x5E, - 0x68, - 0xAD, - 0x6E, - 0x72, - 0x82, - 0x83, - 0x87, - 0x85, - 0x85, - 0x85, - 0x8E, - 0x60, - 0x6D, - 0x80, - 0x80, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sIrritated[94] = { + 0x6C, 0x91, 0x67, 0x8B, 0x8B, 0xA2, 0xA2, 0xAB, 0x48, 0x64, 0x73, 0x61, 0x61, 0x64, 0x64, 0x6D, + 0x60, 0x7E, 0x4A, 0x55, 0x6A, 0x63, 0x66, 0x78, 0x5C, 0x5A, 0x6E, 0x79, 0x75, 0x62, 0x62, 0x57, + 0x85, 0x3F, 0x3C, 0x83, 0x83, 0x9B, 0x78, 0x65, 0x65, 0x67, 0x65, 0x65, 0x87, 0x88, 0x88, 0x3D, + 0x4C, 0x68, 0x68, 0x4D, 0x5B, 0x6E, 0x6E, 0x74, 0x56, 0x63, 0x6B, 0x8C, 0x8C, 0x93, 0x93, 0x4E, + 0x4E, 0x69, 0x77, 0x75, 0x75, 0x71, 0x79, 0x4F, 0x4F, 0x6F, 0x4E, 0x42, 0x71, 0x75, 0x5E, 0x68, + 0xAD, 0x6E, 0x72, 0x82, 0x83, 0x87, 0x85, 0x85, 0x85, 0x8E, 0x60, 0x6D, 0x80, 0x80, }; -COMPILER_STRIP_GATE(0x8039C48C, &Z2MdnPrm::sIrritated); /* 8039C4EC-8039C4F8 028B4C 000A+02 1/0 0/0 0/0 .rodata sIrritatedTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sIrritatedTail[10 + 2 /* padding */] = { - 0x64, - 0x61, - 0x4E, - 0x91, - 0xA0, - 0x85, - 0x9B, - 0x67, - 0x6F, - 0x64, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sIrritatedTail[10] = { + 0x64, 0x61, 0x4E, 0x91, 0xA0, 0x85, 0x9B, 0x67, 0x6F, 0x64, }; -COMPILER_STRIP_GATE(0x8039C4EC, &Z2MdnPrm::sIrritatedTail); /* 8039C4F8-8039C56C 028B58 0072+02 1/0 0/0 0/0 .rodata sOrder__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sOrder[114 + 2 /* padding */] = { - 0x77, - 0x5F, - 0x5F, - 0x73, - 0x73, - 0x66, - 0x66, - 0x6B, - 0x6B, - 0x7A, - 0x7A, - 0x60, - 0x54, - 0x5F, - 0x5F, - 0x69, - 0x69, - 0x5A, - 0x86, - 0x84, - 0x84, - 0x96, - 0x96, - 0x94, - 0x94, - 0x8A, - 0x87, - 0x84, - 0x5A, - 0x2C, - 0x4E, - 0x52, - 0x52, - 0x52, - 0x52, - 0x51, - 0x51, - 0x6E, - 0x62, - 0x5E, - 0x6C, - 0xA3, - 0xA3, - 0x5B, - 0x62, - 0x63, - 0x63, - 0x66, - 0x66, - 0x51, - 0x51, - 0x5B, - 0x5B, - 0x78, - 0x78, - 0x8F, - 0x8F, - 0x83, - 0x61, - 0x7A, - 0x7A, - 0x4E, - 0x75, - 0x81, - 0x81, - 0x71, - 0x71, - 0x83, - 0x83, - 0x66, - 0x5D, - 0x5D, - 0x65, - 0x47, - 0x53, - 0x6D, - 0x6D, - 0x8C, - 0x8F, - 0x8F, - 0x8F, - 0x2C, - 0x2B, - 0x6A, - 0x6A, - 0x5C, - 0x5C, - 0x54, - 0x54, - 0x60, - 0xAC, - 0xA1, - 0x4E, - 0x5B, - 0x5B, - 0x5F, - 0x5F, - 0x79, - 0x4A, - 0x60, - 0x60, - 0x5A, - 0x5A, - 0x35, - 0x2E, - 0x48, - 0x48, - 0x69, - 0x69, - 0x6D, - 0x6D, - 0x94, - 0x94, - 0x97, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sOrder[114] = { + 0x77, 0x5F, 0x5F, 0x73, 0x73, 0x66, 0x66, 0x6B, 0x6B, 0x7A, 0x7A, 0x60, 0x54, 0x5F, 0x5F, + 0x69, 0x69, 0x5A, 0x86, 0x84, 0x84, 0x96, 0x96, 0x94, 0x94, 0x8A, 0x87, 0x84, 0x5A, 0x2C, + 0x4E, 0x52, 0x52, 0x52, 0x52, 0x51, 0x51, 0x6E, 0x62, 0x5E, 0x6C, 0xA3, 0xA3, 0x5B, 0x62, + 0x63, 0x63, 0x66, 0x66, 0x51, 0x51, 0x5B, 0x5B, 0x78, 0x78, 0x8F, 0x8F, 0x83, 0x61, 0x7A, + 0x7A, 0x4E, 0x75, 0x81, 0x81, 0x71, 0x71, 0x83, 0x83, 0x66, 0x5D, 0x5D, 0x65, 0x47, 0x53, + 0x6D, 0x6D, 0x8C, 0x8F, 0x8F, 0x8F, 0x2C, 0x2B, 0x6A, 0x6A, 0x5C, 0x5C, 0x54, 0x54, 0x60, + 0xAC, 0xA1, 0x4E, 0x5B, 0x5B, 0x5F, 0x5F, 0x79, 0x4A, 0x60, 0x60, 0x5A, 0x5A, 0x35, 0x2E, + 0x48, 0x48, 0x69, 0x69, 0x6D, 0x6D, 0x94, 0x94, 0x97, }; -COMPILER_STRIP_GATE(0x8039C4F8, &Z2MdnPrm::sOrder); /* 8039C56C-8039C5D8 028BCC 006A+02 1/0 0/0 0/0 .rodata sResent__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sResent[106 + 2 /* padding */] = { - 0x6F, - 0x5F, - 0x5F, - 0x66, - 0x66, - 0x66, - 0x66, - 0x55, - 0x55, - 0x55, - 0x55, - 0x4B, - 0x4B, - 0x6B, - 0x6B, - 0x86, - 0x86, - 0x4A, - 0x4A, - 0x6D, - 0x6D, - 0x6D, - 0x6D, - 0x8C, - 0x8C, - 0x84, - 0x84, - 0x64, - 0x64, - 0x6C, - 0x6C, - 0x92, - 0x92, - 0x6A, - 0x5F, - 0x6F, - 0x6F, - 0x62, - 0x62, - 0x62, - 0x75, - 0x5A, - 0x5A, - 0x5A, - 0x5A, - 0x60, - 0x60, - 0x6A, - 0x6A, - 0x76, - 0x76, - 0x6A, - 0x6A, - 0x7F, - 0x7F, - 0x9A, - 0x9A, - 0x98, - 0x56, - 0x5B, - 0x5B, - 0x6F, - 0x82, - 0x98, - 0x98, - 0x9B, - 0x9B, - 0x6E, - 0x6E, - 0x61, - 0x61, - 0x5C, - 0x5F, - 0x67, - 0x62, - 0x8A, - 0xA9, - 0x65, - 0x65, - 0x31, - 0x31, - 0x8C, - 0x8C, - 0x69, - 0x69, - 0x7E, - 0x67, - 0x67, - 0x5B, - 0x73, - 0x73, - 0x65, - 0x65, - 0x56, - 0x56, - 0x5E, - 0x5E, - 0xAA, - 0xAA, - 0x9E, - 0x9E, - 0x5A, - 0x5A, - 0x57, - 0x57, - 0x57, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sResent[106] = { + 0x6F, 0x5F, 0x5F, 0x66, 0x66, 0x66, 0x66, 0x55, 0x55, 0x55, 0x55, 0x4B, 0x4B, 0x6B, 0x6B, 0x86, + 0x86, 0x4A, 0x4A, 0x6D, 0x6D, 0x6D, 0x6D, 0x8C, 0x8C, 0x84, 0x84, 0x64, 0x64, 0x6C, 0x6C, 0x92, + 0x92, 0x6A, 0x5F, 0x6F, 0x6F, 0x62, 0x62, 0x62, 0x75, 0x5A, 0x5A, 0x5A, 0x5A, 0x60, 0x60, 0x6A, + 0x6A, 0x76, 0x76, 0x6A, 0x6A, 0x7F, 0x7F, 0x9A, 0x9A, 0x98, 0x56, 0x5B, 0x5B, 0x6F, 0x82, 0x98, + 0x98, 0x9B, 0x9B, 0x6E, 0x6E, 0x61, 0x61, 0x5C, 0x5F, 0x67, 0x62, 0x8A, 0xA9, 0x65, 0x65, 0x31, + 0x31, 0x8C, 0x8C, 0x69, 0x69, 0x7E, 0x67, 0x67, 0x5B, 0x73, 0x73, 0x65, 0x65, 0x56, 0x56, 0x5E, + 0x5E, 0xAA, 0xAA, 0x9E, 0x9E, 0x5A, 0x5A, 0x57, 0x57, 0x57, }; -COMPILER_STRIP_GATE(0x8039C56C, &Z2MdnPrm::sResent); /* 8039C5D8-8039C644 028C38 006A+02 1/0 0/0 0/0 .rodata sCheerful__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sCheerful[106 + 2 /* padding */] = { - 0x64, - 0x6D, - 0x6D, - 0x6D, - 0x99, - 0x6D, - 0x40, - 0x51, - 0x51, - 0x6F, - 0x6F, - 0x66, - 0x66, - 0x60, - 0xA7, - 0xAF, - 0xB3, - 0x61, - 0x61, - 0xA7, - 0xA7, - 0x5E, - 0x8B, - 0x75, - 0x77, - 0x72, - 0x72, - 0x93, - 0x93, - 0x8B, - 0x8B, - 0x88, - 0x88, - 0x77, - 0x77, - 0x80, - 0x80, - 0x80, - 0x80, - 0x67, - 0x67, - 0x4D, - 0x4A, - 0x69, - 0x44, - 0xA1, - 0x64, - 0xA8, - 0xAE, - 0x85, - 0x85, - 0x8D, - 0x95, - 0xA9, - 0xA9, - 0x91, - 0x91, - 0x67, - 0x69, - 0x60, - 0x60, - 0x5E, - 0x5E, - 0x54, - 0x34, - 0x6B, - 0x63, - 0x4F, - 0x4F, - 0x46, - 0x46, - 0x55, - 0x6F, - 0x6A, - 0x6A, - 0x75, - 0x75, - 0x75, - 0x75, - 0x70, - 0x70, - 0x9F, - 0x9F, - 0x55, - 0x55, - 0x63, - 0x63, - 0x63, - 0x62, - 0x9C, - 0x9C, - 0xA8, - 0x85, - 0x65, - 0x65, - 0x65, - 0x65, - 0x70, - 0x6B, - 0x6B, - 0x6B, - 0x6D, - 0x6D, - 0x57, - 0x57, - 0x7B, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sCheerful[106] = { + 0x64, 0x6D, 0x6D, 0x6D, 0x99, 0x6D, 0x40, 0x51, 0x51, 0x6F, 0x6F, 0x66, 0x66, 0x60, 0xA7, 0xAF, + 0xB3, 0x61, 0x61, 0xA7, 0xA7, 0x5E, 0x8B, 0x75, 0x77, 0x72, 0x72, 0x93, 0x93, 0x8B, 0x8B, 0x88, + 0x88, 0x77, 0x77, 0x80, 0x80, 0x80, 0x80, 0x67, 0x67, 0x4D, 0x4A, 0x69, 0x44, 0xA1, 0x64, 0xA8, + 0xAE, 0x85, 0x85, 0x8D, 0x95, 0xA9, 0xA9, 0x91, 0x91, 0x67, 0x69, 0x60, 0x60, 0x5E, 0x5E, 0x54, + 0x34, 0x6B, 0x63, 0x4F, 0x4F, 0x46, 0x46, 0x55, 0x6F, 0x6A, 0x6A, 0x75, 0x75, 0x75, 0x75, 0x70, + 0x70, 0x9F, 0x9F, 0x55, 0x55, 0x63, 0x63, 0x63, 0x62, 0x9C, 0x9C, 0xA8, 0x85, 0x65, 0x65, 0x65, + 0x65, 0x70, 0x6B, 0x6B, 0x6B, 0x6D, 0x6D, 0x57, 0x57, 0x7B, }; -COMPILER_STRIP_GATE(0x8039C5D8, &Z2MdnPrm::sCheerful); /* 8039C644-8039C6B0 028CA4 006A+02 1/0 0/0 0/0 .rodata sConfused__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sConfused[106 + 2 /* padding */] = { - 0x83, - 0x80, - 0x80, - 0x82, - 0x82, - 0x82, - 0x82, - 0x5B, - 0x75, - 0x84, - 0x84, - 0x84, - 0x84, - 0x75, - 0x75, - 0x62, - 0x62, - 0x62, - 0x4D, - 0x56, - 0x56, - 0x59, - 0x59, - 0x59, - 0x59, - 0x74, - 0x74, - 0x85, - 0x7D, - 0x8D, - 0x8D, - 0x70, - 0x70, - 0x5A, - 0x5A, - 0x6B, - 0x6B, - 0x6B, - 0x6B, - 0x70, - 0x79, - 0x73, - 0x73, - 0x71, - 0x71, - 0x75, - 0x75, - 0x7B, - 0x7B, - 0x5F, - 0x5F, - 0x62, - 0x76, - 0x64, - 0x7B, - 0x7B, - 0x7B, - 0x7C, - 0x7F, - 0x65, - 0x7C, - 0x7C, - 0x68, - 0x43, - 0x40, - 0x67, - 0x67, - 0x69, - 0x69, - 0x5F, - 0x5F, - 0x5D, - 0x5D, - 0x5D, - 0xA2, - 0xA2, - 0xA2, - 0xA6, - 0xA6, - 0x9A, - 0x9A, - 0x97, - 0x97, - 0x97, - 0x97, - 0x97, - 0x97, - 0x8E, - 0x8E, - 0x94, - 0x8E, - 0x95, - 0x95, - 0x95, - 0x95, - 0x42, - 0x38, - 0x38, - 0x38, - 0x83, - 0x83, - 0x8E, - 0x8E, - 0x4C, - 0x56, - 0x56, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sConfused[106] = { + 0x83, 0x80, 0x80, 0x82, 0x82, 0x82, 0x82, 0x5B, 0x75, 0x84, 0x84, 0x84, 0x84, 0x75, 0x75, 0x62, + 0x62, 0x62, 0x4D, 0x56, 0x56, 0x59, 0x59, 0x59, 0x59, 0x74, 0x74, 0x85, 0x7D, 0x8D, 0x8D, 0x70, + 0x70, 0x5A, 0x5A, 0x6B, 0x6B, 0x6B, 0x6B, 0x70, 0x79, 0x73, 0x73, 0x71, 0x71, 0x75, 0x75, 0x7B, + 0x7B, 0x5F, 0x5F, 0x62, 0x76, 0x64, 0x7B, 0x7B, 0x7B, 0x7C, 0x7F, 0x65, 0x7C, 0x7C, 0x68, 0x43, + 0x40, 0x67, 0x67, 0x69, 0x69, 0x5F, 0x5F, 0x5D, 0x5D, 0x5D, 0xA2, 0xA2, 0xA2, 0xA6, 0xA6, 0x9A, + 0x9A, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x8E, 0x8E, 0x94, 0x8E, 0x95, 0x95, 0x95, 0x95, 0x42, + 0x38, 0x38, 0x38, 0x83, 0x83, 0x8E, 0x8E, 0x4C, 0x56, 0x56, }; -COMPILER_STRIP_GATE(0x8039C644, &Z2MdnPrm::sConfused); /* 8039C6B0-8039C718 028D10 0068+00 1/0 0/0 0/0 .rodata sHostility__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sHostility[104] = { +u8 const Z2MdnPrm::sHostility[104] = { 0x85, 0x71, 0x71, 0x73, 0x73, 0x3B, 0x62, 0x84, 0x94, 0x94, 0x94, 0xAF, 0x98, 0xAD, 0xAD, 0x5A, 0x5A, 0x63, 0x63, 0x97, 0x90, 0x90, 0x7B, 0x73, 0x73, 0x63, 0x63, 0x55, 0x55, 0x65, 0x66, 0x7F, 0x7F, 0x87, 0x87, 0x8A, 0x8A, 0x94, 0x5D, 0x5C, 0x5A, 0x67, 0x67, 0x68, 0x68, @@ -1491,238 +584,31 @@ SECTION_RODATA u8 const Z2MdnPrm::sHostility[104] = { 0x65, 0x6B, 0x6E, 0x6E, 0x83, 0x83, 0x96, 0x3F, 0x56, 0x56, 0x56, 0x56, 0x4F, 0x5F, 0x57, 0x62, 0x6A, 0x5F, 0x72, 0x72, 0x62, 0x62, 0x65, 0x5E, 0x69, 0x69, 0x63, 0x63, 0x7F, }; -COMPILER_STRIP_GATE(0x8039C6B0, &Z2MdnPrm::sHostility); /* 8039C718-8039C784 028D78 006A+02 1/0 0/0 0/0 .rodata sTired__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sTired[106 + 2 /* padding */] = { - 0x70, - 0x70, - 0x70, - 0x5C, - 0x5C, - 0x5C, - 0x6F, - 0x6F, - 0x6F, - 0x93, - 0x8C, - 0x9A, - 0x9D, - 0x89, - 0x99, - 0x7A, - 0x91, - 0x8D, - 0x8D, - 0x8D, - 0x8D, - 0x69, - 0x69, - 0x72, - 0x72, - 0x65, - 0x65, - 0x65, - 0x9E, - 0x98, - 0x98, - 0x2A, - 0x50, - 0x54, - 0x54, - 0x49, - 0x64, - 0x59, - 0x59, - 0x62, - 0x62, - 0x62, - 0x44, - 0x5E, - 0x9F, - 0x91, - 0x63, - 0x63, - 0x63, - 0x57, - 0x57, - 0x2A, - 0x64, - 0x52, - 0x5B, - 0x5C, - 0x5C, - 0x5C, - 0x5C, - 0x59, - 0x63, - 0x75, - 0x66, - 0x69, - 0x61, - 0x67, - 0x67, - 0x67, - 0x67, - 0x65, - 0x6A, - 0x6A, - 0x7B, - 0x75, - 0x75, - 0x75, - 0x75, - 0x69, - 0x69, - 0x64, - 0x64, - 0x51, - 0x67, - 0x68, - 0x68, - 0x6F, - 0x6F, - 0x6F, - 0x7F, - 0x95, - 0x9C, - 0x87, - 0x84, - 0x8A, - 0x72, - 0x84, - 0x84, - 0x6D, - 0x6D, - 0x6A, - 0x6A, - 0x8D, - 0x8D, - 0x8D, - 0x8D, - 0x3B, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sTired[106] = { + 0x70, 0x70, 0x70, 0x5C, 0x5C, 0x5C, 0x6F, 0x6F, 0x6F, 0x93, 0x8C, 0x9A, 0x9D, 0x89, 0x99, 0x7A, + 0x91, 0x8D, 0x8D, 0x8D, 0x8D, 0x69, 0x69, 0x72, 0x72, 0x65, 0x65, 0x65, 0x9E, 0x98, 0x98, 0x2A, + 0x50, 0x54, 0x54, 0x49, 0x64, 0x59, 0x59, 0x62, 0x62, 0x62, 0x44, 0x5E, 0x9F, 0x91, 0x63, 0x63, + 0x63, 0x57, 0x57, 0x2A, 0x64, 0x52, 0x5B, 0x5C, 0x5C, 0x5C, 0x5C, 0x59, 0x63, 0x75, 0x66, 0x69, + 0x61, 0x67, 0x67, 0x67, 0x67, 0x65, 0x6A, 0x6A, 0x7B, 0x75, 0x75, 0x75, 0x75, 0x69, 0x69, 0x64, + 0x64, 0x51, 0x67, 0x68, 0x68, 0x6F, 0x6F, 0x6F, 0x7F, 0x95, 0x9C, 0x87, 0x84, 0x8A, 0x72, 0x84, + 0x84, 0x6D, 0x6D, 0x6A, 0x6A, 0x8D, 0x8D, 0x8D, 0x8D, 0x3B, }; -COMPILER_STRIP_GATE(0x8039C718, &Z2MdnPrm::sTired); /* 8039C784-8039C7F0 028DE4 006A+02 1/0 0/0 0/0 .rodata sSerious__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sSerious[106 + 2 /* padding */] = { - 0x52, - 0x65, - 0x65, - 0x72, - 0x5A, - 0x61, - 0x61, - 0x7B, - 0x80, - 0x92, - 0x93, - 0x9D, - 0x9D, - 0x70, - 0x79, - 0x76, - 0x62, - 0x57, - 0x5A, - 0x53, - 0x53, - 0x59, - 0x59, - 0x65, - 0x63, - 0x60, - 0x60, - 0x6A, - 0x83, - 0x80, - 0x7F, - 0x5D, - 0x5C, - 0x45, - 0x5D, - 0x71, - 0x72, - 0x65, - 0x65, - 0x65, - 0x66, - 0x4B, - 0xB2, - 0x60, - 0x5C, - 0x5C, - 0x5C, - 0x5B, - 0x5F, - 0x55, - 0x55, - 0x5E, - 0x5E, - 0x5F, - 0x5B, - 0x4D, - 0x58, - 0x60, - 0x5B, - 0x50, - 0x50, - 0x56, - 0x56, - 0x56, - 0x7D, - 0x6E, - 0x72, - 0x73, - 0x73, - 0x6A, - 0x64, - 0x54, - 0x58, - 0x57, - 0x57, - 0x5D, - 0x5D, - 0x64, - 0x5F, - 0x53, - 0x53, - 0x52, - 0x54, - 0x4D, - 0x4D, - 0x4D, - 0x4D, - 0x59, - 0x59, - 0x59, - 0x69, - 0x6B, - 0x6B, - 0x5A, - 0x72, - 0x69, - 0x70, - 0x60, - 0x3C, - 0x81, - 0x81, - 0x92, - 0x92, - 0x8E, - 0x98, - 0x87, - /* padding */ - 0x00, - 0x00, +u8 const Z2MdnPrm::sSerious[106] = { + 0x52, 0x65, 0x65, 0x72, 0x5A, 0x61, 0x61, 0x7B, 0x80, 0x92, 0x93, 0x9D, 0x9D, 0x70, 0x79, 0x76, + 0x62, 0x57, 0x5A, 0x53, 0x53, 0x59, 0x59, 0x65, 0x63, 0x60, 0x60, 0x6A, 0x83, 0x80, 0x7F, 0x5D, + 0x5C, 0x45, 0x5D, 0x71, 0x72, 0x65, 0x65, 0x65, 0x66, 0x4B, 0xB2, 0x60, 0x5C, 0x5C, 0x5C, 0x5B, + 0x5F, 0x55, 0x55, 0x5E, 0x5E, 0x5F, 0x5B, 0x4D, 0x58, 0x60, 0x5B, 0x50, 0x50, 0x56, 0x56, 0x56, + 0x7D, 0x6E, 0x72, 0x73, 0x73, 0x6A, 0x64, 0x54, 0x58, 0x57, 0x57, 0x5D, 0x5D, 0x64, 0x5F, 0x53, + 0x53, 0x52, 0x54, 0x4D, 0x4D, 0x4D, 0x4D, 0x59, 0x59, 0x59, 0x69, 0x6B, 0x6B, 0x5A, 0x72, 0x69, + 0x70, 0x60, 0x3C, 0x81, 0x81, 0x92, 0x92, 0x8E, 0x98, 0x87, }; -COMPILER_STRIP_GATE(0x8039C784, &Z2MdnPrm::sSerious); /* 8039C7F0-8039C844 028E50 0054+00 1/0 0/0 0/0 .rodata sReplyb__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sReplyb[84] = { +u8 const Z2MdnPrm::sReplyb[84] = { 0x5C, 0x45, 0x45, 0x71, 0x9F, 0x57, 0xB4, 0xB4, 0x56, 0x62, 0x8E, 0x61, 0x61, 0xB0, 0xB0, 0x3C, 0x59, 0x4A, 0x64, 0xA4, 0xA4, 0x5A, 0x5A, 0x5A, 0x5A, 0x72, 0x72, 0x4B, 0x6B, 0x97, 0x97, 0x59, 0x60, 0x60, 0x60, 0x69, 0x3E, 0x3E, 0x57, 0x42, 0x5E, 0x76, @@ -1730,10 +616,9 @@ SECTION_RODATA u8 const Z2MdnPrm::sReplyb[84] = { 0x72, 0x8A, 0x2C, 0x1F, 0x1F, 0x95, 0x95, 0x69, 0x4C, 0x59, 0x59, 0x79, 0x5B, 0x44, 0x44, 0x4F, 0x52, 0x58, 0x5A, 0x6F, 0x6E, 0x8A, 0x8E, 0x8E, 0x8E, 0x8C, 0x8C, 0x9B, }; -COMPILER_STRIP_GATE(0x8039C7F0, &Z2MdnPrm::sReplyb); /* 8039C844-8039C8A8 028EA4 0064+00 1/0 0/0 0/0 .rodata sApologize__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sApologize[100] = { +u8 const Z2MdnPrm::sApologize[100] = { 0x6A, 0x6A, 0x6A, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x57, 0x57, 0x57, 0x63, 0x61, 0x54, 0x54, 0x54, 0x54, 0x58, 0x58, 0x58, 0x58, 0x45, 0x45, 0x56, 0x56, 0x5B, 0x5B, 0x37, 0x53, 0x53, 0x53, 0x59, 0x59, 0x59, 0x49, 0x58, 0x58, 0x55, 0x56, 0x56, 0x83, 0x7F, 0x7F, @@ -1742,28 +627,14 @@ SECTION_RODATA u8 const Z2MdnPrm::sApologize[100] = { 0x5B, 0x70, 0x72, 0x72, 0x72, 0x72, 0x6E, 0x76, 0x6B, 0x6B, 0x58, 0x69, 0x66, 0x66, 0x64, 0x64, 0x60, 0x61, 0x63, 0x6A, 0x62, 0x62, 0x64, 0x65, 0x71, }; -COMPILER_STRIP_GATE(0x8039C844, &Z2MdnPrm::sApologize); /* 8039C8A8-8039C8B4 028F08 0009+03 1/0 0/0 0/0 .rodata sApologizeTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sApologizeTail[9 + 3 /* padding */] = { - 0x7C, - 0x6E, - 0x63, - 0x71, - 0x51, - 0x37, - 0x75, - 0x58, - 0x5C, - /* padding */ - 0x00, - 0x00, - 0x00, +u8 const Z2MdnPrm::sApologizeTail[9] = { + 0x7C, 0x6E, 0x63, 0x71, 0x51, 0x37, 0x75, 0x58, 0x5C, }; -COMPILER_STRIP_GATE(0x8039C8A8, &Z2MdnPrm::sApologizeTail); /* 8039C8B4-8039C918 028F14 0064+00 1/0 0/0 0/0 .rodata sDeside__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sDeside[100] = { +u8 const Z2MdnPrm::sDeside[100] = { 0x77, 0x77, 0x77, 0x58, 0x58, 0x6F, 0x78, 0x5F, 0x66, 0x5E, 0x6E, 0x62, 0x62, 0x2E, 0x5A, 0x58, 0x54, 0x52, 0x52, 0x5C, 0x59, 0x56, 0x56, 0x4B, 0x4B, 0x63, 0x63, 0x4D, 0x4E, 0x4A, 0x69, 0x71, 0x71, 0x76, 0x80, 0x80, 0x80, 0x73, 0x73, 0x5C, 0x7C, 0x64, 0x83, 0x89, 0x89, @@ -1772,10 +643,9 @@ SECTION_RODATA u8 const Z2MdnPrm::sDeside[100] = { 0x62, 0x5D, 0x67, 0x5D, 0x5F, 0x62, 0x59, 0x5D, 0x55, 0x55, 0x48, 0x5F, 0x5F, 0x5F, 0x5D, 0x75, 0x6A, 0x66, 0x76, 0x69, 0x69, 0x69, 0x60, 0x60, 0x5F, }; -COMPILER_STRIP_GATE(0x8039C8B4, &Z2MdnPrm::sDeside); /* 8039C918-8039C980 028F78 0068+00 1/0 0/0 0/0 .rodata sAfford__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sAfford[104] = { +u8 const Z2MdnPrm::sAfford[104] = { 0x4E, 0x45, 0x52, 0x5B, 0x56, 0x5B, 0x59, 0x52, 0x52, 0x57, 0x5C, 0x50, 0x50, 0x49, 0x80, 0x6E, 0x6E, 0x5A, 0x5C, 0x60, 0x6A, 0x62, 0x62, 0x6A, 0x71, 0x48, 0x4C, 0x5B, 0x5A, 0x40, 0x40, 0x49, 0x49, 0x50, 0x51, 0x51, 0x51, 0x3A, 0x5A, 0x5A, 0x5A, 0x5A, 0x5A, 0x57, 0x57, @@ -1784,41 +654,32 @@ SECTION_RODATA u8 const Z2MdnPrm::sAfford[104] = { 0x7D, 0x6E, 0x56, 0x79, 0x79, 0x50, 0x4C, 0x50, 0x43, 0x52, 0x51, 0x66, 0x6C, 0x64, 0x63, 0x63, 0x5D, 0x69, 0x70, 0x56, 0x50, 0x4B, 0x92, 0x86, 0x8F, 0x4B, 0x4F, 0x57, 0x56, }; -COMPILER_STRIP_GATE(0x8039C918, &Z2MdnPrm::sAfford); /* 8039C980-8039C98C 028FE0 000C+00 1/0 0/0 0/0 .rodata sAffordTail__8Z2MdnPrm */ -SECTION_RODATA u8 const Z2MdnPrm::sAffordTail[12] = { +u8 const Z2MdnPrm::sAffordTail[12] = { 0x63, 0x8E, 0x5B, 0x59, 0x4C, 0x3A, 0x69, 0x47, 0x41, 0x59, 0x50, 0x55, }; -COMPILER_STRIP_GATE(0x8039C980, &Z2MdnPrm::sAffordTail); /* 8039C98C-8039CA58 -00001 00CC+00 2/2 0/0 0/0 .rodata sPrm__8Z2MdnPrm */ -SECTION_RODATA sPrmStruct const Z2MdnPrm::sPrm[17] = { - { (u8**)&Z2MdnPrm::sReply, (u8**)&Z2MdnPrm::sReplyTail, 0x32, 0x06, 0x04, 0x00}, - { (u8**)&Z2MdnPrm::sJoke, (u8**)&Z2MdnPrm::sJokeTail, 0x32, 0x03, 0x07, 0x00}, - { (u8**)&Z2MdnPrm::sSexy, (u8**)&Z2MdnPrm::sSexyTail, 0x32, 0x03, 0x07, 0x00}, - { (u8**)&Z2MdnPrm::sRidicule, (u8**)&Z2MdnPrm::sRidiculeTail, 0x32, 0x03, 0x07, 0x00}, - { (u8**)&Z2MdnPrm::sBoring, (u8**)&Z2MdnPrm::sBoringTail, 0x36, 0x01, 0x05, 0x00}, - { (u8**)&Z2MdnPrm::sIrritated, (u8**)&Z2MdnPrm::sIrritatedTail, 0x2F, 0x03, 0x07, 0x00}, - { (u8**)&Z2MdnPrm::sOrder, (u8**)&Z2MdnPrm::sOrderTail, 0x39, 0x02, 0x04, 0x00}, - { (u8**)&Z2MdnPrm::sResent, (u8**)&Z2MdnPrm::sResentTail, 0x35, 0x02, 0x03, 0x00}, - { (u8**)&Z2MdnPrm::sCheerful, (u8**)&Z2MdnPrm::sCheerfulTail, 0x35, 0x01, 0x07, 0x00}, - { (u8**)&Z2MdnPrm::sConfused, (u8**)&Z2MdnPrm::sConfusedTail, 0x35, 0x03, 0x02, 0x00}, - { (u8**)&Z2MdnPrm::sHostility, (u8**)&Z2MdnPrm::sHostilityTail, 0x34, 0x02, 0x05, 0x00}, - { (u8**)&Z2MdnPrm::sTired, (u8**)&Z2MdnPrm::sTiredTail, 0x35, 0x03, 0x05, 0x00}, - { (u8**)&Z2MdnPrm::sSerious, (u8**)&Z2MdnPrm::sSeriousTail, 0x35, 0x02, 0x05, 0x00}, - { (u8**)&Z2MdnPrm::sReplyb, (u8**)&Z2MdnPrm::sReplybTail, 0x2A, 0x04, 0x03, 0x00}, - { (u8**)&Z2MdnPrm::sApologize, (u8**)&Z2MdnPrm::sApologizeTail, 0x32, 0x04, 0x05, 0x00}, - { (u8**)&Z2MdnPrm::sDeside, (u8**)&Z2MdnPrm::sDesideTail, 0x32, 0x01, 0x07, 0x00}, - { (u8**)&Z2MdnPrm::sAfford, (u8**)&Z2MdnPrm::sAffordTail, 0x34, 0x02, 0x0A, 0x00}, +sPrmStruct const Z2MdnPrm::sPrm[17] = { + { Z2MdnPrm::sReply, Z2MdnPrm::sReplyTail, 0x32, 0x06, 0x04, 0x00}, + { Z2MdnPrm::sJoke, Z2MdnPrm::sJokeTail, 0x32, 0x03, 0x07, 0x00}, + { Z2MdnPrm::sSexy, Z2MdnPrm::sSexyTail, 0x32, 0x03, 0x07, 0x00}, + { Z2MdnPrm::sRidicule, Z2MdnPrm::sRidiculeTail, 0x32, 0x03, 0x07, 0x00}, + { Z2MdnPrm::sBoring, Z2MdnPrm::sBoringTail, 0x36, 0x01, 0x05, 0x00}, + { Z2MdnPrm::sIrritated, Z2MdnPrm::sIrritatedTail, 0x2F, 0x03, 0x07, 0x00}, + { Z2MdnPrm::sOrder, Z2MdnPrm::sOrderTail, 0x39, 0x02, 0x04, 0x00}, + { Z2MdnPrm::sResent, Z2MdnPrm::sResentTail, 0x35, 0x02, 0x03, 0x00}, + { Z2MdnPrm::sCheerful, Z2MdnPrm::sCheerfulTail, 0x35, 0x01, 0x07, 0x00}, + { Z2MdnPrm::sConfused, Z2MdnPrm::sConfusedTail, 0x35, 0x03, 0x02, 0x00}, + { Z2MdnPrm::sHostility, Z2MdnPrm::sHostilityTail, 0x34, 0x02, 0x05, 0x00}, + { Z2MdnPrm::sTired, Z2MdnPrm::sTiredTail, 0x35, 0x03, 0x05, 0x00}, + { Z2MdnPrm::sSerious, Z2MdnPrm::sSeriousTail, 0x35, 0x02, 0x05, 0x00}, + { Z2MdnPrm::sReplyb, Z2MdnPrm::sReplybTail, 0x2A, 0x04, 0x03, 0x00}, + { Z2MdnPrm::sApologize, Z2MdnPrm::sApologizeTail, 0x32, 0x04, 0x05, 0x00}, + { Z2MdnPrm::sDeside, Z2MdnPrm::sDesideTail, 0x32, 0x01, 0x07, 0x00}, + { Z2MdnPrm::sAfford, Z2MdnPrm::sAffordTail, 0x34, 0x02, 0x0A, 0x00}, }; -COMPILER_STRIP_GATE(0x8039C98C, &Z2MdnPrm::sPrm); - -/* 80455F48-80455F50 004548 0008+00 3/3 0/0 0/0 .sdata2 @4083 */ -SECTION_SDATA2 static f64 lit_4083 = 4503599627370496.0 /* cast u32 to float */; - -/* 80456BA8-80456BAC 000048 0002+02 1/1 0/0 0/0 .sbss2 @4003 */ -SECTION_SBSS2 static u8 lit_4003[2 + 2 /* padding */]; typedef struct { u8 field_0x0; @@ -1826,17 +687,18 @@ typedef struct { } Z2ConnectCost; /* 802CC4C0-802CC738 2C6E00 0278+00 2/2 0/0 0/0 .text selectUnit__12Z2SpeechMgr2Fb */ -// This one is a mess -#ifdef NONMATCHING +// NONMATCHING This one is a mess void Z2SpeechMgr2::selectUnit(bool param_0) { Z2ConnectCost local_3c[5]; if (field_0x401 >= 64) { field_0x0->stop(); } else { - s32 ZVar2 = random.get_uint8(Z2MdnPrm::sPrm[field_0x3fc].field_0x8); + int best = random.get_uint8(Z2MdnPrm::sPrm[field_0x3fc].field_0x8); + if (field_0x401 != 0 && param_0) { - u8 cVar5 = 0; - ZVar2 = field_0x402[field_0x401 - 1]; + int cVar5 = 0; + int ZVar2 = field_0x402[field_0x401 - 1]; + do { bool bVar1; int ZVar3; @@ -1858,31 +720,26 @@ void Z2SpeechMgr2::selectUnit(bool param_0) { } } } while (bVar1); - local_3c[1].field_0x1 = J3DUD::JMAAbs((*Z2MdnPrm::sPrm[field_0x3fc].field_0x0)[ZVar3 * 2] - (*Z2MdnPrm::sPrm[field_0x3fc].field_0x0)[ZVar3 * 2 + 1]); - local_3c[2].field_0x0 = ZVar3; - local_3c[cVar5] = local_3c[2]; + u8 diff = JMAAbs(Z2MdnPrm::sPrm[field_0x3fc].field_0x0[ZVar3 * 2] + - Z2MdnPrm::sPrm[field_0x3fc].field_0x0[ZVar2 * 2 + 1]); + local_3c[cVar5] = (Z2ConnectCost){ZVar3, diff}; cVar5++; - } while (cVar5 != 5); - for (int iVar4 = 0; /*ZVar2 = local_3c[0],*/ iVar4 < 5; iVar4++) { - if (local_3c[iVar4].field_0x1 < local_3c[0].field_0x0) { - local_3c[0].field_0x1 = local_3c[iVar4].field_0x1; - local_3c[0].field_0x0 = local_3c[iVar4].field_0x0; + } while ((s8)cVar5 != 5); + + best = local_3c[0].field_0x0; + u16 min = local_3c[0].field_0x1; + for (int iVar4 = 0; iVar4 < 5; iVar4++) { + if (local_3c[iVar4].field_0x1 < min) { + min = local_3c[iVar4].field_0x1; + best = local_3c[iVar4].field_0x0; } } } - field_0x402[field_0x401 - 1] = ZVar2; + + field_0x402[field_0x401] = best; field_0x401++; } } -#else -void Z2SpeechMgr2::selectUnit(bool param_0) { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 80456BAC-80456BB0 00004C 0002+02 1/1 0/0 0/0 .sbss2 @4104 */ -SECTION_SBSS2 static u8 lit_4104[2 + 2 /* padding */]; /* 802CC738-802CC9D0 2C7078 0298+00 1/1 0/0 0/0 .text selectTail__12Z2SpeechMgr2Fv */ void Z2SpeechMgr2::selectTail() { @@ -1923,13 +780,6 @@ bool Z2SpeechMgr2::isMidnaSpeak() { /* 802CCFB8-802CCFF8 2C78F8 0040+00 1/1 0/0 0/0 .text __ct__15Z2SpeechStarterFv */ Z2SpeechStarter::Z2SpeechStarter() : Z2SoundStarter(false) {} -/* ############################################################################################## */ -/* 80455F50-80455F54 004550 0004+00 1/1 0/0 0/0 .sdata2 @4571 */ -SECTION_SDATA2 static f32 lit_4571 = 7.0f / 100.0f; - -/* 80455F54-80455F58 004554 0004+00 1/1 0/0 0/0 .sdata2 @4572 */ -SECTION_SDATA2 static f32 lit_4572 = 0.5f; - /* 802CCFF8-802CD248 2C7938 0250+00 1/0 0/0 0/0 .text * startSound__15Z2SpeechStarterF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3UlfffffUl */ bool Z2SpeechStarter::startSound(JAISoundID param_0, JAISoundHandle* param_1, diff --git a/src/Z2AudioLib/Z2StatusMgr.cpp b/src/Z2AudioLib/Z2StatusMgr.cpp index c5fe617970..8adc97d924 100644 --- a/src/Z2AudioLib/Z2StatusMgr.cpp +++ b/src/Z2AudioLib/Z2StatusMgr.cpp @@ -7,7 +7,6 @@ #include "Z2AudioLib/Z2Param.h" #include "d/d_com_inf_game.h" #include "d/d_s_play.h" -#include "dol2asm.h" /* 802B5F1C-802B5F70 2B085C 0054+00 0/0 1/1 0/0 .text __ct__11Z2StatusMgrFv */ Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(this) { @@ -17,7 +16,7 @@ Z2StatusMgr::Z2StatusMgr() : JASGlobalInstance(this) { field_0x03 = 0; mTime = 3072; mEventBit = NULL; - mIsMenuIn = false; + mPauseFlag = false; mCameraMapInfo = 0; mPolygonPosition.x = 10000000.0f; @@ -84,7 +83,7 @@ void Z2StatusMgr::menuIn() { Z2GetSeqMgr()->menuInBgm(); Z2GetSeMgr()->menuInSe(); - mIsMenuIn = true; + mPauseFlag = true; } /* 802B617C-802B61BC 2B0ABC 0040+00 0/0 3/3 0/0 .text menuOut__11Z2StatusMgrFv */ @@ -92,7 +91,7 @@ void Z2StatusMgr::menuOut() { Z2GetSeqMgr()->menuOutBgm(); Z2GetSeMgr()->talkOutSe(); - mIsMenuIn = false; + mPauseFlag = false; } /* 802B61BC-802B61E8 2B0AFC 002C+00 2/2 1/1 0/0 .text isMovieDemo__11Z2StatusMgrFv */ @@ -196,7 +195,7 @@ void Z2StatusMgr::setDemoName(char* demoName) { if (mDemoStatus == 3) { Z2GetSeqMgr()->setBattleBgmOff(false); } else if (mDemoStatus == 4) { - Z2GetSeqMgr()->i_unMuteSceneBgm(struct_80450861); + Z2GetSeqMgr()->unMuteSceneBgm(struct_80450861); } else if (mDemoStatus == 5) { Z2GetSeqMgr()->subBgmStop(); } else if (mDemoStatus == 9) { @@ -215,7 +214,7 @@ void Z2StatusMgr::setDemoName(char* demoName) { mDemoStatus = 11; } else if (strcmp(demoName, "demo36_01") == 0 || strcmp(demoName, "demo36_02") == 0) { mDemoStatus = 4; - Z2GetSeqMgr()->i_muteSceneBgm(0x1e, 0.0f); + Z2GetSeqMgr()->muteSceneBgm(0x1e, 0.0f); } else if (strcmp(demoName, "demo37_01") == 0) { mDemoStatus = 12; Z2GetSoundMgr()->getSeMgr()->getCategory(9)->getParams()->moveVolume(0.0f, 0); @@ -336,4 +335,4 @@ void Z2StatusMgr::setCameraInWaterDepth(f32 depth) { mUnderwaterDepth = depth; } -/* 8039BC88-8039BC88 0282E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 8039BC88-8039BC88 0282E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/Z2AudioLib/Z2WolfHowlMgr.cpp b/src/Z2AudioLib/Z2WolfHowlMgr.cpp index e34915e55d..f8030a3c77 100644 --- a/src/Z2AudioLib/Z2WolfHowlMgr.cpp +++ b/src/Z2AudioLib/Z2WolfHowlMgr.cpp @@ -12,9 +12,42 @@ #include "Z2AudioLib/Z2Audience.h" #include "d/d_demo.h" -/* ############################################################################################## */ +/* 80450880-80450884 000300 0004+00 2/2 0/0 0/0 .sdata cPitchDown */ +static f32 cPitchDown = 0.8909000158309937f; + +/* 80450884-80450888 000304 0004+00 4/4 0/0 0/0 .sdata cPitchCenter */ +static f32 cPitchCenter = 1.0f; + +/* 80450888-8045088C 000308 0004+00 2/2 0/0 0/0 .sdata cPitchUp */ +static f32 cPitchUp = 1.1892000436782837f; + +static u8 struct_8045088C = 7; +static u8 struct_8045088D = 7; + +/* 8045088E-80450890 00030E 0002+00 4/4 0/0 0/0 .sdata None */ +static u8 data_8045088E = 0x1E; +static u8 data_8045088F = 0x00; + +/* 80450890-80450894 000310 0004+00 1/1 0/0 0/0 .sdata cR_FlatWidth */ +static f32 cR_FlatWidth = 0.9438700079917908f; + +/* 80450894-80450898 -00001 0004+00 3/3 0/0 0/0 .sdata None */ +static u8 struct_80450894 = 0x05; +static u8 struct_80450895 = 0x1E; + +/* 80450898-8045089C 000318 0004+00 1/1 0/0 0/0 .sdata sStickHigh */ +static f32 sStickHigh = 0.5f; + +/* 8045089C-804508A0 00031C 0004+00 1/1 0/0 0/0 .sdata sStickCenter */ +static f32 sStickCenter = 1.0f / 5.0f; + /* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */ -extern SongNote sHowlTobikusa[4]; +static SongNote sHowlTobikusa[4] = { + {0x01, 0x1E}, + {0x03, 0x1E}, + {0x01, 0x1E}, + {0x03, 0x1E}, +}; /* 803CBC50-803CBC5C 028D70 000C+00 1/0 0/0 0/0 .data sHowlUmakusa */ static SongNote sHowlUmakusa[6] = { @@ -63,43 +96,6 @@ static Z2WolfHowlData sGuideData[9] = { {7, sNewSong1}, {8, sNewSong2}, {9, sNewSong3}, }; -/* 80450880-80450884 000300 0004+00 2/2 0/0 0/0 .sdata cPitchDown */ -static f32 cPitchDown = 0.8909000158309937f; - -/* 80450884-80450888 000304 0004+00 4/4 0/0 0/0 .sdata cPitchCenter */ -static f32 cPitchCenter = 1.0f; - -/* 80450888-8045088C 000308 0004+00 2/2 0/0 0/0 .sdata cPitchUp */ -static f32 cPitchUp = 1.1892000436782837f; - -static u8 struct_8045088C = 7; -static u8 struct_8045088D = 7; - -/* 8045088E-80450890 00030E 0002+00 4/4 0/0 0/0 .sdata None */ -static u8 data_8045088E = 0x1E; -static u8 data_8045088F = 0x00; - -/* 80450890-80450894 000310 0004+00 1/1 0/0 0/0 .sdata cR_FlatWidth */ -static f32 cR_FlatWidth = 0.9438700079917908f; - -/* 80450894-80450898 -00001 0004+00 3/3 0/0 0/0 .sdata None */ -static u8 struct_80450894 = 0x05; -static u8 struct_80450895 = 0x1E; - -/* 80450898-8045089C 000318 0004+00 1/1 0/0 0/0 .sdata sStickHigh */ -static f32 sStickHigh = 0.5f; - -/* 8045089C-804508A0 00031C 0004+00 1/1 0/0 0/0 .sdata sStickCenter */ -static f32 sStickCenter = 1.0f / 5.0f; - -/* 804508A0-804508A8 000320 0008+00 1/0 0/0 0/0 .sdata sHowlTobikusa */ -static SongNote sHowlTobikusa[4] = { - {0x01, 0x1E}, - {0x03, 0x1E}, - {0x01, 0x1E}, - {0x03, 0x1E}, -}; - /* 802CAAC0-802CAB8C 2C5400 00CC+00 0/0 1/1 0/0 .text __ct__13Z2WolfHowlMgrFv */ Z2WolfHowlMgr::Z2WolfHowlMgr() : JASGlobalInstance(this) { mpCurSong = NULL; @@ -228,7 +224,7 @@ void Z2WolfHowlMgr::calcPitchMod(f32 param_0, f32 param_1) { /* 802CAED4-802CB100 2C5814 022C+00 0/0 1/1 0/0 .text startWolfHowlSound__13Z2WolfHowlMgrFffbf */ s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32 param_3) { if (mCorrectCurveID > 1) { - Z2GetSeqMgr()->i_setWindStoneVol(0.0f, 0); + Z2GetSeqMgr()->setWindStoneVol(0.0f, 0); } if (Z2GetSeqMgr()->isItemGetDemo() || (mReleaseTimer != 0)) { @@ -486,7 +482,7 @@ void Z2WolfHowlMgr::startWindStoneSound(s8 param_0, Vec* param_1) { dVar13 = Z2Calc::getParamByExp(fVar14, 150.0f, 2000.0f, 0.45f, 0.05f, dVar13, Z2Calc::CURVE_SIGN_0); } - Z2GetSeqMgr()->i_setWindStoneVol(dVar13, 0); + Z2GetSeqMgr()->setWindStoneVol(dVar13, 0); field_0x04->getAuxiliary().moveVolume(0.4f, 0); } else { field_0x04->getAuxiliary().moveVolume(0.04f, 0); @@ -497,7 +493,7 @@ void Z2WolfHowlMgr::startWindStoneSound(s8 param_0, Vec* param_1) { /* 802CBA88-802CBB58 2C63C8 00D0+00 0/0 1/1 0/0 .text startGuideMelody__13Z2WolfHowlMgrFb */ int Z2WolfHowlMgr::startGuideMelody(bool param_0) { - Z2GetSeqMgr()->i_setWindStoneVol(0.0f, 0); + Z2GetSeqMgr()->setWindStoneVol(0.0f, 0); if (param_0) { Z2GetSoundMgr()->startSound(sWindStoneSound[mCorrectCurveID], &field_0x08, NULL); } @@ -513,4 +509,4 @@ int Z2WolfHowlMgr::startGuideMelody(bool param_0) { */ void Z2WolfHowlMgr::skipCorrectDemo() { Z2GetSeqMgr()->stopWolfHowlSong(); -} \ No newline at end of file +} diff --git a/src/d/actor/d_a_e_vt.cpp b/src/d/actor/d_a_e_vt.cpp index 0e46f08419..be5a539b84 100644 --- a/src/d/actor/d_a_e_vt.cpp +++ b/src/d/actor/d_a_e_vt.cpp @@ -3158,7 +3158,7 @@ void daE_VA_c::executeOpaciDeath() { } Z2GetAudioMgr()->subBgmStop(); - Z2GetAudioMgr()->i_muteSceneBgm(0, 0.0f); + Z2GetAudioMgr()->muteSceneBgm(0, 0.0f); dComIfGs_onStageMiddleBoss(); field_0x1364 = 0; @@ -3275,7 +3275,7 @@ void daE_VA_c::executeOpaciDeath() { dComIfGs_onSwitch(mSwNo, fopAcM_GetRoomNo(this)); } - Z2GetAudioMgr()->i_unMuteSceneBgm(45); + Z2GetAudioMgr()->unMuteSceneBgm(45); fopAcM_delete(this); return; } diff --git a/src/d/actor/d_a_npc_zrz.cpp b/src/d/actor/d_a_npc_zrz.cpp index ed9cf87eb3..6c6f42cd8f 100644 --- a/src/d/actor/d_a_npc_zrz.cpp +++ b/src/d/actor/d_a_npc_zrz.cpp @@ -1476,7 +1476,7 @@ BOOL daNpc_zrZ_c::ECut_helpPrince(int i_staffID) { case 11: initTalk(0x3e9, NULL); setLookMode(LOOK_NONE); - Z2GetAudioMgr()->i_muteSceneBgm(90, 0.0f); + Z2GetAudioMgr()->muteSceneBgm(90, 0.0f); mIsLeading = true; daNpcF_offTmpBit(0xb); daNpcF_offTmpBit(0xc); @@ -1559,7 +1559,7 @@ BOOL daNpc_zrZ_c::ECut_helpPrince(int i_staffID) { case 103: mEventTimer = timer; Z2GetAudioMgr()->subBgmStop(); - Z2GetAudioMgr()->i_unMuteSceneBgm(90); + Z2GetAudioMgr()->unMuteSceneBgm(90); break; case 110: diff --git a/src/f_ap/f_ap_game.cpp b/src/f_ap/f_ap_game.cpp index 0466c1003f..198253afa5 100644 --- a/src/f_ap/f_ap_game.cpp +++ b/src/f_ap/f_ap_game.cpp @@ -61,4 +61,4 @@ void fapGm_Create() { g_HIO.field_0x04 = -1; } -fapGm_HIO_c::~fapGm_HIO_c() {} \ No newline at end of file +fapGm_HIO_c::~fapGm_HIO_c() {}