From 826ac46f74d6bc75291847c513c093a9c1a0614f Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Tue, 5 Mar 2024 00:34:10 -0500 Subject: [PATCH] Implement ac_hnw_common --- include/ac_furniture.h | 9 + include/audio.h | 33 +- include/jaudio_NES/game64.h | 30 +- include/jaudio_NES/rhythm.h | 12 +- src/audio.c | 583 ++++++++++++++++++------------------ src/f_furniture.c | 2 +- src/ftr/ac_hnw_common.c | 554 ++++++++++++++++++++++++++++++++-- 7 files changed, 864 insertions(+), 359 deletions(-) diff --git a/include/ac_furniture.h b/include/ac_furniture.h index c44cfa01..61ba8a90 100644 --- a/include/ac_furniture.h +++ b/include/ac_furniture.h @@ -40,6 +40,15 @@ enum { aFTR_CTR_TYPE_NUM }; +enum { + aFTR_HNW_STATE_WAIT_TURN_ON, + aFTR_HNW_STATE_TURN_ON, + aFTR_HNW_STATE_ON, + aFTR_HNW_STATE_OFF, + + aFTR_HNW_STATE_NUM +}; + enum { aFTR_SHAPE_TYPEB_90, /* 2x1 (facing up)*/ aFTR_SHAPE_TYPEB_180, /* 2x1 [- *] */ diff --git a/include/audio.h b/include/audio.h index c7d0c491..4cce2ad7 100644 --- a/include/audio.h +++ b/include/audio.h @@ -11,19 +11,19 @@ extern "C" { /* sizeof(TempoBeat_c) == 2 */ typedef struct audio_tempo_beat_s { - /* 0x00 */ u8 tempo; - /* 0x01 */ s8 beat; + /* 0x00 */ u8 tempo; + /* 0x01 */ s8 beat; } TempoBeat_c; enum { - VOICE_STATUS_NORMAL, - VOICE_STATUS_ANGRY, - VOICE_STATUS_SAD, - VOICE_STATUS_FUN, - VOICE_STATUS_SLEEPY, - VOICE_STATUS_GLOOMY, + VOICE_STATUS_NORMAL, + VOICE_STATUS_ANGRY, + VOICE_STATUS_SAD, + VOICE_STATUS_FUN, + VOICE_STATUS_SLEEPY, + VOICE_STATUS_GLOOMY, - VOICE_STATUS_NUM + VOICE_STATUS_NUM }; extern void sAdo_Calc_MicPosition_forTrig(f32* fcalc, u16* scalc, xyz_t* pos); @@ -60,21 +60,21 @@ extern void sAdo_SetVoiceMode(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_RhythmStart(u32 id, s8 type, s8 wait); +extern void sAdo_RhythmStop(u32 id); 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 f32 sAdo_GetRhythmAnimCounter(u32 id); +extern s8 sAdo_GetRhythmDelay(u32 id); +extern f32 sAdo_GetRhythmInfo(u32 id); extern void sAdo_SetRhythmInfo(f32 p); extern int sAdo_InstCountGet(); -extern void sAdo_RhythmPos(void* p, int unk, xyz_t* pos); +extern void sAdo_RhythmPos(u32 id, u8 haniwa_id, xyz_t* pos); extern void sAdo_SpecChange(int spec); extern void sAdo_MDPlayerPos(xyz_t* pos, u16 s1, u16 s2, int p); @@ -89,7 +89,8 @@ extern int 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_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); diff --git a/include/jaudio_NES/game64.h b/include/jaudio_NES/game64.h index 9d9aab19..ac8b35e1 100644 --- a/include/jaudio_NES/game64.h +++ b/include/jaudio_NES/game64.h @@ -7,41 +7,43 @@ extern "C" { #endif -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_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(u8); extern void Na_BgmCrossfadeStart(u8); extern void Na_BgmStop(u16); extern void Na_SysTrgStart(u16); -extern void Na_PlyWalkSe(int, u16,f32); +extern void Na_PlyWalkSe(int, u16, f32); extern void Na_PlyWalkSeRoom(int, u16, f32); -extern void Na_NpcWalkSe(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_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(u32,u8,u16,f32); -extern void Na_OngenTrgStart(u16,u16,f32); +extern void Na_OngenPos(u32, 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_FloorTrgStart(u16, u16, f32); extern void Na_Pause(u8); -extern void Na_RhythmPos(void*, int, u16, f32); +extern void Na_RhythmPos(u32, u8, 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_MDPlayerPos(u16, u16, u16, int, f32); +extern void Na_BGMVolume(f32, u16); extern void Na_SubGameStart(); extern void Na_SubGameEnd(); extern u8 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_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_OngenTrgStartSpeed(u16, u16, f32, f32); extern void Na_TrgSeEcho(u8); extern void Na_LevSeEcho(u8); extern void Na_BgmFadeoutCheck(); @@ -50,8 +52,8 @@ 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 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(); diff --git a/include/jaudio_NES/rhythm.h b/include/jaudio_NES/rhythm.h index b7fb3b79..e22dec33 100644 --- a/include/jaudio_NES/rhythm.h +++ b/include/jaudio_NES/rhythm.h @@ -7,16 +7,16 @@ extern "C" { #endif -extern void Na_RhythmStart(void*, u8,u8); -extern void Na_RhythmStop(void*); +extern void Na_RhythmStart(u32, s8, s8); +extern void Na_RhythmStop(u32); extern void Na_RhythmAllStop(); -extern f32 Na_GetRhythmAnimCounter(void*); -extern f32 Na_GetRhythmDelay(void*); -extern f32 Na_GetRhythmInfo(void*); +extern f32 Na_GetRhythmAnimCounter(u32); +extern s8 Na_GetRhythmDelay(u32); +extern f32 Na_GetRhythmInfo(u32); extern void Na_SetRhythmInfo(f32); #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/src/audio.c b/src/audio.c index d7922136..a732439f 100644 --- a/src/audio.c +++ b/src/audio.c @@ -11,9 +11,8 @@ int S_ongenpos_refuse_fg; +static void sAdo_Calc_MicPosition_common(f32* fcalc, u16* scalc, xyz_t* pos) { -static void sAdo_Calc_MicPosition_common(f32* fcalc, u16* scalc, xyz_t* pos){ - f32 diff; xyz_t posd; xyz_t* camera_pos; @@ -21,445 +20,439 @@ static void sAdo_Calc_MicPosition_common(f32* fcalc, u16* scalc, xyz_t* pos){ 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); + posd.z = pos->y - camera_pos->y; + posd.y = pos->z - camera_pos->z; - if(fcalc != NULL){ - *fcalc = sqrtf((posd.x * posd.x) + (posd.z * posd.z) + (posd.y * posd.y)); + 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; + if (scalc != NULL) { + *scalc = val; } } -extern void sAdo_Calc_MicPosition_forTrig(f32* fcalc, u16* scalc, xyz_t* pos){ +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){ +extern void sAdo_Calc_MicPosition_forLevel(f32* fcalc, u16* scalc, xyz_t* pos) { sAdo_Calc_MicPosition_common(fcalc, scalc, pos); } -extern void sAdo_GameFrame(){ +extern void sAdo_GameFrame() { Na_GameFrame(); } -extern void sAdo_BgmStart(u8 id){ +extern void sAdo_BgmStart(u8 id) { Na_BgmStart(id); } -extern void sAdo_BgmStop(u16 id){ +extern void sAdo_BgmStop(u16 id) { Na_BgmStop(id); } -extern void sAdo_SysTrgStart(u16 id){ +extern void sAdo_SysTrgStart(u16 id) { Na_SysTrgStart(id); } -extern void sAdo_PlyWalkSe(int walk, xyz_t* pos){ +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){ +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){ +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){ +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){ +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){ +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); + Na_VoiceSe(num, num2, num3, character_idx, scale, mode); } -extern void sAdo_Inst(u16 num, u8* p){ - Na_Inst(num,p); +extern void sAdo_Inst(u16 num, u8* p) { + Na_Inst(num, p); } -extern void sAdo_MessageStatus(u8 status){ +extern void sAdo_MessageStatus(u8 status) { Na_MessageStatus(status); } -extern void sAdo_MessageSpeed(u8 speed){ +extern void sAdo_MessageSpeed(u8 speed) { Na_MessageSpeed(speed); } -extern u8 sAdo_MessageSpeedGet(){ +extern u8 sAdo_MessageSpeedGet() { return Na_MessageSpeedGet(); } -extern void sAdo_SysLevStart(u8 id){ +extern void sAdo_SysLevStart(u8 id) { Na_SysLevStart(id); } -extern void sAdo_SysLevStop(u8 id){ +extern void sAdo_SysLevStop(u8 id) { Na_SysLevStop(id); } -extern void sAdo_OngenPos(u32 p1, u8 p2, xyz_t* pos){ +extern void sAdo_OngenPos(u32 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); + 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){ +extern void sAdo_OngenTrgStart(u16 id, xyz_t* pos) { u16 scalc; f32 fcalc; - sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos); + sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos); Na_OngenTrgStart(id, scalc, fcalc); } -extern void sAdo_SetOutMode(u8 mode){ +extern void sAdo_SetOutMode(u8 mode) { - if (OSGetSoundMode() == 0){ + if (OSGetSoundMode() == 0) { Na_SetOutMode(1); - } - else if(mode == 1){ + } else if (mode == 1) { Na_SetOutMode(0); - } - else{ + } else { Na_SetOutMode(mode); } } -extern void sAdo_SetVoiceMode(u8 mode){ +extern void sAdo_SetVoiceMode(u8 mode) { Na_SetVoiceMode(mode); } -extern void sAdo_FloorTrgStart(u16 id, xyz_t* pos){ +extern void sAdo_FloorTrgStart(u16 id, xyz_t* pos) { u16 scalc; f32 fcalc; - sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos); + sAdo_Calc_MicPosition_forTrig(&fcalc, &scalc, pos); Na_FloorTrgStart(id, scalc, fcalc); } -extern void sAdo_RhythmStart(void* p, u8 b1, u8 b2){ +extern void sAdo_RhythmStart(u32 p, s8 type, s8 wait) { - Na_RhythmStart(p,b1,b2); + Na_RhythmStart(p, type, wait); } -extern void sAdo_RhythmStop(void* p){ +extern void sAdo_RhythmStop(u32 p) { Na_RhythmStop(p); } -extern void sAdo_RhythmAllStop(){ - +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){ +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_MDPlayerPos(scalc,s1,s2,p,fcalc); + Na_FurnitureInst(track_id, cb, cl, scalc, fcalc); } -extern void sAdo_BGMVolume(f32 volume, u16 vol_move_ctr){ +extern void sAdo_Pause(u8 mode) { - Na_BGMVolume(volume, vol_move_ctr); + Na_Pause(mode); } -extern void sAdo_BgmCrossfadeStart(u8 b){ +extern f32 sAdo_GetRhythmAnimCounter(u32 p) { - Na_BgmCrossfadeStart(b); + return Na_GetRhythmAnimCounter(p); } -extern void sAdo_SubGameStart(){ +extern s8 sAdo_GetRhythmDelay(u32 p) { - Na_SubGameStart(); + return Na_GetRhythmDelay(p); } -extern void sAdo_SubGameEnd(){ +extern f32 sAdo_GetRhythmInfo(u32 p) { - Na_SubGameEnd(); + return Na_GetRhythmInfo(p); } -extern int sAdo_SubGameOK(){ +extern void sAdo_SetRhythmInfo(f32 p) { - return Na_SubGameOK(); + Na_SetRhythmInfo(p); } -extern void sAdo_Tenki(u8 mode){ +extern int sAdo_InstCountGet() { - Na_Tenki(mode); + return Na_InstCountGet(); } -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 u8 sAdo_BgmFadeoutCheck(){ - - Na_BgmFadeoutCheck(); -} - -extern u8 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){ +extern void sAdo_RhythmPos(u32 p, u8 haniwa_id, xyz_t* pos) { u16 scalc; f32 fcalc; sAdo_Calc_MicPosition_forLevel(&fcalc, &scalc, pos); - Na_RoomIncectPos(f,u,scalc,fcalc); - + Na_RhythmPos(p, haniwa_id, scalc, fcalc); } -extern void sAdo_FurnitureInstPos(int f, xyz_t* pos){ +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 volume, u16 vol_move_ctr) { + + Na_BGMVolume(volume, vol_move_ctr); +} + +extern void sAdo_BgmCrossfadeStart(u8 b) { + + Na_BgmCrossfadeStart(b); +} + +extern void sAdo_SubGameStart() { + + Na_SubGameStart(); +} + +extern void sAdo_SubGameEnd() { + + Na_SubGameEnd(); +} + +extern int 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 u8 sAdo_BgmFadeoutCheck() { + + Na_BgmFadeoutCheck(); +} + +extern u8 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; @@ -468,46 +461,46 @@ extern void sAdo_FurnitureInstPos(int f, xyz_t* pos){ Na_FurnitureInstPos(f, scalc, fcalc); } -extern void sAdo_Set_ongenpos_refuse_fg(int state){ +extern void sAdo_Set_ongenpos_refuse_fg(int state) { S_ongenpos_refuse_fg = state; } -extern int sAdo_GameframeEnd_Check(){ +extern int sAdo_GameframeEnd_Check() { return S_ongenpos_refuse_fg; } -extern int sAdo_GetSoundFrameCounter(){ +extern int sAdo_GetSoundFrameCounter() { return Na_GetSoundFrameCounter(); } -extern int sAdo_CheckOnPlussBridge(xyz_t* pos, u32 atr){ +extern int sAdo_CheckOnPlussBridge(xyz_t* pos, u32 atr) { f32 x; f32 z; - if((Common_Get(pluss_bridge_pos) != NULL) && (atr == 0x17)){ + 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){ + if ((x * x) + (z * z) < 3969.0f) { return 1; } } return 0; } -extern void sAdo_RegistPlussBridge(xyz_t* pos){ +extern void sAdo_RegistPlussBridge(xyz_t* pos) { Common_Set(pluss_bridge_pos, pos); } -extern void sAdo_DeletePlussBridge(){ +extern void sAdo_DeletePlussBridge() { Common_Set(pluss_bridge_pos, NULL); } -extern void sAdo_kazagurumaLevel(f32 level){ +extern void sAdo_kazagurumaLevel(f32 level) { Na_kazagurumaLevel(level); -} \ No newline at end of file +} diff --git a/src/f_furniture.c b/src/f_furniture.c index 50808980..70a24658 100644 --- a/src/f_furniture.c +++ b/src/f_furniture.c @@ -166,7 +166,7 @@ static Gfx* fFTR_GetTwoTileGfx(int width0, int height0, int scroll_x0, int scrol #include "../src/ftr/ac_famicom_common.c" // #include "../src/ftr/ac_fmanekin.c" // #include "../src/ftr/ac_fumbrella.c" -// #include "../src/ftr/ac_hnw_common.c" +#include "../src/ftr/ac_hnw_common.c" #include "../src/ftr/ac_ike_art_ang.c" #include "../src/ftr/ac_ike_art_fel.c" // #include "../src/ftr/ac_ike_island_hako01.c" diff --git a/src/ftr/ac_hnw_common.c b/src/ftr/ac_hnw_common.c index 4a7b95e1..0f212776 100644 --- a/src/ftr/ac_hnw_common.c +++ b/src/ftr/ac_hnw_common.c @@ -1,33 +1,533 @@ -static void aHnwCommon_ct(FTR_ACTOR* ftr_actor, u8* data); -static void aHnwCommon_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); -static void aHnwCommon_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data); -static void aHnwCommon_dt(FTR_ACTOR* ftr_actor, u8* data); -static void aHnwCommon_dma(mActor_name_t ftr_name, u8* data); +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw001; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw002; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw003; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw004; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw005; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw006; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw007; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw008; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw009; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw010; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw011; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw012; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw013; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw014; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw015; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw016; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw017; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw018; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw019; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw020; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw021; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw022; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw023; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw024; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw025; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw026; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw027; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw028; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw029; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw030; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw031; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw032; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw033; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw034; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw035; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw036; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw037; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw038; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw039; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw040; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw041; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw042; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw043; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw044; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw045; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw046; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw047; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw048; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw049; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw050; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw051; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw052; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw053; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw054; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw055; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw056; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw057; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw058; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw059; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw060; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw061; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw062; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw063; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw064; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw065; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw066; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw067; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw068; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw069; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw070; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw071; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw072; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw073; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw074; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw075; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw076; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw077; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw078; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw079; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw080; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw081; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw082; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw083; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw084; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw085; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw086; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw087; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw088; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw089; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw090; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw091; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw092; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw093; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw094; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw095; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw096; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw097; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw098; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw099; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw100; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw101; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw102; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw103; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw104; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw105; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw106; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw107; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw108; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw109; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw110; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw111; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw112; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw113; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw114; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw115; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw116; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw117; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw118; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw119; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw120; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw121; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw122; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw123; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw124; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw125; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw126; +extern cKF_Skeleton_R_c cKF_bs_r_int_hnw127; + +extern cKF_Animation_R_c cKF_ba_r_int_hnw001; +extern cKF_Animation_R_c cKF_ba_r_int_hnw002; +extern cKF_Animation_R_c cKF_ba_r_int_hnw003; +extern cKF_Animation_R_c cKF_ba_r_int_hnw004; +extern cKF_Animation_R_c cKF_ba_r_int_hnw005; +extern cKF_Animation_R_c cKF_ba_r_int_hnw006; +extern cKF_Animation_R_c cKF_ba_r_int_hnw007; +extern cKF_Animation_R_c cKF_ba_r_int_hnw008; +extern cKF_Animation_R_c cKF_ba_r_int_hnw009; +extern cKF_Animation_R_c cKF_ba_r_int_hnw010; +extern cKF_Animation_R_c cKF_ba_r_int_hnw011; +extern cKF_Animation_R_c cKF_ba_r_int_hnw012; +extern cKF_Animation_R_c cKF_ba_r_int_hnw013; +extern cKF_Animation_R_c cKF_ba_r_int_hnw014; +extern cKF_Animation_R_c cKF_ba_r_int_hnw015; +extern cKF_Animation_R_c cKF_ba_r_int_hnw016; +extern cKF_Animation_R_c cKF_ba_r_int_hnw017; +extern cKF_Animation_R_c cKF_ba_r_int_hnw018; +extern cKF_Animation_R_c cKF_ba_r_int_hnw019; +extern cKF_Animation_R_c cKF_ba_r_int_hnw020; +extern cKF_Animation_R_c cKF_ba_r_int_hnw021; +extern cKF_Animation_R_c cKF_ba_r_int_hnw022; +extern cKF_Animation_R_c cKF_ba_r_int_hnw023; +extern cKF_Animation_R_c cKF_ba_r_int_hnw024; +extern cKF_Animation_R_c cKF_ba_r_int_hnw025; +extern cKF_Animation_R_c cKF_ba_r_int_hnw026; +extern cKF_Animation_R_c cKF_ba_r_int_hnw027; +extern cKF_Animation_R_c cKF_ba_r_int_hnw028; +extern cKF_Animation_R_c cKF_ba_r_int_hnw029; +extern cKF_Animation_R_c cKF_ba_r_int_hnw030; +extern cKF_Animation_R_c cKF_ba_r_int_hnw031; +extern cKF_Animation_R_c cKF_ba_r_int_hnw032; +extern cKF_Animation_R_c cKF_ba_r_int_hnw033; +extern cKF_Animation_R_c cKF_ba_r_int_hnw034; +extern cKF_Animation_R_c cKF_ba_r_int_hnw035; +extern cKF_Animation_R_c cKF_ba_r_int_hnw036; +extern cKF_Animation_R_c cKF_ba_r_int_hnw037; +extern cKF_Animation_R_c cKF_ba_r_int_hnw038; +extern cKF_Animation_R_c cKF_ba_r_int_hnw039; +extern cKF_Animation_R_c cKF_ba_r_int_hnw040; +extern cKF_Animation_R_c cKF_ba_r_int_hnw041; +extern cKF_Animation_R_c cKF_ba_r_int_hnw042; +extern cKF_Animation_R_c cKF_ba_r_int_hnw043; +extern cKF_Animation_R_c cKF_ba_r_int_hnw044; +extern cKF_Animation_R_c cKF_ba_r_int_hnw045; +extern cKF_Animation_R_c cKF_ba_r_int_hnw046; +extern cKF_Animation_R_c cKF_ba_r_int_hnw047; +extern cKF_Animation_R_c cKF_ba_r_int_hnw048; +extern cKF_Animation_R_c cKF_ba_r_int_hnw049; +extern cKF_Animation_R_c cKF_ba_r_int_hnw050; +extern cKF_Animation_R_c cKF_ba_r_int_hnw051; +extern cKF_Animation_R_c cKF_ba_r_int_hnw052; +extern cKF_Animation_R_c cKF_ba_r_int_hnw053; +extern cKF_Animation_R_c cKF_ba_r_int_hnw054; +extern cKF_Animation_R_c cKF_ba_r_int_hnw055; +extern cKF_Animation_R_c cKF_ba_r_int_hnw056; +extern cKF_Animation_R_c cKF_ba_r_int_hnw057; +extern cKF_Animation_R_c cKF_ba_r_int_hnw058; +extern cKF_Animation_R_c cKF_ba_r_int_hnw059; +extern cKF_Animation_R_c cKF_ba_r_int_hnw060; +extern cKF_Animation_R_c cKF_ba_r_int_hnw061; +extern cKF_Animation_R_c cKF_ba_r_int_hnw062; +extern cKF_Animation_R_c cKF_ba_r_int_hnw063; +extern cKF_Animation_R_c cKF_ba_r_int_hnw064; +extern cKF_Animation_R_c cKF_ba_r_int_hnw065; +extern cKF_Animation_R_c cKF_ba_r_int_hnw066; +extern cKF_Animation_R_c cKF_ba_r_int_hnw067; +extern cKF_Animation_R_c cKF_ba_r_int_hnw068; +extern cKF_Animation_R_c cKF_ba_r_int_hnw069; +extern cKF_Animation_R_c cKF_ba_r_int_hnw070; +extern cKF_Animation_R_c cKF_ba_r_int_hnw071; +extern cKF_Animation_R_c cKF_ba_r_int_hnw072; +extern cKF_Animation_R_c cKF_ba_r_int_hnw073; +extern cKF_Animation_R_c cKF_ba_r_int_hnw074; +extern cKF_Animation_R_c cKF_ba_r_int_hnw075; +extern cKF_Animation_R_c cKF_ba_r_int_hnw076; +extern cKF_Animation_R_c cKF_ba_r_int_hnw077; +extern cKF_Animation_R_c cKF_ba_r_int_hnw078; +extern cKF_Animation_R_c cKF_ba_r_int_hnw079; +extern cKF_Animation_R_c cKF_ba_r_int_hnw080; +extern cKF_Animation_R_c cKF_ba_r_int_hnw081; +extern cKF_Animation_R_c cKF_ba_r_int_hnw082; +extern cKF_Animation_R_c cKF_ba_r_int_hnw083; +extern cKF_Animation_R_c cKF_ba_r_int_hnw084; +extern cKF_Animation_R_c cKF_ba_r_int_hnw085; +extern cKF_Animation_R_c cKF_ba_r_int_hnw086; +extern cKF_Animation_R_c cKF_ba_r_int_hnw087; +extern cKF_Animation_R_c cKF_ba_r_int_hnw088; +extern cKF_Animation_R_c cKF_ba_r_int_hnw089; +extern cKF_Animation_R_c cKF_ba_r_int_hnw090; +extern cKF_Animation_R_c cKF_ba_r_int_hnw091; +extern cKF_Animation_R_c cKF_ba_r_int_hnw092; +extern cKF_Animation_R_c cKF_ba_r_int_hnw093; +extern cKF_Animation_R_c cKF_ba_r_int_hnw094; +extern cKF_Animation_R_c cKF_ba_r_int_hnw095; +extern cKF_Animation_R_c cKF_ba_r_int_hnw096; +extern cKF_Animation_R_c cKF_ba_r_int_hnw097; +extern cKF_Animation_R_c cKF_ba_r_int_hnw098; +extern cKF_Animation_R_c cKF_ba_r_int_hnw099; +extern cKF_Animation_R_c cKF_ba_r_int_hnw100; +extern cKF_Animation_R_c cKF_ba_r_int_hnw101; +extern cKF_Animation_R_c cKF_ba_r_int_hnw102; +extern cKF_Animation_R_c cKF_ba_r_int_hnw103; +extern cKF_Animation_R_c cKF_ba_r_int_hnw104; +extern cKF_Animation_R_c cKF_ba_r_int_hnw105; +extern cKF_Animation_R_c cKF_ba_r_int_hnw106; +extern cKF_Animation_R_c cKF_ba_r_int_hnw107; +extern cKF_Animation_R_c cKF_ba_r_int_hnw108; +extern cKF_Animation_R_c cKF_ba_r_int_hnw109; +extern cKF_Animation_R_c cKF_ba_r_int_hnw110; +extern cKF_Animation_R_c cKF_ba_r_int_hnw111; +extern cKF_Animation_R_c cKF_ba_r_int_hnw112; +extern cKF_Animation_R_c cKF_ba_r_int_hnw113; +extern cKF_Animation_R_c cKF_ba_r_int_hnw114; +extern cKF_Animation_R_c cKF_ba_r_int_hnw115; +extern cKF_Animation_R_c cKF_ba_r_int_hnw116; +extern cKF_Animation_R_c cKF_ba_r_int_hnw117; +extern cKF_Animation_R_c cKF_ba_r_int_hnw118; +extern cKF_Animation_R_c cKF_ba_r_int_hnw119; +extern cKF_Animation_R_c cKF_ba_r_int_hnw120; +extern cKF_Animation_R_c cKF_ba_r_int_hnw121; +extern cKF_Animation_R_c cKF_ba_r_int_hnw122; +extern cKF_Animation_R_c cKF_ba_r_int_hnw123; +extern cKF_Animation_R_c cKF_ba_r_int_hnw124; +extern cKF_Animation_R_c cKF_ba_r_int_hnw125; +extern cKF_Animation_R_c cKF_ba_r_int_hnw126; +extern cKF_Animation_R_c cKF_ba_r_int_hnw127; + +static cKF_Skeleton_R_c* hnw_cKF_bs_r_table[] = { + &cKF_bs_r_int_hnw001, &cKF_bs_r_int_hnw002, &cKF_bs_r_int_hnw003, &cKF_bs_r_int_hnw004, &cKF_bs_r_int_hnw005, + &cKF_bs_r_int_hnw006, &cKF_bs_r_int_hnw007, &cKF_bs_r_int_hnw008, &cKF_bs_r_int_hnw009, &cKF_bs_r_int_hnw010, + &cKF_bs_r_int_hnw011, &cKF_bs_r_int_hnw012, &cKF_bs_r_int_hnw013, &cKF_bs_r_int_hnw014, &cKF_bs_r_int_hnw015, + &cKF_bs_r_int_hnw016, &cKF_bs_r_int_hnw017, &cKF_bs_r_int_hnw018, &cKF_bs_r_int_hnw019, &cKF_bs_r_int_hnw020, + &cKF_bs_r_int_hnw021, &cKF_bs_r_int_hnw022, &cKF_bs_r_int_hnw023, &cKF_bs_r_int_hnw024, &cKF_bs_r_int_hnw025, + &cKF_bs_r_int_hnw026, &cKF_bs_r_int_hnw027, &cKF_bs_r_int_hnw028, &cKF_bs_r_int_hnw029, &cKF_bs_r_int_hnw030, + &cKF_bs_r_int_hnw031, &cKF_bs_r_int_hnw032, &cKF_bs_r_int_hnw033, &cKF_bs_r_int_hnw034, &cKF_bs_r_int_hnw035, + &cKF_bs_r_int_hnw036, &cKF_bs_r_int_hnw037, &cKF_bs_r_int_hnw038, &cKF_bs_r_int_hnw039, &cKF_bs_r_int_hnw040, + &cKF_bs_r_int_hnw041, &cKF_bs_r_int_hnw042, &cKF_bs_r_int_hnw043, &cKF_bs_r_int_hnw044, &cKF_bs_r_int_hnw045, + &cKF_bs_r_int_hnw046, &cKF_bs_r_int_hnw047, &cKF_bs_r_int_hnw048, &cKF_bs_r_int_hnw049, &cKF_bs_r_int_hnw050, + &cKF_bs_r_int_hnw051, &cKF_bs_r_int_hnw052, &cKF_bs_r_int_hnw053, &cKF_bs_r_int_hnw054, &cKF_bs_r_int_hnw055, + &cKF_bs_r_int_hnw056, &cKF_bs_r_int_hnw057, &cKF_bs_r_int_hnw058, &cKF_bs_r_int_hnw059, &cKF_bs_r_int_hnw060, + &cKF_bs_r_int_hnw061, &cKF_bs_r_int_hnw062, &cKF_bs_r_int_hnw063, &cKF_bs_r_int_hnw064, &cKF_bs_r_int_hnw065, + &cKF_bs_r_int_hnw066, &cKF_bs_r_int_hnw067, &cKF_bs_r_int_hnw068, &cKF_bs_r_int_hnw069, &cKF_bs_r_int_hnw070, + &cKF_bs_r_int_hnw071, &cKF_bs_r_int_hnw072, &cKF_bs_r_int_hnw073, &cKF_bs_r_int_hnw074, &cKF_bs_r_int_hnw075, + &cKF_bs_r_int_hnw076, &cKF_bs_r_int_hnw077, &cKF_bs_r_int_hnw078, &cKF_bs_r_int_hnw079, &cKF_bs_r_int_hnw080, + &cKF_bs_r_int_hnw081, &cKF_bs_r_int_hnw082, &cKF_bs_r_int_hnw083, &cKF_bs_r_int_hnw084, &cKF_bs_r_int_hnw085, + &cKF_bs_r_int_hnw086, &cKF_bs_r_int_hnw087, &cKF_bs_r_int_hnw088, &cKF_bs_r_int_hnw089, &cKF_bs_r_int_hnw090, + &cKF_bs_r_int_hnw091, &cKF_bs_r_int_hnw092, &cKF_bs_r_int_hnw093, &cKF_bs_r_int_hnw094, &cKF_bs_r_int_hnw095, + &cKF_bs_r_int_hnw096, &cKF_bs_r_int_hnw097, &cKF_bs_r_int_hnw098, &cKF_bs_r_int_hnw099, &cKF_bs_r_int_hnw100, + &cKF_bs_r_int_hnw101, &cKF_bs_r_int_hnw102, &cKF_bs_r_int_hnw103, &cKF_bs_r_int_hnw104, &cKF_bs_r_int_hnw105, + &cKF_bs_r_int_hnw106, &cKF_bs_r_int_hnw107, &cKF_bs_r_int_hnw108, &cKF_bs_r_int_hnw109, &cKF_bs_r_int_hnw110, + &cKF_bs_r_int_hnw111, &cKF_bs_r_int_hnw112, &cKF_bs_r_int_hnw113, &cKF_bs_r_int_hnw114, &cKF_bs_r_int_hnw115, + &cKF_bs_r_int_hnw116, &cKF_bs_r_int_hnw117, &cKF_bs_r_int_hnw118, &cKF_bs_r_int_hnw119, &cKF_bs_r_int_hnw120, + &cKF_bs_r_int_hnw121, &cKF_bs_r_int_hnw122, &cKF_bs_r_int_hnw123, &cKF_bs_r_int_hnw124, &cKF_bs_r_int_hnw125, + &cKF_bs_r_int_hnw126, &cKF_bs_r_int_hnw127, &cKF_bs_r_int_hnw001 +}; + +static cKF_Animation_R_c* hnw_cKF_ba_r_table[] = { + &cKF_ba_r_int_hnw001, &cKF_ba_r_int_hnw002, &cKF_ba_r_int_hnw003, &cKF_ba_r_int_hnw004, &cKF_ba_r_int_hnw005, + &cKF_ba_r_int_hnw006, &cKF_ba_r_int_hnw007, &cKF_ba_r_int_hnw008, &cKF_ba_r_int_hnw009, &cKF_ba_r_int_hnw010, + &cKF_ba_r_int_hnw011, &cKF_ba_r_int_hnw012, &cKF_ba_r_int_hnw013, &cKF_ba_r_int_hnw014, &cKF_ba_r_int_hnw015, + &cKF_ba_r_int_hnw016, &cKF_ba_r_int_hnw017, &cKF_ba_r_int_hnw018, &cKF_ba_r_int_hnw019, &cKF_ba_r_int_hnw020, + &cKF_ba_r_int_hnw021, &cKF_ba_r_int_hnw022, &cKF_ba_r_int_hnw023, &cKF_ba_r_int_hnw024, &cKF_ba_r_int_hnw025, + &cKF_ba_r_int_hnw026, &cKF_ba_r_int_hnw027, &cKF_ba_r_int_hnw028, &cKF_ba_r_int_hnw029, &cKF_ba_r_int_hnw030, + &cKF_ba_r_int_hnw031, &cKF_ba_r_int_hnw032, &cKF_ba_r_int_hnw033, &cKF_ba_r_int_hnw034, &cKF_ba_r_int_hnw035, + &cKF_ba_r_int_hnw036, &cKF_ba_r_int_hnw037, &cKF_ba_r_int_hnw038, &cKF_ba_r_int_hnw039, &cKF_ba_r_int_hnw040, + &cKF_ba_r_int_hnw041, &cKF_ba_r_int_hnw042, &cKF_ba_r_int_hnw043, &cKF_ba_r_int_hnw044, &cKF_ba_r_int_hnw045, + &cKF_ba_r_int_hnw046, &cKF_ba_r_int_hnw047, &cKF_ba_r_int_hnw048, &cKF_ba_r_int_hnw049, &cKF_ba_r_int_hnw050, + &cKF_ba_r_int_hnw051, &cKF_ba_r_int_hnw052, &cKF_ba_r_int_hnw053, &cKF_ba_r_int_hnw054, &cKF_ba_r_int_hnw055, + &cKF_ba_r_int_hnw056, &cKF_ba_r_int_hnw057, &cKF_ba_r_int_hnw058, &cKF_ba_r_int_hnw059, &cKF_ba_r_int_hnw060, + &cKF_ba_r_int_hnw061, &cKF_ba_r_int_hnw062, &cKF_ba_r_int_hnw063, &cKF_ba_r_int_hnw064, &cKF_ba_r_int_hnw065, + &cKF_ba_r_int_hnw066, &cKF_ba_r_int_hnw067, &cKF_ba_r_int_hnw068, &cKF_ba_r_int_hnw069, &cKF_ba_r_int_hnw070, + &cKF_ba_r_int_hnw071, &cKF_ba_r_int_hnw072, &cKF_ba_r_int_hnw073, &cKF_ba_r_int_hnw074, &cKF_ba_r_int_hnw075, + &cKF_ba_r_int_hnw076, &cKF_ba_r_int_hnw077, &cKF_ba_r_int_hnw078, &cKF_ba_r_int_hnw079, &cKF_ba_r_int_hnw080, + &cKF_ba_r_int_hnw081, &cKF_ba_r_int_hnw082, &cKF_ba_r_int_hnw083, &cKF_ba_r_int_hnw084, &cKF_ba_r_int_hnw085, + &cKF_ba_r_int_hnw086, &cKF_ba_r_int_hnw087, &cKF_ba_r_int_hnw088, &cKF_ba_r_int_hnw089, &cKF_ba_r_int_hnw090, + &cKF_ba_r_int_hnw091, &cKF_ba_r_int_hnw092, &cKF_ba_r_int_hnw093, &cKF_ba_r_int_hnw094, &cKF_ba_r_int_hnw095, + &cKF_ba_r_int_hnw096, &cKF_ba_r_int_hnw097, &cKF_ba_r_int_hnw098, &cKF_ba_r_int_hnw099, &cKF_ba_r_int_hnw100, + &cKF_ba_r_int_hnw101, &cKF_ba_r_int_hnw102, &cKF_ba_r_int_hnw103, &cKF_ba_r_int_hnw104, &cKF_ba_r_int_hnw105, + &cKF_ba_r_int_hnw106, &cKF_ba_r_int_hnw107, &cKF_ba_r_int_hnw108, &cKF_ba_r_int_hnw109, &cKF_ba_r_int_hnw110, + &cKF_ba_r_int_hnw111, &cKF_ba_r_int_hnw112, &cKF_ba_r_int_hnw113, &cKF_ba_r_int_hnw114, &cKF_ba_r_int_hnw115, + &cKF_ba_r_int_hnw116, &cKF_ba_r_int_hnw117, &cKF_ba_r_int_hnw118, &cKF_ba_r_int_hnw119, &cKF_ba_r_int_hnw120, + &cKF_ba_r_int_hnw121, &cKF_ba_r_int_hnw122, &cKF_ba_r_int_hnw123, &cKF_ba_r_int_hnw124, &cKF_ba_r_int_hnw125, + &cKF_ba_r_int_hnw126, &cKF_ba_r_int_hnw127, &cKF_ba_r_int_hnw001 +}; + +static u8 cKF_ckcb_r_int_hnw_off_tbl[] = { + // clang-format off + cKF_ANIMITION_BIT_NONE, + cKF_ANIMITION_BIT_NONE, + cKF_ANIMITION_BIT_NONE, + cKF_ANIMITION_BIT_NONE, + cKF_ANIMITION_BIT_NONE, + cKF_ANIMITION_BIT_NONE, + cKF_ANIMITION_BIT_NONE + // clang-format on +}; + +static s16 cKF_c_int_hnw_off_tbl[] = { + // clang-format off + 0, 0, 0, + 0, 0, 900, + 0, 0, 0, + 0, 0, 0, + 0, 0, -900, + 0, 0, 0, + 0, 0, -2700, + 0, 0, 0 + // clang-format on +}; + +static cKF_Animation_R_c cKF_ba_r_int_hnw_off = { + cKF_ckcb_r_int_hnw_off_tbl, NULL, NULL, cKF_c_int_hnw_off_tbl, -1, 9 +}; + +static void aHnwCommon_RhythmStart(FTR_ACTOR* ftr_actor, int state, s8 delay) { + sAdo_RhythmStart((u32)ftr_actor, state + 1, delay); + ftr_actor->dynamic_work_s[0] = 0; + ftr_actor->dynamic_work_f[1] = 0.0f; +} + +static void aHnwCommon_ct(FTR_ACTOR* ftr_actor, u8* data) { + int haniwa_idx = ftr_actor->name - 0x16C; + cKF_SkeletonInfo_R_c* keyframe = &ftr_actor->keyframe; + s_xyz* work = ftr_actor->joint; + s_xyz* morph = ftr_actor->morph; + + cKF_SkeletonInfo_R_ct(keyframe, hnw_cKF_bs_r_table[haniwa_idx], hnw_cKF_ba_r_table[haniwa_idx], work, morph); + cKF_SkeletonInfo_R_init_standard_repeat(keyframe, hnw_cKF_ba_r_table[haniwa_idx], NULL); + keyframe->frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_play(keyframe); + keyframe->frame_control.start_frame = 1.0f; + keyframe->frame_control.end_frame = hnw_cKF_ba_r_table[haniwa_idx]->frames; + keyframe->frame_control.speed = 0.5f; + + /* Disable animation if turned off */ + if (ftr_actor->switch_bit == FALSE) { + ftr_actor->haniwa_state = aFTR_HNW_STATE_OFF; + cKF_SkeletonInfo_R_init(keyframe, keyframe->skeleton, &cKF_ba_r_int_hnw_off, 1.0f, cKF_ba_r_int_hnw_off.frames, + 0.0f, 0.0f, 10.0f, cKF_FRAMECONTROL_STOP, NULL); + } + + if (ftr_actor->dynamic_work_s[3] == 0) { + ftr_actor->dynamic_work_s[2] = 5; + } else { + ftr_actor->dynamic_work_s[2] = 0; + } +} + +static void aHnwCommon_mv(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + int haniwa_idx = ftr_actor->name - 0x16C; + cKF_SkeletonInfo_R_c* keyframe = &ftr_actor->keyframe; + + if (ftr_actor->dynamic_work_s[2] > 0) { + ftr_actor->dynamic_work_s[2]--; + } + + switch (ftr_actor->haniwa_state) { + case aFTR_HNW_STATE_WAIT_TURN_ON: { + ftr_actor->haniwa_state++; + break; + } + + case aFTR_HNW_STATE_TURN_ON: { + if (ftr_actor->dynamic_work_s[2] <= 0) { + aHnwCommon_RhythmStart(ftr_actor, (int)haniwa_idx, (int)ftr_actor->haniwa_step); + ftr_actor->haniwa_state++; + } + break; + } + + case aFTR_HNW_STATE_ON: { + f32 counter; + f32 last_frame; + s8 delay; + + if (ftr_actor->dynamic_work_s[2] > 0) { + return; + } + + delay = sAdo_GetRhythmDelay((u32)ftr_actor); + if (delay != -1) { + ftr_actor->haniwa_step = delay; + } + + sAdo_RhythmPos((u32)ftr_actor, haniwa_idx + 1, &ftr_actor->position); + counter = sAdo_GetRhythmAnimCounter((u32)ftr_actor); + + if (counter >= 0.0f) { + if (counter < ftr_actor->dynamic_work_f[1]) { + ftr_actor->dynamic_work_s[0] ^= 1; + } + + ftr_actor->dynamic_work_f[1] = counter; + + if (haniwa_idx == 7 || /* tall oombloid */ + haniwa_idx == 12 || /* sputnoid */ + haniwa_idx == 38 || /* mini bowtoid */ + haniwa_idx == 39 || /* bowtoid */ + haniwa_idx == 48 || /* mega timpanoid */ + haniwa_idx == 89 /* mini puffoid */ + ) { + if (counter >= 0.5f) { + counter = (counter - 0.5f) * 2.0f; + } else { + counter = counter * 2.0f; + } + } else if (haniwa_idx == 121 || /* mega plinkoid */ + haniwa_idx == 122 || /* plinkoid */ + haniwa_idx == 123 /* mini plinkoid */ + ) { + if (ftr_actor->dynamic_work_s[0] == 0) { + counter = counter * 0.5f; + } else { + counter = (counter * 0.5f) + 0.5f; + } + } + + last_frame = (f32)hnw_cKF_ba_r_table[haniwa_idx]->frames; + add_calc(&ftr_actor->dynamic_work_f[0], 0.0f, 0.5f, 1.0f, 0.1f); + if (ftr_actor->dynamic_work_f[0] < 1.0f) { + ftr_actor->dynamic_work_f[0] = 0.0f; + } + + cKF_SkeletonInfo_R_init(keyframe, keyframe->skeleton, hnw_cKF_ba_r_table[haniwa_idx], 1.0f, last_frame, + counter * (last_frame - 1.0f) + 1.0f, 0.0f, ftr_actor->dynamic_work_f[0], + cKF_FRAMECONTROL_STOP, NULL); + } else if (counter == -2.0f) { + cKF_SkeletonInfo_R_init(keyframe, keyframe->skeleton, &cKF_ba_r_int_hnw_off, 1.0f, + cKF_ba_r_int_hnw_off.frames, 0.0f, 0.0f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); + ftr_actor->dynamic_work_f[0] = 4.0f; + } else { + last_frame = (f32)hnw_cKF_ba_r_table[haniwa_idx]->frames; + + cKF_SkeletonInfo_R_init(keyframe, keyframe->skeleton, hnw_cKF_ba_r_table[haniwa_idx], 1.0f, last_frame, + 0.0f, 0.0f, 2.0f, cKF_FRAMECONTROL_STOP, NULL); + ftr_actor->dynamic_work_f[0] = 2.0f; + } + + if (ftr_actor->switch_changed_flag && ftr_actor->switch_bit == FALSE) { + sAdo_RhythmStop((u32)ftr_actor); + ftr_actor->haniwa_state = aFTR_HNW_STATE_OFF; + cKF_SkeletonInfo_R_init(keyframe, keyframe->skeleton, &cKF_ba_r_int_hnw_off, 1.0f, + cKF_ba_r_int_hnw_off.frames, 0.0f, 0.0f, 10.0f, cKF_FRAMECONTROL_STOP, NULL); + } + break; + } + + case aFTR_HNW_STATE_OFF: { + if (ftr_actor->switch_changed_flag && ftr_actor->switch_bit == TRUE) { + ftr_actor->haniwa_step = -1; + ftr_actor->dynamic_work_f[0] = 10.0f; + ftr_actor->haniwa_state = aFTR_HNW_STATE_TURN_ON; + } + break; + } + } + + cKF_SkeletonInfo_R_play(keyframe); +} + +static void aHnwCommon_dw(FTR_ACTOR* ftr_actor, ACTOR* my_room_actor, GAME* game, u8* data) { + cKF_SkeletonInfo_R_c* keyframe = &ftr_actor->keyframe; + Mtx* mtx = ftr_actor->skeleton_mtx[game->frame_counter & 1]; + + OPEN_DISP(game->graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_DISP(game->graph); + + cKF_Si3_draw_R_SV(game, keyframe, mtx, NULL, NULL, NULL); +} + +static void aHnwCommon_dt(FTR_ACTOR* ftr_actor, u8* data) { + sAdo_RhythmStop((u32)ftr_actor); +} + +static void aHnwCommon_dma(mActor_name_t ftr_name, u8* data) { + // nothing +} static aFTR_vtable_c aHnwCommon_func = { - &aHnwCommon_ct, - &aHnwCommon_mv, - &aHnwCommon_dw, - &aHnwCommon_dt, - &aHnwCommon_dma, + &aHnwCommon_ct, &aHnwCommon_mv, &aHnwCommon_dw, &aHnwCommon_dt, &aHnwCommon_dma, }; aFTR_PROFILE iam_hnw_common = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - 27.0f, - 0.01f, - aFTR_SHAPE_TYPEA, - mCoBG_FTR_TYPEA, - 0, - 0, - 0, - aFTR_INTERACTION_HANIWA, - &aHnwCommon_func, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + 27.0f, + 0.01f, + aFTR_SHAPE_TYPEA, + mCoBG_FTR_TYPEA, + 0, + 0, + 0, + aFTR_INTERACTION_HANIWA, + &aHnwCommon_func, };