mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
Document Battle Frontier Records App (Overlay 110) (#1000)
This commit is contained in:
parent
3d24f842f1
commit
c559905b9e
|
|
@ -4235,11 +4235,11 @@
|
|||
.short \arg0
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_2C8 arg0, arg1, arg2
|
||||
.macro OpenFrontierRecordsApp challengeType, facility, species
|
||||
.short 712
|
||||
.short \arg0
|
||||
.short \arg1
|
||||
.short \arg2
|
||||
.short \challengeType
|
||||
.short \facility
|
||||
.short \species
|
||||
.endm
|
||||
|
||||
.macro InitPersistedMapFeaturesForEternaGym
|
||||
|
|
@ -4360,13 +4360,13 @@
|
|||
.short \species
|
||||
.endm
|
||||
|
||||
.macro ScrCmd_2DE arg0, arg1, arg2, arg3, arg4
|
||||
.macro ShowBattleHallRecordMonSelectionMenu challengeType, letterGroup, result, listPos, cursorPos
|
||||
.short 734
|
||||
.short \arg0
|
||||
.short \arg1
|
||||
.short \arg2
|
||||
.short \arg3
|
||||
.short \arg4
|
||||
.short \challengeType
|
||||
.short \letterGroup
|
||||
.short \result
|
||||
.short \listPos
|
||||
.short \cursorPos
|
||||
.endm
|
||||
|
||||
.macro CalcAmitySquareBerryAndAccessoryManOptionID destBerryAndAccessoryManOptionID
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ TEXT_BANK_BALL_SEAL_NAMES
|
|||
TEXT_BANK_BALL_SEAL_NAMES_PLURAL
|
||||
TEXT_BANK_MAIN_MENU_ALERTS
|
||||
TEXT_BANK_UNK_0015
|
||||
TEXT_BANK_BATTLE_TOWER_RECORDS
|
||||
TEXT_BANK_BATTLE_FRONTIER_RECORDS
|
||||
TEXT_BANK_BG_EVENTS
|
||||
TEXT_BANK_POKEMON_STORAGE_SYSTEM
|
||||
TEXT_BANK_BOX_MESSAGES
|
||||
|
|
|
|||
10
include/applications/frontier/records/main.h
Normal file
10
include/applications/frontier/records/main.h
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
#ifndef POKEPLATINUM_APPLICATIONS_FRONTIER_RECORDS_MAIN_H
|
||||
#define POKEPLATINUM_APPLICATIONS_FRONTIER_RECORDS_MAIN_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
int BattleFrontierRecordsApp_Init(ApplicationManager *appMan, int *state);
|
||||
int BattleFrontierRecordsApp_Main(ApplicationManager *appMan, int *state);
|
||||
int BattleFrontierRecordsApp_Exit(ApplicationManager *appMan, int *state);
|
||||
|
||||
#endif // POKEPLATINUM_APPLICATIONS_FRONTIER_RECORDS_MAIN_H
|
||||
50
include/applications/frontier/records/windows.h
Normal file
50
include/applications/frontier/records/windows.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#ifndef POKEPLATINUM_APPLICATIONS_FRONTIER_RECORDS_WINDOWS_H
|
||||
#define POKEPLATINUM_APPLICATIONS_FRONTIER_RECORDS_WINDOWS_H
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
#define WINDOW_GROUP_FACTORY 0
|
||||
#define WINDOW_GROUP_HALL 1
|
||||
#define WINDOW_GROUP_CASTLE 2
|
||||
#define WINDOW_GROUP_ARCADE 3
|
||||
#define WINDOW_GROUP_TOWER 4
|
||||
|
||||
// Common to all facilities
|
||||
#define WINDOW_HEADER 0
|
||||
|
||||
// Factory
|
||||
#define WINDOW_FACTORY_LEVEL_50_HEADER 1
|
||||
#define WINDOW_FACTORY_LEVEL_50_LATEST 2
|
||||
#define WINDOW_FACTORY_LEVEL_50_RECORD 3
|
||||
#define WINDOW_FACTORY_OPEN_LEVEL_HEADER 4
|
||||
#define WINDOW_FACTORY_OPEN_LEVEL_LATEST 5
|
||||
#define WINDOW_FACTORY_OPEN_LEVEL_RECORD 6
|
||||
|
||||
// Hall
|
||||
#define WINDOW_HALL_MON_NAME 1
|
||||
#define WINDOW_HALL_LATEST 2
|
||||
#define WINDOW_HALL_RECORD 3
|
||||
|
||||
// Castle
|
||||
#define WINDOW_CASTLE_POINTS 1
|
||||
#define WINDOW_CASTLES_LATEST 2
|
||||
#define WINDOW_CASTLES_RECORD 3
|
||||
|
||||
// Arcade
|
||||
#define WINDOW_ARCADE_LATEST 1
|
||||
#define WINDOW_ARCADE_RECORD 2
|
||||
|
||||
// Tower
|
||||
#define WINDOW_TOWER_MULTI_W_TRAINER 1
|
||||
#define WINDOW_TOWER_SOLO_LATEST 2
|
||||
#define WINDOW_TOWER_SOLO_RECORD 3
|
||||
#define WINDOW_TOWER_MULTI_LATEST 4
|
||||
#define WINDOW_TOWER_MULTI_RECORD 5
|
||||
#define WINDOW_TOWER_MULTI_W_FRIEND 6
|
||||
#define WINDOW_TOWER_W_FRIEND_LATEST 7
|
||||
#define WINDOW_TOWER_W_FRIEND_RECORD 8
|
||||
|
||||
void FrontierRecordsApp_InitWindows(BgConfig *bgConfig, Window *window, u8 facility);
|
||||
void FrontierRecordsApp_FreeWindows(Window *windows, u8 facility);
|
||||
|
||||
#endif // POKEPLATINUM_APPLICATIONS_FRONTIER_RECORDS_WINDOWS_H
|
||||
|
|
@ -6,6 +6,12 @@
|
|||
#define FRONTIER_CHALLENGE_MULTI 2
|
||||
#define FRONTIER_CHALLENGE_MULTI_WFC 3
|
||||
|
||||
#define FRONTIER_RECORDS_APP_TOWER 1
|
||||
#define FRONTIER_RECORDS_APP_FACTORY 2
|
||||
#define FRONTIER_RECORDS_APP_CASTLE 4
|
||||
#define FRONTIER_RECORDS_APP_HALL 5
|
||||
#define FRONTIER_RECORDS_APP_ARCADE 6
|
||||
|
||||
#define BATTLES_PER_ROUND_ARCADE 7
|
||||
|
||||
#define ARCADE_PARTY_SIZE_SOLO 3
|
||||
|
|
|
|||
|
|
@ -116,7 +116,7 @@ enum HeapID {
|
|||
HEAP_ID_111,
|
||||
HEAP_ID_112,
|
||||
HEAP_ID_113,
|
||||
HEAP_ID_114,
|
||||
HEAP_ID_FRONTIER_RECORD_APP,
|
||||
HEAP_ID_115,
|
||||
HEAP_ID_116,
|
||||
HEAP_ID_117,
|
||||
|
|
@ -137,6 +137,7 @@ enum HeapSize {
|
|||
HEAP_SIZE_BATTLE_HALL_APP = 0x20000,
|
||||
HEAP_SIZE_BATTLE_FACTORY_APP = 0x20000,
|
||||
HEAP_SIZE_BATTLE_ARCADE_APP = 0x20000,
|
||||
HEAP_SIZE_FRONTIER_RECORDS_APP = 0x20000,
|
||||
HEAP_SIZE_BAG = 0x30000,
|
||||
|
||||
HEAP_SIZE_PRE_POKETCH_SUBSCREEN = 0x18000,
|
||||
|
|
|
|||
|
|
@ -60,6 +60,8 @@
|
|||
#define BATTLE_ARCADE_APP_MAIN_TILES 120
|
||||
#define BATTLE_ARCADE_APP_SUB_TILEMAP 121
|
||||
#define BATTLE_ARCADE_APP_SUB_TILES 122
|
||||
#define BATTLE_FRONTIER_RECORDS_APP_TILEMAP 123
|
||||
#define BATTLE_FRONTIER_RECORDS_APP_TILES 124
|
||||
#define BATTLE_FRONTIER_APP_SUB_SCREEN_TILES 125
|
||||
#define BATTLE_FRONTIER_APP_SUB_SCREEN_TILEMAP 126
|
||||
#define BATTLE_FACTORY_PLTT 129
|
||||
|
|
@ -77,6 +79,7 @@
|
|||
#define BATTLE_ARCADE_CORRIDOR_PLTT 143
|
||||
#define Battle_ARCADE_APP_SUB_PLTT 168
|
||||
#define BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_PLTT 169
|
||||
#define BATTLE_FRONTIER_RECORDS_APP_PLTT 170
|
||||
#define BATTLE_FRONTIER_APP_SUB_SCREEN_PLTT 171
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
#include "field_script_context.h"
|
||||
|
||||
BOOL ScrCmd_2DE(ScriptContext *param0);
|
||||
BOOL ScrCmd_ShowBattleHallRecordMonSelectionMenu(ScriptContext *ctx);
|
||||
BOOL ScrCmd_JudgeStats(ScriptContext *ctx);
|
||||
BOOL ScrCmd_31D(ScriptContext *param0);
|
||||
BOOL ScrCmd_TryRevertPokemonForm(ScriptContext *param0);
|
||||
|
|
@ -17,13 +17,13 @@ BOOL ScrCmd_GetPartyMonForm2(ScriptContext *ctx);
|
|||
BOOL ScrCmd_30F(ScriptContext *param0);
|
||||
BOOL ScrCmd_Dummy316(ScriptContext *ctx);
|
||||
BOOL ScrCmd_32C(ScriptContext *param0);
|
||||
BOOL ScrCmd_32D(ScriptContext *param0);
|
||||
BOOL ScrCmd_32E(ScriptContext *param0);
|
||||
BOOL ScrCmd_331(ScriptContext *param0);
|
||||
BOOL ScrCmd_332(ScriptContext *param0);
|
||||
BOOL ScrCmd_338(ScriptContext *param0);
|
||||
BOOL ScrCmd_339(ScriptContext *param0);
|
||||
BOOL ScrCmd_32D(ScriptContext *ctx);
|
||||
BOOL ScrCmd_32E(ScriptContext *ctx);
|
||||
BOOL ScrCmd_331(ScriptContext *ctx);
|
||||
BOOL ScrCmd_332(ScriptContext *ctx);
|
||||
BOOL ScrCmd_338(ScriptContext *ctx);
|
||||
BOOL ScrCmd_339(ScriptContext *ctx);
|
||||
BOOL ScrCmd_LogLinkInfoInWiFiHistory(ScriptContext *ctx);
|
||||
BOOL ScrCmd_333(ScriptContext *param0);
|
||||
BOOL ScrCmd_333(ScriptContext *ctx);
|
||||
|
||||
#endif // POKEPLATINUM_OV5_021F6454_H
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_OV5_021F6704_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_OV5_021F6704_DECL_H
|
||||
|
||||
typedef struct UnkStruct_ov5_021F6704_t UnkStruct_ov5_021F6704;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_OV5_021F6704_DECL_H
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV110_021D0D80_H
|
||||
#define POKEPLATINUM_OV110_021D0D80_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
int ov110_021D0D80(ApplicationManager *appMan, int *param1);
|
||||
int ov110_021D0E9C(ApplicationManager *appMan, int *param1);
|
||||
int ov110_021D0EF0(ApplicationManager *appMan, int *param1);
|
||||
|
||||
#endif // POKEPLATINUM_OV110_021D0D80_H
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV110_021D2124_H
|
||||
#define POKEPLATINUM_OV110_021D2124_H
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
void ov110_021D2124(BgConfig *param0, Window *param1, u8 param2);
|
||||
void ov110_021D216C(Window *param0, u8 param1);
|
||||
|
||||
#endif // POKEPLATINUM_OV110_021D2124_H
|
||||
|
|
@ -113,7 +113,7 @@ enum ScriptContextType {
|
|||
#define SCRIPT_ID_OFFSET_MYSTERY_GIFT_DELIVERYMAN 10200
|
||||
#define SCRIPT_ID_OFFSET_COUNTERPART_TALK 10300
|
||||
#define SCRIPT_ID_OFFSET_POKEMON_CENTER_DAILY_TRAINERS 10400
|
||||
#define SCRIPT_ID_OFFSET_BATTLE_TOWER_RECORDS 10450
|
||||
#define SCRIPT_ID_OFFSET_BATTLE_FRONTIER_RECORDS 10450
|
||||
#define SCRIPT_ID_OFFSET_SCRATCH_OFF_CARDS 10490
|
||||
|
||||
#define FLAG_OFFSET_HIDDEN_ITEMS 730
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
|
||||
typedef struct {
|
||||
SaveData *saveData;
|
||||
u8 unk_04;
|
||||
u8 unk_05;
|
||||
u16 unk_06;
|
||||
} UnkStruct_0203E564;
|
||||
u8 challengeType;
|
||||
u8 facility;
|
||||
u16 species;
|
||||
} FrontierRecordsAppArgs;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_0203E564_H
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ BOOL sub_0203E348(FieldSystem *fieldSystem, UnkStruct_0203E348 *param1);
|
|||
void sub_0203E414(FieldTask *task, int slotMachineID);
|
||||
void AccessoryShop_Init(FieldTask *task);
|
||||
void *FieldSystem_ShowDiploma(FieldSystem *fieldSystem, enum HeapID heapID, BOOL isNatDex);
|
||||
void *sub_0203E564(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, enum HeapID heapID);
|
||||
void *FieldSystem_OpenBattleFrontierRecord(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, enum HeapID heapID);
|
||||
void *sub_0203E608(FieldSystem *fieldSystem, enum HeapID heapID);
|
||||
void *FieldSystem_OpenSummaryScreenTeachMove(int unused, FieldSystem *fieldSystem, u16 partySlot, u16 move);
|
||||
void sub_0203E6C0(FieldSystem *fieldSystem, int param1, int param2);
|
||||
|
|
|
|||
|
|
@ -1617,11 +1617,11 @@ Overlay overlay109
|
|||
Object main.nef.p/src_overlay109_ov109_021D3D50.c.o
|
||||
}
|
||||
|
||||
Overlay overlay110
|
||||
Overlay frontier_records_app
|
||||
{
|
||||
After main
|
||||
Object main.nef.p/src_overlay110_ov110_021D0D80.c.o
|
||||
Object main.nef.p/src_overlay110_ov110_021D2124.c.o
|
||||
Object main.nef.p/src_applications_frontier_records_main.c.o
|
||||
Object main.nef.p/src_applications_frontier_records_windows.c.o
|
||||
}
|
||||
|
||||
Overlay overlay111
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ c3a66997e55fb3e761d521136a42f07f4761f5da *battle_hall_app.sbin
|
|||
f8d3fd65261098ff45b3a31319c904b520814fa2 *battle_castle_app.sbin
|
||||
901f6afe6c1b0b54dc42af812f13560758814d2b *battle_arcade_app.sbin
|
||||
5acaa19b61120f72d546a83e36c361b2e383c0bd *overlay109.sbin
|
||||
1626b234bbd0915fc1bd57d0b67c59c86f1138bd *overlay110.sbin
|
||||
1626b234bbd0915fc1bd57d0b67c59c86f1138bd *frontier_records_app.sbin
|
||||
eb9d61aa9d3ad877f55af30ff212ecc7094049c5 *overlay111.sbin
|
||||
535bf2a3127064fc977a45611ff44e0473be597a *overlay112.sbin
|
||||
0d92a7c86aa0582c60730ab45884ce4beed765d8 *overlay113.sbin
|
||||
|
|
|
|||
|
|
@ -533,7 +533,7 @@ scr_seq_files = files(
|
|||
'scripts_safari_game.s',
|
||||
'scripts_vs_seeker.s',
|
||||
'scripts_scratch_off_cards.s',
|
||||
'scripts_battle_tower_records.s',
|
||||
'scripts_battle_frontier_records.s',
|
||||
'scripts_day_care_common.s',
|
||||
'scripts_init_jubilife_city.s',
|
||||
'scripts_init_jubilife_city_mart.s',
|
||||
|
|
|
|||
|
|
@ -498,7 +498,7 @@ scripts_unk_0496
|
|||
scripts_safari_game
|
||||
scripts_vs_seeker
|
||||
scripts_scratch_off_cards
|
||||
scripts_battle_tower_records
|
||||
scripts_battle_frontier_records
|
||||
scripts_day_care_common
|
||||
scripts_init_jubilife_city
|
||||
scripts_init_jubilife_city_mart
|
||||
|
|
|
|||
203
res/field/scripts/scripts_battle_frontier_records.s
Normal file
203
res/field/scripts/scripts_battle_frontier_records.s
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
#include "macros/scrcmd.inc"
|
||||
#include "constants/battle_frontier.h"
|
||||
#include "constants/menu.h"
|
||||
#include "res/text/bank/battle_frontier_records.h"
|
||||
|
||||
|
||||
ScriptEntry FrontierRecords_BattleTower
|
||||
ScriptEntry FrontierRecords_BattleTowerDupe
|
||||
ScriptEntry FrontierRecords_BattleFactory
|
||||
ScriptEntry FrontierRecords_BattleHall
|
||||
ScriptEntry FrontierRecords_BattleCastle
|
||||
ScriptEntry FrontierRecords_BattleArcade
|
||||
ScriptEntryEnd
|
||||
|
||||
FrontierRecords_BattleTower:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, FRONTIER_RECORDS_APP_TOWER
|
||||
GoTo FrontierRecords_BattleTowerMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleTowerMenus:
|
||||
Call FrontierRecords_WhichRecord
|
||||
Call FrontierRecords_SelectChallengeType
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, FrontierRecords_CloseAndExit
|
||||
GoToIfEq VAR_0x8008, MENU_CANCEL, FrontierRecords_CloseAndExit
|
||||
Call FrontierRecords_OpenRecordDisplay
|
||||
GoTo FrontierRecords_BattleTowerMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleTowerDupe:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, FRONTIER_RECORDS_APP_TOWER
|
||||
GoTo FrontierRecords_BattleTowerMenusDupe
|
||||
End
|
||||
|
||||
FrontierRecords_BattleTowerMenusDupe:
|
||||
Call FrontierRecords_WhichRecord
|
||||
Call FrontierRecords_SelectChallengeType
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, FrontierRecords_CloseAndExit
|
||||
GoToIfEq VAR_0x8008, MENU_CANCEL, FrontierRecords_CloseAndExit
|
||||
Call FrontierRecords_OpenRecordDisplay
|
||||
GoTo FrontierRecords_BattleTowerMenusDupe
|
||||
End
|
||||
|
||||
FrontierRecords_BattleFactory:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, FRONTIER_RECORDS_APP_FACTORY
|
||||
GoTo FrontierRecords_BattleFactoryMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleFactoryMenus:
|
||||
Call FrontierRecords_WhichRecord
|
||||
Call FrontierRecords_SelectChallengeType
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, FrontierRecords_CloseAndExit
|
||||
GoToIfEq VAR_0x8008, MENU_CANCEL, FrontierRecords_CloseAndExit
|
||||
Call FrontierRecords_OpenRecordDisplay
|
||||
GoTo FrontierRecords_BattleFactoryMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleHall:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, FRONTIER_RECORDS_APP_HALL
|
||||
GoTo FrontierRecords_BattleHallMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleHallMenus:
|
||||
Call FrontierRecords_WhichRecord
|
||||
Call FrontierRecords_SelectChallengeType
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, FrontierRecords_CloseAndExit
|
||||
GoToIfEq VAR_0x8008, MENU_CANCEL, FrontierRecords_CloseAndExit
|
||||
ScrCmd_2CC 1, VAR_0x8001, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, 0, _0174
|
||||
ScrCmd_2CC 2, VAR_0x8001, VAR_RESULT
|
||||
BufferSpeciesNameFromVar 0, VAR_RESULT, 0, 0
|
||||
Message BattleFrontierRecords_Text_OnChallengeNow
|
||||
GoTo _017F
|
||||
End
|
||||
|
||||
_0174:
|
||||
Message BattleFrontierRecords_Text_WhichPokemon
|
||||
GoTo _017F
|
||||
End
|
||||
|
||||
_017F:
|
||||
SetVar VAR_0x8002, 0
|
||||
SetVar VAR_0x8004, 0
|
||||
SetVar VAR_0x8005, 0
|
||||
GoTo _0199
|
||||
End
|
||||
|
||||
_0199:
|
||||
Call FrontierRecords_SelectStartingLetters
|
||||
GoToIfEq VAR_0x8002, 9, FrontierRecords_BattleHallMenus
|
||||
GoToIfEq VAR_0x8002, MENU_CANCEL, FrontierRecords_BattleHallMenus
|
||||
SetVar VAR_0x8003, 0
|
||||
SetVar VAR_0x8006, 0
|
||||
SetVar VAR_0x8007, 0
|
||||
GoTo _01D3
|
||||
End
|
||||
|
||||
_01D3:
|
||||
ShowBattleHallRecordMonSelectionMenu VAR_0x8001, VAR_0x8002, VAR_0x8003, VAR_0x8006, VAR_0x8007
|
||||
GoToIfEq VAR_0x8003, MENU_CANCEL, _0199
|
||||
Call FrontierRecords_OpenRecordDisplay
|
||||
Message BattleFrontierRecords_Text_WhichPokemon
|
||||
GoTo _01D3
|
||||
End
|
||||
|
||||
FrontierRecords_BattleCastle:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, FRONTIER_RECORDS_APP_CASTLE
|
||||
GoTo FrontierRecords_BattleCastleMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleCastleMenus:
|
||||
Call FrontierRecords_WhichRecord
|
||||
Call FrontierRecords_SelectChallengeType
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, FrontierRecords_CloseAndExit
|
||||
GoToIfEq VAR_0x8008, MENU_CANCEL, FrontierRecords_CloseAndExit
|
||||
Call FrontierRecords_OpenRecordDisplay
|
||||
GoTo FrontierRecords_BattleCastleMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleArcade:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, FRONTIER_RECORDS_APP_ARCADE
|
||||
GoTo FrontierRecords_BattleArcadeMenus
|
||||
End
|
||||
|
||||
FrontierRecords_BattleArcadeMenus:
|
||||
Call FrontierRecords_WhichRecord
|
||||
Call FrontierRecords_SelectChallengeType
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, FrontierRecords_CloseAndExit
|
||||
GoToIfEq VAR_0x8008, MENU_CANCEL, FrontierRecords_CloseAndExit
|
||||
Call FrontierRecords_OpenRecordDisplay
|
||||
GoTo FrontierRecords_BattleArcadeMenus
|
||||
End
|
||||
|
||||
FrontierRecords_WhichRecord:
|
||||
Message BattleFrontierRecords_Text_WhichRecord
|
||||
Return
|
||||
|
||||
FrontierRecords_SelectChallengeType:
|
||||
InitLocalTextMenu 31, 9, 0, VAR_0x8001
|
||||
SetMenuXOriginToRight
|
||||
AddMenuEntryImm BattleFrontierRecords_Text_Single, FRONTIER_CHALLENGE_SINGLE
|
||||
AddMenuEntryImm BattleFrontierRecords_Text_Double, FRONTIER_CHALLENGE_DOUBLE
|
||||
AddMenuEntryImm BattleFrontierRecords_Text_Multi, FRONTIER_CHALLENGE_MULTI
|
||||
AddMenuEntryImm BattleFrontierRecords_Text_Cancel, 3
|
||||
ShowMenu
|
||||
Return
|
||||
|
||||
FrontierRecords_SelectStartingLetters:
|
||||
InitLocalTextListMenu 25, 1, 0, VAR_0x8002
|
||||
AddListMenuEntry BattleFrontierRecords_Text_ABC, 0
|
||||
AddListMenuEntry BattleFrontierRecords_Text_DEF, 1
|
||||
AddListMenuEntry BattleFrontierRecords_Text_GHI, 2
|
||||
AddListMenuEntry BattleFrontierRecords_Text_JKL, 3
|
||||
AddListMenuEntry BattleFrontierRecords_Text_MNO, 4
|
||||
AddListMenuEntry BattleFrontierRecords_Text_PQR, 5
|
||||
AddListMenuEntry BattleFrontierRecords_Text_STU, 6
|
||||
AddListMenuEntry BattleFrontierRecords_Text_VWX, 7
|
||||
AddListMenuEntry BattleFrontierRecords_Text_YZ, 8
|
||||
AddListMenuEntry BattleFrontierRecords_Text_Exit, 9
|
||||
ShowListMenuRememberCursor VAR_0x8004, VAR_0x8005
|
||||
Return
|
||||
|
||||
FrontierRecords_CloseAndExit:
|
||||
CloseMessage
|
||||
GoTo FrontierRecords_Exit
|
||||
End
|
||||
|
||||
FrontierRecords_Exit:
|
||||
ReleaseAll
|
||||
End
|
||||
|
||||
FrontierRecords_OpenRecordDisplay:
|
||||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
CloseMessage
|
||||
Call FrontierRecords_OpenApp
|
||||
Return
|
||||
|
||||
FrontierRecords_OpenApp:
|
||||
OpenFrontierRecordsApp VAR_0x8001, VAR_0x8000, VAR_0x8003
|
||||
ReturnToField
|
||||
FadeScreenIn
|
||||
WaitFadeScreen
|
||||
Return
|
||||
|
||||
.balign 4, 0
|
||||
|
|
@ -1,201 +0,0 @@
|
|||
#include "macros/scrcmd.inc"
|
||||
#include "res/text/bank/battle_tower_records.h"
|
||||
|
||||
|
||||
ScriptEntry _001A
|
||||
ScriptEntry _0068
|
||||
ScriptEntry _00B6
|
||||
ScriptEntry _0104
|
||||
ScriptEntry _01FD
|
||||
ScriptEntry _024B
|
||||
ScriptEntryEnd
|
||||
|
||||
_001A:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, 1
|
||||
GoTo _002E
|
||||
End
|
||||
|
||||
_002E:
|
||||
Call _0299
|
||||
Call _029E
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, _031D
|
||||
GoToIfEq VAR_0x8008, -2, _031D
|
||||
Call _032B
|
||||
GoTo _002E
|
||||
End
|
||||
|
||||
_0068:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, 1
|
||||
GoTo _007C
|
||||
End
|
||||
|
||||
_007C:
|
||||
Call _0299
|
||||
Call _029E
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, _031D
|
||||
GoToIfEq VAR_0x8008, -2, _031D
|
||||
Call _032B
|
||||
GoTo _007C
|
||||
End
|
||||
|
||||
_00B6:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, 2
|
||||
GoTo _00CA
|
||||
End
|
||||
|
||||
_00CA:
|
||||
Call _0299
|
||||
Call _029E
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, _031D
|
||||
GoToIfEq VAR_0x8008, -2, _031D
|
||||
Call _032B
|
||||
GoTo _00CA
|
||||
End
|
||||
|
||||
_0104:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, 5
|
||||
GoTo _0118
|
||||
End
|
||||
|
||||
_0118:
|
||||
Call _0299
|
||||
Call _029E
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, _031D
|
||||
GoToIfEq VAR_0x8008, -2, _031D
|
||||
ScrCmd_2CC 1, VAR_0x8001, VAR_RESULT
|
||||
GoToIfEq VAR_RESULT, 0, _0174
|
||||
ScrCmd_2CC 2, VAR_0x8001, VAR_RESULT
|
||||
BufferSpeciesNameFromVar 0, VAR_RESULT, 0, 0
|
||||
Message 7
|
||||
GoTo _017F
|
||||
End
|
||||
|
||||
_0174:
|
||||
Message 6
|
||||
GoTo _017F
|
||||
End
|
||||
|
||||
_017F:
|
||||
SetVar VAR_0x8002, 0
|
||||
SetVar VAR_0x8004, 0
|
||||
SetVar VAR_0x8005, 0
|
||||
GoTo _0199
|
||||
End
|
||||
|
||||
_0199:
|
||||
Call _02BD
|
||||
GoToIfEq VAR_0x8002, 9, _0118
|
||||
GoToIfEq VAR_0x8002, -2, _0118
|
||||
SetVar VAR_0x8003, 0
|
||||
SetVar VAR_0x8006, 0
|
||||
SetVar VAR_0x8007, 0
|
||||
GoTo _01D3
|
||||
End
|
||||
|
||||
_01D3:
|
||||
ScrCmd_2DE VAR_0x8001, VAR_0x8002, VAR_0x8003, VAR_0x8006, VAR_0x8007
|
||||
GoToIfEq VAR_0x8003, -2, _0199
|
||||
Call _032B
|
||||
Message 6
|
||||
GoTo _01D3
|
||||
End
|
||||
|
||||
_01FD:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, 4
|
||||
GoTo _0211
|
||||
End
|
||||
|
||||
_0211:
|
||||
Call _0299
|
||||
Call _029E
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, _031D
|
||||
GoToIfEq VAR_0x8008, -2, _031D
|
||||
Call _032B
|
||||
GoTo _0211
|
||||
End
|
||||
|
||||
_024B:
|
||||
PlayFanfare SEQ_SE_CONFIRM
|
||||
LockAll
|
||||
SetVar VAR_0x8000, 6
|
||||
GoTo _025F
|
||||
End
|
||||
|
||||
_025F:
|
||||
Call _0299
|
||||
Call _029E
|
||||
SetVar VAR_0x8008, VAR_0x8001
|
||||
GoToIfEq VAR_0x8008, 3, _031D
|
||||
GoToIfEq VAR_0x8008, -2, _031D
|
||||
Call _032B
|
||||
GoTo _025F
|
||||
End
|
||||
|
||||
_0299:
|
||||
Message 0
|
||||
Return
|
||||
|
||||
_029E:
|
||||
InitLocalTextMenu 31, 9, 0, VAR_0x8001
|
||||
SetMenuXOriginToRight
|
||||
AddMenuEntryImm 1, 0
|
||||
AddMenuEntryImm 2, 1
|
||||
AddMenuEntryImm 3, 2
|
||||
AddMenuEntryImm 4, 3
|
||||
ShowMenu
|
||||
Return
|
||||
|
||||
_02BD:
|
||||
InitLocalTextListMenu 25, 1, 0, VAR_0x8002
|
||||
AddListMenuEntry 8, 0
|
||||
AddListMenuEntry 9, 1
|
||||
AddListMenuEntry 10, 2
|
||||
AddListMenuEntry 11, 3
|
||||
AddListMenuEntry 12, 4
|
||||
AddListMenuEntry 13, 5
|
||||
AddListMenuEntry 14, 6
|
||||
AddListMenuEntry 15, 7
|
||||
AddListMenuEntry 16, 8
|
||||
AddListMenuEntry 5, 9
|
||||
ShowListMenuRememberCursor VAR_0x8004, VAR_0x8005
|
||||
Return
|
||||
|
||||
_031D:
|
||||
CloseMessage
|
||||
GoTo _0327
|
||||
End
|
||||
|
||||
_0327:
|
||||
ReleaseAll
|
||||
End
|
||||
|
||||
_032B:
|
||||
FadeScreenOut
|
||||
WaitFadeScreen
|
||||
CloseMessage
|
||||
Call _0341
|
||||
Return
|
||||
|
||||
_0341:
|
||||
ScrCmd_2C8 VAR_0x8001, VAR_0x8000, VAR_0x8003
|
||||
ReturnToField
|
||||
FadeScreenIn
|
||||
WaitFadeScreen
|
||||
Return
|
||||
|
||||
.balign 4, 0
|
||||
184
res/text/battle_frontier_records.json
Normal file
184
res/text/battle_frontier_records.json
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
{
|
||||
"key": 14833,
|
||||
"messages": [
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_WhichRecord",
|
||||
"en_US": "Which record would you like to see?"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Single",
|
||||
"en_US": "SINGLE"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Double",
|
||||
"en_US": "DOUBLE"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Multi",
|
||||
"en_US": "MULTI"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Cancel",
|
||||
"en_US": "CANCEL"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Exit",
|
||||
"en_US": "EXIT"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_WhichPokemon",
|
||||
"en_US": [
|
||||
"Which Pokémon’s record would you like\n",
|
||||
"to see?\r"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_OnChallengeNow",
|
||||
"en_US": "{STRVAR_1 0, 0, 0} is on a challenge now!"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_ABC",
|
||||
"en_US": "ABC"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_DEF",
|
||||
"en_US": "DEF"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_GHI",
|
||||
"en_US": "GHI"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_JKL",
|
||||
"en_US": "JKL"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_MNO",
|
||||
"en_US": "MNO"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_PQR",
|
||||
"en_US": "PQR"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_STU",
|
||||
"en_US": "STU"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_VWX",
|
||||
"en_US": "VWX"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_YZ",
|
||||
"en_US": "YZ"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Dummy1",
|
||||
"garbage": 1
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Cancel2",
|
||||
"en_US": "CANCEL"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Dummy3",
|
||||
"garbage": 5
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Dummy4",
|
||||
"garbage": 3
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_BattleTower",
|
||||
"en_US": "Battle Tower"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_BattleFactory",
|
||||
"en_US": "Battle Factory"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_BattleCastle",
|
||||
"en_US": "Battle Castle"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_BattleHall",
|
||||
"en_US": "Battle Hall"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_BattleArcade",
|
||||
"en_US": "Battle Arcade"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_SingleRecord",
|
||||
"en_US": "Single Record"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_DoubleRecord",
|
||||
"en_US": "Double Record"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_MultiRecord",
|
||||
"en_US": "Multi Record"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Prev",
|
||||
"en_US": "PREV"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Current",
|
||||
"en_US": "CURRENT"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Record",
|
||||
"en_US": "RECORD"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_MultiWithTrainer",
|
||||
"en_US": "Multi w/Trainer"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_MultiWithFriend",
|
||||
"en_US": "Multi w/friend"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Level50",
|
||||
"en_US": "Level 50"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_OpenLevel",
|
||||
"en_US": "Open Level"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_RentalTrade",
|
||||
"en_US": "Rental/Trade"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_CastlePoints",
|
||||
"en_US": "Castle Points"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_WinStreak",
|
||||
"en_US": "Win streak: {STRVAR_1 53, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_MonsRecord",
|
||||
"en_US": "{STRVAR_1 0, 0, 0}’s record"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_Number",
|
||||
"en_US": "{STRVAR_1 53, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_CP",
|
||||
"en_US": "{STRVAR_1 53, 0, 0} CP"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_WinStreakTemplate",
|
||||
"en_US": "Win streak: {STRVAR_1 53, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "BattleFrontierRecords_Text_GamesCleared",
|
||||
"en_US": "Games cleared: {STRVAR_1 53, 0, 0}"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -1,184 +0,0 @@
|
|||
{
|
||||
"key": 14833,
|
||||
"messages": [
|
||||
{
|
||||
"id": "pl_msg_00000016_00000",
|
||||
"en_US": "Which record would you like to see?"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00001",
|
||||
"en_US": "SINGLE"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00002",
|
||||
"en_US": "DOUBLE"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00003",
|
||||
"en_US": "MULTI"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00004",
|
||||
"en_US": "CANCEL"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00005",
|
||||
"en_US": "EXIT"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00006",
|
||||
"en_US": [
|
||||
"Which Pokémon’s record would you like\n",
|
||||
"to see?\r"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00007",
|
||||
"en_US": "{STRVAR_1 0, 0, 0} is on a challenge now!"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00008",
|
||||
"en_US": "ABC"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00009",
|
||||
"en_US": "DEF"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00010",
|
||||
"en_US": "GHI"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00011",
|
||||
"en_US": "JKL"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00012",
|
||||
"en_US": "MNO"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00013",
|
||||
"en_US": "PQR"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00014",
|
||||
"en_US": "STU"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00015",
|
||||
"en_US": "VWX"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00016",
|
||||
"en_US": "YZ"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00017",
|
||||
"garbage": 1
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00018",
|
||||
"en_US": "CANCEL"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00019",
|
||||
"garbage": 5
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00020",
|
||||
"garbage": 3
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00021",
|
||||
"en_US": "Battle Tower"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00022",
|
||||
"en_US": "Battle Factory"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00023",
|
||||
"en_US": "Battle Castle"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00024",
|
||||
"en_US": "Battle Hall"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00025",
|
||||
"en_US": "Battle Arcade"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00026",
|
||||
"en_US": "Single Record"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00027",
|
||||
"en_US": "Double Record"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00028",
|
||||
"en_US": "Multi Record"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00029",
|
||||
"en_US": "PREV"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00030",
|
||||
"en_US": "CURRENT"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00031",
|
||||
"en_US": "RECORD"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00032",
|
||||
"en_US": "Multi w/Trainer"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00033",
|
||||
"en_US": "Multi w/friend"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00034",
|
||||
"en_US": "Level 50"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00035",
|
||||
"en_US": "Open Level"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00036",
|
||||
"en_US": "Rental/Trade"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00037",
|
||||
"en_US": "Castle Points"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00038",
|
||||
"en_US": "Win streak: {STRVAR_1 53, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00039",
|
||||
"en_US": "{STRVAR_1 0, 0, 0}’s record"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00040",
|
||||
"en_US": "{STRVAR_1 53, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00041",
|
||||
"en_US": "{STRVAR_1 53, 0, 0} CP"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00042",
|
||||
"en_US": "Win streak: {STRVAR_1 53, 0, 0}"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000016_00043",
|
||||
"en_US": "Games cleared: {STRVAR_1 53, 0, 0}"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
"en_US": "EXIT"
|
||||
},
|
||||
{
|
||||
"id": "pl_msg_00000361_00012",
|
||||
"id": "MenuEntries_Text_ListMenu_Exit",
|
||||
"en_US": "EXIT"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
840
src/applications/frontier/records/main.c
Normal file
840
src/applications/frontier/records/main.c
Normal file
|
|
@ -0,0 +1,840 @@
|
|||
#include "applications/frontier/records/main.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/battle_frontier.h"
|
||||
|
||||
#include "struct_decls/struct_0202D750_decl.h"
|
||||
#include "struct_decls/struct_020308A0_decl.h"
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/struct_0203E564.h"
|
||||
|
||||
#include "applications/frontier/records/windows.h"
|
||||
|
||||
#include "battle_tower_modes.h"
|
||||
#include "bg_window.h"
|
||||
#include "font.h"
|
||||
#include "game_options.h"
|
||||
#include "graphics.h"
|
||||
#include "gx_layers.h"
|
||||
#include "heap.h"
|
||||
#include "message.h"
|
||||
#include "narc.h"
|
||||
#include "narc_frontier_bg.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "palette.h"
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "screen_fade.h"
|
||||
#include "string_gf.h"
|
||||
#include "string_template.h"
|
||||
#include "system.h"
|
||||
#include "text.h"
|
||||
#include "unk_0202D05C.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "unk_020302D0.h"
|
||||
#include "unk_02030494.h"
|
||||
#include "unk_0203061C.h"
|
||||
#include "unk_02030880.h"
|
||||
#include "unk_0205DFC4.h"
|
||||
|
||||
#include "res/graphics/poketch/poketch.naix"
|
||||
#include "res/text/bank/battle_frontier_records.h"
|
||||
|
||||
typedef struct FrontierRecordsApp {
|
||||
ApplicationManager *appMan;
|
||||
u8 subState;
|
||||
u8 challengeType;
|
||||
u8 facility;
|
||||
u8 unk_07;
|
||||
u16 species;
|
||||
u16 unk_0A;
|
||||
BgConfig *bgConfig;
|
||||
Window windows[16];
|
||||
MessageLoader *msgLoader;
|
||||
StringTemplate *strTemplate;
|
||||
String *displayStr;
|
||||
String *fmtStr;
|
||||
PaletteData *plttData;
|
||||
const Options *options;
|
||||
SaveData *saveData;
|
||||
BattleFrontier *frontier;
|
||||
} FrontierRecordsApp;
|
||||
|
||||
static BOOL State_FadeInApp(FrontierRecordsApp *app);
|
||||
static BOOL State_ViewRecord(FrontierRecordsApp *app);
|
||||
static BOOL State_FadeOutApp(FrontierRecordsApp *app);
|
||||
static void VBlankCallback(void *data);
|
||||
static void SetGXBanks(void);
|
||||
static void InitBackgrounds(BgConfig *bgConfig);
|
||||
static void LoadBackgrounds(FrontierRecordsApp *app);
|
||||
static void FreeBackgrounds(BgConfig *app);
|
||||
static void ChangeState(FrontierRecordsApp *app, int *state, int newState);
|
||||
static u8 GetWindowGroup(u8 facility);
|
||||
static void LoadMainBackground(FrontierRecordsApp *app, enum BgLayer bgLayer);
|
||||
static void LoadMainBackgroundPalette(void);
|
||||
static void LoadSubBackground(FrontierRecordsApp *app, enum BgLayer bgLayer);
|
||||
static u8 PrintMessage(FrontierRecordsApp *app, Window *window, int entryID, u32 x, u32 y, u8 fgColor, u8 shadowColor, u8 bgColor, u8 font, u8 fillBackground, int alignment);
|
||||
static u8 PrintBasicMessage(FrontierRecordsApp *app, Window *window, int entryID, u8 font);
|
||||
static void SetStringTemplateNumber(FrontierRecordsApp *app, u32 idx, s32 num);
|
||||
static void DisplayRecords(FrontierRecordsApp *app);
|
||||
static void DisplayBattleFactoryLevel50Record(FrontierRecordsApp *app);
|
||||
static void DisplayBattleFactoryOpenLevelRecord(FrontierRecordsApp *app);
|
||||
static u32 GetBattleFactoryLatestStreakEntryID(FrontierRecordsApp *app, u8 openLevel);
|
||||
static void DispalyBattleHallRecord(FrontierRecordsApp *app);
|
||||
static void SetStringTemplateSpecies(FrontierRecordsApp *app);
|
||||
static void DisplayBattleCastleRecord(FrontierRecordsApp *app);
|
||||
static u32 GetBattleCastleLatestStreakEntryID(FrontierRecordsApp *app);
|
||||
static void DisplayBattleArcadeRecord(FrontierRecordsApp *app);
|
||||
static u32 GetBattleArcadeLatestStreakEntryID(FrontierRecordsApp *app);
|
||||
static void DisplayBattleTowerSoloRecord(FrontierRecordsApp *app);
|
||||
static void DisplayBattleTowerMultiRecord(FrontierRecordsApp *app);
|
||||
static u32 GetBattleTowerLatestStreakEntryID(FrontierRecordsApp *app, u8 towerMode);
|
||||
|
||||
int BattleFrontierRecordsApp_Init(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
SetHBlankCallback(NULL, NULL);
|
||||
|
||||
GXLayers_DisableEngineALayers();
|
||||
GXLayers_DisableEngineBLayers();
|
||||
|
||||
GX_SetVisiblePlane(0);
|
||||
GXS_SetVisiblePlane(0);
|
||||
|
||||
Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_FRONTIER_RECORD_APP, HEAP_SIZE_FRONTIER_RECORDS_APP);
|
||||
FrontierRecordsApp *app = ApplicationManager_NewData(appMan, sizeof(FrontierRecordsApp), HEAP_ID_FRONTIER_RECORD_APP);
|
||||
memset(app, 0, sizeof(FrontierRecordsApp));
|
||||
|
||||
app->appMan = appMan;
|
||||
app->bgConfig = BgConfig_New(HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
FrontierRecordsAppArgs *args = ApplicationManager_Args(appMan);
|
||||
|
||||
app->saveData = args->saveData;
|
||||
app->frontier = SaveData_GetBattleFrontier(app->saveData);
|
||||
app->challengeType = args->challengeType;
|
||||
app->facility = args->facility;
|
||||
app->species = args->species;
|
||||
app->options = SaveData_GetOptions(app->saveData);
|
||||
|
||||
LoadBackgrounds(app);
|
||||
|
||||
app->msgLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_BATTLE_FRONTIER_RECORDS, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
app->strTemplate = StringTemplate_Default(HEAP_ID_FRONTIER_RECORD_APP);
|
||||
app->displayStr = String_Init(800, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
app->fmtStr = String_Init(800, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
Font_LoadTextPalette(0, 13 * PALETTE_SIZE_BYTES, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Font_LoadScreenIndicatorsPalette(0, 12 * PALETTE_SIZE_BYTES, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
FrontierRecordsApp_InitWindows(app->bgConfig, app->windows, GetWindowGroup(app->facility));
|
||||
SetVBlankCallback(VBlankCallback, app);
|
||||
*state = 0;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int BattleFrontierRecordsApp_Main(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
FrontierRecordsApp *app = ApplicationManager_Data(appMan);
|
||||
|
||||
switch (*state) {
|
||||
case 0:
|
||||
if (State_FadeInApp(app) == TRUE) {
|
||||
ChangeState(app, state, 1);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (State_ViewRecord(app) == TRUE) {
|
||||
ChangeState(app, state, 2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (State_FadeOutApp(app) == TRUE) {
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int BattleFrontierRecordsApp_Exit(ApplicationManager *appMan, int *state)
|
||||
{
|
||||
FrontierRecordsApp *app = ApplicationManager_Data(appMan);
|
||||
|
||||
PaletteData_FreeBuffer(app->plttData, PLTTBUF_MAIN_OBJ);
|
||||
PaletteData_FreeBuffer(app->plttData, PLTTBUF_MAIN_BG);
|
||||
PaletteData_Free(app->plttData);
|
||||
|
||||
app->plttData = NULL;
|
||||
|
||||
MessageLoader_Free(app->msgLoader);
|
||||
StringTemplate_Free(app->strTemplate);
|
||||
String_Free(app->displayStr);
|
||||
String_Free(app->fmtStr);
|
||||
|
||||
FrontierRecordsApp_FreeWindows(app->windows, GetWindowGroup(app->facility));
|
||||
FreeBackgrounds(app->bgConfig);
|
||||
|
||||
ApplicationManager_FreeData(appMan);
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
Heap_Destroy(HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL State_FadeInApp(FrontierRecordsApp *app)
|
||||
{
|
||||
switch (app->subState) {
|
||||
case 0:
|
||||
app->subState++;
|
||||
break;
|
||||
case 1:
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_IN, FADE_TYPE_BRIGHTNESS_IN, COLOR_BLACK, 6, 3, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
DisplayRecords(app);
|
||||
app->subState++;
|
||||
break;
|
||||
case 2:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL State_ViewRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
switch (app->subState) {
|
||||
case 0:
|
||||
app->subState++;
|
||||
break;
|
||||
case 1:
|
||||
if (JOY_HELD(PAD_BUTTON_A) || JOY_HELD(PAD_BUTTON_B)) {
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static BOOL State_FadeOutApp(FrontierRecordsApp *app)
|
||||
{
|
||||
switch (app->subState) {
|
||||
case 0:
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_OUT, FADE_TYPE_BRIGHTNESS_OUT, COLOR_BLACK, 6, 1, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
app->subState++;
|
||||
break;
|
||||
case 1:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void VBlankCallback(void *data)
|
||||
{
|
||||
FrontierRecordsApp *app = data;
|
||||
|
||||
if (app->plttData != NULL) {
|
||||
PaletteData_CommitFadedBuffers(app->plttData);
|
||||
}
|
||||
|
||||
Bg_RunScheduledUpdates(app->bgConfig);
|
||||
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
|
||||
}
|
||||
|
||||
static void SetGXBanks(void)
|
||||
{
|
||||
GXBanks banks = {
|
||||
GX_VRAM_BG_128_A,
|
||||
GX_VRAM_BGEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_BG_128_C,
|
||||
GX_VRAM_SUB_BGEXTPLTT_NONE,
|
||||
GX_VRAM_OBJ_128_B,
|
||||
GX_VRAM_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_OBJ_16_I,
|
||||
GX_VRAM_SUB_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_TEX_NONE,
|
||||
GX_VRAM_TEXPLTT_NONE
|
||||
};
|
||||
|
||||
GXLayers_SetBanks(&banks);
|
||||
}
|
||||
|
||||
static void InitBackgrounds(BgConfig *bgConfig)
|
||||
{
|
||||
GraphicsModes graphicsModes = {
|
||||
GX_DISPMODE_GRAPHICS,
|
||||
GX_BGMODE_0,
|
||||
GX_BGMODE_0,
|
||||
GX_BG0_AS_2D
|
||||
};
|
||||
|
||||
SetAllGraphicsModes(&graphicsModes);
|
||||
|
||||
BgTemplate bgTemplate = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_MAIN_0, &bgTemplate, BG_TYPE_STATIC);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_0, 32, 0, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_MAIN_0);
|
||||
|
||||
BgTemplate bgTemplate2 = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x1000,
|
||||
.charBase = GX_BG_CHARBASE_0x0c000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_MAIN_2, &bgTemplate2, BG_TYPE_STATIC);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_2, 32, 0, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_MAIN_2);
|
||||
|
||||
BgTemplate bgTemplateSub = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x3000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(bgConfig, BG_LAYER_SUB_2, &bgTemplateSub, BG_TYPE_STATIC);
|
||||
Bg_ClearTilesRange(BG_LAYER_SUB_2, 32, 0, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Bg_ClearTilemap(bgConfig, BG_LAYER_SUB_2);
|
||||
|
||||
G2_SetBG0Priority(0);
|
||||
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, TRUE);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, TRUE);
|
||||
}
|
||||
|
||||
static void LoadBackgrounds(FrontierRecordsApp *app)
|
||||
{
|
||||
SetGXBanks();
|
||||
InitBackgrounds(app->bgConfig);
|
||||
|
||||
app->plttData = PaletteData_New(HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
PaletteData_AllocBuffer(app->plttData, PLTTBUF_MAIN_OBJ, PALETTE_SIZE_BYTES * SLOTS_PER_PALETTE, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
PaletteData_AllocBuffer(app->plttData, PLTTBUF_MAIN_BG, PALETTE_SIZE_BYTES * SLOTS_PER_PALETTE, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
LoadMainBackground(app, BG_LAYER_MAIN_2);
|
||||
LoadMainBackgroundPalette();
|
||||
LoadSubBackground(app, BG_LAYER_SUB_2);
|
||||
}
|
||||
|
||||
static void FreeBackgrounds(BgConfig *app)
|
||||
{
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_BG3 | GX_PLANEMASK_OBJ, FALSE);
|
||||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_BG3 | GX_PLANEMASK_OBJ, FALSE);
|
||||
|
||||
Bg_FreeTilemapBuffer(app, BG_LAYER_MAIN_0);
|
||||
Bg_FreeTilemapBuffer(app, BG_LAYER_MAIN_2);
|
||||
Bg_FreeTilemapBuffer(app, BG_LAYER_SUB_2);
|
||||
Heap_Free(app);
|
||||
}
|
||||
|
||||
static void ChangeState(FrontierRecordsApp *app, int *state, int newState)
|
||||
{
|
||||
app->subState = 0;
|
||||
*state = newState;
|
||||
}
|
||||
|
||||
static u8 GetWindowGroup(u8 facility)
|
||||
{
|
||||
u8 windowGroup = 0;
|
||||
|
||||
switch (facility) {
|
||||
case FRONTIER_RECORDS_APP_FACTORY:
|
||||
case 3:
|
||||
windowGroup = WINDOW_GROUP_FACTORY;
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_HALL:
|
||||
windowGroup = WINDOW_GROUP_HALL;
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_CASTLE:
|
||||
windowGroup = WINDOW_GROUP_CASTLE;
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_ARCADE:
|
||||
windowGroup = WINDOW_GROUP_ARCADE;
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_TOWER:
|
||||
windowGroup = WINDOW_GROUP_TOWER;
|
||||
break;
|
||||
}
|
||||
|
||||
return windowGroup;
|
||||
}
|
||||
|
||||
static void LoadMainBackground(FrontierRecordsApp *app, enum BgLayer bgLayer)
|
||||
{
|
||||
NARC *narc = NARC_ctor(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(narc, BATTLE_FRONTIER_RECORDS_APP_TILES, app->bgConfig, bgLayer, 0, 0, TRUE, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, BATTLE_FRONTIER_RECORDS_APP_TILEMAP, app->bgConfig, bgLayer, 0, 0, TRUE, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
NARC_dtor(narc);
|
||||
}
|
||||
|
||||
static void LoadMainBackgroundPalette(void)
|
||||
{
|
||||
NNSG2dPaletteData *plttData;
|
||||
void *pltt = Graphics_GetPlttData(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, BATTLE_FRONTIER_RECORDS_APP_PLTT, &plttData, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
DC_FlushRange(plttData->pRawData, PALETTE_SIZE_BYTES * 2);
|
||||
GX_LoadBGPltt(plttData->pRawData, 0, PALETTE_SIZE_BYTES * 2);
|
||||
Heap_Free(pltt);
|
||||
}
|
||||
|
||||
static void LoadSubBackground(FrontierRecordsApp *app, enum BgLayer bgLayer)
|
||||
{
|
||||
NARC *narc = NARC_ctor(NARC_INDEX_GRAPHIC__POKETCH, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(narc, unavailable_bg_tiles_NCGR_lz, app->bgConfig, bgLayer, 0, 0, TRUE, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(narc, unavailable_NSCR_lz, app->bgConfig, bgLayer, 0, 0, TRUE, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
Graphics_LoadPaletteFromOpenNARC(narc, NARC_INDEX_GRAPHIC__POKETCH, PAL_LOAD_SUB_BG, generic_bg_tiles_NCLR, PALETTE_SIZE_BYTES, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
NARC_dtor(narc);
|
||||
}
|
||||
|
||||
static u8 PrintMessage(FrontierRecordsApp *app, Window *window, int entryID, u32 x, u32 y, u8 fgColor, u8 shadowColor, u8 bgColor, u8 font, u8 fillBackground, int alignment)
|
||||
{
|
||||
if (fillBackground) {
|
||||
Window_FillTilemap(window, bgColor);
|
||||
}
|
||||
MessageLoader_GetString(app->msgLoader, entryID, app->fmtStr);
|
||||
StringTemplate_Format(app->strTemplate, app->displayStr, app->fmtStr);
|
||||
|
||||
switch (alignment) {
|
||||
case TEXT_ALIGN_CENTER:
|
||||
x -= (Font_CalcStringWidth(FONT_SYSTEM, app->displayStr, 0) + 1) / 2;
|
||||
break;
|
||||
case TEXT_ALIGN_RIGHT:
|
||||
x -= Font_CalcStringWidth(FONT_SYSTEM, app->displayStr, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
return Text_AddPrinterWithParamsAndColor(window, font, app->displayStr, x, y, TEXT_SPEED_INSTANT, TEXT_COLOR(fgColor, shadowColor, bgColor), NULL);
|
||||
}
|
||||
|
||||
static u8 PrintBasicMessage(FrontierRecordsApp *app, Window *window, int entryID, u8 font)
|
||||
{
|
||||
return PrintMessage(app, window, entryID, 0, 0, 1, 2, 0, FONT_SYSTEM, font, TEXT_ALIGN_LEFT);
|
||||
}
|
||||
|
||||
static void SetStringTemplateNumber(FrontierRecordsApp *app, u32 idx, s32 num)
|
||||
{
|
||||
StringTemplate_SetNumber(app->strTemplate, idx, num, 4, PADDING_MODE_SPACES, CHARSET_MODE_EN);
|
||||
}
|
||||
|
||||
static void DisplayRecords(FrontierRecordsApp *app)
|
||||
{
|
||||
switch (app->facility) {
|
||||
case FRONTIER_RECORDS_APP_FACTORY:
|
||||
case 3:
|
||||
DisplayBattleFactoryLevel50Record(app);
|
||||
DisplayBattleFactoryOpenLevelRecord(app);
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_HALL:
|
||||
DispalyBattleHallRecord(app);
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_CASTLE:
|
||||
DisplayBattleCastleRecord(app);
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_ARCADE:
|
||||
DisplayBattleArcadeRecord(app);
|
||||
break;
|
||||
case FRONTIER_RECORDS_APP_TOWER:
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_SINGLE || app->challengeType == FRONTIER_CHALLENGE_DOUBLE) {
|
||||
DisplayBattleTowerSoloRecord(app);
|
||||
} else {
|
||||
DisplayBattleTowerMultiRecord(app);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
DisplayBattleArcadeRecord(app);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void DisplayBattleFactoryLevel50Record(FrontierRecordsApp *app)
|
||||
{
|
||||
Window_FillTilemap(&app->windows[WINDOW_HEADER], 0);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_BattleFactory, 8, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
|
||||
int entryID;
|
||||
u32 x;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_SINGLE) {
|
||||
entryID = BattleFrontierRecords_Text_SingleRecord;
|
||||
x = 216;
|
||||
} else if (app->challengeType == FRONTIER_CHALLENGE_DOUBLE) {
|
||||
entryID = BattleFrontierRecords_Text_DoubleRecord;
|
||||
x = 216;
|
||||
} else {
|
||||
entryID = BattleFrontierRecords_Text_MultiRecord;
|
||||
x = 216;
|
||||
}
|
||||
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], entryID, x, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HEADER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_HEADER], BattleFrontierRecords_Text_Level50, FONT_MESSAGE);
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_HEADER], BattleFrontierRecords_Text_RentalTrade, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_FACTORY_LEVEL_50_HEADER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_LATEST], GetBattleFactoryLatestStreakEntryID(app, FALSE), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E430(0, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_LATEST], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E488(0, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_LATEST], BattleFrontierRecords_Text_Number, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_FACTORY_LEVEL_50_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_RECORD], BattleFrontierRecords_Text_Record, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E45C(0, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_RECORD], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E4B4(0, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_LEVEL_50_RECORD], BattleFrontierRecords_Text_Number, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_FACTORY_LEVEL_50_RECORD]);
|
||||
}
|
||||
|
||||
static void DisplayBattleFactoryOpenLevelRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_HEADER], BattleFrontierRecords_Text_OpenLevel, FONT_MESSAGE);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_FACTORY_OPEN_LEVEL_HEADER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_LATEST], GetBattleFactoryLatestStreakEntryID(app, TRUE), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E430(1, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_LATEST], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E488(1, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_LATEST], BattleFrontierRecords_Text_Number, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_FACTORY_OPEN_LEVEL_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_RECORD], BattleFrontierRecords_Text_Record, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E45C(1, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_RECORD], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E4B4(1, app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_FACTORY_OPEN_LEVEL_RECORD], BattleFrontierRecords_Text_Number, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_FACTORY_OPEN_LEVEL_RECORD]);
|
||||
}
|
||||
|
||||
static u32 GetBattleFactoryLatestStreakEntryID(FrontierRecordsApp *app, u8 openLevel)
|
||||
{
|
||||
u32 v1 = !openLevel ? 102 : 104;
|
||||
|
||||
u8 streakIsActive;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_MULTI_WFC) {
|
||||
streakIsActive = sub_02030698(SaveData_GetBattleFrontier(app->saveData), v1, sub_0205E6A8(v1));
|
||||
} else {
|
||||
streakIsActive = sub_020300E0(sub_020300F4(app->saveData), 10, (openLevel * 4) + app->challengeType, NULL);
|
||||
}
|
||||
|
||||
if (streakIsActive == TRUE) {
|
||||
return BattleFrontierRecords_Text_Current;
|
||||
}
|
||||
|
||||
return BattleFrontierRecords_Text_Prev;
|
||||
}
|
||||
|
||||
static void DispalyBattleHallRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
Window_FillTilemap(&app->windows[WINDOW_HEADER], 0);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_BattleHall, 8, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
|
||||
int entryID;
|
||||
u32 x;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_SINGLE) {
|
||||
entryID = BattleFrontierRecords_Text_SingleRecord;
|
||||
x = 216;
|
||||
} else if (app->challengeType == FRONTIER_CHALLENGE_DOUBLE) {
|
||||
entryID = BattleFrontierRecords_Text_DoubleRecord;
|
||||
x = 216;
|
||||
} else {
|
||||
entryID = BattleFrontierRecords_Text_MultiRecord;
|
||||
x = 216;
|
||||
}
|
||||
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], entryID, x, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HEADER]);
|
||||
|
||||
SetStringTemplateSpecies(app);
|
||||
PrintMessage(app, &app->windows[WINDOW_HALL_MON_NAME], BattleFrontierRecords_Text_MonsRecord, 0, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HALL_MON_NAME]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_HALL_LATEST], BattleFrontierRecords_Text_Prev, FONT_MESSAGE);
|
||||
|
||||
u16 streak;
|
||||
if (app->species != sub_02030698(SaveData_GetBattleFrontier(app->saveData), sub_0205E55C(app->challengeType), sub_0205E6A8(sub_0205E55C(app->challengeType)))) {
|
||||
streak = 0;
|
||||
} else {
|
||||
streak = sub_02030698(app->frontier, sub_0205E50C(app->challengeType), 0xFF);
|
||||
}
|
||||
|
||||
SetStringTemplateNumber(app, 0, streak);
|
||||
PrintMessage(app, &app->windows[WINDOW_HALL_LATEST], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HALL_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_HALL_RECORD], BattleFrontierRecords_Text_Record, FONT_MESSAGE);
|
||||
|
||||
int resultCode;
|
||||
BattleFrontierStage *frontierStage = sub_020308A0(app->saveData, HEAP_ID_FIELD2, &resultCode);
|
||||
if (resultCode != LOAD_RESULT_OK) {
|
||||
streak = 0;
|
||||
} else {
|
||||
streak = sub_020308BC(app->saveData, frontierStage, sub_0205E584(app->challengeType), app->species);
|
||||
}
|
||||
|
||||
if (frontierStage != NULL) {
|
||||
Heap_Free(frontierStage);
|
||||
}
|
||||
|
||||
SetStringTemplateNumber(app, 0, streak);
|
||||
PrintMessage(app, &app->windows[WINDOW_HALL_RECORD], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HALL_RECORD]);
|
||||
}
|
||||
|
||||
static void SetStringTemplateSpecies(FrontierRecordsApp *app)
|
||||
{
|
||||
MessageLoader *loader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_FRONTIER_RECORD_APP);
|
||||
String *string = MessageLoader_GetNewString(loader, app->species);
|
||||
|
||||
MessageLoader_Free(loader);
|
||||
StringTemplate_SetString(app->strTemplate, 0, string, 0, 0, GAME_LANGUAGE);
|
||||
String_Free(string);
|
||||
}
|
||||
|
||||
static void DisplayBattleCastleRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
Window_FillTilemap(&app->windows[WINDOW_HEADER], 0);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_BattleCastle, 8, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
|
||||
int entryID;
|
||||
u32 x;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_SINGLE) {
|
||||
entryID = BattleFrontierRecords_Text_SingleRecord;
|
||||
x = 216;
|
||||
} else if (app->challengeType == FRONTIER_CHALLENGE_DOUBLE) {
|
||||
entryID = BattleFrontierRecords_Text_DoubleRecord;
|
||||
x = 216;
|
||||
} else {
|
||||
entryID = BattleFrontierRecords_Text_MultiRecord;
|
||||
x = 216;
|
||||
}
|
||||
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], entryID, x, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HEADER]);
|
||||
|
||||
PrintMessage(app, &app->windows[WINDOW_CASTLE_POINTS], BattleFrontierRecords_Text_CastlePoints, 96, 0, 1, 2, 0, FONT_SYSTEM, TRUE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_CASTLE_POINTS]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_CASTLES_LATEST], GetBattleCastleLatestStreakEntryID(app), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E5E0(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_CASTLES_LATEST], BattleFrontierRecords_Text_WinStreakTemplate, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(SaveData_GetBattleFrontier(app->saveData), sub_0205E630(app->challengeType), sub_0205E6A8(sub_0205E630(app->challengeType))));
|
||||
PrintMessage(app, &app->windows[WINDOW_CASTLES_LATEST], BattleFrontierRecords_Text_CP, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_CASTLES_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_CASTLES_RECORD], BattleFrontierRecords_Text_Record, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E608(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_CASTLES_RECORD], BattleFrontierRecords_Text_WinStreakTemplate, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(SaveData_GetBattleFrontier(app->saveData), sub_0205E680(app->challengeType), sub_0205E6A8(sub_0205E680(app->challengeType))));
|
||||
PrintMessage(app, &app->windows[WINDOW_CASTLES_RECORD], BattleFrontierRecords_Text_CP, 224, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_CASTLES_RECORD]);
|
||||
}
|
||||
|
||||
static u32 GetBattleCastleLatestStreakEntryID(FrontierRecordsApp *app)
|
||||
{
|
||||
u8 isActive;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_MULTI_WFC) {
|
||||
isActive = sub_02030698(SaveData_GetBattleFrontier(app->saveData), 108, sub_0205E6A8(108));
|
||||
} else {
|
||||
isActive = sub_02030470(sub_0203041C(app->saveData), 9, app->challengeType, 0, NULL);
|
||||
}
|
||||
|
||||
if (isActive == 1) {
|
||||
return BattleFrontierRecords_Text_Current;
|
||||
}
|
||||
|
||||
return BattleFrontierRecords_Text_Prev;
|
||||
}
|
||||
|
||||
static void DisplayBattleArcadeRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
Window_FillTilemap(&app->windows[WINDOW_HEADER], 0);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_BattleArcade, 8, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
|
||||
int entryID;
|
||||
u32 x;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_SINGLE) {
|
||||
entryID = BattleFrontierRecords_Text_SingleRecord;
|
||||
x = 216;
|
||||
} else if (app->challengeType == FRONTIER_CHALLENGE_DOUBLE) {
|
||||
entryID = BattleFrontierRecords_Text_DoubleRecord;
|
||||
x = 216;
|
||||
} else {
|
||||
entryID = BattleFrontierRecords_Text_MultiRecord;
|
||||
x = 216;
|
||||
}
|
||||
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], entryID, x, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HEADER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_ARCADE_LATEST], GetBattleArcadeLatestStreakEntryID(app), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E700(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_ARCADE_LATEST], BattleFrontierRecords_Text_GamesCleared, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_ARCADE_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_ARCADE_RECORD], 31, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E728(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_ARCADE_RECORD], BattleFrontierRecords_Text_GamesCleared, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_ARCADE_RECORD]);
|
||||
}
|
||||
|
||||
static u32 GetBattleArcadeLatestStreakEntryID(FrontierRecordsApp *app)
|
||||
{
|
||||
u8 isActive;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_MULTI_WFC) {
|
||||
isActive = sub_02030698(SaveData_GetBattleFrontier(app->saveData), 110, sub_0205E6A8(110));
|
||||
} else {
|
||||
isActive = sub_02030600(sub_020305B8(app->saveData), 8, app->challengeType, 0, NULL);
|
||||
}
|
||||
|
||||
if (isActive == 1) {
|
||||
return BattleFrontierRecords_Text_Current;
|
||||
}
|
||||
|
||||
return BattleFrontierRecords_Text_Prev;
|
||||
}
|
||||
|
||||
static void DisplayBattleTowerSoloRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
Window_FillTilemap(&app->windows[WINDOW_HEADER], 0);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_BattleTower, 8, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
|
||||
int entryID;
|
||||
u32 x;
|
||||
if (app->challengeType == FRONTIER_CHALLENGE_SINGLE) {
|
||||
entryID = BattleFrontierRecords_Text_SingleRecord;
|
||||
x = 216;
|
||||
} else {
|
||||
entryID = BattleFrontierRecords_Text_DoubleRecord;
|
||||
x = 216;
|
||||
}
|
||||
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], entryID, x, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HEADER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_SOLO_LATEST], GetBattleTowerLatestStreakEntryID(app, app->challengeType), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E750(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_TOWER_SOLO_LATEST], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_SOLO_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_SOLO_RECORD], 31, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E790(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_TOWER_SOLO_RECORD], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_SOLO_RECORD]);
|
||||
}
|
||||
|
||||
static void DisplayBattleTowerMultiRecord(FrontierRecordsApp *app)
|
||||
{
|
||||
Window_FillTilemap(&app->windows[WINDOW_HEADER], 0);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_BattleTower, 8, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_LEFT);
|
||||
PrintMessage(app, &app->windows[WINDOW_HEADER], BattleFrontierRecords_Text_MultiRecord, 216, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_RIGHT);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_HEADER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_MULTI_W_TRAINER], BattleFrontierRecords_Text_MultiWithTrainer, FONT_MESSAGE);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_MULTI_W_TRAINER]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_MULTI_LATEST], GetBattleTowerLatestStreakEntryID(app, app->challengeType), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E750(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_TOWER_MULTI_LATEST], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_MULTI_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_MULTI_RECORD], BattleFrontierRecords_Text_Record, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E790(app->challengeType), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_TOWER_MULTI_RECORD], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_MULTI_RECORD]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_MULTI_W_FRIEND], BattleFrontierRecords_Text_MultiWithFriend, FONT_MESSAGE);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_MULTI_W_FRIEND]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_W_FRIEND_LATEST], GetBattleTowerLatestStreakEntryID(app, BATTLE_TOWER_MODE_LINK_MULTI), FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E750(3), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_TOWER_W_FRIEND_LATEST], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_W_FRIEND_LATEST]);
|
||||
|
||||
PrintBasicMessage(app, &app->windows[WINDOW_TOWER_W_FRIEND_RECORD], BattleFrontierRecords_Text_Record, FONT_MESSAGE);
|
||||
SetStringTemplateNumber(app, 0, sub_02030698(app->frontier, sub_0205E790(3), 0xFF));
|
||||
PrintMessage(app, &app->windows[WINDOW_TOWER_W_FRIEND_RECORD], BattleFrontierRecords_Text_WinStreak, 112, 0, 1, 2, 0, FONT_SYSTEM, FALSE, TEXT_ALIGN_CENTER);
|
||||
Window_ScheduleCopyToVRAM(&app->windows[WINDOW_TOWER_W_FRIEND_RECORD]);
|
||||
}
|
||||
|
||||
static u32 GetBattleTowerLatestStreakEntryID(FrontierRecordsApp *app, u8 towerMode)
|
||||
{
|
||||
UnkStruct_0202D750 *v2 = sub_0202D750(app->saveData);
|
||||
|
||||
u16 v0;
|
||||
switch (towerMode) {
|
||||
case BATTLE_TOWER_MODE_SINGLE:
|
||||
v0 = 8;
|
||||
break;
|
||||
case BATTLE_TOWER_MODE_DOUBLE:
|
||||
v0 = 9;
|
||||
break;
|
||||
case BATTLE_TOWER_MODE_MULTI:
|
||||
v0 = 10;
|
||||
break;
|
||||
case BATTLE_TOWER_MODE_LINK_MULTI:
|
||||
v0 = 11;
|
||||
break;
|
||||
case BATTLE_TOWER_MODE_WIFI:
|
||||
v0 = 12;
|
||||
break;
|
||||
case BATTLE_TOWER_MODE_6:
|
||||
v0 = 15;
|
||||
break;
|
||||
default:
|
||||
v0 = 8;
|
||||
break;
|
||||
}
|
||||
|
||||
int isActive = sub_0202D414(v2, v0, 0);
|
||||
|
||||
if (isActive == TRUE) {
|
||||
return BattleFrontierRecords_Text_Current;
|
||||
}
|
||||
|
||||
return BattleFrontierRecords_Text_Prev;
|
||||
}
|
||||
295
src/applications/frontier/records/windows.c
Normal file
295
src/applications/frontier/records/windows.c
Normal file
|
|
@ -0,0 +1,295 @@
|
|||
#include "applications/frontier/records/windows.h"
|
||||
|
||||
#include <nitro.h>
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
static const WindowTemplate sFactoryWinTemplates[] = {
|
||||
[WINDOW_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 30,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 1,
|
||||
},
|
||||
[WINDOW_FACTORY_LEVEL_50_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 7,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 61,
|
||||
},
|
||||
[WINDOW_FACTORY_LEVEL_50_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 10,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 117,
|
||||
},
|
||||
[WINDOW_FACTORY_LEVEL_50_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 12,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 173,
|
||||
},
|
||||
[WINDOW_FACTORY_OPEN_LEVEL_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
.width = 16,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 229,
|
||||
},
|
||||
[WINDOW_FACTORY_OPEN_LEVEL_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 18,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 261,
|
||||
},
|
||||
[WINDOW_FACTORY_OPEN_LEVEL_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 20,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 317,
|
||||
},
|
||||
};
|
||||
|
||||
static const WindowTemplate sHallWinTemplates[] = {
|
||||
[WINDOW_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 1,
|
||||
},
|
||||
[WINDOW_HALL_MON_NAME] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 7,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 57,
|
||||
},
|
||||
[WINDOW_HALL_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 10,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 113,
|
||||
},
|
||||
[WINDOW_HALL_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 13,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 169,
|
||||
},
|
||||
};
|
||||
|
||||
static const WindowTemplate sCastleWinTemplates[] = {
|
||||
[WINDOW_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 1,
|
||||
},
|
||||
[WINDOW_CASTLE_POINTS] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 18,
|
||||
.tilemapTop = 7,
|
||||
.width = 12,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 57,
|
||||
},
|
||||
[WINDOW_CASTLES_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 10,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 81,
|
||||
},
|
||||
[WINDOW_CASTLES_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 13,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 137,
|
||||
},
|
||||
};
|
||||
|
||||
static const WindowTemplate sArcadeWinTemplates[] = {
|
||||
[WINDOW_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 1,
|
||||
},
|
||||
[WINDOW_ARCADE_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 8,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 57,
|
||||
},
|
||||
[WINDOW_ARCADE_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 11,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 113,
|
||||
},
|
||||
};
|
||||
|
||||
static const WindowTemplate sTowerWinTemplates[] = {
|
||||
[WINDOW_HEADER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 2,
|
||||
.width = 30,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 1,
|
||||
},
|
||||
[WINDOW_TOWER_MULTI_W_TRAINER] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 7,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 61,
|
||||
},
|
||||
[WINDOW_TOWER_SOLO_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 7,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 117,
|
||||
},
|
||||
[WINDOW_TOWER_SOLO_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 10,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 173,
|
||||
},
|
||||
[WINDOW_TOWER_MULTI_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 10,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 117,
|
||||
},
|
||||
[WINDOW_TOWER_MULTI_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 12,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 173,
|
||||
},
|
||||
[WINDOW_TOWER_MULTI_W_FRIEND] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 15,
|
||||
.width = 16,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 229,
|
||||
},
|
||||
[WINDOW_TOWER_W_FRIEND_LATEST] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 18,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 261,
|
||||
},
|
||||
[WINDOW_TOWER_W_FRIEND_RECORD] = {
|
||||
.bgLayer = BG_LAYER_MAIN_0,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 20,
|
||||
.width = 28,
|
||||
.height = 2,
|
||||
.palette = 13,
|
||||
.baseTile = 317,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct {
|
||||
const WindowTemplate *templates;
|
||||
u32 count;
|
||||
} sWinTemplates[] = {
|
||||
[WINDOW_GROUP_FACTORY] = { sFactoryWinTemplates, NELEMS(sFactoryWinTemplates) },
|
||||
[WINDOW_GROUP_HALL] = { sHallWinTemplates, NELEMS(sHallWinTemplates) },
|
||||
[WINDOW_GROUP_CASTLE] = { sCastleWinTemplates, NELEMS(sCastleWinTemplates) },
|
||||
[WINDOW_GROUP_ARCADE] = { sArcadeWinTemplates, NELEMS(sArcadeWinTemplates) },
|
||||
[WINDOW_GROUP_TOWER] = { sTowerWinTemplates, NELEMS(sTowerWinTemplates) }
|
||||
};
|
||||
|
||||
void FrontierRecordsApp_InitWindows(BgConfig *bgConfig, Window *window, u8 facility)
|
||||
{
|
||||
const WindowTemplate *templates = sWinTemplates[facility].templates;
|
||||
u32 numTemplates = sWinTemplates[facility].count;
|
||||
|
||||
for (u8 i = 0; i < numTemplates; i++) {
|
||||
Window_AddFromTemplate(bgConfig, &window[i], &templates[i]);
|
||||
Window_FillTilemap(&window[i], 0);
|
||||
}
|
||||
}
|
||||
|
||||
void FrontierRecordsApp_FreeWindows(Window *windows, u8 facility)
|
||||
{
|
||||
u16 i;
|
||||
u32 numTemplates = sWinTemplates[facility].count;
|
||||
|
||||
for (i = 0; i < numTemplates; i++) {
|
||||
Window_Remove(&windows[i]);
|
||||
}
|
||||
}
|
||||
|
|
@ -974,8 +974,8 @@ pokeplatinum_c = files(
|
|||
'applications/frontier/battle_arcade/windows.c',
|
||||
'overlay109/ov109_021D0D80.c',
|
||||
'overlay109/ov109_021D3D50.c',
|
||||
'overlay110/ov110_021D0D80.c',
|
||||
'overlay110/ov110_021D2124.c',
|
||||
'applications/frontier/records/main.c',
|
||||
'applications/frontier/records/windows.c',
|
||||
'overlay111/ov111_021D0D80.c',
|
||||
'overlay111/ov111_021D2F80.c',
|
||||
'overlay111/ov111_021D33F4.c',
|
||||
|
|
|
|||
|
|
@ -3,6 +3,9 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "constants/field_base_tiles.h"
|
||||
#include "constants/menu.h"
|
||||
#include "constants/scrcmd.h"
|
||||
#include "generated/game_records.h"
|
||||
#include "generated/items.h"
|
||||
#include "generated/species.h"
|
||||
|
|
@ -15,7 +18,6 @@
|
|||
#include "field/field_system.h"
|
||||
#include "overlay005/ov5_021EB1A0.h"
|
||||
#include "overlay005/ov5_021ECE40.h"
|
||||
#include "overlay005/struct_ov5_021F6704_decl.h"
|
||||
|
||||
#include "bag.h"
|
||||
#include "berry_patch_graphics.h"
|
||||
|
|
@ -55,323 +57,294 @@
|
|||
#include "vars_flags.h"
|
||||
|
||||
#include "res/text/bank/battle_tower.h"
|
||||
#include "res/text/bank/menu_entries.h"
|
||||
|
||||
#define MAX_LIST_ENTRIES 120
|
||||
|
||||
typedef struct {
|
||||
s16 unk_00;
|
||||
s16 unk_02;
|
||||
} UnkStruct_ov5_02200C90;
|
||||
|
||||
struct UnkStruct_ov5_021F6704_t {
|
||||
typedef struct BattleHallRecordSelector {
|
||||
FieldSystem *fieldSystem;
|
||||
SysTask *unk_04;
|
||||
Window unk_08;
|
||||
Window *unk_18;
|
||||
String *unk_1C[120];
|
||||
MessageLoader *unk_1FC;
|
||||
StringTemplate *unk_200;
|
||||
u8 unk_204;
|
||||
u8 unk_205;
|
||||
u8 unk_206;
|
||||
u8 unk_207_0 : 1;
|
||||
u8 unk_207_1 : 1;
|
||||
u8 unk_207_2 : 6;
|
||||
u8 unk_208;
|
||||
u8 unk_209;
|
||||
u8 unk_20A;
|
||||
u8 unk_20B;
|
||||
u16 *unk_20C;
|
||||
u16 *unk_210;
|
||||
u16 *unk_214;
|
||||
u16 *unk_218;
|
||||
ListMenuTemplate unk_21C;
|
||||
ListMenu *unk_23C;
|
||||
u16 unk_240;
|
||||
u16 unk_242;
|
||||
StringList unk_244[120];
|
||||
u16 unk_604[120];
|
||||
u16 unk_6F4;
|
||||
};
|
||||
SysTask *task;
|
||||
Window window;
|
||||
Window *unusedWin;
|
||||
String *strs[MAX_LIST_ENTRIES];
|
||||
MessageLoader *msgLoader;
|
||||
StringTemplate *strTemplate;
|
||||
u8 startupDelay;
|
||||
u8 unused[2];
|
||||
u8 alwaysTrue : 1;
|
||||
u8 alwaysFalse : 1;
|
||||
u8 tilemapLeft;
|
||||
u8 tilemapTop;
|
||||
u8 unused2;
|
||||
u8 numOptions;
|
||||
u32 unused3;
|
||||
u16 *resultPtr;
|
||||
u16 *listPos;
|
||||
u16 *cursorPos;
|
||||
ListMenuTemplate menuTemplate;
|
||||
ListMenu *listMenu;
|
||||
u32 unused4;
|
||||
StringList strList[MAX_LIST_ENTRIES];
|
||||
u16 unused5[MAX_LIST_ENTRIES];
|
||||
u16 menuPos;
|
||||
} BattleHallRecordSelector;
|
||||
|
||||
static BattleHallRecordSelector *BattleHallRecordSelecter_New(FieldSystem *fieldSystem, u8 tilemapLeft, u8 tilemapTop, u8 menuPosInit, u8 alwaysTrue, u16 *resultPtr, StringTemplate *strTemplate, Window *unused, MessageLoader *msgLoader, u16 *listPos, u16 *cursorPos);
|
||||
static void BattleHallRecordSelector_Init(FieldSystem *fieldSystem, BattleHallRecordSelector *selector, u8 tilemapLeft, u8 tilemapTop, u8 menuPosInit, u8 alwaysTrue, u16 *resultPtr, StringTemplate *strTemplate, Window *unused, MessageLoader *msgLoader, u16 *listPos, u16 *cursorPos);
|
||||
static void BattleHallRecordSelector_OpenMenu(BattleHallRecordSelector *selector);
|
||||
static void BattleHallRecordSelector_Process(SysTask *task, void *context);
|
||||
static BOOL BattleHallRecordSelector_WaitForSelection(ScriptContext *ctx);
|
||||
static void BattleHallRecordSelector_Free(BattleHallRecordSelector *selector);
|
||||
static u16 *BattleHallRecordSelector_GetSpeciesList(enum HeapID heapID, int fileIndex, int *numElements);
|
||||
static void BattleHallRecordSelector_AddOption(BattleHallRecordSelector *selector, u32 entryID, u32 unused, u32 value);
|
||||
static void BattleHallRecordSelector_UpdateMessageLoader(BattleHallRecordSelector *selector, MessageLoader *msgLoader);
|
||||
static void BattleHallRecordSelector_AddToMenu(BattleHallRecordSelector *selector, u32 entryID, u32 unused, u32 value);
|
||||
static void BattleHallRecordSelector_InitListMenuTemplate(BattleHallRecordSelector *selector);
|
||||
static void UpdateItemColor(ListMenu *menu, u32 item, u8 yOffset);
|
||||
static void UpdateListPosition(ListMenu *listMenu, u32 item, u8 onInit);
|
||||
|
||||
static u16 *ov5_021F65FC(enum HeapID heapID, int fileIndex, int *pokedexLength);
|
||||
BOOL ScrCmd_2DE(ScriptContext *ctx);
|
||||
static BOOL ov5_021F65D4(ScriptContext *ctx);
|
||||
static void ov5_021F70CC(Pokemon *param0, int *param1, int *param2);
|
||||
BOOL ScrCmd_300(ScriptContext *ctx);
|
||||
BOOL ScrCmd_301(ScriptContext *ctx);
|
||||
BOOL ScrCmd_30F(ScriptContext *ctx);
|
||||
BOOL ScrCmd_2F1(ScriptContext *ctx);
|
||||
static void ov5_021F661C(UnkStruct_ov5_021F6704 *param0, MessageLoader *param1);
|
||||
static void ov5_021F6624(FieldSystem *fieldSystem, UnkStruct_ov5_021F6704 *param1, u8 param2, u8 param3, u8 param4, u8 param5, u16 *param6, StringTemplate *param7, Window *param8, MessageLoader *param9, u16 *param10, u16 *param11);
|
||||
UnkStruct_ov5_021F6704 *ov5_021F6704(FieldSystem *fieldSystem, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, StringTemplate *param6, Window *param7, MessageLoader *param8, u16 *param9, u16 *param10);
|
||||
void ov5_021F6760(UnkStruct_ov5_021F6704 *param0, u32 param1, u32 param2, u32 param3);
|
||||
static void ov5_021F6768(UnkStruct_ov5_021F6704 *param0);
|
||||
static void ov5_021F6830(UnkStruct_ov5_021F6704 *param0, u32 param1, u32 param2, u32 param3);
|
||||
static void ov5_021F68BC(UnkStruct_ov5_021F6704 *param0);
|
||||
static void ov5_021F69CC(ListMenu *param0, u32 param1, u8 param2);
|
||||
static void ov5_021F69F0(ListMenu *param0, u32 param1, u8 param2);
|
||||
static void ov5_021F6A34(SysTask *param0, void *param1);
|
||||
static void ov5_021F6AD4(UnkStruct_ov5_021F6704 *param0);
|
||||
|
||||
static u16 Unk_ov5_0220210C[] = {
|
||||
0x12,
|
||||
0x13,
|
||||
0x14,
|
||||
0x15,
|
||||
0x16,
|
||||
0x17,
|
||||
0x18,
|
||||
0x19,
|
||||
0x1A
|
||||
// TODO Create zukan_data.naix and populate constants here
|
||||
static u16 sAlphabeticalSpeciesLists[] = {
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26
|
||||
};
|
||||
|
||||
BOOL ScrCmd_2DE(ScriptContext *ctx)
|
||||
BOOL ScrCmd_ShowBattleHallRecordMonSelectionMenu(ScriptContext *ctx)
|
||||
{
|
||||
int v0;
|
||||
BattleFrontierStage *v1;
|
||||
u16 v2;
|
||||
u16 *v3;
|
||||
int v4, v5;
|
||||
MessageLoader *v6;
|
||||
MessageLoader *v7;
|
||||
int resultCode;
|
||||
BattleFrontierStage *frontierStage;
|
||||
u16 *speciesList;
|
||||
FieldSystem *fieldSystem = ctx->fieldSystem;
|
||||
UnkStruct_ov5_021F6704 *v9;
|
||||
StringTemplate **v10 = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE);
|
||||
u16 v11 = ScriptContext_GetVar(ctx);
|
||||
u16 v12 = ScriptContext_GetVar(ctx);
|
||||
u16 v13 = ScriptContext_ReadHalfWord(ctx);
|
||||
u16 v14 = ScriptContext_ReadHalfWord(ctx);
|
||||
u16 v15 = ScriptContext_ReadHalfWord(ctx);
|
||||
StringTemplate **strTemplate = FieldSystem_GetScriptMemberPtr(fieldSystem, SCRIPT_MANAGER_STR_TEMPLATE);
|
||||
u16 challengeType = ScriptContext_GetVar(ctx);
|
||||
u16 letterGroup = ScriptContext_GetVar(ctx);
|
||||
u16 resultVar = ScriptContext_ReadHalfWord(ctx);
|
||||
u16 listPosVar = ScriptContext_ReadHalfWord(ctx);
|
||||
u16 cursorPosVar = ScriptContext_ReadHalfWord(ctx);
|
||||
|
||||
ctx->data[0] = v13;
|
||||
ctx->data[0] = resultVar;
|
||||
|
||||
v6 = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_FIELD3);
|
||||
v9 = ov5_021F6704(fieldSystem, 20, 1, 0, 1, FieldSystem_GetVarPointer(fieldSystem, v13), *v10, FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_WINDOW), v6, FieldSystem_GetVarPointer(fieldSystem, v14), FieldSystem_GetVarPointer(fieldSystem, v15));
|
||||
v1 = sub_020308A0(fieldSystem->saveData, HEAP_ID_FIELD2, &v0);
|
||||
MessageLoader *monMsgLoader = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_FIELD3);
|
||||
BattleHallRecordSelector *selector = BattleHallRecordSelecter_New(fieldSystem, 20, 1, 0, TRUE, FieldSystem_GetVarPointer(fieldSystem, resultVar), *strTemplate, FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_WINDOW), monMsgLoader, FieldSystem_GetVarPointer(fieldSystem, listPosVar), FieldSystem_GetVarPointer(fieldSystem, cursorPosVar));
|
||||
frontierStage = sub_020308A0(fieldSystem->saveData, HEAP_ID_FIELD2, &resultCode);
|
||||
|
||||
if (v0 == 1) {
|
||||
v3 = ov5_021F65FC(32, Unk_ov5_0220210C[v12], &v5);
|
||||
if (resultCode == LOAD_RESULT_OK) {
|
||||
int speciesListSize;
|
||||
speciesList = BattleHallRecordSelector_GetSpeciesList(HEAP_ID_FIELD3, sAlphabeticalSpeciesLists[letterGroup], &speciesListSize);
|
||||
|
||||
for (v4 = 0; v4 < v5; v4++) {
|
||||
v2 = sub_020308BC(fieldSystem->saveData, v1, sub_0205E584(v11), v3[v4]);
|
||||
for (int i = 0; i < speciesListSize; i++) {
|
||||
u16 streak = sub_020308BC(fieldSystem->saveData, frontierStage, sub_0205E584(challengeType), speciesList[i]);
|
||||
|
||||
if (v2 != 0) {
|
||||
ov5_021F6760(v9, v3[v4], 0xff, v3[v4]);
|
||||
if (streak != 0) {
|
||||
BattleHallRecordSelector_AddOption(selector, speciesList[i], 0xff, speciesList[i]);
|
||||
}
|
||||
}
|
||||
|
||||
Heap_Free(v3);
|
||||
Heap_Free(speciesList);
|
||||
}
|
||||
|
||||
if (v1 != NULL) {
|
||||
Heap_Free(v1);
|
||||
if (frontierStage != NULL) {
|
||||
Heap_Free(frontierStage);
|
||||
}
|
||||
|
||||
v7 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_MENU_ENTRIES, HEAP_ID_FIELD3);
|
||||
MessageLoader *menuMsgLoader = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_MENU_ENTRIES, HEAP_ID_FIELD3);
|
||||
|
||||
ov5_021F661C(v9, v7);
|
||||
ov5_021F6760(v9, 12, 0xff, 0xfffe);
|
||||
BattleHallRecordSelector_UpdateMessageLoader(selector, menuMsgLoader);
|
||||
BattleHallRecordSelector_AddOption(selector, MenuEntries_Text_ListMenu_Exit, 0xff, (u16)MENU_CANCEL);
|
||||
|
||||
MessageLoader_Free(v7);
|
||||
MessageLoader_Free(menuMsgLoader);
|
||||
|
||||
ov5_021F661C(v9, v6);
|
||||
ov5_021F6768(v9);
|
||||
BattleHallRecordSelector_UpdateMessageLoader(selector, monMsgLoader);
|
||||
BattleHallRecordSelector_OpenMenu(selector);
|
||||
|
||||
ScriptContext_Pause(ctx, ov5_021F65D4);
|
||||
MessageLoader_Free(v6);
|
||||
ScriptContext_Pause(ctx, BattleHallRecordSelector_WaitForSelection);
|
||||
MessageLoader_Free(monMsgLoader);
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL ov5_021F65D4(ScriptContext *ctx)
|
||||
static BOOL BattleHallRecordSelector_WaitForSelection(ScriptContext *ctx)
|
||||
{
|
||||
FieldSystem *fieldSystem = ctx->fieldSystem;
|
||||
u16 *v1 = FieldSystem_GetVarPointer(fieldSystem, ctx->data[0]);
|
||||
u16 *selection = FieldSystem_GetVarPointer(fieldSystem, ctx->data[0]);
|
||||
|
||||
if (*v1 == 0xEEEE) {
|
||||
return 0;
|
||||
if (*selection == LIST_MENU_NO_SELECTION_YET) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static u16 *ov5_021F65FC(enum HeapID heapID, int fileIndex, int *pokedexLength)
|
||||
static u16 *BattleHallRecordSelector_GetSpeciesList(enum HeapID heapID, int fileIndex, int *numElements)
|
||||
{
|
||||
u32 pokedexSize;
|
||||
u16 *pokedex = LoadMemberFromNARC_OutFileSize(NARC_INDEX_APPLICATION__ZUKANLIST__ZKN_DATA__ZUKAN_DATA, fileIndex, 0, heapID, 0, &pokedexSize);
|
||||
*pokedexLength = pokedexSize / (sizeof(u16));
|
||||
u32 speciesListSize;
|
||||
u16 *speciesList = LoadMemberFromNARC_OutFileSize(NARC_INDEX_APPLICATION__ZUKANLIST__ZKN_DATA__ZUKAN_DATA, fileIndex, 0, heapID, 0, &speciesListSize);
|
||||
*numElements = speciesListSize / sizeof(u16);
|
||||
|
||||
return pokedex;
|
||||
return speciesList;
|
||||
}
|
||||
|
||||
static void ov5_021F661C(UnkStruct_ov5_021F6704 *param0, MessageLoader *param1)
|
||||
static void BattleHallRecordSelector_UpdateMessageLoader(BattleHallRecordSelector *selector, MessageLoader *msgLoader)
|
||||
{
|
||||
param0->unk_1FC = param1;
|
||||
return;
|
||||
selector->msgLoader = msgLoader;
|
||||
}
|
||||
|
||||
static void ov5_021F6624(FieldSystem *fieldSystem, UnkStruct_ov5_021F6704 *param1, u8 param2, u8 param3, u8 param4, u8 param5, u16 *param6, StringTemplate *param7, Window *param8, MessageLoader *param9, u16 *param10, u16 *param11)
|
||||
static void BattleHallRecordSelector_Init(FieldSystem *fieldSystem, BattleHallRecordSelector *selector, u8 tilemapLeft, u8 tilemapTop, u8 menuPosInit, u8 alwaysTrue, u16 *resultPtr, StringTemplate *strTemplate, Window *unused, MessageLoader *msgLoader, u16 *listPos, u16 *cursorPos)
|
||||
{
|
||||
int v0;
|
||||
int i;
|
||||
|
||||
param1->unk_1FC = param9;
|
||||
param1->unk_207_1 = 0;
|
||||
param1->unk_200 = param7;
|
||||
param1->fieldSystem = fieldSystem;
|
||||
param1->unk_210 = param6;
|
||||
selector->msgLoader = msgLoader;
|
||||
selector->alwaysFalse = FALSE;
|
||||
selector->strTemplate = strTemplate;
|
||||
selector->fieldSystem = fieldSystem;
|
||||
selector->resultPtr = resultPtr;
|
||||
|
||||
*param1->unk_210 = 0;
|
||||
*selector->resultPtr = 0;
|
||||
|
||||
param1->unk_214 = param10;
|
||||
param1->unk_218 = param11;
|
||||
param1->unk_207_0 = param5;
|
||||
param1->unk_206 = param4;
|
||||
param1->unk_208 = param2;
|
||||
param1->unk_209 = param3;
|
||||
param1->unk_20B = 0;
|
||||
param1->unk_18 = param8;
|
||||
param1->unk_204 = 3;
|
||||
param1->unk_6F4 = param4;
|
||||
selector->listPos = listPos;
|
||||
selector->cursorPos = cursorPos;
|
||||
selector->alwaysTrue = alwaysTrue;
|
||||
selector->unused[1] = menuPosInit;
|
||||
selector->tilemapLeft = tilemapLeft;
|
||||
selector->tilemapTop = tilemapTop;
|
||||
selector->numOptions = 0;
|
||||
selector->unusedWin = unused;
|
||||
selector->startupDelay = 3;
|
||||
selector->menuPos = menuPosInit;
|
||||
|
||||
for (v0 = 0; v0 < 120; v0++) {
|
||||
param1->unk_244[v0].entry = NULL;
|
||||
param1->unk_244[v0].index = 0;
|
||||
param1->unk_604[v0] = 0xff;
|
||||
for (i = 0; i < MAX_LIST_ENTRIES; i++) {
|
||||
selector->strList[i].entry = NULL;
|
||||
selector->strList[i].index = 0;
|
||||
selector->unused5[i] = 0xff;
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 120; v0++) {
|
||||
param1->unk_1C[v0] = String_Init(40 * 2, HEAP_ID_FIELD1);
|
||||
for (i = 0; i < MAX_LIST_ENTRIES; i++) {
|
||||
selector->strs[i] = String_Init(80, HEAP_ID_FIELD1);
|
||||
}
|
||||
|
||||
*param1->unk_210 = 0xEEEE;
|
||||
return;
|
||||
*selector->resultPtr = LIST_MENU_NO_SELECTION_YET;
|
||||
}
|
||||
|
||||
UnkStruct_ov5_021F6704 *ov5_021F6704(FieldSystem *fieldSystem, u8 param1, u8 param2, u8 param3, u8 param4, u16 *param5, StringTemplate *param6, Window *param7, MessageLoader *param8, u16 *param9, u16 *param10)
|
||||
static BattleHallRecordSelector *BattleHallRecordSelecter_New(FieldSystem *fieldSystem, u8 tilemapLeft, u8 tilemapTop, u8 menuPosInit, u8 alwaysTrue, u16 *resultPtr, StringTemplate *strTemplate, Window *unused, MessageLoader *msgLoader, u16 *listPos, u16 *cursorPos)
|
||||
{
|
||||
UnkStruct_ov5_021F6704 *v0;
|
||||
int v1;
|
||||
BattleHallRecordSelector *selector = Heap_Alloc(HEAP_ID_FIELD1, sizeof(BattleHallRecordSelector));
|
||||
|
||||
v0 = Heap_Alloc(HEAP_ID_FIELD1, sizeof(UnkStruct_ov5_021F6704));
|
||||
|
||||
if (v0 == NULL) {
|
||||
if (selector == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memset(v0, 0, sizeof(UnkStruct_ov5_021F6704));
|
||||
ov5_021F6624(fieldSystem, v0, param1, param2, param3, param4, param5, param6, param7, param8, param9, param10);
|
||||
memset(selector, 0, sizeof(BattleHallRecordSelector));
|
||||
BattleHallRecordSelector_Init(fieldSystem, selector, tilemapLeft, tilemapTop, menuPosInit, alwaysTrue, resultPtr, strTemplate, unused, msgLoader, listPos, cursorPos);
|
||||
|
||||
return v0;
|
||||
return selector;
|
||||
}
|
||||
|
||||
void ov5_021F6760(UnkStruct_ov5_021F6704 *param0, u32 param1, u32 param2, u32 param3)
|
||||
static void BattleHallRecordSelector_AddOption(BattleHallRecordSelector *selector, u32 entryID, u32 unused, u32 value)
|
||||
{
|
||||
ov5_021F6830(param0, param1, param2, param3);
|
||||
return;
|
||||
BattleHallRecordSelector_AddToMenu(selector, entryID, unused, value);
|
||||
}
|
||||
|
||||
static void ov5_021F6768(UnkStruct_ov5_021F6704 *param0)
|
||||
static void BattleHallRecordSelector_OpenMenu(BattleHallRecordSelector *selector)
|
||||
{
|
||||
if (param0->unk_20B > 8) {
|
||||
Window_Add(param0->fieldSystem->bgConfig, ¶m0->unk_08, 3, param0->unk_208, param0->unk_209, 11, 8 * 2, 13, 1);
|
||||
if (selector->numOptions > 8) {
|
||||
Window_Add(selector->fieldSystem->bgConfig, &selector->window, BG_LAYER_MAIN_3, selector->tilemapLeft, selector->tilemapTop, 11, 16, 13, 1);
|
||||
} else {
|
||||
Window_Add(param0->fieldSystem->bgConfig, ¶m0->unk_08, 3, param0->unk_208, param0->unk_209, 11, param0->unk_20B * 2, 13, 1);
|
||||
Window_Add(selector->fieldSystem->bgConfig, &selector->window, BG_LAYER_MAIN_3, selector->tilemapLeft, selector->tilemapTop, 11, selector->numOptions * 2, 13, 1);
|
||||
}
|
||||
|
||||
LoadStandardWindowGraphics(param0->fieldSystem->bgConfig, 3, 1024 - (18 + 12) - 9, 11, 0, HEAP_ID_FIELD1);
|
||||
Window_DrawStandardFrame(¶m0->unk_08, 1, 1024 - (18 + 12) - 9, 11);
|
||||
ov5_021F68BC(param0);
|
||||
LoadStandardWindowGraphics(selector->fieldSystem->bgConfig, BG_LAYER_MAIN_3, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_11, STANDARD_WINDOW_SYSTEM, HEAP_ID_FIELD1);
|
||||
Window_DrawStandardFrame(&selector->window, TRUE, BASE_TILE_STANDARD_WINDOW_FRAME, PLTT_11);
|
||||
BattleHallRecordSelector_InitListMenuTemplate(selector);
|
||||
|
||||
param0->unk_23C = ListMenu_New((const ListMenuTemplate *)¶m0->unk_21C, *param0->unk_214, *param0->unk_218, HEAP_ID_FIELD1);
|
||||
param0->unk_04 = SysTask_Start(ov5_021F6A34, param0, 0);
|
||||
|
||||
return;
|
||||
selector->listMenu = ListMenu_New(&selector->menuTemplate, *selector->listPos, *selector->cursorPos, HEAP_ID_FIELD1);
|
||||
selector->task = SysTask_Start(BattleHallRecordSelector_Process, selector, 0);
|
||||
}
|
||||
|
||||
static void ov5_021F6830(UnkStruct_ov5_021F6704 *param0, u32 param1, u32 param2, u32 param3)
|
||||
static void BattleHallRecordSelector_AddToMenu(BattleHallRecordSelector *selector, u32 entryID, u32 unused, u32 value)
|
||||
{
|
||||
int v0;
|
||||
void *v1;
|
||||
String *string = String_Init(80, HEAP_ID_FIELD1);
|
||||
|
||||
{
|
||||
String *v2 = String_Init(40 * 2, HEAP_ID_FIELD1);
|
||||
MessageLoader_GetString(selector->msgLoader, entryID, string);
|
||||
StringTemplate_Format(selector->strTemplate, selector->strs[selector->numOptions], string);
|
||||
selector->strList[selector->numOptions].entry = selector->strs[selector->numOptions];
|
||||
String_Free(string);
|
||||
|
||||
MessageLoader_GetString(param0->unk_1FC, param1, v2);
|
||||
StringTemplate_Format(param0->unk_200, param0->unk_1C[param0->unk_20B], v2);
|
||||
param0->unk_244[param0->unk_20B].entry = (const void *)param0->unk_1C[param0->unk_20B];
|
||||
String_Free(v2);
|
||||
}
|
||||
|
||||
if (param3 == 0xfa) {
|
||||
param0->unk_244[param0->unk_20B].index = 0xfffffffd;
|
||||
if (value == LIST_MENU_BUILDER_HEADER) {
|
||||
selector->strList[selector->numOptions].index = MENU_HEADER;
|
||||
} else {
|
||||
param0->unk_244[param0->unk_20B].index = param3;
|
||||
selector->strList[selector->numOptions].index = value;
|
||||
}
|
||||
|
||||
param0->unk_604[param0->unk_20B] = param2;
|
||||
param0->unk_20B++;
|
||||
|
||||
return;
|
||||
selector->unused5[selector->numOptions] = unused;
|
||||
selector->numOptions++;
|
||||
}
|
||||
|
||||
static void ov5_021F68BC(UnkStruct_ov5_021F6704 *param0)
|
||||
static void BattleHallRecordSelector_InitListMenuTemplate(BattleHallRecordSelector *selector)
|
||||
{
|
||||
param0->unk_21C.choices = param0->unk_244;
|
||||
param0->unk_21C.cursorCallback = ov5_021F69F0;
|
||||
param0->unk_21C.printCallback = ov5_021F69CC;
|
||||
param0->unk_21C.window = ¶m0->unk_08;
|
||||
param0->unk_21C.count = param0->unk_20B;
|
||||
param0->unk_21C.maxDisplay = 8;
|
||||
param0->unk_21C.headerXOffset = 1;
|
||||
param0->unk_21C.textXOffset = 12;
|
||||
param0->unk_21C.cursorXOffset = 2;
|
||||
param0->unk_21C.yOffset = 1;
|
||||
param0->unk_21C.textColorFg = 1;
|
||||
param0->unk_21C.textColorBg = 15;
|
||||
param0->unk_21C.textColorShadow = 2;
|
||||
param0->unk_21C.letterSpacing = 0;
|
||||
param0->unk_21C.lineSpacing = 0;
|
||||
param0->unk_21C.pagerMode = PAGER_MODE_LEFT_RIGHT_PAD;
|
||||
param0->unk_21C.fontID = FONT_SYSTEM;
|
||||
param0->unk_21C.cursorType = 0;
|
||||
param0->unk_21C.parent = (void *)param0;
|
||||
|
||||
return;
|
||||
selector->menuTemplate.choices = selector->strList;
|
||||
selector->menuTemplate.cursorCallback = UpdateListPosition;
|
||||
selector->menuTemplate.printCallback = UpdateItemColor;
|
||||
selector->menuTemplate.window = &selector->window;
|
||||
selector->menuTemplate.count = selector->numOptions;
|
||||
selector->menuTemplate.maxDisplay = 8;
|
||||
selector->menuTemplate.headerXOffset = 1;
|
||||
selector->menuTemplate.textXOffset = 12;
|
||||
selector->menuTemplate.cursorXOffset = 2;
|
||||
selector->menuTemplate.yOffset = 1;
|
||||
selector->menuTemplate.textColorFg = 1;
|
||||
selector->menuTemplate.textColorBg = 15;
|
||||
selector->menuTemplate.textColorShadow = 2;
|
||||
selector->menuTemplate.letterSpacing = 0;
|
||||
selector->menuTemplate.lineSpacing = 0;
|
||||
selector->menuTemplate.pagerMode = PAGER_MODE_LEFT_RIGHT_PAD;
|
||||
selector->menuTemplate.fontID = FONT_SYSTEM;
|
||||
selector->menuTemplate.cursorType = 0;
|
||||
selector->menuTemplate.parent = selector;
|
||||
}
|
||||
|
||||
static void ov5_021F69CC(ListMenu *param0, u32 param1, u8 param2)
|
||||
static void UpdateItemColor(ListMenu *menu, u32 item, u8 yOffset)
|
||||
{
|
||||
if (param1 == 0xfffffffd) {
|
||||
ListMenu_SetAltTextColors(param0, 3, 15, 4);
|
||||
if (item == MENU_HEADER) {
|
||||
ListMenu_SetAltTextColors(menu, 3, 15, 4);
|
||||
} else {
|
||||
ListMenu_SetAltTextColors(param0, 1, 15, 2);
|
||||
ListMenu_SetAltTextColors(menu, 1, 15, 2);
|
||||
}
|
||||
}
|
||||
|
||||
static void ov5_021F69F0(ListMenu *param0, u32 param1, u8 param2)
|
||||
static void UpdateListPosition(ListMenu *listMenu, u32 item, u8 onInit)
|
||||
{
|
||||
u32 v0, v1;
|
||||
u16 v2 = 0;
|
||||
u16 v3 = 0;
|
||||
UnkStruct_ov5_021F6704 *v4 = (UnkStruct_ov5_021F6704 *)ListMenu_GetAttribute(param0, 19);
|
||||
u16 listPos = 0;
|
||||
u16 cursorPos = 0;
|
||||
BattleHallRecordSelector *selector = (BattleHallRecordSelector *)ListMenu_GetAttribute(listMenu, LIST_MENU_PARENT);
|
||||
|
||||
ListMenu_GetListAndCursorPos(param0, &v2, &v3);
|
||||
ListMenu_GetListAndCursorPos(listMenu, &listPos, &cursorPos);
|
||||
|
||||
if ((v4->unk_214 != NULL) && (v4->unk_218 != NULL)) {
|
||||
*v4->unk_214 = v2;
|
||||
*v4->unk_218 = v3;
|
||||
if (selector->listPos != NULL && selector->cursorPos != NULL) {
|
||||
*selector->listPos = listPos;
|
||||
*selector->cursorPos = cursorPos;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov5_021F6A34(SysTask *param0, void *param1)
|
||||
static void BattleHallRecordSelector_Process(SysTask *task, void *context)
|
||||
{
|
||||
u16 v0;
|
||||
u32 v1;
|
||||
UnkStruct_ov5_021F6704 *v2 = (UnkStruct_ov5_021F6704 *)param1;
|
||||
BattleHallRecordSelector *selector = context;
|
||||
|
||||
if (v2->unk_204 != 0) {
|
||||
v2->unk_204--;
|
||||
if (selector->startupDelay != 0) {
|
||||
selector->startupDelay--;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -379,56 +352,50 @@ static void ov5_021F6A34(SysTask *param0, void *param1)
|
|||
return;
|
||||
}
|
||||
|
||||
v1 = ListMenu_ProcessInput(v2->unk_23C);
|
||||
v0 = v2->unk_6F4;
|
||||
u32 input = ListMenu_ProcessInput(selector->listMenu);
|
||||
u16 oldPos = selector->menuPos;
|
||||
|
||||
ListMenu_CalcTrueCursorPos(v2->unk_23C, &v2->unk_6F4);
|
||||
ListMenu_CalcTrueCursorPos(selector->listMenu, &selector->menuPos);
|
||||
|
||||
if (v0 != v2->unk_6F4) {
|
||||
if (oldPos != selector->menuPos) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
}
|
||||
|
||||
switch (v1) {
|
||||
case 0xffffffff:
|
||||
switch (input) {
|
||||
case MENU_NOTHING_CHOSEN:
|
||||
break;
|
||||
case 0xfffffffe:
|
||||
if (v2->unk_207_0 == 1) {
|
||||
case MENU_CANCEL:
|
||||
if (selector->alwaysTrue == TRUE) {
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
*v2->unk_210 = 0xfffe;
|
||||
ov5_021F6AD4(param1);
|
||||
*selector->resultPtr = MENU_CANCEL;
|
||||
BattleHallRecordSelector_Free(selector);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
*v2->unk_210 = v1;
|
||||
ov5_021F6AD4(param1);
|
||||
*selector->resultPtr = input;
|
||||
BattleHallRecordSelector_Free(selector);
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov5_021F6AD4(UnkStruct_ov5_021F6704 *param0)
|
||||
static void BattleHallRecordSelector_Free(BattleHallRecordSelector *selector)
|
||||
{
|
||||
int v0;
|
||||
|
||||
Sound_PlayEffect(SEQ_SE_CONFIRM);
|
||||
ListMenu_Free(param0->unk_23C, NULL, NULL);
|
||||
Window_EraseStandardFrame(param0->unk_21C.window, 0);
|
||||
Window_Remove(¶m0->unk_08);
|
||||
ListMenu_Free(selector->listMenu, NULL, NULL);
|
||||
Window_EraseStandardFrame(selector->menuTemplate.window, FALSE);
|
||||
Window_Remove(&selector->window);
|
||||
|
||||
for (v0 = 0; v0 < 120; v0++) {
|
||||
String_Free(param0->unk_1C[v0]);
|
||||
for (int i = 0; i < MAX_LIST_ENTRIES; i++) {
|
||||
String_Free(selector->strs[i]);
|
||||
}
|
||||
|
||||
if (param0->unk_207_1 == 1) {
|
||||
MessageLoader_Free(param0->unk_1FC);
|
||||
if (selector->alwaysFalse == TRUE) {
|
||||
MessageLoader_Free(selector->msgLoader);
|
||||
}
|
||||
|
||||
SysTask_Done(param0->unk_04);
|
||||
Heap_Free(param0);
|
||||
|
||||
return;
|
||||
SysTask_Done(selector->task);
|
||||
Heap_Free(selector);
|
||||
}
|
||||
|
||||
static const u16 sHighestIVMessageIndices[] = {
|
||||
|
|
|
|||
|
|
@ -1,903 +0,0 @@
|
|||
#include "overlay110/ov110_021D0D80.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "struct_decls/struct_0202D750_decl.h"
|
||||
#include "struct_decls/struct_020308A0_decl.h"
|
||||
#include "struct_defs/battle_frontier.h"
|
||||
#include "struct_defs/struct_0203E564.h"
|
||||
|
||||
#include "overlay110/ov110_021D2124.h"
|
||||
|
||||
#include "bg_window.h"
|
||||
#include "font.h"
|
||||
#include "game_options.h"
|
||||
#include "graphics.h"
|
||||
#include "gx_layers.h"
|
||||
#include "heap.h"
|
||||
#include "message.h"
|
||||
#include "narc.h"
|
||||
#include "overlay_manager.h"
|
||||
#include "palette.h"
|
||||
#include "save_player.h"
|
||||
#include "savedata.h"
|
||||
#include "screen_fade.h"
|
||||
#include "string_gf.h"
|
||||
#include "string_template.h"
|
||||
#include "system.h"
|
||||
#include "text.h"
|
||||
#include "unk_0202D05C.h"
|
||||
#include "unk_0202FF4C.h"
|
||||
#include "unk_020302D0.h"
|
||||
#include "unk_02030494.h"
|
||||
#include "unk_0203061C.h"
|
||||
#include "unk_02030880.h"
|
||||
#include "unk_0205DFC4.h"
|
||||
|
||||
typedef struct {
|
||||
ApplicationManager *appMan;
|
||||
u8 unk_04;
|
||||
u8 unk_05;
|
||||
u8 unk_06;
|
||||
u8 unk_07;
|
||||
u16 unk_08;
|
||||
u16 unk_0A;
|
||||
BgConfig *unk_0C;
|
||||
Window unk_10[16];
|
||||
MessageLoader *unk_110;
|
||||
StringTemplate *unk_114;
|
||||
String *unk_118;
|
||||
String *unk_11C;
|
||||
PaletteData *unk_120;
|
||||
const Options *options;
|
||||
SaveData *saveData;
|
||||
BattleFrontier *frontier;
|
||||
} UnkStruct_ov110_021D0F78;
|
||||
|
||||
int ov110_021D0D80(ApplicationManager *appMan, int *param1);
|
||||
int ov110_021D0E9C(ApplicationManager *appMan, int *param1);
|
||||
int ov110_021D0EF0(ApplicationManager *appMan, int *param1);
|
||||
static BOOL ov110_021D0F78(UnkStruct_ov110_021D0F78 *param0);
|
||||
static BOOL ov110_021D0FD0(UnkStruct_ov110_021D0F78 *param0);
|
||||
static BOOL ov110_021D1000(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D1048(void *param0);
|
||||
static void ov110_021D1078(void);
|
||||
static void ov110_021D1098(BgConfig *param0);
|
||||
static void ov110_021D1180(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D11CC(BgConfig *param0);
|
||||
static void ov110_021D1200(UnkStruct_ov110_021D0F78 *param0, int *param1, int param2);
|
||||
static u8 ov110_021D1208(u8 param0);
|
||||
static void ov110_021D123C(UnkStruct_ov110_021D0F78 *param0, u32 param1);
|
||||
static void ov110_021D128C(void);
|
||||
static void ov110_021D12C0(UnkStruct_ov110_021D0F78 *param0, u32 param1);
|
||||
static u8 ov110_021D1324(UnkStruct_ov110_021D0F78 *param0, Window *param1, int param2, u32 param3, u32 param4, u8 param5, u8 param6, u8 param7, u8 param8, u8 param9, int param10);
|
||||
static u8 ov110_021D13CC(UnkStruct_ov110_021D0F78 *param0, Window *param1, int param2, u8 param3);
|
||||
static void ov110_021D13F0(UnkStruct_ov110_021D0F78 *param0, u32 param1, s32 param2);
|
||||
static void ov110_021D140C(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D1468(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D1650(UnkStruct_ov110_021D0F78 *param0);
|
||||
static u32 ov110_021D17AC(UnkStruct_ov110_021D0F78 *param0, u8 param1);
|
||||
static void ov110_021D1808(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D19B0(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D19F4(UnkStruct_ov110_021D0F78 *param0);
|
||||
static u32 ov110_021D1BEC(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D1C40(UnkStruct_ov110_021D0F78 *param0);
|
||||
static u32 ov110_021D1D68(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D1DBC(UnkStruct_ov110_021D0F78 *param0);
|
||||
static void ov110_021D1ED8(UnkStruct_ov110_021D0F78 *param0);
|
||||
static u32 ov110_021D20CC(UnkStruct_ov110_021D0F78 *param0, u8 param1);
|
||||
|
||||
int ov110_021D0D80(ApplicationManager *appMan, int *param1)
|
||||
{
|
||||
int v0;
|
||||
UnkStruct_ov110_021D0F78 *v1;
|
||||
UnkStruct_0203E564 *v2;
|
||||
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
SetHBlankCallback(NULL, NULL);
|
||||
|
||||
GXLayers_DisableEngineALayers();
|
||||
GXLayers_DisableEngineBLayers();
|
||||
|
||||
GX_SetVisiblePlane(0);
|
||||
GXS_SetVisiblePlane(0);
|
||||
|
||||
Heap_Create(HEAP_ID_APPLICATION, HEAP_ID_114, 0x20000);
|
||||
v1 = ApplicationManager_NewData(appMan, sizeof(UnkStruct_ov110_021D0F78), HEAP_ID_114);
|
||||
memset(v1, 0, sizeof(UnkStruct_ov110_021D0F78));
|
||||
|
||||
v1->appMan = appMan;
|
||||
v1->unk_0C = BgConfig_New(HEAP_ID_114);
|
||||
|
||||
v2 = (UnkStruct_0203E564 *)ApplicationManager_Args(appMan);
|
||||
|
||||
v1->saveData = v2->saveData;
|
||||
v1->frontier = SaveData_GetBattleFrontier(v1->saveData);
|
||||
v1->unk_05 = v2->unk_04;
|
||||
v1->unk_06 = v2->unk_05;
|
||||
v1->unk_08 = v2->unk_06;
|
||||
v1->options = SaveData_GetOptions(v1->saveData);
|
||||
|
||||
ov110_021D1180(v1);
|
||||
|
||||
v1->unk_110 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_BATTLE_TOWER_RECORDS, HEAP_ID_114);
|
||||
v1->unk_114 = StringTemplate_Default(HEAP_ID_114);
|
||||
v1->unk_118 = String_Init(800, HEAP_ID_114);
|
||||
v1->unk_11C = String_Init(800, HEAP_ID_114);
|
||||
|
||||
Font_LoadTextPalette(0, 13 * 32, HEAP_ID_114);
|
||||
Font_LoadScreenIndicatorsPalette(0, 12 * 32, HEAP_ID_114);
|
||||
ov110_021D2124(v1->unk_0C, v1->unk_10, ov110_021D1208(v1->unk_06));
|
||||
SetVBlankCallback(ov110_021D1048, (void *)v1);
|
||||
(*param1) = 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int ov110_021D0E9C(ApplicationManager *appMan, int *param1)
|
||||
{
|
||||
UnkStruct_ov110_021D0F78 *v0 = ApplicationManager_Data(appMan);
|
||||
|
||||
switch (*param1) {
|
||||
case 0:
|
||||
if (ov110_021D0F78(v0) == 1) {
|
||||
ov110_021D1200(v0, param1, 1);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (ov110_021D0FD0(v0) == 1) {
|
||||
ov110_021D1200(v0, param1, 2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (ov110_021D1000(v0) == 1) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ov110_021D0EF0(ApplicationManager *appMan, int *param1)
|
||||
{
|
||||
int v0;
|
||||
UnkStruct_ov110_021D0F78 *v1 = ApplicationManager_Data(appMan);
|
||||
|
||||
PaletteData_FreeBuffer(v1->unk_120, 2);
|
||||
PaletteData_FreeBuffer(v1->unk_120, 0);
|
||||
PaletteData_Free(v1->unk_120);
|
||||
|
||||
v1->unk_120 = NULL;
|
||||
|
||||
MessageLoader_Free(v1->unk_110);
|
||||
StringTemplate_Free(v1->unk_114);
|
||||
String_Free(v1->unk_118);
|
||||
String_Free(v1->unk_11C);
|
||||
|
||||
ov110_021D216C(v1->unk_10, ov110_021D1208(v1->unk_06));
|
||||
ov110_021D11CC(v1->unk_0C);
|
||||
|
||||
ApplicationManager_FreeData(appMan);
|
||||
SetVBlankCallback(NULL, NULL);
|
||||
Heap_Destroy(HEAP_ID_114);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static BOOL ov110_021D0F78(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
switch (param0->unk_04) {
|
||||
case 0:
|
||||
param0->unk_04++;
|
||||
break;
|
||||
case 1:
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_IN, FADE_TYPE_BRIGHTNESS_IN, COLOR_BLACK, 6, 1 * 3, HEAP_ID_114);
|
||||
ov110_021D140C(param0);
|
||||
param0->unk_04++;
|
||||
break;
|
||||
case 2:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static BOOL ov110_021D0FD0(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v0;
|
||||
|
||||
switch (param0->unk_04) {
|
||||
case 0:
|
||||
param0->unk_04++;
|
||||
break;
|
||||
case 1:
|
||||
|
||||
if ((gSystem.heldKeys & PAD_BUTTON_A) || (gSystem.heldKeys & PAD_BUTTON_B)) {
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static BOOL ov110_021D1000(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v0;
|
||||
|
||||
switch (param0->unk_04) {
|
||||
case 0:
|
||||
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_BRIGHTNESS_OUT, FADE_TYPE_BRIGHTNESS_OUT, COLOR_BLACK, 6, 1, HEAP_ID_114);
|
||||
param0->unk_04++;
|
||||
break;
|
||||
case 1:
|
||||
if (IsScreenFadeDone() == TRUE) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ov110_021D1048(void *param0)
|
||||
{
|
||||
UnkStruct_ov110_021D0F78 *v0 = param0;
|
||||
|
||||
if (v0->unk_120 != NULL) {
|
||||
PaletteData_CommitFadedBuffers(v0->unk_120);
|
||||
}
|
||||
|
||||
Bg_RunScheduledUpdates(v0->unk_0C);
|
||||
|
||||
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
|
||||
}
|
||||
|
||||
static void ov110_021D1078(void)
|
||||
{
|
||||
GXBanks v0 = {
|
||||
GX_VRAM_BG_128_A,
|
||||
GX_VRAM_BGEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_BG_128_C,
|
||||
GX_VRAM_SUB_BGEXTPLTT_NONE,
|
||||
GX_VRAM_OBJ_128_B,
|
||||
GX_VRAM_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_SUB_OBJ_16_I,
|
||||
GX_VRAM_SUB_OBJEXTPLTT_NONE,
|
||||
GX_VRAM_TEX_NONE,
|
||||
GX_VRAM_TEXPLTT_NONE
|
||||
};
|
||||
|
||||
GXLayers_SetBanks(&v0);
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D1098(BgConfig *param0)
|
||||
{
|
||||
{
|
||||
GraphicsModes v0 = {
|
||||
GX_DISPMODE_GRAPHICS,
|
||||
GX_BGMODE_0,
|
||||
GX_BGMODE_0,
|
||||
GX_BG0_AS_2D
|
||||
};
|
||||
|
||||
SetAllGraphicsModes(&v0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate v1 = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x0000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_MAIN_0, &v1, 0);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_0, 32, 0, HEAP_ID_114);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_MAIN_0);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate v2 = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x1000,
|
||||
.charBase = GX_BG_CHARBASE_0x0c000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_MAIN_2, &v2, 0);
|
||||
Bg_ClearTilesRange(BG_LAYER_MAIN_2, 32, 0, HEAP_ID_114);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_MAIN_2);
|
||||
}
|
||||
|
||||
{
|
||||
BgTemplate v3 = {
|
||||
.x = 0,
|
||||
.y = 0,
|
||||
.bufferSize = 0x800,
|
||||
.baseTile = 0,
|
||||
.screenSize = BG_SCREEN_SIZE_256x256,
|
||||
.colorMode = GX_BG_COLORMODE_16,
|
||||
.screenBase = GX_BG_SCRBASE_0x3000,
|
||||
.charBase = GX_BG_CHARBASE_0x04000,
|
||||
.bgExtPltt = GX_BG_EXTPLTT_01,
|
||||
.priority = 0,
|
||||
.areaOver = 0,
|
||||
.mosaic = FALSE,
|
||||
};
|
||||
|
||||
Bg_InitFromTemplate(param0, BG_LAYER_SUB_2, &v3, 0);
|
||||
Bg_ClearTilesRange(6, 32, 0, HEAP_ID_114);
|
||||
Bg_ClearTilemap(param0, BG_LAYER_SUB_2);
|
||||
}
|
||||
|
||||
G2_SetBG0Priority(0);
|
||||
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 1);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D1180(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
ov110_021D1078();
|
||||
ov110_021D1098(param0->unk_0C);
|
||||
|
||||
param0->unk_120 = PaletteData_New(HEAP_ID_114);
|
||||
|
||||
PaletteData_AllocBuffer(param0->unk_120, 2, 32 * 16, HEAP_ID_114);
|
||||
PaletteData_AllocBuffer(param0->unk_120, 0, 32 * 16, HEAP_ID_114);
|
||||
|
||||
ov110_021D123C(param0, 2);
|
||||
ov110_021D128C();
|
||||
ov110_021D12C0(param0, 6);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D11CC(BgConfig *param0)
|
||||
{
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_BG3 | GX_PLANEMASK_OBJ, 0);
|
||||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG0 | GX_PLANEMASK_BG1 | GX_PLANEMASK_BG2 | GX_PLANEMASK_BG3 | GX_PLANEMASK_OBJ, 0);
|
||||
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_MAIN_0);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_MAIN_2);
|
||||
Bg_FreeTilemapBuffer(param0, BG_LAYER_SUB_2);
|
||||
Heap_Free(param0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D1200(UnkStruct_ov110_021D0F78 *param0, int *param1, int param2)
|
||||
{
|
||||
param0->unk_04 = 0;
|
||||
*param1 = param2;
|
||||
return;
|
||||
}
|
||||
|
||||
static u8 ov110_021D1208(u8 param0)
|
||||
{
|
||||
u8 v0 = 0;
|
||||
|
||||
switch (param0) {
|
||||
case 2:
|
||||
case 3:
|
||||
v0 = 0;
|
||||
break;
|
||||
case 5:
|
||||
v0 = 1;
|
||||
break;
|
||||
case 4:
|
||||
v0 = 2;
|
||||
break;
|
||||
case 6:
|
||||
v0 = 3;
|
||||
break;
|
||||
case 1:
|
||||
v0 = 4;
|
||||
break;
|
||||
}
|
||||
|
||||
return v0;
|
||||
}
|
||||
|
||||
static void ov110_021D123C(UnkStruct_ov110_021D0F78 *param0, u32 param1)
|
||||
{
|
||||
NARC *v0;
|
||||
|
||||
v0 = NARC_ctor(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, HEAP_ID_114);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(v0, 124, param0->unk_0C, param1, 0, 0, 1, HEAP_ID_114);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(v0, 123, param0->unk_0C, param1, 0, 0, 1, HEAP_ID_114);
|
||||
NARC_dtor(v0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D128C(void)
|
||||
{
|
||||
void *v0;
|
||||
NNSG2dPaletteData *v1;
|
||||
|
||||
v0 = Graphics_GetPlttData(NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_BG, 170, &v1, HEAP_ID_114);
|
||||
|
||||
DC_FlushRange(v1->pRawData, sizeof(u16) * 16 * 2);
|
||||
GX_LoadBGPltt(v1->pRawData, 0, sizeof(u16) * 16 * 2);
|
||||
Heap_Free(v0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D12C0(UnkStruct_ov110_021D0F78 *param0, u32 param1)
|
||||
{
|
||||
NARC *v0;
|
||||
|
||||
v0 = NARC_ctor(NARC_INDEX_GRAPHIC__POKETCH, HEAP_ID_114);
|
||||
|
||||
Graphics_LoadTilesToBgLayerFromOpenNARC(v0, 10, param0->unk_0C, param1, 0, 0, 1, HEAP_ID_114);
|
||||
Graphics_LoadTilemapToBgLayerFromOpenNARC(v0, 11, param0->unk_0C, param1, 0, 0, 1, HEAP_ID_114);
|
||||
Graphics_LoadPaletteFromOpenNARC(v0, 12, 4, 0, 0x20, HEAP_ID_114);
|
||||
NARC_dtor(v0);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static u8 ov110_021D1324(UnkStruct_ov110_021D0F78 *param0, Window *param1, int param2, u32 param3, u32 param4, u8 param5, u8 param6, u8 param7, u8 param8, u8 param9, int param10)
|
||||
{
|
||||
if (param9) {
|
||||
Window_FillTilemap(param1, param7);
|
||||
}
|
||||
MessageLoader_GetString(param0->unk_110, param2, param0->unk_11C);
|
||||
StringTemplate_Format(param0->unk_114, param0->unk_118, param0->unk_11C);
|
||||
|
||||
switch (param10) {
|
||||
case 1:
|
||||
param3 -= (Font_CalcStringWidth(FONT_SYSTEM, param0->unk_118, 0) + 1) / 2;
|
||||
break;
|
||||
case 2:
|
||||
param3 -= Font_CalcStringWidth(FONT_SYSTEM, param0->unk_118, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
Text_AddPrinterWithParamsAndColor(param1, param8, param0->unk_118, param3, param4, TEXT_SPEED_INSTANT, TEXT_COLOR(param5, param6, param7), NULL);
|
||||
}
|
||||
|
||||
static u8 ov110_021D13CC(UnkStruct_ov110_021D0F78 *param0, Window *param1, int param2, u8 param3)
|
||||
{
|
||||
return ov110_021D1324(param0, param1, param2, 0, 0, 1, 2, 0, FONT_SYSTEM, param3, 0);
|
||||
}
|
||||
|
||||
static void ov110_021D13F0(UnkStruct_ov110_021D0F78 *param0, u32 param1, s32 param2)
|
||||
{
|
||||
StringTemplate_SetNumber(param0->unk_114, param1, param2, 4, 1, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D140C(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v0;
|
||||
|
||||
switch (param0->unk_06) {
|
||||
case 2:
|
||||
case 3:
|
||||
ov110_021D1468(param0);
|
||||
ov110_021D1650(param0);
|
||||
break;
|
||||
case 5:
|
||||
ov110_021D1808(param0);
|
||||
break;
|
||||
case 4:
|
||||
ov110_021D19F4(param0);
|
||||
break;
|
||||
case 6:
|
||||
ov110_021D1C40(param0);
|
||||
break;
|
||||
case 1:
|
||||
if ((param0->unk_05 == 0) || (param0->unk_05 == 1)) {
|
||||
ov110_021D1DBC(param0);
|
||||
} else {
|
||||
ov110_021D1ED8(param0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
ov110_021D1C40(param0);
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D1468(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
u8 v1;
|
||||
int v2;
|
||||
u32 v3;
|
||||
|
||||
Window_FillTilemap(¶m0->unk_10[0], 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 22, 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
|
||||
if (param0->unk_05 == 0) {
|
||||
v2 = 26;
|
||||
v3 = 27 * 8;
|
||||
} else if (param0->unk_05 == 1) {
|
||||
v2 = 27;
|
||||
v3 = 27 * 8;
|
||||
} else {
|
||||
v2 = 28;
|
||||
v3 = 27 * 8;
|
||||
}
|
||||
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], v2, v3, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[0]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[1], 34, 1);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[1], 36, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[1]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[2], ov110_021D17AC(param0, 0), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E430(0, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E488(0, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 40, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[2]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[3], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E45C(0, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[3], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E4B4(0, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[3], 40, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[3]);
|
||||
}
|
||||
|
||||
static void ov110_021D1650(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[4], 35, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[4]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[5], ov110_021D17AC(param0, 1), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E430(1, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[5], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E488(1, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[5], 40, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[5]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[6], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E45C(1, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[6], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E4B4(1, param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[6], 40, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[6]);
|
||||
}
|
||||
|
||||
static u32 ov110_021D17AC(UnkStruct_ov110_021D0F78 *param0, u8 param1)
|
||||
{
|
||||
u8 v0;
|
||||
u32 v1;
|
||||
|
||||
if (param1 == 0) {
|
||||
v1 = 102;
|
||||
} else {
|
||||
v1 = 104;
|
||||
}
|
||||
|
||||
if (param0->unk_05 == 3) {
|
||||
v0 = sub_02030698(SaveData_GetBattleFrontier(param0->saveData), v1, sub_0205E6A8(v1));
|
||||
} else {
|
||||
v0 = (u8)sub_020300E0(sub_020300F4(param0->saveData), 10, (param1 * 4) + param0->unk_05, NULL);
|
||||
}
|
||||
|
||||
if (v0 == 1) {
|
||||
return 30;
|
||||
}
|
||||
|
||||
return 29;
|
||||
}
|
||||
|
||||
static void ov110_021D1808(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v1;
|
||||
u32 v2;
|
||||
u16 v3;
|
||||
int v4;
|
||||
BattleFrontierStage *frontierStage;
|
||||
|
||||
Window_FillTilemap(¶m0->unk_10[0], 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 24, 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
|
||||
if (param0->unk_05 == 0) {
|
||||
v1 = 26;
|
||||
v2 = 27 * 8;
|
||||
} else if (param0->unk_05 == 1) {
|
||||
v1 = 27;
|
||||
v2 = 27 * 8;
|
||||
} else {
|
||||
v1 = 28;
|
||||
v2 = 27 * 8;
|
||||
}
|
||||
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], v1, v2, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[0]);
|
||||
|
||||
ov110_021D19B0(param0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[1], 39, 0, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[1]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[2], 29, 1);
|
||||
|
||||
if (param0->unk_08 != sub_02030698(SaveData_GetBattleFrontier(param0->saveData), sub_0205E55C(param0->unk_05), sub_0205E6A8(sub_0205E55C(param0->unk_05)))) {
|
||||
v3 = 0;
|
||||
} else {
|
||||
v3 = sub_02030698(param0->frontier, sub_0205E50C(param0->unk_05), 0xFF);
|
||||
}
|
||||
|
||||
ov110_021D13F0(param0, 0, v3);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[2]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[3], 31, 1);
|
||||
frontierStage = sub_020308A0(param0->saveData, HEAP_ID_FIELD2, &v4);
|
||||
|
||||
if (v4 != 1) {
|
||||
v3 = 0;
|
||||
} else {
|
||||
v3 = sub_020308BC(param0->saveData, frontierStage, sub_0205E584(param0->unk_05), param0->unk_08);
|
||||
}
|
||||
|
||||
if (frontierStage != NULL) {
|
||||
Heap_Free(frontierStage);
|
||||
}
|
||||
|
||||
ov110_021D13F0(param0, 0, v3);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[3], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[3]);
|
||||
}
|
||||
|
||||
static void ov110_021D19B0(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
MessageLoader *v0;
|
||||
String *v1;
|
||||
|
||||
v0 = MessageLoader_Init(MSG_LOADER_LOAD_ON_DEMAND, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_114);
|
||||
v1 = MessageLoader_GetNewString(v0, param0->unk_08);
|
||||
|
||||
MessageLoader_Free(v0);
|
||||
StringTemplate_SetString(param0->unk_114, 0, v1, 0, 0, GAME_LANGUAGE);
|
||||
String_Free(v1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov110_021D19F4(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v1;
|
||||
u32 v2;
|
||||
|
||||
Window_FillTilemap(¶m0->unk_10[0], 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 23, 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
|
||||
if (param0->unk_05 == 0) {
|
||||
v1 = 26;
|
||||
v2 = 27 * 8;
|
||||
} else if (param0->unk_05 == 1) {
|
||||
v1 = 27;
|
||||
v2 = 27 * 8;
|
||||
} else {
|
||||
v1 = 28;
|
||||
v2 = 27 * 8;
|
||||
}
|
||||
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], v1, v2, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[0]);
|
||||
|
||||
ov110_021D1324(param0, ¶m0->unk_10[1], 37, 12 * 8, 0, 1, 2, 0, FONT_SYSTEM, 1, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[1]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[2], ov110_021D1BEC(param0), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E5E0(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 42, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(SaveData_GetBattleFrontier(param0->saveData), sub_0205E630(param0->unk_05), sub_0205E6A8(sub_0205E630(param0->unk_05))));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 41, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[2]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[3], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E608(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[3], 42, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(SaveData_GetBattleFrontier(param0->saveData), sub_0205E680(param0->unk_05), sub_0205E6A8(sub_0205E680(param0->unk_05))));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[3], 41, 28 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[3]);
|
||||
}
|
||||
|
||||
static u32 ov110_021D1BEC(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
u8 v0;
|
||||
|
||||
if (param0->unk_05 == 3) {
|
||||
v0 = sub_02030698(SaveData_GetBattleFrontier(param0->saveData), 108, sub_0205E6A8(108));
|
||||
} else {
|
||||
v0 = (u8)sub_02030470(sub_0203041C(param0->saveData), 9, param0->unk_05, 0, NULL);
|
||||
}
|
||||
|
||||
if (v0 == 1) {
|
||||
return 30;
|
||||
}
|
||||
|
||||
return 29;
|
||||
}
|
||||
|
||||
static void ov110_021D1C40(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v1;
|
||||
u32 v2;
|
||||
|
||||
Window_FillTilemap(¶m0->unk_10[0], 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 25, 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
|
||||
if (param0->unk_05 == 0) {
|
||||
v1 = 26;
|
||||
v2 = 27 * 8;
|
||||
} else if (param0->unk_05 == 1) {
|
||||
v1 = 27;
|
||||
v2 = 27 * 8;
|
||||
} else {
|
||||
v1 = 28;
|
||||
v2 = 27 * 8;
|
||||
}
|
||||
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], v1, v2, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[0]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[1], ov110_021D1D68(param0), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E700(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[1], 43, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[1]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[2], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E728(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 43, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[2]);
|
||||
}
|
||||
|
||||
static u32 ov110_021D1D68(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
u8 v0;
|
||||
|
||||
if (param0->unk_05 == 3) {
|
||||
v0 = sub_02030698(SaveData_GetBattleFrontier(param0->saveData), 110, sub_0205E6A8(110));
|
||||
} else {
|
||||
v0 = (u8)sub_02030600(sub_020305B8(param0->saveData), 8, param0->unk_05, 0, NULL);
|
||||
}
|
||||
|
||||
if (v0 == 1) {
|
||||
return 30;
|
||||
}
|
||||
|
||||
return 29;
|
||||
}
|
||||
|
||||
static void ov110_021D1DBC(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
int v1;
|
||||
u32 v2;
|
||||
|
||||
Window_FillTilemap(¶m0->unk_10[0], 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 21, 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
|
||||
if (param0->unk_05 == 0) {
|
||||
v1 = 26;
|
||||
v2 = 27 * 8;
|
||||
} else {
|
||||
v1 = 27;
|
||||
v2 = 27 * 8;
|
||||
}
|
||||
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], v1, v2, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[0]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[2], ov110_021D20CC(param0, param0->unk_05), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E750(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[2], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[2]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[3], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E790(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[3], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[3]);
|
||||
}
|
||||
|
||||
static void ov110_021D1ED8(UnkStruct_ov110_021D0F78 *param0)
|
||||
{
|
||||
Window_FillTilemap(¶m0->unk_10[0], 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 21, 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 0);
|
||||
ov110_021D1324(param0, ¶m0->unk_10[0], 28, 27 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 2);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[0]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[1], 32, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[1]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[4], ov110_021D20CC(param0, param0->unk_05), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E750(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[4], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[4]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[5], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E790(param0->unk_05), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[5], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[5]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[6], 33, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[6]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[7], ov110_021D20CC(param0, 3), 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E750(3), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[7], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[7]);
|
||||
|
||||
ov110_021D13CC(param0, ¶m0->unk_10[8], 31, 1);
|
||||
ov110_021D13F0(param0, 0, sub_02030698(param0->frontier, sub_0205E790(3), 0xFF));
|
||||
ov110_021D1324(param0, ¶m0->unk_10[8], 38, 14 * 8, 0, 1, 2, 0, FONT_SYSTEM, 0, 1);
|
||||
Window_ScheduleCopyToVRAM(¶m0->unk_10[8]);
|
||||
}
|
||||
|
||||
static u32 ov110_021D20CC(UnkStruct_ov110_021D0F78 *param0, u8 param1)
|
||||
{
|
||||
u16 v0;
|
||||
int v1;
|
||||
UnkStruct_0202D750 *v2;
|
||||
|
||||
v2 = sub_0202D750(param0->saveData);
|
||||
|
||||
switch (param1) {
|
||||
case 0:
|
||||
v0 = 8;
|
||||
break;
|
||||
case 1:
|
||||
v0 = 9;
|
||||
break;
|
||||
case 2:
|
||||
v0 = 10;
|
||||
break;
|
||||
case 3:
|
||||
v0 = 11;
|
||||
break;
|
||||
case 4:
|
||||
v0 = 12;
|
||||
break;
|
||||
case 6:
|
||||
v0 = 15;
|
||||
break;
|
||||
default:
|
||||
v0 = 8;
|
||||
break;
|
||||
}
|
||||
|
||||
v1 = sub_0202D414(v2, v0, 0);
|
||||
|
||||
if (v1 == 1) {
|
||||
return 30;
|
||||
}
|
||||
|
||||
return 29;
|
||||
}
|
||||
|
|
@ -1,90 +0,0 @@
|
|||
#include "overlay110/ov110_021D2124.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
typedef struct {
|
||||
const WindowTemplate *unk_00;
|
||||
u32 unk_04;
|
||||
} UnkStruct_ov110_021D2278;
|
||||
|
||||
void ov110_021D2124(BgConfig *param0, Window *param1, u8 param2);
|
||||
void ov110_021D216C(Window *param0, u8 param1);
|
||||
|
||||
static const WindowTemplate Unk_ov110_021D22A0[] = {
|
||||
{ 0x0, 0x2, 0x2, 0x1E, 0x2, 0xD, 0x1 },
|
||||
{ 0x0, 0x2, 0x7, 0x1C, 0x2, 0xD, 0x3D },
|
||||
{ 0x0, 0x2, 0xA, 0x1C, 0x2, 0xD, 0x75 },
|
||||
{ 0x0, 0x2, 0xC, 0x1C, 0x2, 0xD, 0xAD },
|
||||
{ 0x0, 0x2, 0xF, 0x10, 0x2, 0xD, 0xE5 },
|
||||
{ 0x0, 0x2, 0x12, 0x1C, 0x2, 0xD, 0x105 },
|
||||
{ 0x0, 0x2, 0x14, 0x1C, 0x2, 0xD, 0x13D }
|
||||
};
|
||||
|
||||
static const WindowTemplate Unk_ov110_021D2238[] = {
|
||||
{ 0x0, 0x2, 0x2, 0x1C, 0x2, 0xD, 0x1 },
|
||||
{ 0x0, 0x2, 0x7, 0x1C, 0x2, 0xD, 0x39 },
|
||||
{ 0x0, 0x2, 0xA, 0x1C, 0x2, 0xD, 0x71 },
|
||||
{ 0x0, 0x2, 0xD, 0x1C, 0x2, 0xD, 0xA9 }
|
||||
};
|
||||
|
||||
static const WindowTemplate Unk_ov110_021D2258[] = {
|
||||
{ 0x0, 0x2, 0x2, 0x1C, 0x2, 0xD, 0x1 },
|
||||
{ 0x0, 0x12, 0x7, 0xC, 0x2, 0xD, 0x39 },
|
||||
{ 0x0, 0x2, 0xA, 0x1C, 0x2, 0xD, 0x51 },
|
||||
{ 0x0, 0x2, 0xD, 0x1C, 0x2, 0xD, 0x89 }
|
||||
};
|
||||
|
||||
static const WindowTemplate Unk_ov110_021D2220[] = {
|
||||
{ 0x0, 0x2, 0x2, 0x1C, 0x2, 0xD, 0x1 },
|
||||
{ 0x0, 0x2, 0x8, 0x1C, 0x2, 0xD, 0x39 },
|
||||
{ 0x0, 0x2, 0xB, 0x1C, 0x2, 0xD, 0x71 }
|
||||
};
|
||||
|
||||
static const WindowTemplate Unk_ov110_021D22D8[] = {
|
||||
{ 0x0, 0x2, 0x2, 0x1E, 0x2, 0xD, 0x1 },
|
||||
{ 0x0, 0x2, 0x7, 0x1C, 0x2, 0xD, 0x3D },
|
||||
{ 0x0, 0x2, 0x7, 0x1C, 0x2, 0xD, 0x75 },
|
||||
{ 0x0, 0x2, 0xA, 0x1C, 0x2, 0xD, 0xAD },
|
||||
{ 0x0, 0x2, 0xA, 0x1C, 0x2, 0xD, 0x75 },
|
||||
{ 0x0, 0x2, 0xC, 0x1C, 0x2, 0xD, 0xAD },
|
||||
{ 0x0, 0x2, 0xF, 0x10, 0x2, 0xD, 0xE5 },
|
||||
{ 0x0, 0x2, 0x12, 0x1C, 0x2, 0xD, 0x105 },
|
||||
{ 0x0, 0x2, 0x14, 0x1C, 0x2, 0xD, 0x13D }
|
||||
};
|
||||
|
||||
static const UnkStruct_ov110_021D2278 Unk_ov110_021D2278[5] = {
|
||||
{ Unk_ov110_021D22A0, 0x7 },
|
||||
{ Unk_ov110_021D2238, 0x4 },
|
||||
{ Unk_ov110_021D2258, 0x4 },
|
||||
{ Unk_ov110_021D2220, 0x3 },
|
||||
{ Unk_ov110_021D22D8, 0x9 }
|
||||
};
|
||||
|
||||
void ov110_021D2124(BgConfig *param0, Window *param1, u8 param2)
|
||||
{
|
||||
u8 v0;
|
||||
const WindowTemplate *v1 = Unk_ov110_021D2278[param2].unk_00;
|
||||
u32 v2 = Unk_ov110_021D2278[param2].unk_04;
|
||||
|
||||
for (v0 = 0; v0 < v2; v0++) {
|
||||
Window_AddFromTemplate(param0, ¶m1[v0], &v1[v0]);
|
||||
Window_FillTilemap(¶m1[v0], 0);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void ov110_021D216C(Window *param0, u8 param1)
|
||||
{
|
||||
u16 v0;
|
||||
u32 v1 = Unk_ov110_021D2278[param1].unk_04;
|
||||
|
||||
for (v0 = 0; v0 < v1; v0++) {
|
||||
Window_Remove(¶m0[v0]);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
18
src/scrcmd.c
18
src/scrcmd.c
|
|
@ -714,7 +714,7 @@ static BOOL ScrCmd_Unused_2CE(ScriptContext *ctx);
|
|||
static BOOL ScrCmd_SaveExtraData(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_CheckIsMiscSaveInit(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_PokeMartFrontier(ScriptContext *ctx);
|
||||
BOOL ScrCmd_2C8(ScriptContext *ctx);
|
||||
static BOOL ScrCmd_OpenFrontierRecordsApp(ScriptContext *ctx);
|
||||
BOOL ScrCmd_2E2(ScriptContext *ctx);
|
||||
BOOL ScrCmd_2E3(ScriptContext *ctx);
|
||||
BOOL ScrCmd_2E4(ScriptContext *ctx);
|
||||
|
|
@ -1477,7 +1477,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
|
|||
ScrCmd_2C5,
|
||||
ScrCmd_2C6,
|
||||
ScrCmd_2C7,
|
||||
ScrCmd_2C8,
|
||||
ScrCmd_OpenFrontierRecordsApp,
|
||||
ScrCmd_InitPersistedMapFeaturesForEternaGym,
|
||||
ScrCmd_AdvanceEternaGymClock,
|
||||
ScrCmd_CountRepeatedSpeciesInParty,
|
||||
|
|
@ -1499,7 +1499,7 @@ const ScrCmdFunc Unk_020EAC58[] = {
|
|||
ScrCmd_2DB,
|
||||
ScrCmd_2DC,
|
||||
ScrCmd_FindPartySlotWithSpecies,
|
||||
ScrCmd_2DE,
|
||||
ScrCmd_ShowBattleHallRecordMonSelectionMenu,
|
||||
ScrCmd_CalcAmitySquareBerryAndAccessoryManOptionID,
|
||||
ScrCmd_CheckAmitySquareManGiftIsAccessory,
|
||||
ScrCmd_GetAmitySquareBerryOrAccessoryIDFromMan,
|
||||
|
|
@ -7538,14 +7538,14 @@ static BOOL ScrCmd_PokeMartFrontier(ScriptContext *ctx)
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL ScrCmd_2C8(ScriptContext *ctx)
|
||||
static BOOL ScrCmd_OpenFrontierRecordsApp(ScriptContext *ctx)
|
||||
{
|
||||
void **v0 = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
|
||||
u16 v1 = ScriptContext_GetVar(ctx);
|
||||
u16 v2 = ScriptContext_GetVar(ctx);
|
||||
u16 v3 = ScriptContext_GetVar(ctx);
|
||||
void **partyData = FieldSystem_GetScriptMemberPtr(ctx->fieldSystem, SCRIPT_MANAGER_PARTY_MANAGEMENT_DATA);
|
||||
u16 challengeType = ScriptContext_GetVar(ctx);
|
||||
u16 facility = ScriptContext_GetVar(ctx);
|
||||
u16 species = ScriptContext_GetVar(ctx);
|
||||
|
||||
*v0 = sub_0203E564(ctx->fieldSystem, v1, v2, v3, HEAP_ID_FIELD3);
|
||||
*partyData = FieldSystem_OpenBattleFrontierRecord(ctx->fieldSystem, challengeType, facility, species, HEAP_ID_FIELD3);
|
||||
ScriptContext_Pause(ctx, sub_02041CC8);
|
||||
|
||||
return TRUE;
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
// clang-format off
|
||||
#define SCRIPT_RANGE_TABLE(Entry) \
|
||||
Entry(SCRIPT_ID_OFFSET_SCRATCH_OFF_CARDS, scripts_scratch_off_cards, TEXT_BANK_SCRATCH_OFF_CARDS) \
|
||||
Entry(SCRIPT_ID_OFFSET_BATTLE_TOWER_RECORDS, scripts_battle_tower_records, TEXT_BANK_BATTLE_TOWER_RECORDS) \
|
||||
Entry(SCRIPT_ID_OFFSET_BATTLE_FRONTIER_RECORDS, scripts_battle_frontier_records, TEXT_BANK_BATTLE_FRONTIER_RECORDS) \
|
||||
Entry(SCRIPT_ID_OFFSET_POKEMON_CENTER_DAILY_TRAINERS, scripts_pokemon_center_daily_trainers, TEXT_BANK_POKEMON_CENTER_DAILY_TRAINERS) \
|
||||
Entry(SCRIPT_ID_OFFSET_COUNTERPART_TALK, scripts_counterpart_talk, TEXT_BANK_COUNTERPART_TALK) \
|
||||
Entry(SCRIPT_ID_OFFSET_MYSTERY_GIFT_DELIVERYMAN, scripts_mystery_gift_deliveryman, TEXT_BANK_MYSTERY_GIFT_DELIVERYMAN) \
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@
|
|||
|
||||
#include "applications/bag/application.h"
|
||||
#include "applications/diploma.h"
|
||||
#include "applications/frontier/records/main.h"
|
||||
#include "applications/journal_display/journal_controller.h"
|
||||
#include "applications/move_reminder.h"
|
||||
#include "applications/naming_screen.h"
|
||||
|
|
@ -69,7 +70,6 @@
|
|||
#include "overlay096/ov96_0223B6A0.h"
|
||||
#include "overlay099/ov99_021D0D80.h"
|
||||
#include "overlay101/ov101_021D0D80.h"
|
||||
#include "overlay110/ov110_021D0D80.h"
|
||||
#include "overlay111/ov111_021D0D80.h"
|
||||
#include "savedata/save_table.h"
|
||||
#include "trainer_card_screen/trainer_card_screen.h"
|
||||
|
|
@ -164,7 +164,7 @@ FS_EXTERN_OVERLAY(overlay95);
|
|||
FS_EXTERN_OVERLAY(overlay96);
|
||||
FS_EXTERN_OVERLAY(overlay99);
|
||||
FS_EXTERN_OVERLAY(overlay101);
|
||||
FS_EXTERN_OVERLAY(overlay110);
|
||||
FS_EXTERN_OVERLAY(frontier_records_app);
|
||||
FS_EXTERN_OVERLAY(overlay111);
|
||||
FS_EXTERN_OVERLAY(dw_warp);
|
||||
|
||||
|
|
@ -1667,29 +1667,29 @@ void *FieldSystem_ShowDiploma(FieldSystem *fieldSystem, enum HeapID heapID, BOOL
|
|||
return diplomaData;
|
||||
}
|
||||
|
||||
void *sub_0203E564(FieldSystem *fieldSystem, u8 param1, u8 param2, u16 param3, enum HeapID heapID)
|
||||
void *FieldSystem_OpenBattleFrontierRecord(FieldSystem *fieldSystem, u8 challengeType, u8 facility, u16 species, enum HeapID heapID)
|
||||
{
|
||||
UnkStruct_0203E564 *v0;
|
||||
FrontierRecordsAppArgs *args;
|
||||
|
||||
FS_EXTERN_OVERLAY(overlay110);
|
||||
FS_EXTERN_OVERLAY(frontier_records_app);
|
||||
|
||||
static ApplicationManagerTemplate v1 = {
|
||||
ov110_021D0D80,
|
||||
ov110_021D0E9C,
|
||||
ov110_021D0EF0,
|
||||
FS_OVERLAY_ID(overlay110)
|
||||
static ApplicationManagerTemplate template = {
|
||||
BattleFrontierRecordsApp_Init,
|
||||
BattleFrontierRecordsApp_Main,
|
||||
BattleFrontierRecordsApp_Exit,
|
||||
FS_OVERLAY_ID(frontier_records_app)
|
||||
};
|
||||
|
||||
v0 = Heap_Alloc(heapID, sizeof(UnkStruct_0203E564));
|
||||
args = Heap_Alloc(heapID, sizeof(FrontierRecordsAppArgs));
|
||||
|
||||
v0->unk_04 = param1;
|
||||
v0->unk_05 = param2;
|
||||
v0->unk_06 = param3;
|
||||
v0->saveData = fieldSystem->saveData;
|
||||
args->challengeType = challengeType;
|
||||
args->facility = facility;
|
||||
args->species = species;
|
||||
args->saveData = fieldSystem->saveData;
|
||||
|
||||
FieldSystem_StartChildProcess(fieldSystem, &v1, v0);
|
||||
FieldSystem_StartChildProcess(fieldSystem, &template, args);
|
||||
|
||||
return v0;
|
||||
return args;
|
||||
}
|
||||
|
||||
PartyMenu *FieldSystem_OpenPartyMenu_SelectForItemUsage(FieldSystem *fieldSystem, enum HeapID heapID, enum Item item)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user