mirror of
https://github.com/zeldaret/tww.git
synced 2026-06-16 06:25:47 -04:00
241 lines
7.6 KiB
C++
241 lines
7.6 KiB
C++
//
|
|
// Generated by dtk
|
|
// Translation Unit: m_Do_audio.cpp
|
|
//
|
|
|
|
#include "m_Do/m_Do_audio.h"
|
|
#include "JSystem/JAudio/JAIGlobalParameter.h"
|
|
#include "JSystem/JAudio/JAISequenceMgr.h"
|
|
#include "JSystem/JAudio/JAIStreamMgr.h"
|
|
#include "JSystem/JKernel/JKRSolidHeap.h"
|
|
#if VERSION <= VERSION_JPN
|
|
#include "JSystem/JUtility/JUTConsole.h"
|
|
#endif
|
|
#include "SSystem/SComponent/c_lib.h"
|
|
#include "d/d_com_inf_game.h"
|
|
#include "m_Do/m_Do_controller_pad.h"
|
|
#include "m_Do/m_Do_dvd_thread.h"
|
|
#include "m_Do/m_Do_ext.h"
|
|
#include "m_Do/m_Do_printf.h"
|
|
|
|
#include "weak_bss_3569.h" // IWYU pragma: keep
|
|
|
|
JAIZelInst mDoAud_zelAudio_c::mTact;
|
|
mDoAud_zelAudio_c g_mDoAud_zelAudio;
|
|
|
|
bool mDoAud_zelAudio_c::mInitFlag;
|
|
bool mDoAud_zelAudio_c::mResetFlag;
|
|
bool mDoAud_zelAudio_c::mBgmSet;
|
|
u8 mDoAud_zelAudio_c::mLoadTimer;
|
|
|
|
JKRSolidHeap* g_mDoAud_audioHeap;
|
|
|
|
/* 80006D84-80006D90 .text reset__17mDoAud_zelAudio_cFv */
|
|
void mDoAud_zelAudio_c::reset() {
|
|
mBgmSet = false;
|
|
}
|
|
|
|
/* 80006D90-80006DC0 .text calcLoadTimer__17mDoAud_zelAudio_cFv */
|
|
void mDoAud_zelAudio_c::calcLoadTimer() {
|
|
if (mLoadTimer > 1) {
|
|
cLib_calcTimer(&mLoadTimer);
|
|
}
|
|
}
|
|
|
|
void* mDoAud_StreamBufferPointer;
|
|
|
|
/* 80006DC0-80006DD4 .text mDoAud_isUsedHeapForStreamBuffer__Fv */
|
|
BOOL mDoAud_isUsedHeapForStreamBuffer() {
|
|
return mDoAud_StreamBufferPointer != NULL;
|
|
}
|
|
|
|
u8 mDoAud_StreamBufferBlocks;
|
|
JKRExpHeap* mDoAud_audioStreamHeap;
|
|
|
|
/* 80006DD4-80006F88 .text mDoAud_allocStreamBuffer__Fv */
|
|
void mDoAud_allocStreamBuffer() {
|
|
JUT_ASSERT(98, mDoAud_StreamBufferPointer == NULL);
|
|
u32 var1 = mDoAud_StreamBufferBlocks;
|
|
u32 size;
|
|
while (true) {
|
|
JAIGlobalParameter::setParamStreamDecodedBufferBlocks(var1);
|
|
size = JAInter::StreamLib::getNeedBufferSize();
|
|
JUT_ASSERT(124, mDoAud_audioStreamHeap == NULL);
|
|
mDoAud_audioStreamHeap = archiveHeap;
|
|
mDoAud_StreamBufferPointer = JKRAllocFromHeap(archiveHeap, size, 0);
|
|
if (!mDoAud_StreamBufferPointer) {
|
|
mDoAud_audioStreamHeap = gameHeap;
|
|
mDoAud_StreamBufferPointer = JKRAllocFromHeap(gameHeap, size, 0);
|
|
}
|
|
if (!mDoAud_StreamBufferPointer) {
|
|
mDoAud_audioStreamHeap = zeldaHeap;
|
|
mDoAud_StreamBufferPointer = JKRAllocFromHeap(zeldaHeap, size, 0);
|
|
}
|
|
if (mDoAud_StreamBufferPointer) {
|
|
break;
|
|
}
|
|
if (var1 > 3) {
|
|
var1--;
|
|
continue;
|
|
}
|
|
JUT_ASSERT(144, mDoAud_StreamBufferPointer);
|
|
return;
|
|
}
|
|
bool success = g_mDoAud_zelAudio.allocStreamBuffer(mDoAud_StreamBufferPointer, size);
|
|
JUT_ASSERT(148, success);
|
|
}
|
|
|
|
/* 80006F88-8000703C .text mDoAud_deallocStreamBuffer__Fv */
|
|
void mDoAud_deallocStreamBuffer() {
|
|
JUT_ASSERT(174, mDoAud_StreamBufferPointer);
|
|
bool success = g_mDoAud_zelAudio.deallocStreamBuffer();
|
|
JUT_ASSERT(182, success);
|
|
JKRFreeToHeap(mDoAud_audioStreamHeap, mDoAud_StreamBufferPointer);
|
|
mDoAud_audioStreamHeap = NULL;
|
|
mDoAud_StreamBufferPointer = NULL;
|
|
}
|
|
|
|
/* 8000703C-80007040 .text mDoAud_executeStreamBuffer__Fv */
|
|
void mDoAud_executeStreamBuffer() {}
|
|
|
|
/* 80007040-80007090 .text mDoAud_setupStreamBuffer__Fv */
|
|
void mDoAud_setupStreamBuffer() {
|
|
JAIGlobalParameter::setParamStreamInsideBufferCut(true);
|
|
mDoAud_StreamBufferPointer = 0;
|
|
mDoAud_StreamBufferBlocks = 12;
|
|
mDoAud_audioStreamHeap = 0;
|
|
JAInter::StreamLib::setAllocBufferCallback(mDoAud_allocStreamBuffer);
|
|
JAInter::StreamLib::setDeallocBufferCallback(mDoAud_deallocStreamBuffer);
|
|
}
|
|
|
|
mDoDvdThd_toMainRam_c* l_affCommand;
|
|
mDoDvdThd_mountArchive_c* l_arcCommand;
|
|
|
|
/* 80007090-80007224 .text mDoAud_Create__Fv */
|
|
void mDoAud_Create() {
|
|
if (!l_affCommand) {
|
|
l_affCommand = mDoDvdThd_toMainRam_c::create("/Audiores/JaiInit.aaf", 2, NULL);
|
|
if (!l_affCommand) {
|
|
return;
|
|
}
|
|
}
|
|
if (!l_arcCommand) {
|
|
char buffer[96];
|
|
JAInter::SequenceMgr::getArchiveName(buffer);
|
|
l_arcCommand = mDoDvdThd_mountArchive_c::create(buffer, 0, NULL);
|
|
if (!l_arcCommand) {
|
|
return;
|
|
}
|
|
}
|
|
if (l_affCommand->sync() && l_arcCommand->sync()) {
|
|
JAIGlobalParameter::setParamInitDataPointer(l_affCommand->getMemAddress());
|
|
JAInter::SequenceMgr::setArchivePointer(l_arcCommand->getArchive());
|
|
mDoAud_setupStreamBuffer();
|
|
if (g_mDoAud_audioHeap) {
|
|
#if VERSION <= VERSION_JPN
|
|
JUTReportConsole("mDoAud_Create g_mDoAud_zelAudio.init before\n");
|
|
#endif
|
|
JKRSetCurrentHeap(NULL);
|
|
g_mDoAud_zelAudio.init(g_mDoAud_audioHeap, 0x00a00000);
|
|
JKRSetCurrentHeap(zeldaHeap);
|
|
#if VERSION <= VERSION_JPN
|
|
JUTReportConsole("mDoAud_Create g_mDoAud_zelAudio.init after\n");
|
|
#endif
|
|
g_mDoAud_audioHeap->adjustSize();
|
|
} else {
|
|
OSReport_Error("ヒープ確保失敗につきオーディオ初期化できません\n");
|
|
}
|
|
g_mDoAud_zelAudio.setEventBit(dComIfGs_getPEventBit());
|
|
g_mDoAud_zelAudio.reset();
|
|
JAIZelBasic::zel_basic->setOutputMode(OSGetSoundMode());
|
|
JKRHeap::free(l_affCommand->getMemAddress(), NULL);
|
|
delete l_affCommand;
|
|
delete l_arcCommand;
|
|
mDoAud_zelAudio_c::onInitFlag();
|
|
mDoDvdThd::SyncWidthSound = 1;
|
|
}
|
|
}
|
|
|
|
/* 80007224-80007268 .text mDoAud_Execute__Fv */
|
|
void mDoAud_Execute() {
|
|
if (!mDoAud_zelAudio_c::isInitFlag()) {
|
|
mDoAud_Create();
|
|
} else {
|
|
mDoAud_executeStreamBuffer();
|
|
g_mDoAud_zelAudio.gframeProcess();
|
|
mDoAud_zelAudio_c::calcLoadTimer();
|
|
}
|
|
}
|
|
|
|
/* 80007268-800073D8 .text mDoAud_getTactDirection__Fii */
|
|
int mDoAud_getTactDirection(int stick, int ret) {
|
|
f32 val;
|
|
s16 ang;
|
|
|
|
if (stick != 0) {
|
|
val = g_mDoCPd_cpadInfo[0].mMainStickValue;
|
|
ang = g_mDoCPd_cpadInfo[0].mMainStickAngle;
|
|
} else {
|
|
val = g_mDoCPd_cpadInfo[0].mCStickValue;
|
|
ang = g_mDoCPd_cpadInfo[0].mCStickAngle;
|
|
}
|
|
|
|
if (val < 0.9f) {
|
|
if (stick != 0) {
|
|
return
|
|
CPad_CHECK_HOLD_DOWN(0) ? 3 :
|
|
CPad_CHECK_HOLD_RIGHT(0) ? 2 :
|
|
CPad_CHECK_HOLD_LEFT(0) ? 4 :
|
|
CPad_CHECK_HOLD_UP(0) ? 1 : 0;
|
|
} else {
|
|
return 0;
|
|
}
|
|
} else {
|
|
s32 angi = abs(ang);
|
|
if (ret == 0) {
|
|
if (angi > 0x6000) {
|
|
return 1;
|
|
} else if (ang >= 0x2000) {
|
|
return 2;
|
|
} else if (ang <= -0x2000) {
|
|
return 4;
|
|
} else {
|
|
return 3;
|
|
}
|
|
} else {
|
|
if (angi > 0x7000) {
|
|
return 1;
|
|
} else if (ang >= 0x3000 && ang <= 0x5000) {
|
|
return 2;
|
|
} else if (ang <= -0x3000 && ang >= -0x5000) {
|
|
return 4;
|
|
} else if (angi < 0x1000) {
|
|
return 3;
|
|
}
|
|
}
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
/* 800073D8-80007424 .text mDoAud_setSceneName__FPCcll */
|
|
void mDoAud_setSceneName(const char* i_name, s32 i_roomNo, s32 i_layer) {
|
|
if (mDoAud_zelAudio_c::getLoadTimer() == 0) {
|
|
mDoAud_zelAudio_c::getInterface()->setSceneName((char*)i_name, i_roomNo, i_layer);
|
|
mDoAud_zelAudio_c::setLoadTimer(36);
|
|
}
|
|
}
|
|
|
|
/* 80007424-80007478 .text mDoAud_load1stDynamicWave__Fv */
|
|
int mDoAud_load1stDynamicWave() {
|
|
if (mDoAud_zelAudio_c::getLoadTimer() == 0) {
|
|
return 1;
|
|
} else if (mDoAud_zelAudio_c::getLoadTimer() <= 1) {
|
|
mDoAud_zelAudio_c::getInterface()->load1stDynamicWave();
|
|
mDoAud_zelAudio_c::setLoadTimer(0);
|
|
return 1;
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|