link audio.c

This commit is contained in:
Prakxo
2023-07-19 17:30:53 +02:00
parent 0d0ad129e5
commit b2ea5c61ae
12 changed files with 752 additions and 9 deletions
+2 -1
View File
@@ -4,4 +4,5 @@ symbol_aligns:
0x8064d500 : 0x20
0x81295C80 : 0x20 # .bss m_handbill.o
0x8125a7c0 : 0x20 # construct_skip
0x81361820 : 0x20 # S_back_title_timer
0x81361820 : 0x20 # S_back_title_timer
0x806D4D40: 32 # align fFTR_myhome_off_pal_table to 32 bytes
+5
View File
@@ -286,6 +286,11 @@ save_menu.c:
m_prenmi.c:
.text: [0x8062D8FC, 0x8062DC04]
.rodata: [0x8064D318, 0x8064D340]
audio.c:
.text: [0x8062DC04, 0x8062E96C]
.rodata: [0x8064D340, 0x8064D360]
.data: [0x806D4CB0,0x806D4D40]
.bss: [0x8148DA78,0x8148DA7C]
sys_dynamic.c:
.bss: [0x813413F8, 0x81361820]
# ac_aprilfool_control/aPC_actor_dt.c: common_data is pure bs,
+93 -7
View File
@@ -15,21 +15,107 @@ typedef struct audio_tempo_beat_s {
/* 0x01 */ s8 beat;
} TempoBeat_c;
extern void sAdo_Calc_MicPosition_forTrig(f32* fcalc, u16* scalc, xyz_t* pos);
extern void sAdo_Calc_MicPosition_forLevel(f32* fcalc, u16* scalc, xyz_t* pos);
extern void sAdo_GameFrame();
extern void sAdo_SoftReset();
extern void sAdo_BgmStart(s8 id);
extern void sAdo_BgmStop(s16 id);
extern void sAdo_SysTrgStart(u16 id);
extern void sAdo_PlyWalkSe(int walk, xyz_t* pos);
extern void sAdo_PlyWalkSeRoom(int walk, xyz_t* pos);
extern void sAdo_NpcWalkSe(int walk, xyz_t* pos);
extern void sAdo_NpcWalkSeRoom(int walk, xyz_t* pos);
extern void sAdo_PlayerStatusLevel(f32 speed, int p);
/* Not sure about the last param name */
extern void sAdo_VoiceSe(u8 num, u8 num2, u8 num3, s16 character_idx, u8 scale, u8 mode);
extern void sAdo_Inst(s8 num, void* p);
extern void sAdo_MessageStatus(u8 status);
extern void sAdo_MessageSpeed(u8 speed);
extern u8 sAdo_MessageSpeedGet();
extern void sAdo_SysLevStop(u8 id);
extern void sAdo_SysLevStart(u8 id);
extern void sAdo_SysTrgStart(u16 id);
extern void sAdo_OngenPos(u8 p1, u8 p2, xyz_t* pos);
extern void sAdo_OngenTrgStart(u16 id, xyz_t* pos);
extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2, f32 distance2);
extern void sAdos_KishaStatusTrg(u8 state);
extern void sAdo_SetOutMode(u8 mode);
extern void sAdo_SetVoiceMode(u8 mode);
/* Not sure about the last param name */
extern void sAdo_VoiceSe(u8 num, u8 num2, u8 num3, s16 character_idx, u8 scale, u8 mode);
extern void sAdo_FloorTrgStart(u16 id, xyz_t* pos);
extern void sAdo_RhythmStart(void* p, u8 b1, u8 b2);
extern void sAdo_RhythmStop(void* p);
extern void sAdo_RhythmAllStop();
extern void sAdo_FurnitureInst(int track_id, s8 cb, s32 cl, xyz_t* pos);
extern void sAdo_Pause(u8 mode);
extern f32 sAdo_GetRhythmAnimCounter(void* p);
extern f32 sAdo_GetRhythmDelay(void* p);
extern f32 sAdo_GetRhythmInfo(void* p);
extern void sAdo_SetRhythmInfo(f32 p);
extern int sAdo_InstCountGet();
extern void sAdo_RhythmPos(void* p, int unk, xyz_t* pos);
extern void sAdo_SpecChange(int spec);
extern void sAdo_MDPlayerPos(xyz_t* pos, u16 s1, u16 s2, int p);
extern void sAdo_BGMVolume(f32 f, u16 volume);
extern void sAdo_BgmCrossfadeStart(u8 b);
extern void sAdo_SubGameStart();
extern void sAdo_SubGameEnd();
extern u8 sAdo_SubGameOK();
extern void sAdo_Tenki(u8 mode);
extern void sAdos_KishaStatusTrg(u8 state);
extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2, f32 distance2);
extern void sAdos_GetRadioCounter(void* p);
extern void sAdos_GetKappaCounter(void* p);
extern void sAdos_GetStaffRollInfo(void* p);
extern void sAdos_TTKK_ARM(u8 mode);
extern void sAdo_OngenTrgStartSpeed(f32 speed, u16 s1, xyz_t* pos);
extern void sAdo_TrgSeEcho(u8 b);
extern void sAdo_LevSeEcho(u8 b);
extern void sAdo_BgmFadeoutCheck();
extern void sAdo_SeFadeoutCheck();
extern void sAdo_RoomType(u8 type);
extern void sAdo_Museum(u8 type);
extern void sAdo_SoftReset();
extern u16 sAdo_Get_WalkLabel(int type);
extern int sAdo_Get_KokeruLabel(int type);
extern void sAdo_SceneMode(u8 mode);
extern void sAdo_RoomIncectPos(int f, u16 u, xyz_t* pos);
extern void sAdo_FurnitureInstPos(int f, xyz_t* pos);
extern void sAdo_Set_ongenpos_refuse_fg(int state);
extern int sAdo_GameframeEnd_Check();
extern int sAdo_GetSoundFrameCounter();
extern int sAdo_CheckOnPlussBridge(xyz_t* pos, u32 atr);
extern void sAdo_RegistPlussBridge(xyz_t* pos);
extern void sAdo_DeletePlussBridge();
extern void sAdo_kazagurumaLevel(f32 level);
#ifdef __cplusplus
}
+45
View File
@@ -9,6 +9,51 @@ extern "C" {
extern void Na_InitAudio(void (*fatal_callback)(), u8* load_addr, size_t load_size, u8* bootsound, size_t bootsound_size, BOOL cut_flag);
extern void Na_GameFrame();
extern void Na_BgmStart(s8);
extern void Na_BgmCrossfadeStart(u8);
extern void Na_BgmStop(s16);
extern void Na_SysTrgStart(u16);
extern void Na_PlyWalkSe(int, u16,f32);
extern void Na_PlyWalkSeRoom(int, u16, f32);
extern void Na_NpcWalkSe(int, u16,f32);
extern void Na_NpcWalkSeRoom(int, u16, f32);
extern void Na_PlayerStatusLevel(f32, int);
extern void Na_VoiceSe(u8,u8,u8,s16,u8,u8);
extern void Na_MessageStatus(u8);
extern void Na_MessageSpeed(u8);
extern u8 Na_MessageSpeedGet();
extern void Na_SysLevStart(u8);
extern void Na_SysLevStop(u8);
extern void Na_OngenPos(u8,u8,u16,f32);
extern void Na_OngenTrgStart(u16,u16,f32);
extern void Na_SetOutMode(u8);
extern void Na_SetVoiceMode(u8);
extern void Na_FloorTrgStart(u16,u16,f32);
extern void Na_Pause(u8);
extern void Na_RhythmPos(void*, int, u16, f32);
extern void Na_SpecChange(int);
extern void Na_MDPlayerPos(u16,u16,u16,int, f32);
extern void Na_BGMVolume(f32,u16);
extern void Na_SubGameStart();
extern void Na_SubGameEnd();
extern int Na_SubGameOK();
extern void Na_Tenki(u8);
extern void Na_KishaStatusTrg(u8);
extern void Na_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2, f32 distance2);
extern void Na_TTKK_ARM(u8);
extern void Na_OngenTrgStartSpeed(u16,u16,f32,f32);
extern void Na_TrgSeEcho(u8);
extern void Na_LevSeEcho(u8);
extern void Na_BgmFadeoutCheck();
extern void Na_SeFadeoutCheck();
extern void Na_RoomType(u8);
extern void Na_Museum(u8);
extern void Na_SoftReset();
extern void Na_SceneMode(u8);
extern void Na_RoomIncectPos(int,u16,u16,f32);
extern void Na_FurnitureInstPos(int,u16,f32);
extern int Na_GetSoundFrameCounter();
extern void Na_kazagurumaLevel(f32);
extern u8 Na_CheckNeosBoot();
extern void Na_RestartPrepare();
extern u8 Na_CheckRestartReady();
+17
View File
@@ -0,0 +1,17 @@
#ifndef KAPPA_H
#define KAPPA_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void Na_GetRadioCounter(void*);
#ifdef __cplusplus
}
#endif
#endif
+20
View File
@@ -0,0 +1,20 @@
#ifndef MELODY_H
#define MELODY_H
#include "types.h"
#ifdef __cplusplus
extern "C"{
#endif
extern void Na_Inst(s8, void*);
extern void Na_FurnitureInst(int,s8,s32,u16,f32);
extern int Na_InstCountGet();
#ifdef __cplusplus
}
#endif
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef RADIO_H
#define RADIO_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void Na_GetKappaCounter(void*);
#ifdef __cplusplus
}
#endif
#endif
+18
View File
@@ -0,0 +1,18 @@
#ifndef RHYTHM_H
#define RHYTHM_H
#include "types.h"
#ifdef __cplusplus
extern "C"
#endif
extern void Na_RhythmStart(void*, u8,u8);
extern void Na_RhythmStop(void*);
extern void Na_RhythmAllStop();
extern f32 Na_GetRhythmAnimCounter(void*);
extern f32 Na_GetRhythmDelay(void*);
extern f32 Na_GetRhythmInfo(void*);
extern void Na_SetRhythmInfo(f32);
#endif
+17
View File
@@ -0,0 +1,17 @@
#ifndef STAFF_H
#define STAFF_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
extern void Na_GetStaffRollInfo(void*);
#ifdef __cplusplus
}
#endif
#endif
+3
View File
@@ -324,6 +324,9 @@ typedef struct camera_s {
xyz_t unused[2]; // potentially unused, idk if it's even xyz_t
} Camera2;
xyz_t* Camera2_getMicPos_p(GAME_PLAY*);
#ifdef __cplusplus
}
#endif
+514
View File
@@ -0,0 +1,514 @@
#include "audio.h"
#include "jaudio_NES/game64.h"
#include "jaudio_NES/melody.h"
#include "jaudio_NES/rhythm.h"
#include "jaudio_NES/radio.h"
#include "dolphin/os/OSRtc.h"
#include "m_common_data.h"
#include "m_camera2.h"
#include "sys_math.h"
int S_ongenpos_refuse_fg;
static void sAdo_Calc_MicPosition_common(f32* fcalc, u16* scalc, xyz_t* pos){
f32 diff;
xyz_t posd;
xyz_t* camera_pos;
s16 val;
camera_pos = Camera2_getMicPos_p((GAME_PLAY*)gamePT);
posd.x = pos->x - camera_pos->x;
posd.z = pos->y - camera_pos->y;
posd.y = pos->z - camera_pos->z;
val = atans_table(posd.y, posd.x);
if(fcalc != NULL){
*fcalc = sqrtf((posd.x * posd.x) + (posd.z * posd.z) + (posd.y * posd.y));
}
if(scalc != NULL){
*scalc = val;
}
}
extern void sAdo_Calc_MicPosition_forTrig(f32* fcalc, u16* scalc, xyz_t* pos){
sAdo_Calc_MicPosition_common(fcalc, scalc, pos);
}
extern void sAdo_Calc_MicPosition_forLevel(f32* fcalc, u16* scalc, xyz_t* pos){
sAdo_Calc_MicPosition_common(fcalc, scalc, pos);
}
extern void sAdo_GameFrame(){
Na_GameFrame();
}
extern void sAdo_BgmStart(s8 id){
Na_BgmStart(id);
}
extern void sAdo_BgmStop(s16 id){
Na_BgmStop(id);
}
extern void sAdo_SysTrgStart(u16 id){
Na_SysTrgStart(id);
}
extern void sAdo_PlyWalkSe(int walk, xyz_t* pos){
f32 fcalc;
u16 scalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_PlyWalkSe(walk, scalc, fcalc);
}
extern void sAdo_PlyWalkSeRoom(int walk, xyz_t* pos){
f32 fcalc;
u16 scalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_PlyWalkSeRoom(walk, scalc, fcalc);
}
extern void sAdo_NpcWalkSe(int walk, xyz_t* pos){
f32 fcalc;
u16 scalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_NpcWalkSe(walk, scalc, fcalc);
}
extern void sAdo_NpcWalkSeRoom(int walk, xyz_t* pos){
f32 fcalc;
u16 scalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_NpcWalkSeRoom(walk, scalc, fcalc);
}
extern void sAdo_PlayerStatusLevel(f32 speed, int p){
Na_PlayerStatusLevel(speed, p);
}
extern void sAdo_VoiceSe(u8 num, u8 num2, u8 num3, s16 character_idx, u8 scale, u8 mode){
Na_VoiceSe(num,num2,num3,character_idx, scale, mode);
}
extern void sAdo_Inst(s8 num, void* p){
Na_Inst(num,p);
}
extern void sAdo_MessageStatus(u8 status){
Na_MessageStatus(status);
}
extern void sAdo_MessageSpeed(u8 speed){
Na_MessageSpeed(speed);
}
extern u8 sAdo_MessageSpeedGet(){
return Na_MessageSpeedGet();
}
extern void sAdo_SysLevStart(u8 id){
Na_SysLevStart(id);
}
extern void sAdo_SysLevStop(u8 id){
Na_SysLevStop(id);
}
extern void sAdo_OngenPos(u8 p1, u8 p2, xyz_t* pos){
u16 scalc;
f32 fcalc;
if(S_ongenpos_refuse_fg == 0){
sAdo_Calc_MicPosition_forLevel(&fcalc, &scalc, pos);
Na_OngenPos(p1,p2,scalc,fcalc);
}
}
extern void sAdo_OngenTrgStart(u16 id, xyz_t* pos){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_OngenTrgStart(id, scalc, fcalc);
}
extern void sAdo_SetOutMode(u8 mode){
if (OSGetSoundMode() == 0){
Na_SetOutMode(1);
}
else if(mode == 1){
Na_SetOutMode(0);
}
else{
Na_SetOutMode(mode);
}
}
extern void sAdo_SetVoiceMode(u8 mode){
Na_SetVoiceMode(mode);
}
extern void sAdo_FloorTrgStart(u16 id, xyz_t* pos){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_FloorTrgStart(id, scalc, fcalc);
}
extern void sAdo_RhythmStart(void* p, u8 b1, u8 b2){
Na_RhythmStart(p,b1,b2);
}
extern void sAdo_RhythmStop(void* p){
Na_RhythmStop(p);
}
extern void sAdo_RhythmAllStop(){
Na_RhythmAllStop();
}
extern void sAdo_FurnitureInst(int track_id, s8 cb, s32 cl, xyz_t* pos){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_common(&fcalc, &scalc, pos);
Na_FurnitureInst(track_id, cb,cl,scalc, fcalc);
}
extern void sAdo_Pause(u8 mode){
Na_Pause(mode);
}
extern f32 sAdo_GetRhythmAnimCounter(void* p){
return Na_GetRhythmAnimCounter(p);
}
extern f32 sAdo_GetRhythmDelay(void* p){
return Na_GetRhythmDelay(p);
}
extern f32 sAdo_GetRhythmInfo(void* p){
return Na_GetRhythmInfo(p);
}
extern void sAdo_SetRhythmInfo(f32 p){
Na_SetRhythmInfo(p);
}
extern int sAdo_InstCountGet(){
return Na_InstCountGet();
}
extern void sAdo_RhythmPos(void* p, int unk, xyz_t* pos){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_forLevel(&fcalc, &scalc, pos);
Na_RhythmPos(p, unk,scalc,fcalc);
}
extern void sAdo_SpecChange(int spec){
Na_SpecChange(spec);
}
extern void sAdo_MDPlayerPos(xyz_t* pos, u16 s1, u16 s2, int p){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_common(&fcalc, &scalc, pos);
Na_MDPlayerPos(scalc,s1,s2,p,fcalc);
}
extern void sAdo_BGMVolume(f32 f, u16 volume){
Na_BGMVolume(f,volume);
}
extern void sAdo_BgmCrossfadeStart(u8 b){
Na_BgmCrossfadeStart(b);
}
extern void sAdo_SubGameStart(){
Na_SubGameStart();
}
extern void sAdo_SubGameEnd(){
Na_SubGameEnd();
}
extern u8 sAdo_SubGameOK(){
return Na_SubGameOK();
}
extern void sAdo_Tenki(u8 mode){
Na_Tenki(mode);
}
extern void sAdos_KishaStatusTrg(u8 state){
Na_KishaStatusTrg(state);
}
extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2, f32 distance2){
Na_KishaStatusLevel(speed, ongenNum1, angle1, distance1, ongenNum2, angle2,distance2);
}
extern void sAdos_GetRadioCounter(void* p){
Na_GetRadioCounter(p);
}
extern void sAdos_GetKappaCounter(void* p){
Na_GetKappaCounter(p);
}
extern void sAdos_GetStaffRollInfo(void* p){
Na_GetStaffRollInfo(p);
}
extern void sAdos_TTKK_ARM(u8 mode){
Na_TTKK_ARM(mode);
}
extern void sAdo_OngenTrgStartSpeed(f32 speed, u16 s1, xyz_t* pos){
f32 fcalc;
u16 scalc;
sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos);
Na_OngenTrgStartSpeed(s1,scalc, fcalc,speed);
}
extern void sAdo_TrgSeEcho(u8 b){
Na_TrgSeEcho(b);
}
extern void sAdo_LevSeEcho(u8 b){
Na_LevSeEcho(b);
}
extern void sAdo_BgmFadeoutCheck(){
Na_BgmFadeoutCheck();
}
extern void sAdo_SeFadeoutCheck(){
Na_SeFadeoutCheck();
}
extern void sAdo_RoomType(u8 type){
Na_RoomType(type);
}
extern void sAdo_Museum(u8 type){
Na_Museum(type);
}
extern void sAdo_SoftReset(){
Na_SoftReset();
}
u16 sAdo_Get_WalkLabel(int type){
u16 ret;
switch(type){
case 0:
case 1:
case 2:
if(Common_Get(time.season) != 3){
ret = 0x4201;
}
else{
ret= 0x4206;
}
break;
case 4:
case 5:
case 6:
ret = 0x4202;
break;
case 7:
ret = 0x4203;
break;
case 23:
ret = 0x4204;
break;
case 9:
ret = 0x4205;
break;
case 22:
ret = 0x4208;
break;
case 11:
ret = 0x4209;
break;
default:
ret = 0x4202;
break;
}
return ret;
}
int sAdo_Get_KokeruLabel(int type){
u16 label = sAdo_Get_WalkLabel(type);
int ret;
switch(label){
case 0x4201:
ret = 0xe;
break;
case 0x4206:
ret = 0x13;
break;
case 0x4202:
ret = 0xf;
break;
case 0x4203:
ret = 0x10;
break;
case 0x4204:
ret = 0x11;
break;
case 0x4205:
ret = 0x12;
break;
case 0x4208:
ret = 0x156;
break;
case 0x4209:
ret = 0x157;
break;
default:
ret = 15;
break;
}
return ret;
}
extern void sAdo_SceneMode(u8 mode){
Na_SceneMode(mode);
}
extern void sAdo_RoomIncectPos(int f, u16 u, xyz_t* pos){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_forLevel(&fcalc, &scalc, pos);
Na_RoomIncectPos(f,u,scalc,fcalc);
}
extern void sAdo_FurnitureInstPos(int f, xyz_t* pos){
u16 scalc;
f32 fcalc;
sAdo_Calc_MicPosition_forLevel(&fcalc, &scalc, pos);
Na_FurnitureInstPos(f, scalc, fcalc);
}
extern void sAdo_Set_ongenpos_refuse_fg(int state){
S_ongenpos_refuse_fg = state;
}
extern int sAdo_GameframeEnd_Check(){
return S_ongenpos_refuse_fg;
}
extern int sAdo_GetSoundFrameCounter(){
return Na_GetSoundFrameCounter();
}
extern int sAdo_CheckOnPlussBridge(xyz_t* pos, u32 atr){
f32 x;
f32 z;
if((Common_Get(pluss_bridge_pos) != NULL) && (atr == 0x17)){
x = pos->x - Common_Get(pluss_bridge_pos->x);
z = pos->z - Common_Get(pluss_bridge_pos->z);
if((x * x) + (z * z) < 3969.0f){
return 1;
}
}
return 0;
}
extern void sAdo_RegistPlussBridge(xyz_t* pos){
Common_Set(pluss_bridge_pos, pos);
}
extern void sAdo_DeletePlussBridge(){
Common_Set(pluss_bridge_pos, NULL);
}
extern void sAdo_kazagurumaLevel(f32 level){
Na_kazagurumaLevel(level);
}