mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-20 23:51:19 -04:00
JASWSParser OK, JASInstSense OK
This commit is contained in:
+4
-4
@@ -684,9 +684,9 @@ config.libs = [
|
||||
Object(NonMatching, "JSystem/JAudio/JASBasicWaveBank.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASSimpleWaveBank.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASInstEffect.cpp"),
|
||||
Object(NonMatching, "JSystem/JAudio/JASInstSense.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASInstSense.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASInstRand.cpp"),
|
||||
Object(NonMatching, "JSystem/JAudio/JASWSParser.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASWSParser.cpp"),
|
||||
Object(NonMatching, "JSystem/JAudio/JASBNKParser.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASWaveArcLoader.cpp"),
|
||||
Object(Matching, "JSystem/JAudio/JASWaveBankMgr.cpp"),
|
||||
@@ -1418,7 +1418,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_daiocta_eye"),
|
||||
ActorRel(NonMatching, "d_a_deku_item"),
|
||||
ActorRel(NonMatching, "d_a_dk"),
|
||||
ActorRel(Matching, "d_a_dummy"),
|
||||
ActorRel(Matching, "d_a_dummy"),
|
||||
ActorRel(NonMatching, "d_a_fallrock_tag"),
|
||||
ActorRel(Matching, "d_a_fan", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_fganon"),
|
||||
@@ -1530,7 +1530,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_obj_ftree"),
|
||||
ActorRel(Matching, "d_a_obj_ganonbed", extra_cflags=['-pragma "nosyminline on"']),
|
||||
ActorRel(NonMatching, "d_a_obj_gaship"),
|
||||
ActorRel(Matching, "d_a_obj_gaship2"),
|
||||
ActorRel(Matching, "d_a_obj_gaship2"),
|
||||
ActorRel(NonMatching, "d_a_obj_gnnbtltaki"),
|
||||
ActorRel(NonMatching, "d_a_obj_gnndemotakie"),
|
||||
ActorRel(NonMatching, "d_a_obj_gnndemotakis"),
|
||||
|
||||
@@ -39,19 +39,19 @@ namespace JASystem {
|
||||
|
||||
u8 getNumber() { return mNumber; }
|
||||
// TODO: inlines
|
||||
void checkSign(u32);
|
||||
void isFree();
|
||||
void getPriority();
|
||||
void getStatus();
|
||||
void getCBInterval();
|
||||
void decCBInterval();
|
||||
void getPriorityTime();
|
||||
void setCBInterval(u16);
|
||||
void setPriorityTime(u16);
|
||||
void setPriority(u8);
|
||||
void getLogicalChannel();
|
||||
void forceStop(TDSPChannel*);
|
||||
void release(TDSPChannel*, u32);
|
||||
void checkSign(u32) {}
|
||||
void isFree() {}
|
||||
void getPriority() {}
|
||||
void getStatus() {}
|
||||
void getCBInterval() {}
|
||||
void decCBInterval() {}
|
||||
void getPriorityTime() {}
|
||||
void setCBInterval(u16) {}
|
||||
void setPriorityTime(u16) {}
|
||||
void setPriority(u8) {}
|
||||
void getLogicalChannel() {}
|
||||
void forceStop(TDSPChannel*) {}
|
||||
void release(TDSPChannel*, u32) {}
|
||||
|
||||
/* 0x00 */ u8 mNumber;
|
||||
/* 0x01 */ u8 field_0x1;
|
||||
|
||||
@@ -18,6 +18,7 @@ u32 JASystem::BNKParser::sUsedHeapSize;
|
||||
|
||||
/* 802870F0-802879A0 .text createBasicBank__Q28JASystem9BNKParserFPv */
|
||||
JASystem::TBasicBank* JASystem::BNKParser::createBasicBank(void* stream) {
|
||||
/* Nonmatching - regswap */
|
||||
JKRHeap* heap = TBank::getCurrentHeap();
|
||||
const u32 freeSize = heap->getFreeSize();
|
||||
THeader* header = (THeader*)stream;
|
||||
@@ -47,7 +48,7 @@ JASystem::TBasicBank* JASystem::BNKParser::createBasicBank(void* stream) {
|
||||
osc->field_0x4 = oscRaw->field_0x4;
|
||||
s16* oscTable = JSUConvertOffsetToPtr<s16>(header, oscRaw->field_0x8);
|
||||
if (oscTable != NULL) {
|
||||
u32 tableLength = getOscTableEndPtr(oscTable) - oscTable;
|
||||
s32 tableLength = getOscTableEndPtr(oscTable) - oscTable;
|
||||
osc->table = new (heap, 0) s16[tableLength];
|
||||
JUT_ASSERT(82, osc->table != 0);
|
||||
Calc::bcopy(oscTable, osc->table, tableLength * sizeof(s16));
|
||||
@@ -56,10 +57,10 @@ JASystem::TBasicBank* JASystem::BNKParser::createBasicBank(void* stream) {
|
||||
}
|
||||
oscTable = JSUConvertOffsetToPtr<s16>(header, oscRaw->field_0xC);
|
||||
if (oscTable != NULL) {
|
||||
u32 tableLength = getOscTableEndPtr(oscTable) - oscTable;
|
||||
s32 tableLength = getOscTableEndPtr(oscTable) - oscTable;
|
||||
osc->rel_table = new (heap, 0) s16[tableLength];
|
||||
JUT_ASSERT(94, osc->rel_table != 0);
|
||||
Calc::bcopy(oscTable, osc->rel_table, tableLength);
|
||||
Calc::bcopy(oscTable, osc->rel_table, tableLength * sizeof(s16));
|
||||
} else {
|
||||
osc->rel_table = NULL;
|
||||
}
|
||||
|
||||
@@ -27,11 +27,11 @@ void JASystem::TDSPChannel::init(u8 param_1) {
|
||||
|
||||
/* 80289694-80289720 .text allocate__Q28JASystem11TDSPChannelFUl */
|
||||
int JASystem::TDSPChannel::allocate(u32 param_1) {
|
||||
/* Nonmatching */
|
||||
if (field_0x1 != 1) {
|
||||
return false;
|
||||
}
|
||||
if (field_0x8 == 0) {
|
||||
BOOL r0 = (field_0x8 == 0) ? TRUE : FALSE;
|
||||
if (!r0) {
|
||||
OSReport("sign %x があるのにCH.%d はFREE\n", field_0x8, mNumber);
|
||||
}
|
||||
field_0x1 = 0;
|
||||
@@ -113,14 +113,14 @@ int JASystem::TDSPChannel::smnFree = 64;
|
||||
|
||||
/* 80289994-80289A54 .text alloc__Q28JASystem11TDSPChannelFUlUl */
|
||||
JASystem::TDSPChannel* JASystem::TDSPChannel::alloc(u32 param_1, u32 param_2) {
|
||||
/* Nonmatching */
|
||||
if (param_1) {
|
||||
OSReport("----- JASDSPChannel::alloc : 多チャネルモードはサポートされていません\n");
|
||||
return NULL;
|
||||
}
|
||||
int i = 0;
|
||||
do {
|
||||
if (DSPCH[i].field_0x1 == 1 && DSPCH[i].allocate(param_2)) {
|
||||
BOOL r0 = DSPCH[i].field_0x1 == 1 ? TRUE : FALSE;
|
||||
if (r0 && DSPCH[i].allocate(param_2)) {
|
||||
smnFree--;
|
||||
smnUse++;
|
||||
return &DSPCH[i];
|
||||
@@ -242,18 +242,20 @@ bool JASystem::TDSPChannel::breakLowerActive(u8 param_1) {
|
||||
return true;
|
||||
}
|
||||
|
||||
OSTick JASystem::history[10];
|
||||
OSTick JASystem::history[10] = { 1000000, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
OSTick JASystem::old_time;
|
||||
f32 JASystem::DSP_LIMIT_RATIO = 1.1f;
|
||||
|
||||
/* 80289E68-8028A04C .text updateAll__Q28JASystem11TDSPChannelFv */
|
||||
void JASystem::TDSPChannel::updateAll() {
|
||||
/* Nonmatching */
|
||||
/* Nonmatching - instruction ordering, maybe inline related */
|
||||
DSPInterface::DSPBuffer* dspBuffer;
|
||||
if (Kernel::getSubFrames() <= 10) {
|
||||
OSTick time = OSGetTick();
|
||||
u32 var2;
|
||||
OSTick var3 = time - old_time;
|
||||
old_time = time;
|
||||
u32 var2 = Kernel::getSubFrames() - TAudioThread::snIntCount;
|
||||
var2 = Kernel::getSubFrames() - TAudioThread::snIntCount;
|
||||
history[var2] = var3;
|
||||
if (var2) {
|
||||
if (f32(history[0]) / var3 < DSP_LIMIT_RATIO) {
|
||||
@@ -266,8 +268,8 @@ void JASystem::TDSPChannel::updateAll() {
|
||||
if ((i & 0x0f) == 0 && i != 0) {
|
||||
DSPReleaseHalt2(i - 1 >> 4);
|
||||
}
|
||||
TDSPChannel* dspChannel = DSPCH + i;
|
||||
DSPInterface::DSPBuffer* dspBuffer = dspChannel->field_0xc;
|
||||
dspBuffer = DSPCH[i].field_0xc;
|
||||
TDSPChannel* dspChannel = &DSPCH[i];
|
||||
if (dspChannel->field_0x1 == 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
|
||||
/* 802868F0-80286A1C .text getY__Q28JASystem10TInstSenseCFii */
|
||||
f32 JASystem::TInstSense::getY(int param_1, int param_2) const {
|
||||
/* Nonmatching */
|
||||
int r6 = 0;
|
||||
switch (field_0x8) {
|
||||
case 1:
|
||||
@@ -18,13 +17,15 @@ f32 JASystem::TInstSense::getY(int param_1, int param_2) const {
|
||||
r6 = param_1;
|
||||
break;
|
||||
}
|
||||
f32 ret;
|
||||
if (field_0x9 == 0x7f || field_0x9 == 0) {
|
||||
return field_0xc + r6 * (field_0x10 - field_0xc) / 127.0f;
|
||||
ret = field_0xc + r6 * (field_0x10 - field_0xc) / 127.0f;
|
||||
} else if (r6 < field_0x9) {
|
||||
ret = field_0xc + (1.0f - field_0xc) * (r6 / (f32)field_0x9);
|
||||
} else {
|
||||
ret = (field_0x10 - 1.0f) * ((r6 - field_0x9) / (f32)(0x7f - field_0x9)) + 1.0f;
|
||||
}
|
||||
if (r6 < field_0x9) {
|
||||
return field_0xc + (1.0f - field_0xc) * r6 / field_0x9;
|
||||
}
|
||||
return field_0x10 - 1.0f * (r6 - field_0x9) / (0x7f - field_0x9) + 1.0f;
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 80286A1C-80286B58 .text setParams__Q28JASystem10TInstSenseFiiff */
|
||||
|
||||
@@ -19,7 +19,7 @@ u32 JASystem::WSParser::getGroupCount(void* stream) {
|
||||
|
||||
/* 80286C1C-80286E38 .text createBasicWaveBank__Q28JASystem8WSParserFPv */
|
||||
JASystem::TBasicWaveBank* JASystem::WSParser::createBasicWaveBank(void* stream) {
|
||||
/* Nonmatching */
|
||||
TWaveArchive* archiveRaw;
|
||||
JKRHeap* heap = TWaveBank::getCurrentHeap();
|
||||
const u32 priorFreeSize = heap->getFreeSize();
|
||||
const THeader* header = (THeader*)stream;
|
||||
@@ -36,7 +36,7 @@ JASystem::TBasicWaveBank* JASystem::WSParser::createBasicWaveBank(void* stream)
|
||||
TCtrl* ctrlRaw = JSUConvertOffsetToPtr<TCtrl>(header, ctrlSceneRaw->mCtrlOffset);
|
||||
TBasicWaveBank::TWaveGroup* waveGroup = bank->getWaveGroup(groupIndex);
|
||||
TWaveArchiveBank* archiveBankRaw = JSUConvertOffsetToPtr<TWaveArchiveBank>(header, header->mArchiveBankOffset);
|
||||
TWaveArchive* archiveRaw = JSUConvertOffsetToPtr<TWaveArchive>(header, archiveBankRaw->mArchiveOffsets[groupIndex]);
|
||||
archiveRaw = JSUConvertOffsetToPtr<TWaveArchive>(header, archiveBankRaw->mArchiveOffsets[groupIndex]);
|
||||
waveGroup->setWaveCount(ctrlRaw->mWaveCount);
|
||||
for (int waveIndex = 0; waveIndex < ctrlRaw->mWaveCount; waveIndex++) {
|
||||
TWave* waveRaw = JSUConvertOffsetToPtr<TWave>(header, archiveRaw->mWaveOffsets[waveIndex]);
|
||||
@@ -56,7 +56,7 @@ JASystem::TBasicWaveBank* JASystem::WSParser::createBasicWaveBank(void* stream)
|
||||
info.field_0x22 = waveRaw->field_0x22;
|
||||
info.field_0x28 = waveRaw->field_0x28;
|
||||
TCtrlWave* ctrlWaveRaw = JSUConvertOffsetToPtr<TCtrlWave>(header, ctrlRaw->mCtrlWaveOffsets[waveIndex]);
|
||||
u32 size = ctrlWaveRaw->field_0x0 & 0xFFFF;
|
||||
u32 size = (u16)ctrlWaveRaw->field_0x0;
|
||||
waveGroup->setWaveInfo(waveIndex, size, info);
|
||||
if (maxSize < size) {
|
||||
maxSize = size;
|
||||
@@ -71,7 +71,7 @@ JASystem::TBasicWaveBank* JASystem::WSParser::createBasicWaveBank(void* stream)
|
||||
|
||||
/* 80286E38-80287048 .text createSimpleWaveBank__Q28JASystem8WSParserFPv */
|
||||
JASystem::TSimpleWaveBank* JASystem::WSParser::createSimpleWaveBank(void* stream) {
|
||||
/* Nonmatching */
|
||||
const TWaveArchive* archiveRaw;
|
||||
JKRHeap* heap = TWaveBank::getCurrentHeap();
|
||||
const u32 priorFreeSize = heap->getFreeSize();
|
||||
const THeader* header = (THeader*)stream;
|
||||
@@ -88,7 +88,7 @@ JASystem::TSimpleWaveBank* JASystem::WSParser::createSimpleWaveBank(void* stream
|
||||
const TCtrlScene* ctrlSceneRaw = JSUConvertOffsetToPtr<TCtrlScene>(header, ctrlGroupRaw->mCtrlSceneOffsets[0]);
|
||||
const TCtrl* ctrlRaw = JSUConvertOffsetToPtr<TCtrl>(header, ctrlSceneRaw->mCtrlOffset);
|
||||
const TWaveArchiveBank* archiveBankRaw = JSUConvertOffsetToPtr<TWaveArchiveBank>(header, header->mArchiveBankOffset);
|
||||
const TWaveArchive* archiveRaw = JSUConvertOffsetToPtr<TWaveArchive>(header, archiveBankRaw->mArchiveOffsets[0]);
|
||||
archiveRaw = JSUConvertOffsetToPtr<TWaveArchive>(header, archiveBankRaw->mArchiveOffsets[0]);
|
||||
for (int waveIndex = 0; waveIndex < ctrlRaw->mWaveCount; waveIndex++) {
|
||||
TCtrlWave* ctrlWaveRaw = JSUConvertOffsetToPtr<TCtrlWave>(header, ctrlRaw->mCtrlWaveOffsets[waveIndex]);
|
||||
u32 size = ctrlWaveRaw->field_0x0 & 0xFFFF;
|
||||
@@ -100,8 +100,9 @@ JASystem::TSimpleWaveBank* JASystem::WSParser::createSimpleWaveBank(void* stream
|
||||
for (int waveIndex = 0; waveIndex < ctrlRaw->mWaveCount; waveIndex++) {
|
||||
TWave* waveRaw = JSUConvertOffsetToPtr<TWave>(header, archiveRaw->mWaveOffsets[waveIndex]);
|
||||
TWaveInfo info;
|
||||
info.mBlockType = waveRaw->field_0x1;
|
||||
info.field_0x1 = waveRaw->field_0x2;
|
||||
info.mBlockType = waveRaw->field_0x0;
|
||||
info.field_0x1 = waveRaw->field_0x1;
|
||||
info.field_0x2 = waveRaw->field_0x2;
|
||||
info.field_0x4 = waveRaw->field_0x4;
|
||||
info.mWavePtrOffs = waveRaw->mOffset;
|
||||
info.field_0xc = waveRaw->field_0xc;
|
||||
@@ -111,8 +112,11 @@ JASystem::TSimpleWaveBank* JASystem::WSParser::createSimpleWaveBank(void* stream
|
||||
info.field_0x1c = waveRaw->field_0x1c;
|
||||
info.field_0x20 = waveRaw->field_0x20;
|
||||
info.field_0x22 = waveRaw->field_0x22;
|
||||
TCtrlWave* ctrlWaveRaw = JSUConvertOffsetToPtr<TCtrlWave>(header, ctrlRaw->mCtrlWaveOffsets[waveIndex]);
|
||||
bank->setWaveInfo(ctrlWaveRaw->field_0x0 & 0xFFFF, info);
|
||||
info.field_0x28 = waveRaw->field_0x28;
|
||||
bank->setWaveInfo(
|
||||
(u16)JSUConvertOffsetToPtr<TCtrlWave>(header, ctrlRaw->mCtrlWaveOffsets[waveIndex])->field_0x0,
|
||||
info
|
||||
);
|
||||
}
|
||||
bank->setFileName(archiveRaw->mFileName);
|
||||
sUsedHeapSize += priorFreeSize - heap->getFreeSize();
|
||||
|
||||
Reference in New Issue
Block a user