Implement & link ac_misin

This commit is contained in:
Cuyler36
2024-02-28 14:53:10 -05:00
parent 210bcaaf3a
commit ba410c175b
4 changed files with 478 additions and 47 deletions
+52 -1
View File
@@ -3,11 +3,63 @@
#include "types.h"
#include "m_actor.h"
#include "m_needlework.h"
#include "c_keyframe.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct misin_actor_s MISIN_ACTOR;
typedef void (*aMSN_REQUEST_MISIN_STOP_PROC)(void);
typedef void (*aMSN_REQUEST_MISIN_MOVE_PROC)(void);
typedef void (*aMSN_REQUEST_DUSTCLOTH_STOP_PROC)(void);
typedef void (*aMSN_REQUEST_DUSTCLOTH_MOVE_PROC)(void);
typedef struct misin_clip_s {
MISIN_ACTOR* misin_actor_p;
aMSN_REQUEST_MISIN_STOP_PROC request_misin_stop_proc;
aMSN_REQUEST_MISIN_MOVE_PROC request_misin_move_proc;
aMSN_REQUEST_DUSTCLOTH_STOP_PROC request_dustcloth_stop_proc;
aMSN_REQUEST_DUSTCLOTH_MOVE_PROC request_dustcloth_move_proc;
} aMSN_Clip_c;
#define aMSN_GetClip() ((aMSN_Clip_c*)Common_Get(clip).misin_clip)
typedef struct misin_dustcloth_s {
s16 switch_flag;
s16 frame;
xyz_t pos;
xyz_t target_pos;
int target_idx;
s16 target_angle_y;
int moving_flag;
mNW_original_design_c* original_p;
u16* palette_p;
} aMSN_DustCloth_c;
typedef struct misin_misin_s {
s16 status;
f32 speed;
xyz_t pos;
f32 needle_y_counter;
xyz_t needle_offset;
s16 y_scroll;
cKF_SkeletonInfo_R_c keyframe;
s_xyz work[17];
s_xyz morph[17];
Mtx mtx[2][16] ATTRIBUTE_ALIGN(8);
} aMSN_Misin_c;
struct misin_actor_s {
ACTOR actor_class;
aMSN_DustCloth_c dustcloth;
aMSN_Misin_c misin;
aMSN_Clip_c clip;
};
extern ACTOR_PROFILE Misin_Profile;
#ifdef __cplusplus
@@ -15,4 +67,3 @@ extern ACTOR_PROFILE Misin_Profile;
#endif
#endif
+52 -46
View File
@@ -32,52 +32,58 @@ typedef void (*CLIP_NONE_PROC)();
/* sizeof(Clip_c) == 0x104 */
typedef struct clip_s {
/* 0x000 */ void* _000[(0x020 - 0x000) / sizeof(void*)];
/* 0x020 */ int arrange_ftr_num;
/* 0x024 */ void* _024[(0x040 - 0x024) / sizeof(void*)];
/* 0x040 */ aNPC_Clip_c* npc_clip;
/* 0x044 */ void* _044[(0x060 - 0x044) / sizeof(void*)];
/* 0x060 */ aSM_Clip_c* shop_manekin_clip;
/* 0x064 */ void* _064;
/* 0x068 */ CLIP_NONE_PROC _068;
/* 0x06C */ aQMgr_Clip_c* quest_manager_clip;
/* 0x070 */ aSI_Clip_c* shop_indoor_clip;
/* 0x074 */ bIT_Clip_c* bg_item_clip;
/* 0x078 */ aWeather_Clip_c* weather_clip;
/* 0x07C */ aINS_Clip_c* insect_clip;
/* 0x080 */ aMR_Clip_c* my_room_clip;
/* 0x084 */ void* _084;
/* 0x088 */ aHOI_Clip_c* handOverItem_clip;
/* 0x08C */ aSTR_Clip_c* structure_clip;
/* 0x090 */ eEC_EffectControl_Clip_c* effect_clip;
/* 0x094 */ aTOL_Clip_c* tools_clip;
/* 0x098 */ void* _098;
/* 0x09C */ aMI_Clip_c* my_indoor_clip;
/* 0x0A0 */ mDemo_Clip_c* demo_clip; /* can be multiple clip classes */
/* 0x0A4 */ mDemo_Clip_c* demo_clip2; /* can be multiple clip classes */
/* 0x0A8 */ void* _0A8;
/* 0x0AC */ aGYO_Clip_c* gyo_clip;
/* 0x0B0 */ void* _0B0;
/* 0x0B4 */ void* _0B4;
/* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip;
/* 0x0BC */ aAR_Clip_c* arrange_room_clip;
/* 0x0C0 */ void* _0C0;
/* 0x0C4 */ void* _0C4;
/* 0x0C8 */ void* shrine_clip;
/* 0x0CC */ void* _0CC;
/* 0x0D0 */ void* _0D0;
/* 0x0D4 */ CLIP_NONE_PROC ball_redma_proc; /* removed in DnM+ */
/* 0x0D8 */ void* _0D8;
/* 0x0DC */ aAL_Clip_c* animal_logo_clip;
/* 0x0E0 */ void* _0E0;
/* 0x0E4 */ void* _0E4;
/* 0x0E8 */ void* _0E8;
/* 0x0EC */ aAPC_Clip_c* aprilfool_control_clip;
/* 0x0F0 */ aEvMgr_Clip_c* event_manager_clip;
/* 0x0F4 */ aGHC_Clip_c* groundhog_control_clip;
/* 0x0F8 */ void* _0F8;
/* 0x0FC */ void* _0FC;
/* 0x100 */ void* _100;
/* 0x000 */ void* _000[(0x020 - 0x000) / sizeof(void*)];
/* 0x020 */ int arrange_ftr_num;
/* 0x024 */ void* _024;
/* 0x028 */ void* misin_clip;
/* 0x02C */ void* _02C;
/* 0x030 */ void* _030;
/* 0x034 */ void* _034;
/* 0x038 */ void* _038;
/* 0x03C */ void* _03C;
/* 0x040 */ aNPC_Clip_c* npc_clip;
/* 0x044 */ void* _044[(0x060 - 0x044) / sizeof(void*)];
/* 0x060 */ aSM_Clip_c* shop_manekin_clip;
/* 0x064 */ void* _064;
/* 0x068 */ CLIP_NONE_PROC _068;
/* 0x06C */ aQMgr_Clip_c* quest_manager_clip;
/* 0x070 */ aSI_Clip_c* shop_indoor_clip;
/* 0x074 */ bIT_Clip_c* bg_item_clip;
/* 0x078 */ aWeather_Clip_c* weather_clip;
/* 0x07C */ aINS_Clip_c* insect_clip;
/* 0x080 */ aMR_Clip_c* my_room_clip;
/* 0x084 */ void* _084;
/* 0x088 */ aHOI_Clip_c* handOverItem_clip;
/* 0x08C */ aSTR_Clip_c* structure_clip;
/* 0x090 */ eEC_EffectControl_Clip_c* effect_clip;
/* 0x094 */ aTOL_Clip_c* tools_clip;
/* 0x098 */ void* _098;
/* 0x09C */ aMI_Clip_c* my_indoor_clip;
/* 0x0A0 */ mDemo_Clip_c* demo_clip; /* can be multiple clip classes */
/* 0x0A4 */ mDemo_Clip_c* demo_clip2; /* can be multiple clip classes */
/* 0x0A8 */ void* _0A8;
/* 0x0AC */ aGYO_Clip_c* gyo_clip;
/* 0x0B0 */ void* _0B0;
/* 0x0B4 */ void* _0B4;
/* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip;
/* 0x0BC */ aAR_Clip_c* arrange_room_clip;
/* 0x0C0 */ void* _0C0;
/* 0x0C4 */ void* _0C4;
/* 0x0C8 */ void* shrine_clip;
/* 0x0CC */ void* _0CC;
/* 0x0D0 */ void* _0D0;
/* 0x0D4 */ CLIP_NONE_PROC ball_redma_proc; /* removed in DnM+ */
/* 0x0D8 */ void* _0D8;
/* 0x0DC */ aAL_Clip_c* animal_logo_clip;
/* 0x0E0 */ void* _0E0;
/* 0x0E4 */ void* _0E4;
/* 0x0E8 */ void* _0E8;
/* 0x0EC */ aAPC_Clip_c* aprilfool_control_clip;
/* 0x0F0 */ aEvMgr_Clip_c* event_manager_clip;
/* 0x0F4 */ aGHC_Clip_c* groundhog_control_clip;
/* 0x0F8 */ void* _0F8;
/* 0x0FC */ void* _0FC;
/* 0x100 */ void* _100;
} Clip_c;
extern void clip_clear();