From 5f4ae4e8f5a5b4ebcfec45ff076b3141030beed3 Mon Sep 17 00:00:00 2001 From: Eebit Date: Thu, 3 Sep 2026 21:37:25 -0400 Subject: [PATCH 1/3] (misc) Add various constants and document WirelessSettings class --- include/hardware.hpp | 14 +- include/unit.hpp | 24 +- include/unknown_types.hpp | 104 +++++-- src/force.cpp | 2 +- src/gamectrl.cpp | 504 ++++++++++++++++--------------- src/item.cpp | 22 +- src/ov000/arena.cpp | 6 +- src/ov000/disposition.cpp | 48 +-- src/ov000/map_battle.cpp | 6 +- src/ov000/map_input_handler.cpp | 10 +- src/ov000/map_menu.cpp | 4 +- src/ov000/map_sequence.cpp | 166 +++++----- src/ov000/map_state.cpp | 34 +-- src/ov000/map_unit_menu.cpp | 4 +- src/ov005/prep_job_select.cpp | 22 +- src/ov005/prep_main_menu.cpp | 4 +- src/ov005/prep_proc_02212d60.cpp | 18 +- src/sound_manager.cpp | 2 +- src/unit.cpp | 40 ++- 19 files changed, 564 insertions(+), 470 deletions(-) diff --git a/include/hardware.hpp b/include/hardware.hpp index 3d91235..f1f6fe3 100644 --- a/include/hardware.hpp +++ b/include/hardware.hpp @@ -5,18 +5,18 @@ enum { - OVERLAY_ID_0, + OVERLAY_ID_0, // Battle Map OVERLAY_ID_1, OVERLAY_ID_2, OVERLAY_ID_3, - OVERLAY_ID_4, - OVERLAY_ID_5, - OVERLAY_ID_6, + OVERLAY_ID_4, // World Map + OVERLAY_ID_5, // Battle Preparations + OVERLAY_ID_6, // Main Menu OVERLAY_ID_7, - OVERLAY_ID_8, + OVERLAY_ID_8, // Title Screen OVERLAY_ID_9, - OVERLAY_ID_A, - OVERLAY_ID_B, + OVERLAY_ID_A, // Local Wireless + OVERLAY_ID_B, // Nintendo WFC }; enum diff --git a/include/unit.hpp b/include/unit.hpp index c4882a3..5982cb5 100644 --- a/include/unit.hpp +++ b/include/unit.hpp @@ -25,7 +25,7 @@ enum enum { CA_FEMALE = (1 << 0), - CA_UNK_1 = (1 << 1), + CA_UNK_1 = (1 << 1), // Supply unit CA_LORD = (1 << 2), CA_PRINCESS = (1 << 3), // Caeda, Maria, Minerva, Elise CA_UNK_4 = (1 << 4), // Medius? @@ -57,19 +57,29 @@ enum enum { + US_NONE = 0, US_ACTED = (1 << 0), - + US_UNK_1 = (1 << 1), + US_UNK_2 = (1 << 2), US_DEAD = (1 << 3), - + US_UNK_4 = (1 << 4), + US_UNK_5 = (1 << 5), + US_UNK_6 = (1 << 6), // Escaped? US_ITEMS_TO_CONVOY = (1 << 7), - + US_UNK_8 = (1 << 8), + US_UNK_9 = (1 << 9), + US_UNK_10 = (1 << 10), + US_UNK_11 = (1 << 11), US_NOT_PRESENT = (1 << 12), US_DANGER_ZONE_ACTIVE = (1 << 13), - - US_HOVERED = (1 << 17), + US_UNK_14 = (1 << 14), + US_UNK_15 = (1 << 15), // disguised? + US_UNK_16 = (1 << 16), + US_HOVERED = (1 << 17), // this might be "active" + US_UNK_18 = (1 << 18), // disguised, but different? + US_UNK_19 = (1 << 19), // Clear (move to faction 4) after death? US_EVENT_DEAD = (1 << 29), // Died as a "decoy" for Marth - US_UNK_30 = (1 << 30), US_UNK_31 = (1 << 31), }; diff --git a/include/unknown_types.hpp b/include/unknown_types.hpp index ef2f264..5d7cc0d 100644 --- a/include/unknown_types.hpp +++ b/include/unknown_types.hpp @@ -8,10 +8,35 @@ #include "state_manager.hpp" #include "unit.hpp" -// UnkStruct_02196f0c::state -// & 0x10 -> in prep -// & 0x20 -> in multiplayer -// & 0x4000 -> "Transporter Off" +enum +{ + GAME_STATE_UNK_0 = (1 << 0), + GAME_STATE_UNK_1 = (1 << 1), + GAME_STATE_UNK_2 = (1 << 2), + GAME_STATE_UNK_3 = (1 << 3), + GAME_STATE_UNK_4 = (1 << 4), // & 0x10 -> in prep + GAME_STATE_UNK_5 = (1 << 5), // & 0x20 -> in multiplayer + GAME_STATE_UNK_6 = (1 << 6), // in prep??? + GAME_STATE_UNK_7 = (1 << 7), + GAME_STATE_UNK_8 = (1 << 8), + GAME_STATE_UNK_9 = (1 << 9), + GAME_STATE_UNK_10 = (1 << 10), + GAME_STATE_UNK_11 = (1 << 11), + GAME_STATE_UNK_12 = (1 << 12), + GAME_STATE_UNK_13 = (1 << 13), + GAME_STATE_SUPPLY_OFF = (1 << 14), // Set by event function "TransporterOff" + GAME_STATE_UNK_15 = (1 << 15), + GAME_STATE_UNK_16 = (1 << 16), + GAME_STATE_UNK_17 = (1 << 17), + GAME_STATE_UNK_18 = (1 << 18), + GAME_STATE_UNK_19 = (1 << 19), + GAME_STATE_UNK_20 = (1 << 20), // possibly "has fought medius" + GAME_STATE_UNK_21 = (1 << 21), + GAME_STATE_UNK_22 = (1 << 22), + GAME_STATE_UNK_23 = (1 << 23), + GAME_STATE_UNK_24 = (1 << 24), + GAME_STATE_UNK_25 = (1 << 25), +}; struct UnkStruct_02196f0c { @@ -46,30 +71,63 @@ struct UnkStruct_020e3ca0 STRUCT_PAD(0x00, 0x14); }; -class UnkStruct_02196f10 +enum +{ + WIRELESS_MODE_LOCAL = 0, + WIRELESS_MODE_WFC_PLAY_ANYONE = 1, + WIRELESS_MODE_WFC_PLAY_FRIEND = 2, + WIRELESS_MODE_PRACTICE = 3, +}; + +class WirelessSettings { public: - u32 unk_00; - s8 unk_04; - u8 unk_05; - u8 unk_06; - s8 unk_07; - u8 unk_08; - u8 unk_09; - u8 unk_0a; - u8 unk_0b; - u32 unk_0c; - u8 unk_10; - u8 unk_11; - u8 unk_12; - STRUCT_PAD(0x13, 0x17); - u8 unk_17; + /* 00 */ void * unk_00; + /* 04 */ s8 mode; + /* 05 */ u8 unk_05; + /* 06 */ u8 unk_06; // faction? + /* 07 */ s8 unk_07; + /* 08 */ u8 unk_08; + /* 09 */ u8 fogActive; + /* 0A */ u8 turnLimit; + /* 0B */ u8 unk_0b; + /* 0C */ u32 timeLimit; // in seconds + /* 10 */ u8 cardsAllowed; + /* 11 */ u8 unk_11; + /* 12 */ u8 unk_12; + /* 13 */ STRUCT_PAD(0x13, 0x17); + /* 17 */ u8 unk_17; - UnkStruct_02196f10() + WirelessSettings() { - this->unk_00 = 0; + this->unk_00 = NULL; this->unk_06 = 0; } + + inline u8 CheckUnk00(void) + { + return (this->unk_00 != NULL) & 0xFF; + } + + inline BOOL IsWifiPlayAnyoneMode(void) + { + return this->mode == WIRELESS_MODE_WFC_PLAY_ANYONE; + } + + inline BOOL IsPracticeMode(void) + { + return this->mode == WIRELESS_MODE_PRACTICE; + } + + inline BOOL _02022b50(void) + { + return this->unk_07 == 0; + } + + inline BOOL _02022b10(void) + { + return this->unk_07 == 2; + } }; struct UnkStruct_02196f24 @@ -99,7 +157,7 @@ struct UnkStruct_02196f20 s32 unk_184; u32 unk_188; u32 unk_18c; - s32 unk_190; + s32 unk_190; // gold u32 unk_194; u8 unk_198; u8 unk_199; diff --git a/src/force.cpp b/src/force.cpp index 772b37d..634f264 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -682,7 +682,7 @@ EC void func_0204078c(struct Unit * unit, s32 expInput) break; } - cur->ChangeJob(0, 0); + cur->ChangeJob(NULL, FALSE); } else { diff --git a/src/gamectrl.cpp b/src/gamectrl.cpp index 1fbc801..6e135f7 100644 --- a/src/gamectrl.cpp +++ b/src/gamectrl.cpp @@ -7,12 +7,59 @@ #include "unknown_types.hpp" #include "database.hpp" #include "event.hpp" +#include "hardware.hpp" #include "hashtable.hpp" #include "heap.hpp" #include "map.hpp" #include "sound_manager.hpp" #include "state_manager.hpp" +enum +{ + L_GAMECTRL_1 = 1, + L_GAMECTRL_2 = 2, + L_GAMECTRL_3 = 3, + L_GAMECTRL_MAIN_MENU = 4, + L_GAMECTRL_5 = 5, + L_GAMECTRL_WORLD_MAP = 6, + L_GAMECTRL_7 = 7, + L_GAMECTRL_8 = 8, + L_GAMECTRL_9 = 9, + L_GAMECTRL_10 = 10, + L_GAMECTRL_11 = 11, + L_GAMECTRL_12 = 12, + L_GAMECTRL_13 = 13, + L_GAMECTRL_14 = 14, + L_GAMECTRL_15 = 15, + L_GAMECTRL_16 = 16, + L_GAMECTRL_17 = 17, + L_GAMECTRL_18 = 18, + L_GAMECTRL_19 = 19, + L_GAMECTRL_20 = 20, + L_GAMECTRL_21 = 21, + L_GAMECTRL_22 = 22, + L_GAMECTRL_23 = 23, + L_GAMECTRL_24 = 24, + L_GAMECTRL_25 = 25, + L_GAMECTRL_26 = 26, + L_GAMECTRL_27 = 27, + L_GAMECTRL_28 = 28, + L_GAMECTRL_29 = 29, + L_GAMECTRL_30 = 30, + L_GAMECTRL_31 = 31, + L_GAMECTRL_32 = 32, + L_GAMECTRL_33 = 33, + L_GAMECTRL_34 = 34, + L_GAMECTRL_MULTIPLAYER_PRACTICE = 35, + L_GAMECTRL_36 = 36, + L_GAMECTRL_37 = 37, + L_GAMECTRL_38 = 38, + L_GAMECTRL_39 = 39, + L_GAMECTRL_40 = 40, + + L_GAMECTRL_54 = 54, +}; + EC void func_020210d0(struct MapData *, s32); EC void func_ov004_02209e54(ProcPtr); @@ -85,46 +132,46 @@ struct ProcCmd ProcScr_GameCtrl[] = PROC_CALL(func_020136bc), PROC_START_CHILD(data_020cec14), - PROC_GOTO(1), + PROC_GOTO(L_GAMECTRL_1), -PROC_LABEL(1), +PROC_LABEL(L_GAMECTRL_1), PROC_START_CHILD_LOCKING(data_020ceba4), - PROC_GOTO(3), + PROC_GOTO(L_GAMECTRL_3), -PROC_LABEL(2), +PROC_LABEL(L_GAMECTRL_2), PROC_START_CHILD_LOCKING(data_020ceb84), - PROC_GOTO(3), + PROC_GOTO(L_GAMECTRL_3), -PROC_LABEL(3), +PROC_LABEL(L_GAMECTRL_3), PROC_WHILE_EXISTS(data_020cec14), PROC_CALL(func_02021b00), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(4), +PROC_LABEL(L_GAMECTRL_MAIN_MENU), PROC_REPEAT(func_02021f08), PROC_REPEAT(func_02021f2c), PROC_CALL(func_02021b14), PROC_CALL(func_0201fd44), PROC_START_CHILD_LOCKING(data_020cebc4), - PROC_GOTO(2), + PROC_GOTO(L_GAMECTRL_2), -PROC_LABEL(5), +PROC_LABEL(L_GAMECTRL_5), PROC_CALL(func_02022cdc), - PROC_GOTO(6), + PROC_GOTO(L_GAMECTRL_WORLD_MAP), -PROC_LABEL(6), - PROC_OVERLAY_LOAD(4), +PROC_LABEL(L_GAMECTRL_WORLD_MAP), + PROC_OVERLAY_LOAD(OVERLAY_ID_4), PROC_CALL(func_ov004_02209e54), - PROC_OVERLAY_UNLOAD(4), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_4), // fallthrough -PROC_LABEL(7), +PROC_LABEL(L_GAMECTRL_7), PROC_REPEAT(func_02021f2c), PROC_CALL(func_02021dd4), PROC_CALL(func_02021f5c), @@ -133,25 +180,25 @@ PROC_LABEL(7), PROC_CALL(func_020221e4), PROC_CALL(func_02022364), PROC_CALL(func_020223b4), - PROC_OVERLAY_LOAD(5), + PROC_OVERLAY_LOAD(OVERLAY_ID_5), PROC_CALL(func_ov005_022052d0), - PROC_OVERLAY_UNLOAD(5), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_5), // fallthrough -PROC_LABEL(8), +PROC_LABEL(L_GAMECTRL_8), PROC_CALL(func_020223cc), PROC_CALL(func_02022414), PROC_CALL(func_02022458), // fallthrough -PROC_LABEL(9), +PROC_LABEL(L_GAMECTRL_9), PROC_CALL(func_ov000_021a9714), // fallthrough -PROC_LABEL(10), +PROC_LABEL(L_GAMECTRL_10), PROC_WHILE(_IsProcTutCardActive), PROC_CALL(func_02022480), PROC_CALL(func_020224a8), @@ -162,7 +209,7 @@ PROC_LABEL(10), // fallthrough -PROC_LABEL(11), +PROC_LABEL(L_GAMECTRL_11), PROC_CALL(func_0202254c), PROC_CALL(func_02022564), PROC_CALL(func_02022588), @@ -170,41 +217,41 @@ PROC_LABEL(11), PROC_CALL(func_02021e6c), PROC_START_CHILD_LOCKING(data_020cebec), - PROC_GOTO(6), + PROC_GOTO(L_GAMECTRL_WORLD_MAP), -PROC_LABEL(12), +PROC_LABEL(L_GAMECTRL_12), PROC_FADE_TO_BLACK(64, 1, TRUE), PROC_CALL(func_020224fc), PROC_CALL(func_0202254c), PROC_CALL(func_02022564), PROC_CALL(func_02021e6c), - PROC_OVERLAY_LOAD(6), + PROC_OVERLAY_LOAD(OVERLAY_ID_6), PROC_CALL(func_ov006_0221776c), - PROC_OVERLAY_UNLOAD(6), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_6), PROC_CALL(func_02021b00), - PROC_GOTO(2), + PROC_GOTO(L_GAMECTRL_2), -PROC_LABEL(13), - PROC_OVERLAY_LOAD(9), +PROC_LABEL(L_GAMECTRL_13), + PROC_OVERLAY_LOAD(OVERLAY_ID_9), PROC_CALL(func_02022db8), PROC_CALL(func_ov009_02206020), PROC_CALL(func_ov009_022065a0), PROC_CALL(func_ov009_02204e10), PROC_CALL(func_02022dc8), - PROC_OVERLAY_UNLOAD(9), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_9), PROC_CALL(func_02021b00), - PROC_GOTO(2), + PROC_GOTO(L_GAMECTRL_2), -PROC_LABEL(14), +PROC_LABEL(L_GAMECTRL_14), PROC_CALL(func_02022c54), PROC_CALL(func_02022cdc), PROC_CALL(func_02022324), - PROC_GOTO(6), + PROC_GOTO(L_GAMECTRL_WORLD_MAP), -PROC_LABEL(15), +PROC_LABEL(L_GAMECTRL_15), PROC_REPEAT(func_02021f2c), PROC_CALL(func_02022c78), PROC_CALL(func_02022cdc), @@ -212,9 +259,9 @@ PROC_LABEL(15), PROC_CALL(func_0202225c), PROC_FADE_FROM_BLACK(8, 1, TRUE), - PROC_GOTO(9), + PROC_GOTO(L_GAMECTRL_9), -PROC_LABEL(16), +PROC_LABEL(L_GAMECTRL_16), PROC_REPEAT(func_02021f2c), PROC_CALL(func_02022cb0), PROC_CALL(func_02022cdc), @@ -222,9 +269,9 @@ PROC_LABEL(16), PROC_CALL(func_0202225c), PROC_FADE_FROM_BLACK(8, 1, TRUE), - PROC_GOTO(9), + PROC_GOTO(L_GAMECTRL_9), -PROC_LABEL(39), +PROC_LABEL(L_GAMECTRL_39), PROC_WHILE(_IsProcTutCardActive), PROC_FADE_TO_BLACK(32, 1, TRUE), PROC_CALL(func_020224fc), @@ -233,167 +280,167 @@ PROC_LABEL(39), PROC_CALL(func_02021e6c), PROC_CALL(func_02021b00), - PROC_GOTO(2), + PROC_GOTO(L_GAMECTRL_2), -PROC_LABEL(17), - PROC_OVERLAY_LOAD(6), +PROC_LABEL(L_GAMECTRL_17), + PROC_OVERLAY_LOAD(OVERLAY_ID_6), PROC_CALL(func_ov006_02221aec), - PROC_OVERLAY_UNLOAD(6), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_6), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(18), - PROC_OVERLAY_LOAD(6), +PROC_LABEL(L_GAMECTRL_18), + PROC_OVERLAY_LOAD(OVERLAY_ID_6), PROC_CALL(func_ov006_022226cc), - PROC_OVERLAY_UNLOAD(6), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_6), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(21), +PROC_LABEL(L_GAMECTRL_21), PROC_25(3, 0), PROC_CALL(func_ov003_021f049c), PROC_25(2, 0), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(26), - PROC_OVERLAY_LOAD(11), +PROC_LABEL(L_GAMECTRL_26), + PROC_OVERLAY_LOAD(OVERLAY_ID_B), PROC_25(3, 0), PROC_CALL(func_ov003_021e4204), - PROC_GOTO_IF_NO(func_02022ef4, 40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), PROC_CALL(func_ov003_021f24e4), - PROC_GOTO(40), + PROC_GOTO(L_GAMECTRL_40), -PROC_LABEL(19), - PROC_OVERLAY_LOAD(11), +PROC_LABEL(L_GAMECTRL_19), + PROC_OVERLAY_LOAD(OVERLAY_ID_B), PROC_25(3, 0), PROC_CALL(func_ov003_021fc0d4), PROC_25(2, 0), - PROC_OVERLAY_UNLOAD(11), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_B), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(20), +PROC_LABEL(L_GAMECTRL_20), PROC_25(1, 0), - PROC_OVERLAY_LOAD(11), + PROC_OVERLAY_LOAD(OVERLAY_ID_B), PROC_25(3, 0), PROC_CALL(func_ov003_021e3610), PROC_25(2, 0), - PROC_OVERLAY_UNLOAD(11), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_B), PROC_25(0, 0), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(27), +PROC_LABEL(L_GAMECTRL_27), PROC_25(3, 0), - PROC_OVERLAY_LOAD(7), + PROC_OVERLAY_LOAD(OVERLAY_ID_7), PROC_CALL(func_ov007_02218284), - PROC_OVERLAY_UNLOAD(7), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_7), PROC_25(2, 0), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(28), - PROC_OVERLAY_LOAD(7), +PROC_LABEL(L_GAMECTRL_28), + PROC_OVERLAY_LOAD(OVERLAY_ID_7), PROC_CALL(func_ov007_0221ad60), - PROC_OVERLAY_UNLOAD(7), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_7), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(23), +PROC_LABEL(L_GAMECTRL_23), PROC_CALL(func_020229a8), PROC_25(3, 0), PROC_CALL(func_ov003_021e4204), - PROC_GOTO_IF_NO(func_02022ef4, 40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), PROC_CALL(func_020228ac), - PROC_GOTO_IF_NO(func_02022ef4, 40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), PROC_CALL(func_ov003_021f9470), - PROC_GOTO(40), + PROC_GOTO(L_GAMECTRL_40), -PROC_LABEL(24), - PROC_OVERLAY_LOAD(11), +PROC_LABEL(L_GAMECTRL_24), + PROC_OVERLAY_LOAD(OVERLAY_ID_B), PROC_25(3, 0), PROC_CALL(func_ov003_021e4244), - PROC_GOTO_IF_NO(func_02022ef4, 40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), PROC_CALL(func_ov003_021f4a84), - PROC_GOTO(40), + PROC_GOTO(L_GAMECTRL_40), -PROC_LABEL(25), - PROC_OVERLAY_LOAD(11), +PROC_LABEL(L_GAMECTRL_25), + PROC_OVERLAY_LOAD(OVERLAY_ID_B), PROC_25(3, 0), PROC_CALL(func_ov003_021e4244), - PROC_GOTO_IF_NO(func_02022ef4, 40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), PROC_CALL(func_ov003_021f6ce8), - PROC_GOTO(40), + PROC_GOTO(L_GAMECTRL_40), -PROC_LABEL(22), +PROC_LABEL(L_GAMECTRL_22), PROC_25(3, 0), PROC_CALL(func_ov003_021f31f0), PROC_25(2, 0), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(40), +PROC_LABEL(L_GAMECTRL_40), PROC_CALL(func_ov003_021e4284), PROC_25(2, 0), PROC_CALL(func_02022814), - PROC_GOTO(4), + PROC_GOTO(L_GAMECTRL_MAIN_MENU), -PROC_LABEL(29), +PROC_LABEL(L_GAMECTRL_29), PROC_CALL(func_020229a8), PROC_25(3, 0), PROC_CALL(func_020228ec), - PROC_GOTO_IF_YES(func_02022b30, 30), + PROC_GOTO_IF_YES(func_02022b30, L_GAMECTRL_30), PROC_CALL(func_ov003_021e4204), - PROC_GOTO_IF_NO(func_02022ef4, 40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), // fallthrough -PROC_LABEL(30), +PROC_LABEL(L_GAMECTRL_30), PROC_CALL(func_ov003_021fb690), - PROC_GOTO_IF_NO(func_02022e34, 40), - PROC_GOTO_IF_YES(func_02022b30, 34), + PROC_GOTO_IF_NO(func_02022e34, L_GAMECTRL_40), + PROC_GOTO_IF_YES(func_02022b30, L_GAMECTRL_34), - PROC_GOTO(32), + PROC_GOTO(L_GAMECTRL_32), -PROC_LABEL(31), +PROC_LABEL(L_GAMECTRL_31), PROC_CALL(func_ov003_021fb704), - PROC_GOTO_IF_NO(func_02022e34, 40), - PROC_GOTO_IF_YES(func_02022b30, 34), + PROC_GOTO_IF_NO(func_02022e34, L_GAMECTRL_40), + PROC_GOTO_IF_YES(func_02022b30, L_GAMECTRL_34), - PROC_GOTO(32), + PROC_GOTO(L_GAMECTRL_32), -PROC_LABEL(32), +PROC_LABEL(L_GAMECTRL_32), PROC_CALL(func_02022e54), PROC_CALL(func_0202284c), - PROC_GOTO_IF_YES(func_02022eb8, 40), - PROC_GOTO_IF_NO(func_02022ef4, 31), - PROC_GOTO_IF_YES(func_02022988, 33), + PROC_GOTO_IF_YES(func_02022eb8, L_GAMECTRL_40), + PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_31), + PROC_GOTO_IF_YES(func_02022988, L_GAMECTRL_33), PROC_CALL(func_ov003_021ebb8c), - PROC_GOTO_IF_YES(func_02022ed4, 40), + PROC_GOTO_IF_YES(func_02022ed4, L_GAMECTRL_40), // fallthrough -PROC_LABEL(33), +PROC_LABEL(L_GAMECTRL_33), PROC_CALL(func_ov003_021e439c), - PROC_GOTO_IF_YES(func_02022eb8, 40), + PROC_GOTO_IF_YES(func_02022eb8, L_GAMECTRL_40), - PROC_GOTO(35), + PROC_GOTO(L_GAMECTRL_MULTIPLAYER_PRACTICE), -PROC_LABEL(34), +PROC_LABEL(L_GAMECTRL_34), PROC_CALL(func_02022e54), PROC_CALL(func_ov003_021eb9b0), - PROC_GOTO_IF_NO(func_02022e34, 31), + PROC_GOTO_IF_NO(func_02022e34, L_GAMECTRL_31), PROC_CALL(func_02022e14), - PROC_GOTO(35), + PROC_GOTO(L_GAMECTRL_MULTIPLAYER_PRACTICE), -PROC_LABEL(35), +PROC_LABEL(L_GAMECTRL_MULTIPLAYER_PRACTICE), PROC_25(2, 0), PROC_CALL(func_02021dd4), PROC_CALL(func_02021f5c), @@ -412,25 +459,25 @@ PROC_LABEL(35), PROC_CALL(func_02022dfc), PROC_REPEAT(func_02021f08), PROC_25(3, 0), - PROC_GOTO_IF_YES(func_02022b10, 40), - PROC_GOTO_IF_NO(func_02022b50, 37), + PROC_GOTO_IF_YES(func_02022b10, L_GAMECTRL_40), + PROC_GOTO_IF_NO(func_02022b50, L_GAMECTRL_37), // fallthrough -PROC_LABEL(36), +PROC_LABEL(L_GAMECTRL_36), PROC_CALL(func_ov003_021ed664), - PROC_GOTO(38), + PROC_GOTO(L_GAMECTRL_38), -PROC_LABEL(37), +PROC_LABEL(L_GAMECTRL_37), PROC_CALL(func_ov003_021edf2c), - PROC_GOTO(38), + PROC_GOTO(L_GAMECTRL_38), -PROC_LABEL(38), +PROC_LABEL(L_GAMECTRL_38), PROC_CALL(func_02022bb0), - PROC_GOTO(40), + PROC_GOTO(L_GAMECTRL_40), PROC_BLOCK, PROC_END, @@ -460,7 +507,7 @@ extern struct UnkStruct_020e3ca0 * data_020e3ca0; extern struct UnkStruct_02196f1c * data_02196f1c; -extern struct UnkStruct_02196f10 * data_02196f10; +extern struct WirelessSettings * data_02196f10; extern struct UnkStruct_02196f0c * data_02196f0c; @@ -477,8 +524,8 @@ EC void func_020217b4(void) { int random; - LoadOverlay(0); - LoadOverlay(2); + LoadOverlay(OVERLAY_ID_0); + LoadOverlay(OVERLAY_ID_2); HashTable::Init(); func_02028c68(); @@ -510,7 +557,7 @@ EC void func_020217b4(void) if (data_02196f10 == NULL) { - data_02196f10 = new UnkStruct_02196f10; + data_02196f10 = new WirelessSettings; } func_020423fc(); @@ -648,7 +695,7 @@ EC void func_02021d70(void) int lr; int r1; - if (data_02196f0c->state & 0x2000000) + if (data_02196f0c->state & GAME_STATE_UNK_25) { return; } @@ -765,7 +812,7 @@ EC void func_02021f5c(void) data_ov000_021e3528.unk_2e = 0; data_ov000_021e3528.unk_2f = 0; - if ((data_02196f0c->pCurrentMap->unk_0a != 0) && ((data_02196f0c->state & 1) != 0)) + if ((data_02196f0c->pCurrentMap->unk_0a != 0) && (data_02196f0c->state & GAME_STATE_UNK_0)) { int n = Force::Get(0)->Count() + Force::Get(2)->Count(); @@ -786,16 +833,16 @@ EC void func_02021f5c(void) pUnit->MoveToForce(2, TRUE); func_020421c4(pUnit, uVar4); - data_02196f0c->state |= 0x20000; + data_02196f0c->state |= GAME_STATE_UNK_17; } } } - if (data_02196f0c->state & 0x10000) + if (data_02196f0c->state & GAME_STATE_UNK_16) { - data_ov000_021e3324->unk_02 = data_02196f10->unk_09; - data_ov000_021e3324->unk_0c = data_02196f10->unk_0c * 60; - data_ov000_021e3324->unk_06 = data_02196f10->unk_0a; + data_ov000_021e3324->unk_02 = data_02196f10->fogActive; + data_ov000_021e3324->unk_0c = data_02196f10->timeLimit * 60; + data_ov000_021e3324->unk_06 = data_02196f10->turnLimit; } return; @@ -803,26 +850,22 @@ EC void func_02021f5c(void) EC void func_0202214c(ProcPtr proc) { - Force * force; - struct Unit * unit; + Unit * unit; Event::StartEventByName("MapBegin\0\0\0", proc); - if (!(data_02196f0c->state & 0x10000)) + if (!(data_02196f0c->state & GAME_STATE_UNK_16)) { return; } - force = Force::Get(data_02196f10->unk_06); - unit = force->head; + unit = Force::Get(data_02196f10->unk_06)->head; - if (unit == NULL) + if (unit != NULL) { - return; + gMapStateManager->camera->ScrollInstant(unit->xPos, unit->yPos, 1); } - gMapStateManager->camera->ScrollInstant(unit->xPos, unit->yPos, 1); - return; } @@ -893,19 +936,19 @@ EC void func_02022324(void) { data_02196f1c->unk_09 = data_02196f0c->unk_10; - if (!(data_02196f0c->state & 0x40)) + if (!(data_02196f0c->state & GAME_STATE_UNK_6)) { return; } - GameCtrl_GotoLabel(7); + GameCtrl_GotoLabel(L_GAMECTRL_7); return; } EC void func_02022364(ProcPtr proc) { - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { return; } @@ -951,12 +994,12 @@ EC void func_02022414(void) EC void func_02022458(void) { - if (!(data_02196f0c->state & 0x800)) + if (!(data_02196f0c->state & GAME_STATE_UNK_11)) { return; } - GameCtrl_GotoLabel(10); + GameCtrl_GotoLabel(L_GAMECTRL_10); return; } @@ -1020,7 +1063,7 @@ EC void func_02022588(void) struct Unit * pUnit; int i; - if ((data_02196f0c->state & 0x00010020) != 0) + if (data_02196f0c->state & (GAME_STATE_UNK_5 | GAME_STATE_UNK_16)) { return; } @@ -1044,36 +1087,36 @@ EC void func_02022588(void) continue; } - if ((pUnit->state2 & 0x40000) != 0) + if (pUnit->state2 & US_UNK_18) { pUnit->_0203c19c(); } - pUnit->state2 &= ~0x100; + pUnit->state2 &= ~US_UNK_8; - if ((pUnit->state2 & 0x80) != 0) + if (pUnit->state2 & US_ITEMS_TO_CONVOY) { - int j; + s32 j; struct Item * pUnitItem; - pUnit->state2 &= ~0x80; + pUnit->state2 &= ~US_ITEMS_TO_CONVOY; pUnit->unk_30.unk_04 = GetMapDBIndex(data_02196f0c->pCurrentMap); - for (j = 0, pUnitItem = pUnit->items; j < 5; j++, pUnitItem++) + for (j = 0, pUnitItem = pUnit->items; j < UNIT_ITEM_COUNT; j++, pUnitItem++) { if (((pUnitItem->id == 0) ? TRUE : FALSE) & 0xFF) { continue; } - pUnitItem->flags &= ~0x30; + pUnitItem->flags &= ~(ITEM_FLAG_EQUIPPED | ITEM_FLAG_DROPPABLE); AddItemToConvoy(pUnitItem); pUnitItem->Clear(); } } - if ((pUnit->state2 & 0x80000) != 0) + if (pUnit->state2 & US_UNK_19) { pUnit->MoveToForce(4, TRUE); } @@ -1109,7 +1152,7 @@ EC void func_02022588(void) pUnit->MoveToForce(2, TRUE); } - if (data_02196f0c->state & 0x800) + if (data_02196f0c->state & GAME_STATE_UNK_11) { return; } @@ -1123,24 +1166,24 @@ EC void func_0202272c(ProcPtr proc) { Event::StartEventByName("ChapterNext", proc); - if (!(data_02196f0c->state & 1)) + if (!(data_02196f0c->state & GAME_STATE_UNK_0)) { - if (!(data_02196f0c->state & 0x800)) + if (!(data_02196f0c->state & GAME_STATE_UNK_11)) { - data_02196f0c->state |= 1; + data_02196f0c->state |= GAME_STATE_UNK_0; } data_02196f1c->unk_09 = 0; } - data_02196f0c->state &= ~0x100; - data_02196f0c->state &= ~0x200; - data_02196f0c->state &= ~0x800; - data_02196f0c->state &= ~0x1000; - data_02196f0c->state &= ~0x400; - data_02196f0c->state &= ~0x4000; - data_02196f0c->state &= ~0x20000; - data_02196f0c->state &= ~0x100000; + data_02196f0c->state &= ~GAME_STATE_UNK_8; + data_02196f0c->state &= ~GAME_STATE_UNK_9; + data_02196f0c->state &= ~GAME_STATE_UNK_11; + data_02196f0c->state &= ~GAME_STATE_UNK_12; + data_02196f0c->state &= ~GAME_STATE_UNK_10; + data_02196f0c->state &= ~GAME_STATE_SUPPLY_OFF; + data_02196f0c->state &= ~GAME_STATE_UNK_17; + data_02196f0c->state &= ~GAME_STATE_UNK_20; data_02196f20->unk_194 = Random_GetState(); @@ -1149,14 +1192,14 @@ EC void func_0202272c(ProcPtr proc) EC void func_02022814(void) { - if (IsOverlayLoaded(10)) + if (IsOverlayLoaded(OVERLAY_ID_A)) { - UnloadOverlay(10); + UnloadOverlay(OVERLAY_ID_A); } - if (IsOverlayLoaded(11)) + if (IsOverlayLoaded(OVERLAY_ID_B)) { - UnloadOverlay(11); + UnloadOverlay(OVERLAY_ID_B); } return; @@ -1164,22 +1207,22 @@ EC void func_02022814(void) EC void func_0202284c(ProcPtr proc) { - switch (data_02196f10->unk_04) + switch (data_02196f10->mode) { - case 0: + case WIRELESS_MODE_LOCAL: func_ov003_021e42c8(proc, 0); break; - case 1: + case WIRELESS_MODE_WFC_PLAY_ANYONE: func_ov003_021e4310(proc, 0); break; - case 2: + case WIRELESS_MODE_WFC_PLAY_FRIEND: func_ov003_021e4354(proc, 0); break; - case 3: - GameCtrl_GotoLabel(35); + case WIRELESS_MODE_PRACTICE: + GameCtrl_GotoLabel(L_GAMECTRL_MULTIPLAYER_PRACTICE); break; } @@ -1188,13 +1231,13 @@ EC void func_0202284c(ProcPtr proc) EC void func_020228ac(ProcPtr proc) { - switch (data_02196f10->unk_04) + switch (data_02196f10->mode) { - case 0: + case WIRELESS_MODE_LOCAL: func_ov003_021e42c8(proc, 1); break; - case 2: + case WIRELESS_MODE_WFC_PLAY_FRIEND: func_ov003_021e4354(proc, 1); break; } @@ -1202,24 +1245,18 @@ EC void func_020228ac(ProcPtr proc) return; } -// TODO: Figure out the inline issues -inline BOOL _func_02022988(void) -{ - return data_02196f10->unk_04 == 1 ? TRUE : FALSE; -} - EC void func_020228ec(ProcPtr unused) { - if (data_02196f10->unk_04 != 3) + if (data_02196f10->mode != WIRELESS_MODE_PRACTICE) { - data_02196f0c->state |= 0x20; + data_02196f0c->state |= GAME_STATE_UNK_5; } - data_02196f0c->state |= 0x10000; - data_02196f0c->state |= 0x4000; - data_02196f0c->state |= 1; + data_02196f0c->state |= GAME_STATE_UNK_16; + data_02196f0c->state |= GAME_STATE_SUPPLY_OFF; + data_02196f0c->state |= GAME_STATE_UNK_0; - if (_func_02022988()) + if (data_02196f10->IsWifiPlayAnyoneMode()) { func_0202118c(); return; @@ -1230,25 +1267,25 @@ EC void func_020228ec(ProcPtr unused) return; } -EC /* inline */ BOOL func_02022988(void) +EC BOOL func_02022988(void) { - return _func_02022988(); + return data_02196f10->IsWifiPlayAnyoneMode(); } EC void func_020229a8(void) { - switch (data_02196f10->unk_04) + switch (data_02196f10->mode) { - case 0: - LoadOverlay(10); + case WIRELESS_MODE_LOCAL: + LoadOverlay(OVERLAY_ID_A); break; - case 1: - case 2: - LoadOverlay(11); + case WIRELESS_MODE_WFC_PLAY_ANYONE: + case WIRELESS_MODE_WFC_PLAY_FRIEND: + LoadOverlay(OVERLAY_ID_B); break; - case 3: + case WIRELESS_MODE_PRACTICE: break; default: @@ -1258,36 +1295,21 @@ EC void func_020229a8(void) return; } -inline BOOL _func_02022b10(void) -{ - return data_02196f10->unk_07 == 2 ? TRUE : FALSE; -} - -inline BOOL _func_02022b30(void) -{ - return data_02196f10->unk_04 == 3 ? TRUE : FALSE; -} - -inline BOOL _func_02022b50(void) -{ - return data_02196f10->unk_07 == 0 ? TRUE : FALSE; -} - EC void func_020229f0(void) { int random; - if (_func_02022b10()) + if (data_02196f10->_02022b10()) { return; } - if (_func_02022b30()) + if (data_02196f10->IsPracticeMode()) { return; } - if (_func_02022b50()) + if (data_02196f10->_02022b50()) { random = RollRN(1, gFE11Database->pDBFE11Footer->unk_14 - 1); data_02196f10->unk_11 = random; @@ -1314,26 +1336,24 @@ EC void func_020229f0(void) return; } -// TODO: Figure out inlines - -EC /* inline */ BOOL func_02022b10(void) +EC BOOL func_02022b10(void) { - return _func_02022b10(); + return data_02196f10->_02022b10(); } -EC /* inline */ BOOL func_02022b30(void) +EC BOOL func_02022b30(void) { - return _func_02022b30(); + return data_02196f10->IsPracticeMode(); } -EC /* inline */ BOOL func_02022b50(void) +EC BOOL func_02022b50(void) { - return _func_02022b50(); + return data_02196f10->_02022b50(); } EC void func_02022b70(ProcPtr proc) { - if (_func_02022b50()) + if (data_02196f10->_02022b50()) { StartBlockingFadeOutToWhite((struct Proc *)proc, 16, 1); } @@ -1347,9 +1367,9 @@ EC void func_02022b70(ProcPtr proc) EC void func_02022bb0(ProcPtr proc) { - u32 var; + u32 mode; - if (!_func_02022b30()) + if (!data_02196f10->IsPracticeMode()) { if (data_02196f10->unk_08 != 0) { @@ -1360,12 +1380,12 @@ EC void func_02022bb0(ProcPtr proc) func_02012bbc(); func_02012680(proc); - var = data_02196f10->unk_04; + mode = data_02196f10->mode; func_02021b14(); - data_02196f10->unk_04 = var; + data_02196f10->mode = mode; func_020228ec(proc); - GameCtrl_GotoLabel(30); + GameCtrl_GotoLabel(L_GAMECTRL_30); gSoundManager->unk_a4->vfunc_3c(0x10, 0x48, 0); } @@ -1384,14 +1404,14 @@ EC void func_02022c54(ProcPtr proc) EC void func_02022c78(ProcPtr proc) { func_020240a0(data_02196f0c->unk_10 + 0x10, proc); - data_02196f0c->state |= 4; + data_02196f0c->state |= GAME_STATE_UNK_2; return; } EC void func_02022cb0(ProcPtr proc) { func_020240a0(11, proc); - data_02196f0c->state |= 4; + data_02196f0c->state |= GAME_STATE_UNK_2; return; } @@ -1412,7 +1432,7 @@ EC void func_02022d00(ProcPtr proc) struct Unit * pUnit; int i; - if (data_02196f0c->state & 0x2000) + if (data_02196f0c->state & GAME_STATE_UNK_13) { for (i = 0, pUnit = gUnitList; i < 0x8c; i++, pUnit++) { @@ -1426,7 +1446,7 @@ EC void func_02022d00(ProcPtr proc) continue; } - if (!(pUnit->state2 & 0x40000)) + if (!(pUnit->state2 & US_UNK_18)) { continue; } @@ -1434,27 +1454,27 @@ EC void func_02022d00(ProcPtr proc) pUnit->_0203c19c(); } - data_02196f0c->state &= ~0x2000; - GameCtrl_GotoLabel(13); + data_02196f0c->state &= ~GAME_STATE_UNK_13; + GameCtrl_GotoLabel(L_GAMECTRL_13); return; } - if (data_02196f0c->state & 0x10000) + if (data_02196f0c->state & GAME_STATE_UNK_16) { - data_02196f0c->state &= ~0x10000; - GameCtrl_GotoLabel(54); + data_02196f0c->state &= ~GAME_STATE_UNK_16; + GameCtrl_GotoLabel(L_GAMECTRL_54); return; } - if (!(data_02196f0c->state & 0x80)) + if (!(data_02196f0c->state & GAME_STATE_UNK_7)) { StartMainMenu_ProcMain(proc); return; } - data_02196f0c->state &= ~0x80; + data_02196f0c->state &= ~GAME_STATE_UNK_7; return; } @@ -1503,11 +1523,11 @@ EC BOOL func_02022e34(void) EC void func_02022e54(void) { - data_02196f10->unk_09 = 1; - data_02196f10->unk_0c = 300; - data_02196f10->unk_0a = 10; + data_02196f10->fogActive = 1; + data_02196f10->timeLimit = 300; + data_02196f10->turnLimit = 10; data_02196f10->unk_0b = 1; - data_02196f10->unk_10 = 0; + data_02196f10->cardsAllowed = 0; data_02196f10->unk_11 = 0; data_02196f10->unk_12 = 0; data_02196f10->unk_17 = 0; diff --git a/src/item.cpp b/src/item.cpp index f6a5920..d249232 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -77,7 +77,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return TRUE; case ITEM_EFFECT_STAT_BOOST: - if (unit->state2 & 0x48000) + if (unit->state2 & (US_UNK_15 | US_UNK_18)) { return FALSE; } @@ -114,7 +114,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; case ITEM_EFFECT_WLVL_BOOST: - if (unit->state2 & 0x48000) + if (unit->state2 & (US_UNK_15 | US_UNK_18)) { return FALSE; } @@ -163,7 +163,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { return FALSE; } @@ -194,7 +194,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { return FALSE; } @@ -207,12 +207,12 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return TRUE; case ITEM_EFFECT_PROMOTE: - if (func_ov000_021a47e4() && !(data_02196f0c->state & 0x40)) + if (func_ov000_021a47e4() && !(data_02196f0c->state & GAME_STATE_UNK_6)) { return FALSE; } - if (unit->state2 & 0x48000) + if (unit->state2 & (US_UNK_15 | US_UNK_18)) { return FALSE; } @@ -258,7 +258,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { return FALSE; } @@ -438,9 +438,9 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - int hp; + s32 hp; - if (pUnit->state2 & 0x00021020) + if (pUnit->state2 & (US_UNK_5 | US_NOT_PRESENT | US_HOVERED)) { continue; } @@ -635,7 +635,7 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) for (pUnit = Force::Get(3)->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - if (pUnit->state2 & 0x20000000) + if (pUnit->state2 & US_EVENT_DEAD) { continue; } @@ -663,7 +663,7 @@ EC void func_02038ce4(struct ItemData * item, struct Unit * unitA, struct Unit * { for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - if (pUnit->state2 & 0x0021020) + if (pUnit->state2 & (US_UNK_5 | US_NOT_PRESENT | US_HOVERED)) { continue; } diff --git a/src/ov000/arena.cpp b/src/ov000/arena.cpp index fd5481f..bf9ee19 100644 --- a/src/ov000/arena.cpp +++ b/src/ov000/arena.cpp @@ -424,9 +424,9 @@ void arena::Arena::_021d7d1c(void) void arena::Arena::_021d7d50(void) { - if ((this->unk_38->state2 & 8) != 0) + if (this->unk_38->state2 & US_DEAD) { - data_021974fc->unk_00 = 0; + data_021974fc->unk_00 = NULL; } this->unk_3c->MoveToForce(4, TRUE); @@ -596,7 +596,7 @@ void arena::Arena::_021d7e1c(void) level = (level > iVar7) ? iVar7 : (level >= 1) ? level : 1; func_0203a728(this->unk_3c, pPersonData, pJobData, level); - this->unk_3c->state2 |= 0x1000; + this->unk_3c->state2 |= US_NOT_PRESENT; if (RollRN(0, 9) != 0) { diff --git a/src/ov000/disposition.cpp b/src/ov000/disposition.cpp index 8ab9d02..2bd240e 100644 --- a/src/ov000/disposition.cpp +++ b/src/ov000/disposition.cpp @@ -7,6 +7,8 @@ #include "proc_ex.hpp" #include "unit.hpp" +#include "unknown_types.hpp" + struct DisposGroupProcessor; class Disposition : public ProcEx @@ -150,15 +152,15 @@ EC void func_02039ff8(struct Unit *, Spawn *); EC void func_01ff8204(void *, s8, s8, s32, s32, u16); -struct UnkStruct_02196f0c -{ - /* 00 */ struct UnkStruct_02196f0c_00 * unk_00; - /* 04 */ void * flagMgr; - /* 08 */ void * valueMgr; - /* 0C */ u32 state; - /* 10 */ u32 unk_10; - /* 14 */ u32 unk_14; -}; +// struct UnkStruct_02196f0c +// { +// /* 00 */ struct UnkStruct_02196f0c_00 * unk_00; +// /* 04 */ void * flagMgr; +// /* 08 */ void * valueMgr; +// /* 0C */ u32 state; +// /* 10 */ u32 unk_10; +// /* 14 */ u32 unk_14; +// }; extern struct UnkStruct_02196f0c * data_02196f0c; @@ -289,7 +291,7 @@ void Spawn::func_ov000_021d9ca8(struct Unit * unit, s8 x, s8 y) if ((GetPersonDBIndex(unit->pPersonData) == this->pid) && ((this->flags & 8) != 0)) { - unit->state2 |= 0x200; + unit->state2 |= US_UNK_9; } unit->xPos = x; @@ -414,7 +416,7 @@ EC struct Unit * DisposGroupProcessor::func_ov000_021d9e7c(s32 faction) for (pUnit = force->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - if (!(pUnit->state2 & 0x800)) + if (!(pUnit->state2 & US_UNK_11)) { break; } @@ -433,7 +435,7 @@ EC struct Unit * DisposGroupProcessor::func_ov000_021d9ebc(s32 index, BOOL param spawn = this->spawns + index; paVar2 = this->spawnStates + index; - if (((spawn->flags & 0xe) != 0) && ((data_02196f0c->state & 0x40) != 0)) + if (((spawn->flags & 0xe) != 0) && (data_02196f0c->state & GAME_STATE_UNK_6)) { return NULL; } @@ -559,12 +561,12 @@ EC void DisposGroupProcessor::func_ov000_021da0fc(s32 index) data_ov000_021e3528.unk_2e++; } - if (((spawn->flags & 0xe) != 0) && ((data_02196f0c->state & 0x40) != 0)) + if (((spawn->flags & 0xe) != 0) && (data_02196f0c->state & GAME_STATE_UNK_6)) { return; } - if (((spawn->flags & 0x80) == 0) && ((data_02196f0c->state & 1) != 0)) + if (((spawn->flags & 0x80) == 0) && (data_02196f0c->state & GAME_STATE_UNK_0)) { return; } @@ -913,7 +915,7 @@ void DisposGroupProcessor::func_ov000_021da8f4(void) if (gMapStateManager->tst(unit->xPos, unit->yPos)) { - unit->state2 |= 0x20; + unit->state2 |= US_UNK_5; } } else @@ -924,12 +926,12 @@ void DisposGroupProcessor::func_ov000_021da8f4(void) if (gMapStateManager->tst(unit->xPos, unit->yPos)) { - unit->state2 |= 0x20; + unit->state2 |= US_UNK_5; } } else { - unit->state2 |= 0x1000; + unit->state2 |= US_NOT_PRESENT; this->unk_1e++; } @@ -1172,7 +1174,7 @@ void DisposGroupProcessor::func_ov000_021dad04(void) if ((iVar7 == NULL) || ((!(iVar7->unk_54 & 1) ? TRUE : FALSE) & 0xFF)) { - unit->state2 &= ~0x1000; + unit->state2 &= ~US_NOT_PRESENT; if (iVar7 != 0) { @@ -1184,7 +1186,7 @@ void DisposGroupProcessor::func_ov000_021dad04(void) if (gMapStateManager->tst(unit->xPos, unit->yPos)) { - unit->state2 |= 0x20; + unit->state2 |= US_UNK_5; } bVar4 = TRUE; @@ -1293,26 +1295,26 @@ void DisposGroupProcessor::func_ov000_021db1f4(void) else { unit->SetPos(it->xPos, it->yPos); - unit->state2 &= ~0x1000; + unit->state2 &= ~US_NOT_PRESENT; unit->alpha = 0x1f; it->flags |= 0x10; if (gMapStateManager->tst(unit->xPos, unit->yPos)) { - unit->state2 |= 0x20; + unit->state2 |= US_UNK_5; } } if (((it->flags & 8) != 0) && (func_ov000_021bb210(gMapStateManager->unk_14->unk_00, unit) != 0)) { - unit->state2 &= ~0x1000; + unit->state2 &= ~US_NOT_PRESENT; func_ov000_021bb944(); it->flags &= ~8; it->flags |= 0x10; if (gMapStateManager->tst(unit->xPos, unit->yPos)) { - unit->state2 |= 0x20; + unit->state2 |= US_UNK_5; } } } diff --git a/src/ov000/map_battle.cpp b/src/ov000/map_battle.cpp index 5599909..f0f3b5e 100644 --- a/src/ov000/map_battle.cpp +++ b/src/ov000/map_battle.cpp @@ -814,7 +814,7 @@ void onbat::MapBattle::SetupBgm(void) } } - if (songId == -1 && !(data_02196f0c->state & 0x20)) + if (songId == -1 && !(data_02196f0c->state & GAME_STATE_UNK_5)) { unit = NULL; @@ -831,13 +831,13 @@ void onbat::MapBattle::SetupBgm(void) { if (unit->GetPersonData() == GetPersonByPidStr("PID_MEDIUTH")) { - if (data_02196f0c->state & 0x100000) + if (data_02196f0c->state & GAME_STATE_UNK_20) { songId = BGM_BTL_BOSS3_2; } else { - data_02196f0c->state |= 0x100000; + data_02196f0c->state |= GAME_STATE_UNK_20; songId = BGM_BTL_BOSS3; } } diff --git a/src/ov000/map_input_handler.cpp b/src/ov000/map_input_handler.cpp index 721a401..1e6672f 100644 --- a/src/ov000/map_input_handler.cpp +++ b/src/ov000/map_input_handler.cpp @@ -104,7 +104,7 @@ void InputHandler::CreateButtons(void) this->buttons[2]->func_020354bc(0); this->buttons[2]->SetVisible(TRUE); - if ((data_02196f0c->state & 0x40) != 0) + if (data_02196f0c->state & GAME_STATE_UNK_6) { this->buttons[3] = new (Proc_Start(ProcScr_020ce750, PROC_TREE_6)) map::Button_Common; @@ -161,7 +161,7 @@ void InputHandler::_021a5688(void) iVar1 = static_cast(HashTable::Get2("VmMap_Button")); uVar3 = iVar1->unk_04; - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { func_02034930(4, uVar3, iVar1->unk_06); iVar2 = func_02034f74(4); @@ -182,7 +182,7 @@ void InputHandler::_021a5688(void) uVar3 = func_02034f74(0xb); - if (!(data_02196f0c->state & 0x40)) + if (!(data_02196f0c->state & GAME_STATE_UNK_6)) { return; } @@ -420,7 +420,7 @@ BOOL InputHandler::_021a5abc(s32 x, s32 y, BOOL param_4) pUnit = gUnitList + unitId - 1; } - if ((pUnit->state2 & 1) != 0) + if (pUnit->state2 & US_ACTED) { return FALSE; } @@ -428,7 +428,7 @@ BOOL InputHandler::_021a5abc(s32 x, s32 y, BOOL param_4) return x == uVar1 && y == uVar2; } - if (((data_02196f0c->state & 0x40) != 0) && (x == uVar1 && y == uVar2)) + if ((data_02196f0c->state & GAME_STATE_UNK_6) && (x == uVar1 && y == uVar2)) { for (i = 0; i < data_ov000_021e3528.unk_2e; i++) { diff --git a/src/ov000/map_menu.cpp b/src/ov000/map_menu.cpp index 89828ad..fddd06a 100644 --- a/src/ov000/map_menu.cpp +++ b/src/ov000/map_menu.cpp @@ -28,7 +28,7 @@ extern struct UnkStruct_02196f24 * data_02196f24; extern struct UnkStruct_02196f20 * data_02196f20; -extern struct UnkStruct_02196f10 * data_02196f10; +extern struct WirelessSettings * data_02196f10; EC void func_0202b260(void *, s32, s32, s32, s32); EC BOOL func_0201f680(void); @@ -211,7 +211,7 @@ class MapMenu : public BSystemMapMenu for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - if (pUnit->state2 & 0xe1) + if (pUnit->state2 & (US_ACTED | US_UNK_5 | US_UNK_6 | US_ITEMS_TO_CONVOY)) { continue; } diff --git a/src/ov000/map_sequence.cpp b/src/ov000/map_sequence.cpp index 90ae23f..79d8126 100644 --- a/src/ov000/map_sequence.cpp +++ b/src/ov000/map_sequence.cpp @@ -20,18 +20,22 @@ enum { + L_SEQUENCE_3 = 3, L_SEQUENCE_PLAYER_PHASE_START = 4, L_SEQUENCE_CPU_PHASE_START = 5, L_SEQUENCE_LINK_START = 6, - + L_SEQUENCE_7 = 7, L_SEQUENCE_COMPLETE = 8, L_SEQUENCE_GAME_OVER = 9, + L_SEQUENCE_10 = 10, }; enum { + L_PLAYERPHASE_1 = 1, L_PLAYERPHASE_END_PREP = 3, + L_PLAYERPHASE_4 = 4, L_PLAYERPHASE_WARP = 7, @@ -44,7 +48,7 @@ enum L_PLAYERPHASE_SHOP = 21, L_PLAYERPHASE_ARENA = 22, L_PLAYERPHASE_END_TURN = 23, - + L_PLAYERPHASE_24 = 24, L_PLAYERPHASE_END = 25, L_PLAYERPHASE_EXIT = 26, L_PLAYERPHASE_SUSPEND = 27, @@ -53,6 +57,8 @@ enum L_PLAYERPHASE_GUIDE = 32, L_PLAYERPHASE_CONFIG = 33, L_PLAYERPHASE_CONVOY = 34, + L_PLAYERPHASE_35 = 35, + L_PLAYERPHASE_36 = 36, L_PLAYERPHASE_SURRENDER = 38, @@ -160,7 +166,7 @@ struct UnkStruct_021e3340 * data_ov000_021e3340; extern struct UnkStruct_02196f0c * data_02196f0c; -extern struct UnkStruct_02196f10 * data_02196f10; +extern struct WirelessSettings * data_02196f10; extern struct TouchState * gTouchSt; @@ -511,7 +517,7 @@ EC void func_ov000_021a8480(ProcPtr param_1) return; } - if (!((data_02196f10->unk_00 != 0 ? TRUE : FALSE) & 0xFF) || data_02196f10->unk_0b == 0) + if (!data_02196f10->CheckUnk00() || data_02196f10->unk_0b == 0) { return; } @@ -587,7 +593,7 @@ EC void func_ov000_021a8650(void) return; } - if (!((data_02196f10->unk_00 != 0 ? TRUE : FALSE) & 0xFF) || data_02196f10->unk_0b == 0) + if (!data_02196f10->CheckUnk00() || data_02196f10->unk_0b == 0) { return; } @@ -686,7 +692,7 @@ EC void func_ov000_021a8868(void) pUnit->unk_93--; } - if (((pUnit->state2 & 0x8000) != 0) && (pUnit->unk_93 == 0)) + if ((pUnit->state2 & US_UNK_15) && (pUnit->unk_93 == 0)) { pUnit->_0203bf68(); func_ov000_021baafc(gMapStateManager->unk_14->unk_00, pUnit, FALSE); @@ -697,7 +703,7 @@ EC void func_ov000_021a8868(void) { for (pUnit = Force::Get(i)->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - pUnit->state2 &= ~0x4000; + pUnit->state2 &= ~US_UNK_14; } } @@ -950,7 +956,7 @@ EC void ProcSeq_SwitchPhases(void) switch (data_ov000_021e3320[data_ov000_021e3324->phase]) { case 0: - ProcSeq_GotoLabel(7); + ProcSeq_GotoLabel(L_SEQUENCE_7); return; case 1: @@ -978,7 +984,7 @@ EC void func_ov000_021a8ff4(void) { for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->unk_3c) { - it->state2 &= ~0x4000; + it->state2 &= ~US_UNK_14; } func_ov000_021a340c(); @@ -1020,7 +1026,7 @@ EC void func_ov000_021a9138(void) for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->unk_3c) { - it->state2 &= ~1; + it->state2 &= ~US_ACTED; } if (func_ov000_021a2a50(data_ov000_021e3324)) @@ -1373,9 +1379,9 @@ EC void func_ov000_021a9714(ProcPtr parent) proc = new (Proc_StartBlocking(ProcScr_ProcSeq, parent)) ProcSeq(); - if (data_02196f0c->state & 4) + if (data_02196f0c->state & GAME_STATE_UNK_2) { - ProcSeq_GotoLabel(3); + ProcSeq_GotoLabel(L_SEQUENCE_3); ProcSeq_Init(proc); func_ov000_021b9660(gMapStateManager->unk_14, data_ov000_021e3324->unk_01); func_ov000_021a8e34(proc); @@ -1545,7 +1551,7 @@ EC struct Unit * func_ov000_021a995c(struct Unit * unit, s32 forceId) { if (flag) { - if ((cur->state2 & 0xe1) == 0) + if (!(cur->state2 & (US_ACTED | US_UNK_5 | US_UNK_6 | US_ITEMS_TO_CONVOY))) { return cur; } @@ -1749,7 +1755,7 @@ EC void func_ov000_021a9d98(Unit * unit) func_01ff8d88(gMapStateManager->unk_08, unit, -1, 6, 1, 1); func_ov000_021a3ee4(unit, 1); - unit->state2 |= 0x20000; + unit->state2 |= US_HOVERED; func_ov000_021a354c(unit, -1, -1); func_ov000_021a7214(gMapStateManager->unk_04, unit, 0); @@ -1806,7 +1812,7 @@ EC void func_ov000_021a9f98(void) func_ov000_021a7284(); gMapStateManager->unk_04->unk_08 = 0; - pUnit->state2 &= ~0x20000; + pUnit->state2 &= ~US_HOVERED; func_ov000_021a3498(pUnit, 0, -1, -1); @@ -1874,7 +1880,7 @@ EC void func_ov000_021aa1d0(void) if (unit != NULL) { func_ov000_021a7284(); - unit->state2 &= ~0x20000; + unit->state2 &= ~US_HOVERED; } return; @@ -1943,7 +1949,7 @@ EC void func_ov000_021aa278(s32 param) { if (pUnit->force->id == data_ov000_021e3324->phase) { - if ((pUnit->state2 & 1) == 0) + if (!(pUnit->state2 & US_ACTED)) { func_01ff8db8(gMapStateManager->unk_08, pUnit, -1, 6, 1, 1); func_ov000_021a3ee4(pUnit, 1); @@ -2181,7 +2187,7 @@ EC BOOL func_ov000_021aaad8(s32 x, s32 y, s32 param_3) { if ((x != data_ov005_02217560->unk_00) || (y != data_ov005_02217560->unk_04)) { - if (((pUnit == NULL) || ((pUnit->state2 & 0x400) != 0)) && + if (((pUnit == NULL) || (pUnit->state2 & US_UNK_10)) && !(((data_ov005_02217560->unk_00 != -1) ? TRUE : FALSE) & 0xFF)) { data_ov005_02217560->unk_00 = x; @@ -2223,7 +2229,7 @@ EC BOOL func_ov000_021aaad8(s32 x, s32 y, s32 param_3) if ((pUnit->force->id == data_ov000_021e3324->phase) && (param_3 == 0)) { - if ((pUnit->state2 & 1) == 0) + if (!(pUnit->state2 & US_ACTED)) { func_ov000_021aa1d0(); func_ov000_021a9d98(pUnit); @@ -2262,7 +2268,7 @@ EC BOOL func_ov000_021aad64(s32 x, s32 y, s32 param) if (found) { if ((((x == data_ov005_02217560->unk_00) && (y == data_ov005_02217560->unk_04))) || - ((pUnit != NULL) && ((pUnit->state2 & 0x400) != 0))) + ((pUnit != NULL) && (pUnit->state2 & US_UNK_10))) { if ((data_ov005_02217560->unk_00 != -1 ? TRUE : FALSE) & 0xff) { @@ -2313,7 +2319,7 @@ EC BOOL func_ov000_021aad64(s32 x, s32 y, s32 param) if (pUnit->force->id == data_ov000_021e3324->phase) { - if ((pUnit->state2 & 1) == 0) + if (!(pUnit->state2 & US_ACTED)) { return FALSE; } @@ -2349,9 +2355,9 @@ EC BOOL func_ov000_021aad64(s32 x, s32 y, s32 param) if (!((data_ov000_021e3324->phase == pUnit->force->id ? TRUE : FALSE) & 0xff)) { - if ((pUnit->state2 & 0x2000) == 0) + if (!(pUnit->state2 & US_DANGER_ZONE_ACTIVE)) { - pUnit->state2 |= 0x2000; + pUnit->state2 |= US_DANGER_ZONE_ACTIVE; gSoundManager->unk_b0->vfunc_28(SE_SYS_ENEMY_ON1, 0, 0); @@ -2362,7 +2368,7 @@ EC BOOL func_ov000_021aad64(s32 x, s32 y, s32 param) } else { - pUnit->state2 &= ~0x2000; + pUnit->state2 &= ~US_DANGER_ZONE_ACTIVE; gSoundManager->unk_b0->vfunc_28(SE_SYS_ENEMY_OFF1, 0, 0); @@ -2433,9 +2439,9 @@ EC BOOL func_ov000_021ab180(s32 x, s32 y, s32 param_3) return TRUE; } } - else if ((pUnit->state2 & 0x2000) != 0) + else if (pUnit->state2 & US_DANGER_ZONE_ACTIVE) { - pUnit->state2 &= ~0x2000; + pUnit->state2 &= ~US_DANGER_ZONE_ACTIVE; gSoundManager->unk_b0->vfunc_28(SE_SYS_ENEMY_OFF1, 0, 0); @@ -2462,9 +2468,9 @@ EC BOOL func_ov000_021ab180(s32 x, s32 y, s32 param_3) for (it = Force::Get(forceId)->head; it != NULL; it = it->unk_3c) { - if ((it->state2 & 0x2000) != 0) + if (it->state2 & US_DANGER_ZONE_ACTIVE) { - it->state2 &= ~0x2000; + it->state2 &= ~US_DANGER_ZONE_ACTIVE; changed = TRUE; } } @@ -2908,23 +2914,23 @@ EC void func_ov000_021ac218(void) gMapStateManager->unk_04->unk_08 = 0; - pUnit->state2 &= ~0x20000; + pUnit->state2 &= ~US_HOVERED; - if ((pUnit->state2 & 0x48) == 0) + if (!(pUnit->state2 & (US_DEAD | US_UNK_6))) { - pUnit->state2 |= 1; + pUnit->state2 |= US_ACTED; if ((data_ov000_021e3324->unk_02 != 0) && (func_ov000_021a3da0(pUnit) == 0)) { if (TEMP(pUnit) != 0) { - pUnit->state2 |= 0x4000; + pUnit->state2 |= US_UNK_14; } } } else { - pUnit->state2 |= 0x1000; + pUnit->state2 |= US_NOT_PRESENT; } if (data_ov000_021e3324->unk_02 != 0) @@ -2966,13 +2972,13 @@ EC void func_ov000_021ac218(void) } else { - if ((pUnit->state2 & 0x48) == 0) + if (!(pUnit->state2 & (US_DEAD | US_UNK_6))) { func_ov000_021a3498(pUnit, 0, -1, -1); } } - if ((pUnit->state2 & 8) != 0) + if (pUnit->state2 & US_DEAD) { bVar5 = FALSE; @@ -2987,7 +2993,7 @@ EC void func_ov000_021ac218(void) } else { - if ((pUnit->state2 & 0x40) != 0) + if (pUnit->state2 & US_UNK_6) { bVar5 = FALSE; @@ -3002,7 +3008,7 @@ EC void func_ov000_021ac218(void) if (data_02196f0c->flagMgr->GetByName("gf_gameover")) { - Proc_Goto(gPlayerPhaseProc, 24, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_24, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3013,9 +3019,9 @@ EC void func_ov000_021ac218(void) if (data_02196f0c->flagMgr->GetByName("gf_complete")) { - pUnit->state2 &= ~1; + pUnit->state2 &= ~US_ACTED; - Proc_Goto(gPlayerPhaseProc, 24, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_24, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3170,15 +3176,15 @@ EC void func_ov000_021ac8b4(void) gMapStateManager->cursor->isVisible = TRUE; gMapStateManager->inputHandler->SetButtonVisibility(0xf); - if ((data_02196f0c->state & 0x40) != 0) + if (data_02196f0c->state & GAME_STATE_UNK_6) { - Proc_Goto(gPlayerPhaseProc, 1, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_1, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; } else { - Proc_Goto(gPlayerPhaseProc, 4, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_4, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3221,7 +3227,7 @@ EC void func_ov000_021acac4(void) gMapStateManager->unk_14->unk_04->unk_19 = 0; - Proc_Goto(gPlayerPhaseProc, 24, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_24, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3673,11 +3679,11 @@ EC void func_ov000_021ad8c4(map::ProcPL * proc) EC void func_ov000_021ad97c(ProcPtr proc) { gMapStateManager->inputHandler->SetButtonVisibility(0); - Proc_Goto(gPlayerPhaseProc, 24, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_24, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; - ProcSeq_GotoLabel(10); + ProcSeq_GotoLabel(L_SEQUENCE_10); return; } @@ -3686,7 +3692,7 @@ EC void func_ov000_021ad9d4(ProcPtr proc) { gMapStateManager->inputHandler->SetButtonVisibility(0); StartMapSave(0x1b, proc); - Proc_Goto(gPlayerPhaseProc, 26, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_EXIT, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; return; @@ -3695,7 +3701,7 @@ EC void func_ov000_021ad9d4(ProcPtr proc) EC void func_ov000_021ada34(ProcPtr proc) { StartMapSave(0x1c, proc); - Proc_Goto(gPlayerPhaseProc, 35, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_35, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; return; @@ -3704,7 +3710,7 @@ EC void func_ov000_021ada34(ProcPtr proc) EC void func_ov000_021ada78(ProcPtr proc) { StartMapSave(0x1d, proc); - Proc_Goto(gPlayerPhaseProc, 36, 0); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_36, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; return; @@ -3740,7 +3746,7 @@ EC void func_ov000_021adb48(void) if (func_ov000_021adabc(0, 0) == 0) { gMapStateManager->cursor->isVisible = TRUE; - Proc_Goto(gPlayerPhaseProc, 4, 1); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_4, 1); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3750,7 +3756,7 @@ EC void func_ov000_021adb48(void) return; } - Proc_Goto(gPlayerPhaseProc, 23, 1); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_END_TURN, 1); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3761,15 +3767,15 @@ EC void func_ov000_021adbf0(void) { gMapStateManager->cursor->isVisible = TRUE; - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { - Proc_Goto(gPlayerPhaseProc, 1, 1); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_1, 1); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; } else { - Proc_Goto(gPlayerPhaseProc, 4, 1); + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_4, 1); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; func_ov000_021d6e30(0); @@ -3831,9 +3837,9 @@ EC void PlayerPhase_StartGuide(ProcPtr proc) return; } -EC void func_ov000_021ade2c(void) +EC void func_ov000_021ade2c(ProcPtr proc) { - func_02067510(); + func_02067510(proc); gMapStateManager->inputHandler->SetButtonVisibility(0xf); return; } @@ -4070,13 +4076,13 @@ PROC_LABEL(L_PLAYERPHASE_CONVOY), PROC_CALL(func_ov000_021ae2f4), PROC_CALL(func_ov000_021adf20), -PROC_LABEL(35), +PROC_LABEL(L_PLAYERPHASE_35), PROC_CALL(func_ov000_021adb48), -PROC_LABEL(36), +PROC_LABEL(L_PLAYERPHASE_36), PROC_CALL(func_ov000_021adbf0), -PROC_LABEL(40), +PROC_LABEL(L_PLAYERPHASE_40), PROC_CALL(func_ov000_021ad674), PROC_CALL(func_ov000_021ac218), @@ -4088,7 +4094,7 @@ PROC_LABEL(L_PLAYERPHASE_SURRENDER), PROC_CALL(func_ov000_021ae018), PROC_LABEL(39), - { PROC_CMD_02, 0x0000, 0x00000000 }, + PROC_02, PROC_LABEL(24), PROC_CALL(func_ov000_021ae0a8), @@ -4194,7 +4200,7 @@ EC ProcPtr func_ov000_021ae30c(ProcPtr param_1) EC void func_ov000_021ae324(Unit * unit) { - unit->state2 |= 0x20000; + unit->state2 |= US_HOVERED; func_ov000_021a354c(unit, -1, -1); func_ov000_021a7214(gMapStateManager->unk_04, unit, 0); return; @@ -4233,26 +4239,26 @@ EC void CpuPhase_021ae364(void) func_ov000_021a7284(); - unit->state2 &= ~0x20000; + unit->state2 &= ~US_HOVERED; - if ((unit->state2 & 0x48) == 0) + if (!(unit->state2 & (US_DEAD | US_UNK_6))) { if (unit->force->id == data_ov000_021e3324->phase) { - unit->state2 |= 1; + unit->state2 |= US_ACTED; } if ((data_ov000_021e3324->unk_02 != 0) && (func_ov000_021a3da0(unit) == 0)) { if (TEMP(unit) != 0) { - unit->state2 |= 0x4000; + unit->state2 |= US_UNK_14; } } } else { - unit->state2 |= 0x1000; + unit->state2 |= US_NOT_PRESENT; } if (data_ov000_021e3324->unk_02 != 0) @@ -4294,13 +4300,13 @@ EC void CpuPhase_021ae364(void) } else { - if ((unit->state2 & 0x48) == 0) + if (!(unit->state2 & (US_DEAD | US_UNK_6))) { func_ov000_021a3498(unit, 0, -1, -1); } } - if ((unit->state2 & 8) != 0) + if (unit->state2 & US_DEAD) { if (unit->force->id == 0) { @@ -4313,7 +4319,7 @@ EC void CpuPhase_021ae364(void) } else { - if ((unit->state2 & 0x40) != 0 && unit->force->id != 0) + if ((unit->state2 & US_UNK_6) && unit->force->id != 0) { unit->MoveToForce(4, TRUE); } @@ -4545,7 +4551,7 @@ EC void StartCpuPhase(ProcPtr proc) for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) { - if (pUnit->state2 & 0xe1) + if (pUnit->state2 & (US_ACTED | US_UNK_5 | US_UNK_6 | US_ITEMS_TO_CONVOY)) { continue; } @@ -4578,7 +4584,7 @@ EC void StartCpuPhase(ProcPtr proc) EC void func_ov000_021aeb70(Unit * unit) { - unit->state2 |= 0x20000; + unit->state2 |= US_HOVERED; func_ov000_021a354c(unit, -1, -1); func_ov000_021a7214(gMapStateManager->unk_04, unit, 0); return; @@ -4793,26 +4799,26 @@ EC void func_ov000_021aebb0(void) func_ov000_021a7284(); - pUnit->state2 &= ~0x20000; + pUnit->state2 &= ~US_HOVERED; - if ((pUnit->state2 & 0x48) == 0) + if (!(pUnit->state2 & (US_DEAD | US_UNK_6))) { if (pUnit->force->id == data_ov000_021e3324->phase) { - pUnit->state2 |= 1; + pUnit->state2 |= US_ACTED; } if ((data_ov000_021e3324->unk_02 != 0) && (func_ov000_021a3da0(pUnit) == 0)) { if (TEMP(pUnit) != 0) { - pUnit->state2 |= 0x4000; + pUnit->state2 |= US_UNK_14; } } } else { - pUnit->state2 |= 0x1000; + pUnit->state2 |= US_NOT_PRESENT; } if (data_ov000_021e3324->unk_02 != 0) @@ -4854,13 +4860,13 @@ EC void func_ov000_021aebb0(void) } else { - if ((pUnit->state2 & 0x48) == 0) + if (!(pUnit->state2 & (US_DEAD | US_UNK_6))) { func_ov000_021a3498(pUnit, 0, -1, -1); } } - if ((pUnit->state2 & 8) != 0) + if (pUnit->state2 & US_DEAD) { bVar5 = FALSE; @@ -4875,7 +4881,7 @@ EC void func_ov000_021aebb0(void) } else { - if ((pUnit->state2 & 0x40) != 0) + if (pUnit->state2 & US_UNK_6) { bVar5 = FALSE; @@ -5222,7 +5228,7 @@ EC void ProcMind_ov000_021af9bc(ProcEx * proc) case ACTION_ESCAPE: iVar4 = GetUnit(gActionSt->unitId); - iVar4->state2 |= 0x40; + iVar4->state2 |= US_UNK_6; if (!gCpSkip->Check06_State4()) { @@ -5434,7 +5440,7 @@ EC void ProcMind_ov000_021b0538(ProcPtr proc) unit = GetUnit(gActionSt->unitId); - if ((unit->state2 & 0x48) != 0) + if (unit->state2 & (US_DEAD | US_UNK_6)) { return; } diff --git a/src/ov000/map_state.cpp b/src/ov000/map_state.cpp index 32aa950..93857a3 100644 --- a/src/ov000/map_state.cpp +++ b/src/ov000/map_state.cpp @@ -72,7 +72,7 @@ EC BOOL func_ov000_021a475c(void); EC BOOL func_ov000_021a47ac(void); extern struct UnkStruct_02196f0c * data_02196f0c; -extern struct UnkStruct_02196f10 * data_02196f10; +extern struct WirelessSettings * data_02196f10; extern vu32 gElapsedFrames; @@ -268,7 +268,7 @@ EC void func_ov000_021a2574(void) func_0204000c(); - data_02196f0c->state &= ~0x4; + data_02196f0c->state &= ~GAME_STATE_UNK_2; return; } @@ -732,15 +732,15 @@ EC void func_ov000_021a3498(struct Unit * unit, BOOL arg_1, u32 x, u32 y) y = unit->yPos; } - if (((unit->state2 & 0x21000) != 0) && (arg_1 == 0)) + if ((unit->state2 & (US_NOT_PRESENT | US_HOVERED)) && (arg_1 == 0)) { return; } - if (!(unit->state2 & 0x20)) + if (!(unit->state2 & US_UNK_5)) { u32 pos = (x | (y << 5)); - if (((gMapStateManager->unk_d30[pos >> 3] & (1 << (pos & 7))) & 0xFF) || (unit->state2 & 0x4000) || + if (((gMapStateManager->unk_d30[pos >> 3] & (1 << (pos & 7))) & 0xFF) || (unit->state2 & US_UNK_14) || (((unit->force->id == data_ov000_021e3324->unk_01) & 0xFF) != 0)) { gMapStateManager->unk_028[x | y << 5] = unit->unk_68; @@ -776,7 +776,7 @@ EC void func_ov000_021a354c(struct Unit * unit, s32 x, s32 y) static inline BOOL TestPhaseAndState(struct Unit * unit, u32 phase) { - if (unit->state2 & 0x21020) + if (unit->state2 & (US_UNK_5 | US_NOT_PRESENT | US_HOVERED)) { return TRUE; } @@ -814,7 +814,7 @@ EC void func_ov000_021a35a0(void) continue; } - if (!(it->state2 & 0x4000)) + if (!(it->state2 & US_UNK_14)) { continue; } @@ -824,7 +824,7 @@ EC void func_ov000_021a35a0(void) continue; } - if (!(it->state2 & 0x2000)) + if (!(it->state2 & US_DANGER_ZONE_ACTIVE)) { continue; } @@ -887,7 +887,7 @@ EC void func_ov000_021a37c4(void) func_020a5824(gMapStateManager->unk_db0, 0, 0x80); func_020a5824(gMapStateManager->unk_d30, 0, 0x80); - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { func_ov000_021a3a30(gMapStateManager->unk_d30, data_ov000_021e3324->unk_01); } @@ -912,7 +912,7 @@ EC void func_ov000_021a38b4(void) func_020a5824(gMapStateManager->unk_d30, 0, 0x80); - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { func_ov000_021a3a30(gMapStateManager->unk_d30, data_ov000_021e3324->unk_01); } @@ -949,7 +949,7 @@ EC void func_ov000_021a3974(u8 * arg_0, s32 arg_1) for (it = force->head; it != NULL; it = it->unk_3c) { - if ((it->state2 & 0x21020) == 0) + if (!(it->state2 & (US_UNK_5 | US_NOT_PRESENT | US_HOVERED))) { func_ov000_021a3c20(arg_0, arg_1, it); } @@ -1288,7 +1288,7 @@ EC s32 GetMapBgmId(s32 factionId) return -1; } - if (data_02196f0c->state & 0x40) + if (data_02196f0c->state & GAME_STATE_UNK_6) { return BGM_SYS_SINGEKI1; } @@ -1300,7 +1300,7 @@ EC s32 GetMapBgmId(s32 factionId) idx = 1; } - if (data_02196f0c->state & 0x20) + if (data_02196f0c->state & GAME_STATE_UNK_5) { if (data_ov000_021e3320[factionId] == 1) { @@ -1334,7 +1334,7 @@ EC BOOL AreAllEnemiesDefeated(u32 factionId) s32 count = 0; s32 i; - if ((data_02196f0c->state & 0x400) != 0) + if (data_02196f0c->state & GAME_STATE_UNK_10) { return FALSE; } @@ -1490,7 +1490,7 @@ EC BOOL func_ov000_021a475c(void) EC BOOL func_ov000_021a478c(void) { - return (data_02196f0c->state & 0x20) != 0; + return (data_02196f0c->state & GAME_STATE_UNK_5) != 0; } EC BOOL func_ov000_021a47ac(void) @@ -1510,7 +1510,7 @@ EC BOOL func_ov000_021a47ac(void) EC BOOL func_ov000_021a47e4(void) { - return (data_02196f0c->state & 0x10000) != 0; + return (data_02196f0c->state & GAME_STATE_UNK_16) != 0; } /* NONMATCHING: https://decomp.me/scratch/VvUaN */ @@ -1526,7 +1526,7 @@ EC BOOL func_ov000_021a4804(void) return FALSE; } - if (((data_02196f10->unk_00 != 0) & 0xFF) == 0) + if (data_02196f10->CheckUnk00()) { return FALSE; } diff --git a/src/ov000/map_unit_menu.cpp b/src/ov000/map_unit_menu.cpp index c7c21e7..5c736bd 100644 --- a/src/ov000/map_unit_menu.cpp +++ b/src/ov000/map_unit_menu.cpp @@ -1151,7 +1151,7 @@ class MIU_Transporter : public MenuItem return MENU_NOTSHOWN; } - if (data_02196f0c->state & 0x4000) + if (data_02196f0c->state & GAME_STATE_SUPPLY_OFF) { return MENU_NOTSHOWN; } @@ -1416,7 +1416,7 @@ class MIU_Imitation : public MenuItem s32 uy; Unit * unit; - if (gMapStateManager->unk_04->pUnit->state2 & 0x8000) + if (gMapStateManager->unk_04->pUnit->state2 & US_UNK_15) { return MENU_NOTSHOWN; } diff --git a/src/ov005/prep_job_select.cpp b/src/ov005/prep_job_select.cpp index 75d8923..73d1b0c 100644 --- a/src/ov005/prep_job_select.cpp +++ b/src/ov005/prep_job_select.cpp @@ -255,7 +255,7 @@ class JobS : public ProcEx, public JobSConst func_020113d0(gpActiveScreenSt->tilemap[1] + 0x98, ((unk_35 * 4) + 1), 8); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1A, 4, 0x4D, 0, 0, 0); @@ -270,7 +270,7 @@ class JobS : public ProcEx, public JobSConst func_020295ec( data_021970c4, "/", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1B, 4, 0x51, 0, 0, 0); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1C, 4, 0x53, 0, 0, 0); @@ -331,7 +331,7 @@ class JobS : public ProcEx, public JobSConst unk_35 = this->unk_38[this->unk_44]->unk_35; func_020113d0(((u16 *)gpActiveScreenSt->tilemap[1]) + 0x98, unk_35 * 4 + 1, 8); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[2], gpActiveScreenSt->tilemap[1], 0x1A, 4, 0x4D, 0, 0, @@ -348,7 +348,7 @@ class JobS : public ProcEx, public JobSConst data_021970c4, "/", gpActiveScreenSt->bgTiles[2], gpActiveScreenSt->tilemap[1], 0x1B, 4, 0x51, 0, 0, 0); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[2], gpActiveScreenSt->tilemap[1], 0x1C, 4, 0x53, 0, 0, @@ -406,7 +406,7 @@ class JobS : public ProcEx, public JobSConst unk_35 = this->unk_38[this->unk_44]->unk_35; func_020113d0(((u16 *)gpActiveScreenSt->tilemap[1]) + 0x98, unk_35 * 4 + 1, 8); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1A, 4, 0x4D, 0, 0, @@ -423,7 +423,7 @@ class JobS : public ProcEx, public JobSConst data_021970c4, "/", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1B, 4, 0x51, 0, 0, 0); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1C, 4, 0x53, 0, 0, @@ -491,7 +491,7 @@ class JobS : public ProcEx, public JobSConst unk_35 = this->unk_38[this->unk_44]->unk_35; func_020113d0(((u16 *)gpActiveScreenSt->tilemap[1]) + 0x98, unk_35 * 4 + 1, 8); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1A, 4, 0x4D, @@ -508,7 +508,7 @@ class JobS : public ProcEx, public JobSConst data_021970c4, "/", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1B, 4, 0x51, 0, 0, 0); - if (this->unk_3c->state2 & 0x40000) + if (this->unk_3c->state2 & US_UNK_18) { func_020295ec( data_021970c4, "−", gpActiveScreenSt->bgTiles[1], gpActiveScreenSt->tilemap[1], 0x1C, 4, 0x53, @@ -554,7 +554,7 @@ class JobS : public ProcEx, public JobSConst { return FALSE; } - else if (this->unk_3c->state2 & 0x40000) + else if (this->unk_3c->state2 & US_UNK_18) { return TRUE; } @@ -588,7 +588,7 @@ EC void SallyJobS_FadeIn(sally::JobS * proc) { s32 target = 0; - if (data_02196f0c->state & 0x80000) + if (data_02196f0c->state & GAME_STATE_UNK_19) { target = 1; } @@ -601,7 +601,7 @@ EC void SallyJobS_FadeOut(sally::JobS * proc) { s32 target = 0; - if (data_02196f0c->state & 0x80000) + if (data_02196f0c->state & GAME_STATE_UNK_19) { target = 1; } diff --git a/src/ov005/prep_main_menu.cpp b/src/ov005/prep_main_menu.cpp index 90de5db..9de558c 100644 --- a/src/ov005/prep_main_menu.cpp +++ b/src/ov005/prep_main_menu.cpp @@ -274,7 +274,7 @@ class MMenu : public ProcEx, public MMenuConst if (data_ov005_02217560->unk_11 == 0) { - if ((data_02196f20->flagMgr->GetById(0x17)) && (!(data_02196f0c->state & 0x40000))) + if ((data_02196f20->flagMgr->GetById(0x17)) && (!(data_02196f0c->state & GAME_STATE_UNK_18))) { return; } @@ -286,7 +286,7 @@ class MMenu : public ProcEx, public MMenuConst } data_02196f20->flagMgr->SetById(0x17); - data_02196f0c->state |= 0x40000; + data_02196f0c->state |= GAME_STATE_UNK_18; } } diff --git a/src/ov005/prep_proc_02212d60.cpp b/src/ov005/prep_proc_02212d60.cpp index fa7c83c..a7e0439 100644 --- a/src/ov005/prep_proc_02212d60.cpp +++ b/src/ov005/prep_proc_02212d60.cpp @@ -139,7 +139,7 @@ EC void func_ov005_02204dd0(s32 param_1) unit = Force::Get(0)->head; } - if (((data_02196f0c->state & 0x200) == 0) && (unit != NULL)) + if (!(data_02196f0c->state & GAME_STATE_UNK_9) && (unit != NULL)) { gMapStateManager->cursor->SetPosImmediate(unit->xPos, unit->yPos); @@ -217,9 +217,9 @@ EC void func_ov005_02204fd0(void) gSoundManager->unk_a4->vfunc_38(0x20); } - data_02196f0c->state &= ~0x40; - data_02196f0c->state &= ~0x40000; - data_02196f0c->state &= ~0x80000; + data_02196f0c->state &= ~GAME_STATE_UNK_6; + data_02196f0c->state &= ~GAME_STATE_UNK_18; + data_02196f0c->state &= ~GAME_STATE_UNK_19; if (gMapStateManager != NULL) { @@ -229,7 +229,7 @@ EC void func_ov005_02204fd0(void) { for (unit = Force::Get(i)->head; unit != NULL; unit = unit->unk_3c) { - unit->state2 &= ~0x2000; + unit->state2 &= ~US_DANGER_ZONE_ACTIVE; } } @@ -254,7 +254,7 @@ EC u32 func_ov005_022050e0(void) EC void func_ov005_022050f4(ProcPtr proc) { - if (data_02196f0c->state & 0x100) + if (data_02196f0c->state & GAME_STATE_UNK_8) { return; } @@ -528,12 +528,12 @@ PROC_LABEL(13), EC void func_ov005_022052d0(ProcPtr proc) { - if (data_02196f0c->state & 0x800) + if (data_02196f0c->state & GAME_STATE_UNK_8) { return; } - data_02196f0c->state |= 0x40; + data_02196f0c->state |= GAME_STATE_UNK_6; func_0204b790(); @@ -563,7 +563,7 @@ EC void func_ov005_022052d0(ProcPtr proc) EC void func_ov005_022053cc(ProcPtr proc) { - data_02196f0c->state |= 0x40; + data_02196f0c->state |= GAME_STATE_UNK_6; func_0204b790(); diff --git a/src/sound_manager.cpp b/src/sound_manager.cpp index 23b779a..c3ce728 100644 --- a/src/sound_manager.cpp +++ b/src/sound_manager.cpp @@ -1910,7 +1910,7 @@ EC void SoundSeHandle::vfunc_28(u32 param_2, u32 param_3, u32 param_4) return; } - if ((!data_02196f24->enableSoundEffects) && !(data_02196f0c->state & 0x2000000)) + if ((!data_02196f24->enableSoundEffects) && !(data_02196f0c->state & GAME_STATE_UNK_25)) { return; } diff --git a/src/unit.cpp b/src/unit.cpp index ec0bedd..0ae2ecb 100644 --- a/src/unit.cpp +++ b/src/unit.cpp @@ -64,7 +64,7 @@ void Unit::Init(void) this->unk_96 = 0; this->state1 = 0; - this->state2 = 0; + this->state2 = US_NONE; this->unk_a0 = NULL; this->unk_a4 = 0; @@ -326,10 +326,10 @@ void Unit::Load(struct SaveBuffer * buf, s32 param_3) this->state1 = buf->ReadWord(); this->state2 = buf->ReadWord(); - if ((param_3 < 5) && func_0203b714(this, 0x10000)) + if ((param_3 < 5) && func_0203b714(this, US_UNK_16)) { - this->state2 &= ~0x10000; - this->state1 |= 0x20000000; + this->state2 &= ~US_UNK_16; + this->state1 |= CA_UNK_29; } unk = buf->ReadByte(); @@ -513,10 +513,10 @@ BOOL Unit::_0203ba20(struct SaveBuffer * buf) this->state1 = buf->ReadWord(); this->state2 = buf->ReadWord(); - if ((type < 5) && (this->state2 & 0x10000)) + if ((type < 5) && (this->state2 & US_UNK_16)) { - this->state2 &= ~0x10000; - this->state1 |= 0x20000000; + this->state2 &= ~US_UNK_16; + this->state1 |= CA_UNK_29; } if (type >= 1) @@ -542,19 +542,17 @@ BOOL Unit::_0203ba20(struct SaveBuffer * buf) void Unit::_0203bcf4(void) { - this->state2 &= 0xFFFD91BE; + this->state2 &= ~(US_ACTED | US_UNK_6 | US_UNK_9 | US_UNK_10 | US_UNK_11 | US_DANGER_ZONE_ACTIVE | US_UNK_14 | US_HOVERED); this->unk_91 = 0; this->unk_92 = 0; this->unk_93 = 0; this->unk_a4 = 0; - if ((this->state2 & 0x8000) == 0) + if (this->state2 & US_UNK_15) { - return; + this->_0203bf68(); } - this->_0203bf68(); - return; } @@ -652,7 +650,7 @@ EC void Unit::_0203be30(struct Unit * arg_1) this->items[i] = &pUVar5->items[i]; dst = &this->items[i]; - if (!(dst->flags & 0x10)) + if (!(dst->flags & ITEM_FLAG_EQUIPPED)) { continue; } @@ -662,12 +660,12 @@ EC void Unit::_0203be30(struct Unit * arg_1) continue; } - dst->flags &= ~0x10; + dst->flags &= ~(ITEM_FLAG_EQUIPPED); } - this->state1 &= ~0x1002; + this->state1 &= ~(CA_BOSS | CA_LORD); this->unk_a0 = pUVar5; - this->state2 |= 0x8000; + this->state2 |= US_UNK_15; this->unk_93 = 5; return; @@ -723,7 +721,7 @@ void Unit::_0203bf68(void) this->Copy(dstUnit); - this->state2 &= ~0x8000; + this->state2 &= ~US_UNK_15; dstUnit->MoveToForce(4, TRUE); @@ -776,7 +774,7 @@ void Unit::_0203c068(struct Unit * arg_1) this->state1 |= pUVar7->CheckAttribute(CA_UNK_1 | CA_BOSS); this->unk_a0 = pUVar7; - this->state2 |= 0x40000; + this->state2 |= US_UNK_18; return; } @@ -824,7 +822,7 @@ void Unit::_0203c19c(void) this->Copy(dstUnit); - this->state2 &= ~0x40000; + this->state2 &= ~US_UNK_18; dstUnit->MoveToForce(4, TRUE); @@ -835,7 +833,7 @@ char * Unit::_0203c284(void) { Unit * unit = func_0203c378(this); - if ((unit->state2 & 0x80000) != 0) + if (unit->state2 & US_UNK_19) { return func_020423e4(unit->unk_96); } @@ -2061,7 +2059,7 @@ void Unit::ChangeJob(struct JobData * job, BOOL arg_2) if (arg_2 != 0) { - this->state1 |= 0x20000000; + this->state1 |= CA_UNK_29; } return; From 62a5c61d8bb1ea6c576850ba76283a0f2d78728e Mon Sep 17 00:00:00 2001 From: Eebit Date: Thu, 3 Sep 2026 21:52:41 -0400 Subject: [PATCH 2/3] (doc) Name gWirelessSettings --- config/YFEE01/arm9/symbols.txt | 4 +- include/map.hpp | 12 ++--- include/unknown_data.h | 2 +- include/unknown_funcs.h | 8 ++-- include/unknown_types.hpp | 24 +++++++++- src/force.cpp | 44 +++++------------ src/gamectrl.cpp | 88 +++++++++++++++++----------------- src/item.cpp | 2 +- src/ov000/map_menu.cpp | 6 +-- src/ov000/map_sequence.cpp | 42 ++++++++-------- src/ov000/map_state.cpp | 40 ++++++++-------- 11 files changed, 137 insertions(+), 135 deletions(-) diff --git a/config/YFEE01/arm9/symbols.txt b/config/YFEE01/arm9/symbols.txt index 7dce069..f3d9a0a 100644 --- a/config/YFEE01/arm9/symbols.txt +++ b/config/YFEE01/arm9/symbols.txt @@ -1226,7 +1226,7 @@ func_02022988 kind:function(arm,size=0x20) addr:0x02022988 func_020229a8 kind:function(arm,size=0x48) addr:0x020229a8 func_020229f0 kind:function(arm,size=0x120) addr:0x020229f0 func_02022b10 kind:function(arm,size=0x20) addr:0x02022b10 -func_02022b30 kind:function(arm,size=0x20) addr:0x02022b30 +GameCtrl_IsWirelessPracticeMode kind:function(arm,size=0x20) addr:0x02022b30 func_02022b50 kind:function(arm,size=0x20) addr:0x02022b50 func_02022b70 kind:function(arm,size=0x40) addr:0x02022b70 func_02022bb0 kind:function(arm,size=0xa4) addr:0x02022bb0 @@ -8562,7 +8562,7 @@ data_02196b2c kind:bss addr:0x02196b2c gRandomSt kind:bss addr:0x02196e04 data_02196e0c kind:bss addr:0x02196e0c data_02196f0c kind:bss addr:0x02196f0c -data_02196f10 kind:bss addr:0x02196f10 +gWirelessSettings kind:bss addr:0x02196f10 data_02196f14 kind:bss addr:0x02196f14 data_02196f18 kind:bss addr:0x02196f18 data_02196f1c kind:bss addr:0x02196f1c diff --git a/include/map.hpp b/include/map.hpp index cd5e8b7..5e7bcb8 100644 --- a/include/map.hpp +++ b/include/map.hpp @@ -22,12 +22,12 @@ class UnkStruct_021E3324 public: /* 00 */ u8 phase; /* 01 */ u8 unk_01; - /* 02 */ u8 unk_02; // "is invisible" + /* 02 */ u8 fogActive; // Referenced by event func "IsInvisible" /* 03 */ u8 unk_03; /* 04 */ u16 turn; - /* 06 */ u16 unk_06; // turn limit + /* 06 */ u16 turnLimit; /* 08 */ u32 unk_08; - /* 0C */ u32 unk_0c; // time limit + /* 0C */ u32 timeLimit; /* 10 */ u32 unk_10; /* 14 */ u8 unk_14; /* 15 */ u8 unk_15; @@ -43,10 +43,10 @@ class UnkStruct_021E3324 this->phase = 0; this->unk_01 = 0; this->turn = 1; - this->unk_06 = 0; + this->turnLimit = 0; this->unk_08 = 0; - this->unk_0c = 0; - this->unk_02 = 0; + this->timeLimit = 0; + this->fogActive = 0; this->unk_03 = 0; this->unk_14 = 0x1f; this->unk_15 = 0x1f; diff --git a/include/unknown_data.h b/include/unknown_data.h index 8c7bc7c..37b4577 100644 --- a/include/unknown_data.h +++ b/include/unknown_data.h @@ -2905,7 +2905,7 @@ extern struct ProcCmd data_020cec14[]; // extern ??? gRandomSt // extern ??? data_02196e0c // extern ??? data_02196f0c -// extern ??? data_02196f10 +// extern ??? gWirelessSettings // extern ??? data_02196f14 // extern ??? data_02196f18 // extern ??? data_02196f1c diff --git a/include/unknown_funcs.h b/include/unknown_funcs.h index 83ca2bf..20fe5dc 100644 --- a/include/unknown_funcs.h +++ b/include/unknown_funcs.h @@ -17,7 +17,7 @@ struct Item; struct ItemData; struct MapStateManager_08; struct UnkStruct_020e3ca0; -struct UnkStruct_02196f10; +struct WirelessSettings; EXTERN_C @@ -1207,8 +1207,8 @@ EC char * GetBattleMapNameMaybe(void); // EC ??? func_020211dc // EC ??? func_020212d4 EC struct UnkStruct_Func_02021410_Ret * func_02021410(u32); -EC void func_02021430(struct UnkStruct_02196f10 *, s32, s32); -EC void func_02021790(struct UnkStruct_02196f10 *); +EC void func_02021430(struct WirelessSettings *, s32, s32); +EC void func_02021790(struct WirelessSettings *); EC void func_020217b4(void); // EC ??? func_020219a4 // EC ??? func_02021b00 @@ -1247,7 +1247,7 @@ EC void func_020217b4(void); // EC ??? func_020229a8 // EC ??? func_020229f0 // EC ??? func_02022b10 -// EC ??? func_02022b30 +// EC ??? GameCtrl_IsWirelessPracticeMode // EC ??? func_02022b50 // EC ??? func_02022b70 // EC ??? func_02022bb0 diff --git a/include/unknown_types.hpp b/include/unknown_types.hpp index 5d7cc0d..d5903b8 100644 --- a/include/unknown_types.hpp +++ b/include/unknown_types.hpp @@ -79,10 +79,32 @@ enum WIRELESS_MODE_PRACTICE = 3, }; +struct WirelessSettings_00_348 +{ + /* 00 */ STRUCT_PAD(0x00, 0x20); + /* 20 */ u16 unk_20; + /* 22 */ STRUCT_PAD(0x22, 0x24); + /* 24 */ s8 unk_24; + /* 25 */ s8 unk_25; + /* 26 */ s8 unk_26; + /* 27 */ s8 unk_27; +}; + +struct WirelessSettings_00 +{ + /* 000 */ Unit unk_000[5]; + /* 348 */ struct WirelessSettings_00_348 unk_348[0x19]; + /* 730 */ u8 unk_730[0x24]; + /* 754 */ u8 unk_754; + /* 755 */ u8 unk_755; + /* 756 */ u8 unk_756; + /* 757 */ u8 unk_757; +}; + class WirelessSettings { public: - /* 00 */ void * unk_00; + /* 00 */ WirelessSettings_00 * unk_00; /* 04 */ s8 mode; /* 05 */ u8 unk_05; /* 06 */ u8 unk_06; // faction? diff --git a/src/force.cpp b/src/force.cpp index 634f264..7780506 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -5,27 +5,7 @@ #include "save.hpp" #include "unit.hpp" -struct UnkStruct_02196f10_00_348 -{ - /* 00 */ STRUCT_PAD(0x00, 0x20); - /* 20 */ u16 unk_20; - /* 22 */ STRUCT_PAD(0x22, 0x24); - /* 24 */ s8 unk_24; - /* 25 */ s8 unk_25; - /* 26 */ s8 unk_26; - /* 27 */ s8 unk_27; -}; - -struct UnkStruct_02196f10_00 -{ - /* 000 */ struct Unit unk_000[5]; - /* 348 */ struct UnkStruct_02196f10_00_348 unk_348[0x19]; - /* 730 */ u8 unk_730[0x24]; - /* 754 */ u8 unk_754; - /* 755 */ u8 unk_755; - /* 756 */ u8 unk_756; - /* 757 */ u8 unk_757; -}; +#include "unknown_types.hpp" EC void func_020a5824(void *, s32, s32); @@ -34,20 +14,20 @@ EC void func_020a58b8(void *, void *, u32); EC s32 GetItemDBIndex(struct ItemData *); -extern struct UnkStruct_02196f10_00_348 data_021974e4[]; +extern struct WirelessSettings_00_348 data_021974e4[]; -EC u16 func_02041294(u16, struct UnkStruct_02196f10_00_348 *, s8, s8, s32, s32, s32, s32); /* extern */ +EC u16 func_02041294(u16, struct WirelessSettings_00_348 *, s8, s8, s32, s32, s32, s32); /* extern */ EC s32 IntSys_Div(s32, s32); EC s32 GetJobMaxLevel(struct JobData *); -EC void func_02041590(UnkStruct_02196f10_00_348 *, SaveBuffer *); +EC void func_02041590(WirelessSettings_00_348 *, SaveBuffer *); EC s32 func_02022f4c(void); EC s32 func_02022f54(void); // fwd decl -EC void func_02041644(UnkStruct_02196f10_00_348 *, SaveBuffer *, s32); +EC void func_02041644(WirelessSettings_00_348 *, SaveBuffer *, s32); EC void func_02039fdc(struct Unit *, s32); @@ -403,7 +383,7 @@ EC void func_020401d8(SaveBuffer * save, u32 faction) return; } -EC void func_0204026c(struct UnkStruct_02196f10_00 * arg0, u32 arg1) +EC void func_0204026c(struct WirelessSettings_00 * arg0, u32 arg1) { s32 i; @@ -428,8 +408,8 @@ EC void func_0204026c(struct UnkStruct_02196f10_00 * arg0, u32 arg1) return; } -EC struct UnkStruct_02196f10_00 * -func_020402f8(struct UnkStruct_02196f10_00 * arg0, struct UnkStruct_02196f10_00 * arg1) +EC struct WirelessSettings_00 * +func_020402f8(struct WirelessSettings_00 * arg0, struct WirelessSettings_00 * arg1) { s32 i; @@ -452,7 +432,7 @@ func_020402f8(struct UnkStruct_02196f10_00 * arg0, struct UnkStruct_02196f10_00 return arg0; } -EC void func_02040394(struct UnkStruct_02196f10_00 * arg0) +EC void func_02040394(struct WirelessSettings_00 * arg0) { s32 sp4; s32 var_r6; @@ -496,7 +476,7 @@ EC void func_02040394(struct UnkStruct_02196f10_00 * arg0) return; } -EC void func_02040594(struct UnkStruct_02196f10_00 * arg0, s32 arg1) +EC void func_02040594(struct WirelessSettings_00 * arg0, s32 arg1) { s32 temp_r6; s32 i; @@ -726,7 +706,7 @@ EC void func_0204078c(struct Unit * unit, s32 expInput) } } -EC void func_020409d0(struct UnkStruct_02196f10_00 * arg0, SaveBuffer * arg1) +EC void func_020409d0(struct WirelessSettings_00 * arg0, SaveBuffer * arg1) { s32 i; @@ -755,7 +735,7 @@ EC void func_020409d0(struct UnkStruct_02196f10_00 * arg0, SaveBuffer * arg1) return; } -EC void func_02040abc(struct UnkStruct_02196f10_00 * arg0, SaveBuffer * save) +EC void func_02040abc(struct WirelessSettings_00 * arg0, SaveBuffer * save) { s32 i; s32 temp_r5; diff --git a/src/gamectrl.cpp b/src/gamectrl.cpp index 6e135f7..85e3097 100644 --- a/src/gamectrl.cpp +++ b/src/gamectrl.cpp @@ -103,7 +103,7 @@ EC BOOL func_02022988(void); EC void func_020229a8(void); EC void func_020229f0(void); EC BOOL func_02022b10(void); -EC BOOL func_02022b30(void); +EC BOOL GameCtrl_IsWirelessPracticeMode(void); EC BOOL func_02022b50(void); EC void func_02022b70(ProcPtr); EC void func_02022bb0(ProcPtr); @@ -395,7 +395,7 @@ PROC_LABEL(L_GAMECTRL_29), PROC_CALL(func_020229a8), PROC_25(3, 0), PROC_CALL(func_020228ec), - PROC_GOTO_IF_YES(func_02022b30, L_GAMECTRL_30), + PROC_GOTO_IF_YES(GameCtrl_IsWirelessPracticeMode, L_GAMECTRL_30), PROC_CALL(func_ov003_021e4204), PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_40), @@ -404,14 +404,14 @@ PROC_LABEL(L_GAMECTRL_29), PROC_LABEL(L_GAMECTRL_30), PROC_CALL(func_ov003_021fb690), PROC_GOTO_IF_NO(func_02022e34, L_GAMECTRL_40), - PROC_GOTO_IF_YES(func_02022b30, L_GAMECTRL_34), + PROC_GOTO_IF_YES(GameCtrl_IsWirelessPracticeMode, L_GAMECTRL_34), PROC_GOTO(L_GAMECTRL_32), PROC_LABEL(L_GAMECTRL_31), PROC_CALL(func_ov003_021fb704), PROC_GOTO_IF_NO(func_02022e34, L_GAMECTRL_40), - PROC_GOTO_IF_YES(func_02022b30, L_GAMECTRL_34), + PROC_GOTO_IF_YES(GameCtrl_IsWirelessPracticeMode, L_GAMECTRL_34), PROC_GOTO(L_GAMECTRL_32), @@ -507,7 +507,7 @@ extern struct UnkStruct_020e3ca0 * data_020e3ca0; extern struct UnkStruct_02196f1c * data_02196f1c; -extern struct WirelessSettings * data_02196f10; +extern struct WirelessSettings * gWirelessSettings; extern struct UnkStruct_02196f0c * data_02196f0c; @@ -555,9 +555,9 @@ EC void func_020217b4(void) func_02021014(); - if (data_02196f10 == NULL) + if (gWirelessSettings == NULL) { - data_02196f10 = new WirelessSettings; + gWirelessSettings = new WirelessSettings(); } func_020423fc(); @@ -840,9 +840,9 @@ EC void func_02021f5c(void) if (data_02196f0c->state & GAME_STATE_UNK_16) { - data_ov000_021e3324->unk_02 = data_02196f10->fogActive; - data_ov000_021e3324->unk_0c = data_02196f10->timeLimit * 60; - data_ov000_021e3324->unk_06 = data_02196f10->turnLimit; + data_ov000_021e3324->fogActive = gWirelessSettings->fogActive; + data_ov000_021e3324->timeLimit = gWirelessSettings->timeLimit * 60; + data_ov000_021e3324->turnLimit = gWirelessSettings->turnLimit; } return; @@ -859,7 +859,7 @@ EC void func_0202214c(ProcPtr proc) return; } - unit = Force::Get(data_02196f10->unk_06)->head; + unit = Force::Get(gWirelessSettings->unk_06)->head; if (unit != NULL) { @@ -1207,7 +1207,7 @@ EC void func_02022814(void) EC void func_0202284c(ProcPtr proc) { - switch (data_02196f10->mode) + switch (gWirelessSettings->mode) { case WIRELESS_MODE_LOCAL: func_ov003_021e42c8(proc, 0); @@ -1231,7 +1231,7 @@ EC void func_0202284c(ProcPtr proc) EC void func_020228ac(ProcPtr proc) { - switch (data_02196f10->mode) + switch (gWirelessSettings->mode) { case WIRELESS_MODE_LOCAL: func_ov003_021e42c8(proc, 1); @@ -1247,7 +1247,7 @@ EC void func_020228ac(ProcPtr proc) EC void func_020228ec(ProcPtr unused) { - if (data_02196f10->mode != WIRELESS_MODE_PRACTICE) + if (gWirelessSettings->mode != WIRELESS_MODE_PRACTICE) { data_02196f0c->state |= GAME_STATE_UNK_5; } @@ -1256,7 +1256,7 @@ EC void func_020228ec(ProcPtr unused) data_02196f0c->state |= GAME_STATE_SUPPLY_OFF; data_02196f0c->state |= GAME_STATE_UNK_0; - if (data_02196f10->IsWifiPlayAnyoneMode()) + if (gWirelessSettings->IsWifiPlayAnyoneMode()) { func_0202118c(); return; @@ -1269,12 +1269,12 @@ EC void func_020228ec(ProcPtr unused) EC BOOL func_02022988(void) { - return data_02196f10->IsWifiPlayAnyoneMode(); + return gWirelessSettings->IsWifiPlayAnyoneMode(); } EC void func_020229a8(void) { - switch (data_02196f10->mode) + switch (gWirelessSettings->mode) { case WIRELESS_MODE_LOCAL: LoadOverlay(OVERLAY_ID_A); @@ -1299,32 +1299,32 @@ EC void func_020229f0(void) { int random; - if (data_02196f10->_02022b10()) + if (gWirelessSettings->_02022b10()) { return; } - if (data_02196f10->IsPracticeMode()) + if (gWirelessSettings->IsPracticeMode()) { return; } - if (data_02196f10->_02022b50()) + if (gWirelessSettings->_02022b50()) { random = RollRN(1, gFE11Database->pDBFE11Footer->unk_14 - 1); - data_02196f10->unk_11 = random; + gWirelessSettings->unk_11 = random; data_02196f18->unk_000->SetById(random); - if (data_02196f10->unk_0b != 0 && func_02021410(data_02196f10->unk_06)->unk_756 == 0x14) + if (gWirelessSettings->unk_0b != 0 && func_02021410(gWirelessSettings->unk_06)->unk_756 == 0x14) { random = RollRN(1, gFE11Database->pDBFE11Footer->unk_14 - 2); - if (random >= data_02196f10->unk_11) + if (random >= gWirelessSettings->unk_11) { random += 1; } - data_02196f10->unk_12 = random; + gWirelessSettings->unk_12 = random; data_02196f18->unk_000->SetById(random); } @@ -1338,22 +1338,22 @@ EC void func_020229f0(void) EC BOOL func_02022b10(void) { - return data_02196f10->_02022b10(); + return gWirelessSettings->_02022b10(); } -EC BOOL func_02022b30(void) +EC BOOL GameCtrl_IsWirelessPracticeMode(void) { - return data_02196f10->IsPracticeMode(); + return gWirelessSettings->IsPracticeMode(); } EC BOOL func_02022b50(void) { - return data_02196f10->_02022b50(); + return gWirelessSettings->_02022b50(); } EC void func_02022b70(ProcPtr proc) { - if (data_02196f10->_02022b50()) + if (gWirelessSettings->_02022b50()) { StartBlockingFadeOutToWhite((struct Proc *)proc, 16, 1); } @@ -1369,9 +1369,9 @@ EC void func_02022bb0(ProcPtr proc) { u32 mode; - if (!data_02196f10->IsPracticeMode()) + if (!gWirelessSettings->IsPracticeMode()) { - if (data_02196f10->unk_08 != 0) + if (gWirelessSettings->unk_08 != 0) { return; } @@ -1380,9 +1380,9 @@ EC void func_02022bb0(ProcPtr proc) func_02012bbc(); func_02012680(proc); - mode = data_02196f10->mode; + mode = gWirelessSettings->mode; func_02021b14(); - data_02196f10->mode = mode; + gWirelessSettings->mode = mode; func_020228ec(proc); GameCtrl_GotoLabel(L_GAMECTRL_30); @@ -1506,13 +1506,13 @@ EC void func_02022dd8(void) EC void func_02022dfc(void) { - func_02021790(data_02196f10); + func_02021790(gWirelessSettings); return; } EC void func_02022e14(void) { - func_02021430(data_02196f10, 0, 0); + func_02021430(gWirelessSettings, 0, 0); return; } @@ -1523,15 +1523,15 @@ EC BOOL func_02022e34(void) EC void func_02022e54(void) { - data_02196f10->fogActive = 1; - data_02196f10->timeLimit = 300; - data_02196f10->turnLimit = 10; - data_02196f10->unk_0b = 1; - data_02196f10->cardsAllowed = 0; - data_02196f10->unk_11 = 0; - data_02196f10->unk_12 = 0; - data_02196f10->unk_17 = 0; - data_02196f10->unk_08 = 0; + gWirelessSettings->fogActive = 1; + gWirelessSettings->timeLimit = 300; + gWirelessSettings->turnLimit = 10; + gWirelessSettings->unk_0b = 1; + gWirelessSettings->cardsAllowed = 0; + gWirelessSettings->unk_11 = 0; + gWirelessSettings->unk_12 = 0; + gWirelessSettings->unk_17 = 0; + gWirelessSettings->unk_08 = 0; return; } diff --git a/src/item.cpp b/src/item.cpp index d249232..4ea651f 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -199,7 +199,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { return FALSE; } diff --git a/src/ov000/map_menu.cpp b/src/ov000/map_menu.cpp index fddd06a..f9ca15a 100644 --- a/src/ov000/map_menu.cpp +++ b/src/ov000/map_menu.cpp @@ -28,7 +28,7 @@ extern struct UnkStruct_02196f24 * data_02196f24; extern struct UnkStruct_02196f20 * data_02196f20; -extern struct WirelessSettings * data_02196f10; +extern struct WirelessSettings * gWirelessSettings; EC void func_0202b260(void *, s32, s32, s32, s32); EC BOOL func_0201f680(void); @@ -443,7 +443,7 @@ class DI_TemporarySave : public DialogItemYes if (func_ov000_021a47e4()) { PlayerPhase_GotoLabel(26, 0, 0); - data_02196f10->unk_07 = 2; + gWirelessSettings->unk_07 = 2; return 0x44; } else @@ -571,7 +571,7 @@ class DI_Surrender : public DialogItemYes { func_ov000_021d6dfc(0); PlayerPhase_GotoLabel(38, 0, 0); - data_02196f10->unk_07 = 1; + gWirelessSettings->unk_07 = 1; return 0x44; } }; diff --git a/src/ov000/map_sequence.cpp b/src/ov000/map_sequence.cpp index 79d8126..a023c63 100644 --- a/src/ov000/map_sequence.cpp +++ b/src/ov000/map_sequence.cpp @@ -166,7 +166,7 @@ struct UnkStruct_021e3340 * data_ov000_021e3340; extern struct UnkStruct_02196f0c * data_02196f0c; -extern struct WirelessSettings * data_02196f10; +extern struct WirelessSettings * gWirelessSettings; extern struct TouchState * gTouchSt; @@ -517,7 +517,7 @@ EC void func_ov000_021a8480(ProcPtr param_1) return; } - if (!data_02196f10->CheckUnk00() || data_02196f10->unk_0b == 0) + if (!gWirelessSettings->CheckUnk00() || gWirelessSettings->unk_0b == 0) { return; } @@ -593,7 +593,7 @@ EC void func_ov000_021a8650(void) return; } - if (!data_02196f10->CheckUnk00() || data_02196f10->unk_0b == 0) + if (!gWirelessSettings->CheckUnk00() || gWirelessSettings->unk_0b == 0) { return; } @@ -707,14 +707,14 @@ EC void func_ov000_021a8868(void) } } - if (data_ov000_021e3324->unk_02 != 0) + if (data_ov000_021e3324->fogActive != 0) { func_ov000_021a37c4(); func_ov000_021a340c(); func_ov000_021a35a0(); } - func_ov000_021a48b0(data_ov000_021e3324->unk_0c); + func_ov000_021a48b0(data_ov000_021e3324->timeLimit); func_0204bbb4(0); return; @@ -980,7 +980,7 @@ EC void func_ov000_021a8ff4(void) { Unit * it; - if (data_ov000_021e3324->unk_02 != 0) + if (data_ov000_021e3324->fogActive != 0) { for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->unk_3c) { @@ -1153,7 +1153,7 @@ EC void func_ov000_021a93d0(ProcPtr proc) return; } - if (data_02196f10->unk_17 != 0) + if (gWirelessSettings->unk_17 != 0) { func_02014834(proc, GetText("MLink_OpponentSurrender"), 1, 1, 1, 1); @@ -1170,7 +1170,7 @@ EC void func_ov000_021a93d0(ProcPtr proc) } } - data_02196f10->unk_07 = 0; + gWirelessSettings->unk_07 = 0; return; } @@ -1188,7 +1188,7 @@ EC void func_ov000_021a9550(ProcPtr proc) new (Proc_StartBlocking(ProcScr_ProcArenaSync, proc)) ProcArenaSync(); } - data_02196f10->unk_07 = 1; + gWirelessSettings->unk_07 = 1; return; } @@ -2920,7 +2920,7 @@ EC void func_ov000_021ac218(void) { pUnit->state2 |= US_ACTED; - if ((data_ov000_021e3324->unk_02 != 0) && (func_ov000_021a3da0(pUnit) == 0)) + if ((data_ov000_021e3324->fogActive != 0) && (func_ov000_021a3da0(pUnit) == 0)) { if (TEMP(pUnit) != 0) { @@ -2933,7 +2933,7 @@ EC void func_ov000_021ac218(void) pUnit->state2 |= US_NOT_PRESENT; } - if (data_ov000_021e3324->unk_02 != 0) + if (data_ov000_021e3324->fogActive != 0) { if (data_ov000_021e3324->phase == pUnit->force->id) { @@ -3664,14 +3664,14 @@ EC void func_ov000_021ad8c4(map::ProcPL * proc) if (proc->unk_38 != 0) { - data_02196f10->unk_07 = 0; + gWirelessSettings->unk_07 = 0; } else { - data_02196f10->unk_07 = 1; + gWirelessSettings->unk_07 = 1; } - data_02196f10->unk_08 = 1; + gWirelessSettings->unk_08 = 1; return; } @@ -4248,7 +4248,7 @@ EC void CpuPhase_021ae364(void) unit->state2 |= US_ACTED; } - if ((data_ov000_021e3324->unk_02 != 0) && (func_ov000_021a3da0(unit) == 0)) + if ((data_ov000_021e3324->fogActive != 0) && (func_ov000_021a3da0(unit) == 0)) { if (TEMP(unit) != 0) { @@ -4261,7 +4261,7 @@ EC void CpuPhase_021ae364(void) unit->state2 |= US_NOT_PRESENT; } - if (data_ov000_021e3324->unk_02 != 0) + if (data_ov000_021e3324->fogActive != 0) { if (data_ov000_021e3324->phase == unit->force->id) { @@ -4736,7 +4736,7 @@ EC void func_ov000_021af1bc(map::ProcLink * param_1) gMapStateManager->cursor->isVisible = FALSE; param_1->unk_3c = 0; Proc_Goto(gMapLinkProc, 7, 0); - data_02196f10->unk_17 = 1; + gWirelessSettings->unk_17 = 1; data_02196f0c->flagMgr->SetByName("gf_complete"); ProcSeq_GotoLabel(L_SEQUENCE_COMPLETE); return; @@ -4808,7 +4808,7 @@ EC void func_ov000_021aebb0(void) pUnit->state2 |= US_ACTED; } - if ((data_ov000_021e3324->unk_02 != 0) && (func_ov000_021a3da0(pUnit) == 0)) + if ((data_ov000_021e3324->fogActive != 0) && (func_ov000_021a3da0(pUnit) == 0)) { if (TEMP(pUnit) != 0) { @@ -4821,7 +4821,7 @@ EC void func_ov000_021aebb0(void) pUnit->state2 |= US_NOT_PRESENT; } - if (data_ov000_021e3324->unk_02 != 0) + if (data_ov000_021e3324->fogActive != 0) { if (data_ov000_021e3324->phase == pUnit->force->id) { @@ -5015,8 +5015,8 @@ EC void func_ov000_021af62c(map::ProcLink * proc) else { Proc_Goto(gMapLinkProc, 6, 0); - data_02196f10->unk_07 = !!proc->unk_38; - data_02196f10->unk_08 = 1; + gWirelessSettings->unk_07 = !!proc->unk_38; + gWirelessSettings->unk_08 = 1; } return; diff --git a/src/ov000/map_state.cpp b/src/ov000/map_state.cpp index 93857a3..b770e9f 100644 --- a/src/ov000/map_state.cpp +++ b/src/ov000/map_state.cpp @@ -72,7 +72,7 @@ EC BOOL func_ov000_021a475c(void); EC BOOL func_ov000_021a47ac(void); extern struct UnkStruct_02196f0c * data_02196f0c; -extern struct WirelessSettings * data_02196f10; +extern struct WirelessSettings * gWirelessSettings; extern vu32 gElapsedFrames; @@ -463,7 +463,7 @@ EC BOOL func_ov000_021a2a50(struct UnkStruct_021E3324 * self) if (self->phase == 2) { - if ((self->unk_06 != 0) && (self->turn >= self->unk_06)) + if ((self->turnLimit != 0) && (self->turn >= self->turnLimit)) { return FALSE; } @@ -509,10 +509,10 @@ EC void func_ov000_021a2b08(struct SaveBuffer * buf) buf->WriteByte(data_ov000_021e3324->phase); buf->WriteByte(data_ov000_021e3324->unk_01); buf->WriteShort(data_ov000_021e3324->turn); - buf->WriteShort(data_ov000_021e3324->unk_06); + buf->WriteShort(data_ov000_021e3324->turnLimit); buf->WriteWord(data_ov000_021e3324->unk_08); - buf->WriteWord(data_ov000_021e3324->unk_0c); - buf->WriteByte(data_ov000_021e3324->unk_02); + buf->WriteWord(data_ov000_021e3324->timeLimit); + buf->WriteByte(data_ov000_021e3324->fogActive); buf->WriteByte(data_ov000_021e3324->unk_03); func_020a58b8(gMapStateManager->unk_db0, buf->unk_04, 0x80); @@ -568,14 +568,14 @@ EC void func_ov000_021a2eb0(struct SaveBuffer * buf, s32 arg_1) data_ov000_021e3324->unk_01 = buf->ReadByte(); data_ov000_021e3324->turn = buf->ReadShort(); - data_ov000_021e3324->unk_06 = buf->ReadShort(); + data_ov000_021e3324->turnLimit = buf->ReadShort(); word = buf->ReadWord(); func_ov000_021a48b0(word); - data_ov000_021e3324->unk_0c = buf->ReadWord(); + data_ov000_021e3324->timeLimit = buf->ReadWord(); - data_ov000_021e3324->unk_02 = buf->ReadByte(); + data_ov000_021e3324->fogActive = buf->ReadByte(); data_ov000_021e3324->unk_03 = buf->ReadByte(); func_ov000_021a37c4(); @@ -872,12 +872,12 @@ EC void func_ov000_021a378c(void) EC BOOL func_ov000_021a37b4(void) { - return func_0201dc30(7); + return ThreadProcExists(7); } EC void func_ov000_021a37c4(void) { - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { func_020a5824(gMapStateManager->unk_db0, 0xff, 0x80); func_020a5824(gMapStateManager->unk_d30, 0xff, 0x80); @@ -904,7 +904,7 @@ EC void func_ov000_021a37c4(void) EC void func_ov000_021a38b4(void) { - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { func_020a5824(gMapStateManager->unk_d30, 0xff, 0x80); return; @@ -933,7 +933,7 @@ EC void func_ov000_021a3974(u8 * arg_0, s32 arg_1) s32 i; struct Unit * it; - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { return; } @@ -971,7 +971,7 @@ EC void func_ov000_021a3c84(u8 * arg_0, s32 arg_1, s32 arg_2, s16 arg_3, s16 arg u8 tmp; s32 increment; - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { return; } @@ -1032,7 +1032,7 @@ EC void func_ov000_021a3a30(u8 * arg_0, u32 arg_1) u32 r6; r6 = GetJobByJidStr("JID_LORD\0\0\0")->unk_2a; - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { return; } @@ -1069,7 +1069,7 @@ EC void func_ov000_021a3ad0(u8 * arg_0, s16 x, s16 y, s32 range) s16 xMax; s16 yMax; - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { return; } @@ -1106,7 +1106,7 @@ EC void func_ov000_021a3c20(u8 * arg_0, s32 arg_1, struct Unit * unit) s32 y; s32 x; - if (data_ov000_021e3324->unk_02 == 0) + if (data_ov000_021e3324->fogActive == 0) { return; } @@ -1295,7 +1295,7 @@ EC s32 GetMapBgmId(s32 factionId) idx = 0; - if (data_ov000_021e3324->unk_02 != 0) + if (data_ov000_021e3324->fogActive != 0) { idx = 1; } @@ -1475,7 +1475,7 @@ EC BOOL func_ov000_021a471c(void) EC BOOL func_ov000_021a475c(void) { - if (data_ov000_021e3324->unk_0c == 0) + if (data_ov000_021e3324->timeLimit == 0) { return FALSE; } @@ -1521,12 +1521,12 @@ EC BOOL func_ov000_021a4804(void) return FALSE; } - if (data_02196f10->unk_0b == 0) + if (gWirelessSettings->unk_0b == 0) { return FALSE; } - if (data_02196f10->CheckUnk00()) + if (gWirelessSettings->CheckUnk00()) { return FALSE; } From 70f9f18160da99566ef8e3abb88c073ccc3de95c Mon Sep 17 00:00:00 2001 From: Eebit Date: Thu, 3 Sep 2026 23:31:30 -0400 Subject: [PATCH 3/3] (doc) Miscellaneous documentation work --- config/YFEE01/arm9/overlays/ov000/symbols.txt | 6 +- config/YFEE01/arm9/overlays/ov006/symbols.txt | 4 +- config/YFEE01/arm9/symbols.txt | 18 +- include/constants/terrains.h | 9 + include/gamectrl.hpp | 50 ++++ include/unit.hpp | 4 +- include/unknown_data.h | 14 +- include/unknown_funcs.h | 150 +++++----- include/unknown_types.h | 12 +- include/unknown_types.hpp | 10 +- src/force.cpp | 50 ++-- src/gamectrl.cpp | 280 +++++++----------- src/item.cpp | 28 +- src/ov000/disposition.cpp | 22 +- src/ov000/map_battle.cpp | 26 +- src/ov000/map_input_handler.cpp | 8 +- src/ov000/map_menu.cpp | 53 ++-- src/ov000/map_sequence.cpp | 128 ++++---- src/ov000/map_state.cpp | 44 +-- src/ov000/map_unit_menu.cpp | 35 ++- src/ov000/target_select.cpp | 7 +- src/ov005/prep_main_menu.cpp | 2 +- src/ov005/prep_proc_02212d60.cpp | 10 +- src/ov008/title_seq.cpp | 3 +- src/unit.cpp | 4 +- 25 files changed, 483 insertions(+), 494 deletions(-) create mode 100644 include/constants/terrains.h create mode 100644 include/gamectrl.hpp diff --git a/config/YFEE01/arm9/overlays/ov000/symbols.txt b/config/YFEE01/arm9/overlays/ov000/symbols.txt index f8950be..2fa5b22 100644 --- a/config/YFEE01/arm9/overlays/ov000/symbols.txt +++ b/config/YFEE01/arm9/overlays/ov000/symbols.txt @@ -43,9 +43,9 @@ func_ov000_021a46cc kind:function(arm,size=0x4c) addr:0x021a46cc func_ov000_021a4718 kind:function(arm,size=0x4) addr:0x021a4718 func_ov000_021a471c kind:function(arm,size=0x40) addr:0x021a471c func_ov000_021a475c kind:function(arm,size=0x30) addr:0x021a475c -func_ov000_021a478c kind:function(arm,size=0x20) addr:0x021a478c +IsWirelessBattle kind:function(arm,size=0x20) addr:0x021a478c func_ov000_021a47ac kind:function(arm,size=0x38) addr:0x021a47ac -func_ov000_021a47e4 kind:function(arm,size=0x20) addr:0x021a47e4 +IsLinkArena kind:function(arm,size=0x20) addr:0x021a47e4 func_ov000_021a4804 kind:function(arm,size=0x50) addr:0x021a4804 func_ov000_021a4854 kind:function(arm,size=0x5c) addr:0x021a4854 func_ov000_021a48b0 kind:function(arm,size=0x28) addr:0x021a48b0 @@ -260,7 +260,7 @@ func_ov000_021ade88 kind:function(arm,size=0x64) addr:0x021ade88 func_ov000_021adeec kind:function(arm,size=0x34) addr:0x021adeec func_ov000_021adf20 kind:function(arm,size=0x38) addr:0x021adf20 func_ov000_021adf58 kind:function(arm,size=0xc0) addr:0x021adf58 -func_ov000_021ae018 kind:function(arm,size=0x90) addr:0x021ae018 +PlayerPhase_Surrender kind:function(arm,size=0x90) addr:0x021ae018 func_ov000_021ae0a8 kind:function(arm,size=0x5c) addr:0x021ae0a8 func_ov000_021ae104 kind:function(arm,size=0x2c) addr:0x021ae104 StartPlayerPhase kind:function(arm,size=0x50) addr:0x021ae130 diff --git a/config/YFEE01/arm9/overlays/ov006/symbols.txt b/config/YFEE01/arm9/overlays/ov006/symbols.txt index eeea422..1a813eb 100644 --- a/config/YFEE01/arm9/overlays/ov006/symbols.txt +++ b/config/YFEE01/arm9/overlays/ov006/symbols.txt @@ -1,6 +1,6 @@ func_ov006_022176e0 kind:function(arm,size=0x40) addr:0x022176e0 func_ov006_02217720 kind:function(arm,size=0x4c) addr:0x02217720 -func_ov006_0221776c kind:function(arm,size=0x338) addr:0x0221776c +StartGameOver kind:function(arm,size=0x338) addr:0x0221776c func_ov006_02217aa4 kind:function(arm,size=0x44) addr:0x02217aa4 func_ov006_02217ae8 kind:function(arm,size=0x3c) addr:0x02217ae8 func_ov006_02217b24 kind:function(arm,size=0x40) addr:0x02217b24 @@ -486,7 +486,7 @@ __typestr__8GameOver kind:data(any) addr:0x022231f0 data_ov006_022231fc kind:data(any) addr:0x022231fc __typeinfo__8GameOver kind:data(any) addr:0x02223208 data_ov006_02223214 kind:data(any) addr:0x02223214 -data_ov006_02223220 kind:data(any) addr:0x02223220 +ProcScr_GameOver kind:data(any) addr:0x02223220 __vt__8GameOver kind:data(any) addr:0x02223260 __typeinfo__N8mainmenu13MainMenuConstE kind:data(any) addr:0x02223270 data_ov006_02223278 kind:data(any) addr:0x02223278 diff --git a/config/YFEE01/arm9/symbols.txt b/config/YFEE01/arm9/symbols.txt index f3d9a0a..37401e7 100644 --- a/config/YFEE01/arm9/symbols.txt +++ b/config/YFEE01/arm9/symbols.txt @@ -1200,7 +1200,7 @@ func_02021e6c kind:function(arm,size=0x9c) addr:0x02021e6c func_02021f08 kind:function(arm,size=0x24) addr:0x02021f08 func_02021f2c kind:function(arm,size=0x30) addr:0x02021f2c func_02021f5c kind:function(arm,size=0x1f0) addr:0x02021f5c -func_0202214c kind:function(arm,size=0x70) addr:0x0202214c +GameCtrl_BeginMap kind:function(arm,size=0x70) addr:0x0202214c func_020221bc kind:function(arm,size=0x28) addr:0x020221bc func_020221e4 kind:function(arm,size=0x78) addr:0x020221e4 func_0202225c kind:function(arm,size=0xc8) addr:0x0202225c @@ -1214,7 +1214,7 @@ func_02022480 kind:function(arm,size=0x28) addr:0x02022480 func_020224a8 kind:function(arm,size=0x2c) addr:0x020224a8 func_020224d4 kind:function(arm,size=0x28) addr:0x020224d4 func_020224fc kind:function(arm,size=0x50) addr:0x020224fc -func_0202254c kind:function(arm,size=0x18) addr:0x0202254c +GameCtrl_StartMapEndEvent kind:function(arm,size=0x18) addr:0x0202254c func_02022564 kind:function(arm,size=0x24) addr:0x02022564 func_02022588 kind:function(arm,size=0x1a4) addr:0x02022588 func_0202272c kind:function(arm,size=0xe8) addr:0x0202272c @@ -1241,7 +1241,7 @@ func_02022dd8 kind:function(arm,size=0x24) addr:0x02022dd8 func_02022dfc kind:function(arm,size=0x18) addr:0x02022dfc func_02022e14 kind:function(arm,size=0x20) addr:0x02022e14 func_02022e34 kind:function(arm,size=0x20) addr:0x02022e34 -func_02022e54 kind:function(arm,size=0x64) addr:0x02022e54 +GameCtrl_InitWirelessSettings kind:function(arm,size=0x64) addr:0x02022e54 func_02022eb8 kind:function(arm,size=0x1c) addr:0x02022eb8 func_02022ed4 kind:function(arm,size=0x20) addr:0x02022ed4 func_02022ef4 kind:function(arm,size=0x1c) addr:0x02022ef4 @@ -6421,7 +6421,7 @@ ProcScr_FadeIn kind:data(any) addr:0x020ce94c __typeinfo__10ThreadProc kind:data(any) addr:0x020ce974 __typestr__10ThreadProc kind:data(any) addr:0x020ce980 __vt__10ThreadProc kind:data(any) addr:0x020ce998 -data_020ce9a8 kind:data(any) addr:0x020ce9a8 +ProcScr_ThreadProc kind:data(any) addr:0x020ce9a8 __typeinfo__15ProcBackupBreak kind:data(any) addr:0x020ce9c0 __typestr__15ProcBackupBreak kind:data(any) addr:0x020ce9cc data_020ce9e0 kind:data(any) addr:0x020ce9e0 @@ -6447,11 +6447,11 @@ data_020ceb50 kind:data(any) addr:0x020ceb50 data_020ceb60 kind:data(any) addr:0x020ceb60 data_020ceb6c kind:data(any) addr:0x020ceb6c data_020ceb78 kind:data(any) addr:0x020ceb78 -data_020ceb84 kind:data(any) addr:0x020ceb84 -data_020ceba4 kind:data(any) addr:0x020ceba4 -data_020cebc4 kind:data(any) addr:0x020cebc4 -data_020cebec kind:data(any) addr:0x020cebec -data_020cec14 kind:data(any) addr:0x020cec14 +ProcScr_020ceb84 kind:data(any) addr:0x020ceb84 +ProcScr_020ceba4 kind:data(any) addr:0x020ceba4 +ProcScr_020cebc4 kind:data(any) addr:0x020cebc4 +ProcScr_020cebec kind:data(any) addr:0x020cebec +ProcScr_020cec14 kind:data(any) addr:0x020cec14 ProcScr_GameCtrl kind:data(any) addr:0x020cec44 data_020cf48c kind:data(any) addr:0x020cf48c data_020cf494 kind:data(any) addr:0x020cf494 diff --git a/include/constants/terrains.h b/include/constants/terrains.h new file mode 100644 index 0000000..d6fb4ce --- /dev/null +++ b/include/constants/terrains.h @@ -0,0 +1,9 @@ +#ifndef TERRAINS_H +#define TERRAINS_H + +enum +{ + TERRAIN_ARENA = 0x17, +}; + +#endif // TERRAINS_H \ No newline at end of file diff --git a/include/gamectrl.hpp b/include/gamectrl.hpp new file mode 100644 index 0000000..6eeaa8e --- /dev/null +++ b/include/gamectrl.hpp @@ -0,0 +1,50 @@ +#ifndef GAMECTRL_HPP +#define GAMECTRL_HPP + +enum +{ + L_GAMECTRL_1 = 1, + L_GAMECTRL_2 = 2, + L_GAMECTRL_3 = 3, + L_GAMECTRL_MAIN_MENU = 4, + L_GAMECTRL_5 = 5, + L_GAMECTRL_WORLD_MAP = 6, + L_GAMECTRL_7 = 7, + L_GAMECTRL_8 = 8, + L_GAMECTRL_9 = 9, + L_GAMECTRL_10 = 10, + L_GAMECTRL_11 = 11, + L_GAMECTRL_GAME_OVER = 12, + L_GAMECTRL_13 = 13, + L_GAMECTRL_14 = 14, + L_GAMECTRL_15 = 15, + L_GAMECTRL_16 = 16, + L_GAMECTRL_17 = 17, + L_GAMECTRL_18 = 18, + L_GAMECTRL_19 = 19, + L_GAMECTRL_20 = 20, + L_GAMECTRL_21 = 21, + L_GAMECTRL_22 = 22, + L_GAMECTRL_23 = 23, + L_GAMECTRL_24 = 24, + L_GAMECTRL_25 = 25, + L_GAMECTRL_26 = 26, + L_GAMECTRL_27 = 27, + L_GAMECTRL_28 = 28, + L_GAMECTRL_29 = 29, + L_GAMECTRL_30 = 30, + L_GAMECTRL_31 = 31, + L_GAMECTRL_32 = 32, + L_GAMECTRL_33 = 33, + L_GAMECTRL_34 = 34, + L_GAMECTRL_MULTIPLAYER_PRACTICE = 35, + L_GAMECTRL_36 = 36, + L_GAMECTRL_37 = 37, + L_GAMECTRL_38 = 38, + L_GAMECTRL_39 = 39, + L_GAMECTRL_40 = 40, + + L_GAMECTRL_54 = 54, +}; + +#endif // GAMECTRL_HPP \ No newline at end of file diff --git a/include/unit.hpp b/include/unit.hpp index 5982cb5..54b78ee 100644 --- a/include/unit.hpp +++ b/include/unit.hpp @@ -251,8 +251,8 @@ class Unit s16 unk_10[0x10]; /* 30 */ struct Unit_unk_30 unk_30; STRUCT_PAD(0x36, 0x38); - /* 38 */ struct Unit * unk_38; - /* 3C */ struct Unit * unk_3c; + /* 38 */ struct Unit * prev; + /* 3C */ struct Unit * next; /* 40 */ struct PersonData * pPersonData; /* 44 */ struct JobData * pJobData; STRUCT_PAD(0x48, 0x4C); diff --git a/include/unknown_data.h b/include/unknown_data.h index 37b4577..cc420c6 100644 --- a/include/unknown_data.h +++ b/include/unknown_data.h @@ -767,7 +767,7 @@ extern struct ProcCmd ProcScr_020ce750[]; // extern ??? __typeinfo__10ThreadProc // extern ??? __typestr__10ThreadProc // extern ??? __vt__10ThreadProc -// extern ??? data_020ce9a8 +// extern ??? ProcScr_ThreadProc // extern ??? __typeinfo__15ProcBackupBreak // extern ??? __typestr__15ProcBackupBreak // extern ??? data_020ce9e0 @@ -793,11 +793,11 @@ extern struct ProcCmd ProcScr_020ce750[]; // extern ??? data_020ceb60 // extern ??? data_020ceb6c // extern ??? data_020ceb78 -extern struct ProcCmd data_020ceb84[]; -extern struct ProcCmd data_020ceba4[]; -extern struct ProcCmd data_020cebc4[]; -extern struct ProcCmd data_020cebec[]; -extern struct ProcCmd data_020cec14[]; +extern struct ProcCmd ProcScr_020ceb84[]; +extern struct ProcCmd ProcScr_020ceba4[]; +extern struct ProcCmd ProcScr_020cebc4[]; +extern struct ProcCmd ProcScr_020cebec[]; +extern struct ProcCmd ProcScr_020cec14[]; // extern ??? ProcScr_GameCtrl // extern ??? data_020cf48c // extern ??? data_020cf494 @@ -6713,7 +6713,7 @@ extern struct UnkStruct_021faf8c data_ov002_021faf8c; // extern ??? data_ov006_022231fc // extern ??? __typeinfo__8GameOver // extern ??? data_ov006_02223214 -// extern ??? data_ov006_02223220 +// extern ??? ProcScr_GameOver // extern ??? __vt__8GameOver // extern ??? __typeinfo__N8mainmenu13MainMenuConstE // extern ??? data_ov006_02223278 diff --git a/include/unknown_funcs.h b/include/unknown_funcs.h index 20fe5dc..94d7ad6 100644 --- a/include/unknown_funcs.h +++ b/include/unknown_funcs.h @@ -620,7 +620,7 @@ EC void func_02012bbc(void); // EC ??? func_02013634 // EC ??? func_02013658 // EC ??? func_02013698 -// EC ??? func_020136bc +EC void func_020136bc(ProcPtr); // EC ??? func_02013700 // EC ??? func_02013810 // EC ??? func_02013868 @@ -1140,9 +1140,9 @@ EC BOOL func_0201f760(s32); // EC ??? func_0201f7dc // EC ??? func_0201f80c // EC ??? func_0201f840 -EC void func_0201f8a0(void); +EC void func_0201f8a0(char *); // EC ??? func_0201fd08 -// EC ??? func_0201fd44 +EC void func_0201fd44(ProcPtr); // EC ??? func_0201fdfc // EC ??? func_0201fe00 EC void LoadTextureImage(void *, u32, u32); @@ -1211,61 +1211,61 @@ EC void func_02021430(struct WirelessSettings *, s32, s32); EC void func_02021790(struct WirelessSettings *); EC void func_020217b4(void); // EC ??? func_020219a4 -// EC ??? func_02021b00 -// EC ??? func_02021b14 -// EC ??? InitOnlineShopItemFlags -// EC ??? InitOnlineShopItemAmounts -// EC ??? func_02021d70 -// EC ??? func_02021dd4 -// EC ??? func_02021e6c -// EC ??? func_02021f08 -// EC ??? func_02021f2c -// EC ??? func_02021f5c -// EC ??? func_0202214c -// EC ??? func_020221bc -// EC ??? func_020221e4 -// EC ??? func_0202225c -// EC ??? func_02022324 -// EC ??? func_02022364 -// EC ??? func_020223b4 -// EC ??? func_020223cc -// EC ??? func_02022414 -// EC ??? func_02022458 -// EC ??? func_02022480 -// EC ??? func_020224a8 -// EC ??? func_020224d4 -// EC ??? func_020224fc -// EC ??? func_0202254c -// EC ??? func_02022564 -// EC ??? func_02022588 -// EC ??? func_0202272c -// EC ??? func_02022814 -// EC ??? func_0202284c -// EC ??? func_020228ac -// EC ??? func_020228ec -// EC ??? func_02022988 -// EC ??? func_020229a8 -// EC ??? func_020229f0 -// EC ??? func_02022b10 -// EC ??? GameCtrl_IsWirelessPracticeMode -// EC ??? func_02022b50 -// EC ??? func_02022b70 -// EC ??? func_02022bb0 -// EC ??? func_02022c54 -// EC ??? func_02022c78 -// EC ??? func_02022cb0 -// EC ??? func_02022cdc -// EC ??? func_02022d00 -// EC ??? func_02022db8 -// EC ??? func_02022dc8 -// EC ??? func_02022dd8 -// EC ??? func_02022dfc -// EC ??? func_02022e14 -// EC ??? func_02022e34 -// EC ??? func_02022e54 -// EC ??? func_02022eb8 -// EC ??? func_02022ed4 -// EC ??? func_02022ef4 +EC void func_02021b00(void); +EC void func_02021b14(void); +EC void InitOnlineShopItemFlags(void); +EC void InitOnlineShopItemAmounts(void); +EC void func_02021d70(void); +EC void func_02021dd4(void); +EC void func_02021e6c(void); +EC void func_02021f08(ProcPtr); +EC void func_02021f2c(ProcPtr); +EC void func_02021f5c(void); +EC void GameCtrl_BeginMap(ProcPtr); +EC void func_020221bc(void); +EC void func_020221e4(void); +EC void func_0202225c(void); +EC void func_02022324(void); +EC void func_02022364(ProcPtr); +EC void func_020223b4(void); +EC void func_020223cc(ProcPtr); +EC void func_02022414(void); +EC void func_02022458(void); +EC void func_02022480(void); +EC void func_020224a8(ProcPtr); +EC void func_020224d4(void); +EC void func_020224fc(void); +EC void GameCtrl_StartMapEndEvent(ProcPtr); +EC void func_02022564(void); +EC void func_02022588(void); +EC void func_0202272c(ProcPtr); +EC void func_02022814(void); +EC void func_0202284c(ProcPtr); +EC void func_020228ac(ProcPtr); +EC void func_020228ec(ProcPtr); +EC BOOL func_02022988(void); +EC void func_020229a8(void); +EC void func_020229f0(void); +EC BOOL func_02022b10(void); +EC BOOL GameCtrl_IsWirelessPracticeMode(void); +EC BOOL func_02022b50(void); +EC void func_02022b70(ProcPtr); +EC void func_02022bb0(ProcPtr); +EC void func_02022c54(ProcPtr); +EC void func_02022c78(ProcPtr); +EC void func_02022cb0(ProcPtr); +EC void func_02022cdc(ProcPtr); +EC void func_02022d00(ProcPtr); +EC void func_02022db8(void); +EC void func_02022dc8(void); +EC void func_02022dd8(void); +EC void func_02022dfc(void); +EC void func_02022e14(void); +EC BOOL func_02022e34(void); +EC void GameCtrl_InitWirelessSettings(void); +EC BOOL func_02022eb8(void); +EC BOOL func_02022ed4(void); +EC BOOL func_02022ef4(void); EC void StartGame(void); EC void GameCtrl_GotoLabel(u32 label); // EC ??? func_02022f4c @@ -1281,7 +1281,7 @@ EC void GameCtrl_GotoLabel(u32 label); // EC ??? func_02023988 // EC ??? func_02023a28 // EC ??? func_02023c10 -// EC ??? func_02024000 +EC void func_02024000(ProcPtr); EC void func_020240a0(s32, void *); // EC ??? func_02024134 // EC ??? func_020241e0 @@ -1294,7 +1294,7 @@ EC void func_0202437c(void *); EC void func_0202454c(s32, s32, s32); // EC ??? func_020245f0 // EC ??? func_02024704 -// EC ??? func_020247a8 +EC void func_020247a8(ProcPtr); // EC ??? func_020247d4 // EC ??? func_02024854 // EC ??? func_020248a8 @@ -1516,8 +1516,8 @@ EC void func_02029a1c(struct UnkStruct_021970c4 *, u32, void *, void *, u32, u32 EC void func_0202a4dc(s32, s32); // EC ??? func_0202a504 // EC ??? func_0202a53c -EC u32 func_0202a564(u32); -EC void func_0202a5a8(u32); +EC ProcPtr func_0202a564(s32); +EC void func_0202a5a8(ProcPtr); // EC ??? func_0202a5cc // EC ??? func_0202a5e0 // EC ??? func_0202a5f8 @@ -2502,7 +2502,7 @@ EC void func_0204ac18(void); // EC ??? func_0204ac64 EC void func_0204aca8(void); EC BOOL func_0204ad38(s32, s32, s32); -EC void func_0204ae60(s32, s32); +EC void func_0204ae60(s32, BOOL); EC BOOL func_0204ae9c(u32, BOOL); // EC ??? func_0204af0c // EC ??? func_0204af48 @@ -2517,8 +2517,8 @@ EC BOOL func_0204b260(u32); // EC ??? func_0204b2f8 // EC ??? func_0204b32c // EC ??? func_0204b35c -EC void func_0204b39c(ProcPtr); -EC void func_0204b3b8(ProcPtr); +EC void func_0204b39c(void); +EC void func_0204b3b8(void); EC void func_0204b3d4(ProcPtr); EC void func_0204b40c(ProcPtr); // EC ??? func_0204b444 @@ -3039,7 +3039,7 @@ EC void func_02062a54(u32); // EC ??? func_02066704 EC void StartUIConfig(ProcPtr); // Starts "config::UIConfig" proc // EC ??? func_02066e10 -EC void func_02067510(void); +EC void func_02067510(ProcPtr); // EC ??? func_02067538 // EC ??? func_020675f4 // EC ??? func_020676a8 @@ -5725,9 +5725,9 @@ EC void CpuPhase_021a46b8(void); EC void func_ov000_021a4718(void); EC BOOL func_ov000_021a471c(void); // EC ??? func_ov000_021a475c -EC BOOL func_ov000_021a478c(void); +EC BOOL IsWirelessBattle(void); // EC ??? func_ov000_021a47ac -EC BOOL func_ov000_021a47e4(void); +EC BOOL IsLinkArena(void); // EC ??? func_ov000_021a4804 EC s32 func_ov000_021a4854(struct Unit *); // EC ??? func_ov000_021a48b0 @@ -5942,7 +5942,7 @@ EC BOOL func_ov000_021abf30(void); // EC ??? func_ov000_021adeec // EC ??? func_ov000_021adf20 // EC ??? func_ov000_021adf58 -// EC ??? func_ov000_021ae018 +// EC ??? PlayerPhase_Surrender // EC ??? func_ov000_021ae0a8 // EC ??? func_ov000_021ae104 // EC ??? StartPlayerPhase @@ -6804,7 +6804,7 @@ EC void StartMapItem(ProcPtr); // EC ??? func_ov000_021d3444 // EC ??? func_ov000_021d3534 // EC ??? func_ov000_021d3584 -EC s32 func_ov000_021d3674(char *, struct Unit *, s32, s32, ProcPtr, BOOL); +EC ProcPtr func_ov000_021d3674(char *, struct Unit *, s32, s32, ProcPtr, BOOL); // EC ??? func_ov000_021d36a4 // EC ??? func_ov000_021d36e4 // EC ??? func_ov000_021d3720 @@ -9711,7 +9711,7 @@ EC void func_ov003_021fc0d4(void *); // EC ??? func_ov004_02209ce0 // EC ??? func_ov004_02209d30 // EC ??? func_ov004_02209d7c -// EC ??? func_ov004_02209e54 +EC void func_ov004_02209e54(ProcPtr); // EC ??? func_ov004_02209f40 // EC ??? func_ov004_02209f6c // EC ??? func_ov004_02209f90 @@ -10383,7 +10383,7 @@ EC void StartSally_JobS(ProcPtr); // Starts "sally::JobS" proc // ============================== // EC ??? func_ov006_022176e0 // EC ??? func_ov006_02217720 -EC void func_ov006_0221776c(void *); +EC void StartGameOver(void *); // EC ??? func_ov006_02217aa4 // EC ??? func_ov006_02217ae8 // EC ??? func_ov006_02217b24 @@ -10412,7 +10412,7 @@ EC void func_ov006_0221776c(void *); // EC ??? func_ov006_02218a28 // EC ??? func_ov006_02218a4c // EC ??? func_ov006_02218a84 -// EC ??? func_ov006_02218ac4 +EC void func_ov006_02218ac4(ProcPtr); // EC ??? func_ov006_02218aec // EC ??? func_ov006_02218b0c // EC ??? func_ov006_02218b2c @@ -11047,8 +11047,8 @@ EC void func_ov008_02204fd0(void); // EC ??? TitleSeq_ov008_022050f0 // EC ??? TitleSeq_ov008_02205124 // EC ??? TitleSeq_ov008_02205134 -// EC ??? StartTitleSeq_Goto2 -// EC ??? StartTitleSeq_Goto0 +EC void StartTitleSeq_Goto2(ProcPtr); +EC void StartTitleSeq_Goto0(ProcPtr); // EC ??? _ZN8TitleSeqD0Ev // EC ??? _ZN8TitleSeqD1Ev // EC ??? _ZN10PressStartD0Ev diff --git a/include/unknown_types.h b/include/unknown_types.h index 9643048..c7026d8 100644 --- a/include/unknown_types.h +++ b/include/unknown_types.h @@ -223,8 +223,16 @@ struct UnkStruct_021e3508 struct UnkStruct_021faf8c { - STRUCT_PAD(0x00, 0x08); - u8 unk_08; + STRUCT_PAD(0x00, 0x01); + /* 01 */ s8 unk_01; + STRUCT_PAD(0x02, 0x08); + /* 08 */ u8 unk_08; + STRUCT_PAD(0x09, 0x5D); + /* 5D */ s8 unk_5d; + STRUCT_PAD(0x5E, 0x64); + /* 64 */ u8 unk_64; + STRUCT_PAD(0x65, 0xB9); + /* B9 */ u8 unk_b9; }; EXTERN_C_END diff --git a/include/unknown_types.hpp b/include/unknown_types.hpp index d5903b8..a48f9c8 100644 --- a/include/unknown_types.hpp +++ b/include/unknown_types.hpp @@ -14,11 +14,11 @@ enum GAME_STATE_UNK_1 = (1 << 1), GAME_STATE_UNK_2 = (1 << 2), GAME_STATE_UNK_3 = (1 << 3), - GAME_STATE_UNK_4 = (1 << 4), // & 0x10 -> in prep - GAME_STATE_UNK_5 = (1 << 5), // & 0x20 -> in multiplayer - GAME_STATE_UNK_6 = (1 << 6), // in prep??? + GAME_STATE_UNK_4 = (1 << 4), + GAME_STATE_WIRELESS_BATTLE = (1 << 5), + GAME_STATE_BATTLE_PREP = (1 << 6), GAME_STATE_UNK_7 = (1 << 7), - GAME_STATE_UNK_8 = (1 << 8), + GAME_STATE_UNK_8 = (1 << 8), // skip prep maybe? GAME_STATE_UNK_9 = (1 << 9), GAME_STATE_UNK_10 = (1 << 10), GAME_STATE_UNK_11 = (1 << 11), @@ -26,7 +26,7 @@ enum GAME_STATE_UNK_13 = (1 << 13), GAME_STATE_SUPPLY_OFF = (1 << 14), // Set by event function "TransporterOff" GAME_STATE_UNK_15 = (1 << 15), - GAME_STATE_UNK_16 = (1 << 16), + GAME_STATE_LINK_ARENA = (1 << 16), GAME_STATE_UNK_17 = (1 << 17), GAME_STATE_UNK_18 = (1 << 18), GAME_STATE_UNK_19 = (1 << 19), diff --git a/src/force.cpp b/src/force.cpp index 7780506..bc9f714 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -97,7 +97,7 @@ EC u32 func_0203fc20(u32 param_1, u32 param_2, u32 param_3) for (i = 0; i < 3; i++) { - for (it = gForces[i].head; it != NULL; it = it->unk_3c) + for (it = gForces[i].head; it != NULL; it = it->next) { if (param_2 != 0) { @@ -258,7 +258,7 @@ EC void func_0204003c(struct Unit * unit) return; } - for (it = unit->force->head; it != NULL; it = it->unk_3c) + for (it = unit->force->head; it != NULL; it = it->next) { if (it == unit) { @@ -304,7 +304,7 @@ EC void func_02040094(SaveBuffer * save, u32 faction) continue; } - for (unit = force->head; unit != NULL; unit = unit->unk_3c) + for (unit = force->head; unit != NULL; unit = unit->next) { unit->unk_68 = bVar7; bVar7++; @@ -335,7 +335,7 @@ EC void func_02040094(SaveBuffer * save, u32 faction) save->WriteByte(i); save->WriteByte(count); - for (unit = force->head; unit != NULL; unit = unit->unk_3c) + for (unit = force->head; unit != NULL; unit = unit->next) { unit->Save(save); } @@ -442,7 +442,7 @@ EC void func_02040394(struct WirelessSettings_00 * arg0) func_0204026c(arg0, arg0->unk_755); - for (var_r11 = Force::Get(0)->head; var_r11 != NULL; var_r11 = var_r11->unk_3c) + for (var_r11 = Force::Get(0)->head; var_r11 != NULL; var_r11 = var_r11->next) { var_r6 = 0; @@ -801,8 +801,8 @@ void Force::InsertHead(Unit * unit) } else { - head->unk_38 = unit; - unit->unk_3c = head; + head->prev = unit; + unit->next = head; this->head = unit; } @@ -822,8 +822,8 @@ void Force::InsertTail(Unit * unit) } else { - tail->unk_3c = unit; - unit->unk_38 = tail; + tail->next = unit; + unit->prev = tail; } this->tail = unit; @@ -833,36 +833,36 @@ void Force::InsertTail(Unit * unit) void Force::Remove(Unit * unit) { - if (unit->unk_3c != NULL) + if (unit->next != NULL) { - unit->unk_3c->unk_38 = unit->unk_38; + unit->next->prev = unit->prev; } else { - this->tail = unit->unk_38; + this->tail = unit->prev; if (this->tail != NULL) { - this->tail->unk_3c = NULL; + this->tail->next = NULL; } } - if (unit->unk_38 != NULL) + if (unit->prev != NULL) { - unit->unk_38->unk_3c = unit->unk_3c; + unit->prev->next = unit->next; } else { - this->head = unit->unk_3c; + this->head = unit->next; if (this->head != NULL) { - this->head->unk_38 = NULL; + this->head->prev = NULL; } } - unit->unk_38 = NULL; - unit->unk_3c = NULL; + unit->prev = NULL; + unit->next = NULL; return; } @@ -872,7 +872,7 @@ s32 Force::Count(void) struct Unit * it; s32 count = 0; - for (it = this->head; it != NULL; it = it->unk_3c) + for (it = this->head; it != NULL; it = it->next) { count++; } @@ -894,7 +894,7 @@ void Force::MoveAllUnitsTo(s32 factionId, BOOL append) { for (it = this->tail; it != NULL; it = next) { - next = it->unk_38; + next = it->prev; it->MoveToForce(factionId, append); } } @@ -902,7 +902,7 @@ void Force::MoveAllUnitsTo(s32 factionId, BOOL append) { for (it = this->head; it != NULL; it = next) { - next = it->unk_3c; + next = it->next; it->MoveToForce(factionId, append); } } @@ -914,7 +914,7 @@ Unit * Force::FindByPerson(struct PersonData * person) { Unit * it; - for (it = this->head; it != NULL; it = it->unk_3c) + for (it = this->head; it != NULL; it = it->next) { if (it->pPersonData != person) { @@ -936,7 +936,7 @@ Unit * Force::func_02040d68(struct PersonData * person) { Unit * it; - for (it = this->head; it != NULL; it = it->unk_3c) + for (it = this->head; it != NULL; it = it->next) { if (func_0203c378(it)->pPersonData != person) { @@ -958,7 +958,7 @@ Unit * Force::FindByAttribute(u32 attr) { Unit * it; - for (it = this->head; it != NULL; it = it->unk_3c) + for (it = this->head; it != NULL; it = it->next) { if (!it->CheckAttribute(attr)) { diff --git a/src/gamectrl.cpp b/src/gamectrl.cpp index 85e3097..92e7087 100644 --- a/src/gamectrl.cpp +++ b/src/gamectrl.cpp @@ -5,8 +5,10 @@ #include "unknown_data.h" #include "unknown_types.hpp" + #include "database.hpp" #include "event.hpp" +#include "gamectrl.hpp" #include "hardware.hpp" #include "hashtable.hpp" #include "heap.hpp" @@ -14,112 +16,56 @@ #include "sound_manager.hpp" #include "state_manager.hpp" -enum -{ - L_GAMECTRL_1 = 1, - L_GAMECTRL_2 = 2, - L_GAMECTRL_3 = 3, - L_GAMECTRL_MAIN_MENU = 4, - L_GAMECTRL_5 = 5, - L_GAMECTRL_WORLD_MAP = 6, - L_GAMECTRL_7 = 7, - L_GAMECTRL_8 = 8, - L_GAMECTRL_9 = 9, - L_GAMECTRL_10 = 10, - L_GAMECTRL_11 = 11, - L_GAMECTRL_12 = 12, - L_GAMECTRL_13 = 13, - L_GAMECTRL_14 = 14, - L_GAMECTRL_15 = 15, - L_GAMECTRL_16 = 16, - L_GAMECTRL_17 = 17, - L_GAMECTRL_18 = 18, - L_GAMECTRL_19 = 19, - L_GAMECTRL_20 = 20, - L_GAMECTRL_21 = 21, - L_GAMECTRL_22 = 22, - L_GAMECTRL_23 = 23, - L_GAMECTRL_24 = 24, - L_GAMECTRL_25 = 25, - L_GAMECTRL_26 = 26, - L_GAMECTRL_27 = 27, - L_GAMECTRL_28 = 28, - L_GAMECTRL_29 = 29, - L_GAMECTRL_30 = 30, - L_GAMECTRL_31 = 31, - L_GAMECTRL_32 = 32, - L_GAMECTRL_33 = 33, - L_GAMECTRL_34 = 34, - L_GAMECTRL_MULTIPLAYER_PRACTICE = 35, - L_GAMECTRL_36 = 36, - L_GAMECTRL_37 = 37, - L_GAMECTRL_38 = 38, - L_GAMECTRL_39 = 39, - L_GAMECTRL_40 = 40, - - L_GAMECTRL_54 = 54, +// clang-format off + +struct ProcCmd ProcScr_020ceb84[] = +{ + PROC_OVERLAY_LOAD(OVERLAY_ID_8), + PROC_CALL(StartTitleSeq_Goto2), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_8), + PROC_END }; -EC void func_020210d0(struct MapData *, s32); +struct ProcCmd ProcScr_020ceba4[] = +{ + PROC_OVERLAY_LOAD(OVERLAY_ID_8), + PROC_CALL(StartTitleSeq_Goto0), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_8), + PROC_END +}; -EC void func_ov004_02209e54(ProcPtr); - -EC void func_020136bc(ProcPtr); -EC void func_0201fd44(ProcPtr); - -EC BOOL _IsProcTutCardActive(void); - -EC void func_02021b00(void); -EC void func_02021b14(void); -EC void func_02021d70(void); -EC void func_02021dd4(void); -EC void func_02021e6c(void); -EC void func_02021f08(ProcPtr); -EC void func_02021f2c(ProcPtr); -EC void func_02021f5c(void); -EC void func_0202214c(ProcPtr); -EC void func_020221bc(void); -EC void func_020221e4(void); -EC void func_0202225c(void); -EC void func_02022324(void); -EC void func_02022364(ProcPtr); -EC void func_020223b4(void); -EC void func_020223cc(ProcPtr); -EC void func_02022414(void); -EC void func_02022458(void); -EC void func_02022480(void); -EC void func_020224a8(ProcPtr); -EC void func_020224d4(void); -EC void func_020224fc(void); -EC void func_0202254c(ProcPtr); -EC void func_02022564(void); -EC void func_02022588(void); -EC void func_0202272c(ProcPtr); -EC void func_02022814(void); -EC void func_0202284c(ProcPtr); -EC void func_020228ac(ProcPtr); -EC void func_020228ec(ProcPtr); -EC BOOL func_02022988(void); -EC void func_020229a8(void); -EC void func_020229f0(void); -EC BOOL func_02022b10(void); -EC BOOL GameCtrl_IsWirelessPracticeMode(void); -EC BOOL func_02022b50(void); -EC void func_02022b70(ProcPtr); -EC void func_02022bb0(ProcPtr); -EC void func_02022c54(ProcPtr); -EC void func_02022c78(ProcPtr); -EC void func_02022cb0(ProcPtr); -EC void func_02022cdc(ProcPtr); -EC void func_02022db8(void); -EC void func_02022dc8(void); -EC void func_02022dfc(void); -EC void func_02022e14(void); -EC BOOL func_02022e34(void); -EC void func_02022e54(void); -EC BOOL func_02022eb8(void); -EC BOOL func_02022ed4(void); -EC BOOL func_02022ef4(void); +struct ProcCmd ProcScr_020cebc4[] = +{ + PROC_NAME, + PROC_OVERLAY_LOAD(OVERLAY_ID_6), + PROC_CALL(func_ov006_02218ac4), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_6), + PROC_END +}; + +struct ProcCmd ProcScr_020cebec[] = +{ + PROC_NAME, + PROC_OVERLAY_LOAD(OVERLAY_ID_6), + PROC_CALL(func_02022d00), + PROC_OVERLAY_UNLOAD(OVERLAY_ID_6), + PROC_END +}; + +struct ProcCmd ProcScr_020cec14[] = +{ + PROC_NAME, + PROC_REPEAT(func_02021f08), + PROC_CALL(func_02022dd8), + PROC_CALL(func_02024000), + PROC_CALL(func_020247a8), + PROC_END +}; + +// clang-format on + + +EC void func_020210d0(struct MapData *, s32); // clang-format off @@ -130,22 +76,22 @@ struct ProcCmd ProcScr_GameCtrl[] = PROC_06(0, func_02021d70), PROC_CALL(func_020136bc), - PROC_START_CHILD(data_020cec14), + PROC_START_CHILD(ProcScr_020cec14), PROC_GOTO(L_GAMECTRL_1), PROC_LABEL(L_GAMECTRL_1), - PROC_START_CHILD_LOCKING(data_020ceba4), + PROC_START_CHILD_LOCKING(ProcScr_020ceba4), PROC_GOTO(L_GAMECTRL_3), PROC_LABEL(L_GAMECTRL_2), - PROC_START_CHILD_LOCKING(data_020ceb84), + PROC_START_CHILD_LOCKING(ProcScr_020ceb84), PROC_GOTO(L_GAMECTRL_3), PROC_LABEL(L_GAMECTRL_3), - PROC_WHILE_EXISTS(data_020cec14), + PROC_WHILE_EXISTS(ProcScr_020cec14), PROC_CALL(func_02021b00), PROC_GOTO(L_GAMECTRL_MAIN_MENU), @@ -155,7 +101,7 @@ PROC_LABEL(L_GAMECTRL_MAIN_MENU), PROC_REPEAT(func_02021f2c), PROC_CALL(func_02021b14), PROC_CALL(func_0201fd44), - PROC_START_CHILD_LOCKING(data_020cebc4), + PROC_START_CHILD_LOCKING(ProcScr_020cebc4), PROC_GOTO(L_GAMECTRL_2), @@ -175,7 +121,7 @@ PROC_LABEL(L_GAMECTRL_7), PROC_REPEAT(func_02021f2c), PROC_CALL(func_02021dd4), PROC_CALL(func_02021f5c), - PROC_CALL(func_0202214c), + PROC_CALL(GameCtrl_BeginMap), PROC_CALL(func_020221bc), PROC_CALL(func_020221e4), PROC_CALL(func_02022364), @@ -210,23 +156,23 @@ PROC_LABEL(L_GAMECTRL_10), // fallthrough PROC_LABEL(L_GAMECTRL_11), - PROC_CALL(func_0202254c), + PROC_CALL(GameCtrl_StartMapEndEvent), PROC_CALL(func_02022564), PROC_CALL(func_02022588), PROC_CALL(func_0202272c), PROC_CALL(func_02021e6c), - PROC_START_CHILD_LOCKING(data_020cebec), + PROC_START_CHILD_LOCKING(ProcScr_020cebec), PROC_GOTO(L_GAMECTRL_WORLD_MAP), -PROC_LABEL(L_GAMECTRL_12), +PROC_LABEL(L_GAMECTRL_GAME_OVER), PROC_FADE_TO_BLACK(64, 1, TRUE), PROC_CALL(func_020224fc), - PROC_CALL(func_0202254c), + PROC_CALL(GameCtrl_StartMapEndEvent), PROC_CALL(func_02022564), PROC_CALL(func_02021e6c), PROC_OVERLAY_LOAD(OVERLAY_ID_6), - PROC_CALL(func_ov006_0221776c), + PROC_CALL(StartGameOver), PROC_OVERLAY_UNLOAD(OVERLAY_ID_6), PROC_CALL(func_02021b00), @@ -275,7 +221,7 @@ PROC_LABEL(L_GAMECTRL_39), PROC_WHILE(_IsProcTutCardActive), PROC_FADE_TO_BLACK(32, 1, TRUE), PROC_CALL(func_020224fc), - PROC_CALL(func_0202254c), + PROC_CALL(GameCtrl_StartMapEndEvent), PROC_CALL(func_02022564), PROC_CALL(func_02021e6c), PROC_CALL(func_02021b00), @@ -416,7 +362,7 @@ PROC_LABEL(L_GAMECTRL_31), PROC_GOTO(L_GAMECTRL_32), PROC_LABEL(L_GAMECTRL_32), - PROC_CALL(func_02022e54), + PROC_CALL(GameCtrl_InitWirelessSettings), PROC_CALL(func_0202284c), PROC_GOTO_IF_YES(func_02022eb8, L_GAMECTRL_40), PROC_GOTO_IF_NO(func_02022ef4, L_GAMECTRL_31), @@ -433,7 +379,7 @@ PROC_LABEL(L_GAMECTRL_33), PROC_GOTO(L_GAMECTRL_MULTIPLAYER_PRACTICE), PROC_LABEL(L_GAMECTRL_34), - PROC_CALL(func_02022e54), + PROC_CALL(GameCtrl_InitWirelessSettings), PROC_CALL(func_ov003_021eb9b0), PROC_GOTO_IF_NO(func_02022e34, L_GAMECTRL_31), PROC_CALL(func_02022e14), @@ -444,7 +390,7 @@ PROC_LABEL(L_GAMECTRL_MULTIPLAYER_PRACTICE), PROC_25(2, 0), PROC_CALL(func_02021dd4), PROC_CALL(func_02021f5c), - PROC_CALL(func_0202214c), + PROC_CALL(GameCtrl_BeginMap), PROC_CALL(func_020221bc), PROC_CALL(func_020221e4), PROC_FADE_FROM_BLACK(8, 1, TRUE), @@ -453,7 +399,7 @@ PROC_LABEL(L_GAMECTRL_MULTIPLAYER_PRACTICE), PROC_CALL(func_020224d4), PROC_CALL(func_02022b70), PROC_CALL(func_020224fc), - PROC_CALL(func_0202254c), + PROC_CALL(GameCtrl_StartMapEndEvent), PROC_CALL(func_02022564), PROC_CALL(func_02021e6c), PROC_CALL(func_02022dfc), @@ -515,11 +461,6 @@ extern struct UnkStruct_02196f20 * data_02196f20; extern struct UnkStruct_02196f24 * data_02196f24; -// Forward declarations -EC void InitOnlineShopItemFlags(void); -EC void InitOnlineShopItemAmounts(void); -EC void GameCtrl_GotoLabel(u32 label); - EC void func_020217b4(void) { int random; @@ -595,9 +536,9 @@ EC void func_020217b4(void) InitFaceInfo(); func_02015f64(); - func_02039eac("system\0"); + func_02039eac("system"); func_02039eac("die"); - func_02039eac("tutorial\0\0\0"); + func_02039eac("tutorial"); func_02042420("startup"); @@ -626,15 +567,15 @@ EC void func_020219a4(int param_1, int param_2) data_02196f0c->flagMgr->RegisterName("gf_canceled", FALSE); data_02196f0c->flagMgr->RegisterName("gf_gameover", FALSE); data_02196f0c->flagMgr->RegisterName("gf_complete", FALSE); - data_02196f0c->flagMgr->RegisterName("gf_reserved2\0\0\0", FALSE); - data_02196f0c->flagMgr->RegisterName("gf_reserved3\0\0\0", FALSE); - data_02196f0c->flagMgr->RegisterName("gf_reserved4\0\0\0", FALSE); - data_02196f0c->flagMgr->RegisterName("gf_reserved5\0\0\0", FALSE); - data_02196f0c->flagMgr->RegisterName("gf_reserved6\0\0\0", FALSE); + data_02196f0c->flagMgr->RegisterName("gf_reserved2", FALSE); + data_02196f0c->flagMgr->RegisterName("gf_reserved3", FALSE); + data_02196f0c->flagMgr->RegisterName("gf_reserved4", FALSE); + data_02196f0c->flagMgr->RegisterName("gf_reserved5", FALSE); + data_02196f0c->flagMgr->RegisterName("gf_reserved6", FALSE); InitOnlineShopItemFlags(); InitOnlineShopItemAmounts(); - func_020424b8("RegistGrobalFlags\0\0"); + func_020424b8("RegistGrobalFlags"); if (param_2 != 0) { @@ -660,31 +601,31 @@ EC void func_02021b14(void) EC void InitOnlineShopItemFlags(void) { - data_02196f0c->valueMgr->RegisterName("os_BraveSword\0\0", FALSE); - data_02196f0c->valueMgr->RegisterName("os_BraveLance\0\0", FALSE); + data_02196f0c->valueMgr->RegisterName("os_BraveSword", FALSE); + data_02196f0c->valueMgr->RegisterName("os_BraveLance", FALSE); data_02196f0c->valueMgr->RegisterName("os_BraveAxe", FALSE); data_02196f0c->valueMgr->RegisterName("os_BraveBow", FALSE); data_02196f0c->valueMgr->RegisterName("os_Wato", FALSE); - data_02196f0c->valueMgr->RegisterName("os_MasterProof\0", FALSE); - data_02196f0c->valueMgr->RegisterName("os_LongBow\0", FALSE); + data_02196f0c->valueMgr->RegisterName("os_MasterProof", FALSE); + data_02196f0c->valueMgr->RegisterName("os_LongBow", FALSE); data_02196f0c->valueMgr->RegisterName("os_EmpyreadWhip", FALSE); - data_02196f0c->valueMgr->RegisterName("os_reserved1\0\0\0", FALSE); - data_02196f0c->valueMgr->RegisterName("os_reserved2\0\0\0", FALSE); - data_02196f0c->valueMgr->RegisterName("os_reserved3\0\0\0", FALSE); - data_02196f0c->valueMgr->RegisterName("os_reserved4\0\0\0", FALSE); + data_02196f0c->valueMgr->RegisterName("os_reserved1", FALSE); + data_02196f0c->valueMgr->RegisterName("os_reserved2", FALSE); + data_02196f0c->valueMgr->RegisterName("os_reserved3", FALSE); + data_02196f0c->valueMgr->RegisterName("os_reserved4", FALSE); return; } EC void InitOnlineShopItemAmounts(void) { - data_02196f0c->valueMgr->SetByName("os_BraveSword\0\0", 3); - data_02196f0c->valueMgr->SetByName("os_BraveLance\0\0", 3); + data_02196f0c->valueMgr->SetByName("os_BraveSword", 3); + data_02196f0c->valueMgr->SetByName("os_BraveLance", 3); data_02196f0c->valueMgr->SetByName("os_BraveAxe", 3); data_02196f0c->valueMgr->SetByName("os_BraveBow", 3); data_02196f0c->valueMgr->SetByName("os_Wato", 5); - data_02196f0c->valueMgr->SetByName("os_MasterProof\0", 15); - data_02196f0c->valueMgr->SetByName("os_LongBow\0", 5); + data_02196f0c->valueMgr->SetByName("os_MasterProof", 15); + data_02196f0c->valueMgr->SetByName("os_LongBow", 5); data_02196f0c->valueMgr->SetByName("os_EmpyreadWhip", 3); return; } @@ -742,7 +683,7 @@ EC void func_02021dd4(void) } func_02042460(GetBattleMapNameMaybe()); - func_020424b8("RegistLocalFlags\0\0\0"); + func_020424b8("RegistLocalFlags"); EventCaller::func_020484b0(); return; @@ -838,7 +779,7 @@ EC void func_02021f5c(void) } } - if (data_02196f0c->state & GAME_STATE_UNK_16) + if (data_02196f0c->state & GAME_STATE_LINK_ARENA) { data_ov000_021e3324->fogActive = gWirelessSettings->fogActive; data_ov000_021e3324->timeLimit = gWirelessSettings->timeLimit * 60; @@ -848,13 +789,13 @@ EC void func_02021f5c(void) return; } -EC void func_0202214c(ProcPtr proc) +EC void GameCtrl_BeginMap(ProcPtr proc) { Unit * unit; - Event::StartEventByName("MapBegin\0\0\0", proc); + Event::StartEventByName("MapBegin", proc); - if (!(data_02196f0c->state & GAME_STATE_UNK_16)) + if (!(data_02196f0c->state & GAME_STATE_LINK_ARENA)) { return; } @@ -936,7 +877,7 @@ EC void func_02022324(void) { data_02196f1c->unk_09 = data_02196f0c->unk_10; - if (!(data_02196f0c->state & GAME_STATE_UNK_6)) + if (!(data_02196f0c->state & GAME_STATE_BATTLE_PREP)) { return; } @@ -948,25 +889,25 @@ EC void func_02022324(void) EC void func_02022364(ProcPtr proc) { - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { return; } - if (!HashTable::Get1("SallyTalk\0\0")) + if (!HashTable::Get1("SallyTalk")) { return; } - func_02039eac("suppliance\0"); - Event::StartEventByName("SallyTalk\0\0", proc); + func_02039eac("suppliance"); + Event::StartEventByName("SallyTalk", proc); return; } EC void func_020223b4(void) { - func_02039f00("suppliance\0", 1); + func_02039f00("suppliance", 1); return; } @@ -1016,12 +957,12 @@ EC void func_02022480(void) EC void func_020224a8(ProcPtr proc) { - if (!HashTable::Get1("Ending\0")) + if (!HashTable::Get1("Ending")) { return; } - Event::StartEventByName("Ending\0", proc); + Event::StartEventByName("Ending", proc); return; } @@ -1045,9 +986,9 @@ EC void func_020224fc(void) return; } -EC void func_0202254c(ProcPtr proc) +EC void GameCtrl_StartMapEndEvent(ProcPtr proc) { - Event::StartEventByName("MapEnd\0", proc); + Event::StartEventByName("MapEnd", proc); return; } @@ -1063,7 +1004,7 @@ EC void func_02022588(void) struct Unit * pUnit; int i; - if (data_02196f0c->state & (GAME_STATE_UNK_5 | GAME_STATE_UNK_16)) + if (data_02196f0c->state & (GAME_STATE_WIRELESS_BATTLE | GAME_STATE_LINK_ARENA)) { return; } @@ -1126,19 +1067,17 @@ EC void func_02022588(void) while (TRUE) { - Force * force; struct Unit * it; struct Unit * pUnit; - force = Force::Get(0); - pUnit = force->head; + pUnit = Force::Get(0)->head; if (pUnit == NULL) { break; } - for (it = pUnit->unk_3c; it != NULL; it = it->unk_3c) + for (it = pUnit->next; it != NULL; it = it->next) { s32 a = it->unk_95; s32 b = pUnit->unk_95; @@ -1249,10 +1188,10 @@ EC void func_020228ec(ProcPtr unused) { if (gWirelessSettings->mode != WIRELESS_MODE_PRACTICE) { - data_02196f0c->state |= GAME_STATE_UNK_5; + data_02196f0c->state |= GAME_STATE_WIRELESS_BATTLE; } - data_02196f0c->state |= GAME_STATE_UNK_16; + data_02196f0c->state |= GAME_STATE_LINK_ARENA; data_02196f0c->state |= GAME_STATE_SUPPLY_OFF; data_02196f0c->state |= GAME_STATE_UNK_0; @@ -1460,9 +1399,9 @@ EC void func_02022d00(ProcPtr proc) return; } - if (data_02196f0c->state & GAME_STATE_UNK_16) + if (data_02196f0c->state & GAME_STATE_LINK_ARENA) { - data_02196f0c->state &= ~GAME_STATE_UNK_16; + data_02196f0c->state &= ~GAME_STATE_LINK_ARENA; GameCtrl_GotoLabel(L_GAMECTRL_54); return; @@ -1498,8 +1437,7 @@ EC void func_02022dd8(void) return; } - GetText("MBackup_LoadError\0\0"); - func_0201f8a0(); + func_0201f8a0(GetText("MBackup_LoadError")); return; } @@ -1521,7 +1459,7 @@ EC BOOL func_02022e34(void) return data_02196f0c->unk_14 == 1 ? TRUE : FALSE; } -EC void func_02022e54(void) +EC void GameCtrl_InitWirelessSettings(void) { gWirelessSettings->fogActive = 1; gWirelessSettings->timeLimit = 300; diff --git a/src/item.cpp b/src/item.cpp index 4ea651f..4580f5f 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -163,12 +163,12 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { return FALSE; } - for (i = 0; i < 8; i++) + for (i = 0; i < UNIT_STAT_COUNT; i++) { int cap; @@ -194,7 +194,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { return FALSE; } @@ -207,7 +207,7 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return TRUE; case ITEM_EFFECT_PROMOTE: - if (func_ov000_021a47e4() && !(data_02196f0c->state & GAME_STATE_UNK_6)) + if (IsLinkArena() && !(data_02196f0c->state & GAME_STATE_BATTLE_PREP)) { return FALSE; } @@ -253,12 +253,12 @@ EC BOOL func_02038384(struct ItemData * item, struct Unit * unit) return FALSE; } - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return FALSE; } - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { return FALSE; } @@ -436,7 +436,7 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) return FALSE; } - for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->next) { s32 hp; @@ -522,7 +522,7 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) return FALSE; } - for (i = 0; i < 8; i++) + for (i = 0; i < UNIT_STAT_COUNT; i++) { int cap; @@ -610,7 +610,7 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) it = pUnit->items; - for (i = 0; i < 5; it++, i++) + for (i = 0; i < UNIT_ITEM_COUNT; it++, i++) { if (!func_02038f94(it)) { @@ -623,7 +623,7 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) return FALSE; case ITEM_EFFECT_REVIVE: - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return FALSE; } @@ -633,7 +633,7 @@ EC BOOL func_02038914(struct ItemData * item, u32 x, u32 y) return FALSE; } - for (pUnit = Force::Get(3)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(3)->head; pUnit != NULL; pUnit = pUnit->next) { if (pUnit->state2 & US_EVENT_DEAD) { @@ -661,7 +661,7 @@ EC void func_02038ce4(struct ItemData * item, struct Unit * unitA, struct Unit * case ITEM_EFFECT_HEAL: if (item->attributes & IA_FORTIFY) { - for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->next) { if (pUnit->state2 & (US_UNK_5 | US_NOT_PRESENT | US_HOVERED)) { @@ -700,14 +700,14 @@ EC void func_02038ce4(struct ItemData * item, struct Unit * unitA, struct Unit * break; case ITEM_EFFECT_TEMP_RES_BOOST: - for (r2 = item->statBoost, i = 0; i < 8; i++) + for (r2 = item->statBoost, i = 0; i < UNIT_STAT_COUNT; i++) { if (r2[i] == 0) { continue; } - if (i != 7) + if (i != UNIT_STAT_RES) { continue; } diff --git a/src/ov000/disposition.cpp b/src/ov000/disposition.cpp index 2bd240e..91bfc95 100644 --- a/src/ov000/disposition.cpp +++ b/src/ov000/disposition.cpp @@ -152,21 +152,11 @@ EC void func_02039ff8(struct Unit *, Spawn *); EC void func_01ff8204(void *, s8, s8, s32, s32, u16); -// struct UnkStruct_02196f0c -// { -// /* 00 */ struct UnkStruct_02196f0c_00 * unk_00; -// /* 04 */ void * flagMgr; -// /* 08 */ void * valueMgr; -// /* 0C */ u32 state; -// /* 10 */ u32 unk_10; -// /* 14 */ u32 unk_14; -// }; - extern struct UnkStruct_02196f0c * data_02196f0c; EC BOOL FindUnitByPidAndFaction(s32, s32); -EC BOOL func_ov000_021a47e4(void); +EC BOOL IsLinkArena(void); EC BOOL func_ov000_021bb5d4(void *, s32, s32); @@ -394,7 +384,7 @@ void DisposGroupProcessor::func_ov000_021d9e38(void) struct Unit * DisposGroupProcessor::func_ov000_021d9e50(s32 pid, s32 faction) { - if (func_ov000_021a47e4() == 0) + if (!IsLinkArena()) { faction = 0; } @@ -407,14 +397,14 @@ EC struct Unit * DisposGroupProcessor::func_ov000_021d9e7c(s32 faction) Force * force; struct Unit * pUnit; - if (func_ov000_021a47e4() == 0) + if (!IsLinkArena()) { faction = 0; } force = Force::Get(faction + 2); - for (pUnit = force->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = force->head; pUnit != NULL; pUnit = pUnit->next) { if (!(pUnit->state2 & US_UNK_11)) { @@ -435,7 +425,7 @@ EC struct Unit * DisposGroupProcessor::func_ov000_021d9ebc(s32 index, BOOL param spawn = this->spawns + index; paVar2 = this->spawnStates + index; - if (((spawn->flags & 0xe) != 0) && (data_02196f0c->state & GAME_STATE_UNK_6)) + if (((spawn->flags & 0xe) != 0) && (data_02196f0c->state & GAME_STATE_BATTLE_PREP)) { return NULL; } @@ -561,7 +551,7 @@ EC void DisposGroupProcessor::func_ov000_021da0fc(s32 index) data_ov000_021e3528.unk_2e++; } - if (((spawn->flags & 0xe) != 0) && (data_02196f0c->state & GAME_STATE_UNK_6)) + if (((spawn->flags & 0xe) != 0) && (data_02196f0c->state & GAME_STATE_BATTLE_PREP)) { return; } diff --git a/src/ov000/map_battle.cpp b/src/ov000/map_battle.cpp index f0f3b5e..17ada1b 100644 --- a/src/ov000/map_battle.cpp +++ b/src/ov000/map_battle.cpp @@ -13,6 +13,7 @@ #include "constants/sounds.h" +#include "unknown_funcs.h" #include "unknown_types.hpp" extern struct UnkStruct_021974fc * data_021974fc; @@ -407,7 +408,6 @@ EC void KiriDragonTransform_021caa84(onbat::ProcKiriDragonTransform * proc) } EC void func_0204b39c(/* ? */); -EC void _IsProcTutCardActive(/* ? */); EC void func_0204b444(/* ? */); EC void func_0204ac18(/* ? */); EC void func_0204aca8(/* ? */); @@ -439,8 +439,6 @@ struct ProcCmd ProcScr_onbat_KiriDragonTransform[] = // clang-format on -EC struct Proc * func_ov000_021d3674(char *, void *, s32, s32, ProcPtr, BOOL); - EC void UnitTransform_Loop(onbat::UnitTransform * self) { struct Proc * fxProc; @@ -457,7 +455,7 @@ EC void UnitTransform_Loop(onbat::UnitTransform * self) if (!self->unk_50 && self->timer == 8) { - fxProc = func_ov000_021d3674("TransformDragon", self->pUnit, 0, 0, PROC_TREE_B, FALSE); + fxProc = (struct Proc *)func_ov000_021d3674("TransformDragon", self->pUnit, 0, 0, PROC_TREE_B, FALSE); Proc_SetMark(fxProc, PROC_MARK_8); if (self->pUnit->force->id & 1) @@ -517,7 +515,6 @@ EC void UnitTransform_Loop(onbat::UnitTransform * self) EC void func_ov000_021d1ed4(ProcPtr); EC BOOL func_ov000_021a82c0(void); EC BOOL func_ov000_021a8248(void); -EC BOOL func_ov000_021a478c(void); EC void func_ov002_021ef134(ProcPtr, void *); @@ -744,7 +741,7 @@ void onbat::MapBattle::SetupAnims(void) { flag = TRUE; } - else if ((gKeySt->held & KEY_BUTTON_L) && (!func_ov000_021a478c() || !func_020146c4(func_02012410()))) + else if ((gKeySt->held & KEY_BUTTON_L) && (!IsWirelessBattle() || !func_020146c4(func_02012410()))) { if (data_02196f24->animations != 1) { @@ -814,7 +811,7 @@ void onbat::MapBattle::SetupBgm(void) } } - if (songId == -1 && !(data_02196f0c->state & GAME_STATE_UNK_5)) + if (songId == -1 && !(data_02196f0c->state & GAME_STATE_WIRELESS_BATTLE)) { unit = NULL; @@ -1051,20 +1048,6 @@ void onbat::MapBattle::_021cbb4c(void) EC void func_ov000_021d1e38(ProcPtr, s32, u32); EC void Battle_TryStartDeathEvent(MapBattle_38 *, ProcPtr); -struct UnkStruct_021faf8c -{ - STRUCT_PAD(0x00, 0x01); - /* 01 */ s8 unk_01; - STRUCT_PAD(0x02, 0x08); - /* 08 */ u8 unk_08; - STRUCT_PAD(0x09, 0x5D); - /* 5D */ s8 unk_5d; - STRUCT_PAD(0x5E, 0x64); - /* 64 */ u8 unk_64; - STRUCT_PAD(0x65, 0xB9); - /* B9 */ u8 unk_b9; -}; - extern struct UnkStruct_021faf8c data_ov002_021faf8c; EC void func_ov000_021d3b00(struct Unit *, onbat::MapBattle *, s32, s32); @@ -1928,7 +1911,6 @@ EC void IsMapEffectUnitAlphaActive(/* ? */); EC void func_ov000_021a4694(/* ? */); EC void func_0204b39c(/* ? */); -EC void _IsProcTutCardActive(/* ? */); EC void func_0204b444(/* ? */); EC void func_0204ac18(/* ? */); EC void func_0204aca8(/* ? */); diff --git a/src/ov000/map_input_handler.cpp b/src/ov000/map_input_handler.cpp index 1e6672f..015bfe7 100644 --- a/src/ov000/map_input_handler.cpp +++ b/src/ov000/map_input_handler.cpp @@ -104,7 +104,7 @@ void InputHandler::CreateButtons(void) this->buttons[2]->func_020354bc(0); this->buttons[2]->SetVisible(TRUE); - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { this->buttons[3] = new (Proc_Start(ProcScr_020ce750, PROC_TREE_6)) map::Button_Common; @@ -161,7 +161,7 @@ void InputHandler::_021a5688(void) iVar1 = static_cast(HashTable::Get2("VmMap_Button")); uVar3 = iVar1->unk_04; - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { func_02034930(4, uVar3, iVar1->unk_06); iVar2 = func_02034f74(4); @@ -182,7 +182,7 @@ void InputHandler::_021a5688(void) uVar3 = func_02034f74(0xb); - if (!(data_02196f0c->state & GAME_STATE_UNK_6)) + if (!(data_02196f0c->state & GAME_STATE_BATTLE_PREP)) { return; } @@ -428,7 +428,7 @@ BOOL InputHandler::_021a5abc(s32 x, s32 y, BOOL param_4) return x == uVar1 && y == uVar2; } - if ((data_02196f0c->state & GAME_STATE_UNK_6) && (x == uVar1 && y == uVar2)) + if ((data_02196f0c->state & GAME_STATE_BATTLE_PREP) && (x == uVar1 && y == uVar2)) { for (i = 0; i < data_ov000_021e3528.unk_2e; i++) { diff --git a/src/ov000/map_menu.cpp b/src/ov000/map_menu.cpp index f9ca15a..3685435 100644 --- a/src/ov000/map_menu.cpp +++ b/src/ov000/map_menu.cpp @@ -1,5 +1,6 @@ #include "global.h" +#include "gamectrl.hpp" #include "hardware.hpp" #include "hashtable.hpp" #include "map.hpp" @@ -209,7 +210,7 @@ class MapMenu : public BSystemMapMenu iVar7++; - for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->next) { if (pUnit->state2 & (US_ACTED | US_UNK_5 | US_UNK_6 | US_ITEMS_TO_CONVOY)) { @@ -299,7 +300,7 @@ class MIM_UnitList : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - return 0; + return MENU_ENABLED; } /* 90 */ virtual void vfunc_90(Menu * menu, MenuItemState * menuItemState) @@ -324,7 +325,7 @@ class MIM_UnitList : public MenuItem { PlayerPhase_GotoLabel(31, 0, 0); func_ov000_021d6dfc(0); - return 0x41; + return MENU_ACTION_x1 | MENU_ACTION_x40; } }; @@ -339,7 +340,7 @@ class MIM_TutList : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -374,7 +375,7 @@ class MIM_TutList : public MenuItem { PlayerPhase_GotoLabel(32, 0, 0); func_ov000_021d6dfc(0); - return 0x41; + return MENU_ACTION_x1 | MENU_ACTION_x40; } }; @@ -389,7 +390,7 @@ class MIM_Config : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -419,7 +420,7 @@ class MIM_Config : public MenuItem { PlayerPhase_GotoLabel(33, 0, 0); func_ov000_021d6dfc(0); - return 0x41; + return MENU_ACTION_x1 | MENU_ACTION_x40; } }; @@ -440,17 +441,17 @@ class DI_TemporarySave : public DialogItemYes { func_ov000_021d6dfc(0); - if (func_ov000_021a47e4()) + if (IsLinkArena()) { PlayerPhase_GotoLabel(26, 0, 0); gWirelessSettings->unk_07 = 2; - return 0x44; + return MENU_ACTION_x4 | MENU_ACTION_x40; } else { PlayerPhase_GotoLabel(27, 0, 0); - GameCtrl_GotoLabel(39); - return 0x60; + GameCtrl_GotoLabel(L_GAMECTRL_39); + return MENU_ACTION_x20 | MENU_ACTION_x40; } } }; @@ -460,7 +461,7 @@ class MIM_TemporarySave : public MenuItem public: /* 00 */ virtual char * vfunc_00(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { // "Exit" return GetText("MMM_練習終了"); @@ -484,12 +485,12 @@ class MIM_TemporarySave : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { return MENU_NOTSHOWN; } - if (func_ov000_021a47e4() || func_0201f680()) + if (IsLinkArena() || func_0201f680()) { return MENU_ENABLED; } @@ -506,7 +507,7 @@ class MIM_TemporarySave : public MenuItem return; } - if (func_ov000_021a47e4()) + if (IsLinkArena()) { // "Exit this practice session." str = "MMMH_練習終了"; @@ -526,7 +527,7 @@ class MIM_TemporarySave : public MenuItem { char * str; - if (func_ov000_021a47e4()) + if (IsLinkArena()) { // "Exit this practice session." str = "MMMH_練習終了"; @@ -547,10 +548,10 @@ class MIM_TemporarySave : public MenuItem if ((menuItemState->unk_09 & 7) != 1) { StartChoice_TemporarySave(menu->unk_10); - return 0x40; + return MENU_ACTION_x40; } - return 0x100; + return MENU_ACTION_x100; } }; @@ -572,7 +573,7 @@ class DI_Surrender : public DialogItemYes func_ov000_021d6dfc(0); PlayerPhase_GotoLabel(38, 0, 0); gWirelessSettings->unk_07 = 1; - return 0x44; + return MENU_ACTION_x4 | MENU_ACTION_x40; } }; @@ -597,7 +598,7 @@ class MIM_Surrender : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { return MENU_ENABLED; } @@ -628,10 +629,10 @@ class MIM_Surrender : public MenuItem if ((menuItemState->unk_09 & 7) != 1) { StartChoice_Surrender(menu->unk_10); - return 0x40; + return MENU_ACTION_x40; } - return 0x100; + return MENU_ACTION_x100; } }; @@ -666,7 +667,7 @@ class MIM_TurnEnd : public MenuItem { PlayerPhase_GotoLabel(23, 0, 0); func_ov000_021d6dfc(0); - return 0x41; + return MENU_ACTION_x1 | MENU_ACTION_x40;; } }; @@ -688,7 +689,7 @@ class BMapSallyEndYes : public DialogItemNo /* 1C */ virtual s32 vfunc_1c(void) { PlayerPhase_GotoLabel(3, 0, 0); - return 0x41; + return MENU_ACTION_x1 | MENU_ACTION_x40;; } }; @@ -713,7 +714,7 @@ class BMapSallyEndNo : public DialogItemNo // "Select two units to have them trade starting positions." StartSubtitleHelp(GetText("MSH_位置変更"), 0); - return 0x81; + return MENU_ACTION_x1 | MENU_ACTION_x80; } }; @@ -760,7 +761,7 @@ EC void StartChoice_TemporarySave(ProcPtr parent) // clang-format on func_020303bc( - new map::TemporarySaveDialogYesNo(), GetText((char *)(func_ov000_021a47e4() ? "MD_中断" : "MD_練習終了")), + new map::TemporarySaveDialogYesNo(), GetText((char *)(IsLinkArena() ? "MD_中断" : "MD_練習終了")), data_ov000_021dd25c, parent, 1, 0); return; diff --git a/src/ov000/map_sequence.cpp b/src/ov000/map_sequence.cpp index a023c63..2fabca0 100644 --- a/src/ov000/map_sequence.cpp +++ b/src/ov000/map_sequence.cpp @@ -9,6 +9,7 @@ #include "anime.hpp" #include "database.hpp" #include "event.hpp" +#include "gamectrl.hpp" #include "hardware.hpp" #include "map.hpp" #include "menu.hpp" @@ -262,14 +263,14 @@ class TurnRegenerateExec : public ProcEx if ((healType == 0) && (terrain->unk_08[3] == 0)) { - this->unk_38 = unit->unk_3c; + this->unk_38 = unit->next; unit = this->unk_38; continue; } if (unit->hp == unit->GetMaxHp()) { - this->unk_38 = unit->unk_3c; + this->unk_38 = unit->next; unit = this->unk_38; continue; } @@ -277,7 +278,7 @@ class TurnRegenerateExec : public ProcEx if (!TEMP(unit)) { unit->hp = unit->hp + func_020381d8(terrain, healType); - this->unk_38 = unit->unk_3c; + this->unk_38 = unit->next; unit = this->unk_38; continue; } @@ -340,7 +341,7 @@ class TurnRegenerateExec : public ProcEx unit->hp = this->unk_40 + this->unk_44; - this->unk_38 = unit->unk_3c; + this->unk_38 = unit->next; this->unk_3c = 0; return; @@ -512,7 +513,7 @@ EC void func_ov000_021a8480(ProcPtr param_1) BOOL flag = FALSE; char * name; - if (!func_ov000_021a47e4()) + if (!IsLinkArena()) { return; } @@ -588,7 +589,7 @@ EC void func_ov000_021a8650(void) s32 i; Unit * pUnit; - if (!func_ov000_021a47e4()) + if (!IsLinkArena()) { return; } @@ -609,7 +610,7 @@ EC void func_ov000_021a8650(void) case 5: case 6: case 0xc: - for (pUnit = Force::Get(i)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(i)->head; pUnit != NULL; pUnit = pUnit->next) { switch (func_02021410(i)->unk_756) { @@ -642,7 +643,7 @@ EC void func_ov000_021a8650(void) case 0xd: case 0x12: - for (pUnit = Force::Get((i + 1) & 1)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get((i + 1) & 1)->head; pUnit != NULL; pUnit = pUnit->next) { switch (func_02021410(i)->unk_756) { @@ -675,7 +676,7 @@ EC void func_ov000_021a8868(void) func_02000c7c(gMapStateManager->unk_08); func_ov000_021b9660(gMapStateManager->unk_14, data_ov000_021e3324->unk_01); - for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->next) { if (pUnit->unk_91 != 0) { @@ -701,7 +702,7 @@ EC void func_ov000_021a8868(void) for (i = 0; i < 2; i++) { - for (pUnit = Force::Get(i)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(i)->head; pUnit != NULL; pUnit = pUnit->next) { pUnit->state2 &= ~US_UNK_14; } @@ -747,9 +748,9 @@ EC void func_ov000_021a8a00(s32 param_1, s32 param_2) { if (data_02196f24->autoCursorEnabled != 0 || gMapStateManager->cursor->unk_00[param_1] == -1) { - if (!func_ov000_021a47e4()) + if (!IsLinkArena()) { - pUnit = Force::Get(param_1)->FindByAttribute(2); + pUnit = Force::Get(param_1)->FindByAttribute(CA_UNK_1); } else { @@ -852,7 +853,7 @@ EC void * func_ov000_021d3350(char *, s32, s32, s32, s32, ProcPtr, s32, s32, s32 EC void func_ov000_021a8c9c(ProcPtr param_1) { - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { if (data_ov000_021e3324->phase != 0) { @@ -982,7 +983,7 @@ EC void func_ov000_021a8ff4(void) if (data_ov000_021e3324->fogActive != 0) { - for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->next) { it->state2 &= ~US_UNK_14; } @@ -1024,7 +1025,7 @@ EC void func_ov000_021a9138(void) { Unit * it; - for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(data_ov000_021e3324->phase)->head; it != NULL; it = it->next) { it->state2 &= ~US_ACTED; } @@ -1034,7 +1035,7 @@ EC void func_ov000_021a9138(void) return; } - if (func_ov000_021a47e4()) + if (IsLinkArena()) { if ((data_ov000_021e24c0 >= 0) && (data_ov000_021e24c0 < 2) && (data_ov000_021e3320[data_ov000_021e24c0] != 1)) { @@ -1129,11 +1130,11 @@ EC void func_ov000_021a93d0(ProcPtr proc) s32 i; Unit * it; - if (!func_ov000_021a47e4()) + if (!IsLinkArena()) { for (i = 0; i < 2; i++) { - for (it = Force::Get(i)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(i)->head; it != NULL; it = it->next) { it->_0203bcf4(); func_ov000_021baafc(gMapStateManager->unk_14->unk_00, it, 0); @@ -1157,14 +1158,14 @@ EC void func_ov000_021a93d0(ProcPtr proc) { func_02014834(proc, GetText("MLink_OpponentSurrender"), 1, 1, 1, 1); - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { func_020127c4(0x574d5356, proc); } } else { - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { new (Proc_StartBlocking(ProcScr_ProcArenaSync, proc)) ProcArenaSync(); } @@ -1177,13 +1178,13 @@ EC void func_ov000_021a93d0(ProcPtr proc) EC void func_ov000_021a9550(ProcPtr proc) { - if (!func_ov000_021a47e4()) + if (!IsLinkArena()) { - GameCtrl_GotoLabel(0xc); + GameCtrl_GotoLabel(L_GAMECTRL_GAME_OVER); return; } - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { new (Proc_StartBlocking(ProcScr_ProcArenaSync, proc)) ProcArenaSync(); } @@ -1281,36 +1282,47 @@ PROC_LABEL(2), PROC_CALL(func_ov000_021a8e34), PROC_CALL(StartTurnRegenerateExec), PROC_CALL(EventCaller::TryStartTurnEventAlt), + PROC_LABEL(3), PROC_CALL(ProcSeq_SwitchPhases), PROC_LABEL(L_SEQUENCE_PLAYER_PHASE_START), PROC_CALL(StartPlayerPhase), - PROC_GOTO(7), + + PROC_GOTO(L_SEQUENCE_7), PROC_LABEL(L_SEQUENCE_CPU_PHASE_START), PROC_CALL(StartCpuPhase), - PROC_GOTO(7), + + PROC_GOTO(L_SEQUENCE_7), PROC_LABEL(L_SEQUENCE_LINK_START), PROC_CALL(StartProcLink), - PROC_GOTO(7), -PROC_LABEL(7), + PROC_GOTO(L_SEQUENCE_7), + +PROC_LABEL(L_SEQUENCE_7), PROC_CALL(func_ov000_021a8e84), PROC_CALL(func_ov000_021a8ff4), PROC_REPEAT(func_ov000_021a9044), PROC_CALL(func_ov000_021a9138), + PROC_GOTO(2), + PROC_LABEL(L_SEQUENCE_COMPLETE), PROC_REPEAT(func_ov000_021a9230), PROC_CALL(func_ov000_021a93d0), + PROC_GOTO(10), + PROC_LABEL(L_SEQUENCE_GAME_OVER), PROC_CALL(func_ov000_021a9550), + PROC_GOTO(10), + PROC_LABEL(10), PROC_CALL(func_ov000_021a8eec), + PROC_END }; @@ -1527,9 +1539,9 @@ EC struct Unit * func_ov000_021a995c(struct Unit * unit, s32 forceId) flag = (forceId == unit->force->id); forceId = unit->force->id; - if (unit->unk_3c != NULL) + if (unit->next != NULL) { - cur = unit->unk_3c; + cur = unit->next; } else { @@ -1564,7 +1576,7 @@ EC struct Unit * func_ov000_021a995c(struct Unit * unit, s32 forceId) } } - cur = cur->unk_3c; + cur = cur->next; if (unit == NULL && cur == NULL) { @@ -1590,7 +1602,7 @@ EC void func_ov000_021a9a48(void) s32 iVar3; s32 i; - if (!func_ov000_021a47e4()) + if (!IsLinkArena()) { if ((data_02196f0c->pCurrentMap->_pad_0x08[0] & 2) != 0) { @@ -1603,7 +1615,7 @@ EC void func_ov000_021a9a48(void) continue; } - for (it = Force::Get(i)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(i)->head; it != NULL; it = it->next) { iVar1++; } @@ -1629,7 +1641,7 @@ EC void func_ov000_021a9a48(void) continue; } - for (it = Force::Get(i)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(i)->head; it != NULL; it = it->next) { if (it->CheckAttribute(CA_BOSS)) { @@ -1672,7 +1684,7 @@ EC void func_ov000_021a9a48(void) continue; } - for (it = Force::Get(i)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(i)->head; it != NULL; it = it->next) { iVar3++; } @@ -1690,7 +1702,7 @@ EC void func_ov000_021a9a48(void) continue; } - for (it = Force::Get(i)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(i)->head; it != NULL; it = it->next) { iVar3++; } @@ -1747,7 +1759,7 @@ EC void func_ov000_021a9d98(Unit * unit) gActionSt->unk_2e = func_ov000_021a4854(unit); gActionSt->unitId = unit->unk_68; - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { gActionSt->func_ov000_021b0eb4(unit); } @@ -1803,7 +1815,7 @@ EC void func_ov000_021a9f98(void) { Unit * pUnit = gMapStateManager->unk_04->pUnit; - if (func_ov000_021a478c() && (gActionSt->func_ov000_021b0f1c(pUnit) == 0)) + if (IsWirelessBattle() && (gActionSt->func_ov000_021b0f1c(pUnit) == 0)) { gActionSt->actionId = ACTION_NONE; gActionSt->func_ov000_021b0eb4(GetUnit(gActionSt->unitId)); @@ -2096,7 +2108,7 @@ EC void func_ov000_021aa278(s32 param) return; } - if ((func_ov000_021a478c() != 0) && (func_020146c4(func_02012410()) != 0) && + if (IsWirelessBattle() && (func_020146c4(func_02012410()) != 0) && (func_020146c4((func_02012410() + 1) & 1) != 0)) { return; @@ -2466,7 +2478,7 @@ EC BOOL func_ov000_021ab180(s32 x, s32 y, s32 param_3) continue; } - for (it = Force::Get(forceId)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(forceId)->head; it != NULL; it = it->next) { if (it->state2 & US_DANGER_ZONE_ACTIVE) { @@ -3055,7 +3067,7 @@ EC void func_ov000_021ac218(void) EC void func_ov000_021ac644(void) { - if (func_ov000_021a478c() != 0) + if (IsWirelessBattle()) { func_ov000_021b0de8(0, 0, 0x1b, 0); func_02012b64(gActionSt, sizeof(ActionState)); @@ -3176,7 +3188,7 @@ EC void func_ov000_021ac8b4(void) gMapStateManager->cursor->isVisible = TRUE; gMapStateManager->inputHandler->SetButtonVisibility(0xf); - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_1, 0); data_ov000_021e3340->unk_02 = 0; @@ -3767,7 +3779,7 @@ EC void func_ov000_021adbf0(void) { gMapStateManager->cursor->isVisible = TRUE; - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_1, 1); data_ov000_021e3340->unk_02 = 0; @@ -3885,7 +3897,7 @@ EC void func_ov000_021adf20(void) EC void func_ov000_021adf58(void) { - if ((func_ov000_021a478c() == 0) && (func_0204b1f8(0) == 0)) + if (!IsWirelessBattle() && (func_0204b1f8(0) == 0)) { data_021974fc->unk_00 = 0; data_021974fc->unk_08 = 0; @@ -3894,12 +3906,11 @@ EC void func_ov000_021adf58(void) func_0204eb24(); } - Proc_Goto(gPlayerPhaseProc, 24, 1); - + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_24, 1); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; - if (!func_ov000_021a478c()) + if (IsWirelessBattle()) { func_ov000_021b0de8(0, 0, ACTION_END_TURN, 0); func_02012b64(gActionSt, sizeof(ActionState)); @@ -3908,16 +3919,15 @@ EC void func_ov000_021adf58(void) return; } -EC void func_ov000_021ae018(void) +EC void PlayerPhase_Surrender(void) { - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { func_ov000_021b0de8(0, 0, ACTION_SURRENDER, 0); func_02012b64(gActionSt, sizeof(ActionState)); } - Proc_Goto(gPlayerPhaseProc, 24, 0); - + Proc_Goto(gPlayerPhaseProc, L_PLAYERPHASE_24, 0); data_ov000_021e3340->unk_02 = 0; data_ov000_021e3340->unk_03 = 0; @@ -3930,13 +3940,9 @@ EC void func_ov000_021ae018(void) EC void func_ov000_021ae0a8(ProcPtr proc) { - s32 phase; - gMapStateManager->inputHandler->SetButtonVisibility(0); - - phase = data_ov000_021e3324->phase; - - gMapStateManager->cursor->SetUnk00And02(phase, gMapStateManager->cursor->xTile, gMapStateManager->cursor->yTile); + gMapStateManager->cursor->SetUnk00And02( + data_ov000_021e3324->phase, gMapStateManager->cursor->xTile, gMapStateManager->cursor->yTile); Proc_End(proc); @@ -4091,7 +4097,7 @@ PROC_LABEL(L_PLAYERPHASE_END_TURN), PROC_CALL(func_ov000_021adf58), PROC_LABEL(L_PLAYERPHASE_SURRENDER), - PROC_CALL(func_ov000_021ae018), + PROC_CALL(PlayerPhase_Surrender), PROC_LABEL(39), PROC_02, @@ -4386,7 +4392,7 @@ EC void CpuPhase_Loop_021ae72c(void) { Proc_Goto(gCpuPhaseProc, L_CPU_PHASE_END_TURN, 0); - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { func_ov000_021b0de8(0, 0, ACTION_END_TURN, 0); func_02012b64(gActionSt, sizeof(ActionState)); @@ -4549,7 +4555,7 @@ EC void StartCpuPhase(ProcPtr proc) { iVar3 = 0; - for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->unk_3c) + for (pUnit = Force::Get(data_ov000_021e3324->phase)->head; pUnit != NULL; pUnit = pUnit->next) { if (pUnit->state2 & (US_ACTED | US_UNK_5 | US_UNK_6 | US_ITEMS_TO_CONVOY)) { @@ -4566,7 +4572,7 @@ EC void StartCpuPhase(ProcPtr proc) if (iVar3 == 0) { - if (func_ov000_021a478c()) + if (IsWirelessBattle()) { func_ov000_021b0de8(0, 0, ACTION_END_TURN, 0); func_02012b64(gActionSt, sizeof(ActionState)); @@ -5069,7 +5075,7 @@ EC void ProcMind_ov000_021af79c(ProcEx * proc) playerPhaseProc = dynamic_cast((ProcEx *)func_020190cc((struct Proc *)proc)); - if (func_ov000_021a478c() != 0 && data_ov000_021e3320[data_ov000_021e3324->phase] != 3) + if (IsWirelessBattle() && data_ov000_021e3320[data_ov000_021e3324->phase] != 3) { if ((playerPhaseProc != NULL) && (data_ov000_021e3340->unk_06 & 1)) { diff --git a/src/ov000/map_state.cpp b/src/ov000/map_state.cpp index b770e9f..3405a27 100644 --- a/src/ov000/map_state.cpp +++ b/src/ov000/map_state.cpp @@ -386,7 +386,7 @@ void MapStateManager::func_ov000_021a2918(void) { s32 i; - if (func_ov000_021a478c() == 0) + if (!IsWirelessBattle()) { for (i = 0; i < 2; i++) { @@ -445,7 +445,7 @@ void MapStateManager::func_ov000_021a29f4(void) { force = Force::Get(i); - for (it = force->head; it != NULL; it = it->unk_3c) + for (it = force->head; it != NULL; it = it->next) { func_ov000_021baafc(gMapStateManager->unk_14->unk_00, it, 1); } @@ -711,7 +711,7 @@ EC void func_ov000_021a340c(void) for (i = 0; i < 2; i++) { force = Force::Get(i); - for (it = force->head; it != 0; it = it->unk_3c) + for (it = force->head; it != 0; it = it->next) { func_ov000_021a3498(it, 0, -1, -1); } @@ -804,7 +804,7 @@ EC void func_ov000_021a35a0(void) { force = Force::Get(i); - for (it = force->head; it != NULL; it = it->unk_3c) + for (it = force->head; it != NULL; it = it->next) { if (!TestPhaseAndState(it, phase)) { @@ -872,7 +872,7 @@ EC void func_ov000_021a378c(void) EC BOOL func_ov000_021a37b4(void) { - return ThreadProcExists(7); + return func_0201dc30(7); } EC void func_ov000_021a37c4(void) @@ -887,7 +887,7 @@ EC void func_ov000_021a37c4(void) func_020a5824(gMapStateManager->unk_db0, 0, 0x80); func_020a5824(gMapStateManager->unk_d30, 0, 0x80); - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { func_ov000_021a3a30(gMapStateManager->unk_d30, data_ov000_021e3324->unk_01); } @@ -912,7 +912,7 @@ EC void func_ov000_021a38b4(void) func_020a5824(gMapStateManager->unk_d30, 0, 0x80); - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { func_ov000_021a3a30(gMapStateManager->unk_d30, data_ov000_021e3324->unk_01); } @@ -947,7 +947,7 @@ EC void func_ov000_021a3974(u8 * arg_0, s32 arg_1) force = Force::Get(i); - for (it = force->head; it != NULL; it = it->unk_3c) + for (it = force->head; it != NULL; it = it->next) { if (!(it->state2 & (US_UNK_5 | US_NOT_PRESENT | US_HOVERED))) { @@ -1189,7 +1189,7 @@ EC void func_ov000_021a3ee4(struct Unit * unit, s32 arg_1) func_020a5734(0, gMapStateManager->unk_e30, 0x80); - if (func_ov000_021a47e4() != 0) + if (IsLinkArena()) { return; } @@ -1197,7 +1197,7 @@ EC void func_ov000_021a3ee4(struct Unit * unit, s32 arg_1) for (i = 0; i < 2; i++) { force = Force::Get(i); - for (it = force->head; it != NULL; it = it->unk_3c) + for (it = force->head; it != NULL; it = it->next) { if (gMapStateManager->unk_db0[(it->xPos | it->yPos << 5) >> 3] & ((1 << it->xPos) & 7)) { @@ -1288,7 +1288,7 @@ EC s32 GetMapBgmId(s32 factionId) return -1; } - if (data_02196f0c->state & GAME_STATE_UNK_6) + if (data_02196f0c->state & GAME_STATE_BATTLE_PREP) { return BGM_SYS_SINGEKI1; } @@ -1300,7 +1300,7 @@ EC s32 GetMapBgmId(s32 factionId) idx = 1; } - if (data_02196f0c->state & GAME_STATE_UNK_5) + if (data_02196f0c->state & GAME_STATE_WIRELESS_BATTLE) { if (data_ov000_021e3320[factionId] == 1) { @@ -1346,7 +1346,7 @@ EC BOOL AreAllEnemiesDefeated(u32 factionId) continue; } - for (it = Force::Get(i)->head; it != NULL; it = it->unk_3c) + for (it = Force::Get(i)->head; it != NULL; it = it->next) { count++; } @@ -1460,7 +1460,7 @@ EC void func_ov000_021a4718(void) EC BOOL func_ov000_021a471c(void) { - if (gMapStateManager == 0) + if (gMapStateManager == NULL) { return FALSE; } @@ -1488,14 +1488,14 @@ EC BOOL func_ov000_021a475c(void) return FALSE; } -EC BOOL func_ov000_021a478c(void) +EC BOOL IsWirelessBattle(void) { - return (data_02196f0c->state & GAME_STATE_UNK_5) != 0; + return (data_02196f0c->state & GAME_STATE_WIRELESS_BATTLE) != 0; } EC BOOL func_ov000_021a47ac(void) { - if (func_ov000_021a478c() == 0) + if (!IsWirelessBattle()) { return FALSE; } @@ -1508,15 +1508,15 @@ EC BOOL func_ov000_021a47ac(void) return func_02012584() != 0; } -EC BOOL func_ov000_021a47e4(void) +EC BOOL IsLinkArena(void) { - return (data_02196f0c->state & GAME_STATE_UNK_16) != 0; + return (data_02196f0c->state & GAME_STATE_LINK_ARENA) != 0; } /* NONMATCHING: https://decomp.me/scratch/VvUaN */ EC BOOL func_ov000_021a4804(void) { - if (func_ov000_021a47e4() == 0) + if (!IsLinkArena()) { return FALSE; } @@ -1595,12 +1595,12 @@ EC void func_ov000_021a48d8(void) EC BOOL func_ov000_021a491c(struct Unit * unit) { - if (func_ov000_021a478c() != 0) + if (IsWirelessBattle()) { return FALSE; } - if (func_ov000_021a47e4() != 0) + if (IsLinkArena()) { return FALSE; } diff --git a/src/ov000/map_unit_menu.cpp b/src/ov000/map_unit_menu.cpp index 5c736bd..8524844 100644 --- a/src/ov000/map_unit_menu.cpp +++ b/src/ov000/map_unit_menu.cpp @@ -3,11 +3,14 @@ #include "action.hpp" #include "event.hpp" #include "hardware.hpp" +#include "item.hpp" #include "map.hpp" #include "menu.hpp" #include "proc_ex.hpp" #include "unit.hpp" +#include "constants/terrains.h" + #include "unknown_types.hpp" extern struct UnkStruct_02196f24 * data_02196f24; @@ -24,7 +27,7 @@ EC void func_ov000_021bfa60(ProcPtr); EC void func_ov000_021bfaf0(ProcPtr); -EC BOOL func_ov000_021a47e4(void); +EC BOOL IsLinkArena(void); EC void func_ov000_021be21c(void); EC s32 func_ov000_021d49f4(s32, s32, s32); @@ -158,7 +161,7 @@ class MIU_Talk : public MenuItem s16 iy; Unit * unit; - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -901,7 +904,7 @@ class MIU_WeaponShop : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -954,7 +957,7 @@ class MIU_ItemShop : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -1007,22 +1010,22 @@ class MIU_SecretShop : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { - return 2; + return MENU_NOTSHOWN; } if (EventCaller::CanStartVisitEvent( gMapStateManager->unk_04->pUnit->xPos, gMapStateManager->unk_04->pUnit->yPos, 0xc)) { - if (gMapStateManager->unk_04->pUnit->GetItemAttributes(0x1000000) != 0) + if (gMapStateManager->unk_04->pUnit->GetItemAttributes(IA_MEMBER_CARD)) { - return 0; + return MENU_ENABLED; } } - return 2; + return MENU_NOTSHOWN; } /* 90 */ virtual void vfunc_90(Menu * menu, MenuItemState * menuItemState) @@ -1066,15 +1069,15 @@ class MIU_Arena : public MenuItem { s32 i; - if (func_ov000_021a47e4()) + if (IsLinkArena()) { - return 2; + return MENU_NOTSHOWN; } if (gMapStateManager - ->unk_828[gMapStateManager->unk_04->pUnit->xPos | gMapStateManager->unk_04->pUnit->yPos << 5] != 0x17) + ->unk_828[gMapStateManager->unk_04->pUnit->xPos | gMapStateManager->unk_04->pUnit->yPos << 5] != TERRAIN_ARENA) { - return 2; + return MENU_NOTSHOWN; } for (i = 0; i < 6; i++) @@ -1146,7 +1149,7 @@ class MIU_Transporter : public MenuItem s32 uy; Unit * unit; - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -1342,7 +1345,7 @@ class MIU_Save : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } @@ -1545,7 +1548,7 @@ class MIU_Lure : public MenuItem /* 14 */ virtual s32 vfunc_14(void) { - if (func_ov000_021a47e4()) + if (IsLinkArena()) { return MENU_NOTSHOWN; } diff --git a/src/ov000/target_select.cpp b/src/ov000/target_select.cpp index 0bd0957..89f18df 100644 --- a/src/ov000/target_select.cpp +++ b/src/ov000/target_select.cpp @@ -516,7 +516,7 @@ s32 TargetSelectState::_021b4ab4(void) } EC s32 func_02039400(s32, s32); -EC BOOL func_ov000_021a47e4(void); +EC BOOL IsLinkArena(void); void TargetSelectState::EnlistAttackTargets(void) { @@ -739,7 +739,7 @@ void TargetSelectState::EnlistTargets_021b53bc(void) dist = xDiff + yDiff; - if ((dist == 1) && (func_ov000_021a47e4() == 0)) + if ((dist == 1) && !IsLinkArena()) { personB = func_0203c378(unit)->pPersonData->pid; personA = func_0203c378(gMapStateManager->unk_04->pUnit)->pPersonData->pid; @@ -950,8 +950,9 @@ void TargetSelectState::EnlistTalkTargets(void) continue; } - if (func_ov000_021a47e4() != 0) + if (IsLinkArena()) { + // ?? continue; } diff --git a/src/ov005/prep_main_menu.cpp b/src/ov005/prep_main_menu.cpp index 9de558c..0e973f2 100644 --- a/src/ov005/prep_main_menu.cpp +++ b/src/ov005/prep_main_menu.cpp @@ -180,7 +180,7 @@ class MMenu : public ProcEx, public MMenuConst SallyMenu * unk_38; Button * unk_3c; Button * unk_40; - u32 unk_44; + ProcPtr unk_44; u32 unk_48; MMenu() diff --git a/src/ov005/prep_proc_02212d60.cpp b/src/ov005/prep_proc_02212d60.cpp index a7e0439..1c840c3 100644 --- a/src/ov005/prep_proc_02212d60.cpp +++ b/src/ov005/prep_proc_02212d60.cpp @@ -132,7 +132,7 @@ EC void func_ov005_02204d48(void) EC void func_ov005_02204dd0(s32 param_1) { - struct Unit * unit = Force::Get(0)->FindByAttribute(2); + struct Unit * unit = Force::Get(0)->FindByAttribute(CA_UNK_1); if (unit == NULL) { @@ -217,7 +217,7 @@ EC void func_ov005_02204fd0(void) gSoundManager->unk_a4->vfunc_38(0x20); } - data_02196f0c->state &= ~GAME_STATE_UNK_6; + data_02196f0c->state &= ~GAME_STATE_BATTLE_PREP; data_02196f0c->state &= ~GAME_STATE_UNK_18; data_02196f0c->state &= ~GAME_STATE_UNK_19; @@ -227,7 +227,7 @@ EC void func_ov005_02204fd0(void) for (i = 0; i < 2; i++) { - for (unit = Force::Get(i)->head; unit != NULL; unit = unit->unk_3c) + for (unit = Force::Get(i)->head; unit != NULL; unit = unit->next) { unit->state2 &= ~US_DANGER_ZONE_ACTIVE; } @@ -533,7 +533,7 @@ EC void func_ov005_022052d0(ProcPtr proc) return; } - data_02196f0c->state |= GAME_STATE_UNK_6; + data_02196f0c->state |= GAME_STATE_BATTLE_PREP; func_0204b790(); @@ -563,7 +563,7 @@ EC void func_ov005_022052d0(ProcPtr proc) EC void func_ov005_022053cc(ProcPtr proc) { - data_02196f0c->state |= GAME_STATE_UNK_6; + data_02196f0c->state |= GAME_STATE_BATTLE_PREP; func_0204b790(); diff --git a/src/ov008/title_seq.cpp b/src/ov008/title_seq.cpp index cf93872..7e724fe 100644 --- a/src/ov008/title_seq.cpp +++ b/src/ov008/title_seq.cpp @@ -4,6 +4,7 @@ #include "unknown_funcs.h" +#include "gamectrl.hpp" #include "hardware.hpp" #include "proc_ex.hpp" #include "sound_manager.hpp" @@ -277,7 +278,7 @@ EC void TitleSeq_ov008_0220508c(ProcPtr proc) return; case 0: - GameCtrl_GotoLabel(3); + GameCtrl_GotoLabel(L_GAMECTRL_3); Proc_End(proc); return; } diff --git a/src/unit.cpp b/src/unit.cpp index 0ae2ecb..0cfdaf7 100644 --- a/src/unit.cpp +++ b/src/unit.cpp @@ -590,9 +590,9 @@ Unit * Unit::_0203bdd0(u8 arg_1) s32 i; Force * force; - if (this->unk_3c != NULL) + if (this->next != NULL) { - return this->unk_3c; + return this->next; } for (i = this->force->id + 1; i < 6; i++)