Merge pull request #277 from Cuyler36:ac_hnw_common

Implement ac_hnw_common
This commit is contained in:
Cuyler36
2024-03-05 00:34:45 -05:00
committed by GitHub
7 changed files with 864 additions and 359 deletions
+9
View File
@@ -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 [- *] */
+17 -16
View File
@@ -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);
+16 -14
View File
@@ -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();
+6 -6
View File
@@ -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
#endif
+288 -295
View File
@@ -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);
}
}
+1 -1
View File
@@ -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"
+527 -27
View File
@@ -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,
};