decompile sub_0208A758 (#629)

This commit is contained in:
scbroede 2025-07-15 13:28:16 -04:00 committed by GitHub
parent 6f9dbf8e2c
commit e9985f966a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 354 additions and 472 deletions

View File

@ -1,5 +1,4 @@
# These files still contain inline-ASM functions; ignore them for formatting for now
src/unk_0208A3F4.c
src/overlay107/ov107_02245EB0.c
src/overlay107/ov107_02241AE0.c
src/overlay065/ov65_0222DCE0.c

View File

@ -8,27 +8,27 @@
typedef struct {
UnkStruct_0208AF44 unk_00[16];
UnkStruct_0208AF44 unk_1A0[3];
UnkStruct_0208AF44 unk_1F0[3];
UnkStruct_0208AF44 unk_240[2];
s16 unk_274[5];
u16 unk_27E[5][2];
int unk_294;
int unk_298;
int unk_29C;
int unk_2A0;
int unk_2A4;
int unk_2A8;
int unk_2AC;
int unk_2B0;
int unk_2B4;
int unk_2B8;
int unk_2BC;
UnkStruct_02089688_sub1 unk_2C0;
UnkStruct_02089688_sub2 unk_380;
UnkStruct_02089438 unk_38C;
int unk_3C0;
int unk_3C4;
UnkStruct_0208AF44 unk_1C0[3];
UnkStruct_0208AF44 unk_214[3];
UnkStruct_0208AF44 unk_268[2];
s16 unk_2A0[5];
u16 unk_2AA[5][2];
int unk_2C0;
int unk_2C4;
int unk_2C8;
int unk_2CC;
int unk_2D0;
int unk_2D4;
int unk_2D8;
int unk_2DC;
int unk_2E0;
int unk_2E4;
int unk_2E8;
UnkStruct_02089688_sub1 unk_2EC;
UnkStruct_02089688_sub2 unk_3AC;
UnkStruct_02089438 unk_3B8;
int unk_3EC;
int unk_3F0;
} UnkStruct_02089688;
#endif // POKEPLATINUM_STRUCT_02089688_H

View File

@ -50,7 +50,7 @@ static int sub_020890F4(ApplicationManager *appMan, int *param1)
v0 = ApplicationManager_NewData(appMan, sizeof(UnkStruct_02089688), HEAP_ID_101);
memset(v0, 0, sizeof(UnkStruct_02089688));
v0->unk_38C = *((UnkStruct_02089438 *)ApplicationManager_Args(appMan));
v0->unk_3B8 = *((UnkStruct_02089438 *)ApplicationManager_Args(appMan));
SetVBlankCallback(NULL, NULL);
DisableHBlank();
@ -60,16 +60,16 @@ static int sub_020890F4(ApplicationManager *appMan, int *param1)
GX_SetVisiblePlane(0);
GXS_SetVisiblePlane(0);
v0->unk_2C0.unk_00 = NARC_ctor(NARC_INDEX_ARC__CODEIN_GRA, HEAP_ID_101);
v0->unk_2C0.unk_0C = BgConfig_New(HEAP_ID_101);
v0->unk_2C0.unk_10 = PaletteData_New(HEAP_ID_101);
v0->unk_2EC.unk_00 = NARC_ctor(NARC_INDEX_ARC__CODEIN_GRA, HEAP_ID_101);
v0->unk_2EC.unk_0C = BgConfig_New(HEAP_ID_101);
v0->unk_2EC.unk_10 = PaletteData_New(HEAP_ID_101);
PaletteData_SetAutoTransparent(v0->unk_2C0.unk_10, 1);
PaletteData_AllocBuffer(v0->unk_2C0.unk_10, 0, 0x200, HEAP_ID_101);
PaletteData_AllocBuffer(v0->unk_2C0.unk_10, 1, 0x200, HEAP_ID_101);
PaletteData_AllocBuffer(v0->unk_2C0.unk_10, 2, 0x200, HEAP_ID_101);
PaletteData_AllocBuffer(v0->unk_2C0.unk_10, 3, 0x200, HEAP_ID_101);
sub_0208945C(v0->unk_2C0.unk_0C);
PaletteData_SetAutoTransparent(v0->unk_2EC.unk_10, 1);
PaletteData_AllocBuffer(v0->unk_2EC.unk_10, 0, 0x200, HEAP_ID_101);
PaletteData_AllocBuffer(v0->unk_2EC.unk_10, 1, 0x200, HEAP_ID_101);
PaletteData_AllocBuffer(v0->unk_2EC.unk_10, 2, 0x200, HEAP_ID_101);
PaletteData_AllocBuffer(v0->unk_2EC.unk_10, 3, 0x200, HEAP_ID_101);
sub_0208945C(v0->unk_2EC.unk_0C);
sub_0208A3F4(v0);
sub_02089688(v0);
@ -79,7 +79,7 @@ static int sub_020890F4(ApplicationManager *appMan, int *param1)
sub_0208A0B8(v0);
}
if (v0->unk_38C.unk_30 != 0) {
if (v0->unk_3B8.unk_30 != 0) {
sub_02039734();
sub_020397C8(1, HEAP_ID_101);
}
@ -98,7 +98,7 @@ static int sub_0208924C(ApplicationManager *appMan, int *param1)
UnkStruct_02089688 *v1 = ApplicationManager_Data(appMan);
v0 = sub_02089BEC(v1);
if (v1->unk_38C.unk_30 != 0) {
if (v1->unk_3B8.unk_30 != 0) {
sub_020397B0(WM_LINK_LEVEL_3 - DWC_GetLinkLevel());
}
@ -109,7 +109,7 @@ static int sub_0208927C(ApplicationManager *appMan, int *param1)
{
UnkStruct_02089688 *v0 = ApplicationManager_Data(appMan);
if (v0->unk_38C.unk_30 != 0) {
if (v0->unk_3B8.unk_30 != 0) {
sub_02039794();
}
@ -122,29 +122,29 @@ static int sub_0208927C(ApplicationManager *appMan, int *param1)
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG1, 0);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG2, 0);
GXLayers_EngineBToggleLayers(GX_PLANEMASK_BG3, 0);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 1);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 2);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 3);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 4);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 5);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 6);
Bg_FreeTilemapBuffer(v0->unk_2C0.unk_0C, 7);
Heap_Free(v0->unk_2C0.unk_0C);
PaletteData_FreeBuffer(v0->unk_2C0.unk_10, 0);
PaletteData_FreeBuffer(v0->unk_2C0.unk_10, 1);
PaletteData_FreeBuffer(v0->unk_2C0.unk_10, 2);
PaletteData_FreeBuffer(v0->unk_2C0.unk_10, 3);
PaletteData_Free(v0->unk_2C0.unk_10);
NARC_dtor(v0->unk_2C0.unk_00);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 1);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 2);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 3);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 4);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 5);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 6);
Bg_FreeTilemapBuffer(v0->unk_2EC.unk_0C, 7);
Heap_Free(v0->unk_2EC.unk_0C);
PaletteData_FreeBuffer(v0->unk_2EC.unk_10, 0);
PaletteData_FreeBuffer(v0->unk_2EC.unk_10, 1);
PaletteData_FreeBuffer(v0->unk_2EC.unk_10, 2);
PaletteData_FreeBuffer(v0->unk_2EC.unk_10, 3);
PaletteData_Free(v0->unk_2EC.unk_10);
NARC_dtor(v0->unk_2EC.unk_00);
{
u32 v1;
v1 = DisableTouchPad();
}
SpriteSystem_FreeResourcesAndManager(v0->unk_2C0.unk_04, v0->unk_2C0.unk_08);
SpriteSystem_Free(v0->unk_2C0.unk_04);
TouchScreenActions_Free(v0->unk_2C0.unk_14);
SpriteSystem_FreeResourcesAndManager(v0->unk_2EC.unk_04, v0->unk_2EC.unk_08);
SpriteSystem_Free(v0->unk_2EC.unk_04);
TouchScreenActions_Free(v0->unk_2EC.unk_14);
ApplicationManager_FreeData(appMan);
Heap_Destroy(HEAP_ID_101);
@ -350,8 +350,8 @@ static void sub_020895CC(void *param0)
VramTransfer_Process();
SpriteSystem_TransferOam();
PaletteData_CommitFadedBuffers(v0->unk_2C0.unk_10);
Bg_RunScheduledUpdates(v0->unk_2C0.unk_0C);
PaletteData_CommitFadedBuffers(v0->unk_2EC.unk_10);
Bg_RunScheduledUpdates(v0->unk_2EC.unk_0C);
OS_SetIrqCheckFlag(OS_IE_V_BLANK);
}

View File

@ -21,88 +21,88 @@ void sub_02089604(UnkStruct_02089688 *param0, int param1)
{
int v0;
param0->unk_2AC = param0->unk_2A8;
param0->unk_2A8 = param1;
param0->unk_2B0 = 0;
param0->unk_2B4 = 0;
param0->unk_2B8 = 0;
param0->unk_2BC = 0;
param0->unk_2D8 = param0->unk_2D4;
param0->unk_2D4 = param1;
param0->unk_2DC = 0;
param0->unk_2E0 = 0;
param0->unk_2E4 = 0;
param0->unk_2E8 = 0;
if (param0->unk_2A8 != 0) {
param0->unk_2B0 = param0->unk_27E[param0->unk_2A8 - 1][0];
param0->unk_2B4 = param0->unk_27E[param0->unk_2A8 - 1][1];
if (param0->unk_2D4 != 0) {
param0->unk_2DC = param0->unk_2AA[param0->unk_2D4 - 1][0];
param0->unk_2E0 = param0->unk_2AA[param0->unk_2D4 - 1][1];
}
if (param0->unk_2AC != 0) {
param0->unk_2B8 = param0->unk_27E[param0->unk_2AC - 1][0];
param0->unk_2BC = param0->unk_27E[param0->unk_2AC - 1][1];
if (param0->unk_2D8 != 0) {
param0->unk_2E4 = param0->unk_2AA[param0->unk_2D8 - 1][0];
param0->unk_2E8 = param0->unk_2AA[param0->unk_2D8 - 1][1];
}
}
void sub_02089688(UnkStruct_02089688 *param0)
{
int v0;
param0->unk_2C0.unk_88 = 1;
param0->unk_2EC.unk_88 = 1;
u16 v1 = 0;
int v2, v3, v4, v5;
for (v0 = 0; v0 < 4 + 1; v0++) {
param0->unk_27E[v0][0] = v1;
v1 += param0->unk_38C.unk_04[v0];
param0->unk_27E[v0][1] = v1;
param0->unk_2AA[v0][0] = v1;
v1 += param0->unk_3B8.unk_04[v0];
param0->unk_2AA[v0][1] = v1;
}
sub_02089604(param0, param0->unk_38C.unk_24 + 1);
sub_02089604(param0, param0->unk_3B8.unk_24 + 1);
for (v0 = 0; v0 < 4; v0++) {
if (param0->unk_38C.unk_04[v0] == 0) {
if (param0->unk_3B8.unk_04[v0] == 0) {
break;
}
param0->unk_2A4 += param0->unk_38C.unk_04[v0];
param0->unk_3C0++;
param0->unk_2D0 += param0->unk_3B8.unk_04[v0];
param0->unk_3EC++;
}
param0->unk_3C0--;
v2 = 8 * (param0->unk_2A4 + param0->unk_3C0);
param0->unk_274[0] = 112 - v2 / 2;
param0->unk_3EC--;
v2 = 8 * (param0->unk_2D0 + param0->unk_3EC);
param0->unk_2A0[0] = 112 - v2 / 2;
for (v0 = 0; v0 < 4; v0++) {
v2 = 8 * param0->unk_3C0 + (8 * (param0->unk_2A4 - param0->unk_38C.unk_04[v0]) + 32 * param0->unk_38C.unk_04[v0]);
v2 = 8 * param0->unk_3EC + (8 * (param0->unk_2D0 - param0->unk_3B8.unk_04[v0]) + 32 * param0->unk_3B8.unk_04[v0]);
param0->unk_274[v0 + 1] = 112 - v2 / 2;
param0->unk_2A0[v0 + 1] = 112 - v2 / 2;
}
param0->unk_274[1] += 12;
param0->unk_2A0[1] += 12;
v3 = 0;
for (v0 = 0; v0 < param0->unk_3C0; v0++) {
v3 += param0->unk_38C.unk_04[v0];
param0->unk_1A0[v0].unk_00 = v3 - 1;
for (v0 = 0; v0 < param0->unk_3EC; v0++) {
v3 += param0->unk_3B8.unk_04[v0];
param0->unk_1C0[v0].unk_00 = v3 - 1;
}
v5 = 0;
v0 = 0;
do {
for (v4 = 0; v4 < param0->unk_38C.unk_04[v5]; v4++) {
for (v4 = 0; v4 < param0->unk_3B8.unk_04[v5]; v4++) {
param0->unk_00[v0].unk_04 = v5 + 1;
v0++;
}
v5++;
} while (v0 < param0->unk_2A4);
} while (v0 < param0->unk_2D0);
for (v0 = 0; v0 < param0->unk_38C.unk_24; v0++) {
param0->unk_3C4 += param0->unk_38C.unk_04[v0];
for (v0 = 0; v0 < param0->unk_3B8.unk_24; v0++) {
param0->unk_3F0 += param0->unk_3B8.unk_04[v0];
}
}
void sub_02089808(UnkStruct_02089688 *param0, int param1)
{
param0->unk_294 = param1;
param0->unk_298 = 0;
param0->unk_29C = 0;
param0->unk_2A0 = 0;
param0->unk_2C0 = param1;
param0->unk_2C4 = 0;
param0->unk_2C8 = 0;
param0->unk_2CC = 0;
}
BOOL sub_02089820(UnkStruct_02089688 *param0)
@ -116,14 +116,14 @@ BOOL sub_02089820(UnkStruct_02089688 *param0)
sub_0208AF44(param0);
sub_0208AFCC(param0);
sub_0208B064(param0);
sub_0208B1C4(param0->unk_2C0.unk_0C, &param0->unk_2C0.unk_B0, 4, 2, 21, 27, 2, 100, param0->unk_38C.unk_2C);
sub_0208B1C4(param0->unk_2EC.unk_0C, &param0->unk_2EC.unk_B0, 4, 2, 21, 27, 2, 100, param0->unk_3B8.unk_2C);
if (param0->unk_38C.unk_30 != 0) {
if (param0->unk_3B8.unk_30 != 0) {
NNSG2dPaletteData *v0;
void *v1 = sub_020394A8(HEAP_ID_101);
NNS_G2dGetUnpackedPaletteData(v1, &v0);
PaletteData_LoadBuffer(param0->unk_2C0.unk_10, v0->pRawData, 0x1 | 0x2, 0xe0, 0x20);
PaletteData_LoadBuffer(param0->unk_2EC.unk_10, v0->pRawData, 0x1 | 0x2, 0xe0, 0x20);
Heap_Free(v1);
}
@ -135,14 +135,14 @@ BOOL sub_02089820(UnkStruct_02089688 *param0)
BOOL sub_020898DC(UnkStruct_02089688 *param0)
{
switch (param0->unk_29C) {
switch (param0->unk_2C8) {
case 0:
StartScreenFade(FADE_BOTH_SCREENS, FADE_TYPE_UNK_0, FADE_TYPE_UNK_0, FADE_TO_BLACK, 6, 1, HEAP_ID_101);
param0->unk_29C++;
param0->unk_2C8++;
break;
case 1:
if (IsScreenFadeDone() == TRUE) {
param0->unk_29C++;
param0->unk_2C8++;
}
break;
default:
@ -154,15 +154,15 @@ BOOL sub_020898DC(UnkStruct_02089688 *param0)
BOOL sub_02089938(UnkStruct_02089688 *param0)
{
switch (param0->unk_29C) {
switch (param0->unk_2C8) {
case 0:
if (IsScreenFadeDone() == TRUE) {
param0->unk_29C++;
param0->unk_2C8++;
}
break;
default:
sub_0208A328(param0);
TouchScreenActions_HandleAction(param0->unk_2C0.unk_14);
TouchScreenActions_HandleAction(param0->unk_2EC.unk_14);
sub_02089C20(param0);
break;
}
@ -180,11 +180,11 @@ BOOL sub_02089974(UnkStruct_02089688 *param0)
0.8f, 0.6f, 0.4f, 0.2f, 0.8f, 1.0f, 1.0f
};
switch (param0->unk_29C) {
switch (param0->unk_2C8) {
case 0:
sub_0208AAB4(param0, 0, 0);
{
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if (param0->unk_00[v0].unk_14.unk_04 == 0) {
continue;
}
@ -192,45 +192,45 @@ BOOL sub_02089974(UnkStruct_02089688 *param0)
ManagedSprite_OffsetPositionXY(param0->unk_00[v0].unk_0C, param0->unk_00[v0].unk_14.unk_00, param0->unk_00[v0].unk_14.unk_02);
param0->unk_00[v0].unk_14.unk_04--;
if ((v0 >= param0->unk_2B0) && (v0 < param0->unk_2B4)) {
if ((v0 >= param0->unk_2DC) && (v0 < param0->unk_2E0)) {
ManagedSprite_SetAffineScale(param0->unk_00[v0].unk_0C, v1[param0->unk_00[v0].unk_14.unk_05], v1[param0->unk_00[v0].unk_14.unk_05]);
param0->unk_00[v0].unk_14.unk_05++;
}
if ((v0 >= param0->unk_2B8) && (v0 < param0->unk_2BC)) {
if ((v0 >= param0->unk_2E4) && (v0 < param0->unk_2E8)) {
ManagedSprite_SetAffineScale(param0->unk_00[v0].unk_0C, v2[param0->unk_00[v0].unk_14.unk_05], v2[param0->unk_00[v0].unk_14.unk_05]);
param0->unk_00[v0].unk_14.unk_05++;
}
}
for (v0 = 0; v0 < param0->unk_3C0; v0++) {
if (param0->unk_1A0[v0].unk_14.unk_04 == 0) {
for (v0 = 0; v0 < param0->unk_3EC; v0++) {
if (param0->unk_1C0[v0].unk_14.unk_04 == 0) {
continue;
}
ManagedSprite_OffsetPositionXY(param0->unk_1A0[v0].unk_0C, param0->unk_1A0[v0].unk_14.unk_00, param0->unk_1A0[v0].unk_14.unk_02);
param0->unk_1A0[v0].unk_14.unk_04--;
ManagedSprite_OffsetPositionXY(param0->unk_1C0[v0].unk_0C, param0->unk_1C0[v0].unk_14.unk_00, param0->unk_1C0[v0].unk_14.unk_02);
param0->unk_1C0[v0].unk_14.unk_04--;
}
if (param0->unk_00[0].unk_14.unk_04 == 0) {
for (v0 = param0->unk_2B0; v0 < param0->unk_2B4; v0++) {
for (v0 = param0->unk_2DC; v0 < param0->unk_2E0; v0++) {
ManagedSprite_SetAnim(param0->unk_00[v0].unk_0C, sub_0208AD98(param0->unk_00[v0].unk_00, param0->unk_00[v0].unk_08));
ManagedSprite_TickFrame(param0->unk_00[v0].unk_0C);
}
for (v0 = param0->unk_2B8; v0 < param0->unk_2BC; v0++) {
for (v0 = param0->unk_2E4; v0 < param0->unk_2E8; v0++) {
ManagedSprite_SetAnim(param0->unk_00[v0].unk_0C, sub_0208AD98(param0->unk_00[v0].unk_00, param0->unk_00[v0].unk_08));
ManagedSprite_TickFrame(param0->unk_00[v0].unk_0C);
}
param0->unk_29C++;
param0->unk_2C8++;
}
param0->unk_2A0++;
param0->unk_2CC++;
}
break;
case 1:
for (v0 = param0->unk_2B0; v0 < param0->unk_2B4; v0++) {
for (v0 = param0->unk_2DC; v0 < param0->unk_2E0; v0++) {
if (param0->unk_00[v0].unk_14.unk_05 == 6) {
continue;
}
@ -239,7 +239,7 @@ BOOL sub_02089974(UnkStruct_02089688 *param0)
param0->unk_00[v0].unk_14.unk_05++;
}
for (v0 = param0->unk_2B8; v0 < param0->unk_2BC; v0++) {
for (v0 = param0->unk_2E4; v0 < param0->unk_2E8; v0++) {
if (param0->unk_00[v0].unk_14.unk_05 == 6) {
continue;
}
@ -248,22 +248,22 @@ BOOL sub_02089974(UnkStruct_02089688 *param0)
param0->unk_00[v0].unk_14.unk_05++;
}
param0->unk_2A0++;
param0->unk_2CC++;
if (param0->unk_2A0 == 6) {
param0->unk_29C++;
if (param0->unk_2CC == 6) {
param0->unk_2C8++;
}
break;
default:
sub_0208AF44(param0);
if (param0->unk_380.unk_08 == 0) {
sub_0208AAE4(param0, sub_0208A398(param0, param0->unk_380.unk_04));
if (param0->unk_3AC.unk_08 == 0) {
sub_0208AAE4(param0, sub_0208A398(param0, param0->unk_3AC.unk_04));
} else {
sub_0208AAE4(param0, sub_0208A3C0(param0, param0->unk_380.unk_04));
sub_0208AAE4(param0, sub_0208A3C0(param0, param0->unk_3AC.unk_04));
}
if (param0->unk_2A8 != 0) {
if (param0->unk_2D4 != 0) {
sub_0208AAB4(param0, 0, 1);
}
@ -284,11 +284,11 @@ static BOOL (*const Unk_020F2EB8[])(UnkStruct_02089688 *) = {
BOOL sub_02089BEC(UnkStruct_02089688 *param0)
{
BOOL v0 = Unk_020F2EB8[param0->unk_294](param0);
BOOL v0 = Unk_020F2EB8[param0->unk_2C0](param0);
sub_0208ABB4(param0);
sub_0208AC8C(param0);
SpriteSystem_DrawSprites(param0->unk_2C0.unk_08);
SpriteSystem_DrawSprites(param0->unk_2EC.unk_08);
return v0;
}
@ -751,10 +751,10 @@ void sub_02089F80(UnkStruct_02089688 *param0)
u32 v1 = 0;
Strbuf *v2 = Strbuf_Init(100, HEAP_ID_101);
param0->unk_240[1].unk_00 = 1;
param0->unk_240[1].unk_14.unk_04 = 0;
param0->unk_268[1].unk_00 = 1;
param0->unk_268[1].unk_14.unk_04 = 0;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if (param0->unk_00[v0].unk_00 == 0) {
param0->unk_00[v0].unk_00 = 1;
ManagedSprite_SetAnim(param0->unk_00[v0].unk_0C, sub_0208AD98(param0->unk_00[v0].unk_00, param0->unk_00[v0].unk_08));
@ -762,7 +762,7 @@ void sub_02089F80(UnkStruct_02089688 *param0)
v1 = param0->unk_00[v0].unk_00 - 1;
Strbuf_FormatInt(v2, v1, 1, 1, 1);
Strbuf_Concat(param0->unk_38C.unk_1C, v2);
Strbuf_Concat(param0->unk_3B8.unk_1C, v2);
}
Strbuf_Free(v2);
@ -775,39 +775,39 @@ void sub_02089FFC(UnkStruct_02089688 *param0)
int v1;
int v2;
param0->unk_240[0].unk_00 = 1;
param0->unk_240[0].unk_14.unk_04 = 0;
param0->unk_268[0].unk_00 = 1;
param0->unk_268[0].unk_14.unk_04 = 0;
if (param0->unk_2A8 == 0) {
v0 = param0->unk_1F0[0].unk_00 = param0->unk_2A4 - 1;
if (param0->unk_2D4 == 0) {
v0 = param0->unk_214[0].unk_00 = param0->unk_2D0 - 1;
v2 = param0->unk_00[v0].unk_04;
param0->unk_380.unk_00 = 1;
param0->unk_380.unk_04 = v2;
param0->unk_380.unk_08 = 1;
param0->unk_3AC.unk_00 = 1;
param0->unk_3AC.unk_04 = v2;
param0->unk_3AC.unk_08 = 1;
return;
}
v0 = param0->unk_1F0[0].unk_00;
v0 = param0->unk_214[0].unk_00;
param0->unk_00[v0].unk_00 = 0;
ManagedSprite_SetAnim(param0->unk_00[v0].unk_0C, sub_0208AD98(param0->unk_00[v0].unk_00, param0->unk_00[v0].unk_08));
v1 = param0->unk_00[v0].unk_04;
if (v0 > param0->unk_3C4) {
if (v0 > param0->unk_3F0) {
v0--;
ManagedSprite_SetAnim(param0->unk_00[v0].unk_0C, sub_0208AD98(param0->unk_00[v0].unk_00, param0->unk_00[v0].unk_08));
v2 = param0->unk_00[v0].unk_04;
if (v1 != v2) {
param0->unk_380.unk_00 = 1;
param0->unk_380.unk_04 = v2;
param0->unk_380.unk_08 = 1;
param0->unk_3AC.unk_00 = 1;
param0->unk_3AC.unk_04 = v2;
param0->unk_3AC.unk_08 = 1;
} else {
param0->unk_380.unk_00 = 2;
param0->unk_380.unk_04 = v0;
param0->unk_3AC.unk_00 = 2;
param0->unk_3AC.unk_04 = v0;
}
}
}
@ -817,7 +817,7 @@ void sub_0208A0B8(UnkStruct_02089688 *param0)
int v0;
for (v0 = 0; v0 < 15 + 1; v0++) {
param0->unk_00[v0].unk_10 = &param0->unk_2C0.unk_18[v0];
param0->unk_00[v0].unk_10 = &param0->unk_2EC.unk_18[v0];
}
{
@ -837,55 +837,55 @@ void sub_0208A0B8(UnkStruct_02089688 *param0)
};
for (; v0 < 0x1c; v0++) {
param0->unk_2C0.unk_18[v0].rect.top = v1[v0 - 16][1] - v1[v0 - 16][3];
param0->unk_2C0.unk_18[v0].rect.left = v1[v0 - 16][0] - v1[v0 - 16][2];
param0->unk_2C0.unk_18[v0].rect.bottom = v1[v0 - 16][1] + v1[v0 - 16][3];
param0->unk_2C0.unk_18[v0].rect.right = v1[v0 - 16][0] + v1[v0 - 16][2];
param0->unk_2EC.unk_18[v0].rect.top = v1[v0 - 16][1] - v1[v0 - 16][3];
param0->unk_2EC.unk_18[v0].rect.left = v1[v0 - 16][0] - v1[v0 - 16][2];
param0->unk_2EC.unk_18[v0].rect.bottom = v1[v0 - 16][1] + v1[v0 - 16][3];
param0->unk_2EC.unk_18[v0].rect.right = v1[v0 - 16][0] + v1[v0 - 16][2];
}
}
param0->unk_2C0.unk_14 = TouchScreenActions_RegisterHandler(param0->unk_2C0.unk_18, 0x1c, sub_0208A180, param0, HEAP_ID_101);
param0->unk_2EC.unk_14 = TouchScreenActions_RegisterHandler(param0->unk_2EC.unk_18, 0x1c, sub_0208A180, param0, HEAP_ID_101);
}
void sub_0208A180(u32 param0, enum TouchScreenButtonState param1, void *param2)
{
UnkStruct_02089688 *v0 = param2;
if (v0->unk_294 != 1) {
if (v0->unk_2C0 != 1) {
return;
}
if (v0->unk_2C0.unk_88 != 1) {
v0->unk_2C0.unk_88 = 1;
if (v0->unk_2EC.unk_88 != 1) {
v0->unk_2EC.unk_88 = 1;
}
if (param1 == TOUCH_BUTTON_PRESSED) {
if ((param0 >= 0) && (param0 < 16)) {
if (param0 < v0->unk_3C4) {
if (param0 < v0->unk_3F0) {
return;
}
if (v0->unk_00[param0].unk_08 == 1) {
v0->unk_380.unk_00 = 2;
v0->unk_380.unk_04 = param0;
v0->unk_3AC.unk_00 = 2;
v0->unk_3AC.unk_04 = param0;
} else {
v0->unk_380.unk_00 = 1;
v0->unk_380.unk_04 = v0->unk_00[param0].unk_04;
v0->unk_3AC.unk_00 = 1;
v0->unk_3AC.unk_04 = v0->unk_00[param0].unk_04;
}
Sound_PlayEffect(SEQ_SE_DP_BUTTON3);
} else {
if (param0 == 26) {
v0->unk_1F0[1].unk_14.unk_00 = 0;
v0->unk_1F0[1].unk_14.unk_02 = 2;
v0->unk_214[1].unk_14.unk_00 = 0;
v0->unk_214[1].unk_14.unk_02 = 2;
Sound_PlayEffect(SEQ_SE_DP_BUTTON3);
} else if (param0 == 27) {
v0->unk_1F0[1].unk_14.unk_00 = 3;
v0->unk_1F0[1].unk_14.unk_02 = 2;
v0->unk_214[1].unk_14.unk_00 = 3;
v0->unk_214[1].unk_14.unk_02 = 2;
Sound_PlayEffect(SEQ_SE_DP_PIRORIRO);
} else {
v0->unk_1F0[1].unk_14.unk_00 = (param0 - 16) % 5;
v0->unk_1F0[1].unk_14.unk_02 = (param0 - 16) / 5;
v0->unk_214[1].unk_14.unk_00 = (param0 - 16) % 5;
v0->unk_214[1].unk_14.unk_02 = (param0 - 16) / 5;
Sound_PlayEffect(SEQ_SE_DP_BUTTON3);
}
@ -894,11 +894,11 @@ void sub_0208A180(u32 param0, enum TouchScreenButtonState param1, void *param2)
int v2;
int v3;
if (v0->unk_2A8 == 0) {
if (v0->unk_2D4 == 0) {
return;
}
v1 = v0->unk_1F0[0].unk_00;
v1 = v0->unk_214[0].unk_00;
v0->unk_00[v1].unk_00 = param0 - 16 + 1;
ManagedSprite_SetAnim(v0->unk_00[v1].unk_0C, sub_0208AD98(v0->unk_00[v1].unk_00, v0->unk_00[v1].unk_08));
@ -907,25 +907,25 @@ void sub_0208A180(u32 param0, enum TouchScreenButtonState param1, void *param2)
sub_0208AAB4(v0, 1, 0);
sub_0208AAB4(v0, 2, 1);
sub_0208AB6C(v0, param0 - 16, 2);
ManagedSprite_SetAnim(v0->unk_1F0[2].unk_0C, 3);
ManagedSprite_SetAnim(v0->unk_214[2].unk_0C, 3);
v2 = v0->unk_00[v1].unk_04;
v1++;
if (v1 == v0->unk_2A4) {
v0->unk_380.unk_00 = 1;
v0->unk_380.unk_04 = 0;
v0->unk_380.unk_08 = 0;
if (v1 == v0->unk_2D0) {
v0->unk_3AC.unk_00 = 1;
v0->unk_3AC.unk_04 = 0;
v0->unk_3AC.unk_08 = 0;
} else {
v3 = v0->unk_00[v1].unk_04;
if (v2 != v3) {
v0->unk_380.unk_00 = 1;
v0->unk_380.unk_04 = v3;
v0->unk_380.unk_08 = 0;
v0->unk_3AC.unk_00 = 1;
v0->unk_3AC.unk_04 = v3;
v0->unk_3AC.unk_08 = 0;
} else {
v0->unk_380.unk_00 = 2;
v0->unk_380.unk_04 = v1;
v0->unk_3AC.unk_00 = 2;
v0->unk_3AC.unk_04 = v1;
}
}
} else {
@ -941,18 +941,18 @@ void sub_0208A180(u32 param0, enum TouchScreenButtonState param1, void *param2)
void sub_0208A328(UnkStruct_02089688 *param0)
{
switch (param0->unk_380.unk_00) {
switch (param0->unk_3AC.unk_00) {
case 0:
break;
case 1:
sub_02089604(param0, param0->unk_380.unk_04);
sub_02089604(param0, param0->unk_3AC.unk_04);
sub_0208ADA4(param0);
sub_0208ADE4(param0, 1);
sub_02089808(param0, 2);
param0->unk_380.unk_00 = 0xFF;
param0->unk_3AC.unk_00 = 0xFF;
break;
case 2:
sub_0208AAE4(param0, param0->unk_380.unk_04);
sub_0208AAE4(param0, param0->unk_3AC.unk_04);
sub_0208A384(param0);
break;
case 0xFF:
@ -962,16 +962,16 @@ void sub_0208A328(UnkStruct_02089688 *param0)
void sub_0208A384(UnkStruct_02089688 *param0)
{
param0->unk_380.unk_00 = 0;
param0->unk_380.unk_04 = 0;
param0->unk_380.unk_08 = 0;
param0->unk_3AC.unk_00 = 0;
param0->unk_3AC.unk_04 = 0;
param0->unk_3AC.unk_08 = 0;
}
int sub_0208A398(UnkStruct_02089688 *param0, int param1)
{
int v0;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if (param0->unk_00[v0].unk_04 == param1) {
return v0;
}
@ -986,7 +986,7 @@ int sub_0208A3C0(UnkStruct_02089688 *param0, int param1)
int v1 = 0;
int v2 = 0;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if (param0->unk_00[v0].unk_04 == param1) {
v2 = 1;
} else {
@ -996,5 +996,5 @@ int sub_0208A3C0(UnkStruct_02089688 *param0, int param1)
}
}
return param0->unk_2A4 - 1;
return param0->unk_2D0 - 1;
}

View File

@ -25,7 +25,7 @@
void sub_0208A3F4(UnkStruct_02089688 *param0)
{
param0->unk_2C0.unk_04 = SpriteSystem_Alloc(101);
param0->unk_2EC.unk_04 = SpriteSystem_Alloc(101);
{
const RenderOamTemplate v0 = {
0,
@ -41,7 +41,7 @@ void sub_0208A3F4(UnkStruct_02089688 *param0)
48 + 48, 1024 * 0x40, 512 * 0x20, GX_OBJVRAMMODE_CHAR_1D_64K, GX_OBJVRAMMODE_CHAR_1D_32K
};
SpriteSystem_Init(param0->unk_2C0.unk_04, &v0, &v1, 16 + 16);
SpriteSystem_Init(param0->unk_2EC.unk_04, &v0, &v1, 16 + 16);
}
{
@ -55,12 +55,12 @@ void sub_0208A3F4(UnkStruct_02089688 *param0)
16,
};
param0->unk_2C0.unk_08 = SpriteManager_New(param0->unk_2C0.unk_04);
param0->unk_2EC.unk_08 = SpriteManager_New(param0->unk_2EC.unk_04);
v2 = SpriteSystem_InitSprites(param0->unk_2C0.unk_04, param0->unk_2C0.unk_08, 64 + 64);
v2 = SpriteSystem_InitSprites(param0->unk_2EC.unk_04, param0->unk_2EC.unk_08, 64 + 64);
GF_ASSERT(v2);
v2 = SpriteSystem_InitManagerWithCapacities(param0->unk_2C0.unk_04, param0->unk_2C0.unk_08, &v3);
v2 = SpriteSystem_InitManagerWithCapacities(param0->unk_2EC.unk_04, param0->unk_2EC.unk_08, &v3);
GF_ASSERT(v2);
}
}
@ -69,11 +69,11 @@ void sub_0208A490(UnkStruct_02089688 *param0)
{
NARC *v0;
BgConfig *v1;
SpriteSystem *v2 = param0->unk_2C0.unk_04;
SpriteManager *v3 = param0->unk_2C0.unk_08;
PaletteData *v4 = param0->unk_2C0.unk_10;
v1 = param0->unk_2C0.unk_0C;
v0 = param0->unk_2C0.unk_00;
SpriteSystem *v2 = param0->unk_2EC.unk_04;
SpriteManager *v3 = param0->unk_2EC.unk_08;
PaletteData *v4 = param0->unk_2EC.unk_10;
v1 = param0->unk_2EC.unk_0C;
v0 = param0->unk_2EC.unk_00;
Graphics_LoadTilesToBgLayerFromOpenNARC(v0, 12, v1, 1, 0, 0, 0, HEAP_ID_101);
Graphics_LoadTilemapToBgLayerFromOpenNARC(v0, 14, v1, 1, 0, 0, 0, HEAP_ID_101);
@ -99,7 +99,7 @@ void sub_0208A490(UnkStruct_02089688 *param0)
SpriteSystem_LoadAnimResObjFromOpenNarc(v2, v3, v0, 11, FALSE, 1002);
{
int v5 = Options_Frame(param0->unk_38C.options);
int v5 = Options_Frame(param0->unk_3B8.options);
LoadMessageBoxGraphics(v1, BG_LAYER_SUB_0, 1, 10, v5, HEAP_ID_101);
PaletteData_LoadBufferFromFileStart(v4, 38, GetMessageBoxPaletteNARCMember(v5), 101, 1, 0x20, 11 * 16);
@ -111,198 +111,81 @@ void sub_0208A6CC(UnkStruct_02089688 *param0)
{
int v0;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
Sprite_DeleteAndFreeResources(param0->unk_00[v0].unk_0C);
}
for (v0 = 0; v0 < param0->unk_3C0; v0++) {
Sprite_DeleteAndFreeResources(param0->unk_1A0[v0].unk_0C);
for (v0 = 0; v0 < param0->unk_3EC; v0++) {
Sprite_DeleteAndFreeResources(param0->unk_1C0[v0].unk_0C);
}
for (v0 = 0; v0 < 2; v0++) {
Sprite_DeleteAndFreeResources(param0->unk_240[v0].unk_0C);
Sprite_DeleteAndFreeResources(param0->unk_268[v0].unk_0C);
}
for (v0 = 0; v0 < 3; v0++) {
Sprite_DeleteAndFreeResources(param0->unk_1F0[v0].unk_0C);
Sprite_DeleteAndFreeResources(param0->unk_214[v0].unk_0C);
}
sub_0208AFE8(param0);
Window_Remove(&param0->unk_2C0.unk_B0);
Window_Remove(&param0->unk_2EC.unk_B0);
}
extern void _u32_div_f(void);
// clang-format off
asm void sub_0208A758 (UnkStruct_02089688 * param0)
void sub_0208A758(UnkStruct_02089688 *param0)
{
push {r4, r5, r6, r7, lr}
sub sp, #0x44
str r0, [sp]
mov r0, #0
str r0, [sp, #0xc]
mov r0, #0x2f
lsl r0, r0, #4
ldr r1, [sp]
add r2, r0, #4
ldr r1, [r1, r0]
str r1, [sp, #8]
ldr r1, [sp]
ldr r1, [r1, r2]
add r2, sp, #0x10
str r1, [sp, #4]
ldr r1, [sp, #0xc]
strh r1, [r2]
strh r1, [r2, #2]
strh r1, [r2, #4]
strh r1, [r2, #6]
mov r1, #0xa
str r1, [sp, #0x18]
ldr r1, [sp, #0xc]
mov r2, #1
str r1, [sp, #0x3c]
str r1, [sp, #0x40]
str r1, [sp, #0x1c]
add r1, r0, #0
add r1, #0xf8
str r1, [sp, #0x24]
str r1, [sp, #0x28]
str r1, [sp, #0x2c]
str r1, [sp, #0x30]
sub r1, r2, #2
str r1, [sp, #0x34]
str r1, [sp, #0x38]
ldr r1, [sp]
str r2, [sp, #0x20]
add r0, #0xf0
ldr r4, [r1, r0]
mov r1, #0x3f
ldr r0, [sp]
lsl r1, r1, #4
ldr r0, [r0, r1]
sub r6, r0, #1
bmi _0208A7DC
mov r0, #0x1c
add r1, r6, #0
mul r1, r0
ldr r0, [sp]
mov r7, #0xa
add r5, r0, r1
_0208A7C0:
add r0, r4, #0
add r1, r7, #0
bl _u32_div_f
add r0, r1, #1
str r0, [r5]
add r0, r4, #0
mov r1, #0xa
bl _u32_div_f
add r4, r0, #0
sub r5, #0x1c
sub r6, r6, #1
bpl _0208A7C0
_0208A7DC:
mov r1, #0xfb
ldr r0, [sp]
lsl r1, r1, #2
ldr r0, [r0, r1]
mov r2, #0x2d
ldr r1, [sp]
lsl r2, r2, #4
ldr r1, [r1, r2]
mov r6, #0
add r1, r1, r0
cmp r1, #0
ble _0208A89C
ldr r4, [sp]
mov r7, #0x4c
add r5, r4, #0
_0208A7FA:
cmp r0, #0
beq _0208A84C
mov r0, #7
lsl r0, r0, #6
ldr r1, [r4, r0]
ldr r0, [sp, #0xc]
add r0, r0, r1
add r0, r0, #1
cmp r6, r0
bne _0208A84C
ldr r0, [sp, #8]
ldr r1, [sp, #4]
add r2, sp, #0x10
bl SpriteSystem_NewSprite
mov r1, #0x73
lsl r1, r1, #2
str r0, [r4, r1]
add r0, r1, #0
lsl r1, r7, #0x10
ldr r0, [r4, r0]
asr r1, r1, #0x10
mov r2, #0x18
bl ManagedSprite_SetPositionXY
mov r0, #0x73
lsl r0, r0, #2
ldr r0, [r4, r0]
mov r1, #0x16
bl ManagedSprite_SetAnim
mov r0, #0x73
lsl r0, r0, #2
ldr r0, [r4, r0]
bl ManagedSprite_TickFrame
ldr r0, [sp, #0xc]
add r4, #0x1c
add r0, r0, #1
str r0, [sp, #0xc]
b _0208A882
_0208A84C:
ldr r0, [sp, #8]
ldr r1, [sp, #4]
add r2, sp, #0x10
bl SpriteSystem_NewSprite
lsl r1, r7, #0x10
str r0, [r5, #0xc]
asr r1, r1, #0x10
mov r2, #0x18
bl ManagedSprite_SetPositionXY
ldr r0, [r5, #0]
ldr r1, [r5, #8]
bl sub_0208AD98
add r1, r0, #0
ldr r0, [r5, #0xc]
bl ManagedSprite_SetAnim
ldr r0, [r5, #0xc]
mov r1, #2
bl ManagedSprite_SetAffineOverwriteMode
ldr r0, [r5, #0xc]
bl ManagedSprite_TickFrame
add r5, #0x1c
_0208A882:
ldr r1, [sp]
mov r0, #0xfb
lsl r0, r0, #2
ldr r0, [r1, r0]
add r2, r1, #0
mov r1, #0x2d
lsl r1, r1, #4
ldr r1, [r2, r1]
add r6, r6, #1
add r1, r1, r0
add r7, #8
cmp r6, r1
blt _0208A7FA
_0208A89C:
add sp, #0x44
pop {r4, r5, r6, r7, pc}
int i;
int v0 = 0, v1 = 0;
SpriteTemplate v2;
SpriteSystem *v3 = param0->unk_2EC.unk_04;
SpriteManager *v4 = param0->unk_2EC.unk_08;
v2.x = 0;
v2.y = 0;
v2.z = 0;
v2.animIdx = 0;
v2.priority = 10;
v2.vramType = NNS_G2D_VRAM_TYPE_2DMAIN;
v2.bgPriority = 0;
v2.vramTransfer = FALSE;
v2.plttIdx = 0;
v2.resources[0] = 1000;
v2.resources[1] = 1000;
v2.resources[2] = 1000;
v2.resources[3] = 1000;
v2.resources[4] = SPRITE_RESOURCE_NONE;
v2.resources[5] = SPRITE_RESOURCE_NONE;
u32 v5 = param0->unk_3B8.unk_28;
for (i = param0->unk_3F0 - 1; i >= 0; i--) {
param0->unk_00[i].unk_00 = (v5 % 10) + 1;
v5 /= 10;
}
for (i = 0; i < param0->unk_2D0 + param0->unk_3EC; i++) {
if (param0->unk_3EC != 0 && i == param0->unk_1C0[v0].unk_00 + v0 + 1) {
param0->unk_1C0[v0].unk_0C = SpriteSystem_NewSprite(v3, v4, &v2);
ManagedSprite_SetPositionXY(param0->unk_1C0[v0].unk_0C, 76 + i * 8, 24);
ManagedSprite_SetAnim(param0->unk_1C0[v0].unk_0C, 22);
ManagedSprite_TickFrame(param0->unk_1C0[v0].unk_0C);
v0++;
} else {
param0->unk_00[v1].unk_0C = SpriteSystem_NewSprite(v3, v4, &v2);
ManagedSprite_SetPositionXY(param0->unk_00[v1].unk_0C, 76 + i * 8, 24);
ManagedSprite_SetAnim(param0->unk_00[v1].unk_0C, sub_0208AD98(param0->unk_00[v1].unk_00, param0->unk_00[v1].unk_08));
ManagedSprite_SetAffineOverwriteMode(param0->unk_00[v1].unk_0C, AFFINE_OVERWRITE_MODE_DOUBLE);
ManagedSprite_TickFrame(param0->unk_00[v1].unk_0C);
v1++;
}
}
}
// clang-format on
void sub_0208A8A0(UnkStruct_02089688 *param0)
{
SpriteTemplate v0;
SpriteSystem *v1 = param0->unk_2C0.unk_04;
SpriteManager *v2 = param0->unk_2C0.unk_08;
PaletteData *v3 = param0->unk_2C0.unk_10;
SpriteSystem *v1 = param0->unk_2EC.unk_04;
SpriteManager *v2 = param0->unk_2EC.unk_08;
PaletteData *v3 = param0->unk_2EC.unk_10;
v0.x = 0;
v0.y = 0;
@ -320,31 +203,31 @@ void sub_0208A8A0(UnkStruct_02089688 *param0)
v0.resources[4] = SPRITE_RESOURCE_NONE;
v0.resources[5] = SPRITE_RESOURCE_NONE;
param0->unk_1F0[0].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_1F0[1].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_1F0[2].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_214[0].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_214[1].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_214[2].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
sub_0208AAE4(param0, param0->unk_3C4);
ManagedSprite_SetAnim(param0->unk_1F0[0].unk_0C, 0);
ManagedSprite_TickFrame(param0->unk_1F0[0].unk_0C);
sub_0208AAE4(param0, param0->unk_3F0);
ManagedSprite_SetAnim(param0->unk_214[0].unk_0C, 0);
ManagedSprite_TickFrame(param0->unk_214[0].unk_0C);
param0->unk_1F0[1].unk_14.unk_00 = 0;
param0->unk_1F0[1].unk_14.unk_02 = 0;
param0->unk_1F0[1].unk_00 = 1;
param0->unk_214[1].unk_14.unk_00 = 0;
param0->unk_214[1].unk_14.unk_02 = 0;
param0->unk_214[1].unk_00 = 1;
sub_0208AB2C(param0, 0);
ManagedSprite_SetAnim(param0->unk_1F0[1].unk_0C, param0->unk_1F0[1].unk_00);
ManagedSprite_TickFrame(param0->unk_1F0[1].unk_0C);
ManagedSprite_SetExplicitOamMode(param0->unk_1F0[1].unk_0C, GX_OAM_MODE_XLU);
ManagedSprite_SetAnim(param0->unk_214[1].unk_0C, param0->unk_214[1].unk_00);
ManagedSprite_TickFrame(param0->unk_214[1].unk_0C);
ManagedSprite_SetExplicitOamMode(param0->unk_214[1].unk_0C, GX_OAM_MODE_XLU);
param0->unk_1F0[2].unk_14.unk_00 = 0;
param0->unk_1F0[2].unk_14.unk_02 = 0;
param0->unk_1F0[2].unk_00 = 1;
param0->unk_214[2].unk_14.unk_00 = 0;
param0->unk_214[2].unk_14.unk_02 = 0;
param0->unk_214[2].unk_00 = 1;
sub_0208AB2C(param0, 0);
ManagedSprite_SetAnim(param0->unk_1F0[2].unk_0C, param0->unk_1F0[2].unk_00);
ManagedSprite_TickFrame(param0->unk_1F0[2].unk_0C);
ManagedSprite_SetExplicitOamMode(param0->unk_1F0[2].unk_0C, GX_OAM_MODE_XLU);
ManagedSprite_SetAnim(param0->unk_214[2].unk_0C, param0->unk_214[2].unk_00);
ManagedSprite_TickFrame(param0->unk_214[2].unk_0C);
ManagedSprite_SetExplicitOamMode(param0->unk_214[2].unk_0C, GX_OAM_MODE_XLU);
sub_0208AAB4(param0, 1, 0);
sub_0208AAB4(param0, 2, 0);
}
@ -352,9 +235,9 @@ void sub_0208A8A0(UnkStruct_02089688 *param0)
void sub_0208A9BC(UnkStruct_02089688 *param0)
{
SpriteTemplate v0;
SpriteSystem *v1 = param0->unk_2C0.unk_04;
SpriteManager *v2 = param0->unk_2C0.unk_08;
PaletteData *v3 = param0->unk_2C0.unk_10;
SpriteSystem *v1 = param0->unk_2EC.unk_04;
SpriteManager *v2 = param0->unk_2EC.unk_08;
PaletteData *v3 = param0->unk_2EC.unk_10;
v0.x = 0;
v0.y = 0;
@ -372,35 +255,35 @@ void sub_0208A9BC(UnkStruct_02089688 *param0)
v0.resources[4] = SPRITE_RESOURCE_NONE;
v0.resources[5] = SPRITE_RESOURCE_NONE;
v0.plttIdx = 0;
param0->unk_240[0].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_268[0].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
v0.plttIdx = 1;
param0->unk_240[1].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
param0->unk_268[1].unk_0C = SpriteSystem_NewSprite(v1, v2, &v0);
{
s16 v4, v5;
v4 = (param0->unk_2C0.unk_18[26].rect.left + param0->unk_2C0.unk_18[26].rect.right) / 2;
v5 = (param0->unk_2C0.unk_18[26].rect.top + param0->unk_2C0.unk_18[26].rect.bottom) / 2;
v4 = (param0->unk_2EC.unk_18[26].rect.left + param0->unk_2EC.unk_18[26].rect.right) / 2;
v5 = (param0->unk_2EC.unk_18[26].rect.top + param0->unk_2EC.unk_18[26].rect.bottom) / 2;
ManagedSprite_SetPositionXY(param0->unk_240[0].unk_0C, v4, v5);
ManagedSprite_SetAnim(param0->unk_240[0].unk_0C, 0);
ManagedSprite_TickFrame(param0->unk_240[0].unk_0C);
ManagedSprite_SetPositionXY(param0->unk_268[0].unk_0C, v4, v5);
ManagedSprite_SetAnim(param0->unk_268[0].unk_0C, 0);
ManagedSprite_TickFrame(param0->unk_268[0].unk_0C);
v4 = (param0->unk_2C0.unk_18[27].rect.left + param0->unk_2C0.unk_18[27].rect.right) / 2;
v5 = (param0->unk_2C0.unk_18[27].rect.top + param0->unk_2C0.unk_18[27].rect.bottom) / 2;
v4 = (param0->unk_2EC.unk_18[27].rect.left + param0->unk_2EC.unk_18[27].rect.right) / 2;
v5 = (param0->unk_2EC.unk_18[27].rect.top + param0->unk_2EC.unk_18[27].rect.bottom) / 2;
ManagedSprite_SetPositionXY(param0->unk_240[1].unk_0C, v4, v5);
ManagedSprite_SetAnim(param0->unk_240[1].unk_0C, 0);
ManagedSprite_TickFrame(param0->unk_240[1].unk_0C);
ManagedSprite_SetPositionXY(param0->unk_268[1].unk_0C, v4, v5);
ManagedSprite_SetAnim(param0->unk_268[1].unk_0C, 0);
ManagedSprite_TickFrame(param0->unk_268[1].unk_0C);
}
}
void sub_0208AAB4(UnkStruct_02089688 *param0, int param1, BOOL param2)
{
if (param2 == 1) {
ManagedSprite_SetDrawFlag(param0->unk_1F0[param1].unk_0C, 1);
ManagedSprite_SetDrawFlag(param0->unk_214[param1].unk_0C, 1);
} else {
ManagedSprite_SetDrawFlag(param0->unk_1F0[param1].unk_0C, 0);
ManagedSprite_SetDrawFlag(param0->unk_214[param1].unk_0C, 0);
}
}
@ -409,38 +292,38 @@ void sub_0208AAE4(UnkStruct_02089688 *param0, int param1)
s16 v0, v1;
ManagedSprite *v2;
if (param1 < param0->unk_3C4) {
if (param1 < param0->unk_3F0) {
return;
}
v2 = param0->unk_00[param1].unk_0C;
param0->unk_1F0[0].unk_00 = param1;
param0->unk_214[0].unk_00 = param1;
ManagedSprite_GetPositionXY(v2, &v0, &v1);
ManagedSprite_SetPositionXY(param0->unk_1F0[0].unk_0C, v0, v1 + 16);
ManagedSprite_SetPositionXY(param0->unk_214[0].unk_0C, v0, v1 + 16);
}
void sub_0208AB2C(UnkStruct_02089688 *param0, int param1)
{
s16 v0 = (param0->unk_2C0.unk_18[param1 + 16].rect.left + param0->unk_2C0.unk_18[param1 + 16].rect.right) / 2;
s16 v1 = (param0->unk_2C0.unk_18[param1 + 16].rect.top + param0->unk_2C0.unk_18[param1 + 16].rect.bottom) / 2;
s16 v0 = (param0->unk_2EC.unk_18[param1 + 16].rect.left + param0->unk_2EC.unk_18[param1 + 16].rect.right) / 2;
s16 v1 = (param0->unk_2EC.unk_18[param1 + 16].rect.top + param0->unk_2EC.unk_18[param1 + 16].rect.bottom) / 2;
ManagedSprite_SetPositionXY(param0->unk_1F0[1].unk_0C, v0, v1);
ManagedSprite_SetPositionXY(param0->unk_214[1].unk_0C, v0, v1);
}
void sub_0208AB6C(UnkStruct_02089688 *param0, int param1, int param2)
{
s16 v0 = (param0->unk_2C0.unk_18[param1 + 16].rect.left + param0->unk_2C0.unk_18[param1 + 16].rect.right) / 2;
s16 v1 = (param0->unk_2C0.unk_18[param1 + 16].rect.top + param0->unk_2C0.unk_18[param1 + 16].rect.bottom) / 2;
s16 v0 = (param0->unk_2EC.unk_18[param1 + 16].rect.left + param0->unk_2EC.unk_18[param1 + 16].rect.right) / 2;
s16 v1 = (param0->unk_2EC.unk_18[param1 + 16].rect.top + param0->unk_2EC.unk_18[param1 + 16].rect.bottom) / 2;
ManagedSprite_SetPositionXY(param0->unk_1F0[param2].unk_0C, v0, v1);
ManagedSprite_SetPositionXY(param0->unk_214[param2].unk_0C, v0, v1);
}
void sub_0208ABB4(UnkStruct_02089688 *param0)
{
ManagedSprite_TickFrame(param0->unk_1F0[0].unk_0C);
ManagedSprite_TickFrame(param0->unk_1F0[1].unk_0C);
ManagedSprite_TickFrame(param0->unk_1F0[2].unk_0C);
ManagedSprite_TickFrame(param0->unk_214[0].unk_0C);
ManagedSprite_TickFrame(param0->unk_214[1].unk_0C);
ManagedSprite_TickFrame(param0->unk_214[2].unk_0C);
{
int v0 = 2;
@ -448,15 +331,15 @@ void sub_0208ABB4(UnkStruct_02089688 *param0)
BOOL v2;
for (v0 = 1; v0 < 3; v0++) {
v1 = ManagedSprite_GetActiveAnim(param0->unk_1F0[v0].unk_0C);
v1 = ManagedSprite_GetActiveAnim(param0->unk_214[v0].unk_0C);
if (v1 == 3) {
v2 = ManagedSprite_IsAnimated(param0->unk_1F0[v0].unk_0C);
v2 = ManagedSprite_IsAnimated(param0->unk_214[v0].unk_0C);
if (v2 == 0) {
ManagedSprite_SetAnim(param0->unk_1F0[v0].unk_0C, param0->unk_1F0[v0].unk_00);
ManagedSprite_SetAnim(param0->unk_214[v0].unk_0C, param0->unk_214[v0].unk_00);
if (param0->unk_2C0.unk_88 == 1) {
if (param0->unk_2EC.unk_88 == 1) {
sub_0208AAB4(param0, 1, 0);
} else {
sub_0208AAB4(param0, 1, 1);
@ -465,15 +348,15 @@ void sub_0208ABB4(UnkStruct_02089688 *param0)
sub_0208AAB4(param0, 2, 0);
}
} else {
if (v1 != param0->unk_1F0[v0].unk_00) {
ManagedSprite_SetAnim(param0->unk_1F0[v0].unk_0C, param0->unk_1F0[v0].unk_00);
if (v1 != param0->unk_214[v0].unk_00) {
ManagedSprite_SetAnim(param0->unk_214[v0].unk_0C, param0->unk_214[v0].unk_00);
}
{
v1 = ManagedSprite_GetActiveAnim(param0->unk_1F0[2].unk_0C);
v1 = ManagedSprite_GetActiveAnim(param0->unk_214[2].unk_0C);
if (v1 != 3) {
if (param0->unk_2C0.unk_88 == 1) {
if (param0->unk_2EC.unk_88 == 1) {
sub_0208AAB4(param0, 1, 0);
} else {
sub_0208AAB4(param0, 1, 1);
@ -501,34 +384,34 @@ void sub_0208AC8C(UnkStruct_02089688 *param0)
s16 v1, v2;
for (v0 = 0; v0 < 2; v0++) {
v1 = (param0->unk_2C0.unk_18[v0 + 26].rect.left + param0->unk_2C0.unk_18[v0 + 26].rect.right) / 2;
v1 = (param0->unk_2EC.unk_18[v0 + 26].rect.left + param0->unk_2EC.unk_18[v0 + 26].rect.right) / 2;
v1 -= 40;
v2 = (param0->unk_2C0.unk_18[v0 + 26].rect.top + param0->unk_2C0.unk_18[v0 + 26].rect.bottom) / 2;
v2 = (param0->unk_2EC.unk_18[v0 + 26].rect.top + param0->unk_2EC.unk_18[v0 + 26].rect.bottom) / 2;
v2 -= 7;
switch (param0->unk_240[v0].unk_00) {
switch (param0->unk_268[v0].unk_00) {
case 0:
param0->unk_240[v0].unk_14.unk_04 = 0;
param0->unk_268[v0].unk_14.unk_04 = 0;
break;
case 1:
param0->unk_240[v0].unk_14.unk_04++;
param0->unk_268[v0].unk_14.unk_04++;
if (param0->unk_240[v0].unk_14.unk_04 == 1) {
ManagedSprite_SetAnim(param0->unk_240[v0].unk_0C, 1);
sub_0208AC80(param0->unk_2C0.unk_90[v0], v1, v2 - 0);
} else if (param0->unk_240[v0].unk_14.unk_04 == 2) {
ManagedSprite_SetAnim(param0->unk_240[v0].unk_0C, 2);
sub_0208AC80(param0->unk_2C0.unk_90[v0], v1, v2 - 1);
} else if (param0->unk_240[v0].unk_14.unk_04 == 10) {
ManagedSprite_SetAnim(param0->unk_240[v0].unk_0C, 0);
sub_0208AC80(param0->unk_2C0.unk_90[v0], v1, v2 + 0);
param0->unk_240[v0].unk_00++;
if (param0->unk_268[v0].unk_14.unk_04 == 1) {
ManagedSprite_SetAnim(param0->unk_268[v0].unk_0C, 1);
sub_0208AC80(param0->unk_2EC.unk_90[v0], v1, v2 - 0);
} else if (param0->unk_268[v0].unk_14.unk_04 == 2) {
ManagedSprite_SetAnim(param0->unk_268[v0].unk_0C, 2);
sub_0208AC80(param0->unk_2EC.unk_90[v0], v1, v2 - 1);
} else if (param0->unk_268[v0].unk_14.unk_04 == 10) {
ManagedSprite_SetAnim(param0->unk_268[v0].unk_0C, 0);
sub_0208AC80(param0->unk_2EC.unk_90[v0], v1, v2 + 0);
param0->unk_268[v0].unk_00++;
}
break;
default:
ManagedSprite_SetAnim(param0->unk_240[v0].unk_0C, 0);
sub_0208AC80(param0->unk_2C0.unk_90[v0], v1, v2);
param0->unk_240[v0].unk_00 = 0;
ManagedSprite_SetAnim(param0->unk_268[v0].unk_0C, 0);
sub_0208AC80(param0->unk_2EC.unk_90[v0], v1, v2);
param0->unk_268[v0].unk_00 = 0;
break;
}
}
@ -551,8 +434,8 @@ void sub_0208ADA4(UnkStruct_02089688 *param0)
{
int v0;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
if ((v0 >= param0->unk_2B0) && (v0 < param0->unk_2B4)) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if ((v0 >= param0->unk_2DC) && (v0 < param0->unk_2E0)) {
param0->unk_00[v0].unk_08 = 1;
} else {
param0->unk_00[v0].unk_08 = 0;
@ -567,12 +450,12 @@ void sub_0208ADE4(UnkStruct_02089688 *param0, int param1)
s16 v2;
s16 v3, v4;
v2 = param0->unk_274[param0->unk_2A8];
v2 = param0->unk_2A0[param0->unk_2D4];
v1 = 0;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
if ((v0 >= param0->unk_2B0) && (v0 < param0->unk_2B4)) {
if (v0 == param0->unk_2B0) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if ((v0 >= param0->unk_2DC) && (v0 < param0->unk_2E0)) {
if (v0 == param0->unk_2DC) {
v2 += ((32 + 8) / 2);
} else {
v2 += 32;
@ -596,13 +479,13 @@ void sub_0208ADE4(UnkStruct_02089688 *param0, int param1)
param0->unk_00[v0].unk_14.unk_05 = 0;
}
if ((v0 == param0->unk_1A0[v1].unk_00) && (v1 != param0->unk_3C0)) {
ManagedSprite_GetPositionXY(param0->unk_1A0[v1].unk_0C, &v3, &v4);
if ((v0 == param0->unk_1C0[v1].unk_00) && (v1 != param0->unk_3EC)) {
ManagedSprite_GetPositionXY(param0->unk_1C0[v1].unk_0C, &v3, &v4);
if (param0->unk_2B0 == param0->unk_2B4) {
if (param0->unk_2DC == param0->unk_2E0) {
v2 += 8;
} else {
if ((v0 > param0->unk_2B0) && (v0 < param0->unk_2B4)) {
if ((v0 > param0->unk_2DC) && (v0 < param0->unk_2E0)) {
v2 += ((32 + 8) / 2);
} else {
v2 += 8;
@ -610,11 +493,11 @@ void sub_0208ADE4(UnkStruct_02089688 *param0, int param1)
}
if (param1 == 0) {
ManagedSprite_SetPositionXY(param0->unk_1A0[v1].unk_0C, v2, v4);
ManagedSprite_SetPositionXY(param0->unk_1C0[v1].unk_0C, v2, v4);
} else {
param0->unk_1A0[v1].unk_14.unk_00 = (v2 - v3) / 2;
param0->unk_1A0[v1].unk_14.unk_02 = 0;
param0->unk_1A0[v1].unk_14.unk_04 = 2;
param0->unk_1C0[v1].unk_14.unk_00 = (v2 - v3) / 2;
param0->unk_1C0[v1].unk_14.unk_02 = 0;
param0->unk_1C0[v1].unk_14.unk_04 = 2;
}
v1++;
@ -641,8 +524,8 @@ void sub_0208AF44(UnkStruct_02089688 *param0)
s16 v1;
s16 v2;
for (v0 = 0; v0 < param0->unk_2A4; v0++) {
if ((v0 >= param0->unk_2B0) && (v0 < param0->unk_2B4)) {
for (v0 = 0; v0 < param0->unk_2D0; v0++) {
if ((v0 >= param0->unk_2DC) && (v0 < param0->unk_2E0)) {
v1 = 32 / 2;
v2 = 32 / 2;
} else {
@ -656,23 +539,23 @@ void sub_0208AF44(UnkStruct_02089688 *param0)
void sub_0208AFCC(UnkStruct_02089688 *param0)
{
param0->unk_2C0.unk_8C = sub_02012744(2, HEAP_ID_101);
param0->unk_2EC.unk_8C = sub_02012744(2, HEAP_ID_101);
Font_InitManager(FONT_SUBSCREEN, HEAP_ID_101);
}
void sub_0208AFE8(UnkStruct_02089688 *param0)
{
Font_Free(FONT_SUBSCREEN);
sub_02012870(param0->unk_2C0.unk_90[0]);
CharTransfer_ClearRange(&param0->unk_2C0.unk_98[0]);
sub_02012870(param0->unk_2C0.unk_90[1]);
CharTransfer_ClearRange(&param0->unk_2C0.unk_98[1]);
sub_020127BC(param0->unk_2C0.unk_8C);
sub_02012870(param0->unk_2EC.unk_90[0]);
CharTransfer_ClearRange(&param0->unk_2EC.unk_98[0]);
sub_02012870(param0->unk_2EC.unk_90[1]);
CharTransfer_ClearRange(&param0->unk_2EC.unk_98[1]);
sub_020127BC(param0->unk_2EC.unk_8C);
}
void sub_0208B028(UnkStruct_02089688 *param0)
{
SpriteSystem_LoadPaletteBuffer(param0->unk_2C0.unk_10, 2, param0->unk_2C0.unk_04, param0->unk_2C0.unk_08, 14, 7, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 1003);
SpriteSystem_LoadPaletteBuffer(param0->unk_2EC.unk_10, 2, param0->unk_2EC.unk_04, param0->unk_2EC.unk_08, 14, 7, 0, 1, NNS_G2D_VRAM_TYPE_2DMAIN, 1003);
}
void sub_0208B064(UnkStruct_02089688 *param0)
@ -697,26 +580,26 @@ void sub_0208B090(UnkStruct_02089688 *param0, int param1, int param2, int param3
{
Window_Init(&v7);
Window_AddToTopLeftCorner(param0->unk_2C0.unk_0C, &v7, 10, 2, 0, 0);
Window_AddToTopLeftCorner(param0->unk_2EC.unk_0C, &v7, 10, 2, 0, 0);
Text_AddPrinterWithParamsAndColor(&v7, FONT_SUBSCREEN, v3, Font_CalcCenterAlignment(FONT_SUBSCREEN, v3, 0, 80), 0, TEXT_SPEED_NO_TRANSFER, TEXT_COLOR(15, 13, 2), NULL);
}
v4 = 1003;
v5 = sub_02012898(&v7, NNS_G2D_VRAM_TYPE_2DMAIN, HEAP_ID_101);
CharTransfer_AllocRange(v5, 1, NNS_G2D_VRAM_TYPE_2DMAIN, &param0->unk_2C0.unk_98[param1]);
CharTransfer_AllocRange(v5, 1, NNS_G2D_VRAM_TYPE_2DMAIN, &param0->unk_2EC.unk_98[param1]);
v0 = (param0->unk_2C0.unk_18[param1 + 26].rect.left + param0->unk_2C0.unk_18[param1 + 26].rect.right) / 2;
v0 = (param0->unk_2EC.unk_18[param1 + 26].rect.left + param0->unk_2EC.unk_18[param1 + 26].rect.right) / 2;
v0 -= 40;
v1 = (param0->unk_2C0.unk_18[param1 + 26].rect.top + param0->unk_2C0.unk_18[param1 + 26].rect.bottom) / 2;
v1 = (param0->unk_2EC.unk_18[param1 + 26].rect.top + param0->unk_2EC.unk_18[param1 + 26].rect.bottom) / 2;
v1 -= 7;
v2.unk_00 = param0->unk_2C0.unk_8C;
v2.unk_00 = param0->unk_2EC.unk_8C;
v2.unk_04 = &v7;
v2.unk_08 = SpriteManager_GetSpriteList(param0->unk_2C0.unk_08);
v2.unk_0C = SpriteManager_FindPlttResourceProxy(param0->unk_2C0.unk_08, v4);
v2.unk_08 = SpriteManager_GetSpriteList(param0->unk_2EC.unk_08);
v2.unk_0C = SpriteManager_FindPlttResourceProxy(param0->unk_2EC.unk_08, v4);
v2.unk_10 = NULL;
v2.unk_14 = param0->unk_2C0.unk_98[param1].offset;
v2.unk_14 = param0->unk_2EC.unk_98[param1].offset;
v2.unk_18 = v0;
v2.unk_1C = v1;
v2.unk_20 = 0;
@ -724,9 +607,9 @@ void sub_0208B090(UnkStruct_02089688 *param0, int param1, int param2, int param3
v2.unk_28 = NNS_G2D_VRAM_TYPE_2DMAIN;
v2.heapID = HEAP_ID_101;
param0->unk_2C0.unk_90[param1] = sub_020127E8(&v2);
param0->unk_2EC.unk_90[param1] = sub_020127E8(&v2);
sub_02012AC0(param0->unk_2C0.unk_90[param1], param4);
sub_02012AC0(param0->unk_2EC.unk_90[param1], param4);
Strbuf_Free(v3);
MessageLoader_Free(v6);
Window_Remove(&v7);