document berry tag screen
This commit is contained in:
+145
-135
@@ -29,8 +29,29 @@
|
|||||||
#include "decompress.h"
|
#include "decompress.h"
|
||||||
#include "international_string_util.h"
|
#include "international_string_util.h"
|
||||||
|
|
||||||
|
// There are 4 windows used in berry tag screen.
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
WIN_BERRY_NAME,
|
||||||
|
WIN_SIZE_FIRM,
|
||||||
|
WIN_DESC,
|
||||||
|
WIN_BERRY_TAG
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BerryTagScreenStruct
|
||||||
|
{
|
||||||
|
u16 tilemapBuffers[3][0x400];
|
||||||
|
u16 berryId;
|
||||||
|
u8 berrySpriteId;
|
||||||
|
u8 flavorCircleIds[FLAVOR_COUNT];
|
||||||
|
u16 gfxState;
|
||||||
|
};
|
||||||
|
|
||||||
|
// EWRAM vars
|
||||||
|
static EWRAM_DATA struct BerryTagScreenStruct *sBerryTag = NULL;
|
||||||
|
|
||||||
// const rom data
|
// const rom data
|
||||||
static const struct BgTemplate gUnknown_085EFCF0[] =
|
static const struct BgTemplate sBackgroundTemplates[] =
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
.bg = 0,
|
.bg = 0,
|
||||||
@@ -70,24 +91,24 @@ static const struct BgTemplate gUnknown_085EFCF0[] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u16 gUnknown_085EFD00[] = INCBIN_U16("graphics/interface/berry_tag_screen.gbapal");
|
static const u16 sFontPalette[] = INCBIN_U16("graphics/interface/berry_tag_screen.gbapal");
|
||||||
|
|
||||||
static const struct TextColor gUnknown_085EFD20[] =
|
static const struct TextColor sTextColors[] =
|
||||||
{
|
{
|
||||||
{0, 2, 3},
|
{0, 2, 3},
|
||||||
{15, 14, 13}
|
{15, 14, 13}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct WindowTemplate gUnknown_085EFD28[] =
|
static const struct WindowTemplate sWindowTemplates[] =
|
||||||
{
|
{
|
||||||
{0x01, 0x0b, 0x04, 0x08, 0x02, 0x0f, 0x0045},
|
{0x01, 0x0b, 0x04, 0x08, 0x02, 0x0f, 0x0045}, // WIN_BERRY_NAME
|
||||||
{0x01, 0x0b, 0x07, 0x12, 0x04, 0x0f, 0x0055},
|
{0x01, 0x0b, 0x07, 0x12, 0x04, 0x0f, 0x0055}, // WIN_SIZE_FIRM
|
||||||
{0x01, 0x04, 0x0e, 0x19, 0x04, 0x0f, 0x009d},
|
{0x01, 0x04, 0x0e, 0x19, 0x04, 0x0f, 0x009d}, // WIN_DESC
|
||||||
{0x00, 0x02, 0x00, 0x08, 0x02, 0x0f, 0x0101},
|
{0x00, 0x02, 0x00, 0x08, 0x02, 0x0f, 0x0101}, // WIN_BERRY_TAG
|
||||||
DUMMY_WIN_TEMPLATE
|
DUMMY_WIN_TEMPLATE
|
||||||
};
|
};
|
||||||
|
|
||||||
static const u8 *const gBerryFirmnessStringPointers[] =
|
static const u8 *const sBerryFirmnessStrings[] =
|
||||||
{
|
{
|
||||||
gBerryFirmnessString_VerySoft,
|
gBerryFirmnessString_VerySoft,
|
||||||
gBerryFirmnessString_Soft,
|
gBerryFirmnessString_Soft,
|
||||||
@@ -97,47 +118,36 @@ static const u8 *const gBerryFirmnessStringPointers[] =
|
|||||||
};
|
};
|
||||||
|
|
||||||
// this file's functions
|
// this file's functions
|
||||||
static void sub_8177C84(void);
|
static void CB2_InitBerryTagScreen(void);
|
||||||
static void sub_8177E14(void);
|
static void HandleInitBackgrounds(void);
|
||||||
static void sub_8178008(void);
|
static void HandleInitWindows(void);
|
||||||
static void sub_8178090(void);
|
static void AddBerryTagTextToBg0(void);
|
||||||
static void sub_81780F4(void);
|
static void PrintAllBerryData(void);
|
||||||
static void sub_8178338(void);
|
static void CreateBerrySprite(void);
|
||||||
static void sub_817839C(void);
|
static void CreateFlavorCircleSprites(void);
|
||||||
static void sub_8178404(void);
|
static void SetFlavorCirclesVisiblity(void);
|
||||||
static void sub_8178110(void);
|
static void PrintBerryNumberAndName(void);
|
||||||
static void sub_8178174(void);
|
static void PrintBerrySize(void);
|
||||||
static void sub_8178250(void);
|
static void PrintBerryFirmness(void);
|
||||||
static void sub_81782D0(void);
|
static void PrintBerryDescription1(void);
|
||||||
static void sub_8178304(void);
|
static void PrintBerryDescription2(void);
|
||||||
static bool8 sub_8177CB0(void);
|
static bool8 InitBerryTagScreen(void);
|
||||||
static bool8 sub_8177E88(void);
|
static bool8 LoadBerryTagGfx(void);
|
||||||
static void sub_8178654(u8 taskId);
|
static void Task_HandleInput(u8 taskId);
|
||||||
static void sub_8178610(u8 taskId);
|
static void Task_CloseBerryTagScreen(u8 taskId);
|
||||||
static void sub_81787AC(u8 taskId);
|
static void Task_DisplayAnotherBerry(u8 taskId);
|
||||||
static void sub_81786AC(u8 taskId, s8 toMove);
|
static void TryChangeDisplayedBerry(u8 taskId, s8 toMove);
|
||||||
static void sub_8178728(s8 toMove);
|
static void HandleBagCursorPositionChange(s8 toMove);
|
||||||
|
|
||||||
// code
|
// code
|
||||||
struct BerryTagScreenStruct
|
|
||||||
{
|
|
||||||
u16 tilemapBuffers[3][0x400];
|
|
||||||
u16 berryId;
|
|
||||||
u8 berrySpriteId;
|
|
||||||
u8 flavorCircleIds[FLAVOR_COUNT];
|
|
||||||
u16 field_1808;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct BerryTagScreenStruct *sBerryTag;
|
|
||||||
|
|
||||||
void DoBerryTagScreen(void)
|
void DoBerryTagScreen(void)
|
||||||
{
|
{
|
||||||
sBerryTag = AllocZeroed(0x180C);
|
sBerryTag = AllocZeroed(sizeof(*sBerryTag));
|
||||||
sBerryTag->berryId = ItemIdToBerryType(gSpecialVar_ItemId);
|
sBerryTag->berryId = ItemIdToBerryType(gSpecialVar_ItemId);
|
||||||
SetMainCallback2(sub_8177C84);
|
SetMainCallback2(CB2_InitBerryTagScreen);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8177C54(void)
|
static void CB2_BerryTagScreen(void)
|
||||||
{
|
{
|
||||||
RunTasks();
|
RunTasks();
|
||||||
AnimateSprites();
|
AnimateSprites();
|
||||||
@@ -146,27 +156,27 @@ static void sub_8177C54(void)
|
|||||||
UpdatePaletteFade();
|
UpdatePaletteFade();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8177C70(void)
|
static void VblankCB(void)
|
||||||
{
|
{
|
||||||
LoadOam();
|
LoadOam();
|
||||||
ProcessSpriteCopyRequests();
|
ProcessSpriteCopyRequests();
|
||||||
TransferPlttBuffer();
|
TransferPlttBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8177C84(void)
|
static void CB2_InitBerryTagScreen(void)
|
||||||
{
|
{
|
||||||
while (1)
|
while (1)
|
||||||
{
|
{
|
||||||
if (sub_81221EC() == TRUE)
|
if (sub_81221EC() == TRUE)
|
||||||
break;
|
break;
|
||||||
if (sub_8177CB0() == TRUE)
|
if (InitBerryTagScreen() == TRUE)
|
||||||
break;
|
break;
|
||||||
if (sub_81221AC() == TRUE)
|
if (sub_81221AC() == TRUE)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_8177CB0(void)
|
static bool8 InitBerryTagScreen(void)
|
||||||
{
|
{
|
||||||
switch (gMain.state)
|
switch (gMain.state)
|
||||||
{
|
{
|
||||||
@@ -199,37 +209,37 @@ static bool8 sub_8177CB0(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
sub_8177E14();
|
HandleInitBackgrounds();
|
||||||
sBerryTag->field_1808 = 0;
|
sBerryTag->gfxState = 0;
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 7:
|
||||||
if (sub_8177E88())
|
if (LoadBerryTagGfx())
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
sub_8178008();
|
HandleInitWindows();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
sub_8178090();
|
AddBerryTagTextToBg0();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
sub_81780F4();
|
PrintAllBerryData();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 11:
|
case 11:
|
||||||
sub_8178338();
|
CreateBerrySprite();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 12:
|
case 12:
|
||||||
sub_817839C();
|
CreateFlavorCircleSprites();
|
||||||
sub_8178404();
|
SetFlavorCirclesVisiblity();
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
CreateTask(sub_8178654, 0);
|
CreateTask(Task_HandleInput, 0);
|
||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
case 14:
|
case 14:
|
||||||
@@ -242,18 +252,18 @@ static bool8 sub_8177CB0(void)
|
|||||||
gMain.state++;
|
gMain.state++;
|
||||||
break;
|
break;
|
||||||
default: // done
|
default: // done
|
||||||
SetVBlankCallback(sub_8177C70);
|
SetVBlankCallback(VblankCB);
|
||||||
SetMainCallback2(sub_8177C54);
|
SetMainCallback2(CB2_BerryTagScreen);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8177E14(void)
|
static void HandleInitBackgrounds(void)
|
||||||
{
|
{
|
||||||
ResetBgsAndClearDma3BusyFlags(0);
|
ResetBgsAndClearDma3BusyFlags(0);
|
||||||
InitBgsFromTemplates(0, gUnknown_085EFCF0, ARRAY_COUNT(gUnknown_085EFCF0));
|
InitBgsFromTemplates(0, sBackgroundTemplates, ARRAY_COUNT(sBackgroundTemplates));
|
||||||
SetBgTilemapBuffer(2, sBerryTag->tilemapBuffers[0]);
|
SetBgTilemapBuffer(2, sBerryTag->tilemapBuffers[0]);
|
||||||
SetBgTilemapBuffer(3, sBerryTag->tilemapBuffers[1]);
|
SetBgTilemapBuffer(3, sBerryTag->tilemapBuffers[1]);
|
||||||
ResetAllBgsCoordinates();
|
ResetAllBgsCoordinates();
|
||||||
@@ -267,27 +277,27 @@ static void sub_8177E14(void)
|
|||||||
ShowBg(3);
|
ShowBg(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool8 sub_8177E88(void)
|
static bool8 LoadBerryTagGfx(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
switch (sBerryTag->field_1808)
|
switch (sBerryTag->gfxState)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
reset_temp_tile_data_buffers();
|
reset_temp_tile_data_buffers();
|
||||||
decompress_and_copy_tile_data_to_vram(2, gUnknown_08D9BB44, 0, 0, 0);
|
decompress_and_copy_tile_data_to_vram(2, gUnknown_08D9BB44, 0, 0, 0);
|
||||||
sBerryTag->field_1808++;
|
sBerryTag->gfxState++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
if (free_temp_tile_data_buffers_if_possible() != TRUE)
|
||||||
{
|
{
|
||||||
LZDecompressWram(gUnknown_08D9BF98, sBerryTag->tilemapBuffers[0]);
|
LZDecompressWram(gUnknown_08D9BF98, sBerryTag->tilemapBuffers[0]);
|
||||||
sBerryTag->field_1808++;
|
sBerryTag->gfxState++;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
LZDecompressWram(gUnknown_08D9C13C, sBerryTag->tilemapBuffers[2]);
|
LZDecompressWram(gUnknown_08D9C13C, sBerryTag->tilemapBuffers[2]);
|
||||||
sBerryTag->field_1808++;
|
sBerryTag->gfxState++;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (gSaveBlock2Ptr->playerGender == MALE)
|
if (gSaveBlock2Ptr->playerGender == MALE)
|
||||||
@@ -300,15 +310,15 @@ static bool8 sub_8177E88(void)
|
|||||||
for (i = 0; i < ARRAY_COUNT(sBerryTag->tilemapBuffers[1]); i++)
|
for (i = 0; i < ARRAY_COUNT(sBerryTag->tilemapBuffers[1]); i++)
|
||||||
sBerryTag->tilemapBuffers[1][i] = 0x5042;
|
sBerryTag->tilemapBuffers[1][i] = 0x5042;
|
||||||
}
|
}
|
||||||
sBerryTag->field_1808++;
|
sBerryTag->gfxState++;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
LoadCompressedPalette(gUnknown_08D9BEF0, 0, 0xC0);
|
LoadCompressedPalette(gUnknown_08D9BEF0, 0, 0xC0);
|
||||||
sBerryTag->field_1808++;
|
sBerryTag->gfxState++;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
LoadCompressedObjectPic(&gUnknown_0857FDEC);
|
LoadCompressedObjectPic(&gUnknown_0857FDEC);
|
||||||
sBerryTag->field_1808++;
|
sBerryTag->gfxState++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
LoadCompressedObjectPalette(&gUnknown_0857FDF4);
|
LoadCompressedObjectPalette(&gUnknown_0857FDF4);
|
||||||
@@ -318,55 +328,55 @@ static bool8 sub_8177E88(void)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178008(void)
|
static void HandleInitWindows(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
InitWindows(gUnknown_085EFD28);
|
InitWindows(sWindowTemplates);
|
||||||
DeactivateAllTextPrinters();
|
DeactivateAllTextPrinters();
|
||||||
LoadPalette(gUnknown_085EFD00, 0xF0, 0x20);
|
LoadPalette(sFontPalette, 0xF0, 0x20);
|
||||||
for (i = 0; i < ARRAY_COUNT(gUnknown_085EFD28) - 1; i++)
|
for (i = 0; i < ARRAY_COUNT(sWindowTemplates) - 1; i++)
|
||||||
PutWindowTilemap(i);
|
PutWindowTilemap(i);
|
||||||
schedule_bg_copy_tilemap_to_vram(0);
|
schedule_bg_copy_tilemap_to_vram(0);
|
||||||
schedule_bg_copy_tilemap_to_vram(1);
|
schedule_bg_copy_tilemap_to_vram(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_817804C(u8 windowId, const u8 *text, u8 x, u8 y, s32 speed, u8 colorStructId)
|
static void PrintTextInBerryTagScreen(u8 windowId, const u8 *text, u8 x, u8 y, s32 speed, u8 colorStructId)
|
||||||
{
|
{
|
||||||
AddTextPrinterParameterized2(windowId, 1, x, y, 0, 0, &gUnknown_085EFD20[colorStructId], speed, text);
|
AddTextPrinterParameterized2(windowId, 1, x, y, 0, 0, &sTextColors[colorStructId], speed, text);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178090(void)
|
static void AddBerryTagTextToBg0(void)
|
||||||
{
|
{
|
||||||
memcpy(GetBgTilemapBuffer(0), sBerryTag->tilemapBuffers[2], sizeof(sBerryTag->tilemapBuffers[2]));
|
memcpy(GetBgTilemapBuffer(0), sBerryTag->tilemapBuffers[2], sizeof(sBerryTag->tilemapBuffers[2]));
|
||||||
FillWindowPixelBuffer(3, 0xFF);
|
FillWindowPixelBuffer(WIN_BERRY_TAG, 0xFF);
|
||||||
sub_817804C(3, gText_BerryTag, GetStringCenterAlignXOffset(1, gText_BerryTag, 0x40), 1, 0, 1);
|
PrintTextInBerryTagScreen(WIN_BERRY_TAG, gText_BerryTag, GetStringCenterAlignXOffset(1, gText_BerryTag, 0x40), 1, 0, 1);
|
||||||
PutWindowTilemap(3);
|
PutWindowTilemap(WIN_BERRY_TAG);
|
||||||
schedule_bg_copy_tilemap_to_vram(0);
|
schedule_bg_copy_tilemap_to_vram(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81780F4(void)
|
static void PrintAllBerryData(void)
|
||||||
{
|
{
|
||||||
sub_8178110();
|
PrintBerryNumberAndName();
|
||||||
sub_8178174();
|
PrintBerrySize();
|
||||||
sub_8178250();
|
PrintBerryFirmness();
|
||||||
sub_81782D0();
|
PrintBerryDescription1();
|
||||||
sub_8178304();
|
PrintBerryDescription2();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178110(void)
|
static void PrintBerryNumberAndName(void)
|
||||||
{
|
{
|
||||||
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
||||||
ConvertIntToDecimalStringN(gStringVar1, sBerryTag->berryId, 2, 2);
|
ConvertIntToDecimalStringN(gStringVar1, sBerryTag->berryId, 2, 2);
|
||||||
StringCopy(gStringVar2, berry->name);
|
StringCopy(gStringVar2, berry->name);
|
||||||
StringExpandPlaceholders(gStringVar4, gText_UnkF908Var1Var2);
|
StringExpandPlaceholders(gStringVar4, gText_UnkF908Var1Var2);
|
||||||
sub_817804C(0, gStringVar4, 0, 1, 0, 0);
|
PrintTextInBerryTagScreen(WIN_BERRY_NAME, gStringVar4, 0, 1, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178174(void)
|
static void PrintBerrySize(void)
|
||||||
{
|
{
|
||||||
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
||||||
PrintTextOnWindow(1, 1, gText_SizeSlash, 0, 1, TEXT_SPEED_FF, NULL);
|
PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_SizeSlash, 0, 1, TEXT_SPEED_FF, NULL);
|
||||||
if (berry->size != 0)
|
if (berry->size != 0)
|
||||||
{
|
{
|
||||||
u32 inches, fraction;
|
u32 inches, fraction;
|
||||||
@@ -380,48 +390,48 @@ static void sub_8178174(void)
|
|||||||
ConvertIntToDecimalStringN(gStringVar1, inches, 0, 2);
|
ConvertIntToDecimalStringN(gStringVar1, inches, 0, 2);
|
||||||
ConvertIntToDecimalStringN(gStringVar2, fraction, 0, 2);
|
ConvertIntToDecimalStringN(gStringVar2, fraction, 0, 2);
|
||||||
StringExpandPlaceholders(gStringVar4, gText_Var1DotVar2);
|
StringExpandPlaceholders(gStringVar4, gText_Var1DotVar2);
|
||||||
PrintTextOnWindow(1, 1, gStringVar4, 0x28, 1, 0, NULL);
|
PrintTextOnWindow(WIN_SIZE_FIRM, 1, gStringVar4, 0x28, 1, 0, NULL);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PrintTextOnWindow(1, 1, gText_ThreeMarks, 0x28, 1, 0, NULL);
|
PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_ThreeMarks, 0x28, 1, 0, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178250(void)
|
static void PrintBerryFirmness(void)
|
||||||
{
|
{
|
||||||
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
||||||
PrintTextOnWindow(1, 1, gText_FirmSlash, 0, 0x11, TEXT_SPEED_FF, NULL);
|
PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_FirmSlash, 0, 0x11, TEXT_SPEED_FF, NULL);
|
||||||
if (berry->firmness != 0)
|
if (berry->firmness != 0)
|
||||||
PrintTextOnWindow(1, 1, gBerryFirmnessStringPointers[berry->firmness - 1], 0x28, 0x11, 0, NULL);
|
PrintTextOnWindow(WIN_SIZE_FIRM, 1, sBerryFirmnessStrings[berry->firmness - 1], 0x28, 0x11, 0, NULL);
|
||||||
else
|
else
|
||||||
PrintTextOnWindow(1, 1, gText_ThreeMarks, 0x28, 0x11, 0, NULL);
|
PrintTextOnWindow(WIN_SIZE_FIRM, 1, gText_ThreeMarks, 0x28, 0x11, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81782D0(void)
|
static void PrintBerryDescription1(void)
|
||||||
{
|
{
|
||||||
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
||||||
PrintTextOnWindow(2, 1, berry->description1, 0, 1, 0, NULL);
|
PrintTextOnWindow(WIN_DESC, 1, berry->description1, 0, 1, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178304(void)
|
static void PrintBerryDescription2(void)
|
||||||
{
|
{
|
||||||
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
||||||
PrintTextOnWindow(2, 1, berry->description2, 0, 0x11, 0, NULL);
|
PrintTextOnWindow(WIN_DESC, 1, berry->description2, 0, 0x11, 0, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178338(void)
|
static void CreateBerrySprite(void)
|
||||||
{
|
{
|
||||||
sBerryTag->berrySpriteId = CreateBerryTagSprite(sBerryTag->berryId - 1, 56, 64);
|
sBerryTag->berrySpriteId = CreateBerryTagSprite(sBerryTag->berryId - 1, 56, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_817836C(void)
|
static void DestroyBerrySprite(void)
|
||||||
{
|
{
|
||||||
DestroySprite(&gSprites[sBerryTag->berrySpriteId]);
|
DestroySprite(&gSprites[sBerryTag->berrySpriteId]);
|
||||||
FreeBerryTagSpritePalette();
|
FreeBerryTagSpritePalette();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_817839C(void)
|
static void CreateFlavorCircleSprites(void)
|
||||||
{
|
{
|
||||||
sBerryTag->flavorCircleIds[FLAVOR_SPICY] = CreateBerryFlavorCircleSprite(64);
|
sBerryTag->flavorCircleIds[FLAVOR_SPICY] = CreateBerryFlavorCircleSprite(64);
|
||||||
sBerryTag->flavorCircleIds[FLAVOR_DRY] = CreateBerryFlavorCircleSprite(104);
|
sBerryTag->flavorCircleIds[FLAVOR_DRY] = CreateBerryFlavorCircleSprite(104);
|
||||||
@@ -430,7 +440,7 @@ static void sub_817839C(void)
|
|||||||
sBerryTag->flavorCircleIds[FLAVOR_SOUR] = CreateBerryFlavorCircleSprite(224);
|
sBerryTag->flavorCircleIds[FLAVOR_SOUR] = CreateBerryFlavorCircleSprite(224);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178404(void)
|
static void SetFlavorCirclesVisiblity(void)
|
||||||
{
|
{
|
||||||
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
const struct Berry *berry = GetBerryInfo(sBerryTag->berryId);
|
||||||
|
|
||||||
@@ -460,7 +470,7 @@ static void sub_8178404(void)
|
|||||||
gSprites[sBerryTag->flavorCircleIds[FLAVOR_SOUR]].invisible = 1;
|
gSprites[sBerryTag->flavorCircleIds[FLAVOR_SOUR]].invisible = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178594(void)
|
static void DestroyFlavorCircleSprites(void)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
|
|
||||||
@@ -468,19 +478,19 @@ static void sub_8178594(void)
|
|||||||
DestroySprite(&gSprites[sBerryTag->flavorCircleIds[i]]);
|
DestroySprite(&gSprites[sBerryTag->flavorCircleIds[i]]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81785D0(u8 taskId)
|
static void PrepareToCloseBerryTagScreen(u8 taskId)
|
||||||
{
|
{
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
|
||||||
gTasks[taskId].func = sub_8178610;
|
gTasks[taskId].func = Task_CloseBerryTagScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178610(u8 taskId)
|
static void Task_CloseBerryTagScreen(u8 taskId)
|
||||||
{
|
{
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
sub_817836C();
|
DestroyBerrySprite();
|
||||||
sub_8178594();
|
DestroyFlavorCircleSprites();
|
||||||
Free(sBerryTag);
|
Free(sBerryTag);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
SetMainCallback2(bag_menu_mail_related);
|
SetMainCallback2(bag_menu_mail_related);
|
||||||
@@ -488,21 +498,21 @@ static void sub_8178610(u8 taskId)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178654(u8 taskId)
|
static void Task_HandleInput(u8 taskId)
|
||||||
{
|
{
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
u16 arrowKeys = gMain.newAndRepeatedKeys & DPAD_ANY;
|
u16 arrowKeys = gMain.newAndRepeatedKeys & DPAD_ANY;
|
||||||
if (arrowKeys == DPAD_UP)
|
if (arrowKeys == DPAD_UP)
|
||||||
sub_81786AC(taskId, -1);
|
TryChangeDisplayedBerry(taskId, -1);
|
||||||
else if (arrowKeys == DPAD_DOWN)
|
else if (arrowKeys == DPAD_DOWN)
|
||||||
sub_81786AC(taskId, 1);
|
TryChangeDisplayedBerry(taskId, 1);
|
||||||
else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
else if (gMain.newKeys & (A_BUTTON | B_BUTTON))
|
||||||
sub_81785D0(taskId);
|
PrepareToCloseBerryTagScreen(taskId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81786AC(u8 taskId, s8 toMove)
|
static void TryChangeDisplayedBerry(u8 taskId, s8 toMove)
|
||||||
{
|
{
|
||||||
s16 *data = gTasks[taskId].data;
|
s16 *data = gTasks[taskId].data;
|
||||||
s16 currPocketPosition = gUnknown_0203CE58.unk12[3] + gUnknown_0203CE58.unk8[3];
|
s16 currPocketPosition = gUnknown_0203CE58.unk12[3] + gUnknown_0203CE58.unk8[3];
|
||||||
@@ -516,12 +526,12 @@ static void sub_81786AC(u8 taskId, s8 toMove)
|
|||||||
|
|
||||||
data[0] = 0;
|
data[0] = 0;
|
||||||
PlaySE(SE_SELECT);
|
PlaySE(SE_SELECT);
|
||||||
sub_8178728(toMove);
|
HandleBagCursorPositionChange(toMove);
|
||||||
gTasks[taskId].func = sub_81787AC;
|
gTasks[taskId].func = Task_DisplayAnotherBerry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_8178728(s8 toMove)
|
static void HandleBagCursorPositionChange(s8 toMove)
|
||||||
{
|
{
|
||||||
u16 *scrollPos = &gUnknown_0203CE58.unk12[3];
|
u16 *scrollPos = &gUnknown_0203CE58.unk12[3];
|
||||||
u16 *cursorPos = &gUnknown_0203CE58.unk8[3];
|
u16 *cursorPos = &gUnknown_0203CE58.unk8[3];
|
||||||
@@ -543,7 +553,7 @@ static void sub_8178728(s8 toMove)
|
|||||||
sBerryTag->berryId = ItemIdToBerryType(BagGetItemIdByPocketPosition(BAG_BERRIES, *scrollPos + *cursorPos));
|
sBerryTag->berryId = ItemIdToBerryType(BagGetItemIdByPocketPosition(BAG_BERRIES, *scrollPos + *cursorPos));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sub_81787AC(u8 taskId)
|
static void Task_DisplayAnotherBerry(u8 taskId)
|
||||||
{
|
{
|
||||||
u16 i;
|
u16 i;
|
||||||
s16 posY;
|
s16 posY;
|
||||||
@@ -559,32 +569,32 @@ static void sub_81787AC(u8 taskId)
|
|||||||
FillWindowPixelBuffer(0, 0);
|
FillWindowPixelBuffer(0, 0);
|
||||||
break;
|
break;
|
||||||
case 0x40:
|
case 0x40:
|
||||||
sub_8178110();
|
PrintBerryNumberAndName();
|
||||||
break;
|
break;
|
||||||
case 0x50:
|
case 0x50:
|
||||||
sub_817836C();
|
DestroyBerrySprite();
|
||||||
sub_8178338();
|
CreateBerrySprite();
|
||||||
break;
|
break;
|
||||||
case 0x60:
|
case 0x60:
|
||||||
FillWindowPixelBuffer(1, 0);
|
FillWindowPixelBuffer(1, 0);
|
||||||
break;
|
break;
|
||||||
case 0x70:
|
case 0x70:
|
||||||
sub_8178174();
|
PrintBerrySize();
|
||||||
break;
|
break;
|
||||||
case 0x80:
|
case 0x80:
|
||||||
sub_8178250();
|
PrintBerryFirmness();
|
||||||
break;
|
break;
|
||||||
case 0x90:
|
case 0x90:
|
||||||
sub_8178404();
|
SetFlavorCirclesVisiblity();
|
||||||
break;
|
break;
|
||||||
case 0xA0:
|
case 0xA0:
|
||||||
FillWindowPixelBuffer(2, 0);
|
FillWindowPixelBuffer(2, 0);
|
||||||
break;
|
break;
|
||||||
case 0xB0:
|
case 0xB0:
|
||||||
sub_81782D0();
|
PrintBerryDescription1();
|
||||||
break;
|
break;
|
||||||
case 0xC0:
|
case 0xC0:
|
||||||
sub_8178304();
|
PrintBerryDescription2();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -596,32 +606,32 @@ static void sub_81787AC(u8 taskId)
|
|||||||
FillWindowPixelBuffer(2, 0);
|
FillWindowPixelBuffer(2, 0);
|
||||||
break;
|
break;
|
||||||
case 0x40:
|
case 0x40:
|
||||||
sub_8178304();
|
PrintBerryDescription2();
|
||||||
break;
|
break;
|
||||||
case 0x50:
|
case 0x50:
|
||||||
sub_81782D0();
|
PrintBerryDescription1();
|
||||||
break;
|
break;
|
||||||
case 0x60:
|
case 0x60:
|
||||||
sub_8178404();
|
SetFlavorCirclesVisiblity();
|
||||||
break;
|
break;
|
||||||
case 0x70:
|
case 0x70:
|
||||||
FillWindowPixelBuffer(1, 0);
|
FillWindowPixelBuffer(1, 0);
|
||||||
break;
|
break;
|
||||||
case 0x80:
|
case 0x80:
|
||||||
sub_8178250();
|
PrintBerryFirmness();
|
||||||
break;
|
break;
|
||||||
case 0x90:
|
case 0x90:
|
||||||
sub_8178174();
|
PrintBerrySize();
|
||||||
break;
|
break;
|
||||||
case 0xA0:
|
case 0xA0:
|
||||||
sub_817836C();
|
DestroyBerrySprite();
|
||||||
sub_8178338();
|
CreateBerrySprite();
|
||||||
break;
|
break;
|
||||||
case 0xB0:
|
case 0xB0:
|
||||||
FillWindowPixelBuffer(0, 0);
|
FillWindowPixelBuffer(0, 0);
|
||||||
break;
|
break;
|
||||||
case 0xC0:
|
case 0xC0:
|
||||||
sub_8178110();
|
PrintBerryNumberAndName();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -639,5 +649,5 @@ static void sub_81787AC(u8 taskId)
|
|||||||
ChangeBgY(2, 0x1000, data[1]);
|
ChangeBgY(2, 0x1000, data[1]);
|
||||||
|
|
||||||
if (data[0] == 0)
|
if (data[0] == 0)
|
||||||
gTasks[taskId].func = sub_8178654;
|
gTasks[taskId].func = Task_HandleInput;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-4
@@ -1266,10 +1266,7 @@ gUnknown_0203BCE8: @ 203BCE8
|
|||||||
|
|
||||||
.include "src/lottery_corner.o"
|
.include "src/lottery_corner.o"
|
||||||
.include "src/diploma.o"
|
.include "src/diploma.o"
|
||||||
|
.include "src/berry_tag_screen.o"
|
||||||
sBerryTag: @ 203BCF4
|
|
||||||
.space 0x4
|
|
||||||
|
|
||||||
.include "src/mystery_event_menu.o"
|
.include "src/mystery_event_menu.o"
|
||||||
.include "src/save_failed_screen.o"
|
.include "src/save_failed_screen.o"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user