From de8884537bd47303f69d20e4e91bb3616cfccbb4 Mon Sep 17 00:00:00 2001 From: Cuyler36 Date: Wed, 20 Aug 2025 10:30:00 -0400 Subject: [PATCH] Add bg/fg block type enums & coombi type enum and use them --- include/m_bg_type.h | 38 +- include/m_combi_type.h | 387 +++++ include/m_fg_type.h | 328 ++++ include/m_field_make.h | 33 +- src/data/combi/data_combi.c | 738 ++++---- src/data/field/bg/acre/bg_data.c | 36 +- src/data/field/field_data.c | 1314 +++++++------- src/game/m_field_info.c | 8 +- src/game/m_field_make.c | 20 +- src/game/m_map_ovl.c | 384 ++++- src/game/m_random_field_ovl.c | 2733 +++++++++++++++--------------- src/game/m_room_type.c | 16 +- src/game/m_shop.c | 75 +- 13 files changed, 3688 insertions(+), 2422 deletions(-) create mode 100644 include/m_combi_type.h create mode 100644 include/m_fg_type.h diff --git a/include/m_bg_type.h b/include/m_bg_type.h index eeb748f3..5f6b8136 100644 --- a/include/m_bg_type.h +++ b/include/m_bg_type.h @@ -250,25 +250,25 @@ enum __bg_type__ { BG_TYPE_GRD_S_T_ST1_1, BG_TYPE_GRD_S_T_ST1_2, BG_TYPE_GRD_S_T_ST1_3, - BG_TYPE_242, + BG_TYPE_ROM_MY_ROOM_L, BG_TYPE_ROM_TENT, BG_TYPE_ROOM01, BG_TYPE_MYR_ETC, - BG_TYPE_246, + BG_TYPE_NPC_ROOM01, BG_TYPE_247, - BG_TYPE_248, + BG_TYPE_ROM_SHOP1, BG_TYPE_249, - BG_TYPE_250, - BG_TYPE_251, - BG_TYPE_252, + BG_TYPE_ROM_SHOP1_FUKU, + BG_TYPE_ROM_SHOP2_FUKU, + BG_TYPE_ROM_SHOP3_FUKU, BG_TYPE_ROM_SHOP4_FUKU, - BG_TYPE_254, + BG_TYPE_ROM_SHOP2, BG_TYPE_ROM_URANAI, BG_TYPE_ROM_SHOP4_1, - BG_TYPE_257, - BG_TYPE_258, - BG_TYPE_259, - BG_TYPE_260, + BG_TYPE_ROM_SHOP4_2, + BG_TYPE_ROM_SHOP3, + BG_TYPE_ROM_MY_ROOM_S, + BG_TYPE_ROM_MY_ROOM_M, BG_TYPE_ROM_TRAIN_IN, BG_TYPE_GRD_S_F_9_1, BG_TYPE_GRD_S_R1_3_1, @@ -290,17 +290,19 @@ enum __bg_type__ { BG_TYPE_ROM_MUSEUM2, BG_TYPE_ROM_MUSEUM3, BG_TYPE_ROM_MUSEUM5, - BG_TYPE_282, - BG_TYPE_283, - BG_TYPE_284, + BG_TYPE_ROM_MUSEUM4, + BG_TYPE_ROM_MY_ROOM_LL1, + BG_TYPE_ROM_MY_ROOM_LL2, BG_TYPE_285, - BG_TYPE_286, - BG_TYPE_287, - BG_TYPE_288, - BG_TYPE_289, + BG_TYPE_ROM_MY_ROOM_M_BASEMENT, + BG_TYPE_ROM_MY_ROOM_L_BASEMENT, + BG_TYPE_ROM_MY_ROOM_LL1_BASEMENT, + BG_TYPE_ROM_MY_ROOM_BASEMENT, BG_TYPE_ROM_TAILOR, BG_TYPE_ROM_TOUDAI, BG_TYPE_292, + + BG_TYPE_NUM }; #ifdef __cplusplus diff --git a/include/m_combi_type.h b/include/m_combi_type.h new file mode 100644 index 00000000..1e09a1a7 --- /dev/null +++ b/include/m_combi_type.h @@ -0,0 +1,387 @@ +#ifndef M_COMBI_TYPE_H +#define M_COMBI_TYPE_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum __block_combi__ { + BLOCK_COMBI_GRD_0, + BLOCK_COMBI_GRD_1, + BLOCK_COMBI_GRD_2, + BLOCK_COMBI_GRD_3, + BLOCK_COMBI_GRD_4, + BLOCK_COMBI_GRD_5, + BLOCK_COMBI_GRD_6, + BLOCK_COMBI_GRD_7, + BLOCK_COMBI_ROOM01, + BLOCK_COMBI_GRD_9, + BLOCK_COMBI_GRD_10, + BLOCK_COMBI_GRD_11, + BLOCK_COMBI_GRD_12, + BLOCK_COMBI_GRD_13, + BLOCK_COMBI_GRD_14, + BLOCK_COMBI_GRD_15, + BLOCK_COMBI_GRD_16, + BLOCK_COMBI_GRD_17, + BLOCK_COMBI_ROM_MY_ROOM_L, + BLOCK_COMBI_GRD_19, + BLOCK_COMBI_GRD_20, + BLOCK_COMBI_ROM_NPC_ROOM01, + BLOCK_COMBI_GRD_22, + BLOCK_COMBI_GRD_23, + BLOCK_COMBI_GRD_S_R5_B_1, + BLOCK_COMBI_ROM_SHOP1, + BLOCK_COMBI_GRD_26, + BLOCK_COMBI_GRD_S_C5_R1_1, + BLOCK_COMBI_GRD_S_T_R1_1, + BLOCK_COMBI_TMP, + BLOCK_COMBI_TMP2, + BLOCK_COMBI_TMPR, + BLOCK_COMBI_TMPR2, + BLOCK_COMBI_GRD_S_C1_R1_1, + BLOCK_COMBI_GRD_S_C1_S_1, + BLOCK_COMBI_GRD_S_C2_R1_1, + BLOCK_COMBI_GRD_S_C2_R2_1, + BLOCK_COMBI_GRD_S_F_1, + BLOCK_COMBI_GRD_S_F_2, + BLOCK_COMBI_GRD_S_C1_1, + BLOCK_COMBI_GRD_S_C1_R2_1, + BLOCK_COMBI_GRD_S_C1_R3_1, + BLOCK_COMBI_GRD_S_C2_1, + BLOCK_COMBI_GRD_S_C3_1, + BLOCK_COMBI_GRD_S_C3_R1_1, + BLOCK_COMBI_GRD_S_C4_1, + BLOCK_COMBI_GRD_S_C4_R1_1, + BLOCK_COMBI_GRD_S_C4_R2_1, + BLOCK_COMBI_GRD_S_C5_1, + BLOCK_COMBI_GRD_S_C5_R2_1, + BLOCK_COMBI_GRD_S_C5_R3_1, + BLOCK_COMBI_GRD_S_C6_1, + BLOCK_COMBI_GRD_S_C6_R1_1, + BLOCK_COMBI_GRD_S_C7_1, + BLOCK_COMBI_GRD_S_R1_1, + BLOCK_COMBI_GRD_S_R2_1, + BLOCK_COMBI_GRD_S_R3_1, + BLOCK_COMBI_GRD_S_R4_1, + BLOCK_COMBI_GRD_S_R5_1, + BLOCK_COMBI_GRD_S_R6_1, + BLOCK_COMBI_GRD_S_R7_1, + BLOCK_COMBI_GRD_S_C3_R2_1, + BLOCK_COMBI_GRD_S_C7_R3_1, + BLOCK_COMBI_GRD_S_C6_R3_1, + BLOCK_COMBI_GRD_S_R1_B_1, + BLOCK_COMBI_GRD_S_R2_B_1, + BLOCK_COMBI_GRD_S_R3_B_1, + BLOCK_COMBI_GRD_S_R4_B_1, + BLOCK_COMBI_GRD_S_R6_B_1, + BLOCK_COMBI_GRD_S_R7_B_1, + BLOCK_COMBI_GRD_S_T_1, + BLOCK_COMBI_GRD_S_C1_S_2, + BLOCK_COMBI_GRD_S_C2_S_1, + BLOCK_COMBI_GRD_S_C3_S_1, + BLOCK_COMBI_GRD_S_C4_S_1, + BLOCK_COMBI_GRD_S_C5_S_1, + BLOCK_COMBI_GRD_S_C6_S_1, + BLOCK_COMBI_GRD_S_C7_S_1, + BLOCK_COMBI_GRD_S_C7_R1_1, + BLOCK_COMBI_GRD_S_C4_R3_1, + BLOCK_COMBI_GRD_YAMISHOP, + BLOCK_COMBI_GRD_POST_OFFICE, + BLOCK_COMBI_ROM_TRAIN_IN, + BLOCK_COMBI_ROM_TRAIN_IN2, + BLOCK_COMBI_GRD_S_F_1_84, + BLOCK_COMBI_GRD_S_T_ST1_1, + BLOCK_COMBI_GRD_S_F_1_86, + BLOCK_COMBI_GRD_S_C1_2, + BLOCK_COMBI_GRD_S_C1_3, + BLOCK_COMBI_GRD_S_C1_4, + BLOCK_COMBI_GRD_S_C1_5, + BLOCK_COMBI_GRD_S_C2_2, + BLOCK_COMBI_GRD_S_R1_2, + BLOCK_COMBI_GRD_S_R1_3, + BLOCK_COMBI_GRD_S_R4_2, + BLOCK_COMBI_GRD_S_R5_2, + BLOCK_COMBI_GRD_S_R7_2, + BLOCK_COMBI_GRD_S_R7_3, + BLOCK_COMBI_GRD_S_C2_S_2, + BLOCK_COMBI_GRD_S_C1_S_3, + BLOCK_COMBI_GRD_S_C4_S_2, + BLOCK_COMBI_GRD_S_C5_S_2, + BLOCK_COMBI_GRD_S_C6_R1_2, + BLOCK_COMBI_GRD_S_C3_R1_2, + BLOCK_COMBI_GRD_S_C3_2, + BLOCK_COMBI_GRD_S_C7_3, + BLOCK_COMBI_GRD_S_C1_R2_2, + BLOCK_COMBI_GRD_S_C1_R3_2, + BLOCK_COMBI_GRD_S_C4_2, + BLOCK_COMBI_GRD_S_C5_2, + BLOCK_COMBI_GRD_S_C6_2, + BLOCK_COMBI_GRD_S_R2_2, + BLOCK_COMBI_GRD_S_R3_2, + BLOCK_COMBI_GRD_S_C4_R1_2, + BLOCK_COMBI_GRD_S_C4_R2_2, + BLOCK_COMBI_GRD_S_C7_R1_2, + BLOCK_COMBI_GRD_S_R6_2, + BLOCK_COMBI_GRD_S_C5_R2_2, + BLOCK_COMBI_GRD_S_C4_R3_2, + BLOCK_COMBI_GRD_S_R2_3, + BLOCK_COMBI_GRD_S_R3_3, + BLOCK_COMBI_GRD_S_C5_R3_2, + BLOCK_COMBI_GRD_S_C5_3, + BLOCK_COMBI_GRD_S_C4_3, + BLOCK_COMBI_GRD_S_C3_3, + BLOCK_COMBI_GRD_S_C2_3, + BLOCK_COMBI_POLICE_INDOOR, + BLOCK_COMBI_GRD_S_R1_P_1, + BLOCK_COMBI_GRD_S_C1_R1_2, + BLOCK_COMBI_GRD_S_C1_R1_3, + BLOCK_COMBI_GRD_S_C1_R2_3, + BLOCK_COMBI_GRD_S_C1_R3_3, + BLOCK_COMBI_GRD_S_C2_R1_2, + BLOCK_COMBI_GRD_S_C5_R1_2, + BLOCK_COMBI_GRD_S_C6_3, + BLOCK_COMBI_GRD_S_C7_2, + BLOCK_COMBI_GRD_S_R1_4, + BLOCK_COMBI_GRD_S_R2_4, + BLOCK_COMBI_GRD_S_R3_4, + BLOCK_COMBI_GRD_S_R4_3, + BLOCK_COMBI_GRD_S_R5_3, + BLOCK_COMBI_GRD_S_R6_3, + BLOCK_COMBI_GRD_S_T_10_146, + BLOCK_COMBI_GRD_S_T_10_147, + BLOCK_COMBI_GRD_S_F_1_148, + BLOCK_COMBI_GRD_S_C2_R2_2, + BLOCK_COMBI_GRD_S_C3_R2_2, + BLOCK_COMBI_GRD_S_R1_B_2, + BLOCK_COMBI_GRD_S_R2_B_2, + BLOCK_COMBI_GRD_S_R4_B_2, + BLOCK_COMBI_GRD_S_R3_B_2, + BLOCK_COMBI_GRD_S_R5_B_2, + BLOCK_COMBI_GRD_S_R6_B_2, + BLOCK_COMBI_GRD_S_R7_B_2, + BLOCK_COMBI_GRD_S_R1_B_3, + BLOCK_COMBI_GRD_S_R2_B_3, + BLOCK_COMBI_GRD_S_R3_B_3, + BLOCK_COMBI_GRD_S_F_3, + BLOCK_COMBI_GRD_S_F_4, + BLOCK_COMBI_GRD_S_F_5, + BLOCK_COMBI_GRD_S_F_6, + BLOCK_COMBI_GRD_S_F_7, + BLOCK_COMBI_GRD_S_F_8, + BLOCK_COMBI_GRD_S_F_9, + BLOCK_COMBI_GRD_S_F_10, + BLOCK_COMBI_GRD_S_T_2, + BLOCK_COMBI_GRD_S_T_3, + BLOCK_COMBI_GRD_S_T_4, + BLOCK_COMBI_GRD_S_T_5, + BLOCK_COMBI_GRD_S_T_6, + BLOCK_COMBI_GRD_S_T_7, + BLOCK_COMBI_GRD_S_T_8, + BLOCK_COMBI_GRD_S_T_9, + BLOCK_COMBI_GRD_S_T_10, + BLOCK_COMBI_GRD_S_T_R1_2, + BLOCK_COMBI_GRD_S_T_R1_3, + BLOCK_COMBI_GRD_S_T_R1_4, + BLOCK_COMBI_GRD_S_T_R1_5, + BLOCK_COMBI_GRD_S_R2_P_1, + BLOCK_COMBI_GRD_S_R3_P_1, + BLOCK_COMBI_GRD_S_F_1_180, + BLOCK_COMBI_GRD_S_F_1_181, + BLOCK_COMBI_GRD_S_F_1_182, + BLOCK_COMBI_GRD_S_F_1_183, + BLOCK_COMBI_GRD_S_F_1_184, + BLOCK_COMBI_GRD_S_R1_1_185, + BLOCK_COMBI_GRD_S_R6_P_1, + BLOCK_COMBI_GRD_S_R7_P_1, + BLOCK_COMBI_GRD_S_T_ST1_2, + BLOCK_COMBI_GRD_S_T_ST1_3, + BLOCK_COMBI_GRD_S_R4_P_1, + BLOCK_COMBI_GRD_S_R5_P_1, + BLOCK_COMBI_ROM_URANAI, + BLOCK_COMBI_GRD_PLAYER_SELECT, + BLOCK_COMBI_ROM_MY_ROOM_S, + BLOCK_COMBI_ROM_MY_ROOM_M, + BLOCK_COMBI_GRD_S_F_9_1, + BLOCK_COMBI_GRD_S_R1_3_1, + BLOCK_COMBI_GRD_S_C1_3_1, + BLOCK_COMBI_GRD_S_F_9_2, + BLOCK_COMBI_GRD_S_C1_S_4, + BLOCK_COMBI_GRD_S_E1_1, + BLOCK_COMBI_GRD_S_E1_R1_1, + BLOCK_COMBI_GRD_S_E2_1, + BLOCK_COMBI_GRD_S_E2_C1_1, + BLOCK_COMBI_GRD_S_E2_T_1, + BLOCK_COMBI_GRD_S_E3_1, + BLOCK_COMBI_GRD_S_E3_C1_1, + BLOCK_COMBI_GRD_S_E3_T_1, + BLOCK_COMBI_GRD_S_E4_1, + BLOCK_COMBI_GRD_S_E5_1, + BLOCK_COMBI_GRD_S_F_KO_1, + BLOCK_COMBI_GRD_S_F_KO_2, + BLOCK_COMBI_GRD_S_F_KO_3, + BLOCK_COMBI_GRD_S_F_MH_1, + BLOCK_COMBI_GRD_S_F_MH_2, + BLOCK_COMBI_GRD_S_F_MH_3, + BLOCK_COMBI_GRD_S_F_PK_1, + BLOCK_COMBI_GRD_S_F_PK_2, + BLOCK_COMBI_GRD_S_F_PK_3, + BLOCK_COMBI_GRD_S_T_PO_1, + BLOCK_COMBI_GRD_S_T_SH_1, + BLOCK_COMBI_GRD_S_T_SH_2, + BLOCK_COMBI_GRD_S_T_SH_3, + BLOCK_COMBI_GRD_S_T_PO_2, + BLOCK_COMBI_GRD_S_T_PO_3, + BLOCK_COMBI_GRD_226, + BLOCK_COMBI_ROM_SHOP2, + BLOCK_COMBI_ROM_SHOP4_1, + BLOCK_COMBI_ROM_SHOP4_2, + BLOCK_COMBI_ROM_SHOP3, + BLOCK_COMBI_GRD_S_HOLE_TEST, + BLOCK_COMBI_GRD_S_M_1_232, + BLOCK_COMBI_GRD_S_M_2_233, + BLOCK_COMBI_GRD_S_M_1_234, + BLOCK_COMBI_GRD_S_M_2_235, + BLOCK_COMBI_GRD_S_M_R1_1, + BLOCK_COMBI_GRD_S_E2_M_1, + BLOCK_COMBI_GRD_S_E3_M_1, + BLOCK_COMBI_ROM_KAMAKURA, + BLOCK_COMBI_GRD_S_M_R1_2, + BLOCK_COMBI_GRD_S_M_R1_3, + BLOCK_COMBI_GRD_S_M_R1_4, + BLOCK_COMBI_GRD_S_M_R1_5, + BLOCK_COMBI_GRD_S_M_R1_B_1, + BLOCK_COMBI_GRD_S_M_R1_B_2, + BLOCK_COMBI_GRD_S_M_R1_B_3, + BLOCK_COMBI_GRD_247, + BLOCK_COMBI_GRD_248, + BLOCK_COMBI_GRD_249, + BLOCK_COMBI_GRD_250, + BLOCK_COMBI_GRD_251, + BLOCK_COMBI_GRD_S_M_3, + BLOCK_COMBI_GRD_S_M_4, + BLOCK_COMBI_GRD_S_M_5, + BLOCK_COMBI_GRD_S_M_6, + BLOCK_COMBI_GRD_S_M_7, + BLOCK_COMBI_GRD_S_M_8, + BLOCK_COMBI_GRD_S_M_9, + BLOCK_COMBI_GRD_S_M_10, + BLOCK_COMBI_GRD_S_C2_S_3, + BLOCK_COMBI_GRD_S_C7_R3_2, + BLOCK_COMBI_GRD_S_C7_S_2, + BLOCK_COMBI_GRD_S_C7_S_3, + BLOCK_COMBI_GRD_S_R1_P_1_264, + BLOCK_COMBI_GRD_S_C7_S_3_265, + BLOCK_COMBI_GRD_S_F_1_266, + BLOCK_COMBI_GRD_S_C2_1_267, + BLOCK_COMBI_GRD_S_C5_1_268, + BLOCK_COMBI_GRD_S_M_R1_B_2_269, + BLOCK_COMBI_GRD_S_R6_1_270, + BLOCK_COMBI_GRD_S_R3_1_271, + BLOCK_COMBI_GRD_S_C1_S_1_272, + BLOCK_COMBI_GRD_S_M_3_273, + BLOCK_COMBI_GRD_S_R1_B_1_274, + BLOCK_COMBI_GRD_S_C5_1_275, + BLOCK_COMBI_GRD_S_C7_1_276, + BLOCK_COMBI_GRD_S_F_1_277, + BLOCK_COMBI_ROM_MUSEUM1, + BLOCK_COMBI_ROM_MUSEUM3, + BLOCK_COMBI_ROM_MUSEUM2, + BLOCK_COMBI_ROM_MUSEUM4, + BLOCK_COMBI_ROM_MUSEUM5, + BLOCK_COMBI_GRD_S_F_1_283, + BLOCK_COMBI_GRD_S_F_1_284, + BLOCK_COMBI_GRD_S_C1_R1_1_285, + BLOCK_COMBI_GRD_S_R1_2_286, + BLOCK_COMBI_ROM_TAILOR, + BLOCK_COMBI_GRD_S_F_MU_1, + BLOCK_COMBI_GRD_S_F_MU_2, + BLOCK_COMBI_GRD_S_F_MU_3, + BLOCK_COMBI_GRD_S_M_TA_1, + BLOCK_COMBI_GRD_S_M_TA_2, + BLOCK_COMBI_GRD_S_M_TA_3, + BLOCK_COMBI_GRD_S_M_WF_1, + BLOCK_COMBI_GRD_S_O_1_295, + BLOCK_COMBI_GRD_S_IR_1, + BLOCK_COMBI_GRD_S_IL_1, + BLOCK_COMBI_GRD_305, + BLOCK_COMBI_GRD_306, + BLOCK_COMBI_GRD_307, + BLOCK_COMBI_GRD_308, + BLOCK_COMBI_GRD_309, + BLOCK_COMBI_GRD_310, + BLOCK_COMBI_GRD_311, + BLOCK_COMBI_GRD_312, + BLOCK_COMBI_GRD_313, + BLOCK_COMBI_GRD_314, + BLOCK_COMBI_GRD_315, + BLOCK_COMBI_GRD_316, + BLOCK_COMBI_GRD_317, + BLOCK_COMBI_GRD_318, + BLOCK_COMBI_GRD_S_O_1_312, + BLOCK_COMBI_GRD_S_O_1_313, + BLOCK_COMBI_GRD_S_O_2_314, + BLOCK_COMBI_GRD_S_O_2_315, + BLOCK_COMBI_GRD_S_O_2_316, + BLOCK_COMBI_GRD_S_O_2_317, + BLOCK_COMBI_GRD_S_O_3_318, + BLOCK_COMBI_GRD_S_O_3_319, + BLOCK_COMBI_GRD_S_O_3_320, + BLOCK_COMBI_GRD_S_O_4_322, + BLOCK_COMBI_GRD_S_O_4_323, + BLOCK_COMBI_GRD_S_O_4_324, + BLOCK_COMBI_GRD_S_O_4_325, + BLOCK_COMBI_GRD_S_O_4_326, + BLOCK_COMBI_GRD_S_E2_O_1, + BLOCK_COMBI_GRD_S_E3_O_1, + BLOCK_COMBI_GRD_S_O_1_328, + BLOCK_COMBI_GRD_S_O_2_329, + BLOCK_COMBI_GRD_S_O_3_330, + BLOCK_COMBI_GRD_S_O_4_331, + BLOCK_COMBI_GRD_S_O_5, + BLOCK_COMBI_GRD_S_O_6, + BLOCK_COMBI_GRD_S_O_7, + BLOCK_COMBI_GRD_S_O_8, + BLOCK_COMBI_GRD_S_O_9, + BLOCK_COMBI_GRD_S_O_10, + BLOCK_COMBI_GRD_S_O_R1_1, + BLOCK_COMBI_GRD_S_O_R1_2, + BLOCK_COMBI_GRD_S_O_R1_3, + BLOCK_COMBI_GRD_S_O_R1_4, + BLOCK_COMBI_GRD_S_O_R1_5, + BLOCK_COMBI_GRD_S_O_R1_B_1, + BLOCK_COMBI_GRD_S_O_R1_B_2, + BLOCK_COMBI_GRD_S_O_R1_B_3, + BLOCK_COMBI_GRD_S_O_TA_1, + BLOCK_COMBI_GRD_S_O_TA_2, + BLOCK_COMBI_GRD_S_O_TA_3, + BLOCK_COMBI_GRD_S_O_WF_1, + BLOCK_COMBI_GRD_S_O_I_1_350, + BLOCK_COMBI_GRD_S_O_I_1_351, + BLOCK_COMBI_GRD_S_O_I_2_352, + BLOCK_COMBI_GRD_S_O_I_2_353, + BLOCK_COMBI_GRD_S_O_I_2_354, + BLOCK_COMBI_GRD_S_O_I_2_355, + BLOCK_COMBI_ROM_TOUDAI, + BLOCK_COMBI_GRD_S_IR_2, + BLOCK_COMBI_GRD_S_IL_2, + BLOCK_COMBI_GRD_S_IR_3, + BLOCK_COMBI_GRD_S_IL_3, + BLOCK_COMBI_GRD_S_IR_4, + BLOCK_COMBI_GRD_S_IL_4, + BLOCK_COMBI_GRD_S_M_WF_2, + BLOCK_COMBI_GRD_S_M_WF_3, + BLOCK_COMBI_GRD_S_O_WF_2, + BLOCK_COMBI_GRD_S_O_WF_3, + BLOCK_COMBI_ROM_TENT, + + BLOCK_COMBI_NUM +}; + +#ifdef __cplusplus +} +#endif + +#endif /* M_COMBI_TYPE_H */ diff --git a/include/m_fg_type.h b/include/m_fg_type.h new file mode 100644 index 00000000..7dafe2a4 --- /dev/null +++ b/include/m_fg_type.h @@ -0,0 +1,328 @@ +#ifndef M_FG_TYPE_H +#define M_FG_TYPE_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum __fg_type__ { + FG_TYPE_0000 = 0x0000, + FG_TYPE_0001 = 0x0001, + FG_TYPE_0002 = 0x0002, + FG_TYPE_0003 = 0x0003, // unused + FG_TYPE_0004 = 0x0004, + FG_TYPE_0005 = 0x0005, + FG_TYPE_0006 = 0x0006, + FG_TYPE_0007 = 0x0007, + FG_TYPE_0008 = 0x0008, + FG_TYPE_0009 = 0x0009, + FG_TYPE_000A = 0x000A, // unused + FG_TYPE_000B = 0x000B, + FG_TYPE_000C = 0x000C, + FG_TYPE_ROOM01 = 0x000D, + FG_TYPE_000E = 0x000E, + FG_TYPE_000F = 0x000F, + FG_TYPE_0010 = 0x0010, + FG_TYPE_0011 = 0x0011, + FG_TYPE_0012 = 0x0012, + FG_TYPE_0013 = 0x0013, + FG_TYPE_0014 = 0x0014, + FG_TYPE_0015 = 0x0015, + FG_TYPE_ROM_PLAYER_ROOM = 0x0016, + FG_TYPE_0017 = 0x0017, + FG_TYPE_0018 = 0x0018, // unused + FG_TYPE_0019 = 0x0019, // unused + FG_TYPE_NPC_ROOM01 = 0x001A, + FG_TYPE_001B = 0x001B, + FG_TYPE_001C = 0x001C, // unused + FG_TYPE_001D = 0x001D, // unused + FG_TYPE_001E = 0x001E, // unused + FG_TYPE_001F = 0x001F, // unused + FG_TYPE_0020 = 0x0020, + FG_TYPE_0021 = 0x0021, + FG_TYPE_ROM_SHOP1 = 0x0022, + FG_TYPE_ROM_SHOP2 = 0x0023, + FG_TYPE_ROM_SHOP3 = 0x0024, + FG_TYPE_ROM_SHOP4_1 = 0x0025, + FG_TYPE_ROM_SHOP4_2 = 0x0026, + FG_TYPE_0027 = 0x0027, + FG_TYPE_GRD_YAMISHOP = 0x0028, + FG_TYPE_GRD_S_C1_R1_1_29 = 0x0029, + FG_TYPE_GRD_S_C1_S_1 = 0x002A, + FG_TYPE_GRD_S_C2_R1_1 = 0x002B, + FG_TYPE_GRD_S_C2_R2_1 = 0x002C, + FG_TYPE_GRD_S_C5_R1_1 = 0x002D, + FG_TYPE_GRD_S_T_R1_1 = 0x002E, + FG_TYPE_GRD_S_F_1_2F = 0x002F, + FG_TYPE_GRD_S_F_2 = 0x0030, + FG_TYPE_GRD_S_C1_1 = 0x0031, + FG_TYPE_GRD_S_C1_R2_1 = 0x0032, + FG_TYPE_GRD_S_C1_R3_1 = 0x0033, + FG_TYPE_GRD_S_C2_1 = 0x0034, + FG_TYPE_GRD_S_C3_1 = 0x0035, + FG_TYPE_GRD_S_C3_R1_1 = 0x0036, + FG_TYPE_GRD_S_C4_1 = 0x0037, + FG_TYPE_GRD_S_C4_R1_1 = 0x0038, + FG_TYPE_GRD_S_C4_R2_1 = 0x0039, + FG_TYPE_GRD_S_C5_1 = 0x003A, + FG_TYPE_GRD_S_C5_R2_1 = 0x003B, + FG_TYPE_GRD_S_C5_R3_1 = 0x003C, + FG_TYPE_GRD_S_C6_1 = 0x003D, + FG_TYPE_GRD_S_C6_R1_1 = 0x003E, + FG_TYPE_GRD_S_C7_1 = 0x003F, + FG_TYPE_GRD_S_R1_1 = 0x0040, + FG_TYPE_GRD_S_R2_1 = 0x0041, + FG_TYPE_GRD_S_R3_1 = 0x0042, + FG_TYPE_GRD_S_R4_1 = 0x0043, + FG_TYPE_GRD_S_R5_1 = 0x0044, + FG_TYPE_GRD_S_R6_1 = 0x0045, + FG_TYPE_GRD_S_R7_1 = 0x0046, + FG_TYPE_GRD_S_C3_R2_1 = 0x0047, + FG_TYPE_GRD_S_C7_R3_1 = 0x0048, + FG_TYPE_GRD_S_C6_R3_1 = 0x0049, + FG_TYPE_GRD_S_R1_B_1 = 0x004A, + FG_TYPE_GRD_S_R2_B_1 = 0x004B, + FG_TYPE_GRD_S_R3_B_1 = 0x004C, + FG_TYPE_GRD_S_R4_B_1 = 0x004D, + FG_TYPE_GRD_S_R5_B_1 = 0x004E, + FG_TYPE_GRD_S_R6_B_1 = 0x004F, + FG_TYPE_GRD_S_R7_B_1 = 0x0050, + FG_TYPE_GRD_S_T_1 = 0x0051, + FG_TYPE_GRD_S_C1_S_2 = 0x0052, + FG_TYPE_GRD_S_C2_S_1 = 0x0053, + FG_TYPE_GRD_S_C3_S_1 = 0x0054, + FG_TYPE_GRD_S_C4_S_1 = 0x0055, + FG_TYPE_GRD_S_C5_S_1 = 0x0056, + FG_TYPE_GRD_S_C6_S_1 = 0x0057, + FG_TYPE_GRD_S_C7_S_1 = 0x0058, + FG_TYPE_GRD_S_C4_R3_1 = 0x0059, + FG_TYPE_GRD_S_C7_R1_1 = 0x005A, + FG_TYPE_GRD_S_C1_R1_2 = 0x005B, + FG_TYPE_GRD_S_C1_R1_3 = 0x005C, + FG_TYPE_GRD_S_C5_R1_2 = 0x005D, + FG_TYPE_GRD_S_C2_R1_2 = 0x005E, + FG_TYPE_GRD_S_C2_R2_2 = 0x005F, + FG_TYPE_GRD_S_C3_R2_2 = 0x0060, + FG_TYPE_0061 = 0x0061, + FG_TYPE_0062 = 0x0062, + FG_TYPE_GRD_S_M_3 = 0x0063, + FG_TYPE_GRD_S_M_4 = 0x0064, + FG_TYPE_0065 = 0x0065, + FG_TYPE_GRD_S_T_10_66 = 0x0066, + FG_TYPE_GRD_S_T_10_67 = 0x0067, + FG_TYPE_0068 = 0x0068, + FG_TYPE_0069 = 0x0069, + FG_TYPE_006A = 0x006A, + FG_TYPE_GRD_S_C1_3 = 0x006B, + FG_TYPE_GRD_S_C1_4 = 0x006C, + FG_TYPE_GRD_S_C1_R2_2 = 0x006D, + FG_TYPE_GRD_S_C1_R2_3 = 0x006E, + FG_TYPE_GRD_S_C1_R3_2 = 0x006F, + FG_TYPE_GRD_S_C1_R3_3 = 0x0070, + FG_TYPE_GRD_S_C1_S_3 = 0x0071, + FG_TYPE_GRD_S_C2_2 = 0x0072, + FG_TYPE_GRD_S_C2_3 = 0x0073, + FG_TYPE_GRD_S_C2_S_2 = 0x0074, + FG_TYPE_GRD_S_C3_2 = 0x0075, + FG_TYPE_GRD_S_C3_3 = 0x0076, + FG_TYPE_GRD_S_C3_R1_2 = 0x0077, + FG_TYPE_GRD_S_C4_2 = 0x0078, + FG_TYPE_GRD_S_C4_3 = 0x0079, + FG_TYPE_GRD_S_C4_R1_2 = 0x007A, + FG_TYPE_GRD_S_C4_R2_2 = 0x007B, + FG_TYPE_GRD_S_C4_R3_2 = 0x007C, + FG_TYPE_GRD_S_C4_S_2 = 0x007D, + FG_TYPE_GRD_S_C5_2 = 0x007E, + FG_TYPE_GRD_S_C5_3 = 0x007F, + FG_TYPE_GRD_S_C5_R3_2 = 0x0080, + FG_TYPE_GRD_S_C5_S_2 = 0x0081, + FG_TYPE_GRD_S_C6_2 = 0x0082, + FG_TYPE_GRD_S_C6_3 = 0x0083, + FG_TYPE_GRD_S_C6_R1_2 = 0x0084, + FG_TYPE_GRD_S_C7_2 = 0x0085, + FG_TYPE_GRD_S_C7_3 = 0x0086, + FG_TYPE_GRD_S_C7_R1_2 = 0x0087, + FG_TYPE_GRD_S_F_3 = 0x0088, + FG_TYPE_GRD_S_F_4 = 0x0089, + FG_TYPE_GRD_S_F_5 = 0x008A, + FG_TYPE_GRD_S_F_6 = 0x008B, + FG_TYPE_GRD_S_F_7 = 0x008C, + FG_TYPE_GRD_S_F_8 = 0x008D, + FG_TYPE_GRD_S_F_9 = 0x008E, + FG_TYPE_GRD_S_F_10 = 0x008F, + FG_TYPE_GRD_S_R1_2 = 0x0090, + FG_TYPE_GRD_S_R1_3 = 0x0091, + FG_TYPE_GRD_S_R1_4 = 0x0092, + FG_TYPE_GRD_S_R1_B_2 = 0x0093, + FG_TYPE_GRD_S_R1_B_3 = 0x0094, + FG_TYPE_GRD_S_R2_2 = 0x0095, + FG_TYPE_GRD_S_R2_3 = 0x0096, + FG_TYPE_GRD_S_R2_B_2 = 0x0097, + FG_TYPE_GRD_S_R2_B_3 = 0x0098, + FG_TYPE_GRD_S_R3_2 = 0x0099, + FG_TYPE_GRD_S_R3_3 = 0x009A, + FG_TYPE_GRD_S_R3_4 = 0x009B, + FG_TYPE_GRD_S_R3_B_2 = 0x009C, + FG_TYPE_GRD_S_R3_B_3 = 0x009D, + FG_TYPE_GRD_S_R4_2 = 0x009E, + FG_TYPE_GRD_S_R4_3 = 0x009F, + FG_TYPE_GRD_S_R4_B_2 = 0x00A0, + FG_TYPE_GRD_S_R5_2 = 0x00A1, + FG_TYPE_GRD_S_R5_3 = 0x00A2, + FG_TYPE_GRD_S_R5_B_2 = 0x00A3, + FG_TYPE_GRD_S_R6_2 = 0x00A4, + FG_TYPE_GRD_S_R6_3 = 0x00A5, + FG_TYPE_GRD_S_R6_B_2 = 0x00A6, + FG_TYPE_GRD_S_R7_2 = 0x00A7, + FG_TYPE_GRD_S_R7_3 = 0x00A8, + FG_TYPE_GRD_S_R7_B_2 = 0x00A9, + FG_TYPE_GRD_S_T_2 = 0x00AA, + FG_TYPE_GRD_S_T_5 = 0x00AB, + FG_TYPE_GRD_S_R7_P_1 = 0x00AC, + FG_TYPE_GRD_S_T_10 = 0x00AD, + FG_TYPE_GRD_S_T_6 = 0x00AE, + FG_TYPE_GRD_S_T_8 = 0x00AF, + FG_TYPE_GRD_S_T_R1_2 = 0x00B0, + FG_TYPE_GRD_S_T_R1_5 = 0x00B1, + FG_TYPE_GRD_S_C5_R2_2 = 0x00B2, + FG_TYPE_GRD_S_R2_4 = 0x00B3, + FG_TYPE_GRD_S_R2_P_1 = 0x00B4, + FG_TYPE_GRD_S_R6_P_1 = 0x00B5, + FG_TYPE_GRD_S_T_3 = 0x00B6, + FG_TYPE_GRD_S_T_4 = 0x00B7, + FG_TYPE_GRD_S_T_7 = 0x00B8, + FG_TYPE_GRD_S_T_9 = 0x00B9, + FG_TYPE_GRD_S_T_R1_3 = 0x00BA, + FG_TYPE_GRD_S_T_R1_4 = 0x00BB, + FG_TYPE_GRD_S_T_ST1_2 = 0x00BC, + FG_TYPE_GRD_S_T_ST1_3 = 0x00BD, + FG_TYPE_GRD_S_R5_P_1 = 0x00BE, + FG_TYPE_GRD_S_C1_5 = 0x00BF, + FG_TYPE_GRD_S_C1_2 = 0x00C0, + FG_TYPE_GRD_S_R1_P_1 = 0x00C1, + FG_TYPE_GRD_S_R3_P_1 = 0x00C2, + FG_TYPE_GRD_S_R4_P_1 = 0x00C3, + FG_TYPE_00C4 = 0x00C4, // unused + FG_TYPE_00C5 = 0x00C5, // unused + FG_TYPE_00C6 = 0x00C6, // unused + FG_TYPE_00C7 = 0x00C7, // unused + FG_TYPE_GRD_POST_OFFICE = 0x00C8, + FG_TYPE_ROM_TRAIN_IN = 0x00C9, + FG_TYPE_ROM_TRAIN_IN_2 = 0x00CA, + FG_TYPE_EMPTY = 0x00CB, + FG_TYPE_GRD_S_T_ST1_1 = 0x00CC, + FG_TYPE_GRD_S_F_1_CD = 0x00CD, + FG_TYPE_POLICE_INDOOR = 0x00CE, + FG_TYPE_ROM_URANAI = 0x00CF, + FG_TYPE_GRD_PLAYER_SELECT = 0x00D0, + FG_TYPE_GRD_S_HOLE_TEST = 0x00D1, + FG_TYPE_00D2 = 0x00D2, // unused + FG_TYPE_00D3 = 0x00D3, // unused + FG_TYPE_00D4 = 0x00D4, // unused + FG_TYPE_00D5 = 0x00D5, // unused + FG_TYPE_00D6 = 0x00D6, // unused + FG_TYPE_00D7 = 0x00D7, // unused + FG_TYPE_00D8 = 0x00D8, // unused + FG_TYPE_00D9 = 0x00D9, // unused + FG_TYPE_00DA = 0x00DA, // unused + FG_TYPE_00DB = 0x00DB, // unused + FG_TYPE_GRD_S_F_KO_2 = 0x00DC, + FG_TYPE_GRD_S_T_PO_1 = 0x00DD, + FG_TYPE_GRD_S_T_PO_2 = 0x00DE, + FG_TYPE_GRD_S_T_PO_3 = 0x00DF, + FG_TYPE_GRD_S_F_PK_2 = 0x00E0, + FG_TYPE_GRD_S_F_PK_3 = 0x00E1, + FG_TYPE_GRD_S_F_MH_2 = 0x00E2, + FG_TYPE_GRD_S_F_MH_3 = 0x00E3, + FG_TYPE_GRD_S_F_KO_3 = 0x00E4, + FG_TYPE_GRD_S_T_SH_1 = 0x00E5, + FG_TYPE_GRD_S_T_SH_2 = 0x00E6, + FG_TYPE_GRD_S_T_SH_3 = 0x00E7, + FG_TYPE_GRD_S_C1_S_4 = 0x00E8, + // 0x00E9 - 0x014C are non-existant, maybe reserved? + FG_TYPE_ROM_SHOP1_FUKU = 0x014D, + FG_TYPE_ROM_SHOP2_FUKU = 0x014E, + FG_TYPE_ROM_SHOP3_FUKU = 0x014F, + FG_TYPE_ROM_SHOP4_1_FUKU = 0x0150, + FG_TYPE_0151 = 0x0151, + FG_TYPE_GRD_S_M_R1_2 = 0x0152, + FG_TYPE_GRD_S_M_R1_3 = 0x0153, + FG_TYPE_GRD_S_M_R1_4 = 0x0154, + FG_TYPE_GRD_S_M_R1_5 = 0x0155, + FG_TYPE_GRD_S_M_R1_B_1 = 0x0156, + FG_TYPE_GRD_S_M_R1_B_2 = 0x0157, + FG_TYPE_GRD_S_M_R1_B_3 = 0x0158, + FG_TYPE_GRD_S_M_5 = 0x0159, + FG_TYPE_GRD_S_M_6 = 0x015A, + FG_TYPE_GRD_S_M_7 = 0x015B, + FG_TYPE_GRD_S_M_8 = 0x015C, + FG_TYPE_GRD_S_M_9 = 0x015D, + FG_TYPE_GRD_S_M_10 = 0x015E, + FG_TYPE_GRD_S_C7_S_2 = 0x015F, + FG_TYPE_GRD_S_C2_S_3 = 0x0160, + FG_TYPE_GRD_S_C7_S_3 = 0x0161, + FG_TYPE_GRD_S_C7_R3_2 = 0x0162, + FG_TYPE_ROM_SHOP1_SALE_FTR = 0x0163, + FG_TYPE_ROM_SHOP1_SALE_CARPET = 0x0164, + FG_TYPE_ROM_SHOP1_SALE_WALL = 0x0165, + FG_TYPE_ROM_SHOP1_SALE_CLOTH = 0x0166, + FG_TYPE_ROM_SHOP2_SALE_FTR = 0x0167, + FG_TYPE_ROM_SHOP2_SALE_CARPET = 0x0168, + FG_TYPE_ROM_SHOP2_SALE_WALL = 0x0169, + FG_TYPE_ROM_SHOP2_SALE_CLOTH = 0x016A, + FG_TYPE_ROM_SHOP3_SALE_FTR = 0x016B, + FG_TYPE_ROM_SHOP3_SALE_CARPET = 0x016C, + FG_TYPE_ROM_SHOP3_SALE_WALL = 0x016D, + FG_TYPE_ROM_SHOP3_SALE_CLOTH = 0x016E, + FG_TYPE_ROM_SHOP4_1_SALE = 0x016F, + FG_TYPE_ROM_SHOP4_2_SALE_FTR = 0x0170, + FG_TYPE_ROM_SHOP4_2_SALE_CARPET = 0x0171, + FG_TYPE_ROM_SHOP4_2_SALE_WALL = 0x0172, + FG_TYPE_ROM_SHOP4_2_SALE_CLOTH = 0x0173, + FG_TYPE_GRD_S_F_1_174 = 0x0174, + FG_TYPE_GRD_S_C2_1_175 = 0x0175, + FG_TYPE_GRD_S_C5_1_176 = 0x0176, + FG_TYPE_GRD_S_M_R1_B_2_177 = 0x0177, + FG_TYPE_GRD_S_R6_1_178 = 0x0178, + FG_TYPE_GRD_S_R3_1_179 = 0x0179, + FG_TYPE_GRD_S_C1_S_1_17A = 0x017A, + FG_TYPE_GRD_S_M_3_17B = 0x017B, + FG_TYPE_GRD_S_R1_B_1_17C = 0x017C, + FG_TYPE_GRD_S_C5_1_17D = 0x017D, + FG_TYPE_GRD_S_C7_1_17E = 0x017E, + FG_TYPE_ROM_MUSEUM1 = 0x017F, + FG_TYPE_ROM_MUSEUM3 = 0x0180, + FG_TYPE_ROM_MUSEUM2 = 0x0181, + FG_TYPE_ROM_MUSEUM4 = 0x0182, + FG_TYPE_ROM_MUSEUM5 = 0x0183, + FG_TYPE_GRD_S_F_1_184 = 0x0184, + FG_TYPE_GRD_S_F_1_185 = 0x0185, + FG_TYPE_ROM_TAILOR = 0x0186, + FG_TYPE_GRD_S_F_MU_1 = 0x0187, + FG_TYPE_GRD_S_F_MU_2 = 0x0188, + FG_TYPE_GRD_S_F_MU_3 = 0x0189, + FG_TYPE_GRD_S_M_TA_1 = 0x018A, + FG_TYPE_GRD_S_M_TA_2 = 0x018B, + FG_TYPE_GRD_S_M_TA_3 = 0x018C, + FG_TYPE_GRD_S_M_WF_1 = 0x018D, + FG_TYPE_GRD_S_IL_1 = 0x018E, + FG_TYPE_GRD_S_IR_1 = 0x018F, + FG_TYPE_ROM_TOUDAI = 0x0190, + FG_TYPE_GRD_S_IL_2 = 0x0191, + FG_TYPE_GRD_S_IR_2 = 0x0192, + FG_TYPE_GRD_S_IL_3 = 0x0193, + FG_TYPE_GRD_S_IR_3 = 0x0194, + FG_TYPE_GRD_S_IL_4 = 0x0195, + FG_TYPE_GRD_S_IR_4 = 0x0196, + FG_TYPE_GRD_S_M_WF_2 = 0x0197, + FG_TYPE_GRD_S_M_WF_3 = 0x0198, + FG_TYPE_ROM_TENT = 0x0199, +}; + +#ifdef __cplusplus +} +#endif + +#endif /* M_FG_TYPE_H */ diff --git a/include/m_field_make.h b/include/m_field_make.h index 1d031c8f..92f09ecd 100644 --- a/include/m_field_make.h +++ b/include/m_field_make.h @@ -8,6 +8,7 @@ #include "m_play_h.h" #include "evw_anime.h" #include "m_collision_bg.h" +#include "m_combi_type.h" #ifdef __cplusplus extern "C" { @@ -61,7 +62,7 @@ enum { mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_6, - mFM_BLOCK_TYPE_7, + mFM_BLOCK_TYPE_TRACKS, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, @@ -130,24 +131,24 @@ enum { mFM_BLOCK_TYPE_POOL_EAST_SOUTH, mFM_BLOCK_TYPE_POOL_SOUTH_WEST, mFM_BLOCK_TYPE_POOL_WEST_SOUTH, - mFM_BLOCK_TYPE_76, - mFM_BLOCK_TYPE_77, - mFM_BLOCK_TYPE_78, - mFM_BLOCK_TYPE_79, + mFM_BLOCK_TYPE_TRACKS6, + mFM_BLOCK_TYPE_TRACKS7, + mFM_BLOCK_TYPE_TRACKS8, + mFM_BLOCK_TYPE_TRACKS9, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_MUSEUM, mFM_BLOCK_TYPE_NEEDLEWORK, - mFM_BLOCK_TYPE_86, - mFM_BLOCK_TYPE_87, - mFM_BLOCK_TYPE_88, - mFM_BLOCK_TYPE_89, - mFM_BLOCK_TYPE_90, - mFM_BLOCK_TYPE_91, - mFM_BLOCK_TYPE_92, - mFM_BLOCK_TYPE_93, + mFM_BLOCK_TYPE_TRACKS_RIVER_BRIDGE, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL_BRIDGE, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT_BRIDGE, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER_BRIDGE, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER_BRIDGE, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER_BRIDGE, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT_BRIDGE, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER_BRIDGE, mFM_BLOCK_TYPE_OCEAN_2, mFM_BLOCK_TYPE_OCEAN_3, mFM_BLOCK_TYPE_OCEAN_4, @@ -159,9 +160,9 @@ enum { mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_8, - mFM_BLOCK_TYPE_105, - mFM_BLOCK_TYPE_106, - mFM_BLOCK_TYPE_107, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL_BRIDGE, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER_BRIDGE, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER_BRIDGE, mFM_BLOCK_TYPE_NUM, diff --git a/src/data/combi/data_combi.c b/src/data/combi/data_combi.c index 20b41ef7..f0b19641 100644 --- a/src/data/combi/data_combi.c +++ b/src/data/combi/data_combi.c @@ -1,375 +1,377 @@ #include "m_field_make.h" #include "m_random_field.h" +#include "m_bg_type.h" +#include "m_fg_type.h" mFM_combo_info_c data_combi_table[] = { - { 0x0124, 0x00cb, 0xff }, - { 0x003c, 0x0000, 0xff }, - { 0x005a, 0x00cb, 0xff }, - { 0x005a, 0x0004, 0xff }, - { 0x005a, 0x0005, 0xff }, - { 0x005a, 0x000c, 0xff }, - { 0x005a, 0x0009, 0xff }, - { 0x005a, 0x000b, 0xff }, - { 0x00f4, 0x000d, 0xff }, - { 0x005a, 0x000e, 0xff }, - { 0x005a, 0x00cb, 0xff }, - { 0x005a, 0x000f, 0xff }, - { 0x005a, 0x0010, 0xff }, - { 0x005a, 0x0011, 0xff }, - { 0x005a, 0x0012, 0xff }, - { 0x005a, 0x0013, 0xff }, - { 0x005a, 0x0014, 0xff }, - { 0x005a, 0x0015, 0xff }, - { 0x00f2, 0x0016, 0xff }, - { 0x005a, 0x0017, 0xff }, - { 0x005a, 0x001b, 0xff }, - { 0x00f6, 0x001a, 0xff }, - { 0x005a, 0x001b, 0xff }, - { 0x005a, 0x0069, 0xff }, - { 0x00cb, 0x004e, 0x33 }, - { 0x00f8, 0x0022, 0xff }, - { 0x005a, 0x0027, 0xff }, - { 0x0033, 0x002d, 0x1a }, - { 0x00da, 0x002e, 0x0d }, - { 0x010d, 0x0001, 0xff }, - { 0x010e, 0x0001, 0xff }, - { 0x010f, 0x0001, 0xff }, - { 0x0110, 0x0001, 0xff }, - { 0x0006, 0x0029, 0x16 }, - { 0x000f, 0x002a, 0x36 }, - { 0x0016, 0x002b, 0x17 }, - { 0x0018, 0x002c, 0x1e }, - { 0x005a, 0x002f, 0x27 }, - { 0x005b, 0x0030, 0x27 }, - { 0x0001, 0x0031, 0x0f }, - { 0x0009, 0x0032, 0x1d }, - { 0x000c, 0x0033, 0x22 }, - { 0x0013, 0x0034, 0x10 }, - { 0x001d, 0x0035, 0x11 }, - { 0x0020, 0x0036, 0x18 }, - { 0x0025, 0x0037, 0x12 }, - { 0x0028, 0x0038, 0x19 }, - { 0x002a, 0x0039, 0x20 }, - { 0x0030, 0x003a, 0x13 }, - { 0x0035, 0x003b, 0x21 }, - { 0x0037, 0x003c, 0x24 }, - { 0x003b, 0x003d, 0x14 }, - { 0x003e, 0x003e, 0x1b }, - { 0x0042, 0x003f, 0x15 }, - { 0x00aa, 0x0040, 0x28 }, - { 0x00b2, 0x0041, 0x29 }, - { 0x00ba, 0x0042, 0x2a }, - { 0x00c2, 0x0043, 0x2b }, - { 0x00c8, 0x0044, 0x2c }, - { 0x00ce, 0x0045, 0x2d }, - { 0x00d4, 0x0046, 0x2e }, - { 0x0022, 0x0047, 0x1f }, - { 0x0047, 0x0048, 0x26 }, - { 0x0040, 0x0049, 0x25 }, - { 0x00ae, 0x004a, 0x2f }, - { 0x00b6, 0x004b, 0x30 }, - { 0x00be, 0x004c, 0x31 }, - { 0x00c5, 0x004d, 0x32 }, - { 0x00d1, 0x004f, 0x34 }, - { 0x00d7, 0x0050, 0x35 }, - { 0x00db, 0x0051, 0x0c }, - { 0x0010, 0x0052, 0x36 }, - { 0x001a, 0x0053, 0x37 }, - { 0x0024, 0x0054, 0x38 }, - { 0x002e, 0x0055, 0x39 }, - { 0x0039, 0x0056, 0x3a }, - { 0x0041, 0x0057, 0x3b }, - { 0x0049, 0x0058, 0x3c }, - { 0x0045, 0x005a, 0x1c }, - { 0x002c, 0x0059, 0x23 }, - { 0x0115, 0x0028, 0xff }, - { 0x010b, 0x00c8, 0xff }, - { 0x0105, 0x00c9, 0xff }, - { 0x0105, 0x00ca, 0xff }, - { 0x005a, 0x0006, 0xff }, - { 0x00ef, 0x00cc, 0x0b }, - { 0x005a, 0x00cd, 0xff }, - { 0x0002, 0x00c0, 0x0f }, - { 0x0003, 0x006b, 0x0f }, - { 0x0004, 0x006c, 0x0f }, - { 0x0005, 0x00bf, 0x0f }, - { 0x0014, 0x0072, 0x10 }, - { 0x00ab, 0x0090, 0x28 }, - { 0x00ac, 0x0091, 0x28 }, - { 0x00c3, 0x009e, 0x2b }, - { 0x00c9, 0x00a1, 0x2c }, - { 0x00d5, 0x00a7, 0x2e }, - { 0x00d6, 0x00a8, 0x2e }, - { 0x001b, 0x0074, 0x37 }, - { 0x0011, 0x0071, 0x36 }, - { 0x002f, 0x007d, 0x39 }, - { 0x003a, 0x0081, 0x3a }, - { 0x003f, 0x0084, 0x1b }, - { 0x0021, 0x0077, 0x18 }, - { 0x001e, 0x0075, 0x11 }, - { 0x0044, 0x0086, 0x15 }, - { 0x000a, 0x006d, 0x1d }, - { 0x000d, 0x006f, 0x22 }, - { 0x0026, 0x0078, 0x12 }, - { 0x0031, 0x007e, 0x13 }, - { 0x003c, 0x0082, 0x14 }, - { 0x00b3, 0x0095, 0x29 }, - { 0x00bb, 0x0099, 0x2a }, - { 0x0029, 0x007a, 0x19 }, - { 0x002b, 0x007b, 0x20 }, - { 0x0046, 0x0087, 0x1c }, - { 0x00cf, 0x00a4, 0x2d }, - { 0x0036, 0x00b2, 0x21 }, - { 0x002d, 0x007c, 0x23 }, - { 0x00b4, 0x0096, 0x29 }, - { 0x00bc, 0x009a, 0x2a }, - { 0x0038, 0x0080, 0x24 }, - { 0x0032, 0x007f, 0x13 }, - { 0x0027, 0x0079, 0x12 }, - { 0x001f, 0x0076, 0x11 }, - { 0x0015, 0x0073, 0x10 }, - { 0x010c, 0x00ce, 0xff }, - { 0x00b1, 0x00c1, 0x45 }, - { 0x0007, 0x005b, 0x16 }, - { 0x0008, 0x005c, 0x16 }, - { 0x000b, 0x006e, 0x1d }, - { 0x000e, 0x0070, 0x22 }, - { 0x0017, 0x005e, 0x17 }, - { 0x0034, 0x005d, 0x1a }, - { 0x003d, 0x0083, 0x14 }, - { 0x0043, 0x0085, 0x15 }, - { 0x00ad, 0x0092, 0x28 }, - { 0x00b5, 0x00b3, 0x29 }, - { 0x00bd, 0x009b, 0x2a }, - { 0x00c4, 0x009f, 0x2b }, - { 0x00ca, 0x00a2, 0x2c }, - { 0x00d0, 0x00a5, 0x2d }, - { 0x00e4, 0x0067, 0xff }, - { 0x00e4, 0x0066, 0xff }, - { 0x005a, 0x0068, 0xff }, - { 0x0019, 0x005f, 0x1e }, - { 0x0023, 0x0060, 0x1f }, - { 0x00af, 0x0093, 0x2f }, - { 0x00b7, 0x0097, 0x30 }, - { 0x00c6, 0x00a0, 0x32 }, - { 0x00bf, 0x009c, 0x31 }, - { 0x00cc, 0x00a3, 0x33 }, - { 0x00d2, 0x00a6, 0x34 }, - { 0x00d8, 0x00a9, 0x35 }, - { 0x00b0, 0x0094, 0x2f }, - { 0x00b8, 0x0098, 0x30 }, - { 0x00c0, 0x009d, 0x31 }, - { 0x005c, 0x0088, 0x27 }, - { 0x005d, 0x0089, 0x27 }, - { 0x005e, 0x008a, 0x27 }, - { 0x005f, 0x008b, 0x27 }, - { 0x0060, 0x008c, 0x27 }, - { 0x0061, 0x008d, 0x27 }, - { 0x0062, 0x008e, 0x27 }, - { 0x0063, 0x008f, 0x27 }, - { 0x00dc, 0x00aa, 0x0c }, - { 0x00dd, 0x00b6, 0x0c }, - { 0x00de, 0x00b7, 0xff }, - { 0x00df, 0x00ab, 0xff }, - { 0x00e0, 0x00ae, 0xff }, - { 0x00e1, 0x00b8, 0xff }, - { 0x00e2, 0x00af, 0xff }, - { 0x00e3, 0x00b9, 0xff }, - { 0x00e4, 0x00ad, 0xff }, - { 0x00e8, 0x00b0, 0x0d }, - { 0x00e9, 0x00ba, 0x0d }, - { 0x00ea, 0x00bb, 0x0d }, - { 0x00eb, 0x00b1, 0x0d }, - { 0x00b9, 0x00b4, 0x46 }, - { 0x00c1, 0x00c2, 0x47 }, - { 0x005a, 0x006a, 0xff }, - { 0x005a, 0x0061, 0xff }, - { 0x005a, 0x0062, 0xff }, - { 0x005a, 0x0063, 0xff }, - { 0x005a, 0x0064, 0xff }, - { 0x00aa, 0x0065, 0xff }, - { 0x00d3, 0x00b5, 0x4a }, - { 0x00d9, 0x00ac, 0x4b }, - { 0x00f0, 0x00bc, 0x0b }, - { 0x00f1, 0x00bd, 0x0b }, - { 0x00c7, 0x00c3, 0x48 }, - { 0x00cd, 0x00be, 0x49 }, - { 0x00ff, 0x00cf, 0xff }, - { 0x010a, 0x00d0, 0xff }, - { 0x0103, 0x0016, 0xff }, - { 0x0104, 0x0016, 0xff }, - { 0x0106, 0x00cb, 0x4c }, - { 0x0107, 0x00cb, 0x4d }, - { 0x0108, 0x00cb, 0x4e }, - { 0x0109, 0x00cb, 0x4f }, - { 0x0012, 0x00e8, 0x36 }, - { 0x004c, 0x00cb, 0x00 }, - { 0x004d, 0x00cb, 0x01 }, - { 0x004e, 0x00cb, 0x02 }, - { 0x004f, 0x00cb, 0x3d }, - { 0x0052, 0x00cb, 0x09 }, - { 0x0053, 0x00cb, 0x04 }, - { 0x0054, 0x00cb, 0x3e }, - { 0x0057, 0x00cb, 0x0a }, - { 0x0058, 0x00cb, 0x05 }, - { 0x0059, 0x00cb, 0x08 }, - { 0x0064, 0x0068, 0x44 }, - { 0x0065, 0x00dc, 0x44 }, - { 0x0066, 0x00e4, 0x44 }, - { 0x0067, 0x0069, 0x0e }, - { 0x0068, 0x00e2, 0x0e }, - { 0x0069, 0x00e3, 0x0e }, - { 0x006d, 0x006a, 0x42 }, - { 0x006e, 0x00e0, 0x42 }, - { 0x006f, 0x00e1, 0x42 }, - { 0x00e5, 0x00dd, 0x43 }, - { 0x00ec, 0x00e5, 0x41 }, - { 0x00ed, 0x00e6, 0x41 }, - { 0x00ee, 0x00e7, 0x41 }, - { 0x00e6, 0x00de, 0x43 }, - { 0x00e7, 0x00df, 0x43 }, - { 0x005d, 0x0002, 0xff }, - { 0x00fe, 0x0023, 0xff }, - { 0x0100, 0x0025, 0xff }, - { 0x0101, 0x0026, 0xff }, - { 0x0102, 0x0024, 0xff }, - { 0x0000, 0x00d1, 0xff }, - { 0x0078, 0x0061, 0x3f }, - { 0x0079, 0x0062, 0x3f }, - { 0x0078, 0x0061, 0xff }, - { 0x0079, 0x0062, 0xff }, - { 0x0082, 0x0065, 0x40 }, - { 0x0050, 0x00cb, 0x50 }, - { 0x0055, 0x00cb, 0x51 }, - { 0x00f9, 0x0151, 0xff }, - { 0x0083, 0x0152, 0x40 }, - { 0x0084, 0x0153, 0x40 }, - { 0x0085, 0x0154, 0x40 }, - { 0x0086, 0x0155, 0x40 }, - { 0x0087, 0x0156, 0x52 }, - { 0x0088, 0x0157, 0x52 }, - { 0x0089, 0x0158, 0x52 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x007a, 0x0063, 0x3f }, - { 0x007b, 0x0064, 0x3f }, - { 0x007c, 0x0159, 0x3f }, - { 0x007d, 0x015a, 0x3f }, - { 0x007e, 0x015b, 0x3f }, - { 0x007f, 0x015c, 0x3f }, - { 0x0080, 0x015d, 0x3f }, - { 0x0081, 0x015e, 0x3f }, - { 0x001c, 0x0160, 0x37 }, - { 0x0048, 0x0162, 0x26 }, - { 0x004a, 0x015f, 0x3c }, - { 0x004b, 0x0161, 0x3c }, - { 0x00b1, 0x0007, 0xff }, - { 0x004b, 0x0011, 0xff }, - { 0x005a, 0x0174, 0xff }, - { 0x0013, 0x0175, 0xff }, - { 0x0030, 0x0176, 0xff }, - { 0x0088, 0x0177, 0xff }, - { 0x00ce, 0x0178, 0xff }, - { 0x00ba, 0x0179, 0xff }, - { 0x000f, 0x017a, 0xff }, - { 0x007a, 0x017b, 0xff }, - { 0x00ae, 0x017c, 0xff }, - { 0x0030, 0x017d, 0xff }, - { 0x0042, 0x017e, 0xff }, - { 0x005a, 0x0008, 0xff }, - { 0x0116, 0x017f, 0xff }, - { 0x0118, 0x0180, 0xff }, - { 0x0117, 0x0181, 0xff }, - { 0x011a, 0x0182, 0xff }, - { 0x0119, 0x0183, 0xff }, - { 0x005a, 0x0184, 0xff }, - { 0x005a, 0x0185, 0xff }, - { 0x0006, 0x0020, 0xff }, - { 0x00ab, 0x0021, 0xff }, - { 0x0122, 0x0186, 0xff }, - { 0x006a, 0x0187, 0x54 }, - { 0x006b, 0x0188, 0x54 }, - { 0x006c, 0x0189, 0x54 }, - { 0x008a, 0x018a, 0x55 }, - { 0x008b, 0x018b, 0x55 }, - { 0x008c, 0x018c, 0x55 }, - { 0x008d, 0x018d, 0x64 }, - { 0x0090, 0x00cb, 0x5e }, - { 0x0070, 0x018f, 0x63 }, - { 0x0074, 0x018e, 0x62 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x00fe, 0x00cb, 0x53 }, - { 0x0090, 0x00cb, 0x5e }, - { 0x0090, 0x00cb, 0x5e }, - { 0x0091, 0x00cb, 0x5f }, - { 0x0091, 0x00cb, 0x5f }, - { 0x0091, 0x00cb, 0x5f }, - { 0x0091, 0x00cb, 0x5f }, - { 0x0092, 0x00cb, 0x60 }, - { 0x0092, 0x00cb, 0x60 }, - { 0x0092, 0x00cb, 0x60 }, - { 0x0093, 0x00cb, 0x61 }, - { 0x0093, 0x00cb, 0x61 }, - { 0x0093, 0x00cb, 0x61 }, - { 0x0093, 0x00cb, 0x61 }, - { 0x0093, 0x00cb, 0x61 }, - { 0x0051, 0x00cb, 0x68 }, - { 0x0056, 0x00cb, 0x68 }, - { 0x0090, 0x00cb, 0x68 }, - { 0x0091, 0x00cb, 0x68 }, - { 0x0092, 0x00cb, 0x68 }, - { 0x0093, 0x00cb, 0x68 }, - { 0x0094, 0x00cb, 0x68 }, - { 0x0095, 0x00cb, 0x68 }, - { 0x0096, 0x00cb, 0x68 }, - { 0x0097, 0x00cb, 0x68 }, - { 0x0098, 0x00cb, 0x68 }, - { 0x0099, 0x00cb, 0x68 }, - { 0x009c, 0x00cb, 0x68 }, - { 0x009d, 0x00cb, 0x68 }, - { 0x009e, 0x00cb, 0x68 }, - { 0x009f, 0x00cb, 0x68 }, - { 0x00a0, 0x00cb, 0x68 }, - { 0x00a1, 0x00cb, 0x68 }, - { 0x00a2, 0x00cb, 0x68 }, - { 0x00a3, 0x00cb, 0x68 }, - { 0x00a4, 0x00cb, 0x68 }, - { 0x00a5, 0x00cb, 0x68 }, - { 0x00a6, 0x00cb, 0x68 }, - { 0x00a7, 0x00cb, 0x68 }, - { 0x009a, 0x00cb, 0x66 }, - { 0x009a, 0x00cb, 0x66 }, - { 0x009b, 0x00cb, 0x67 }, - { 0x009b, 0x00cb, 0x67 }, - { 0x009b, 0x00cb, 0x67 }, - { 0x009b, 0x00cb, 0x67 }, - { 0x0123, 0x0190, 0xff }, - { 0x0071, 0x0192, 0x63 }, - { 0x0075, 0x0191, 0x62 }, - { 0x0072, 0x0194, 0x63 }, - { 0x0076, 0x0193, 0x62 }, - { 0x0073, 0x0196, 0x63 }, - { 0x0077, 0x0195, 0x62 }, - { 0x008e, 0x0197, 0x64 }, - { 0x008f, 0x0198, 0x64 }, - { 0x00a8, 0x00cb, 0x68 }, - { 0x00a9, 0x00cb, 0x68 }, - { 0x00f3, 0x0199, 0xff } + { BG_TYPE_292, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C6_2, FG_TYPE_0000, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0004, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0005, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_000C, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0009, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_000B, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROOM01, FG_TYPE_ROOM01, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_000E, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_000F, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0010, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0011, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0012, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0013, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0014, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0015, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MY_ROOM_L, FG_TYPE_ROM_PLAYER_ROOM, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0017, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_001B, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_NPC_ROOM01, FG_TYPE_NPC_ROOM01, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_001B, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0069, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R5_B_1, FG_TYPE_GRD_S_R5_B_1, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE }, + { BG_TYPE_ROM_SHOP1, FG_TYPE_ROM_SHOP1, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0027, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C5_R1_1, FG_TYPE_GRD_S_C5_R1_1, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_T_R1_1, FG_TYPE_GRD_S_T_R1_1, mFM_BLOCK_TYPE_TRACKS_RIVER }, + { BG_TYPE_TMP, FG_TYPE_0001, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_TMP2, FG_TYPE_0001, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_TMPR, FG_TYPE_0001, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_TMPR2, FG_TYPE_0001, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C1_R1_1, FG_TYPE_GRD_S_C1_R1_1_29, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_S_1, FG_TYPE_GRD_S_C1_S_1, mFM_BLOCK_TYPE_SLOPE_HORIZONTAL }, + { BG_TYPE_GRD_S_C2_R1_1, FG_TYPE_GRD_S_C2_R1_1, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C2_R2_1, FG_TYPE_GRD_S_C2_R2_1, mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_F_1_2F, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_2, FG_TYPE_GRD_S_F_2, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_C1_1, FG_TYPE_GRD_S_C1_1, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_R2_1, FG_TYPE_GRD_S_C1_R2_1, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_R3_1, FG_TYPE_GRD_S_C1_R3_1, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C2_1, FG_TYPE_GRD_S_C2_1, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C3_1, FG_TYPE_GRD_S_C3_1, mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C3_R1_1, FG_TYPE_GRD_S_C3_R1_1, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C4_1, FG_TYPE_GRD_S_C4_1, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C4_R1_1, FG_TYPE_GRD_S_C4_R1_1, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C4_R2_1, FG_TYPE_GRD_S_C4_R2_1, mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C5_1, FG_TYPE_GRD_S_C5_1, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C5_R2_1, FG_TYPE_GRD_S_C5_R2_1, mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C5_R3_1, FG_TYPE_GRD_S_C5_R3_1, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C6_1, FG_TYPE_GRD_S_C6_1, mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_C6_R1_1, FG_TYPE_GRD_S_C6_R1_1, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_C7_1, FG_TYPE_GRD_S_C7_1, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_R1_1, FG_TYPE_GRD_S_R1_1, mFM_BLOCK_TYPE_RIVER_SOUTH }, + { BG_TYPE_GRD_S_R2_1, FG_TYPE_GRD_S_R2_1, mFM_BLOCK_TYPE_RIVER_EAST }, + { BG_TYPE_GRD_S_R3_1, FG_TYPE_GRD_S_R3_1, mFM_BLOCK_TYPE_RIVER_WEST }, + { BG_TYPE_GRD_S_R4_1, FG_TYPE_GRD_S_R4_1, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST }, + { BG_TYPE_GRD_S_R5_1, FG_TYPE_GRD_S_R5_1, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH }, + { BG_TYPE_GRD_S_R6_1, FG_TYPE_GRD_S_R6_1, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST }, + { BG_TYPE_GRD_S_R7_1, FG_TYPE_GRD_S_R7_1, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH }, + { BG_TYPE_GRD_S_C3_R2_1, FG_TYPE_GRD_S_C3_R2_1, mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C7_R3_1, FG_TYPE_GRD_S_C7_R3_1, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_C6_R3_1, FG_TYPE_GRD_S_C6_R3_1, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_R1_B_1, FG_TYPE_GRD_S_R1_B_1, mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE }, + { BG_TYPE_GRD_S_R2_B_1, FG_TYPE_GRD_S_R2_B_1, mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE }, + { BG_TYPE_GRD_S_R3_B_1, FG_TYPE_GRD_S_R3_B_1, mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE }, + { BG_TYPE_GRD_S_R4_B_1, FG_TYPE_GRD_S_R4_B_1, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE }, + { BG_TYPE_GRD_S_R6_B_1, FG_TYPE_GRD_S_R6_B_1, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE }, + { BG_TYPE_GRD_S_R7_B_1, FG_TYPE_GRD_S_R7_B_1, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE }, + { BG_TYPE_GRD_S_T_1, FG_TYPE_GRD_S_T_1, mFM_BLOCK_TYPE_TRACKS_DUMP }, + { BG_TYPE_GRD_S_C1_S_2, FG_TYPE_GRD_S_C1_S_2, mFM_BLOCK_TYPE_SLOPE_HORIZONTAL }, + { BG_TYPE_GRD_S_C2_S_1, FG_TYPE_GRD_S_C2_S_1, mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C3_S_1, FG_TYPE_GRD_S_C3_S_1, mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C4_S_1, FG_TYPE_GRD_S_C4_S_1, mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C5_S_1, FG_TYPE_GRD_S_C5_S_1, mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C6_S_1, FG_TYPE_GRD_S_C6_S_1, mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_C7_S_1, FG_TYPE_GRD_S_C7_S_1, mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_C7_R1_1, FG_TYPE_GRD_S_C7_R1_1, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_C4_R3_1, FG_TYPE_GRD_S_C4_R3_1, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_YAMISHOP, FG_TYPE_GRD_YAMISHOP, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_POST_OFFICE, FG_TYPE_GRD_POST_OFFICE, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_TRAIN_IN, FG_TYPE_ROM_TRAIN_IN, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_TRAIN_IN, FG_TYPE_ROM_TRAIN_IN_2, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0006, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_ST1_1, FG_TYPE_GRD_S_T_ST1_1, mFM_BLOCK_TYPE_TRACKS_STATION }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_F_1_CD, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C1_2, FG_TYPE_GRD_S_C1_2, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_3, FG_TYPE_GRD_S_C1_3, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_4, FG_TYPE_GRD_S_C1_4, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_5, FG_TYPE_GRD_S_C1_5, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C2_2, FG_TYPE_GRD_S_C2_2, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_R1_2, FG_TYPE_GRD_S_R1_2, mFM_BLOCK_TYPE_RIVER_SOUTH }, + { BG_TYPE_GRD_S_R1_3, FG_TYPE_GRD_S_R1_3, mFM_BLOCK_TYPE_RIVER_SOUTH }, + { BG_TYPE_GRD_S_R4_2, FG_TYPE_GRD_S_R4_2, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST }, + { BG_TYPE_GRD_S_R5_2, FG_TYPE_GRD_S_R5_2, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH }, + { BG_TYPE_GRD_S_R7_2, FG_TYPE_GRD_S_R7_2, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH }, + { BG_TYPE_GRD_S_R7_3, FG_TYPE_GRD_S_R7_3, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH }, + { BG_TYPE_GRD_S_C2_S_2, FG_TYPE_GRD_S_C2_S_2, mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C1_S_3, FG_TYPE_GRD_S_C1_S_3, mFM_BLOCK_TYPE_SLOPE_HORIZONTAL }, + { BG_TYPE_GRD_S_C4_S_2, FG_TYPE_GRD_S_C4_S_2, mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C5_S_2, FG_TYPE_GRD_S_C5_S_2, mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C6_R1_2, FG_TYPE_GRD_S_C6_R1_2, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_C3_R1_2, FG_TYPE_GRD_S_C3_R1_2, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C3_2, FG_TYPE_GRD_S_C3_2, mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C7_3, FG_TYPE_GRD_S_C7_3, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_C1_R2_2, FG_TYPE_GRD_S_C1_R2_2, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_R3_2, FG_TYPE_GRD_S_C1_R3_2, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C4_2, FG_TYPE_GRD_S_C4_2, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C5_2, FG_TYPE_GRD_S_C5_2, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C6_2, FG_TYPE_GRD_S_C6_2, mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_R2_2, FG_TYPE_GRD_S_R2_2, mFM_BLOCK_TYPE_RIVER_EAST }, + { BG_TYPE_GRD_S_R3_2, FG_TYPE_GRD_S_R3_2, mFM_BLOCK_TYPE_RIVER_WEST }, + { BG_TYPE_GRD_S_C4_R1_2, FG_TYPE_GRD_S_C4_R1_2, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C4_R2_2, FG_TYPE_GRD_S_C4_R2_2, mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C7_R1_2, FG_TYPE_GRD_S_C7_R1_2, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_R6_2, FG_TYPE_GRD_S_R6_2, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST }, + { BG_TYPE_GRD_S_C5_R2_2, FG_TYPE_GRD_S_C5_R2_2, mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C4_R3_2, FG_TYPE_GRD_S_C4_R3_2, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_R2_3, FG_TYPE_GRD_S_R2_3, mFM_BLOCK_TYPE_RIVER_EAST }, + { BG_TYPE_GRD_S_R3_3, FG_TYPE_GRD_S_R3_3, mFM_BLOCK_TYPE_RIVER_WEST }, + { BG_TYPE_GRD_S_C5_R3_2, FG_TYPE_GRD_S_C5_R3_2, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C5_3, FG_TYPE_GRD_S_C5_3, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C4_3, FG_TYPE_GRD_S_C4_3, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C3_3, FG_TYPE_GRD_S_C3_3, mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_C2_3, FG_TYPE_GRD_S_C2_3, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_POLICE_INDOOR, FG_TYPE_POLICE_INDOOR, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R1_P_1, FG_TYPE_GRD_S_R1_P_1, mFM_BLOCK_TYPE_POOL_SOUTH }, + { BG_TYPE_GRD_S_C1_R1_2, FG_TYPE_GRD_S_C1_R1_2, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_R1_3, FG_TYPE_GRD_S_C1_R1_3, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_R2_3, FG_TYPE_GRD_S_C1_R2_3, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C1_R3_3, FG_TYPE_GRD_S_C1_R3_3, mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL }, + { BG_TYPE_GRD_S_C2_R1_2, FG_TYPE_GRD_S_C2_R1_2, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C5_R1_2, FG_TYPE_GRD_S_C5_R1_2, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER }, + { BG_TYPE_GRD_S_C6_3, FG_TYPE_GRD_S_C6_3, mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT }, + { BG_TYPE_GRD_S_C7_2, FG_TYPE_GRD_S_C7_2, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_R1_4, FG_TYPE_GRD_S_R1_4, mFM_BLOCK_TYPE_RIVER_SOUTH }, + { BG_TYPE_GRD_S_R2_4, FG_TYPE_GRD_S_R2_4, mFM_BLOCK_TYPE_RIVER_EAST }, + { BG_TYPE_GRD_S_R3_4, FG_TYPE_GRD_S_R3_4, mFM_BLOCK_TYPE_RIVER_WEST }, + { BG_TYPE_GRD_S_R4_3, FG_TYPE_GRD_S_R4_3, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST }, + { BG_TYPE_GRD_S_R5_3, FG_TYPE_GRD_S_R5_3, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH }, + { BG_TYPE_GRD_S_R6_3, FG_TYPE_GRD_S_R6_3, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST }, + { BG_TYPE_GRD_S_T_10, FG_TYPE_GRD_S_T_10_67, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_10, FG_TYPE_GRD_S_T_10_66, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0068, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C2_R2_2, FG_TYPE_GRD_S_C2_R2_2, mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C3_R2_2, FG_TYPE_GRD_S_C3_R2_2, mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT }, + { BG_TYPE_GRD_S_R1_B_2, FG_TYPE_GRD_S_R1_B_2, mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE }, + { BG_TYPE_GRD_S_R2_B_2, FG_TYPE_GRD_S_R2_B_2, mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE }, + { BG_TYPE_GRD_S_R4_B_2, FG_TYPE_GRD_S_R4_B_2, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE }, + { BG_TYPE_GRD_S_R3_B_2, FG_TYPE_GRD_S_R3_B_2, mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE }, + { BG_TYPE_GRD_S_R5_B_2, FG_TYPE_GRD_S_R5_B_2, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE }, + { BG_TYPE_GRD_S_R6_B_2, FG_TYPE_GRD_S_R6_B_2, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE }, + { BG_TYPE_GRD_S_R7_B_2, FG_TYPE_GRD_S_R7_B_2, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE }, + { BG_TYPE_GRD_S_R1_B_3, FG_TYPE_GRD_S_R1_B_3, mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE }, + { BG_TYPE_GRD_S_R2_B_3, FG_TYPE_GRD_S_R2_B_3, mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE }, + { BG_TYPE_GRD_S_R3_B_3, FG_TYPE_GRD_S_R3_B_3, mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE }, + { BG_TYPE_GRD_S_F_3, FG_TYPE_GRD_S_F_3, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_4, FG_TYPE_GRD_S_F_4, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_5, FG_TYPE_GRD_S_F_5, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_6, FG_TYPE_GRD_S_F_6, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_7, FG_TYPE_GRD_S_F_7, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_8, FG_TYPE_GRD_S_F_8, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_9, FG_TYPE_GRD_S_F_9, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_F_10, FG_TYPE_GRD_S_F_10, mFM_BLOCK_TYPE_FLAT }, + { BG_TYPE_GRD_S_T_2, FG_TYPE_GRD_S_T_2, mFM_BLOCK_TYPE_TRACKS_DUMP }, + { BG_TYPE_GRD_S_T_3, FG_TYPE_GRD_S_T_3, mFM_BLOCK_TYPE_TRACKS_DUMP }, + { BG_TYPE_GRD_S_T_4, FG_TYPE_GRD_S_T_4, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_5, FG_TYPE_GRD_S_T_5, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_6, FG_TYPE_GRD_S_T_6, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_7, FG_TYPE_GRD_S_T_7, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_8, FG_TYPE_GRD_S_T_8, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_9, FG_TYPE_GRD_S_T_9, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_10, FG_TYPE_GRD_S_T_10, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_T_R1_2, FG_TYPE_GRD_S_T_R1_2, mFM_BLOCK_TYPE_TRACKS_RIVER }, + { BG_TYPE_GRD_S_T_R1_3, FG_TYPE_GRD_S_T_R1_3, mFM_BLOCK_TYPE_TRACKS_RIVER }, + { BG_TYPE_GRD_S_T_R1_4, FG_TYPE_GRD_S_T_R1_4, mFM_BLOCK_TYPE_TRACKS_RIVER }, + { BG_TYPE_GRD_S_T_R1_5, FG_TYPE_GRD_S_T_R1_5, mFM_BLOCK_TYPE_TRACKS_RIVER }, + { BG_TYPE_GRD_S_R2_P_1, FG_TYPE_GRD_S_R2_P_1, mFM_BLOCK_TYPE_POOL_EAST }, + { BG_TYPE_GRD_S_R3_P_1, FG_TYPE_GRD_S_R3_P_1, mFM_BLOCK_TYPE_POOL_WEST }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_006A, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0061, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0062, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_M_3, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_M_4, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R1_1, FG_TYPE_0065, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R6_P_1, FG_TYPE_GRD_S_R6_P_1, mFM_BLOCK_TYPE_POOL_SOUTH_WEST }, + { BG_TYPE_GRD_S_R7_P_1, FG_TYPE_GRD_S_R7_P_1, mFM_BLOCK_TYPE_POOL_WEST_SOUTH }, + { BG_TYPE_GRD_S_T_ST1_2, FG_TYPE_GRD_S_T_ST1_2, mFM_BLOCK_TYPE_TRACKS_STATION }, + { BG_TYPE_GRD_S_T_ST1_3, FG_TYPE_GRD_S_T_ST1_3, mFM_BLOCK_TYPE_TRACKS_STATION }, + { BG_TYPE_GRD_S_R4_P_1, FG_TYPE_GRD_S_R4_P_1, mFM_BLOCK_TYPE_POOL_SOUTH_EAST }, + { BG_TYPE_GRD_S_R5_P_1, FG_TYPE_GRD_S_R5_P_1, mFM_BLOCK_TYPE_POOL_EAST_SOUTH }, + { BG_TYPE_ROM_URANAI, FG_TYPE_ROM_URANAI, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_PLAYER_SELECT, FG_TYPE_GRD_PLAYER_SELECT, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MY_ROOM_S, FG_TYPE_ROM_PLAYER_ROOM, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MY_ROOM_M, FG_TYPE_ROM_PLAYER_ROOM, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_9_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_TRACKS6 }, + { BG_TYPE_GRD_S_R1_3_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_TRACKS7 }, + { BG_TYPE_GRD_S_C1_3_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_TRACKS8 }, + { BG_TYPE_GRD_S_F_9_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_TRACKS9 }, + { BG_TYPE_GRD_S_C1_S_4, FG_TYPE_GRD_S_C1_S_4, mFM_BLOCK_TYPE_SLOPE_HORIZONTAL }, + { BG_TYPE_GRD_S_E1_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP }, + { BG_TYPE_GRD_S_E1_R1_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER }, + { BG_TYPE_GRD_S_E2_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT }, + { BG_TYPE_GRD_S_E2_C1_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION }, + { BG_TYPE_GRD_S_E2_T_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL }, + { BG_TYPE_GRD_S_E3_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT }, + { BG_TYPE_GRD_S_E3_C1_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION }, + { BG_TYPE_GRD_S_E3_T_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL }, + { BG_TYPE_GRD_S_E4_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT }, + { BG_TYPE_GRD_S_E5_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT }, + { BG_TYPE_GRD_S_F_KO_1, FG_TYPE_0068, mFM_BLOCK_TYPE_POLICE_BOX }, + { BG_TYPE_GRD_S_F_KO_2, FG_TYPE_GRD_S_F_KO_2, mFM_BLOCK_TYPE_POLICE_BOX }, + { BG_TYPE_GRD_S_F_KO_3, FG_TYPE_GRD_S_F_KO_3, mFM_BLOCK_TYPE_POLICE_BOX }, + { BG_TYPE_GRD_S_F_MH_1, FG_TYPE_0069, mFM_BLOCK_TYPE_PLAYER_HOUSE }, + { BG_TYPE_GRD_S_F_MH_2, FG_TYPE_GRD_S_F_MH_2, mFM_BLOCK_TYPE_PLAYER_HOUSE }, + { BG_TYPE_GRD_S_F_MH_3, FG_TYPE_GRD_S_F_MH_3, mFM_BLOCK_TYPE_PLAYER_HOUSE }, + { BG_TYPE_GRD_S_F_PK_1, FG_TYPE_006A, mFM_BLOCK_TYPE_SHRINE }, + { BG_TYPE_GRD_S_F_PK_2, FG_TYPE_GRD_S_F_PK_2, mFM_BLOCK_TYPE_SHRINE }, + { BG_TYPE_GRD_S_F_PK_3, FG_TYPE_GRD_S_F_PK_3, mFM_BLOCK_TYPE_SHRINE }, + { BG_TYPE_GRD_S_T_PO_1, FG_TYPE_GRD_S_T_PO_1, mFM_BLOCK_TYPE_TRACKS_POST_OFFICE }, + { BG_TYPE_GRD_S_T_SH_1, FG_TYPE_GRD_S_T_SH_1, mFM_BLOCK_TYPE_TRACKS_SHOP }, + { BG_TYPE_GRD_S_T_SH_2, FG_TYPE_GRD_S_T_SH_2, mFM_BLOCK_TYPE_TRACKS_SHOP }, + { BG_TYPE_GRD_S_T_SH_3, FG_TYPE_GRD_S_T_SH_3, mFM_BLOCK_TYPE_TRACKS_SHOP }, + { BG_TYPE_GRD_S_T_PO_2, FG_TYPE_GRD_S_T_PO_2, mFM_BLOCK_TYPE_TRACKS_POST_OFFICE }, + { BG_TYPE_GRD_S_T_PO_3, FG_TYPE_GRD_S_T_PO_3, mFM_BLOCK_TYPE_TRACKS_POST_OFFICE }, + { BG_TYPE_GRD_S_F_4, FG_TYPE_0002, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_ROM_SHOP2, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_SHOP4_1, FG_TYPE_ROM_SHOP4_1, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_SHOP4_2, FG_TYPE_ROM_SHOP4_2, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_SHOP3, FG_TYPE_ROM_SHOP3, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_HOLE_TEST, FG_TYPE_GRD_S_HOLE_TEST, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_M_1, FG_TYPE_0061, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_2, FG_TYPE_0062, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_1, FG_TYPE_0061, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_M_2, FG_TYPE_0062, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_M_R1_1, FG_TYPE_0065, mFM_BLOCK_TYPE_BEACH_RIVER }, + { BG_TYPE_GRD_S_E2_M_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT }, + { BG_TYPE_GRD_S_E3_M_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT }, + { BG_TYPE_249, FG_TYPE_0151, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_M_R1_2, FG_TYPE_GRD_S_M_R1_2, mFM_BLOCK_TYPE_BEACH_RIVER }, + { BG_TYPE_GRD_S_M_R1_3, FG_TYPE_GRD_S_M_R1_3, mFM_BLOCK_TYPE_BEACH_RIVER }, + { BG_TYPE_GRD_S_M_R1_4, FG_TYPE_GRD_S_M_R1_4, mFM_BLOCK_TYPE_BEACH_RIVER }, + { BG_TYPE_GRD_S_M_R1_5, FG_TYPE_GRD_S_M_R1_5, mFM_BLOCK_TYPE_BEACH_RIVER }, + { BG_TYPE_GRD_S_M_R1_B_1, FG_TYPE_GRD_S_M_R1_B_1, mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE }, + { BG_TYPE_GRD_S_M_R1_B_2, FG_TYPE_GRD_S_M_R1_B_2, mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE }, + { BG_TYPE_GRD_S_M_R1_B_3, FG_TYPE_GRD_S_M_R1_B_3, mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_GRD_S_M_3, FG_TYPE_GRD_S_M_3, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_4, FG_TYPE_GRD_S_M_4, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_5, FG_TYPE_GRD_S_M_5, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_6, FG_TYPE_GRD_S_M_6, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_7, FG_TYPE_GRD_S_M_7, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_8, FG_TYPE_GRD_S_M_8, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_9, FG_TYPE_GRD_S_M_9, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_M_10, FG_TYPE_GRD_S_M_10, mFM_BLOCK_TYPE_BEACH }, + { BG_TYPE_GRD_S_C2_S_3, FG_TYPE_GRD_S_C2_S_3, mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER }, + { BG_TYPE_GRD_S_C7_R3_2, FG_TYPE_GRD_S_C7_R3_2, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_C7_S_2, FG_TYPE_GRD_S_C7_S_2, mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_C7_S_3, FG_TYPE_GRD_S_C7_S_3, mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER }, + { BG_TYPE_GRD_S_R1_P_1, FG_TYPE_0007, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C7_S_3, FG_TYPE_0011, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_F_1_174, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C2_1, FG_TYPE_GRD_S_C2_1_175, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C5_1, FG_TYPE_GRD_S_C5_1_176, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_M_R1_B_2, FG_TYPE_GRD_S_M_R1_B_2_177, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R6_1, FG_TYPE_GRD_S_R6_1_178, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R3_1, FG_TYPE_GRD_S_R3_1_179, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C1_S_1, FG_TYPE_GRD_S_C1_S_1_17A, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_M_3, FG_TYPE_GRD_S_M_3_17B, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R1_B_1, FG_TYPE_GRD_S_R1_B_1_17C, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C5_1, FG_TYPE_GRD_S_C5_1_17D, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C7_1, FG_TYPE_GRD_S_C7_1_17E, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_0008, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MUSEUM1, FG_TYPE_ROM_MUSEUM1, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MUSEUM3, FG_TYPE_ROM_MUSEUM3, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MUSEUM2, FG_TYPE_ROM_MUSEUM2, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MUSEUM4, FG_TYPE_ROM_MUSEUM4, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_MUSEUM5, FG_TYPE_ROM_MUSEUM5, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_F_1_184, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_1, FG_TYPE_GRD_S_F_1_185, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_C1_R1_1, FG_TYPE_0020, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_R1_2, FG_TYPE_0021, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_ROM_TAILOR, FG_TYPE_ROM_TAILOR, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_F_MU_1, FG_TYPE_GRD_S_F_MU_1, mFM_BLOCK_TYPE_MUSEUM }, + { BG_TYPE_GRD_S_F_MU_2, FG_TYPE_GRD_S_F_MU_2, mFM_BLOCK_TYPE_MUSEUM }, + { BG_TYPE_GRD_S_F_MU_3, FG_TYPE_GRD_S_F_MU_3, mFM_BLOCK_TYPE_MUSEUM }, + { BG_TYPE_GRD_S_M_TA_1, FG_TYPE_GRD_S_M_TA_1, mFM_BLOCK_TYPE_NEEDLEWORK }, + { BG_TYPE_GRD_S_M_TA_2, FG_TYPE_GRD_S_M_TA_2, mFM_BLOCK_TYPE_NEEDLEWORK }, + { BG_TYPE_GRD_S_M_TA_3, FG_TYPE_GRD_S_M_TA_3, mFM_BLOCK_TYPE_NEEDLEWORK }, + { BG_TYPE_GRD_S_M_WF_1, FG_TYPE_GRD_S_M_WF_1, mFM_BLOCK_TYPE_PORT }, + { BG_TYPE_GRD_S_O_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_2 }, + { BG_TYPE_GRD_S_IR_1, FG_TYPE_GRD_S_IR_1, mFM_BLOCK_TYPE_ISLAND_RIGHT }, + { BG_TYPE_GRD_S_IL_1, FG_TYPE_GRD_S_IL_1, mFM_BLOCK_TYPE_ISLAND_LEFT }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_ROM_SHOP2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN }, + { BG_TYPE_GRD_S_O_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_2 }, + { BG_TYPE_GRD_S_O_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_2 }, + { BG_TYPE_GRD_S_O_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_3 }, + { BG_TYPE_GRD_S_O_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_3 }, + { BG_TYPE_GRD_S_O_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_3 }, + { BG_TYPE_GRD_S_O_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_3 }, + { BG_TYPE_GRD_S_O_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_4 }, + { BG_TYPE_GRD_S_O_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_4 }, + { BG_TYPE_GRD_S_O_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_4 }, + { BG_TYPE_GRD_S_O_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_5 }, + { BG_TYPE_GRD_S_O_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_5 }, + { BG_TYPE_GRD_S_O_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_5 }, + { BG_TYPE_GRD_S_O_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_5 }, + { BG_TYPE_GRD_S_O_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_5 }, + { BG_TYPE_GRD_S_E2_O_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_E3_O_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_5, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_6, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_7, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_8, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_9, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_10, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_4, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_5, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_B_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_B_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_R1_B_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_TA_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_TA_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_TA_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_WF_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_I_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_6 }, + { BG_TYPE_GRD_S_O_I_1, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_6 }, + { BG_TYPE_GRD_S_O_I_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_7 }, + { BG_TYPE_GRD_S_O_I_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_7 }, + { BG_TYPE_GRD_S_O_I_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_7 }, + { BG_TYPE_GRD_S_O_I_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_7 }, + { BG_TYPE_ROM_TOUDAI, FG_TYPE_ROM_TOUDAI, mFM_BLOCK_TYPE_NONE }, + { BG_TYPE_GRD_S_IR_2, FG_TYPE_GRD_S_IR_2, mFM_BLOCK_TYPE_ISLAND_RIGHT }, + { BG_TYPE_GRD_S_IL_2, FG_TYPE_GRD_S_IL_2, mFM_BLOCK_TYPE_ISLAND_LEFT }, + { BG_TYPE_GRD_S_IR_3, FG_TYPE_GRD_S_IR_3, mFM_BLOCK_TYPE_ISLAND_RIGHT }, + { BG_TYPE_GRD_S_IL_3, FG_TYPE_GRD_S_IL_3, mFM_BLOCK_TYPE_ISLAND_LEFT }, + { BG_TYPE_GRD_S_IR_4, FG_TYPE_GRD_S_IR_4, mFM_BLOCK_TYPE_ISLAND_RIGHT }, + { BG_TYPE_GRD_S_IL_4, FG_TYPE_GRD_S_IL_4, mFM_BLOCK_TYPE_ISLAND_LEFT }, + { BG_TYPE_GRD_S_M_WF_2, FG_TYPE_GRD_S_M_WF_2, mFM_BLOCK_TYPE_PORT }, + { BG_TYPE_GRD_S_M_WF_3, FG_TYPE_GRD_S_M_WF_3, mFM_BLOCK_TYPE_PORT }, + { BG_TYPE_GRD_S_O_WF_2, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_GRD_S_O_WF_3, FG_TYPE_EMPTY, mFM_BLOCK_TYPE_OCEAN_8 }, + { BG_TYPE_ROM_TENT, FG_TYPE_ROM_TENT, mFM_BLOCK_TYPE_NONE }, }; int data_combi_table_number = ARRAY_COUNT(data_combi_table); diff --git a/src/data/field/bg/acre/bg_data.c b/src/data/field/bg/acre/bg_data.c index a9fb6ecc..bcce4f23 100644 --- a/src/data/field/bg/acre/bg_data.c +++ b/src/data/field/bg/acre/bg_data.c @@ -733,7 +733,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_259, + BG_TYPE_ROM_MY_ROOM_S, NULL, NULL, NULL, @@ -770,7 +770,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_260, + BG_TYPE_ROM_MY_ROOM_M, NULL, NULL, NULL, @@ -807,7 +807,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_242, + BG_TYPE_ROM_MY_ROOM_L, NULL, NULL, NULL, @@ -881,7 +881,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_246, + BG_TYPE_NPC_ROOM01, NULL, NULL, NULL, @@ -918,7 +918,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_248, + BG_TYPE_ROM_SHOP1, NULL, NULL, NULL, @@ -8022,7 +8022,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_254, + BG_TYPE_ROM_SHOP2, NULL, NULL, NULL, @@ -8059,7 +8059,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_258, + BG_TYPE_ROM_SHOP3, NULL, NULL, NULL, @@ -8133,7 +8133,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_257, + BG_TYPE_ROM_SHOP4_2, NULL, NULL, NULL, @@ -8429,7 +8429,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_250, + BG_TYPE_ROM_SHOP1_FUKU, NULL, NULL, NULL, @@ -8466,7 +8466,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_251, + BG_TYPE_ROM_SHOP2_FUKU, NULL, NULL, NULL, @@ -8503,7 +8503,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_252, + BG_TYPE_ROM_SHOP3_FUKU, NULL, NULL, NULL, @@ -9465,7 +9465,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_282, + BG_TYPE_ROM_MUSEUM4, NULL, NULL, NULL, @@ -9502,7 +9502,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_283, + BG_TYPE_ROM_MY_ROOM_LL1, NULL, NULL, NULL, @@ -9539,7 +9539,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_284, + BG_TYPE_ROM_MY_ROOM_LL2, NULL, NULL, NULL, @@ -9613,7 +9613,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_286, + BG_TYPE_ROM_MY_ROOM_M_BASEMENT, NULL, NULL, NULL, @@ -9650,7 +9650,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_287, + BG_TYPE_ROM_MY_ROOM_L_BASEMENT, NULL, NULL, NULL, @@ -9687,7 +9687,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_288, + BG_TYPE_ROM_MY_ROOM_LL1_BASEMENT, NULL, NULL, NULL, @@ -9724,7 +9724,7 @@ extern mFM_bg_data_c data_bgd[] = { }, }, { - BG_TYPE_289, + BG_TYPE_ROM_MY_ROOM_BASEMENT, NULL, NULL, NULL, diff --git a/src/data/field/field_data.c b/src/data/field/field_data.c index 36daaee5..521f2311 100644 --- a/src/data/field/field_data.c +++ b/src/data/field/field_data.c @@ -41,570 +41,752 @@ extern mFM_move_actor_data_c title_demo_actable[]; extern mFM_move_actor_data_c water_test_actable[]; mFM_field_data_c data_fdd[SCENE_NUM] = { - { mFI_FIELD_FG, - 4, 2, - { - { 0x0001, 0 }, { 0x0056, 0 }, { 0x00E7, 0 }, { 0x000B, 0 }, - { 0x00F1, 0 }, { 0x00F1, 0 }, { 0x00F5, 0 }, { 0x00F6, 0 }, - }, - fd0_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 5, 6, - { - { 0x0002, 0 }, { 0x0002, 0 }, { 0x0002, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, - { 0x0003, 0 }, { 0x0040, 0 }, { 0x0003, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, - { 0x0004, 0 }, { 0x0004, 0 }, { 0x0004, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, - { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, - { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, - { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, { 0x0000, 0 }, - }, - fd1_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 5, 6, - { - { 0x0054, 0 }, { 0x011C, 0 }, { 0x011D, 0 }, { 0x0006, 0 }, { 0x0006, 0 }, - { 0x0007, 0 }, { 0x000C, 0 }, { 0x0005, 0 }, { 0x0109, 0 }, { 0x0006, 1 }, - { 0x0006, 0 }, { 0x0017, 0 }, { 0x0108, 0 }, { 0x000D, 0 }, { 0x0006, 0 }, - { 0x0054, 0 }, { 0x00F3, 0 }, { 0x0005, 0 }, { 0x0005, 0 }, { 0x0006, 0 }, - { 0x0115, 0 }, { 0x0005, 0 }, { 0x0005, 0 }, { 0x0005, 0 }, { 0x0006, 0 }, - { 0x0006, 0 }, { 0x0006, 0 }, { 0x0006, 0 }, { 0x0006, 0 }, { 0x0006, 0 }, - }, - fd2_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 4, 3, - { - { 0x015E, 0 }, { 0x015E, 0 }, { 0x015E, 0 }, { 0x015E, 0 }, - { 0x015E, 0 }, { 0x0129, 0 }, { 0x0128, 0 }, { 0x015E, 0 }, - { 0x015E, 0 }, { 0x015E, 0 }, { 0x015E, 0 }, { 0x015E, 0 }, - }, - water_test_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 1, 1, - { - { 0x0009, 0 }, - }, - NULL, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 5, 6, - { - { 0x0025, 0 }, { 0x0025, 0 }, { 0x0025, 1 }, { 0x0025, 1 }, { 0x0025, 1 }, - { 0x0025, 0 }, { 0x0025, 0 }, { 0x0028, 0 }, { 0x0031, 0 }, { 0x0025, 1 }, - { 0x0025, 0 }, { 0x0025, 0 }, { 0x0025, 0 }, { 0x0033, 0 }, { 0x0025, 1 }, - { 0x0025, 1 }, { 0x0067, 0 }, { 0x0025, 0 }, { 0x0066, 0 }, { 0x0025, 1 }, - { 0x0025, 1 }, { 0x002C, 0 }, { 0x0025, 0 }, { 0x0034, 0 }, { 0x0025, 1 }, - { 0x0025, 1 }, { 0x0067, 0 }, { 0x0025, 0 }, { 0x0066, 0 }, { 0x0025, 1 }, - }, - fd4_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_NPCROOM0, - 1, 1, - { - { 0x0015, 0 }, - }, - npcRoom001_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 7, 10, - { - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0017, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - }, - fd_npc_land_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 2, 2, - { - { 0x0002, 0 }, { 0x0002, 0 }, - { 0x0002, 0 }, { 0x0002, 0 }, - }, - fgout_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_SHOP0, - 1, 1, - { - { 0x0019, 0 }, - }, - shop01_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 1, 1, - { - { 0x001D, 0 }, - }, - NULL, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 1, 1, - { - { 0x001F, 0 }, - }, - NULL, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_BROKER_SHOP, - 1, 1, - { - { 0x0050, 0 }, - }, - broker_shop_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_NPCROOM_FIELD_TOOL_INSIDE, - 1, 1, - { - { 0x0015, 0 }, - }, - npcRoom001_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_POST_OFFICE, - 1, 1, - { - { 0x0051, 0 }, - }, - post_office_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_STARTDEMO, - 1, 1, - { - { 0x0052, 0 }, - }, - start_demo1_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_STARTDEMO2, - 1, 1, - { - { 0x0053, 0 }, - }, - start_demo2_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_POLICE_BOX, - 1, 1, - { - { 0x007E, 0 }, - }, - police_box_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_BUGGY, - 1, 1, - { - { 0x00C0, 0 }, - }, - buggy_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_PLAYERSELECT, - 1, 1, - { - { 0x00C1, 0 }, - }, - player_select_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C2, 0 }, - }, - playerRMS_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C3, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x0012, 0 }, - }, - playerRM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_SHOP1, - 1, 1, - { - { 0x00E3, 0 }, - }, - shop02_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_SHOP2, - 1, 1, - { - { 0x00E6, 0 }, - }, - shop03_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_SHOP3_1, - 1, 1, - { - { 0x00E4, 0 }, - }, - shop04_1_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 3, 3, - { - { 0x00E2, 0 }, { 0x00E2, 0 }, { 0x00E2, 0 }, - { 0x00E2, 0 }, { 0x00E2, 0 }, { 0x00E2, 0 }, - { 0x00E2, 0 }, { 0x00E2, 0 }, { 0x00E2, 0 }, - }, - NULL, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_PLAYERSELECT, - 1, 1, - { - { 0x00C1, 0 }, - }, - player_select2_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_PLAYERSELECT, - 1, 1, - { - { 0x00C1, 0 }, - }, - player_select3_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_SHOP3_2, - 1, 1, - { - { 0x00E5, 0 }, - }, - shop04_2_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 3, 3, - { - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - { 0x0016, 0 }, { 0x0016, 0 }, { 0x0016, 0 }, - }, - event_notification_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_KAMAKURA, - 1, 1, - { - { 0x00EF, 0 }, - }, - kamakura_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 7, 8, - { - { 0x00D1, 1 }, { 0x00C9, 1 }, { 0x00C9, 1 }, { 0x00C9, 1 }, { 0x00C9, 1 }, { 0x00CA, 1 }, { 0x00D2, 1 }, - { 0x00CD, 1 }, { 0x00DC, 1 }, { 0x00A8, 1 }, { 0x0055, 1 }, { 0x00DD, 1 }, { 0x001C, 1 }, { 0x00D0, 1 }, - { 0x00CB, 1 }, { 0x0025, 1 }, { 0x0026, 1 }, { 0x00D6, 1 }, { 0x009D, 1 }, { 0x0040, 1 }, { 0x00CE, 1 }, - { 0x00CB, 1 }, { 0x004A, 0 }, { 0x0030, 0 }, { 0x003C, 1 }, { 0x0038, 1 }, { 0x003B, 1 }, { 0x00CE, 1 }, - { 0x00CC, 0 }, { 0x002A, 0 }, { 0x0035, 0 }, { 0x0021, 0 }, { 0x0022, 0 }, { 0x0030, 0 }, { 0x00CE, 1 }, - { 0x00CB, 0 }, { 0x00D9, 0 }, { 0x00BB, 0 }, { 0x003B, 0 }, { 0x00D3, 0 }, { 0x0035, 0 }, { 0x00CF, 0 }, - { 0x00ED, 0 }, { 0x00E8, 0 }, { 0x00F5, 0 }, { 0x00E9, 0 }, { 0x00FC, 0 }, { 0x00FD, 0 }, { 0x00EE, 0 }, - { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, - }, - title_demo_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_FG, - 7, 8, - { - { 0x00D1, 1 }, { 0x00C9, 1 }, { 0x00C9, 1 }, { 0x00C9, 1 }, { 0x00C9, 1 }, { 0x00CA, 1 }, { 0x00D2, 1 }, - { 0x00CD, 1 }, { 0x00DC, 1 }, { 0x00A8, 1 }, { 0x0055, 1 }, { 0x00DD, 1 }, { 0x001C, 1 }, { 0x00D0, 1 }, - { 0x00CB, 1 }, { 0x0025, 1 }, { 0x0026, 1 }, { 0x00D6, 1 }, { 0x009D, 1 }, { 0x0040, 1 }, { 0x00CE, 1 }, - { 0x00CB, 1 }, { 0x004A, 0 }, { 0x0030, 0 }, { 0x003C, 1 }, { 0x0038, 1 }, { 0x003B, 1 }, { 0x00CE, 1 }, - { 0x00CC, 0 }, { 0x002A, 0 }, { 0x0035, 0 }, { 0x0021, 0 }, { 0x0022, 0 }, { 0x0030, 0 }, { 0x00CE, 1 }, - { 0x00CB, 0 }, { 0x00D9, 0 }, { 0x00BB, 0 }, { 0x003B, 0 }, { 0x00D3, 0 }, { 0x0035, 0 }, { 0x00CF, 0 }, - { 0x00ED, 0 }, { 0x00E8, 0 }, { 0x00F5, 0 }, { 0x00E9, 0 }, { 0x00FC, 0 }, { 0x00FD, 0 }, { 0x00EE, 0 }, - { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, { 0x00C9, 0 }, - }, - title_demo_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_PLAYERSELECT, - 1, 1, - { - { 0x00C1, 0 }, - }, - player_select4_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_MUSEUM_ENTRANCE, - 1, 1, - { - { 0x0116, 0 }, - }, - museum_entrance_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_MUSEUM_PAINTING, - 1, 1, - { - { 0x0117, 0 }, - }, - museum_picture_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_MUSEUM_FOSSIL, - 1, 1, - { - { 0x0118, 0 }, - }, - museum_fossil_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_MUSEUM_INSECT, - 1, 1, - { - { 0x0119, 0 }, - }, - museum_insect_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_MUSEUM_FISH, - 1, 1, - { - { 0x011A, 0 }, - }, - museum_fish_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x0012, 0 }, - }, - playerRM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C3, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C3, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C3, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C3, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x00C3, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_NEEDLEWORK, - 1, 1, - { - { 0x011F, 0 }, - }, - needlework_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_PLAYER0_ROOM, - 1, 1, - { - { 0x0012, 0 }, - }, - playerRMM_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_NPCROOM0, - 1, 1, - { - { 0x0015, 0 }, - }, - npcRoom001_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_DEMO_STARTDEMO3, - 1, 1, - { - { 0x0052, 0 }, - }, - start_demo3_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_LIGHTHOUSE, - 1, 1, - { - { 0x0164, 0 }, - }, - npcRoom001_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, - { mFI_FIELD_ROOM_TENT, - 1, 1, - { - { 0x016F, 0 }, - }, - tent_actable, - 0x00000000, - 0x00000000, - 0x00000000, - 0x00000000 }, + { + mFI_FIELD_FG, + 4, + 2, + { + { BLOCK_COMBI_GRD_1, 0 }, + { BLOCK_COMBI_GRD_S_F_1_86, 0 }, + { BLOCK_COMBI_GRD_S_HOLE_TEST, 0 }, + { BLOCK_COMBI_GRD_11, 0 }, + { BLOCK_COMBI_GRD_S_M_R1_3, 0 }, + { BLOCK_COMBI_GRD_S_M_R1_3, 0 }, + { BLOCK_COMBI_GRD_S_M_R1_B_2, 0 }, + { BLOCK_COMBI_GRD_S_M_R1_B_3, 0 }, + }, + fd0_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 5, + 6, + { + { BLOCK_COMBI_GRD_2, 0 }, { BLOCK_COMBI_GRD_2, 0 }, { BLOCK_COMBI_GRD_2, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_3, 0 }, + { BLOCK_COMBI_GRD_S_R1_B_1, 0 }, { BLOCK_COMBI_GRD_3, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_4, 0 }, { BLOCK_COMBI_GRD_4, 0 }, + { BLOCK_COMBI_GRD_4, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, + { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, + { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, { BLOCK_COMBI_GRD_0, 0 }, + }, + fd1_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 5, + 6, + { + { BLOCK_COMBI_GRD_S_F_1_84, 0 }, { BLOCK_COMBI_GRD_S_F_1_284, 0 }, { BLOCK_COMBI_GRD_S_C1_R1_1_285, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_7, 0 }, + { BLOCK_COMBI_GRD_12, 0 }, { BLOCK_COMBI_GRD_5, 0 }, { BLOCK_COMBI_GRD_S_C7_S_3_265, 0 }, { BLOCK_COMBI_GRD_6, 1 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_23, 0 }, + { BLOCK_COMBI_GRD_S_R1_P_1_264, 0 }, { BLOCK_COMBI_GRD_13, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_S_F_1_84, 0 }, { BLOCK_COMBI_GRD_S_M_R1_5, 0 }, { BLOCK_COMBI_GRD_5, 0 }, + { BLOCK_COMBI_GRD_5, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_S_F_1_277, 0 }, { BLOCK_COMBI_GRD_5, 0 }, { BLOCK_COMBI_GRD_5, 0 }, { BLOCK_COMBI_GRD_5, 0 }, + { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_6, 0 }, { BLOCK_COMBI_GRD_6, 0 }, + }, + fd2_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 4, + 3, + { + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_IL_1, 0 }, + { BLOCK_COMBI_GRD_S_IR_1, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + { BLOCK_COMBI_GRD_S_O_I_1_350, 0 }, + }, + water_test_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 1, + 1, + { + { BLOCK_COMBI_GRD_9, 0 }, + }, + NULL, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 5, + 6, + { + { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, + { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_C1_R2_1, 0 }, { BLOCK_COMBI_GRD_S_C5_R2_1, 0 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, + { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_C6_1, 0 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_C3_R1_2, 0 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, + { BLOCK_COMBI_GRD_S_C6_R1_2, 0 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_C3_R1_1, 0 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_C6_R1_1, 0 }, + { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_C3_R1_2, 0 }, { BLOCK_COMBI_GRD_S_F_1, 0 }, { BLOCK_COMBI_GRD_S_C6_R1_2, 0 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, + }, + fd4_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_NPCROOM0, + 1, + 1, + { + { BLOCK_COMBI_ROM_NPC_ROOM01, 0 }, + }, + npcRoom001_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 7, + 10, + { + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_23, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, { BLOCK_COMBI_GRD_22, 0 }, + }, + fd_npc_land_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 2, + 2, + { + { BLOCK_COMBI_GRD_2, 0 }, + { BLOCK_COMBI_GRD_2, 0 }, + { BLOCK_COMBI_GRD_2, 0 }, + { BLOCK_COMBI_GRD_2, 0 }, + }, + fgout_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_SHOP0, + 1, + 1, + { + { BLOCK_COMBI_ROM_SHOP1, 0 }, + }, + shop01_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 1, + 1, + { + { BLOCK_COMBI_TMP, 0 }, + }, + NULL, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 1, + 1, + { + { BLOCK_COMBI_TMPR, 0 }, + }, + NULL, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_BROKER_SHOP, + 1, + 1, + { + { BLOCK_COMBI_GRD_YAMISHOP, 0 }, + }, + broker_shop_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_NPCROOM_FIELD_TOOL_INSIDE, + 1, + 1, + { + { BLOCK_COMBI_ROM_NPC_ROOM01, 0 }, + }, + npcRoom001_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_POST_OFFICE, + 1, + 1, + { + { BLOCK_COMBI_GRD_POST_OFFICE, 0 }, + }, + post_office_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_STARTDEMO, + 1, + 1, + { + { BLOCK_COMBI_ROM_TRAIN_IN, 0 }, + }, + start_demo1_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_STARTDEMO2, + 1, + 1, + { + { BLOCK_COMBI_ROM_TRAIN_IN2, 0 }, + }, + start_demo2_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_POLICE_BOX, + 1, + 1, + { + { BLOCK_COMBI_POLICE_INDOOR, 0 }, + }, + police_box_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_BUGGY, + 1, + 1, + { + { BLOCK_COMBI_ROM_URANAI, 0 }, + }, + buggy_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_PLAYERSELECT, + 1, + 1, + { + { BLOCK_COMBI_GRD_PLAYER_SELECT, 0 }, + }, + player_select_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_S, 0 }, + }, + playerRMS_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_M, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_L, 0 }, + }, + playerRM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_SHOP1, + 1, + 1, + { + { BLOCK_COMBI_ROM_SHOP2, 0 }, + }, + shop02_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_SHOP2, + 1, + 1, + { + { BLOCK_COMBI_ROM_SHOP3, 0 }, + }, + shop03_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_SHOP3_1, + 1, + 1, + { + { BLOCK_COMBI_ROM_SHOP4_1, 0 }, + }, + shop04_1_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 3, + 3, + { + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + { BLOCK_COMBI_GRD_226, 0 }, + }, + NULL, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_PLAYERSELECT, + 1, + 1, + { + { BLOCK_COMBI_GRD_PLAYER_SELECT, 0 }, + }, + player_select2_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_PLAYERSELECT, + 1, + 1, + { + { BLOCK_COMBI_GRD_PLAYER_SELECT, 0 }, + }, + player_select3_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_SHOP3_2, + 1, + 1, + { + { BLOCK_COMBI_ROM_SHOP4_2, 0 }, + }, + shop04_2_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 3, + 3, + { + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + { BLOCK_COMBI_GRD_22, 0 }, + }, + event_notification_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_KAMAKURA, + 1, + 1, + { + { BLOCK_COMBI_ROM_KAMAKURA, 0 }, + }, + kamakura_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 7, + 8, + { + { BLOCK_COMBI_GRD_S_E4_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_R1_1, 1 }, { BLOCK_COMBI_GRD_S_E5_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_T_1, 1 }, { BLOCK_COMBI_GRD_S_T_PO_1, 1 }, { BLOCK_COMBI_GRD_S_T_5, 1 }, { BLOCK_COMBI_GRD_S_T_ST1_1, 1 }, { BLOCK_COMBI_GRD_S_T_SH_1, 1 }, { BLOCK_COMBI_GRD_S_T_R1_1, 1 }, { BLOCK_COMBI_GRD_S_E3_T_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_2, 1 }, { BLOCK_COMBI_GRD_S_F_MH_1, 1 }, { BLOCK_COMBI_GRD_S_F_3, 1 }, { BLOCK_COMBI_GRD_S_R1_B_1, 1 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 1 }, { BLOCK_COMBI_GRD_S_C4_S_1, 0 }, { BLOCK_COMBI_GRD_S_C5_1, 0 }, { BLOCK_COMBI_GRD_S_R7_1, 1 }, { BLOCK_COMBI_GRD_S_R3_1, 1 }, { BLOCK_COMBI_GRD_S_R6_1, 1 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_C1_1, 0 }, { BLOCK_COMBI_GRD_S_C2_1, 0 }, { BLOCK_COMBI_GRD_S_C7_1, 0 }, { BLOCK_COMBI_GRD_S_C1_R1_1, 0 }, { BLOCK_COMBI_GRD_S_C1_S_1, 0 }, { BLOCK_COMBI_GRD_S_C5_1, 0 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 0 }, { BLOCK_COMBI_GRD_S_F_PK_1, 0 }, { BLOCK_COMBI_GRD_S_R7_P_1, 0 }, { BLOCK_COMBI_GRD_S_R6_1, 0 }, { BLOCK_COMBI_GRD_S_F_KO_1, 0 }, { BLOCK_COMBI_GRD_S_C7_1, 0 }, { BLOCK_COMBI_GRD_S_E3_C1_1, 0 }, + { BLOCK_COMBI_GRD_S_E2_M_1, 0 }, { BLOCK_COMBI_GRD_S_M_1_232, 0 }, { BLOCK_COMBI_GRD_S_M_R1_B_2, 0 }, { BLOCK_COMBI_GRD_S_M_2_233, 0 }, { BLOCK_COMBI_GRD_S_M_3, 0 }, { BLOCK_COMBI_GRD_S_M_4, 0 }, { BLOCK_COMBI_GRD_S_E3_M_1, 0 }, + { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, + }, + title_demo_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_FG, + 7, + 8, + { + { BLOCK_COMBI_GRD_S_E4_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_R1_1, 1 }, { BLOCK_COMBI_GRD_S_E5_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_T_1, 1 }, { BLOCK_COMBI_GRD_S_T_PO_1, 1 }, { BLOCK_COMBI_GRD_S_T_5, 1 }, { BLOCK_COMBI_GRD_S_T_ST1_1, 1 }, { BLOCK_COMBI_GRD_S_T_SH_1, 1 }, { BLOCK_COMBI_GRD_S_T_R1_1, 1 }, { BLOCK_COMBI_GRD_S_E3_T_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_F_2, 1 }, { BLOCK_COMBI_GRD_S_F_MH_1, 1 }, { BLOCK_COMBI_GRD_S_F_3, 1 }, { BLOCK_COMBI_GRD_S_R1_B_1, 1 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 1 }, { BLOCK_COMBI_GRD_S_C4_S_1, 0 }, { BLOCK_COMBI_GRD_S_C5_1, 0 }, { BLOCK_COMBI_GRD_S_R7_1, 1 }, { BLOCK_COMBI_GRD_S_R3_1, 1 }, { BLOCK_COMBI_GRD_S_R6_1, 1 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_C1_1, 0 }, { BLOCK_COMBI_GRD_S_C2_1, 0 }, { BLOCK_COMBI_GRD_S_C7_1, 0 }, { BLOCK_COMBI_GRD_S_C1_R1_1, 0 }, { BLOCK_COMBI_GRD_S_C1_S_1, 0 }, { BLOCK_COMBI_GRD_S_C5_1, 0 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 0 }, { BLOCK_COMBI_GRD_S_F_PK_1, 0 }, { BLOCK_COMBI_GRD_S_R7_P_1, 0 }, { BLOCK_COMBI_GRD_S_R6_1, 0 }, { BLOCK_COMBI_GRD_S_F_KO_1, 0 }, { BLOCK_COMBI_GRD_S_C7_1, 0 }, { BLOCK_COMBI_GRD_S_E3_C1_1, 0 }, + { BLOCK_COMBI_GRD_S_E2_M_1, 0 }, { BLOCK_COMBI_GRD_S_M_1_232, 0 }, { BLOCK_COMBI_GRD_S_M_R1_B_2, 0 }, { BLOCK_COMBI_GRD_S_M_2_233, 0 }, { BLOCK_COMBI_GRD_S_M_3, 0 }, { BLOCK_COMBI_GRD_S_M_4, 0 }, { BLOCK_COMBI_GRD_S_E3_M_1, 0 }, + { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, { BLOCK_COMBI_GRD_S_E1_1, 0 }, + }, + title_demo_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_PLAYERSELECT, + 1, + 1, + { + { BLOCK_COMBI_GRD_PLAYER_SELECT, 0 }, + }, + player_select4_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_MUSEUM_ENTRANCE, + 1, + 1, + { + { BLOCK_COMBI_ROM_MUSEUM1, 0 }, + }, + museum_entrance_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_MUSEUM_PAINTING, + 1, + 1, + { + { BLOCK_COMBI_ROM_MUSEUM3, 0 }, + }, + museum_picture_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_MUSEUM_FOSSIL, + 1, + 1, + { + { BLOCK_COMBI_ROM_MUSEUM2, 0 }, + }, + museum_fossil_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_MUSEUM_INSECT, + 1, + 1, + { + { BLOCK_COMBI_ROM_MUSEUM4, 0 }, + }, + museum_insect_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_MUSEUM_FISH, + 1, + 1, + { + { BLOCK_COMBI_ROM_MUSEUM5, 0 }, + }, + museum_fish_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_L, 0 }, + }, + playerRM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_M, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_M, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_M, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_M, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_M, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_NEEDLEWORK, + 1, + 1, + { + { BLOCK_COMBI_ROM_TAILOR, 0 }, + }, + needlework_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_PLAYER0_ROOM, + 1, + 1, + { + { BLOCK_COMBI_ROM_MY_ROOM_L, 0 }, + }, + playerRMM_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_NPCROOM0, + 1, + 1, + { + { BLOCK_COMBI_ROM_NPC_ROOM01, 0 }, + }, + npcRoom001_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_DEMO_STARTDEMO3, + 1, + 1, + { + { BLOCK_COMBI_ROM_TRAIN_IN, 0 }, + }, + start_demo3_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_LIGHTHOUSE, + 1, + 1, + { + { BLOCK_COMBI_ROM_TOUDAI, 0 }, + }, + npcRoom001_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, + { + mFI_FIELD_ROOM_TENT, + 1, + 1, + { + { BLOCK_COMBI_ROM_TENT, 0 }, + }, + tent_actable, + 0x00000000, + 0x00000000, + 0x00000000, + 0x00000000, + }, }; diff --git a/src/game/m_field_info.c b/src/game/m_field_info.c index a3966f46..49cd7bdb 100644 --- a/src/game/m_field_info.c +++ b/src/game/m_field_info.c @@ -7,6 +7,8 @@ #include "m_play.h" #include "libultra/libultra.h" #include "m_player_lib.h" +#include "m_bg_type.h" +#include "m_fg_type.h" static mCoBG_Collision_u l_edge_ut = { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS0 } }; @@ -266,7 +268,7 @@ extern int mFI_BlockCheck(int block_x, int block_z) { int num = mFI_GetBlockNum(block_x, block_z); if (block_x < 0 || block_x >= mFI_GetBlockXMax() || block_z < 0 || block_z >= mFI_GetBlockZMax() || - g_fdinfo->block_info[num].bg_info.bg_id.combination_type == 292) { + g_fdinfo->block_info[num].bg_info.bg_id.combination_type == BG_TYPE_292) { return FALSE; } @@ -1085,7 +1087,7 @@ extern void mFI_BGDisplayListRefresh(xyz_t wpos) { if (mFI_Wpos2BlockNum(&bx, &bz, wpos)) { num = mFI_GetBlockNum(bx, bz); - if (g_fdinfo->block_info[num].bg_info.bg_id.combination_type != 292) { + if (g_fdinfo->block_info[num].bg_info.bg_id.combination_type != BG_TYPE_292) { mFI_BGDispMake(&disp_bitfield, bx, bz); } } @@ -1335,7 +1337,7 @@ extern int mFI_UtNumtoFGSet_common(mActor_name_t item, int ut_x, int ut_z, int u } block_num = mFI_GetBlockNum(bx, bz); - if (g_fdinfo->block_info[block_num].fg_info.fg_id == 203) { + if (g_fdinfo->block_info[block_num].fg_info.fg_id == FG_TYPE_EMPTY) { return FALSE; } diff --git a/src/game/m_field_make.c b/src/game/m_field_make.c index f67064e9..21568e62 100644 --- a/src/game/m_field_make.c +++ b/src/game/m_field_make.c @@ -1394,14 +1394,18 @@ static void mFM_SetIslandFg(mFM_combo_info_c* combi_info_p, mFM_fg_data_c** sort } static mFM_combination_c l_combiID[BLOCK_TOTAL_NUM] = { - { 209, 1 }, { 201, 1 }, { 201, 1 }, { 201, 1 }, { 202, 1 }, { 201, 1 }, { 210, 1 }, { 205, 1 }, { 172, 1 }, - { 222, 1 }, { 189, 1 }, { 176, 1 }, { 225, 1 }, { 208, 1 }, { 203, 1 }, { 159, 1 }, { 5, 1 }, { 215, 1 }, - { 93, 1 }, { 37, 1 }, { 206, 1 }, { 203, 1 }, { 45, 0 }, { 101, 0 }, { 96, 1 }, { 152, 1 }, { 108, 0 }, - { 207, 0 }, { 204, 0 }, { 42, 0 }, { 163, 0 }, { 64, 0 }, { 164, 0 }, { 213, 0 }, { 206, 0 }, { 203, 0 }, - { 157, 0 }, { 217, 0 }, { 127, 0 }, { 38, 0 }, { 160, 0 }, { 206, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, - { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, - { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, - { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, { 196, 0 }, + // clang-format off + { BLOCK_COMBI_GRD_S_E4_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_R1_1, 1 }, { BLOCK_COMBI_GRD_S_E1_1, 1 }, { BLOCK_COMBI_GRD_S_E5_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_T_1, 1 }, { BLOCK_COMBI_GRD_S_T_9, 1 }, { BLOCK_COMBI_GRD_S_T_SH_2, 1 }, { BLOCK_COMBI_GRD_S_T_ST1_3, 1 }, { BLOCK_COMBI_GRD_S_T_R1_4, 1 }, { BLOCK_COMBI_GRD_S_T_PO_3, 1 }, { BLOCK_COMBI_GRD_S_E3_T_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 1 }, { BLOCK_COMBI_GRD_S_F_5, 1 }, { BLOCK_COMBI_GRD_5, 1 }, { BLOCK_COMBI_GRD_S_F_MH_2, 1 }, { BLOCK_COMBI_GRD_S_R1_3, 1 }, { BLOCK_COMBI_GRD_S_F_1, 1 }, { BLOCK_COMBI_GRD_S_E3_1, 1 }, + { BLOCK_COMBI_GRD_S_E2_1, 1 }, { BLOCK_COMBI_GRD_S_C4_1, 0 }, { BLOCK_COMBI_GRD_S_C5_S_2, 0 }, { BLOCK_COMBI_GRD_S_R7_2, 1 }, { BLOCK_COMBI_GRD_S_R6_B_2, 1 }, { BLOCK_COMBI_GRD_S_C4_2, 0 }, { BLOCK_COMBI_GRD_S_E3_C1_1, 0 }, + { BLOCK_COMBI_GRD_S_E2_C1_1, 0 }, { BLOCK_COMBI_GRD_S_C2_1, 0 }, { BLOCK_COMBI_GRD_S_F_9, 0 }, { BLOCK_COMBI_GRD_S_R1_B_1, 0 }, { BLOCK_COMBI_GRD_S_F_10, 0 }, { BLOCK_COMBI_GRD_S_F_KO_3, 0 }, { BLOCK_COMBI_GRD_S_E3_1, 0 }, + { BLOCK_COMBI_GRD_S_E2_1, 0 }, { BLOCK_COMBI_GRD_S_F_3, 0 }, { BLOCK_COMBI_GRD_S_F_PK_1, 0 }, { BLOCK_COMBI_GRD_S_R1_P_1, 0 }, { BLOCK_COMBI_GRD_S_F_2, 0 }, { BLOCK_COMBI_GRD_S_F_6, 0 }, { BLOCK_COMBI_GRD_S_E3_1, 0 }, + { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, + { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, + { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, + { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, { BLOCK_COMBI_GRD_S_F_9_1, 0 }, + // clang-format on }; u8* g_block_type_p = l_block_type; diff --git a/src/game/m_map_ovl.c b/src/game/m_map_ovl.c index 31e8151f..bc2b0b4d 100644 --- a/src/game/m_map_ovl.c +++ b/src/game/m_map_ovl.c @@ -89,48 +89,336 @@ extern u8 kan_tizu_c7r1b_TA_tex_txt[]; extern u8 kan_tizu_mwf_TA_tex_txt[]; static u8* l_map_texture[mFM_BLOCK_TYPE_NUM] = { - kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_tst1_TA_tex_txt, - kan_tizu_t_TA_tex_txt, kan_tizu_tr1_TA_tex_txt, kan_tizu_fmh_TA_tex_txt, kan_tizu_c1_TA_tex_txt, - kan_tizu_c2_TA_tex_txt, kan_tizu_c3_TA_tex_txt, kan_tizu_c4_TA_tex_txt, kan_tizu_c5_TA_tex_txt, - kan_tizu_c6_TA_tex_txt, kan_tizu_c7_TA_tex_txt, kan_tizu_c1r1_TA_tex_txt, kan_tizu_c2r1_TA_tex_txt, - kan_tizu_c3r1_TA_tex_txt, kan_tizu_c4r1_TA_tex_txt, kan_tizu_c5r1_TA_tex_txt, kan_tizu_c6r1_TA_tex_txt, - kan_tizu_c7r1_TA_tex_txt, kan_tizu_c1r2_TA_tex_txt, kan_tizu_c2r2_TA_tex_txt, kan_tizu_c3r2_TA_tex_txt, - kan_tizu_c4r2_TA_tex_txt, kan_tizu_c5r2_TA_tex_txt, kan_tizu_c1r2_TA_tex_txt, kan_tizu_c4r2_TA_tex_txt, - kan_tizu_c5r2_TA_tex_txt, kan_tizu_c6r3_TA_tex_txt, kan_tizu_c7r3_TA_tex_txt, kan_tizu_f_TA_tex_txt, - kan_tizu_r1_TA_tex_txt, kan_tizu_r2_TA_tex_txt, kan_tizu_r2_TA_tex_txt, kan_tizu_r4_TA_tex_txt, - kan_tizu_r5_TA_tex_txt, kan_tizu_r6_TA_tex_txt, kan_tizu_r7_TA_tex_txt, kan_tizu_r1b_TA_tex_txt, - kan_tizu_r2b_TA_tex_txt, kan_tizu_r2b_TA_tex_txt, kan_tizu_r4b_TA_tex_txt, kan_tizu_r5b_TA_tex_txt, - kan_tizu_r6b_TA_tex_txt, kan_tizu_r7b_TA_tex_txt, kan_tizu_c1s_TA_tex_txt, kan_tizu_c2s_TA_tex_txt, - kan_tizu_c3s_TA_tex_txt, kan_tizu_c4s_TA_tex_txt, kan_tizu_c5s_TA_tex_txt, kan_tizu_c6s_TA_tex_txt, - kan_tizu_c7s_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_m_TA_tex_txt, - kan_tizu_mr1_TA_tex_txt, kan_tizu_fsh_TA_tex_txt, kan_tizu_fpk_TA_tex_txt, kan_tizu_fpo_TA_tex_txt, - kan_tizu_fko_TA_tex_txt, kan_tizu_pr1_TA_tex_txt, kan_tizu_pr2_TA_tex_txt, kan_tizu_pr2_TA_tex_txt, - kan_tizu_pr4_TA_tex_txt, kan_tizu_pr5_TA_tex_txt, kan_tizu_pr6_TA_tex_txt, kan_tizu_pr7_TA_tex_txt, - kan_tizu_f_TA_tex_txt, kan_tizu_r1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, kan_tizu_mr1b_TA_tex_txt, kan_tizu_mr1_TA_tex_txt, - kan_tizu_fmu_TA_tex_txt, kan_tizu_fta_TA_tex_txt, kan_tizu_tr1b_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, - kan_tizu_c3r1b_TA_tex_txt, kan_tizu_c4r1b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt, - kan_tizu_c6r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt, + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_TOP + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_3 + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_6 + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL + kan_tizu_tst1_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS_STATION + kan_tizu_t_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS_DUMP + kan_tizu_tr1_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS_RIVER + kan_tizu_fmh_TA_tex_txt, // mFM_BLOCK_TYPE_PLAYER_HOUSE + kan_tizu_c1_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_HORIZONTAL + kan_tizu_c2_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER + kan_tizu_c3_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT + kan_tizu_c4_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER + kan_tizu_c5_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER + kan_tizu_c6_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT + kan_tizu_c7_TA_tex_txt, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER + kan_tizu_c1r1_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL + kan_tizu_c2r1_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER + kan_tizu_c3r1_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT + kan_tizu_c4r1_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER + kan_tizu_c5r1_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER + kan_tizu_c6r1_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT + kan_tizu_c7r1_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER + kan_tizu_c1r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL + kan_tizu_c2r2_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER + kan_tizu_c3r2_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT + kan_tizu_c4r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER + kan_tizu_c5r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER + kan_tizu_c1r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL + kan_tizu_c4r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER + kan_tizu_c5r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER + kan_tizu_c6r3_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT + kan_tizu_c7r3_TA_tex_txt, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_FLAT + kan_tizu_r1_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_SOUTH + kan_tizu_r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST + kan_tizu_r2_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST + kan_tizu_r4_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST + kan_tizu_r5_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH + kan_tizu_r6_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST + kan_tizu_r7_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH + kan_tizu_r1b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE + kan_tizu_r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE + kan_tizu_r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE + kan_tizu_r4b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE + kan_tizu_r5b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE + kan_tizu_r6b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE + kan_tizu_r7b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE + kan_tizu_c1s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_HORIZONTAL + kan_tizu_c2s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER + kan_tizu_c3s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT + kan_tizu_c4s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER + kan_tizu_c5s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER + kan_tizu_c6s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT + kan_tizu_c7s_TA_tex_txt, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION + kan_tizu_m_TA_tex_txt, // mFM_BLOCK_TYPE_BEACH + kan_tizu_mr1_TA_tex_txt, // mFM_BLOCK_TYPE_BEACH_RIVER + kan_tizu_fsh_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS_SHOP + kan_tizu_fpk_TA_tex_txt, // mFM_BLOCK_TYPE_SHRINE + kan_tizu_fpo_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS_POST_OFFICE + kan_tizu_fko_TA_tex_txt, // mFM_BLOCK_TYPE_POLICE_BOX + kan_tizu_pr1_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_SOUTH + kan_tizu_pr2_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_EAST + kan_tizu_pr2_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_WEST + kan_tizu_pr4_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_SOUTH_EAST + kan_tizu_pr5_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_EAST_SOUTH + kan_tizu_pr6_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_SOUTH_WEST + kan_tizu_pr7_TA_tex_txt, // mFM_BLOCK_TYPE_POOL_WEST_SOUTH + kan_tizu_f_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS6 + kan_tizu_r1_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS7 + kan_tizu_c1_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS8 + kan_tizu_c1_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS9 + kan_tizu_c1_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT + kan_tizu_c1_TA_tex_txt, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT + kan_tizu_mr1b_TA_tex_txt, // mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE + kan_tizu_mr1_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN + kan_tizu_fmu_TA_tex_txt, // mFM_BLOCK_TYPE_MUSEUM + kan_tizu_fta_TA_tex_txt, // mFM_BLOCK_TYPE_NEEDLEWORK + kan_tizu_tr1b_TA_tex_txt, // mFM_BLOCK_TYPE_TRACKS_RIVER_BRIDGE + kan_tizu_c1r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL_BRIDGE + kan_tizu_c3r1b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT_BRIDGE + kan_tizu_c4r1b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER_BRIDGE + kan_tizu_c4r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + kan_tizu_c5r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER_BRIDGE + kan_tizu_c6r1b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT_BRIDGE + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER_BRIDGE + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_2 + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_3 + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_4 + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_5 + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_ISLAND_LEFT + kan_tizu_c7r1b_TA_tex_txt, // mFM_BLOCK_TYPE_ISLAND_RIGHT + kan_tizu_mwf_TA_tex_txt, // mFM_BLOCK_TYPE_PORT + kan_tizu_mwf_TA_tex_txt, // mFM_BLOCK_TYPE_SEA_EXCEPTIONAL + kan_tizu_mwf_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_6 + kan_tizu_mwf_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_7 + kan_tizu_mwf_TA_tex_txt, // mFM_BLOCK_TYPE_OCEAN_8 + kan_tizu_c1r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL_BRIDGE + kan_tizu_c4r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + kan_tizu_c5r2b_TA_tex_txt, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER_BRIDGE }; static u8 l_map_pal[mFM_BLOCK_TYPE_NUM] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_TOP + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT + 0, // mFM_BLOCK_TYPE_3 + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT + 0, // mFM_BLOCK_TYPE_6 + 0, // mFM_BLOCK_TYPE_TRACKS + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL + 1, // mFM_BLOCK_TYPE_TRACKS_STATION + 1, // mFM_BLOCK_TYPE_TRACKS_DUMP + 1, // mFM_BLOCK_TYPE_TRACKS_RIVER + 1, // mFM_BLOCK_TYPE_PLAYER_HOUSE + 0, // mFM_BLOCK_TYPE_CLIFF_HORIZONTAL + 0, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT + 0, // mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT + 0, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL + 0, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL + 0, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT + 0, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL + 0, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT + 0, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_FLAT + 0, // mFM_BLOCK_TYPE_RIVER_SOUTH + 0, // mFM_BLOCK_TYPE_RIVER_EAST + 0, // mFM_BLOCK_TYPE_RIVER_WEST + 0, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST + 0, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH + 0, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST + 0, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH + 0, // mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE + 0, // mFM_BLOCK_TYPE_SLOPE_HORIZONTAL + 0, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT + 0, // mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER + 0, // mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT + 0, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION + 1, // mFM_BLOCK_TYPE_BEACH + 1, // mFM_BLOCK_TYPE_BEACH_RIVER + 1, // mFM_BLOCK_TYPE_TRACKS_SHOP + 1, // mFM_BLOCK_TYPE_SHRINE + 1, // mFM_BLOCK_TYPE_TRACKS_POST_OFFICE + 1, // mFM_BLOCK_TYPE_POLICE_BOX + 0, // mFM_BLOCK_TYPE_POOL_SOUTH + 0, // mFM_BLOCK_TYPE_POOL_EAST + 0, // mFM_BLOCK_TYPE_POOL_WEST + 0, // mFM_BLOCK_TYPE_POOL_SOUTH_EAST + 0, // mFM_BLOCK_TYPE_POOL_EAST_SOUTH + 0, // mFM_BLOCK_TYPE_POOL_SOUTH_WEST + 0, // mFM_BLOCK_TYPE_POOL_WEST_SOUTH + 0, // mFM_BLOCK_TYPE_TRACKS6 + 0, // mFM_BLOCK_TYPE_TRACKS7 + 0, // mFM_BLOCK_TYPE_TRACKS8 + 0, // mFM_BLOCK_TYPE_TRACKS9 + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT + 0, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT + 1, // mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE + 1, // mFM_BLOCK_TYPE_OCEAN + 1, // mFM_BLOCK_TYPE_MUSEUM + 1, // mFM_BLOCK_TYPE_NEEDLEWORK + 1, // mFM_BLOCK_TYPE_TRACKS_RIVER_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER_BRIDGE + 0, // mFM_BLOCK_TYPE_OCEAN_2 + 0, // mFM_BLOCK_TYPE_OCEAN_3 + 0, // mFM_BLOCK_TYPE_OCEAN_4 + 0, // mFM_BLOCK_TYPE_OCEAN_5 + 0, // mFM_BLOCK_TYPE_ISLAND_LEFT + 0, // mFM_BLOCK_TYPE_ISLAND_RIGHT + 1, // mFM_BLOCK_TYPE_PORT + 1, // mFM_BLOCK_TYPE_SEA_EXCEPTIONAL + 1, // mFM_BLOCK_TYPE_OCEAN_6 + 1, // mFM_BLOCK_TYPE_OCEAN_7 + 1, // mFM_BLOCK_TYPE_OCEAN_8 + 0, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + 0, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER_BRIDGE }; static u8 pluss_bridge[mFM_BLOCK_TYPE_NUM] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x56, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x58, 0x59, 0xff, 0x5c, 0x5d, 0x57, 0xff, 0xff, 0x5a, 0x5b, 0x69, 0x6a, - 0x6b, 0xff, 0xff, 0xff, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_TOP + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_3 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_6 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS_STATION + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS_DUMP + mFM_BLOCK_TYPE_TRACKS_RIVER_BRIDGE, // mFM_BLOCK_TYPE_TRACKS_RIVER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_PLAYER_HOUSE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_HORIZONTAL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT_BRIDGE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER_BRIDGE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT_BRIDGE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER_BRIDGE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL_BRIDGE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER_BRIDGE, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER_BRIDGE, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL_BRIDGE, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER_BRIDGE, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER_BRIDGE, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_FLAT + mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, // mFM_BLOCK_TYPE_RIVER_SOUTH + mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE, // mFM_BLOCK_TYPE_RIVER_EAST + mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE, // mFM_BLOCK_TYPE_RIVER_WEST + mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST + mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH + mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST + mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_HORIZONTAL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BEACH + mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE, // mFM_BLOCK_TYPE_BEACH_RIVER + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS_SHOP + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SHRINE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS_POST_OFFICE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POLICE_BOX + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_SOUTH + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_EAST + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_WEST + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_SOUTH_EAST + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_EAST_SOUTH + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_SOUTH_WEST + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_POOL_WEST_SOUTH + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS6 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS7 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS8 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS9 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_MUSEUM + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_NEEDLEWORK + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_TRACKS_RIVER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_2 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_3 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_4 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_5 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_ISLAND_LEFT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_ISLAND_RIGHT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_PORT + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_SEA_EXCEPTIONAL + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_6 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_7 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_OCEAN_8 + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + mFM_BLOCK_TYPE_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER_BRIDGE }; extern Gfx kan_win_model[]; @@ -343,7 +631,9 @@ static int mMP_check_layer(f32 y) { static int mMP_check_bg_kind(u8 kind) { int res = TRUE; - if (kind <= 8 || kind == 0x3D || kind == 0x3E || kind == 9 || kind == 10) { + if (kind <= mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT || kind == mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION || + kind == mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION || kind == mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL || + kind == mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL) { res = FALSE; } @@ -356,7 +646,7 @@ static void mMP_make_max_no_table(int* max_no_table, int count) { int j = 0; for (i = 0; i < count; i++) { - max_no_table[i] = 39; + max_no_table[i] = mFM_BLOCK_TYPE_FLAT; } // i = BLOCKXZ_2_BLOCKIDX(0, 1); @@ -783,8 +1073,8 @@ static void mMP_set_map_dl(GRAPH* graph, mMP_Ovl_c* map_ovl) { for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - gSPSegment(gfx++, G_MWO_SEGMENT_8, map_ovl->map_texture[block]); - gSPSegment(gfx++, G_MWO_SEGMENT_9, l_kan_tizu_pal[map_ovl->map_pal[block]]); + gSPSegment(gfx++, ANIME_1_TXT_SEG, map_ovl->map_texture[block]); + gSPSegment(gfx++, ANIME_2_TXT_SEG, l_kan_tizu_pal[map_ovl->map_pal[block]]); gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(gfx++, kan_tizu_model); @@ -909,20 +1199,20 @@ static void mMP_set_win_dl(GRAPH* graph, mMP_Ovl_c* map_ovl, mMP_LabelInfo_c* la gfx = NOW_POLY_OPA_DISP; /* move X-acre number texture into segment 8 and Z-acre character texture int segment 9 */ - gSPSegment(gfx++, G_MWO_SEGMENT_8, kan_win_evw_anime_1_tex_table[map_ovl->sel_bx]); - gSPSegment(gfx++, G_MWO_SEGMENT_9, kan_win_evw_anime_2_tex_table[map_ovl->sel_bz]); + gSPSegment(gfx++, ANIME_1_TXT_SEG, kan_win_evw_anime_1_tex_table[map_ovl->sel_bx]); + gSPSegment(gfx++, ANIME_2_TXT_SEG, kan_win_evw_anime_2_tex_table[map_ovl->sel_bz]); /* move label area texture into segment 10 based on number of labels */ if (label_count == 4) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku4T_model_p); + gSPSegment(gfx++, ANIME_3_TXT_SEG, kan_win_waku4T_model_p); } else if (label_count == 3) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku3T_model_p); + gSPSegment(gfx++, ANIME_3_TXT_SEG, kan_win_waku3T_model_p); } else if (label_count == 1) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_wakuT_model_p); + gSPSegment(gfx++, ANIME_3_TXT_SEG, kan_win_wakuT_model_p); } else if (label_count == 0) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku1T_model_p); + gSPSegment(gfx++, ANIME_3_TXT_SEG, kan_win_waku1T_model_p); } else { /* label_count == 2 */ - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku2T_model_p); + gSPSegment(gfx++, ANIME_3_TXT_SEG, kan_win_waku2T_model_p); } gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); diff --git a/src/game/m_random_field_ovl.c b/src/game/m_random_field_ovl.c index c444aa28..2e9a8118 100644 --- a/src/game/m_random_field_ovl.c +++ b/src/game/m_random_field_ovl.c @@ -4,74 +4,84 @@ #include "m_common_data.h" enum { - mRF_BIT_SLOPE_LEFT, - mRF_BIT_SLOPE_RIGHT, - mRF_BIT_BRIDGE_UPPER, - mRF_BIT_BRIDGE_LOWER, - mRF_BIT_SHRINE, - mRF_BIT_POLICE, - mRF_BIT_MUSEUM, - mRF_BIT_POOL, - mRF_BIT_NEEDLEWORK, + mRF_BIT_SLOPE_LEFT, + mRF_BIT_SLOPE_RIGHT, + mRF_BIT_BRIDGE_UPPER, + mRF_BIT_BRIDGE_LOWER, + mRF_BIT_SHRINE, + mRF_BIT_POLICE, + mRF_BIT_MUSEUM, + mRF_BIT_POOL, + mRF_BIT_NEEDLEWORK, - mRF_BIT_NUM + mRF_BIT_NUM }; #define mRF_TO_BIT(type) (1 << (mRF_BIT_##type)) -enum { - mRF_BLOCK_GROUP_CLIFF, - mRF_BLOCK_GROUP_RIVER, - mRF_BLOCK_GROUP_BRIDGE, - mRF_BLOCK_GROUP_SLOPE, - mRF_BLOCK_GROUP_RIVER_CLIFF_ANY, - mRF_BLOCK_GROUP_RIVER_CLIFF_1, - mRF_BLOCK_GROUP_RIVER_CLIFF_2, - mRF_BLOCK_GROUP_RIVER_CLIFF_3, - mRF_BLOCK_GROUP_CLIFF_ANY, +#define mRF_CLIFF_NONE (0) +#define mRF_CLIFF_HORIZONTAL (1 << 0) // 0x01 +#define mRF_CLIFF_BOT_RIGHT (1 << 1) // 0x02 +#define mRF_CLIFF_VERTICAL_RIGHT (1 << 2) // 0x04 +#define mRF_CLIFF_TOP_RIGHT (1 << 3) // 0x08 +#define mRF_CLIFF_TOP_LEFT (1 << 4) // 0x10 +#define mRF_CLIFF_VERTICAL_LEFT (1 << 5) // 0x20 +#define mRF_CLIFF_BOT_LEFT (1 << 6) // 0x40 - mRF_BLOCK_GROUP_NUM +enum { + mRF_BLOCK_GROUP_CLIFF, + mRF_BLOCK_GROUP_RIVER, + mRF_BLOCK_GROUP_BRIDGE, + mRF_BLOCK_GROUP_SLOPE, + mRF_BLOCK_GROUP_RIVER_CLIFF_ANY, + mRF_BLOCK_GROUP_RIVER_CLIFF_1, + mRF_BLOCK_GROUP_RIVER_CLIFF_2, + mRF_BLOCK_GROUP_RIVER_CLIFF_3, + mRF_BLOCK_GROUP_CLIFF_ANY, + + mRF_BLOCK_GROUP_NUM }; enum { - mRF_STEPMODE_TWO, - mRF_STEPMODE_THREE, + mRF_STEPMODE_TWO, + mRF_STEPMODE_THREE, - mRF_STEPMODE_NUM + mRF_STEPMODE_NUM }; enum { - mRF_CLIFF_HEIGHT_ABOVE, - mRF_CLIFF_HEIGHT_BELOW, - mRF_CLIFF_HEIGHT_BOTH, + mRF_CLIFF_HEIGHT_ABOVE, + mRF_CLIFF_HEIGHT_BELOW, + mRF_CLIFF_HEIGHT_BOTH, - mRF_CLIFF_HEIGHT_NUM + mRF_CLIFF_HEIGHT_NUM }; enum { - mRF_RIVER_SIDE_LEFT, - mRF_RIVER_SIDE_RIGHT, - mRF_RIVER_SIDE_BOTH, + mRF_RIVER_SIDE_LEFT, + mRF_RIVER_SIDE_RIGHT, + mRF_RIVER_SIDE_BOTH, - mRF_RIVER_SIDE_NUM + mRF_RIVER_SIDE_NUM }; +// clang-format off static u8 l_base_blocks[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x09, 0x0c, 0x0c, 0x0b, 0x0c, 0x0c, 0x0a, - 0x02, 0x27, 0x27, 0x0e, 0x27, 0x27, 0x04, - 0x02, 0x27, 0x27, 0x27, 0x27, 0x27, 0x04, - 0x02, 0x27, 0x27, 0x27, 0x27, 0x27, 0x04, - 0x02, 0x27, 0x27, 0x27, 0x27, 0x27, 0x04, - 0x02, 0x27, 0x27, 0x27, 0x27, 0x27, 0x04, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7 }; typedef struct cliff_data_s { - u8* types; - int count; + u8* types; + int count; } mRF_trace_data_c; static u8 l_cliff_startA_factor[] = { mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER }; @@ -84,20 +94,20 @@ static u8 l_cliff_startC_factor[] = { mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK static mRF_trace_data_c l_cliff_startC = { l_cliff_startC_factor, ARRAY_COUNT(l_cliff_startC_factor) }; static mRF_trace_data_c* l_cliff_start_table[] = { - &l_cliff_startA, - &l_cliff_startA, - &l_cliff_startB, - &l_cliff_startC + &l_cliff_startA, + &l_cliff_startA, + &l_cliff_startB, + &l_cliff_startC, }; static u8 l_cliff_next_direct[] = { - mRF_DIRECT_EAST, - mRF_DIRECT_NORTH, - mRF_DIRECT_NORTH, - mRF_DIRECT_EAST, - mRF_DIRECT_SOUTH, - mRF_DIRECT_SOUTH, - mRF_DIRECT_EAST + mRF_DIRECT_EAST, + mRF_DIRECT_NORTH, + mRF_DIRECT_NORTH, + mRF_DIRECT_EAST, + mRF_DIRECT_SOUTH, + mRF_DIRECT_SOUTH, + mRF_DIRECT_EAST, }; static u8 l_cliff1_next[] = { mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER }; @@ -122,13 +132,13 @@ static u8 l_cliff7_next[] = { mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CL static mRF_trace_data_c l_cliff7_next_class = { l_cliff7_next, ARRAY_COUNT(l_cliff7_next) }; static mRF_trace_data_c* l_cliff_next_data[] = { - &l_cliff1_next_class, - &l_cliff2_next_class, - &l_cliff3_next_class, - &l_cliff4_next_class, - &l_cliff5_next_class, - &l_cliff6_next_class, - &l_cliff7_next_class + &l_cliff1_next_class, + &l_cliff2_next_class, + &l_cliff3_next_class, + &l_cliff4_next_class, + &l_cliff5_next_class, + &l_cliff6_next_class, + &l_cliff7_next_class, }; static u8 l_river1_next[] = { mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST }; @@ -153,1658 +163,1715 @@ static u8 l_river7_next[] = { mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_RIVER_S static mRF_trace_data_c l_river7_next_class = { l_river7_next, ARRAY_COUNT(l_river7_next) }; static mRF_trace_data_c* l_river_next_data[] = { - &l_river1_next_class, - &l_river2_next_class, - &l_river3_next_class, - &l_river4_next_class, - &l_river5_next_class, - &l_river6_next_class, - &l_river7_next_class + &l_river1_next_class, + &l_river2_next_class, + &l_river3_next_class, + &l_river4_next_class, + &l_river5_next_class, + &l_river6_next_class, + &l_river7_next_class, }; static u8 l_mRF_step3_blocks3[BLOCK_TOTAL_NUM] = { - 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x09, 0x0d, 0x0c, 0x0b, 0x0c, 0x0c, 0x0a, - 0x02, 0x2b, 0x2c, 0x0e, 0x12, 0x0f, 0x3e, - 0x3d, 0x0f, 0x16, 0x0f, 0x10, 0x12, 0x3e, - 0x3d, 0x0f, 0x1a, 0x27, 0x27, 0x11, 0x04, - 0x02, 0x27, 0x1c, 0x0f, 0x0f, 0x10, 0x04, - 0x50, 0x27, 0x28, 0x27, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocks7[BLOCK_TOTAL_NUM] = { - 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x09, 0x0d, 0x0c, 0x0b, 0x0c, 0x0c, 0x0a, - 0x02, 0x2b, 0x2c, 0x0e, 0x27, 0x12, 0x3e, - 0x3d, 0x0f, 0x16, 0x0f, 0x0f, 0x10, 0x04, - 0x02, 0x27, 0x28, 0x12, 0x0f, 0x0f, 0x3e, - 0x3d, 0x0f, 0x16, 0x10, 0x27, 0x27, 0x04, - 0x50, 0x27, 0x28, 0x27, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocks7R[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, - 0x09, 0x0c, 0x0c, 0x0b, 0x0c, 0x0d, 0x0a, - 0x3d, 0x13, 0x27, 0x0e, 0x2e, 0x2d, 0x04, - 0x02, 0x15, 0x0f, 0x0f, 0x16, 0x0f, 0x3e, - 0x3d, 0x0f, 0x0f, 0x13, 0x28, 0x27, 0x04, - 0x02, 0x27, 0x27, 0x15, 0x16, 0x0f, 0x3e, - 0x50, 0x27, 0x27, 0x27, 0x28, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocks8[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x00, 0x00, 0x00, 0x01, 0x08, - 0x09, 0x0c, 0x0c, 0x0b, 0x0c, 0x0d, 0x0a, - 0x3d, 0x0f, 0x13, 0x0e, 0x2e, 0x2d, 0x04, - 0x02, 0x27, 0x15, 0x0f, 0x1a, 0x12, 0x3e, - 0x3d, 0x0f, 0x0f, 0x13, 0x1c, 0x10, 0x04, - 0x02, 0x27, 0x27, 0x15, 0x16, 0x0f, 0x3e, - 0x50, 0x27, 0x27, 0x27, 0x28, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocksB[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x09, 0x0c, 0x0c, 0x0b, 0x0d, 0x0c, 0x0a, - 0x3d, 0x0f, 0x13, 0x0e, 0x28, 0x12, 0x3e, - 0x02, 0x27, 0x15, 0x0f, 0x16, 0x10, 0x04, - 0x3d, 0x0f, 0x13, 0x2e, 0x2d, 0x27, 0x04, - 0x02, 0x27, 0x15, 0x16, 0x0f, 0x0f, 0x3e, - 0x50, 0x27, 0x27, 0x28, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocksBR[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, - 0x09, 0x0c, 0x0d, 0x0b, 0x0c, 0x0c, 0x0a, - 0x3d, 0x13, 0x28, 0x0e, 0x12, 0x0f, 0x3e, - 0x02, 0x15, 0x16, 0x0f, 0x10, 0x27, 0x04, - 0x02, 0x27, 0x2b, 0x2c, 0x12, 0x0f, 0x3e, - 0x3d, 0x0f, 0x0f, 0x16, 0x10, 0x27, 0x04, - 0x50, 0x27, 0x27, 0x28, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocksE[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, - 0x09, 0x0c, 0x0d, 0x0b, 0x0c, 0x0c, 0x0a, - 0x3d, 0x13, 0x28, 0x0e, 0x12, 0x0f, 0x3e, - 0x02, 0x15, 0x16, 0x0f, 0x10, 0x27, 0x04, - 0x02, 0x27, 0x2b, 0x2c, 0x12, 0x0f, 0x3e, - 0x3d, 0x0f, 0x0f, 0x16, 0x10, 0x27, 0x04, - 0x50, 0x27, 0x27, 0x28, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocksER[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x09, 0x0c, 0x0c, 0x0b, 0x0d, 0x0c, 0x0a, - 0x3d, 0x0f, 0x13, 0x0e, 0x28, 0x12, 0x3e, - 0x02, 0x27, 0x15, 0x0f, 0x16, 0x10, 0x04, - 0x3d, 0x0f, 0x13, 0x2e, 0x2d, 0x27, 0x04, - 0x02, 0x27, 0x15, 0x16, 0x0f, 0x0f, 0x3e, - 0x50, 0x27, 0x27, 0x28, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocksF[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, - 0x09, 0x0c, 0x0d, 0x0b, 0x0c, 0x0c, 0x0a, - 0x02, 0x27, 0x28, 0x0e, 0x12, 0x0f, 0x3e, - 0x3d, 0x0f, 0x16, 0x0f, 0x10, 0x27, 0x04, - 0x02, 0x27, 0x2b, 0x29, 0x2c, 0x27, 0x04, - 0x3d, 0x0f, 0x0f, 0x0f, 0x16, 0x0f, 0x3e, - 0x50, 0x27, 0x27, 0x27, 0x28, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, mFM_BLOCK_TYPE_RIVER_EAST, mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8 l_mRF_step3_blocksFR[BLOCK_TOTAL_NUM] = { - 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, - 0x09, 0x0c, 0x0c, 0x0b, 0x0d, 0x0c, 0x0a, - 0x3d, 0x0f, 0x13, 0x0e, 0x28, 0x27, 0x04, - 0x02, 0x27, 0x15, 0x0f, 0x16, 0x0f, 0x3e, - 0x02, 0x27, 0x2e, 0x2a, 0x2d, 0x27, 0x04, - 0x3d, 0x0f, 0x16, 0x0f, 0x0f, 0x0f, 0x3e, - 0x50, 0x27, 0x28, 0x27, 0x27, 0x27, 0x51, - 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, - 0x53, 0x53, 0x53, 0x66, 0x62, 0x63, 0x66, - 0x53, 0x53, 0x53, 0x67, 0x67, 0x67, 0x67 + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_TRACKS_STATION, mFM_BLOCK_TYPE_TRACKS_RIVER, mFM_BLOCK_TYPE_TRACKS_DUMP, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, mFM_BLOCK_TYPE_PLAYER_HOUSE, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, mFM_BLOCK_TYPE_RIVER_WEST, mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_FLAT, mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_6, mFM_BLOCK_TYPE_ISLAND_LEFT, mFM_BLOCK_TYPE_ISLAND_RIGHT, mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, mFM_BLOCK_TYPE_OCEAN_7, }; static u8* l_mRF_step3_blockss[10] = { - l_mRF_step3_blocks3, - l_mRF_step3_blocks7, - l_mRF_step3_blocks7R, - l_mRF_step3_blocks8, - l_mRF_step3_blocksB, - l_mRF_step3_blocksBR, - l_mRF_step3_blocksE, - l_mRF_step3_blocksER, - l_mRF_step3_blocksF, - l_mRF_step3_blocksFR + l_mRF_step3_blocks3, + l_mRF_step3_blocks7, + l_mRF_step3_blocks7R, + l_mRF_step3_blocks8, + l_mRF_step3_blocksB, + l_mRF_step3_blocksBR, + l_mRF_step3_blocksE, + l_mRF_step3_blocksER, + l_mRF_step3_blocksF, + l_mRF_step3_blocksFR, }; +// clang-format on static int mRF_GetSystemBlockInfo(u8 type) { - static int system_block_info[mFM_BLOCK_TYPE_NUM] = { - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x02, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, - 0x40, 0x01, 0x02, 0x04, - 0x08, 0x10, 0x01, 0x08, - 0x10, 0x20, 0x40, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x02, - 0x04, 0x08, 0x10, 0x20, - 0x40, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, - 0x04, 0x08, 0x08, 0x10, - 0x20, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x08, 0x10 - }; + static int system_block_info[mFM_BLOCK_TYPE_NUM] = { + // clang-format off + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_TOP + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_3 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_6 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS_STATION + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS_DUMP + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS_RIVER + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_PLAYER_HOUSE + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_CLIFF_HORIZONTAL + mRF_CLIFF_BOT_RIGHT, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER + mRF_CLIFF_VERTICAL_RIGHT, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER + mRF_CLIFF_VERTICAL_LEFT, // mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT + mRF_CLIFF_BOT_LEFT, // mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL + mRF_CLIFF_BOT_RIGHT, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER + mRF_CLIFF_VERTICAL_RIGHT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER + mRF_CLIFF_VERTICAL_LEFT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT + mRF_CLIFF_BOT_LEFT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL + mRF_CLIFF_BOT_RIGHT, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER + mRF_CLIFF_VERTICAL_RIGHT, // mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER + mRF_CLIFF_VERTICAL_LEFT, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT + mRF_CLIFF_BOT_LEFT, // mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_FLAT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_EAST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_WEST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_SLOPE_HORIZONTAL + mRF_CLIFF_BOT_RIGHT, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER + mRF_CLIFF_VERTICAL_RIGHT, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER + mRF_CLIFF_VERTICAL_LEFT, // mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT + mRF_CLIFF_BOT_LEFT, // mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BEACH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BEACH_RIVER + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS_SHOP + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_SHRINE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS_POST_OFFICE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POLICE_BOX + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_SOUTH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_EAST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_WEST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_SOUTH_EAST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_EAST_SOUTH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_SOUTH_WEST + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_POOL_WEST_SOUTH + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS6 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS7 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS8 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS9 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_MUSEUM + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_NEEDLEWORK + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_TRACKS_RIVER_BRIDGE + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL_BRIDGE + mRF_CLIFF_VERTICAL_RIGHT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT_BRIDGE + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER_BRIDGE + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER_BRIDGE + mRF_CLIFF_VERTICAL_LEFT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT_BRIDGE + mRF_CLIFF_BOT_LEFT, // mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER_BRIDGE + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_2 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_3 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_4 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_5 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_ISLAND_LEFT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_ISLAND_RIGHT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_PORT + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_SEA_EXCEPTIONAL + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_6 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_7 + mRF_CLIFF_NONE, // mFM_BLOCK_TYPE_OCEAN_8 + mRF_CLIFF_HORIZONTAL, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL_BRIDGE + mRF_CLIFF_TOP_RIGHT, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER_BRIDGE + mRF_CLIFF_TOP_LEFT, // mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER_BRIDGE + // clang-format on + }; - return system_block_info[type]; + return system_block_info[type]; } static int mRF_BlockType2CliffIndex(u8 type) { - static int cliff_info[7] = { - 1 << 0, - 1 << 1, - 1 << 2, - 1 << 3, - 1 << 4, - 1 << 5, - 1 << 6 - }; + static int cliff_info[7] = { + // clang-format off + mRF_CLIFF_HORIZONTAL, + mRF_CLIFF_BOT_RIGHT, + mRF_CLIFF_VERTICAL_RIGHT, + mRF_CLIFF_TOP_RIGHT, + mRF_CLIFF_TOP_LEFT, + mRF_CLIFF_VERTICAL_LEFT, + mRF_CLIFF_BOT_LEFT, + // clang-format on + }; - int block_info = mRF_GetSystemBlockInfo(type); - int i; + int block_info = mRF_GetSystemBlockInfo(type); + int i; - for (i = 0; i < 7; i++) { - if ((block_info & cliff_info[i]) != 0) { - return i; + for (i = 0; i < 7; i++) { + if ((block_info & cliff_info[i]) != 0) { + return i; + } } - } - return -1; + return -1; } static int mRF_GetRandom(int max) { - return RANDOM(max); + return RANDOM(max); } static int mRF_D2ToD1(int bx, int bz) { - return bz * BLOCK_X_NUM + bx; + return bz * BLOCK_X_NUM + bx; } static void mRF_Direct2BlockNo(int* bx, int* bz, int base_bx, int base_bz, int direct) { - static int x_offset[mRF_DIRECT_NUM] = { 0, -1, 0, 1 }; - static int z_offset[mRF_DIRECT_NUM] = { -1, 0, 1, 0 }; + static int x_offset[mRF_DIRECT_NUM] = { 0, -1, 0, 1 }; + static int z_offset[mRF_DIRECT_NUM] = { -1, 0, 1, 0 }; - int idx = direct & 3; + int idx = direct & 3; - bx[0] = base_bx + x_offset[idx]; - bz[0] = base_bz + z_offset[idx]; + bx[0] = base_bx + x_offset[idx]; + bz[0] = base_bz + z_offset[idx]; } static int mRF_CheckCorrectBlockNo(int bx, int bz, int bx_min, int bx_max, int bz_min, int bz_max) { - if (bx < bx_min) { - return FALSE; - } + if (bx < bx_min) { + return FALSE; + } - if (bx > bx_max) { - return FALSE; - } + if (bx > bx_max) { + return FALSE; + } - if (bz < bz_min) { - return FALSE; - } + if (bz < bz_min) { + return FALSE; + } - if (bz > bz_max) { - return FALSE; - } + if (bz > bz_max) { + return FALSE; + } - return TRUE; + return TRUE; } typedef struct block_group_s { - int min; - int max; + int min; + int max; } mRF_BlockGroup_c; static int mRF_CheckBlockGroup(u8 type, int group) { - static mRF_BlockGroup_c blockGroup[9] = { - { mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER }, - { mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH }, - { mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE }, - { mFM_BLOCK_TYPE_SLOPE_HORIZONTAL, mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER }, - { mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER }, - { mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER }, - { mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER }, - { mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER }, - { 0, 0 } - }; - - if (group == mRF_BLOCK_GROUP_CLIFF_ANY) { - /* Check any acre with a cliff in it, even if it has rivers or slopes */ - if ( - (type >= blockGroup[mRF_BLOCK_GROUP_CLIFF].min && type <= blockGroup[mRF_BLOCK_GROUP_CLIFF].max) || - (type >= blockGroup[mRF_BLOCK_GROUP_SLOPE].min && type <= blockGroup[mRF_BLOCK_GROUP_SLOPE].max) || - (type >= blockGroup[mRF_BLOCK_GROUP_RIVER_CLIFF_ANY].min && type <= blockGroup[mRF_BLOCK_GROUP_RIVER_CLIFF_ANY].max) - ) { - return TRUE; - } - return FALSE; - } - else { - mRF_BlockGroup_c block_group = blockGroup[group]; - - if (type >= block_group.min && type <= block_group.max) { - return TRUE; - } - } + static mRF_BlockGroup_c blockGroup[9] = { + { mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER }, + { mFM_BLOCK_TYPE_RIVER_SOUTH, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH }, + { mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE }, + { mFM_BLOCK_TYPE_SLOPE_HORIZONTAL, mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER }, + { mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER }, + { mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER }, + { mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER }, + { mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER }, + { 0, 0 }, + }; - return FALSE; + if (group == mRF_BLOCK_GROUP_CLIFF_ANY) { + /* Check any acre with a cliff in it, even if it has rivers or slopes */ + if ((type >= blockGroup[mRF_BLOCK_GROUP_CLIFF].min && type <= blockGroup[mRF_BLOCK_GROUP_CLIFF].max) || + (type >= blockGroup[mRF_BLOCK_GROUP_SLOPE].min && type <= blockGroup[mRF_BLOCK_GROUP_SLOPE].max) || + (type >= blockGroup[mRF_BLOCK_GROUP_RIVER_CLIFF_ANY].min && + type <= blockGroup[mRF_BLOCK_GROUP_RIVER_CLIFF_ANY].max)) { + return TRUE; + } + return FALSE; + } else { + mRF_BlockGroup_c block_group = blockGroup[group]; + + if (type >= block_group.min && type <= block_group.max) { + return TRUE; + } + } + + return FALSE; } static void mRF_CpyBlockData(u8* dst, u8* src) { - int i; + int i; - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - *dst++ = *src++; - } + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + *dst++ = *src++; + } } static int mRF_TraceCliffBlock(u8* block_data, int bx, int bz) { - int n_bx0; - int n_bz0; - int n_bx1; - int n_bz1; + int n_bx0; + int n_bz0; + int n_bx1; + int n_bz1; - int block_num = mRF_D2ToD1(bx, bz); - u8 type = block_data[block_num] - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; - int res = 0; - int i; + int block_num = mRF_D2ToD1(bx, bz); + u8 type = block_data[block_num] - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; + int res = 0; + int i; - while (res == 0) { - int next_idx = mRF_GetRandom(l_cliff_next_data[type]->count); - u8 next = l_cliff_next_data[type]->types[next_idx]; - int next_direct; - - mRF_Direct2BlockNo(&n_bx0, &n_bz0, bx, bz, l_cliff_next_direct[type]); - mRF_Direct2BlockNo(&n_bx1, &n_bz1, n_bx0, n_bz0, l_cliff_next_direct[(u8)(next - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL)]); + while (res == 0) { + int next_idx = mRF_GetRandom(l_cliff_next_data[type]->count); + u8 next = l_cliff_next_data[type]->types[next_idx]; + int next_direct; - if (mRF_CheckCorrectBlockNo(n_bx0, n_bz0, 1, 5, 2, 5) != FALSE && mRF_CheckCorrectBlockNo(n_bx1, n_bz1, 1, 6, 2, 5) != 0) { - if (block_data[mRF_D2ToD1(n_bx1, n_bz1)] != mFM_BLOCK_TYPE_PLAYER_HOUSE && block_data[mRF_D2ToD1(n_bx0, n_bz0)] == mFM_BLOCK_TYPE_FLAT) { - block_data[mRF_D2ToD1(n_bx0, n_bz0)] = next; + mRF_Direct2BlockNo(&n_bx0, &n_bz0, bx, bz, l_cliff_next_direct[type]); + mRF_Direct2BlockNo(&n_bx1, &n_bz1, n_bx0, n_bz0, + l_cliff_next_direct[(u8)(next - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL)]); - if (n_bx0 == 5) { - res = 2; // final cliff reached + if (mRF_CheckCorrectBlockNo(n_bx0, n_bz0, 1, 5, 2, 5) != FALSE && + mRF_CheckCorrectBlockNo(n_bx1, n_bz1, 1, 6, 2, 5) != 0) { + if (block_data[mRF_D2ToD1(n_bx1, n_bz1)] != mFM_BLOCK_TYPE_PLAYER_HOUSE && + block_data[mRF_D2ToD1(n_bx0, n_bz0)] == mFM_BLOCK_TYPE_FLAT) { + block_data[mRF_D2ToD1(n_bx0, n_bz0)] = next; + + if (n_bx0 == 5) { + res = 2; // final cliff reached + } else { + res = 1; // still tracing cliff + } + } else { + return FALSE; + } + } else { + return 0; } - else { - res = 1; // still tracing cliff + } + + if (res == 1) { + /* Trace next cliff block */ + if (mRF_TraceCliffBlock(block_data, n_bx0, n_bz0) == TRUE) { + return TRUE; } - } - else { - return FALSE; - } + } else if (res == 2) { + return TRUE; // done tracing cliff } - else { - return 0; - } - } - if (res == 1) { - /* Trace next cliff block */ - if (mRF_TraceCliffBlock(block_data, n_bx0, n_bz0) == TRUE) { - return TRUE; - } - } - else if (res == 2) { - return TRUE; // done tracing cliff - } - - return FALSE; + return FALSE; } static void mRF_SetEndCliffBlock(u8* block_data) { - int end_z = 0; - u8 direct; - int i; - int cliff_type = 0; + int end_z = 0; + u8 direct; + int i; + int cliff_type = 0; - for (i = 0; i < FG_BLOCK_Z_NUM; i++) { - int bnum = mRF_D2ToD1(5, i); - u8 type = block_data[bnum] - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; + for (i = 0; i < FG_BLOCK_Z_NUM; i++) { + int bnum = mRF_D2ToD1(5, i); + u8 type = block_data[bnum] - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; - if (block_data[bnum] >= mFM_BLOCK_TYPE_CLIFF_HORIZONTAL && block_data[bnum] <= mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER) { - end_z = i; - cliff_type = type; + if (block_data[bnum] >= mFM_BLOCK_TYPE_CLIFF_HORIZONTAL && + block_data[bnum] <= mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER) { + end_z = i; + cliff_type = type; + } } - } - direct = l_cliff_next_direct[cliff_type]; - if (direct != mRF_DIRECT_EAST) { - /* Cliff does not end facing the eastern wall, so we must fix that */ - //mRF_trace_data_c* trace = l_cliff_next_data[cliff_type]; - u8* types = l_cliff_next_data[cliff_type]->types; + direct = l_cliff_next_direct[cliff_type]; + if (direct != mRF_DIRECT_EAST) { + /* Cliff does not end facing the eastern wall, so we must fix that */ + // mRF_trace_data_c* trace = l_cliff_next_data[cliff_type]; + u8* types = l_cliff_next_data[cliff_type]->types; - for (i = 0; i < l_cliff_next_data[cliff_type]->count; i++) { - u32 t = types[i] - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; - - if (l_cliff_next_direct[t] == mRF_DIRECT_EAST) { - int bx; - int bz; + for (i = 0; i < l_cliff_next_data[cliff_type]->count; i++) { + u32 t = types[i] - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; - mRF_Direct2BlockNo(&bx, &bz, 5, end_z, direct); - block_data[mRF_D2ToD1(bx, bz)] = types[i]; - block_data[mRF_D2ToD1(bx + 1, bz)] = mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION; - break; - } + if (l_cliff_next_direct[t] == mRF_DIRECT_EAST) { + int bx; + int bz; + + mRF_Direct2BlockNo(&bx, &bz, 5, end_z, direct); + block_data[mRF_D2ToD1(bx, bz)] = types[i]; + block_data[mRF_D2ToD1(bx + 1, bz)] = mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION; + break; + } + } + } else { + block_data[mRF_D2ToD1(6, end_z)] = mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION; } - } - else { - block_data[mRF_D2ToD1(6, end_z)] = mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION; - } } static int mRF_LastCheckCliff(u8* block_data, int bx, int bz) { - int n_bx; - int n_bz; - int last_x; - int last_z; - u8 type; + int n_bx; + int n_bz; + int last_x; + int last_z; + u8 type; - last_x = bx; - last_z = bz; - type = block_data[mRF_D2ToD1(bx, bz)]; + last_x = bx; + last_z = bz; + type = block_data[mRF_D2ToD1(bx, bz)]; - while (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_CLIFF) != FALSE) { - u32 idx = type - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; - u8 direct = l_cliff_next_direct[idx]; - - mRF_Direct2BlockNo(&n_bx, &n_bz, last_x, last_z, direct); - type = block_data[mRF_D2ToD1(n_bx, n_bz)]; - last_x = n_bx; - last_z = n_bz; - } + while (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_CLIFF) != FALSE) { + u32 idx = type - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL; + u8 direct = l_cliff_next_direct[idx]; - if (last_x > 5) { - return bz != last_z; // Cliff cannot start and end on the same Z acre - } + mRF_Direct2BlockNo(&n_bx, &n_bz, last_x, last_z, direct); + type = block_data[mRF_D2ToD1(n_bx, n_bz)]; + last_x = n_bx; + last_z = n_bz; + } - return FALSE; + if (last_x > 5) { + return bz != last_z; // Cliff cannot start and end on the same Z acre + } + + return FALSE; } static int mRF_DecideBaseCliff(u8* block_data) { - int start_z = mRF_GetRandom(4); - int bz = start_z + 2; - int idx = mRF_GetRandom(l_cliff_start_table[start_z]->count); - u8 start_type = l_cliff_start_table[start_z]->types[idx]; - - block_data[mRF_D2ToD1(1, bz)] = start_type; - block_data[mRF_D2ToD1(0, bz)] = mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION; - mRF_TraceCliffBlock(block_data, 1, bz); - mRF_SetEndCliffBlock(block_data); + int start_z = mRF_GetRandom(4); + int bz = start_z + 2; + int idx = mRF_GetRandom(l_cliff_start_table[start_z]->count); + u8 start_type = l_cliff_start_table[start_z]->types[idx]; - if (mRF_LastCheckCliff(block_data, 1, bz)) { - return TRUE; - } - - return FALSE; + block_data[mRF_D2ToD1(1, bz)] = start_type; + block_data[mRF_D2ToD1(0, bz)] = mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION; + mRF_TraceCliffBlock(block_data, 1, bz); + mRF_SetEndCliffBlock(block_data); + + if (mRF_LastCheckCliff(block_data, 1, bz)) { + return TRUE; + } + + return FALSE; } static u8 mRF_RiverAlbuminCliff(u8 cliff_type, u8 river_type) { - static u8 river1_album_data[7] = { - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER - }; + static u8 river1_album_data[7] = { + // clang-format off + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, + // clang-format on + }; - static u8 river2_album_data[7] = { - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE - }; + static u8 river2_album_data[7] = { + // clang-format off + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + // clang-format on + }; - static u8 river3_album_data[7] = { - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER - }; + static u8 river3_album_data[7] = { + // clang-format off + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER, + // clang-format on + }; - static u8 river_no_album_data[7] = { - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE, - mFM_BLOCK_TYPE_NONE - }; + static u8 river_no_album_data[7] = { + // clang-format off + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + mFM_BLOCK_TYPE_NONE, + // clang-format on + }; - static u8* river_cliff_album_data[7] = { - river1_album_data, /* south river */ - river2_album_data, /* east river */ - river3_album_data, /* west river */ - river_no_album_data, /* south -> east river */ - river_no_album_data, /* east -> south river */ - river_no_album_data, /* south -> west river */ - river_no_album_data /* west -> south river */ - }; + static u8* river_cliff_album_data[7] = { + // clang-format off + river1_album_data, /* south river */ + river2_album_data, /* east river */ + river3_album_data, /* west river */ + river_no_album_data, /* south -> east river */ + river_no_album_data, /* east -> south river */ + river_no_album_data, /* south -> west river */ + river_no_album_data, /* west -> south river */ + // clang-format on + }; - if (mRF_CheckBlockGroup(cliff_type, mRF_BLOCK_GROUP_CLIFF) != FALSE && mRF_CheckBlockGroup(river_type, mRF_BLOCK_GROUP_RIVER) != FALSE) { - int river = (u32)(river_type - mFM_BLOCK_TYPE_RIVER_SOUTH); - int cliff = (u32)(cliff_type - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL); + if (mRF_CheckBlockGroup(cliff_type, mRF_BLOCK_GROUP_CLIFF) != FALSE && + mRF_CheckBlockGroup(river_type, mRF_BLOCK_GROUP_RIVER) != FALSE) { + int river = (u32)(river_type - mFM_BLOCK_TYPE_RIVER_SOUTH); + int cliff = (u32)(cliff_type - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL); - if (river >= 0 && river < 7 && cliff >= 0 && cliff < 7) { - return river_cliff_album_data[river][cliff]; + if (river >= 0 && river < 7 && cliff >= 0 && cliff < 7) { + return river_cliff_album_data[river][cliff]; + } } - } - return mFM_BLOCK_TYPE_NONE; + return mFM_BLOCK_TYPE_NONE; } static int mRF_DecideRiverAlbuminCliff(u8* cliff_blocks, u8* river_blocks) { - int bx; - int bz; + int bx; + int bz; - for (bz = 0; bz < BLOCK_Z_NUM - 2; bz++) { - for (bx = 0; bx < BLOCK_X_NUM; bx++) { - int block_num = mRF_D2ToD1(bx, bz); - u8 river_type = river_blocks[block_num]; - u8 river_album_type = mRF_RiverAlbuminCliff(cliff_blocks[block_num], river_type); + for (bz = 0; bz < BLOCK_Z_NUM - 2; bz++) { + for (bx = 0; bx < BLOCK_X_NUM; bx++) { + int block_num = mRF_D2ToD1(bx, bz); + u8 river_type = river_blocks[block_num]; + u8 river_album_type = mRF_RiverAlbuminCliff(cliff_blocks[block_num], river_type); - if (river_album_type != mFM_BLOCK_TYPE_NONE) { - cliff_blocks[block_num] = river_album_type; - } - else if (mRF_CheckBlockGroup(river_type, mRF_BLOCK_GROUP_RIVER) != FALSE || river_type == mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER || river_type == mFM_BLOCK_TYPE_TRACKS_RIVER) { - cliff_blocks[block_num] = river_blocks[block_num]; - } + if (river_album_type != mFM_BLOCK_TYPE_NONE) { + cliff_blocks[block_num] = river_album_type; + } else if (mRF_CheckBlockGroup(river_type, mRF_BLOCK_GROUP_RIVER) != FALSE || + river_type == mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER || river_type == mFM_BLOCK_TYPE_TRACKS_RIVER) { + cliff_blocks[block_num] = river_blocks[block_num]; + } + } } - } - return TRUE; + return TRUE; } static int mRF_GetCenterCrossZoneRiverCount(u8* block_data) { - int i; - int cross_count = 0; + int i; + int cross_count = 0; - for (i = 2; i <= (BLOCK_X_NUM - 2); i++) { - /* Check if the river enters the any 3 acre */ - if (mRF_CheckBlockGroup(block_data[mRF_D2ToD1(3, i)], mRF_BLOCK_GROUP_RIVER) != FALSE) { - cross_count++; + for (i = 2; i <= (BLOCK_X_NUM - 2); i++) { + /* Check if the river enters the any 3 acre */ + if (mRF_CheckBlockGroup(block_data[mRF_D2ToD1(3, i)], mRF_BLOCK_GROUP_RIVER) != FALSE) { + cross_count++; + } } - } - return cross_count; + return cross_count; } static int mRF_TraceRiverPart2(u8* river_data, u8* cliff_data, int bx, int bz, u8* challenge_flag) { - u8 river_type = river_data[mRF_D2ToD1(bx, bz)] - mFM_BLOCK_TYPE_RIVER_SOUTH; - int next_direct = mRF_RiverIdx2NextDirect(river_type); - int res = 0; - int n_bx0; - int n_bz0; - int n_bx1; - int n_bz1; + u8 river_type = river_data[mRF_D2ToD1(bx, bz)] - mFM_BLOCK_TYPE_RIVER_SOUTH; + int next_direct = mRF_RiverIdx2NextDirect(river_type); + int res = 0; + int n_bx0; + int n_bz0; + int n_bx1; + int n_bz1; - while (res == 0) { - u8* next_river_types = l_river_next_data[river_type]->types; - u8 next_type = next_river_types[mRF_GetRandom(l_river_next_data[river_type]->count)]; - int next_next_direct = mRF_RiverIdx2NextDirect((u8)(next_type - mFM_BLOCK_TYPE_RIVER_SOUTH)); + while (res == 0) { + u8* next_river_types = l_river_next_data[river_type]->types; + u8 next_type = next_river_types[mRF_GetRandom(l_river_next_data[river_type]->count)]; + int next_next_direct = mRF_RiverIdx2NextDirect((u8)(next_type - mFM_BLOCK_TYPE_RIVER_SOUTH)); - mRF_Direct2BlockNo(&n_bx0, &n_bz0, bx, bz, next_direct); - if (n_bz0 == 6) { - next_type = mFM_BLOCK_TYPE_RIVER_SOUTH; - next_next_direct = mRF_RiverIdx2NextDirect(0); - } - - mRF_Direct2BlockNo(&n_bx1, &n_bz1, n_bx0, n_bz0, next_next_direct); - - if (mRF_CheckCorrectBlockNo(n_bx0, n_bz0, 1, 5, 1, 6) != FALSE) { - if (mRF_CheckCorrectBlockNo(n_bx1, n_bz1, 1, 5, 1, 7) != FALSE) { - int next_bnum = mRF_D2ToD1(n_bx0, n_bz0); - int next_next_bnum = mRF_D2ToD1(n_bx1, n_bz1); - - if (cliff_data[next_next_bnum] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { - int wrote = FALSE; - - if (mRF_CheckBlockGroup(cliff_data[next_bnum], mRF_BLOCK_GROUP_CLIFF) != FALSE) { - if (mRF_RiverAlbuminCliff(cliff_data[next_bnum], next_river_types[0]) != mFM_BLOCK_TYPE_NONE) { - river_data[next_bnum] = next_river_types[0]; - wrote = TRUE; - } - else { - return FALSE; - } - } - else { - river_data[next_bnum] = next_type; - wrote = TRUE; - } - - if (wrote != FALSE) { - if (n_bz1 == 7) { - res = 2; // river has reached the ocean - } - else { - res = 1; // continue tracing river - } - } + mRF_Direct2BlockNo(&n_bx0, &n_bz0, bx, bz, next_direct); + if (n_bz0 == 6) { + next_type = mFM_BLOCK_TYPE_RIVER_SOUTH; + next_next_direct = mRF_RiverIdx2NextDirect(0); } - } - } - else { - return FALSE; - } - } - if (res == 1) { - if (mRF_TraceRiverPart2(river_data, cliff_data, n_bx0, n_bz0, challenge_flag) == TRUE) { - return TRUE; - } - } - else if (res == 2) { - if (mRF_GetCenterCrossZoneRiverCount(river_data) == 0) { - return FALSE; // river did not cross the center-line on the X coordinate + mRF_Direct2BlockNo(&n_bx1, &n_bz1, n_bx0, n_bz0, next_next_direct); + + if (mRF_CheckCorrectBlockNo(n_bx0, n_bz0, 1, 5, 1, 6) != FALSE) { + if (mRF_CheckCorrectBlockNo(n_bx1, n_bz1, 1, 5, 1, 7) != FALSE) { + int next_bnum = mRF_D2ToD1(n_bx0, n_bz0); + int next_next_bnum = mRF_D2ToD1(n_bx1, n_bz1); + + if (cliff_data[next_next_bnum] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { + int wrote = FALSE; + + if (mRF_CheckBlockGroup(cliff_data[next_bnum], mRF_BLOCK_GROUP_CLIFF) != FALSE) { + if (mRF_RiverAlbuminCliff(cliff_data[next_bnum], next_river_types[0]) != mFM_BLOCK_TYPE_NONE) { + river_data[next_bnum] = next_river_types[0]; + wrote = TRUE; + } else { + return FALSE; + } + } else { + river_data[next_bnum] = next_type; + wrote = TRUE; + } + + if (wrote != FALSE) { + if (n_bz1 == 7) { + res = 2; // river has reached the ocean + } else { + res = 1; // continue tracing river + } + } + } + } + } else { + return FALSE; + } } - if (n_bx0 == 1 || n_bx0 == 5 ) { - return FALSE; // river cannot end in F-1 or F-5 acres + if (res == 1) { + if (mRF_TraceRiverPart2(river_data, cliff_data, n_bx0, n_bz0, challenge_flag) == TRUE) { + return TRUE; + } + } else if (res == 2) { + if (mRF_GetCenterCrossZoneRiverCount(river_data) == 0) { + return FALSE; // river did not cross the center-line on the X coordinate + } + + if (n_bx0 == 1 || n_bx0 == 5) { + return FALSE; // river cannot end in F-1 or F-5 acres + } + + return TRUE; } - return TRUE; - } - - return FALSE; + return FALSE; } static int mRF_TraceRiverPart1(u8* river_blocks, u8* cliff_blocks, int* start_bx, int* start_bz) { - static int startX_table[4] = { 1, 2, 4, 5 }; + static int startX_table[4] = { 1, 2, 4, 5 }; - int n_bx0; - int n_bz0; - int n_bx1; - int n_bz1; - int end = FALSE; + int n_bx0; + int n_bz0; + int n_bx1; + int n_bz1; + int end = FALSE; - while (end == FALSE) { - int bx = startX_table[mRF_GetRandom(4)]; - u8* start_types = l_river_next_data[0]->types; - u8 start_type = start_types[mRF_GetRandom(l_river_next_data[0]->count)]; - int next_bnum; - int next_next_bnum; + while (end == FALSE) { + int bx = startX_table[mRF_GetRandom(4)]; + u8* start_types = l_river_next_data[0]->types; + u8 start_type = start_types[mRF_GetRandom(l_river_next_data[0]->count)]; + int next_bnum; + int next_next_bnum; - mRF_Direct2BlockNo(&n_bx0, &n_bz0, bx, 1, mRF_DIRECT_SOUTH); - next_bnum = mRF_D2ToD1(n_bx0, n_bz0); - - mRF_Direct2BlockNo(&n_bx1, &n_bz1, n_bx0, n_bz0, mRF_RiverIdx2NextDirect((u8)(start_type - mFM_BLOCK_TYPE_RIVER_SOUTH))); - next_next_bnum = mRF_D2ToD1(n_bx1, n_bz1); + mRF_Direct2BlockNo(&n_bx0, &n_bz0, bx, 1, mRF_DIRECT_SOUTH); + next_bnum = mRF_D2ToD1(n_bx0, n_bz0); - if (mRF_CheckCorrectBlockNo(n_bx0, n_bz0, 1, 5, 1, 6) != FALSE && cliff_blocks[next_bnum] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { - if (mRF_CheckBlockGroup(cliff_blocks[next_bnum], mRF_BLOCK_GROUP_CLIFF) != FALSE) { - if (mRF_RiverAlbuminCliff(cliff_blocks[next_bnum], mFM_BLOCK_TYPE_RIVER_SOUTH) != mFM_BLOCK_TYPE_NONE) { - if (cliff_blocks[mRF_D2ToD1(n_bx0, n_bz0 + 1)] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { - river_blocks[next_bnum] = mFM_BLOCK_TYPE_RIVER_SOUTH; - start_bx[0] = n_bx0; - start_bz[0] = n_bz0; - end = TRUE; - } + mRF_Direct2BlockNo(&n_bx1, &n_bz1, n_bx0, n_bz0, + mRF_RiverIdx2NextDirect((u8)(start_type - mFM_BLOCK_TYPE_RIVER_SOUTH))); + next_next_bnum = mRF_D2ToD1(n_bx1, n_bz1); + + if (mRF_CheckCorrectBlockNo(n_bx0, n_bz0, 1, 5, 1, 6) != FALSE && + cliff_blocks[next_bnum] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { + if (mRF_CheckBlockGroup(cliff_blocks[next_bnum], mRF_BLOCK_GROUP_CLIFF) != FALSE) { + if (mRF_RiverAlbuminCliff(cliff_blocks[next_bnum], mFM_BLOCK_TYPE_RIVER_SOUTH) != mFM_BLOCK_TYPE_NONE) { + if (cliff_blocks[mRF_D2ToD1(n_bx0, n_bz0 + 1)] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { + river_blocks[next_bnum] = mFM_BLOCK_TYPE_RIVER_SOUTH; + start_bx[0] = n_bx0; + start_bz[0] = n_bz0; + end = TRUE; + } + } else { + return FALSE; + } + } else if (cliff_blocks[next_next_bnum] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { + river_blocks[next_bnum] = start_type; + start_bx[0] = n_bx0; + start_bz[0] = n_bz0; + end = TRUE; + } } - else { - return FALSE; + + if (end == TRUE) { + int border_river_n = mRF_D2ToD1(bx, 0); + int rail_river_n = mRF_D2ToD1(bx, 1); + + river_blocks[border_river_n] = mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER; + river_blocks[rail_river_n] = mFM_BLOCK_TYPE_TRACKS_RIVER; } - } - else if (cliff_blocks[next_next_bnum] != mFM_BLOCK_TYPE_PLAYER_HOUSE) { - river_blocks[next_bnum] = start_type; - start_bx[0] = n_bx0; - start_bz[0] = n_bz0; - end = TRUE; - } } - if (end == TRUE) { - int border_river_n = mRF_D2ToD1(bx, 0); - int rail_river_n = mRF_D2ToD1(bx, 1); - - river_blocks[border_river_n] = mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER; - river_blocks[rail_river_n] = mFM_BLOCK_TYPE_TRACKS_RIVER; - } - } - - return TRUE; + return TRUE; } static void mRF_InitFlag(u8* flags, int num) { - int i; + int i; - for (i = 0; i < num; i++) { - *flags++ = 0; - } + for (i = 0; i < num; i++) { + *flags++ = 0; + } } static int mRF_LastCheckRiver(u8* river_blocks, int bx, int bz) { - int x = bx; - int z = bz; - int bnum = mRF_D2ToD1(bx, bz); - u8 type = river_blocks[bnum]; + int x = bx; + int z = bz; + int bnum = mRF_D2ToD1(bx, bz); + u8 type = river_blocks[bnum]; - /* Re-trace each river block */ - while (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER) != FALSE) { - int n_bx; - int n_bz; - u8 direct = mRF_RiverIdx2NextDirect(type - mFM_BLOCK_TYPE_RIVER_SOUTH); + /* Re-trace each river block */ + while (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER) != FALSE) { + int n_bx; + int n_bz; + u8 direct = mRF_RiverIdx2NextDirect(type - mFM_BLOCK_TYPE_RIVER_SOUTH); - mRF_Direct2BlockNo(&n_bx, &n_bz, x, z, direct); - type = river_blocks[mRF_D2ToD1(n_bx, n_bz)]; - x = n_bx; - z = n_bz; - } + mRF_Direct2BlockNo(&n_bx, &n_bz, x, z, direct); + type = river_blocks[mRF_D2ToD1(n_bx, n_bz)]; + x = n_bx; + z = n_bz; + } - if (z > 6) { - return TRUE; - } + if (z > 6) { + return TRUE; + } - return FALSE; // river must have ended at the beach acres + return FALSE; // river must have ended at the beach acres } static int mRF_DecideBaseRiver(u8* river_blocks, u8* cliff_blocks) { - static u8 keep_blocks[BLOCK_TOTAL_NUM]; - static u8 challenge_flag[BLOCK_TOTAL_NUM]; + static u8 keep_blocks[BLOCK_TOTAL_NUM]; + static u8 challenge_flag[BLOCK_TOTAL_NUM]; - int start_bx; - int start_bz; + int start_bx; + int start_bz; - mRF_CpyBlockData(keep_blocks, cliff_blocks); - mRF_CpyBlockData(river_blocks, keep_blocks); - mRF_CpyBlockData(cliff_blocks, keep_blocks); // ??? + mRF_CpyBlockData(keep_blocks, cliff_blocks); + mRF_CpyBlockData(river_blocks, keep_blocks); + mRF_CpyBlockData(cliff_blocks, keep_blocks); // ??? + + if (mRF_TraceRiverPart1(river_blocks, cliff_blocks, &start_bx, &start_bz) == FALSE) { + return FALSE; + } + + mRF_InitFlag(challenge_flag, (BLOCK_Z_NUM - 2) * BLOCK_X_NUM); + if (mRF_TraceRiverPart2(river_blocks, cliff_blocks, start_bx, start_bz, challenge_flag) != FALSE) { + return mRF_LastCheckRiver(river_blocks, start_bx, start_bz); + } - if (mRF_TraceRiverPart1(river_blocks, cliff_blocks, &start_bx, &start_bz) == FALSE) { return FALSE; - } - - mRF_InitFlag(challenge_flag, (BLOCK_Z_NUM - 2) * BLOCK_X_NUM); - if (mRF_TraceRiverPart2(river_blocks, cliff_blocks, start_bx, start_bz, challenge_flag) != FALSE) { - return mRF_LastCheckRiver(river_blocks, start_bx, start_bz); - } - - return FALSE; } static int mRF_SetRandomBlockData(u8* river_blocks, u8* cliff_blocks) { - if (mRF_DecideBaseCliff(cliff_blocks) != FALSE) { - return mRF_DecideBaseRiver(river_blocks, cliff_blocks); - } + if (mRF_DecideBaseCliff(cliff_blocks) != FALSE) { + return mRF_DecideBaseRiver(river_blocks, cliff_blocks); + } - return FALSE; + return FALSE; } static int mRF_GetRiverCrossCliffInfo(int* bx, int* bz, u8* blocks) { - static u8 cross_data[7] = { - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER - }; + static u8 cross_data[7] = { + // clang-format off + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER, + // clang-format on + }; - int i; - int j; - int crossings = 0; + int i; + int j; + int crossings = 0; - for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { - for (j = 0; j < 7; j++) { - if (cross_data[j] == blocks[i]) { - /* Only log the first crossing position */ - if (crossings == 0) { - bz[0] = i / BLOCK_X_NUM; - bx[0] = i % BLOCK_X_NUM; + for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { + for (j = 0; j < 7; j++) { + if (cross_data[j] == blocks[i]) { + /* Only log the first crossing position */ + if (crossings == 0) { + bz[0] = i / BLOCK_X_NUM; + bx[0] = i % BLOCK_X_NUM; + } + + crossings++; + } } - - crossings++; - } } - } - return crossings; + return crossings; } static int mRF_SetBridgeBlock(u8* blocks, int stepmode) { - int before_cross; - int after_cross; - int bx; - int bz; - int cross_bx; - int cross_bz; - int flags; - u8* blocks_p; - u8* blocks_p2; - int rng; - int cross_num; + int before_cross; + int after_cross; + int bx; + int bz; + int cross_bx; + int cross_bz; + int flags; + u8* blocks_p; + u8* blocks_p2; + int rng; + int cross_num; - before_cross = 0; - after_cross = 0; - flags = 0; - blocks_p = blocks; - blocks_p2 = blocks; - rng = mRF_GetRandom(10) & 1; - mRF_GetRiverCrossCliffInfo(&cross_bx, &cross_bz, blocks); - - for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { - for (bx = 0; bx < BLOCK_X_NUM; bx++) { - if (mRF_CheckBlockGroup(*blocks, mRF_BLOCK_GROUP_RIVER) != FALSE) { - if (bz < cross_bz) { - before_cross++; - } - else if (bz > cross_bz) { - after_cross++; - } - } - - blocks++; - } - } - - if (before_cross != 0) { - int selected = mRF_GetRandom(before_cross); - int cross_num = 0; + before_cross = 0; + after_cross = 0; + flags = 0; + blocks_p = blocks; + blocks_p2 = blocks; + rng = mRF_GetRandom(10) & 1; + mRF_GetRiverCrossCliffInfo(&cross_bx, &cross_bz, blocks); for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { - for (bx = 0; bx < BLOCK_X_NUM; bx++) { - if (mRF_CheckBlockGroup(*blocks_p, mRF_BLOCK_GROUP_RIVER) != FALSE && bz < cross_bz) { - if (cross_num == selected) { - blocks_p[0] += 7; // change to a bridge block type - flags |= mRF_TO_BIT(BRIDGE_UPPER); - // no break? - } + for (bx = 0; bx < BLOCK_X_NUM; bx++) { + if (mRF_CheckBlockGroup(*blocks, mRF_BLOCK_GROUP_RIVER) != FALSE) { + if (bz < cross_bz) { + before_cross++; + } else if (bz > cross_bz) { + after_cross++; + } + } - cross_num++; + blocks++; } - - blocks_p++; - } } - } - if (after_cross != 0 && stepmode == mRF_STEPMODE_TWO && rng != 0) { - int selected = mRF_GetRandom(after_cross); - int cross_num = 0; + if (before_cross != 0) { + int selected = mRF_GetRandom(before_cross); + int cross_num = 0; - for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { - for (bx = 0; bx < BLOCK_X_NUM; bx++) { - if (mRF_CheckBlockGroup(*blocks_p2, mRF_BLOCK_GROUP_RIVER) != FALSE && bz > cross_bz) { - if (cross_num == selected) { - blocks_p2[0] += 7; // change to a bridge block type - flags |= mRF_TO_BIT(BRIDGE_LOWER); - // no break? - } + for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { + for (bx = 0; bx < BLOCK_X_NUM; bx++) { + if (mRF_CheckBlockGroup(*blocks_p, mRF_BLOCK_GROUP_RIVER) != FALSE && bz < cross_bz) { + if (cross_num == selected) { + blocks_p[0] += (mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE - mFM_BLOCK_TYPE_RIVER_SOUTH); // change to a bridge block type + flags |= mRF_TO_BIT(BRIDGE_UPPER); + // no break? + } - cross_num++; + cross_num++; + } + + blocks_p++; + } } - - blocks_p2++; - } } - } - return flags; + if (after_cross != 0 && stepmode == mRF_STEPMODE_TWO && rng != 0) { + int selected = mRF_GetRandom(after_cross); + int cross_num = 0; + + for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { + for (bx = 0; bx < BLOCK_X_NUM; bx++) { + if (mRF_CheckBlockGroup(*blocks_p2, mRF_BLOCK_GROUP_RIVER) != FALSE && bz > cross_bz) { + if (cross_num == selected) { + blocks_p2[0] += (mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE - mFM_BLOCK_TYPE_RIVER_SOUTH); // change to a bridge block type + flags |= mRF_TO_BIT(BRIDGE_LOWER); + // no break? + } + + cross_num++; + } + + blocks_p2++; + } + } + } + + return flags; } static s16 l_use_data[BLOCK_TOTAL_NUM]; static void mRF_GetBlockBase(u8* base_table, u8* blocks) { - int bx; + int bx; - for (bx = 0; bx < BLOCK_X_NUM; bx++) { - int bz; - int height = mRF_FIELD_STEP1; - - for (bz = (BLOCK_Z_NUM - 1); bz >= 0; bz--) { - u8 type = blocks[mRF_D2ToD1(bx, bz)]; + for (bx = 0; bx < BLOCK_X_NUM; bx++) { + int bz; + int height = mRF_FIELD_STEP1; - base_table[mRF_D2ToD1(bx, bz)] = height; + for (bz = (BLOCK_Z_NUM - 1); bz >= 0; bz--) { + u8 type = blocks[mRF_D2ToD1(bx, bz)]; - if ( - (mRF_GetSystemBlockInfo(type) & 1) != 0 || - (mRF_GetSystemBlockInfo(type) & 8) != 0 || - (mRF_GetSystemBlockInfo(type) & 16) != 0 || - (type == mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION) || - (type == mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION) - ) { - height++; - } + base_table[mRF_D2ToD1(bx, bz)] = height; + + if ((mRF_GetSystemBlockInfo(type) & mRF_CLIFF_HORIZONTAL) != 0 || (mRF_GetSystemBlockInfo(type) & mRF_CLIFF_TOP_RIGHT) != 0 || + (mRF_GetSystemBlockInfo(type) & mRF_CLIFF_TOP_LEFT) != 0 || (type == mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION) || + (type == mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION)) { + height++; + } + } } - } } static void mRF_InitBlockBase(u8* base_table) { - int i; + int i; - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - *base_table++ = mRF_FIELD_STEP1; - } + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + *base_table++ = mRF_FIELD_STEP1; + } } static void mRF_SetShortData(s16* data, s16 value, int num) { - int i; + int i; - for (i = 0; i != num; i++) { - *data++ = value; - } + for (i = 0; i != num; i++) { + *data++ = value; + } } static int mRF_SearchAlreadyUse(s16 value) { - int i; + int i; - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - if (value == l_use_data[i]) { - return TRUE; + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + if (value == l_use_data[i]) { + return TRUE; + } } - } - return FALSE; + return FALSE; } static int mRF_TypeCombCount(mFM_combo_info_c* combi_info, int combi_count, u8 type, s16 reuse) { - int i; - int count = 0; - - for (i = 0; i < combi_count; i++) { - if (type == combi_info[i].type) { - if (reuse == FALSE) { - if (mRF_SearchAlreadyUse(i) == FALSE) { - count++; - } - } - else if (reuse == TRUE) { - count++; - } - } - } + int i; + int count = 0; - return count; + for (i = 0; i < combi_count; i++) { + if (type == combi_info[i].type) { + if (reuse == FALSE) { + if (mRF_SearchAlreadyUse(i) == FALSE) { + count++; + } + } else if (reuse == TRUE) { + count++; + } + } + } + + return count; } static s16 mRF_IndexInType2BlockNo(mFM_combo_info_c* combi_info, int combi_count, u8 type, int idx, s16 reuse) { - int i; - int count = 0; - - for (i = 0; i < combi_count; i++) { - if (type == combi_info[i].type) { - if (reuse == FALSE) { - if (mRF_SearchAlreadyUse(i) == FALSE) { - if (count == idx) { - return i; - } - - count++; - } - } - else if (reuse == TRUE) { - if (count == idx) { - return i; - } + int i; + int count = 0; - count++; - } + for (i = 0; i < combi_count; i++) { + if (type == combi_info[i].type) { + if (reuse == FALSE) { + if (mRF_SearchAlreadyUse(i) == FALSE) { + if (count == idx) { + return i; + } + + count++; + } + } else if (reuse == TRUE) { + if (count == idx) { + return i; + } + + count++; + } + } } - } - return -1; + return -1; } static mActor_name_t mRF_GetExceptionalSeaBgDownBgName(mActor_name_t sea_bg) { - static mActor_name_t exceptional_table[27][2] = { - { 0x0050, 0x0051 }, - { 0x0055, 0x0056 }, - { 0x0078, 0x0090 }, - { 0x0079, 0x0091 }, - { 0x007a, 0x0092 }, - { 0x007b, 0x0093 }, - { 0x007c, 0x0094 }, - { 0x007d, 0x0095 }, - { 0x007e, 0x0096 }, - { 0x007f, 0x0097 }, - { 0x0080, 0x0098 }, - { 0x0081, 0x0099 }, - { 0x0082, 0x009c }, - { 0x0083, 0x009d }, - { 0x0084, 0x009e }, - { 0x0085, 0x009f }, - { 0x0086, 0x00a0 }, - { 0x0087, 0x00a1 }, - { 0x0088, 0x00a2 }, - { 0x0089, 0x00a3 }, - { 0x008a, 0x00a4 }, - { 0x008b, 0x00a5 }, - { 0x008c, 0x00a6 }, - { 0x008d, 0x00a7 }, - { 0x008e, 0x00a8 }, - { 0x008f, 0x00a9 }, - { 0x0125, 0x0125 } - }; + static mActor_name_t exceptional_table[27][2] = { + // clang-format off + { BG_TYPE_GRD_S_E2_M_1, BG_TYPE_GRD_S_E2_O_1 }, + { BG_TYPE_GRD_S_E3_M_1, BG_TYPE_GRD_S_E3_O_1 }, + { BG_TYPE_GRD_S_M_1, BG_TYPE_GRD_S_O_1 }, + { BG_TYPE_GRD_S_M_2, BG_TYPE_GRD_S_O_2 }, + { BG_TYPE_GRD_S_M_3, BG_TYPE_GRD_S_O_3 }, + { BG_TYPE_GRD_S_M_4, BG_TYPE_GRD_S_O_4 }, + { BG_TYPE_GRD_S_M_5, BG_TYPE_GRD_S_O_5 }, + { BG_TYPE_GRD_S_M_6, BG_TYPE_GRD_S_O_6 }, + { BG_TYPE_GRD_S_M_7, BG_TYPE_GRD_S_O_7 }, + { BG_TYPE_GRD_S_M_8, BG_TYPE_GRD_S_O_8 }, + { BG_TYPE_GRD_S_M_9, BG_TYPE_GRD_S_O_9 }, + { BG_TYPE_GRD_S_M_10, BG_TYPE_GRD_S_O_10 }, + { BG_TYPE_GRD_S_M_R1_1, BG_TYPE_GRD_S_O_R1_1 }, + { BG_TYPE_GRD_S_M_R1_2, BG_TYPE_GRD_S_O_R1_2 }, + { BG_TYPE_GRD_S_M_R1_3, BG_TYPE_GRD_S_O_R1_3 }, + { BG_TYPE_GRD_S_M_R1_4, BG_TYPE_GRD_S_O_R1_4 }, + { BG_TYPE_GRD_S_M_R1_5, BG_TYPE_GRD_S_O_R1_5 }, + { BG_TYPE_GRD_S_M_R1_B_1, BG_TYPE_GRD_S_O_R1_B_1 }, + { BG_TYPE_GRD_S_M_R1_B_2, BG_TYPE_GRD_S_O_R1_B_2 }, + { BG_TYPE_GRD_S_M_R1_B_3, BG_TYPE_GRD_S_O_R1_B_3 }, + { BG_TYPE_GRD_S_M_TA_1, BG_TYPE_GRD_S_O_TA_1 }, + { BG_TYPE_GRD_S_M_TA_2, BG_TYPE_GRD_S_O_TA_2 }, + { BG_TYPE_GRD_S_M_TA_3, BG_TYPE_GRD_S_O_TA_3 }, + { BG_TYPE_GRD_S_M_WF_1, BG_TYPE_GRD_S_O_WF_1 }, + { BG_TYPE_GRD_S_M_WF_2, BG_TYPE_GRD_S_O_WF_2 }, + { BG_TYPE_GRD_S_M_WF_3, BG_TYPE_GRD_S_O_WF_3 }, + { BG_TYPE_NUM, BG_TYPE_NUM }, + // clang-format on + }; - mActor_name_t* exceptional_p = exceptional_table[0]; + mActor_name_t* exceptional_p = exceptional_table[0]; - while (exceptional_p[0] != 0x125) { - if (exceptional_p[0] == sea_bg) { - return exceptional_p[1]; + while (exceptional_p[0] != BG_TYPE_NUM) { + if (exceptional_p[0] == sea_bg) { + return exceptional_p[1]; + } + + exceptional_p += 2; } - exceptional_p += 2; - } - - return sea_bg; + return sea_bg; } static u16 mRF_BgName2RandomConbiNo(mActor_name_t bg_name, mFM_combo_info_c* combi_info, int combi_count) { - int count = 0; - mFM_combo_info_c* combi_info_p; - int i; - - combi_info_p = combi_info; - for (i = 0; i < combi_count; i++) { - if (combi_info_p->bg_id == bg_name && combi_info_p->type != mFM_BLOCK_TYPE_NONE) { - count++; - } - - combi_info_p++; - } - - if (count != 0) { - int n_count = 0; - - /* @BUG - this always selects the first entry instead of a random one */ - #ifndef BUGFIXES - int selected = mRF_GetRandom(0); // what the hell? - #else - int selected = mRF_GetRandom(count); - #endif + int count = 0; + mFM_combo_info_c* combi_info_p; + int i; combi_info_p = combi_info; for (i = 0; i < combi_count; i++) { - if (combi_info_p->bg_id == bg_name && combi_info_p->type != 0xFF) { - if (selected == n_count) { - return i; + if (combi_info_p->bg_id == bg_name && combi_info_p->type != mFM_BLOCK_TYPE_NONE) { + count++; } - n_count++; - } - - combi_info_p++; + combi_info_p++; } - } - return combi_count; + if (count != 0) { + int n_count = 0; + +/* @BUG - this always selects the first entry instead of a random one */ +#ifndef BUGFIXES + int selected = mRF_GetRandom(0); // what the hell? +#else + int selected = mRF_GetRandom(count); +#endif + + combi_info_p = combi_info; + for (i = 0; i < combi_count; i++) { + if (combi_info_p->bg_id == bg_name && combi_info_p->type != mFM_BLOCK_TYPE_NONE) { + if (selected == n_count) { + return i; + } + + n_count++; + } + + combi_info_p++; + } + } + + return combi_count; } static void mRF_SelectBlock(mFM_combination_c* combi_table, mFM_combo_info_c* combi_info, int combi_count, u8* blocks) { - int bx; - int bz; - - mRF_SetShortData(l_use_data, -1, BLOCK_TOTAL_NUM); + int bx; + int bz; - for (bz = 0; bz < BLOCK_Z_NUM; bz++) { - for (bx = 0; bx < BLOCK_X_NUM; bx++) { - int bnum = mRF_D2ToD1(bx, bz); - u8 type = blocks[mRF_D2ToD1(bx, bz)]; + mRF_SetShortData(l_use_data, -1, BLOCK_TOTAL_NUM); - if (type == mFM_BLOCK_TYPE_SEA_EXCEPTIONAL) { - mActor_name_t down_bg_name = mRF_GetExceptionalSeaBgDownBgName(combi_info[combi_table[mRF_D2ToD1(bx, bz - 1)].combination_type].bg_id); - combi_table[bnum].combination_type = mRF_BgName2RandomConbiNo(down_bg_name, combi_info, combi_count); - } - else { - int type_count = mRF_TypeCombCount(combi_info, combi_count, type, FALSE); - int selected; - s16 block_no; - - if (type_count != 0) { - selected = mRF_GetRandom(type_count); - block_no = mRF_IndexInType2BlockNo(combi_info, combi_count, type, selected, FALSE); - - if (block_no != -1) { - combi_table[bnum].combination_type = block_no; - l_use_data[bnum] = block_no; - } - else { - selected = mRF_GetRandom(mRF_TypeCombCount(combi_info, combi_count, type, TRUE)); - block_no = mRF_IndexInType2BlockNo(combi_info, combi_count, type, selected, TRUE); + for (bz = 0; bz < BLOCK_Z_NUM; bz++) { + for (bx = 0; bx < BLOCK_X_NUM; bx++) { + int bnum = mRF_D2ToD1(bx, bz); + u8 type = blocks[mRF_D2ToD1(bx, bz)]; - if (block_no != -1) { - combi_table[bnum].combination_type = block_no; - l_use_data[bnum] = block_no; + if (type == mFM_BLOCK_TYPE_SEA_EXCEPTIONAL) { + mActor_name_t down_bg_name = mRF_GetExceptionalSeaBgDownBgName( + combi_info[combi_table[mRF_D2ToD1(bx, bz - 1)].combination_type].bg_id); + combi_table[bnum].combination_type = mRF_BgName2RandomConbiNo(down_bg_name, combi_info, combi_count); + } else { + int type_count = mRF_TypeCombCount(combi_info, combi_count, type, FALSE); + int selected; + s16 block_no; + + if (type_count != 0) { + selected = mRF_GetRandom(type_count); + block_no = mRF_IndexInType2BlockNo(combi_info, combi_count, type, selected, FALSE); + + if (block_no != -1) { + combi_table[bnum].combination_type = block_no; + l_use_data[bnum] = block_no; + } else { + selected = mRF_GetRandom(mRF_TypeCombCount(combi_info, combi_count, type, TRUE)); + block_no = mRF_IndexInType2BlockNo(combi_info, combi_count, type, selected, TRUE); + + if (block_no != -1) { + combi_table[bnum].combination_type = block_no; + l_use_data[bnum] = block_no; + } else { + combi_table[bnum].combination_type = BLOCK_COMBI_GRD_S_F_7; + } + } + } else { + selected = mRF_GetRandom(mRF_TypeCombCount(combi_info, combi_count, type, TRUE)); + block_no = mRF_IndexInType2BlockNo(combi_info, combi_count, type, selected, TRUE); + + if (block_no != -1) { + combi_table[bnum].combination_type = block_no; + l_use_data[bnum] = block_no; + } else { + combi_table[bnum].combination_type = BLOCK_COMBI_GRD_S_F_7; + } + } } - else { - combi_table[bnum].combination_type = 161; + + if (type == mFM_BLOCK_TYPE_ISLAND_RIGHT || type == mFM_BLOCK_TYPE_ISLAND_LEFT) { + mActor_name_t bg_id = combi_info[combi_table[bnum].combination_type].bg_id; + + if (type == mFM_BLOCK_TYPE_ISLAND_LEFT) { + Save_Get(island).bg_data[0] = bg_id - BG_TYPE_GRD_S_IL_1; + } else { + Save_Get(island).bg_data[1] = bg_id - BG_TYPE_GRD_S_IR_1; + } } - } } - else { - selected = mRF_GetRandom(mRF_TypeCombCount(combi_info, combi_count, type, TRUE)); - block_no = mRF_IndexInType2BlockNo(combi_info, combi_count, type, selected, TRUE); - - if (block_no != -1) { - combi_table[bnum].combination_type = block_no; - l_use_data[bnum] = block_no; - } - else { - combi_table[bnum].combination_type = 161; - } - } - } - - if (type == mFM_BLOCK_TYPE_ISLAND_RIGHT || type == mFM_BLOCK_TYPE_ISLAND_LEFT) { - mActor_name_t bg_id = combi_info[combi_table[bnum].combination_type].bg_id; - - if (type == mFM_BLOCK_TYPE_ISLAND_LEFT) { - Save_Get(island).bg_data[0] = bg_id - 116; - } - else { - Save_Get(island).bg_data[1] = bg_id - 112; - } - } } - } } static void mRF_CopyBlockBaseHeightData(mFM_combination_c* combi_table, u8* base_height) { - int i; + int i; - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - combi_table->height = (u8)*base_height; - combi_table++; - base_height++; - } + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + combi_table->height = (u8)*base_height; + combi_table++; + base_height++; + } } static void mRF_MakeBaseLandformStep2(u8* cliff_blocks, u8* river_blocks) { - mRF_CpyBlockData(cliff_blocks, l_base_blocks); - mRF_CpyBlockData(river_blocks, l_base_blocks); - - while (mRF_SetRandomBlockData(river_blocks, cliff_blocks) == FALSE) { mRF_CpyBlockData(cliff_blocks, l_base_blocks); mRF_CpyBlockData(river_blocks, l_base_blocks); - } - mRF_DecideRiverAlbuminCliff(cliff_blocks, river_blocks); + while (mRF_SetRandomBlockData(river_blocks, cliff_blocks) == FALSE) { + mRF_CpyBlockData(cliff_blocks, l_base_blocks); + mRF_CpyBlockData(river_blocks, l_base_blocks); + } + + mRF_DecideRiverAlbuminCliff(cliff_blocks, river_blocks); } static int mRF_CountDirectedInfoCliff(u8* blocks, int bx, int bz, int half) { - int x; - int z; - int bnum; - u8 type; - int side; - int count; - int n_bx; - int n_bz; + int x; + int z; + int bnum; + u8 type; + int side; + int count; + int n_bx; + int n_bz; - x = bx + 1; - z = bz; - bnum = mRF_D2ToD1(x, z); - side = mRF_RIVER_SIDE_LEFT; - count = 0; - type = blocks[bnum]; + x = bx + 1; + z = bz; + bnum = mRF_D2ToD1(x, z); + side = mRF_RIVER_SIDE_LEFT; + count = 0; + type = blocks[bnum]; - while (type != mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION) { - int idx = mRF_BlockType2CliffIndex(type); + while (type != mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION) { + int idx = mRF_BlockType2CliffIndex(type); - if (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER_CLIFF_ANY) != FALSE) { - /* We just hit the river, so we're on the right "half" of the town now */ - side = mRF_RIVER_SIDE_RIGHT; - } - else if (side == half) { - count++; + if (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER_CLIFF_ANY) != FALSE) { + /* We just hit the river, so we're on the right "half" of the town now */ + side = mRF_RIVER_SIDE_RIGHT; + } else if (side == half) { + count++; + } + + mRF_Direct2BlockNo(&n_bx, &n_bz, x, z, l_cliff_next_direct[idx]); + mRF_D2ToD1(n_bx, n_bz); // why is this here? maybe setting bnum? + x = n_bx; + z = n_bz; + type = blocks[mRF_D2ToD1(n_bx, n_bz)]; } - mRF_Direct2BlockNo(&n_bx, &n_bz, x, z, l_cliff_next_direct[idx]); - mRF_D2ToD1(n_bx, n_bz); // why is this here? maybe setting bnum? - x = n_bx; - z = n_bz; - type = blocks[mRF_D2ToD1(n_bx, n_bz)]; - } - - return count; + return count; } static int mRF_SetSlopeDirectedInfoCliff(u8* blocks, int bx, int bz, int half, int selected_idx) { - int x; - int z; - int bnum; - u8 type; - int side; - int count; - int n_bx; - int n_bz; + int x; + int z; + int bnum; + u8 type; + int side; + int count; + int n_bx; + int n_bz; - x = bx + 1; - z = bz; - bnum = mRF_D2ToD1(x, z); - side = mRF_RIVER_SIDE_LEFT; - count = 0; - type = blocks[bnum]; - - while (type != mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION) { - int idx = mRF_BlockType2CliffIndex(type); - - if (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER_CLIFF_ANY) != FALSE) { - /* We just hit the river, so we're on the right "half" of the town now */ - side = mRF_RIVER_SIDE_RIGHT; - } - else if (side == half) { - if (count == selected_idx) { - blocks[bnum] = mFM_BLOCK_TYPE_SLOPE_HORIZONTAL + idx; // set slope - return TRUE; - } - - count++; - } - - mRF_Direct2BlockNo(&n_bx, &n_bz, x, z, l_cliff_next_direct[idx]); - mRF_D2ToD1(n_bx, n_bz); // why is this here? maybe setting bnum? - x = n_bx; - z = n_bz; - bnum = mRF_D2ToD1(n_bx, n_bz); + x = bx + 1; + z = bz; + bnum = mRF_D2ToD1(x, z); + side = mRF_RIVER_SIDE_LEFT; + count = 0; type = blocks[bnum]; - } - return FALSE; + while (type != mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION) { + int idx = mRF_BlockType2CliffIndex(type); + + if (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER_CLIFF_ANY) != FALSE) { + /* We just hit the river, so we're on the right "half" of the town now */ + side = mRF_RIVER_SIDE_RIGHT; + } else if (side == half) { + if (count == selected_idx) { + blocks[bnum] = mFM_BLOCK_TYPE_SLOPE_HORIZONTAL + idx; // set slope + return TRUE; + } + + count++; + } + + mRF_Direct2BlockNo(&n_bx, &n_bz, x, z, l_cliff_next_direct[idx]); + mRF_D2ToD1(n_bx, n_bz); // why is this here? maybe setting bnum? + x = n_bx; + z = n_bz; + bnum = mRF_D2ToD1(n_bx, n_bz); + type = blocks[bnum]; + } + + return FALSE; } static int mRF_SetSlopeBlock(u8* blocks) { - int bz; - int flags = 0; + int bz; + int flags = 0; - for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { - /* Check for start of cliff */ - if (blocks[mRF_D2ToD1(0, bz)] == mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION) { - int possibilities = mRF_CountDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_LEFT); // left side of river - int selected; + for (bz = 0; bz < (BLOCK_Z_NUM - 2); bz++) { + /* Check for start of cliff */ + if (blocks[mRF_D2ToD1(0, bz)] == mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION) { + int possibilities = mRF_CountDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_LEFT); // left side of river + int selected; - if (possibilities != 0) { - selected = mRF_GetRandom(possibilities); - - if (mRF_SetSlopeDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_LEFT, selected) != FALSE) { - flags |= mRF_TO_BIT(SLOPE_LEFT); + if (possibilities != 0) { + selected = mRF_GetRandom(possibilities); + + if (mRF_SetSlopeDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_LEFT, selected) != FALSE) { + flags |= mRF_TO_BIT(SLOPE_LEFT); + } + } + + possibilities = mRF_CountDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_RIGHT); // right side of river + + if (possibilities != 0) { + selected = mRF_GetRandom(possibilities); + + if (mRF_SetSlopeDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_RIGHT, selected) != FALSE) { + flags |= mRF_TO_BIT(SLOPE_RIGHT); + } + } } - } - - possibilities = mRF_CountDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_RIGHT); // right side of river - - if (possibilities != 0) { - selected = mRF_GetRandom(possibilities); - - if (mRF_SetSlopeDirectedInfoCliff(blocks, 0, bz, mRF_RIVER_SIDE_RIGHT, selected) != FALSE) { - flags |= mRF_TO_BIT(SLOPE_RIGHT); - } - } } - } - return flags; + return flags; } static int mRF_SetBridgeAndSlopeBlock(u8* blocks, int stepmode) { - int flags = 0; + int flags = 0; - flags |= mRF_SetBridgeBlock(blocks, stepmode); - flags |= mRF_SetSlopeBlock(blocks); - return flags; + flags |= mRF_SetBridgeBlock(blocks, stepmode); + flags |= mRF_SetSlopeBlock(blocks); + return flags; } static void mRF_MakeBaseHeightTable(u8* base_height, u8* blocks) { - mRF_InitBlockBase(base_height); - mRF_GetBlockBase(base_height, blocks); + mRF_InitBlockBase(base_height); + mRF_GetBlockBase(base_height, blocks); } static s16 mRF_river_left_right_info[BLOCK_TOTAL_NUM]; static s16 mRF_cliff_up_down_info[BLOCK_TOTAL_NUM]; static void mRF_MakeFlatPlaceInfomation(u8* blocks) { - int bnum; - u8 type; - int bx; - int bz; - s16 side; - int i; + int bnum; + u8 type; + int bx; + int bz; + s16 side; + int i; - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - mRF_river_left_right_info[i] = mRF_RIVER_SIDE_BOTH; // not set - mRF_cliff_up_down_info[i] = mRF_CLIFF_HEIGHT_BOTH; // not set - } - - /* Mark cliff heights */ - for (bx = 1; bx < (BLOCK_X_NUM - 1); bx++) { - side = mRF_CLIFF_HEIGHT_ABOVE; // above cliff - - for (bz = 1; bz < (BLOCK_Z_NUM - 1); bz++) { - bnum = mRF_D2ToD1(bx, bz); - type = blocks[bnum]; - - if (side == mRF_CLIFF_HEIGHT_ABOVE && mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_CLIFF_ANY) != FALSE) { - side = mRF_CLIFF_HEIGHT_BELOW; // below cliff - } - - mRF_cliff_up_down_info[bnum] = side; + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + mRF_river_left_right_info[i] = mRF_RIVER_SIDE_BOTH; // not set + mRF_cliff_up_down_info[i] = mRF_CLIFF_HEIGHT_BOTH; // not set } - } - - /* Mark river sides */ - for (bz = 1; bz < (BLOCK_Z_NUM - 1); bz++) { - side = mRF_RIVER_SIDE_LEFT; // left of river + /* Mark cliff heights */ for (bx = 1; bx < (BLOCK_X_NUM - 1); bx++) { - bnum = mRF_D2ToD1(bx, bz); - type = blocks[bnum]; + side = mRF_CLIFF_HEIGHT_ABOVE; // above cliff - if ( - side == mRF_RIVER_SIDE_LEFT && - (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER) || mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER_CLIFF_ANY)) - ) { - side = mRF_RIVER_SIDE_RIGHT; // right of river - } + for (bz = 1; bz < (BLOCK_Z_NUM - 1); bz++) { + bnum = mRF_D2ToD1(bx, bz); + type = blocks[bnum]; - mRF_river_left_right_info[bnum] = side; + if (side == mRF_CLIFF_HEIGHT_ABOVE && mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_CLIFF_ANY) != FALSE) { + side = mRF_CLIFF_HEIGHT_BELOW; // below cliff + } + + mRF_cliff_up_down_info[bnum] = side; + } + } + + /* Mark river sides */ + for (bz = 1; bz < (BLOCK_Z_NUM - 1); bz++) { + side = mRF_RIVER_SIDE_LEFT; // left of river + + for (bx = 1; bx < (BLOCK_X_NUM - 1); bx++) { + bnum = mRF_D2ToD1(bx, bz); + type = blocks[bnum]; + + if (side == mRF_RIVER_SIDE_LEFT && (mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER) || + mRF_CheckBlockGroup(type, mRF_BLOCK_GROUP_RIVER_CLIFF_ANY))) { + side = mRF_RIVER_SIDE_RIGHT; // right of river + } + + mRF_river_left_right_info[bnum] = side; + } } - } } static int mRF_JudgeFlatBlock(u8* blocks, int bnum, int river_side, int cliff_height) { - if ( - river_side < mRF_RIVER_SIDE_LEFT || river_side >= mRF_RIVER_SIDE_NUM || - cliff_height < mRF_CLIFF_HEIGHT_ABOVE || cliff_height >= mRF_CLIFF_HEIGHT_NUM - ) { - return FALSE; - } + if (river_side < mRF_RIVER_SIDE_LEFT || river_side >= mRF_RIVER_SIDE_NUM || cliff_height < mRF_CLIFF_HEIGHT_ABOVE || + cliff_height >= mRF_CLIFF_HEIGHT_NUM) { + return FALSE; + } - if (bnum < 0 || bnum >= ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM)) { - return FALSE; - } + if (bnum < 0 || bnum >= ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM)) { + return FALSE; + } - if (blocks[bnum] == mFM_BLOCK_TYPE_FLAT) { - if (cliff_height != mRF_CLIFF_HEIGHT_BOTH) { - if (river_side != mRF_RIVER_SIDE_BOTH) { - if (river_side == mRF_river_left_right_info[bnum] && cliff_height == mRF_cliff_up_down_info[bnum]) { - return TRUE; + if (blocks[bnum] == mFM_BLOCK_TYPE_FLAT) { + if (cliff_height != mRF_CLIFF_HEIGHT_BOTH) { + if (river_side != mRF_RIVER_SIDE_BOTH) { + if (river_side == mRF_river_left_right_info[bnum] && cliff_height == mRF_cliff_up_down_info[bnum]) { + return TRUE; + } + } else if (cliff_height == mRF_cliff_up_down_info[bnum]) { + return TRUE; + } + } else if (river_side != mRF_RIVER_SIDE_BOTH) { + if (river_side == mRF_river_left_right_info[bnum] && cliff_height == mRF_cliff_up_down_info[bnum]) { + return TRUE; + } + } else if (cliff_height == mRF_cliff_up_down_info[bnum]) { + return TRUE; } - } - else if (cliff_height == mRF_cliff_up_down_info[bnum]) { - return TRUE; - } } - else if (river_side != mRF_RIVER_SIDE_BOTH) { - if (river_side == mRF_river_left_right_info[bnum] && cliff_height == mRF_cliff_up_down_info[bnum]) { - return TRUE; - } - } - else if (cliff_height == mRF_cliff_up_down_info[bnum]) { - return TRUE; - } - } - return FALSE; + return FALSE; } static int mRF_CountFlatBlock(u8* blocks, int river_side, int cliff_height) { - int i; - int count = 0; - - for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { - if (mRF_JudgeFlatBlock(blocks, i, river_side, cliff_height) != FALSE) { - count++; - } - } + int i; + int count = 0; - return count; + for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { + if (mRF_JudgeFlatBlock(blocks, i, river_side, cliff_height) != FALSE) { + count++; + } + } + + return count; } static int mRF_RewriteFlatType(u8* blocks, int idx, u8 type, int river_side, int cliff_height) { - int i; - int count = 0; + int i; + int count = 0; - for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { - if (mRF_JudgeFlatBlock(blocks, i, river_side, cliff_height) != FALSE) { - if (count == idx) { - blocks[i] = type; - return i; - } + for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { + if (mRF_JudgeFlatBlock(blocks, i, river_side, cliff_height) != FALSE) { + if (count == idx) { + blocks[i] = type; + return i; + } - count++; + count++; + } } - } - return -1; + return -1; } static int mRF_FlatBlock2Unique(u8* blocks, u8 unique_type, int river_side, int cliff_height) { - int num = mRF_CountFlatBlock(blocks, river_side, cliff_height); + int num = mRF_CountFlatBlock(blocks, river_side, cliff_height); - if (num != 0) { - int selected = mRF_GetRandom(num); - - if (mRF_RewriteFlatType(blocks, selected, unique_type, river_side, cliff_height) != -1) { - return TRUE; + if (num != 0) { + int selected = mRF_GetRandom(num); + + if (mRF_RewriteFlatType(blocks, selected, unique_type, river_side, cliff_height) != -1) { + return TRUE; + } } - } - return FALSE; + return FALSE; } static int mRF_SetNeedleworkAndWharfBlock(u8* blocks) { - int flags = 0; - int needlework_bx = mRF_GetRandom(3); - int i; - int bx = 0; + int flags = 0; + int needlework_bx = mRF_GetRandom(3); + int i; + int bx = 0; - if (blocks[mRF_D2ToD1(5, 6)] == mFM_BLOCK_TYPE_BEACH) { - blocks[mRF_D2ToD1(5, 6)] = mFM_BLOCK_TYPE_PORT; - } - else { - return 0; - } - - for (i = 1; i < (BLOCK_X_NUM - 1); i++) { - int bnum = mRF_D2ToD1(i, 6); - - if (blocks[bnum] == mFM_BLOCK_TYPE_BEACH) { - if (needlework_bx == bx) { - blocks[bnum] = mFM_BLOCK_TYPE_NEEDLEWORK; - flags |= mRF_TO_BIT(NEEDLEWORK); - } - - bx++; + if (blocks[mRF_D2ToD1(5, 6)] == mFM_BLOCK_TYPE_BEACH) { + blocks[mRF_D2ToD1(5, 6)] = mFM_BLOCK_TYPE_PORT; + } else { + return 0; } - } - return flags; + for (i = 1; i < (BLOCK_X_NUM - 1); i++) { + int bnum = mRF_D2ToD1(i, 6); + + if (blocks[bnum] == mFM_BLOCK_TYPE_BEACH) { + if (needlework_bx == bx) { + blocks[bnum] = mFM_BLOCK_TYPE_NEEDLEWORK; + flags |= mRF_TO_BIT(NEEDLEWORK); + } + + bx++; + } + } + + return flags; } static int mRF_SetUniqueFlatBlock(u8* blocks) { - int flags = 0; - int side0 = mRF_GetRandom(100) & 1; - int side1 = (side0 ^ 1) & 1; - - /* Wishing Well should be on one side of the river below the cliff */ - if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_SHRINE, side0, mRF_CLIFF_HEIGHT_BELOW)) { - flags |= mRF_TO_BIT(SHRINE); - } - else if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_SHRINE, side1, mRF_CLIFF_HEIGHT_BELOW)) { - flags |= mRF_TO_BIT(SHRINE); - } + int flags = 0; + int side0 = mRF_GetRandom(100) & 1; + int side1 = (side0 ^ 1) & 1; - /* Police Station prefers to be on the opposite side of the river from the Wishing Well if possible */ - if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_POLICE_BOX, side1, mRF_CLIFF_HEIGHT_BELOW)) { - flags |= mRF_TO_BIT(POLICE); - } - else if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_POLICE_BOX, side0, mRF_CLIFF_HEIGHT_BELOW)) { - flags |= mRF_TO_BIT(POLICE); - } + /* Wishing Well should be on one side of the river below the cliff */ + if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_SHRINE, side0, mRF_CLIFF_HEIGHT_BELOW)) { + flags |= mRF_TO_BIT(SHRINE); + } else if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_SHRINE, side1, mRF_CLIFF_HEIGHT_BELOW)) { + flags |= mRF_TO_BIT(SHRINE); + } - /* Museum can be on either side of the river below the cliff */ - if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_MUSEUM, mRF_RIVER_SIDE_BOTH, mRF_CLIFF_HEIGHT_BELOW)) { - flags |= mRF_TO_BIT(MUSEUM); - } + /* Police Station prefers to be on the opposite side of the river from the Wishing Well if possible */ + if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_POLICE_BOX, side1, mRF_CLIFF_HEIGHT_BELOW)) { + flags |= mRF_TO_BIT(POLICE); + } else if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_POLICE_BOX, side0, mRF_CLIFF_HEIGHT_BELOW)) { + flags |= mRF_TO_BIT(POLICE); + } - return flags; + /* Museum can be on either side of the river below the cliff */ + if (mRF_FlatBlock2Unique(blocks, mFM_BLOCK_TYPE_MUSEUM, mRF_RIVER_SIDE_BOTH, mRF_CLIFF_HEIGHT_BELOW)) { + flags |= mRF_TO_BIT(MUSEUM); + } + + return flags; } static int mRF_SetUniqueRailBlock(u8* blocks) { - u8 t0; - u8 t1; - int set_t0; - int set_t1; + u8 t0; + u8 t1; + int set_t0; + int set_t1; - if (mRF_GetRandom(1000) & 1) { - t0 = mFM_BLOCK_TYPE_TRACKS_SHOP; - t1 = mFM_BLOCK_TYPE_TRACKS_POST_OFFICE; - } - else { - t0 = mFM_BLOCK_TYPE_TRACKS_POST_OFFICE; - t1 = mFM_BLOCK_TYPE_TRACKS_SHOP; - } - - set_t0 = FALSE; - set_t1 = FALSE; - - while (set_t0 == FALSE) { - int bx = 1 + mRF_GetRandom(2); - int bnum = mRF_D2ToD1(bx, 1); // A-1 or A-2 - - if (blocks[bnum] == mFM_BLOCK_TYPE_TRACKS_DUMP) { - blocks[bnum] = t0; - set_t0 = TRUE; + if (mRF_GetRandom(1000) & 1) { + t0 = mFM_BLOCK_TYPE_TRACKS_SHOP; + t1 = mFM_BLOCK_TYPE_TRACKS_POST_OFFICE; + } else { + t0 = mFM_BLOCK_TYPE_TRACKS_POST_OFFICE; + t1 = mFM_BLOCK_TYPE_TRACKS_SHOP; } - } - while (set_t1 == FALSE) { - int bx = 4 + mRF_GetRandom(2); - int bnum = mRF_D2ToD1(bx, 1); // A-4 or A-5 + set_t0 = FALSE; + set_t1 = FALSE; - if (blocks[bnum] == mFM_BLOCK_TYPE_TRACKS_DUMP) { - blocks[bnum] = t1; - set_t1 = TRUE; + while (set_t0 == FALSE) { + int bx = 1 + mRF_GetRandom(2); + int bnum = mRF_D2ToD1(bx, 1); // A-1 or A-2 + + if (blocks[bnum] == mFM_BLOCK_TYPE_TRACKS_DUMP) { + blocks[bnum] = t0; + set_t0 = TRUE; + } + } + + while (set_t1 == FALSE) { + int bx = 4 + mRF_GetRandom(2); + int bnum = mRF_D2ToD1(bx, 1); // A-4 or A-5 + + if (blocks[bnum] == mFM_BLOCK_TYPE_TRACKS_DUMP) { + blocks[bnum] = t1; + set_t1 = TRUE; + } } - } } static int mRF_CountPureRiver(u8* blocks) { - int count = 0; - int i; - - for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { - if ( - blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH || - blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_EAST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST_SOUTH || - blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_WEST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST_SOUTH - ) { - count++; - } - } - - return count; -} - -static int mRF_SetPoolDirectedRiverBlock(u8* blocks, int idx) { - int count = 0; - int i; - - for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { - if ( - blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH || - blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_EAST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST_SOUTH || - blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_WEST || - blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST_SOUTH - ) { - if (count == idx) { - blocks[i] = 29 + blocks[i]; - return TRUE; - } - - count++; - } - } - - return FALSE; -} - -static int mRF_SetPoolBlock(u8* blocks) { - int pure_river_num = mRF_CountPureRiver(blocks); - - if (pure_river_num != 0) { - int selected = mRF_GetRandom(pure_river_num); - - if (mRF_SetPoolDirectedRiverBlock(blocks, selected) != FALSE) { - return mRF_TO_BIT(POOL); - } - } - - return 0; -} - -static void mRF_SetMarinBlock(u8* blocks) { - int i; - - for (i = 1; i < (BLOCK_X_NUM - 1); i++) { - int bnum = mRF_D2ToD1(i, 6); - - if (blocks[bnum] == mFM_BLOCK_TYPE_FLAT) { - blocks[bnum] = mFM_BLOCK_TYPE_BEACH; - } - else if (blocks[bnum] == mFM_BLOCK_TYPE_RIVER_SOUTH) { - blocks[bnum] = mFM_BLOCK_TYPE_BEACH_RIVER; - } - } - - blocks[mRF_D2ToD1(0, 6)] = mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT; - blocks[mRF_D2ToD1(6, 6)] = mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT; -} - -static void mRF_InitCombTable(mFM_combination_c* combi_table) { - static mFM_combination_c init_cmb = { 1, mRF_FIELD_STEP1 }; - int i; - - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - combi_table[0] = init_cmb; - combi_table++; - } -} - -static int mRF_SetSeaBlockWithBridgeRiver(u8* blocks, int flags) { - if ((flags & mRF_TO_BIT(BRIDGE_LOWER)) == 0) { + int count = 0; int i; for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { - if (blocks[i] == mFM_BLOCK_TYPE_BEACH_RIVER) { - blocks[i] = mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE; - return mRF_TO_BIT(BRIDGE_LOWER); - } + if (blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH || blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST || + blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST || blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_EAST || + blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST_SOUTH || blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_WEST || + blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST_SOUTH) { + count++; + } } - } - - return 0; + + return count; +} + +static int mRF_SetPoolDirectedRiverBlock(u8* blocks, int idx) { + int count = 0; + int i; + + for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { + if (blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH || blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST || + blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST || blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_EAST || + blocks[i] == mFM_BLOCK_TYPE_RIVER_EAST_SOUTH || blocks[i] == mFM_BLOCK_TYPE_RIVER_SOUTH_WEST || + blocks[i] == mFM_BLOCK_TYPE_RIVER_WEST_SOUTH) { + if (count == idx) { + blocks[i] = (mFM_BLOCK_TYPE_POOL_SOUTH - mFM_BLOCK_TYPE_RIVER_SOUTH) + blocks[i]; + return TRUE; + } + + count++; + } + } + + return FALSE; +} + +static int mRF_SetPoolBlock(u8* blocks) { + int pure_river_num = mRF_CountPureRiver(blocks); + + if (pure_river_num != 0) { + int selected = mRF_GetRandom(pure_river_num); + + if (mRF_SetPoolDirectedRiverBlock(blocks, selected) != FALSE) { + return mRF_TO_BIT(POOL); + } + } + + return 0; +} + +static void mRF_SetMarinBlock(u8* blocks) { + int i; + + for (i = 1; i < (BLOCK_X_NUM - 1); i++) { + int bnum = mRF_D2ToD1(i, 6); + + if (blocks[bnum] == mFM_BLOCK_TYPE_FLAT) { + blocks[bnum] = mFM_BLOCK_TYPE_BEACH; + } else if (blocks[bnum] == mFM_BLOCK_TYPE_RIVER_SOUTH) { + blocks[bnum] = mFM_BLOCK_TYPE_BEACH_RIVER; + } + } + + blocks[mRF_D2ToD1(0, 6)] = mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT; + blocks[mRF_D2ToD1(6, 6)] = mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT; +} + +static void mRF_InitCombTable(mFM_combination_c* combi_table) { + static mFM_combination_c init_cmb = { 1, mRF_FIELD_STEP1 }; + int i; + + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + combi_table[0] = init_cmb; + combi_table++; + } +} + +static int mRF_SetSeaBlockWithBridgeRiver(u8* blocks, int flags) { + if ((flags & mRF_TO_BIT(BRIDGE_LOWER)) == 0) { + int i; + + for (i = 0; i < ((BLOCK_Z_NUM - 2) * BLOCK_X_NUM); i++) { + if (blocks[i] == mFM_BLOCK_TYPE_BEACH_RIVER) { + blocks[i] = mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE; + return mRF_TO_BIT(BRIDGE_LOWER); + } + } + } + + return 0; } /* ??? */ static int mRF_MakePerfectBit() { - int perfect_bit = 0; - int i; + int perfect_bit = 0; + int i; - for (i = 0; i < mRF_BIT_NUM; i++) { - perfect_bit |= (1 << i); - } + for (i = 0; i < mRF_BIT_NUM; i++) { + perfect_bit |= (1 << i); + } - return perfect_bit; + return perfect_bit; } static void mRF_MakeBaseLandformStep3(u8* cliff_blocks, u8* river_blocks) { - u8* src = l_mRF_step3_blockss[mRF_GetRandom(ARRAY_COUNT(l_mRF_step3_blockss))]; - int i; + u8* src = l_mRF_step3_blockss[mRF_GetRandom(ARRAY_COUNT(l_mRF_step3_blockss))]; + int i; - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - cliff_blocks[i] = src[i]; - river_blocks[i] = src[i]; - } + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + cliff_blocks[i] = src[i]; + river_blocks[i] = src[i]; + } } static void mRF_MakeBaseLandform(u8* cliff_blocks, u8* river_blocks, int stepmode) { - if (stepmode == mRF_STEPMODE_THREE) { - mRF_MakeBaseLandformStep3(cliff_blocks, river_blocks); - } - else { - mRF_MakeBaseLandformStep2(cliff_blocks, river_blocks); - } + if (stepmode == mRF_STEPMODE_THREE) { + mRF_MakeBaseLandformStep3(cliff_blocks, river_blocks); + } else { + mRF_MakeBaseLandformStep2(cliff_blocks, river_blocks); + } } static void mRF_ReportRandomFieldBitResult(int bit, int perfect_bit) { - // code likely only emitted in debug + // code likely only emitted in debug } static int mRF_GetRandomStepMode() { - return mRF_GetRandom(100) < 15; + return mRF_GetRandom(100) < 15; } -extern void mRF_MakeRandomField_ovl(mFM_combination_c* combi_table, mFM_combo_info_c* combi_info, int combi_count, GAME* game) { - static u8 blocks_c[BLOCK_TOTAL_NUM]; - static u8 blocks_r[BLOCK_TOTAL_NUM]; - static u8 base_table[BLOCK_TOTAL_NUM]; +extern void mRF_MakeRandomField_ovl(mFM_combination_c* combi_table, mFM_combo_info_c* combi_info, int combi_count, + GAME* game) { + static u8 blocks_c[BLOCK_TOTAL_NUM]; + static u8 blocks_r[BLOCK_TOTAL_NUM]; + static u8 base_table[BLOCK_TOTAL_NUM]; - int bit = 0; - int perfect_bit; - int stepmode; - stepmode = mRF_GetRandomStepMode(); // select 2 or 3 step town - perfect_bit = mRF_MakePerfectBit(); // lol + int bit = 0; + int perfect_bit; + int stepmode; + stepmode = mRF_GetRandomStepMode(); // select 2 or 3 step town + perfect_bit = mRF_MakePerfectBit(); // lol - while (perfect_bit != (perfect_bit & bit)) { - bit = 0; - mRF_InitCombTable(combi_table); // clear save data acres - mRF_MakeBaseLandform(blocks_c, blocks_r, stepmode); // make the town base (cliffs + river) - mRF_MakeFlatPlaceInfomation(blocks_c); // log all "flat" blocks (no river or cliff) - mRF_SetMarinBlock(blocks_c); // make the beach base - bit |= mRF_SetBridgeAndSlopeBlock(blocks_c, stepmode); // set bridges and slopes - bit |= mRF_SetNeedleworkAndWharfBlock(blocks_c); // set Able Sister's and dock - bit |= mRF_SetUniqueFlatBlock(blocks_c); // Set Wishing Well, Police Station, & Museum - mRF_SetUniqueRailBlock(blocks_c); // Set Nook's Shop & Post Office - bit |= mRF_SetPoolBlock(blocks_c); // Set lake - bit |= mRF_SetSeaBlockWithBridgeRiver(blocks_c, bit); // Set river bridge only if necessary - mRF_MakeBaseHeightTable(base_table, blocks_c); // Create acre height map - mRF_ReportRandomFieldBitResult(bit, perfect_bit); // Debug function stubbed - mRF_SelectBlock(combi_table, combi_info, combi_count, blocks_c); // Choose the actual acres for each block - mRF_CopyBlockBaseHeightData(combi_table, base_table); // Set block height - } + while (perfect_bit != (perfect_bit & bit)) { + bit = 0; + mRF_InitCombTable(combi_table); // clear save data acres + mRF_MakeBaseLandform(blocks_c, blocks_r, stepmode); // make the town base (cliffs + river) + mRF_MakeFlatPlaceInfomation(blocks_c); // log all "flat" blocks (no river or cliff) + mRF_SetMarinBlock(blocks_c); // make the beach base + bit |= mRF_SetBridgeAndSlopeBlock(blocks_c, stepmode); // set bridges and slopes + bit |= mRF_SetNeedleworkAndWharfBlock(blocks_c); // set Able Sister's and dock + bit |= mRF_SetUniqueFlatBlock(blocks_c); // Set Wishing Well, Police Station, & Museum + mRF_SetUniqueRailBlock(blocks_c); // Set Nook's Shop & Post Office + bit |= mRF_SetPoolBlock(blocks_c); // Set lake + bit |= mRF_SetSeaBlockWithBridgeRiver(blocks_c, bit); // Set river bridge only if necessary + mRF_MakeBaseHeightTable(base_table, blocks_c); // Create acre height map + mRF_ReportRandomFieldBitResult(bit, perfect_bit); // Debug function stubbed + mRF_SelectBlock(combi_table, combi_info, combi_count, blocks_c); // Choose the actual acres for each block + mRF_CopyBlockBaseHeightData(combi_table, base_table); // Set block height + } } diff --git a/src/game/m_room_type.c b/src/game/m_room_type.c index c5048812..5931429f 100644 --- a/src/game/m_room_type.c +++ b/src/game/m_room_type.c @@ -2051,29 +2051,29 @@ extern mActor_name_t mRmTp_GetPlayerRoomCollisionIdx(mActor_name_t field_id, mAc switch (Save_Get(scene_no)) { case SCENE_MY_ROOM_M: if (has_basement) { - return 0x11E; + return BG_TYPE_ROM_MY_ROOM_M_BASEMENT; } else { - return 0x104; + return BG_TYPE_ROM_MY_ROOM_M; } case SCENE_MY_ROOM_L: if (has_basement) { - return 0x11F; + return BG_TYPE_ROM_MY_ROOM_L_BASEMENT; } else { - return 0x0F2; + return BG_TYPE_ROM_MY_ROOM_L; } case SCENE_MY_ROOM_LL1: if (has_basement) { - return 0x120; + return BG_TYPE_ROM_MY_ROOM_LL1_BASEMENT; } else { - return 0x11B; + return BG_TYPE_ROM_MY_ROOM_LL1; } case SCENE_MY_ROOM_LL2: - return 0x11C; + return BG_TYPE_ROM_MY_ROOM_LL2; case SCENE_MY_ROOM_BASEMENT_S: case SCENE_MY_ROOM_BASEMENT_M: case SCENE_MY_ROOM_BASEMENT_L: case SCENE_MY_ROOM_BASEMENT_LL1: - return 0x121; + return BG_TYPE_ROM_MY_ROOM_BASEMENT; default: return bg_idx; diff --git a/src/game/m_shop.c b/src/game/m_shop.c index 538c7b57..f1f5809d 100644 --- a/src/game/m_shop.c +++ b/src/game/m_shop.c @@ -10,6 +10,7 @@ #include "m_item_name.h" #include "m_name_table.h" #include "m_room_type.h" +#include "m_fg_type.h" extern mActor_name_t* mSP_ftr_list[]; extern mActor_name_t* mSP_binsen_list[]; @@ -1526,41 +1527,41 @@ extern mActor_name_t mSP_GetNowShopBgNum() { switch (Save_Get(scene_no)) { case SCENE_SHOP0: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFA; + return BG_TYPE_ROM_SHOP1_FUKU; } - return 0xF8; + return BG_TYPE_ROM_SHOP1; } case SCENE_CONVENI: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFB; + return BG_TYPE_ROM_SHOP2_FUKU; } - return 0xFE; + return BG_TYPE_ROM_SHOP2; } case SCENE_SUPER: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFC; + return BG_TYPE_ROM_SHOP3_FUKU; } - return 0x102; + return BG_TYPE_ROM_SHOP3; } case SCENE_DEPART: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFD; + return BG_TYPE_ROM_SHOP4_FUKU; } - return 0x100; + return BG_TYPE_ROM_SHOP4_1; } case SCENE_DEPART_2: - return 0x101; + return BG_TYPE_ROM_SHOP4_2; default: - return 0xFE; + return BG_TYPE_ROM_SHOP2; } } @@ -1578,124 +1579,124 @@ extern mActor_name_t mSP_GetNowShopFgNum() { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { if (event_kind == mSP_KIND_FURNITURE) { mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x163; + return FG_TYPE_ROM_SHOP1_SALE_FTR; } if (event_kind == mSP_KIND_CLOTH) { mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x166; + return FG_TYPE_ROM_SHOP1_SALE_CLOTH; } if (event_kind == mSP_KIND_WALLPAPER) { mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x165; + return FG_TYPE_ROM_SHOP1_SALE_WALL; } mSP_what_special_sale = mSP_KIND_CARPET; - return 0x164; + return FG_TYPE_ROM_SHOP1_SALE_CARPET; } if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14D; + return FG_TYPE_ROM_SHOP1_FUKU; } - return 0x22; + return FG_TYPE_ROM_SHOP1; } case SCENE_CONVENI: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x167; + return FG_TYPE_ROM_SHOP2_SALE_FTR; } if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x16A; + return FG_TYPE_ROM_SHOP2_SALE_CLOTH; } if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x169; + return FG_TYPE_ROM_SHOP2_SALE_WALL; } mSP_what_special_sale = mSP_KIND_CARPET; - return 0x168; + return FG_TYPE_ROM_SHOP2_SALE_CARPET; } if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14E; + return FG_TYPE_ROM_SHOP2_FUKU; } - return 0x23; + return FG_TYPE_ROM_SHOP2; } case SCENE_SUPER: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x16B; + return FG_TYPE_ROM_SHOP3_SALE_FTR; } if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x16E; + return FG_TYPE_ROM_SHOP3_SALE_CLOTH; } if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x16D; + return FG_TYPE_ROM_SHOP3_SALE_WALL; } mSP_what_special_sale = mSP_KIND_CARPET; - return 0x16C; + return FG_TYPE_ROM_SHOP3_SALE_CARPET; } if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14F; + return FG_TYPE_ROM_SHOP3_FUKU; } - return 0x24; + return FG_TYPE_ROM_SHOP3; } case SCENE_DEPART: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - return 0x16F; + return FG_TYPE_ROM_SHOP4_1_SALE; } if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x150; + return FG_TYPE_ROM_SHOP4_1_FUKU; } - return 0x25; + return FG_TYPE_ROM_SHOP4_1; } case SCENE_DEPART_2: { if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x170; + return FG_TYPE_ROM_SHOP4_2_SALE_FTR; } if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x173; + return FG_TYPE_ROM_SHOP4_2_SALE_CLOTH; } if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x172; + return FG_TYPE_ROM_SHOP4_2_SALE_WALL; } mSP_what_special_sale = mSP_KIND_CARPET; - return 0x171; + return FG_TYPE_ROM_SHOP4_2_SALE_CARPET; } - return 0x26; + return FG_TYPE_ROM_SHOP4_2; } default: - return 0x25; + return FG_TYPE_ROM_SHOP4_1; } }