summaryrefslogtreecommitdiff
path: root/src/JSystem/JAudio2
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2025-04-09 16:45:30 -0400
committerGitHub <noreply@github.com>2025-04-09 13:45:30 -0700
commitc6f76e7240dde8bbcf40a88d6d88cf87cab616b4 (patch)
treebf9afbb1c32e66f45bdba30f61a9e4f0d92f804a /src/JSystem/JAudio2
parent6672817e41064e04951ec28d51070b66fc8377ac (diff)
Various JSystem work (#2383)
* JKernel and JStudio cleanup * JMessage cleanup * JAudio cleanup * JASBNKParser work * functionvalue work * fvb work * J2D and J3D cleanup * steal from tww * J2DPictureEx mostly done * fix build
Diffstat (limited to 'src/JSystem/JAudio2')
-rw-r--r--src/JSystem/JAudio2/JASAiCtrl.cpp2
-rw-r--r--src/JSystem/JAudio2/JASAramStream.cpp12
-rw-r--r--src/JSystem/JAudio2/JASBNKParser.cpp182
-rw-r--r--src/JSystem/JAudio2/JASBasicWaveBank.cpp59
-rw-r--r--src/JSystem/JAudio2/JASSeqParser.cpp27
-rw-r--r--src/JSystem/JAudio2/JASTrack.cpp1
-rw-r--r--src/JSystem/JAudio2/JAUSectionHeap.cpp24
7 files changed, 176 insertions, 131 deletions
diff --git a/src/JSystem/JAudio2/JASAiCtrl.cpp b/src/JSystem/JAudio2/JASAiCtrl.cpp
index cb5a76edd9..25141ceb35 100644
--- a/src/JSystem/JAudio2/JASAiCtrl.cpp
+++ b/src/JSystem/JAudio2/JASAiCtrl.cpp
@@ -16,10 +16,8 @@
#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.h>
-#include <dolphin/os.h>
/* 80431C58-80431C68 05E978 000C+04 2/2 0/0 0/0 .bss sDmaDacBuffer__9JASDriver */
s16* JASDriver::sDmaDacBuffer[3];
diff --git a/src/JSystem/JAudio2/JASAramStream.cpp b/src/JSystem/JAudio2/JASAramStream.cpp
index 4a56d47436..9f2596f5e9 100644
--- a/src/JSystem/JAudio2/JASAramStream.cpp
+++ b/src/JSystem/JAudio2/JASAramStream.cpp
@@ -29,8 +29,6 @@ u32 JASAramStream::sChannelMax;
/* 80451260 0001+00 data_80451260 None */
/* 80451261 0001+00 data_80451261 None */
/* 80451262 0006+00 data_80451262 None */
-extern bool struct_80451260;
-extern bool struct_80451261;
bool struct_80451260;
bool struct_80451261;
@@ -331,7 +329,7 @@ bool JASAramStream::load() {
}
field_0x10c++;
if (field_0x10c >= field_0x108) {
- u32 uvar8 = mBlock - 1 + field_0x108;
+ u32 uvar8 = field_0x108 - 1 + mBlock;
if (mLoop) {
while (uvar8 > loop_end_block) {
uvar8 -= loop_end_block;
@@ -364,7 +362,6 @@ s32 JASAramStream::channelProcCallback(void* i_this) {
/* 80296D94-80296DF0 2916D4 005C+00 2/1 0/0 0/0 .text dvdErrorCheck__13JASAramStreamFPv
*/
-// NONMATCHING supposed to use a switch table
s32 JASAramStream::dvdErrorCheck(void* param_0) {
switch (DVDGetDriveStatus()) {
case DVD_STATE_END:
@@ -375,7 +372,6 @@ s32 JASAramStream::dvdErrorCheck(void* param_0) {
case DVD_STATE_WAITING:
case DVD_STATE_COVER_CLOSED:
case DVD_STATE_NO_DISK:
- case DVD_STATE_COVER_OPEN:
case DVD_STATE_WRONG_DISK:
case DVD_STATE_MOTOR_STOPPED:
case DVD_STATE_IGNORED:
@@ -436,7 +432,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
i_dspChannel->field_0x110 = 0;
field_0x120 = 0;
field_0x12c |= 2;
- if (field_0x0c4 < -1) {
+ if (field_0x0c4 < 0xffffffff) {
field_0x0c4++;
}
field_0x0c0 = false;
@@ -447,7 +443,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
}
f32 fvar1 = field_0x0c4;
fvar1 *= mLoopEnd - mLoopStart;
- if (field_0x0c4 < -1) {
+ if (field_0x0c4 < 0xffffffff) {
fvar1 += field_0x0b8;
}
fvar1 /= field_0x164;
@@ -579,7 +575,7 @@ void JASAramStream::updateChannel(u32 i_callbackType, JASChannel* i_channel,
}
/* 802974AC-80297658 291DEC 01AC+00 1/1 0/0 0/0 .text channelProc__13JASAramStreamFv */
-// NONMATCHING instruction ordering
+// NONMATCHING instruction ordering / regalloc
s32 JASAramStream::channelProc() {
OSMessage msg;
while (OSReceiveMessage(&field_0x020, &msg, OS_MESSAGE_NOBLOCK)) {
diff --git a/src/JSystem/JAudio2/JASBNKParser.cpp b/src/JSystem/JAudio2/JASBNKParser.cpp
index 273112059f..0fe6b9b6eb 100644
--- a/src/JSystem/JAudio2/JASBNKParser.cpp
+++ b/src/JSystem/JAudio2/JASBNKParser.cpp
@@ -59,7 +59,6 @@ JASBNKParser::Ver1::TChunk* JASBNKParser::Ver1::findChunk(void const* stream, u3
/* 8029963C-80299A3C 293F7C 0400+00 1/1 0/0 0/0 .text
* createBasicBank__Q212JASBNKParser4Ver1FPCvP7JKRHeap */
-// NONMATCHING instruction ordering, regalloc
JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* heap) {
if (heap == NULL) {
heap = JASDram;
@@ -74,44 +73,40 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
TOscChunk* osc_chunk = (TOscChunk*)findChunk(stream, 'OSCT');
TListChunk* list_chunk = (TListChunk*)findChunk(stream, 'LIST');
- void* envt = new (heap, 2) u8[envt_chunk->mSize];
+ u8* 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;
+ u32* ptr = &osc_chunk->mCount;
+ u32 count = *ptr++;
JASOscillator::Data* osc_data = new (heap, 0) JASOscillator::Data[count];
- for (int i = 0; i < count; i++, osc++) {
+ for (int i = 0; i < count; i++, ptr += sizeof(TOsc) >> 2) {
+ TOsc* osc = (TOsc*)ptr;
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);
+ data->mTable = (JASOscillator::Point*)(envt + osc->mTableOffset);
+ data->_0C = (JASOscillator::Point*)(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) {
+ u32* data = (u32*)((int)stream + list_chunk->mOffsets[i]);
+ switch (*data++) {
case 'Inst': {
JASBasicInst* inst = new (heap, 0) JASBasicInst();
- u32 count = *data;
- data++;
+ u32 count = *data++;
for (int j = 0; j < count; j++) {
- u32 index = *data;
- data++;
+ u32 index = *data++;
inst->setOsc(j, &osc_data[index]);
}
- count = *data;
- data++;
+ count = *data++;
for (int j = 0; j < count; j++) {
data++;
}
- count = *data;
- data++;
+ count = *data++;
inst->setKeyRegionCount(count, heap);
for (int j = 0; j < count; j++) {
JASBasicInst::TKeymap* keymap = inst->getKeyRegion(j);
@@ -133,12 +128,10 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
case 'Perc': {
JASDrumSet* drum = new (heap, 0) JASDrumSet();
- u32 count = *data;
- data++;
+ u32 count = *data++;
drum->newPercArray(count, heap);
for (int j = 0; j < count; j++) {
- u32 offset = *data;
- data++;
+ u32 offset = *data++;
if (offset != 0) {
JASDrumSet::TPerc* perc = new (heap, 0) JASDrumSet::TPerc();
u32* ptr = (u32*)((int)stream + offset);
@@ -148,8 +141,7 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
perc->setPan((f32)perc_data->mPan / 127.0f);
perc->setRelease(perc_data->mRelease);
ptr = (u32*)&perc_data->field_0xc;
- u32 count2 = *ptr;
- ptr++;
+ u32 count2 = *ptr++;
for (int k = 0; k < count2; k++) {
ptr++;
}
@@ -173,20 +165,150 @@ JASBasicBank* JASBNKParser::Ver1::createBasicBank(void const* stream, JKRHeap* h
/* 80299A3C-80299E68 29437C 042C+00 1/1 0/0 0/0 .text
* createBasicBank__Q212JASBNKParser4Ver0FPCvP7JKRHeap */
+// NONMATCHING
JASBasicBank* JASBNKParser::Ver0::createBasicBank(void const* stream, JKRHeap* heap) {
- // NONMATCHING
+ THeader const* header = (THeader*)stream;
+
+ if (heap == NULL) {
+ heap = JASDram;
+ }
+
+ JASBasicBank* bank = new (heap, 0) JASBasicBank();
+ if (bank == NULL) {
+ return NULL;
+ }
+
+ bank->newInstTable(0x80, heap);
+
+ for (int i = 0; i < 0x80; i++) {
+ TInst* tinst = header->mOffsets.mInstOffset[i].ptr(stream);
+ if (tinst != NULL) {
+ JASBasicInst* inst = new (heap, 0) JASBasicInst();
+ inst->setVolume(tinst->mVolume);
+ inst->setPitch(tinst->mPitch);
+
+ int osc_idx = 0;
+ for (int j = 0; j < 2; j++) {
+ TOsc* tosc = tinst->mOscOffset[j].ptr(stream);
+ if (tosc != NULL) {
+ JASOscillator::Data* osc_data = findOscPtr(bank, header, tosc);
+ if (osc_data != NULL) {
+ inst->setOsc(osc_idx, osc_data);
+ } else {
+ osc_data = new (heap, 0) JASOscillator::Data();
+ osc_data->mTarget = tosc->mTarget;
+ osc_data->_04 = tosc->field_0x4;
+ u32 size;
+
+ JASOscillator::Point* points = tosc->mPointOffset.ptr(stream);
+ if (points != NULL) {
+ size = getOscTableEndPtr(points) - points;
+ JASOscillator::Point* table = new (heap, 0) JASOscillator::Point[size];
+ JASCalc::bcopy(points, table, size * sizeof(JASOscillator::Point));
+ osc_data->mTable = table;
+ } else {
+ osc_data->mTable = NULL;
+ }
+
+ points = tosc->field_0xc.ptr(stream);
+ if (points != NULL) {
+ size = getOscTableEndPtr(points) - points;
+ JASOscillator::Point* table = new (heap, 0) JASOscillator::Point[size];
+ JASCalc::bcopy(points, table, size * sizeof(JASOscillator::Point));
+ osc_data->_0C = table;
+ } else {
+ osc_data->_0C = NULL;
+ }
+
+ osc_data->mScale = tosc->mScale;
+ osc_data->_14 = tosc->field_0x14;
+ inst->setOsc(osc_idx, osc_data);
+ }
+
+ osc_idx++;
+ }
+ }
+
+ inst->setKeyRegionCount(tinst->mKeyRegionCount, heap);
+ for (int j = 0; j < tinst->mKeyRegionCount; j++) {
+ JASBasicInst::TKeymap* keymap = inst->getKeyRegion(j);
+ TKeymap* tkeymap = tinst->mKeymapOffset[j].ptr(stream);
+ keymap->setHighKey(tkeymap->mHighKey);
+ TVmap* tvmap = tkeymap->mVmapOffset.ptr(stream);
+ keymap->field_0x4 = JSULoHalf(tvmap->field_0x4);
+ keymap->field_0x8 = tvmap->field_0x8;
+ keymap->field_0xc = tvmap->field_0xc;
+ }
+
+ bank->setInst(i, inst);
+ }
+ }
+
+ for (int i = 0; i < 12; i++) {
+ TPerc* tperc = header->mOffsets.mPercOffset[i].ptr(stream);
+ if (tperc != NULL) {
+ JASDrumSet* drumset = new (heap, 0) JASDrumSet();
+ drumset->newPercArray(0x80, heap);
+
+ for (int j = 0; j < 0x80; j++) {
+ TPmap* tpmap = tperc->mPmapOffset[j].ptr(stream);
+ if (tpmap != NULL) {
+ JASDrumSet::TPerc* perc = new (heap, 0) JASDrumSet::TPerc();
+ perc->setVolume(tpmap->mVolume);
+ perc->setPitch(tpmap->mPitch);
+ if (tperc->mMagic == 'PER2') {
+ perc->setPan(tperc->mPan[j] / 127.0f);
+ perc->setRelease(tperc->mRelease[j]);
+ }
+ TVmap* vmap = tpmap->mVmapOffset.ptr(stream);
+ perc->field_0xe = JSULoHalf(vmap->field_0x4);
+ perc->field_0x10 = vmap->field_0x8;
+ perc->field_0x14 = vmap->field_0xc;
+ drumset->setPerc(j, perc);
+ }
+ }
+
+ bank->setInst(i + 0xe4, drumset);
+ }
+ }
+
+ return bank;
}
/* 80299E68-80299F8C 2947A8 0124+00 1/1 0/0 0/0 .text
* findOscPtr__Q212JASBNKParser4Ver0FP12JASBasicBankPCQ312JASBNKParser4Ver07THeaderPCQ312JASBNKParser4Ver04TOsc
*/
-void JASBNKParser::Ver0::findOscPtr(JASBasicBank* param_0, THeader const* param_1,
- TOsc const* param_2) {
- // NONMATCHING
+JASOscillator::Data* JASBNKParser::Ver0::findOscPtr(JASBasicBank* bank, THeader const* header,
+ TOsc const* osc) {
+ TOffsetData const* data = &header->mOffsets;
+ for (int i = 0; i < 0x80; i++) {
+ TInst* tinst = data->mInstOffset[i].ptr(header);
+ if (tinst != NULL) {
+ for (int j = 0; j < 2; j++) {
+ TOsc* tosc = tinst->mOscOffset[j].ptr(header);
+ if (tosc == osc) {
+ JASInst* inst = bank->getInst(i);
+ if (inst != NULL) {
+ JASInstParam param;
+ inst->getParam(0x3c, 0x7f, &param);
+ if (j < param.field_0x1d) {
+ return param.field_0x14[j];
+ }
+ }
+ }
+ }
+ }
+ }
+ return NULL;
}
/* 80299F8C-80299FA0 2948CC 0014+00 1/1 0/0 0/0 .text
* getOscTableEndPtr__Q212JASBNKParser4Ver0FPCQ213JASOscillator5Point */
-void JASBNKParser::Ver0::getOscTableEndPtr(JASOscillator::Point const* param_0) {
- // NONMATCHING
+JASOscillator::Point const* JASBNKParser::Ver0::getOscTableEndPtr(JASOscillator::Point const* points) {
+ s16 tmp;
+ do {
+ tmp = points->_0;
+ points++;
+ } while (tmp <= 10);
+ return points;
}
diff --git a/src/JSystem/JAudio2/JASBasicWaveBank.cpp b/src/JSystem/JAudio2/JASBasicWaveBank.cpp
index d4b44cada2..44d053da00 100644
--- a/src/JSystem/JAudio2/JASBasicWaveBank.cpp
+++ b/src/JSystem/JAudio2/JASBasicWaveBank.cpp
@@ -8,65 +8,6 @@
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JUtility/JUTAssert.h"
-//
-// Types:
-//
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__16JASBasicWaveBankFv();
-extern "C" void __dt__16JASBasicWaveBankFv();
-extern "C" void __dt__Q216JASBasicWaveBank11TWaveHandleFv();
-extern "C" void getWaveGroup__16JASBasicWaveBankFUl();
-extern "C" void setGroupCount__16JASBasicWaveBankFUlP7JKRHeap();
-extern "C" void setWaveTableSize__16JASBasicWaveBankFUlP7JKRHeap();
-extern "C" void incWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup();
-extern "C" void decWaveTable__16JASBasicWaveBankFPCQ216JASBasicWaveBank10TWaveGroup();
-extern "C" void getWaveHandle__16JASBasicWaveBankCFUl();
-extern "C" void
-setWaveInfo__16JASBasicWaveBankFPQ216JASBasicWaveBank10TWaveGroupiUsRC11JASWaveInfo();
-extern "C" void __ct__Q216JASBasicWaveBank10TWaveGroupFv();
-extern "C" void __dt__Q216JASBasicWaveBank10TWaveGroupFv();
-extern "C" void setWaveCount__Q216JASBasicWaveBank10TWaveGroupFUlP7JKRHeap();
-extern "C" void onLoadDone__Q216JASBasicWaveBank10TWaveGroupFv();
-extern "C" void onEraseDone__Q216JASBasicWaveBank10TWaveGroupFv();
-extern "C" void getWaveID__Q216JASBasicWaveBank10TWaveGroupCFi();
-extern "C" void getWavePtr__Q216JASBasicWaveBank11TWaveHandleCFv();
-extern "C" void __dt__11JASWaveBankFv();
-extern "C" void __dt__13JASWaveHandleFv();
-extern "C" void __ct__Q216JASBasicWaveBank11TWaveHandleFv();
-extern "C" void __ct__Q216JASBasicWaveBank14TGroupWaveInfoFv();
-extern "C" void getWaveInfo__Q216JASBasicWaveBank11TWaveHandleCFv();
-extern "C" void getWaveArc__16JASBasicWaveBankFUl();
-extern "C" void getArcCount__16JASBasicWaveBankCFv();
-extern "C" u8 mNoLoad__16JASBasicWaveBank[4 + 4 /* padding */];
-
-//
-// 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 __dla__FPv();
-extern "C" void __destroy_new_array();
-extern "C" void __construct_new_array();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_26();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_29();
-extern "C" u32 one__11JASWaveInfo[1 + 1 /* padding */];
-
-//
-// Declarations:
-//
-
/* 802984F8-80298558 292E38 0060+00 0/0 1/1 0/0 .text __ct__16JASBasicWaveBankFv */
JASBasicWaveBank::JASBasicWaveBank() {
mWaveTable = NULL;
diff --git a/src/JSystem/JAudio2/JASSeqParser.cpp b/src/JSystem/JAudio2/JASSeqParser.cpp
index b0dfa1088e..7ed12a0ae9 100644
--- a/src/JSystem/JAudio2/JASSeqParser.cpp
+++ b/src/JSystem/JAudio2/JASSeqParser.cpp
@@ -843,15 +843,15 @@ s32 JASSeqParser::cmdDump(JASTrack* param_0, u32* param_1) {
}
/* 8029526C-80295498 28FBAC 022C+00 1/0 0/0 0/0 .text cmdPrintf__12JASSeqParserFP8JASTrackPUl */
-// NONMATCHING many things
+// NONMATCHING problem with second for loop
s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) {
u8 stack_c[4];
u32 stack_10[4];
char buffer[128];
JASSeqCtrl* seqCtrl = param_0->getSeqCtrl();
- int r30 = 0;
- for (u8 i = 0; i < 128; i++) {
+ u32 r30 = 0;
+ for (u32 i = 0; i < 128; i++) {
buffer[i] = seqCtrl->readByte();
if (buffer[i] == 0) {
break;
@@ -861,15 +861,18 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) {
if (buffer[i] == 0) {
break;
}
- if (buffer[i] == 'n') {
+ switch (buffer[i]) {
+ case 'n':
buffer[i] = '\r';
+ break;
}
} else if (buffer[i] == '%') {
- buffer[i + 1] = seqCtrl->readByte();
- if (buffer[i + 1] == 0) {
+ i++;
+ buffer[i] = seqCtrl->readByte();
+ if (buffer[i] == 0) {
break;
}
- switch (buffer[i + 1]) {
+ switch (buffer[i]) {
case 'd':
stack_c[r30] = 0;
break;
@@ -881,18 +884,17 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) {
break;
case 'r':
stack_c[r30] = 3;
- buffer[i + 1] = 'd';
+ buffer[i] = 'd';
break;
case 'R':
stack_c[r30] = 4;
- buffer[i + 1] = 'x';
- break;
- default:
+ buffer[i] = 'x';
break;
}
r30++;
}
}
+
for (u32 i = 0; i < r30; i++) {
stack_10[i] = seqCtrl->readByte();
switch (stack_c[i]) {
@@ -903,10 +905,9 @@ s32 JASSeqParser::cmdPrintf(JASTrack* param_0, u32* param_1) {
case 4:
stack_10[i] = readReg(param_0, stack_10[i] & 0xff);
break;
- default:
- break;
}
}
+
JASReport(buffer, stack_10[0], stack_10[1], stack_10[2], stack_10[3]);
return 0;
}
diff --git a/src/JSystem/JAudio2/JASTrack.cpp b/src/JSystem/JAudio2/JASTrack.cpp
index 591dbf2e58..53a2d629e6 100644
--- a/src/JSystem/JAudio2/JASTrack.cpp
+++ b/src/JSystem/JAudio2/JASTrack.cpp
@@ -11,7 +11,6 @@
#include "JSystem/JAudio2/JASDSPInterface.h"
/* 80291228-8029131C 28BB68 00F4+00 1/1 3/3 0/0 .text __ct__8JASTrackFv */
-// NONMATCHING
JASTrack::JASTrack() : mDefaultChannelMgr(this), mChannelMgrCount(1), mStatus(0) {
mChannelMgrs[0] = &mDefaultChannelMgr;
for (int i = 1; i < 4; i++) {
diff --git a/src/JSystem/JAudio2/JAUSectionHeap.cpp b/src/JSystem/JAudio2/JAUSectionHeap.cpp
index a036282c89..866e5acef7 100644
--- a/src/JSystem/JAudio2/JAUSectionHeap.cpp
+++ b/src/JSystem/JAudio2/JAUSectionHeap.cpp
@@ -18,7 +18,6 @@
#include "JSystem/JAudio2/JAUStreamFileTable.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "stdlib.h"
-#include "dol2asm.h"
#include "dolphin/dvd.h"
namespace {
@@ -78,12 +77,6 @@ JAUSection::TSectionData::TSectionData() {
field_0x9c = 0;
}
-/* 8039B950-8039B950 027FB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8039B950 = "index out of range of bitset::reset";
-#pragma pop
-
/* 802A4F68-802A4FE4 29F8A8 007C+00 1/1 0/0 0/0 .text
* resetRegisteredBankTables__Q210JAUSection12TSectionDataFv */
void JAUSection::TSectionData::resetRegisteredBankTables() {
@@ -139,7 +132,6 @@ void JAUSection::dispose() {
/* 802A51E4-802A52A0 29FB24 00BC+00 0/0 1/1 0/0 .text newSoundTable__10JAUSectionFPCvUlb
*/
-// NONMATCHING regalloc
JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool param_2) {
JUT_ASSERT(285, isOpen());
JUT_ASSERT(286, isBuilding());
@@ -148,7 +140,7 @@ JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool para
JUT_ASSERT(289, sectionHeap_->sectionHeapData_.soundTable == 0);
{
TPushCurrentHeap push(getHeap_());
- void* bstDst;
+ void const* bstDst = bst;
if (param_1) {
bstDst = newCopy(bst, param_1, 4);
JUT_ASSERT(296, bstDst);
@@ -163,7 +155,6 @@ JAUSoundTable* JAUSection::newSoundTable(void const* bst, u32 param_1, bool para
}
/* 802A52A0-802A535C 29FBE0 00BC+00 0/0 1/1 0/0 .text newSoundNameTable__10JAUSectionFPCvUlb */
-// NONMATCHING regalloc
JAUSoundNameTable* JAUSection::newSoundNameTable(void const* bstn, u32 param_1, bool param_2) {
JUT_ASSERT(315, isOpen());
JUT_ASSERT(316, isBuilding());
@@ -172,7 +163,7 @@ JAUSoundNameTable* JAUSection::newSoundNameTable(void const* bstn, u32 param_1,
JUT_ASSERT(319, sectionHeap_->sectionHeapData_.soundNameTable == 0);
{
TPushCurrentHeap push(getHeap_());
- void* bstnDst;
+ void const* bstnDst = bstn;
if (param_1) {
bstnDst = newCopy(bstn, param_1, 4);
JUT_ASSERT(326, bstnDst);
@@ -304,13 +295,10 @@ void* JAUSection::newCopy(void const* param_0, u32 param_1, s32 param_2) {
return r31;
}
-/* ############################################################################################## */
-/* 8039B950-8039B950 027FB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_8039B974 = "index out of range of bitset::test";
-SECTION_DEAD static char const* const stringBase_8039B997 = "index out of range of bitset::set";
-#pragma pop
+static bool dummy_string(int i) {
+ std::bitset<1> x;
+ return x.test(i);
+}
/* 802A5854-802A5948 2A0194 00F4+00 0/0 1/1 0/0 .text newWaveBank__10JAUSectionFUlPCv */
JASWaveBank* JAUSection::newWaveBank(u32 bank_no, void const* param_1) {