Merge pull request #537 from Jcw87/JAudio

JAudio
This commit is contained in:
Jasper St. Pierre
2023-11-01 21:40:56 -07:00
committed by GitHub
44 changed files with 1587 additions and 321 deletions
+6 -6
View File
@@ -664,21 +664,21 @@ config.libs = [
Object(Matching, "JSystem/JAudio/JASSystemHeap.cpp"),
Object(NonMatching, "JSystem/JAudio/JASNoteMgr.cpp"),
Object(NonMatching, "JSystem/JAudio/JASOuterParam.cpp"),
Object(NonMatching, "JSystem/JAudio/JASPlayer_impl.cpp"),
Object(NonMatching, "JSystem/JAudio/JASRegisterParam.cpp"),
Object(Matching, "JSystem/JAudio/JASPlayer_impl.cpp"),
Object(Matching, "JSystem/JAudio/JASRegisterParam.cpp"),
Object(NonMatching, "JSystem/JAudio/JASSeqCtrl.cpp"),
Object(NonMatching, "JSystem/JAudio/JASSeqParser.cpp"),
Object(NonMatching, "JSystem/JAudio/JASTrack.cpp"),
Object(Matching, "JSystem/JAudio/JASTrackInterrupt.cpp"),
Object(Matching, "JSystem/JAudio/JASTrackPort.cpp"),
Object(Matching, "JSystem/JAudio/JASBank.cpp"),
Object(NonMatching, "JSystem/JAudio/JASWaveBank.cpp"),
Object(NonMatching, "JSystem/JAudio/JASBasicBank.cpp"),
Object(Matching, "JSystem/JAudio/JASWaveBank.cpp"),
Object(Matching, "JSystem/JAudio/JASBasicBank.cpp"),
Object(NonMatching, "JSystem/JAudio/JASBasicInst.cpp"),
Object(NonMatching, "JSystem/JAudio/JASDrumSet.cpp"),
Object(NonMatching, "JSystem/JAudio/JASBasicWaveBank.cpp"),
Object(NonMatching, "JSystem/JAudio/JASSimpleWaveBank.cpp"),
Object(NonMatching, "JSystem/JAudio/JASInstEffect.cpp"),
Object(Matching, "JSystem/JAudio/JASSimpleWaveBank.cpp"),
Object(Matching, "JSystem/JAudio/JASInstEffect.cpp"),
Object(NonMatching, "JSystem/JAudio/JASInstSense.cpp"),
Object(NonMatching, "JSystem/JAudio/JASInstRand.cpp"),
Object(NonMatching, "JSystem/JAudio/JASWSParser.cpp"),
+25
View File
@@ -0,0 +1,25 @@
#ifndef JASBNKPARSER_H
#define JASBNKPARSER_H
#include "dolphin/types.h"
namespace JASystem {
class TBasicBank;
namespace BNKParser {
struct THeader;
struct TInst;
struct TKeymap;
struct TOsc;
struct TPerc;
struct TPmap;
struct TRand;
struct TSense;
struct TVmap;
TBasicBank* createBasicBank(void*);
void findOscPtr(JASystem::TBasicBank*, JASystem::BNKParser::THeader*, JASystem::BNKParser::TOsc*);
void getOscTableEndPtr(short*);
};
}
#endif /* JASBNKPARSER_H */
+15 -3
View File
@@ -6,10 +6,22 @@
class JKRHeap;
namespace JASystem {
namespace TBank {
JKRHeap* getCurrentHeap();
class TInst;
class TWaveBank;
class TBank {
public:
TBank() {
field_0x4 = 0;
}
virtual ~TBank() {}
virtual TInst* getInst(int) const = 0;
virtual u32 getType() const = 0;
extern JKRHeap* sCurrentHeap;
static JKRHeap* getCurrentHeap();
static JKRHeap* sCurrentHeap;
/* 0x04 */ TWaveBank* field_0x4;
};
}
+32
View File
@@ -0,0 +1,32 @@
#ifndef JASBANKMGR_H
#define JASBANKMGR_H
#include "JSystem/JAudio/JASOscillator.h"
namespace JASystem {
class TBank;
class TChannel;
class TChannelMgr;
namespace BankMgr {
void init(int);
bool registBank(int, TBank*);
bool registBankBNK(int, void*);
TBank* getBank(int);
u16 getPhysicalNumber(u16);
void setVir2PhyTable(u32, int);
bool assignWaveBank(int, int);
float clamp01(float);
TChannel* noteOn(TChannelMgr*, int, int, u8, u8, u32);
TChannel* noteOnOsc(TChannelMgr*, int, u8, u8, u32);
void gateOn(TChannel*, u8, u8, u32);
extern s32 sTableSize;
extern TBank** sBankArray;
extern u16* sVir2PhyTable;
extern TOscillator::Osc_ OSC_ENV;
}
}
#endif /* JASBANKMGR_H */
+21
View File
@@ -0,0 +1,21 @@
#ifndef JASBASICBANK_H
#define JASBASICBANK_H
#include "JSystem/JAudio/JASBank.h"
namespace JASystem {
class TBasicBank : public TBank {
public:
TBasicBank();
~TBasicBank();
void setInstCount(u32);
void setInst(int, JASystem::TInst*);
TInst* getInst(int) const;
u32 getType() const { return 'BSIC'; }
/* 0x08 */ TInst** mInstTable;
/* 0x0C */ u32 mInstCount;
};
}
#endif /* JASBASICBANK_H */
+51
View File
@@ -0,0 +1,51 @@
#ifndef JASBASICINST_H
#define JASBASICINST_H
#include "JSystem/JAudio/JASInst.h"
#include "JSystem/JAudio/JASOscillator.h"
namespace JASystem {
class TInstEffect;
class TBasicInst : public TInst {
public:
class TKeymap {
public:
TKeymap() {
field_0x0 = -1;
field_0x4 = 0;
mVelomap = NULL;
}
~TKeymap();
void setVeloRegionCount(u32);
void* getVeloRegion(int);
const void* getVeloRegion(int) const;
/* 0x00 */ int field_0x0;
/* 0x04 */ u32 field_0x4;
/* 0x08 */ void* mVelomap;
};
TBasicInst();
~TBasicInst();
bool getParam(int, int, TInstParam*) const;
int getKeymapIndex(int) const;
void setKeyRegionCount(u32);
void setEffectCount(u32);
void setEffect(int, TInstEffect*);
void setOscCount(u32);
void setOsc(int, TOscillator::Osc_*);
TKeymap* getKeyRegion(int);
u32 getType() const { return 'BSIC'; }
/* 0x04 */ f32 field_0x4;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ TInstEffect** mEffect;
/* 0x10 */ u32 mEffectCount;
/* 0x14 */ TOscillator::Osc_** mOsc;
/* 0x18 */ u32 mOscCount;
/* 0x1C */ u32 field_0x1c;
/* 0x20 */ TKeymap* mKeymap;
};
}
#endif /* JASBASICINST_H */
+79
View File
@@ -0,0 +1,79 @@
#ifndef JASBASICWAVEBANK_H
#define JASBASICWAVEBANK_H
#include "JSystem/JAudio/JASWaveArcLoader.h"
#include "JSystem/JAudio/JASWaveBank.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "dolphin/os/OSMutex.h"
namespace JASystem {
class TBasicWaveBank : public TWaveBank {
public:
class TWaveHandle : public JASystem::TWaveHandle {
public:
~TWaveHandle() {}
const JASystem::TWaveInfo* getWaveInfo() const {
return &field_0x4;
}
const void* getWavePtr() const {
JUT_ASSERT(77, mHeap);
if (!mHeap->mBase) {
return NULL;
}
return (u8*)mHeap->mBase + field_0x4.field_0x8;
}
/* 0x04 */ JASystem::TWaveInfo field_0x4;
/* 0x30 */ Kernel::THeap* mHeap;
};
class TWaveInfo {
public:
TWaveInfo() {
field_0x0.mHeap = NULL;
field_0x34 = 0;
field_0x38 = NULL;
field_0x3c = NULL;
}
~TWaveInfo();
/* 0x00 */ TWaveHandle field_0x0;
/* 0x34 */ u32 field_0x34;
/* 0x38 */ TWaveInfo* field_0x38;
/* 0x3C */ TWaveInfo* field_0x3c;
};
class TWaveGroup : public TWaveArc {
public:
TWaveGroup(TBasicWaveBank*);
~TWaveGroup();
void setWaveCount(u32);
void setWaveInfo(int, u32, const JASystem::TWaveInfo&);
void onLoadDone();
void onEraseDone();
u32 getWaveID(int) const;
/* 0x78 */ TBasicWaveBank* mBank;
/* 0x7C */ TWaveInfo* mCtrlWaveArray;
/* 0x80 */ u32 mWaveCount;
};
TBasicWaveBank();
~TBasicWaveBank();
TWaveGroup* getWaveGroup(int);
void setGroupCount(u32);
void setWaveTableSize(u32);
void incWaveTable(const TWaveGroup*);
void decWaveTable(const TWaveGroup*);
JASystem::TWaveHandle* getWaveHandle(u32) const;
TWaveArc* getWaveArc(int param_1) { return getWaveGroup(param_1); }
/* 0x04 */ OSMutex mMutex;
/* 0x1C */ TWaveInfo** mWaveTable;
/* 0x20 */ int mWaveCount;
/* 0x24 */ TWaveGroup** mWaveGroupArray;
/* 0x28 */ u32 mWaveGroupCount;
};
}
#endif /* JASBASICWAVEBANK_H */
+2 -2
View File
@@ -37,7 +37,7 @@ namespace JASystem {
void setPauseFlagReq(u8);
void setPanPower(f32, f32, f32, f32);
BOOL checkLogicalChannel();
bool play(u32);
BOOL play(u32);
void stop(u16);
void updateJcToDSP();
bool forceStopLogicalChannel();
@@ -75,7 +75,7 @@ namespace JASystem {
/* 0x48 */ u32 field_0x48;
/* 0x4C */ short field_0x4c;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ int field_0x54;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ u8 field_0x60[3];
+1 -4
View File
@@ -127,10 +127,7 @@ namespace JASystem {
extern u16 JAS_DSP_PREFIX;
extern DSPBuffer* CH_BUF;
extern FXBuffer* FX_BUF;
extern float sDSPVolume;
extern u32 DSPADPCM_FILTER[];
extern u32 DSPRES_FILTER[];
extern f32 sDSPVolume;
};
}
-2
View File
@@ -23,8 +23,6 @@ namespace JASystem {
extern u16 MAX_AUTOMIXERLEVEL;
extern u32 JAS_SYSTEM_OUTPUT_MODE;
extern u8 JAS_UPDATE_INTERVAL;
extern int C5BASE_PITCHTABLE;
};
}
+16
View File
@@ -0,0 +1,16 @@
#ifndef JASDRIVERTABLES_H
#define JASDRIVERTABLES_H
#include "dolphin/types.h"
namespace JASystem {
namespace Driver {
extern f32 C5BASE_PITCHTABLE[];
}
namespace DSPInterface {
extern u16 DSPADPCM_FILTER[];
extern u16 DSPRES_FILTER[];
}
}
#endif /* JASDRIVERTABLES_H */
+2 -2
View File
@@ -19,7 +19,7 @@ public:
OSInitThreadQueue(&field_0x68);
}
~JASTaskThread();
bool sendCmdMsg(s32 (*)(void*), void*, u32);
BOOL sendCmdMsg(s32 (*)(void*), void*, u32);
void* run();
void pause(bool);
@@ -31,7 +31,7 @@ namespace JASystem {
namespace Dvd {
bool createThread(int, int, u32);
void resumeThread();
void sendCmdMsg(s32 (*)(void*), void*, u32);
BOOL sendCmdMsg(s32 (*)(void*), void*, u32);
int checkPassDvdT(u32, u32*, void (*)(u32));
u32 checkFile(char*);
void unpauseDvdT();
+3 -2
View File
@@ -19,6 +19,7 @@ namespace JASystem {
};
THeap(TDisposer*);
~THeap() {}
void initRootHeap(void*, u32, Type);
bool alloc(THeap*, u32);
bool free();
@@ -42,9 +43,9 @@ namespace JASystem {
public:
TSolidHeap();
~TSolidHeap() {}
int alloc(long param_1);
void* alloc(s32 param_1);
void freeAll();
void init(u8* param_1, long param_2);
void init(u8* param_1, s32 param_2);
int getRemain();
/* 0x00 */ u32 field_0x0;
+36
View File
@@ -0,0 +1,36 @@
#ifndef JASINST_H
#define JASINST_H
#include "JSystem/JAudio/JASOscillator.h"
#include "dolphin/types.h"
namespace JASystem {
struct TInstParam {
/* 0x00 */ u8 field_0x0;
/* 0x04 */ int field_0x4;
/* 0x08 */ TOscillator::Osc_** field_0x8;
/* 0x0C */ int field_0xc;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ u8 field_0x24[0x2C - 0x24];
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ u8 field_0x38;
/* 0x3A */ short field_0x3a;
/* 0x3C */ int field_0x3c;
};
class TInst {
public:
TInst() {}
virtual ~TInst() {}
virtual bool getParam(int, int, TInstParam*) const = 0;
virtual u32 getType() const = 0;
virtual int getKeymapIndex(int) const = 0;
};
}
#endif /* JASINST_H */
+17
View File
@@ -0,0 +1,17 @@
#ifndef JASINSTEFFECT_H
#define JASINSTEFFECT_H
#include "dolphin/types.h"
namespace JASystem {
class TInstEffect {
public:
TInstEffect() { mTarget = 0; }
virtual f32 getY(int, int) const = 0;
void setTarget(int);
/* 0x04 */ u8 mTarget;
};
}
#endif /* JASINSTEFFECT_H */
+2 -2
View File
@@ -9,8 +9,8 @@ namespace JASystem {
struct Osc_ {
/* 0x00 */ u8 field_0x0;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ u32 table;
/* 0x0C */ int rel_table;
/* 0x08 */ void* table;
/* 0x0C */ void* rel_table;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
};
+26
View File
@@ -0,0 +1,26 @@
#ifndef JASPLAYER_H
#define JASPLAYER_H
#include "JSystem/JAudio/JASOscillator.h"
#include "dolphin/types.h"
namespace JASystem {
namespace Player {
s16 extend8to16(u8 param_1);
f32 pitchToCent(f32 param_1, f32 param_2);
s32 getRandomS32();
extern const f32 s_key_table[];
extern const TOscillator::Osc_ sAdsrDef;
extern const TOscillator::Osc_ sEnvelopeDef;
extern const TOscillator::Osc_ sVibratoDef;
extern const TOscillator::Osc_ sTremoroDef;
extern s16 CUTOFF_TO_IIR_TABLE[];
extern s16 sAdsTable[];
extern s16 sRelTable[];
extern s16 sVibTable[];
extern s16 sTreTable[];
}
}
#endif /* JASPLAYER_H */
+33
View File
@@ -0,0 +1,33 @@
#ifndef JASREGISTERPARAM_H
#define JASREGISTERPARAM_H
#include "dolphin/types.h"
namespace JASystem {
class TRegisterParam {
public:
TRegisterParam();
void init();
void inherit(const TRegisterParam&);
u8 getBankNumber() const;
u8 getProgramNumber() const;
/* 0x00 */ short field_0x0;
/* 0x02 */ short field_0x2;
/* 0x04 */ short field_0x4;
/* 0x06 */ short field_0x6;
/* 0x08 */ short field_0x8;
/* 0x0A */ short field_0xa;
/* 0x0C */ u16 field_0xc;
/* 0x0E */ u16 field_0xe;
/* 0x10 */ u16 field_0x10[5];
/* 0x1A */ u16 field_0x1a;
/* 0x1C */ int field_0x1c;
/* 0x20 */ int field_0x20;
/* 0x24 */ int field_0x24;
/* 0x28 */ int field_0x28;
/* 0x2C */ int field_0x2c;
};
}
#endif /* JASREGISTERPARAM_H */
+34
View File
@@ -0,0 +1,34 @@
#ifndef JASSEQCTRL_H
#define JASSEQCTRL_H
#include "dolphin/types.h"
namespace JASystem {
class TTrack;
class TSeqCtrl {
public:
void init();
void start(void*, u32);
int loopEnd();
bool waitCountDown();
bool callIntr(void*);
bool retIntr();
u32 get16(u32) const;
u32 get24(u32) const;
u32 get32(u32) const;
u32 read16();
u32 read24();
/* 0x00 */ u8* field_0x0;
/* 0x04 */ u8* field_0x4;
/* 0x08 */ int field_0x8;
/* 0x0C */ u32 field_0xc;
/* 0x10 */ u8* field_0x10[8];
/* 0x30 */ u16 field_0x30[8];
/* 0x40 */ int field_0x40;
/* 0x44 */ u8* field_0x44;
};
}
#endif /* JASSEQCTRL_H */
@@ -0,0 +1,39 @@
#ifndef JASSIMPLEWAVEBANK_H
#define JASSIMPLEWAVEBANK_H
#include "JSystem/JAudio/JASWaveArcLoader.h"
#include "JSystem/JAudio/JASWaveBank.h"
#include "dolphin/types.h"
namespace JASystem {
class TSimpleWaveBank : public TWaveBank, TWaveArc {
public:
class TWaveHandle : public JASystem::TWaveHandle {
public:
TWaveHandle() { mHeap = NULL; }
~TWaveHandle();
const TWaveInfo* getWaveInfo() const { return &field_0x4; };
const void* getWavePtr() const {
if (mHeap->mBase == NULL) {
return NULL;
}
return (u8*)mHeap->mBase + field_0x4.field_0x8;
}
/* 0x04 */ TWaveInfo field_0x4;
/* 0x30 */ Kernel::THeap* mHeap;
};
TSimpleWaveBank();
~TSimpleWaveBank();
void setWaveTableSize(u32);
TWaveHandle* getWaveHandle(u32) const;
void setWaveInfo(u32, const JASystem::TWaveInfo&);
TWaveArc* getWaveArc(int);
/* 0x7C */ TWaveHandle* mWaveTable;
/* 0x80 */ u32 mWaveCount;
};
}
#endif /* JASSIMPLEWAVEBANK_H */
+1 -1
View File
@@ -14,7 +14,7 @@ namespace JASystem {
void sysDramSetup(JKRSolidHeap*);
void* allocFromSysDram(u32);
void sysAramSetup(u32);
void allocFromSysAramFull(u32*);
void* allocFromSysAramFull(u32*);
extern TSolidHeap audioAramHeap;
extern u32 audioDramSize;
+24
View File
@@ -0,0 +1,24 @@
#ifndef JASWSPARSER_H
#define JASWSPARSER_H
#include "dolphin/types.h"
namespace JASystem {
class TBasicWaveBank;
class TSimpleWaveBank;
namespace WSParser {
struct TCtrl;
struct TCtrlGroup;
struct TCtrlScene;
struct TCtrlWave;
struct TWave;
struct TWaveArchive;
struct TWaveArchiveBank;
u32 getGroupCount(void*);
TBasicWaveBank* createBasicWaveBank(void*);
TSimpleWaveBank* createSimpleWaveBank(void*);
}
}
#endif /* JASWSPARSER_H */
+43
View File
@@ -0,0 +1,43 @@
#ifndef JASWAVEARCLOADER_H
#define JASWAVEARCLOADER_H
#include "JSystem/JAudio/JASHeapCtrl.h"
#include "dolphin/os/OSMutex.h"
namespace JASystem {
namespace WaveArcLoader {
bool init();
Kernel::THeap* getRootHeap();
void setCurrentDir(const char*);
char* getCurrentDir();
extern Kernel::THeap sAramHeap;
extern char sCurrentDir[];
};
class TWaveArc : public Kernel::TDisposer {
public:
TWaveArc();
virtual void onLoadDone() {}
virtual void onEraseDone() {}
bool loadSetup(u32);
bool eraseSetup();
static s32 loadToAramCallback(void*);
bool sendLoadCmd();
bool load(Kernel::THeap*);
bool erase();
void onDispose();
void setEntryNum(s32);
void setFileName(const char*);
/* 0x04 */ Kernel::THeap field_0x4;
/* 0x4C */ int field_0x4c;
/* 0x50 */ OSMutex mMutex;
/* 0x68 */ int field_0x68;
/* 0x6C */ int field_0x6c;
/* 0x70 */ int field_0x70;
/* 0x74 */ int field_0x74;
};
}
#endif /* JASWAVEARCLOADER_H */
+47
View File
@@ -0,0 +1,47 @@
#ifndef JASWAVEBANK_H
#define JASWAVEBANK_H
#include "dolphin/types.h"
class JKRHeap;
namespace JASystem {
class TWaveArc;
struct TWaveInfo {
/* 0x00 */ u8 field_0x0;
/* 0x01 */ u8 field_0x1;
/* 0x02 */ u8 field_0x2;
/* 0x04 */ f32 field_0x4;
/* 0x08 */ int field_0x8;
/* 0x0C */ int field_0xc;
/* 0x10 */ int field_0x10;
/* 0x14 */ int field_0x14;
/* 0x18 */ int field_0x18;
/* 0x1C */ int field_0x1c;
/* 0x20 */ s16 field_0x20;
/* 0x22 */ s16 field_0x22;
/* 0x24 */ void* field_0x24;
/* 0x28 */ int field_0x28;
};
class TWaveHandle {
public:
virtual ~TWaveHandle() {}
virtual const TWaveInfo* getWaveInfo() const = 0;
virtual const void* getWavePtr() const = 0;
};
class TWaveBank {
public:
TWaveBank() {}
virtual ~TWaveBank() {}
virtual TWaveHandle* getWaveHandle(u32) const = 0;
virtual TWaveArc* getWaveArc(int) = 0;
static JKRHeap* getCurrentHeap();
static JKRHeap* sCurrentHeap;
};
}
#endif /* JASWAVEBANK_H */
+26
View File
@@ -0,0 +1,26 @@
#ifndef JASWAVEBANKMGR_H
#define JASWAVEBANKMGR_H
#include "dolphin/types.h"
namespace JASystem {
class TWaveArc;
class TWaveBank;
namespace Kernel {
class THeap;
}
namespace WaveBankMgr {
void init(int);
TWaveBank* getWaveBank(int);
bool registWaveBank(int, TWaveBank*);
bool registWaveBankWS(int, void*);
TWaveArc* getWaveArc(int, int);
bool loadWave(int, int, Kernel::THeap*);
bool eraseWave(int, int);
extern int sTableSize;
extern TWaveBank** sWaveBank;
}
}
#endif /* JASWAVEBANKMGR_H */
+4 -4
View File
@@ -31,11 +31,11 @@ public:
protected:
void resume() { OSResumeThread(mThreadRecord); }
void sendMessage(OSMessage message) {
OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK);
BOOL sendMessage(OSMessage message) {
return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_NOBLOCK);
}
void sendMessageBlock(OSMessage message) {
OSSendMessage(&mMessageQueue, message, OS_MESSAGE_BLOCK);
BOOL sendMessageBlock(OSMessage message) {
return OSSendMessage(&mMessageQueue, message, OS_MESSAGE_BLOCK);
}
OSMessage waitMessage() {
OSMessage message;
+115 -22
View File
@@ -3,61 +3,154 @@
// Translation Unit: JASBankMgr.cpp
//
#include "JASBankMgr.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASBankMgr.h"
#include "JSystem/JAudio/JASBNKParser.h"
#include "JSystem/JAudio/JASBasicBank.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JAudio/JASChannel.h"
#include "JSystem/JAudio/JASChannelMgr.h"
#include "JSystem/JAudio/JASDriverTables.h"
#include "JSystem/JAudio/JASRate.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JAudio/JASWaveBankMgr.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
s32 JASystem::BankMgr::sTableSize;
JASystem::TBank** JASystem::BankMgr::sBankArray;
u16* JASystem::BankMgr::sVir2PhyTable;
/* 80288594-80288698 .text init__Q28JASystem7BankMgrFi */
void JASystem::BankMgr::init(int) {
/* Nonmatching */
void JASystem::BankMgr::init(int param_1) {
u32 r31 = param_1 * 4;
sBankArray = (TBank**)new (JASDram, 0) u8[r31];
JUT_ASSERT(69, sBankArray != 0);
sVir2PhyTable = new (JASDram, 0) u16[param_1];
JUT_ASSERT(72, sVir2PhyTable != 0);
Calc::bzero(sBankArray, r31);
for (int i = 0; i < param_1; i++) {
sVir2PhyTable[i] = 0xffffffff;
}
sTableSize = param_1;
}
/* 80288698-8028874C .text registBank__Q28JASystem7BankMgrFiPQ28JASystem5TBank */
void JASystem::BankMgr::registBank(int, JASystem::TBank*) {
/* Nonmatching */
bool JASystem::BankMgr::registBank(int banknum, TBank* bank) {
JUT_ASSERT(86, banknum >= 0);
JUT_ASSERT(87, banknum < sTableSize);
sBankArray[banknum] = bank;
return true;
}
/* 8028874C-802887AC .text registBankBNK__Q28JASystem7BankMgrFiPv */
void JASystem::BankMgr::registBankBNK(int, void*) {
/* Nonmatching */
bool JASystem::BankMgr::registBankBNK(int banknum, void* param_2) {
setVir2PhyTable(*((u32*)(param_2) + 2), banknum);
TBasicBank* bank = BNKParser::createBasicBank(param_2);
if (bank == NULL) {
return false;
}
return registBank(banknum, bank);
}
/* 802887AC-802887E0 .text getBank__Q28JASystem7BankMgrFi */
void JASystem::BankMgr::getBank(int) {
/* Nonmatching */
JASystem::TBank* JASystem::BankMgr::getBank(int param_1) {
if (param_1 < 0) {
return NULL;
}
if (param_1 >= sTableSize) {
return NULL;
}
return sBankArray[param_1];
}
/* 802887E0-802887F0 .text getPhysicalNumber__Q28JASystem7BankMgrFUs */
void JASystem::BankMgr::getPhysicalNumber(unsigned short) {
/* Nonmatching */
u16 JASystem::BankMgr::getPhysicalNumber(u16 param_1) {
return sVir2PhyTable[param_1];
}
/* 802887F0-802888A0 .text setVir2PhyTable__Q28JASystem7BankMgrFUli */
void JASystem::BankMgr::setVir2PhyTable(unsigned long, int) {
/* Nonmatching */
void JASystem::BankMgr::setVir2PhyTable(u32 vir_id, int banknum) {
if (vir_id == 0xFFFF) {
return;
}
JUT_ASSERT(127, vir_id < sTableSize);
if (sVir2PhyTable[vir_id] != 0xFFFF) {
OSReport("Warning : Duplicated Bank vir_id ID %d (%d,%d)\n", vir_id, sVir2PhyTable[vir_id], banknum);
}
sVir2PhyTable[vir_id] = banknum;
}
/* 802888A0-80288904 .text assignWaveBank__Q28JASystem7BankMgrFii */
void JASystem::BankMgr::assignWaveBank(int, int) {
/* Nonmatching */
bool JASystem::BankMgr::assignWaveBank(int param_1, int param_2) {
TBank* bank = getBank(param_1);
if (!bank) {
return false;
}
TWaveBank* waveBank = WaveBankMgr::getWaveBank(param_2);
if (!waveBank) {
return false;
}
bank->field_0x4 = waveBank;
return true;
}
/* 80288904-8028892C .text clamp01__Q28JASystem7BankMgrFf */
void JASystem::BankMgr::clamp01(float) {
/* Nonmatching */
f32 JASystem::BankMgr::clamp01(f32 param_1) {
if (param_1 < 0.0f) {
return 0.0f;
}
if (param_1 > 1.0f) {
return 1.0f;
}
return param_1;
}
/* 8028892C-80288CE8 .text noteOn__Q28JASystem7BankMgrFPQ28JASystem11TChannelMgriiUcUcUl */
void JASystem::BankMgr::noteOn(JASystem::TChannelMgr*, int, int, unsigned char, unsigned char, unsigned long) {
JASystem::TChannel* JASystem::BankMgr::noteOn(TChannelMgr*, int, int, u8, u8, u32) {
/* Nonmatching */
}
/* 80288CE8-80288E44 .text noteOnOsc__Q28JASystem7BankMgrFPQ28JASystem11TChannelMgriUcUcUl */
void JASystem::BankMgr::noteOnOsc(JASystem::TChannelMgr*, int, unsigned char, unsigned char, unsigned long) {
JASystem::TChannel* JASystem::BankMgr::noteOnOsc(TChannelMgr* param_1, int param_2, u8 param_3, u8 param_4, u32 param_5) {
/* Nonmatching */
TChannel* channel = param_1->getLogicalChannel(0);
if (!channel) {
return NULL;
}
channel->field_0x14 = param_2;
channel->field_0xc = 2;
channel->field_0x0 = param_4;
channel->field_0x1 = param_3;
channel->field_0x50 = 16736.016f / Kernel::gDacRate;
channel->field_0x58 = channel->field_0x50;
s32 var1 = param_3;
if (var1 < 0) {
var1 = 0;
}
if (var1 > 127) {
var1 = 127;
}
channel->field_0x58 *= Driver::C5BASE_PITCHTABLE[var1];
channel->field_0x54 = 1.0f;
channel->field_0x5c = channel->field_0x0 / 127.0f;
channel->field_0x5c = channel->field_0x54 * (channel->field_0x5c * channel->field_0x5c);
channel->field_0x70.field_0x0 = 0.5f;
channel->field_0x7c.field_0x0 = 0.0f;
channel->field_0x88.field_0x0 = 0.0f;
channel->field_0x70.field_0x4 = 0.5f;
channel->field_0x7c.field_0x4 = 0.0f;
channel->field_0x88.field_0x4 = 0.0f;
channel->field_0x94 = 1.0f;
channel->field_0x98 = 1.0f;
channel->setOscInit(0, &OSC_ENV);
channel->field_0xcc = 0;
if (!channel->play(param_5)) {
return NULL;
}
return channel;
}
/* 80288E44-80288F08 .text gateOn__Q28JASystem7BankMgrFPQ28JASystem8TChannelUcUcUl */
void JASystem::BankMgr::gateOn(JASystem::TChannel*, unsigned char, unsigned char, unsigned long) {
void JASystem::BankMgr::gateOn(JASystem::TChannel*, u8, u8, u32) {
/* Nonmatching */
}
+23 -21
View File
@@ -3,41 +3,43 @@
// Translation Unit: JASBasicBank.cpp
//
#include "JASBasicBank.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASBasicBank.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
/* 80284570-8028459C .text __ct__Q28JASystem10TBasicBankFv */
JASystem::TBasicBank::TBasicBank() {
/* Nonmatching */
mInstTable = NULL;
mInstCount = 0;
}
/* 8028459C-80284610 .text __dt__Q28JASystem10TBasicBankFv */
JASystem::TBasicBank::~TBasicBank() {
/* Nonmatching */
delete[] mInstTable;
}
/* 80284610-802846B0 .text setInstCount__Q28JASystem10TBasicBankFUl */
void JASystem::TBasicBank::setInstCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicBank::setInstCount(u32 param_1) {
delete[] mInstTable;
mInstTable = new (getCurrentHeap(), 0) TInst*[param_1];
JUT_ASSERT(36, mInstTable != 0);
Calc::bzero(mInstTable, param_1 * 4);
mInstCount = param_1;
}
/* 802846B0-80284768 .text setInst__Q28JASystem10TBasicBankFiPQ28JASystem5TInst */
void JASystem::TBasicBank::setInst(int, JASystem::TInst*) {
/* Nonmatching */
void JASystem::TBasicBank::setInst(int prg_no, JASystem::TInst* param_2) {
JUT_ASSERT(45, prg_no < mInstCount);
JUT_ASSERT(46, prg_no >= 0);
mInstTable[prg_no] = param_2;
}
/* 80284768-802847F0 .text getInst__Q28JASystem10TBasicBankCFi */
void JASystem::TBasicBank::getInst(int) const {
/* Nonmatching */
JASystem::TInst* JASystem::TBasicBank::getInst(int prg_no) const {
JUT_ASSERT(53, prg_no >= 0);
if (prg_no >= mInstCount) {
return 0;
}
return mInstTable[prg_no];
}
/* 802847F0-80284838 .text __dt__Q28JASystem5TBankFv */
JASystem::TBank::~TBank() {
/* Nonmatching */
}
/* 80284838-80284844 .text getType__Q28JASystem10TBasicBankCFv */
void JASystem::TBasicBank::getType() const {
/* Nonmatching */
}
+125 -42
View File
@@ -3,91 +3,174 @@
// Translation Unit: JASBasicInst.cpp
//
#include "JASBasicInst.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASBasicInst.h"
#include "JSystem/JAudio/JASBank.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JAudio/JASInstEffect.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
/* 80284844-80284888 .text __ct__Q28JASystem10TBasicInstFv */
JASystem::TBasicInst::TBasicInst() {
/* Nonmatching */
field_0x4 = 1.0f;
field_0x8 = 1.0f;
mEffect = NULL;
mEffectCount = 0;
mOsc = NULL;
mOscCount = 0;
field_0x1c = 0;
mKeymap = NULL;
}
/* 80284888-80284914 .text __dt__Q28JASystem10TBasicInstFv */
JASystem::TBasicInst::~TBasicInst() {
/* Nonmatching */
delete[] mKeymap;
delete[] mEffect;
delete[] mOsc;
}
/* 80284914-80284B4C .text getParam__Q28JASystem10TBasicInstCFiiPQ28JASystem10TInstParam */
void JASystem::TBasicInst::getParam(int, int, JASystem::TInstParam*) const {
bool JASystem::TBasicInst::getParam(int param_1, int param_2, TInstParam* param_3) const {
/* Nonmatching */
param_3->field_0x0 = 0;
param_3->field_0x38 = 0;
param_3->field_0x8 = mOsc;
param_3->field_0xc = mOscCount;
param_3->field_0x10 *= field_0x4;
param_3->field_0x14 *= field_0x8;
for (int i = 0; i < mEffectCount; i++) {
TInstEffect* effect = mEffect[i];
if (!effect) {
continue;
}
f32 y = effect->getY(param_1, param_2);
switch (effect->mTarget) {
case 0:
param_3->field_0x18 *= y;
break;
case 1:
param_3->field_0x1c *= y;
break;
case 2:
param_3->field_0x2c += y - 0.5;
break;
case 3:
param_3->field_0x30 += y;
break;
case 4:
param_3->field_0x34 += y;
break;
default:
JUT_ASSERT(93, 0);
}
}
TKeymap* keymap = NULL;
for (int i = 0; i < field_0x1c; i++) {
keymap = &mKeymap[i];
if (param_1 <= keymap->field_0x0) {
param_3->field_0x3c = i;
break;
}
}
if (!keymap) {
return false;
}
for (int i = 0; i < keymap->field_0x4; i++) {
void* region = keymap->getVeloRegion(i);
// TODO
}
return false;
}
/* 80284B4C-80284B54 .text getKeymapIndex__Q28JASystem10TBasicInstCFi */
void JASystem::TBasicInst::getKeymapIndex(int) const {
/* Nonmatching */
int JASystem::TBasicInst::getKeymapIndex(int param_1) const {
return param_1;
}
/* 80284B54-80284C10 .text setKeyRegionCount__Q28JASystem10TBasicInstFUl */
void JASystem::TBasicInst::setKeyRegionCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicInst::setKeyRegionCount(u32 param_1) {
delete[] mKeymap;
mKeymap = new (TBank::getCurrentHeap(), 0) TKeymap[param_1];
JUT_ASSERT(140, mKeymap != 0);
field_0x1c = param_1;
}
/* 80284C10-80284CC4 .text setEffectCount__Q28JASystem10TBasicInstFUl */
void JASystem::TBasicInst::setEffectCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicInst::setEffectCount(u32 param_1) {
delete[] mEffect;
mEffectCount = param_1;
if (param_1 == 0) {
mEffect = NULL;
return;
}
mEffect = new (TBank::getCurrentHeap(), 0) TInstEffect*[param_1];
JUT_ASSERT(157, mEffect != 0);
Calc::bzero(mEffect, param_1 * 4);
}
/* 80284CC4-80284D7C .text setEffect__Q28JASystem10TBasicInstFiPQ28JASystem11TInstEffect */
void JASystem::TBasicInst::setEffect(int, JASystem::TInstEffect*) {
/* Nonmatching */
void JASystem::TBasicInst::setEffect(int index, TInstEffect* effect) {
JUT_ASSERT(164, index < mEffectCount);
JUT_ASSERT(165, index >= 0);
mEffect[index] = effect;
}
/* 80284D7C-80284E30 .text setOscCount__Q28JASystem10TBasicInstFUl */
void JASystem::TBasicInst::setOscCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicInst::setOscCount(u32 param_1) {
delete[] mOsc;
mOscCount = param_1;
if (param_1 == 0) {
mOsc = NULL;
return;
}
mOsc = new (TBank::getCurrentHeap(), 0) TOscillator::Osc_*[param_1];
JUT_ASSERT(193, mOsc != 0);
Calc::bzero(mOsc, param_1 * 4);
}
/* 80284E30-80284EE8 .text setOsc__Q28JASystem10TBasicInstFiPQ38JASystem11TOscillator4Osc_ */
void JASystem::TBasicInst::setOsc(int, JASystem::TOscillator::Osc_*) {
/* Nonmatching */
void JASystem::TBasicInst::setOsc(int index, TOscillator::Osc_* osc) {
JUT_ASSERT(199, index < mOscCount);
JUT_ASSERT(200, index >= 0);
mOsc[index] = osc;
}
/* 80284EE8-80284F70 .text getKeyRegion__Q28JASystem10TBasicInstFi */
void JASystem::TBasicInst::getKeyRegion(int) {
/* Nonmatching */
JASystem::TBasicInst::TKeymap* JASystem::TBasicInst::getKeyRegion(int index) {
JUT_ASSERT(217, index >= 0);
if (index >= field_0x1c) {
return NULL;
}
return &mKeymap[index];
}
/* 80284F70-80284FC4 .text __dt__Q38JASystem10TBasicInst7TKeymapFv */
JASystem::TBasicInst::TKeymap::~TKeymap() {
/* Nonmatching */
delete[] mVelomap;
}
/* 80284FC4-80285058 .text setVeloRegionCount__Q38JASystem10TBasicInst7TKeymapFUl */
void JASystem::TBasicInst::TKeymap::setVeloRegionCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicInst::TKeymap::setVeloRegionCount(u32 param_1) {
delete[] mVelomap;
mVelomap = new (TBank::getCurrentHeap(), 0) u8[param_1 * 16];
JUT_ASSERT(244, mVelomap != 0);
field_0x4 = param_1;
}
/* 80285058-802850E0 .text getVeloRegion__Q38JASystem10TBasicInst7TKeymapFi */
void JASystem::TBasicInst::TKeymap::getVeloRegion(int) {
/* Nonmatching */
void* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) {
JUT_ASSERT(252, index >= 0);
if (index >= field_0x4) {
return NULL;
}
return (u8*)mVelomap + index * 16;
}
/* 802850E0-80285168 .text getVeloRegion__Q38JASystem10TBasicInst7TKeymapCFi */
void JASystem::TBasicInst::TKeymap::getVeloRegion(int) const {
/* Nonmatching */
const void* JASystem::TBasicInst::TKeymap::getVeloRegion(int index) const {
JUT_ASSERT(261, index >= 0);
if (index >= field_0x4) {
return NULL;
}
return (u8*)mVelomap + index * 16;
}
/* 80285168-802851B0 .text __dt__Q28JASystem5TInstFv */
JASystem::TInst::~TInst() {
/* Nonmatching */
}
/* 802851B0-802851C8 .text __ct__Q38JASystem10TBasicInst7TKeymapFv */
JASystem::TBasicInst::TKeymap::TKeymap() {
/* Nonmatching */
}
/* 802851C8-802851D4 .text getType__Q28JASystem10TBasicInstCFv */
void JASystem::TBasicInst::getType() const {
/* Nonmatching */
}
+87 -64
View File
@@ -3,121 +3,144 @@
// Translation Unit: JASBasicWaveBank.cpp
//
#include "JASBasicWaveBank.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASBasicWaveBank.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
/* 80285968-802859C8 .text __ct__Q28JASystem14TBasicWaveBankFv */
JASystem::TBasicWaveBank::TBasicWaveBank() {
/* Nonmatching */
mWaveTable = NULL;
mWaveCount = 0;
mWaveGroupArray = NULL;
mWaveGroupCount = 0;
OSInitMutex(&mMutex);
}
/* 802859C8-80285A74 .text __dt__Q28JASystem14TBasicWaveBankFv */
JASystem::TBasicWaveBank::~TBasicWaveBank() {
/* Nonmatching */
delete[] mWaveTable;
for (int i = 0; i < mWaveGroupCount; i++) {
delete mWaveGroupArray[i];
}
delete[] mWaveGroupArray;
}
/* 80285A74-80285AFC .text getWaveGroup__Q28JASystem14TBasicWaveBankFi */
void JASystem::TBasicWaveBank::getWaveGroup(int) {
/* Nonmatching */
JASystem::TBasicWaveBank::TWaveGroup* JASystem::TBasicWaveBank::getWaveGroup(int group_no) {
JUT_ASSERT(41, group_no >= 0);
if (group_no >= mWaveGroupCount) {
return NULL;
}
return mWaveGroupArray[group_no];
}
/* 80285AFC-80285C10 .text setGroupCount__Q28JASystem14TBasicWaveBankFUl */
void JASystem::TBasicWaveBank::setGroupCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicWaveBank::setGroupCount(u32 param_1) {
for (int i = 0; i < mWaveGroupCount; i++) {
delete mWaveGroupArray[i];
}
delete[] mWaveGroupArray;
mWaveGroupCount = param_1;
mWaveGroupArray = new (getCurrentHeap(), 0) TWaveGroup*[param_1];
JUT_ASSERT(58, mWaveGroupArray != 0);
for (int i = 0; i < mWaveGroupCount; i++) {
mWaveGroupArray[i] = new (getCurrentHeap(), 0) TWaveGroup(this);
}
}
/* 80285C10-80285CB0 .text setWaveTableSize__Q28JASystem14TBasicWaveBankFUl */
void JASystem::TBasicWaveBank::setWaveTableSize(unsigned long) {
/* Nonmatching */
void JASystem::TBasicWaveBank::setWaveTableSize(u32 param_1) {
delete[] mWaveTable;
mWaveTable = new (getCurrentHeap(), 0) TWaveInfo*[param_1];
JUT_ASSERT(70, mWaveTable != 0);
Calc::bzero(mWaveTable, param_1 * 4);
mWaveCount = param_1;
}
/* 80285CB0-80285D54 .text incWaveTable__Q28JASystem14TBasicWaveBankFPCQ38JASystem14TBasicWaveBank10TWaveGroup */
void JASystem::TBasicWaveBank::incWaveTable(const JASystem::TBasicWaveBank::TWaveGroup*) {
void JASystem::TBasicWaveBank::incWaveTable(const TWaveGroup* param_1) {
/* Nonmatching */
OSLockMutex(&mMutex);
for (int i = 0; i < param_1->mWaveCount; i++) {
u32 waveID = param_1->getWaveID(i);
TWaveInfo** table = mWaveTable;
TWaveInfo* waveInfo = &param_1->mCtrlWaveArray[i];
waveInfo->field_0x3c = 0;
waveInfo->field_0x38 = table[waveID];
if (table[waveID]) {
table[waveID]->field_0x3c = waveInfo;
}
table[waveID] = waveInfo;
}
OSUnlockMutex(&mMutex);
}
/* 80285D54-80285E28 .text decWaveTable__Q28JASystem14TBasicWaveBankFPCQ38JASystem14TBasicWaveBank10TWaveGroup */
void JASystem::TBasicWaveBank::decWaveTable(const JASystem::TBasicWaveBank::TWaveGroup*) {
void JASystem::TBasicWaveBank::decWaveTable(const TWaveGroup*) {
/* Nonmatching */
}
/* 80285E28-80285E58 .text getWaveHandle__Q28JASystem14TBasicWaveBankCFUl */
void JASystem::TBasicWaveBank::getWaveHandle(unsigned long) const {
/* Nonmatching */
JASystem::TWaveHandle* JASystem::TBasicWaveBank::getWaveHandle(u32 param_1) const {
if (param_1 >= mWaveCount) {
return NULL;
}
if (mWaveTable[param_1]) {
return &mWaveTable[param_1]->field_0x0;
}
return NULL;
}
/* 80285E58-80285EB0 .text __ct__Q38JASystem14TBasicWaveBank10TWaveGroupFPQ28JASystem14TBasicWaveBank */
JASystem::TBasicWaveBank::TWaveGroup::TWaveGroup(JASystem::TBasicWaveBank*) {
/* Nonmatching */
JASystem::TBasicWaveBank::TWaveGroup::TWaveGroup(TBasicWaveBank* param_1) {
mBank = param_1;
mCtrlWaveArray = NULL;
mWaveCount = 0;
}
/* 80285EB0-80285F64 .text __dt__Q38JASystem14TBasicWaveBank10TWaveGroupFv */
JASystem::TBasicWaveBank::TWaveGroup::~TWaveGroup() {
/* Nonmatching */
delete[] mCtrlWaveArray;
}
/* 80285F64-80285FC4 .text __dt__Q38JASystem14TBasicWaveBank9TWaveInfoFv */
JASystem::TBasicWaveBank::TWaveInfo::~TWaveInfo() {
/* Nonmatching */
}
JASystem::TBasicWaveBank::TWaveInfo::~TWaveInfo() {}
/* 80285FC4-802860B8 .text setWaveCount__Q38JASystem14TBasicWaveBank10TWaveGroupFUl */
void JASystem::TBasicWaveBank::TWaveGroup::setWaveCount(unsigned long) {
/* Nonmatching */
void JASystem::TBasicWaveBank::TWaveGroup::setWaveCount(u32 param_1) {
delete[] mCtrlWaveArray;
mWaveCount = param_1;
mCtrlWaveArray = new (getCurrentHeap(), 0) TWaveInfo[param_1];
JUT_ASSERT(180, mCtrlWaveArray != 0);
for (int i = 0; i < param_1; i++) {
mCtrlWaveArray[i].field_0x0.mHeap = &field_0x4;
mCtrlWaveArray[i].field_0x0.field_0x4.field_0x24 = &field_0x4c;
}
}
/* 802860B8-80286204 .text setWaveInfo__Q38JASystem14TBasicWaveBank10TWaveGroupFiUlRCQ28JASystem9TWaveInfo */
void JASystem::TBasicWaveBank::TWaveGroup::setWaveInfo(int, unsigned long, const JASystem::TWaveInfo&) {
/* Nonmatching */
void JASystem::TBasicWaveBank::TWaveGroup::setWaveInfo(int index, u32 param_2, const JASystem::TWaveInfo& param_3) {
JUT_ASSERT(190, index < mWaveCount);
JUT_ASSERT(191, index >= 0);
mCtrlWaveArray[index].field_0x34 = param_2;
mCtrlWaveArray[index].field_0x0.field_0x4 = param_3;
mCtrlWaveArray[index].field_0x0.field_0x4.field_0x24 = &field_0x4c;
}
/* 80286204-80286274 .text onLoadDone__Q38JASystem14TBasicWaveBank10TWaveGroupFv */
void JASystem::TBasicWaveBank::TWaveGroup::onLoadDone() {
/* Nonmatching */
JUT_ASSERT(201, mBank);
mBank->incWaveTable(this);
}
/* 80286274-802862E4 .text onEraseDone__Q38JASystem14TBasicWaveBank10TWaveGroupFv */
void JASystem::TBasicWaveBank::TWaveGroup::onEraseDone() {
/* Nonmatching */
JUT_ASSERT(207, mBank);
mBank->decWaveTable(this);
}
/* 802862E4-802862F8 .text getWaveID__Q38JASystem14TBasicWaveBank10TWaveGroupCFi */
void JASystem::TBasicWaveBank::TWaveGroup::getWaveID(int) const {
/* Nonmatching */
u32 JASystem::TBasicWaveBank::TWaveGroup::getWaveID(int param_1) const {
return mCtrlWaveArray[param_1].field_0x34;
}
/* 802862F8-80286340 .text __dt__Q28JASystem9TWaveBankFv */
JASystem::TWaveBank::~TWaveBank() {
/* Nonmatching */
}
/* 80286340-80286388 .text __dt__Q28JASystem11TWaveHandleFv */
JASystem::TWaveHandle::~TWaveHandle() {
/* Nonmatching */
}
/* 80286388-802863B8 .text __ct__Q38JASystem14TBasicWaveBank9TWaveInfoFv */
JASystem::TBasicWaveBank::TWaveInfo::TWaveInfo() {
/* Nonmatching */
}
/* 802863B8-80286414 .text __dt__Q38JASystem14TBasicWaveBank11TWaveHandleFv */
JASystem::TBasicWaveBank::TWaveHandle::~TWaveHandle() {
/* Nonmatching */
}
/* 80286414-8028641C .text getWaveInfo__Q38JASystem14TBasicWaveBank11TWaveHandleCFv */
void JASystem::TBasicWaveBank::TWaveHandle::getWaveInfo() const {
/* Nonmatching */
}
/* 8028641C-802864A8 .text getWavePtr__Q38JASystem14TBasicWaveBank11TWaveHandleCFv */
void JASystem::TBasicWaveBank::TWaveHandle::getWavePtr() const {
/* Nonmatching */
}
/* 802864A8-802864C8 .text getWaveArc__Q28JASystem14TBasicWaveBankFi */
void JASystem::TBasicWaveBank::getWaveArc(int) {
/* Nonmatching */
}
+1 -1
View File
@@ -176,7 +176,7 @@ BOOL JASystem::TChannel::checkLogicalChannel() {
}
/* 8028BEB8-8028BF40 .text play__Q28JASystem8TChannelFUl */
bool JASystem::TChannel::play(u32 param_1) {
BOOL JASystem::TChannel::play(u32 param_1) {
/* Nonmatching */
if (param_1 == 0) {
param_1 = -1;
+1
View File
@@ -5,6 +5,7 @@
#include "JSystem/JAudio/JASDSPInterface.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JAudio/JASDriverTables.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JAudio/dspproc.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
+125 -2
View File
@@ -3,6 +3,129 @@
// Translation Unit: JASDriverTables.cpp
//
#include "JASDriverTables.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASDriverTables.h"
f32 JASystem::Driver::C5BASE_PITCHTABLE[] = {
0.031250f, 0.033108f, 0.035077f, 0.037162f,
0.039372f, 0.041713f, 0.044194f, 0.046822f,
0.049606f, 0.052556f, 0.055681f, 0.058992f,
0.062500f, 0.066216f, 0.070154f, 0.074325f,
0.078745f, 0.083427f, 0.088388f, 0.093644f,
0.099213f, 0.105112f, 0.111362f, 0.117984f,
0.125000f, 0.132433f, 0.140308f, 0.148651f,
0.157490f, 0.166855f, 0.176777f, 0.187288f,
0.198425f, 0.210224f, 0.222725f, 0.235969f,
0.250000f, 0.264866f, 0.280616f, 0.297302f,
0.314980f, 0.333710f, 0.353553f, 0.374577f,
0.396850f, 0.420448f, 0.445449f, 0.471937f,
0.500000f, 0.529732f, 0.561231f, 0.594604f,
0.629961f, 0.667420f, 0.707107f, 0.749154f,
0.793701f, 0.840897f, 0.890899f, 0.943875f,
1.000000f, 1.059463f, 1.122462f, 1.189207f,
1.259921f, 1.334840f, 1.414214f, 1.498307f,
1.587401f, 1.681793f, 1.781798f, 1.887749f,
2.000000f, 2.118926f, 2.244924f, 2.378414f,
2.519842f, 2.669680f, 2.828428f, 2.996615f,
3.174803f, 3.363586f, 3.563596f, 3.775498f,
4.000000f, 4.237853f, 4.489849f, 4.756829f,
5.039685f, 5.339360f, 5.656855f, 5.993229f,
6.349606f, 6.727173f, 7.127192f, 7.550996f,
8.000000f, 8.475705f, 8.979697f, 9.513658f,
10.079370f, 10.678720f, 11.313710f, 11.986459f,
12.699211f, 13.454346f, 14.254383f, 15.101993f,
16.000000f, 16.951410f, 17.959394f, 19.027315f,
20.158739f, 21.357441f, 22.627420f, 23.972918f,
25.398422f, 26.908691f, 28.508766f, 30.203985f,
32.000000f, 33.902821f, 35.918789f, 38.054630f,
40.317478f, 42.714882f, 45.254840f, 47.945835f,
};
u16 JASystem::DSPInterface::DSPADPCM_FILTER[] = {
0x0000, 0x0000, 0x0800, 0x0000, 0x0000, 0x0800, 0x0400, 0x0400,
0x1000, 0xF800, 0x0E00, 0xFA00, 0x0C00, 0xFC00, 0x1200, 0xF600,
0x1068, 0xF738, 0x12C0, 0xF704, 0x1400, 0xF400, 0x0800, 0xF800,
0x0400, 0xFC00, 0xFC00, 0x0400, 0xFC00, 0x0000, 0xF800, 0x0000,
};
u16 JASystem::DSPInterface::DSPRES_FILTER[] = {
0x0C39, 0x66AD, 0x0D46, 0xFFDF, 0x0B39, 0x6696, 0x0E5F, 0xFFD8,
0x0A44, 0x6669, 0x0F83, 0xFFD0, 0x095A, 0x6626, 0x10B4, 0xFFC8,
0x087D, 0x65CD, 0x11F0, 0xFFBF, 0x07AB, 0x655E, 0x1338, 0xFFB6,
0x06E4, 0x64D9, 0x148C, 0xFFAC, 0x0628, 0x643F, 0x15EB, 0xFFA1,
0x0577, 0x638F, 0x1756, 0xFF96, 0x04D1, 0x62CB, 0x18CB, 0xFF8A,
0x0435, 0x61F3, 0x1A4C, 0xFF7E, 0x03A4, 0x6106, 0x1BD7, 0xFF71,
0x031C, 0x6007, 0x1D6C, 0xFF64, 0x029F, 0x5EF5, 0x1F0B, 0xFF56,
0x022A, 0x5DD0, 0x20B3, 0xFF48, 0x01BE, 0x5C9A, 0x2264, 0xFF3A,
0x015B, 0x5B53, 0x241E, 0xFF2C, 0x0101, 0x59FC, 0x25E0, 0xFF1E,
0x00AE, 0x5896, 0x27A9, 0xFF10, 0x0063, 0x5720, 0x297A, 0xFF02,
0x001F, 0x559D, 0x2B50, 0xFEF4, 0xFFE2, 0x540D, 0x2D2C, 0xFEE8,
0xFFAC, 0x5270, 0x2F0D, 0xFEDB, 0xFF7C, 0x50C7, 0x30F3, 0xFED0,
0xFF53, 0x4F14, 0x32DC, 0xFEC6, 0xFF2E, 0x4D57, 0x34C8, 0xFEBD,
0xFF0F, 0x4B91, 0x36B6, 0xFEB6, 0xFEF5, 0x49C2, 0x38A5, 0xFEB0,
0xFEDF, 0x47ED, 0x3A95, 0xFEAC, 0xFECE, 0x4611, 0x3C85, 0xFEAB,
0xFEC0, 0x4430, 0x3E74, 0xFEAC, 0xFEB6, 0x424A, 0x4060, 0xFEAF,
0xFEAF, 0x4060, 0x424A, 0xFEB6, 0xFEAC, 0x3E74, 0x4430, 0xFEC0,
0xFEAB, 0x3C85, 0x4611, 0xFECE, 0xFEAC, 0x3A95, 0x47ED, 0xFEDF,
0xFEB0, 0x38A5, 0x49C2, 0xFEF5, 0xFEB6, 0x36B6, 0x4B91, 0xFF0F,
0xFEBD, 0x34C8, 0x4D57, 0xFF2E, 0xFEC6, 0x32DC, 0x4F14, 0xFF53,
0xFED0, 0x30F3, 0x50C7, 0xFF7C, 0xFEDB, 0x2F0D, 0x5270, 0xFFAC,
0xFEE8, 0x2D2C, 0x540D, 0xFFE2, 0xFEF4, 0x2B50, 0x559D, 0x001F,
0xFF02, 0x297A, 0x5720, 0x0063, 0xFF10, 0x27A9, 0x5896, 0x00AE,
0xFF1E, 0x25E0, 0x59FC, 0x0101, 0xFF2C, 0x241E, 0x5B53, 0x015B,
0xFF3A, 0x2264, 0x5C9A, 0x01BE, 0xFF48, 0x20B3, 0x5DD0, 0x022A,
0xFF56, 0x1F0B, 0x5EF5, 0x029F, 0xFF64, 0x1D6C, 0x6007, 0x031C,
0xFF71, 0x1BD7, 0x6106, 0x03A4, 0xFF7E, 0x1A4C, 0x61F3, 0x0435,
0xFF8A, 0x18CB, 0x62CB, 0x04D1, 0xFF96, 0x1756, 0x638F, 0x0577,
0xFFA1, 0x15EB, 0x643F, 0x0628, 0xFFAC, 0x148C, 0x64D9, 0x06E4,
0xFFB6, 0x1338, 0x655E, 0x07AB, 0xFFBF, 0x11F0, 0x65CD, 0x087D,
0xFFC8, 0x10B4, 0x6626, 0x095A, 0xFFD0, 0x0F83, 0x6669, 0x0A44,
0xFFD8, 0x0E5F, 0x6696, 0x0B39, 0xFFDF, 0x0D46, 0x66AD, 0x0C39,
0x0000, 0x0C8B, 0x18F8, 0x2527, 0x30FB, 0x3C56, 0x471C, 0x5133,
0x5A82, 0x62F1, 0x6A6D, 0x70E2, 0x7641, 0x7A7C, 0x7D89, 0x7F61,
0x7FFF, 0x7F61, 0x7D89, 0x7A7C, 0x7641, 0x70E2, 0x6A6D, 0x62F1,
0x5A82, 0x5133, 0x471C, 0x3C56, 0x30FB, 0x2527, 0x18F8, 0x0C8B,
0x0000, 0xF375, 0xE708, 0xDAD9, 0xCF05, 0xC3AA, 0xB8E4, 0xAECD,
0xA57E, 0x9D0F, 0x9593, 0x8F1E, 0x89BF, 0x8584, 0x8277, 0x809F,
0x8001, 0x809F, 0x8277, 0x8584, 0x89BF, 0x8F1E, 0x9593, 0x9D0F,
0xA57E, 0xAECD, 0xB8E4, 0xC3AA, 0xCF05, 0xDAD9, 0xE708, 0xF375,
0x0000, 0x07FF, 0x0FFF, 0x17FF, 0x1FFF, 0x27FF, 0x2FFF, 0x37FF,
0x3FFF, 0x47FF, 0x4FFF, 0x57FF, 0x5FFF, 0x67FF, 0x6FFF, 0x77FF,
0x7FFF, 0x7800, 0x7000, 0x6800, 0x6000, 0x5800, 0x5000, 0x4800,
0x4000, 0x3800, 0x3000, 0x2800, 0x2000, 0x1800, 0x1000, 0x0800,
0x0000, 0xF801, 0xF001, 0xE801, 0xE001, 0xD801, 0xD001, 0xC801,
0xC001, 0xB801, 0xB001, 0xA801, 0xA001, 0x9801, 0x9001, 0x8801,
0x0000, 0x0000, 0x9000, 0x9800, 0xA000, 0xA800, 0xB000, 0xB800,
0xC000, 0xC800, 0xD000, 0xD800, 0xE000, 0xE800, 0xF000, 0xF800,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFF, 0x3FFF,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x1FFF, 0xC001,
0x0000, 0x0192, 0x0324, 0x04B6, 0x0647, 0x07D9, 0x096A, 0x0AFB,
0x0C8B, 0x0E1B, 0x0FAB, 0x1139, 0x12C7, 0x1455, 0x15E1, 0x176D,
0x18F8, 0x1A82, 0x1C0B, 0x1D93, 0x1F19, 0x209F, 0x2223, 0x23A6,
0x2527, 0x26A7, 0x2826, 0x29A3, 0x2B1F, 0x2C98, 0x2E10, 0x2F87,
0x30FB, 0x326E, 0x33DE, 0x354D, 0x36B9, 0x3824, 0x398C, 0x3AF2,
0x3C56, 0x3DB7, 0x3F17, 0x4073, 0x41CD, 0x4325, 0x447A, 0x45CC,
0x471C, 0x4869, 0x49B3, 0x4AFB, 0x4C3F, 0x4D81, 0x4EBF, 0x4FFB,
0x5133, 0x5268, 0x539A, 0x54C9, 0x55F5, 0x571D, 0x5842, 0x5964,
0x5A82, 0x5B9C, 0x5CB3, 0x5DC7, 0x5ED7, 0x5FE3, 0x60EB, 0x61F0,
0x62F1, 0x63EE, 0x64E8, 0x65DD, 0x66CF, 0x67BC, 0x68A6, 0x698B,
0x6A6D, 0x6B4A, 0x6C23, 0x6CF8, 0x6DC9, 0x6E96, 0x6F5E, 0x7022,
0x70E2, 0x719D, 0x7254, 0x7307, 0x73B5, 0x745F, 0x7504, 0x75A5,
0x7641, 0x76D8, 0x776B, 0x77FA, 0x7884, 0x7909, 0x7989, 0x7A05,
0x7A7C, 0x7AEE, 0x7B5C, 0x7BC5, 0x7C29, 0x7C88, 0x7CE3, 0x7D39,
0x7D89, 0x7DD5, 0x7E1D, 0x7E5F, 0x7E9C, 0x7ED5, 0x7F09, 0x7F37,
0x7F61, 0x7F86, 0x7FA6, 0x7FC1, 0x7FD8, 0x7FE9, 0x7FF5, 0x7FFD,
};
+4 -4
View File
@@ -22,14 +22,14 @@ JASTaskThread::TCallStack::~TCallStack() {
}
/* 8027B5D8-8027B66C .text sendCmdMsg__13JASTaskThreadFPFPv_lPvUl */
bool JASTaskThread::sendCmdMsg(s32 (*param_1)(void*), void* param_2, u32 param_3) {
BOOL JASTaskThread::sendCmdMsg(s32 (*param_1)(void*), void* param_2, u32 param_3) {
TCallStack* stack = new(JKRGetSystemHeap(), -4) TCallStack(param_3);
if (!stack) {
return false;
}
JASystem::Calc::bcopy(param_2, stack->argspace, param_3);
stack->field_0x0 = param_1;
sendMessageBlock(stack);
return sendMessageBlock(stack);
}
/* 8027B66C-8027B6D4 .text run__13JASTaskThreadFv */
@@ -79,9 +79,9 @@ void JASystem::Dvd::resumeThread() {
}
/* 8027B84C-8027B8D4 .text sendCmdMsg__Q28JASystem3DvdFPFPv_lPvUl */
void JASystem::Dvd::sendCmdMsg(s32 (*param_1)(void*), void* param_2, u32 param_3) {
BOOL JASystem::Dvd::sendCmdMsg(s32 (*param_1)(void*), void* param_2, u32 param_3) {
JUT_ASSERT(152, sThread);
sThread->sendCmdMsg(param_1, param_2, param_3);
return sThread->sendCmdMsg(param_1, param_2, param_3);
}
/* 8027B8D4-8027B914 .text checkPassDvdT__Q28JASystem3DvdFUlPUlPFUl_v */
+2 -2
View File
@@ -197,7 +197,7 @@ JASystem::Kernel::TSolidHeap::TSolidHeap() {
}
/* 8027D370-8027D40C .text alloc__Q38JASystem6Kernel10TSolidHeapFl */
int JASystem::Kernel::TSolidHeap::alloc(s32 size) {
void* JASystem::Kernel::TSolidHeap::alloc(s32 size) {
/* Nonmatching */
u32 tmp1 = OSRoundUp32B(size);
if (field_0x0 == 0) {
@@ -213,7 +213,7 @@ int JASystem::Kernel::TSolidHeap::alloc(s32 size) {
}
field_0xc++;
field_0x10 = tmp2;
return tmp2;
return (void*)tmp2;
}
/* 8027D40C-8027D424 .text freeAll__Q38JASystem6Kernel10TSolidHeapFv */
+6 -5
View File
@@ -3,11 +3,12 @@
// Translation Unit: JASInstEffect.cpp
//
#include "JASInstEffect.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASInstEffect.h"
#include "JSystem/JUtility/JUTAssert.h"
/* 8028684C-802868F0 .text setTarget__Q28JASystem11TInstEffectFi */
void JASystem::TInstEffect::setTarget(int) {
/* Nonmatching */
void JASystem::TInstEffect::setTarget(int target) {
JUT_ASSERT(16, target >= 0);
JUT_ASSERT(17, target < 256);
mTarget = target;
}
+147 -8
View File
@@ -3,21 +3,160 @@
// Translation Unit: JASPlayer_impl.cpp
//
#include "JASPlayer_impl.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASPlayer.h"
#include "JSystem/JAudio/JASDriverTables.h"
/* 8027E170-8027E190 .text extend8to16__Q28JASystem6PlayerFUc */
void JASystem::Player::extend8to16(unsigned char) {
/* Nonmatching */
s16 JASystem::Player::extend8to16(u8 param_1) {
s16 var1 = param_1;
if (param_1 & 0x80) {
var1 += 0xFF00;
}
return var1;
}
const f32 JASystem::Player::s_key_table[] = {
1.000000, 1.000910, 1.001821, 1.002733,
1.003645, 1.004559, 1.005473, 1.006388,
1.007304, 1.008220, 1.009138, 1.010056,
1.010975, 1.011896, 1.012816, 1.013738,
1.014661, 1.015584, 1.016508, 1.017433,
1.018359, 1.019286, 1.020214, 1.021142,
1.022071, 1.023002, 1.023933, 1.024864,
1.025797, 1.026731, 1.027665, 1.028600,
1.029536, 1.030473, 1.031411, 1.032350,
1.033289, 1.034230, 1.035171, 1.036113,
1.037056, 1.038000, 1.038944, 1.039890,
1.040836, 1.041783, 1.042731, 1.043680,
1.044630, 1.045581, 1.046532, 1.047485,
1.048438, 1.049392, 1.050347, 1.051303,
1.052260, 1.053217, 1.054176, 1.055135,
1.056095, 1.057056, 1.058018, 1.058981,
};
/* 8027E190-8027E250 .text pitchToCent__Q28JASystem6PlayerFff */
void JASystem::Player::pitchToCent(float, float) {
/* Nonmatching */
f32 JASystem::Player::pitchToCent(f32 param_1, f32 param_2) {
f32 var1 = param_1 * 4.0f * param_2;
s16 var3 = var1;
f32 var2 = var1 - var3;
if (var1 < 0.0f && var2 != 0.0f) {
var2 += 1.0f;
var3 -= 1;
}
if (var2 >= 1.0f) {
var2 -= 1.0f;
var3 += 1;
}
return s_key_table[u16(var2 * 64.0f)] * Driver::C5BASE_PITCHTABLE[var3 + 0x3c];
}
/* 8027E250-8027E2C0 .text getRandomS32__Q28JASystem6PlayerFv */
void JASystem::Player::getRandomS32() {
/* Nonmatching */
s32 JASystem::Player::getRandomS32() {
static s32 sV0 = 0x1000;
static s32 sV1 = 0x5555;
s32 result = sV1 * -0x6789abce + 1 + (sV0 * 0x13579bde >> 4);
sV0 = sV1;
sV1 = result;
return result;
}
const JASystem::TOscillator::Osc_ JASystem::Player::sAdsrDef = {
0, 1.0f, NULL, NULL, 1.0f, 0.0f
};
const JASystem::TOscillator::Osc_ JASystem::Player::sEnvelopeDef = {
0, 1.0f, NULL, &sRelTable, 1.0f, 0.0f
};
const JASystem::TOscillator::Osc_ JASystem::Player::sVibratoDef = {
1, 0.5f, &sVibTable, &sVibTable, 0.0f, 1.0f
};
const JASystem::TOscillator::Osc_ JASystem::Player::sTremoroDef = {
0, 0.5f, &sTreTable, &sTreTable, 0.0f, 1.0f
};
s16 JASystem::Player::CUTOFF_TO_IIR_TABLE[] = {
0x0F5C, 0x0A3D, 0x4665, 0x3999, 0x103F, 0x0A28, 0x45D7, 0x3925,
0x1122, 0x0A14, 0x454A, 0x38B0, 0x1205, 0x09FF, 0x44BC, 0x383C,
0x12E8, 0x09EA, 0x442E, 0x37C8, 0x13CB, 0x09D6, 0x43A0, 0x3754,
0x14AE, 0x09C1, 0x4312, 0x36E0, 0x1591, 0x09AC, 0x4284, 0x366C,
0x1674, 0x0998, 0x41F6, 0x35F8, 0x1757, 0x0983, 0x4168, 0x3584,
0x183A, 0x096E, 0x40DA, 0x3510, 0x191D, 0x095A, 0x404C, 0x349C,
0x1A00, 0x0945, 0x3FBE, 0x3427, 0x1AE3, 0x0931, 0x3F31, 0x33B3,
0x1BC6, 0x091C, 0x3EA3, 0x333F, 0x1CA9, 0x0907, 0x3E15, 0x32CB,
0x1D8C, 0x08F3, 0x3D87, 0x3257, 0x1E6F, 0x08DE, 0x3CF9, 0x31E3,
0x1F52, 0x08C9, 0x3C6B, 0x316F, 0x2035, 0x08B5, 0x3BDD, 0x30FB,
0x2118, 0x08A0, 0x3B4F, 0x3087, 0x21FC, 0x088B, 0x3AC1, 0x3012,
0x22DF, 0x0877, 0x3A33, 0x2F9E, 0x23C2, 0x0862, 0x39A6, 0x2F2A,
0x24A5, 0x084D, 0x3918, 0x2EB6, 0x2588, 0x0839, 0x388A, 0x2E42,
0x266B, 0x0824, 0x37FC, 0x2DCE, 0x274E, 0x0810, 0x376E, 0x2D5A,
0x2831, 0x07FB, 0x36E0, 0x2CE6, 0x2914, 0x07E6, 0x3652, 0x2C72,
0x29F7, 0x07D2, 0x35C4, 0x2BFE, 0x2ADA, 0x07BD, 0x3536, 0x2B89,
0x2BBD, 0x07A8, 0x34A8, 0x2B15, 0x2CA0, 0x0794, 0x341B, 0x2AA1,
0x2D83, 0x077F, 0x338D, 0x2A2D, 0x2E66, 0x076A, 0x32FF, 0x29B9,
0x2F49, 0x0756, 0x3271, 0x2945, 0x302C, 0x0741, 0x31E3, 0x28D1,
0x310F, 0x072D, 0x3155, 0x285D, 0x31F2, 0x0718, 0x30C7, 0x27E9,
0x32D5, 0x0703, 0x3039, 0x2775, 0x33B8, 0x06EF, 0x2FAB, 0x2700,
0x349C, 0x06DA, 0x2F1D, 0x268C, 0x357F, 0x06C5, 0x2E8F, 0x2618,
0x3662, 0x06B1, 0x2E02, 0x25A4, 0x3745, 0x069C, 0x2D74, 0x2530,
0x3828, 0x0687, 0x2CE6, 0x24BC, 0x390B, 0x0673, 0x2C58, 0x2448,
0x39EE, 0x065E, 0x2BCA, 0x23D4, 0x3AD1, 0x0649, 0x2B3C, 0x2360,
0x3BB4, 0x0635, 0x2AAE, 0x22EB, 0x3C97, 0x0620, 0x2A20, 0x2277,
0x3D7A, 0x060C, 0x2992, 0x2203, 0x3E5D, 0x05F7, 0x2904, 0x218F,
0x3F40, 0x05E2, 0x2877, 0x211B, 0x4023, 0x05CE, 0x27E9, 0x20A7,
0x4106, 0x05B9, 0x275B, 0x2033, 0x41E9, 0x05A4, 0x26CD, 0x1FBF,
0x42CC, 0x0590, 0x263F, 0x1F4B, 0x43AF, 0x057B, 0x25B1, 0x1ED7,
0x4492, 0x0566, 0x2523, 0x1E62, 0x4575, 0x0552, 0x2495, 0x1DEE,
0x4658, 0x053D, 0x2407, 0x1D7A, 0x473B, 0x0529, 0x2379, 0x1D06,
0x481F, 0x0514, 0x22EB, 0x1C92, 0x4902, 0x04FF, 0x225E, 0x1C1E,
0x49E5, 0x04EB, 0x21D0, 0x1BAA, 0x4AC8, 0x04D6, 0x2142, 0x1B36,
0x4BAB, 0x04C1, 0x20B4, 0x1AC2, 0x4C8E, 0x04AD, 0x2026, 0x1A4E,
0x4D71, 0x0498, 0x1F98, 0x19D9, 0x4E54, 0x0483, 0x1F0A, 0x1965,
0x4F37, 0x046F, 0x1E7C, 0x18F1, 0x501A, 0x045A, 0x1DEE, 0x187D,
0x50FD, 0x0445, 0x1D60, 0x1809, 0x51E0, 0x0431, 0x1CD3, 0x1795,
0x52C3, 0x041C, 0x1C45, 0x1721, 0x53A6, 0x0408, 0x1BB7, 0x16AD,
0x5489, 0x03F3, 0x1B29, 0x1639, 0x556C, 0x03DE, 0x1A9B, 0x15C4,
0x564F, 0x03CA, 0x1A0D, 0x1550, 0x5732, 0x03B5, 0x197F, 0x14DC,
0x5815, 0x03A0, 0x18F1, 0x1468, 0x58F8, 0x038C, 0x1863, 0x13F4,
0x59DB, 0x0377, 0x17D5, 0x1380, 0x5ABF, 0x0362, 0x1747, 0x130C,
0x5BA2, 0x034E, 0x16BA, 0x1298, 0x5C85, 0x0339, 0x162C, 0x1224,
0x5D68, 0x0324, 0x159E, 0x11B0, 0x5E4B, 0x0310, 0x1510, 0x113B,
0x5F2E, 0x02FB, 0x1482, 0x10C7, 0x6011, 0x02E7, 0x13F4, 0x1053,
0x60F4, 0x02D2, 0x1366, 0x0FDF, 0x61D7, 0x02BD, 0x12D8, 0x0F6B,
0x62BA, 0x02A9, 0x124A, 0x0EF7, 0x639D, 0x0294, 0x11BC, 0x0E83,
0x6480, 0x027F, 0x112F, 0x0E0F, 0x6563, 0x026B, 0x10A1, 0x0D9B,
0x6646, 0x0256, 0x1013, 0x0D27, 0x6729, 0x0241, 0x0F85, 0x0CB2,
0x680C, 0x022D, 0x0EF7, 0x0C3E, 0x68EF, 0x0218, 0x0E69, 0x0BCA,
0x69D2, 0x0204, 0x0DDB, 0x0B56, 0x6AB5, 0x01EF, 0x0D4D, 0x0AE2,
0x6B98, 0x01DA, 0x0CBF, 0x0A6E, 0x6C7B, 0x01C6, 0x0C31, 0x09FA,
0x6D5F, 0x01B1, 0x0BA3, 0x0986, 0x6E42, 0x019C, 0x0B16, 0x0912,
0x6F25, 0x0188, 0x0A88, 0x089D, 0x7008, 0x0173, 0x09FA, 0x0829,
0x70EB, 0x015E, 0x096C, 0x07B5, 0x71CE, 0x014A, 0x08DE, 0x0741,
0x72B1, 0x0135, 0x0850, 0x06CD, 0x7394, 0x0120, 0x07C2, 0x0659,
0x7477, 0x010C, 0x0734, 0x05E5, 0x755A, 0x00F7, 0x06A6, 0x0571,
0x763D, 0x00E3, 0x0618, 0x04FD, 0x7720, 0x00CE, 0x058B, 0x0489,
0x7803, 0x00B9, 0x04FD, 0x0414, 0x78E6, 0x00A5, 0x046F, 0x03A0,
0x79C9, 0x0090, 0x03E1, 0x032C, 0x7AAC, 0x007B, 0x0353, 0x02B8,
0x7B8F, 0x0067, 0x02C5, 0x0244, 0x7C72, 0x0052, 0x0237, 0x01D0,
0x7D55, 0x003D, 0x01A9, 0x015C, 0x7E38, 0x0029, 0x011B, 0x00E8,
0x7F1B, 0x0014, 0x008D, 0x0074, 0x7FFF, 0x0000, 0x0000, 0x0000,
};
s16 JASystem::Player::sAdsTable[] = {
0x0000, 0x0000, 0x7FFF, 0x0000,
0x0000, 0x7FFF, 0x0000, 0x0000,
0x0000, 0x000E, 0x0000, 0x0000,
};
s16 JASystem::Player::sRelTable[] = {
0, 10, 0, 15, 1, 0
};
s16 JASystem::Player::sVibTable[] = {
0, 0, 0, 0, 12, 0x7FFF, 0, 12, 0, 0, 12, 0xC000, 0, 12, 0, 13, 0, 1
};
s16 JASystem::Player::sTreTable[] = {
0, 0, 0x7FFF, 0, 20, 0, 0, 20, 0x8001, 0, 20, 0, 0, 20, 0x7FFF, 13, 0, 1
};
+58 -10
View File
@@ -3,31 +3,79 @@
// Translation Unit: JASRegisterParam.cpp
//
#include "JASRegisterParam.h"
#include "JSystem/JAudio/JASRegisterParam.h"
#include "dolphin/types.h"
/* 8027E2C0-8027E310 .text __ct__Q28JASystem14TRegisterParamFv */
JASystem::TRegisterParam::TRegisterParam() {
/* Nonmatching */
field_0x0 = 0;
field_0x2 = 0;
field_0x4 = 0;
field_0x6 = 0;
field_0x8 = 0;
field_0xa = 0;
field_0xc = 0;
field_0xe = 0;
field_0x1a = 0;
field_0x10[0] = 0;
field_0x10[1] = 0;
field_0x10[2] = 0;
field_0x10[3] = 0;
field_0x10[4] = 0;
field_0x20 = 0;
field_0x24 = 0;
field_0x28 = 0;
field_0x2c = 0;
}
/* 8027E310-8027E378 .text init__Q28JASystem14TRegisterParamFv */
void JASystem::TRegisterParam::init() {
/* Nonmatching */
field_0x0 = 0;
field_0x2 = 0;
field_0x4 = 0;
field_0x6 = 0;
field_0x8 = 0;
field_0xa = 0;
field_0xc = 0xf0;
field_0xe = 0x0c;
field_0x1a = 0x40;
field_0x10[0] = 0;
field_0x10[1] = 1;
field_0x10[2] = 1;
field_0x10[3] = 0x7fff;
field_0x10[4] = 0x4000;
field_0x20 = 0;
field_0x24 = 0;
field_0x28 = 0;
field_0x2c = 0;
}
/* 8027E378-8027E3E0 .text inherit__Q28JASystem14TRegisterParamFRCQ28JASystem14TRegisterParam */
void JASystem::TRegisterParam::inherit(const JASystem::TRegisterParam&) {
/* Nonmatching */
void JASystem::TRegisterParam::inherit(const JASystem::TRegisterParam& param_1) {
field_0x0 = 0;
field_0x2 = 0;
field_0x4 = 0;
field_0x6 = 0;
field_0x8 = 0;
field_0xa = 0;
field_0xc = param_1.field_0xc;
field_0xe = param_1.field_0xe;
field_0x1a = param_1.field_0x1a;
for (int i = 0; i < 5; i++) {
field_0x10[i] = param_1.field_0x10[i];
}
field_0x20 = 0;
field_0x24 = 0;
field_0x28 = 0;
field_0x2c = 0;
}
/* 8027E3E0-8027E3EC .text getBankNumber__Q28JASystem14TRegisterParamCFv */
void JASystem::TRegisterParam::getBankNumber() const {
/* Nonmatching */
u8 JASystem::TRegisterParam::getBankNumber() const {
return field_0xc >> 8 & 0xff;
}
/* 8027E3EC-8027E3F8 .text getProgramNumber__Q28JASystem14TRegisterParamCFv */
void JASystem::TRegisterParam::getProgramNumber() const {
/* Nonmatching */
u8 JASystem::TRegisterParam::getProgramNumber() const {
return field_0xc & 0xff;
}
+85 -21
View File
@@ -3,61 +3,125 @@
// Translation Unit: JASSeqCtrl.cpp
//
#include "JASSeqCtrl.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASSeqCtrl.h"
#include "JSystem/JUtility/JUTAssert.h"
/* 8027E3F8-8027E448 .text init__Q28JASystem8TSeqCtrlFv */
void JASystem::TSeqCtrl::init() {
/* Nonmatching */
field_0x0 = NULL;
field_0x4 = NULL;
field_0x8 = 0;
field_0xc = 0;
for (int i = 0; i < 8; i++) {
field_0x10[i] = NULL;
field_0x30[i] = 0;
}
field_0x40 = 0;
field_0x44 = NULL;
}
/* 8027E448-8027E45C .text start__Q28JASystem8TSeqCtrlFPvUl */
void JASystem::TSeqCtrl::start(void*, unsigned long) {
/* Nonmatching */
void JASystem::TSeqCtrl::start(void* param_1, u32 param_2) {
field_0x0 = (u8*)param_1;
field_0x4 = field_0x0 + param_2;
}
/* 8027E45C-8027E500 .text loopEnd__Q28JASystem8TSeqCtrlFv */
void JASystem::TSeqCtrl::loopEnd() {
int JASystem::TSeqCtrl::loopEnd() {
/* Nonmatching */
u32 var1 = field_0xc;
if (var1 == 0) {
JUT_WARN(45, "%s", "cannot loopE for call-stack is NULL");
return 0;
}
u16 var3 = field_0x30[var1 - 1];
if (var3) {
var3--;
}
if (var3 == 0) {
field_0xc--;
return true;
}
field_0x30[var1 - 1] = var3;
field_0x4 = field_0x10[field_0xc - 1];
return true;
}
/* 8027E500-8027E530 .text waitCountDown__Q28JASystem8TSeqCtrlFv */
void JASystem::TSeqCtrl::waitCountDown() {
/* Nonmatching */
bool JASystem::TSeqCtrl::waitCountDown() {
if (field_0x8 > 0) {
field_0x8--;
if (field_0x8) {
return false;
}
}
return true;
}
/* 8027E530-8027E568 .text callIntr__Q28JASystem8TSeqCtrlFPv */
void JASystem::TSeqCtrl::callIntr(void*) {
/* Nonmatching */
bool JASystem::TSeqCtrl::callIntr(void* param_1) {
if (field_0x44) {
return false;
}
field_0x44 = field_0x4;
field_0x4 = (u8*)param_1;
field_0x40 = field_0x8;
field_0x8 = 0;
return true;
}
/* 8027E568-8027E59C .text retIntr__Q28JASystem8TSeqCtrlFv */
void JASystem::TSeqCtrl::retIntr() {
/* Nonmatching */
bool JASystem::TSeqCtrl::retIntr() {
if (!field_0x44) {
return false;
}
field_0x8 = field_0x40;
field_0x4 = field_0x44;
field_0x44 = NULL;
return true;
}
/* 8027E59C-8027E5B4 .text get16__Q28JASystem8TSeqCtrlCFUl */
void JASystem::TSeqCtrl::get16(unsigned long) const {
/* Nonmatching */
u32 JASystem::TSeqCtrl::get16(u32 param_1) const {
u32 result = field_0x0[param_1++] << 8;
result |= field_0x0[param_1++];
return result;
}
/* 8027E5B4-8027E5DC .text get24__Q28JASystem8TSeqCtrlCFUl */
void JASystem::TSeqCtrl::get24(unsigned long) const {
u32 JASystem::TSeqCtrl::get24(u32 param_1) const {
/* Nonmatching */
u32 result = field_0x0[param_1++] << 8;
result |= field_0x0[param_1++];
result <<= 8;
result |= field_0x0[param_1++];
return result;
}
/* 8027E5DC-8027E614 .text get32__Q28JASystem8TSeqCtrlCFUl */
void JASystem::TSeqCtrl::get32(unsigned long) const {
u32 JASystem::TSeqCtrl::get32(u32 param_1) const {
/* Nonmatching */
u32 result = field_0x0[param_1++] << 8;
result |= field_0x0[param_1++];
result <<= 8;
result |= field_0x0[param_1++];
result <<= 8;
result |= field_0x0[param_1++];
return result;
}
/* 8027E614-8027E63C .text read16__Q28JASystem8TSeqCtrlFv */
void JASystem::TSeqCtrl::read16() {
/* Nonmatching */
u32 JASystem::TSeqCtrl::read16() {
u32 result = *(field_0x4++) << 8;
result |= *(field_0x4++);
return result;
}
/* 8027E63C-8027E680 .text read24__Q28JASystem8TSeqCtrlFv */
void JASystem::TSeqCtrl::read24() {
/* Nonmatching */
u32 JASystem::TSeqCtrl::read24() {
u32 result = *(field_0x4++) << 8;
result |= *(field_0x4++);
result <<= 8;
result |= *(field_0x4++);
return result;
}
+26 -40
View File
@@ -3,66 +3,52 @@
// Translation Unit: JASSimpleWaveBank.cpp
//
#include "JASSimpleWaveBank.h"
#include "JSystem/JAudio/JASSimpleWaveBank.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "dolphin/types.h"
/* 802864C8-80286528 .text __ct__Q28JASystem15TSimpleWaveBankFv */
JASystem::TSimpleWaveBank::TSimpleWaveBank() {
/* Nonmatching */
mWaveTable = NULL;
mWaveCount = 0;
}
/* 80286528-802865F4 .text __dt__Q28JASystem15TSimpleWaveBankFv */
JASystem::TSimpleWaveBank::~TSimpleWaveBank() {
/* Nonmatching */
delete[] mWaveTable;
}
/* 802865F4-80286650 .text __dt__Q38JASystem15TSimpleWaveBank11TWaveHandleFv */
JASystem::TSimpleWaveBank::TWaveHandle::~TWaveHandle() {
/* Nonmatching */
}
JASystem::TSimpleWaveBank::TWaveHandle::~TWaveHandle() {}
/* 80286650-8028670C .text setWaveTableSize__Q28JASystem15TSimpleWaveBankFUl */
void JASystem::TSimpleWaveBank::setWaveTableSize(unsigned long) {
/* Nonmatching */
void JASystem::TSimpleWaveBank::setWaveTableSize(u32 param_1) {
delete[] mWaveTable;
mWaveTable = new (getCurrentHeap(), 0) TWaveHandle[param_1];
JUT_ASSERT(34, mWaveTable != 0);
mWaveCount = param_1;
}
/* 8028670C-80286730 .text getWaveHandle__Q28JASystem15TSimpleWaveBankCFUl */
void JASystem::TSimpleWaveBank::getWaveHandle(unsigned long) const {
/* Nonmatching */
JASystem::TSimpleWaveBank::TWaveHandle* JASystem::TSimpleWaveBank::getWaveHandle(u32 param_1) const {
if (param_1 >= mWaveCount) {
return NULL;
}
return mWaveTable + param_1;
}
/* 80286730-802867D4 .text setWaveInfo__Q28JASystem15TSimpleWaveBankFUlRCQ28JASystem9TWaveInfo */
void JASystem::TSimpleWaveBank::setWaveInfo(unsigned long, const JASystem::TWaveInfo&) {
/* Nonmatching */
void JASystem::TSimpleWaveBank::setWaveInfo(u32 param_1, const JASystem::TWaveInfo& param_2) {
mWaveTable[param_1].field_0x4 = param_2;
mWaveTable[param_1].field_0x4.field_0x24 = &field_0x4c;
mWaveTable[param_1].mHeap = &field_0x4;
}
/* 802867D4-802867F4 .text getWaveArc__Q28JASystem15TSimpleWaveBankFi */
void JASystem::TSimpleWaveBank::getWaveArc(int) {
/* Nonmatching */
JASystem::TWaveArc* JASystem::TSimpleWaveBank::getWaveArc(int param_1) {
if (param_1 != 0) {
return NULL;
}
return this;
}
/* 802867F4-80286818 .text __ct__Q38JASystem15TSimpleWaveBank11TWaveHandleFv */
JASystem::TSimpleWaveBank::TWaveHandle::TWaveHandle() {
/* Nonmatching */
}
/* 80286818-80286820 .text getWaveInfo__Q38JASystem15TSimpleWaveBank11TWaveHandleCFv */
void JASystem::TSimpleWaveBank::TWaveHandle::getWaveInfo() const {
/* Nonmatching */
}
/* 80286820-80286844 .text getWavePtr__Q38JASystem15TSimpleWaveBank11TWaveHandleCFv */
void JASystem::TSimpleWaveBank::TWaveHandle::getWavePtr() const {
/* Nonmatching */
}
/* 80286844-80286848 .text onLoadDone__Q28JASystem8TWaveArcFv */
void JASystem::TWaveArc::onLoadDone() {
/* Nonmatching */
}
/* 80286848-8028684C .text onEraseDone__Q28JASystem8TWaveArcFv */
void JASystem::TWaveArc::onEraseDone() {
/* Nonmatching */
}
+3 -2
View File
@@ -52,8 +52,9 @@ void JASystem::Kernel::sysAramSetup(u32 param_1) {
}
/* 8027DC84-8027DCDC .text allocFromSysAramFull__Q28JASystem6KernelFPUl */
void JASystem::Kernel::allocFromSysAramFull(u32* param_1) {
void* JASystem::Kernel::allocFromSysAramFull(u32* param_1) {
u32 size = audioAramHeap.getRemain();
audioAramHeap.alloc(size - 0x20);
void* var1 = audioAramHeap.alloc(size - 0x20);
*param_1 = size - 0x20;
return var1;
}
+123 -30
View File
@@ -3,81 +3,174 @@
// Translation Unit: JASWaveArcLoader.cpp
//
#include "JASWaveArcLoader.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASWaveArcLoader.h"
#include "JSystem/JAudio/JASDvdThread.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JKernel/JKRDvdAramRipper.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "MSL_C/string.h"
const u32 DIR_MAX = 64;
JASystem::Kernel::THeap JASystem::WaveArcLoader::sAramHeap(NULL);
/* 80287BD8-80287C24 .text init__Q28JASystem13WaveArcLoaderFv */
void JASystem::WaveArcLoader::init() {
/* Nonmatching */
bool JASystem::WaveArcLoader::init() {
u32 local_8;
void* var1 = Kernel::allocFromSysAramFull(&local_8);
if (!var1) {
return false;
}
sAramHeap.initRootHeap(var1, local_8, Kernel::THeap::Type0);
return true;
}
/* 80287C24-80287C30 .text getRootHeap__Q28JASystem13WaveArcLoaderFv */
void JASystem::WaveArcLoader::getRootHeap() {
/* Nonmatching */
JASystem::Kernel::THeap* JASystem::WaveArcLoader::getRootHeap() {
return &sAramHeap;
}
char JASystem::WaveArcLoader::sCurrentDir[DIR_MAX] = "/Banks/";
/* 80287C30-80287D24 .text setCurrentDir__Q28JASystem13WaveArcLoaderFPCc */
void JASystem::WaveArcLoader::setCurrentDir(const char*) {
void JASystem::WaveArcLoader::setCurrentDir(const char* dir) {
/* Nonmatching */
//JUT_ASSERT(60, std::strlen(dir) < DIR_MAX);
strcpy(sCurrentDir, dir);
int len = strlen(sCurrentDir);
if (sCurrentDir[len - 1] == '/') {
return;
}
JUT_ASSERT(65, len+1 < DIR_MAX);
sCurrentDir[len] = '/';
sCurrentDir[len+1] = 0;
}
/* 80287D24-80287D30 .text getCurrentDir__Q28JASystem13WaveArcLoaderFv */
void JASystem::WaveArcLoader::getCurrentDir() {
/* Nonmatching */
char* JASystem::WaveArcLoader::getCurrentDir() {
return sCurrentDir;
}
/* 80287D30-80287DA4 .text __ct__Q28JASystem8TWaveArcFv */
JASystem::TWaveArc::TWaveArc() {
/* Nonmatching */
JASystem::TWaveArc::TWaveArc() : field_0x4(this) {
field_0x4c = 0;
field_0x68 = 0;
field_0x6c = -1;
field_0x70 = 0;
field_0x74 = 0;
OSInitMutex(&mMutex);
}
/* 80287DA4-80287E34 .text loadSetup__Q28JASystem8TWaveArcFUl */
void JASystem::TWaveArc::loadSetup(unsigned long) {
/* Nonmatching */
bool JASystem::TWaveArc::loadSetup(u32 param_1) {
OSLockMutex(&mMutex);
if (field_0x74 != param_1) {
OSUnlockMutex(&mMutex);
return false;
}
if (field_0x68 != 1) {
OSUnlockMutex(&mMutex);
return false;
}
field_0x4c = 1;
field_0x68 = 2;
OSUnlockMutex(&mMutex);
return true;
}
/* 80287E34-80287EB8 .text eraseSetup__Q28JASystem8TWaveArcFv */
void JASystem::TWaveArc::eraseSetup() {
/* Nonmatching */
bool JASystem::TWaveArc::eraseSetup() {
OSLockMutex(&mMutex);
if (field_0x68 == 0) {
OSUnlockMutex(&mMutex);
return false;
}
if (field_0x68 == 1) {
field_0x68 = 0;
OSUnlockMutex(&mMutex);
return false;
}
field_0x4c = 0;
field_0x68 = 0;
OSUnlockMutex(&mMutex);
return true;
}
struct unk_message {
JASystem::TWaveArc* field_0x0;
int field_0x4;
void* field_0x8;
u32 field_0xc;
};
/* 80287EB8-80287F48 .text loadToAramCallback__Q28JASystem8TWaveArcFPv */
void JASystem::TWaveArc::loadToAramCallback(void*) {
s32 JASystem::TWaveArc::loadToAramCallback(void* param_1) {
/* Nonmatching */
unk_message* msg = (unk_message*)param_1;
if (JKRDvdAramRipper::loadToAram(msg->field_0x4, u32(msg->field_0x8), EXPAND_SWITCH_UNKNOWN0, 0, 0) == 0) {
return -1;
}
TWaveArc* waveArc = msg->field_0x0;
if (!waveArc->loadSetup(msg->field_0xc)) {
return 0;
}
waveArc->onLoadDone();
return 0;
}
/* 80287F48-80287FE4 .text sendLoadCmd__Q28JASystem8TWaveArcFv */
void JASystem::TWaveArc::sendLoadCmd() {
bool JASystem::TWaveArc::sendLoadCmd() {
/* Nonmatching */
OSLockMutex(&mMutex);
field_0x4c = 0;
field_0x68 = 1;
unk_message msg;
msg.field_0x0 = this;
msg.field_0x4 = field_0x6c;
msg.field_0x8 = field_0x4.mBase;
msg.field_0xc = ++field_0x74;
OSUnlockMutex(&mMutex);
if (!Dvd::sendCmdMsg(loadToAramCallback, &msg, sizeof(msg))) {
field_0x4.free();
return false;
}
return true;
}
/* 80287FE4-802880A0 .text load__Q28JASystem8TWaveArcFPQ38JASystem6Kernel5THeap */
void JASystem::TWaveArc::load(JASystem::Kernel::THeap*) {
bool JASystem::TWaveArc::load(Kernel::THeap*) {
/* Nonmatching */
}
/* 802880A0-802880C4 .text erase__Q28JASystem8TWaveArcFv */
void JASystem::TWaveArc::erase() {
/* Nonmatching */
bool JASystem::TWaveArc::erase() {
return field_0x4.free();
}
/* 802880C4-8028810C .text onDispose__Q28JASystem8TWaveArcFv */
void JASystem::TWaveArc::onDispose() {
/* Nonmatching */
if (eraseSetup()) {
onEraseDone();
}
}
/* 8028810C-8028816C .text setEntryNum__Q28JASystem8TWaveArcFl */
void JASystem::TWaveArc::setEntryNum(long) {
void JASystem::TWaveArc::setEntryNum(s32) {
/* Nonmatching */
}
/* 8028816C-80288214 .text setFileName__Q28JASystem8TWaveArcFPCc */
void JASystem::TWaveArc::setFileName(const char*) {
/* Nonmatching */
void JASystem::TWaveArc::setFileName(const char* param_1) {
char* currentDir = WaveArcLoader::getCurrentDir();
size_t size = strlen(currentDir);
size += strlen(param_1);
char* str = new (JKRGetSystemHeap(), -4) char[size + 1];
strcpy(str, currentDir);
strcat(str, param_1);
str[size] = 0;
s32 entry = DVDConvertPathToEntrynum(str);
delete[] str;
if (entry >= 0) {
setEntryNum(entry);
}
}
/* 80288214-8028828C .text __dt__Q38JASystem6Kernel5THeapFv */
JASystem::Kernel::THeap::~THeap() {
/* Nonmatching */
}
+10 -5
View File
@@ -3,11 +3,16 @@
// Translation Unit: JASWaveBank.cpp
//
#include "JASWaveBank.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASWaveBank.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
JKRHeap* JASystem::TWaveBank::sCurrentHeap;
/* 8028455C-80284570 .text getCurrentHeap__Q28JASystem9TWaveBankFv */
void JASystem::TWaveBank::getCurrentHeap() {
/* Nonmatching */
JKRHeap* JASystem::TWaveBank::getCurrentHeap() {
if (sCurrentHeap) {
return sCurrentHeap;
}
return JASDram;
}
+61 -14
View File
@@ -3,41 +3,88 @@
// Translation Unit: JASWaveBankMgr.cpp
//
#include "JASWaveBankMgr.h"
#include "dolphin/types.h"
#include "JSystem/JAudio/JASWaveBankMgr.h"
#include "JSystem/JAudio/JASBasicWaveBank.h"
#include "JSystem/JAudio/JASCalc.h"
#include "JSystem/JAudio/JASSimpleWaveBank.h"
#include "JSystem/JAudio/JASSystemHeap.h"
#include "JSystem/JAudio/JASWSParser.h"
#include "JSystem/JAudio/JASWaveArcLoader.h"
#include "JSystem/JAudio/JASWaveBank.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
int JASystem::WaveBankMgr::sTableSize;
JASystem::TWaveBank** JASystem::WaveBankMgr::sWaveBank;
/* 802882CC-8028835C .text init__Q28JASystem11WaveBankMgrFi */
void JASystem::WaveBankMgr::init(int) {
/* Nonmatching */
void JASystem::WaveBankMgr::init(int param_1) {
u32 size = param_1 * 4;
sWaveBank = (TWaveBank**) new (JASDram, 0) u8[size];
JUT_ASSERT(39, sWaveBank != 0);
Calc::bzero(sWaveBank, size);
sTableSize = param_1;
}
/* 8028835C-80288390 .text getWaveBank__Q28JASystem11WaveBankMgrFi */
void JASystem::WaveBankMgr::getWaveBank(int) {
/* Nonmatching */
JASystem::TWaveBank* JASystem::WaveBankMgr::getWaveBank(int banknum) {
if (banknum < 0) {
return NULL;
}
if (banknum >= sTableSize) {
return NULL;
}
return sWaveBank[banknum];
}
/* 80288390-80288444 .text registWaveBank__Q28JASystem11WaveBankMgrFiPQ28JASystem9TWaveBank */
void JASystem::WaveBankMgr::registWaveBank(int, JASystem::TWaveBank*) {
bool JASystem::WaveBankMgr::registWaveBank(int banknum, TWaveBank* param_2) {
/* Nonmatching */
JUT_ASSERT(57, banknum >= 0);
JUT_ASSERT(58, banknum < sTableSize);
sWaveBank[banknum] = param_2;
return true;
}
/* 80288444-802884BC .text registWaveBankWS__Q28JASystem11WaveBankMgrFiPv */
void JASystem::WaveBankMgr::registWaveBankWS(int, void*) {
bool JASystem::WaveBankMgr::registWaveBankWS(int param_1, void* param_2) {
/* Nonmatching */
TWaveBank* bank;
if (WSParser::getGroupCount(param_2) == 1) {
bank = WSParser::createSimpleWaveBank(param_2);
} else {
bank = WSParser::createBasicWaveBank(param_2);
}
if (!bank) {
return false;
}
return registWaveBank(param_1, bank);
}
/* 802884BC-8028850C .text getWaveArc__Q28JASystem11WaveBankMgrFii */
void JASystem::WaveBankMgr::getWaveArc(int, int) {
/* Nonmatching */
JASystem::TWaveArc* JASystem::WaveBankMgr::getWaveArc(int banknum, int param_2) {
TWaveBank* bank = getWaveBank(banknum);
if (bank == NULL) {
return NULL;
}
return bank->getWaveArc(param_2);
}
/* 8028850C-80288550 .text loadWave__Q28JASystem11WaveBankMgrFiiPQ38JASystem6Kernel5THeap */
void JASystem::WaveBankMgr::loadWave(int, int, JASystem::Kernel::THeap*) {
/* Nonmatching */
bool JASystem::WaveBankMgr::loadWave(int banknum, int param_2, Kernel::THeap* param_3) {
TWaveArc* arc = getWaveArc(banknum, param_2);
if (arc == NULL) {
return false;
}
return arc->load(param_3);
}
/* 80288550-80288594 .text eraseWave__Q28JASystem11WaveBankMgrFii */
void JASystem::WaveBankMgr::eraseWave(int, int) {
bool JASystem::WaveBankMgr::eraseWave(int banknum, int param_2) {
/* Nonmatching */
TWaveArc* arc = getWaveArc(banknum, param_2);
if (arc == NULL) {
return false;
}
return arc->erase() != false;
}