mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-04-26 08:41:27 -05:00
3213 lines
86 KiB
C
3213 lines
86 KiB
C
#include "overlay062/ov62_02231690.h"
|
|
|
|
#include <nitro.h>
|
|
#include <string.h>
|
|
|
|
#include "constants/narc.h"
|
|
#include "constants/screen.h"
|
|
|
|
#include "struct_decls/struct_0202F298_decl.h"
|
|
#include "struct_decls/struct_0202F41C_decl.h"
|
|
#include "struct_defs/sentence.h"
|
|
#include "struct_defs/struct_02030A80.h"
|
|
#include "struct_defs/struct_0208B878.h"
|
|
#include "struct_defs/struct_0208C06C.h"
|
|
|
|
#include "overlay061/ov61_0222BC4C.h"
|
|
#include "overlay061/struct_ov61_0222BE20.h"
|
|
#include "overlay062/ov62_0222F2C0.h"
|
|
#include "overlay062/ov62_022300D8.h"
|
|
#include "overlay062/ov62_0224112C.h"
|
|
#include "overlay062/ov62_02248408.h"
|
|
#include "overlay062/struct_ov62_022312B0.h"
|
|
#include "overlay062/struct_ov62_022323B8.h"
|
|
#include "overlay062/struct_ov62_02233310.h"
|
|
#include "overlay062/struct_ov62_0223359C.h"
|
|
#include "overlay062/struct_ov62_02233750.h"
|
|
#include "overlay062/struct_ov62_02233828.h"
|
|
#include "overlay062/struct_ov62_02233F74.h"
|
|
#include "overlay062/struct_ov62_022349A8.h"
|
|
#include "overlay062/struct_ov62_0223CAA4.h"
|
|
#include "overlay062/struct_ov62_02248CDC.h"
|
|
|
|
#include "bg_window.h"
|
|
#include "enums.h"
|
|
#include "font.h"
|
|
#include "game_records.h"
|
|
#include "graphics.h"
|
|
#include "gx_layers.h"
|
|
#include "heap.h"
|
|
#include "message.h"
|
|
#include "narc.h"
|
|
#include "palette.h"
|
|
#include "pokemon_icon.h"
|
|
#include "savedata_misc.h"
|
|
#include "sprite_system.h"
|
|
#include "strbuf.h"
|
|
#include "string_template.h"
|
|
#include "sys_task.h"
|
|
#include "sys_task_manager.h"
|
|
#include "system.h"
|
|
#include "text.h"
|
|
#include "touch_screen.h"
|
|
#include "unk_02005474.h"
|
|
#include "unk_0200762C.h"
|
|
#include "unk_02012744.h"
|
|
#include "unk_02014A84.h"
|
|
#include "unk_0202F1D4.h"
|
|
#include "unk_02030A80.h"
|
|
#include "unk_020393C8.h"
|
|
#include "unk_0208B284.h"
|
|
|
|
static void ov62_022349E4(Strbuf *param0, int param1);
|
|
|
|
StringTemplate *ov62_02231690(u32 param0)
|
|
{
|
|
StringTemplate *v0 = StringTemplate_New(4, 64, param0);
|
|
return v0;
|
|
}
|
|
|
|
int ov62_022316A0(UnkStruct_0208C06C *param0)
|
|
{
|
|
u32 v0[] = {
|
|
0x73fa,
|
|
0x771f,
|
|
0x6f7b,
|
|
0x6fff,
|
|
0x4ebf,
|
|
0x575e,
|
|
0x5b9f,
|
|
};
|
|
|
|
return v0[param0->unk_14.unk_48];
|
|
}
|
|
|
|
int ov62_022316D0(UnkStruct_0208C06C *param0)
|
|
{
|
|
u32 v0[] = {
|
|
0x1642,
|
|
0x357f,
|
|
0x3def,
|
|
0x31f,
|
|
0xbc,
|
|
0x131,
|
|
0x23f,
|
|
};
|
|
|
|
if (param0->unk_00 != 0) {
|
|
return 0x7e05;
|
|
}
|
|
|
|
return v0[param0->unk_14.unk_48];
|
|
}
|
|
|
|
int ov62_02231710(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
int v0[] = {
|
|
102,
|
|
103,
|
|
104,
|
|
105,
|
|
106,
|
|
129,
|
|
134,
|
|
};
|
|
int v1[] = {
|
|
107,
|
|
108,
|
|
109,
|
|
110,
|
|
111,
|
|
130,
|
|
135,
|
|
};
|
|
int v2[] = {
|
|
117,
|
|
118,
|
|
119,
|
|
120,
|
|
121,
|
|
132,
|
|
137,
|
|
};
|
|
int v3[] = {
|
|
112,
|
|
113,
|
|
114,
|
|
115,
|
|
116,
|
|
131,
|
|
136,
|
|
};
|
|
int v4;
|
|
|
|
v4 = param0->unk_14.unk_48;
|
|
|
|
switch (param1) {
|
|
case 0:
|
|
return v0[v4];
|
|
case 1:
|
|
return v1[v4];
|
|
case 2:
|
|
return v2[v4];
|
|
case 3:
|
|
return v3[v4];
|
|
}
|
|
|
|
GF_ASSERT(0);
|
|
|
|
return v0[0];
|
|
}
|
|
|
|
void ov62_022317CC(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
PaletteData *v0 = param0->unk_14.unk_14;
|
|
SpriteSystem *v1 = param0->unk_14.unk_04;
|
|
SpriteManager *v2 = param0->unk_14.unk_08;
|
|
NARC *v3 = param0->unk_14.unk_00;
|
|
|
|
PaletteData_LoadBufferFromFileStart(v0, 162, ov62_02231710(param0, 3), 102, 0, 0x20 * (8 + 1), 0);
|
|
PaletteData_LoadBufferFromFileStart(v0, 162, ov62_02231710(param0, 3), 102, 1, 0x20 * (8 + 1), 0);
|
|
PaletteData_LoadBufferFromFileStart(v0, 162, ov62_02231710(param0, 0), 102, 0, 0x20, 14 * 16);
|
|
PaletteData_LoadBufferFromFileStart(v0, 162, ov62_02231710(param0, 0), 102, 1, 0x20, 14 * 16);
|
|
sub_0208B63C(param0->unk_6F0, param0->unk_14.unk_48);
|
|
sub_0208B63C(param0->unk_6F0, param0->unk_14.unk_48);
|
|
SpriteManager_UnloadPlttObjById(v2, 9999);
|
|
SpriteManager_UnloadPlttObjById(v2, 10000);
|
|
SpriteSystem_LoadPaletteBufferFromOpenNarc(v0, 2, v1, v2, v3, ov62_02231710(param0, 2), 0, 3, NNS_G2D_VRAM_TYPE_2DMAIN, 9999);
|
|
SpriteSystem_LoadPaletteBufferFromOpenNarc(v0, 3, v1, v2, v3, ov62_02231710(param0, 2), 0, 3, NNS_G2D_VRAM_TYPE_2DSUB, 10000);
|
|
}
|
|
|
|
void ov62_022318E8(UnkStruct_0208C06C *param0)
|
|
{
|
|
PaletteData_BlendMulti(param0->unk_14.unk_14, 2, 0xFFFF, 0, param0->unk_14.unk_44);
|
|
PaletteData_BlendMulti(param0->unk_14.unk_14, 0, 0xFFFF, 0, param0->unk_14.unk_44);
|
|
PaletteData_BlendMulti(param0->unk_14.unk_14, 3, 0xFFFF, 0, param0->unk_14.unk_44);
|
|
PaletteData_BlendMulti(param0->unk_14.unk_14, 1, 0xFFFF, 0, param0->unk_14.unk_44);
|
|
}
|
|
|
|
u16 *ov62_Pokedex_Alphabetical(int heapID, int unused, int *pokedexLength)
|
|
{
|
|
u32 pokedexSize;
|
|
u16 *pokedexAlphabetical;
|
|
|
|
pokedexAlphabetical = LoadMemberFromNARC_OutFileSize(NARC_INDEX_APPLICATION__ZUKANLIST__ZKN_DATA__ZUKAN_DATA, 13, 0, heapID, 0, &pokedexSize);
|
|
*pokedexLength = pokedexSize / sizeof(u16);
|
|
|
|
return pokedexAlphabetical;
|
|
}
|
|
|
|
void ov62_0223196C(UnkStruct_0208C06C *param0, BOOL param1)
|
|
{
|
|
param0->unk_870 = param1;
|
|
}
|
|
|
|
BOOL ov62_02231974(UnkStruct_0208C06C *param0)
|
|
{
|
|
return param0->unk_870;
|
|
}
|
|
|
|
void ov62_0223197C(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
Strbuf *v0;
|
|
Window *v1 = ¶m0->unk_8A4;
|
|
|
|
if (param0->unk_8A0 == 1) {
|
|
return;
|
|
}
|
|
|
|
param0->unk_8A0 = 1;
|
|
|
|
ov62_022302A8(param0, 6, 0);
|
|
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 1);
|
|
G2S_BlendNone();
|
|
Bg_SetPriority(6, 0);
|
|
Window_Init(v1);
|
|
Window_Add(param0->unk_14.unk_10, v1, 6, 1, 19, 30, 4, 14, 32);
|
|
|
|
v0 = MessageLoader_GetNewStrbuf(param0->unk_14.unk_34, param1);
|
|
|
|
Window_FillTilemap(v1, 0xCC);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v0, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 12), NULL);
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
Strbuf_Free(v0);
|
|
}
|
|
|
|
void ov62_02231A1C(UnkStruct_0208C06C *param0)
|
|
{
|
|
if (param0->unk_8A0 == 0) {
|
|
return;
|
|
}
|
|
|
|
param0->unk_8A0 = 0;
|
|
|
|
Window_ClearAndCopyToVRAM(¶m0->unk_8A4);
|
|
Window_Remove(¶m0->unk_8A4);
|
|
Bg_ClearTilemap(param0->unk_14.unk_10, 6);
|
|
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 0);
|
|
Bg_SetPriority(6, 2);
|
|
|
|
G2_SetBlendAlpha(GX_BLEND_PLANEMASK_BG2, GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_OBJ, 7, 8);
|
|
G2S_SetBlendAlpha(GX_BLEND_PLANEMASK_BG2, GX_BLEND_PLANEMASK_BG1 | GX_BLEND_PLANEMASK_OBJ, 7, 8);
|
|
}
|
|
|
|
void ov62_02231A88(UnkStruct_0208C06C *param0)
|
|
{
|
|
Window_ClearAndCopyToVRAM(¶m0->unk_8A4);
|
|
Window_Remove(¶m0->unk_8A4);
|
|
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
|
|
}
|
|
|
|
void ov62_02231AAC(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
Strbuf *v0;
|
|
Window *v1 = ¶m0->unk_8A4;
|
|
|
|
if (param0->unk_8A0 == 1) {
|
|
return;
|
|
}
|
|
|
|
param0->unk_8A0 = 1;
|
|
|
|
ov62_022302A8(param0, 2, 0);
|
|
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 1);
|
|
Window_Init(v1);
|
|
Window_Add(param0->unk_14.unk_10, v1, 2, 1, 19, 30, 4, 14, 32);
|
|
|
|
v0 = MessageLoader_GetNewStrbuf(param0->unk_14.unk_34, param1);
|
|
|
|
Window_FillTilemap(v1, 0xCC);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v0, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 12), NULL);
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
Strbuf_Free(v0);
|
|
}
|
|
|
|
void ov62_02231B3C(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
Strbuf *v0;
|
|
Window *v1 = ¶m0->unk_8A4;
|
|
|
|
if (param0->unk_8A0 == 0) {
|
|
return;
|
|
}
|
|
|
|
v0 = MessageLoader_GetNewStrbuf(param0->unk_14.unk_34, param1);
|
|
|
|
Window_FillTilemap(v1, 0xCC);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v0, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 12), NULL);
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
Strbuf_Free(v0);
|
|
}
|
|
|
|
void ov62_02231B8C(UnkStruct_0208C06C *param0)
|
|
{
|
|
if (param0->unk_8A0 == 0) {
|
|
return;
|
|
}
|
|
|
|
param0->unk_8A0 = 0;
|
|
|
|
Window_ClearAndCopyToVRAM(¶m0->unk_8A4);
|
|
Window_Remove(¶m0->unk_8A4);
|
|
Bg_ClearTilemap(param0->unk_14.unk_10, 2);
|
|
GXLayers_EngineAToggleLayers(GX_PLANEMASK_BG2, 0);
|
|
}
|
|
|
|
void ov62_02231BC4(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
Strbuf *v0;
|
|
Window *v1 = ¶m0->unk_8A4;
|
|
|
|
if (param0->unk_8A0 == 1) {
|
|
return;
|
|
}
|
|
|
|
if (param0->unk_89C == 1) {
|
|
return;
|
|
}
|
|
|
|
param0->unk_8A0 = 1;
|
|
param0->unk_89C = 1;
|
|
|
|
G2S_BlendNone();
|
|
|
|
Bg_SetPriority(6, 0);
|
|
ov62_022302A8(param0, 6, 0);
|
|
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 1);
|
|
Window_Init(v1);
|
|
Window_Add(param0->unk_14.unk_10, v1, 6, 1, 19, 30, 4, 14, 32);
|
|
|
|
v0 = MessageLoader_GetNewStrbuf(param0->unk_14.unk_34, param1);
|
|
|
|
Window_FillTilemap(v1, 0xCC);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v0, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 12), NULL);
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
Strbuf_Free(v0);
|
|
}
|
|
|
|
static void ov62_02231C78(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1);
|
|
static void ov62_02232080(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1);
|
|
static void ov62_022320A0(UnkStruct_ov62_022323B8 *param0, int param1);
|
|
static void ov62_022320B0(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1);
|
|
static void ov62_022320EC(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1);
|
|
static void ov62_022321F4(UnkStruct_ov62_022323B8 *param0, int param1);
|
|
static void ov62_02232200(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1);
|
|
static void ov62_0223226C(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1);
|
|
|
|
static void ov62_02231C78(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
int v1;
|
|
Window *v2;
|
|
Strbuf *v3;
|
|
|
|
{
|
|
const s16 Unk_ov62_02248A28[][4] = {
|
|
{ 0x4, 0x4, 0x18, 0x2 },
|
|
{ 0xF, 0x8, 0x5, 0x2 },
|
|
{ 0x10, 0x8, 0xD, 0x2 },
|
|
{ 0x4, 0xB, 0xB, 0x2 },
|
|
{ 0x4, 0xD, 0x18, 0x2 },
|
|
{ 0x4, 0xF, 0x18, 0x2 },
|
|
{ 0x4, 0x11, 0xB, 0x2 },
|
|
{ 0x4, 0x13, 0x18, 0x4 },
|
|
{ 0xFF, 0x0, 0x0, 0x0 },
|
|
{ 0x4, 0x15, 0x18, 0x2 }
|
|
};
|
|
|
|
const int Unk_ov62_022489F8[] = {
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14,
|
|
0x14
|
|
};
|
|
|
|
v1 = 1;
|
|
|
|
for (v0 = 0; v0 < 8; v0++) {
|
|
v2 = ¶m0->unk_0C[v0];
|
|
v3 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, Unk_ov62_022489F8[v0]);
|
|
Window_Init(v2);
|
|
Window_Add(param1->unk_14.unk_10, v2, 2, Unk_ov62_02248A28[v0][0], Unk_ov62_02248A28[v0][1], Unk_ov62_02248A28[v0][2], Unk_ov62_02248A28[v0][3], 14, v1);
|
|
Window_FillTilemap(v2, 0x00);
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, v3, ov62_0223429C(v2, v3), 0, (0xff), ((u32)(((15 & (0xff)) << 16) | ((13 & (0xff)) << 8) | ((0 & (0xff)) << 0))), NULL);
|
|
Window_ScheduleCopyToVRAM(v2);
|
|
v1 += (Unk_ov62_02248A28[v0][2] * Unk_ov62_02248A28[v0][3]);
|
|
Strbuf_Free(v3);
|
|
}
|
|
}
|
|
|
|
{
|
|
Strbuf *v6;
|
|
Strbuf *v7;
|
|
Strbuf *v8;
|
|
StringTemplate *v9;
|
|
Window *v10;
|
|
UnkStruct_02030A80 *v11;
|
|
|
|
v11 = param0->unk_00;
|
|
v9 = ov62_02231690(102);
|
|
|
|
v10 = ¶m0->unk_0C[0];
|
|
v6 = sub_02030B94(v11, 102);
|
|
ov62_022349A8(param1, v6);
|
|
v7 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 13);
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
StringTemplate_SetStrbuf(v9, 0, v6, 0, 1, 2);
|
|
StringTemplate_Format(v9, v8, v7);
|
|
|
|
Window_FillTilemap(v10, 0x00);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
|
|
Strbuf_Free(v6);
|
|
Strbuf_Free(v7);
|
|
Strbuf_Free(v8);
|
|
StringTemplate_ClearArgs(v9);
|
|
|
|
{
|
|
int v12 = sub_02030CCC(v11);
|
|
|
|
v10 = ¶m0->unk_0C[2];
|
|
v6 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 15);
|
|
v7 = sub_02030B94(v11, 102);
|
|
ov62_022349A8(param1, v7);
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
StringTemplate_SetMonthName(v9, 0, v12);
|
|
StringTemplate_Format(v9, v8, v6);
|
|
|
|
Window_FillTilemap(v10, 0x00);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
|
|
Strbuf_Free(v6);
|
|
Strbuf_Free(v7);
|
|
Strbuf_Free(v8);
|
|
StringTemplate_ClearArgs(v9);
|
|
}
|
|
|
|
{
|
|
v10 = ¶m0->unk_0C[3];
|
|
v8 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 16);
|
|
Window_FillTilemap(v10, 0x00);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v8);
|
|
|
|
{
|
|
int v13 = sub_02030BFC(v11);
|
|
int v14 = sub_02030C08(v11);
|
|
|
|
v10 = ¶m0->unk_0C[4];
|
|
Window_FillTilemap(v10, 0x00);
|
|
if (v13 == 0) {
|
|
v8 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 21);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v8);
|
|
} else {
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
v6 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 22);
|
|
StringTemplate_SetCountryName(v9, 0, v13);
|
|
StringTemplate_Format(v9, v8, v6);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v8);
|
|
Strbuf_Free(v6);
|
|
if (v14 != 0) {
|
|
v10 = ¶m0->unk_0C[5];
|
|
Window_FillTilemap(v10, 0x00);
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
v6 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 23);
|
|
StringTemplate_SetCityName(v9, 0, v13, v14);
|
|
StringTemplate_Format(v9, v8, v6);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, 4, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v8);
|
|
Strbuf_Free(v6);
|
|
}
|
|
}
|
|
|
|
StringTemplate_ClearArgs(v9);
|
|
}
|
|
}
|
|
|
|
{
|
|
v10 = ¶m0->unk_0C[6];
|
|
v8 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 17);
|
|
Window_FillTilemap(v10, 0x00);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v8);
|
|
|
|
{
|
|
Sentence v15;
|
|
|
|
v10 = ¶m0->unk_0C[7];
|
|
|
|
v8 = sub_02030C28(v11, &v15, 102);
|
|
if (v8 == NULL) {
|
|
v8 = sub_02014B34(&v15, 102);
|
|
}
|
|
|
|
Window_FillTilemap(v10, 0x00);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
|
|
Strbuf_Free(v8);
|
|
}
|
|
}
|
|
|
|
StringTemplate_Free(v9);
|
|
}
|
|
}
|
|
|
|
static void ov62_02232080(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
|
|
for (v0 = 0; v0 < 8; v0++) {
|
|
Window_ClearAndCopyToVRAM(¶m0->unk_0C[v0]);
|
|
Window_Remove(¶m0->unk_0C[v0]);
|
|
}
|
|
}
|
|
|
|
static void ov62_022320A0(UnkStruct_ov62_022323B8 *param0, int param1)
|
|
{
|
|
if (param0->unk_04) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_04, param1);
|
|
}
|
|
}
|
|
|
|
static void ov62_022320B0(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
SpriteManager_UnloadCharObjById(param1->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadPlttObjById(param1->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadCellObjById(param1->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadAnimObjById(param1->unk_14.unk_08, 100000);
|
|
|
|
if (param0->unk_04) {
|
|
Sprite_DeleteAndFreeResources(param0->unk_04);
|
|
param0->unk_04 = NULL;
|
|
}
|
|
}
|
|
|
|
static void ov62_022320EC(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
int v1;
|
|
int v2;
|
|
int v3;
|
|
u8 v4;
|
|
SpriteSystem *v5;
|
|
SpriteManager *v6;
|
|
PaletteData *v7;
|
|
SpriteTemplate v8;
|
|
|
|
v5 = param1->unk_14.unk_04;
|
|
v6 = param1->unk_14.unk_08;
|
|
v7 = param1->unk_14.unk_14;
|
|
|
|
v4 = SpriteSystem_LoadPaletteBuffer(v7, PLTTBUF_MAIN_OBJ, v5, v6, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, PokeIconPalettesFileIndex(), FALSE, 3, NNS_G2D_VRAM_TYPE_2DMAIN, 100000);
|
|
|
|
{
|
|
int v9 = PokeIcon64KCellsFileIndex();
|
|
SpriteSystem_LoadCellResObj(v5, v6, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, v9, FALSE, 100000);
|
|
}
|
|
|
|
{
|
|
int v10 = PokeIcon64KAnimationFileIndex();
|
|
SpriteSystem_LoadAnimResObj(v5, v6, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, v10, FALSE, 100000);
|
|
}
|
|
|
|
{
|
|
int v11;
|
|
|
|
v1 = sub_02030BBC(param0->unk_00);
|
|
v3 = sub_02030BCC(param0->unk_00);
|
|
v0 = sub_02030BEC(param0->unk_00);
|
|
|
|
if (v1 == 0) {
|
|
return;
|
|
}
|
|
|
|
v11 = PokeIconSpriteIndex(v1, v0, v3);
|
|
|
|
SpriteSystem_LoadCharResObjAtEndWithHardwareMappingType(v5, v6, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, v11, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 100000);
|
|
|
|
v8.x = 72 + 4;
|
|
v8.y = 64 - 4;
|
|
v8.z = 0;
|
|
v8.animIdx = 0;
|
|
v8.priority = 0;
|
|
v8.plttIdx = 0;
|
|
v8.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
|
v8.bgPriority = 0;
|
|
v8.vramTransfer = FALSE;
|
|
v8.resources[0] = 100000;
|
|
v8.resources[1] = 100000;
|
|
v8.resources[2] = 100000;
|
|
v8.resources[3] = 100000;
|
|
v8.resources[4] = SPRITE_RESOURCE_NONE;
|
|
v8.resources[5] = SPRITE_RESOURCE_NONE;
|
|
|
|
param0->unk_04 = SpriteSystem_NewSprite(param1->unk_14.unk_04, param1->unk_14.unk_08, &v8);
|
|
v2 = PokeIconPaletteIndex(v1, v3, v0);
|
|
|
|
ManagedSprite_SetExplicitPaletteOffset(param0->unk_04, v4 + v2);
|
|
ManagedSprite_SetAnim(param0->unk_04, 1);
|
|
}
|
|
}
|
|
|
|
static void ov62_022321F4(UnkStruct_ov62_022323B8 *param0, int param1)
|
|
{
|
|
ManagedSprite_SetDrawFlag(param0->unk_08, param1);
|
|
}
|
|
|
|
static void ov62_02232200(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
SpriteManager_UnloadCharObjById(param1->unk_14.unk_08, 165535);
|
|
SpriteManager_UnloadPlttObjById(param1->unk_14.unk_08, 165535);
|
|
SpriteManager_UnloadCellObjById(param1->unk_14.unk_08, 165535);
|
|
SpriteManager_UnloadAnimObjById(param1->unk_14.unk_08, 165535);
|
|
Sprite_DeleteAndFreeResources(param0->unk_08);
|
|
}
|
|
|
|
static const int Unk_ov62_02248AD8[16][4] = {
|
|
{ 0x3, 0x3C, 0x11, 0x12 },
|
|
{ 0x5, 0x6, 0x13, 0x14 },
|
|
{ 0xB, 0x18, 0x15, 0x16 },
|
|
{ 0x1F, 0x39, 0x17, 0x18 },
|
|
{ 0x32, 0x30, 0x19, 0x1A },
|
|
{ 0x33, 0xE, 0x1B, 0x1C },
|
|
{ 0x3E, 0x20, 0x1D, 0x1E },
|
|
{ 0x46, 0x31, 0x1F, 0x20 },
|
|
{ 0x6, 0x3, 0x21, 0x22 },
|
|
{ 0x7, 0xA, 0x23, 0x24 },
|
|
{ 0xD, 0x24, 0x25, 0x26 },
|
|
{ 0xE, 0x19, 0x27, 0x28 },
|
|
{ 0x23, 0x55, 0x29, 0x2A },
|
|
{ 0x25, 0x23, 0x2B, 0x2C },
|
|
{ 0x2A, 0x12, 0x2D, 0x2E },
|
|
{ 0x3F, 0x21, 0x2F, 0x30 }
|
|
};
|
|
|
|
int ov62_02232234(int param0, int param1)
|
|
{
|
|
int v0 = param0;
|
|
|
|
if ((param0 > 16) || (param0 < 0)) {
|
|
GF_ASSERT(0);
|
|
v0 = 0;
|
|
}
|
|
|
|
if (param1 == 4) {
|
|
return 316 + v0;
|
|
}
|
|
|
|
if (param1 >= 5) {
|
|
return 0;
|
|
}
|
|
|
|
return Unk_ov62_02248AD8[v0][param1];
|
|
}
|
|
|
|
static void ov62_0223226C(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
SpriteSystem *v1;
|
|
SpriteManager *v2;
|
|
PaletteData *v3;
|
|
SpriteTemplate v4;
|
|
int v5 = 13;
|
|
int v6 = 14;
|
|
int v7 = 9;
|
|
int v8 = 10;
|
|
|
|
v0 = sub_02030BAC(param0->unk_00);
|
|
v1 = param1->unk_14.unk_04;
|
|
v2 = param1->unk_14.unk_08;
|
|
v3 = param1->unk_14.unk_14;
|
|
|
|
if (param1->unk_86C == 0) {
|
|
if (v0 == 1) {
|
|
v5 = 15;
|
|
v6 = 16;
|
|
}
|
|
} else {
|
|
int v9 = sub_02030CDC(param0->unk_00);
|
|
|
|
if (v9 >= 16) {
|
|
v9 = 0;
|
|
}
|
|
|
|
v5 = ov62_02232234(v9, 2);
|
|
v6 = ov62_02232234(v9, 3);
|
|
}
|
|
|
|
SpriteSystem_LoadPaletteBuffer(v3, PLTTBUF_MAIN_OBJ, v1, v2, NARC_INDEX_GRAPHIC__WIFI2DCHAR, v5, FALSE, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 165535);
|
|
SpriteSystem_LoadCellResObj(v1, v2, NARC_INDEX_GRAPHIC__WIFI2DCHAR, v7, FALSE, 165535);
|
|
SpriteSystem_LoadAnimResObj(v1, v2, NARC_INDEX_GRAPHIC__WIFI2DCHAR, v8, FALSE, 165535);
|
|
SpriteSystem_LoadCharResObjAtEndWithHardwareMappingType(v1, v2, NARC_INDEX_GRAPHIC__WIFI2DCHAR, v6, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 165535);
|
|
|
|
v4.x = 40;
|
|
v4.y = 56 + 4;
|
|
v4.z = 0;
|
|
v4.animIdx = 0;
|
|
v4.priority = 0;
|
|
v4.plttIdx = 0;
|
|
v4.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
|
v4.bgPriority = 0;
|
|
v4.vramTransfer = FALSE;
|
|
v4.resources[0] = 165535;
|
|
v4.resources[1] = 165535;
|
|
v4.resources[2] = 165535;
|
|
v4.resources[3] = 165535;
|
|
v4.resources[4] = SPRITE_RESOURCE_NONE;
|
|
v4.resources[5] = SPRITE_RESOURCE_NONE;
|
|
|
|
param0->unk_08 = SpriteSystem_NewSprite(param1->unk_14.unk_04, param1->unk_14.unk_08, &v4);
|
|
ManagedSprite_SetAnim(param0->unk_08, 1);
|
|
ManagedSprite_TickFrame(param0->unk_08);
|
|
}
|
|
|
|
void ov62_02232378(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
ov62_02231C78(param0, param1);
|
|
ov62_0223226C(param0, param1);
|
|
ov62_022320EC(param0, param1);
|
|
}
|
|
|
|
void ov62_02232394(UnkStruct_ov62_022323B8 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
ov62_02232080(param0, param1);
|
|
ov62_022323B8(param0, 0);
|
|
ov62_02232200(param0, param1);
|
|
ov62_022320B0(param0, param1);
|
|
}
|
|
|
|
void ov62_022323B8(UnkStruct_ov62_022323B8 *param0, int param1)
|
|
{
|
|
ov62_022320A0(param0, param1);
|
|
ov62_022321F4(param0, param1);
|
|
}
|
|
|
|
static void ov62_022323CC(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
Strbuf *v0;
|
|
Strbuf *v1;
|
|
StringTemplate *v2;
|
|
Window *v3;
|
|
int v4 = sub_02030BFC(param1->unk_88C[0]);
|
|
int v5 = sub_02030C08(param1->unk_88C[0]);
|
|
|
|
v3 = ¶m0->unk_18;
|
|
|
|
if ((v4 == 0) && (v5 == 0)) {
|
|
v0 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 125);
|
|
} else {
|
|
v2 = ov62_02231690(102);
|
|
|
|
if (v5 != 0) {
|
|
v0 = Strbuf_Init(255, HEAP_ID_102);
|
|
v1 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 23);
|
|
StringTemplate_SetCityName(v2, 0, v4, v5);
|
|
StringTemplate_Format(v2, v0, v1);
|
|
} else {
|
|
v0 = Strbuf_Init(255, HEAP_ID_102);
|
|
v1 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 22);
|
|
StringTemplate_SetCountryName(v2, 0, v4);
|
|
StringTemplate_Format(v2, v0, v1);
|
|
}
|
|
|
|
Strbuf_Free(v1);
|
|
StringTemplate_Free(v2);
|
|
}
|
|
|
|
Text_AddPrinterWithParamsAndColor(v3, FONT_SYSTEM, v0, 0, 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v3);
|
|
Strbuf_Free(v0);
|
|
}
|
|
|
|
void ov62_022324A0(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1, const UnkStruct_ov62_02248CDC *param2)
|
|
{
|
|
int v0;
|
|
Window *v1;
|
|
Strbuf *v2;
|
|
|
|
v1 = ¶m0->unk_18;
|
|
|
|
param0->unk_04 = param2->unk_04;
|
|
param0->unk_00 = 0;
|
|
param0->unk_0C = 0;
|
|
param0->unk_10 = param2->unk_24;
|
|
param0->unk_28 = param2;
|
|
param0->unk_34 = param1->unk_14.unk_34;
|
|
param0->unk_14 = (param0->unk_04 / param0->unk_10) + 1;
|
|
|
|
if (param0->unk_04 < param0->unk_10) {
|
|
param0->unk_10 = param0->unk_04;
|
|
param0->unk_38.unk_08 = param0->unk_10 - 1;
|
|
param0->unk_38.unk_0C = param0->unk_10 - 1;
|
|
}
|
|
|
|
Window_Init(v1);
|
|
Window_Add(param1->unk_14.unk_10, v1, param2->unk_20, param2->unk_0C, param2->unk_10, param2->unk_14, param2->unk_18, 14, param2->unk_1C);
|
|
Window_FillTilemap(v1, 0x0);
|
|
|
|
for (v0 = 0; v0 < param0->unk_10; v0++) {
|
|
v2 = MessageLoader_GetNewStrbuf(param0->unk_34, param2->unk_00[v0].unk_00);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v2, 0, (param2->unk_08 * 16) * v0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Strbuf_Free(v2);
|
|
|
|
if (param2->unk_00[v0].unk_00 == 16) {
|
|
ov62_022323CC(param0, param1);
|
|
}
|
|
}
|
|
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
}
|
|
|
|
void ov62_02232594(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1, MessageLoader *param2, const UnkStruct_ov62_02248CDC *param3)
|
|
{
|
|
int v0;
|
|
Window *v1;
|
|
Strbuf *v2;
|
|
|
|
v1 = ¶m0->unk_18;
|
|
|
|
param0->unk_04 = param3->unk_04;
|
|
param0->unk_00 = 0;
|
|
param0->unk_0C = 0;
|
|
param0->unk_10 = param3->unk_24;
|
|
param0->unk_28 = param3;
|
|
|
|
if (param2) {
|
|
param0->unk_34 = param2;
|
|
} else {
|
|
param0->unk_34 = param1->unk_14.unk_34;
|
|
}
|
|
|
|
param0->unk_14 = (param0->unk_04 / param0->unk_10) + 1;
|
|
param0->unk_38.unk_08 = param0->unk_10 / 2;
|
|
param0->unk_38.unk_0C = param0->unk_10 / 2;
|
|
|
|
if (param0->unk_04 < param0->unk_10) {
|
|
param0->unk_10 = param0->unk_04;
|
|
param0->unk_38.unk_08 = param0->unk_10 - 1;
|
|
param0->unk_38.unk_0C = param0->unk_10 - 1;
|
|
}
|
|
|
|
Window_Init(v1);
|
|
Window_Add(param1->unk_14.unk_10, v1, param3->unk_20, param3->unk_0C, param3->unk_10, param3->unk_14, param3->unk_18, 14, param3->unk_1C);
|
|
Window_FillTilemap(v1, 0x0);
|
|
|
|
if (param3->unk_00) {
|
|
for (v0 = 0; v0 < param0->unk_10; v0++) {
|
|
v2 = MessageLoader_GetNewStrbuf(param0->unk_34, param3->unk_00[v0].unk_00);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v2, 0, (param3->unk_08 * 16) * v0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Strbuf_Free(v2);
|
|
}
|
|
} else {
|
|
int v3;
|
|
Strbuf *v4;
|
|
Strbuf *v5;
|
|
Strbuf *v6;
|
|
int v7;
|
|
|
|
for (v0 = 0; v0 < param0->unk_10; v0++) {
|
|
v4 = Strbuf_Init(255, HEAP_ID_102);
|
|
v5 = Strbuf_Init(255, HEAP_ID_102);
|
|
v6 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 99);
|
|
|
|
Strbuf_FormatInt(v5, (v0 + 1), 2, 1, 1);
|
|
Strbuf_CopyChars(v4, param1->unk_8B4.unk_1D58[v0]->unk_00.unk_00);
|
|
ov62_022349A8(param1, v4);
|
|
|
|
v7 = Font_CalcStrbufWidth(FONT_SYSTEM, v5, 0);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v5, 16 - v7, 4 + (v0 * 24), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v6, 16, 4 + (v0 * 24), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v4, 22, 4 + (v0 * 24), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Strbuf_Free(v4);
|
|
Strbuf_Free(v5);
|
|
Strbuf_Free(v6);
|
|
}
|
|
}
|
|
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
}
|
|
|
|
void ov62_02232778(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1, MessageLoader *param2, const UnkStruct_ov62_02248CDC *param3, int param4, int param5, Strbuf *param6)
|
|
{
|
|
int v0;
|
|
Window *v1;
|
|
Strbuf *v2;
|
|
Strbuf *v3;
|
|
Strbuf *v4;
|
|
Strbuf *v5;
|
|
Strbuf *v6;
|
|
StringTemplate *v7;
|
|
int v8 = 0;
|
|
u64 v9 = 0;
|
|
int v10[30] = { 0 };
|
|
Strbuf *v11;
|
|
|
|
v1 = ¶m0->unk_18;
|
|
|
|
param0->unk_04 = param3->unk_04;
|
|
param0->unk_00 = 0;
|
|
|
|
param0->unk_0C = 0;
|
|
param0->unk_10 = param3->unk_24;
|
|
param0->unk_28 = param3;
|
|
if (param2) {
|
|
param0->unk_34 = param2;
|
|
} else {
|
|
param0->unk_34 = param1->unk_14.unk_34;
|
|
}
|
|
|
|
param0->unk_14 = (param0->unk_04 / param0->unk_10) + 1;
|
|
if (param0->unk_04 < param0->unk_10) {
|
|
param0->unk_10 = param0->unk_04;
|
|
param0->unk_38.unk_08 = param0->unk_10 - 1;
|
|
param0->unk_38.unk_0C = param0->unk_10 - 1;
|
|
}
|
|
|
|
param0->unk_38.unk_08 = param0->unk_10 / 2;
|
|
param0->unk_38.unk_0C = param0->unk_10 / 2;
|
|
|
|
Window_Init(v1);
|
|
Window_Add(param1->unk_14.unk_10, v1, param3->unk_20, param3->unk_0C, param3->unk_10, param3->unk_14, param3->unk_18, 14, param3->unk_1C);
|
|
Window_FillTilemap(v1, 0x00);
|
|
|
|
v7 = ov62_02231690(102);
|
|
|
|
u64 v12 = param0->unk_28->unk_00[0].unk_08;
|
|
int v13[] = { 16, 12, 20 };
|
|
|
|
v9 = v12;
|
|
v10[0] = v8;
|
|
|
|
for (v0 = 1; v0 < v13[param5]; v0++) {
|
|
u64 v14 = param0->unk_28->unk_00[v0].unk_08;
|
|
|
|
if (v14 == v9) {
|
|
v10[v0] = v8;
|
|
} else {
|
|
v9 = v14;
|
|
v10[v0] = v0;
|
|
v8 = v0;
|
|
}
|
|
}
|
|
|
|
for (v0 = 0; v0 < param0->unk_10; v0++) {
|
|
v3 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 88 + param5);
|
|
|
|
v4 = Strbuf_Init(255, HEAP_ID_102);
|
|
v6 = Strbuf_Init(255, HEAP_ID_102);
|
|
v11 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
switch (param5) {
|
|
case 0:
|
|
int v15 = param0->unk_28->unk_00[v0].unk_04;
|
|
v5 = MessageLoader_GetNewStrbuf(param0->unk_34, v15);
|
|
StringTemplate_SetStrbuf(v7, 1, v5, 0, 1, 2);
|
|
break;
|
|
case 1:
|
|
int v16 = param0->unk_28->unk_00[v0].unk_04;
|
|
v5 = Strbuf_Init(255, HEAP_ID_102);
|
|
StringTemplate_SetMonthName(v7, 1, v16);
|
|
break;
|
|
case 2:
|
|
u16 v17[255];
|
|
int v18 = param0->unk_28->unk_00[v0].unk_04;
|
|
v5 = Strbuf_Init(255, HEAP_ID_102);
|
|
MessageLoader_GetSpeciesName(v18, 102, v17);
|
|
Strbuf_CopyChars(v5, v17);
|
|
StringTemplate_SetStrbuf(v7, 1, v5, 0, 1, 2);
|
|
break;
|
|
}
|
|
|
|
u64 v19 = param0->unk_28->unk_00[v0].unk_08;
|
|
|
|
Strbuf_FormatU64(v11, v19, ov62_0223438C(v19), 0, 1);
|
|
|
|
Strbuf_FormatInt(v4, v10[v0] + 1, 2, 1, 1);
|
|
StringTemplate_SetStrbuf(v7, 0, v4, 0, 1, 2);
|
|
StringTemplate_Format(v7, v6, v3);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v6, 0, v0 * (16 * param0->unk_28->unk_08), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
if (param0->unk_28->unk_08 == 2) {
|
|
if (param6) {
|
|
StringTemplate_SetStrbuf(v7, 2, v11, 0, 1, 2);
|
|
StringTemplate_Format(v7, v6, param6);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, v6, 16, (v0 * (16 * param0->unk_28->unk_08)) + 16, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
}
|
|
}
|
|
|
|
Strbuf_Free(v3);
|
|
Strbuf_Free(v4);
|
|
Strbuf_Free(v5);
|
|
Strbuf_Free(v6);
|
|
|
|
Strbuf_Free(v11);
|
|
|
|
StringTemplate_ClearArgs(v7);
|
|
}
|
|
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
StringTemplate_Free(v7);
|
|
}
|
|
|
|
void ov62_02232AAC(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1, const UnkStruct_ov62_02248CDC *param2, Strbuf *param3[20][2])
|
|
{
|
|
int v0;
|
|
Window *v1;
|
|
|
|
v1 = ¶m0->unk_18;
|
|
|
|
param0->unk_04 = param2->unk_04;
|
|
param0->unk_00 = 0;
|
|
param0->unk_0C = 0;
|
|
param0->unk_10 = param2->unk_24;
|
|
param0->unk_28 = param2;
|
|
param0->unk_34 = param1->unk_14.unk_34;
|
|
param0->unk_14 = (param0->unk_04 / param0->unk_10) + 1;
|
|
param0->unk_38.unk_08 = param0->unk_10 / 2;
|
|
param0->unk_38.unk_0C = param0->unk_10 / 2;
|
|
|
|
if (param0->unk_04 < param0->unk_10) {
|
|
param0->unk_10 = param0->unk_04;
|
|
param0->unk_38.unk_08 = param0->unk_10 - 1;
|
|
param0->unk_38.unk_0C = param0->unk_10 - 1;
|
|
}
|
|
|
|
param0->unk_48 = 1;
|
|
|
|
Window_Init(v1);
|
|
Window_Add(param1->unk_14.unk_10, v1, param2->unk_20, param2->unk_0C, param2->unk_10, param2->unk_14, param2->unk_18, 14, param2->unk_1C);
|
|
Window_FillTilemap(v1, 0x0);
|
|
|
|
for (v0 = 0; v0 < param0->unk_10; v0++) {
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, param3[v0][0], 0, ((param2->unk_08 * 8) * v0) + 4, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Text_AddPrinterWithParamsAndColor(v1, FONT_SYSTEM, param3[v0][1], 136, ((param2->unk_08 * 8) * v0) + 4, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
}
|
|
|
|
Window_ScheduleCopyToVRAM(v1);
|
|
}
|
|
|
|
int ov62_02232BB4(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1, Strbuf *param2[20][2])
|
|
{
|
|
int v0;
|
|
int v1 = 0;
|
|
Window *v2;
|
|
|
|
if (param0->unk_38.unk_00 == param0->unk_0C) {
|
|
return v1;
|
|
}
|
|
if (param0->unk_10 == param0->unk_04) {
|
|
return v1;
|
|
}
|
|
|
|
v2 = ¶m0->unk_18;
|
|
|
|
Window_FillTilemap(v2, 0x0);
|
|
{
|
|
int v3;
|
|
int v4 = 0;
|
|
int v5;
|
|
|
|
if (param0->unk_38.unk_04 >= param0->unk_38.unk_08) {
|
|
v4 = param0->unk_38.unk_00 - param0->unk_38.unk_08;
|
|
if (param0->unk_38.unk_00 >= (param0->unk_04 - (param0->unk_38.unk_08 + 1))) {
|
|
v4 = param0->unk_04 - param0->unk_10;
|
|
}
|
|
}
|
|
|
|
for (v3 = 0; v3 < param0->unk_10; v3++) {
|
|
if (param2[v4 + v3][0] == NULL) {
|
|
continue;
|
|
}
|
|
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, param2[v4 + v3][0], 0, ((param0->unk_28->unk_08 * 8) * v3) + 4, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, param2[v4 + v3][1], 136, ((param0->unk_28->unk_08 * 8) * v3) + 4, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
}
|
|
}
|
|
Window_CopyToVRAM(v2);
|
|
|
|
param0->unk_0C = param0->unk_38.unk_00;
|
|
|
|
return v1;
|
|
}
|
|
|
|
const int Unk_ov62_02248904[] = {
|
|
0x10,
|
|
0xC,
|
|
0x14
|
|
};
|
|
|
|
// clang-format off
|
|
asm int ov62_02232C78 (UnkStruct_ov62_02233310 * param0, UnkStruct_0208C06C * param1, int param2, int param3, Strbuf *param4)
|
|
{
|
|
push {r4, r5, r6, r7, lr}
|
|
sub sp, #0x1fc
|
|
sub sp, #0xe8
|
|
add r4, r0, #0
|
|
ldr r0, [sp, #0x2f8]
|
|
str r1, [sp, #0x10]
|
|
str r0, [sp, #0x2f8]
|
|
mov r0, #8
|
|
ldrsh r1, [r4, r0]
|
|
ldr r0, [r4, #0xc]
|
|
str r3, [sp, #0x14]
|
|
cmp r1, r0
|
|
bne _02232C9A
|
|
add sp, #0x1fc
|
|
add sp, #0xe8
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_02232C9A:
|
|
ldr r1, [r4, #0x10]
|
|
ldr r0, [r4, #4]
|
|
cmp r1, r0
|
|
bne _02232CAA
|
|
add sp, #0x1fc
|
|
add sp, #0xe8
|
|
mov r0, #0
|
|
pop {r4, r5, r6, r7, pc}
|
|
_02232CAA:
|
|
add r0, r4, #0
|
|
str r0, [sp, #0x58]
|
|
add r0, #0x18
|
|
str r0, [sp, #0x58]
|
|
mov r0, #0x66
|
|
bl ov62_02231690
|
|
add r5, r0, #0
|
|
ldr r0, [sp, #0x58]
|
|
mov r1, #0
|
|
bl Window_FillTilemap
|
|
mov r0, #0
|
|
str r0, [sp, #0x44]
|
|
str r0, [sp, #0x40]
|
|
mov r0, #8
|
|
ldrsh r0, [r4, r0]
|
|
ldr r1, [r4, #0x10]
|
|
add r3, sp, #0x26c
|
|
str r0, [sp, #0x18]
|
|
add r0, r0, r1
|
|
str r0, [sp, #0x34]
|
|
ldr r0, [sp, #0x44]
|
|
mov r2, #7
|
|
add r1, r0, #0
|
|
_02232CDC:
|
|
stmia r3 !, {r0, r1}
|
|
stmia r3 !, {r0, r1}
|
|
sub r2, r2, #1
|
|
bne _02232CDC
|
|
stmia r3 !, {r0, r1}
|
|
ldr r1, [r4, #4]
|
|
ldr r0, [sp, #0x34]
|
|
cmp r0, r1
|
|
blt _02232CF6
|
|
ldr r0, [r4, #0x10]
|
|
str r1, [sp, #0x34]
|
|
sub r0, r1, r0
|
|
str r0, [sp, #0x18]
|
|
_02232CF6:
|
|
ldr r3, = Unk_ov62_02248904
|
|
add r2, sp, #0x60
|
|
ldmia r3 !, {r0, r1}
|
|
add r7, r2, #0
|
|
stmia r2 !, {r0, r1}
|
|
ldr r0, [r3, #0]
|
|
mov r6, #1
|
|
str r0, [r2, #0]
|
|
ldr r0, [r4, #0x28]
|
|
ldr r1, [r0, #0]
|
|
ldr r0, [r1, #8]
|
|
str r0, [sp, #0x38]
|
|
ldr r0, [r1, #0xc]
|
|
str r0, [sp, #0x3c]
|
|
mov r0, #0
|
|
str r0, [sp, #0x26c]
|
|
ldr r0, [sp, #0x14]
|
|
lsl r0, r0, #2
|
|
ldr r1, [r7, r0]
|
|
cmp r1, #1
|
|
ble _02232D5C
|
|
add r0, r1, #0
|
|
mov r2, #0x10
|
|
add r3, sp, #0x270
|
|
mov ip, r0
|
|
_02232D28:
|
|
ldr r0, [r4, #0x28]
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, r2
|
|
ldr r1, [r0, #0xc]
|
|
ldr r7, [r0, #8]
|
|
ldr r0, [sp, #0x3c]
|
|
str r1, [sp, #0x5c]
|
|
eor r1, r0
|
|
ldr r0, [sp, #0x38]
|
|
eor r0, r7
|
|
orr r0, r1
|
|
bne _02232D46
|
|
ldr r0, [sp, #0x40]
|
|
str r0, [r3, #0]
|
|
b _02232D50
|
|
_02232D46:
|
|
ldr r0, [sp, #0x5c]
|
|
str r7, [sp, #0x38]
|
|
str r0, [sp, #0x3c]
|
|
str r6, [r3, #0]
|
|
str r6, [sp, #0x40]
|
|
_02232D50:
|
|
add r6, r6, #1
|
|
mov r0, ip
|
|
add r2, #0x10
|
|
add r3, r3, #4
|
|
cmp r6, r0
|
|
blt _02232D28
|
|
_02232D5C:
|
|
ldr r1, [sp, #0x18]
|
|
ldr r0, [sp, #0x34]
|
|
cmp r1, r0
|
|
blt _02232D66
|
|
b _02232F46
|
|
_02232D66:
|
|
add r0, r1, #0
|
|
lsl r6, r0, #4
|
|
add r1, sp, #0x26c
|
|
lsl r0, r0, #2
|
|
add r0, r1, r0
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #0x14]
|
|
str r0, [sp, #0x1c]
|
|
add r0, #0x58
|
|
str r0, [sp, #0x1c]
|
|
_02232D7A:
|
|
ldr r0, [sp, #0x10]
|
|
ldr r1, [sp, #0x1c]
|
|
ldr r0, [r0, #0x48]
|
|
bl MessageLoader_GetNewStrbuf
|
|
str r0, [sp, #0x54]
|
|
mov r0, #0xff
|
|
mov r1, #0x66
|
|
bl Strbuf_Init
|
|
str r0, [sp, #0x50]
|
|
mov r0, #0xff
|
|
mov r1, #0x66
|
|
bl Strbuf_Init
|
|
add r7, r0, #0
|
|
mov r0, #0xff
|
|
mov r1, #0x66
|
|
bl Strbuf_Init
|
|
str r0, [sp, #0x48]
|
|
ldr r0, [sp, #0x14]
|
|
cmp r0, #0
|
|
beq _02232DB4
|
|
cmp r0, #1
|
|
beq _02232DDA
|
|
cmp r0, #2
|
|
beq _02232DFA
|
|
b _02232E34
|
|
_02232DB4:
|
|
ldr r1, [r4, #0x28]
|
|
ldr r0, [r4, #0x34]
|
|
ldr r1, [r1, #0]
|
|
add r1, r1, r6
|
|
ldr r1, [r1, #4]
|
|
bl MessageLoader_GetNewStrbuf
|
|
str r0, [sp, #0x4c]
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x4c]
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
mov r3, #0
|
|
bl StringTemplate_SetStrbuf
|
|
b _02232E34
|
|
_02232DDA:
|
|
ldr r0, [r4, #0x28]
|
|
mov r1, #0x66
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, r6
|
|
ldr r0, [r0, #4]
|
|
str r0, [sp, #0x30]
|
|
mov r0, #0xff
|
|
bl Strbuf_Init
|
|
str r0, [sp, #0x4c]
|
|
ldr r2, [sp, #0x30]
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
bl StringTemplate_SetMonthName
|
|
b _02232E34
|
|
_02232DFA:
|
|
ldr r0, [r4, #0x28]
|
|
mov r1, #0x66
|
|
ldr r0, [r0, #0]
|
|
add r0, r0, r6
|
|
ldr r0, [r0, #4]
|
|
str r0, [sp, #0x2c]
|
|
mov r0, #0xff
|
|
bl Strbuf_Init
|
|
str r0, [sp, #0x4c]
|
|
ldr r0, [sp, #0x2c]
|
|
mov r1, #0x66
|
|
add r2, sp, #0x6c
|
|
bl MessageLoader_GetSpeciesName
|
|
ldr r0, [sp, #0x4c]
|
|
add r1, sp, #0x6c
|
|
bl Strbuf_CopyChars
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x4c]
|
|
add r0, r5, #0
|
|
mov r1, #1
|
|
mov r3, #0
|
|
bl StringTemplate_SetStrbuf
|
|
_02232E34:
|
|
ldr r0, [r4, #0x28]
|
|
ldr r0, [r0, #0]
|
|
add r1, r0, r6
|
|
ldr r0, [r1, #8]
|
|
str r0, [sp, #0x24]
|
|
ldr r0, [r1, #0xc]
|
|
str r0, [sp, #0x28]
|
|
ldr r0, [sp, #0x24]
|
|
ldr r1, [sp, #0x28]
|
|
bl ov62_0223438C
|
|
add r3, r0, #0
|
|
mov r0, #0
|
|
str r0, [sp]
|
|
mov r0, #1
|
|
str r0, [sp, #4]
|
|
ldr r0, [sp, #0x48]
|
|
ldr r1, [sp, #0x24]
|
|
ldr r2, [sp, #0x28]
|
|
bl Strbuf_FormatU64
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
ldr r1, [sp, #0x20]
|
|
ldr r0, [sp, #0x50]
|
|
ldr r1, [r1, #0]
|
|
mov r2, #2
|
|
add r1, r1, #1
|
|
mov r3, #1
|
|
bl Strbuf_FormatInt
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
mov r1, #0
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x50]
|
|
add r0, r5, #0
|
|
add r3, r1, #0
|
|
bl StringTemplate_SetStrbuf
|
|
ldr r2, [sp, #0x54]
|
|
add r0, r5, #0
|
|
add r1, r7, #0
|
|
bl StringTemplate_Format
|
|
ldr r0, [r4, #0x28]
|
|
add r2, r7, #0
|
|
ldr r0, [r0, #8]
|
|
lsl r1, r0, #4
|
|
ldr r0, [sp, #0x44]
|
|
mul r1, r0
|
|
str r1, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, = 0xF0D00
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x58]
|
|
add r3, r1, #0
|
|
bl Text_AddPrinterWithParamsAndColor
|
|
ldr r0, [r4, #0x28]
|
|
ldr r0, [r0, #8]
|
|
cmp r0, #2
|
|
bne _02232F06
|
|
ldr r0, [sp, #0x2f8]
|
|
cmp r0, #0
|
|
beq _02232F06
|
|
mov r0, #1
|
|
str r0, [sp]
|
|
mov r0, #2
|
|
str r0, [sp, #4]
|
|
ldr r2, [sp, #0x48]
|
|
add r0, r5, #0
|
|
mov r1, #2
|
|
mov r3, #0
|
|
bl StringTemplate_SetStrbuf
|
|
ldr r2, [sp, #0x2f8]
|
|
add r0, r5, #0
|
|
add r1, r7, #0
|
|
bl StringTemplate_Format
|
|
ldr r0, [r4, #0x28]
|
|
add r2, r7, #0
|
|
ldr r0, [r0, #8]
|
|
mov r3, #0x10
|
|
lsl r1, r0, #4
|
|
ldr r0, [sp, #0x44]
|
|
mul r1, r0
|
|
add r1, #0x10
|
|
str r1, [sp]
|
|
mov r0, #0xff
|
|
str r0, [sp, #4]
|
|
ldr r0, = 0xF0D00
|
|
mov r1, #0
|
|
str r0, [sp, #8]
|
|
mov r0, #0
|
|
str r0, [sp, #0xc]
|
|
ldr r0, [sp, #0x58]
|
|
bl Text_AddPrinterWithParamsAndColor
|
|
_02232F06:
|
|
ldr r0, [sp, #0x44]
|
|
add r0, r0, #1
|
|
str r0, [sp, #0x44]
|
|
ldr r0, [sp, #0x54]
|
|
bl Strbuf_Free
|
|
ldr r0, [sp, #0x50]
|
|
bl Strbuf_Free
|
|
ldr r0, [sp, #0x4c]
|
|
bl Strbuf_Free
|
|
add r0, r7, #0
|
|
bl Strbuf_Free
|
|
ldr r0, [sp, #0x48]
|
|
bl Strbuf_Free
|
|
add r0, r5, #0
|
|
bl StringTemplate_ClearArgs
|
|
ldr r0, [sp, #0x20]
|
|
add r6, #0x10
|
|
add r0, r0, #4
|
|
str r0, [sp, #0x20]
|
|
ldr r0, [sp, #0x18]
|
|
add r1, r0, #1
|
|
ldr r0, [sp, #0x34]
|
|
str r1, [sp, #0x18]
|
|
cmp r1, r0
|
|
bge _02232F46
|
|
b _02232D7A
|
|
_02232F46:
|
|
ldr r0, [sp, #0x58]
|
|
bl Window_ScheduleCopyToVRAM
|
|
add r0, r5, #0
|
|
bl StringTemplate_Free
|
|
mov r0, #8
|
|
ldrsh r0, [r4, r0]
|
|
str r0, [r4, #0xc]
|
|
mov r0, #0
|
|
add sp, #0x1fc
|
|
add sp, #0xe8
|
|
pop {r4, r5, r6, r7, pc}
|
|
}
|
|
// clang-format on
|
|
|
|
int ov62_02232F68(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
int v1 = 0;
|
|
Window *v2;
|
|
Strbuf *v3;
|
|
|
|
if (param0->unk_28->unk_28 != NULL) {
|
|
for (v0 = 0; v0 < param0->unk_10; v0++) {
|
|
if (TouchScreen_LocationPressed(¶m0->unk_28->unk_28[v0])) {
|
|
ov62_02234520(param1);
|
|
v1 = param0->unk_28->unk_00[param0->unk_08 + v0].unk_04;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (param0->unk_08 == param0->unk_0C) {
|
|
return v1;
|
|
}
|
|
|
|
if (param0->unk_10 == param0->unk_04) {
|
|
return v1;
|
|
}
|
|
|
|
v2 = ¶m0->unk_18;
|
|
|
|
Window_FillTilemap(v2, 0x0);
|
|
|
|
{
|
|
int v4 = 0;
|
|
int v5 = param0->unk_08;
|
|
int v6 = v5 + param0->unk_10;
|
|
|
|
if (v6 >= param0->unk_04) {
|
|
v5 = param0->unk_04 - param0->unk_10;
|
|
v6 = param0->unk_04;
|
|
}
|
|
|
|
for (v0 = v5; v0 < v6; v0++) {
|
|
v3 = MessageLoader_GetNewStrbuf(param0->unk_34, param0->unk_28->unk_00[v0].unk_00);
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, v3, 0, (param0->unk_28->unk_08 * 16) * v4, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Strbuf_Free(v3);
|
|
v4++;
|
|
}
|
|
}
|
|
|
|
Window_CopyToVRAM(v2);
|
|
param0->unk_0C = param0->unk_08;
|
|
|
|
return v1;
|
|
}
|
|
|
|
int ov62_02233064(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
int v1 = 0;
|
|
Window *v2;
|
|
Strbuf *v3;
|
|
|
|
if (param0->unk_38.unk_00 == param0->unk_0C) {
|
|
return v1;
|
|
}
|
|
|
|
if (param0->unk_10 == param0->unk_04) {
|
|
return v1;
|
|
}
|
|
|
|
v2 = ¶m0->unk_18;
|
|
Window_FillTilemap(v2, 0x0);
|
|
|
|
{
|
|
int v4;
|
|
int v5 = 0;
|
|
int v6;
|
|
Strbuf *v7;
|
|
Strbuf *v8;
|
|
Strbuf *v9;
|
|
int v10;
|
|
int v11;
|
|
|
|
if (param0->unk_38.unk_04 >= param0->unk_38.unk_08) {
|
|
v5 = param0->unk_38.unk_00 - param0->unk_38.unk_08;
|
|
|
|
if (param0->unk_38.unk_00 >= (param0->unk_04 - (param0->unk_38.unk_08 + 1))) {
|
|
v5 = param0->unk_04 - param0->unk_10;
|
|
}
|
|
}
|
|
|
|
for (v4 = 0; v4 < param0->unk_10; v4++) {
|
|
v7 = Strbuf_Init(255, HEAP_ID_102);
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
v9 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 99);
|
|
|
|
Strbuf_FormatInt(v8, (v5 + v4 + 1), 2, 1, 1);
|
|
Strbuf_CopyChars(v7, param1->unk_8B4.unk_1D58[v5 + v4]->unk_00.unk_00);
|
|
ov62_022349A8(param1, v7);
|
|
|
|
v10 = Font_CalcStrbufWidth(FONT_SYSTEM, v8, 0);
|
|
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, v8, 16 - v10, 4 + (v4 * 24), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, v9, 16, 4 + (v4 * 24), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, v7, 22, 4 + (v4 * 24), TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Strbuf_Free(v7);
|
|
Strbuf_Free(v8);
|
|
Strbuf_Free(v9);
|
|
}
|
|
}
|
|
|
|
Window_CopyToVRAM(v2);
|
|
param0->unk_0C = param0->unk_38.unk_00;
|
|
|
|
return v1;
|
|
}
|
|
|
|
void ov62_022331C8(UnkStruct_ov62_02233310 *param0, s16 param1)
|
|
{
|
|
s16 v0 = 0;
|
|
int v1 = 0xFF;
|
|
|
|
if (param1 < 0) {
|
|
if (param0->unk_38.unk_00 > 0) {
|
|
param0->unk_38.unk_00--;
|
|
v1 = 0;
|
|
Sound_PlayEffect(1370);
|
|
}
|
|
} else if (param1 > 0) {
|
|
if (param0->unk_38.unk_00 < param0->unk_04 - 1) {
|
|
param0->unk_38.unk_00++;
|
|
v1 = 1;
|
|
Sound_PlayEffect(1370);
|
|
}
|
|
}
|
|
|
|
switch (v1) {
|
|
case 0:
|
|
if (param0->unk_38.unk_00 < param0->unk_38.unk_0C) {
|
|
v0 = param0->unk_38.unk_00;
|
|
} else if (param0->unk_38.unk_00 >= (param0->unk_04 - param0->unk_38.unk_0C)) {
|
|
v0 = param0->unk_38.unk_0C + 1;
|
|
|
|
if (param0->unk_38.unk_00 >= (param0->unk_04 - param0->unk_38.unk_0C)) {
|
|
v0 += (param0->unk_38.unk_00 - (param0->unk_04 - param0->unk_38.unk_0C));
|
|
}
|
|
} else {
|
|
v0 = param0->unk_38.unk_0C;
|
|
|
|
if (param0->unk_38.unk_00 <= param0->unk_38.unk_0C) {
|
|
v0 += (param0->unk_38.unk_00 - param0->unk_38.unk_0C);
|
|
}
|
|
}
|
|
break;
|
|
case 1:
|
|
if (param0->unk_38.unk_00 <= param0->unk_38.unk_08) {
|
|
v0 = param0->unk_38.unk_00;
|
|
} else {
|
|
v0 = param0->unk_38.unk_08;
|
|
if (param0->unk_38.unk_00 >= (param0->unk_04 - param0->unk_38.unk_08)) {
|
|
v0 += (param0->unk_38.unk_00 - (param0->unk_04 - param0->unk_38.unk_08 - 1));
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
|
|
if (v0 < 0) {
|
|
GF_ASSERT(0);
|
|
}
|
|
|
|
if (v1 != 0xFF) {
|
|
param0->unk_38.unk_04 = v0;
|
|
}
|
|
|
|
{
|
|
s16 v2 = 0;
|
|
|
|
if (param0->unk_38.unk_04 >= param0->unk_38.unk_08) {
|
|
v2 = param0->unk_38.unk_00 - param0->unk_38.unk_08;
|
|
|
|
if (param0->unk_38.unk_00 >= (param0->unk_04 - (param0->unk_38.unk_08 + 1))) {
|
|
v2 = param0->unk_04 - param0->unk_10;
|
|
}
|
|
}
|
|
|
|
param0->unk_08 = v2;
|
|
ov62_0223349C(param0);
|
|
}
|
|
}
|
|
|
|
void ov62_022332AC(UnkStruct_ov62_02233310 *param0, s16 param1)
|
|
{
|
|
s16 v0 = param0->unk_08;
|
|
|
|
param0->unk_08 += param1;
|
|
|
|
if (param0->unk_08 < 0) {
|
|
param0->unk_08 = 0;
|
|
}
|
|
|
|
if (param0->unk_10 == param0->unk_04) {
|
|
param0->unk_08 = 0;
|
|
}
|
|
|
|
if (param0->unk_08 + param0->unk_10 > param0->unk_04) {
|
|
param0->unk_08 = param0->unk_04 - param0->unk_10;
|
|
}
|
|
|
|
if (v0 != param0->unk_08) {
|
|
Sound_PlayEffect(1370);
|
|
}
|
|
|
|
ov62_02233454(param0);
|
|
}
|
|
|
|
void ov62_022332FC(UnkStruct_ov62_02233310 *param0)
|
|
{
|
|
Window_ClearAndCopyToVRAM(¶m0->unk_18);
|
|
Window_Remove(¶m0->unk_18);
|
|
}
|
|
|
|
void ov62_02233310(UnkStruct_ov62_02233310 *param0)
|
|
{
|
|
memset(param0, 0, sizeof(UnkStruct_ov62_02233310));
|
|
}
|
|
|
|
void ov62_0223331C(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1, int param2)
|
|
{
|
|
ManagedSprite *v0;
|
|
SpriteTemplate v1;
|
|
NARC *v2 = param1->unk_14.unk_00;
|
|
BgConfig *v3 = param1->unk_14.unk_10;
|
|
SpriteSystem *v4 = param1->unk_14.unk_04;
|
|
SpriteManager *v5 = param1->unk_14.unk_08;
|
|
PaletteData *v6 = param1->unk_14.unk_14;
|
|
|
|
SpriteSystem_LoadCharResObjFromOpenNarc(v4, v5, v2, 127, FALSE, param2, 200000);
|
|
SpriteSystem_LoadCellResObjFromOpenNarc(v4, v5, v2, 126, FALSE, 200000);
|
|
SpriteSystem_LoadAnimResObjFromOpenNarc(v4, v5, v2, 125, FALSE, 200000);
|
|
|
|
v1.x = 128;
|
|
v1.y = 96;
|
|
v1.z = 0;
|
|
v1.animIdx = 0;
|
|
v1.priority = 1;
|
|
v1.plttIdx = 0;
|
|
v1.vramType = param2;
|
|
v1.bgPriority = 1;
|
|
v1.vramTransfer = FALSE;
|
|
v1.resources[4] = SPRITE_RESOURCE_NONE;
|
|
v1.resources[5] = SPRITE_RESOURCE_NONE;
|
|
v1.resources[0] = 200000;
|
|
v1.resources[2] = 200000;
|
|
v1.resources[3] = 200000;
|
|
|
|
if (param2 == NNS_G2D_VRAM_TYPE_2DMAIN) {
|
|
v1.resources[1] = 9999;
|
|
} else {
|
|
v1.resources[1] = 10000;
|
|
}
|
|
|
|
param0->unk_2C[0] = SpriteSystem_NewSprite(param1->unk_14.unk_04, param1->unk_14.unk_08, &v1);
|
|
param0->unk_2C[1] = SpriteSystem_NewSprite(param1->unk_14.unk_04, param1->unk_14.unk_08, &v1);
|
|
|
|
ManagedSprite_SetExplicitPalette(param0->unk_2C[0], 2);
|
|
ManagedSprite_SetExplicitPalette(param0->unk_2C[1], 2);
|
|
ManagedSprite_SetAnim(param0->unk_2C[0], 0);
|
|
ManagedSprite_SetAnim(param0->unk_2C[1], 0);
|
|
ManagedSprite_TickFrame(param0->unk_2C[0]);
|
|
ManagedSprite_TickFrame(param0->unk_2C[1]);
|
|
ManagedSprite_SetFlipMode(param0->unk_2C[1], 2);
|
|
|
|
if (param2 == 1) {
|
|
ManagedSprite_SetPositionXY(param0->unk_2C[0], 256 / 2, 24);
|
|
ManagedSprite_SetPositionXY(param0->unk_2C[1], 256 / 2, 120);
|
|
} else {
|
|
ManagedSprite_SetPositionXY(param0->unk_2C[0], 256 / 2, 24 + 64);
|
|
ManagedSprite_SetPositionXY(param0->unk_2C[1], 256 / 2, 120 + 64);
|
|
}
|
|
|
|
ov62_02233454(param0);
|
|
}
|
|
|
|
void ov62_02233434(UnkStruct_ov62_02233310 *param0, s16 param1, s16 param2)
|
|
{
|
|
ManagedSprite_SetPositionXY(param0->unk_2C[0], 256 / 2, param1);
|
|
ManagedSprite_SetPositionXY(param0->unk_2C[1], 256 / 2, param2);
|
|
}
|
|
|
|
void ov62_02233454(UnkStruct_ov62_02233310 *param0)
|
|
{
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[0], 1);
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[1], 1);
|
|
|
|
if (param0->unk_08 == 0) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[0], 0);
|
|
}
|
|
|
|
if (param0->unk_08 + param0->unk_10 >= param0->unk_04) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[1], 0);
|
|
}
|
|
|
|
ManagedSprite_TickTwoFrames(param0->unk_2C[0]);
|
|
ManagedSprite_TickTwoFrames(param0->unk_2C[1]);
|
|
}
|
|
|
|
void ov62_0223349C(UnkStruct_ov62_02233310 *param0)
|
|
{
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[0], 1);
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[1], 1);
|
|
|
|
if (param0->unk_08 == 0) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[0], 0);
|
|
}
|
|
|
|
if (param0->unk_08 + param0->unk_10 >= param0->unk_04) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[1], 0);
|
|
}
|
|
|
|
if (param0->unk_10 >= param0->unk_04) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[0], 0);
|
|
ManagedSprite_SetDrawFlag(param0->unk_2C[1], 0);
|
|
}
|
|
|
|
ManagedSprite_TickTwoFrames(param0->unk_2C[0]);
|
|
ManagedSprite_TickTwoFrames(param0->unk_2C[1]);
|
|
}
|
|
|
|
void ov62_022334FC(UnkStruct_ov62_02233310 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
SpriteManager_UnloadCharObjById(param1->unk_14.unk_08, 200000);
|
|
SpriteManager_UnloadCellObjById(param1->unk_14.unk_08, 200000);
|
|
SpriteManager_UnloadAnimObjById(param1->unk_14.unk_08, 200000);
|
|
Sprite_DeleteAndFreeResources(param0->unk_2C[0]);
|
|
Sprite_DeleteAndFreeResources(param0->unk_2C[1]);
|
|
}
|
|
|
|
static ManagedSprite *ov62_0223352C(UnkStruct_ov62_0223359C *param0, UnkStruct_0208C06C *param1, int param2, int param3)
|
|
{
|
|
ManagedSprite *v0;
|
|
SpriteTemplate v1;
|
|
|
|
v1.x = 128;
|
|
v1.y = 96;
|
|
v1.z = 0;
|
|
v1.animIdx = 0;
|
|
v1.priority = 1;
|
|
v1.plttIdx = 0;
|
|
v1.vramType = param2;
|
|
v1.bgPriority = 1;
|
|
v1.vramTransfer = FALSE;
|
|
v1.resources[4] = SPRITE_RESOURCE_NONE;
|
|
v1.resources[5] = SPRITE_RESOURCE_NONE;
|
|
v1.resources[0] = 11924;
|
|
v1.resources[2] = 11924;
|
|
v1.resources[3] = 11924;
|
|
|
|
if (param2 == NNS_G2D_VRAM_TYPE_2DMAIN) {
|
|
v1.resources[1] = 9999;
|
|
} else {
|
|
v1.resources[1] = 10000;
|
|
}
|
|
|
|
v0 = SpriteSystem_NewSprite(param1->unk_14.unk_04, param1->unk_14.unk_08, &v1);
|
|
ManagedSprite_SetExplicitPalette(v0, 2);
|
|
ManagedSprite_SetAnim(v0, param3);
|
|
ManagedSprite_TickFrame(v0);
|
|
|
|
return v0;
|
|
}
|
|
|
|
static void ov62_0223359C(UnkStruct_ov62_0223359C *param0)
|
|
{
|
|
Sprite_DeleteAndFreeResources(param0->unk_18[0]);
|
|
Sprite_DeleteAndFreeResources(param0->unk_18[1]);
|
|
}
|
|
|
|
void ov62_022335B0(UnkStruct_ov62_0223359C *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
ov62_022335BC(param0, param1, 5);
|
|
}
|
|
|
|
void ov62_022335BC(UnkStruct_ov62_0223359C *param0, UnkStruct_0208C06C *param1, int param2)
|
|
{
|
|
param0->unk_18[0] = ov62_0223352C(param0, param1, 2, param2);
|
|
param0->unk_18[1] = ov62_0223352C(param0, param1, 2, param2);
|
|
|
|
ManagedSprite_SetPositionXY(param0->unk_18[0], 0 + 24, 72 + 64);
|
|
ManagedSprite_SetPositionXY(param0->unk_18[1], 256 - 24, 72 + 64);
|
|
}
|
|
|
|
void ov62_022335F4(UnkStruct_ov62_0223359C *param0)
|
|
{
|
|
memset(param0, 0, sizeof(UnkStruct_ov62_0223359C));
|
|
}
|
|
|
|
void ov62_02233600(UnkStruct_ov62_0223359C *param0)
|
|
{
|
|
ov62_0223359C(param0);
|
|
}
|
|
|
|
void ov62_02233608(UnkStruct_ov62_0223359C *param0, u32 param1)
|
|
{
|
|
s32 v0 = param1 - param0->unk_0C;
|
|
|
|
if ((v0 * v0) >= (16 * 16)) {
|
|
if (v0 < 0) {
|
|
param0->unk_10 = -1;
|
|
} else {
|
|
param0->unk_10 = +1;
|
|
}
|
|
param0->unk_0C = param1;
|
|
} else {
|
|
param0->unk_10 = 0;
|
|
}
|
|
}
|
|
|
|
static const TouchScreenHitTable Unk_ov62_022488F0[] = {
|
|
{ 0x8, 0x80, 0x8, 0x20 },
|
|
{ 0x8, 0x80, 0xE0, 0xF8 }
|
|
};
|
|
|
|
void ov62_02233638(UnkStruct_ov62_0223359C *param0, UnkStruct_ov62_02233310 *param1)
|
|
{
|
|
if (param1->unk_48) {
|
|
if (param1->unk_04 < 2) {
|
|
param0->unk_14 = 0;
|
|
} else {
|
|
param0->unk_14 = 1;
|
|
}
|
|
} else {
|
|
if (param1->unk_10 >= param1->unk_04) {
|
|
param0->unk_14 = 0;
|
|
} else {
|
|
param0->unk_14 = 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
void ov62_02233664(UnkStruct_ov62_0223359C *param0)
|
|
{
|
|
u32 v0, v1;
|
|
s16 v2;
|
|
BOOL v3;
|
|
BOOL v4 = 0;
|
|
|
|
v3 = TouchScreen_GetHoldState(&v0, &v1);
|
|
|
|
if (param0->unk_14) {
|
|
ManagedSprite_TickTwoFrames(param0->unk_18[0]);
|
|
ManagedSprite_TickTwoFrames(param0->unk_18[1]);
|
|
}
|
|
|
|
if ((param0->unk_04 == 0) && (v3 == 0)) {
|
|
param0->unk_04 = 0;
|
|
param0->unk_00 = 0;
|
|
param0->unk_08 = 0;
|
|
param0->unk_0C = 0;
|
|
param0->unk_10 = 0;
|
|
return;
|
|
}
|
|
|
|
if (TouchScreen_LocationHeld(&Unk_ov62_022488F0[0])
|
|
|| TouchScreen_LocationHeld(&Unk_ov62_022488F0[1])) {
|
|
v4 = 1;
|
|
}
|
|
|
|
if (v4) {
|
|
if (!param0->unk_04) {
|
|
param0->unk_04 = 1;
|
|
param0->unk_08 = v0;
|
|
param0->unk_0C = v1;
|
|
param0->unk_00 = 2;
|
|
} else {
|
|
param0->unk_00--;
|
|
ov62_02233608(param0, v1);
|
|
}
|
|
} else {
|
|
if (param0->unk_04) {
|
|
param0->unk_04 = 0;
|
|
param0->unk_00 = 0;
|
|
param0->unk_08 = 0;
|
|
param0->unk_0C = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
void ov62_02233704(UnkStruct_0208C06C *param0, u32 param1)
|
|
{
|
|
GameRecords *v0;
|
|
|
|
v0 = SaveData_GetGameRecordsPtr(param0->unk_830);
|
|
GameRecords_IncrementTrainerScore(v0, param1);
|
|
}
|
|
|
|
void ov62_0223371C(UnkStruct_0208C06C *param0)
|
|
{
|
|
int v0;
|
|
|
|
sub_0202F1F8(param0->unk_830, 119, &v0);
|
|
|
|
{
|
|
UnkStruct_02030A80 *v1 = (UnkStruct_02030A80 *)(¶m0->unk_8B4.unk_00->unk_00);
|
|
UnkStruct_0202F41C *v2 = (UnkStruct_0202F41C *)(¶m0->unk_8B4.unk_00->unk_80);
|
|
UnkStruct_0202F298 *v3 = (UnkStruct_0202F298 *)(¶m0->unk_8B4.unk_00->unk_E4);
|
|
sub_0202FE20(v1, v2, v3, NULL, param0->unk_830);
|
|
}
|
|
}
|
|
|
|
static void ov62_02233750(SysTask *param0, void *param1)
|
|
{
|
|
UnkStruct_ov62_02233750 *v0 = param1;
|
|
|
|
ov62_0222F824(v0->unk_00);
|
|
sub_02039720();
|
|
v0->unk_04 = 1;
|
|
SysTask_Done(param0);
|
|
}
|
|
|
|
void ov62_0223376C(UnkStruct_0208C06C *param0, int param1)
|
|
{
|
|
param0->unk_52C.unk_00 = param1;
|
|
param0->unk_52C.unk_04 = 0;
|
|
|
|
SysTask_ExecuteOnVBlank(ov62_02233750, ¶m0->unk_52C, 4);
|
|
}
|
|
|
|
BOOL ov62_02233790(UnkStruct_0208C06C *param0)
|
|
{
|
|
return param0->unk_52C.unk_04;
|
|
}
|
|
|
|
static void ov62_02233798(SysTask *param0, void *param1)
|
|
{
|
|
UnkStruct_0208C06C *v0 = param1;
|
|
|
|
if (v0->unk_14.unk_08 == NULL) {
|
|
return;
|
|
}
|
|
|
|
if (ov62_02234534(v0) == 1) {
|
|
return;
|
|
}
|
|
|
|
if (v0->unk_14.unk_510 == 1) {
|
|
return;
|
|
}
|
|
|
|
v0->unk_14.unk_510 = 1;
|
|
|
|
sub_02008A94(v0->unk_14.unk_50);
|
|
SpriteSystem_DrawSprites(v0->unk_14.unk_08);
|
|
SpriteSystem_TransferOam();
|
|
|
|
v0->unk_14.unk_510 = 0;
|
|
}
|
|
|
|
void ov62_022337D4(UnkStruct_0208C06C *param0)
|
|
{
|
|
param0->unk_41E8 = SysTask_ExecuteOnVBlank(ov62_02233798, param0, 5);
|
|
}
|
|
|
|
BOOL ov62_022337F0(UnkStruct_0208C06C *param0, int param1, u8 param2)
|
|
{
|
|
int v0;
|
|
|
|
v0 = ov62_02248598(param0->unk_830, param1, param2, ¶m0->unk_834, ¶m0->unk_836);
|
|
|
|
if ((v0 == 0) || (v0 == 1)) {
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
void ov62_0223381C(UnkStruct_0208C06C *param0, BOOL param1)
|
|
{
|
|
param0->unk_874 = param1;
|
|
}
|
|
|
|
void ov62_02233828(void *param0, const UnkStruct_ov62_0223CAA4 *param1)
|
|
{
|
|
UnkStruct_0208C06C *v0 = param0;
|
|
UnkStruct_ov62_02233828 *v1 = &v0->unk_8B4;
|
|
|
|
if (param1->unk_00 == 1) {
|
|
(void)0;
|
|
} else {
|
|
v1->unk_3900 = ov61_0222BE20(ov62_0224112C(v0), v1->unk_1D58, 30);
|
|
|
|
{
|
|
int v2;
|
|
|
|
for (v2 = 0; v2 < v1->unk_3900; v2++) {
|
|
GF_ASSERT(v0->unk_8B4.unk_1D58[v2] != NULL);
|
|
MI_CpuCopy8(v0->unk_8B4.unk_1D58[v2], &v0->unk_8B4.unk_1DD0[v2], sizeof(UnkStruct_ov61_0222BE20));
|
|
v0->unk_8B4.unk_3904[v2] = v0->unk_8B4.unk_1D58[v2]->unk_80.unk_27;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void ov62_022338A8(UnkStruct_0208C06C *param0)
|
|
{
|
|
int v0;
|
|
int v1;
|
|
|
|
for (v0 = 0; v0 < 4; v0++) {
|
|
sub_0202F298(param0->unk_830, 102, &v1, NULL, v0);
|
|
|
|
switch (v1) {
|
|
case 0:
|
|
param0->unk_87C[v0] = NULL;
|
|
param0->unk_88C[v0] = NULL;
|
|
|
|
if (v0 == 0) {
|
|
param0->unk_88C[v0] = sub_02030A80(HEAP_ID_102);
|
|
sub_02030AA0(param0->unk_88C[v0], param0->unk_830);
|
|
}
|
|
break;
|
|
case 2:
|
|
param0->unk_87C[v0] = NULL;
|
|
param0->unk_88C[v0] = NULL;
|
|
|
|
if (v0 == 0) {
|
|
param0->unk_88C[v0] = sub_02030A80(HEAP_ID_102);
|
|
sub_02030AA0(param0->unk_88C[v0], param0->unk_830);
|
|
}
|
|
break;
|
|
case 3:
|
|
param0->unk_87C[v0] = NULL;
|
|
param0->unk_88C[v0] = NULL;
|
|
|
|
if (v0 == 0) {
|
|
param0->unk_88C[v0] = sub_02030A80(HEAP_ID_102);
|
|
sub_02030AA0(param0->unk_88C[v0], param0->unk_830);
|
|
}
|
|
break;
|
|
case 1:
|
|
param0->unk_87C[v0] = sub_0202FD88(HEAP_ID_102);
|
|
|
|
if (v0 == 0) {
|
|
param0->unk_88C[v0] = sub_02030A80(HEAP_ID_102);
|
|
sub_02030AA0(param0->unk_88C[v0], param0->unk_830);
|
|
} else {
|
|
param0->unk_88C[v0] = sub_0202FDB8(HEAP_ID_102);
|
|
}
|
|
break;
|
|
}
|
|
if (sub_0202F250() == 1) {
|
|
sub_0202F22C();
|
|
}
|
|
}
|
|
}
|
|
|
|
void ov62_022339A0(UnkStruct_0208C06C *param0)
|
|
{
|
|
int v0;
|
|
|
|
for (v0 = 0; v0 < 4; v0++) {
|
|
if (param0->unk_87C[v0] != NULL) {
|
|
Heap_FreeToHeap(param0->unk_87C[v0]);
|
|
param0->unk_87C[v0] = NULL;
|
|
}
|
|
|
|
if (param0->unk_88C[v0] != NULL) {
|
|
Heap_FreeToHeap(param0->unk_88C[v0]);
|
|
param0->unk_88C[v0] = NULL;
|
|
}
|
|
}
|
|
}
|
|
|
|
void ov62_022339DC(UnkStruct_0208C06C *param0)
|
|
{
|
|
SpriteSystem *v0;
|
|
SpriteManager *v1;
|
|
PaletteData *v2;
|
|
|
|
v0 = param0->unk_14.unk_04;
|
|
v1 = param0->unk_14.unk_08;
|
|
v2 = param0->unk_14.unk_14;
|
|
|
|
SpriteSystem_LoadPaletteBuffer(v2, 2, v0, v1, 19, PokeIconPalettesFileIndex(), 0, 3, NNS_G2D_VRAM_TYPE_2DMAIN, 100000);
|
|
SpriteSystem_LoadCellResObj(v0, v1, 19, PokeIcon64KCellsFileIndex(), 0, 100000);
|
|
SpriteSystem_LoadAnimResObj(v0, v1, 19, PokeIcon64KAnimationFileIndex(), 0, 100000);
|
|
}
|
|
|
|
void ov62_02233A44(UnkStruct_0208C06C *param0)
|
|
{
|
|
SpriteManager_UnloadPlttObjById(param0->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadCellObjById(param0->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadAnimObjById(param0->unk_14.unk_08, 100000);
|
|
}
|
|
|
|
NARC *ov62_02233A68(int param0)
|
|
{
|
|
NARC *v0;
|
|
|
|
v0 = NARC_ctor(NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, 102);
|
|
return v0;
|
|
}
|
|
|
|
void ov62_02233A74(NARC *param0)
|
|
{
|
|
NARC_dtor(param0);
|
|
}
|
|
|
|
ManagedSprite *ov62_02233A7C(UnkStruct_0208C06C *param0, NARC *param1, int param2, int param3, int param4, int param5)
|
|
{
|
|
ManagedSprite *v0;
|
|
SpriteSystem *v1;
|
|
SpriteManager *v2;
|
|
PaletteData *v3;
|
|
SpriteTemplate v4;
|
|
int v5;
|
|
|
|
v1 = param0->unk_14.unk_04;
|
|
v2 = param0->unk_14.unk_08;
|
|
v3 = param0->unk_14.unk_14;
|
|
|
|
if (param3 == 0) {
|
|
return NULL;
|
|
}
|
|
|
|
SpriteSystem_LoadCharResObjFromOpenNarcWithHardwareMappingType(v1, v2, param1, PokeIconSpriteIndex(param3, param5, param4), FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 100000 + param2);
|
|
|
|
v4.x = 0;
|
|
v4.y = -48;
|
|
v4.z = 0;
|
|
v4.animIdx = 0;
|
|
v4.priority = 0;
|
|
v4.plttIdx = 0;
|
|
v4.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
|
v4.bgPriority = 0;
|
|
v4.vramTransfer = FALSE;
|
|
v4.resources[0] = 100000 + param2;
|
|
v4.resources[1] = 100000;
|
|
v4.resources[2] = 100000;
|
|
v4.resources[3] = 100000;
|
|
v4.resources[4] = SPRITE_RESOURCE_NONE;
|
|
v4.resources[5] = SPRITE_RESOURCE_NONE;
|
|
|
|
v0 = SpriteSystem_NewSprite(v1, v2, &v4);
|
|
v5 = PokeIconPaletteIndex(param3, param4, param5);
|
|
|
|
ManagedSprite_SetExplicitPaletteOffset(v0, 4 + v5);
|
|
ManagedSprite_SetAnim(v0, 1);
|
|
ManagedSprite_TickFrame(v0);
|
|
|
|
return v0;
|
|
}
|
|
|
|
void ov62_02233B24(UnkStruct_0208C06C *param0, int param1, ManagedSprite *param2)
|
|
{
|
|
int v0;
|
|
|
|
if (param2 == NULL) {
|
|
return;
|
|
}
|
|
|
|
SpriteManager_UnloadCharObjById(param0->unk_14.unk_08, 100000 + param1);
|
|
Sprite_DeleteAndFreeResources(param2);
|
|
}
|
|
|
|
void ov62_02233B40(UnkStruct_0208C06C *param0, int param1, ManagedSprite *param2)
|
|
{
|
|
int v0;
|
|
|
|
if (param2 == NULL) {
|
|
return;
|
|
}
|
|
|
|
Sprite_DeleteAndFreeResources(param2);
|
|
}
|
|
|
|
static void ov62_02233B50(UnkStruct_ov62_02233F74 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
int v1;
|
|
Window *v2;
|
|
Strbuf *v3;
|
|
|
|
{
|
|
s16 v4[][4] = {
|
|
{ 0x4, 0x4, 0x18, 0x2 },
|
|
{ 0x4, 0x6, 0x18, 0x4 },
|
|
{ 0x4, 0xB, 0x5, 0x2 },
|
|
{ 0x4, 0xD, 0x5, 0x2 },
|
|
{ 0x4, 0x15, 0x18, 0x2 }
|
|
};
|
|
|
|
int v5[] = {
|
|
0x14, 0x14, 0x14, 0xA, 0x14, 0x14
|
|
};
|
|
|
|
v1 = 1;
|
|
|
|
for (v0 = 0; v0 < 5; v0++) {
|
|
if (v4[v0][0] == 0xFF) {
|
|
break;
|
|
}
|
|
|
|
v2 = ¶m0->unk_3C[v0];
|
|
v3 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, v5[v0]);
|
|
|
|
Window_Init(v2);
|
|
Window_Add(param1->unk_14.unk_10, v2, 2, v4[v0][0], v4[v0][1], v4[v0][2], v4[v0][3], 14, v1);
|
|
Window_FillTilemap(v2, 0x0);
|
|
Text_AddPrinterWithParamsAndColor(v2, FONT_SYSTEM, v3, ov62_0223429C(v2, v3), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v2);
|
|
|
|
v1 += (v4[v0][2] * v4[v0][3]);
|
|
|
|
Strbuf_Free(v3);
|
|
}
|
|
}
|
|
|
|
{
|
|
Strbuf *v6;
|
|
Strbuf *v7;
|
|
Strbuf *v8;
|
|
StringTemplate *v9;
|
|
Window *v10;
|
|
UnkStruct_02030A80 *v11;
|
|
|
|
v11 = param0->unk_00;
|
|
v9 = ov62_02231690(102);
|
|
|
|
v10 = ¶m0->unk_3C[0];
|
|
v6 = sub_02030B94(v11, 102);
|
|
ov62_022349A8(param1, v6);
|
|
v7 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 7);
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
StringTemplate_SetStrbuf(v9, 0, v6, 0, 1, GAME_LANGUAGE);
|
|
StringTemplate_Format(v9, v8, v7);
|
|
Window_FillTilemap(v10, 0x0);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v6);
|
|
Strbuf_Free(v7);
|
|
Strbuf_Free(v8);
|
|
StringTemplate_ClearArgs(v9);
|
|
|
|
{
|
|
int v12 = sub_0202FE98(param0->unk_04, 3, 0);
|
|
|
|
v10 = ¶m0->unk_3C[1];
|
|
v8 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 132 + v12);
|
|
|
|
Window_FillTilemap(v10, 0x0);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, 0, 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v8);
|
|
StringTemplate_ClearArgs(v9);
|
|
}
|
|
|
|
{
|
|
int v13 = sub_0202FE98(param0->unk_04, 2, 0);
|
|
|
|
if (v13 != 0) {
|
|
v10 = ¶m0->unk_3C[2];
|
|
v6 = Strbuf_Init(255, HEAP_ID_102);
|
|
v7 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 9);
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
Strbuf_FormatInt(v6, v13, 4, 0, 1);
|
|
StringTemplate_SetStrbuf(v9, 0, v6, 0, 1, GAME_LANGUAGE);
|
|
StringTemplate_Format(v9, v8, v7);
|
|
Window_FillTilemap(v10, 0x0);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v6);
|
|
Strbuf_Free(v7);
|
|
Strbuf_Free(v8);
|
|
StringTemplate_ClearArgs(v9);
|
|
} else {
|
|
v10 = ¶m0->unk_3C[3];
|
|
Window_FillTilemap(v10, 0x0);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
}
|
|
}
|
|
|
|
{
|
|
u64 v14 = sub_0202FE98(param0->unk_04, 4, 0);
|
|
u64 v15 = v14;
|
|
u32 v16[3];
|
|
Strbuf *v17 = Strbuf_Init(255, HEAP_ID_102);
|
|
Strbuf *v18 = Strbuf_Init(255, HEAP_ID_102);
|
|
Strbuf *v19 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
v10 = ¶m0->unk_3C[4];
|
|
v16[0] = v15 % 100000;
|
|
v15 /= 100000;
|
|
v16[1] = v15 % 100000;
|
|
v15 /= 100000;
|
|
v16[2] = v15;
|
|
|
|
{
|
|
int v20 = (v16[2] / 10) % 10;
|
|
|
|
if ((v20 == 0) && (v14 != 0)) {
|
|
v7 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 12);
|
|
} else {
|
|
v7 = MessageLoader_GetNewStrbuf(param1->unk_14.unk_34, 11);
|
|
}
|
|
}
|
|
|
|
v8 = Strbuf_Init(255, HEAP_ID_102);
|
|
|
|
Strbuf_FormatInt(v17, v16[0], 5, 2, 1);
|
|
Strbuf_FormatInt(v18, v16[1], 5, 2, 1);
|
|
Strbuf_FormatInt(v19, v16[2], 2, 2, 1);
|
|
StringTemplate_SetStrbuf(v9, 2, v17, 0, 1, GAME_LANGUAGE);
|
|
StringTemplate_SetStrbuf(v9, 1, v18, 0, 1, GAME_LANGUAGE);
|
|
StringTemplate_SetStrbuf(v9, 0, v19, 0, 1, GAME_LANGUAGE);
|
|
StringTemplate_Format(v9, v8, v7);
|
|
Window_FillTilemap(v10, 0x0);
|
|
Text_AddPrinterWithParamsAndColor(v10, FONT_SYSTEM, v8, ov62_0223429C(v10, v8), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 0), NULL);
|
|
Window_ScheduleCopyToVRAM(v10);
|
|
Strbuf_Free(v17);
|
|
Strbuf_Free(v18);
|
|
Strbuf_Free(v19);
|
|
Strbuf_Free(v7);
|
|
Strbuf_Free(v8);
|
|
StringTemplate_ClearArgs(v9);
|
|
}
|
|
|
|
StringTemplate_Free(v9);
|
|
}
|
|
}
|
|
|
|
static void ov62_02233F74(UnkStruct_ov62_02233F74 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
|
|
for (v0 = 0; v0 < 5; v0++) {
|
|
Window_ClearAndCopyToVRAM(¶m0->unk_3C[v0]);
|
|
Window_Remove(¶m0->unk_3C[v0]);
|
|
}
|
|
}
|
|
|
|
BOOL ov62_02233F94(UnkStruct_0202F41C *param0)
|
|
{
|
|
int v0;
|
|
BOOL v1 = 0;
|
|
|
|
v0 = sub_0202FE98(param0, 3, 0);
|
|
|
|
switch (v0) {
|
|
case UnkEnum_0202F510_17:
|
|
case UnkEnum_0202F510_20:
|
|
case UnkEnum_0202F510_23:
|
|
case UnkEnum_0202F510_26:
|
|
case UnkEnum_0202F510_29:
|
|
case UnkEnum_0202F510_32:
|
|
case UnkEnum_0202F510_14:
|
|
v1 = 1;
|
|
break;
|
|
default:
|
|
v1 = 0;
|
|
break;
|
|
}
|
|
|
|
return v1;
|
|
}
|
|
|
|
static BOOL ov62_02233FE0(UnkStruct_ov62_02233F74 *param0)
|
|
{
|
|
return ov62_02233F94(param0->unk_04);
|
|
}
|
|
|
|
int ov62_02233FEC(UnkStruct_ov62_02233F74 *param0)
|
|
{
|
|
if (ov62_02233FE0(param0) == 1) {
|
|
return 81;
|
|
}
|
|
|
|
return 82;
|
|
}
|
|
|
|
static void ov62_02234000(UnkStruct_ov62_02233F74 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
int v1;
|
|
int v2;
|
|
int v3 = 0;
|
|
SpriteTemplate v4;
|
|
int v5;
|
|
int v6;
|
|
int v7[12];
|
|
int v8[12];
|
|
int v9;
|
|
SpriteSystem *v10;
|
|
SpriteManager *v11;
|
|
PaletteData *v12;
|
|
s16 v13[][12][2] = {
|
|
{
|
|
{ 11 * 8, 13 * 8 },
|
|
{ 14 * 8, 13 * 8 },
|
|
{ 17 * 8, 13 * 8 },
|
|
{ 20 * 8, 13 * 8 },
|
|
{ 23 * 8, 13 * 8 },
|
|
{ 26 * 8, 13 * 8 },
|
|
{ 3 * 8, 19 * 8 },
|
|
{ 6 * 8, 19 * 8 },
|
|
{ 9 * 8, 19 * 8 },
|
|
{ 12 * 8, 19 * 8 },
|
|
{ 15 * 8, 19 * 8 },
|
|
{ 18 * 8, 19 * 8 },
|
|
},
|
|
{
|
|
{ 3 * 8, 17 * 8 },
|
|
{ 6 * 8, 17 * 8 },
|
|
{ 9 * 8, 17 * 8 },
|
|
{ 5 * 8, 20 * 8 },
|
|
{ 8 * 8, 20 * 8 },
|
|
{ 11 * 8, 20 * 8 },
|
|
{ 18 * 8, 17 * 8 },
|
|
{ 21 * 8, 17 * 8 },
|
|
{ 24 * 8, 17 * 8 },
|
|
{ 20 * 8, 20 * 8 },
|
|
{ 23 * 8, 20 * 8 },
|
|
{ 26 * 8, 20 * 8 },
|
|
},
|
|
};
|
|
|
|
v10 = param1->unk_14.unk_04;
|
|
v11 = param1->unk_14.unk_08;
|
|
v12 = param1->unk_14.unk_14;
|
|
|
|
SpriteSystem_LoadPaletteBuffer(v12, 2, v10, v11, 19, PokeIconPalettesFileIndex(), 0, 3, NNS_G2D_VRAM_TYPE_2DMAIN, 100000);
|
|
|
|
{
|
|
int v14 = PokeIcon64KCellsFileIndex();
|
|
SpriteSystem_LoadCellResObj(v10, v11, 19, v14, 0, 100000);
|
|
}
|
|
|
|
{
|
|
int v15 = PokeIcon64KAnimationFileIndex();
|
|
SpriteSystem_LoadAnimResObj(v10, v11, 19, v15, 0, 100000);
|
|
}
|
|
|
|
{
|
|
int v16 = 0;
|
|
int v17 = 0;
|
|
int v18 = 0;
|
|
int v19 = 6;
|
|
int v20 = 0;
|
|
int v21 = v19;
|
|
|
|
v9 = 0;
|
|
|
|
if (ov62_02233FE0(param0) == 1) {
|
|
v19 = 3;
|
|
v21 = 3;
|
|
v9 = 1;
|
|
}
|
|
|
|
do {
|
|
for (v0 = v20; v0 < v21; v0++) {
|
|
v7[v16] = 0xFF;
|
|
v17 = sub_0202FE98(param0->unk_04, 0, v0);
|
|
v18 = sub_0202FE98(param0->unk_04, 1, v0);
|
|
|
|
if (v17 == 0) {
|
|
continue;
|
|
}
|
|
|
|
v7[v16] = v17;
|
|
v8[v16] = v18;
|
|
|
|
v16++;
|
|
}
|
|
|
|
for (v0 = v16; v0 < v21; v0++) {
|
|
v7[v16] = 0;
|
|
v8[v16] = 0;
|
|
v16++;
|
|
}
|
|
|
|
v20 += v19;
|
|
v21 += v19;
|
|
} while (v21 <= 12);
|
|
}
|
|
|
|
for (v0 = 0; v0 < 12; v0++) {
|
|
param0->unk_0C[v0] = NULL;
|
|
v1 = v7[v0];
|
|
|
|
if (v1 == 0) {
|
|
continue;
|
|
}
|
|
|
|
v2 = v8[v0];
|
|
v6 = PokeIconSpriteIndex(v1, 0, v2);
|
|
|
|
SpriteSystem_LoadCharResObjAtEndWithHardwareMappingType(v10, v11, NARC_INDEX_POKETOOL__ICONGRA__PL_POKE_ICON, v6, FALSE, NNS_G2D_VRAM_TYPE_2DMAIN, 100000 + v3);
|
|
|
|
v4.x = v13[v9][v0][0] + 12 - 4;
|
|
v4.y = v13[v9][v0][1] - 12;
|
|
v4.z = 0;
|
|
v4.animIdx = 0;
|
|
v4.priority = 0;
|
|
v4.plttIdx = 0;
|
|
v4.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
|
|
v4.bgPriority = 0;
|
|
v4.vramTransfer = FALSE;
|
|
v4.resources[0] = 100000 + v3;
|
|
v4.resources[1] = 100000;
|
|
v4.resources[2] = 100000;
|
|
v4.resources[3] = 100000;
|
|
v4.resources[4] = SPRITE_RESOURCE_NONE;
|
|
v4.resources[5] = SPRITE_RESOURCE_NONE;
|
|
|
|
param0->unk_0C[v3] = SpriteSystem_NewSprite(param1->unk_14.unk_04, param1->unk_14.unk_08, &v4);
|
|
|
|
v5 = PokeIconPaletteIndex(v1, v2, 0);
|
|
ManagedSprite_SetExplicitPaletteOffset(param0->unk_0C[v3], 4 + v5);
|
|
ManagedSprite_SetAnim(param0->unk_0C[v3], 1);
|
|
ManagedSprite_TickFrame(param0->unk_0C[v3]);
|
|
ManagedSprite_SetPriority(param0->unk_0C[v3], 12 - v0);
|
|
v3++;
|
|
}
|
|
}
|
|
|
|
void ov62_02234214(UnkStruct_ov62_02233F74 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
ov62_02233B50(param0, param1);
|
|
ov62_02234000(param0, param1);
|
|
}
|
|
|
|
void ov62_02234228(UnkStruct_ov62_02233F74 *param0, UnkStruct_0208C06C *param1)
|
|
{
|
|
int v0;
|
|
|
|
SpriteManager_UnloadPlttObjById(param1->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadCellObjById(param1->unk_14.unk_08, 100000);
|
|
SpriteManager_UnloadAnimObjById(param1->unk_14.unk_08, 100000);
|
|
|
|
for (v0 = 0; v0 < 12; v0++) {
|
|
if (param0->unk_0C[v0]) {
|
|
SpriteManager_UnloadCharObjById(param1->unk_14.unk_08, 100000 + v0);
|
|
Sprite_DeleteAndFreeResources(param0->unk_0C[v0]);
|
|
param0->unk_0C[v0] = NULL;
|
|
}
|
|
}
|
|
|
|
ov62_02233F74(param0, param1);
|
|
}
|
|
|
|
void ov62_0223427C(UnkStruct_ov62_02233F74 *param0, int param1)
|
|
{
|
|
int v0;
|
|
|
|
for (v0 = 0; v0 < 12; v0++) {
|
|
if (param0->unk_0C[v0]) {
|
|
ManagedSprite_SetDrawFlag(param0->unk_0C[v0], param1);
|
|
}
|
|
}
|
|
}
|
|
|
|
int ov62_0223429C(Window *param0, Strbuf *param1)
|
|
{
|
|
int v0 = Font_CalcStrbufWidth(FONT_SYSTEM, param1, 0);
|
|
int v1 = (Window_GetWidth(param0) * 8 - v0) / 2;
|
|
|
|
return v1;
|
|
}
|
|
|
|
void ov62_022342BC(UnkStruct_0208C06C *param0)
|
|
{
|
|
param0->unk_834 = 0;
|
|
param0->unk_836 = 0;
|
|
}
|
|
|
|
BOOL ov62_022342CC(UnkStruct_0208C06C *param0)
|
|
{
|
|
MiscSaveBlock *v0 = SaveData_MiscSaveBlock(param0->unk_830);
|
|
u32 v1, v2;
|
|
u8 v3;
|
|
|
|
MiscSaveBlock_ExtraSaveKey(v0, 2 + param0->unk_86C, &v1, &v2, &v3);
|
|
MiscSaveBlock_SetExtraSaveKey(v0, 2 + param0->unk_86C, 0xffffffff, 0xffffffff, v3);
|
|
|
|
return 1;
|
|
}
|
|
|
|
void ov62_02234314(void)
|
|
{
|
|
Bg_SetPriority(0, 1);
|
|
Bg_SetPriority(1, 3);
|
|
Bg_SetPriority(2, 0);
|
|
Bg_SetPriority(3, 1);
|
|
Bg_SetPriority(4, 1);
|
|
Bg_SetPriority(5, 3);
|
|
Bg_SetPriority(6, 0);
|
|
Bg_SetPriority(7, 1);
|
|
}
|
|
|
|
void ov62_02234358(UnkStruct_0208C06C *param0, UnkStruct_0208B878 *param1, s16 param2, s16 param3)
|
|
{
|
|
if (param0->unk_14.unk_30 == 0) {
|
|
sub_0208B9E0(param1, 1);
|
|
}
|
|
|
|
sub_0208B8B0(param1, 1);
|
|
|
|
{
|
|
sub_0208B948(param1, param2, param3);
|
|
sub_0208B8B8(param1, param2, param3);
|
|
}
|
|
}
|
|
|
|
int ov62_0223438C(u64 param0)
|
|
{
|
|
int v0 = 1;
|
|
u64 v1 = param0;
|
|
|
|
while (v1 > 1) {
|
|
v1 /= 10;
|
|
v0++;
|
|
}
|
|
|
|
return v0;
|
|
}
|
|
|
|
void ov62_022343B8(UnkStruct_0208C06C *param0, int param1, int param2)
|
|
{
|
|
Graphics_LoadTilemapToBgLayerFromOpenNARC(param0->unk_14.unk_00, param1, param0->unk_14.unk_10, param2, 0, 0, 0, 102);
|
|
}
|
|
|
|
static void ov62_022343D8(SysTask *param0, void *param1)
|
|
{
|
|
UnkStruct_0208C06C *v0 = param1;
|
|
s16 v1;
|
|
|
|
if ((++v0->unk_41D8.unk_04) >= 7) {
|
|
SysTask_Done(param0);
|
|
v0->unk_41D8.unk_04 = 0;
|
|
v0->unk_41D8.unk_00 = 0;
|
|
sub_0208BA54(v0->unk_41D8.unk_08);
|
|
sub_0208BA08(v0->unk_41D8.unk_08, 0, 0);
|
|
sub_0208B8B0(v0->unk_41D8.unk_08, 0);
|
|
sub_0208B9E0(v0->unk_41D8.unk_08, 0);
|
|
return;
|
|
}
|
|
|
|
v1 = (6 + (v0->unk_41D8.unk_04 * 2));
|
|
sub_0208BA08(v0->unk_41D8.unk_08, v1, v1);
|
|
}
|
|
|
|
static void ov62_02234440(UnkStruct_0208C06C *param0)
|
|
{
|
|
u32 v0, v1;
|
|
s16 v2 = 0;
|
|
|
|
if (param0->unk_41D8.unk_00 == 1) {
|
|
if (param0->unk_41D8.unk_0C) {
|
|
SysTask_Done(param0->unk_41D8.unk_0C);
|
|
}
|
|
|
|
param0->unk_41D8.unk_0C = NULL;
|
|
}
|
|
|
|
if (gSystem.whichScreenIs3D == DS_SCREEN_MAIN) {
|
|
param0->unk_41D8.unk_08 = param0->unk_6F4;
|
|
} else {
|
|
param0->unk_41D8.unk_08 = param0->unk_6F0;
|
|
}
|
|
|
|
param0->unk_41D8.unk_00 = 1;
|
|
param0->unk_41D8.unk_04 = 0;
|
|
|
|
TouchScreen_GetTapState(&v0, &v1);
|
|
sub_0208BA30(param0->unk_41D8.unk_08);
|
|
sub_0208B8B0(param0->unk_41D8.unk_08, 1);
|
|
sub_0208B9E0(param0->unk_41D8.unk_08, 1);
|
|
sub_0208B8B8(param0->unk_41D8.unk_08, v0, v1 + v2);
|
|
sub_0208B948(param0->unk_41D8.unk_08, v0, v1 + v2);
|
|
|
|
param0->unk_41D8.unk_0C = SysTask_Start(ov62_022343D8, param0, 4096);
|
|
|
|
if (param0->unk_41D8.unk_0C != NULL) {
|
|
ov62_022343D8(param0->unk_41D8.unk_0C, param0);
|
|
} else {
|
|
param0->unk_41D8.unk_00 = 0;
|
|
sub_0208B9E0(param0->unk_41D8.unk_08, 0);
|
|
GF_ASSERT(0);
|
|
}
|
|
}
|
|
|
|
void ov62_02234520(UnkStruct_0208C06C *param0)
|
|
{
|
|
ov62_02234440(param0);
|
|
Sound_PlayEffect(1379);
|
|
}
|
|
|
|
BOOL ov62_02234534(UnkStruct_0208C06C *param0)
|
|
{
|
|
return param0->unk_14.unk_514;
|
|
}
|
|
|
|
void ov62_02234540(UnkStruct_0208C06C *param0, BOOL param1)
|
|
{
|
|
param0->unk_14.unk_514 = param1;
|
|
}
|
|
|
|
void ov62_0223454C(UnkStruct_0208C06C *param0, UnkStruct_ov62_022312B0 *param1, int param2, int param3, s16 param4, s16 param5, s16 param6, s16 param7, int param8, BOOL param9)
|
|
{
|
|
param1->unk_08 = ov62_022313E0(param0, param2);
|
|
|
|
ov62_0223118C(param1, ¶m0->unk_14, param2);
|
|
ov62_0223124C(param1, ¶m0->unk_14, param3);
|
|
ManagedSprite_SetPositionXY(param1->unk_08, param4, param5);
|
|
sub_020128C4(param1->unk_0C, param6, param7);
|
|
sub_020129D0(param1->unk_0C, param9);
|
|
ManagedSprite_SetAnim(param1->unk_08, param8);
|
|
}
|
|
|
|
void ov62_022345A8(UnkStruct_ov62_022312B0 *param0)
|
|
{
|
|
ov62_022312B0(param0);
|
|
Sprite_DeleteAndFreeResources(param0->unk_08);
|
|
}
|
|
|
|
int ov62_022345B8(UnkStruct_0208C06C *param0, int param1, int param2, int param3)
|
|
{
|
|
param0->unk_14.unk_4F0.unk_00 = param0->unk_04;
|
|
param0->unk_14.unk_4F0.unk_04 = param0->unk_08;
|
|
param0->unk_14.unk_4F0.unk_08 = *param0->unk_10;
|
|
param0->unk_14.unk_4F0.unk_18 = 1;
|
|
|
|
{
|
|
int v0 = 194;
|
|
|
|
switch (param3) {
|
|
case 0:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 244;
|
|
break;
|
|
case 1:
|
|
v0 = 245;
|
|
break;
|
|
case 2:
|
|
v0 = 246;
|
|
break;
|
|
case 3:
|
|
v0 = 247;
|
|
break;
|
|
case 4:
|
|
v0 = 248;
|
|
break;
|
|
case 5:
|
|
v0 = 249;
|
|
break;
|
|
case 6:
|
|
v0 = 250;
|
|
break;
|
|
case 7:
|
|
v0 = 251;
|
|
break;
|
|
case 8:
|
|
v0 = 252;
|
|
break;
|
|
case 9:
|
|
v0 = 253;
|
|
break;
|
|
case 10:
|
|
v0 = 254;
|
|
break;
|
|
case 11:
|
|
v0 = 255;
|
|
break;
|
|
case 12:
|
|
v0 = 256;
|
|
break;
|
|
case 13:
|
|
v0 = 257;
|
|
break;
|
|
case 14:
|
|
v0 = 258;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 259;
|
|
break;
|
|
case 1:
|
|
v0 = 260;
|
|
break;
|
|
case 2:
|
|
v0 = 261;
|
|
break;
|
|
case 3:
|
|
v0 = 262;
|
|
break;
|
|
case 4:
|
|
v0 = 263;
|
|
break;
|
|
case 5:
|
|
v0 = 264;
|
|
break;
|
|
case 6:
|
|
v0 = 265;
|
|
break;
|
|
case 7:
|
|
v0 = 266;
|
|
break;
|
|
case 8:
|
|
v0 = 267;
|
|
break;
|
|
case 9:
|
|
v0 = 268;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 2: {
|
|
switch (param1) {
|
|
case 0:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 194;
|
|
break;
|
|
case 1:
|
|
v0 = 195;
|
|
break;
|
|
case 2:
|
|
v0 = 196;
|
|
break;
|
|
case 3:
|
|
v0 = 197;
|
|
break;
|
|
case 4:
|
|
v0 = 198;
|
|
break;
|
|
case 5:
|
|
v0 = 199;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 1:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 200;
|
|
break;
|
|
case 1:
|
|
v0 = 201;
|
|
break;
|
|
case 2:
|
|
v0 = 202;
|
|
break;
|
|
case 3:
|
|
v0 = 203;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 2:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 204;
|
|
break;
|
|
case 1:
|
|
v0 = 205;
|
|
break;
|
|
case 2:
|
|
v0 = 206;
|
|
break;
|
|
case 3:
|
|
v0 = 207;
|
|
break;
|
|
case 4:
|
|
v0 = 208;
|
|
break;
|
|
case 5:
|
|
v0 = 209;
|
|
break;
|
|
case 6:
|
|
v0 = 210;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 3:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 211;
|
|
break;
|
|
case 1:
|
|
v0 = 212;
|
|
break;
|
|
case 2:
|
|
v0 = 213;
|
|
break;
|
|
case 3:
|
|
v0 = 214;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 4:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 215;
|
|
break;
|
|
case 1:
|
|
v0 = 216;
|
|
break;
|
|
case 2:
|
|
v0 = 217;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 5:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 218;
|
|
break;
|
|
case 1:
|
|
v0 = 219;
|
|
break;
|
|
case 2:
|
|
v0 = 220;
|
|
break;
|
|
case 3:
|
|
v0 = 221;
|
|
break;
|
|
case 4:
|
|
v0 = 222;
|
|
break;
|
|
case 5:
|
|
v0 = 223;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 6:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 224;
|
|
break;
|
|
case 1:
|
|
v0 = 225;
|
|
break;
|
|
case 2:
|
|
v0 = 226;
|
|
break;
|
|
case 3:
|
|
v0 = 227;
|
|
break;
|
|
case 4:
|
|
v0 = 228;
|
|
break;
|
|
case 5:
|
|
v0 = 229;
|
|
break;
|
|
case 6:
|
|
v0 = 230;
|
|
break;
|
|
case 7:
|
|
v0 = 231;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 7:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 232;
|
|
break;
|
|
case 1:
|
|
v0 = 233;
|
|
break;
|
|
case 2:
|
|
v0 = 234;
|
|
break;
|
|
case 3:
|
|
v0 = 235;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
case 8:
|
|
switch (param2) {
|
|
case 0:
|
|
v0 = 236;
|
|
break;
|
|
case 1:
|
|
v0 = 237;
|
|
break;
|
|
case 2:
|
|
v0 = 238;
|
|
break;
|
|
case 3:
|
|
v0 = 239;
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
break;
|
|
default:
|
|
GF_ASSERT(0);
|
|
break;
|
|
}
|
|
} break;
|
|
}
|
|
|
|
param0->unk_14.unk_4F0.unk_0C = v0;
|
|
}
|
|
|
|
return param0->unk_14.unk_4F0.unk_0C;
|
|
}
|
|
|
|
void ov62_022348B8(UnkStruct_0208C06C *param0, int param1, int param2, int param3)
|
|
{
|
|
param0->unk_14.unk_4F0.unk_00 = param0->unk_04;
|
|
param0->unk_14.unk_4F0.unk_04 = param0->unk_08;
|
|
param0->unk_14.unk_4F0.unk_08 = *param0->unk_10;
|
|
param0->unk_14.unk_4F0.unk_10 = 0;
|
|
param0->unk_14.unk_4F0.unk_14 = 0;
|
|
param0->unk_14.unk_4F0.unk_0C = ov62_022345B8(param0, param1, param2, param3);
|
|
param0->unk_14.unk_4F0.unk_18 = 1;
|
|
*param0->unk_10 = 18;
|
|
}
|
|
|
|
void ov62_022348FC(UnkStruct_0208C06C *param0)
|
|
{
|
|
switch (param0->unk_14.unk_4F0.unk_10) {
|
|
case 0:
|
|
if (param0->unk_14.unk_4F0.unk_14 < 8) {
|
|
param0->unk_14.unk_4F0.unk_14++;
|
|
} else {
|
|
ov62_02231AAC(param0, param0->unk_14.unk_4F0.unk_0C);
|
|
param0->unk_14.unk_4F0.unk_10++;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
if (TouchScreen_Tapped()) {
|
|
ov62_02231B8C(param0);
|
|
param0->unk_14.unk_4F0.unk_10++;
|
|
}
|
|
|
|
break;
|
|
default:
|
|
if (param0->unk_14.unk_4F0.unk_14 > 0) {
|
|
param0->unk_14.unk_4F0.unk_14--;
|
|
} else {
|
|
*param0->unk_10 = param0->unk_14.unk_4F0.unk_08;
|
|
}
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
BOOL ov62_02234970(UnkStruct_0208C06C *param0, u64 param1)
|
|
{
|
|
u64 v0;
|
|
int v1;
|
|
|
|
for (v1 = 1; v1 < 4; v1++) {
|
|
if (param0->unk_87C[v1] == NULL) {
|
|
continue;
|
|
}
|
|
|
|
v0 = sub_0202FE98(param0->unk_87C[v1], 4, 0);
|
|
|
|
if (v0 == param1) {
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void ov62_022349A8(UnkStruct_0208C06C *param0, Strbuf *param1)
|
|
{
|
|
UnkStruct_ov62_022349A8 *v0 = ov62_0224112C(param0);
|
|
Strbuf *v1;
|
|
int v2 = 64;
|
|
|
|
v1 = Strbuf_Init(v2, v0->unk_144);
|
|
|
|
if (Font_AreAllCharsValid(FONT_SYSTEM, param1, v1) == 0) {
|
|
ov62_022349E4(param1, v0->unk_144);
|
|
}
|
|
|
|
Strbuf_Free(v1);
|
|
}
|
|
|
|
static void ov62_022349E4(Strbuf *param0, int param1)
|
|
{
|
|
MessageLoader *v0;
|
|
|
|
Strbuf_Clear(param0);
|
|
v0 = MessageLoader_Init(1, 26, 10, param1);
|
|
|
|
MessageLoader_GetStrbuf(v0, 332, param0);
|
|
MessageLoader_Free(v0);
|
|
}
|