JAudio2 and Z2AudioLib work (#2223)

* JAudio2 and Z2AudioLib work

* check1stDynamicWave matched
This commit is contained in:
Caroline Madsen
2024-10-23 19:25:13 -04:00
committed by GitHub
parent 1289892a26
commit 9401af27b3
94 changed files with 3803 additions and 7254 deletions
+14 -14
View File
@@ -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"),
+1 -1
View File
@@ -10,7 +10,7 @@ class JAISeMgr;
* @ingroup jsystem-jaudio
*
*/
class JAISe : public JSULink<JAISe>, public JAISound {
class JAISe : public JSULink<JAISe>, public JASPoolAllocObject<JAISe>, public JAISound {
public:
class TInner {
public:
+3 -2
View File
@@ -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<JAISe>* 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<JAISe>* mStrategyMgr;
/* 0x014 */ JAISeCategoryMgr mCategoryMgrs[16];
/* 0x6D4 */ JAISoundParamsMove mParams;
}; // Size: 0x724
+1 -1
View File
@@ -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:
+2 -1
View File
@@ -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<JAISoundChild> {
/* 802A2AB0 */ void init();
/* 802A2B28 */ void mixOut(JASTrack*);
/* 802A2B7C */ void calc();
+1 -1
View File
@@ -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();
};
+2 -1
View File
@@ -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<JAIStream>* getStreamList() { return &mStreamList; }
void setStreamDataMgr(JAIStreamDataMgr* param_0) {
JUT_ASSERT(139, !isActive());
streamDataMgr_ = param_0;
+53 -10
View File
@@ -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;
};
+17 -1
View File
@@ -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 */
+15 -11
View File
@@ -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;
};
+10 -15
View File
@@ -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;
@@ -120,4 +120,6 @@ namespace JASDsp {
extern f32 sDSPVolume;
};
u16 DSP_CreateMap2(u32 msg);
#endif /* JASDSPINTERFACE_H */
+13 -9
View File
@@ -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 */
+13 -5
View File
@@ -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<JASHeap> 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;
+8 -8
View File
@@ -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];
+26 -1
View File
@@ -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 */
+1 -1
View File
@@ -13,7 +13,7 @@ struct JASSoundParams;
namespace JASDsp {
class TChannel;
extern u32 FILTER_MODE_IIR;
extern const u32 FILTER_MODE_IIR;
};
/**
+55 -45
View File
@@ -17,56 +17,66 @@ public:
template<class T>
class TOffset {
public:
T* ptr(void* param_0) {
T* ptr(void const* param_0) {
return JSUConvertOffsetToPtr<T>(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<TWave> mWaveOffsets[0];
};
struct TWaveArchiveBank {
/* 0x0 */ u8 _00[8];
/* 0x8 */ TOffset<TWaveArchive> mArchiveOffsets[0];
};
struct TCtrl {
/* 0x0 */ u8 _00[4];
/* 0x4 */ u32 mWaveCount;
/* 0x8 */ TOffset<TCtrlWave> mCtrlWaveOffsets[0];
};
struct TCtrlScene {
/* 0x0 */ u8 _00[0xC];
/* 0xC */ TOffset<TCtrl> mCtrlOffset;
};
struct TCtrlGroup {
/* 0x0 */ u8 _00[8];
/* 0x8 */ u32 mGroupCount;
/* 0xC */ TOffset<TCtrlScene> 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<TWaveArchiveBank> mArchiveBankOffset;
/* 0x14 */ TOffset<TCtrlGroup> 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 */
+7 -5
View File
@@ -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;
+3 -1
View File
@@ -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 */
#endif /* JASWAVEINFO_H */
+3 -4
View File
@@ -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<JASBank> mBankPtrTable;
/* 0xC */ u32 field_0xc;
};
+9 -10
View File
@@ -23,7 +23,7 @@ class JKRSolidHeap;
* @ingroup jsystem-jaudio
*
*/
class JAUSection /* : public JKRDisposer, protected JSULink<JAUSection> */ {
class JAUSection : public JKRDisposer, protected JSULink<JAUSection> {
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<JAUSection> 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<JAUSectionHeap>, JAISeqDataMgr */ {
class JAUSectionHeap : public JAUSection, public JASGlobalInstance<JAUSectionHeap>, 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<JAUSection> mSectionList;
-2
View File
@@ -75,8 +75,6 @@ struct JAUSoundTable_ {
const void* field_0x0;
Root* field_0x4;
u32 field_0x8;
u32 field_0xc;
};
/**
+16 -12
View File
@@ -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_<MAX_CHUNKS_> {
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) {
+4 -1
View File
@@ -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);
+1
View File
@@ -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 */
+7
View File
@@ -115,6 +115,12 @@ struct TVec3<f32> : 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<f32> {
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) {
+3 -3
View File
@@ -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) {
+4
View File
@@ -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);
}
+10
View File
@@ -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
+4 -4
View File
@@ -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<T*>(getObjectPtr()); }
JSUList<T>* getSupervisor() const { return (JSUList<T>*)this->getList(); }
JSUList<T>* getSupervisor() const { return static_cast<JSUList<T>*>(this->getList()); }
JSULink<T>* getNext() const { return (JSULink<T>*)this->JSUPtrLink::getNext(); }
JSULink<T>* getNext() const { return static_cast<JSULink*>(this->JSUPtrLink::getNext()); }
JSULink<T>* getPrev() const { return (JSULink<T>*)this->JSUPtrLink::getPrev(); }
JSULink<T>* getPrev() const { return static_cast<JSULink*>(this->JSUPtrLink::getPrev()); }
};
//
+2 -2
View File
@@ -20,7 +20,7 @@ struct SMatrix34C<f32> {
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<TRotation3<TMatrix34<SMatrix34C<f32> > > > TPosition3f32;
} // namespace JGeometry
#endif
#endif
+1 -1
View File
@@ -226,7 +226,7 @@ struct Z2Audience : public JAIAudience, public JASGlobalInstance<Z2Audience> {
/* 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
+18 -3
View File
@@ -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<Z2FxLineMgr> {
/* 802BA7DC */ Z2FxLineMgr();
@@ -19,10 +34,10 @@ struct Z2FxLineMgr : public JASGlobalInstance<Z2FxLineMgr> {
/* 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
+105 -19
View File
@@ -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<Z2SceneMgr>::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 */
+1 -1
View File
@@ -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];
+20 -22
View File
@@ -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
+3 -1
View File
@@ -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<Z2SoundHandlePool> { // , public JASPoolAllocObject<Z2SoundHandlePool> {
public:
Z2SoundHandlePool() : JAISoundHandle(), JSULink<Z2SoundHandlePool>(this) {}
+2
View File
@@ -28,7 +28,9 @@ public:
JGeometry::TVec3<f32> 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:
+1 -1
View File
@@ -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;
+3 -2
View File
@@ -28,9 +28,10 @@ struct Z2StatusMgr : public JASGlobalInstance<Z2StatusMgr> {
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<Z2StatusMgr> {
/* 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;
-5
View File
@@ -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);
+1 -1
View File
@@ -96,4 +96,4 @@ void fopCamM_Management(void);
u32 fopCamM_GetParam(camera_class* pCamera);
void fopCamM_Init(void);
#endif
#endif
+1 -19
View File
@@ -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<JAISe>* 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;
}
}
+25 -158
View File
@@ -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<JAISe>* 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<JAISe>* 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<JAISeMgr>(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<f> */
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 */
+16 -146
View File
@@ -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<JAISeq>* param_1) : JSULi
/* 802A0B64-802A0C04 29B4A4 00A0+00 0/0 1/1 0/0 .text
* JAISeqMgr_startID___6JAISeqF10JAISoundIDPCQ29JGeometry8TVec3<f>P11JAIAudienceii */
void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> const* param_1, JAIAudience* param_2, int param_3, int param_4) {
void JAISeq::JAISeqMgr_startID_(JAISoundID param_0, JGeometry::TVec3<f32> 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<JASTrack>* allocobj = new JASPoolAllocObject_MultiThreaded<JASTrack>();
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<JASTrack>* allocobj2 = new JASPoolAllocObject_MultiThreaded<JASTrack>();
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<JAISoundChild>*)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<JAISoundChild>* allocobj = new JASPoolAllocObject<JAISoundChild>();
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<JAISoundChild>*)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;
}
}
+3 -113
View File
@@ -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<JAISeqMgr>(param_1), mAudience(NULL) {
seqDataMgr_ = NULL;
@@ -137,16 +47,8 @@ JAISeqMgr::JAISeqMgr(bool param_1) : JASGlobalInstance<JAISeqMgr>(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<JAISeq>* 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<f> */
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
}
+1 -13
View File
@@ -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]);
}
}
}
+9 -100
View File
@@ -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<JAISoundChild>*)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<JAISoundChild>* ptr = new JASPoolAllocObject<JAISoundChild>();
field_0x2a0[i_idx] = new (ptr) JAISoundChild();
field_0x2a0[i_idx] = new JAISoundChild();
if (field_0x2a0[i_idx] == NULL) {
JUT_WARN(370, "JASPoolAllocObject::<JAISoundChild>::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<JAISoundChild>*)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;
}
}
+3 -92
View File
@@ -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<JAIStreamMgr>(param_0) {
@@ -87,7 +18,6 @@ JAIStreamMgr::JAIStreamMgr(bool param_0) : JASGlobalInstance<JAIStreamMgr>(param
mActivity.init();
}
/* 802A3C3C-802A3D70 29E57C 0134+00 0/0 1/1 0/0 .text
* startSound__12JAIStreamMgrF10JAISoundIDP14JAISoundHandlePCQ29JGeometry8TVec3<f> */
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<JAIStream>* 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;
}
}
+15 -162
View File
@@ -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 */
/* 8039B2F0-8039B2F0 027950 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+24 -187
View File
@@ -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<JASChannel> */
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
}
+7 -104
View File
@@ -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<JASChannel> */
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<JASChannel>
#ifdef NONMATCHING
// NONMATCHING location of JASPoolAllocObject_MultiThreaded<JASChannel>
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 */
/* 8039B338-8039B338 027998 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+153 -221
View File
@@ -4,189 +4,184 @@
//
#include "JSystem/JAudio2/JASBNKParser.h"
#include "dol2asm.h"
//
// Types:
//
struct JKRHeap {
/* 802CE72C */ void getFreeSize();
};
template <typename A0>
struct JASMemPool_MultiThreaded {};
/* JASMemPool_MultiThreaded<JASChannel> */
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<Q312JASBNKParser4Ver05TPmap>__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<Q312JASBNKParser4Ver05TPerc>__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<Q312JASBNKParser4Ver05TVmap>__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<Q312JASBNKParser4Ver07TKeymap>__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<Q213JASOscillator5Point>__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<Q312JASBNKParser4Ver04TOsc>__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<Q312JASBNKParser4Ver05TInst>__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
+11 -89
View File
@@ -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<JASChannel> 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
+31 -96
View File
@@ -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
}
+2 -2
View File
@@ -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() {
}
}
+4 -140
View File
@@ -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 = &param_0->base.mHeap;
handle->field_0x4.field_0x20 = &param_0->base._48;
handle->mHeap = const_cast<JASHeap*>(&param_0->mHeap);
handle->field_0x4.field_0x20 = &param_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 == &param_0->base.mHeap) {
if (handle->mHeap == &param_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
}
+8 -34
View File
@@ -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;
u32 JASWaveInfo::one = 1;
+57 -133
View File
@@ -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 */
}
+24 -338
View File
@@ -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;
}
}
+4 -4
View File
@@ -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;
}
}
+32 -142
View File
@@ -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
}
+2 -44
View File
@@ -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;
}
}
}
+8 -181
View File
@@ -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_MultiThreaded<Q28JASTrack11TChannelMgr>Fv
*/
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<JASTrack::TList*>(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_MultiThreaded<Q28JASTrack11TChannelMgr>Fv */
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
+96 -95
View File
@@ -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<TCtrlGroup>*)&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<Q211JASWSParser9TCtrlWave>__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<Q211JASWSParser5TWave>__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<Q211JASWSParser12TWaveArchive>__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<Q211JASWSParser16TWaveArchiveBank>__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<Q211JASWSParser5TCtrl>__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<Q211JASWSParser10TCtrlScene>__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<Q211JASWSParser10TCtrlGroup>__FPCvUl */
extern "C" void func_80299520(void* _this, void const* param_0, u32 param_1) {
// NONMATCHING
}
+12 -97
View File
@@ -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
}
+4 -4
View File
@@ -11,7 +11,7 @@ void JAUBankTableDictionary::appendBankTable(JSULink<JAUBankTable>* 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);
}
// Needed to make the inline function JAUBankTable::getBank appear in this TU
static JASBank* dummy(JAUBankTable* table) {
return table->getBank(0);
}
+16 -112
View File
@@ -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<JASTrack>::newMemPool(field_0x1c);
JASTrack::newMemPool(field_0x1c);
if (field_0x20 > 0) {
JASPoolAllocObject_MultiThreaded<JASTrack::TChannelMgr>::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<JAIStream>::newMemPool(field_0x8);
JASPoolAllocObject<JAISeq>::newMemPool(field_0x4);
JASPoolAllocObject<JAISe>::newMemPool(field_0x0);
JASPoolAllocObject<JAISoundChild>::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
+32 -363
View File
@@ -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<JAUSection>(this), field_0x28(param_1), sectionHeap_(param_0) {
JAUSection::JAUSection(JAUSectionHeap* param_0, u32 param_1, s32 param_2)
: JSULink<JAUSection>(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<JAUSectionHeap>(param_1), mHeap(param_0) {
JAUSectionHeap::JAUSectionHeap(JKRSolidHeap* param_0, bool param_1, s32 param_2)
: JAUSection(this, 0, param_2), JASGlobalInstance<JAUSectionHeap>(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<JAUSection> * 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 */
+3 -14
View File
@@ -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);
}
}
+1 -2
View File
@@ -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;
}
}
}
+3 -20
View File
@@ -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];
u8 data_80451328[8];
@@ -38,7 +38,7 @@ void __fill(ForwardIt first, ForwardIt last, const T& value, std::random_access_
*/
template<class ForwardIt, class T>
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
#endif
@@ -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<size_t N> __bitset_base<N>::__bitset_base() {
std::fill(data, data + N, 0);
}
@@ -78,4 +90,4 @@ public:
};
} // namespace std
#endif
#endif
+27 -376
View File
@@ -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<f> */
@@ -139,15 +20,6 @@ void Z2AudibleAbsPos::calc(JGeometry::TVec3<f32> 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__15Z2AudibleAbsPosFPQ29JGeometry8TVec3<f>RCQ29JGeometry8TVec3<f>PCQ29JGeometry8TVec3<f> */
void Z2AudibleAbsPos::init(JGeometry::TVec3<f32>* param_0, JGeometry::TVec3<f32> const& param_1,
@@ -162,40 +34,6 @@ void Z2AudibleAbsPos::init(JGeometry::TVec3<f32>* param_0, JGeometry::TVec3<f32>
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__9Z2AudibleFRCQ29JGeometry8TVec3<f>PCQ29JGeometry8TVec3<f>Ulb */
Z2Audible::Z2Audible(JGeometry::TVec3<f32> const& param_0, JGeometry::TVec3<f32> 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<f32>*)&param_1);
mPos.set(param_1);
field_0x48.set(mPos);
mVel.zero();
} else {
field_0x48.set(mPos);
mPos.set(*(JGeometry::TVec3<f32>*)&param_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<f32>::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<f32> 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<f32> 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<Z2Audience>(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__10Z2AudienceFRCQ29JGeometry8TVec3<f>10JAISoundIDPCQ29JGeometry8TVec3<f>Ul */
JAIAudible* Z2Audience::newAudible(JGeometry::TVec3<f32> const& param_0, JAISoundID param_1,
JGeometry::TVec3<f32> 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<Z2Audible>();
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<f32> 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<f32> 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?
+11 -58
View File
@@ -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<JAUSectionHeap>::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 */
}
}
+35 -276
View File
@@ -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<Z2Audible>::newMemPool(0x4e);
mSoundMgr.getSeMgr()->setAudience(&mAudience);
mSoundMgr.getSeqMgr()->setAudience(&mAudience);
JASPoolAllocObject<Z2SoundHandlePool>::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<f> */
// vtable order
#ifdef NONMATCHING
bool Z2AudioMgr::startSound(JAISoundID param_0, JAISoundHandle* param_1,
JGeometry::TVec3<f32> 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<f32> 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 */
+90 -193
View File
@@ -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
+11 -9
View File
@@ -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<f32>*)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;
}
+196 -152
View File
@@ -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<Z2FxLineMgr>(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
}
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;
}
}
}
File diff suppressed because it is too large Load Diff
+1 -2
View File
@@ -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:
+42 -44
View File
@@ -40,10 +40,10 @@ Z2SeqMgr::Z2SeqMgr() : JASGlobalInstance<Z2SeqMgr>(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);
+3 -55
View File
@@ -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<Z2SoundHandlePool>* 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<Z2SoundHandlePool>* 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<Z2SoundHandlePool>* 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<f> */
#ifdef NONMATCHING
// NONMATCHING JASPoolAllocObject<_> locations
void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
JSULink<Z2SoundHandlePool>* link;
for (link = getFirst(); link != NULL; link = link->getNext()) {
@@ -194,8 +147,3 @@ void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
}
}
}
#else
void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
// NONMATCHING
}
#endif
+16 -147
View File
@@ -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<JAUSoundTable>::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<JAUSoundTable>::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<JAUSoundTable>::getInstance()->getTypeID(param_1) & 0xf0) {
case 0x70:
int chShift;
u32 uVar1;
u16 uVar1;
s32 iVar4;
u16 uVar3;
data = JASGlobalInstance<JAUSoundTable>::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<JAUSoundTable>::getInstance()->getTypeID(param_1) & 0xf0) {
case 0x70:
JAUSoundTableItem* data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
data = JASGlobalInstance<JAUSoundTable>::getInstance()->getData(param_1);
JUT_ASSERT(394, data);
const void* resource = JASGlobalInstance<JAUSoundTable>::getInstance()->getResource();
resource = JASGlobalInstance<JAUSoundTable>::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
}
+6 -195
View File
@@ -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<JAISe>* 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<Z2SoundMgr>(this),
mSeMgr(true),
@@ -243,37 +108,6 @@ Z2SoundMgr::Z2SoundMgr() :
{
mSoundID.setAnonymous();
}
#else
Z2SoundMgr::Z2SoundMgr() : JASGlobalInstance<Z2SoundMgr>(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<f> */
@@ -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<JAISe>* 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<JAISe>* 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 */
/* 8039B9D0-8039B9D0 028030 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+89 -128
View File
@@ -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<T>
Z2SoundObjMgr::Z2SoundObjMgr() : JASGlobalInstance<Z2SoundObjMgr>(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<Z2CreatureEnemy>* 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<Z2CreatureEnemy>* 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
File diff suppressed because it is too large Load Diff
+6 -7
View File
@@ -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 */
/* 8039BC88-8039BC88 0282E8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+39 -43
View File
@@ -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();
}
}
+2 -2
View File
@@ -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;
}
+2 -2
View File
@@ -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:
+1 -1
View File
@@ -61,4 +61,4 @@ void fapGm_Create() {
g_HIO.field_0x04 = -1;
}
fapGm_HIO_c::~fapGm_HIO_c() {}
fapGm_HIO_c::~fapGm_HIO_c() {}