Implement & link ac_hatumode_control, ac_hatumode_npc0

This commit is contained in:
Cuyler36
2024-11-05 00:18:02 -05:00
parent 938310c423
commit 5e6cd98f07
12 changed files with 1211 additions and 6 deletions
+32 -1
View File
@@ -8,6 +8,38 @@
extern "C" {
#endif
typedef struct hatumode_event_save_s {
u16 state;
u16 flags0;
u16 flags1;
s16 yashiro_pos[3];
u8 cur_npc_idx;
} aEv_hatumode_save_c;
typedef void (*aHTMD_TALK_INFO_PROC)(ACTOR*, int);
typedef int (*aHTMD_THINK_INIT_PROC)(ACTOR*, GAME_PLAY*);
typedef int (*aHTMD_SET_START_PROC)(ACTOR*);
typedef int (*aHTMD_PLAYER_MOVE_PROC)(GAME_PLAY*, int);
typedef int (*aHTMD_LOOK_PLAYER_PROC)(ACTOR*);
typedef struct hatumode_ctrl_clip_s {
aHTMD_TALK_INFO_PROC talk_info_proc;
aHTMD_THINK_INIT_PROC think_init_proc;
aHTMD_SET_START_PROC set_start_proc;
aHTMD_PLAYER_MOVE_PROC player_move_proc;
aHTMD_LOOK_PLAYER_PROC look_player_proc;
} aHTMD_clip_c;
typedef struct hatumode_ctrl_actor_s HATUMODE_CONTROL_ACTOR;
typedef void (*aHTC_MOVE_PROC)(HATUMODE_CONTROL_ACTOR*, GAME_PLAY*);
struct hatumode_ctrl_actor_s {
ACTOR actor_class;
aHTMD_clip_c clip;
aHTC_MOVE_PROC move_proc;
};
extern ACTOR_PROFILE Hatumode_Control_Profile;
#ifdef __cplusplus
@@ -15,4 +47,3 @@ extern ACTOR_PROFILE Hatumode_Control_Profile;
#endif
#endif
+66 -1
View File
@@ -3,11 +3,77 @@
#include "types.h"
#include "m_actor.h"
#include "ac_npc.h"
#ifdef __cplusplus
extern "C" {
#endif
#define aHN0_TALK_REQ_NONE 0
#define aHN0_TALK_REQ_NORM 1
#define aHN0_TALK_REQ_FORCE 2
enum {
aHN0_THINK_INIT_NONE,
aHN0_THINK_INIT_NORMAL_WAIT,
aHN0_THINK_INIT_MOVE,
aHN0_THINK_INIT_TURN_F,
aHN0_THINK_INIT_SAISEN,
aHN0_THINK_INIT_OMAIRI_AF,
aHN0_THINK_INIT_NEXT_POS,
aHN0_THINK_INIT_TURN_MOVE,
aHN0_THINK_INIT_MOVE_BF,
aHN0_THINK_INIT_TURN_AISATU,
aHN0_THINK_INIT_AISATU,
aHN0_THINK_INIT_AISATU2,
aHN0_THINK_INIT_HAIGO,
aHN0_THINK_INIT_NUM
};
enum {
aHN0_THINK_PROC_NONE,
aHN0_THINK_PROC_BIRTH,
aHN0_THINK_PROC_READY1,
aHN0_THINK_PROC_READY2,
aHN0_THINK_PROC_TURN_NEXT,
aHN0_THINK_PROC_FLAG2_WAIT,
aHN0_THINK_PROC_ANIME_WAIT,
aHN0_THINK_PROC_ANIME_WAIT_SAISEN,
aHN0_THINK_PROC_TIMER_WAIT,
aHN0_THINK_PROC_MOVE_WAIT,
aHN0_THINK_PROC_MOVE_BF,
aHN0_THINK_PROC_AISATU_WAIT,
aHN0_THINK_PROC_AISATU2_WAIT,
aHN0_THINK_PROC_TO_OMAIRI,
aHN0_THINK_PROC_PLAYER_MOVE,
aHN0_THINK_PROC_PLAYER_WAIT,
aHN0_THINK_PROC_KASASIMAI,
aHN0_THINK_PROC_SANPAI_WAIT,
aHN0_THINK_PROC_NUM
};
typedef struct hatumode_npc0_actor_s HATUMODE_NPC0_ACTOR;
typedef void (*aHN0_TALK_PROC)(HATUMODE_NPC0_ACTOR*, GAME_PLAY*);
struct hatumode_npc0_actor_s {
NPC_ACTOR npc_class;
aHN0_TALK_PROC talk_proc;
int base_msg;
s16 timer;
s16 pos[2];
u8 think_idx;
u8 next_think_idx;
u8 move_think_idx;
u8 talk_idx;
u8 think_proc_idx;
u8 think_change_flag;
u8 root;
u8 player;
};
extern ACTOR_PROFILE Hatumode_Npc0_Profile;
#ifdef __cplusplus
@@ -15,4 +81,3 @@ extern ACTOR_PROFILE Hatumode_Npc0_Profile;
#endif
#endif
+16 -1
View File
@@ -123,6 +123,13 @@ enum {
aNPC_THINK_TYPE_NUM
};
enum {
aNPC_THINK_PROC_INIT,
aNPC_THINK_PROC_MAIN,
aNPC_THINK_PROC_NUM
};
typedef void (*aNPC_TALK_REQUEST_PROC)(ACTOR*, GAME*);
typedef int (*aNPC_TALK_INIT_PROC)(ACTOR*, GAME*);
typedef int (*aNPC_TALK_END_CHECK_PROC)(ACTOR*, GAME*);
@@ -152,6 +159,7 @@ typedef void (*aNPC_MOVE_PROC)(ACTOR*, GAME*);
typedef void (*aNPC_MOVE_BEFORE_PROC)(ACTOR*, GAME*);
typedef void (*aNPC_MOVE_AFTER_PROC)(ACTOR*, GAME*);
typedef void (*aNPC_DRAW_PROC)(ACTOR*, GAME*);
typedef void (*aNPC_SET_DST_POS_PROC)(NPC_ACTOR*, f32, f32);
typedef void (*aNPC_REBUILD_DMA_PROC)();
typedef void (*aNPC_TALK_DEMO_PROC)(ACTOR*);
@@ -186,7 +194,7 @@ struct ac_npc_clip_s {
/* 0x110 */ aNPC_TALK_DEMO_PROC talk_demo_proc;
/* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc;
/* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc;
/* 0x11C */ void* _11C;
/* 0x11C */ aNPC_SET_DST_POS_PROC set_dst_pos_proc;
/* 0x120 */ aNPC_CLIP_THINK_PROC think_proc;
/* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc;
/* 0x128 */ void* _128;
@@ -514,6 +522,13 @@ enum {
aNPC_SCHEDULE_TYPE_NUM
};
enum {
aNPC_SCHEDULE_PROC_INIT,
aNPC_SCHEDULE_PROC_MAIN,
aNPC_SCHEDULE_PROC_NUM
};
struct npc_actor_s {
ACTOR actor_class;
s_xyz _174;
+2 -1
View File
@@ -32,6 +32,7 @@
#include "ac_broker_design.h"
#include "ac_garagara.h"
#include "ac_turi_clip.h"
#include "ac_hatumode_control.h"
#ifdef __cplusplus
extern "C" {
@@ -83,7 +84,7 @@ typedef struct clip_s {
/* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip;
/* 0x0BC */ aAR_Clip_c* arrange_room_clip;
/* 0x0C0 */ aGRGR_clip_c* garagara_clip;
/* 0x0C4 */ void* _0C4;
/* 0x0C4 */ aHTMD_clip_c* hatumode_clip;
/* 0x0C8 */ void* shrine_clip;
/* 0x0CC */ void* _0CC;
/* 0x0D0 */ void* _0D0;