From 7dca5b4f47e18994bc9cd93c77ef505ec41c848b Mon Sep 17 00:00:00 2001 From: VicSevenT Date: Thu, 8 Jan 2026 18:35:32 -0600 Subject: [PATCH] Document Frontier scenes (#880) --- include/overlay104/ov104_0222EA90.h | 19 +- src/overlay104/ov104_0222E63C.c | 12 +- src/overlay104/ov104_0222EA90.c | 578 +++++++++++++++------------- src/overlay104/ov104_0223C2D4.c | 85 ++-- 4 files changed, 373 insertions(+), 321 deletions(-) diff --git a/include/overlay104/ov104_0222EA90.h b/include/overlay104/ov104_0222EA90.h index 2f221a9498..ee53127817 100644 --- a/include/overlay104/ov104_0222EA90.h +++ b/include/overlay104/ov104_0222EA90.h @@ -3,7 +3,24 @@ #include "overlay104/struct_ov104_0223C4CC_decl.h" -int ov104_0222EA90(int param0, int param1); +enum FrontierSceneParam { + FR_SCENE_BGMODE = 0, + FR_SCENE_SCRIPT_ID, + FR_SCENE_BANK_ID, + FR_SCENE_BGM_ID, + FR_SCENE_SCREEN_SIZE, + FR_SCENE_NARC_ID, + FR_SCENE_TILEMAP_IDX, + FR_SCENE_TILES_IDX, + FR_SCENE_PLTT_IDX, + FR_SCENE_SUB_TILEMAP_IDX, + FR_SCENE_SUB_TILES_IDX, + FR_SCENE_SUB_PLTT_IDX, + FR_SCENE_FLAG_1, + FR_SCENE_FLAG_2, +}; + +int GetFrontierSceneValue(int scene, enum FrontierSceneParam sceneParam); void ov104_0222EB8C(UnkStruct_ov104_0223C4CC *param0, void **param1, int param2); void ov104_0222EBA4(UnkStruct_ov104_0223C4CC *param0, void **param1, int param2); diff --git a/src/overlay104/ov104_0222E63C.c b/src/overlay104/ov104_0222E63C.c index 6ffe5bbe7d..76dc00a8b6 100644 --- a/src/overlay104/ov104_0222E63C.c +++ b/src/overlay104/ov104_0222E63C.c @@ -155,11 +155,11 @@ static void ov104_0222E82C(UnkStruct_ov104_022320B4 *param0, u16 param1, u32 *pa static void ov104_0222E830(u8 **param0, MessageLoader **param1, int param2, int heapID) { - int v0 = ov104_0222EA90(param2, 1); - int v1 = ov104_0222EA90(param2, 2); + int scriptID = GetFrontierSceneValue(param2, FR_SCENE_SCRIPT_ID); + int bankID = GetFrontierSceneValue(param2, FR_SCENE_BANK_ID); - *param0 = NARC_AllocAndReadWholeMemberByIndexPair(NARC_INDEX_FRONTIER__SCRIPT__FR_SCRIPT, v0, heapID); - *param1 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, v1, heapID); + *param0 = NARC_AllocAndReadWholeMemberByIndexPair(NARC_INDEX_FRONTIER__SCRIPT__FR_SCRIPT, scriptID, heapID); + *param1 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, bankID, heapID); } void ov104_0222E86C(UnkStruct_ov104_022320B4 *param0, int param1, int heapID) @@ -169,8 +169,8 @@ void ov104_0222E86C(UnkStruct_ov104_022320B4 *param0, int param1, int heapID) int v2, v3; MessageLoader *v4; - v2 = ov104_0222EA90(param0->unk_52, 2); - v3 = ov104_0222EA90(param1, 2); + v2 = GetFrontierSceneValue(param0->unk_52, FR_SCENE_BANK_ID); + v3 = GetFrontierSceneValue(param1, FR_SCENE_BANK_ID); if (v2 == v3) { return; diff --git a/src/overlay104/ov104_0222EA90.c b/src/overlay104/ov104_0222EA90.c index a3abeb77c0..a193f8f754 100644 --- a/src/overlay104/ov104_0222EA90.c +++ b/src/overlay104/ov104_0222EA90.c @@ -1,7 +1,9 @@ #include "overlay104/ov104_0222EA90.h" #include -#include + +#include "generated/sdat.h" +#include "generated/text_banks.h" #include "overlay104/ov104_0223C164.h" #include "overlay104/ov104_0223D9E4.h" @@ -13,27 +15,67 @@ #include "res/field/frontier_scripts/fr_script.naix.h" +// TODO Replace and remove these once frontier_bg.narc is unpacked +#define BATTLE_FACTORY_TILES 0 +#define BATTLE_FACTORY_BATTLE_ROOM_TILEMAP 1 +#define BATTLE_FACTORY_CORRIDOR_TILEMAP 2 +#define BATTLE_FACTORY_CORRIDOR_FLOOR_TILEMAP 3 +#define BATTLE_HALL_BATTLE_ROOM_TILES 14 +#define BATTLE_HALL_CORRIDOR_TILES 16 +#define BATTLE_HALL_CORRIDOR_TILEMAP 17 +#define BATTLE_HALL_BATTLE_ROOM_LIGHTS_TILES 19 +#define BATTLE_HALL_BATTLE_ROOM_TILEMAP 20 +#define BATTLE_HALL_BATTLE_ROOM_LIGHTS_TILEMAP 22 +#define BATTLE_CASTLE_CORRIDOR_TILES 25 +#define BATTLE_CASTLE_CORRIDOR_TILEMAP 26 +#define BATTLE_CASTLE_BATTLE_ROOM_TILES 29 +#define BATTLE_CASTLE_BATTLE_ROOM_TILEMAP 30 +#define BATTLE_CASTLE_BATTLE_ROOM_CURTAINS_TILEMAP 33 +#define BATTLE_TOWER_TILES 45 +#define BATTLE_TOWER_MULTI_BATTLE_ROOM_TILEMAP 46 +#define BATTLE_TOWER_MULTI_CORRIDOR_TILEMAP 47 +#define BATTLE_TOWER_MULTI_CORRIDOR_FG_TILEMAP 48 +#define BATTLE_TOWER_BATTLE_ROOM_TILEMAP 49 +#define BATTLE_TOWER_CORRIDOR_TILEMAP 50 +#define BATTLE_TOWER_CORRIDOR_FG_TILEMAP 51 +#define BATTLE_ARCADE_BATTLE_ROOM_TILEMAP 52 +#define BATTLE_ARCADE_BATTLE_ROOM_TILES 54 +#define BATTLE_ARCADE_CORRIDOR_TILEMAP 55 +#define BATTLE_ARCADE_CORRIDOR_TILES 56 +#define BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_TILEMAP 57 +#define BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_TILES 89 +#define BATTLE_FACTORY_PLTT 129 +#define BATTLE_HALL_BATTLE_ROOM_PLTT 131 +#define BATTLE_HALL_CORRIDOR_PLTT 132 +#define BATTLE_HALL_BATTLE_ROOM_LIGHTS_PLTT 133 +#define BATTLE_CASTLE_CORRIDOR_PLTT 135 +#define BATTLE_CASTLE_BATTLE_ROOM_PLTT 140 +#define BATTLE_TOWER_PLTT 141 +#define BATTLE_ARCADE_BATTLE_ROOM_PLTT 142 +#define BATTLE_ARCADE_CORRIDOR_PLTT 143 +#define BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_PLTT 169 + typedef void (*UnkFuncPtr_ov104_0223F394)(UnkStruct_ov104_0223C4CC *, void **); -typedef struct { - int unk_00; +typedef struct FrontierScene { + GXBGMode bgMode; UnkFuncPtr_ov104_0223F394 unk_04; UnkFuncPtr_ov104_0223F394 unk_08; - u16 unk_0C; - u16 unk_0E; - u16 unk_10; - u16 unk_12; + u16 scriptID; + u16 textBankID; + u16 bgmID; + u16 screenSize; u16 narcID; - u16 unk_16; - u16 unk_18; - u16 unk_1A; - u16 unk_1C; - u16 unk_1E; - u16 unk_20; + u16 tilemapIdx; + u16 tilesIdx; + u16 plttIdx; + u16 subTilemapIdx; + u16 subTilesIdx; + u16 subPlttIdx; u8 unk_22; u8 unk_23; - u8 unk_24[2]; -} UnkStruct_ov104_0223F394; + u16 unused; +} FrontierScene; static void ov104_0222EBBC(UnkStruct_ov104_0223C4CC *param0, void **param1); static void ov104_0222EBCC(UnkStruct_ov104_0223C4CC *param0, void **param1); @@ -52,346 +94,346 @@ static void ov104_0222ECA0(UnkStruct_ov104_0223C4CC *param0, void **param1); static void ov104_0222ECAC(UnkStruct_ov104_0223C4CC *param0, void **param1); static void ov104_0222ECE4(UnkStruct_ov104_0223C4CC *param0, void **param1); -static const UnkStruct_ov104_0223F394 Unk_ov104_0223F394[] = { +static const FrontierScene sFrontierScenes[] = { { - GX_BGMODE_0, + .bgMode = GX_BGMODE_0, ov104_0222EBBC, ov104_0222EBCC, 0x4, - 0xCC, - 0x444, - 0x3, + .textBankID = 204, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_512x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x1, - 0x0, - 0x81, - 0x3, - 0x0, - 0x81, - 0x0, - 0x1, + .tilemapIdx = BATTLE_FACTORY_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_FACTORY_TILES, + .plttIdx = BATTLE_FACTORY_PLTT, + .subTilemapIdx = BATTLE_FACTORY_CORRIDOR_FLOOR_TILEMAP, + .subTilesIdx = BATTLE_FACTORY_TILES, + .subPlttIdx = BATTLE_FACTORY_PLTT, + .unk_22 = 0, + .unk_23 = 1, }, { - GX_BGMODE_0, + .bgMode = GX_BGMODE_0, NULL, NULL, 0x0, - 0xCC, - 0x444, - 0x3, + .textBankID = 0xCC, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_512x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x2, - 0x0, - 0x81, - 0xffff, - 0xffff, - 0xffff, - 0x0, - 0x1, + .tilemapIdx = BATTLE_FACTORY_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_FACTORY_TILES, + .plttIdx = BATTLE_FACTORY_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 0, + .unk_23 = 1, }, { - GX_BGMODE_0, + .bgMode = GX_BGMODE_0, NULL, NULL, 0x5, - 0xCE, - 0x444, - 0x3, + .textBankID = 206, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_512x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x1, - 0x0, - 0x81, - 0xffff, - 0xffff, - 0xffff, - 0x0, - 0x1, + .tilemapIdx = BATTLE_FACTORY_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_FACTORY_TILES, + .plttIdx = BATTLE_FACTORY_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 0, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222EC5C, ov104_0222EC70, - frontier_scripts_battle_factory, - 0x16D, - 0x4AB, - 0x4, + .scriptID = frontier_scripts_battle_factory, + .textBankID = TEXT_BANK_UNK_0365, + .bgmID = SEQ_PL_BF_FACTORY, + .screenSize = BG_SCREEN_SIZE_512x512, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x2, - 0x0, - 0x81, - 0x3, - 0x0, - 0x81, - 0x1, - 0x0, + .tilemapIdx = BATTLE_FACTORY_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_FACTORY_TILES, + .plttIdx = BATTLE_FACTORY_PLTT, + .subTilemapIdx = BATTLE_FACTORY_CORRIDOR_FLOOR_TILEMAP, + .subTilesIdx = BATTLE_FACTORY_TILES, + .subPlttIdx = BATTLE_FACTORY_PLTT, + .unk_22 = 1, + .unk_23 = 0, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222EC74, ov104_0222EC8C, - frontier_scripts_battle_factory, - 0x16D, - 0x4AB, - 0x1, + .scriptID = frontier_scripts_battle_factory, + .textBankID = TEXT_BANK_UNK_0365, + .bgmID = SEQ_PL_BF_FACTORY, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x1, - 0x0, - 0x81, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = BATTLE_FACTORY_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_FACTORY_TILES, + .plttIdx = BATTLE_FACTORY_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_tower_corridor, - 0x130, - 0x444, - 0x4, + .scriptID = frontier_scripts_battle_tower_corridor, + .textBankID = TEXT_BANK_BATTLE_TOWER, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_512x512, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x32, - 0x2D, - 0x8D, - 0x33, - 0x2D, - 0x8D, - 0x1, - 0x1, + .tilemapIdx = BATTLE_TOWER_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_TOWER_TILES, + .plttIdx = BATTLE_TOWER_PLTT, + .subTilemapIdx = BATTLE_TOWER_CORRIDOR_FG_TILEMAP, + .subTilesIdx = BATTLE_TOWER_TILES, + .subPlttIdx = BATTLE_TOWER_PLTT, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_tower_corridor_multi, - 0x130, - 0x444, - 0x4, + .scriptID = frontier_scripts_battle_tower_corridor_multi, + .textBankID = TEXT_BANK_BATTLE_TOWER, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_512x512, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x2F, - 0x2D, - 0x8D, - 0x30, - 0x2D, - 0x8D, - 0x1, - 0x1, + .tilemapIdx = BATTLE_TOWER_MULTI_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_TOWER_TILES, + .plttIdx = BATTLE_TOWER_PLTT, + .subTilemapIdx = BATTLE_TOWER_MULTI_CORRIDOR_FG_TILEMAP, + .subTilesIdx = BATTLE_TOWER_TILES, + .subPlttIdx = BATTLE_TOWER_PLTT, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_tower_battle_room, - 0x131, - 0x444, - 0x1, + .scriptID = frontier_scripts_battle_tower_battle_room, + .textBankID = TEXT_BANK_BATTLE_TOWER_BATTLE_ROOM, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x31, - 0x2D, - 0x8D, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = BATTLE_TOWER_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_TOWER_TILES, + .plttIdx = BATTLE_TOWER_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_tower_multi_battle_room, - 0x132, - 0x444, - 0x1, + .scriptID = frontier_scripts_battle_tower_multi_battle_room, + .textBankID = TEXT_BANK_BATTLE_TOWER_MULTI_BATTLE_ROOM, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x2E, - 0x2D, - 0x8D, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = BATTLE_TOWER_MULTI_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_TOWER_TILES, + .plttIdx = BATTLE_TOWER_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_hall, - 0x225, - 0x4A8, - 0x1, + .scriptID = frontier_scripts_battle_hall, + .textBankID = TEXT_BANK_UNK_0549, + .bgmID = SEQ_PL_BF_STAGE, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x11, - 0x10, - 0x84, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = BATTLE_HALL_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_HALL_CORRIDOR_TILES, + .plttIdx = BATTLE_HALL_CORRIDOR_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222EBD8, ov104_0222EC0C, - frontier_scripts_battle_hall, - 0x225, - 0x4A8, - 0x4, + .scriptID = frontier_scripts_battle_hall, + .textBankID = TEXT_BANK_UNK_0549, + .bgmID = SEQ_PL_BF_STAGE, + .screenSize = BG_SCREEN_SIZE_512x512, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x14, - 0xE, - 0x83, - 0x16, - 0x13, - 0x85, - 0x1, - 0x1, + .tilemapIdx = BATTLE_HALL_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_HALL_BATTLE_ROOM_TILES, + .plttIdx = BATTLE_HALL_BATTLE_ROOM_PLTT, + .subTilemapIdx = BATTLE_HALL_BATTLE_ROOM_LIGHTS_TILEMAP, + .subTilesIdx = BATTLE_HALL_BATTLE_ROOM_LIGHTS_TILES, + .subPlttIdx = BATTLE_HALL_BATTLE_ROOM_LIGHTS_PLTT, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_castle, - 0xC8, - 0x4A9, - 0x4, + .scriptID = frontier_scripts_battle_castle, + .textBankID = TEXT_BANK_BATTLE_CASTLE2, + .bgmID = SEQ_PL_BF_CASTLE, + .screenSize = BG_SCREEN_SIZE_512x512, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x1A, - 0x19, - 0x87, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = BATTLE_CASTLE_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_CASTLE_CORRIDOR_TILES, + .plttIdx = BATTLE_CASTLE_CORRIDOR_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222ECAC, ov104_0222ECE4, - frontier_scripts_battle_castle, - 0xC8, - 0x4A9, - 0x1, + .scriptID = frontier_scripts_battle_castle, + .textBankID = TEXT_BANK_BATTLE_CASTLE2, + .bgmID = SEQ_PL_BF_CASTLE, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x1E, - 0x1D, - 0x8C, - 0x21, - 0x1D, - 0x8C, - 0x1, - 0x1, + .tilemapIdx = BATTLE_CASTLE_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_CASTLE_BATTLE_ROOM_TILES, + .plttIdx = BATTLE_CASTLE_BATTLE_ROOM_PLTT, + .subTilemapIdx = BATTLE_CASTLE_BATTLE_ROOM_CURTAINS_TILEMAP, + .subTilesIdx = BATTLE_CASTLE_BATTLE_ROOM_TILES, + .subPlttIdx = BATTLE_CASTLE_BATTLE_ROOM_PLTT, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, NULL, NULL, - frontier_scripts_battle_castle, - 0xC8, - 0x4A9, - 0x1, + .scriptID = frontier_scripts_battle_castle, + .textBankID = TEXT_BANK_BATTLE_CASTLE2, + .bgmID = SEQ_PL_BF_CASTLE, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x1C, - 0x1B, - 0x88, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = 28, + .tilesIdx = 27, + .plttIdx = 136, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222EC90, ov104_0222ECA0, - frontier_scripts_unknown_10, - 0xF, - 0x444, - 0x1, + .scriptID = frontier_scripts_unknown_10, + .textBankID = TEXT_BANK_UNK_0015, + .bgmID = SEQ_BF_TOWWER, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x80, - 0x7F, - 0xAC, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = 128, + .tilesIdx = 127, + .plttIdx = 172, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222EC18, ov104_0222EC1C, - frontier_scripts_battle_arcade, - 0x219, - 0x4A7, - 0x1, + .scriptID = frontier_scripts_battle_arcade, + .textBankID = TEXT_BANK_UNK_0537, + .bgmID = SEQ_PL_BF_ROULETTE, + .screenSize = BG_SCREEN_SIZE_256x256, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x37, - 0x38, - 0x8F, - 0xffff, - 0xffff, - 0xffff, - 0x1, - 0x1, + .tilemapIdx = BATTLE_ARCADE_CORRIDOR_TILEMAP, + .tilesIdx = BATTLE_ARCADE_CORRIDOR_TILES, + .plttIdx = BATTLE_ARCADE_CORRIDOR_PLTT, + .subTilemapIdx = -1, + .subTilesIdx = -1, + .subPlttIdx = -1, + .unk_22 = 1, + .unk_23 = 1, }, { - GX_BGMODE_5, + .bgMode = GX_BGMODE_5, ov104_0222EC20, ov104_0222EC58, - frontier_scripts_battle_arcade, - 0x219, - 0x4A7, - 0x4, + .scriptID = frontier_scripts_battle_arcade, + .textBankID = TEXT_BANK_UNK_0537, + .bgmID = SEQ_PL_BF_ROULETTE, + .screenSize = BG_SCREEN_SIZE_512x512, .narcID = NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, - 0x34, - 0x36, - 0x8E, - 0x39, - 0x59, - 0xA9, - 0x1, - 0x1, + .tilemapIdx = BATTLE_ARCADE_BATTLE_ROOM_TILEMAP, + .tilesIdx = BATTLE_ARCADE_BATTLE_ROOM_TILES, + .plttIdx = BATTLE_ARCADE_BATTLE_ROOM_PLTT, + .subTilemapIdx = BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_TILEMAP, + .subTilesIdx = BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_TILES, + .subPlttIdx = BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_PLTT, + .unk_22 = 1, + .unk_23 = 1, }, }; -int ov104_0222EA90(int param0, int param1) +int GetFrontierSceneValue(int scene, enum FrontierSceneParam sceneParam) { - switch (param1) { - case 0: - return Unk_ov104_0223F394[param0].unk_00; - case 1: - return Unk_ov104_0223F394[param0].unk_0C; - case 2: - return Unk_ov104_0223F394[param0].unk_0E; - case 3: - return Unk_ov104_0223F394[param0].unk_10; - case 4: - return Unk_ov104_0223F394[param0].unk_12; - case 5: - return Unk_ov104_0223F394[param0].narcID; - case 6: - return Unk_ov104_0223F394[param0].unk_16; - case 7: - return Unk_ov104_0223F394[param0].unk_18; - case 8: - return Unk_ov104_0223F394[param0].unk_1A; - case 9: - return Unk_ov104_0223F394[param0].unk_1C; - case 10: - return Unk_ov104_0223F394[param0].unk_1E; - case 11: - return Unk_ov104_0223F394[param0].unk_20; - case 12: - return Unk_ov104_0223F394[param0].unk_22; - case 13: - return Unk_ov104_0223F394[param0].unk_23; + switch (sceneParam) { + case FR_SCENE_BGMODE: + return sFrontierScenes[scene].bgMode; + case FR_SCENE_SCRIPT_ID: + return sFrontierScenes[scene].scriptID; + case FR_SCENE_BANK_ID: + return sFrontierScenes[scene].textBankID; + case FR_SCENE_BGM_ID: + return sFrontierScenes[scene].bgmID; + case FR_SCENE_SCREEN_SIZE: + return sFrontierScenes[scene].screenSize; + case FR_SCENE_NARC_ID: + return sFrontierScenes[scene].narcID; + case FR_SCENE_TILEMAP_IDX: + return sFrontierScenes[scene].tilemapIdx; + case FR_SCENE_TILES_IDX: + return sFrontierScenes[scene].tilesIdx; + case FR_SCENE_PLTT_IDX: + return sFrontierScenes[scene].plttIdx; + case FR_SCENE_SUB_TILEMAP_IDX: + return sFrontierScenes[scene].subTilemapIdx; + case FR_SCENE_SUB_TILES_IDX: + return sFrontierScenes[scene].subTilesIdx; + case FR_SCENE_SUB_PLTT_IDX: + return sFrontierScenes[scene].subPlttIdx; + case FR_SCENE_FLAG_1: + return sFrontierScenes[scene].unk_22; + case FR_SCENE_FLAG_2: + return sFrontierScenes[scene].unk_23; } GF_ASSERT(0); @@ -400,15 +442,15 @@ int ov104_0222EA90(int param0, int param1) void ov104_0222EB8C(UnkStruct_ov104_0223C4CC *param0, void **param1, int param2) { - if (Unk_ov104_0223F394[param2].unk_04 != NULL) { - Unk_ov104_0223F394[param2].unk_04(param0, param1); + if (sFrontierScenes[param2].unk_04 != NULL) { + sFrontierScenes[param2].unk_04(param0, param1); } } void ov104_0222EBA4(UnkStruct_ov104_0223C4CC *param0, void **param1, int param2) { - if (Unk_ov104_0223F394[param2].unk_08 != NULL) { - Unk_ov104_0223F394[param2].unk_08(param0, param1); + if (sFrontierScenes[param2].unk_08 != NULL) { + sFrontierScenes[param2].unk_08(param0, param1); } } diff --git a/src/overlay104/ov104_0223C2D4.c b/src/overlay104/ov104_0223C2D4.c index bf62d76612..373330ecf6 100644 --- a/src/overlay104/ov104_0223C2D4.c +++ b/src/overlay104/ov104_0223C2D4.c @@ -179,7 +179,7 @@ UnkStruct_ov104_0223C4CC *ov104_0223C2D4(UnkStruct_0209B75C *param0) GXLayers_TurnBothDispOn(); GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1); GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, 1); - Sound_SetSceneAndPlayBGM(SOUND_SCENE_FIELD, ov104_0222EA90(v2, 3), 1); + Sound_SetSceneAndPlayBGM(SOUND_SCENE_FIELD, GetFrontierSceneValue(v2, FR_SCENE_BGM_ID), 1); RenderControlFlags_SetAutoScrollFlags(AUTO_SCROLL_ENABLED); RenderControlFlags_SetCanABSpeedUpPrint(FALSE); @@ -384,7 +384,7 @@ static void ov104_0223C798(UnkStruct_ov104_0223C4CC *param0) int v0; UnkStruct_ov104_02230BE4 *v1 = sub_0209B970(param0->unk_08); - v0 = ov104_0222EA90(v1->unk_24, 12); + v0 = GetFrontierSceneValue(v1->unk_24, FR_SCENE_FLAG_1); switch (v0) { case 0: @@ -393,7 +393,7 @@ static void ov104_0223C798(UnkStruct_ov104_0223C4CC *param0) ov63_0222D228(param0->unk_24, ¶m0->unk_1C); } - if ((param0->unk_28 != NULL) && (ov104_0222EA90(v1->unk_24, 13) == 1)) { + if ((param0->unk_28 != NULL) && (GetFrontierSceneValue(v1->unk_24, FR_SCENE_FLAG_2) == 1)) { ov63_0222D228(param0->unk_28, ¶m0->unk_1C); } break; @@ -416,7 +416,7 @@ static void ov104_0223C7EC(UnkStruct_ov104_0223C4CC *param0) Bg_ScheduleScroll(param0->unk_00, 3, 0, v0); Bg_ScheduleScroll(param0->unk_00, 3, 3, v1); - if ((ov104_0222EA90(v2->unk_24, 9) != 0xffff) && (ov104_0222EA90(v2->unk_24, 13) == 1)) { + if ((GetFrontierSceneValue(v2->unk_24, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) && (GetFrontierSceneValue(v2->unk_24, FR_SCENE_FLAG_2) == 1)) { Bg_ScheduleScroll(param0->unk_00, 2, 0, v0); Bg_ScheduleScroll(param0->unk_00, 2, 3, v1); } @@ -443,7 +443,7 @@ static void ov104_0223C8E8(UnkStruct_ov104_0223C4CC *param0) static void ov104_0223C948(BgConfig *param0, int param1) { - int v0 = ov104_0222EA90(param1, 0); + GXBGMode bgMode = GetFrontierSceneValue(param1, FR_SCENE_BGMODE); GXLayers_DisableEngineALayers(); { @@ -476,7 +476,7 @@ static void ov104_0223C948(BgConfig *param0, int param1) GX_BG0_AS_3D }; - v2.mainBgMode = v0; + v2.mainBgMode = bgMode; SetAllGraphicsModes(&v2); } @@ -525,23 +525,22 @@ static void ov104_0223C948(BgConfig *param0, int param1) .mosaic = FALSE, }, }; - u16 v4; - if (v0 == GX_BGMODE_0) { + if (bgMode == GX_BGMODE_0) { v3[1].colorMode = GX_BG_COLORMODE_16; v3[2].colorMode = GX_BG_COLORMODE_16; v3[1].bgExtPltt = GX_BG_EXTPLTT_01; v3[2].bgExtPltt = GX_BG_EXTPLTT_01; } - v4 = ov104_0222EA90(param1, 4); - v3[2].screenSize = v4; + u16 screenSize = GetFrontierSceneValue(param1, FR_SCENE_SCREEN_SIZE); + v3[2].screenSize = screenSize; - if (ov104_0222EA90(param1, 9) != 0xffff) { - v3[1].screenSize = v4; + if (GetFrontierSceneValue(param1, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { + v3[1].screenSize = screenSize; } - if (v0 == GX_BGMODE_0) { + if (bgMode == GX_BGMODE_0) { Bg_InitFromTemplate(param0, BG_LAYER_MAIN_1, &v3[0], 0); Bg_ClearTilemap(param0, BG_LAYER_MAIN_1); Bg_SetOffset(param0, BG_LAYER_MAIN_1, 0, 0); @@ -651,16 +650,16 @@ static void ov104_0223CC74(UnkStruct_ov104_0223C4CC *param0, int param1, const T }; int v1; - v0.narcID = ov104_0222EA90(param1, 5); - v0.unk_09 = ov104_0222EA90(param1, 6); - v1 = ov104_0222EA90(param1, 12); + v0.narcID = GetFrontierSceneValue(param1, FR_SCENE_NARC_ID); + v0.unk_09 = GetFrontierSceneValue(param1, FR_SCENE_TILEMAP_IDX); + v1 = GetFrontierSceneValue(param1, FR_SCENE_FLAG_1); if (v1 == 0) { param0->unk_24 = ov63_0222D1C0(SpriteSystem_GetRenderer(param0->unk_34.unk_00), param0->unk_00, &v0, HEAP_ID_94); } - if (ov104_0222EA90(param1, 9) != 0xffff) { - v0.unk_09 = ov104_0222EA90(param1, 9); + if (GetFrontierSceneValue(param1, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { + v0.unk_09 = GetFrontierSceneValue(param1, FR_SCENE_SUB_TILEMAP_IDX); v0.unk_01 = 2; v0.unk_03 = (GX_BG_SCRBASE_0x0800); v0.unk_04 = (GX_BG_CHARBASE_0x20000); @@ -678,57 +677,51 @@ static void ov104_0223CC74(UnkStruct_ov104_0223C4CC *param0, int param1, const T ov63_0222BD50(param0->unk_18, Unk_ov104_022413D8); { - u32 narcID; - NARC *v3; - int v4 = ov104_0222EA90(param1, 0); + GXBGMode bgMode = GetFrontierSceneValue(param1, FR_SCENE_BGMODE); - narcID = ov104_0222EA90(param1, 5); - v3 = NARC_ctor(narcID, HEAP_ID_94); + u32 narcID = GetFrontierSceneValue(param1, FR_SCENE_NARC_ID); + NARC *narc = NARC_ctor(narcID, HEAP_ID_94); - Graphics_LoadTilesToBgLayerFromOpenNARC(v3, ov104_0222EA90(param1, 7), param0->unk_00, 3, 0, 0, 1, HEAP_ID_94); + Graphics_LoadTilesToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(param1, FR_SCENE_TILES_IDX), param0->unk_00, 3, 0, 0, 1, HEAP_ID_94); - if (v4 == GX_BGMODE_0) { - PaletteData_LoadBufferFromFileStart(param0->unk_04, narcID, ov104_0222EA90(param1, 8), 94, 0, (10 - 0 + 1) * 0x20, 0 * 16); + if (bgMode == GX_BGMODE_0) { + PaletteData_LoadBufferFromFileStart(param0->unk_04, narcID, GetFrontierSceneValue(param1, FR_SCENE_PLTT_IDX), 94, 0, (10 - 0 + 1) * 0x20, 0 * 16); } else { - NNSG2dPaletteData *v5; - void *v6; + NNSG2dPaletteData *plttData; - v6 = Graphics_GetPlttDataFromOpenNARC(v3, ov104_0222EA90(param1, 8), &v5, HEAP_ID_94); - DC_FlushRange(v5->pRawData, v5->szByte); + void *pltt = Graphics_GetPlttDataFromOpenNARC(narc, GetFrontierSceneValue(param1, FR_SCENE_PLTT_IDX), &plttData, HEAP_ID_94); + DC_FlushRange(plttData->pRawData, plttData->szByte); GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(v5->pRawData, 0x6000, 0x2000); + GX_LoadBGExtPltt(plttData->pRawData, 0x6000, 0x2000); GX_EndLoadBGExtPltt(); - Heap_Free(v6); + Heap_Free(pltt); } PaletteData_FillBufferRange(param0->unk_04, 0, 2, 0x0, 0, 1); - Graphics_LoadTilemapToBgLayerFromOpenNARC(v3, ov104_0222EA90(param1, 6), param0->unk_00, 3, 0, 0, 1, HEAP_ID_94); + Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(param1, FR_SCENE_TILEMAP_IDX), param0->unk_00, 3, 0, 0, 1, HEAP_ID_94); - if (ov104_0222EA90(param1, 9) != 0xffff) { - Graphics_LoadTilesToBgLayerFromOpenNARC(v3, ov104_0222EA90(param1, 10), param0->unk_00, 2, 0, 0, 1, HEAP_ID_94); - Graphics_LoadTilemapToBgLayerFromOpenNARC(v3, ov104_0222EA90(param1, 9), param0->unk_00, 2, 0, 0, 1, HEAP_ID_94); + if (GetFrontierSceneValue(param1, FR_SCENE_SUB_TILEMAP_IDX) != 0xffff) { + Graphics_LoadTilesToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(param1, FR_SCENE_SUB_TILES_IDX), param0->unk_00, 2, 0, 0, 1, HEAP_ID_94); + Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, GetFrontierSceneValue(param1, FR_SCENE_SUB_TILEMAP_IDX), param0->unk_00, 2, 0, 0, 1, HEAP_ID_94); - if (v4 == GX_BGMODE_0) { - (void)0; - } else { - NNSG2dPaletteData *v7; - void *v8; + if (bgMode != GX_BGMODE_0) { + NNSG2dPaletteData *plttData; - v8 = Graphics_GetPlttDataFromOpenNARC(v3, ov104_0222EA90(param1, 11), &v7, HEAP_ID_94); - DC_FlushRange(v7->pRawData, v7->szByte); + void *pltt = Graphics_GetPlttDataFromOpenNARC(narc, GetFrontierSceneValue(param1, FR_SCENE_SUB_PLTT_IDX), &plttData, HEAP_ID_94); + DC_FlushRange(plttData->pRawData, plttData->szByte); GX_BeginLoadBGExtPltt(); - GX_LoadBGExtPltt(v7->pRawData, 0x4000, 0x2000); + GX_LoadBGExtPltt(plttData->pRawData, 0x4000, 0x2000); GX_EndLoadBGExtPltt(); - Heap_Free(v8); + Heap_Free(pltt); } } Bg_ScheduleTilemapTransfer(param0->unk_00, 3); - NARC_dtor(v3); + NARC_dtor(narc); } }