Document Frontier scenes (#880)

This commit is contained in:
VicSevenT 2026-01-08 18:35:32 -06:00 committed by GitHub
parent 007753a5d0
commit 7dca5b4f47
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 373 additions and 321 deletions

View File

@ -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);

View File

@ -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;

View File

@ -1,7 +1,9 @@
#include "overlay104/ov104_0222EA90.h"
#include <nitro.h>
#include <string.h>
#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);
}
}

View File

@ -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, &param0->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, &param0->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);
}
}