pokeplatinum/src/overlay062/ov62_02237D24.c

1668 lines
48 KiB
C

#include "overlay062/ov62_02237D24.h"
#include <nitro.h>
#include <string.h>
#include "struct_defs/dress_up_photo.h"
#include "struct_defs/struct_02030A80.h"
#include "struct_defs/struct_0208C06C.h"
#include "overlay022/ov22_0225AF8C.h"
#include "overlay022/struct_ov22_0225AF8C.h"
#include "overlay022/struct_ov22_0225B1BC_decl.h"
#include "overlay061/ov61_0222AE60.h"
#include "overlay061/ov61_0222B008.h"
#include "overlay061/ov61_0222BC4C.h"
#include "overlay061/struct_ov61_0222BC90.h"
#include "overlay062/const_ov62_022491F0.h"
#include "overlay062/ov62_0222F2C0.h"
#include "overlay062/ov62_022300D8.h"
#include "overlay062/ov62_02231690.h"
#include "overlay062/ov62_0224112C.h"
#include "overlay062/ov62_const_funcptr_tables.h"
#include "overlay062/struct_ov62_022312B0.h"
#include "overlay062/struct_ov62_022323B8.h"
#include "overlay062/struct_ov62_0223CAA4.h"
#include "overlay062/struct_ov62_0223E01C_sub1.h"
#include "overlay062/struct_ov62_02248CDC.h"
#include "overlay062/struct_ov62_02249380.h"
#include "bg_window.h"
#include "font.h"
#include "game_overlay.h"
#include "graphics.h"
#include "gx_layers.h"
#include "heap.h"
#include "message.h"
#include "palette.h"
#include "pokedex.h"
#include "sound_playback.h"
#include "sprite_system.h"
#include "string_gf.h"
#include "string_template.h"
#include "system.h"
#include "text.h"
#include "touch_screen.h"
#include "touch_screen_actions.h"
#include "unk_02012744.h"
#include "unk_0202419C.h"
#include "unk_020298BC.h"
#include "unk_02030A80.h"
#include "unk_0208B284.h"
#include "vram_transfer.h"
FS_EXTERN_OVERLAY(overlay22);
typedef struct {
int unk_00;
int unk_04;
DressUpPhoto *photo;
UnkStruct_ov61_0222BC90 *unk_0C[5];
} UnkStruct_ov62_02237D24_sub1;
typedef struct {
int unk_00;
int unk_04;
int unk_08;
int unk_0C;
Window unk_10[12];
Window unk_D0[12];
int unk_190;
int unk_194;
UnkStruct_ov62_022312B0 unk_198[2];
TouchScreenActions *unk_1D0[1];
UnkStruct_ov62_0223E01C_sub1 unk_1D4;
UnkStruct_ov62_02249380 *unk_1E8;
UnkStruct_ov62_02248CDC unk_1EC;
UnkStruct_ov22_0225AF8C unk_218;
UnkStruct_ov22_0225B1BC *unk_228;
DressUpPhoto *photo;
UnkStruct_ov62_02237D24_sub1 unk_230;
UnkStruct_ov62_022323B8 unk_250;
UnkStruct_02030A80 *unk_2DC;
int unk_2E0;
int unk_2E4;
} UnkStruct_ov62_02237D24;
static BOOL ov62_02237D24(UnkStruct_0208C06C *param0);
static BOOL ov62_02237DB8(UnkStruct_0208C06C *param0);
static BOOL ov62_02237F08(UnkStruct_0208C06C *param0);
static BOOL ov62_02238048(UnkStruct_0208C06C *param0);
static BOOL ov62_022380B0(UnkStruct_0208C06C *param0);
static BOOL ov62_022383E4(UnkStruct_0208C06C *param0);
static BOOL ov62_022385EC(UnkStruct_0208C06C *param0);
static BOOL ov62_02238610(UnkStruct_0208C06C *param0);
static BOOL ov62_02238794(UnkStruct_0208C06C *param0);
static BOOL ov62_0223896C(UnkStruct_0208C06C *param0);
static BOOL ov62_02238B70(UnkStruct_0208C06C *param0);
static BOOL ov62_02238D04(UnkStruct_0208C06C *param0);
static BOOL ov62_02238E54(UnkStruct_0208C06C *param0);
static BOOL ov62_02238F24(UnkStruct_0208C06C *param0);
static BOOL ov62_0223900C(UnkStruct_0208C06C *param0);
static BOOL ov62_0223921C(UnkStruct_0208C06C *param0);
static void ov62_02239424(UnkStruct_0208C06C *param0);
static void ov62_02239440(UnkStruct_0208C06C *param0, int param1);
static void ov62_02239498(UnkStruct_0208C06C *param0);
static void ov62_022394D8(void *param0);
static void ov62_02239518(void);
static void ov62_0223956C(void);
static void ov62_0223958C(UnkStruct_0208C06C *param0, int param1);
static void ov62_02239608(UnkStruct_0208C06C *param0);
static void ov62_022396E8(UnkStruct_0208C06C *param0);
static void ov62_02239724(UnkStruct_0208C06C *param0);
static void ov62_02239854(UnkStruct_0208C06C *param0, int param1);
static BOOL ov62_02239984(UnkStruct_0208C06C *param0, int param1);
static void ov62_02239A0C(UnkStruct_0208C06C *param0, int param1);
static void ov62_02239B7C(UnkStruct_0208C06C *param0);
static void ov62_02239BAC(u32 param0, enum TouchScreenButtonState param1, void *param2);
static void ov62_02239BD8(UnkStruct_0208C06C *param0);
static void ov62_02239CE8(UnkStruct_0208C06C *param0);
static void ov62_02239D0C(UnkStruct_0208C06C *param0);
void ov62_02239D34(void *param0, const UnkStruct_ov62_0223CAA4 *param1);
void ov62_02239D38(void *param0, const UnkStruct_ov62_0223CAA4 *param1);
static u16 Unk_ov62_022497D4[] = {
0x0,
0x57,
0x88,
0xBF,
0xEB,
0x12F,
0x168,
0x1C9,
0x1E7,
0x1ED
};
// clang-format off
BOOL (*const Unk_ov62_02248D08[])(UnkStruct_0208C06C *) = {
ov62_02237D24,
ov62_02237DB8,
ov62_02237F08,
ov62_02238048,
ov62_022380B0,
ov62_022383E4,
};
// clang-format on
// clang-format off
BOOL (*const Unk_ov62_02248D20[])(UnkStruct_0208C06C *) = {
ov62_02237D24,
ov62_02237DB8,
ov62_022385EC,
ov62_02238610,
ov62_02238794,
ov62_0223896C,
ov62_02238B70,
ov62_02238D04,
ov62_02238E54,
ov62_02238F24,
ov62_0223900C,
ov62_0223921C,
};
// clang-format on
static const TouchScreenRect Unk_ov62_02248CB0[] = {
{ 0x98, 0xB8, 0x20, 0x80 },
{ 0x98, 0xB8, 0x80, 0xE0 }
};
static const TouchScreenRect Unk_ov62_02248CAC[] = {
{ 0x98, 0xB8, 0x50, 0xB0 }
};
static const TouchScreenRect Unk_ov62_02248CC4[] = {
{ 0x18, 0x28, 0x38, 0xC0 },
{ 0x28, 0x38, 0x38, 0xC0 },
{ 0x38, 0x48, 0x38, 0xC0 },
{ 0x48, 0x58, 0x38, 0xC0 },
{ 0x58, 0x68, 0x38, 0xC0 },
{ 0x68, 0x78, 0x38, 0xC0 }
};
static const TouchScreenRect Unk_ov62_02248CB8[] = {
{ 0x10, 0x30, 0x38, 0xC8 },
{ 0x48, 0x68, 0x18, 0x48 },
{ 0x48, 0x68, 0xB8, 0xE8 }
};
static const UnkStruct_ov62_02248CDC Unk_ov62_02248CDC = {
NULL,
0x0,
0x1,
0x9,
0x3,
0xE,
0xC,
0x20,
0x6,
0x6,
Unk_ov62_02248CC4
};
static BOOL ov62_02237D24(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = Heap_Alloc(HEAP_ID_102, sizeof(UnkStruct_ov62_02237D24));
memset(v0, 0, sizeof(UnkStruct_ov62_02237D24));
param0->unk_860 = v0;
Overlay_LoadByID(FS_OVERLAY_ID(overlay22), 2);
{
v0->unk_218.unk_00 = param0->unk_14.unk_10;
v0->unk_218.unk_04 = (128 - 56);
v0->unk_218.unk_08 = (96 - 64 - 16);
v0->unk_218.heapID = HEAP_ID_102;
}
{
v0->unk_230.photo = DressUpPhoto_New(HEAP_ID_102);
v0->unk_250.unk_00 = sub_02030A80(HEAP_ID_102);
}
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
ov62_022315C8(&v0->unk_00, &v0->unk_04, 0);
ov62_0222FB60(param0, 1);
return 0;
}
static BOOL ov62_02237DB8(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
if (ov62_02231664(&v0->unk_08, 1)) {
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 2, 0xC, v0->unk_08, param0->unk_14.unk_44);
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
PaletteData_BlendMulti(param0->unk_14.unk_14, 1, 0x2, v0->unk_08, param0->unk_14.unk_44);
break;
case 1:
Bg_SetPriority(BG_LAYER_MAIN_0, 0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
Bg_SetPriority(BG_LAYER_MAIN_1, 3);
Bg_SetPriority(BG_LAYER_MAIN_3, 2);
Bg_SetPriority(BG_LAYER_SUB_0, 0);
Bg_SetPriority(BG_LAYER_SUB_2, 1);
Bg_SetPriority(BG_LAYER_SUB_1, 3);
Bg_SetPriority(BG_LAYER_SUB_3, 2);
sub_0208B9E0(param0->unk_6F0, 0);
param0->unk_08++;
break;
case 2:
ov62_0223376C(param0, 0);
ov62_02234540(param0, 1);
param0->unk_08++;
break;
default:
if (ov62_02233790(param0) == 0) {
break;
}
ov62_02234540(param0, 0);
ov62_02234540(param0, 1);
ov62_02231454(param0);
ov62_02239608(param0);
ov62_02234540(param0, 0);
Graphics_LoadTilesToBgLayerFromOpenNARC(param0->unk_14.unk_00, 62, param0->unk_14.unk_10, 3, 0, 0, 0, HEAP_ID_102);
Graphics_LoadTilesToBgLayerFromOpenNARC(param0->unk_14.unk_00, 62, param0->unk_14.unk_10, 7, 0, 0, 0, HEAP_ID_102);
ov62_0222FB60(param0, 2);
break;
}
return 0;
}
static BOOL ov62_02237F08(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
ov62_02239518();
ov62_022343B8(param0, 35, 3);
ov62_022343B8(param0, 37, 7);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, 1);
ov62_02234540(param0, 1);
v0->photo = ImageClips_GetDressUpPhoto(SaveData_GetImageClips(param0->saveData), 0);
if (v0->unk_228 == NULL) {
v0->unk_228 = ov22_0225AF8C(&v0->unk_218, v0->photo);
ov22_0225B074(v0->unk_228, 1);
}
ov62_02234540(param0, 0);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 0);
SetVBlankCallback(ov62_022394D8, param0);
param0->unk_08++;
break;
case 1:
PaletteData_LoadBufferFromHardware(param0->unk_14.unk_14, 0, 0 * 16, 16 * 0x20);
param0->unk_08++;
break;
case 2:
ov62_02231664(&v0->unk_08, 0);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 0, 0)) {
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 1);
ov62_02239724(param0);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
default:
ov62_0222FB60(param0, 3);
break;
}
if (v0->unk_228) {
G3_ResetG3X();
ov22_0225AFF8(v0->unk_228);
G3_RequestSwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z);
}
return 0;
}
static BOOL ov62_02238048(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
if (TouchScreen_LocationPressed(&Unk_ov62_02248CB0[0])) {
ov62_02234520(param0);
ov62_0222FB60(param0, 5);
}
if (TouchScreen_LocationPressed(&Unk_ov62_02248CB0[1])) {
ov62_02234520(param0);
ov62_0222FB60(param0, 4);
}
if (v0->unk_228) {
G3_ResetG3X();
ov22_0225AFF8(v0->unk_228);
G3_RequestSwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z);
}
return 0;
}
static BOOL ov62_022380B0(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
UnkStruct_ov62_0223CAA4 *v1;
if (ov62_022411B8(param0) == 0) {
return 0;
}
switch (param0->unk_08) {
case 0:
Bg_SetPriority(BG_LAYER_MAIN_0, 1);
Bg_SetPriority(BG_LAYER_MAIN_1, 3);
Bg_SetPriority(BG_LAYER_MAIN_2, 2);
Bg_SetPriority(BG_LAYER_MAIN_3, 1);
Bg_SetPriority(BG_LAYER_SUB_0, 1);
Bg_SetPriority(BG_LAYER_SUB_1, 3);
Bg_SetPriority(BG_LAYER_SUB_2, 2);
Bg_SetPriority(BG_LAYER_SUB_3, 1);
{
Heap_Free(v0->unk_230.photo);
sub_02030A98(v0->unk_250.unk_00);
}
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
ov62_02239D0C(param0);
param0->unk_08++;
break;
case 1:
ov62_02231664(&v0->unk_08, 1);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 0)) {
ov62_02234540(param0, 1);
ov62_022396E8(param0);
ov62_02234540(param0, 0);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
Bg_SetOffset(param0->unk_14.unk_10, 2, 0, 0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
case 2:
ov62_02234358(param0, param0->unk_6F0, 128, 96);
sub_0208B9E0(param0->unk_6F0, 1);
sub_0208BA08(param0->unk_6F0, 24, 24);
ov62_02231AAC(param0, 286);
v0->unk_2DC = sub_02030A80(HEAP_ID_102);
sub_02030AA0(v0->unk_2DC, param0->saveData);
Sound_PlayEffect(SEQ_SE_PL_BREC80);
param0->unk_08++;
break;
case 3:
if (ov61_0222B1B4(ov62_0224112C(param0), v0->unk_2DC, v0->photo) == 1) {
sub_02030A98(v0->unk_2DC);
param0->unk_08++;
}
break;
case 4:
ov62_02231B8C(param0);
if (ov61_0222BB48(ov62_0224112C(param0), &v1) == 1) {
Sound_StopEffect(1381, 0);
ov62_022348B8(param0, 0, v1->unk_0C, v1->unk_04);
param0->unk_08++;
} else {
Sound_StopEffect(1381, 0);
ov62_02233704(param0, 47);
Sound_PlayEffect(SEQ_SE_PL_BREC12);
param0->unk_08++;
}
break;
case 5:
sub_0208B9E0(param0->unk_6F0, 0);
sub_0208BA08(param0->unk_6F0, 0, 0);
param0->unk_08++;
break;
case 6:
ov62_02234540(param0, 1);
ov62_02231688(&v0->unk_08);
ov62_0223146C(param0);
ov62_02234540(param0, 0);
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
ov62_0223376C(param0, 1);
param0->unk_08++;
break;
default:
if (ov62_02233790(param0) == 0) {
break;
}
if (ov62_02231664(&v0->unk_08, 0)) {
if (v0->unk_228) {
ov22_0225B020(v0->unk_228);
ov62_0222F834(param0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
ov62_0223956C();
}
ov62_022318E8(param0);
ov62_02231688(&v0->unk_08);
PaletteData_BlendMulti(param0->unk_14.unk_14, 2, 0xC, 16, param0->unk_14.unk_44);
ov62_0222FB44(param0, 1, 1, param0->unk_10);
ov62_0222FB60(param0, 5);
Heap_Free(v0);
Overlay_UnloadByID(FS_OVERLAY_ID(overlay22));
SetVBlankCallback(ov62_0222F8E4, param0);
} else {
PaletteData_BlendMulti(param0->unk_14.unk_14, 1, 0x2, v0->unk_08, param0->unk_14.unk_44);
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
}
break;
}
return 0;
}
static BOOL ov62_022383E4(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
Bg_SetPriority(BG_LAYER_MAIN_0, 1);
Bg_SetPriority(BG_LAYER_MAIN_1, 3);
Bg_SetPriority(BG_LAYER_MAIN_2, 2);
Bg_SetPriority(BG_LAYER_MAIN_3, 1);
Bg_SetPriority(BG_LAYER_SUB_0, 1);
Bg_SetPriority(BG_LAYER_SUB_1, 3);
Bg_SetPriority(BG_LAYER_SUB_2, 2);
Bg_SetPriority(BG_LAYER_SUB_3, 1);
{
Heap_Free(v0->unk_230.photo);
sub_02030A98(v0->unk_250.unk_00);
}
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
ov62_02239D0C(param0);
param0->unk_08++;
break;
case 1:
ov62_02231664(&v0->unk_08, 1);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 0)) {
ov62_02234540(param0, 1);
ov62_022396E8(param0);
ov62_02234540(param0, 0);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
case 2:
ov62_02231688(&v0->unk_08);
ov62_02234540(param0, 1);
ov62_0223146C(param0);
ov62_02234540(param0, 0);
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
ov62_0223376C(param0, 1);
param0->unk_08++;
break;
default:
if (ov62_02233790(param0) == 0) {
break;
}
if (ov62_02231664(&v0->unk_08, 0)) {
ov62_02234540(param0, 1);
if (v0->unk_228) {
ov22_0225B020(v0->unk_228);
ov62_0222F834(param0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
ov62_0223956C();
}
ov62_02234540(param0, 0);
ov62_022318E8(param0);
ov62_02231688(&v0->unk_08);
PaletteData_BlendMulti(param0->unk_14.unk_14, 2, 0xC, 16, param0->unk_14.unk_44);
ov62_0222FB44(param0, 1, 1, param0->unk_10);
ov62_0222FB60(param0, 5);
Heap_Free(v0);
Overlay_UnloadByID(FS_OVERLAY_ID(overlay22));
SetVBlankCallback(ov62_0222F8E4, param0);
} else {
PaletteData_BlendMulti(param0->unk_14.unk_14, 1, 0x2, v0->unk_08, param0->unk_14.unk_44);
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
}
break;
}
return 0;
}
static BOOL ov62_022385EC(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
ov62_0223958C(param0, 1);
param0->unk_08++;
break;
default:
ov62_0222FB60(param0, 3);
break;
}
return 0;
}
static BOOL ov62_02238610(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
ov62_022343B8(param0, 60, 7);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 1);
v0->unk_1D0[0] = TouchScreenActions_RegisterHandler(Unk_ov62_022491F0, NELEMS(Unk_ov62_022491F0), ov62_02239BAC, param0, HEAP_ID_102);
param0->unk_08++;
break;
case 1:
ov62_02231664(&v0->unk_08, 0);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 0, 0)) {
ov62_02231AAC(param0, 114);
ov62_02239BD8(param0);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
case 2:
TouchScreenActions_HandleAction(v0->unk_1D0[0]);
if (TouchScreen_LocationPressed(&Unk_ov62_02248CAC[0])
|| (v0->unk_1D4.unk_10 == 1)) {
ov62_02234520(param0);
param0->unk_08++;
}
break;
case 3:
ov62_02239CE8(param0);
TouchScreenActions_Free(v0->unk_1D0[0]);
ov62_02231B8C(param0);
param0->unk_08++;
case 4:
if (v0->unk_1D4.unk_10 == 1) {
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 2)) {
param0->unk_08++;
}
} else {
ov62_02231664(&v0->unk_08, 1);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 2)) {
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
}
break;
default:
if (v0->unk_1D4.unk_10 == 1) {
ov62_0222FB60(param0, 4);
} else {
ov62_0222FB60(param0, 5);
}
break;
}
return 0;
}
static BOOL ov62_02238794(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
ov62_0223958C(param0, 1);
ov62_022343B8(param0, 58, 7);
param0->unk_08++;
break;
case 1:
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 0, 2)) {
ov62_02231AAC(param0, 114);
ov62_02234540(param0, 1);
ov62_022335B0(&param0->unk_14.unk_46C, param0);
v0->unk_1EC = Unk_ov62_02248CDC;
v0->unk_1EC.unk_00 = v0->unk_1E8;
v0->unk_1EC.unk_04 = v0->unk_1D4.unk_00;
ov62_02233310(&param0->unk_14.unk_48C);
ov62_02232594(&param0->unk_14.unk_48C, param0, v0->unk_1D4.unk_0C, &v0->unk_1EC);
ov62_02233638(&param0->unk_14.unk_46C, &param0->unk_14.unk_48C);
ov62_0223331C(&param0->unk_14.unk_48C, param0, 2);
ov62_02234540(param0, 0);
v0->unk_2E0 = 0;
param0->unk_08++;
}
break;
case 2:
ov62_02233664(&param0->unk_14.unk_46C);
ov62_022332AC(&param0->unk_14.unk_48C, param0->unk_14.unk_46C.unk_10);
{
int v1 = ov62_02232F68(&param0->unk_14.unk_48C, param0);
if (v1) {
v0->unk_2E0 = v1;
ov62_02234520(param0);
param0->unk_08++;
}
}
if (TouchScreen_LocationPressed(&Unk_ov62_02248CAC[0])) {
ov62_02234520(param0);
param0->unk_08++;
}
break;
case 3:
ov62_02231B8C(param0);
ov62_02234540(param0, 1);
ov62_02233600(&param0->unk_14.unk_46C);
ov62_022332FC(&param0->unk_14.unk_48C);
ov62_022334FC(&param0->unk_14.unk_48C, param0);
ov62_02234540(param0, 0);
param0->unk_08++;
case 4:
ov62_02231664(&v0->unk_08, 1);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 0)) {
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
default:
ov62_02239B7C(param0);
if (v0->unk_2E0) {
ov62_0222FB60(param0, 6);
} else {
ov62_0222FB60(param0, 3);
}
break;
}
return 0;
}
static BOOL ov62_0223896C(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
Bg_SetPriority(BG_LAYER_MAIN_0, 1);
Bg_SetPriority(BG_LAYER_MAIN_1, 3);
Bg_SetPriority(BG_LAYER_MAIN_2, 2);
Bg_SetPriority(BG_LAYER_MAIN_3, 1);
Bg_SetPriority(BG_LAYER_SUB_0, 1);
Bg_SetPriority(BG_LAYER_SUB_1, 3);
Bg_SetPriority(BG_LAYER_SUB_2, 2);
Bg_SetPriority(BG_LAYER_SUB_3, 1);
{
Heap_Free(v0->unk_230.photo);
sub_02030A98(v0->unk_250.unk_00);
}
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
param0->unk_08++;
break;
case 1:
ov62_02231664(&v0->unk_08, 1);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 0)) {
ov62_02234540(param0, 1);
ov62_022396E8(param0);
ov62_02234540(param0, 0);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
case 2:
ov62_02231688(&v0->unk_08);
ov62_02234540(param0, 1);
ov62_0223146C(param0);
ov62_02234540(param0, 0);
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
ov62_0223376C(param0, 1);
param0->unk_08++;
break;
default:
if (ov62_02233790(param0) == 0) {
break;
}
if (ov62_02231664(&v0->unk_08, 0)) {
ov62_02234540(param0, 1);
if (v0->unk_228) {
ov22_0225B020(v0->unk_228);
ov62_0222F834(param0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
ov62_0223956C();
}
ov62_02234540(param0, 0);
ov62_022318E8(param0);
ov62_02231688(&v0->unk_08);
PaletteData_BlendMulti(param0->unk_14.unk_14, 2, 0xC, 16, param0->unk_14.unk_44);
ov62_0222FB44(param0, 1, 1, param0->unk_10);
ov62_0222FB60(param0, 5);
Heap_Free(v0);
Overlay_UnloadByID(FS_OVERLAY_ID(overlay22));
SetVBlankCallback(ov62_0222F8E4, param0);
} else {
PaletteData_BlendMulti(param0->unk_14.unk_14, 1, 0x2, v0->unk_08, param0->unk_14.unk_44);
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
}
break;
}
return 0;
}
static BOOL ov62_02238B70(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
UnkStruct_ov62_0223CAA4 *v1;
if (ov62_022411B8(param0) == 0) {
return 0;
}
switch (param0->unk_08) {
case 0:
ov62_02234358(param0, param0->unk_6F0, 128, 96);
sub_0208B9E0(param0->unk_6F0, 1);
sub_0208BA08(param0->unk_6F0, 24, 24);
ov62_02231AAC(param0, 287);
Sound_PlayEffect(SEQ_SE_PL_BREC80);
param0->unk_08++;
break;
case 1:
if (ov61_0222B1FC(ov62_0224112C(param0), v0->unk_2E0) == 1) {
param0->unk_08++;
}
break;
case 2:
ov62_02231B8C(param0);
if (ov61_0222BB48(ov62_0224112C(param0), &v1) == 1) {
Sound_StopEffect(1381, 0);
ov62_022348B8(param0, 1, v1->unk_0C, v1->unk_04);
v0->unk_2E4 = 0;
param0->unk_0C = 0;
sub_0208B9E0(param0->unk_6F0, 0);
ov62_0222FB60(param0, 3);
} else {
Sound_StopEffect(1381, 0);
Sound_PlayEffect(SEQ_SE_PL_BREC12);
param0->unk_08++;
}
break;
case 3:
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 0);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 0);
sub_0208B9E0(param0->unk_6F0, 0);
sub_0208BA08(param0->unk_6F0, 0, 0);
param0->unk_08++;
break;
case 4:
if (v0->unk_2E4) {
v0->unk_230.unk_04 = 0;
v0->unk_230.unk_00 = 0;
ov62_0222FB60(param0, 7);
} else {
ov62_02231AAC(param0, 293);
param0->unk_08++;
param0->unk_0C = 0;
}
break;
default:
if (((++param0->unk_0C) >= (30 * 2)) || (TouchScreen_Tapped() == 1)) {
param0->unk_0C = 0;
ov62_02231B8C(param0);
ov62_0222FB60(param0, 3);
}
break;
}
return 0;
}
static BOOL ov62_02238D04(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
v0->unk_0C = 0;
ov61_0222AE80(&v0->unk_230.unk_0C[v0->unk_230.unk_04]->unk_80, v0->unk_230.photo);
v0->unk_228 = ov22_0225AF8C(&v0->unk_218, v0->unk_230.photo);
ov22_0225B074(v0->unk_228, 0);
ov62_02239518();
ov62_022343B8(param0, 35, 3);
ov62_022343B8(param0, 36, 7);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 0);
SetVBlankCallback(ov62_022394D8, param0);
param0->unk_08++;
break;
case 1:
PaletteData_LoadBufferFromHardware(param0->unk_14.unk_14, 0, 0 * 16, 16 * 0x20);
param0->unk_08++;
break;
case 2:
ov62_02231664(&v0->unk_08, 0);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 0, 0)) {
ov22_0225B074(v0->unk_228, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 1);
ov62_02239854(param0, v0->unk_230.unk_04);
ov62_02239498(param0);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
default:
ov62_0222FB60(param0, 8);
break;
}
if (v0->unk_228) {
G3_ResetG3X();
ov22_0225AFF8(v0->unk_228);
G3_RequestSwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z);
}
return 0;
}
static BOOL ov62_02238E54(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
if (TouchScreen_LocationPressed(&Unk_ov62_02248CAC[0])) {
ov62_02234520(param0);
ov62_0222FB60(param0, 9);
}
if (TouchScreen_LocationPressed(&Unk_ov62_02248CB8[0])) {
ov62_02234520(param0);
ov62_0222FB60(param0, 10);
}
if (TouchScreen_LocationPressed(&Unk_ov62_02248CB8[1])) {
if (v0->unk_230.unk_04 != 0) {
v0->unk_230.unk_04--;
} else {
v0->unk_230.unk_04 = v0->unk_2E4 - 1;
}
ov62_02234520(param0);
ov62_0222FB60(param0, 11);
}
if (TouchScreen_LocationPressed(&Unk_ov62_02248CB8[2])) {
v0->unk_230.unk_04++;
v0->unk_230.unk_04 %= v0->unk_2E4;
ov62_02234520(param0);
ov62_0222FB60(param0, 11);
}
if (v0->unk_228) {
G3_ResetG3X();
ov22_0225AFF8(v0->unk_228);
G3_RequestSwapBuffers(GX_SORTMODE_AUTO, GX_BUFFERMODE_Z);
}
return 0;
}
static BOOL ov62_02238F24(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
if (v0->unk_0C == 0) {
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
ov62_02239D0C(param0);
} else {
ov62_02234540(param0, 1);
ov62_02232394(&v0->unk_250, param0);
ov62_02234540(param0, 0);
}
ov62_02239424(param0);
param0->unk_08++;
break;
case 1:
ov62_02231664(&v0->unk_08, 1);
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 0)) {
if (v0->unk_228) {
ov22_0225B020(v0->unk_228);
ov62_0222F834(param0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
v0->unk_228 = NULL;
ov62_0223956C();
}
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
Bg_ClearTilemap(param0->unk_14.unk_10, 7);
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
param0->unk_08++;
}
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xC, v0->unk_08, param0->unk_14.unk_44);
break;
default:
ov62_0222FB60(param0, 3);
break;
}
return 0;
}
static BOOL ov62_0223900C(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
if (v0->unk_0C == 0) {
ov62_02239D0C(param0);
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
} else {
ov62_02234540(param0, 1);
ov62_02232394(&v0->unk_250, param0);
ov62_02234540(param0, 0);
}
param0->unk_08++;
break;
case 1:
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 1)) {
if (v0->unk_0C == 0) {
if (v0->unk_228) {
ov22_0225B020(v0->unk_228);
ov62_0222F834(param0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
v0->unk_228 = NULL;
ov62_0223956C();
}
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
}
param0->unk_08++;
}
break;
case 2:
if (v0->unk_0C == 0) {
ov62_02234540(param0, 1);
ov61_0222AFC0(&v0->unk_230.unk_0C[v0->unk_230.unk_04]->unk_00, v0->unk_250.unk_00);
ov62_02232378(&v0->unk_250, param0);
ov62_022323B8(&v0->unk_250, 0);
ov62_02234540(param0, 0);
ov62_022343B8(param0, 80, 3);
} else {
ov61_0222AE80(&v0->unk_230.unk_0C[v0->unk_230.unk_04]->unk_80, v0->unk_230.photo);
v0->unk_228 = ov22_0225AF8C(&v0->unk_218, v0->unk_230.photo);
ov22_0225B074(v0->unk_228, 0);
ov62_02239518();
ov62_022343B8(param0, 35, 3);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 0);
}
param0->unk_08++;
break;
case 3:
if (v0->unk_0C == 0) {
(void)0;
} else {
PaletteData_LoadBufferFromHardware(param0->unk_14.unk_14, 0, 0 * 16, 16 * 0x20);
}
param0->unk_08++;
break;
case 4:
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 0, 1)) {
if (v0->unk_0C == 0) {
ov62_022323B8(&v0->unk_250, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
} else {
ov62_02239854(param0, v0->unk_230.unk_04);
ov22_0225B074(v0->unk_228, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 1);
}
param0->unk_08++;
}
break;
default:
v0->unk_0C ^= 1;
ov62_02239440(param0, 121 + v0->unk_0C);
ov62_0222FB60(param0, 8);
break;
}
return 0;
}
static BOOL ov62_0223921C(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
switch (param0->unk_08) {
case 0:
if (v0->unk_0C == 0) {
ov62_02239D0C(param0);
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
} else {
ov62_02234540(param0, 1);
ov62_02232394(&v0->unk_250, param0);
ov62_02234540(param0, 0);
}
param0->unk_08++;
break;
case 1:
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 1, 1)) {
if (v0->unk_0C == 0) {
if (v0->unk_228) {
ov22_0225B020(v0->unk_228);
ov62_0222F834(param0);
Bg_SetPriority(BG_LAYER_MAIN_2, 0);
v0->unk_228 = NULL;
ov62_0223956C();
}
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
Bg_ClearTilemap(param0->unk_14.unk_10, 3);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
}
param0->unk_08++;
}
break;
case 2:
ov62_02234540(param0, 1);
if (v0->unk_0C == 0) {
ov61_0222AE80(&v0->unk_230.unk_0C[v0->unk_230.unk_04]->unk_80, v0->unk_230.photo);
v0->unk_228 = ov22_0225AF8C(&v0->unk_218, v0->unk_230.photo);
ov22_0225B074(v0->unk_228, 0);
ov62_02239518();
ov62_022343B8(param0, 35, 3);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG3, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 0);
} else {
ov61_0222AFC0(&v0->unk_230.unk_0C[v0->unk_230.unk_04]->unk_00, v0->unk_250.unk_00);
ov62_02232378(&v0->unk_250, param0);
ov62_022323B8(&v0->unk_250, 0);
ov62_022343B8(param0, 80, 3);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
}
ov62_02234540(param0, 0);
param0->unk_08++;
break;
case 3:
if (v0->unk_0C == 0) {
PaletteData_LoadBufferFromHardware(param0->unk_14.unk_14, 0, 0 * 16, 16 * 0x20);
} else {
(void)0;
}
param0->unk_08++;
break;
case 4:
if (ov62_022315E0(&v0->unk_00, &v0->unk_04, 0, 1)) {
if (v0->unk_0C == 0) {
ov62_02239854(param0, v0->unk_230.unk_04);
ov22_0225B074(v0->unk_228, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG0, 1);
} else {
ov62_022323B8(&v0->unk_250, 1);
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
}
param0->unk_08++;
}
break;
default:
ov62_0222FB60(param0, 8);
break;
}
return 0;
}
static void ov62_02239424(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
Window_ClearAndCopyToVRAM(&v0->unk_D0[0]);
Window_Remove(&v0->unk_D0[0]);
}
static void ov62_02239440(UnkStruct_0208C06C *param0, int param1)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
Window *v1;
String *v2;
int v3;
v1 = &v0->unk_D0[0];
Window_FillTilemap(v1, 0x0);
v2 = MessageLoader_GetNewString(param0->unk_14.unk_34, param1);
v3 = ov62_0223429C(v1, v2);
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v2, v3, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
String_Free(v2);
Window_ScheduleCopyToVRAM(v1);
}
static void ov62_02239498(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
Window *v1;
int v2 = 1;
v1 = &v0->unk_D0[0];
Window_Init(v1);
Window_Add(param0->unk_14.unk_10, v1, 6, 8, 3, 16, 2, 14, v2);
ov62_02239440(param0, 121);
}
static void ov62_022394D8(void *param0)
{
UnkStruct_0208C06C *v0 = param0;
UnkStruct_ov62_02237D24 *v1 = v0->unk_860;
if (v1->unk_228) {
ov22_0225B06C(v1->unk_228);
}
VramTransfer_Process();
PaletteData_CommitFadedBuffers(v0->unk_14.unk_14);
Bg_RunScheduledUpdates(v0->unk_14.unk_10);
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
}
static void ov62_02239518(void)
{
GX_SetVisibleWnd(GX_WNDMASK_W0);
G2_SetWnd0InsidePlane(GX_WND_PLANEMASK_BG0 | GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | GX_WND_PLANEMASK_OBJ, 1);
G2_SetWndOutsidePlane(GX_WND_PLANEMASK_BG1 | GX_WND_PLANEMASK_BG2 | GX_WND_PLANEMASK_BG3 | GX_WND_PLANEMASK_OBJ, 1);
G2_SetWnd0Position(9 * 8, 2 * 8, 9 * 8 + 14 * 8, 2 * 8 + 16 * 8);
}
static void ov62_0223956C(void)
{
GX_SetVisibleWnd(GX_WNDMASK_NONE);
GXS_SetVisibleWnd(GX_WNDMASK_NONE);
}
static void ov62_0223958C(UnkStruct_0208C06C *param0, int param1)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
if (param1 == 0) {
ManagedSprite_SetDrawFlag(v0->unk_198[1].unk_08, 1);
sub_020129D0(v0->unk_198[1].unk_0C, 1);
ManagedSprite_SetPositionXY(v0->unk_198[0].unk_08, 32, 232);
} else {
ManagedSprite_SetDrawFlag(v0->unk_198[1].unk_08, 0);
sub_020129D0(v0->unk_198[1].unk_0C, 0);
ManagedSprite_SetPositionXY(v0->unk_198[0].unk_08, 80, 232);
}
FontOAM_SetXY(v0->unk_198[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_198[1].unk_0C, 36, -8);
}
static void ov62_02239608(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
ov62_022312CC(param0, NNS_G2D_VRAM_TYPE_2DSUB);
v0->unk_198[0].unk_08 = ov62_022313E0(param0, NNS_G2D_VRAM_TYPE_2DSUB);
v0->unk_198[1].unk_08 = ov62_022313E0(param0, NNS_G2D_VRAM_TYPE_2DSUB);
ov62_0223118C(&v0->unk_198[0], &param0->unk_14, NNS_G2D_VRAM_TYPE_2DSUB);
ov62_0223118C(&v0->unk_198[1], &param0->unk_14, NNS_G2D_VRAM_TYPE_2DSUB);
ov62_0223124C(&v0->unk_198[0], &param0->unk_14, 3);
ov62_0223124C(&v0->unk_198[1], &param0->unk_14, 53);
ManagedSprite_SetAnim(v0->unk_198[0].unk_08, 0);
ManagedSprite_SetAnim(v0->unk_198[1].unk_08, 4);
ManagedSprite_SetPositionXY(v0->unk_198[0].unk_08, 32, 232);
ManagedSprite_SetPositionXY(v0->unk_198[1].unk_08, 128, 232);
FontOAM_SetXY(v0->unk_198[0].unk_0C, 36, -8);
FontOAM_SetXY(v0->unk_198[1].unk_0C, 36, -8);
sub_020129D0(v0->unk_198[0].unk_0C, 1);
sub_020129D0(v0->unk_198[1].unk_0C, 1);
ov62_0223958C(param0, 0);
}
static void ov62_022396E8(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
ov62_022312B0(&v0->unk_198[0]);
ov62_022312B0(&v0->unk_198[1]);
Sprite_DeleteAndFreeResources(v0->unk_198[0].unk_08);
Sprite_DeleteAndFreeResources(v0->unk_198[1].unk_08);
ov62_022313BC(param0);
}
static void ov62_02239724(UnkStruct_0208C06C *param0)
{
Window *v0;
String *v1;
String *v2;
String *v3;
StringTemplate *v4;
UnkStruct_ov62_02237D24 *v5 = param0->unk_860;
u16 word;
u32 v7;
int v8, v9;
if (Window_IsInUse(&v5->unk_10[0]) == 1) {
return;
}
v0 = &v5->unk_10[0];
Window_Init(v0);
Window_Add(param0->unk_14.unk_10, v0, 2, 16, 19, 16, 4, 14, 300);
Window_FillTilemap(v0, 0x00);
v4 = ov62_02231690(HEAP_ID_102);
v3 = String_Init(255, HEAP_ID_102);
v2 = MessageLoader_GetNewString(param0->unk_14.unk_34, 56);
v1 = String_Init(255, HEAP_ID_102);
DressUpPhoto_SetTrainerName(v5->photo, v1);
ov62_022349A8(param0, v1);
word = DressUpPhoto_GetTitleWord(v5->photo);
StringTemplate_SetString(v4, 0, v1, 0, 1, GAME_LANGUAGE);
StringTemplate_SetCustomMessageWord(v4, 1, word);
StringTemplate_Format(v4, v3, v2);
v7 = String_NumLines(v3);
for (v8 = 0; v8 < v7; v8++) {
String_CopyLineNum(v1, v3, v8);
v9 = (128 - Font_CalcStringWidth(0, v1, 0)) / 2;
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, v9, 16 * v8, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
}
Window_ScheduleCopyToVRAM(v0);
String_Free(v1);
String_Free(v2);
String_Free(v3);
StringTemplate_Free(v4);
}
static void ov62_02239854(UnkStruct_0208C06C *param0, int param1)
{
Window *v0;
String *v1;
String *v2;
String *v3;
StringTemplate *v4;
UnkStruct_ov62_02237D24 *v5 = param0->unk_860;
u16 word;
u32 v7;
int v8, v9;
if (Window_IsInUse(&v5->unk_10[0]) == 1) {
return;
}
v0 = &v5->unk_10[0];
Window_Init(v0);
Window_Add(param0->unk_14.unk_10, v0, 2, 16, 19, 16, 4, 14, 300);
Window_FillTilemap(v0, 0x00);
v4 = ov62_02231690(HEAP_ID_102);
v3 = String_Init(255, HEAP_ID_102);
v2 = MessageLoader_GetNewString(param0->unk_14.unk_34, 56);
v1 = String_Init(255, HEAP_ID_102);
DressUpPhoto_SetTrainerName(v5->unk_230.photo, v1);
ov62_022349A8(param0, v1);
word = DressUpPhoto_GetTitleWord(v5->unk_230.photo);
StringTemplate_SetString(v4, 0, v1, 0, 1, GAME_LANGUAGE);
StringTemplate_SetCustomMessageWord(v4, 1, word);
StringTemplate_Format(v4, v3, v2);
v7 = String_NumLines(v3);
for (v8 = 0; v8 < v7; v8++) {
String_CopyLineNum(v1, v3, v8);
v9 = (128 - Font_CalcStringWidth(0, v1, 0)) / 2;
Text_AddPrinterWithParamsAndColor(v0, FONT_SYSTEM, v1, v9, 16 * v8, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
}
Window_ScheduleCopyToVRAM(v0);
String_Free(v1);
String_Free(v2);
String_Free(v3);
StringTemplate_Free(v4);
}
static BOOL ov62_02239984(UnkStruct_0208C06C *param0, int param1)
{
BOOL v0 = 0;
u16 *v1;
int v2;
int v3;
int v4;
int pokedexLength;
UnkStruct_ov62_02237D24 *v6 = param0->unk_860;
v4 = Unk_ov62_022497D4[param1 + 1];
v3 = Unk_ov62_022497D4[param1];
v2 = v4 - v3;
v1 = ov62_Pokedex_Alphabetical(102, 0, &pokedexLength);
{
int v7;
int v8 = 0;
BOOL v9;
Pokedex *pokedex = SaveData_GetPokedex(param0->saveData);
for (v7 = v3; v7 < v4; v7++) {
v9 = Pokedex_HasSeenSpecies(pokedex, v1[v7]);
if (v9 == 0) {
v1[v7] = 0xFFFF;
}
}
v8 = 0;
for (v7 = v3; v7 < v4; v7++) {
if (v1[v7] != 0xFFFF) {
v0 = 1;
break;
}
}
Heap_Free(v1);
}
return v0;
}
static void ov62_02239A0C(UnkStruct_0208C06C *param0, int param1)
{
u16 *v0;
int v1;
int v2;
int v3;
UnkStruct_ov62_02237D24 *v4 = param0->unk_860;
v3 = Unk_ov62_022497D4[param1 + 1];
v2 = Unk_ov62_022497D4[param1];
v1 = v3 - v2;
v4->unk_1D4.unk_08 = ov62_Pokedex_Alphabetical(102, 0, &v4->unk_1D4.unk_04);
v0 = ov62_Pokedex_Alphabetical(102, 0, &v4->unk_1D4.unk_04);
{
int v5;
int v6 = 0;
BOOL v7;
Pokedex *v8 = SaveData_GetPokedex(param0->saveData);
v4->unk_1D4.unk_00 = 0;
for (v5 = v2; v5 < v3; v5++) {
v7 = Pokedex_HasSeenSpecies(v8, v0[v5]);
if (v7 == 0) {
v0[v5] = 0xFFFF;
} else {
v4->unk_1D4.unk_00++;
}
}
v6 = 0;
for (v5 = v2; v5 < v3; v5++) {
if (v0[v5] == 0xFFFF) {
continue;
}
v4->unk_1D4.unk_08[v6] = v0[v5];
v6++;
}
for (v5 = v6; v5 < v4->unk_1D4.unk_04; v5++) {
v4->unk_1D4.unk_08[v5] = v0[v5];
}
Heap_Free(v0);
v4->unk_1E8 = Heap_Alloc(HEAP_ID_102, sizeof(UnkStruct_ov62_02249380) * v4->unk_1D4.unk_00);
MI_CpuFill8(v4->unk_1E8, 0, sizeof(UnkStruct_ov62_02249380) * v4->unk_1D4.unk_00);
for (v5 = 0; v5 < v4->unk_1D4.unk_00; v5++) {
v4->unk_1E8[v5].unk_00 = v4->unk_1D4.unk_08[v5];
v4->unk_1E8[v5].unk_04 = v4->unk_1D4.unk_08[v5];
}
}
v4->unk_1D4.unk_0C = MessageLoader_Init(MSG_LOADER_PRELOAD_ENTIRE_BANK, NARC_INDEX_MSGDATA__PL_MSG, TEXT_BANK_SPECIES_NAME, HEAP_ID_102);
v4->unk_1D4.unk_10 = 1;
}
static void ov62_02239B7C(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
MessageLoader_Free(v0->unk_1D4.unk_0C);
Heap_Free(v0->unk_1E8);
Heap_Free(v0->unk_1D4.unk_08);
v0->unk_1D4.unk_10 = 0;
}
static void ov62_02239BAC(u32 param0, enum TouchScreenButtonState param1, void *param2)
{
UnkStruct_0208C06C *v0 = param2;
UnkStruct_ov62_02237D24 *v1 = v0->unk_860;
if (param1 != TOUCH_BUTTON_PRESSED) {
return;
}
if (ov62_02239984(v0, param0) == 0) {
Sound_PlayEffect(SEQ_SE_PL_BREC58);
return;
}
ov62_02239A0C(v0, param0);
}
static void ov62_02239BD8(UnkStruct_0208C06C *param0)
{
String *v0;
Window *v1;
UnkStruct_ov62_02237D24 *v2 = param0->unk_860;
int v3;
int v4 = 1;
u8 v5, v6, v7, v8;
int v9, v10;
for (v3 = 0; v3 < 9u; v3++) {
v1 = &v2->unk_D0[v3];
v5 = Unk_ov62_022491F0[v3].rect.left / 8;
v6 = Unk_ov62_022491F0[v3].rect.top / 8;
v7 = Unk_ov62_022491F0[v3].rect.right / 8 - v5;
v8 = Unk_ov62_022491F0[v3].rect.bottom / 8 - v6;
Window_Init(v1);
Window_Add(param0->unk_14.unk_10, v1, 6, v5, v6, v7, v8, 14, v4);
Window_FillTilemap(v1, 0x00);
v0 = MessageLoader_GetNewString(param0->unk_14.unk_34, 68 + v3);
v9 = ov62_0223429C(v1, v0);
v10 = (8 * v8 - 16) / 2;
if (ov62_02239984(param0, v3) == 1) {
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v0, v9, v10, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
} else {
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v0, v9, v10, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(12, 11, 0), NULL);
}
Window_ScheduleCopyToVRAM(v1);
String_Free(v0);
v4 += v7 * v8;
}
}
static void ov62_02239CE8(UnkStruct_0208C06C *param0)
{
u32 v0;
Window *v1;
UnkStruct_ov62_02237D24 *v2 = param0->unk_860;
for (v0 = 0; v0 < 9; v0++) {
v1 = &v2->unk_D0[v0];
Window_ClearAndCopyToVRAM(v1);
Window_Remove(v1);
}
}
static void ov62_02239D0C(UnkStruct_0208C06C *param0)
{
UnkStruct_ov62_02237D24 *v0 = param0->unk_860;
if (Window_IsInUse(&v0->unk_10[0]) == 1) {
Window_ClearAndCopyToVRAM(&v0->unk_10[0]);
Window_Remove(&v0->unk_10[0]);
}
}
void ov62_02239D34(void *param0, const UnkStruct_ov62_0223CAA4 *param1)
{
UnkStruct_0208C06C *v0 = param0;
UnkStruct_ov62_02237D24 *v1 = v0->unk_860;
if (param1->unk_00 == 1) {
(void)0;
} else {
(void)0;
}
}
void ov62_02239D38(void *param0, const UnkStruct_ov62_0223CAA4 *param1)
{
UnkStruct_0208C06C *v0 = param0;
UnkStruct_ov62_02237D24 *v1 = v0->unk_860;
if (param1->unk_00 == 1) {
(void)0;
} else {
v1->unk_2E4 = ov61_0222BC90(ov62_0224112C(v0), v1->unk_230.unk_0C, 5);
}
}