summaryrefslogtreecommitdiff
path: root/src/field/party_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/field/party_menu.c')
-rw-r--r--src/field/party_menu.c800
1 files changed, 591 insertions, 209 deletions
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 9c1150515..66e7e2319 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -32,7 +32,7 @@
#include "string_util.h"
#include "strings.h"
#include "task.h"
-#include "unknown_task.h"
+#include "scanline_effect.h"
#include "util.h"
#include "script_pokemon_80F9.h"
#include "ewram.h"
@@ -94,14 +94,21 @@ static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite);
static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId);
static void ItemUseMoveMenu_HandleCancel(u8 taskId);
static bool8 SetupDefaultPartyMenu(void);
-static void sub_806B4A8(void);
-static void VBlankCB_PartyMenu(void);
-static bool8 LoadPartyMenuGraphics(u8 a);
+/*static*/ void sub_806B4A8(void);
+/*static*/ void VBlankCB_PartyMenu(void);
+/*static*/ bool8 LoadPartyMenuGraphics(u8 a);
static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d);
static void sub_806BB9C(u8 a);
static void sub_806BBEC(u8 a);
-const u16 TMHMMoves[] = {
+EWRAM_DATA u8 gUnknown_0202E8F4 = 0;
+EWRAM_DATA u8 gUnknown_0202E8F5 = 0;
+EWRAM_DATA u8 gUnknown_0202E8F6 = 0;
+EWRAM_DATA u16 gUnknown_0202E8F8 = 0;
+EWRAM_DATA u8 gPartyMenuType = 0;
+
+const u16 TMHMMoves[] =
+{
MOVE_FOCUS_PUNCH,
MOVE_DRAGON_CLAW,
MOVE_WATER_PULSE,
@@ -458,10 +465,6 @@ struct Unk201FE00
extern u16 gBattleTypeFlags;
extern u8 gTileBuffer[];
-extern u8 gUnknown_0202E8F4;
-extern u8 gUnknown_0202E8F6;
-extern u16 gUnknown_0202E8F8;
-extern u8 gPartyMenuType;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gPlayerPartyCount;
extern s32 gBattleMoveDamage;
@@ -490,9 +493,71 @@ extern const u8 gStatusPal_Icons[];
#define WINDOW_RIGHT (29)
#endif
-
-#ifdef NONMATCHING
-// Main handler for the party menu.
+#if DEBUG
+__attribute__((naked))
+void CB2_PartyMenuMain(void)
+{
+ asm("\
+ push {r4, r5, r6, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ bl AnimateSprites\n\
+ bl BuildOamBuffer\n\
+ ldr r0, ._3 @ gPartyMenuType\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x4\n\
+ ldr r1, ._3 + 4 @ PartyMonTextSettings\n\
+ add r5, r0, r1\n\
+ mov r6, #0x0\n\
+._1:\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x3\n\
+ ldrb r1, [r5, #0x1]\n\
+ lsl r1, r1, #0x3\n\
+ ldr r2, [r5, #0x4]\n\
+ lsl r3, r6, #0x5\n\
+ mov r4, #0x80\n\
+ lsl r4, r4, #0x2\n\
+ orr r3, r3, r4\n\
+ str r3, [sp]\n\
+ mov r3, #0x0\n\
+ bl DrawPartyMenuMonText\n\
+ add r5, r5, #0x8\n\
+ add r6, r6, #0x1\n\
+ cmp r6, #0x5\n\
+ ble ._1 @cond_branch\n\
+ bl RunTasks\n\
+ bl UpdatePaletteFade\n\
+ ldr r0, ._3 + 8 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._2 @cond_branch\n\
+ ldr r0, ._3 + 12 @ gLink\n\
+ ldr r1, ._3 + 16 @ 0xfbd\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x2\n\
+ str r1, [sp]\n\
+ mov r1, #0x1\n\
+ mov r2, #0x1\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._2:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5, r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+._4:\n\
+ .align 2, 0\n\
+._3:\n\
+ .word gPartyMenuType\n\
+ .word PartyMonTextSettings\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
void CB2_PartyMenuMain(void)
{
const struct PartyMonTextSettingsStruct *textSettings;
@@ -506,62 +571,18 @@ void CB2_PartyMenuMain(void)
{
// Draw mon name, level, and hp sprites
DrawPartyMenuMonText(
- textSettings[i].xOffset * 8,
- textSettings[i].yOffset * 8,
- textSettings[i].oamSettings,
+ textSettings->xOffset * 8,
+ textSettings->yOffset * 8,
+ textSettings->oamSettings,
0,
(i << 5) | 0x200);
+ textSettings++;
}
RunTasks();
UpdatePaletteFade();
}
-#else
-__attribute__((naked))
-void CB2_PartyMenuMain(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- bl AnimateSprites\n\
- bl BuildOamBuffer\n\
- ldr r0, _0806AF2C @ =gPartyMenuType\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 4\n\
- ldr r1, _0806AF30 @ =PartyMonTextSettings\n\
- adds r5, r0, r1\n\
- movs r6, 0\n\
-_0806AEF8:\n\
- ldrb r0, [r5]\n\
- lsls r0, 3\n\
- ldrb r1, [r5, 0x1]\n\
- lsls r1, 3\n\
- ldr r2, [r5, 0x4]\n\
- lsls r3, r6, 5\n\
- movs r4, 0x80\n\
- lsls r4, 2\n\
- orrs r3, r4\n\
- str r3, [sp]\n\
- movs r3, 0\n\
- bl DrawPartyMenuMonText\n\
- adds r5, 0x8\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0806AEF8\n\
- bl RunTasks\n\
- bl UpdatePaletteFade\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806AF2C: .4byte gPartyMenuType\n\
-_0806AF30: .4byte PartyMonTextSettings\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
+#endif
void VBlankCB_PartyMenu(void)
{
@@ -666,29 +687,432 @@ bool8 SetupDefaultPartyMenu(void)
return FALSE;
}
+#if DEBUG
+__attribute__((naked))
+bool8 InitPartyMenu(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ add sp, sp, #0xfffffff4\n\
+ ldr r0, ._55 @ gMain\n\
+ ldr r1, ._55 + 4 @ 0x43c\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x11\n\
+ bls ._53 @cond_branch\n\
+ b ._125\n\
+._53:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._55 + 8 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._56:\n\
+ .align 2, 0\n\
+._55:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+ .word ._57\n\
+._57:\n\
+ .word ._58\n\
+ .word ._59\n\
+ .word ._60\n\
+ .word ._61\n\
+ .word ._62\n\
+ .word ._63\n\
+ .word ._64\n\
+ .word ._65\n\
+ .word ._66\n\
+ .word ._67\n\
+ .word ._68\n\
+ .word ._69\n\
+ .word ._70\n\
+ .word ._71\n\
+ .word ._72\n\
+ .word ._73\n\
+ .word ._74\n\
+ .word ._75\n\
+._58:\n\
+ mov r0, #0x0\n\
+ bl SetVBlankCallback\n\
+ mov r3, #0xc0\n\
+ lsl r3, r3, #0x13\n\
+ mov r4, #0xc0\n\
+ lsl r4, r4, #0x9\n\
+ add r2, sp, #0x8\n\
+ mov r8, r2\n\
+ add r2, sp, #0x4\n\
+ mov r6, #0x0\n\
+ ldr r1, ._78 @ 0x40000d4\n\
+ mov r5, #0x80\n\
+ lsl r5, r5, #0x5\n\
+ ldr r7, ._78 + 4 @ 0x81000800\n\
+ mov r0, #0x81\n\
+ lsl r0, r0, #0x18\n\
+ mov ip, r0\n\
+._76:\n\
+ strh r6, [r2]\n\
+ add r0, sp, #0x4\n\
+ str r0, [r1]\n\
+ str r3, [r1, #0x4]\n\
+ str r7, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ add r3, r3, r5\n\
+ sub r4, r4, r5\n\
+ cmp r4, r5\n\
+ bhi ._76 @cond_branch\n\
+ strh r6, [r2]\n\
+ add r2, sp, #0x4\n\
+ str r2, [r1]\n\
+ str r3, [r1, #0x4]\n\
+ lsr r0, r4, #0x1\n\
+ mov r3, ip\n\
+ orr r0, r0, r3\n\
+ str r0, [r1, #0x8]\n\
+ ldr r0, [r1, #0x8]\n\
+ mov r0, #0xe0\n\
+ lsl r0, r0, #0x13\n\
+ mov r3, #0x80\n\
+ lsl r3, r3, #0x3\n\
+ mov r4, #0x0\n\
+ str r4, [sp, #0x8]\n\
+ ldr r2, ._78 @ 0x40000d4\n\
+ mov r1, r8\n\
+ str r1, [r2]\n\
+ str r0, [r2, #0x4]\n\
+ lsr r0, r3, #0x2\n\
+ mov r1, #0x85\n\
+ lsl r1, r1, #0x18\n\
+ orr r0, r0, r1\n\
+ str r0, [r2, #0x8]\n\
+ ldr r0, [r2, #0x8]\n\
+ mov r1, #0xa0\n\
+ lsl r1, r1, #0x13\n\
+ add r0, sp, #0x4\n\
+ strh r4, [r0]\n\
+ str r0, [r2]\n\
+ str r1, [r2, #0x4]\n\
+ lsr r3, r3, #0x1\n\
+ mov r0, #0x81\n\
+ lsl r0, r0, #0x18\n\
+ orr r3, r3, r0\n\
+ str r3, [r2, #0x8]\n\
+ ldr r0, [r2, #0x8]\n\
+ ldr r2, ._78 + 8 @ gPaletteFade\n\
+ ldrb r0, [r2, #0x8]\n\
+ mov r1, #0x80\n\
+ orr r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+ ldr r1, ._78 + 12 @ gMain\n\
+ ldr r2, ._78 + 16 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._79:\n\
+ .align 2, 0\n\
+._78:\n\
+ .word 0x40000d4\n\
+ .word 0x81000800\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._59:\n\
+ bl ScanlineEffect_Stop\n\
+ b ._115\n\
+._60:\n\
+ bl sub_806B4A8\n\
+ ldr r1, ._82 @ \n\
+ mov r2, #0x99\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ mov r2, #0x0\n\
+ strh r2, [r0]\n\
+ ldr r3, ._82 + 4 @ \n\
+ add r0, r1, r3\n\
+ strh r2, [r0]\n\
+ mov r0, #0x9a\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r1, r0\n\
+ strh r2, [r1]\n\
+ ldr r1, ._82 + 8 @ \n\
+ ldr r2, ._82 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._83:\n\
+ .align 2, 0\n\
+._82:\n\
+ .word +0x201b000\n\
+ .word 0x266\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._61:\n\
+ bl ResetSpriteData\n\
+ b ._115\n\
+._62:\n\
+ ldr r0, ._88 @ \n\
+ mov r1, #0x96\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ beq ._86 @cond_branch\n\
+ cmp r0, #0x5\n\
+ beq ._86 @cond_branch\n\
+ bl ResetTasks\n\
+._86:\n\
+ ldr r1, ._88 + 4 @ \n\
+ ldr r2, ._88 + 8 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._89:\n\
+ .align 2, 0\n\
+._88:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._63:\n\
+ bl FreeAllSpritePalettes\n\
+ b ._115\n\
+._64:\n\
+ ldr r4, ._92 @ \n\
+ mov r1, #0x97\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r4, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl CreateTask\n\
+ mov r2, #0x98\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r4, r2\n\
+ strb r0, [r1]\n\
+ b ._115\n\
+._93:\n\
+ .align 2, 0\n\
+._92:\n\
+ .word +0x201b000\n\
+._65:\n\
+ ldr r0, ._95 @ gWindowTemplate_81E6C90\n\
+ bl Text_LoadWindowTemplate\n\
+ ldr r1, ._95 + 4 @ gMain\n\
+ ldr r0, ._95 + 8 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._96:\n\
+ .align 2, 0\n\
+._95:\n\
+ .word gWindowTemplate_81E6C90\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._66:\n\
+ ldr r4, ._98 @ gUnknown_03004210\n\
+ ldr r1, ._98 + 4 @ gWindowTemplate_81E6C90\n\
+ add r0, r4, #0\n\
+ bl Text_InitWindowWithTemplate\n\
+ add r0, r4, #0\n\
+ mov r1, #0x1\n\
+ bl MultistepInitWindowTileData\n\
+ ldr r1, ._98 + 8 @ gMain\n\
+ ldr r2, ._98 + 12 @ 0x43c\n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._99:\n\
+ .align 2, 0\n\
+._98:\n\
+ .word gUnknown_03004210\n\
+ .word gWindowTemplate_81E6C90\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._67:\n\
+ bl MultistepLoadFont\n\
+ cmp r0, #0\n\
+ bne ._100 @cond_branch\n\
+ b ._125\n\
+._100:\n\
+ ldr r0, ._103 @ \n\
+ mov r3, #0x99\n\
+ lsl r3, r3, #0x2\n\
+ add r0, r0, r3\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ ldr r1, ._103 + 4 @ \n\
+ ldr r0, ._103 + 8 @ \n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._104:\n\
+ .align 2, 0\n\
+._103:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._68:\n\
+ ldr r0, ._107 @ \n\
+ mov r1, #0x99\n\
+ lsl r1, r1, #0x2\n\
+ add r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ bl LoadPartyMenuGraphics\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._105 @cond_branch\n\
+ mov r0, #0x0\n\
+ strh r0, [r4]\n\
+ ldr r1, ._107 + 4 @ \n\
+ ldr r2, ._107 + 8 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._108:\n\
+ .align 2, 0\n\
+._107:\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._105:\n\
+ ldrh r0, [r4]\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r4]\n\
+ b ._125\n\
+._69:\n\
+ bl sub_809D51C\n\
+ b ._115\n\
+._70:\n\
+ ldr r2, ._113 @ PartyMenuHandlers\n\
+ ldr r0, ._113 + 4 @ \n\
+ mov r1, #0x96\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r2, r2, #0x4\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ bl _call_via_r0\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ cmp r0, #0x1\n\
+ bne ._125 @cond_branch\n\
+ ldr r1, ._113 + 8 @ \n\
+ ldr r2, ._113 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._114:\n\
+ .align 2, 0\n\
+._113:\n\
+ .word PartyMenuHandlers\n\
+ .word +0x201b000\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._71:\n\
+ ldr r0, ._116 @ gWindowTemplate_81E6CC8\n\
+ bl MultistepInitMenuWindowBegin\n\
+ b ._115\n\
+._117:\n\
+ .align 2, 0\n\
+._116:\n\
+ .word gWindowTemplate_81E6CC8\n\
+._72:\n\
+ bl MultistepInitMenuWindowContinue\n\
+ cmp r0, #0\n\
+ beq ._125 @cond_branch\n\
+ ldr r1, ._120 @ gMain\n\
+ ldr r0, ._120 + 4 @ 0x43c\n\
+ add r1, r1, r0\n\
+ b ._122\n\
+._121:\n\
+ .align 2, 0\n\
+._120:\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._73:\n\
+ ldr r0, ._123 @ \n\
+ ldr r1, ._123 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x0\n\
+ bl PrintPartyMenuPromptText\n\
+ ldr r1, ._123 + 8 @ \n\
+ ldr r2, ._123 + 12 @ \n\
+ add r1, r1, r2\n\
+ b ._122\n\
+._124:\n\
+ .align 2, 0\n\
+._123:\n\
+ .word +0x201b000\n\
+ .word 0x259\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._74:\n\
+ mov r0, #0x1\n\
+ neg r0, r0\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ mov r2, #0x10\n\
+ mov r3, #0x0\n\
+ bl BeginNormalPaletteFade\n\
+ ldr r2, ._126 @ gPaletteFade\n\
+ ldrb r1, [r2, #0x8]\n\
+ mov r0, #0x7f\n\
+ and r0, r0, r1\n\
+ strb r0, [r2, #0x8]\n\
+._115:\n\
+ ldr r1, ._126 + 4 @ gMain\n\
+ ldr r3, ._126 + 8 @ 0x43c\n\
+ add r1, r1, r3\n\
+._122:\n\
+ ldrb r0, [r1]\n\
+ add r0, r0, #0x1\n\
+ strb r0, [r1]\n\
+ b ._125\n\
+._127:\n\
+ .align 2, 0\n\
+._126:\n\
+ .word gPaletteFade\n\
+ .word gMain\n\
+ .word 0x43c\n\
+._75:\n\
+ ldr r0, ._130 @ VBlankCB_PartyMenu\n\
+ bl SetVBlankCallback\n\
+ ldr r0, ._130 + 4 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._128 @cond_branch\n\
+ ldr r0, ._130 + 8 @ 0x600e5e0\n\
+ mov r1, #0x80\n\
+ lsl r1, r1, #0x8\n\
+ ldr r2, ._130 + 12 @ 0x6007800\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008218\n\
+._128:\n\
+ mov r0, #0x1\n\
+ b ._129\n\
+._131:\n\
+ .align 2, 0\n\
+._130:\n\
+ .word VBlankCB_PartyMenu+1\n\
+ .word gLinkOpen\n\
+ .word 0x600e5e0\n\
+ .word 0x6007800\n\
+._125:\n\
+ mov r0, #0x0\n\
+._129:\n\
+ add sp, sp, #0xc\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r1}\n\
+ bx r1");
+}
+#else
bool8 InitPartyMenu(void)
{
- u8 *addr;
- u32 size;
-
switch (gMain.state)
{
case 0:
SetVBlankCallback(NULL);
- addr = (u8 *)VRAM;
- size = VRAM_SIZE;
- while (1)
- {
- DmaFill16(3, 0, addr, 0x1000);
- addr += 0x1000;
- size -= 0x1000;
- if (size <= 0x1000)
- {
- DmaFill16(3, 0, addr, size);
- break;
- }
- }
-
+ DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000);
DmaClear32(3, OAM, OAM_SIZE);
DmaClear16(3, PLTT, PLTT_SIZE);
@@ -696,7 +1120,7 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
@@ -727,11 +1151,11 @@ bool8 InitPartyMenu(void)
gMain.state++;
break;
case 7:
- SetUpWindowConfig(&gWindowConfig_81E6C90);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C90);
gMain.state++;
break;
case 8:
- InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C90);
+ Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C90);
MultistepInitWindowTileData(&gUnknown_03004210, 1);
gMain.state++;
break;
@@ -764,7 +1188,7 @@ bool8 InitPartyMenu(void)
}
break;
case 13:
- MultistepInitMenuWindowBegin(&gWindowConfig_81E6CC8);
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8);
gMain.state++;
break;
case 14:
@@ -789,6 +1213,7 @@ bool8 InitPartyMenu(void)
return FALSE;
}
+#endif
void CB2_InitPartyMenu(void)
{
@@ -841,9 +1266,7 @@ void ReDrawPartyMonBackgrounds(void)
{
if (ewram1B000.unk261)
{
- const void *src = gBGTilemapBuffers[2];
- void *dest = (void *)(BG_VRAM + 0x3000);
- DmaCopy16(3, src, dest, 0x800);
+ DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800);
if (ewram1B000.unk261 == 2)
{
@@ -1226,8 +1649,6 @@ void sub_806BBEC(u8 a)
}
}
-#ifdef NONMATCHING
-// The original THUMB is preserving r8 for seemingly no reason. Unsure how to match.
void sub_806BC3C(u8 monIndex, u8 b)
{
u16 *vramPtr = gUnknown_08376918[IsDoubleBattle()][monIndex];
@@ -1240,74 +1661,10 @@ void sub_806BC3C(u8 monIndex, u8 b)
vramPtr[i] = gUnknown_08E9A300[offset] + 0x10C;
vramPtr[i + 0x20] = gUnknown_08E9A300[offset + 0x20] + 0x10C;
}
+
+ // Some dead code was likely optimized out, but the compiler still think r8 was used.
+ asm("":::"r8");
}
-#else
-__attribute__((naked))
-void sub_806BC3C(u8 monIndex, u8 b)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- adds r4, r0, 0\n\
- adds r5, r1, 0\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldr r6, _0806BCB0 @ =gUnknown_08376918\n\
- bl IsDoubleBattle\n\
- lsls r4, 2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r1, r0, 1\n\
- adds r1, r0\n\
- lsls r1, 3\n\
- adds r4, r1\n\
- adds r4, r6\n\
- ldr r7, [r4]\n\
- movs r6, 0\n\
- adds r0, r5, 0\n\
- movs r1, 0x7\n\
- bl __udivsi3\n\
- lsls r0, 24\n\
- lsrs r4, r0, 19\n\
- ldr r5, _0806BCB4 @ =gUnknown_08E9A300\n\
- movs r0, 0x86\n\
- lsls r0, 1\n\
- adds r3, r0, 0\n\
-_0806BC7C:\n\
- adds r1, r6, r4\n\
- lsls r2, r6, 1\n\
- adds r2, r7\n\
- lsls r0, r1, 1\n\
- adds r0, r5\n\
- ldrh r0, [r0]\n\
- adds r0, r3, r0\n\
- strh r0, [r2]\n\
- adds r2, 0x40\n\
- adds r1, 0x20\n\
- lsls r1, 1\n\
- adds r1, r5\n\
- ldrh r1, [r1]\n\
- adds r0, r3, r1\n\
- strh r0, [r2]\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0x6\n\
- bls _0806BC7C\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0806BCB0: .4byte gUnknown_08376918\n\
-_0806BCB4: .4byte gUnknown_08E9A300\n\
- .syntax divided\n");
-}
-#endif // NONMATCHING
void unref_sub_806BCB8(u8 a)
{
@@ -2790,26 +3147,26 @@ void PrintPartyMenuPromptText(u8 textId, u8 b)
switch (b)
{
case 0:
- MenuDrawTextWindow(0, 16, 23, 19);
+ Menu_DrawStdWindowFrame(0, 16, 23, 19);
break;
case 1:
- MenuDrawTextWindow(0, 16, 19, 19);
+ Menu_DrawStdWindowFrame(0, 16, 19, 19);
break;
case 2:
- MenuDrawTextWindow(0, 16, 22, 19);
+ Menu_DrawStdWindowFrame(0, 16, 22, 19);
break;
case 3:
- MenuDrawTextWindow(0, 16, 18, 19);
+ Menu_DrawStdWindowFrame(0, 16, 18, 19);
break;
}
- MenuPrint(PartyMenuPromptTexts[textId], 1, 17);
+ Menu_PrintText(PartyMenuPromptTexts[textId], 1, 17);
}
}
void sub_806D5A4(void)
{
- MenuZeroFillWindowRect(0, 16, 29, 19);
+ Menu_EraseWindowRect(0, 16, 29, 19);
}
void sub_806D5B8(u8 monIndex)
@@ -2820,7 +3177,7 @@ void sub_806D5B8(u8 monIndex)
u8 right = gUnknown_08376948[IsDoubleBattle()][monIndex].right;
u8 bottom = gUnknown_08376948[IsDoubleBattle()][monIndex].bottom;
- ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom);
+ Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom);
var1 = 0;
CpuFastSet(&var1, OBJ_VRAM1 + monIndex * 0x400, 0x1000100);
@@ -2834,7 +3191,7 @@ void sub_806D668(u8 monIndex)
u8 right = gUnknown_08376978[IsDoubleBattle()][monIndex].right;
u8 bottom = gUnknown_08376978[IsDoubleBattle()][monIndex].bottom;
- ZeroFillWindowRect(&gUnknown_03004210, left, top, right, bottom);
+ Text_EraseWindowRect(&gUnknown_03004210, left, top, right, bottom);
var1 = 0;
CpuFastSet(&var1, OBJ_VRAM1 + 0x300 + monIndex * 0x400, 0x1000040);
@@ -3427,7 +3784,7 @@ void PartyMenuDoPrintMonNickname(u8 monIndex, int b, const u8 *nameBuffer)
{
u32 var1 = 0;
CpuFastSet(&var1, gTileBuffer, 0x1000100);
- sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gTileBuffer, nameBuffer);
+ Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gTileBuffer, nameBuffer);
CpuFastSet(gTileBuffer, OBJ_VRAM1 + (monIndex * 0x400), 128);
}
@@ -3537,7 +3894,7 @@ void PartyMenuDoPrintLevel(u8 monIndex, u8 menuLayout, u8 level)
var1 = 0;
CpuFastSet(&var1, gUnknown_02039460, 0x1000020);
- sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
+ Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x200 + (monIndex * 0x400), 32);
}
@@ -3631,7 +3988,7 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
var = 0;
CpuFastSet(&var, gUnknown_02039460, 0x1000040);
- sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
+ Text_InitWindow8004E3C((struct WindowTemplate *)&gWindowTemplate_81E6CAC, gUnknown_02039460 - 0x100 /*gTileBuffer*/, gStringVar1);
CpuFastSet(gUnknown_02039460, OBJ_VRAM1 + 0x300 + (monIndex * 0x400), 64);
}
@@ -3781,8 +4138,8 @@ void ClosePartyPopupMenu(u8 index, const struct PartyPopupMenu *menu)
SetPartyPopupMenuOffsets(index, &left, &top, menu);
- MenuZeroFillWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1);
- HandleDestroyMenuCursors();
+ Menu_EraseWindowRect(left, top, left + menu[index].width, menu[index].numChoices * 2 + top + 1);
+ Menu_DestroyCursor();
}
TaskFunc PartyMenuGetPopupMenuFunc(u8 menuIndex, const struct PartyPopupMenu *menus, const struct MenuAction2 *menuActions, u8 itemIndex)
@@ -3797,7 +4154,7 @@ u8 sub_806E834(const u8 *message, u8 arg1)
gUnknown_0202E8F6 = 1;
- MenuDrawTextWindow(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
+ Menu_DrawStdWindowFrame(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
MenuPrintMessage(message, WINDOW_LEFT + 1, 15);
taskId = CreateTask(sub_806E884, 1);
@@ -3808,11 +4165,11 @@ u8 sub_806E834(const u8 *message, u8 arg1)
static void sub_806E884(u8 taskId)
{
- if (MenuUpdateWindowText())
+ if (Menu_UpdateWindowText())
{
gUnknown_0202E8F6 = 0;
if (gTasks[taskId].data[0] == 0)
- MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
+ Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
DestroyTask(taskId);
}
}
@@ -3902,13 +4259,13 @@ void party_menu_link_mon_held_item_object(u8 taskId)
void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId)
{
- s8 selection = ProcessMenuInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrap_();
if (selection == 0)
{
u16 currentItem;
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
currentItem = GetMonData(ewram1C000.pokemon, MON_DATA_HELD_ITEM);
RemoveBagItem(ewram1C000.unk6, 1);
if (AddBagItem(currentItem, 1) == TRUE)
@@ -3937,7 +4294,7 @@ void PartyMenuTryGiveMonHeldItem_806EACC(u8 taskId)
return;
if (selection == -1)
PlaySE(SE_SELECT);
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
}
gTasks[taskId].func = party_menu_link_mon_held_item_object;
}
@@ -4039,7 +4396,7 @@ void DoTakeMail(u8 taskId, TaskFunc func)
void Task_LoseMailMessage(u8 taskId)
{
- s8 selection = ProcessMenuInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrap_();
if (selection == 0)
{
@@ -4052,7 +4409,7 @@ void Task_LoseMailMessage(u8 taskId)
{
sub_806E834(gOtherText_BagFullCannotRemoveItem, 0);
}
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
gTasks[taskId].func = party_menu_link_mon_held_item_object;
}
else
@@ -4061,8 +4418,8 @@ void Task_LoseMailMessage(u8 taskId)
return;
if (selection == -1)
PlaySE(SE_SELECT);
- MenuZeroFillWindowRect(23, 8, 29, 13);
- MenuZeroFillWindowRect(0, 14, 29, 19);
+ Menu_EraseWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(0, 14, 29, 19);
gTasks[taskId].func = party_menu_link_mon_held_item_object;
}
}
@@ -4078,11 +4435,11 @@ void Task_ConfirmLoseMailMessage(u8 taskId)
void Task_TakeHeldMail(u8 taskId)
{
- s8 selection = ProcessMenuInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrap_();
if (selection == 0)
{
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
if (TakeMailFromMon2(ewram1C000.pokemon) != 0xFF)
sub_806E834(gOtherText_MailWasSent, 0);
else
@@ -4095,7 +4452,7 @@ void Task_TakeHeldMail(u8 taskId)
return;
if (selection == -1)
PlaySE(SE_SELECT);
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
sub_806E834(gOtherText_MailRemovedMessageLost, 1);
gTasks[taskId].func = Task_ConfirmLoseMailMessage;
}
@@ -4112,7 +4469,7 @@ void Task_ConfirmTakeHeldMail(u8 taskId)
u16 ItemIdToBattleMoveId(u16 item)
{
- u16 machineNumber = item - ITEM_TM01;
+ u16 machineNumber = item - ITEM_TM01_FOCUS_PUNCH;
return TMHMMoves[machineNumber];
}
@@ -4136,6 +4493,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func)
CreateTask(Task_TeamMonTMMove, 5);
}
+#if DEBUG
+extern u8 gUnknown_020297ED;
+#endif
+
void Task_TeamMonTMMove(u8 taskId)
{
GetMonNickname(ewram1C000.pokemon, gStringVar1);
@@ -4150,7 +4511,11 @@ void Task_TeamMonTMMove(u8 taskId)
}
else
{
- if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
+ if (
+#if DEBUG
+ !gUnknown_020297ED &&
+#endif
+ !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
sub_806E834(gStringVar4, 1);
@@ -4240,11 +4605,11 @@ void sub_806F358(u8 taskId)
void sub_806F390(u8 taskId)
{
- s8 selection = ProcessMenuInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrap_();
if (selection == 0)
{
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
sub_806E834(gOtherText_WhichMoveToForget2, 1);
gTasks[taskId].func = sub_806F44C;
}
@@ -4320,7 +4685,7 @@ void StopTryingToTeachMove_806F588(u8 taskId)
void StopTryingToTeachMove_806F614(u8 taskId)
{
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_StopTryingTo);
sub_806E834(gStringVar4, 1);
@@ -4338,11 +4703,11 @@ void StopTryingToTeachMove_806F67C(u8 taskId)
void StopTryingToTeachMove_806F6B4(u8 taskId)
{
- s8 selection = ProcessMenuInputNoWrap_();
+ s8 selection = Menu_ProcessInputNoWrap_();
if (selection == 0)
{
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
GetMonNickname(ewram1C000.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_DidNotLearnMove2);
@@ -4355,7 +4720,7 @@ void StopTryingToTeachMove_806F6B4(u8 taskId)
return;
if (selection == -1)
PlaySE(SE_SELECT);
- MenuZeroFillWindowRect(23, 8, 29, 13);
+ Menu_EraseWindowRect(23, 8, 29, 13);
GetMonNickname(ewram1C000.pokemon, gStringVar1);
StringCopy(gStringVar2, gMoveNames[ewram1C000.unk8]);
StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
@@ -4706,7 +5071,7 @@ void sub_8070088(u8 taskId)
else
{
gUnknown_0202E8F4 = 1;
- MenuZeroFillWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
+ Menu_EraseWindowRect(WINDOW_LEFT, 14, WINDOW_RIGHT, 19);
PlaySE(SE_KAIFUKU);
PartyMenuUpdateLevelOrStatus(ewram1C000.pokemon, ewram1C000.unk5);
task_pc_turn_off(&gUnknown_083769A8[IsDoubleBattle() * 12 + ewram1C000.unk5 * 2], 9);
@@ -4763,12 +5128,12 @@ void CreateItemUseMoveMenu(u8 partyMonIndex)
u8 i;
r6 = 0;
- MenuDrawTextWindow(19, 10, 29, 19);
+ Menu_DrawStdWindowFrame(19, 10, 29, 19);
for (i = 0; i < 4; i++)
{
u16 move = GetMonData(&gPlayerParty[partyMonIndex], MON_DATA_MOVE1 + i);
- MenuPrint(gMoveNames[move], 20, i * 2 + 11);
+ Menu_PrintText(gMoveNames[move], 20, i * 2 + 11);
if (move != 0)
r6++;
}
@@ -4780,12 +5145,12 @@ void Task_HandleItemUseMoveMenuInput(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
PlaySE(SE_SELECT);
- MoveMenuCursor(-1);
+ Menu_MoveCursor(-1);
}
else if (gMain.newKeys & DPAD_DOWN)
{
PlaySE(SE_SELECT);
- MoveMenuCursor(1);
+ Menu_MoveCursor(1);
}
else if (gMain.newKeys & A_BUTTON)
{
@@ -4827,17 +5192,17 @@ void DoPPRecoveryItemEffect(u8 taskId, u16 item, TaskFunc c)
void ItemUseMoveMenu_HandleMoveSelection(u8 taskId)
{
- HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(19, 10, 29, 19);
+ Menu_DestroyCursor();
+ Menu_EraseWindowRect(19, 10, 29, 19);
sub_806D5A4();
- gTasks[taskId].data[11] = GetMenuCursorPos();
+ gTasks[taskId].data[11] = Menu_GetCursorPos();
DoRecoverPP(taskId);
}
void ItemUseMoveMenu_HandleCancel(u8 taskId)
{
- HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(19, 10, 29, 19);
+ Menu_DestroyCursor();
+ Menu_EraseWindowRect(19, 10, 29, 19);
if (gMain.inBattle)
gTasks[ewram1C000.unk4].func = HandleBattlePartyMenu;
else
@@ -4880,7 +5245,8 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
gMain.newKeys = 0;
}
-static const u8 *const StatNames[] = {
+static const u8 *const StatNames[] =
+{
gOtherText_HP,
gOtherText_Attack,
gOtherText_Defense,
@@ -4889,7 +5255,8 @@ static const u8 *const StatNames[] = {
gOtherText_Speed,
};
-static const u8 StatDataTypes[] = {
+static const u8 StatDataTypes[] =
+{
MON_DATA_MAX_HP,
MON_DATA_ATK,
MON_DATA_DEF,
@@ -4897,6 +5264,17 @@ static const u8 StatDataTypes[] = {
MON_DATA_SPDEF,
MON_DATA_SPEED,
};
+
+#if DEBUG
+
+const u8 gUnknown_Debug_839B6CE[] = {0x40, 0, 0, 0, 0x44, 0, 0xFF, 0, 0, 0};
+
+const u8 gUnknown_Debug_839B6D8[] = _(
+ "{STR_VAR_1}かい じっこう\n"
+ "{STR_VAR_2}たんいじかん しょうひ");
+
+#endif
+
void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
{
u8 i;
@@ -4966,7 +5344,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
{
u8 i;
- MenuDrawTextWindow(11, 0, 29, 7);
+ Menu_DrawStdWindowFrame(11, 0, 29, 7);
for (i = 0; i < NUM_STATS; i++)
{
@@ -4982,12 +5360,12 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
x = (i / 3) * 9 + 11;
y = ((i % 3) << 1) + 1;
- MenuPrint_PixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1);
+ Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1);
if (i == 2)
- MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0);
+ Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0);
else
- MenuPrint_PixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1);
+ Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1);
gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
gStringVar1[1] = 0x14;
@@ -4995,7 +5373,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2);
- MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0);
+ Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0);
}
}
#elif GERMAN
@@ -5011,7 +5389,7 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId) {
movs r1, 0\n\
movs r2, 0x1D\n\
movs r3, 0x7\n\
- bl MenuDrawTextWindow\n\
+ bl Menu_DrawStdWindowFrame\n\
movs r7, 0\n\
ldr r0, _0807092C @ =gStringVar1\n\
mov r10, r0\n\
@@ -5095,7 +5473,7 @@ _0807086C:\n\
mov r0, r10\n\
adds r1, r4, 0\n\
adds r2, r5, 0\n\
- bl MenuPrint\n\
+ bl Menu_PrintText\n\
adds r0, r7, 0x1\n\
lsls r0, 24\n\
lsrs r7, r0, 24\n\
@@ -5142,7 +5520,7 @@ void PrintNewStatsInLevelUpWindow(u8 taskId)
gStringVar1[2] = 0x06;
ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[newStatIndex], 1, 3);
- MenuPrint_PixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0);
+ Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 6, y * 8, 0);
}
}
@@ -5184,7 +5562,7 @@ void Task_RareCandy3(u8 taskId)
u16 learnedMove;
u16 evolutionSpecies;
- MenuZeroFillWindowRect(11, 0, 29, 7);
+ Menu_EraseWindowRect(11, 0, 29, 7);
learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, TRUE);
ewram1B000.unk282 = 1;
@@ -5628,9 +6006,13 @@ _08070F8A:\n\
}
#endif // NONMATCHING
+
+// Maybe this goes in start_menu.c
+#if !DEBUG
void unref_sub_8070F90(void)
{
FlagSet(FLAG_SYS_POKEDEX_GET);
FlagSet(FLAG_SYS_POKEMON_GET);
FlagSet(FLAG_SYS_POKENAV_GET);
}
+#endif