diff options
Diffstat (limited to 'src/code/audio.c')
| -rw-r--r-- | src/code/audio.c | 453 |
1 files changed, 453 insertions, 0 deletions
diff --git a/src/code/audio.c b/src/code/audio.c new file mode 100644 index 0000000..0b0cb9f --- /dev/null +++ b/src/code/audio.c @@ -0,0 +1,453 @@ +#include "audio.h" +#include "audio_load.h" +#include "683030.h" +#include "71A140.h" +#include "71FA20.h" +#include "720B20.h" +#include "7205C0.h" +#include "7206E0.h" +#include "game.h" +#include "m_lib.h" +#include "sys_math_atan.h" + +s32 S_ongenpos_refuse_fg = 0; + +void sAdo_Calc_MicPosition_common(f32* distanceVal, u16* angleVal, xyz_t* pos) { + UNUSED s32 pad; + xyz_t* cameraPos; + f32 diff; + xyz_t posDiff; + s16 angle; + + cameraPos = Camera2_getMicPos_p((Game_Play*)gamePT); + + diff = pos->x - cameraPos->x; + posDiff.x = diff; + posDiff.z = pos->y - cameraPos->y; + posDiff.y = pos->z - cameraPos->z; + + angle = atans_table(posDiff.y, posDiff.x); + + if (distanceVal != NULL) { + *distanceVal = sqrtf((posDiff.x * posDiff.x) + (posDiff.z * posDiff.z) + (posDiff.y * posDiff.y)); + } + if (angleVal != NULL) { + *angleVal = angle; + } +} + +void sAdo_Calc_MicPosition_forTrig(f32* distanceVal, u16* angleVal, xyz_t* pos) { + sAdo_Calc_MicPosition_common(distanceVal, angleVal, pos); +} + +void sAdo_Calc_MicPosition_forLevel(f32* distanceVal, u16* angleVal, xyz_t* pos) { + sAdo_Calc_MicPosition_common(distanceVal, angleVal, pos); +} + +void sAdo_GameFrame(void) { + Na_GameFrame(); +} + +void func_800D19BC_jp(void) { + func_800F8984_jp(); +} + +void func_800D19DC_jp(void) { + func_800F8B2C_jp(); +} + +void sAdo_BgmStart(u8 id) { + Na_BgmStart(id); +} + +void sAdo_BgmStop(u16 id) { + Na_BgmStop(id); +} + +void sAdo_BgmTrOn(u8 id) { + Na_BgmTrOn(id); +} + +void sAdo_BgmTrOff(u8 id) { + Na_BgmTrOff(id); +} + +void sAdo_SysTrgStart(u16 id) { + Na_SysTrgStart(id); +} + +void sAdo_PlyWalkSe(s32 arg0, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_PlyWalkSe(arg0, angleVal, distanceVal); +} + +void sAdo_PlyWalkSeRoom(s32 arg0, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_PlyWalkSeRoom(arg0, angleVal, distanceVal); +} + +void sAdo_NpcWalkSe(s32 arg0, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_NpcWalkSe(arg0, angleVal, distanceVal); +} + +void sAdo_NpcWalkSeRoom(u16 arg0, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_NpcWalkSeRoom(arg0, angleVal, distanceVal); +} + +void sAdo_PlayerStatusLevel(u8 arg0, f32 speed) { + Na_PlayerStatusLevel(arg0, speed); +} + +void sAdo_VoiceSe(u8 arg0, s16 arg1, u8 arg2) { + Na_VoiceSe(arg0, arg1, arg2); +} + +void sAdo_Inst(u8 num, u8* arg1) { + Na_Inst(num, arg1); +} + +void sAdo_MessageStatus(u8 status) { + Na_MessageStatus(status); +} + +void sAdo_MessageSpeed(u8 speed) { + Na_MessageSpeed(speed); +} + +u8 sAdo_MessageSpeedGet(void) { + return Na_MessageSpeedGet(); +} + +void sAdo_SysLevStart(u8 id) { + Na_SysLevStart(id); +} + +void sAdo_SysLevStop(u8 id) { + Na_SysLevStop(id); +} + +void sAdo_OngenPos(s32 arg0, u8 arg1, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + if (S_ongenpos_refuse_fg == 0) { + sAdo_Calc_MicPosition_forLevel(&distanceVal, &angleVal, pos); + Na_OngenPos(arg0, arg1, angleVal, distanceVal); + } +} + +void sAdo_OngenTrgStart(u16 id, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_OngenTrgStart(id, angleVal, distanceVal); +} + +void sAdo_SetOutMode(u8 mode) { + Na_SetOutMode(mode); +} + +void sAdo_SetVoiceMode(u8 mode) { + Na_SetVoiceMode(mode); +} + +void sAdo_FloorTrgStart(u8 id, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_FloorTrgStart(id, angleVal, distanceVal); +} + +void sAdo_RhythmStart(s32 arg0, s8 arg1, s8 arg2) { + Na_RhythmStart(arg0, arg1, arg2); +} + +void sAdo_RhythmStop(void) { + Na_RhythmStop(); +} + +void sAdo_RhythmAllStop(void) { + Na_RhythmAllStop(); +} + +void sAdo_FurnitureInst(s32 distance, u8 trackId, s32 arg2, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_common(&distanceVal, &angleVal, pos); + Na_FurnitureInst(distance, trackId, arg2, angleVal, distanceVal); +} + +void sAdo_Pause(u8 mode) { + Na_Pause(mode); +} + +f32 sAdo_get_rhythm_buffer(void) { + return get_rhythm_buffer(); +} + +s16 sAdo_GetRhythmSubTrack(void) { + return Na_GetRhythmSubTrack(); +} + +void sAdo_GetRhythmInfo(void* arg0) { + Na_GetRhythmInfo(arg0); +} + +void sAdo_SetRhythmInfo(void* arg0) { + Na_SetRhythmInfo(arg0); +} + +s32 sAdo_InstCountGet(void) { + return Na_InstCountGet(); +} + +void sAdo_RhythmPos(s32 distance, u8 arg1, xyz_t* pos) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forLevel(&distanceVal, &angleVal, pos); + Na_RhythmPos(distance, arg1, angleVal, distanceVal); +} + +void sAdo_SpecChange(s32 spec) { + Na_SpecChange(spec); +} + +void sAdo_MDPlayerPos(xyz_t* pos, u16 arg1, u16 arg2, s32 arg3) { + u16 angleVal; + f32 distanceVal; + + sAdo_Calc_MicPosition_common(&distanceVal, &angleVal, pos); + Na_MDPlayerPos(angleVal, distanceVal, arg1, arg2, arg3); +} + +void sAdo_BGMVolume(f32 volume, u16 pan) { + Na_BGMVolume(volume, pan); +} + +void sAdo_BgmCrossfadeStart(u8 arg0) { + Na_BgmCrossfadeStart(arg0); +} + +void sAdo_SubGameStart(void) { + Na_SubGameStart(); +} + +void sAdo_SubGameEnd(void) { + Na_SubGameEnd(); +} + +s32 sAdo_SubGameOK(void) { + return Na_SubGameOK(); +} + +void sAdo_Tenki(u8 mode) { + Na_Tenki(mode); +} + +void func_800D213C_jp(void) { + func_800EBF6C_jp(); +} + +void sAdos_KishaStatusTrg(u8 state) { + + Na_KishaStatusTrg(state); +} + +void sAdos_KishaStatusLevel(f32 arg0, s32 arg1, f32 arg2, u16 arg3, s32 arg4, f32 arg5, u16 arg6) { + Na_KishaStatusLevel(arg0, arg1, arg3, arg2, arg4, arg6, arg5); +} + +s32 func_800D21CC_jp(void* arg0) { + return func_800FC920_jp(arg0); +} + +void sAdos_GetStaffRollInfo(u16* arg0) { + Na_GetStaffRollInfo(arg0); +} + +void sAdos_TTKK_ARM(u8 arg0) { + Na_TTKK_ARM(arg0); +} + +void sAdo_OngenTrgStartSpeed(u16 num, xyz_t* pos, f32 speed) { + f32 distanceVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forTrig(&distanceVal, &angleVal, pos); + Na_OngenTrgStartSpeed(num, angleVal, distanceVal, speed); +} + +void sAdo_TrgSeEcho(u8 idx) { + Na_TrgSeEcho(idx); +} + +void sAdo_LevSeEcho(u8 idx) { + Na_LevSeEcho(idx); +} + +void sAdo_BGMFilter(u8 arg0) { + Na_BGMFilter(arg0); +} + +void sAdo_BgmMuteClear(void) { + Na_BgmMuteClear(); +} + +u8 sAdo_BgmFadeoutCheck(void) { + return Na_BgmFadeoutCheck(); +} + +u8 sAdo_SeFadeoutCheck(void) { + return Na_SeFadeoutCheck(); +} + +void sAdo_SeStart(UNUSED s32 arg0) { +} + +void sAdo_SeStop(UNUSED s32 arg0) { +} + +void sAdo_RoomType(u8 type) { + Na_RoomType(type); +} + +void sAdo_SoftReset(void) { + Na_SoftReset(); +} + +u16 sAdo_Get_WalkLabel(s32 type) { + u16 ret; + switch (type) { + case 0: + case 1: + case 2: + if (common_data.time.season != WINTER) { + ret = 0x201; + } else { + ret = 0x206; + } + break; + + case 4: + case 5: + case 6: + ret = 0x202; + break; + + case 7: + ret = 0x203; + break; + + case 23: + ret = 0x204; + break; + + case 9: + ret = 0x205; + break; + + case 22: + ret = 0x208; + break; + + case 11: + ret = 0x209; + break; + + default: + ret = 0x202; + break; + } + return ret; +} + +s32 sAdo_Get_KokeruLabel(s32 type) { + u16 label = sAdo_Get_WalkLabel(type); + s32 ret; + + switch (label) { + case 0x201: + ret = 0xe; + break; + + case 0x206: + ret = 0x13; + break; + + case 0x202: + ret = 0xf; + break; + + case 0x203: + ret = 0x10; + break; + + case 0x204: + ret = 0x11; + break; + + case 0x205: + ret = 0x12; + break; + + case 0x208: + ret = 0x156; + break; + + case 0x209: + ret = 0x157; + break; + + default: + ret = 15; + break; + } + return ret; +} + +void sAdo_SceneMode(u8 mode) { + Na_SceneMode(mode); +} + +void sAdo_RoomIncectPos(s32 distance, u8 insectId, xyz_t* pos) { + f32 positionVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forLevel(&positionVal, &angleVal, pos); + Na_RoomIncectPos(distance, insectId, angleVal, positionVal); +} + +void sAdo_FurnitureInstPos(s32 distance, xyz_t* pos) { + f32 positionVal; + u16 angleVal; + + sAdo_Calc_MicPosition_forLevel(&positionVal, &angleVal, pos); + Na_FurnitureInstPos(distance, angleVal, positionVal); +} + +void sAdo_Set_ongenpos_refuse_fg(s32 state) { + S_ongenpos_refuse_fg = state; +} + +s32 sAdo_GameframeEnd_Check(void) { + s32 check = S_ongenpos_refuse_fg; + return check; +} |
