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 c44ea2139d
commit 5650c7fe08
94 changed files with 3803 additions and 7254 deletions
+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];