Document mystery_gift

This commit is contained in:
PikalaxALT
2019-03-31 18:59:52 -04:00
parent 6d70b8adb1
commit ade0183378
48 changed files with 785 additions and 804 deletions
+190 -190
View File
@@ -53,7 +53,7 @@ struct UnkStruct_203F3C8
/*045C*/ u8 buffer_045C[0x1000];
};
EWRAM_DATA struct UnkStruct_203F3C8 * gUnknown_02022C74 = NULL;
EWRAM_DATA struct UnkStruct_203F3C8 * sWonderCardData = NULL;
void sub_801BEF8(void);
void sub_801C178(u8 whichWindow);
@@ -150,40 +150,40 @@ const struct UnkStruct_8467FB8 gUnknown_082F1D60[8] = {
{1, 0, 0, 7, gWonderCardBgGfx8, gWonderCardBgTilemap8, gWonderCardBgPal8}
};
bool32 sub_801BAAC(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
bool32 InitWonderCardResources(struct MEventBuffer_32E0_Sub * r5, struct MEventBuffer_3430_Sub * r6)
{
if (r5 == NULL || r6 == NULL)
return FALSE;
gUnknown_02022C74 = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
if (gUnknown_02022C74 == NULL)
sWonderCardData = AllocZeroed(sizeof(struct UnkStruct_203F3C8));
if (sWonderCardData == NULL)
return FALSE;
gUnknown_02022C74->unk_0000 = *r5;
gUnknown_02022C74->unk_014C = *r6;
if (gUnknown_02022C74->unk_0000.unk_08_2 >= ARRAY_COUNT(gUnknown_082F1D60))
gUnknown_02022C74->unk_0000.unk_08_2 = 0;
if (gUnknown_02022C74->unk_0000.unk_08_0 >= ARRAY_COUNT(gUnknown_082F0E18))
gUnknown_02022C74->unk_0000.unk_08_0 = 0;
if (gUnknown_02022C74->unk_0000.unk_09 > ARRAY_COUNT(gUnknown_02022C74->unk_017D))
gUnknown_02022C74->unk_0000.unk_09 = 0;
gUnknown_02022C74->unk_0170 = &gUnknown_082F1D60[gUnknown_02022C74->unk_0000.unk_08_2];
sWonderCardData->unk_0000 = *r5;
sWonderCardData->unk_014C = *r6;
if (sWonderCardData->unk_0000.unk_08_2 >= ARRAY_COUNT(gUnknown_082F1D60))
sWonderCardData->unk_0000.unk_08_2 = 0;
if (sWonderCardData->unk_0000.unk_08_0 >= ARRAY_COUNT(gUnknown_082F0E18))
sWonderCardData->unk_0000.unk_08_0 = 0;
if (sWonderCardData->unk_0000.unk_09 > ARRAY_COUNT(sWonderCardData->unk_017D))
sWonderCardData->unk_0000.unk_09 = 0;
sWonderCardData->unk_0170 = &gUnknown_082F1D60[sWonderCardData->unk_0000.unk_08_2];
return TRUE;
}
void sub_801BB48(void)
void DestroyWonderCardResources(void)
{
if (gUnknown_02022C74 != NULL)
if (sWonderCardData != NULL)
{
*gUnknown_02022C74 = (struct UnkStruct_203F3C8){};
Free(gUnknown_02022C74);
gUnknown_02022C74 = NULL;
*sWonderCardData = (struct UnkStruct_203F3C8){};
Free(sWonderCardData);
sWonderCardData = NULL;
}
}
s32 sub_801BB74(void)
s32 FadeToWonderCardMenu(void)
{
if (gUnknown_02022C74 == NULL)
if (sWonderCardData == NULL)
return -1;
switch(gUnknown_02022C74->unk_0174)
switch(sWonderCardData->unk_0174)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@@ -199,19 +199,19 @@ s32 sub_801BB74(void)
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
decompress_and_copy_tile_data_to_vram(2, gUnknown_02022C74->unk_0170->tiles, 0, 0x008, 0);
gUnknown_02022C74->unk_0176[0] = AddWindow(&gUnknown_082F0E1C[0]);
gUnknown_02022C74->unk_0176[1] = AddWindow(&gUnknown_082F0E1C[1]);
gUnknown_02022C74->unk_0176[2] = AddWindow(&gUnknown_082F0E1C[2]);
decompress_and_copy_tile_data_to_vram(2, sWonderCardData->unk_0170->tiles, 0, 0x008, 0);
sWonderCardData->unk_0176[0] = AddWindow(&gUnknown_082F0E1C[0]);
sWonderCardData->unk_0176[1] = AddWindow(&gUnknown_082F0E1C[1]);
sWonderCardData->unk_0176[2] = AddWindow(&gUnknown_082F0E1C[2]);
break;
case 3:
if (free_temp_tile_data_buffers_if_possible())
return 0;
LoadPalette(stdpal_get(1), 0x20, 0x20);
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_02022C74->unk_0170->pal, 0x10, 0x20);
LZ77UnCompWram(gUnknown_02022C74->unk_0170->map, gUnknown_02022C74->buffer_045C);
CopyRectToBgTilemapBufferRect(2, gUnknown_02022C74->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
LoadPalette(sWonderCardData->unk_0170->pal, 0x10, 0x20);
LZ77UnCompWram(sWonderCardData->unk_0170->map, sWonderCardData->buffer_045C);
CopyRectToBgTilemapBufferRect(2, sWonderCardData->buffer_045C, 0, 0, 30, 20, 0, 0, 30, 20, 1, 0x008, 0);
CopyBgTilemapBufferToVram(2);
break;
case 4:
@@ -237,18 +237,18 @@ s32 sub_801BB74(void)
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C74->unk_0174 = 0;
sWonderCardData->unk_0174 = 0;
return 1;
}
++gUnknown_02022C74->unk_0174;
++sWonderCardData->unk_0174;
return 0;
}
s32 sub_801BDA4(bool32 flag)
s32 FadeOutFromWonderCard(bool32 flag)
{
if (gUnknown_02022C74 == NULL)
if (sWonderCardData == NULL)
return -1;
switch (gUnknown_02022C74->unk_0174)
switch (sWonderCardData->unk_0174)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@@ -268,26 +268,26 @@ s32 sub_801BDA4(bool32 flag)
case 3:
HideBg(1);
HideBg(2);
RemoveWindow(gUnknown_02022C74->unk_0176[2]);
RemoveWindow(gUnknown_02022C74->unk_0176[1]);
RemoveWindow(gUnknown_02022C74->unk_0176[0]);
RemoveWindow(sWonderCardData->unk_0176[2]);
RemoveWindow(sWonderCardData->unk_0176[1]);
RemoveWindow(sWonderCardData->unk_0176[0]);
break;
case 4:
sub_801C61C();
FreeMonIconPalettes();
break;
case 5:
sub_80186EC(gUnknown_02022C60, flag);
PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
CopyBgTilemapBufferToVram(0);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
break;
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C74->unk_0174 = 0;
sWonderCardData->unk_0174 = 0;
return 1;
}
++gUnknown_02022C74->unk_0174;
++sWonderCardData->unk_0174;
return 0;
}
@@ -297,59 +297,59 @@ void sub_801BEF8(void)
u16 r6;
u16 sp0[3] = {0, 0, 0};
memcpy(gUnknown_02022C74->unk_018B, gUnknown_02022C74->unk_0000.unk_0A, 40);
gUnknown_02022C74->unk_018B[40] = EOS;
memcpy(gUnknown_02022C74->unk_01B4, gUnknown_02022C74->unk_0000.unk_32, 40);
gUnknown_02022C74->unk_01B4[40] = EOS;
if (gUnknown_02022C74->unk_0000.unk_04 > 999999)
gUnknown_02022C74->unk_0000.unk_04 = 999999;
ConvertIntToDecimalStringN(gUnknown_02022C74->unk_01DD, gUnknown_02022C74->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
memcpy(sWonderCardData->unk_018B, sWonderCardData->unk_0000.unk_0A, 40);
sWonderCardData->unk_018B[40] = EOS;
memcpy(sWonderCardData->unk_01B4, sWonderCardData->unk_0000.unk_32, 40);
sWonderCardData->unk_01B4[40] = EOS;
if (sWonderCardData->unk_0000.unk_04 > 999999)
sWonderCardData->unk_0000.unk_04 = 999999;
ConvertIntToDecimalStringN(sWonderCardData->unk_01DD, sWonderCardData->unk_0000.unk_04, STR_CONV_MODE_LEFT_ALIGN, 6);
for (i = 0; i < 4; i++)
{
memcpy(gUnknown_02022C74->unk_01E4[i], gUnknown_02022C74->unk_0000.unk_5A[i], 40);
gUnknown_02022C74->unk_01E4[i][40] = EOS;
memcpy(sWonderCardData->unk_01E4[i], sWonderCardData->unk_0000.unk_5A[i], 40);
sWonderCardData->unk_01E4[i][40] = EOS;
}
memcpy(gUnknown_02022C74->unk_0288, gUnknown_02022C74->unk_0000.unk_FA, 40);
gUnknown_02022C74->unk_0288[40] = EOS;
switch (gUnknown_02022C74->unk_0000.unk_08_0)
memcpy(sWonderCardData->unk_0288, sWonderCardData->unk_0000.unk_FA, 40);
sWonderCardData->unk_0288[40] = EOS;
switch (sWonderCardData->unk_0000.unk_08_0)
{
case 0:
memcpy(gUnknown_02022C74->unk_02B1, gUnknown_02022C74->unk_0000.unk_122, 40);
gUnknown_02022C74->unk_02B1[40] = EOS;
memcpy(sWonderCardData->unk_02B1, sWonderCardData->unk_0000.unk_122, 40);
sWonderCardData->unk_02B1[40] = EOS;
break;
case 1:
gUnknown_02022C74->unk_02B1[00] = EOS;
sWonderCardData->unk_02B1[00] = EOS;
break;
case 2:
gUnknown_02022C74->unk_02B1[00] = EOS;
sp0[0] = gUnknown_02022C74->unk_014C.unk_00 < 999 ? gUnknown_02022C74->unk_014C.unk_00 : 999;
sp0[1] = gUnknown_02022C74->unk_014C.unk_02 < 999 ? gUnknown_02022C74->unk_014C.unk_02 : 999;
sp0[2] = gUnknown_02022C74->unk_014C.unk_04 < 999 ? gUnknown_02022C74->unk_014C.unk_04 : 999;
sWonderCardData->unk_02B1[00] = EOS;
sp0[0] = sWonderCardData->unk_014C.unk_00 < 999 ? sWonderCardData->unk_014C.unk_00 : 999;
sp0[1] = sWonderCardData->unk_014C.unk_02 < 999 ? sWonderCardData->unk_014C.unk_02 : 999;
sp0[2] = sWonderCardData->unk_014C.unk_04 < 999 ? sWonderCardData->unk_014C.unk_04 : 999;
for (i = 0; i < 8; i++)
{
memset(gUnknown_02022C74->unk_02DC[i].unk_42, EOS, 4);
memset(gUnknown_02022C74->unk_02DC[i].unk_01, EOS, 41);
memset(sWonderCardData->unk_02DC[i].unk_42, EOS, 4);
memset(sWonderCardData->unk_02DC[i].unk_01, EOS, 41);
}
for (i = 0, r6 = 0; i < 40; i++)
{
if (gUnknown_02022C74->unk_0000.unk_122[i] != 0xF7)
if (sWonderCardData->unk_0000.unk_122[i] != 0xF7)
{
gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_01[r6] = gUnknown_02022C74->unk_0000.unk_122[i];
sWonderCardData->unk_02DC[sWonderCardData->unk_0175].unk_01[r6] = sWonderCardData->unk_0000.unk_122[i];
r6++;
}
else
{
u8 r3 = gUnknown_02022C74->unk_0000.unk_122[i + 1];
u8 r3 = sWonderCardData->unk_0000.unk_122[i + 1];
if (r3 > 2)
{
i += 2;
}
else
{
ConvertIntToDecimalStringN(gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
gUnknown_02022C74->unk_02DC[gUnknown_02022C74->unk_0175].unk_00 = gUnknown_02022C74->unk_0000.unk_122[i + 2];
gUnknown_02022C74->unk_0175++;
if (gUnknown_02022C74->unk_0175 > 7)
ConvertIntToDecimalStringN(sWonderCardData->unk_02DC[sWonderCardData->unk_0175].unk_42, sp0[r3], STR_CONV_MODE_LEADING_ZEROS, 3);
sWonderCardData->unk_02DC[sWonderCardData->unk_0175].unk_00 = sWonderCardData->unk_0000.unk_122[i + 2];
sWonderCardData->unk_0175++;
if (sWonderCardData->unk_0175 > 7)
break;
r6 = 0;
i += 2;
@@ -362,7 +362,7 @@ void sub_801BEF8(void)
void sub_801C178(u8 whichWindow)
{
s8 sp0C = 0;
s32 windowId = gUnknown_02022C74->unk_0176[whichWindow];
s32 windowId = sWonderCardData->unk_0176[whichWindow];
PutWindowTilemap(windowId);
FillWindowPixelBuffer(windowId, 0);
switch (whichWindow)
@@ -370,42 +370,42 @@ void sub_801C178(u8 whichWindow)
case 0:
{
s32 x;
AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_018B);
x = 160 - GetStringWidth(3, gUnknown_02022C74->unk_01B4, GetFontAttribute(3, 2));
AddTextPrinterParameterized3(windowId, 3, 0, 1, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal1], 0, sWonderCardData->unk_018B);
x = 160 - GetStringWidth(3, sWonderCardData->unk_01B4, GetFontAttribute(3, 2));
if (x < 0)
x = 0;
AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_01B4);
if (gUnknown_02022C74->unk_0000.unk_04 != 0)
AddTextPrinterParameterized3(windowId, 3, x, 17, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal1], 0, sWonderCardData->unk_01B4);
if (sWonderCardData->unk_0000.unk_04 != 0)
{
AddTextPrinterParameterized3(windowId, 1, 166, 17, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal1], 0, gUnknown_02022C74->unk_01DD);
AddTextPrinterParameterized3(windowId, 1, 166, 17, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal1], 0, sWonderCardData->unk_01DD);
}
break;
}
case 1:
for (; sp0C < 4; sp0C++)
{
AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal2], 0, gUnknown_02022C74->unk_01E4[sp0C]);
AddTextPrinterParameterized3(windowId, 3, 0, 16 * sp0C + 2, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal2], 0, sWonderCardData->unk_01E4[sp0C]);
}
break;
case 2:
AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0], gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_0288);
if (gUnknown_02022C74->unk_0000.unk_08_0 != 2)
AddTextPrinterParameterized3(windowId, 3, 0, gUnknown_082F0E18[sWonderCardData->unk_0000.unk_08_0], gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_0288);
if (sWonderCardData->unk_0000.unk_08_0 != 2)
{
AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0], gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02B1);
AddTextPrinterParameterized3(windowId, 3, 0, 16 + gUnknown_082F0E18[sWonderCardData->unk_0000.unk_08_0], gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_02B1);
}
else
{
s32 x = 0;
s32 y = gUnknown_082F0E18[gUnknown_02022C74->unk_0000.unk_08_0] + 16;
s32 y = gUnknown_082F0E18[sWonderCardData->unk_0000.unk_08_0] + 16;
s32 spacing = GetFontAttribute(3, 2);
for (; sp0C < gUnknown_02022C74->unk_0175; sp0C++)
for (; sp0C < sWonderCardData->unk_0175; sp0C++)
{
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02DC[sp0C].unk_01);
if (gUnknown_02022C74->unk_02DC[sp0C].unk_42[0] != EOS)
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_02DC[sp0C].unk_01);
if (sWonderCardData->unk_02DC[sp0C].unk_42[0] != EOS)
{
x += GetStringWidth(3, gUnknown_02022C74->unk_02DC[sp0C].unk_01, spacing);
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[gUnknown_02022C74->unk_0170->textPal3], 0, gUnknown_02022C74->unk_02DC[sp0C].unk_42);
x += GetStringWidth(3, gUnknown_02022C74->unk_02DC[sp0C].unk_42, spacing) + gUnknown_02022C74->unk_02DC[sp0C].unk_00;
x += GetStringWidth(3, sWonderCardData->unk_02DC[sp0C].unk_01, spacing);
AddTextPrinterParameterized3(windowId, 3, x, y, gUnknown_082F0E10[sWonderCardData->unk_0170->textPal3], 0, sWonderCardData->unk_02DC[sp0C].unk_42);
x += GetStringWidth(3, sWonderCardData->unk_02DC[sp0C].unk_42, spacing) + sWonderCardData->unk_02DC[sp0C].unk_00;
}
}
}
@@ -417,24 +417,24 @@ void sub_801C178(u8 whichWindow)
void sub_801C4C0(void)
{
u8 r7 = 0;
gUnknown_02022C74->unk_017C = 0xFF;
if (gUnknown_02022C74->unk_014C.unk_06 != SPECIES_NONE)
sWonderCardData->unk_017C = 0xFF;
if (sWonderCardData->unk_014C.unk_06 != SPECIES_NONE)
{
gUnknown_02022C74->unk_017C = sub_80D2D78(sub_80D2E84(gUnknown_02022C74->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
gSprites[gUnknown_02022C74->unk_017C].oam.priority = 2;
sWonderCardData->unk_017C = sub_80D2D78(sub_80D2E84(sWonderCardData->unk_014C.unk_06), SpriteCallbackDummy, 0xDC, 0x14, 0, FALSE);
gSprites[sWonderCardData->unk_017C].oam.priority = 2;
}
if (gUnknown_02022C74->unk_0000.unk_09 != 0 && gUnknown_02022C74->unk_0000.unk_08_0 == 1)
if (sWonderCardData->unk_0000.unk_09 != 0 && sWonderCardData->unk_0000.unk_08_0 == 1)
{
LoadCompressedSpriteSheetUsingHeap(&gUnknown_082F1D00);
LoadSpritePalette(&gUnknown_082F1D08[gUnknown_02022C74->unk_0170->textPal4]);
for (; r7 < gUnknown_02022C74->unk_0000.unk_09; r7++)
LoadSpritePalette(&gUnknown_082F1D08[sWonderCardData->unk_0170->textPal4]);
for (; r7 < sWonderCardData->unk_0000.unk_09; r7++)
{
gUnknown_02022C74->unk_017D[r7][0] = 0xFF;
gUnknown_02022C74->unk_017D[r7][1] = 0xFF;
gUnknown_02022C74->unk_017D[r7][0] = CreateSprite(&gUnknown_082F1D48, 0xd8 - 32 * r7, 0x90, 8);
if (gUnknown_02022C74->unk_014C.unk_08[0][r7] != 0)
sWonderCardData->unk_017D[r7][0] = 0xFF;
sWonderCardData->unk_017D[r7][1] = 0xFF;
sWonderCardData->unk_017D[r7][0] = CreateSprite(&gUnknown_082F1D48, 0xd8 - 32 * r7, 0x90, 8);
if (sWonderCardData->unk_014C.unk_08[0][r7] != 0)
{
gUnknown_02022C74->unk_017D[r7][1] = sub_80D2D78(sub_80D2E84(gUnknown_02022C74->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
sWonderCardData->unk_017D[r7][1] = sub_80D2D78(sub_80D2E84(sWonderCardData->unk_014C.unk_08[0][r7]), SpriteCallbackDummy, 0xd8 - 32 * r7, 0x88, 0, 0);
}
}
}
@@ -443,19 +443,19 @@ void sub_801C4C0(void)
void sub_801C61C(void)
{
u8 r6 = 0;
if (gUnknown_02022C74->unk_017C != 0xFF)
sub_80D2EF8(&gSprites[gUnknown_02022C74->unk_017C]);
if (gUnknown_02022C74->unk_0000.unk_09 != 0 && gUnknown_02022C74->unk_0000.unk_08_0 == 1)
if (sWonderCardData->unk_017C != 0xFF)
sub_80D2EF8(&gSprites[sWonderCardData->unk_017C]);
if (sWonderCardData->unk_0000.unk_09 != 0 && sWonderCardData->unk_0000.unk_08_0 == 1)
{
for (; r6 < gUnknown_02022C74->unk_0000.unk_09; r6++)
for (; r6 < sWonderCardData->unk_0000.unk_09; r6++)
{
if (gUnknown_02022C74->unk_017D[r6][0] != 0xFF)
if (sWonderCardData->unk_017D[r6][0] != 0xFF)
{
DestroySprite(&gSprites[gUnknown_02022C74->unk_017D[r6][0]]);
DestroySprite(&gSprites[sWonderCardData->unk_017D[r6][0]]);
}
if (gUnknown_02022C74->unk_017D[r6][1] != 0xFF)
if (sWonderCardData->unk_017D[r6][1] != 0xFF)
{
sub_80D2EF8(&gSprites[gUnknown_02022C74->unk_017D[r6][1]]);
sub_80D2EF8(&gSprites[sWonderCardData->unk_017D[r6][1]]);
}
}
FreeSpriteTilesByTag(0x8000);
@@ -484,7 +484,7 @@ struct UnkStruct_203F3CC
/*03a4*/ u8 buffer_03A4[0x1000];
};
EWRAM_DATA struct UnkStruct_203F3CC * gUnknown_02022C78 = NULL;
EWRAM_DATA struct UnkStruct_203F3CC * sWonderNewsData = NULL;
void sub_801CDCC(void);
void sub_801CE7C(void);
@@ -542,37 +542,37 @@ const struct UnkStruct_8467FB8 gUnknown_082F24C8[] = {
{1, 0, 0, 0, gWonderNewsGfx8, gWonderNewsTilemap8, gWonderNewsPal8}
};
bool32 sub_801C6C8(const struct MEventBuffer_3120_Sub * a0)
bool32 InitWonderNewsResources(const struct MEventBuffer_3120_Sub * a0)
{
if (a0 == NULL)
return FALSE;
gUnknown_02022C78 = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
if (gUnknown_02022C78 == NULL)
sWonderNewsData = AllocZeroed(sizeof(struct UnkStruct_203F3CC));
if (sWonderNewsData == NULL)
return FALSE;
gUnknown_02022C78->unk_0000 = *a0;
if (gUnknown_02022C78->unk_0000.unk_03 >= ARRAY_COUNT(gUnknown_082F24C8))
gUnknown_02022C78->unk_0000.unk_03 = 0;
gUnknown_02022C78->unk_01BC = &gUnknown_082F24C8[gUnknown_02022C78->unk_0000.unk_03];
gUnknown_02022C78->unk_01C1 = 0xFF;
sWonderNewsData->unk_0000 = *a0;
if (sWonderNewsData->unk_0000.unk_03 >= ARRAY_COUNT(gUnknown_082F24C8))
sWonderNewsData->unk_0000.unk_03 = 0;
sWonderNewsData->unk_01BC = &gUnknown_082F24C8[sWonderNewsData->unk_0000.unk_03];
sWonderNewsData->unk_01C1 = 0xFF;
return TRUE;
}
void sub_801C72C(void)
void DestroyWonderNewsResources(void)
{
if (gUnknown_02022C78 != NULL)
if (sWonderNewsData != NULL)
{
*gUnknown_02022C78 = (struct UnkStruct_203F3CC){};
Free(gUnknown_02022C78);
gUnknown_02022C78 = NULL;
*sWonderNewsData = (struct UnkStruct_203F3CC){};
Free(sWonderNewsData);
sWonderNewsData = NULL;
}
}
s32 sub_801C758(void)
s32 FadeToWonderNewsMenu(void)
{
if (gUnknown_02022C78 == NULL)
if (sWonderNewsData == NULL)
return -1;
switch (gUnknown_02022C78->unk_01C0_1)
switch (sWonderNewsData->unk_01C0_1)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@@ -599,19 +599,19 @@ s32 sub_801C758(void)
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(2);
CopyBgTilemapBufferToVram(3);
decompress_and_copy_tile_data_to_vram(3, gUnknown_02022C78->unk_01BC->tiles, 0, 8, 0);
gUnknown_02022C78->unk_01C8[0] = AddWindow(&gUnknown_082F1DE8[0]);
gUnknown_02022C78->unk_01C8[1] = AddWindow(&gUnknown_082F1DE8[1]);
decompress_and_copy_tile_data_to_vram(3, sWonderNewsData->unk_01BC->tiles, 0, 8, 0);
sWonderNewsData->unk_01C8[0] = AddWindow(&gUnknown_082F1DE8[0]);
sWonderNewsData->unk_01C8[1] = AddWindow(&gUnknown_082F1DE8[1]);
break;
case 3:
if (free_temp_tile_data_buffers_if_possible())
return 0;
LoadPalette(stdpal_get(1), 0x20, 0x20);
gPaletteFade.bufferTransferDisabled = TRUE;
LoadPalette(gUnknown_02022C78->unk_01BC->pal, 0x10, 0x20);
LZ77UnCompWram(gUnknown_02022C78->unk_01BC->map, gUnknown_02022C78->buffer_03A4);
CopyRectToBgTilemapBufferRect(1, gUnknown_02022C78->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
CopyRectToBgTilemapBufferRect(3, gUnknown_02022C78->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
LoadPalette(sWonderNewsData->unk_01BC->pal, 0x10, 0x20);
LZ77UnCompWram(sWonderNewsData->unk_01BC->map, sWonderNewsData->buffer_03A4);
CopyRectToBgTilemapBufferRect(1, sWonderNewsData->buffer_03A4, 0, 0, 30, 3, 0, 0, 30, 3, 1, 8, 0);
CopyRectToBgTilemapBufferRect(3, sWonderNewsData->buffer_03A4, 0, 3, 30, 23, 0, 3, 30, 23, 1, 8, 0);
CopyBgTilemapBufferToVram(1);
CopyBgTilemapBufferToVram(3);
break;
@@ -628,26 +628,26 @@ s32 sub_801C758(void)
ShowBg(2);
ShowBg(3);
gPaletteFade.bufferTransferDisabled = FALSE;
gUnknown_02022C78->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_02022C78->unk_0394, &gUnknown_02022C78->unk_01C6);
sWonderNewsData->unk_01C1 = AddScrollIndicatorArrowPair(&sWonderNewsData->unk_0394, &sWonderNewsData->unk_01C6);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
UpdatePaletteFade();
break;
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C78->unk_01C0_1 = 0;
sWonderNewsData->unk_01C0_1 = 0;
return 1;
}
++gUnknown_02022C78->unk_01C0_1;
++sWonderNewsData->unk_01C0_1;
return 0;
}
s32 sub_801CA50(bool32 flag)
s32 FadeOutFromWonderNews(bool32 flag)
{
if (gUnknown_02022C78 == NULL)
if (sWonderNewsData == NULL)
return -1;
switch (gUnknown_02022C78->unk_01C0_1)
switch (sWonderNewsData->unk_01C0_1)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
@@ -675,21 +675,21 @@ s32 sub_801CA50(bool32 flag)
case 3:
HideBg(1);
HideBg(2);
RemoveWindow(gUnknown_02022C78->unk_01C8[1]);
RemoveWindow(gUnknown_02022C78->unk_01C8[0]);
RemoveWindow(sWonderNewsData->unk_01C8[1]);
RemoveWindow(sWonderNewsData->unk_01C8[0]);
break;
case 4:
ChangeBgY(2, 0, 0);
ChangeBgY(3, 0, 0);
if (gUnknown_02022C78->unk_01C1 != 0xFF)
if (sWonderNewsData->unk_01C1 != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_02022C78->unk_01C1);
gUnknown_02022C78->unk_01C1 = 0xFF;
RemoveScrollIndicatorArrowPair(sWonderNewsData->unk_01C1);
sWonderNewsData->unk_01C1 = 0xFF;
}
break;
case 5:
sub_80186EC(gUnknown_02022C60, flag);
sub_8018798(3);
PrintMysteryGiftOrEReaderTopMenu(gGiftIsFromEReader, flag);
MG_DrawCheckerboardPattern(3);
CopyBgTilemapBufferToVram(0);
CopyBgTilemapBufferToVram(3);
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
@@ -697,36 +697,36 @@ s32 sub_801CA50(bool32 flag)
default:
if (UpdatePaletteFade())
return 0;
gUnknown_02022C78->unk_01C0_1 = 0;
sWonderNewsData->unk_01C0_1 = 0;
return 1;
}
++gUnknown_02022C78->unk_01C0_1;
++sWonderNewsData->unk_01C0_1;
return 0;
}
void sub_801CC38(void)
void MENews_RemoveScrollIndicatorArrowPair(void)
{
if (!gUnknown_02022C78->unk_01C0_0 && gUnknown_02022C78->unk_01C1 != 0xFF)
if (!sWonderNewsData->unk_01C0_0 && sWonderNewsData->unk_01C1 != 0xFF)
{
RemoveScrollIndicatorArrowPair(gUnknown_02022C78->unk_01C1);
gUnknown_02022C78->unk_01C1 = 0xFF;
gUnknown_02022C78->unk_01C0_0 = TRUE;
RemoveScrollIndicatorArrowPair(sWonderNewsData->unk_01C1);
sWonderNewsData->unk_01C1 = 0xFF;
sWonderNewsData->unk_01C0_0 = TRUE;
}
}
void sub_801CC80(void)
void MENews_AddScrollIndicatorArrowPair(void)
{
if (gUnknown_02022C78->unk_01C0_0)
if (sWonderNewsData->unk_01C0_0)
{
gUnknown_02022C78->unk_01C1 = AddScrollIndicatorArrowPair(&gUnknown_02022C78->unk_0394, &gUnknown_02022C78->unk_01C6);
gUnknown_02022C78->unk_01C0_0 = FALSE;
sWonderNewsData->unk_01C1 = AddScrollIndicatorArrowPair(&sWonderNewsData->unk_0394, &sWonderNewsData->unk_01C6);
sWonderNewsData->unk_01C0_0 = FALSE;
}
}
u32 sub_801CCD0(u16 input)
u32 MENews_GetInput(u16 input)
{
if (gUnknown_02022C78->unk_01C2_0)
if (sWonderNewsData->unk_01C2_0)
{
sub_801CFA4();
return 0xFF;
@@ -738,26 +738,26 @@ u32 sub_801CCD0(u16 input)
case B_BUTTON:
return 1;
case DPAD_UP:
if (gUnknown_02022C78->unk_01C6 == 0)
if (sWonderNewsData->unk_01C6 == 0)
return 0xFF;
if (gUnknown_02022C78->unk_01C0_0)
if (sWonderNewsData->unk_01C0_0)
return 0xFF;
gUnknown_02022C78->unk_01C3_0 = FALSE;
sWonderNewsData->unk_01C3_0 = FALSE;
break;
case DPAD_DOWN:
if (gUnknown_02022C78->unk_01C6 == gUnknown_02022C78->unk_01C4)
if (sWonderNewsData->unk_01C6 == sWonderNewsData->unk_01C4)
return 0xFF;
if (gUnknown_02022C78->unk_01C0_0)
if (sWonderNewsData->unk_01C0_0)
return 0xFF;
gUnknown_02022C78->unk_01C3_0 = TRUE;
sWonderNewsData->unk_01C3_0 = TRUE;
break;
default:
return 0xFF;
}
gUnknown_02022C78->unk_01C2_0 = TRUE;
gUnknown_02022C78->unk_01C2_1 = 2;
gUnknown_02022C78->unk_01C3_1 = 0;
if (gUnknown_02022C78->unk_01C3_0 == FALSE)
sWonderNewsData->unk_01C2_0 = TRUE;
sWonderNewsData->unk_01C2_1 = 2;
sWonderNewsData->unk_01C3_1 = 0;
if (sWonderNewsData->unk_01C3_0 == FALSE)
return 2;
else
return 3;
@@ -766,44 +766,44 @@ u32 sub_801CCD0(u16 input)
void sub_801CDCC(void)
{
u8 i = 0;
memcpy(gUnknown_02022C78->unk_01CE, gUnknown_02022C78->unk_0000.unk_04, 40);
gUnknown_02022C78->unk_01CE[40] = EOS;
memcpy(sWonderNewsData->unk_01CE, sWonderNewsData->unk_0000.unk_04, 40);
sWonderNewsData->unk_01CE[40] = EOS;
for (; i < 10; ++i)
{
memcpy(gUnknown_02022C78->unk_01F7[i], gUnknown_02022C78->unk_0000.unk_2C[i], 40);
gUnknown_02022C78->unk_01F7[i][40] = EOS;
if (i > 7 && gUnknown_02022C78->unk_01F7[i][0] != EOS)
++gUnknown_02022C78->unk_01C4;
memcpy(sWonderNewsData->unk_01F7[i], sWonderNewsData->unk_0000.unk_2C[i], 40);
sWonderNewsData->unk_01F7[i][40] = EOS;
if (i > 7 && sWonderNewsData->unk_01F7[i][0] != EOS)
++sWonderNewsData->unk_01C4;
}
gUnknown_02022C78->unk_0394 = gUnknown_082F1DF8;
gUnknown_02022C78->unk_0394.fullyDownThreshold = gUnknown_02022C78->unk_01C4;
sWonderNewsData->unk_0394 = gUnknown_082F1DF8;
sWonderNewsData->unk_0394.fullyDownThreshold = sWonderNewsData->unk_01C4;
}
void sub_801CE7C(void)
{
u8 i = 0;
s32 x;
PutWindowTilemap(gUnknown_02022C78->unk_01C8[0]);
PutWindowTilemap(gUnknown_02022C78->unk_01C8[1]);
FillWindowPixelBuffer(gUnknown_02022C78->unk_01C8[0], 0);
FillWindowPixelBuffer(gUnknown_02022C78->unk_01C8[1], 0);
x = (0xe0 - GetStringWidth(3, gUnknown_02022C78->unk_01CE, GetFontAttribute(3, 2))) / 2;
PutWindowTilemap(sWonderNewsData->unk_01C8[0]);
PutWindowTilemap(sWonderNewsData->unk_01C8[1]);
FillWindowPixelBuffer(sWonderNewsData->unk_01C8[0], 0);
FillWindowPixelBuffer(sWonderNewsData->unk_01C8[1], 0);
x = (0xe0 - GetStringWidth(3, sWonderNewsData->unk_01CE, GetFontAttribute(3, 2))) / 2;
if (x < 0)
x = 0;
AddTextPrinterParameterized3(gUnknown_02022C78->unk_01C8[0], 3, x, 6, gUnknown_082F1DE0[gUnknown_02022C78->unk_01BC->textPal1], 0, gUnknown_02022C78->unk_01CE);
AddTextPrinterParameterized3(sWonderNewsData->unk_01C8[0], 3, x, 6, gUnknown_082F1DE0[sWonderNewsData->unk_01BC->textPal1], 0, sWonderNewsData->unk_01CE);
for (; i < 10; ++i)
{
AddTextPrinterParameterized3(gUnknown_02022C78->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_082F1DE0[gUnknown_02022C78->unk_01BC->textPal2], 0, gUnknown_02022C78->unk_01F7[i]);
AddTextPrinterParameterized3(sWonderNewsData->unk_01C8[1], 3, 0, 16 * i + 2, gUnknown_082F1DE0[sWonderNewsData->unk_01BC->textPal2], 0, sWonderNewsData->unk_01F7[i]);
}
CopyWindowToVram(gUnknown_02022C78->unk_01C8[0], 3);
CopyWindowToVram(gUnknown_02022C78->unk_01C8[1], 3);
CopyWindowToVram(sWonderNewsData->unk_01C8[0], 3);
CopyWindowToVram(sWonderNewsData->unk_01C8[1], 3);
}
void sub_801CFA4(void)
{
u16 r4 = gUnknown_02022C78->unk_01C2_1;
u16 r4 = sWonderNewsData->unk_01C2_1;
r4 <<= 8;
if (gUnknown_02022C78->unk_01C3_0)
if (sWonderNewsData->unk_01C3_0)
{
ChangeBgY(2, r4, 1);
ChangeBgY(3, r4, 1);
@@ -813,14 +813,14 @@ void sub_801CFA4(void)
ChangeBgY(2, r4, 2);
ChangeBgY(3, r4, 2);
}
gUnknown_02022C78->unk_01C3_1 += gUnknown_02022C78->unk_01C2_1;
if (gUnknown_02022C78->unk_01C3_1 > 15)
sWonderNewsData->unk_01C3_1 += sWonderNewsData->unk_01C2_1;
if (sWonderNewsData->unk_01C3_1 > 15)
{
if (gUnknown_02022C78->unk_01C3_0)
++gUnknown_02022C78->unk_01C6;
if (sWonderNewsData->unk_01C3_0)
++sWonderNewsData->unk_01C6;
else
--gUnknown_02022C78->unk_01C6;
gUnknown_02022C78->unk_01C2_0 = FALSE;
gUnknown_02022C78->unk_01C3_1 = 0;
--sWonderNewsData->unk_01C6;
sWonderNewsData->unk_01C2_0 = FALSE;
sWonderNewsData->unk_01C3_1 = 0;
}
}