Implement & link ac_boat_demo

This commit is contained in:
Cuyler36
2024-01-05 02:47:48 -05:00
parent 8fea68abe7
commit f53d795059
17 changed files with 617 additions and 18 deletions
+7
View File
@@ -8,6 +8,13 @@
extern "C" {
#endif
typedef struct boat_s BOAT_ACTOR;
struct boat_s {
ACTOR actor_class;
// TODO
};
extern ACTOR_PROFILE Boat_Profile;
#ifdef __cplusplus
+67
View File
@@ -3,11 +3,78 @@
#include "types.h"
#include "m_actor.h"
#include "m_demo.h"
#include "ac_boat.h"
#include "ac_npc_sendo.h"
#include "ac_ev_castaway.h"
#include "m_common_data.h"
#ifdef __cplusplus
extern "C" {
#endif
enum {
aBTD_ACTION_SENDO_BIRTH_WAIT,
aBTD_ACTION_PL_RIDE_ON_START_WAIT,
aBTD_ACTION_PL_RIDE_ON_END_WAIT,
aBTD_ACTION_START_CALL_END_WAIT,
aBTD_ACTION_SONG_BGM_START_WAIT,
aBTD_ACTION_SING_SENDO_START_WAIT,
aBTD_ACTION_SING_SENDO_MSG_SET_WAIT,
aBTD_ACTION_SENDO_DIALOGUE_START_WAIT,
aBTD_ACTION_SING_SENDO_START_WAIT2,
aBTD_ACTION_MOVE_BOAT_END_WAIT,
aBTD_ACTION_TOUCH_WHARF_END_WAIT,
aBTD_ACTION_PL_RIDE_OFF_START_WAIT,
aBTD_ACTION_PL_RIDE_OFF_END_WAIT,
aBTD_ACTION_ANCHOR_WAIT,
aBTD_ACTION_NUM
};
enum {
aBTD_DEMO_PL_RIDE_ON_START,
aBTD_DEMO_PL_RIDE_ON_END,
aBTD_DEMO_START_CALL_END,
aBTD_DEMO_MOVE_BOAT_END,
aBTD_DEMO_TOUCH_WHARF_END,
aBTD_DEMO_PL_RIDE_OFF_START,
aBTD_DEMO_PL_RIDE_OFF_END,
aBTD_DEMO_ANCHOR,
aBTD_DEMO_NUM
};
typedef struct boat_demo_s BOAT_DEMO_ACTOR;
#define aBTD_GET_DEMO_ACTOR() (BOAT_DEMO_ACTOR*)(Common_Get(clip).demo_clip2->class)
typedef void (*aBTD_PROC)(BOAT_DEMO_ACTOR*, GAME_PLAY*);
struct boat_demo_s {
ACTOR actor_class;
int action;
aBTD_PROC action_proc;
int demo_act;
int song_bgm_timer;
BOAT_ACTOR* boat_actor;
NPC_SENDO_ACTOR* npc_sendo_actor;
EV_CASTAWAY_ACTOR* castaway_actor;
int at_island;
xyz_t passenger_ofs;
f32 boat_speed;
int island_npc_info_registered;
u8* island_gba_loader_p;
u8* island_gba_program_p;
u8 player_pattern;
u8 sing_dialog_ofs;
u8 sing_2nd_part;
u8 sing_2nd_part_bgm_no;
int sing_msg_no;
u16 touch_wharf_timer;
u8 touching_wharf;
};
extern ACTOR_PROFILE Boat_Demo_Profile;
#ifdef __cplusplus
+1 -1
View File
@@ -16,7 +16,7 @@ extern "C" {
#define aNPC_SPNPC_BIT_CURATOR 0
#define aNPC_SPNPC_BIT_GOHOME_NPC 1
#define aNPC_SPNPC_BIT_MASK_CAT 2
#define aNPC_SPNPC_BIT_CASTAWAY 4
#define aNPC_SPNPC_BIT_DOZAEMON 4
#define aNPC_SPNPC_BIT_EV_SONCHO 5
#define aNPC_SPNPC_BIT_GET(field, bit) (((field) >> (bit)) & 1)
+8
View File
@@ -3,11 +3,19 @@
#include "types.h"
#include "m_actor.h"
#include "ac_npc.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct npc_sendo_s NPC_SENDO_ACTOR;
struct npc_sendo_s {
NPC_ACTOR npc_class;
// TODO
};
extern ACTOR_PROFILE Npc_Sendo_Profile;
#ifdef __cplusplus
+2
View File
@@ -9,6 +9,8 @@ extern "C" {
#endif
extern int aWeather_ChangingWeather();
extern void aWeather_RequestChangeWeatherToIsland();
extern void aWeather_RequestChangeWeatherFromIsland();
extern ACTOR_PROFILE Weather_Profile;
+2 -2
View File
@@ -377,7 +377,7 @@ typedef struct kabu_peddler_event_s {
} mEv_kabu_peddler_c;
typedef struct dozaemon_event_s {
u32 flags;
u16 flags;
} mEv_dozaemon_c;
typedef union {
@@ -552,7 +552,7 @@ typedef struct event_common_save_data {
} bridge_flags;
u8 ghost_event_type; // 0x72 will spawn wisp, 0x77 won't?
u8 soncho_event_type; // checked not equal to 0xFF for summer & fall fishing tournies
u8 current_event_state; // used to signal when you've received an item from gracie or woken gulliver up
u8 dozaemon_completed; // used to signal when you've received an item from gulliver
} mEv_save_common_data_c;
extern int mEv_CheckFirstJob();
+4 -4
View File
@@ -44,8 +44,8 @@ typedef struct island_s {
/* 0x18CA */ lbRTC_time_c renew_time; /* last time island was visited? */
/* 0x18D2 */ u8 unused_18D2[14]; /* unused */
/* 0x18E0 */ u8 grass_tex_type; /* grass type */
/* 0x18E1 */ u8 last_song_male; /* last song kapp'n sang for a male character */
/* 0x18E2 */ u8 last_song_female; /* last song kapp'n sang for a female character */
/* 0x18E1 */ u8 last_song_to_island; /* last song kapp'n sang to the island */
/* 0x18E2 */ u8 last_song_from_island; /* last song kapp'n sang leaving the island */
/* 0x18E3 */ u8 unused_18E3[29]; /* unused */
} Island_c;
@@ -180,8 +180,8 @@ typedef struct island_agb_s {
/* 0x3948 */ u16 npc_pal[16];
/* 0x3968 */ u8 _3968[20];
/* 0x397C */ u8 _397C;
/* 0x397D */ u8 last_song_male; /* last song kapp'n sang for a male character */
/* 0x397E */ u8 last_song_female; /* last song kapp'n sang for a female character */
/* 0x397D */ u8 last_song_to_island; /* last song kapp'n sang for a male character */
/* 0x397E */ u8 last_song_from_island; /* last song kapp'n sang for a female character */
/* 0x397F */ u8 checksum;
} Island_agb_c;
+2
View File
@@ -286,6 +286,8 @@ extern int mMsg_CopyItem(mMsg_Window_c* msg_win, int item_idx, u8* data, int idx
extern int mMsg_CopyMail(mMsg_Window_c* msg_win, int mail_idx, u8* data, int idx, int max_size);
extern int mMsg_CopyIslandName(u8* data, int idx, int max_size, int capitalize);
extern int mMsg_CopyAmPm(mMsg_Window_c* msg_win, u8* data, int idx, int max_size);
extern void mMsg_sound_set_voice_silent(mMsg_Window_c* msg_win, int update_voice_mode);
extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_win, int update_voice_mode);
#ifdef __cplusplus
}
+1 -1
View File
@@ -1858,7 +1858,7 @@ extern int mNT_check_unknown(mActor_name_t item_no);
#define SP_NPC_SONCHO_D078 (SP_NPC_START + 120) // D078
#define SP_NPC_SONCHO_D079 (SP_NPC_START + 121) // D079
#define SP_NPC_SASHO (SP_NPC_START + 122) // D07A
//
#define SP_NPC_CASTAWAY (SP_NPC_START + 123) // D07B
#define SP_NPC_MAJIN_D07C (SP_NPC_START + 124) // D07C
#define SP_NPC_MAJIN_D07D (SP_NPC_START + 125) // D07D
#define SP_NPC_MAJIN_BROTHER (SP_NPC_START + 126) // D07E