diff --git a/config/GAFE01_00/foresta/splits.txt b/config/GAFE01_00/foresta/splits.txt index b25a128d..b3c0fe23 100644 --- a/config/GAFE01_00/foresta/splits.txt +++ b/config/GAFE01_00/foresta/splits.txt @@ -1482,14 +1482,14 @@ actor/ac_mscore_control.c: .text start:0x001A59A0 end:0x001A616C .data start:0x000528D0 end:0x00052938 -actor/ac_countdown_npc0.c: +actor/npc/ac_countdown_npc0.c: .text start:0x001A616C end:0x001A6308 .text start:0x001A6308 end:0x001A6354 .text start:0x001A6354 end:0x001A6DA4 .rodata start:0x00007EB0 end:0x00007EB8 .data start:0x00052938 end:0x000529F8 -actor/ac_countdown_npc1.c: +actor/npc/ac_countdown_npc1.c: .text start:0x001A6DA4 end:0x001A6F40 .text start:0x001A6F40 end:0x001A6F8C .text start:0x001A6F8C end:0x001A7EF4 @@ -1612,13 +1612,13 @@ actor/npc/event/ac_ev_yomise.c: .rodata start:0x00008040 end:0x00008058 .data start:0x00053A28 end:0x00053AB8 -actor/ac_go_home_npc.c: +actor/npc/ac_go_home_npc.c: .text start:0x001B6CA0 end:0x001B6E30 .text start:0x001B6E30 end:0x001B7030 .rodata start:0x00008058 end:0x00008060 .data start:0x00053AB8 end:0x00053AF8 -actor/ac_halloween_npc.c: +actor/npc/ac_halloween_npc.c: .text start:0x001B7030 end:0x001B719C .text start:0x001B719C end:0x001B7270 .text start:0x001B7270 end:0x001B7DC4 @@ -1626,42 +1626,42 @@ actor/ac_halloween_npc.c: .rodata start:0x00008060 end:0x00008080 .data start:0x00053AF8 end:0x00053BB0 -actor/ac_hanabi_npc0.c: +actor/npc/ac_hanabi_npc0.c: .text start:0x001B826C end:0x001B8408 .text start:0x001B8408 end:0x001B8460 .text start:0x001B8460 end:0x001B8D8C .rodata start:0x00008080 end:0x000080A0 .data start:0x00053BB0 end:0x00053C58 -actor/ac_hanabi_npc1.c: +actor/npc/ac_hanabi_npc1.c: .text start:0x001B8D8C end:0x001B8F30 .text start:0x001B8F30 end:0x001B8F88 .text start:0x001B8F88 end:0x001B96D4 .rodata start:0x000080A0 end:0x000080B8 .data start:0x00053C58 end:0x00053D68 -actor/ac_hanami_npc0.c: +actor/npc/ac_hanami_npc0.c: .text start:0x001B96D4 end:0x001B9870 .text start:0x001B9870 end:0x001B98BC .text start:0x001B98BC end:0x001B9EC8 .rodata start:0x000080B8 end:0x000080C8 .data start:0x00053D68 end:0x00053E28 -actor/ac_hanami_npc1.c: +actor/npc/ac_hanami_npc1.c: .text start:0x001B9EC8 end:0x001BA064 .text start:0x001BA064 end:0x001BA0B0 .text start:0x001BA0B0 end:0x001BA8AC .rodata start:0x000080C8 end:0x000080E8 .data start:0x00053E28 end:0x00053EC8 -actor/ac_hatumode_npc0.c: +actor/npc/ac_hatumode_npc0.c: .text start:0x001BA8AC end:0x001BAB98 .text start:0x001BAB98 end:0x001BAE44 .text start:0x001BAE44 end:0x001BBA90 .rodata start:0x000080E8 end:0x00008100 .data start:0x00053EC8 end:0x00053F80 -actor/ac_kamakura_npc0.c: +actor/npc/ac_kamakura_npc0.c: .text start:0x001BBA90 end:0x001BBC34 .text start:0x001BBC34 end:0x001BBCF8 .data start:0x00053F80 end:0x00053FC0 @@ -1997,13 +1997,13 @@ actor/npc/ac_npc_totakeke.c: .rodata start:0x00008960 end:0x00008980 .data start:0x000747D0 end:0x000748A0 -actor/ac_present_npc.c: +actor/npc/ac_present_npc.c: .text start:0x00217630 end:0x002177CC .text start:0x002177CC end:0x0021830C .rodata start:0x00008980 end:0x000089A0 .data start:0x000748A0 end:0x000749A0 -actor/ac_taisou_npc0.c: +actor/npc/ac_taisou_npc0.c: .text start:0x0021830C end:0x00218624 .text start:0x00218624 end:0x0021872C .text start:0x0021872C end:0x00219468 @@ -2011,14 +2011,14 @@ actor/ac_taisou_npc0.c: .data start:0x000749A0 end:0x00074BF8 .bss start:0x000C0AD8 end:0x000C0AE8 -actor/ac_tamaire_npc0.c: +actor/npc/ac_tamaire_npc0.c: .text start:0x00219468 end:0x002196D8 .text start:0x002196D8 end:0x002198A8 .text start:0x002198A8 end:0x00219F14 .rodata start:0x000089D0 end:0x000089E0 .data start:0x00074BF8 end:0x00074CB8 -actor/ac_tamaire_npc1.c: +actor/npc/ac_tamaire_npc1.c: .text start:0x00219F14 end:0x0021A330 .text start:0x0021A330 end:0x0021A4D0 .text start:0x0021A4D0 end:0x0021B27C @@ -2026,49 +2026,49 @@ actor/ac_tamaire_npc1.c: .data start:0x00074CB8 end:0x00074DC8 .bss start:0x000C0AE8 end:0x000C0AF0 -actor/ac_tokyoso_npc0.c: +actor/npc/ac_tokyoso_npc0.c: .text start:0x0021B27C end:0x0021B628 .text start:0x0021B628 end:0x0021B7C8 .text start:0x0021B7C8 end:0x0021BFC8 .rodata start:0x00008A28 end:0x00008A38 .data start:0x00074DC8 end:0x00074EA8 -actor/ac_tokyoso_npc1.c: +actor/npc/ac_tokyoso_npc1.c: .text start:0x0021BFC8 end:0x0021C28C .text start:0x0021C28C end:0x0021C464 .text start:0x0021C464 end:0x0021D5A0 .rodata start:0x00008A38 end:0x00008A50 .data start:0x00074EA8 end:0x00074FC8 -actor/ac_tukimi_npc0.c: +actor/npc/ac_tukimi_npc0.c: .text start:0x0021D5A0 end:0x0021D73C .text start:0x0021D73C end:0x0021D77C .text start:0x0021D77C end:0x0021DC80 .rodata start:0x00008A50 end:0x00008A60 .data start:0x00074FC8 end:0x000750A0 -actor/ac_tukimi_npc1.c: +actor/npc/ac_tukimi_npc1.c: .text start:0x0021DC80 end:0x0021DE1C .text start:0x0021DE1C end:0x0021DE68 .text start:0x0021DE68 end:0x0021E450 .rodata start:0x00008A60 end:0x00008A70 .data start:0x000750A0 end:0x000751B0 -actor/ac_tunahiki_npc0.c: +actor/npc/ac_tunahiki_npc0.c: .text start:0x0021E450 end:0x0021E7F0 .text start:0x0021E7F0 end:0x0021E994 .text start:0x0021E994 end:0x0021EDB8 .rodata start:0x00008A70 end:0x00008A88 .data start:0x000751B0 end:0x00075238 -actor/ac_tunahiki_npc1.c: +actor/npc/ac_tunahiki_npc1.c: .text start:0x0021EDB8 end:0x0021F13C .text start:0x0021F13C end:0x0021F3C0 .text start:0x0021F3C0 end:0x0021FE08 .rodata start:0x00008A88 end:0x00008AE8 .data start:0x00075238 end:0x000752E8 -actor/ac_turi_npc0.c: +actor/npc/ac_turi_npc0.c: .text start:0x0021FE08 end:0x0022004C .text start:0x0022004C end:0x002200C8 .text start:0x002200C8 end:0x00220698 @@ -2076,20 +2076,20 @@ actor/ac_turi_npc0.c: .data start:0x000752E8 end:0x000753D0 .bss start:0x000C0AF0 end:0x000C0B08 -actor/ac_groundhog_npc0.c: +actor/npc/ac_groundhog_npc0.c: .text start:0x00220698 end:0x002208A0 .text start:0x002208A0 end:0x0022098C .text start:0x0022098C end:0x00221008 .rodata start:0x00008AF0 end:0x00008B18 .data start:0x000753D0 end:0x00075480 -actor/ac_harvest_npc0.c: +actor/npc/ac_harvest_npc0.c: .text start:0x00221008 end:0x00221234 .text start:0x00221234 end:0x00221908 .rodata start:0x00008B18 end:0x00008B28 .data start:0x00075480 end:0x00075558 -actor/ac_harvest_npc1.c: +actor/npc/ac_harvest_npc1.c: .text start:0x00221908 end:0x00221B10 .text start:0x00221B10 end:0x00221FD4 .rodata start:0x00008B28 end:0x00008B30 diff --git a/configure.py b/configure.py index 253ed955..14a33d8d 100644 --- a/configure.py +++ b/configure.py @@ -926,7 +926,7 @@ config.libs = [ Object(Matching, "actor/ac_animal_logo.c"), Object(NonMatching, "actor/ac_ant.c"), Object(Matching, "actor/ac_aprilfool_control.c"), - Object(NonMatching, "actor/ac_arrange_ftr.c"), + Object(Matching, "actor/ac_arrange_ftr.c"), Object(Matching, "actor/ac_arrange_room.c"), Object(Matching, "actor/ac_ball.c"), Object(Matching, "actor/ac_balloon.c"), @@ -945,8 +945,6 @@ config.libs = [ Object(Matching, "actor/ac_cottage.c"), Object(NonMatching, "actor/ac_count02.c"), Object(NonMatching, "actor/ac_countdown.c"), - Object(NonMatching, "actor/ac_countdown_npc0.c"), - Object(NonMatching, "actor/ac_countdown_npc1.c"), Object(NonMatching, "actor/ac_depart.c"), Object(Matching, "actor/ac_douzou.c"), Object(Matching, "actor/ac_dummy.c"), @@ -956,31 +954,21 @@ config.libs = [ Object(Matching, "actor/ac_fallS.c"), Object(Matching, "actor/ac_fallSESW.c"), Object(Matching, "actor/ac_field_draw.c"), - Object(NonMatching, "actor/ac_fieldm_draw.c"), + Object(Matching, "actor/ac_fieldm_draw.c"), Object(Matching, "actor/ac_flag.c"), Object(Matching, "actor/ac_fuusen.c"), Object(Matching, "actor/ac_garagara.c"), Object(NonMatching, "actor/ac_ghog.c"), - Object(Matching, "actor/ac_go_home_npc.c"), Object(Matching, "actor/ac_goza.c"), Object(Matching, "actor/ac_groundhog_control.c"), - Object(NonMatching, "actor/ac_groundhog_npc0.c"), Object(NonMatching, "actor/ac_gyo_kage.c"), Object(NonMatching, "actor/ac_gyo_kaseki.c"), Object(NonMatching, "actor/ac_gyo_release.c"), Object(NonMatching, "actor/ac_gyo_test.c"), Object(NonMatching, "actor/ac_gyoei.c"), - Object(NonMatching, "actor/ac_halloween_npc.c"), - Object(NonMatching, "actor/ac_hanabi_npc0.c"), - Object(NonMatching, "actor/ac_hanabi_npc1.c"), - Object(NonMatching, "actor/ac_hanami_npc0.c"), - Object(NonMatching, "actor/ac_hanami_npc1.c"), Object(Matching, "actor/ac_handOverItem.c"), Object(Matching, "actor/ac_haniwa.c"), - Object(NonMatching, "actor/ac_harvest_npc0.c"), - Object(NonMatching, "actor/ac_harvest_npc1.c"), Object(NonMatching, "actor/ac_hatumode_control.c"), - Object(NonMatching, "actor/ac_hatumode_npc0.c"), Object(NonMatching, "actor/ac_house.c"), Object(Matching, "actor/ac_house_clock.c"), Object(NonMatching, "actor/ac_house_goki.c"), @@ -1004,7 +992,6 @@ config.libs = [ Object(Matching, "actor/ac_kago.c"), Object(Matching, "actor/ac_kamakura.c"), Object(NonMatching, "actor/ac_kamakura_indoor.c"), - Object(NonMatching, "actor/ac_kamakura_npc0.c"), Object(Matching, "actor/ac_koinobori.c"), Object(NonMatching, "actor/ac_lighthouse_switch.c"), Object(Matching, "actor/ac_lotus.c"), @@ -1030,7 +1017,6 @@ config.libs = [ Object(Matching, "actor/ac_police_box.c"), Object(Matching, "actor/ac_post_office.c"), Object(NonMatching, "actor/ac_present_demo.c"), - Object(NonMatching, "actor/ac_present_npc.c"), Object(Matching, "actor/ac_psnowman.c"), Object(NonMatching, "actor/ac_pterminal.c"), Object(Matching, "actor/ac_quest_manager.c"), @@ -1063,14 +1049,9 @@ config.libs = [ Object(NonMatching, "actor/ac_station.c"), Object(Matching, "actor/ac_structure.c"), Object(NonMatching, "actor/ac_super.c"), - Object(NonMatching, "actor/ac_taisou_npc0.c"), Object(Matching, "actor/ac_tama.c"), - Object(NonMatching, "actor/ac_tamaire_npc0.c"), - Object(NonMatching, "actor/ac_tamaire_npc1.c"), Object(Matching, "actor/ac_tent.c"), Object(NonMatching, "actor/ac_tokyoso_control.c"), - Object(NonMatching, "actor/ac_tokyoso_npc0.c"), - Object(NonMatching, "actor/ac_tokyoso_npc1.c"), Object(Matching, "actor/ac_tools.c"), Object(Matching, "actor/ac_toudai.c"), Object(Matching, "actor/ac_train0.c"), @@ -1078,13 +1059,8 @@ config.libs = [ Object(Matching, "actor/ac_train_door.c"), Object(Matching, "actor/ac_train_window.c"), Object(Matching, "actor/ac_tukimi.c"), - Object(NonMatching, "actor/ac_tukimi_npc0.c"), - Object(NonMatching, "actor/ac_tukimi_npc1.c"), Object(NonMatching, "actor/ac_tunahiki_control.c"), - Object(NonMatching, "actor/ac_tunahiki_npc0.c"), - Object(NonMatching, "actor/ac_tunahiki_npc1.c"), Object(NonMatching, "actor/ac_turi.c"), - Object(NonMatching, "actor/ac_turi_npc0.c"), Object(Matching, "actor/ac_uki.c"), Object(Matching, "actor/ac_weather.c"), Object(Matching, "actor/ac_weather_fine.c"), @@ -1099,6 +1075,19 @@ config.libs = [ Rel( "actor_npc", [ + Object(NonMatching, "actor/npc/ac_countdown_npc0.c"), + Object(NonMatching, "actor/npc/ac_countdown_npc1.c"), + Object(Matching, "actor/npc/ac_go_home_npc.c"), + Object(NonMatching, "actor/npc/ac_groundhog_npc0.c"), + Object(NonMatching, "actor/npc/ac_halloween_npc.c"), + Object(NonMatching, "actor/npc/ac_hanabi_npc0.c"), + Object(NonMatching, "actor/npc/ac_hanabi_npc1.c"), + Object(NonMatching, "actor/npc/ac_hanami_npc0.c"), + Object(NonMatching, "actor/npc/ac_hanami_npc1.c"), + Object(NonMatching, "actor/npc/ac_harvest_npc0.c"), + Object(NonMatching, "actor/npc/ac_harvest_npc1.c"), + Object(NonMatching, "actor/npc/ac_hatumode_npc0.c"), + Object(NonMatching, "actor/npc/ac_kamakura_npc0.c"), Object(NonMatching, "actor/npc/ac_normal_npc.c"), Object(NonMatching, "actor/npc/ac_npc.c"), Object(NonMatching, "actor/npc/ac_npc2.c"), @@ -1137,6 +1126,17 @@ config.libs = [ Object(NonMatching, "actor/npc/ac_npc_station_master.c"), Object(NonMatching, "actor/npc/ac_npc_super_master.c"), Object(NonMatching, "actor/npc/ac_npc_totakeke.c"), + Object(NonMatching, "actor/npc/ac_present_npc.c"), + Object(NonMatching, "actor/npc/ac_taisou_npc0.c"), + Object(NonMatching, "actor/npc/ac_tamaire_npc0.c"), + Object(NonMatching, "actor/npc/ac_tamaire_npc1.c"), + Object(NonMatching, "actor/npc/ac_tokyoso_npc0.c"), + Object(NonMatching, "actor/npc/ac_tokyoso_npc1.c"), + Object(NonMatching, "actor/npc/ac_tukimi_npc0.c"), + Object(NonMatching, "actor/npc/ac_tukimi_npc1.c"), + Object(NonMatching, "actor/npc/ac_tunahiki_npc0.c"), + Object(NonMatching, "actor/npc/ac_tunahiki_npc1.c"), + Object(NonMatching, "actor/npc/ac_turi_npc0.c"), ], ), Rel( diff --git a/include/ac_arrange_ftr.h b/include/ac_arrange_ftr.h index fb7366aa..3848792a 100644 --- a/include/ac_arrange_ftr.h +++ b/include/ac_arrange_ftr.h @@ -8,6 +8,13 @@ extern "C" { #endif +typedef struct arrange_ftr_actor_s ARRANGE_FURNITURE_ACTOR; + +struct arrange_ftr_actor_s { + ACTOR actor_class; + u8 _174[0x278 - 0x174]; +}; + extern ACTOR_PROFILE Arrange_Furniture_Profile; #ifdef __cplusplus @@ -15,4 +22,3 @@ extern ACTOR_PROFILE Arrange_Furniture_Profile; #endif #endif - diff --git a/include/ac_fieldm_draw.h b/include/ac_fieldm_draw.h index 2ca5bcbe..62e6a772 100644 --- a/include/ac_fieldm_draw.h +++ b/include/ac_fieldm_draw.h @@ -8,6 +8,13 @@ extern "C" { #endif +typedef struct fieldm_actor_s FIELDM_ACTOR; + +struct fieldm_actor_s { + ACTOR actor_class; + int _174[4]; +}; + extern ACTOR_PROFILE Fieldm_Draw_Profile; #ifdef __cplusplus @@ -15,4 +22,3 @@ extern ACTOR_PROFILE Fieldm_Draw_Profile; #endif #endif - diff --git a/include/m_name_table.h b/include/m_name_table.h index c8a8eac5..ade0fe08 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -2563,6 +2563,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ETC_BOXTRICK (ETC_START + 4) #define ETC_BOXMANAGER (ETC_START + 5) #define ETC_ARRANGE_ROOM (ETC_START + 6) +#define ETC_ARRANGE_FURNITURE (ETC_START + 7) #define ETC_SNOWMAN_BALL_A (ETC_START + 13) #define ETC_SNOWMAN_BALL_B (ETC_START + 14) #define ETC_TRAIN_WINDOW (ETC_START + 17) diff --git a/src/actor/ac_arrange_ftr.c b/src/actor/ac_arrange_ftr.c new file mode 100644 index 00000000..4bffc65a --- /dev/null +++ b/src/actor/ac_arrange_ftr.c @@ -0,0 +1,40 @@ +#include "ac_arrange_ftr.h" + +#include "m_name_table.h" + +static void Arrange_Furniture_Actor_ct(ACTOR* actorx, GAME* game); +static void Arrange_Furniture_Actor_dt(ACTOR* actorx, GAME* game); +static void Arrange_Furniture_Actor_move(ACTOR* actorx, GAME* game); +static void Arrange_Furniture_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Arrange_Furniture_Profile = { + mAc_PROFILE_ARRANGE_FURNITURE, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + ETC_ARRANGE_FURNITURE, + ACTOR_OBJ_BANK_KEEP, + sizeof(ARRANGE_FURNITURE_ACTOR), + &Arrange_Furniture_Actor_ct, + &Arrange_Furniture_Actor_dt, + &Arrange_Furniture_Actor_move, + &Arrange_Furniture_Actor_draw, + NULL, +}; +// clang-format on + +static void Arrange_Furniture_Actor_ct(ACTOR* actorx, GAME* game) { + // empty +} + +static void Arrange_Furniture_Actor_dt(ACTOR* actorx, GAME* game) { + // empty +} + +static void Arrange_Furniture_Actor_draw(ACTOR* actorx, GAME* game) { + // empty +} + +static void Arrange_Furniture_Actor_move(ACTOR* actorx, GAME* game) { + // empty +} diff --git a/src/actor/ac_fieldm_draw.c b/src/actor/ac_fieldm_draw.c new file mode 100644 index 00000000..455e9e26 --- /dev/null +++ b/src/actor/ac_fieldm_draw.c @@ -0,0 +1,40 @@ +#include "ac_fieldm_draw.h" + +#include "m_name_table.h" + +static void Fieldm_Actor_ct(ACTOR* actorx, GAME* game); +static void Fieldm_Actor_dt(ACTOR* actorx, GAME* game); +static void Fieldm_Actor_move(ACTOR* actorx, GAME* game); +static void Fieldm_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Fieldm_Draw_Profile = { + mAc_PROFILE_FIELDM_DRAW, + ACTOR_PART_BG, + ACTOR_STATE_NONE, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(FIELDM_ACTOR), + &Fieldm_Actor_ct, + &Fieldm_Actor_dt, + &Fieldm_Actor_move, + &Fieldm_Actor_draw, + NULL, +}; +// clang-format on + +static void Fieldm_Actor_ct(ACTOR* actorx, GAME* game) { + // empty +} + +static void Fieldm_Actor_dt(ACTOR* actorx, GAME* game) { + // empty +} + +static void Fieldm_Actor_move(ACTOR* actorx, GAME* game) { + // empty +} + +static void Fieldm_Actor_draw(ACTOR* actorx, GAME* game) { + // empty +} diff --git a/src/actor/ac_go_home_npc.c b/src/actor/npc/ac_go_home_npc.c similarity index 100% rename from src/actor/ac_go_home_npc.c rename to src/actor/npc/ac_go_home_npc.c