diff --git a/config/rel_disasm_overrides.yml b/config/rel_disasm_overrides.yml index c9473eeb..d7e8a366 100644 --- a/config/rel_disasm_overrides.yml +++ b/config/rel_disasm_overrides.yml @@ -4,4 +4,5 @@ symbol_aligns: 0x8064d500 : 0x20 0x81295C80 : 0x20 # .bss m_handbill.o 0x8125a7c0 : 0x20 # construct_skip - 0x81361820 : 0x20 # S_back_title_timer \ No newline at end of file + 0x81361820 : 0x20 # S_back_title_timer + 0x806D4D40: 32 # align fFTR_myhome_off_pal_table to 32 bytes diff --git a/config/rel_slices.yml b/config/rel_slices.yml index eab88d2d..a38a1289 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -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, diff --git a/include/audio.h b/include/audio.h index 9228515f..bb574721 100644 --- a/include/audio.h +++ b/include/audio.h @@ -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 } diff --git a/include/jaudio_NES/game64.h b/include/jaudio_NES/game64.h index 0efa9a34..b6b3e8e7 100644 --- a/include/jaudio_NES/game64.h +++ b/include/jaudio_NES/game64.h @@ -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(); diff --git a/include/jaudio_NES/kappa.h b/include/jaudio_NES/kappa.h new file mode 100644 index 00000000..44b659bc --- /dev/null +++ b/include/jaudio_NES/kappa.h @@ -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 \ No newline at end of file diff --git a/include/jaudio_NES/melody.h b/include/jaudio_NES/melody.h new file mode 100644 index 00000000..f446dc9a --- /dev/null +++ b/include/jaudio_NES/melody.h @@ -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 \ No newline at end of file diff --git a/include/jaudio_NES/radio.h b/include/jaudio_NES/radio.h new file mode 100644 index 00000000..f31850a0 --- /dev/null +++ b/include/jaudio_NES/radio.h @@ -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 \ No newline at end of file diff --git a/include/jaudio_NES/rhythm.h b/include/jaudio_NES/rhythm.h new file mode 100644 index 00000000..662826eb --- /dev/null +++ b/include/jaudio_NES/rhythm.h @@ -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 \ No newline at end of file diff --git a/include/jaudio_NES/staff.h b/include/jaudio_NES/staff.h new file mode 100644 index 00000000..dc78073b --- /dev/null +++ b/include/jaudio_NES/staff.h @@ -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 \ No newline at end of file diff --git a/include/m_camera2.h b/include/m_camera2.h index 09cb9c1d..14d0fd78 100644 --- a/include/m_camera2.h +++ b/include/m_camera2.h @@ -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 diff --git a/rel/audio.c b/rel/audio.c new file mode 100644 index 00000000..cf105f75 --- /dev/null +++ b/rel/audio.c @@ -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); +} \ No newline at end of file diff --git a/tools/ppcdis b/tools/ppcdis index 396925fc..64931120 160000 --- a/tools/ppcdis +++ b/tools/ppcdis @@ -1 +1 @@ -Subproject commit 396925fc9863001532501a1e0a86689389c2deda +Subproject commit 6493112072e2fefb92baa833b75c9d378fa81925