Document Battle Arcade App (Overlay 108) (#993)
Some checks are pending
build / build (push) Waiting to run

This commit is contained in:
VicSevenT 2026-03-10 21:05:10 -05:00 committed by GitHub
parent 8cf15a6854
commit b238efaf3c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 2014 additions and 2168 deletions

View 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

View 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

View 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

View 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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View 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);
}

View 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);
}

View 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]);
}
}

View File

@ -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',

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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, &param1[v0], &v1[v0]);
Window_FillTilemap(&param1[v0], 0);
}
return;
}
void ov108_02243660(Window *param0)
{
u16 v0;
for (v0 = 0; v0 < 2; v0++) {
Window_Remove(&param0[v0]);
}
return;
}

View File

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