mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
Document Battle Arcade App (Overlay 108) (#993)
Some checks are pending
build / build (push) Waiting to run
Some checks are pending
build / build (push) Waiting to run
This commit is contained in:
parent
8cf15a6854
commit
b238efaf3c
13
include/applications/frontier/battle_arcade/main.h
Normal file
13
include/applications/frontier/battle_arcade/main.h
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_MAIN_H
|
||||
#define POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_MAIN_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
BOOL BattleArcadeApp_Init(ApplicationManager *appMan, int *state);
|
||||
BOOL BattleArcadeApp_Main(ApplicationManager *appMan, int *state);
|
||||
BOOL BattleArcadeApp_Exit(ApplicationManager *appMan, int *state);
|
||||
void BattleArcadeApp_HandleInitialLayoutCmd(int netID, int unused, void *data, void *context);
|
||||
void BattleArcadeApp_HandleResultCmd(int netID, int unused, void *data, void *context);
|
||||
void BattleArcadeApp_HandleUnusedCmd(int netID, int unused, void *data, void *context);
|
||||
|
||||
#endif // POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_MAIN_H
|
||||
30
include/applications/frontier/battle_arcade/sprite_manager.h
Normal file
30
include/applications/frontier/battle_arcade/sprite_manager.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef POKEPLATINUM_APPICATIONS_BATTLE_ARCADE_SPRITE_MANAGER_H
|
||||
#define POKEPLATINUM_APPICATIONS_BATTLE_ARCADE_SPRITE_MANAGER_H
|
||||
|
||||
#include "constants/battle_frontier.h"
|
||||
|
||||
#include "party.h"
|
||||
#include "sprite.h"
|
||||
#include "sprite_resource.h"
|
||||
#include "sprite_util.h"
|
||||
|
||||
#define RESOURCE_ID_SUB_SPRITES 0
|
||||
#define RESOURCE_ID_MAIN_SPRITES 1
|
||||
#define RESOURCE_ID_ITEM_SPRITES 2
|
||||
#define RESOURCE_ID_MON_SPRITES 3
|
||||
#define RESOURCE_ID_OPP_MON_ANIMS 7
|
||||
|
||||
#define NUM_MON_SPRITES MATH_MAX(ARCADE_PARTY_SIZE_SOLO, ARCADE_PARTY_SIZE_MULTI * 2)
|
||||
|
||||
typedef struct {
|
||||
SpriteList *spriteList;
|
||||
G2dRenderer renderer;
|
||||
SpriteResourceCollection *resourceCollection[MAX_SPRITE_RESOURCE_GEN4];
|
||||
SpriteResource *resources[11][MAX_SPRITE_RESOURCE_GEN4];
|
||||
} BattleArcadeAppSpriteManager;
|
||||
|
||||
void BattleArcadeApp_InitSpriteManager(BattleArcadeAppSpriteManager *spriteMan, Party *party, Party *opponentParty, u8 isMultiPlayerChallenge);
|
||||
Sprite *BattleArcadeApp_InitSprite(BattleArcadeAppSpriteManager *spriteMan, u32 charResourceID, u32 plttResourceID, u32 cellResourceID, u32 animID, u32 priority, int resourcePriority, u8 onSubScreen);
|
||||
void BattleArcadeApp_FreeSprites(BattleArcadeAppSpriteManager *spriteMan);
|
||||
|
||||
#endif // POKEPLATINUM_APPICATIONS_BATTLE_ARCADE_SPRITE_MANAGER_H
|
||||
25
include/applications/frontier/battle_arcade/sprites.h
Normal file
25
include/applications/frontier/battle_arcade/sprites.h
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#ifndef POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_SPRITES_H
|
||||
#define POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_SPRITES_H
|
||||
|
||||
#include "applications/frontier/battle_arcade/sprite_manager.h"
|
||||
|
||||
typedef struct BattleArcadeAppSprite {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
u16 unk_08;
|
||||
u8 unk_0A;
|
||||
u8 onSubScreen;
|
||||
u16 x;
|
||||
u16 y;
|
||||
Sprite *sprite;
|
||||
} BattleArcadeAppSprite;
|
||||
|
||||
BattleArcadeAppSprite *BattleArcadeAppSprite_New(BattleArcadeAppSpriteManager *spriteMan, u32 charResourceID, u32 plttResourceID, u32 cellResourceID, u32 animID, u16 x, u16 y, u32 priority, int resourcePriority, u8 onSubScreen);
|
||||
void *BattleArcadeAppSprite_Free(BattleArcadeAppSprite *sprite);
|
||||
void BattleArcadeAppSprite_SetDrawFlag(BattleArcadeAppSprite *app, BOOL draw);
|
||||
void BattleArcadeAppSprite_SetPosition(BattleArcadeAppSprite *sprite, u16 x, u16 y);
|
||||
void BattleArcadeAppSprite_SetAnim(BattleArcadeAppSprite *sprite, u32 animID);
|
||||
void BattleArcadeAppSprite_UpdatePalette(BattleArcadeAppSprite *sprite, Pokemon *mon);
|
||||
void BattleArcadeAppSprite_SetAnimateFlag(BattleArcadeAppSprite *sprite, u8 animate);
|
||||
|
||||
#endif // POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_SPRITES_H
|
||||
9
include/applications/frontier/battle_arcade/windows.h
Normal file
9
include/applications/frontier/battle_arcade/windows.h
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_WINDOWS_H
|
||||
#define POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_WINDOWS_H
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
void BattleArcadeApp_InitWindows(BgConfig *bgConfig, Window *window);
|
||||
void BattleArcadeApp_FreeWindows(Window *windows);
|
||||
|
||||
#endif // POKEPLATINUM_APPLICATIONS_BATTLE_ARCADE_WINDOWS_H
|
||||
|
|
@ -6,4 +6,49 @@
|
|||
#define FRONTIER_CHALLENGE_MULTI 2
|
||||
#define FRONTIER_CHALLENGE_MULTI_WFC 3
|
||||
|
||||
#define BATTLES_PER_ROUND_ARCADE 7
|
||||
|
||||
#define ARCADE_PARTY_SIZE_SOLO 3
|
||||
#define ARCADE_PARTY_SIZE_MULTI 2
|
||||
|
||||
#define ARCADE_EFFECT_LOWER_FOE_HP 0
|
||||
#define ARCADE_EFFECT_POISON_FOE 1
|
||||
#define ARCADE_EFFECT_PARALYZE_FOE 2
|
||||
#define ARCADE_EFFECT_BURN_FOE 3
|
||||
#define ARCADE_EFFECT_SLEEP_FOE 4
|
||||
#define ARCADE_EFFECT_FREEZE_FOE 5
|
||||
#define ARCADE_EFFECT_FOE_GET_BERRY 6
|
||||
#define ARCADE_EFFECT_FOE_GET_ITEM 7
|
||||
#define ARCADE_EFFECT_FOE_GET_LEVELS 8
|
||||
#define ARCADE_EFFECT_LOWER_ALLY_HP 9
|
||||
#define ARCADE_EFFECT_POISON_ALLY 10
|
||||
#define ARCADE_EFFECT_PARALYZE_ALLY 11
|
||||
#define ARCADE_EFFECT_BURN_ALLY 12
|
||||
#define ARCADE_EFFECT_SLEEP_ALLY 13
|
||||
#define ARCADE_EFFECT_FREEZE_ALLY 14
|
||||
#define ARCADE_EFFECT_ALLY_GET_BERRY 15
|
||||
#define ARCADE_EFFECT_ALLY_GET_ITEM 16
|
||||
#define ARCADE_EFFECT_ALLY_GET_LEVELS 17
|
||||
#define ARCADE_EFFECT_SUNNY_BATTLE 18
|
||||
#define ARCADE_EFFECT_RAINY_BATTLE 19
|
||||
#define ARCADE_EFFECT_SANDY_BATTLE 20
|
||||
#define ARCADE_EFFECT_HAIL_BATTLE 21
|
||||
#define ARCADE_EFFECT_FOGGY_BATTLE 22
|
||||
#define ARCADE_EFFECT_TRICK_ROOM 23
|
||||
#define ARCADE_EFFECT_SWAP_MONS 24
|
||||
#define ARCADE_EFFECT_SPEED_UP 25
|
||||
#define ARCADE_EFFECT_SLOW_DOWN 26
|
||||
#define ARCADE_EFFECT_RANDOMIZE_CURSOR 27
|
||||
#define ARCADE_EFFECT_GET_1_BP 28
|
||||
#define ARCADE_EFFECT_NO_BATTLE 29
|
||||
#define ARCADE_EFFECT_NO_EVENT 30
|
||||
#define ARCADE_EFFECT_GET_3_BP 31
|
||||
#define NUM_ARCADE_EFFECTS 32
|
||||
|
||||
#define ARCADE_EFFECT_CATEGORY_FOE 0
|
||||
#define ARCADE_EFFECT_CATEGORY_ALLY 1
|
||||
#define ARCADE_EFFECT_CATEGORY_ENV 2
|
||||
#define ARCADE_EFFECT_CATEGORY_BONUS 3
|
||||
#define NUM_ARCADE_EFFECT_CATEGORIES 4
|
||||
|
||||
#endif // POKEPLATINUM_CONSTANTS_BATTLE_FRONTIER_H
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ enum HeapID {
|
|||
HEAP_ID_BATTLE_CASTLE_APP,
|
||||
HEAP_ID_101,
|
||||
HEAP_ID_102,
|
||||
HEAP_ID_103,
|
||||
HEAP_ID_BATTLE_ARCADE_APP,
|
||||
HEAP_ID_104,
|
||||
HEAP_ID_105,
|
||||
HEAP_ID_106,
|
||||
|
|
@ -136,6 +136,7 @@ enum HeapSize {
|
|||
|
||||
HEAP_SIZE_BATTLE_HALL_APP = 0x20000,
|
||||
HEAP_SIZE_BATTLE_FACTORY_APP = 0x20000,
|
||||
HEAP_SIZE_BATTLE_ARCADE_APP = 0x20000,
|
||||
HEAP_SIZE_BAG = 0x30000,
|
||||
|
||||
HEAP_SIZE_PRE_POKETCH_SUBSCREEN = 0x18000,
|
||||
|
|
|
|||
|
|
@ -53,6 +53,13 @@
|
|||
#define BATTLE_ARCADE_CORRIDOR_TILES 56
|
||||
#define BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_TILEMAP 57
|
||||
#define BATTLE_ARCADE_BATTLE_ROOM_HP_SCREEN_TILES 89
|
||||
#define BATTLE_ARCADE_APP_MAIN_INITIAL_TILEMAP 116
|
||||
#define BATTLE_ARCADE_APP_MAIN_ROULETTE_TILEMAP 117
|
||||
#define BATTLE_ARCADE_APP_MAIN_MULTI_INITIAL_TILEMAP 118
|
||||
#define BATTLE_ARCADE_APP_MAIN_MULTI_ROULETTE_TILEMAP 119
|
||||
#define BATTLE_ARCADE_APP_MAIN_TILES 120
|
||||
#define BATTLE_ARCADE_APP_SUB_TILEMAP 121
|
||||
#define BATTLE_ARCADE_APP_SUB_TILES 122
|
||||
#define BATTLE_FRONTIER_APP_SUB_SCREEN_TILES 125
|
||||
#define BATTLE_FRONTIER_APP_SUB_SCREEN_TILEMAP 126
|
||||
#define BATTLE_FACTORY_PLTT 129
|
||||
|
|
@ -68,6 +75,7 @@
|
|||
#define BATTLE_TOWER_PLTT 141
|
||||
#define BATTLE_ARCADE_BATTLE_ROOM_PLTT 142
|
||||
#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_APP_SUB_SCREEN_PLTT 171
|
||||
|
||||
|
|
|
|||
|
|
@ -4,17 +4,25 @@
|
|||
// frontier_obj.narc. This file should eventually be deleted and the constants
|
||||
// replaced with those from a naix file once the NARC is unpacked.
|
||||
|
||||
#define BATTLE_FACTORY_APP_SPRITES_NCGR 0
|
||||
#define BATTLE_FACTORY_APP_SPRITES_NANR 1
|
||||
#define BATTLE_FACTORY_APP_SPRITES_NCER 2
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_NCGR 12
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_NANR 13
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_NCER 14
|
||||
#define BATTLE_CASTLE_APP_SPRITES_NCGR 15
|
||||
#define BATTLE_CASTLE_APP_SPRITES_NANR 16
|
||||
#define BATTLE_CASTLE_APP_SPRITES_NCER 17
|
||||
#define BATTLE_FACTORY_APP_SPRITES_PLTT 36
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_PLTT 38
|
||||
#define BATTLE_CASTLE_APP_SPRITES_PLTT 39
|
||||
#define BATTLE_FACTORY_APP_SPRITES_NCGR 0
|
||||
#define BATTLE_FACTORY_APP_SPRITES_NANR 1
|
||||
#define BATTLE_FACTORY_APP_SPRITES_NCER 2
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_NCGR 12
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_NANR 13
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_NCER 14
|
||||
#define BATTLE_CASTLE_APP_SPRITES_NCGR 15
|
||||
#define BATTLE_CASTLE_APP_SPRITES_NANR 16
|
||||
#define BATTLE_CASTLE_APP_SPRITES_NCER 17
|
||||
#define BATTLE_ARCADE_APP_SPRITES_NCGR 18
|
||||
#define BATTLE_ARCADE_APP_SPRITES_NANR 19
|
||||
#define BATTLE_ARCADE_APP_SPRITES_NCER 20
|
||||
#define BATTLE_ARCADE_APP_SUB_SPRITES_NCGR 21
|
||||
#define BATTLE_ARCADE_APP_SUB_SPRITES_NANR 22
|
||||
#define BATTLE_ARCADE_APP_SUB_SPRITES_NCER 23
|
||||
#define BATTLE_FACTORY_APP_SPRITES_PLTT 36
|
||||
#define BATTLE_HALL_APP_CURSOR_BOX_PLTT 38
|
||||
#define BATTLE_CASTLE_APP_SPRITES_PLTT 39
|
||||
#define BATTLE_ARCADE_APP_SPRITES_PLTT 40
|
||||
#define BATTLE_ARCADE_APP_SUB_SPRITES_PLTT 41
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -9,16 +9,16 @@
|
|||
#include "pokemon.h"
|
||||
|
||||
void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3);
|
||||
u8 ov104_0223BD70(u8 param0, BOOL param1);
|
||||
u8 ov104_0223BDA4(u8 param0, BOOL param1);
|
||||
u8 BattleArcade_GetPartySize(u8 challengeType, BOOL includePartnerMons);
|
||||
u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents);
|
||||
FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_02230BE4 *param1);
|
||||
u8 ov104_0223BFFC(UnkStruct_ov104_0223BFFC *param0);
|
||||
BOOL BattleArcade_IsMultiPlayerChallenge(u8 param0);
|
||||
BOOL BattleArcade_IsMultiPlayerChallenge(u8 challengeType);
|
||||
void ov104_0223C010(UnkStruct_ov104_0223BFFC *param0, Pokemon *param1);
|
||||
void ov104_0223C034(UnkStruct_ov104_0223BFFC *param0, Party *param1, Pokemon *param2);
|
||||
void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0);
|
||||
u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1);
|
||||
u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0);
|
||||
u8 ov104_0223C148(u8 param0);
|
||||
u8 BattleArcade_GetCategoryFromEffect(u8 effect);
|
||||
|
||||
#endif // POKEPLATINUM_OV104_0223BCBC_H
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV108_02241AE0_H
|
||||
#define POKEPLATINUM_OV108_02241AE0_H
|
||||
|
||||
#include "overlay_manager.h"
|
||||
|
||||
int ov108_02241AE0(ApplicationManager *appMan, int *param1);
|
||||
int ov108_02241C38(ApplicationManager *appMan, int *param1);
|
||||
int ov108_02241D70(ApplicationManager *appMan, int *param1);
|
||||
void ov108_02242AB0(int param0, int param1, void *param2, void *param3);
|
||||
void ov108_02242B24(int param0, int param1, void *param2, void *param3);
|
||||
void ov108_02242B84(int param0, int param1, void *param2, void *param3);
|
||||
|
||||
#endif // POKEPLATINUM_OV108_02241AE0_H
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV108_02243030_H
|
||||
#define POKEPLATINUM_OV108_02243030_H
|
||||
|
||||
#include "overlay108/struct_ov108_02243030.h"
|
||||
|
||||
#include "party.h"
|
||||
#include "sprite.h"
|
||||
|
||||
void ov108_02243030(UnkStruct_ov108_02243030 *param0, Party *param1, Party *param2, u8 param3);
|
||||
Sprite *ov108_022430F0(UnkStruct_ov108_02243030 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, int param6, u8 param7);
|
||||
void ov108_02243194(UnkStruct_ov108_02243030 *param0);
|
||||
|
||||
#endif // POKEPLATINUM_OV108_02243030_H
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV108_0224351C_H
|
||||
#define POKEPLATINUM_OV108_0224351C_H
|
||||
|
||||
#include "overlay108/struct_ov108_02243030.h"
|
||||
#include "overlay108/struct_ov108_02243594_decl.h"
|
||||
|
||||
#include "pokemon.h"
|
||||
|
||||
UnkStruct_ov108_02243594 *ov108_0224351C(UnkStruct_ov108_02243030 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u16 param5, u16 param6, u32 param7, int param8, u8 param9);
|
||||
void *ov108_02243594(UnkStruct_ov108_02243594 *param0);
|
||||
void ov108_022435A8(UnkStruct_ov108_02243594 *param0, int param1);
|
||||
void ov108_022435B4(UnkStruct_ov108_02243594 *param0, u16 param1, u16 param2);
|
||||
void ov108_022435F4(UnkStruct_ov108_02243594 *param0, u32 param1);
|
||||
void ov108_02243610(UnkStruct_ov108_02243594 *param0, Pokemon *param1);
|
||||
void ov108_02243624(UnkStruct_ov108_02243594 *param0, u8 param1);
|
||||
|
||||
#endif // POKEPLATINUM_OV108_0224351C_H
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
#ifndef POKEPLATINUM_OV108_02243630_H
|
||||
#define POKEPLATINUM_OV108_02243630_H
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
void ov108_02243630(BgConfig *param0, Window *param1);
|
||||
void ov108_02243660(Window *param0);
|
||||
|
||||
#endif // POKEPLATINUM_OV108_02243630_H
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_OV108_02241DB0_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_OV108_02241DB0_DECL_H
|
||||
|
||||
typedef struct UnkStruct_ov108_02241DB0_t UnkStruct_ov108_02241DB0;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_OV108_02241DB0_DECL_H
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_OV108_02243030_H
|
||||
#define POKEPLATINUM_STRUCT_OV108_02243030_H
|
||||
|
||||
#include "sprite.h"
|
||||
#include "sprite_resource.h"
|
||||
#include "sprite_util.h"
|
||||
|
||||
typedef struct {
|
||||
SpriteList *unk_00;
|
||||
G2dRenderer unk_04;
|
||||
SpriteResourceCollection *unk_190[4];
|
||||
SpriteResource *unk_1A0[11][4];
|
||||
} UnkStruct_ov108_02243030;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_OV108_02243030_H
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef POKEPLATINUM_STRUCT_OV108_02243594_DECL_H
|
||||
#define POKEPLATINUM_STRUCT_OV108_02243594_DECL_H
|
||||
|
||||
typedef struct UnkStruct_ov108_02243594_t UnkStruct_ov108_02243594;
|
||||
|
||||
#endif // POKEPLATINUM_STRUCT_OV108_02243594_DECL_H
|
||||
|
|
@ -1601,13 +1601,13 @@ Overlay battle_castle_app
|
|||
Object main.nef.p/src_applications_frontier_battle_castle_windows.c.o
|
||||
}
|
||||
|
||||
Overlay overlay108
|
||||
Overlay battle_arcade_app
|
||||
{
|
||||
After overlay104
|
||||
Object main.nef.p/src_overlay108_ov108_02241AE0.c.o
|
||||
Object main.nef.p/src_overlay108_ov108_02243030.c.o
|
||||
Object main.nef.p/src_overlay108_ov108_0224351C.c.o
|
||||
Object main.nef.p/src_overlay108_ov108_02243630.c.o
|
||||
Object main.nef.p/src_applications_frontier_battle_arcade_main.c.o
|
||||
Object main.nef.p/src_applications_frontier_battle_arcade_sprite_manager.c.o
|
||||
Object main.nef.p/src_applications_frontier_battle_arcade_sprites.c.o
|
||||
Object main.nef.p/src_applications_frontier_battle_arcade_windows.c.o
|
||||
}
|
||||
|
||||
Overlay overlay109
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ a3f4dcf6634992ff3367fe5a377825fb913a39f6 *overlay104.sbin
|
|||
0e6e923a1a359b9482646b3dd0a7a2562e140672 *battle_factory_app.sbin
|
||||
c3a66997e55fb3e761d521136a42f07f4761f5da *battle_hall_app.sbin
|
||||
f8d3fd65261098ff45b3a31319c904b520814fa2 *battle_castle_app.sbin
|
||||
901f6afe6c1b0b54dc42af812f13560758814d2b *overlay108.sbin
|
||||
901f6afe6c1b0b54dc42af812f13560758814d2b *battle_arcade_app.sbin
|
||||
5acaa19b61120f72d546a83e36c361b2e383c0bd *overlay109.sbin
|
||||
1626b234bbd0915fc1bd57d0b67c59c86f1138bd *overlay110.sbin
|
||||
eb9d61aa9d3ad877f55af30ff212ecc7094049c5 *overlay111.sbin
|
||||
|
|
|
|||
1472
src/applications/frontier/battle_arcade/main.c
Normal file
1472
src/applications/frontier/battle_arcade/main.c
Normal file
File diff suppressed because it is too large
Load Diff
186
src/applications/frontier/battle_arcade/sprite_manager.c
Normal file
186
src/applications/frontier/battle_arcade/sprite_manager.c
Normal file
|
|
@ -0,0 +1,186 @@
|
|||
#include "applications/frontier/battle_arcade/sprite_manager.h"
|
||||
|
||||
#include <nitro.h>
|
||||
|
||||
#include "applications/party_menu/main.h"
|
||||
|
||||
#include "char_transfer.h"
|
||||
#include "gx_layers.h"
|
||||
#include "narc.h"
|
||||
#include "narc_frontier_obj.h"
|
||||
#include "party.h"
|
||||
#include "pltt_transfer.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "render_oam.h"
|
||||
#include "sprite.h"
|
||||
#include "sprite_resource.h"
|
||||
#include "sprite_transfer.h"
|
||||
#include "sprite_util.h"
|
||||
#include "vram_transfer.h"
|
||||
|
||||
static const u8 sCapacities[4] = { 11, 11, 11, 11 };
|
||||
|
||||
static void InitCharPlttTransferBuffers(void);
|
||||
static void InitMainScreenSpriteResources(BattleArcadeAppSpriteManager *spriteMan);
|
||||
static void InitItemSpriteResources(BattleArcadeAppSpriteManager *spriteMan);
|
||||
static void InitMonSpriteResources(BattleArcadeAppSpriteManager *spriteMan, Party *party, Party *opponentParty, u8 isMultiPlayerChallenge);
|
||||
static void InitSubScreenSpriteResources(BattleArcadeAppSpriteManager *spriteMan);
|
||||
|
||||
void BattleArcadeApp_InitSpriteManager(BattleArcadeAppSpriteManager *spriteMan, Party *party, Party *opponentParty, u8 isMultiPlayerChallenge)
|
||||
{
|
||||
VramTransfer_New(32, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
InitCharPlttTransferBuffers();
|
||||
|
||||
NNS_G2dInitOamManagerModule();
|
||||
RenderOam_Init(0, 128, 0, 32, 0, 128, 0, 32, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
|
||||
spriteMan->spriteList = SpriteList_InitRendering(34, &spriteMan->renderer, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
|
||||
for (int i = 0; i < MAX_SPRITE_RESOURCE_GEN4; i++) {
|
||||
spriteMan->resourceCollection[i] = SpriteResourceCollection_New(sCapacities[i], i, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
}
|
||||
|
||||
InitSubScreenSpriteResources(spriteMan);
|
||||
InitMainScreenSpriteResources(spriteMan);
|
||||
InitItemSpriteResources(spriteMan);
|
||||
InitMonSpriteResources(spriteMan, party, opponentParty, isMultiPlayerChallenge);
|
||||
|
||||
for (int i = 0; i < 11; i++) {
|
||||
SpriteTransfer_RequestChar(spriteMan->resources[i][SPRITE_RESOURCE_CHAR]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; i++) {
|
||||
SpriteTransfer_RequestPlttWholeRange(spriteMan->resources[i][SPRITE_RESOURCE_PLTT]);
|
||||
}
|
||||
|
||||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, TRUE);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, TRUE);
|
||||
}
|
||||
|
||||
Sprite *BattleArcadeApp_InitSprite(BattleArcadeAppSpriteManager *spriteMan, u32 charResourceID, u32 plttResourceID, u32 cellResourceID, u32 animID, u32 priority, int resourcePriority, u8 onSubScreen)
|
||||
{
|
||||
SpriteResourcesHeader resourceHeader;
|
||||
SpriteResourcesHeader_Init(&resourceHeader, charResourceID, plttResourceID, cellResourceID, cellResourceID, -1, -1, FALSE, resourcePriority, spriteMan->resourceCollection[SPRITE_RESOURCE_CHAR], spriteMan->resourceCollection[SPRITE_RESOURCE_PLTT], spriteMan->resourceCollection[SPRITE_RESOURCE_CELL], spriteMan->resourceCollection[SPRITE_RESOURCE_ANIM], NULL, NULL);
|
||||
|
||||
AffineSpriteListTemplate spriteTemplate;
|
||||
spriteTemplate.list = spriteMan->spriteList;
|
||||
spriteTemplate.resourceData = &resourceHeader;
|
||||
spriteTemplate.position.x = 0;
|
||||
spriteTemplate.position.y = 0;
|
||||
spriteTemplate.position.z = 0;
|
||||
spriteTemplate.affineScale.x = FX32_ONE;
|
||||
spriteTemplate.affineScale.y = FX32_ONE;
|
||||
spriteTemplate.affineScale.z = FX32_ONE;
|
||||
spriteTemplate.affineZRotation = 0;
|
||||
spriteTemplate.priority = priority;
|
||||
spriteTemplate.heapID = HEAP_ID_BATTLE_ARCADE_APP;
|
||||
|
||||
if (!onSubScreen) {
|
||||
spriteTemplate.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
||||
} else {
|
||||
spriteTemplate.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
|
||||
spriteTemplate.position.y += FX32_CONST(HW_LCD_HEIGHT);
|
||||
}
|
||||
|
||||
Sprite *sprite = SpriteList_AddAffine(&spriteTemplate);
|
||||
|
||||
Sprite_SetAnimateFlag(sprite, TRUE);
|
||||
Sprite_SetAnimSpeed(sprite, FX32_ONE);
|
||||
Sprite_SetAnim(sprite, animID);
|
||||
|
||||
return sprite;
|
||||
}
|
||||
|
||||
void BattleArcadeApp_FreeSprites(BattleArcadeAppSpriteManager *spriteMan)
|
||||
{
|
||||
for (u8 i = 0; i < 11; i++) {
|
||||
SpriteTransfer_ResetCharTransfer(spriteMan->resources[i][SPRITE_RESOURCE_CHAR]);
|
||||
}
|
||||
|
||||
for (u8 i = 0; i < 4; i++) {
|
||||
SpriteTransfer_ResetPlttTransfer(spriteMan->resources[i][SPRITE_RESOURCE_PLTT]);
|
||||
}
|
||||
|
||||
for (u8 i = 0; i < 4; i++) {
|
||||
SpriteResourceCollection_Delete(spriteMan->resourceCollection[i]);
|
||||
}
|
||||
|
||||
SpriteList_Delete(spriteMan->spriteList);
|
||||
RenderOam_Free();
|
||||
CharTransfer_Free();
|
||||
PlttTransfer_Free();
|
||||
}
|
||||
|
||||
static void InitCharPlttTransferBuffers(void)
|
||||
{
|
||||
CharTransferTemplate transferTemplate = {
|
||||
.maxTasks = 32,
|
||||
.sizeMain = 1024,
|
||||
.sizeSub = 1024,
|
||||
HEAP_ID_BATTLE_ARCADE_APP
|
||||
};
|
||||
|
||||
CharTransfer_InitWithVramModes(&transferTemplate, GX_OBJVRAMMODE_CHAR_1D_32K, GX_OBJVRAMMODE_CHAR_1D_32K);
|
||||
|
||||
PlttTransfer_Init(14, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
CharTransfer_ClearBuffers();
|
||||
PlttTransfer_Clear();
|
||||
}
|
||||
|
||||
static void InitMainScreenSpriteResources(BattleArcadeAppSpriteManager *spriteMan)
|
||||
{
|
||||
spriteMan->resources[RESOURCE_ID_MAIN_SPRITES][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTiles(spriteMan->resourceCollection[SPRITE_RESOURCE_CHAR], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SPRITES_NCGR, TRUE, RESOURCE_ID_MAIN_SPRITES, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_MAIN_SPRITES][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(spriteMan->resourceCollection[SPRITE_RESOURCE_PLTT], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SPRITES_PLTT, FALSE, RESOURCE_ID_MAIN_SPRITES, NNS_G2D_VRAM_TYPE_2DMAIN, 8, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_MAIN_SPRITES][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_Add(spriteMan->resourceCollection[SPRITE_RESOURCE_CELL], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SPRITES_NCER, TRUE, RESOURCE_ID_MAIN_SPRITES, SPRITE_RESOURCE_CELL, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_MAIN_SPRITES][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_Add(spriteMan->resourceCollection[SPRITE_RESOURCE_ANIM], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SPRITES_NANR, TRUE, RESOURCE_ID_MAIN_SPRITES, SPRITE_RESOURCE_ANIM, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
}
|
||||
|
||||
static void InitItemSpriteResources(BattleArcadeAppSpriteManager *spriteMan)
|
||||
{
|
||||
NARC *narc = NARC_ctor(NARC_INDEX_GRAPHIC__PL_PLIST_GRA, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
|
||||
spriteMan->resources[RESOURCE_ID_ITEM_SPRITES][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTilesFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_CHAR], narc, sub_02081930(), FALSE, RESOURCE_ID_ITEM_SPRITES, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_ITEM_SPRITES][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(spriteMan->resourceCollection[SPRITE_RESOURCE_PLTT], NARC_INDEX_GRAPHIC__PL_PLIST_GRA, sub_02081934(), FALSE, RESOURCE_ID_ITEM_SPRITES, NNS_G2D_VRAM_TYPE_2DMAIN, 3, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_ITEM_SPRITES][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_AddFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_CELL], narc, sub_02081938(), FALSE, RESOURCE_ID_ITEM_SPRITES, SPRITE_RESOURCE_CELL, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_ITEM_SPRITES][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_AddFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_ANIM], narc, sub_0208193C(), FALSE, RESOURCE_ID_ITEM_SPRITES, SPRITE_RESOURCE_ANIM, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
|
||||
NARC_dtor(narc);
|
||||
}
|
||||
|
||||
static void InitMonSpriteResources(BattleArcadeAppSpriteManager *spriteMan, Party *party, Party *opponentParty, u8 isMultiPlayerChallenge)
|
||||
{
|
||||
Pokemon *mon, *oppMon;
|
||||
NARC *narc = NARC_ctor(NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
|
||||
spriteMan->resources[RESOURCE_ID_MON_SPRITES][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(spriteMan->resourceCollection[SPRITE_RESOURCE_PLTT], NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, PokeIconPalettesFileIndex(), FALSE, RESOURCE_ID_MON_SPRITES, NNS_G2D_VRAM_TYPE_2DMAIN, RESOURCE_ID_MON_SPRITES, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_MON_SPRITES][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_AddFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_CELL], narc, PokeIcon32KCellsFileIndex(), FALSE, RESOURCE_ID_MON_SPRITES, SPRITE_RESOURCE_CELL, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_MON_SPRITES][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_AddFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_ANIM], narc, PokeIcon32KAnimationFileIndex(), FALSE, RESOURCE_ID_MON_SPRITES, SPRITE_RESOURCE_ANIM, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
|
||||
for (u32 i = 0; i < NUM_MON_SPRITES; i++) {
|
||||
if (i == ARCADE_PARTY_SIZE_SOLO) {
|
||||
if (!isMultiPlayerChallenge) {
|
||||
mon = Party_GetPokemonBySlotIndex(party, 0);
|
||||
oppMon = Party_GetPokemonBySlotIndex(opponentParty, 0);
|
||||
} else {
|
||||
mon = Party_GetPokemonBySlotIndex(party, i);
|
||||
oppMon = Party_GetPokemonBySlotIndex(opponentParty, i);
|
||||
}
|
||||
} else {
|
||||
mon = Party_GetPokemonBySlotIndex(party, i);
|
||||
oppMon = Party_GetPokemonBySlotIndex(opponentParty, i);
|
||||
}
|
||||
|
||||
spriteMan->resources[RESOURCE_ID_MON_SPRITES + i][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTilesFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_CHAR], narc, Pokemon_IconSpriteIndex(mon), SPRITE_RESOURCE_CHAR, RESOURCE_ID_MON_SPRITES + i, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_OPP_MON_ANIMS + i][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTilesFrom(spriteMan->resourceCollection[SPRITE_RESOURCE_CHAR], narc, Pokemon_IconSpriteIndex(oppMon), SPRITE_RESOURCE_CHAR, RESOURCE_ID_OPP_MON_ANIMS + i, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
}
|
||||
|
||||
NARC_dtor(narc);
|
||||
}
|
||||
|
||||
static void InitSubScreenSpriteResources(BattleArcadeAppSpriteManager *spriteMan)
|
||||
{
|
||||
spriteMan->resources[RESOURCE_ID_SUB_SPRITES][SPRITE_RESOURCE_CHAR] = SpriteResourceCollection_AddTiles(spriteMan->resourceCollection[SPRITE_RESOURCE_CHAR], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SUB_SPRITES_NCGR, TRUE, RESOURCE_ID_SUB_SPRITES, NNS_G2D_VRAM_TYPE_2DSUB, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_SUB_SPRITES][SPRITE_RESOURCE_PLTT] = SpriteResourceCollection_AddPalette(spriteMan->resourceCollection[SPRITE_RESOURCE_PLTT], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SUB_SPRITES_PLTT, FALSE, RESOURCE_ID_SUB_SPRITES, NNS_G2D_VRAM_TYPE_2DSUB, 2, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_SUB_SPRITES][SPRITE_RESOURCE_CELL] = SpriteResourceCollection_Add(spriteMan->resourceCollection[SPRITE_RESOURCE_CELL], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SUB_SPRITES_NCER, TRUE, RESOURCE_ID_SUB_SPRITES, SPRITE_RESOURCE_CELL, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
spriteMan->resources[RESOURCE_ID_SUB_SPRITES][SPRITE_RESOURCE_ANIM] = SpriteResourceCollection_Add(spriteMan->resourceCollection[SPRITE_RESOURCE_ANIM], NARC_INDEX_RESOURCE__ENG__FRONTIER_GRAPHIC__FRONTIER_OBJ, BATTLE_ARCADE_APP_SUB_SPRITES_NANR, TRUE, RESOURCE_ID_SUB_SPRITES, SPRITE_RESOURCE_ANIM, HEAP_ID_BATTLE_ARCADE_APP);
|
||||
}
|
||||
76
src/applications/frontier/battle_arcade/sprites.c
Normal file
76
src/applications/frontier/battle_arcade/sprites.c
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
#include "applications/frontier/battle_arcade/sprites.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "applications/frontier/battle_arcade/sprite_manager.h"
|
||||
|
||||
#include "heap.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "sprite.h"
|
||||
|
||||
BattleArcadeAppSprite *BattleArcadeAppSprite_New(BattleArcadeAppSpriteManager *spriteMan, u32 charResourceID, u32 plttResourceID, u32 cellResourceID, u32 animID, u16 x, u16 y, u32 priority, int resourcePriority, u8 onSubScreen)
|
||||
{
|
||||
BattleArcadeAppSprite *appSprite = Heap_Alloc(HEAP_ID_BATTLE_ARCADE_APP, sizeof(BattleArcadeAppSprite));
|
||||
memset(appSprite, 0, sizeof(BattleArcadeAppSprite));
|
||||
|
||||
appSprite->sprite = BattleArcadeApp_InitSprite(spriteMan, charResourceID, plttResourceID, cellResourceID, animID, priority, resourcePriority, onSubScreen);
|
||||
appSprite->x = x;
|
||||
appSprite->y = y;
|
||||
appSprite->onSubScreen = onSubScreen;
|
||||
|
||||
VecFx32 pos;
|
||||
pos.x = x * FX32_ONE;
|
||||
pos.y = y * FX32_ONE;
|
||||
|
||||
if (onSubScreen == TRUE) {
|
||||
pos.y += FX32_CONST(HW_LCD_HEIGHT);
|
||||
}
|
||||
|
||||
Sprite_SetPosition(appSprite->sprite, &pos);
|
||||
|
||||
return appSprite;
|
||||
}
|
||||
|
||||
void *BattleArcadeAppSprite_Free(BattleArcadeAppSprite *appSprite)
|
||||
{
|
||||
Sprite_Delete(appSprite->sprite);
|
||||
Heap_Free(appSprite);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void BattleArcadeAppSprite_SetDrawFlag(BattleArcadeAppSprite *appSprite, BOOL draw)
|
||||
{
|
||||
Sprite_SetDrawFlag(appSprite->sprite, draw);
|
||||
}
|
||||
|
||||
void BattleArcadeAppSprite_SetPosition(BattleArcadeAppSprite *appSprite, u16 x, u16 y)
|
||||
{
|
||||
VecFx32 pos = *Sprite_GetPosition(appSprite->sprite);
|
||||
|
||||
pos.x = x * FX32_ONE;
|
||||
pos.y = y * FX32_ONE;
|
||||
|
||||
if (appSprite->onSubScreen == TRUE) {
|
||||
pos.y += FX32_CONST(HW_LCD_HEIGHT);
|
||||
}
|
||||
|
||||
Sprite_SetPosition(appSprite->sprite, &pos);
|
||||
}
|
||||
|
||||
void BattleArcadeAppSprite_SetAnim(BattleArcadeAppSprite *appSprite, u32 animID)
|
||||
{
|
||||
Sprite_SetAnimSpeed(appSprite->sprite, FX32_ONE);
|
||||
Sprite_SetAnimNoRestart(appSprite->sprite, animID);
|
||||
}
|
||||
|
||||
void BattleArcadeAppSprite_UpdatePalette(BattleArcadeAppSprite *appSprite, Pokemon *mon)
|
||||
{
|
||||
Sprite_SetExplicitPaletteOffsetAutoAdjust(appSprite->sprite, Pokemon_IconPaletteIndex(mon));
|
||||
}
|
||||
|
||||
void BattleArcadeAppSprite_SetAnimateFlag(BattleArcadeAppSprite *appSprite, u8 animate)
|
||||
{
|
||||
Sprite_SetAnimateFlag(appSprite->sprite, animate);
|
||||
}
|
||||
41
src/applications/frontier/battle_arcade/windows.c
Normal file
41
src/applications/frontier/battle_arcade/windows.c
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#include "applications/frontier/battle_arcade/windows.h"
|
||||
|
||||
#include <nitro.h>
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
static const WindowTemplate sWinTemplates[] = {
|
||||
{
|
||||
.bgLayer = BG_LAYER_MAIN_1,
|
||||
.tilemapLeft = 2,
|
||||
.tilemapTop = 19,
|
||||
.width = 27,
|
||||
.height = 4,
|
||||
.palette = 12,
|
||||
.baseTile = 1,
|
||||
},
|
||||
{
|
||||
.bgLayer = BG_LAYER_MAIN_1,
|
||||
.tilemapLeft = 24,
|
||||
.tilemapTop = 13,
|
||||
.width = 7,
|
||||
.height = 4,
|
||||
.palette = 13,
|
||||
.baseTile = 109,
|
||||
}
|
||||
};
|
||||
|
||||
void BattleArcadeApp_InitWindows(BgConfig *bgConfig, Window *window)
|
||||
{
|
||||
for (u8 i = 0; i < NELEMS(sWinTemplates); i++) {
|
||||
Window_AddFromTemplate(bgConfig, &window[i], &sWinTemplates[i]);
|
||||
Window_FillTilemap(&window[i], 0);
|
||||
}
|
||||
}
|
||||
|
||||
void BattleArcadeApp_FreeWindows(Window *windows)
|
||||
{
|
||||
for (u16 i = 0; i < NELEMS(sWinTemplates); i++) {
|
||||
Window_Remove(&windows[i]);
|
||||
}
|
||||
}
|
||||
|
|
@ -968,10 +968,10 @@ pokeplatinum_c = files(
|
|||
'applications/frontier/battle_castle/sprites.c',
|
||||
'applications/frontier/battle_castle/helpers.c',
|
||||
'applications/frontier/battle_castle/windows.c',
|
||||
'overlay108/ov108_02241AE0.c',
|
||||
'overlay108/ov108_02243030.c',
|
||||
'overlay108/ov108_0224351C.c',
|
||||
'overlay108/ov108_02243630.c',
|
||||
'applications/frontier/battle_arcade/main.c',
|
||||
'applications/frontier/battle_arcade/sprite_manager.c',
|
||||
'applications/frontier/battle_arcade/sprites.c',
|
||||
'applications/frontier/battle_arcade/windows.c',
|
||||
'overlay109/ov109_021D0D80.c',
|
||||
'overlay109/ov109_021D3D50.c',
|
||||
'overlay110/ov110_021D0D80.c',
|
||||
|
|
|
|||
|
|
@ -1346,7 +1346,7 @@ BOOL ov104_0222FAD0(UnkStruct_ov104_0223BFFC *param0)
|
|||
|
||||
v1 = 0;
|
||||
v3 = 512;
|
||||
v5 = ov104_0223BD70(param0->unk_10, 0);
|
||||
v5 = BattleArcade_GetPartySize(param0->unk_10, 0);
|
||||
v4 = Pokemon_StructSize();
|
||||
|
||||
for (v0 = 0; v0 < v5; v0++) {
|
||||
|
|
@ -1378,7 +1378,7 @@ void ov104_0222FB34(int param0, int param1, void *param2, void *param3)
|
|||
return;
|
||||
}
|
||||
|
||||
v0 = ov104_0223BD70(v5->unk_10, 0);
|
||||
v0 = BattleArcade_GetPartySize(v5->unk_10, 0);
|
||||
v3 = Pokemon_StructSize();
|
||||
v4 = Pokemon_New(HEAP_ID_FIELD2);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "applications/frontier/battle_arcade/main.h"
|
||||
#include "overlay063/ov63_0222CCE4.h"
|
||||
#include "overlay104/frontier_script_context.h"
|
||||
#include "overlay104/frscrcmd.h"
|
||||
|
|
@ -19,7 +20,6 @@
|
|||
#include "overlay104/struct_ov104_0223BFFC.h"
|
||||
#include "overlay104/struct_ov104_0223C4CC.h"
|
||||
#include "overlay104/struct_ov104_0223C634.h"
|
||||
#include "overlay108/ov108_02241AE0.h"
|
||||
|
||||
#include "communication_information.h"
|
||||
#include "field_battle_data_transfer.h"
|
||||
|
|
@ -42,7 +42,7 @@
|
|||
|
||||
#include "constdata/const_020EA358.h"
|
||||
|
||||
FS_EXTERN_OVERLAY(overlay108);
|
||||
FS_EXTERN_OVERLAY(battle_arcade_app);
|
||||
|
||||
#include <nitro/code16.h>
|
||||
|
||||
|
|
@ -96,13 +96,13 @@ BOOL FrontierScrCmd_C3(FrontierScriptContext *param0)
|
|||
UnkStruct_ov104_02238240 *v2;
|
||||
UnkStruct_ov104_02230BE4 *v3 = sub_0209B970(param0->unk_00->unk_00);
|
||||
|
||||
FS_EXTERN_OVERLAY(overlay108);
|
||||
FS_EXTERN_OVERLAY(battle_arcade_app);
|
||||
|
||||
static const ApplicationManagerTemplate v4 = {
|
||||
ov108_02241AE0,
|
||||
ov108_02241C38,
|
||||
ov108_02241D70,
|
||||
FS_OVERLAY_ID(overlay108)
|
||||
BattleArcadeApp_Init,
|
||||
BattleArcadeApp_Main,
|
||||
BattleArcadeApp_Exit,
|
||||
FS_OVERLAY_ID(battle_arcade_app)
|
||||
};
|
||||
|
||||
v1 = sub_0209B978(param0->unk_00->unk_00);
|
||||
|
|
@ -152,7 +152,7 @@ BOOL FrontierScrCmd_BB(FrontierScriptContext *param0)
|
|||
}
|
||||
|
||||
if (v9->unk_13 == 17) {
|
||||
v0 = ov104_0223BD70(v9->unk_10, 1);
|
||||
v0 = BattleArcade_GetPartySize(v9->unk_10, 1);
|
||||
|
||||
for (v1 = 0; v1 < v0; v1++) {
|
||||
v11 = Party_GetPokemonBySlotIndex(v9->unk_70, v1);
|
||||
|
|
@ -367,8 +367,8 @@ BOOL FrontierScrCmd_BF(FrontierScriptContext *param0)
|
|||
break;
|
||||
case 25:
|
||||
if (v3->unk_13 == 27) {
|
||||
v4 = ov104_0223BD70(v3->unk_10, 1);
|
||||
v5 = ov104_0223BDA4(v3->unk_10, 1);
|
||||
v4 = BattleArcade_GetPartySize(v3->unk_10, 1);
|
||||
v5 = BattleArcade_GetOpponentPartySize(v3->unk_10, 1);
|
||||
|
||||
{
|
||||
VecFx32 v21;
|
||||
|
|
@ -416,8 +416,8 @@ BOOL FrontierScrCmd_BF(FrontierScriptContext *param0)
|
|||
case 31:
|
||||
ov104_02238764(v3, v15, v18);
|
||||
|
||||
v4 = ov104_0223BD70(v3->unk_10, 1);
|
||||
v5 = ov104_0223BDA4(v3->unk_10, 1);
|
||||
v4 = BattleArcade_GetPartySize(v3->unk_10, 1);
|
||||
v5 = BattleArcade_GetOpponentPartySize(v3->unk_10, 1);
|
||||
|
||||
if (v18 == 0) {
|
||||
for (v11 = 0; v11 < v4; v11++) {
|
||||
|
|
@ -453,7 +453,7 @@ BOOL FrontierScrCmd_BF(FrontierScriptContext *param0)
|
|||
}
|
||||
break;
|
||||
case 38:
|
||||
v6 = ov104_0223C148(v3->unk_13);
|
||||
v6 = BattleArcade_GetCategoryFromEffect(v3->unk_13);
|
||||
|
||||
if (v6 == 0) {
|
||||
StringTemplate_SetFrontierTrainerName(param0->unk_00->strTemplate, v18, v3->unk_78[ov104_02238498(v3, v19)]);
|
||||
|
|
|
|||
|
|
@ -207,7 +207,7 @@ UnkStruct_ov104_0223BFFC *ov104_02237DD8(SaveData *saveData, u16 param1, u8 para
|
|||
}
|
||||
|
||||
v2 = SaveData_GetParty(v9->saveData);
|
||||
v6 = ov104_0223BD70(v9->unk_10, 0);
|
||||
v6 = BattleArcade_GetPartySize(v9->unk_10, 0);
|
||||
|
||||
for (v7 = 0; v7 < v6; v7++) {
|
||||
Party_AddPokemon(v9->unk_70, Party_GetPokemonBySlotIndex(v2, v9->unk_2C[v7]));
|
||||
|
|
@ -246,7 +246,7 @@ static void ov104_02238080(UnkStruct_ov104_0223BFFC *param0)
|
|||
{
|
||||
ov104_0223BD28(param0->unk_10, ov104_0223C124(param0), param0->unk_78, (7 * 2));
|
||||
|
||||
ov104_0222E4BC(ov104_0223BDA4(param0->unk_10, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->unk_10));
|
||||
ov104_0222E4BC(BattleArcade_GetOpponentPartySize(param0->unk_10, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->unk_10));
|
||||
|
||||
u16 v0 = ov104_0223C124(param0);
|
||||
|
||||
|
|
@ -372,7 +372,7 @@ void ov104_02238278(UnkStruct_ov104_0223BFFC *param0, u8 param1)
|
|||
UnkStruct_020304A0 *v8 = param0->unk_08;
|
||||
UnkStruct_020305B8 *v9 = sub_020305B8(param0->saveData);
|
||||
|
||||
v1 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
v2[0] = param0->unk_10;
|
||||
sub_020304CC(param0->unk_08, 0, 0, 0, v2);
|
||||
|
|
@ -488,7 +488,7 @@ void ov104_022384DC(UnkStruct_ov104_0223BFFC *param0)
|
|||
int v0, v1, v2;
|
||||
u8 v3;
|
||||
|
||||
ov104_0222E4BC(ov104_0223BDA4(param0->unk_10, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->unk_10));
|
||||
ov104_0222E4BC(BattleArcade_GetOpponentPartySize(param0->unk_10, 1), param0->unk_78[param0->unk_11], param0->unk_78[param0->unk_11 + 7], param0->unk_314, param0->unk_330, param0->unk_31C, param0->unk_320, BattleArcade_IsMultiPlayerChallenge(param0->unk_10));
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
(void)0;
|
||||
|
|
@ -529,7 +529,7 @@ int ov104_02238538(UnkStruct_ov104_0223BFFC *param0, Party *param1, Party *param
|
|||
int v1;
|
||||
Pokemon *v2;
|
||||
int v3 = 0;
|
||||
v0 = ov104_0223BD70(param0->unk_10, 0);
|
||||
v0 = BattleArcade_GetPartySize(param0->unk_10, 0);
|
||||
|
||||
v3 += ov104_02238584(param0, param1, param2, v0);
|
||||
|
||||
|
|
@ -666,8 +666,8 @@ void ov104_02238764(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
int v2;
|
||||
Pokemon *v3;
|
||||
|
||||
v0 = ov104_0223BD70(param0->unk_10, 1);
|
||||
v1 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param2 == 0) {
|
||||
for (v2 = 0; v2 < v0; v2++) {
|
||||
|
|
@ -691,8 +691,8 @@ void ov104_02238814(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
u8 v0, v1;
|
||||
int v2;
|
||||
|
||||
v0 = ov104_0223BD70(param0->unk_10, 1);
|
||||
v1 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param2 == 0) {
|
||||
for (v2 = 0; v2 < v0; v2++) {
|
||||
|
|
@ -709,7 +709,7 @@ void ov104_02238814(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
|
||||
void ov104_0223886C(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *param1, u16 param2, u16 param3)
|
||||
{
|
||||
u8 v0 = ov104_0223BD70(param0->unk_10, 1);
|
||||
u8 v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param3 >= v0) {
|
||||
return;
|
||||
|
|
@ -726,7 +726,7 @@ void ov104_0223886C(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
|
||||
void ov104_022388A4(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *param1, u16 param2, u16 param3)
|
||||
{
|
||||
u8 v0 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
u8 v0 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param3 >= v0) {
|
||||
return;
|
||||
|
|
@ -747,8 +747,8 @@ void ov104_022388DC(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
int v2;
|
||||
Pokemon *v3;
|
||||
|
||||
v0 = ov104_0223BD70(param0->unk_10, 1);
|
||||
v1 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param2 == 0) {
|
||||
for (v2 = 0; v2 < v0; v2++) {
|
||||
|
|
@ -780,8 +780,8 @@ void ov104_022389A0(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
u8 v0, v1;
|
||||
int v2;
|
||||
|
||||
v0 = ov104_0223BD70(param0->unk_10, 1);
|
||||
v1 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
v1 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param2 == 0) {
|
||||
for (v2 = 0; v2 < v0; v2++) {
|
||||
|
|
@ -802,8 +802,8 @@ void ov104_022389F4(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_0223C4CC *
|
|||
u8 v1, v2;
|
||||
Pokemon *mon;
|
||||
|
||||
v1 = ov104_0223BD70(param0->unk_10, 1);
|
||||
v2 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v1 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
v2 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
|
||||
if (param2 == 0) {
|
||||
if (slot >= v1) {
|
||||
|
|
@ -1054,10 +1054,10 @@ void ov104_02238B88(UnkStruct_ov104_0223BFFC *param0, u8 param1)
|
|||
|
||||
if (param1 < 9) {
|
||||
v1 = param0->unk_74;
|
||||
v0 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v0 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
} else {
|
||||
v1 = param0->unk_70;
|
||||
v0 = ov104_0223BD70(param0->unk_10, 1);
|
||||
v0 = BattleArcade_GetPartySize(param0->unk_10, 1);
|
||||
}
|
||||
|
||||
v2 = Unk_ov104_02241A38[param1];
|
||||
|
|
|
|||
|
|
@ -24,8 +24,6 @@
|
|||
#include "string_gf.h"
|
||||
#include "trainer_info.h"
|
||||
|
||||
u8 ov104_0223BD70(u8 param0, BOOL param1);
|
||||
u8 ov104_0223BDA4(u8 param0, BOOL param1);
|
||||
FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_02230BE4 *param1);
|
||||
static u32 ov104_0223BFD0(u8 param0);
|
||||
u8 ov104_0223BFFC(UnkStruct_ov104_0223BFFC *param0);
|
||||
|
|
@ -35,7 +33,6 @@ void ov104_0223C034(UnkStruct_ov104_0223BFFC *param0, Party *param1, Pokemon *pa
|
|||
u16 ov104_0223C0BC(UnkStruct_ov104_0223BFFC *param0, u8 param1);
|
||||
static u16 ov104_0223C0D0(UnkStruct_ov104_0223BFFC *param0);
|
||||
u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0);
|
||||
u8 ov104_0223C148(u8 param0);
|
||||
void FieldBattleDTO_CopyPlayerInfoToTrainerData(FieldBattleDTO *param0);
|
||||
static int ov104_0223BCBC(u8 param0, int param1, int param2);
|
||||
void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3);
|
||||
|
|
@ -120,42 +117,42 @@ void ov104_0223BD28(u8 param0, int param1, u16 param2[], u8 param3)
|
|||
} while (v0 < param3);
|
||||
}
|
||||
|
||||
u8 ov104_0223BD70(u8 param0, BOOL param1)
|
||||
u8 BattleArcade_GetPartySize(u8 challengeType, BOOL includePartnerMons)
|
||||
{
|
||||
switch (param0) {
|
||||
case 0:
|
||||
case 1:
|
||||
return 3;
|
||||
case 2:
|
||||
case 3:
|
||||
if (param1 == 0) {
|
||||
return 2;
|
||||
switch (challengeType) {
|
||||
case FRONTIER_CHALLENGE_SINGLE:
|
||||
case FRONTIER_CHALLENGE_DOUBLE:
|
||||
return ARCADE_PARTY_SIZE_SOLO;
|
||||
case FRONTIER_CHALLENGE_MULTI:
|
||||
case FRONTIER_CHALLENGE_MULTI_WFC:
|
||||
if (includePartnerMons == FALSE) {
|
||||
return ARCADE_PARTY_SIZE_MULTI;
|
||||
} else {
|
||||
return 2 * 2;
|
||||
return ARCADE_PARTY_SIZE_MULTI * 2;
|
||||
}
|
||||
}
|
||||
|
||||
GF_ASSERT(0);
|
||||
return 3;
|
||||
return ARCADE_PARTY_SIZE_SOLO;
|
||||
}
|
||||
|
||||
u8 ov104_0223BDA4(u8 param0, BOOL param1)
|
||||
u8 BattleArcade_GetOpponentPartySize(u8 challengeType, BOOL includeBothOpponents)
|
||||
{
|
||||
switch (param0) {
|
||||
case 0:
|
||||
case 1:
|
||||
return 3;
|
||||
case 2:
|
||||
case 3:
|
||||
if (param1 == 0) {
|
||||
return 2;
|
||||
switch (challengeType) {
|
||||
case FRONTIER_CHALLENGE_SINGLE:
|
||||
case FRONTIER_CHALLENGE_DOUBLE:
|
||||
return ARCADE_PARTY_SIZE_SOLO;
|
||||
case FRONTIER_CHALLENGE_MULTI:
|
||||
case FRONTIER_CHALLENGE_MULTI_WFC:
|
||||
if (includeBothOpponents == FALSE) {
|
||||
return ARCADE_PARTY_SIZE_MULTI;
|
||||
} else {
|
||||
return 2 * 2;
|
||||
return ARCADE_PARTY_SIZE_MULTI * 2;
|
||||
}
|
||||
}
|
||||
|
||||
GF_ASSERT(0);
|
||||
return 3;
|
||||
return ARCADE_PARTY_SIZE_SOLO;
|
||||
}
|
||||
|
||||
FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104_02230BE4 *param1)
|
||||
|
|
@ -167,8 +164,8 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
|||
Party *v12;
|
||||
Party *v13;
|
||||
|
||||
v2 = ov104_0223BD70(param0->unk_10, 0);
|
||||
v3 = ov104_0223BDA4(param0->unk_10, 0);
|
||||
v2 = BattleArcade_GetPartySize(param0->unk_10, 0);
|
||||
v3 = BattleArcade_GetOpponentPartySize(param0->unk_10, 0);
|
||||
FieldBattleDTO *v5 = FieldBattleDTO_New(HEAP_ID_FIELD2, ov104_0223BFD0(param0->unk_10));
|
||||
|
||||
FieldBattleDTO_InitFromGameState(v5, NULL, param1->saveData, param1->unk_1C, param1->journalEntry, param1->bagCursor, param1->unk_20);
|
||||
|
|
@ -207,7 +204,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
|||
|
||||
Heap_Free(v8);
|
||||
ov104_0222E284(v5, &v7, v3, 1, 11);
|
||||
Party_InitWithCapacity(v5->parties[1], ov104_0223BDA4(param0->unk_10, 0));
|
||||
Party_InitWithCapacity(v5->parties[1], BattleArcade_GetOpponentPartySize(param0->unk_10, 0));
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
v5->trainer[v0].header.aiMask = ov104_0223C0D0(param0);
|
||||
|
|
@ -233,7 +230,7 @@ FieldBattleDTO *ov104_0223BDD8(UnkStruct_ov104_0223BFFC *param0, UnkStruct_ov104
|
|||
Heap_Free(v8);
|
||||
|
||||
ov104_0222E284(v5, &v7, v3, 3, 11);
|
||||
Party_InitWithCapacity(v5->parties[3], ov104_0223BDA4(param0->unk_10, 0));
|
||||
Party_InitWithCapacity(v5->parties[3], BattleArcade_GetOpponentPartySize(param0->unk_10, 0));
|
||||
|
||||
v6 = Pokemon_New(HEAP_ID_FIELD2);
|
||||
|
||||
|
|
@ -302,7 +299,7 @@ void ov104_0223C04C(UnkStruct_ov104_0223BFFC *param0)
|
|||
|
||||
Party_Init(param0->unk_74);
|
||||
|
||||
v3 = ov104_0223BDA4(param0->unk_10, 1);
|
||||
v3 = BattleArcade_GetOpponentPartySize(param0->unk_10, 1);
|
||||
v5 = Pokemon_New(HEAP_ID_FIELD2);
|
||||
|
||||
for (v1 = 0; v1 < v3; v1++) {
|
||||
|
|
@ -386,15 +383,15 @@ u16 ov104_0223C124(UnkStruct_ov104_0223BFFC *param0)
|
|||
return v0;
|
||||
}
|
||||
|
||||
u8 ov104_0223C148(u8 param0)
|
||||
u8 BattleArcade_GetCategoryFromEffect(u8 effect)
|
||||
{
|
||||
if (param0 < 9) {
|
||||
return 0;
|
||||
} else if (param0 < 18) {
|
||||
return 1;
|
||||
} else if (param0 < 27) {
|
||||
return 2;
|
||||
if (effect < ARCADE_EFFECT_LOWER_ALLY_HP) {
|
||||
return ARCADE_EFFECT_CATEGORY_FOE;
|
||||
} else if (effect < ARCADE_EFFECT_SUNNY_BATTLE) {
|
||||
return ARCADE_EFFECT_CATEGORY_ALLY;
|
||||
} else if (effect < ARCADE_EFFECT_RANDOMIZE_CURSOR) {
|
||||
return ARCADE_EFFECT_CATEGORY_ENV;
|
||||
}
|
||||
|
||||
return 3;
|
||||
return ARCADE_EFFECT_CATEGORY_BONUS;
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,224 +0,0 @@
|
|||
#include "overlay108/ov108_02243030.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "applications/party_menu/main.h"
|
||||
#include "overlay108/struct_ov108_02243030.h"
|
||||
|
||||
#include "char_transfer.h"
|
||||
#include "gx_layers.h"
|
||||
#include "narc.h"
|
||||
#include "party.h"
|
||||
#include "pltt_transfer.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "render_oam.h"
|
||||
#include "sprite.h"
|
||||
#include "sprite_resource.h"
|
||||
#include "sprite_transfer.h"
|
||||
#include "sprite_util.h"
|
||||
#include "vram_transfer.h"
|
||||
|
||||
static const u8 Unk_ov108_02243760[4] = {
|
||||
11,
|
||||
11,
|
||||
11,
|
||||
11,
|
||||
};
|
||||
|
||||
void ov108_02243030(UnkStruct_ov108_02243030 *param0, Party *param1, Party *param2, u8 param3);
|
||||
Sprite *ov108_022430F0(UnkStruct_ov108_02243030 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, int param6, u8 param7);
|
||||
void ov108_02243194(UnkStruct_ov108_02243030 *param0);
|
||||
static void ov108_022431FC(void);
|
||||
static void ov108_02243230(UnkStruct_ov108_02243030 *param0);
|
||||
static void ov108_022432B4(UnkStruct_ov108_02243030 *param0);
|
||||
static void ov108_02243360(UnkStruct_ov108_02243030 *param0, Party *param1, Party *param2, u8 param3);
|
||||
static void ov108_02243490(UnkStruct_ov108_02243030 *param0);
|
||||
|
||||
void ov108_02243030(UnkStruct_ov108_02243030 *param0, Party *param1, Party *param2, u8 param3)
|
||||
{
|
||||
int v0;
|
||||
|
||||
VramTransfer_New(32, HEAP_ID_103);
|
||||
ov108_022431FC();
|
||||
|
||||
NNS_G2dInitOamManagerModule();
|
||||
RenderOam_Init(0, 128, 0, 32, 0, 128, 0, 32, 103);
|
||||
|
||||
param0->unk_00 = SpriteList_InitRendering(((4 * 4) + 1 + 8 + 8 + 1), ¶m0->unk_04, HEAP_ID_103);
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
param0->unk_190[v0] = SpriteResourceCollection_New(Unk_ov108_02243760[v0], v0, HEAP_ID_103);
|
||||
}
|
||||
|
||||
ov108_02243490(param0);
|
||||
ov108_02243230(param0);
|
||||
ov108_022432B4(param0);
|
||||
ov108_02243360(param0, param1, param2, param3);
|
||||
|
||||
for (v0 = 0; v0 < 11; v0++) {
|
||||
SpriteTransfer_RequestChar(param0->unk_1A0[v0][0]);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
SpriteTransfer_RequestPlttWholeRange(param0->unk_1A0[v0][1]);
|
||||
}
|
||||
|
||||
GXLayers_EngineBToggleLayers(GX_PLANEMASK_OBJ, 1);
|
||||
GXLayers_EngineAToggleLayers(GX_PLANEMASK_OBJ, 1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Sprite *ov108_022430F0(UnkStruct_ov108_02243030 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u32 param5, int param6, u8 param7)
|
||||
{
|
||||
int v0;
|
||||
SpriteResourcesHeader v1;
|
||||
Sprite *v2;
|
||||
|
||||
SpriteResourcesHeader_Init(&v1, param1, param2, param3, param3, 0xffffffff, 0xffffffff, 0, param6, param0->unk_190[0], param0->unk_190[1], param0->unk_190[2], param0->unk_190[3], NULL, NULL);
|
||||
|
||||
{
|
||||
AffineSpriteListTemplate v3;
|
||||
|
||||
v3.list = param0->unk_00;
|
||||
v3.resourceData = &v1;
|
||||
v3.position.x = 0;
|
||||
v3.position.y = 0;
|
||||
v3.position.z = 0;
|
||||
v3.affineScale.x = FX32_ONE;
|
||||
v3.affineScale.y = FX32_ONE;
|
||||
v3.affineScale.z = FX32_ONE;
|
||||
v3.affineZRotation = 0;
|
||||
v3.priority = param5;
|
||||
v3.heapID = HEAP_ID_103;
|
||||
|
||||
if (param7 == 0) {
|
||||
v3.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
||||
} else {
|
||||
v3.vramType = NNS_G2D_VRAM_TYPE_2DSUB;
|
||||
v3.position.y += (192 << FX32_SHIFT);
|
||||
}
|
||||
|
||||
v2 = SpriteList_AddAffine(&v3);
|
||||
|
||||
Sprite_SetAnimateFlag(v2, 1);
|
||||
Sprite_SetAnimSpeed(v2, FX32_ONE);
|
||||
Sprite_SetAnim(v2, param4);
|
||||
}
|
||||
|
||||
return v2;
|
||||
}
|
||||
|
||||
void ov108_02243194(UnkStruct_ov108_02243030 *param0)
|
||||
{
|
||||
u8 v0;
|
||||
|
||||
for (v0 = 0; v0 < 11; v0++) {
|
||||
SpriteTransfer_ResetCharTransfer(param0->unk_1A0[v0][0]);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
SpriteTransfer_ResetPlttTransfer(param0->unk_1A0[v0][1]);
|
||||
}
|
||||
|
||||
for (v0 = 0; v0 < 4; v0++) {
|
||||
SpriteResourceCollection_Delete(param0->unk_190[v0]);
|
||||
}
|
||||
|
||||
SpriteList_Delete(param0->unk_00);
|
||||
RenderOam_Free();
|
||||
CharTransfer_Free();
|
||||
PlttTransfer_Free();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov108_022431FC(void)
|
||||
{
|
||||
{
|
||||
CharTransferTemplate v0 = {
|
||||
32, 1024, 1024, 103
|
||||
};
|
||||
|
||||
CharTransfer_InitWithVramModes(&v0, GX_OBJVRAMMODE_CHAR_1D_32K, GX_OBJVRAMMODE_CHAR_1D_32K);
|
||||
}
|
||||
|
||||
PlttTransfer_Init((8 + 2 + 1 + 3), HEAP_ID_103);
|
||||
CharTransfer_ClearBuffers();
|
||||
PlttTransfer_Clear();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov108_02243230(UnkStruct_ov108_02243030 *param0)
|
||||
{
|
||||
param0->unk_1A0[1][0] = SpriteResourceCollection_AddTiles(param0->unk_190[0], 151, 18, 1, 1, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_103);
|
||||
param0->unk_1A0[1][1] = SpriteResourceCollection_AddPalette(param0->unk_190[1], 151, 40, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 8, HEAP_ID_103);
|
||||
param0->unk_1A0[1][2] = SpriteResourceCollection_Add(param0->unk_190[2], 151, 20, 1, 1, 2, HEAP_ID_103);
|
||||
param0->unk_1A0[1][3] = SpriteResourceCollection_Add(param0->unk_190[3], 151, 19, 1, 1, 3, HEAP_ID_103);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov108_022432B4(UnkStruct_ov108_02243030 *param0)
|
||||
{
|
||||
NARC *v0;
|
||||
u32 v1;
|
||||
|
||||
v0 = NARC_ctor(NARC_INDEX_GRAPHIC__PL_PLIST_GRA, HEAP_ID_103);
|
||||
|
||||
param0->unk_1A0[2][0] = SpriteResourceCollection_AddTilesFrom(param0->unk_190[0], v0, sub_02081930(), 0, 2, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_103);
|
||||
param0->unk_1A0[2][1] = SpriteResourceCollection_AddPalette(param0->unk_190[1], 20, sub_02081934(), 0, 2, NNS_G2D_VRAM_TYPE_2DMAIN, 3, HEAP_ID_103);
|
||||
param0->unk_1A0[2][2] = SpriteResourceCollection_AddFrom(param0->unk_190[2], v0, sub_02081938(), 0, 2, 2, HEAP_ID_103);
|
||||
param0->unk_1A0[2][3] = SpriteResourceCollection_AddFrom(param0->unk_190[3], v0, sub_0208193C(), 0, 2, 3, HEAP_ID_103);
|
||||
|
||||
NARC_dtor(v0);
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov108_02243360(UnkStruct_ov108_02243030 *param0, Party *param1, Party *param2, u8 param3)
|
||||
{
|
||||
Pokemon *v0;
|
||||
Pokemon *v1;
|
||||
NARC *v2;
|
||||
u32 v3;
|
||||
|
||||
v2 = NARC_ctor(NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, HEAP_ID_103);
|
||||
|
||||
param0->unk_1A0[3][1] = SpriteResourceCollection_AddPalette(param0->unk_190[1], 19, PokeIconPalettesFileIndex(), 0, 3, NNS_G2D_VRAM_TYPE_2DMAIN, 3, HEAP_ID_103);
|
||||
param0->unk_1A0[3][2] = SpriteResourceCollection_AddFrom(param0->unk_190[2], v2, PokeIcon32KCellsFileIndex(), 0, 3, 2, HEAP_ID_103);
|
||||
param0->unk_1A0[3][3] = SpriteResourceCollection_AddFrom(param0->unk_190[3], v2, PokeIcon32KAnimationFileIndex(), 0, 3, 3, HEAP_ID_103);
|
||||
|
||||
for (v3 = 0; v3 < (2 * 2); v3++) {
|
||||
if (v3 == 3) {
|
||||
if (param3 == 0) {
|
||||
v0 = Party_GetPokemonBySlotIndex(param1, 0);
|
||||
v1 = Party_GetPokemonBySlotIndex(param2, 0);
|
||||
} else {
|
||||
v0 = Party_GetPokemonBySlotIndex(param1, v3);
|
||||
v1 = Party_GetPokemonBySlotIndex(param2, v3);
|
||||
}
|
||||
} else {
|
||||
v0 = Party_GetPokemonBySlotIndex(param1, v3);
|
||||
v1 = Party_GetPokemonBySlotIndex(param2, v3);
|
||||
}
|
||||
|
||||
param0->unk_1A0[3 + v3][0] = SpriteResourceCollection_AddTilesFrom(param0->unk_190[0], v2, Pokemon_IconSpriteIndex(v0), 0, 3 + v3, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_103);
|
||||
param0->unk_1A0[7 + v3][0] = SpriteResourceCollection_AddTilesFrom(param0->unk_190[0], v2, Pokemon_IconSpriteIndex(v1), 0, 7 + v3, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_103);
|
||||
}
|
||||
|
||||
NARC_dtor(v2);
|
||||
return;
|
||||
}
|
||||
|
||||
static void ov108_02243490(UnkStruct_ov108_02243030 *param0)
|
||||
{
|
||||
param0->unk_1A0[0][0] = SpriteResourceCollection_AddTiles(param0->unk_190[0], 151, 21, 1, 0, NNS_G2D_VRAM_TYPE_2DSUB, HEAP_ID_103);
|
||||
param0->unk_1A0[0][1] = SpriteResourceCollection_AddPalette(param0->unk_190[1], 151, 41, 0, 0, NNS_G2D_VRAM_TYPE_2DSUB, 2, HEAP_ID_103);
|
||||
param0->unk_1A0[0][2] = SpriteResourceCollection_Add(param0->unk_190[2], 151, 23, 1, 0, 2, HEAP_ID_103);
|
||||
param0->unk_1A0[0][3] = SpriteResourceCollection_Add(param0->unk_190[3], 151, 22, 1, 0, 3, HEAP_ID_103);
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
#include "overlay108/ov108_0224351C.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "overlay108/ov108_02243030.h"
|
||||
#include "overlay108/struct_ov108_02243030.h"
|
||||
#include "overlay108/struct_ov108_02243594_decl.h"
|
||||
|
||||
#include "heap.h"
|
||||
#include "pokemon.h"
|
||||
#include "pokemon_icon.h"
|
||||
#include "sprite.h"
|
||||
|
||||
struct UnkStruct_ov108_02243594_t {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
u16 unk_08;
|
||||
u8 unk_0A;
|
||||
u8 unk_0B;
|
||||
u16 unk_0C;
|
||||
u16 unk_0E;
|
||||
Sprite *unk_10;
|
||||
};
|
||||
|
||||
UnkStruct_ov108_02243594 *ov108_0224351C(UnkStruct_ov108_02243030 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u16 param5, u16 param6, u32 param7, int param8, u8 param9);
|
||||
void *ov108_02243594(UnkStruct_ov108_02243594 *param0);
|
||||
void ov108_022435A8(UnkStruct_ov108_02243594 *param0, int param1);
|
||||
void ov108_022435B4(UnkStruct_ov108_02243594 *param0, u16 param1, u16 param2);
|
||||
void ov108_022435F4(UnkStruct_ov108_02243594 *param0, u32 param1);
|
||||
void ov108_02243610(UnkStruct_ov108_02243594 *param0, Pokemon *param1);
|
||||
void ov108_02243624(UnkStruct_ov108_02243594 *param0, u8 param1);
|
||||
|
||||
UnkStruct_ov108_02243594 *ov108_0224351C(UnkStruct_ov108_02243030 *param0, u32 param1, u32 param2, u32 param3, u32 param4, u16 param5, u16 param6, u32 param7, int param8, u8 param9)
|
||||
{
|
||||
UnkStruct_ov108_02243594 *v0;
|
||||
VecFx32 v1;
|
||||
|
||||
v0 = Heap_Alloc(HEAP_ID_103, sizeof(UnkStruct_ov108_02243594));
|
||||
memset(v0, 0, sizeof(UnkStruct_ov108_02243594));
|
||||
|
||||
v0->unk_10 = ov108_022430F0(param0, param1, param2, param3, param4, param7, param8, param9);
|
||||
v0->unk_0C = param5;
|
||||
v0->unk_0E = param6;
|
||||
v0->unk_0B = param9;
|
||||
|
||||
v1.x = (param5 * FX32_ONE);
|
||||
v1.y = (param6 * FX32_ONE);
|
||||
|
||||
if (param9 == 1) {
|
||||
v1.y += (192 << FX32_SHIFT);
|
||||
}
|
||||
|
||||
Sprite_SetPosition(v0->unk_10, &v1);
|
||||
|
||||
return v0;
|
||||
}
|
||||
|
||||
void *ov108_02243594(UnkStruct_ov108_02243594 *param0)
|
||||
{
|
||||
Sprite_Delete(param0->unk_10);
|
||||
Heap_Free(param0);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void ov108_022435A8(UnkStruct_ov108_02243594 *param0, int param1)
|
||||
{
|
||||
Sprite_SetDrawFlag(param0->unk_10, param1);
|
||||
return;
|
||||
}
|
||||
|
||||
void ov108_022435B4(UnkStruct_ov108_02243594 *param0, u16 param1, u16 param2)
|
||||
{
|
||||
VecFx32 v0;
|
||||
|
||||
v0 = *(Sprite_GetPosition(param0->unk_10));
|
||||
|
||||
v0.x = (param1 * FX32_ONE);
|
||||
v0.y = (param2 * FX32_ONE);
|
||||
|
||||
if (param0->unk_0B == 1) {
|
||||
v0.y += (192 << FX32_SHIFT);
|
||||
}
|
||||
|
||||
Sprite_SetPosition(param0->unk_10, &v0);
|
||||
return;
|
||||
}
|
||||
|
||||
void ov108_022435F4(UnkStruct_ov108_02243594 *param0, u32 param1)
|
||||
{
|
||||
Sprite_SetAnimSpeed(param0->unk_10, FX32_ONE);
|
||||
Sprite_SetAnimNoRestart(param0->unk_10, param1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void ov108_02243610(UnkStruct_ov108_02243594 *param0, Pokemon *param1)
|
||||
{
|
||||
Sprite_SetExplicitPaletteOffsetAutoAdjust(param0->unk_10, Pokemon_IconPaletteIndex(param1));
|
||||
return;
|
||||
}
|
||||
|
||||
static const VecFx32 Unk_ov111_021D3834[] = {
|
||||
{ FX32_ONE, FX32_ONE, FX32_ONE },
|
||||
{ FX32_ONE + (FX32_ONE / 2), FX32_ONE + (FX32_ONE / 2), FX32_ONE + (FX32_ONE / 2) },
|
||||
{ FX32_ONE + (FX32_ONE / 4), FX32_ONE + (FX32_ONE / 4), FX32_ONE + (FX32_ONE / 4) },
|
||||
{ FX32_ONE + (FX32_ONE / 5), FX32_ONE + (FX32_ONE / 5), FX32_ONE + (FX32_ONE / 5) },
|
||||
{ FX32_ONE + (FX32_ONE / 7), FX32_ONE + (FX32_ONE / 7), FX32_ONE + (FX32_ONE / 7) },
|
||||
{ FX32_ONE - (FX32_ONE / 2), FX32_ONE - (FX32_ONE / 2), FX32_ONE - (FX32_ONE / 2) },
|
||||
{ FX32_ONE - (FX32_ONE / 4), FX32_ONE - (FX32_ONE / 4), FX32_ONE - (FX32_ONE / 4) },
|
||||
{ FX32_ONE - (FX32_ONE / 5), FX32_ONE - (FX32_ONE / 5), FX32_ONE - (FX32_ONE / 5) },
|
||||
{ FX32_ONE - (FX32_ONE / 7), FX32_ONE - (FX32_ONE / 7), FX32_ONE - (FX32_ONE / 7) }
|
||||
};
|
||||
|
||||
void ov108_02243624(UnkStruct_ov108_02243594 *param0, u8 param1)
|
||||
{
|
||||
Sprite_SetAnimateFlag(param0->unk_10, param1);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
#include "overlay108/ov108_02243630.h"
|
||||
|
||||
#include <nitro.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "bg_window.h"
|
||||
|
||||
void ov108_02243630(BgConfig *param0, Window *param1);
|
||||
void ov108_02243660(Window *param0);
|
||||
|
||||
static const WindowTemplate Unk_ov108_02243774[] = {
|
||||
{ 0x1, 0x2, 0x13, 0x1B, 0x4, 0xC, 0x1 },
|
||||
{ 0x1, 0x18, 0xD, 0x7, 0x4, 0xD, 0x6D }
|
||||
};
|
||||
|
||||
void ov108_02243630(BgConfig *param0, Window *param1)
|
||||
{
|
||||
u8 v0;
|
||||
const WindowTemplate *v1 = Unk_ov108_02243774;
|
||||
|
||||
for (v0 = 0; v0 < 2; v0++) {
|
||||
Window_AddFromTemplate(param0, ¶m1[v0], &v1[v0]);
|
||||
Window_FillTilemap(¶m1[v0], 0);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void ov108_02243660(Window *param0)
|
||||
{
|
||||
u16 v0;
|
||||
|
||||
for (v0 = 0; v0 < 2; v0++) {
|
||||
Window_Remove(¶m0[v0]);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
@ -9,13 +9,13 @@
|
|||
#include "struct_defs/struct_02039A58.h"
|
||||
#include "struct_defs/struct_0209BBA4.h"
|
||||
|
||||
#include "applications/frontier/battle_arcade/main.h"
|
||||
#include "applications/frontier/battle_castle/opponent_app.h"
|
||||
#include "applications/frontier/battle_castle/self_app.h"
|
||||
#include "applications/frontier/battle_factory/main.h"
|
||||
#include "applications/frontier/battle_hall/main.h"
|
||||
#include "overlay104/ov104_0222ECE8.h"
|
||||
#include "overlay104/ov104_0223C164.h"
|
||||
#include "overlay108/ov108_02241AE0.h"
|
||||
|
||||
#include "communication_system.h"
|
||||
#include "party.h"
|
||||
|
|
@ -89,9 +89,9 @@ static const CommCmdTable Unk_020F8BF0[] = {
|
|||
{ ov104_0222FA5C, CommPacketSizeOf_Variable, NULL },
|
||||
{ ov104_0222FAA8, CommPacketSizeOf_Variable, NULL },
|
||||
{ ov104_0222FB34, CommPacketSizeOf_Variable, ov104_0222FBC4 },
|
||||
{ ov108_02242AB0, CommPacketSizeOf_Variable, NULL },
|
||||
{ ov108_02242B24, CommPacketSizeOf_Variable, NULL },
|
||||
{ ov108_02242B84, CommPacketSizeOf_Variable, NULL }
|
||||
{ BattleArcadeApp_HandleInitialLayoutCmd, CommPacketSizeOf_Variable, NULL },
|
||||
{ BattleArcadeApp_HandleResultCmd, CommPacketSizeOf_Variable, NULL },
|
||||
{ BattleArcadeApp_HandleUnusedCmd, CommPacketSizeOf_Variable, NULL }
|
||||
};
|
||||
|
||||
void sub_0209BA80(void *param0)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user