Files
tww/src/m_Do/m_Do_audio.cpp
T
LagoLunatic de34ef5fb6 Fix J build
2024-10-19 14:15:33 -04:00

239 lines
7.5 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"
#include "JSystem/JUtility/JUTConsole.h"
#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_point, s32 i_layer) {
if (mDoAud_zelAudio_c::getLoadTimer() == 0) {
mDoAud_zelAudio_c::getInterface()->setSceneName((char*)i_name, i_point, 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;
}
}