From 82fd45e966bc26081c85da6f258363c5e441ae8c Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Thu, 23 Nov 2023 20:42:57 -0500 Subject: [PATCH] Minor fixes to match 7 JAS TUs --- configure.py | 14 +++++++------- include/JSystem/JAudio/JASAudioThread.h | 2 +- include/JSystem/JAudio/JASBasicInst.h | 2 +- include/JSystem/JAudio/JASDriverTables.h | 4 ++-- include/JSystem/JAudio/JASInst.h | 1 - src/JSystem/JAudio/JASAudioThread.cpp | 13 +++++++------ src/JSystem/JAudio/JASBasicInst.cpp | 5 ++--- src/JSystem/JAudio/JASDSPInterface.cpp | 12 ++++++------ src/JSystem/JAudio/JASDriverIF.cpp | 10 ++++++++-- src/JSystem/JAudio/JASDriverTables.cpp | 2 +- src/JSystem/JAudio/JASHeapCtrl.cpp | 3 +-- src/JSystem/JAudio/JASWaveArcLoader.cpp | 7 +++++-- 12 files changed, 41 insertions(+), 34 deletions(-) diff --git a/configure.py b/configure.py index ad8325300..971ff7109 100644 --- a/configure.py +++ b/configure.py @@ -656,7 +656,7 @@ config.libs = [ Object(Matching, "JSystem/JAudio/JASCallback.cpp"), Object(Matching, "JSystem/JAudio/JASRate.cpp"), Object(NonMatching, "JSystem/JAudio/JASHardStream.cpp"), - Object(NonMatching, "JSystem/JAudio/JASHeapCtrl.cpp"), + Object(Matching, "JSystem/JAudio/JASHeapCtrl.cpp"), Object(Matching, "JSystem/JAudio/JASResArcLoader.cpp"), Object(Matching, "JSystem/JAudio/JASProbe.cpp"), Object(Matching, "JSystem/JAudio/JASKernelDebug.cpp"), @@ -674,7 +674,7 @@ config.libs = [ Object(Matching, "JSystem/JAudio/JASBank.cpp"), Object(Matching, "JSystem/JAudio/JASWaveBank.cpp"), Object(Matching, "JSystem/JAudio/JASBasicBank.cpp"), - Object(NonMatching, "JSystem/JAudio/JASBasicInst.cpp"), + Object(Matching, "JSystem/JAudio/JASBasicInst.cpp"), Object(NonMatching, "JSystem/JAudio/JASDrumSet.cpp"), Object(NonMatching, "JSystem/JAudio/JASBasicWaveBank.cpp"), Object(Matching, "JSystem/JAudio/JASSimpleWaveBank.cpp"), @@ -683,20 +683,20 @@ config.libs = [ Object(NonMatching, "JSystem/JAudio/JASInstRand.cpp"), Object(NonMatching, "JSystem/JAudio/JASWSParser.cpp"), Object(NonMatching, "JSystem/JAudio/JASBNKParser.cpp"), - Object(NonMatching, "JSystem/JAudio/JASWaveArcLoader.cpp"), + Object(Matching, "JSystem/JAudio/JASWaveArcLoader.cpp"), Object(Matching, "JSystem/JAudio/JASWaveBankMgr.cpp"), Object(NonMatching, "JSystem/JAudio/JASBankMgr.cpp"), - Object(NonMatching, "JSystem/JAudio/JASAudioThread.cpp"), + Object(Matching, "JSystem/JAudio/JASAudioThread.cpp"), Object(NonMatching, "JSystem/JAudio/JASDSPBuf.cpp"), Object(NonMatching, "JSystem/JAudio/JASDSPChannel.cpp"), - Object(NonMatching, "JSystem/JAudio/JASDSPInterface.cpp"), - Object(NonMatching, "JSystem/JAudio/JASDriverIF.cpp"), + Object(Matching, "JSystem/JAudio/JASDSPInterface.cpp"), + Object(Matching, "JSystem/JAudio/JASDriverIF.cpp"), Object(Matching, "JSystem/JAudio/JASChGlobal.cpp"), Object(NonMatching, "JSystem/JAudio/JASChAllocQueue.cpp"), Object(NonMatching, "JSystem/JAudio/JASChannel.cpp"), Object(NonMatching, "JSystem/JAudio/JASChannelMgr.cpp"), Object(NonMatching, "JSystem/JAudio/JASOscillator.cpp"), - Object(NonMatching, "JSystem/JAudio/JASDriverTables.cpp"), + Object(Matching, "JSystem/JAudio/JASDriverTables.cpp"), Object(Matching, "JSystem/JAudio/dspproc.c", extra_cflags="-lang c++ -O4 -func_align 32"), Object(NonMatching, "JSystem/JAudio/dsptask.c", extra_cflags="-lang c++ -O4 -func_align 32"), Object(Matching, "JSystem/JAudio/osdsp.c", extra_cflags="-lang c++ -O4 -func_align 32 -str nopool"), diff --git a/include/JSystem/JAudio/JASAudioThread.h b/include/JSystem/JAudio/JASAudioThread.h index ca26d7bc5..1dc995d22 100644 --- a/include/JSystem/JAudio/JASAudioThread.h +++ b/include/JSystem/JAudio/JASAudioThread.h @@ -15,7 +15,7 @@ namespace JASystem { void start(JKRSolidHeap*, u32, u32); extern OSThread sAudioThread; - extern u8 saAudioStack[4096]; + extern u8 saAudioStack[4096] __attribute__((aligned(32))); extern OSMessageQueue sAudioprocMQ; extern OSMessage saAudioMsgBuf[16]; extern u32 sAudioprocMQInit; diff --git a/include/JSystem/JAudio/JASBasicInst.h b/include/JSystem/JAudio/JASBasicInst.h index 04153714f..474a38063 100644 --- a/include/JSystem/JAudio/JASBasicInst.h +++ b/include/JSystem/JAudio/JASBasicInst.h @@ -35,7 +35,7 @@ namespace JASystem { TBasicInst(); ~TBasicInst(); bool getParam(int, int, TInstParam*) const; - int getKeymapIndex(int) const; + virtual int getKeymapIndex(int) const; void setKeyRegionCount(u32); void setEffectCount(u32); void setEffect(int, TInstEffect*); diff --git a/include/JSystem/JAudio/JASDriverTables.h b/include/JSystem/JAudio/JASDriverTables.h index b43306c3f..406606422 100644 --- a/include/JSystem/JAudio/JASDriverTables.h +++ b/include/JSystem/JAudio/JASDriverTables.h @@ -8,8 +8,8 @@ namespace JASystem { extern f32 C5BASE_PITCHTABLE[]; } namespace DSPInterface { - extern u16 DSPADPCM_FILTER[]; - extern u16 DSPRES_FILTER[]; + extern u16 DSPADPCM_FILTER[] __attribute__((aligned(32))); + extern u16 DSPRES_FILTER[] __attribute__((aligned(32))); } } diff --git a/include/JSystem/JAudio/JASInst.h b/include/JSystem/JAudio/JASInst.h index 6043cbf75..331681986 100644 --- a/include/JSystem/JAudio/JASInst.h +++ b/include/JSystem/JAudio/JASInst.h @@ -29,7 +29,6 @@ namespace JASystem { virtual ~TInst() {} virtual bool getParam(int, int, TInstParam*) const = 0; virtual u32 getType() const = 0; - virtual int getKeymapIndex(int) const = 0; }; } diff --git a/src/JSystem/JAudio/JASAudioThread.cpp b/src/JSystem/JAudio/JASAudioThread.cpp index e937c97dc..a130dbc06 100644 --- a/src/JSystem/JAudio/JASAudioThread.cpp +++ b/src/JSystem/JAudio/JASAudioThread.cpp @@ -22,6 +22,7 @@ OSThread JASystem::TAudioThread::sAudioThread; u8 JASystem::TAudioThread::saAudioStack[4096]; OSMessageQueue JASystem::TAudioThread::sAudioprocMQ; +OSMessage JASystem::TAudioThread::saAudioMsgBuf[16]; u32 JASystem::TAudioThread::sAudioprocMQInit; int JASystem::TAudioThread::sbIsPrioritySet; @@ -41,12 +42,10 @@ void JASystem::TAudioThread::syncAudio() { if (sAudioprocMQInit) { OSSendMessage(&sAudioprocMQ, NULL, OS_MESSAGE_NOBLOCK); } - /* Nonmatching */ } /* 80288F88-80289130 .text audioproc__Q28JASystem12TAudioThreadFPv */ void* JASystem::TAudioThread::audioproc(void*) { - /* Nonmatching */ JKRThread thread(&sAudioThread, 0); i_OSInitFastCast(); OSInitMessageQueue(&sAudioprocMQ, saAudioMsgBuf, 16); @@ -93,14 +92,14 @@ void* JASystem::TAudioThread::audioproc(void*) { /* 80289130-802891F0 .text syncDSP__Q28JASystem12TAudioThreadFPv */ void JASystem::TAudioThread::syncDSP(void*) { - /* Nonmatching */ while (!DSPCheckMailFromDSP()) {} u32 var1 = DSPReadMailFromDSP(); if (var1 >> 16 != DSPInterface::JAS_DSP_PREFIX) { - OSReport("----- syncDSP : Mail format error %x\n"); + OSReport("----- syncDSP : Mail format error %x\n", var1); return; } - if ((var1 & 0xff00) == 0xff00) { + switch (var1 & 0xff00) { + case 0xff00: if (sAudioprocMQInit) { if (!OSSendMessage(&sAudioprocMQ, OSMessage(1), OS_MESSAGE_NOBLOCK)) { OSReport("----- syncDSP : Send Miss\n"); @@ -108,8 +107,10 @@ void JASystem::TAudioThread::syncDSP(void*) { } else { DSPReleaseHalt(); } - } else { + break; + default: DspFinishWork(var1); + break; } } diff --git a/src/JSystem/JAudio/JASBasicInst.cpp b/src/JSystem/JAudio/JASBasicInst.cpp index f004afd52..1fe5be921 100644 --- a/src/JSystem/JAudio/JASBasicInst.cpp +++ b/src/JSystem/JAudio/JASBasicInst.cpp @@ -31,7 +31,6 @@ JASystem::TBasicInst::~TBasicInst() { /* 80284914-80284B4C .text getParam__Q28JASystem10TBasicInstCFiiPQ28JASystem10TInstParam */ bool JASystem::TBasicInst::getParam(int key, int velo, TInstParam* param) const { - /* Nonmatching */ param->field_0x0 = 0; param->field_0x38 = 0; param->field_0x8 = mOsc; @@ -66,8 +65,8 @@ bool JASystem::TBasicInst::getParam(int key, int velo, TInstParam* param) const } const TKeymap* keymap = NULL; for (int i = 0; i < mKeyRegionCount; i++) { - keymap = &mKeymap[i]; - if (key <= keymap->mBaseKey) { + if (key <= mKeymap[i].mBaseKey) { + keymap = &mKeymap[i]; param->field_0x3c = i; break; } diff --git a/src/JSystem/JAudio/JASDSPInterface.cpp b/src/JSystem/JAudio/JASDSPInterface.cpp index 66580b090..ce633615e 100644 --- a/src/JSystem/JAudio/JASDSPInterface.cpp +++ b/src/JSystem/JAudio/JASDSPInterface.cpp @@ -133,16 +133,16 @@ void JASystem::DSPInterface::DSPBuffer::allocInit() { /* 8028A574-8028A5D8 .text playStart__Q38JASystem12DSPInterface9DSPBufferFv */ void JASystem::DSPInterface::DSPBuffer::playStart() { - /* Nonmatching */ field_0x10c = 0; field_0x60 = 0; field_0x8 = 1; field_0x66 = 0; - for (int i = 0; i < 4; i++) { + int i; + for (i = 0; i < 4; i++) { field_0x78[i] = 0; field_0xa8[i] = 0; } - for (int i = 0; i < 20; i++) { + for (i = 0; i < 20; i++) { field_0x80[i] = 0; } field_0x0 = 1; @@ -275,12 +275,12 @@ void JASystem::DSPInterface::DSPBuffer::flushChannel() { /* 8028A828-8028A884 .text initFilter__Q38JASystem12DSPInterface9DSPBufferFv */ void JASystem::DSPInterface::DSPBuffer::initFilter() { - /* Nonmatching */ - for (int i = 0; i < 8; i++) { + int i; + for (i = 0; i < 8; i++) { field_0x120[i] = 0; } field_0x120[0] = 0x7fff; - for (int i = 0; i < 4; i++) { + for (i = 0; i < 4; i++) { field_0x148[i] = 0; } field_0x148[0] = 0x7fff; diff --git a/src/JSystem/JAudio/JASDriverIF.cpp b/src/JSystem/JAudio/JASDriverIF.cpp index 220df9dc4..c4a1cce4e 100644 --- a/src/JSystem/JAudio/JASDriverIF.cpp +++ b/src/JSystem/JAudio/JASDriverIF.cpp @@ -11,7 +11,6 @@ /* 8028A978-8028A9A0 .text init__Q28JASystem6DriverFv */ void JASystem::Driver::init() { - /* Nonmatching */ DSPInterface::initBuffer(); TDSPChannel::initAll(); TGlobalChannel::init(); @@ -19,9 +18,16 @@ void JASystem::Driver::init() { u16 JASystem::Driver::MAX_MIXERLEVEL = 0x2ee0; +static void dummy() { + OSReport("JASDriverIF.cpp"); + OSReport("(0.0 <= channel_level) && (channel_level <= 2.0)"); + OSReport("Halt"); + OSReport("(0.0 <= auto_level) && (auto_level <= 2.0)"); + OSReport("(0.0 <= dsp_level) && (dsp_level <= 8.0)"); +} + /* 8028A9A0-8028AAC4 .text setMixerLevel__Q28JASystem6DriverFff */ void JASystem::Driver::setMixerLevel(f32 channel_level, f32 dsp_level) { - /* Nonmatching */ JUT_ASSERT(58, (0.0 <= channel_level) && (channel_level <= 2.0)); JUT_ASSERT(59, (0.0 <= dsp_level) && (dsp_level <= 8.0)); MAX_MIXERLEVEL = channel_level * 16383.5f; diff --git a/src/JSystem/JAudio/JASDriverTables.cpp b/src/JSystem/JAudio/JASDriverTables.cpp index c4ddabec9..c49e3619b 100644 --- a/src/JSystem/JAudio/JASDriverTables.cpp +++ b/src/JSystem/JAudio/JASDriverTables.cpp @@ -94,7 +94,7 @@ u16 JASystem::DSPInterface::DSPRES_FILTER[] = { 0x4000, 0x3800, 0x3000, 0x2800, 0x2000, 0x1800, 0x1000, 0x0800, 0x0000, 0xF801, 0xF001, 0xE801, 0xE001, 0xD801, 0xD001, 0xC801, 0xC001, 0xB801, 0xB001, 0xA801, 0xA001, 0x9801, 0x9001, 0x8801, - 0x0000, 0x0000, 0x9000, 0x9800, 0xA000, 0xA800, 0xB000, 0xB800, + 0x8001, 0x8800, 0x9000, 0x9800, 0xA000, 0xA800, 0xB000, 0xB800, 0xC000, 0xC800, 0xD000, 0xD800, 0xE000, 0xE800, 0xF000, 0xF800, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, diff --git a/src/JSystem/JAudio/JASHeapCtrl.cpp b/src/JSystem/JAudio/JASHeapCtrl.cpp index 9d69be89c..5734a2373 100644 --- a/src/JSystem/JAudio/JASHeapCtrl.cpp +++ b/src/JSystem/JAudio/JASHeapCtrl.cpp @@ -198,14 +198,13 @@ JASystem::Kernel::TSolidHeap::TSolidHeap() { /* 8027D370-8027D40C .text alloc__Q38JASystem6Kernel10TSolidHeapFl */ void* JASystem::Kernel::TSolidHeap::alloc(s32 size) { - /* Nonmatching */ u32 tmp1 = OSRoundUp32B(size); if (field_0x0 == 0) { OSReport("[Nas_HeapAlloc] ヒープが取得できません(ヒープ取得元存在せず)。\n"); return 0; } u32 tmp2 = field_0x4; - if (tmp2 + tmp1 <= field_0x0 + field_0x8) { + if (field_0x4 + tmp1 <= field_0x0 + field_0x8) { field_0x4 = tmp2 + tmp1; } else { OSReport("[Nas_HeapAlloc] ヒープが取得できません(ヒープの取得元の残りサイズ不足)。\n"); diff --git a/src/JSystem/JAudio/JASWaveArcLoader.cpp b/src/JSystem/JAudio/JASWaveArcLoader.cpp index 13fad4490..e5ca11269 100644 --- a/src/JSystem/JAudio/JASWaveArcLoader.cpp +++ b/src/JSystem/JAudio/JASWaveArcLoader.cpp @@ -32,10 +32,13 @@ JASystem::Kernel::THeap* JASystem::WaveArcLoader::getRootHeap() { char JASystem::WaveArcLoader::sCurrentDir[DIR_MAX] = "/Banks/"; +namespace std { + using ::strlen; +}; + /* 80287C30-80287D24 .text setCurrentDir__Q28JASystem13WaveArcLoaderFPCc */ void JASystem::WaveArcLoader::setCurrentDir(const char* dir) { - /* Nonmatching */ - //JUT_ASSERT(60, std::strlen(dir) < DIR_MAX); + JUT_ASSERT(60, std::strlen(dir) < DIR_MAX); strcpy(sCurrentDir, dir); int len = strlen(sCurrentDir); if (sCurrentDir[len - 1] == '/') {